一:概述
PCI(外设计算机互连)或PCIe总线是现代计算机的主要组成部分,了解它的工作原理对于理解许多Linux设备驱动程序非常重要。
关于PCI总线本身有很多好的信息(在维基百科和其他地方),而Linux内核中也有关于PCI处理子系统实际实现的文档。然而,这两种现有来源之间存在一个空白,本文希望填补这个空白。
虽然我在这里的重点是理解x86环境下的PCI/PCIe,但这些内容对其他操作系统和非x86硬件也应该是相关的。因为这是对PCI的概述,而不是教科书,所以这里有许多简化和省略。
更多信息请参考另外一篇文章 驱动开发系列05 - PCI驱动-CSDN博客
二:PCI总线的作用
CPU需要与内存控制器、磁盘控制器、网络控制器、键盘、鼠标、视频图形芯片、以及许多其他设备进行通信。其中一些设备直接连接在主板上,而另一些则插入扩展槽中。
CPU芯片本身有许多引脚,它们是CPU的原生数据总线。 在早期的个人电脑上,所有的板载设备(无论是使用内存空间还是IO空间地址)