PCI 内存读取命令

PCI 内存读取命令

我正在尝试了解 PCI 系统架构。据我所知,有几种 PCI 命令,如 i/o 读写、内存读写、配置读写等。如果 CPU 通过其端口寄存器(状态、控制、数据)与外设通信,那么内存读写命令有什么用呢?

是从 PCI 设备的板载内存读取数据吗?

答案1

基本答案

许多设备都有一些用于与其他设备或 CPU 通信的内存。

RAM 内存不仅仅是计算机中的内存。它只是“通用内存”。

硬盘控制器有一些内存用作缓冲区。如果您正在保存文件 - 您的 CPU 会将数据放入硬盘控制器的内存中,将数据放入控制寄存器中,然后磁盘控制器开始处理它。CPU 只是将数据放入该磁盘控制器内存中,不再忙碌。

显卡、声卡、网卡也类似,它们必须有一定的内存才能工作。

假设我们正在为 PCI 构建一个非常简单的“显卡”,它支持 1 个像素的“屏幕”,而这个像素只是一个具有 8 位亮度控制 (0-255) 的 LED。我们将该二极管连接到某个微控制器,并在外部添加 1 字节内存。我们将该内存连接到 PCI 和微控制器。

我们的微控制器每帧读取内存并根据从内存读取的数据控制我们的 LED。在计算机端 - 我们只需使用 PCI 内存写入命令并将 0-255 个数字写入该内存。

这就是简单的 PCI 设备的工作原理。以上所有信息都经过简化,以便于理解。


更高级的答案(如果你已经了解一些 PC 硬件知识)

在 PCI 中,地址空间很少。

内存地址宽度为 32 位(也有 64 位 PCI-X / 不是 PCI Express!),支持缓存并且可以进行突发事务。

还有输入/输出地址并且兼容Intel x86架构的I/O端口地址空间。

相关内容