下载
第5章 PCI
P C I 的英文全称为Periheral Component Interconnect。正如它的名称一样, P C I 局部总线是
微型计算机系统上处理器 /存储器与外围控制部件、外围附加板之间的互连机构。“P C I 局部总
线规范3”规定了互连机构的协议、电气、机械以及配置空间规范。本章主要介绍 L i n u x 的内
核如何初始化系统的P C I 总线和设备。
图1 - 5 - 1 是一个基于 P C I 局部总线的系统逻
辑示意图。P C I 局部总线和P C I - P C I桥是将系统
的部件连接起来的连接器。 C P U 连接到P C I 局
部总线0 ,这条总线主要用于连接视频设备。
被称为P C I - P C I桥的特别P C I 设备将P C I 局部总
线0与从P C I局部总线连接起来。这种“从 P C I
总线”被称为 P C I 局部总线1。按照P C I 规范的
术语来讲, P C I 局部总线1被称作位于 P C I - P C I
桥的下游( d o w n s t r e a m ) ,而P C I局部总线0被称
为桥的上游 ( u p - s t r e a m ) 。从P C I局部总线主要
连接系统的 S C S I 设备和以太网设备。桥、从
P C I 局部总线以及上面的两种设备都可以物理
地集成在同一个 P C I 集成卡中。系统中的 P C I -
I S A 桥支持老式、遗留下来的 I S A 设备。在图1 - 5 - 1 中画出了一个超级 I / O 控制器芯片,它可以
控制键盘、鼠标和软盘驱动器。
5.1 PCI的地址空间
C P U和P C I的设备需要访问在二者之间共享的存储空间。这部分存储器用于设备驱动程序
控制P C I设备并在驱动程序和设备之间传递信息。典型的共享存储器包括设备的控制和状态寄
存器,这些寄存器可以控制 P C I 设备并读取设备的状态信息。例如: P C I 的S C S I 设备驱动程序
从S C S I 设备读取状态信息,以确定 S C S I 设备是否可以向S C S I 磁盘写入一整块的数据。 S C S I 设
备驱动程序还可以在启动后,向控制寄存器写入控制命令以启动 S C S I 设备运行。
C P U的系统存储器可以用作共享存储器。但如果这样做的话,每次 P C I设备访问存储器时,
C P U 不得不暂停,等待P C I 设备完成访存操作。这样访存操作就变成每次只有一个系统部件可
以访存,导致整个系统的性能下降。让系统的外设以不加控制的方式来访问主存本身就不是
一个好办法。这样做非常危险,因为一个劣质的外设会使系统非常不稳定。因此外设可以有
自已的存储空间, C P U可以访问这些存储空间而外设对系统存储空间的访问用 D M A ( D i r e c t
Memory Access,直接存储访问 )通道的方式来严加控制。 I S A 设备可以访问两类地址空间:
I S A 的I / O空间和I S A 存储空间。P C I 设备可以访问三类地址空间: P C I 的I / O 空间、P C I 的存储
空间和P C I 的配置空间。所有的这些空间对 C P U来说都是可访问的,其中 P C I的I / O空间和P C I
图1-5-1 基于PCI局部总线系统的示例
桥
桥
总线0
上游
下游
视频
总线
控制器
总线1