PCI_Express_体系结构导读.pdf
《PCI_Express_体系结构导读.pdf》由会员分享,可在线阅读,更多相关《PCI_Express_体系结构导读.pdf(455页珍藏版)》请在文库网上搜索。
1、PCI Express 体系结构导读王 齐 编著机 械 工 业 出 版 社本书讲述了与 PCI 及 PCI Express 总线相关的最为基础的内容,并介绍了一些必要的、与 PCI 总线相关的处理器体系结构知识,这也是本书的重点所在。深入理解处理器体系结构是理解 PCI 与 PCI Express 总线的重要基础。读者通过对本书的学习,可超越 PCI 与 PCI Express 总线自身的内容,理解在一个通用处理器系统中局部总线的设计思路与实现方法,从而理解其他处理器系统使用的局部总线。本书适用于希望多了解一些硬件的软件工程师,以及希望多了解一些软件的硬件工程师,也可供电子工程和计算机类的研究
2、生自学参考。图书在版编目(CIP)数据PCI Express 体系结构导读/王齐编著.北京:机械工业出版社,2010.3(2016.6 重印)ISBN 978-7-111-29822-9.P.王.总线-结构.TP336中国版本图书馆 CIP 数据核字(2010)第 028735 号机械工业出版社(北京市百万庄大街 22 号 邮政编码 100037)责任编辑:车 忱责任印制:李 洋 三河市宏达印刷有限公司印刷2016 年 6 月第 1 版第 4 次印刷184mm 260mm28.5 印张704 千字7301-8500 册标准书号:ISBN 978-7-111-29822-9定价:75.00 元凡
3、购本书,如有缺页、倒页、脱页,由本社发行部调换电话服务咨询热线:(010)88361066服务网络服务金书网:www.golden-机 工 官 博:读者购书热线:(010)68326294机 工 官 网: 与 PCI Express(PCIe)总线在处理器系统中得到了大规模应用。PCISIG 也制定了一系列 PCI 与 PCI Express 总线相关的规范,这些规范所涉及的内容庞杂广泛。对于已经理解了 PCI 与 PCI Express 总线的工程师,这些规范便于他们进一步获得必要的细节知识。对于刚刚接触 PCI 与 PCI Express 总线的工程师,这些规范性的文档并不适合阅读。在阅读
4、这些规范时,工程师还需要具备一些与体系结构相关的基础知识,这恰是规范并不涉及的内容。对于多数工程师,规范文档适于查阅,而不便于学习。本书将以处理器体系结构为主线介绍 PCI Express 总线的组成,以便读者进一步理解 PCIExpress 总线协议。本书并不是关于 PCI 和 PCI Express 总线的百科全书,因为读者完全可以通过阅读 PCI 和 PCI Express 总线规范获得细节信息。本书侧重的是 PCI 和 PCI Express 总线中与处理器体系结构相关的内容。本书不会对 PCI 总线的相关规范进行简单重复,部分内容并不在 PCI 总线规范定义的范围内,例如 HOST
5、主桥和 RC。PCI 总线规范并没有规定处理器厂商如何实现 HOST 主桥和RC,不同的处理器厂商实现的 HOST 主桥和 RC 有较大差异,而这些内容正是本书所讨论的重点。此外本书还讲述了一些在 PCI 总线规范中提及,但是容易被忽略的一些重要概念。本书共由三篇组成。第篇(第 1 3 章)介绍 PCI 总线的基础知识。第篇(第 4 13 章)介绍 PCI Express 总线的相关概念。第篇的内容以第篇为基础。从系统软件的角度来看,PCI Express 总线向前兼容 PCI 总线,理解 PCI Express 总线必须建立在深刻理解 PCI总线的基础之上。读者需要按照顺序阅读这两篇。第 1
6、 章主要说明 PCI 总线涉及的一些基本知识。有些知识稍显过时,但是在 PCI 总线中出现的一些数据传送方式,如 Posted、NonPosted 和 Split 数据传送方式,依然非常重要,也是读者需要掌握的。第2 章重点介绍 PCI 桥。PCI 桥是 PCI 及 PCI Express 体系结构的精华所在,本章还使用了一定篇幅介绍了非透明桥。非透明桥不是 PCI 总线定义的标准桥片,但是在处理器系统之间的互联中得到了广泛的应用。第 3 章详细阐述 PCI 总线的数据传送方式,与 Cache 相关的内容和预读机制是本章的重点。目前 PCI 与 PCI Express 对预读机制的支持并不理想
7、。但是在可以预见的将来,PCI Express 总线将充分使用智能预读机制进一步提高总线的利用率。第 4 章是 PCI Express 篇的综述。第 5 章以 Intel 的笔记本平台 Montevina 为例说明 RC 的各个组成模块。实际上 RC 这个概念,只有在 x86 处理器平台中才真正存在。其他处理器系统中,并不存在严格意义上的 RC。第 6、7 章分别介绍 PCI Express 总线的事务层、数据链路层和物理层。物理层是 PCIExpress 总线的真正核心,也是中国工程师最没有机会接触的内容。这是我们这一代工程师的遗憾与无奈。第 8 章简要说明了 PCI Express 总线的
8、链路训练与电源管理。第 9 章主要讨论的是通用流量控制的管理方法与策略。PCI Express 总线的流量控制机制仍需完善,其中不等长的报文长度也是限制 PCI Express 总线流量控制进一步提高的重要因素。第 10 章重点介绍 MSI 和 MSIX 中断机制。MSI 中断机制在 PCI 总线中率先提出,但是在 PCI Express 总线中才得到大规模普及。目前 x86 架构多使用 MSIX 中断机制,而在许多嵌入式处理器中仍然使用 MSI 中断机制。第 11 章的篇幅很短,重点介绍 PCI 和 PCI Express 总线中的序。有志于学习处理器体系结构的工程师务必掌握这部分内容。在处
9、理器体系结构中有关 Cache 和数据传送序的内容非常复杂,掌握这些内容也是系统工程师进阶所必须的。第12 章讲述了笔者的一个实际设计 Capric 卡,简单介绍了 Linux 设备驱动程序的实现过程,并对 PCI Express 总线的延时与带宽进行了简要分析。第 13 章介绍 PCI 总线与虚拟化相关的一些内容。虚拟化技术已崭露头角,与虚拟化相关的一系列内容将对处理器体系结构产生深远的影响。目前虚拟化技术已经在 x86 处理器中得到了广泛的应用。第篇以 Linux 系统为实例说明 PCI 总线在处理器系统中的使用方法,也许有许多读者对这一篇有着浓厚的兴趣。Linux 无疑是一个非常优秀的操
10、作系统。但是需要提醒系统工程师,Linux 系统仅是一个完全开源的操作系统。对于有志于学习处理器体系结构的工程师,学习 Linux 系统是必要的,但是仅靠学习 Linux 系统并不足够。通常说来,理解处理器体系结构至少需要了解两三种处理器,并了解它们在不同操作系统上的实现。尺有所短,寸有所长。不同的处理器和操作系统所应用的领域并不完全相同。也是因为这个原因,本书以 PowerPC 和 x86 处理器为基础对 PCI 和 PCI Express 总线进行说明。本书在写作过程中得到了我的同事和在处理器及操作系统行业奋战多年的朋友们的帮助。在 Linux 系统中许多与处理器和 PCI 总线相关的模块
11、,都有着他们的辛勤付出。刘建国和郭超宏先生审阅了本书的第篇。马明辉先生审阅了本书的第篇。张巍、余珂与刘劲松先生审阅了第 13 章。吴晓川、王勇、丁建峰、李力与吴强先生共同审阅了全书。本书第 12 章中出现的 Capric 和 Cornus 卡由郭冠军和高健协助完成。看着他们通过对PCI Express 总线理解的逐渐深入,最终设计出一个具有较高性能的 Cornus 卡,备感欣慰。此外杨强浩先生也参与了 Capric 和 Cornus 卡的原始设计与方案制定,在此对他及他的团队在这个过程中给予的帮助表示感谢,我们也一道通过这两块卡的制作进一步领略了 PCI Express 总线的技术之美。一个优
12、秀的协议,从制定到广大技术人员理解其精妙之处,再到协议应用到一个个优秀产品中,需要更多的人参与、投入、实践,这也是编写此书最大的动力源泉。本书的完成与我的妻子范淑琴的激励直接相关,Capricornus 也是她的星座。还需要感谢本书的编辑车忱与策划时静,正是他们的努力使得本书提前问世。对本书尚留疑问的读者,可通过我的邮箱 sailing.w 与我联系。最后希望这本书对您有所帮助。作 者目录前言第篇 PCI 体系结构概述第 1 章 PCI 总线的基本知识31.1 PCI 总线的组成结构51.1.1 HOST 主桥61.1.2 PCI 总线71.1.3 PCI 设备71.1.4 HOST 处理器8
13、1.1.5 PCI 总线的负载81.2 PCI 总线的信号定义91.2.1 地址和数据信号91.2.2 接口控制信号101.2.3 仲裁信号121.2.4 中断请求等其他信号121.3 PCI 总线的存储器读写总线事务131.3.1 PCI 总线事务的时序141.3.2 Posted 和 NonPosted 传送方式151.3.3 HOST 处理器访问 PCI 设备161.3.4 PCI 设备读写主存储器181.3.5 Delayed 传送方式191.4 PCI 总线的中断机制211.4.1 中断信号与中断控制器的连接关系211.4.2 中断信号与 PCI 总线的连接关系221.4.3 中断请
14、求的同步231.5 PCIX 总线简介251.5.1 Split 总线事务251.5.2 总线传送协议261.5.3 基于数据块的突发传送261.6 小结27第 2 章 PCI 总线的桥与配置282.1 存储器域与 PCI 总线域282.1.1 CPU 域、DRAM 域与存储器域292.1.2 PCI 总线域302.1.3 处理器域302.2 HOST 主桥322.2.1 PCI 设备配置空间的访问机制332.2.2 存储器域地址空间到 PCI 总线域地址空间的转换352.2.3 PCI 总线域地址空间到存储器域地址空间的转换372.2.4 x86 处理器的 HOST 主桥402.3 PCI
15、桥与 PCI 设备的配置空间422.3.1 PCI 桥422.3.2 PCI Agent 设备的配置空间442.3.3 PCI 桥的配置空间502.4 PCI 总线的配置532.4.1 Type 01h 和 Type 00h 配置请求532.4.2 PCI 总线配置请求的转换原则552.4.3 PCI 总线树 Bus 号的初始化572.4.4 PCI 总线 Device 号的分配592.5 非透明 PCI 桥602.5.1 Intel 21555 中的配置寄存器622.5.2 通过非透明桥片进行数据传递632.6 小结65第 3 章 PCI 总线的数据交换663.1 PCI 设备 BAR 空间
16、的初始化663.1.1 存储器地址与 PCI 总线地址的转换663.1.2 PCI 设备 BAR 寄存器和 PCI 桥Base、Limit 寄存器的初始化673.2 PCI 设备的数据传递693.2.1 PCI 设备的正向译码与负向译码693.2.2 处理器到 PCI 设备的数据传送713.2.3 PCI 设备的 DMA 操作723.2.4 PCI 桥的 Combining、Merging和 Collapsing733.3 与 Cache 相关的 PCI 总线事务743.3.1 Cache 一致性的基本概念753.3.2 PCI 设备对不可 Cache 的存储器空间进行 DMA 读写803.3
17、.3 PCI 设备对可 Cache 的存储器空间进行 DMA 读写813.3.4 PCI 设备进行 DMA 写时发生Cache 命中823.3.5 DMA 写时发生 Cache 命中的优化853.4 预读机制863.4.1 指令 Fetch863.4.2 数据预读893.4.3 软件预读913.4.4 硬件预读933.4.5 PCI 总线的预读机制943.5 小结98第篇 PCI Express 体系结构概述第 4 章 PCIe 总线概述1014.1 PCIe 总线的基础知识1014.1.1 端到端的数据传递1014.1.2 PCIe 总线使用的信号1034.1.3 PCIe 总线的层次结构1
18、074.1.4 PCIe 链路的扩展1084.1.5 PCIe 设备的初始化1104.2 PCIe 体系结构的组成部件1124.2.1 基于 PCIe 架构的处理器系统1124.2.2 RC 的组成结构1174.2.3 Switch1184.2.4 VC 和端口仲裁1204.2.5 PCIetoPCI/PCIX 桥片1224.3 PCIe 设备的扩展配置空间1234.3.1 Power Management Capability结构1244.3.2 PCI Express Capability 结构1274.3.3 PCI Express Extended Capabilities结构1334
19、.4 小结139第 5 章 Montevina 的 MCH 和 ICH1405.1 PCI 总线 0 的 Device 0 设备1415.1.1 EPBAR 寄存器1445.1.2 MCHBAR 寄存器1445.1.3 其他寄存器1445.2 Montevina 平台的存储器空间的组成结构1455.2.1 Legacy 地址空间1475.2.2 DRAM 域1475.2.3 存储器域1485.3 存储器域的 PCI 总线地址空间1505.3.1 PCI 设备使用的地址空间1505.3.2 PCIe 总线的配置空间1515.4 小结154第 6 章 PCIe 总线的事务层1556.1 TLP 的
20、格式1556.1.1 通用 TLP 头的 Fmt 字段和 Type字段1566.1.2 TC 字段1586.1.3 Attr 字段1596.1.4 通用 TLP 头中的其他字段1606.2 TLP 的路由1616.2.1 基于地址的路由1616.2.2 基于 ID 的路由1646.2.3 隐式路由1666.3 存储器、I/O 和配置读写请求 TLP1676.3.1 存储器读写请求 TLP1686.3.2 完成报文1726.3.3 配置读写请求 TLP1746.3.4 消息请求报文1756.3.5 PCIe 总线的原子操作1776.3.6 TLP Processing Hint1786.4 TL
21、P 中与数据负载相关的参数1816.4.1 Max_Payload_Size 参数1816.4.2 Max_Read_Request_Size 参数1826.4.3 RCB 参数1836.5 小结184第 7 章 PCIe 总线的数据链路层与物理层1857.1 数据链路层的组成结构1857.1.1 数据链路层的状态1867.1.2 事务层如何处理 DL_Down 和DL_Up 状态1897.1.3 DLLP 的格式1897.2 ACK/NAK 协议1917.2.1 发送端如何使用 ACK/NAK协议1927.2.2 接收端如何使用 ACK/NAK协议1957.2.3 数据链路层发送报文的顺序1
22、997.3 物理层简介1997.3.1 PCIe 链路的差分信号2007.3.2 物理层的组成结构2047.3.3 8/10b 编码与解码2067.4 小结210第 8 章 PCIe 总线的链路训练与电源管理2118.1 PCIe 链路训练简介2118.1.1 链路训练使用的字符序列2138.1.2 Electrical Idle 状态2168.1.3 Receiver Detect 识别逻辑2178.2 LTSSM 状态机2188.2.1 Detect 状态2208.2.2 Polling 状态2218.2.3 Configuration 状态2238.2.4 Recovery 状态2288
23、.2.5 LTSSM 的其他状态2318.3 PCIe 总线的 ASPM2328.3.1 与电源管理相关的链路状态2328.3.2 L0 状态2338.3.3 L0s 状态2348.3.4 L1 状态2358.3.5 L2 状态2368.4 PCI PM 机制2378.4.1 PCIe 设备的 DState2378.4.2 DState 的状态迁移2388.5 小结240第 9 章 流量控制2419.1 流量控制的基本原理2429.1.1 RateBased 流量控制2439.1.2 CreditBased 流量控制2449.2 CreditBased 机制使用的算法2469.2.1 N123
24、 算法和 N123+算法2499.2.2 N23 算法2509.2.3 流量控制机制的缓冲管理2529.3 PCIe 总线的流量控制2549.3.1 PCIe 总线流量控制的缓存管理2559.3.2 Current 节点的 Credit2579.3.3 VC 的初始化2599.3.4 PCIe 设备如何使用 FCP2619.4 小结262第 10 章 MSI 和 MSIX 中断机制26310.1 MSI/MSIX Capability 结构26310.1.1 MSI Capability 结构26410.1.2 MSIX Capability 结构26610.2 PowerPC 处理器如何处理
25、MSI 中断请求26810.2.1 MSI 中断机制使用的寄存器27010.2.2 系统软件如何初始化 PCIe 设备的 MSI Capability 结构27210.3 x86 处理器如何处理 MSIX中断请求27410.3.1 Message Address 字段和Message Data 字段的格式27410.3.2 FSB Interrupt Message 总线事务27710.4 小结278第 11 章 PCI/PCIe 总线的序27911.1 生产/消费者模型27911.1.1 生产/消费者的工作原理28011.1.2 生产/消费者模型在 PCI/PCIe总线中的实现28111.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PCI_Express_ 体系结构 导读