0

我一直听说寄存器为CPU registers. 其他设备或硬件是否也有自己的寄存器,如解码器硬件、显示设备、DMA 控制器?

如果是这样,存储在这些设备寄存器中的值如何传递给 cpu 寄存器,以防它们是必要的instruction execution?如果可能的话,你们中的任何人都可以用一个真实的例子来解释吗?

4

2 回答 2

2

有些设备有专用的寄存器,有些则没有。其中一些其他组件具有类似寄存器的组件,即使它们不应该真正存在,也被归入“寄存器”类别。

设备与系统其余部分之间的 I/O 可以通过多种方式发生,包括基于端口的 IO(与典型内存访问类似但独立的系统)、基于内存的 IO(使用特定地址作为控制地址,数据可以移入和移出设备),或直接内存访问(其中设备能够通过内存总线自主访问系统内存)。

我的一个朋友写了一个基于端口 IO 的 SATA 硬盘驱动程序,但是大多数现代操作系统都使用 DMA,因为它占用的 CPU 较少。

像显卡这样的设备,包含自己的处理单元,包含用于处理的真实寄存器。据我所知,它们不能直接供处理器使用,但处理器可以(可能通过基于端口的 IO 和 DMA 的组合)向 GPU 提供可执行数据,然后它可以执行这些数据,并且它可以存储其计算输出到板载设备内存上,可以通过 DMA 访问。

于 2012-08-29T20:15:15.830 回答
0

绝对地。查找单词寄存器的定义。例如,声卡或芯片具有一个或多个用于控制音量的寄存器。在单个内存或 I/O 事务中写入的各个寄存器。

大多数外设都有寄存器,有些有内存库。一些内存使用寄存器一次访问一项(将偏移写入偏移寄存器,使用数据寄存器写入或读取数据,重复),或者内存组以某种方式映射到主机的内存空间。再次考虑声卡或视频卡,单独的寄存器用于控制各种事物,宽度,高度,深度,频率等。对于声卡,混音器控制等是通过寄存器进行的。将视频数据、像素、字符、纹理等移动到视频内存或 gpu,然后为您做一些事情,可以并且通过映射到主机地址空间的内存库来完成。

您可能还会发现有趣的是,cpu(处理器)中的寄存器通常使用 sram 实现,具有地址和数据总线以及读/写控制信号。

于 2012-08-30T03:47:31.960 回答