PCI总线-摘录总结

主要摘录地址:http://blog.sina.com.cn/sailingxr

一、Host主桥

1.powerpc主桥

MPC8548处理器是Freescale基于E500 V2内核的一个PowerPC处理器,该处理器中集成了DDR控制器、多个eTSEC(Enhanced Three-Speed Ethernet Controller)PCI/PCI-XPCIe总线控制器等一系列接口。MPC8548处理器的拓扑结构如22所示。

  2.2 <wbr>HOST主桥

 

 如上图所示,MPC8548处理器的L1 CacheE500 V2内核中,而L2 CacheFSB[1]直接相连,不属于E500内核。值得注意的是有些高端PowerPC处理器的L2 Cache也在CPU中,而L3 CacheCCB总线直接相连。

OCeaNMPC8548处理器中连接快速外设使用的交叉互连总线,OCeaN不仅可以连接PCIPCI-XPCIe总线控制器,而且可以连接RapidIO[3]总线控制器。使用OCeaN进行互连的总线控制器可以直接通信,而不需要通过SoC平台总线。

OCeaN部件的拓扑结构如23所示。

2.2 <wbr>HOST主桥
MPC8548 处理器中,有两个 HOST 主桥,分别是 HOST 主桥 1 HOST 主桥 2 ,其中 HOST 主桥 1 可以支持 PCI-X 总线,而 HOST 主桥 2 只能支持 PCI 总线。如下图2.8所示。

2.x86 host主桥

x86处理器使用南北桥结构连接CPUPCI设备。其中北桥(North Bridge)连接快速设备,如显卡、和内存条,并推出PCI总线,HOST主桥包含在北桥中。而南桥(South Bridge)连接慢速设备。x86处理器使用的南北桥结构如26所示。

2.2 <wbr>HOST主桥

x86处理器定义了两个I/O端口寄存器,分别为CONFIG_ADDRESSCONFIG_DATA寄存器,CONFIG_ADDRESS寄存器与PowerPC处理器中的CFG_ADDR寄存器的使用方法类似,而CONFIG_DATA寄存器与PowerPC处理器中的CFG_DATA寄存器的使用方法类似。CONFIG_ADDRESS寄存器的结构如27所示。

2.2 <wbr>HOST主桥

CONFIG_ADDRESS寄存器的各个字段和位的说明如下所示,

 

  •  Enable位,第31位。该位为1时,对CONFIG_DATA寄存器进行读写时将引发PCI总线的配置周期。
  •  Bus Number字段,第23~16位,记录PCI设备的总线号。
  •  Device Number字段,第15~11位,记录PCI设备的设备号。
  •  Function Number字段,第10~8位,记录PCI设备的功能号。
  • Register Number字段,第7~2位,记录PCI设备的寄存器号。
目前 Intel 对南北桥架构进行了升级,其中北桥被升级为 MCH(Memory Controller Hub) ,而南桥被升级为 ICH(I/O Controller Hub) x86 处理器系统在 MCH 中集成了存储器控制器、显卡芯片和 HOST-to-PCIe 主桥,并通过 Hub Link ICH 相连;而在 ICH 中集成了一些相对低速总线接口,如 AC’97 LPC(Low Pin Count) IDE USB 总线,当然也包括一些低带宽的 PCIe 总线接口。

二、PCI桥

2.3 <wbr>PCI桥与PCI设备的配置空间

PCI桥作为一个特殊的PCI设备,具有独立的配置空间。但是PCI桥配置空间的定义与PCI Agent设备的配置空间有所不同。PCI桥的配置空间可以管理其下PCI总线子树的PCI设备,并可以优化这些PCI设备通过PCI桥的数据访问。PCI桥的配置空间在系统软件遍历PCI总线树时配置,系统软件不需要专门的驱动程序设置PCI桥的使用方法,这也是PCI桥被称为透明桥的主要原因。

注意:PCI桥不能和PCI设备或Host桥进行数据交换,它是用来转发来着PCI设备或Host桥的数据。

2.3 <wbr>PCI桥与PCI设备的配置空间

Base Address Register 0~5寄存器,该组寄存器简称为BAR寄存器,BAR寄存器保存PCI设备使用的地址空间的基地址,该基地址保存的是该设备在PCI总线域中的地址。                  

Capabilities Pointer寄存器,PCI设备中该寄存器是可选的但是在PCI-XPCIe设备中必须支持这个寄存器Capabilities Pointer寄存器存放Capabilities寄存器组的基地址PCI设备使用Capabilities寄存器组存放一些与PCI设备相关的扩展配置信息。


2.3 <wbr>PCI桥与PCI设备的配置空间

PCI桥中只含有两组BAR寄存器,Base Address Register 0~1寄存器,这两个寄存器是可选的。

Subordinate Bus Number寄存器存放当前PCI子树中,编号最大的PCI总线号。

Secondary Bus Number寄存器存放当前PCISecondary Bus使用的总线号,这个PCI总线号也是该PCI桥管理的PCI子树中编号最小的PCI总线号。因此一个PCI桥能够管理的PCI总线号在Secondary Bus Number~Subordinate Bus Number之间。这两个寄存器的值由系统软件遍历PCI总线树时设置。

Primary Bus Number寄存器存放该PCI桥上游的PCI总线号。

Bridge Control Register该寄存器用来管理PCI桥的Secondary Bus


三、读写总线事务

PCI总线规定访问配置空间的总线事务,即配置读写总线事务,使用ID号进行寻址。PCI设备的ID号由总线号(Bus Number)、设备号(Device Number)和功能号(Function Number)组成。

1.总线号初始化

总线号在HOST主桥深度遍历PCI总线树时确定。

2.4 <wbr>PCI总线的配置

DFS的算法为线性时间复杂度,适合对拓扑结构未知的树进行遍历。在一个处理器系统的初始化阶段,PCI总线树的拓扑结构是未知的,适合使用DFS算法进行遍历。下文以213为例,说明系统软件如何使用DFS算法,分配PCI总线号,并初始化PCI桥中的Primary Bus NumberSecondary Bus NumberSubordinate Bus number寄存器。所谓DFS算法是指按照深度优先的原则遍历PCI胖树,其步骤如下。

(1)      HOST主桥扫描PCI总线0上的设备。系统软件首先忽略所有这条总线上的PCI Agent设备,因为在这些设备之下不会挂接新的PCI总线。例如PCI设备01下不可能挂接新的PCI总线。

(2)      HOST主桥首先发现PCI1,并将PCI1Secondary Bus命名为PCI总线1。系统软件将初始化PCI1的配置空间,将PCI1Primary Bus Number寄存器赋值为0,而将Secondary Bus Number寄存器赋值为1,即PCI1的上游PCI总线号为0,而下游PCI总线号为1

(3)      扫描PCI总线1,发现PCI2,并将PCI2Secondary Bus命名为PCI总线2。系统软件将初始化PCI2的配置空间,将PCI2Primary Bus Number寄存器赋值为1,而将Secondary Bus Number寄存器赋值为2

(4)      扫描PCI总线2,发现PCI3,并将PCI3Secondary Bus命名为PCI总线3。系统软件将初始化PCI3的配置空间,将PCI3Primary Bus Number寄存器赋值为2,而将Secondary Bus Number寄存器赋值为3

(5)      扫描PCI总线3,没有发现任何PCI桥,这表示PCI总线3下不可能有新的总线,此时系统软件将PCI3Subordinate Bus number寄存器赋值为3。系统软件在完成PCI总线3的扫描后,将回退到PCI总线3的上一级总线,即PCI总线2,继续进行扫描。

(6)      在重新扫描PCI总线2时,系统软件发现PCI总线2上除了PCI3之外没有发现新的PCI桥,而PCI3之下的所有设备已经完成了扫描过程,此时系统软件将PCI2Subordinate Bus number寄存器赋值为3。继续回退到PCI总线1

(7)      PCI总线1上除了PCI2外,没有其他桥片,于是继续回退到PCI总线0,并将PCI1Subordinate Bus number寄存器赋值为3

(8)      PCI总线0上,系统软件扫描到PCI4,则首先将PCI4Primary Bus Number寄存器赋值为0,而将Secondary Bus Number寄存器赋值为4,即PCI1的上游PCI总线号为0,而下游PCI总线号为4

(9)      系统软件发现PCI总线4上没有任何PCI桥,将结束对PCI总线4的扫描,并将PCI4Subordinate Bus number寄存器赋值为4,之后回退到PCI总线4的上游总线,即PCI总线0继续进行扫描。

(10)  系统软件发现在PCI总线0上的两个桥片PCI总线0PCI总线4都已完成扫描后,将结束对PCI总线的DFS遍历全过程。

2.PCI 总线device号的分配

PCI设备的IDSEL信号与PCI总线的AD[31:0]信号的连接关系决定了该设备在这条PCI总线的设备号。实际上在系统中,每个PCI槽上的所独有的信号线是:INTA、INTB、INTC、INTD、IDSEL,每个槽上的IDSEL对应于AD[31:11]中的一根。(212所示,在配置读写总线事务的地址周期中,AD[10:0]信号已经被Function NumberRegister Number使用,因此PCI设备的IDSEL只能与AD[31:11]信号连接。)

2.4 <wbr>PCI总线的配置

一条PCI总线能够挂接21个设备,在实际的应用中,由于PCI总线的负载能力有限,即便总线频率为33MHz的情况下,在一条PCI总线中最多也只能挂接10个负载。

3.配置请求

其中CONFIG_ADDRESS寄存器存放PCI设备的ID号,而CONFIG_DATA寄存器存放进行配置读写的数据。

PCI总线定义了两类配置请求,一个是Type 00h配置请求,另一个是Type 01h配置请求。PCI总线使用这些配置请求访问PCI总线树上的设备配置空间,包括PCI桥和PCI Agent设备的配置空间。

在地址周期中,HOST主桥使用配置读写总线事务,将CONFIG_ADDRESS寄存器的内容拷贝到PCI总线的AD[31:0]信号线中。CONFIG_ADDRESS寄存器与Type 01h配置请求的对应关系如211所示。

 

2.4 <wbr>PCI总线的配置

211中可以发现,CONFIG_ADDRESS寄存器的内容基本上是原封不动的拷贝到PCI总线的AD[31:0]信号线上的[3]其中CONFIG_ADDRESSEnable位不被拷贝,AD总线的第0位为必须为1,表示当前配置请求是Type 01h

PCI总线接收到Type 01配置请求时,将寻找合适的PCI[4]接收这个配置信息。如果这个配置请求是直接发向PCI桥下的PCI设备时,PCI桥将接收个Type 01配置请求,并将其转换为Type 00h配置请求;否则PCI桥将当前Type 01h配置请求原封不动的传递给下一级PCI总线。

如果HOST主桥或者PCI桥发起的是Type 00h配置请求,CONFIG_ADDRESS寄存器与AD[31:0]的转换如212所示。

  2.4 <wbr>PCI总线的配置

当以下两种请求之一满足时,HOST主桥或者PCI桥将生成Type 00h配置头,并将其发送到指定的PCI总线上。

(1)      CONFIG_ADDRESS寄存器的Bus Number字段为0时,处理器访问CONFIG_DATA寄存器时,HOST主桥将直接向PCI总线0发出Type 00h配置请求。因为与HOST主桥直接相连的PCI总线号为0,此时表示HOST主桥需要访问与其直接相连的PCI设备。

(2)      PCI桥收到Type 01h配置头时,将检查Type 01配置头的Bus Number字段,如果这个Bus NumberPCI桥的Secondary Bus Number相同,则将这个Type 01配置头转换为Type 00h配置头,并发送到该PCI桥的Secondary总线上。如果不相同,并将其转发到Secondary Bus。


浅谈PCIe体系结构 浅谈PCIe体系结构 - 1 - 目录 - 1 - 第I篇PCI体系结构概述 - 1 - 第1章PCI总线的基本知识 - 3 - 1.1 PCI总线的组成结构 - 6 - 1.1.1 HOST主桥 - 6 - 1.1.2 PCI总线 - 7 - 1.1.3 PCI设备 - 7 - 1.1.4 HOST处理器 - 8 - 1.1.5 PCI总线的负载 - 9 - 1.2 PCI总线的信号定义 - 10 - 1.2.1 地址和数据信号 - 10 - 1.2.2 接口控制信号 - 11 - 1.2.3 仲裁信号 - 13 - 1.2.4 中断请求等其他信号 - 14 - 1.3 PCI总线的存储器读写总线事务 - 15 - 1.3.1 PCI总线事务的时序 - 15 - 1.3.2 Posted和Non-Posted传送方式 - 16 - 1.3.3 HOST处理器访问PCI设备 - 17 - 1.3.4 PCI设备读写主存储器 - 19 - 1.3.5 Delayed传送方式 - 21 - 1.4 PCI总线的中断机制 - 23 - 1.4.1 中断信号与中断控制器的连接关系 - 23 - 1.4.2 中断信号与PCI总线的连接关系 - 24 - 1.4.3 中断请求的同步 - 25 - 1.5 PCI-X总线简介 - 28 - 1.5.1 Split总线事务 - 28 - 1.5.2 总线传送协议 - 28 - 1.5.3 基于数据块的突发传送 - 29 - 1.6 小结 - 29 - 第2章PCI总线的桥与配置 - 30 - 2.1 存储器域与PCI总线- 30 - 2.1.1 CPU域、DRAM域与存储器域 - 31 - 2.1.2 PCI总线- 32 - 2.1.3 处理器域 - 32 - 2.2 HOST主桥 - 34 - 2.2.1 PCI设备配置空间的访问机制 - 35 - 2.2.2 存储器域地址空间到PCI总线域地址空间的转换 - 37 - 2.2.3 PCI总线域地址空间到存储器域地址空间的转换 - 39 - 2.2.4 x86处理器的HOST主桥 - 42 - 2.3 PCI桥与PCI设备的配置空间 - 45 - 2.3.1 PCI- 45 - 2.3.2 PCI Agent设备的配置空间 - 47 - 2.3.3 PCI桥的配置空间 - 50 - 2.4 PCI总线的配置 - 54 - 2.4.1 Type 01h和Type 00h配置请求 - 54 - 2.4.2 PCI总线配置请求的转换原则 - 56 - 2.4.3 PCI总线树Bus号的初始化 - 58 - 2.4.4 PCI总线Device号的分配 - 60 - 2.5 非透明PCI- 62 - 2.5.1 Intel 21555中的配置寄存器 - 63 - 2.5.2 通过非透明桥片进行数据传递 - 65 - 2.6 小结 - 67 - 第3章PCI总线的数据交换 - 68 - 3.1 PCI设备BAR空间的初始化 - 68 - 3.1.1 存储器地址与PCI总线地址的转换 - 68 - 3.1.2 PCI设备BAR寄存器和PCI桥Base、Limit寄存器的初始化 - 70 - 3.2 PCI设备的数据传递 - 72 - 3.2.1 PCI设备的正向译码与负向译码 - 72 - 3.3.2 处理器到PCI设备的数据传送 - 74 - 3.2.3 PCI设备的DMA操作 - 74 - 3.2.4 PCI桥的Combining、Merging和Collapsing - 75 - 3.3 与Cache相关的PCI总线事务 - 77 - 3.3.1 Cache一致性的基本概念 - 77 - 3.3.2 PCI设备对不可Cache的存储器空间进行DMA读写 - 82 - 3.3.3 PCI设备对可Cache的存储器空间进行DMA读写 - 83 - 3.3.4 PCI设备进行DMA写时发生Cache命中 - 85 - 3.3.5 DMA写时发生Cache命中的优化 - 87 - 3.4 预读机制 - 89 - 3.4.1 Instruction Fetch - 89 - 3.4.2 数据预读 - 92 - 3.4.3 软件预读 - 94 - 3.4.4 硬件预读 - 96 - 3.4.5 PCI总线的预读机制 - 97 - 3.5 小结 - 101 - 第II篇PCI Express体系结构概述 - 102 - 第4章PCIe总线概述 - 104 - 4.1 PCIe总线的基础知识 - 104 - 4.1.1 端到端的数据传递 - 104 - 4.1.2 PCIe总线使用的信号 - 106 - 4.1.3 PCIe总线的层次结构 - 109 - 4.1.4 PCIe链路的扩展 - 111 - 4.2 PCIe体系结构的组成部件 - 114 - 4.2.1 基于PCIe架构的处理器系统 - 114 - 4.2.2 RC的组成结构 - 117 - 4.2.3 Switch - 118 - 4.2.4 VC和端口仲裁 - 120 - 4.2.5 PCIe-to-PCI/PCI-X桥片 - 122 - 4.3 PCIe设备的扩展配置空间 - 124 - 4.4 小结 - 125 - 第5章PCIe总线的事务层 - 126 - 5.1 TLP的格式 - 126 - 5.1.1 通用TLP头的Fmt字段和Type字段 - 127 - 5.1.2 TC字段 - 129 - 5.1.3 Attr字段 - 130 - 5.1.4 通用TLP头中的其他字段 - 131 - 5.2 TLP的路由 - 133 - 5.2.1 基于地址的路由 - 133 - 5.2.2 基于ID的路由 - 135 - 5.2.3 隐式路由 - 138 - 5.3 存储器、I/O和配置读写请求TLP - 139 - 5.3.1 存储器读写请求TLP - 139 - 5.3.2 完成报文 - 144 - 5.3.3 配置读写请求TLP - 146 - 5.3.4 消息请求报文 - 147 - 5.4 TLP中与数据负载相关的参数 - 148 - 5.4.1 Max_Payload_Size参数 - 148 - 5.4.2 Max_Read_Request_Size参数 - 149 - 5.4.3 RCB参数 - 149 - 5.5 小结 - 150 - 第6章 MSI和MSI-X中断机制 - 151 - 6.1 MSI/MSI-X Capability结构 - 152 - 6.1.1 MSI Capability结构 - 152 - 6.1.2 MSI-X Capability结构 - 154 - 6.2 PowerPC处理器如何处理MSI中断请求 - 158 - 6.2.1 MSI中断机制使用的寄存器 - 159 - 6.2.2 系统软件如何初始化PCIe设备的MSI Capability结构 - 162 - 6.3 x86处理器如何处理MSI-X中断请求 - 165 - 6.3.1 Message Address字段和Message Data字段的格式 - 165 - 6.3.2 FSB Interrupt Message总线事务 - 168 - 6.4 小结 - 169 - 结束语 - 170 -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值