描述
开 本: 16开纸 张: 胶版纸包 装: 精装是否套装: 否国际标准书号ISBN: 9787111748199
本书以处理器体系结构为主线介绍PCI Express总线的组成,以便读者进一步理解PCI Express总线协议。本书并不是关于PCI和PCI Express总线的百科全书,因为读者完全可以通过阅读PCI和PCI Express总线规范获得细节信息。本书侧重的是PCI和PCI Express总线中与处理器体系结构相关的内容。
本书不是对PCI总线的相关规范进行简单重复,部分内容并不在PCI总线规范定义的范围内,例如HOST主桥和RC。PCI总线规范并没有规定处理器厂商如何实现HOST主桥和RC,不同的处理器厂商实现的HOST主桥和RC有较大差异,而这些内容正是本书所讨论的重点。此外本书还讲述了一些在PCI总线规范中提及,但是容易被忽略的一些重要概念。
本书讲述了与PCI及PCI Express总线相关的最基础的内容,并介绍了一些必要的、与PCI总线相关的处理器体系结构知识,这也是本书的重点所在。深入理解处理器体系结构是理解PCI与PCI Express总线的重要基础。
读者通过对本书的学习,可超越PCI与PCI Express总线自身的内容,理解在一个通用处理器系统中局部总线的设计思路与实现方法,从而理解其他处理器系统使用的局部总线。本书适用于希望多了解一些硬件的软件工程师,以及希望多了解一些软件的硬件工程师,也可供电子工程和计算机类的研究生自学参考。
前言
第Ⅰ篇PCI体系结构概述
第1章PCI总线的基本知识
1.1 PCI总线的组成结构
1.1.1 HOST主桥
1.1.2 PCI总线
1.1.3 PCI设备
1.1.4 HOST处理器
1.1.5 PCI总线的负载
1.2 PCI总线的信号定义
1.2.1地址和数据信号
1.2.2接口控制信号
1.2.3仲裁信号
1.2.4中断请求等其他信号
1.3 PCI总线的存储器读写总线事务
1.3.1 PCI总线事务的时序
1.3.2 Posted和NonPosted传送方式
1.3.3 HOST处理器访问PCI设备
1.3.4 PCI设备读写主存储器
1.3.5 Delayed传送方式
1.4 PCI总线的中断机制
1.4.1中断信号与中断控制器的连接关系
1.4.2中断信号与PCI总线的连接关系
1.4.3中断请求的同步
1.5 PCI线简介
1.5.1 Split总线事务
1.5.2总线传送协议
1.5.3基于数据块的突发传送
1.6小结
第2章PCI总线的桥与配置
2.1存储器域与PCI总线域
2.1.1 CPU域、DRAM域与存储器域
2.1.2 PCI总线域
2.1.3处理器域
2.2 HOST主桥
2.2.1 PCI设备配置空间的访问机制
2.2.2存储器域地址空间到PCI总线域地址空间的转换
2.2.3 PCI总线域地址空间到存储器域地址空间的转换
2.2.4 x86处理器的HOST主桥
2.3 PCI桥与PCI设备的配置空间
2.3.1 PCI桥
2.3.2 PCI Agent设备的配置空间
2.3.3 PCI桥的配置空间
2.4 PCI总线的配置
2.4.1 Type 01h和Type 00h配置请求
2.4.2 PCI总线配置请求的转换原则
2.4.3 PCI总线树Bus号的初始化
2.4.4 PCI总线Device号的分配
2.5非透明PCI桥
2.5.1 Intel 21555中的配置寄存器
2.5.2通过非透明桥片进行数据传递
2.6小结
第3章PCI总线的数据交换
3.1 PCI设备BAR空间的初始化
3.1.1存储器地址与PCI总线地址的转换
3.1.2 PCI设备BAR寄存器和PCI桥Base、Limit寄存器的初始化
3.2 PCI设备的数据传递
3.2.1 PCI设备的正向译码与负向译码
3.2.2处理器到PCI设备的数据传送
3.2.3 PCI设备的DMA操作
3.2.4 PCI桥的Combining、Merging和Collapsing
3.3与Cache相关的PCI总线事务
3.3.1 Cache一致性的基本概念
3.3.2 PCI设备对不可Cache的存储器空间进行DMA读写
3.3.3 PCI设备对可Cache的存储器空间进行DMA读写
3.3.4 PCI设备进行DMA写时发生Cache命中
3.3.3 DMA写时发生Cache命中的优化
3.4预读机制
3.4.1指令Fetch
3.4.2数据预读
3.4.3软件预读
3.4.4硬件预读
3.4.5 PCI总线的预读机制
3.5小结
第Ⅱ篇PCI Express体系结构概述
第4章PCIe总线概述
4.1PCIe总线的基础知识
4.1.1端到端的数据传递
4.1.2 PCIe总线使用的信号
4.1.3 PCIe总线的层次结构
4.1.4 PCIe链路的扩展
4.1.5 PCIe设备的初始化
4.2 PCIe体系结构的组成部件
4.2.1基于PCIe架构的处理器系统
4.2.2 RC的组成结构
4.2.3 Switch
4.2.4 VC和端口仲裁
4.2.5 PCIe to PCI/PCI X桥片
4.3 PCIe设备的扩展配置空间
4.3.1 Power Management Capability结构
4.3.2 PCI Express Capability结构
4.3.3 PCI Express Extended Capabilities结构
4.4小结
第5章Montevina的MCH和ICH
5.1 PCI总线0的Device 0设备
5.1.1 EPBAR寄存器
5.1.2 MCHBAR寄存器
5.1.3其他寄存器
5.2 Montevina平台的存储器空间的组成结构
5.2.1 Legacy地址空间
5.2.2 DRAM域
5.2.3存储器域
5.3存储器域的PCI总线地址空间
5.3.1 PCI设备使用的地址空间
5.3.2 PCIe总线的配置空间
5.4小结
第6章PCIe总线的事务层
6.1TLP的格式
6.1.1通用TLP头的Fmt字段和Type字段
6.1.2 TC字段
6.1.3 Attr字段
6.1.4通用TLP头中的其他字段
6.2 TLP的路由
6.2.1基于地址的路由
6.2.2基于ID的路由
6.2.3隐式路由
6.3存储器、I/O和配置读写请求TLP
6.3.1存储器读写请求TLP
6.3.2完成报文
6.3.3配置读写请求TLP
6.3.4消息请求报文
6.3.5 PCIe总线的原子操作
6.3.6 TLP Processing Hint
6.4 TLP中与数据负载相关的参数
6.4.1 Max_Payload_Size参数
6.4.2 Max_Read_Request_Size参数
6.4.3 RCB参数
6.5小结
第7章PCIe总线的数据链路层与物理层
7.1数据链路层的组成结构
7.1.1数据链路层的状态
7.1.2事务层如何处理DL_Down和DL_Up状态
7.1.3 DLLP的格式
7.2 ACK/NAK协议
7.2.1发送端如何使用ACK/NAK协议
7.2.2接收端如何使用ACK/NAK协议
7.2.3数据链路层发送报文的顺序
7.3物理层简介
7.3.1PCIe链路的差分信号
7.3.2物理层的组成结构
7.3.3 8/10b编码与解码
7.4小结
第8章PCIe总线的链路训练与电源管理
8.1 PCIe链路训练简介
8.1.1链路训练使用的字符序列
8.1.2 Electrical Idle状态
8.1.3 Receiver Detect识别逻辑
8.2 LTSSM状态机
8.2.1 Detect状态
8.2.2 Polling状态
8.2.3 Configuration状态
8.2.4 Recovery状态
8.2.5 LTSSM的其他状态
8.3 PCIe总线的ASPM
8.3.1与电源管理相关的链路状态
8.3.2 L0状态
8.3.3 L0s状态
8.3.4 L1状态
8.3.5 L2状态
8.4 PCI PM机制
8.4.1 PCIe设备的DState
8.4.2 D State的状态迁移
8.5小结
第9章流量控制
9.1流量控制的基本原理
9.1.1 RateBased流量控制
9.1.2 CreditBased流量控制
9.2 CreditBased机制使用的算法
9.
PCI与PCI Express(PCIe)总线在处理器系统中得到了大规模应用。PCISIG也制定了一系列PCI与PCI Express总线相关的规范,这些规范所涉及的内容庞杂广泛。对于已经理解了PCI与PCI Express总线的工程师,这些规范便于他们进一步获得必要的细节知识。对于刚刚接触PCI与PCI Express总线的工程师,这些规范性的文档并不适合阅读。在阅读这些规范时,工程师还需要具备一些与体系结构相关的基础知识,这恰是规范并不涉及的内容。对于多数工程师,规范文档适合查阅,不便于学习。
本书将以处理器体系结构为主线介绍PCI Express总线的组成,以便读者进一步理解PCI Express总线协议。本书并不是关于PCI和PCI Express总线的百科全书,因为读者完全可以通过阅读PCI和PCI Express总线规范获得细节信息。本书侧重的是PCI和PCI Express总线中与处理器体系结构相关的内容。
本书不会对PCI总线的相关规范进行简单重复,部分内容并不在PCI总线规范定义的范围内,例如HOST主桥和RC。PCI总线规范并没有规定处理器厂商如何实现HOST主桥和RC,不同的处理器厂商实现的HOST主桥和RC有较大差异,而这些内容正是本书所讨论的重点。此外本书还讲述了一些在PCI总线规范中提及,但是容易被忽略的一些重要概念。
本书共三篇。第Ⅰ篇(第1~3章)介绍PCI总线的基础知识。第Ⅱ篇(第4~13章)介绍PCI Express总线的相关概念。第Ⅱ篇的内容以第Ⅰ篇为基础。从系统软件的角度来看,PCI Express总线向前兼容PCI总线,理解PCI Express总线必须建立在深刻理解PCI总线的基础之上。读者需要按照顺序阅读这两篇。
第1章主要说明PCI总线涉及的一些基本知识。有些知识稍显过时,但是在PCI总线中出现的一些数据传送方式,如Posted、NonPosted和Split数据传送方式,依然非常重要,也是读者需要掌握的。
第2章重点介绍PCI桥。PCI桥是PCI及PCI Express体系结构的精华所在,本章还使用了一定篇幅介绍了非透明桥。非透明桥不是PCI总线定义的标准桥片,但是在处理器系统之间的互联中得到了广泛的应用。
第3章详细阐述PCI总线的数据传送方式,与Cache相关的内容和预读机制是本章的重点。目前PCI与PCI Express对预读机制的支持并不理想。但是在可以预见的将来,PCI Express总线将充分使用智能预读机制进一步提高总线的利用率。
第4章是PCIe总线概述。第5章以Intel的笔记本平台Montevina为例说明RC的各个组成模块。实际上RC这个概念,只有在x86处理器平台中才真正存在。其他处理器系统中,并不存在严格意义上的RC。
第6、7章分别介绍PCI Express总线的事务层、数据链路层和物理层。物理层是PCI Express总线的真正核心,也是中国工程师最没有机会接触的内容。这是我们这一代工程师的遗憾与无奈。第8章简要说明了PCI Express总线的链路训练与电源管理。
第9章主要讨论的是通用流量控制的管理方法与策略。PCI Express总线的流量控制机制仍需完善,其中不等长的报文长度也是限制PCI Express总线流量控制进一步提高的重要因素。
第10章重点介绍MSI和MSIX中断机制。MSI中断机制在PCI总线中率先提出,但是在PCI Express总线中才得到大规模普及。目前x86架构多使用MSIX中断机制,而在许多嵌入式处理器中仍然使用MSI中断机制。
第11章的篇幅很短,重点介绍PCI和PCI Express总线中的序。有志于学习处理器体系结构的工程师务必掌握这部分内容。在处理器体系结构中有关Cache和数据传送序的内容非常复杂,掌握这些内容也是系统工程师进阶所必需的。
第12章讲述了笔者的一个实际设计——Capric卡,简单介绍了Linux设备驱动程序的实现过程,并对PCI Express总线的延时与带宽进行了简要分析。
第13章介绍PCIe总线与虚拟化相关的一些内容。虚拟化技术已崭露头角,与虚拟化相关的一系列内容将对处理器体系结构产生深远的影响。目前虚拟化技术已经在x86处理器中得到了广泛的应用。
第Ⅲ篇(第14、15章)以Linux系统为实例说明PCI总线在处理器系统中的使用方法,也许有许多读者对这一篇有着浓厚的兴趣。Linux无疑是一个非常优秀的操作系统。但是需要提醒系统工程师,Linux系统仅是一个完全开源的操作系统。对于有志于学习处理器体系结构的工程师,学习Linux系统是必要的,但是仅靠学习Linux系统并不足够。
通常说来,理解处理器体系结构至少需要了解两三种处理器,并了解它们在不同操作系统上的实现。尺有所短,寸有所长。不同的处理器和操作系统所应用的领域并不完全相同。也是因为这个原因,本书以PowerPC和x86处理器为基础对PCI和PCI Express总线进行说明。
本书在写作过程中得到了我的同事和在处理器及操作系统行业奋战多年的朋友们的帮助。在Linux系统中许多与处理器和PCI总线相关的模块,都有着他们的辛勤付出。刘建国和郭超宏先生审阅了本书的第Ⅰ篇。马明辉先生审阅了本书的第Ⅱ篇。张巍、余珂与刘劲松先生审阅了第13章。吴晓川、王勇、丁建峰、李力与吴强先生共同审阅了全书。
本书第12章中出现的Capric和Cornus卡由郭冠军和高健协助完成。看着他们通过对PCI Express总线理解的逐渐深入,最终设计出一个具有较高性能的Cornus卡,备感欣慰。此外杨强浩
评论
还没有评论。