Linux PCI设备驱动程序开发 --- PCI 体系结构(一)


       PCI 是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如 EISA )的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。 Linux 的内核能较好地支持 PCI 总线,本文以 Intel 386 体系结构为主,探讨了在 Linux 下开发 PCI 设备驱动程序的基本框架。

PCI总线系统体系结构
PCI 是外围设备互连( Peripheral Component Interconnect )的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。 PCI 提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各个不同部件之间应该如何正确地进行交互。
无论是在基于 Intel 芯片的 PC 机中,或是在基于 Alpha 芯片的工作站上, PCI 毫无疑问都是目前使用最广泛的一种总线接口标准。同旧式的 ISA 总线不同, PCI 将计算机系统中的总线子系统与存储子系统完全地分开, CPU 通过一块称为 PCI 桥( PCI-Bridge )的设备来完成同总线子系统的交互,如图 1 所示。Linux PCI设备驱动程序开发 --- PCI 体系结构(一)_第1张图片

1 PCI子系统的体系结构
由于使用了更高的时钟频率,因此 PCI 总线能够获得比 ISA 总线更好的整体性能。 PCI 总线的时钟频率一般在 25MHz 33MHz 范围内,有些甚至能够达到 66MHz 或者 133MHz ,而在 64 位系统中则最高能达到 266MHz 。尽管目前 PCI 设备大多采用 32 位数据总线,但 PCI 规范中已经给出了 64 位的扩展实现,从而使 PCI 总线能够更好地实现平台无关性,现在 PCI 总线已经能够用于 IA-32 Alpha PowerPC SPARC64 IA-64 等体系结构中。
PCI 总线具有三个非常显著的优点,使得它能够完成最终取代 ISA 总线这一历史使命:
  • 在计算机和外设间传输数据时具有更好的性能;
  • 能够尽量独立于具体的平台;

  • 可以很方便地实现即插即用。
2 是一个典型的基于 PCI 总线的计算机系统逻辑示意图,系统的各个部分通过 PCI 总线和 PCI-PCI 桥连接在一起。从图中不难看出, CPU RAM 需要通过 PCI 桥连接到 PCI 总线 0 (即主 PCI 总线),而具有 PCI 接口的显卡则可以直接连接到主 PCI 总线上。 PCI-PCI 桥是一个特殊的 PCI 设备,它负责将 PCI 总线 0 PCI 总线 1 (即从 PCI 主线)连接在一起,通常 PCI 总线 1 称为 PCI-PCI 桥的下游( downstream ),而 PCI 总线 0 则称为 PCI-PCI 桥的上游( upstream )。图中连接到从 PCI 总线上的是 SCSI 卡和以太网卡。为了兼容旧的 ISA 总线标准, PCI 总线还可以通过 PCI-ISA 桥来连接 ISA 总线,从而能够支持以前的 ISA 设备。图中 ISA 总线上连接着一个多功能 I/O 控制器,用于控制键盘、鼠标和软驱。
Linux PCI设备驱动程序开发 --- PCI 体系结构(一)_第2张图片
2 PCI系统示意图
在此我只对 PCI 总线系统体系结构作了概括性介绍,如果读者想进一步了解, David A Rusling The Linux Kernel http://tldp.org/LDP/tlk/dd/pci.html )中对 Linux PCI 子系统有比较详细的介绍。

 上一篇:《 实例解读 linux 网卡驱动》
下一篇:《 Linux PCI设备驱动程序开发 --- PCI 体系结构(二)》

你可能感兴趣的:(linux,编程)