
PCI_Express_体系结构导读封面
作者: 王齐
出版社: 机械工业
出版年: 2010-3
页数: 443
定价: 55.00元
ISBN: 9787111298229
内容简介 · · · · · ·
《PCI Express 体系结构导读》讲述了与PCI及PCI Express总线相关的最为基础的内容,并介绍了一些必要的、与PCI总线相关的处理器体系结构知识,这也是《PCI Express 体系结构导读》的重点所在。深入理解处理器体系结构是理解PCI与PCI Express总线的重要基础。
读者通过对《PCI Express 体系结构导读》的学习,可超越PCI与PCI Express总线自身的内容,理解在一个通用处理器系统中局部总线的设计思路与实现方法,从而理解其他处理器系统使用的局部总线。《PCI Express 体系结构导读》适用于希望多了解一些硬件的软件工程师,以及希望多了解一些软件的硬件工程师,也可供电子工程和计算机类的研究生自学参考。
目 录
前言
第Ⅰ篇 PCI 体系结构概述
第 1 章 PCI 总线的基本知识 …………… 3
1. 1 PCI 总线的组成结构 ……………… 5
1. 1. 1 HOST 主桥 ……………………… 6
1. 1. 2 PCI 总线 ………………………… 7
1. 1. 3 PCI 设备 ………………………… 7
1. 1. 4 HOST 处理器 …………………… 8
1. 1. 5 PCI 总线的负载 ………………… 8
1. 2 PCI 总线的信号定义 ……………… 9
1. 2. 1 地址和数据信号 ………………… 9
1. 2. 2 接口控制信号 ………………… 10
1. 2. 3 仲裁信号 ……………………… 12
1. 2. 4 中断请求等其他信号 …………… 12
1. 3 PCI 总线的存储器读写总线事务 … 13
1. 3. 1 PCI 总线事务的时序 …………… 14
1. 3. 2 Posted 和 Non⁃Posted 传送方式…… 15
1. 3. 3 HOST 处理器访问 PCI 设备……… 16
1. 3. 4 PCI 设备读写主存储器 ………… 18
1. 3. 5 Delayed 传送方式 ……………… 19
1. 4 PCI 总线的中断机制 …………… 21
1. 4. 1 中断信号与中断控制器的连接
关系 …………………………… 21
1. 4. 2 中断信号与 PCI 总线的连接
关系 …………………………… 22
1. 4. 3 中断请求的同步………………… 23
1. 5 PCI⁃X 总线简介 ………………… 25
1. 5. 1 Split 总线事务 ………………… 25
1. 5. 2 总线传送协议 ………………… 26
1. 5. 3 基于数据块的突发传送 ………… 26
1. 6 小结 ……………………………… 27
第 2 章 PCI 总线的桥与配置…………… 28
2. 1 存储器域与 PCI 总线域 ………… 28
2. 1. 1 CPU 域、 DRAM 域与存储器域 … 29
2. 1. 2 PCI 总线域……………………… 30
2. 1. 3 处理器域 ……………………… 30
2. 2 HOST 主桥 ……………………… 32
2. 2. 1 PCI 设备配置空间的访问机制…… 33
2. 2. 2 存储器域地址空间到 PCI 总线
域地址空间的转换 ……………… 35
2. 2. 3 PCI 总线域地址空间到存储器
域地址空间的转换 ……………… 37
2. 2. 4 x86 处理器的 HOST 主桥 ……… 40
2. 3 PCI 桥与 PCI 设备的配置空间 … 42
2. 3. 1 PCI 桥 ………………………… 42
2. 3. 2 PCI Agent 设备的配置空间 ……… 44
2. 3. 3 PCI 桥的配置空间 ……………… 50
2. 4 PCI 总线的配置 ………………… 53
2. 4. 1 Type 01h 和 Type 00h 配置请求 … 53
2. 4. 2 PCI 总线配置请求的转换原则…… 55
2. 4. 3 PCI 总线树 Bus 号的初始化……… 57
2. 4. 4 PCI 总线 Device 号的分配 ……… 59
2. 5 非透明 PCI 桥 …………………… 60
2. 5. 1 Intel 21555 中的配置寄存器 …… 62
2. 5. 2 通过非透明桥片进行数据传递 … 63
2. 6 小结 ……………………………… 65
第 3 章 PCI 总线的数据交换…………… 66
3. 1 PCI 设备 BAR 空间的初始化 …… 66
3. 1. 1 存储器地址与 PCI 总线地址
的转换 ………………………… 66
Ⅴ
3. 1. 2 PCI 设备 BAR 寄存器和 PCI 桥
Base、 Limit 寄存器的初始化 …… 67
3. 2 PCI 设备的数据传递 …………… 69
3. 2. 1 PCI 设备的正向译码与负向
译码 …………………………… 69
3. 2. 2 处理器到 PCI 设备的数据传送 … 71
3. 2. 3 PCI 设备的 DMA 操作…………… 72
3. 2. 4 PCI 桥的 Combining、 Merging
和 Collapsing …………………… 73
3. 3 与 Cache 相关的 PCI 总线事务 … 74
3. 3. 1 Cache 一致性的基本概念 ……… 75
3. 3. 2 PCI 设备对不可 Cache 的存储器
空间进行 DMA 读写 …………… 80
3. 3. 3 PCI 设备对可 Cache 的存储器
空间进行 DMA 读写 …………… 81
3. 3. 4 PCI 设备进行 DMA 写时发生
Cache 命中……………………… 82
3. 3. 5 DMA 写时发生 Cache 命中
的优化 ………………………… 85
3. 4 预读机制 ………………………… 86
3. 4. 1 指令 Fetch ……………………… 86
3. 4. 2 数据预读 ……………………… 89
3. 4. 3 软件预读 ……………………… 91
3. 4. 4 硬件预读 ……………………… 93
3. 4. 5 PCI 总线的预读机制 …………… 94
3. 5 小结 ……………………………… 98
第Ⅱ篇 PCI Express 体系结构概述
第 4 章 PCIe 总线概述………………… 101
4. 1 PCIe 总线的基础知识 ………… 101
4. 1. 1 端到端的数据传递 …………… 101
4. 1. 2 PCIe 总线使用的信号 ………… 103
4. 1. 3 PCIe 总线的层次结构 ………… 107
4. 1. 4 PCIe 链路的扩展 ……………… 108
4. 1. 5 PCIe 设备的初始化 …………… 110
4. 2 PCIe 体系结构的组成部件 …… 112
4. 2. 1 基于 PCIe 架构的处理器系统 … 112
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 设备的扩展配置空间 …… 123
4. 3. 1 Power Management Capability
结构 ………………………… 124
4. 3. 2 PCI Express Capability 结构 …… 127
4. 3. 3 PCI Express Extended Capabilities
结构 ………………………… 133
4. 4 小结……………………………… 139
第 5 章 Montevina 的 MCH 和 ICH … 140
5. 1 PCI 总线 0 的 Device 0 设备 …… 141
5. 1. 1 EPBAR 寄存器 ………………… 144
5. 1. 2 MCHBAR 寄存器 ……………… 144
5. 1. 3 其他寄存器 …………………… 144
5. 2 Montevina 平台的存储器空间的
组成结构………………………… 145
5. 2. 1 Legacy 地址空间 ……………… 147
5. 2. 2 DRAM 域 ……………………… 147
5. 2. 3 存储器域 ……………………… 148
5. 3 存储器域的 PCI 总线地址
空间……………………………… 150
5. 3. 1 PCI 设备使用的地址空间 ……… 150
5. 3. 2 PCIe 总线的配置空间 ………… 151
5. 4 小结……………………………… 154
第 6 章 PCIe 总线的事务层…………… 155
6. 1 TLP 的格式 ……………………… 155
6. 1. 1 通用 TLP 头的 Fmt 字段和 Type
字段 ………………………… 156
6. 1. 2 TC 字段 ……………………… 158
6. 1. 3 Attr 字段 ……………………… 159
6. 1. 4 通用 TLP 头中的其他字段……… 160
6. 2 TLP 的路由 ……………………… 161
6. 2. 1 基于地址的路由 ……………… 161
Ⅵ
6. 2. 2 基于 ID 的路由………………… 164
6. 2. 3 隐式路由 ……………………… 166
6. 3 存储器、 I / O 和配置读写
请求 TLP ……………………… 167
6. 3. 1 存储器读写请求 TLP ………… 168
6. 3. 2 完成报文 ……………………… 172
6. 3. 3 配置读写请求 TLP …………… 174
6. 3. 4 消息请求报文 ………………… 175
6. 3. 5 PCIe 总线的原子操作 ………… 177
6. 3. 6 TLP Processing Hint …………… 178
6. 4 TLP 中与数据负载相关的
参数……………………………… 181
6. 4. 1 Max_Payload_Size 参数 ………… 181
6. 4. 2 Max_Read_Request_Size 参数 …… 182
6. 4. 3 RCB 参数……………………… 183
6. 5 小结……………………………… 184
第 7 章 PCIe 总线的数据链路层与
物理层 ………………………… 185
7. 1 数据链路层的组成结构………… 185
7. 1. 1 数据链路层的状态 …………… 186
7. 1. 2 事务层如何处理 DL_Down 和
DL_Up 状态 …………………… 189
7. 1. 3 DLLP 的格式 ………………… 189
7. 2 ACK / NAK 协议 ………………… 191
7. 2. 1 发送端如何使用 ACK / NAK
协议 ………………………… 192
7. 2. 2 接收端如何使用 ACK / NAK
协议 ………………………… 195
7. 2. 3 数据链路层发送报文的顺序 …… 199
7. 3 物理层简介……………………… 199
7. 3. 1 PCIe 链路的差分信号 ………… 200
7. 3. 2 物理层的组成结构 …………… 204
7. 3. 3 8 / 10b 编码与解码 …………… 206
7. 4 小结……………………………… 210
第 8 章 PCIe 总线的链路训练与电源
管理 …………………………… 211
8. 1 PCIe 链路训练简介 …………… 211
8. 1. 1 链路训练使用的字符序列……… 213
8. 1. 2 Electrical Idle 状态 …………… 216
8. 1. 3 Receiver Detect 识别逻辑 ……… 217
8. 2 LTSSM 状态机 ………………… 218
8. 2. 1 Detect 状态 …………………… 220
8. 2. 2 Polling 状态 …………………… 221
8. 2. 3 Configuration 状态 ……………… 223
8. 2. 4 Recovery 状态 ………………… 228
8. 2. 5 LTSSM 的其他状态 …………… 231
8. 3 PCIe 总线的 ASPM …………… 232
8. 3. 1 与电源管理相关的链路状态 …… 232
8. 3. 2 L0 状态 ……………………… 233
8. 3. 3 L0s 状态 ……………………… 234
8. 3. 4 L1 状态 ……………………… 235
8. 3. 5 L2 状态 ……………………… 236
8. 4 PCI PM 机制 …………………… 237
8. 4. 1 PCIe 设备的 D⁃State …………… 237
8. 4. 2 D⁃State 的状态迁移 …………… 238
8. 5 小结……………………………… 240
第 9 章 流量控制 ……………………… 241
9. 1 流量控制的基本原理…………… 242
9. 1. 1 Rate⁃Based 流量控制…………… 243
9. 1. 2 Credit⁃Based 流量控制 ………… 244
9. 2 Credit⁃Based 机制使用的算法 … 246
9. 2. 1 N123 算法和 N123 + 算法 ……… 249
9. 2. 2 N23 算法 ……………………… 250
9. 2. 3 流量控制机制的缓冲管理……… 252
9. 3 PCIe 总线的流量控制 ………… 254
9. 3. 1 PCIe 总线流量控制的缓存
管理 ………………………… 255
9. 3. 2 Current 节点的 Credit ………… 257
9. 3. 3 VC 的初始化 ………………… 259
9. 3. 4 PCIe 设备如何使用 FCP ……… 261
9. 4 小结……………………………… 262
第 10 章 MSI 和 MSI⁃X 中断机制 …… 263
10. 1 MSI / MSI⁃X Capability 结构 …… 263
10. 1. 1 MSI Capability 结构 …………… 264
10. 1. 2 MSI⁃X Capability 结构 ………… 266
10. 2 PowerPC 处理器如何处理
MSI 中断请求 ………………… 268
10. 2. 1 MSI 中断机制使用的寄存器 … 270
Ⅶ
10. 2. 2 系统软件如何初始化 PCIe 设备
的 MSI Capability 结构………… 272
10. 3 x86 处理器如何处理 MSI⁃X
中断请求 ……………………… 274
10. 3. 1 Message Address 字段和
Message Data 字段的格式……… 274
10. 3. 2 FSB Interrupt Message 总线
事务 ………………………… 277
10. 4 小结 …………………………… 278
第 11 章 PCI / PCIe 总线的序 ………… 279
11. 1 生产/ 消费者模型……………… 279
11. 1. 1 生产/ 消费者的工作原理 ……… 280
11. 1. 2 生产/ 消费者模型在 PCI / PCIe
总线中的实现………………… 281
11. 2 PCI 总线的死锁 ……………… 283
11. 2. 1 缓冲管理引发的死锁 ………… 283
11. 2. 2 数据传送序引发的死锁 ……… 283
11. 3 PCI 总线的序 ………………… 284
11. 3. 1 PCI 总线序的通用规则 ……… 284
11. 3. 2 Delayed 总线事务的传送规则 … 285
11. 3. 3 PCI 总线事务通过 PCI
桥的顺序 …………………… 286
11. 3. 4 LOCK, Delayed 和 Posted
总线事务间的关系 …………… 289
11. 4 PCIe 总线的序 ………………… 290
11. 4. 1 TLP 传送的序………………… 290
11. 4. 2 ID⁃Base Ordering …………… 294
11. 4. 3 MSI 报文的序 ………………… 295
11. 5 小结 …………………………… 296
第 12 章 PCIe 总线的应用 …………… 297
12. 1 Capric 卡的工作原理 ………… 297
12. 1. 1 BAR 空间 …………………… 298
12. 1. 2 Capric 卡的初始化 …………… 301
12. 1. 3 DMA 写 ……………………… 302
12. 1. 4 DMA 读 ……………………… 302
12. 1. 5 中断请求 …………………… 303
12. 2 Capric 卡的数据传递 ………… 303
12. 2. 1 DMA 写使用的 TLP ………… 304
12. 2. 2 DMA 读使用的 TLP ………… 308
12. 2. 3 Capric 卡的中断请求 ………… 317
12. 3 基于 PCIe 总线的设备驱动…… 317
12. 3. 1 Capric 卡驱动程序的加载与
卸载 ………………………… 318
12. 3. 2 Capric 卡的初始化与关闭 …… 319
12. 3. 3 Capric 卡的 DMA 读写操作 …… 324
12. 3. 4 Capric 卡的中断处理 ………… 327
12. 3. 5 存储器地址到 PCI 总线地址
的转换 ……………………… 328
12. 3. 6 存储器与 Cache 的同步 ……… 330
12. 4 Capric 卡的延时与带宽 ……… 334
12. 4. 1 TLP 的传送开销 ……………… 335
12. 4. 2 PCIe 设备的 DMA 读写延时…… 338
12. 4. 3 Capric 卡的优化 ……………… 342
12. 5 小结 …………………………… 343
第 13 章 PCIe 总线与虚拟化技术 …… 344
13. 1 IOMMU ………………………… 344
13. 1. 1 IOMMU 的工作原理 ………… 345
13. 1. 2 IA 处理器的 VT⁃d …………… 347
13. 1. 3 AMD 处理器的 IOMMU ……… 349
13. 2 ATS (Address Translation
Services) ……………………… 352
13. 2. 1 TLP 的 AT 字段 ……………… 353
13. 2. 2 地址转换请求………………… 354
13. 2. 3 Invalidate ATC ……………… 356
13. 3 SR⁃IOV 与 MR⁃IOV …………… 358
13. 3. 1 SR⁃IOV 技术 ………………… 358
13. 3. 2 MR⁃IOV 技术 ………………… 359
13. 4 小结 …………………………… 362
第Ⅲ篇 Linux 与 PCI 总线
第 14 章 Linux PCI 的初始化过程 …… 365
14. 1 Linux x86 对 PCI 总线的
初始化 ………………………… 365
14. 1. 1 pcibus_class_init 与 pci_driver_init
Ⅷ
函数 ………………………… 368
14. 1. 2 pci_arch_init 函数 …………… 369
14. 1. 3 pci_slot_init 和 pci_subsys_init
函数 ………………………… 372
14. 1. 4 与 PCI 总线初始化相关的其他
函数 ………………………… 373
14. 2 x86 处理器的 ACPI …………… 374
14. 2. 1 ACPI 驱动程序与 AML
解释器 ……………………… 377
14. 2. 2 ACPI 表 ……………………… 380
14. 2. 3 ACPI 表的使用实例 ………… 382
14. 3 基于 ACPI 机制的 Linux PCI 的
初始化 ………………………… 388
14. 3. 1 基本的准备工作 ……………… 388
14. 3. 2 Linux PCI 初始化 PCI 总线号 … 393
14. 3. 3 Linux PCI 检查 PCI 设备使用的
BAR 空间 …………………… 404
14. 3. 4 Linux PCI 分配 PCI 设备使用的
BAR 寄存器 ………………… 407
14. 4 Linux PowerPC 如何初始化 PCI
总线树 ………………………… 412
14. 5 小结 …………………………… 416
第 15 章 Linux PCI 的中断处理 ……… 417
15. 1 PCI 总线的中断路由 ………… 417
15. 1. 1 PCI 设备如何获取 irq 号 ……… 419
15. 1. 2 PCI 中断路由表 ……………… 426
15. 1. 3 PCI 插槽使用的 irq 号 ………… 428
15. 2 使用 MSI / MSIX 中断机制
申请中断向量 ………………… 432
15. 2. 1 Linux 如何使能 MSI 中断
机制 ………………………… 432
15. 2. 2 Linux 如何使能 MSI⁃X 中断
机制 ………………………… 437
15. 3 小结 …………………………… 440
参考文献 ………………………………… 441
代找资源网不售卖任何资源,只提供代找服务
QQ客服
微信客服

评论0