PCI总线介绍

在处理器体系结构中,PCI总线属于局部总线,作为系统总线的延伸,其主要功能是联接外部设备。

PCI总线设备具有独立的地址空间,即PCI总线地址空间,该空间与存储器地址空间通过HOST主桥隔离。处理器在访问PCI设备时,必须通过HOST主桥进行地址转换;而PCI设备在访问主存储器时也需要通过HOST主桥进行地址转换。

PCI总线结构为树形结构,以HOST主桥为根节点,通过在PCI总线上加PCI桥的方式可以扩展出一系列的PCI总线,形成PCI总线树。一颗PCI总线树上最多只能挂接256个PCI设备。

PCI设备使用共享总线方式进行数据传送,在同一条总线上,所有PCI设备共享同一总线带宽。在同一总线的PCI设备通过总线仲裁的方式获得总线的控制权,之后才能进行数据传送;在PCI总线上进行数据传送并不需要处理器的干预。

PCI总线可以运行在33MHz或66MHz的总线频率下,峰值带宽分别为133MB/s和266MB/s;而且总线的频率越高,所能挂载的负载越少。在133MHz时总线可以负载4-5个插槽,266MHz时只能负载2个插槽。

在一个完整的PCI总线系统中包括HOST主桥,PCI总线,PCI设备和PCI桥。
HOST主桥是联系处理器与PCI设备的桥梁,其主要功能是隔离处理器系统的存储器域和PCI总线域,管理PCI总线域,并完成处理器和PCI设备间的数据交换。在一个处理器系统中可以有多个HOST主桥,每个HOST主桥都管理了一颗PCI树,同一个PCI总线树的所有PCI设备属于同一个PCI总线域,在这个总线树上的所有PCI设备的配置空间都由HOST主桥通过配置读写总线周期访问。
PCI设备有PCI主设备,PCI从设备和桥设备三种。其中PCI从设备只能被动的接收来自HOST主桥或者其他PCI设备的读写请求;PCI主设备可以通过总线仲裁获得PCI总线的使用权,主动向其他PCI设备或者主存储器发起存储器读写请求;而桥设备的主要作用是管理下游的PCI总线,并转发上下游总线之间的总线事务。

处理器对PCI设备的访问
------------------
处理器对PCI设备的数据访问主要包括两方面的内容,一方面是处理器向PCI设备发起存储器和IO读写请求;另一方面是处理器对PCI设备进行配置读写。
每个PCI设备有6个PCI BAR寄存器,每个BAR寄存器都与PCI设备使用的一组PCI总线地址空间对应,BAR寄存器记录这组地址空间的基地址,该基地址保存的是该设备在PCI总线域的地址。在PCI设备复位后,该寄存器存放的是PCI设备需要使用的基地址空间的大小,这段空间是IO空间还是存储空间等。在系统对PCI总线进行配置时,首先获得BAR寄存器中的初始化信息,之后根据处理器系统的配置,将合理的基地址写入相应的BAR寄存器中。系统仍然可以使用该寄存器获得PCI设备使用的BAR空间的长度,其方法是向BAR寄存器中写入0xFFFF-FFFF,之后再读取该寄存器。

HOST处理器对PCI设备进行IO或存储器读写,需要在HOST桥初始化是将PCI设备使用的BAR空间映射到‘存储器域’的存储器地址空间,之后处理器对这段‘存储器域’的存储器空间进行读写访问时,HOST主桥将存储器域的这段存储器地址转换为PCI总线域的PCI总线地址,相应的读写请求翻译为PCI总线事务发给目标设备。

MSI中断机制
------------------
通常,PCI总线使用INTA#, INTB#, INTC#, INTD#信号向处理器发出中断请求,这些中断信号为低电平有效,并于处理器的中断控制器连接。
在PCI总线V2.2规范中定义了一种新的中断机制,MSI中断机制。MSI中断机制采用存储器写总线事务向处理器系统提交中断请求,其实现机制是向HOST处理器指定的一个存储器地址写指定的数据。这个存储器地址一般是中断控制器规定的某段存储器地址范围,而且数据也是事先定义的数据格式,通常含有中断向量号。HOST主桥会将MSI这个特殊的存储器写事务进一步翻译为中断请求,提交给处理器。

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