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