PCI
PCI(外围部件互连)是由 Intel 于 1991 年推出的一种局部总线,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛应用。PCI 总线具有如下特点。
● 数据总线为 32 位,可扩充到 64 位。
● 可进行突发(Burst)模式传输。突发方式传输是指取得总线控制权后连续进行多个数据的传输。突发传输时,只需要给出目的地的首地址,访问第 1 个数据后,第 2 ~ n个数据会在首地址的基础上按一定规则自动寻址和传输。与突发方式对应的是单周期方式,它在 1 个总线周期只传送 1 个数据。
● 总线操作与处理器—存储器子系统操作并行。
● 采用中央集中式总线仲裁。
● 支持全自动配置、资源分配,PCI 卡内有设备信息寄存器组为系统提供卡的信息,可实现即插即用。
● PCI 总线规范独立于微处理器,通用性好。
● PCI 设备可以完全作为主控设备控制总线
下图 给出了一个典型的基于 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)。为了兼容旧的 ISA 总线标准,PCI 总线还可以通过 PCI-ISA 桥来连接 ISA 总线,从而支持以前的 ISA 设备。
当 PCI 卡刚加电时,卡上配置空间即可以被访问。PCI 配置空间保存着该卡工作时所需
的所有信息,如厂家、卡功能、资源要求、处理能力、功能模块数量、主控卡能力等。通过
对这个空间信息的读取与编程,可完成对 PCI 卡的配置。如图 2.17 所示,PCI 配置空间共为
256 字节,主要包括如下信息。
● 制造商标识(Vendor ID):由 PCI 组织分配给厂家。
● 设备标识(Device ID):按产品分类给本卡的编号。
● 分类码(Class Code):本卡功能的分类码,如图卡、显示卡、解压卡等。
● 申请存储器空间:PCI 卡内有存储器或以存储器编址的寄存器和 I/O 空间,为使驱动程序和应用程序能访问它们,需申请 CPU 的一段存储区域以进行定位。配置空间的基地址寄存器用于此目的。
● 申请 I/O 空间:配置空间中的基地址寄存器用来进行系统 I/O 空间的申请。
● 中断资源申请:配置空间中的中断引脚和中断线用来向系统申请中断资源。偏移
3Dh 处为中断引脚寄存器,其值表明 PCI 设备使用了哪一个中断引脚,对应关系为
1—INTA#、2—INTB#、3—INTC#、4—INTD#。
PCI-E(PCI Express)是 Intel 公司提出的新一代的总线接口,PCI Express 采用了目前业内流行的点对点串行连接,比起 PCI 以及更早的计算机总线的共享并行架构,每个设备都有自己的专用连接,采用串行方式传输数据,不需要向整个总线请求带宽,并可以把数据传输率提高到一个很高的频率,达到 PCI 所不能提供的高带宽。
PCI Express 在软件层面上兼容目前的 PCI 技术和设备,支持 PCI 设备和内存模组的初始化,也就是说无须推倒目前的驱动程序、操作系统,就可以支持 PCI Express 设备。
上文摘抄自《Linux设备驱动开发详解:基于最新的Linux 4.0内核》