PCI基础知识
PCI总线的组成:HOST桥、PCI桥、PCI设备
PCI采用的是树型拓扑结构,每一个PCI device相当于树的一个结点或者叶子,对整个PCI Bus的遍历可以采用遍历树的算法,在对树进行遍历之后,可以获得整个PCI Bus的资源需求情况,从而进行统一的分配。
PCI总线上有多个设备,当他们需要通信时,都必须向PCI总线仲裁器提出申请,当得到允许后才能在总线中发送数据
PCI总线上的设备可以通过四根中断请求信号INTA INTB INTC INTD向处理器发出中断请求;其中INTA是单功能设备,其他的是多功能设备
总线x1上的通讯和总线x2上的通讯无关,同一条总线上的设备可以自由通讯
PCI总线操作的一具典型的特点就是支持BURST传输。什么是BURST传输呢?首先你得知道PCI的数据总线和地址总线是复用的。这就是说在同样的总线上,一段时间是地址,一段时间是传输数据。如果没有BURST传输,那么完成一次数据传输之前都得发一次地址,这就是总线有一半的时间都在传地址,这使得总线和利用率很低。有了BURST传输,可以先发一个起始地址和数据长度N, 之后传输数据0~N-1就可以直接发数据,不用再发地址了。
PCI总线32位中,第一个16位表示域,第二个8位表示一个总线编号,第三个5位表示一个设备号,最后是3位,表示功能号。
在系统引导阶段,PCI硬件设备保持未激活状态,但每个PCI主板均配备有能够处理PCI的固件,固件通过读写PCI控制器中的寄存器,提供了对设备配置地址空间的访问。
HOST桥
HOST主桥是用来隔离处理器的存储器域与PCI总线域的特殊桥片,管理PCI总线域。在其所管理的PCI设备中所有设备的配置空间都由HOST主桥通过配置读写总线周期访问的
PCI总线上的设备都有自己的设备地址,处理器空间地址和PCI总线地址通过HOST主桥进行隔离。(HOST主桥中有很多的寄存器,可以使得处理器工作的频率和总线工作的频率不一样,通过寄存器缓存数据,当处理器需要访问PCI设备时,需要通过HOST主桥进行地址转换,把处理器地址转换成PCI总线地址,然后才能访问PCI设备;同理,PCI设备中的数据要想往外走,也要通过HOST主桥进行地址转换。说到底,HOST主桥就是一个桥梁)
同一HOST桥中的设备可以通讯(HOST主桥可以通过设置Inbound寄存器来让不同的PCI总线域中的设备进行通讯)
上游总线就是PCI桥靠近HOST主桥的一端总线、下游总线就是另外一端总线
在一个处理器系统中,有几个HOST主桥,就有几个PCI总线域。
PCI桥
PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具拓展性。
PCI的可扩展性指的是PCI总线上可以挂个PCI桥,然后PCI桥会推出另一条PCI总线,PCI总线上又可以挂载PCI桥,再推出PCI总线…(但是,PCI总线以HOST主桥为树根,连接的设备上限为256,其中包括HOST桥和PCI桥
PCI桥的作用可以隔离PCI设备,不影响各条总线的带宽
如果PCI桥出现问题,那么PCI桥下的设备之间可以自由通讯但是无法将数据发送到外面
PCI设备
PCI Agent设备:一个PCI设备既可以是主设备也可以是从设备,但是在同一个时刻,这个PCI设备或者为主设备或者为从设备。PCI总线规范将PCI主从设备统称为PCI Agent设备。
PCI设备的地址可以由系统软件动态分配,解决了地址冲突。(每个PCI设备有一个独立的配置空间,里面有设备在总线上的地址;注:PCI桥的配置空间中有其PCI子树使用的地址范围)
PCI设备与存储器直接进行数据交换的过程也被称为DMA。PCI总线进行DMA操作时,需要得到数据的大小和目的地址(PCI总线域的物理地址,HOST主桥会负责地址转换)
PCI设备配置地址空间的前64字节是标准化的,它提供了厂商号,设备号,版本号等信息,唯一标识一个PCI设备。
PCIe基础知识
pcie全称叫做:Peripheral Component Interconnect(外围组件互联),属于局部总线,主要功能就是连接外围设备
pcie的组成有:RC(根节点)、siwtch(pcie桥)、EP(设备)
pcie总线有独立的地址空间,所以CPU想要通过pcie访问外围设备,需要对pcie的地址空间进行映射
pcie分多版本的,x1、x2、x4、x8、x16…各级之间传输速率呈倍数增加,但价格也呈倍增加。PCI-E的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16,而X2模式将用于内部接口而非插槽模式。
pcie传输和网络类似封装成包,有协议栈。
pcie使用端到端的连接方式,正常设备与设备之间只能连接一个,但通过pcie桥可以扩展。
PCI是并行总线;PCI-X是并行总线;PCIe是高速差分总线
高速差分总线替代并行总线是大势所趋。