我一直听到注册为CPU registers
。其他设备或硬件是否也有自己的寄存器,如解码器硬件,显示设备,DMA控制器?
如果是这样,那些存储在那些设备寄存器中的值如何传递给cpu寄存器,以防instruction execution
需要它们?你们中的任何人都可以用现实世界的例子解释吗?
答案 0 :(得分:2)
有些设备有专用寄存器,有些则没有。其中一些具有类似寄存器的组件,即使它们不应该真的存在,也会被归入“寄存器”类别。
设备与系统其余部分之间的I / O可以通过多种方式实现,包括基于端口的IO(与典型内存访问类似,但与之分离的系统),基于内存的IO(使用特定地址)作为控制地址,可以将数据移入和移出设备,或直接存储器访问(其中设备能够通过存储器总线自主访问系统存储器)。
我的一位朋友写了一个基于端口IO的SATA硬盘驱动程序,但大多数现代操作系统都使用DMA,因为它的CPU密集度较低。
图形卡等设备包含自己的处理单元,包含用于处理的真实寄存器。据我所知,它们不能直接用于处理器,但处理器可以(可能通过基于端口的IO和DMA的组合)向GPU提供可执行数据,然后它可以执行,并且它可以存储在板载设备存储器上输出其计算结果,可以通过DMA访问。
答案 1 :(得分:0)
绝对。查找单词register的定义。声卡或芯片具有一个或多个用于控制音量的寄存器。单个寄存器写在单个存储器或I / O事务中。
大多数外设都有寄存器,有些有内存库。使用寄存器一次访问一些存储器(将偏移写入偏移寄存器,使用数据寄存器写入或读取数据,重复),或者以某种方式将存储器组映射到主机的存储器空间中。再次想到声卡或视频卡,各个寄存器用于控制各种事物,宽度,高度,深度,频率等。对于声卡,混音器控制等通过寄存器。将视频数据,像素,字符,纹理等移动到视频内存或gpu然后为您执行某些操作,可以通过映射到主机地址空间的内存块来完成。有时外设上的内存量大于可用的主机地址空间,因此外设中的寄存器用于控制通过主机地址空间中的哪个孔可用的外围存储器组。
您可能还会发现,有趣的是,cpu(处理器)中的寄存器通常使用sram实现,具有地址和数据总线以及读/写控制信号。