《PCI Express系统体系结构标准教材》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)Ravi Budruk,(美)Don Anderson,(美)Tom Shanley著;田玉敏,王崧,张波译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:7121017946
  • 页数:604 页
图书介绍:本书全面论述了适用于许多系统和外设的当前最流行的第三代外围组件互连技术——PCIExpress。内容涵盖设计、验证和测试所需的信息,以及编写底层BIOS和设备驱动程序必需的背景知识。MindShare公司是领先的硬件技术培训公司之一,为几十家公司提供创造性的课程,包括IBM、HP、PLX、Sun和德州仪器等。本书选自该公司的PC系统体系结构系列丛书。本书首先概述第三代PCIExpress总线和第二代总线及其之间的关系和区别,然后全面论述目前市场上最为流行的第三代总线——PCIExpress。主要内容包括:PCIExpress总线的发展过程及其特点;PCIExpress总线的事务路由方法;数据包传送的主要协议和实现服务质量的方法;事务顺序、中断和错误处理;PCIExpress总线物理层详述;复位以及链路的定向和初始化;附加卡的外观结构;PCIExpress的电源管理;PCIExpress的配置方式。附录提供的内容包括PCIExpress的测试、调试和验证等。本书详细描述的PCIExpress系统的体系结构,以及列举的大量示例,对于理解PCIExpress内容并构思其用途有很大帮助,是软硬

第一部分 总览 1

1.1.1 初始PCI解决方案的作用 2

1.1 PCI Express简介 2

第1章 体系结构展望 2

1.2 与原有总线的比较 3

1.2.3 PCI Express的总吞吐量 4

1.2.2 总线性能及其插槽数的比较 4

1.2.1 作者的声明 4

1.3.1 基于33MHz PCI总线的系统 5

1.3 I/O总线体系结构展望 5

1.2.4 比较每引脚的性能 5

1.3.2 基于66MHz PCI总线的系统 16

1.3.3 基于66MHz和133MHz PCI-X 1.0总线的平台 18

1.4 PCI Express的线路 21

1.3.4 基于DDR和QDR PCI-X 2.0总线的平台 21

1.4.1 PCI Express的拓扑结构 26

1.4.2 PCI Express系统模块图 28

1.5 PCI Express规范 30

2.1 PCI Express事务简介 31

第2章 体系结构概述 31

2.1.1 PCI Express事务协议 32

2.1.2 一些事务示例 35

2.2.1 概述 38

2.2 PCI Express的设备层 38

2.2.2 设备层及相关的数据包 39

2.2.3 各PCI Express设备层的功能 42

2.3 非报告存储器读事务示例 54

2.5 PCI Express的性能与数据传送效率 57

2.4 热插拔 57

第二部分 事务协议 59

3.1 简介 60

第3章 地址空间与事务路由 60

3.1.3 端点的路由能力有限 61

3.1.2 多端口设备承担路由负荷 61

3.1.1 接收器检查3种类型的链路流量 61

3.2.2 数据链路层数据包(DLLP) 62

3.2.1 有序集 62

3.1.4 系统路由策略是可编程的 62

3.2 两种类型的本地链路流量 62

3.3.2 使用分离事务协议了吗 65

3.3.1 用于访问4种地址空间的TLP 65

3.3 处理层数据包路由基础 65

3.3.4 PCI Express的路由方法与PCI兼容吗 67

3.3.3 TLP路由的3种方法 67

3.3.6 使用TLP的头信息:概述 68

3.3.5 定义数据包格式和路由的头字段 68

3.4 应用路由机制 69

3.4.1 地址路由 70

3.4.2 ID路由 72

3.4.3 隐式路由 75

3.5.1 路由配置是PCI兼容的吗 79

3.5 路由选项的即插即用设置 79

3.5.2 基址寄存器(BAR):类型0、类型1的头 81

3.5.3 基址/限界寄存器,只限类型1头 84

3.5.4 总线号寄存器,只限类型1头 88

4.1.1 为什么要使用基于数据包的事务协议 90

4.1 基于数据包的协议简介 90

第4章 基于数据包的事务 90

4.2.1 组装和拆解TLP 92

4.2 处理层数据包 92

4.2.2 设备核心请求访问4种空间 93

4.2.4 TLP的结构 94

4.2.3 所定义的TLP事务变体 94

4.2.5 建立事务TLP请求和完成 100

4.3 数据链路层数据包 115

4.3.3 接收器对DLLP的处理 116

4.3.2 DLLP是本地流量 116

4.3.1 DLLP的类型 116

4.3.4 发送一个数据链路层数据包 117

4.3.5 DLLP数据包的类型 118

5.1 通过各链路可靠地传输TLP 122

第5章 ACK/NAK协议 122

5.2.1 ACK/NAK协议中发送器的基本组成 124

5.2 ACK/NAK协议的基本组成 124

5.2.2 ACK/NAK协议的接收器基本组成 127

5.3 ACK/NAK DLLP的格式 128

5.4.1 发送器协议详解 129

5.4 ACK/NAK协议详解 129

5.4.2 接收器协议详解 135

5.6 ACK/NAK协议小结 142

5.5 利用ACK/NAK协议可靠地处理错误情况 142

5.6.1 发送器部分 143

5.7 安排数据包时推荐的优先级 144

5.6.2 接收器部分 144

5.8.1 丢失TLP 145

5.8 更多的示例 145

5.8.3 丢失跟随NAK DLLP的ACK DLLP 146

5.8.2 丢失ACK DLLP或ACK DLLP并有CRC错误 146

5.9.1 没有直通转发模式 147

5.9 交换器直通转发模式 147

5.9.2 交换器直通转发模式 148

6.1 服务质量 150

第6章 QoS/TC/VC和仲裁 150

6.1.1 同步事务支持 151

6.1.2 差异性服务 152

6.3 流量类别和虚拟通道 153

6.2 对QoS/TC/VC和仲裁的看法 153

6.3.1 VC分配和TC映射 154

6.4.1 虚拟信道仲裁 157

6.4 仲裁 157

6.4.2 端口仲裁 163

6.4.3 交换器仲裁示例 167

7.1 流控制的概念 170

第7章 流控制 170

7.2.1 VC流控制缓冲区的组织 172

7.2 流控制缓冲区 172

7.3.1 流控制的基本组成 173

7.3 流控制机制简介 173

7.2.2 流控制信用 173

7.2.3 流控制缓冲区的最大容量 173

7.4 流控制数据包 175

7.5.1 第一阶段——初始化之后的流控制 176

7.5 流控制模型的操作——示例 176

7.5.2 第二阶段——流控制缓冲区填满 178

7.5.3 第三阶段——信用限额计数器翻转 179

7.6 通告无限流控制 180

7.5.4 第四阶段——FC缓冲区溢出错误检查 180

7.7 最小流控制通告 181

7.6.3 头和数据通告可能冲突 181

7.6.1 谁能通告无限流控制信用 181

7.6.2 无限信用通告的特殊用途 181

7.8.1 FC初始化序列 182

7.8 流控制初始化 182

7.9 FC_INIT之后的流控制更新 185

7.9.2 流控制更新频率 186

7.9.1 FC_Update DLLP的格式和内容 186

7.9.3 错误检测定时器——一种伪需求 187

8.1 简介 189

第8章 事务顺序 189

8.3 真正的PCI Express顺序规则 190

8.2 生产者/使用者模型 190

8.4.1 RO对存储器写和消息的影响 191

8.4 灵活的顺序 191

8.3.1 真正PCI Express设备的生产者/使用者模型 191

8.4.3 强顺序规则总结 192

8.4.2 RO对存储器读事务的影响 192

8.5.1 强顺序可能导致事务阻塞 193

8.5 改变顺序规则,提高性能 193

8.5.2 用VC缓冲区完成的顺序管理 194

8.6 支持PCI总线和避免死锁 195

8.5.3 改进的顺序规则小结 195

9.1 发送中断的两种方法 198

第9章 中断 198

9.2.1 MSI功能寄存器组 199

9.2 消息信号中断 199

9.2.3 生成MSI中断请求的基础 202

9.2.2 MSI配置基础 202

9.2.5 中断延迟 204

9.2.4 中断处理程序处理时的存储器同步 204

9.3.1 背景知识——PCI中断信令 205

9.3 传统的PCI中断发送机制 205

9.2.6 一些规则、建议等等 205

9.3.2 虚拟INTx信令 208

9.5 基本系统外围设备必须考虑的特殊情况 211

9.4 设备可以同时支持MSI和传统的中断 211

9.5.1 示例系统 212

10.1 背景 214

第10章 错误检测和处理 214

10.2.1 PCI Express的错误校验机制 215

10.2 PCI Express错误管理简介 215

10.2.2 错误报告机制 216

10.3 PCI Exprss错误的来源 217

10.2.3 错误处理机制 217

10.3.2 数据中毒(可选) 218

10.3.1 ECRC的产生与校验 218

10.3.4 链路流控制相关的错误 219

10.3.3 TC到VC映射错误 219

10.3.6 分离事务的错误 220

10.3.5 畸形处理层数据包(TLP) 220

10.4.1 可修正的错误 222

10.4 错误分类 222

10.5.1 错误消息 223

10.5 报告错误的方法 223

10.4.2 不可修正的非致命错误 223

10.4.3 不可修正的致命错误 223

10.6.1 PCI兼容的错误报告机制 224

10.6 基本的错误检测和处理 224

10.5.2 完成状况 224

10.6.2 PCI Express的基本错误处理 226

10.7 高级错误报告机制 230

10.7.2 粘滞比特的处理 231

10.7.1 ECRC的生成和校验 231

10.7.3 高级可修正错误的处理 232

10.7.4 高级不可修正错误的处理 233

10.7.6 根联合体错误跟踪和报告 235

10.7.5 错误记录 235

10.8 错误记录与报告小结 237

第三部分 物理层 239

11.1 物理层概述 240

第11章 物理层逻辑 240

11.1.3 接收逻辑概述 242

11.1.2 发送逻辑概述 242

11.1.1 声明 242

11.2.2 多路复用器(Mux)和多路复用器控制逻辑 244

11.2.1 发送(Tx)缓冲区 244

11.1.4 物理层链路活动状态电源管理 244

11.1.5 链路定向和初始化 244

11.2 发送逻辑细节 244

11.2.3 字节拆分(可选) 247

11.2.4 扰频器 251

11.2.5 8b/10b编码 253

11.2.6 并行到串行转换器(串行器) 261

11.2.9 发送逻辑的其他主题 262

11.2.8 发送器(Tx)时钟 262

11.2.7 差动发送驱动器 262

11.3.1 差动接收器 263

11.3 接收逻辑的细节 263

11.3.4 符号边界测定(符号锁定) 265

11.3.3 串行到并行转换器(反串行器) 265

11.3.2 接收时钟的恢复 265

11.3.5 接收器时钟补偿逻辑 266

11.3.6 通道到通道的相位补偿 267

11.3.7 8b/10b解码器 268

11.3.8 去扰频器 270

11.4 物理层错误处理 271

11.3.11 接收缓冲区(Rx缓冲区) 271

11.3.9 字节反拆分 271

11.3.10 过滤器和数据包校正检查 271

12.1 电气物理层概述 273

第12章 电气物理层 273

12.2 高速电气信令 274

12.2.2 阻抗和终结 275

12.2.1 时钟要求 275

12.2.4 ESD和短路要求 276

12.2.3 DC共模电压 276

12.2.5 接收器检测 277

12.2.6 差动驱动器和接收器 278

12.2.8 链路上发送线路的损耗 280

12.2.7 电气空闲 280

12.2.10 去矫(或预矫) 281

12.2.9 AC耦合 281

12.3.1 抖动、噪音和信号衰减 283

12.3 LVDS眼图 283

12.2.11 信标信令 283

12.3.2 眼测试(Eye Test) 284

12.3.5 噪音和信号衰减使眼变高 285

12.3.4 抖动可使眼边加宽或变窄 285

12.3.3 最优眼 285

12.4.1 概述 287

12.4 发送器驱动器特性 287

12.5 输入接收器的特性 288

12.4.2 发送驱动器一致性测试和测量负载 288

12.6 在各种电源状态中的电气物理层状态 289

13.1.1 基本复位 292

13.1 两类系统复位 292

第13章 系统复位 292

13.1.2 带内复位或Hot复位 294

13.3 从L2低功率状态中的链路唤醒 297

13.2 退出复位 297

14.1.1 概述 299

14.1 链路初始化和定向概述 299

第14章 链路初始化和定向 299

14.2 链路定向和初始化期间所用的有序集 302

14.2.1 TS1和TS2有序集 303

14.2.4 SKIP有序集 304

14.2.3 FTS有序集 304

14.2.2 电气空闲有序集 304

14.3.1 概述 305

14.3 链路定向和状况状态机(LTSSM) 305

14.3.2 LTSSM各状态概述 306

14.4 LTSSM各状态详述 307

14.4.1 检测状态 308

14.4.2 轮询状态 309

14.4.3 配置状态 312

14.4.4 恢复状态 320

14.4.6 LOs状态 324

14.4.5 Lo状态 324

14.4.7 L1状态 327

14.4.8 L2状态 328

14.4.9 Hot复位状态 329

14.4.11 回环状态 330

14.4.10 禁用状态 330

14.5.1 链路功能寄存器 332

14.5 与LTSSM相关的配置寄存器 332

14.5.2 链路状况寄存器 333

14.5.3 链路控制寄存器 334

第四部分 与电源有关的主题 335

15.1 功率预算简介 336

第15章 功率预算 336

15.2 功率预算的各个要素 337

15.3.2 扩充设备限制功率消耗 339

15.3.1 扩充端口的插槽功率极限 339

15.3 插槽功率极限控制 339

15.4 功率预算功能寄存器组 340

16.1 简介 342

第16章 电源管理 342

16.2.1 PCI PM基础 343

16.2 配置软件的入门知识 343

16.2.2 OnNow Design Initiative计划定义了全部PM 344

16.2.3 PCI Express电源管理与ACPI 347

16.3.1 PM功能寄存器组 352

16.3 设备功能的电源管理 352

16.3.2 设备的PM状态 353

16.3.3 PCI-PM寄存器详述 358

16.4 链路电源管理简介 363

16.5 链路活动状态电源管理 364

16.5.1 L0s状态 366

16.5.2 L1 ASPM状态 367

16.5.3 ASPM退出延迟 373

16.6.1 D1/D2/D3hot和L1状态 376

16.6 软件发起的链路电源管理 376

16.6.2 L2/L3准备就绪——切断链路的电源 379

16.7 链路唤醒协议和PME的生成 381

16.7.1 PME消息 382

16.7.3 避免PME消息产生背压(Back Pressure)死锁 383

16.7.2 PME序列 383

16.7.5 唤醒无法通信的链路 384

16.7.4 PME环境 384

16.7.6 辅助电源 386

第五部分 可选功能 387

17.1 背景 388

第17章 热插拔 388

17.2.2 PCI热插拔和PCI Express热插拔的区别 389

17.2.1 突然移除通知 389

17.2 PCI Express环境下的热插拔 389

17.3.1 软件基本要素 390

17.3 支持热插拔所需的基本要素 390

17.4.1 开与关状态 392

17.4 卡移除与插入过程 392

17.3.2 硬件基本要素 392

17.4.2 卡移除过程 393

17.4.3 卡插入过程 395

17.5.2 标准用户接口 396

17.5.1 背景 396

17.5 标准使用模型 396

17.6 标准热插拔控制器信令接口 399

17.7.1 插槽功能 400

17.7 热插拔控制器编程接口 400

17.7.2 插槽控制 402

17.7.3 插槽状况和事件管理 403

17.7.4 卡插槽与服务器IO模块实现 404

17.9.2 驱动程序暂停(可选) 407

17.9.1 概述 407

17.8 插槽编号 407

17.8.1 物理插槽ID 407

17.9 终止卡与驱动程序的活动 407

17.10 原语 408

18.1.1 附加卡连接器 409

18.1 简介 409

第18章 附加卡与连接器 409

18.1.2 辅助信号 413

18.1.3 电气要求 417

18.1.4 附加卡的互操作性 418

18.2.3 提升卡 419

18.2.2 服务器IO模块(SIOM) 419

18.2 正在开发的外形规格 419

18.2.1 概述 419

18.2.5 NEWCARD外形规格 420

18.2.4 微型PCI Express卡 420

第六部分 PCI Express配置 423

19.1 设备与功能的定义 424

第19章 配置概述 424

19.3 系统启动时拓扑未知 425

19.2 主总线与二级总线的定义 425

19.4.2 功能配置空间 426

19.4.1 简介 426

19.4 每种功能实现一组配置寄存器 426

19.6.3 没有对等配置事务 427

19.6.2 配置事务仅能向下游移动 427

19.5 主机/PCI桥的配置寄存器 427

19.6 由处理器发起的配置事务 427

19.6.1 仅根联合体能发起配置事务 427

19.9 如何区分PCI到PCI桥与非桥功能 428

19.8 如何发现功能 428

19.7 配置事务通过总线、设备和功能号路由 428

20.1 简介 429

第20章 配置机制 429

20.2.1 背景 430

20.2 PCI兼容配置机制 430

20.2.2 PCI兼容配置机制说明 431

20.3.1 说明 434

20.3 PCI Express增强配置机制 434

20.4 类型0配置请求 435

20.3.2 规则 435

20.5 类型1配置请求 436

20.6 PCI兼容配置访问示例 437

20.7 增强配置访问示例 438

20.8.4 PCI Express与初始化时间 439

20.8.3 PCI-X中初始化阶段的定义 439

20.8 初始配置访问 439

20.8.1 初始化期间会发生什么 439

20.8.2 PCI中初始化阶段的定义 439

20.8.5 运行期间对CRS接收的RC响应 440

21.2 带单个根联合体系统的枚举 441

21.1 简介 441

第21章 PCI Express枚举 441

21.3 枚举带多个根联合体的系统 447

21.3.3 枚举过程 448

21.3.2 增强配置机制的运行特征 448

21.3.1 PCI兼容配置机制的运行特征 448

21.4.2 交换器内的多功能设备 450

21.4.1 根联合体内的多功能设备 450

21.4 根联合体或交换器内的多功能设备 450

21.5 嵌入交换器或根联合体中的端点 451

21.6.1 概述 452

21.6 记住你的身份 452

21.7.1 RCRB地址中的问题 453

21.7 根联合体寄存器块(RCRB) 453

21.6.2 根联合体总线号/设备号的分配 453

21.6.3 在ID分配前发起请求 453

21.6.4 在ID分配前发起完成 453

21.8.3 PCI特殊周期事务 454

21.8.2 PCI Express到PCI桥或PCI Express到PCI-X桥的问题 454

21.7.2 有关RCRB的其他信息 454

21.8 其他规则 454

21.8.1 分割配置事务要求单个完成 454

22.1.1 概述 455

22.1 头类型0(Header Type 0) 455

第22章 PCI兼容配置寄存器 455

22.1.2 兼容PCI的头类型0寄存器 456

22.1.4 用于识别设备驱动程序的寄存器 457

22.1.3 与PCI不兼容的头类型0寄存器 457

22.1.6 BIST寄存器 460

22.1.5 头类型寄存器 460

22.1.7 功能指针寄存器 461

22.1.9 扩展ROM基址寄存器 463

22.1.8 CardBus CIS指针寄存器 463

22.1.10 命令寄存器 464

22.1.11 状况寄存器 466

22.1.14 中断线寄存器 467

22.1.13 主控器延时定时器寄存器 467

22.1.12 缓存行大小寄存器 467

22.1.16 基址寄存器 468

22.1.15 中断引脚寄存器 468

22.2.2 兼容PCI的头类型1寄存器 474

22.2.1 概述 474

22.1.17 Min_Gnt/Max_Lat寄存器 474

22.2 头类型1(Header Type 1) 474

22.2.3 与PCI不兼容的头类型1寄存器 475

22.2.5 总线号寄存器 476

22.2.4 术语 476

22.2.12 功能指针寄存器 478

22.2.11 BIST寄存器 478

22.2.6 厂商ID寄存器 478

22.2.7 设备ID寄存器 478

22.2.8 修订版ID寄存器 478

22.2.9 类代码寄存器 478

22.2.10 头类型寄存器 478

22.2.14 桥的存储器、寄存器组和设备ROM 479

22.2.13 基本事务过滤机制 479

22.2.15 桥的IO过滤器 480

22.2.16 桥的可预取存储器过滤器 485

22.2.18 桥命令寄存器 491

22.2.17 桥的存储器映射IO过滤器 491

22.2.19 桥状况寄存器 494

22.2.22 与桥中断有关的寄存器 497

22.2.21 桥延迟定时器寄存器 497

22.2.20 桥高速缓存行大小寄存器 497

22.3.1 AGP功能 498

22.3 PCI兼容功能 498

22.3.2 关键产品数据(VPD)功能 500

22.3.4 机箱与插槽号的分配 506

22.3.3 机箱/插槽编号寄存器简介 506

第23章 扩展ROM 512

23.1 ROM的作用——可在启动期间使用的设备 512

23.2 ROM检测 513

23.3 必需的ROM映射 514

23.4 ROM的内容 514

23.4.1 多代码映像 514

23.4.2 代码映像的格式 515

23.5 初始化代码的执行 519

23.6 开放固件简介 521

23.6.1 概述 521

23.6.2 通用设备驱动程序的格式 521

23.6.3 传递资源列表到即插即用OS 522

第24章 Express专用配置寄存器 524

24.1 简介 524

24.2.1 简介 525

24.2 PCI Express功能寄存器组 525

24.2.2 必需的寄存器 526

24.2.3 插槽寄存器 538

24.2.4 根端口寄存器 542

24.3.1 概述 544

24.3.2 高级错误报告功能 544

24.3 PCI Express扩展功能 544

24.3.3 虚拟信道(VC)功能 547

24.3.4 设备序列号功能寄存器组 557

24.3.5 功率预算功能寄存器组 558

24.4 RCRB 559

24.4.1 概述 559

24.4.4 RCRB中的扩展功能寄存器组 560

24.4.3 对RCRB的不对齐或锁定访问 560

24.4.5 RCRB丢失链路 560

24.4.2 固件向OS提供每个RCRB的基地址 560

A.1 目的 562

A.2 串行总线的拓扑结构 562

附录A 测试、调试和验证 562

A.3 双单工 563

A.4 设置分析仪、捕获和触发条件 564

A.5 链路定向,通信的第一步 565

A.6 插槽连接器与mid-bus垫 569

A.7 练习:深入的验证 570

A.8.1 概述 572

A.8.2 高速PCB的设计要求 572

A.8 信号完整性、设计和测量 572

附录B PCI Express体系结构的市场及应用 575

B.1 简介 575

B.2.1 桌面系统 576

B.2.2 服务器系统 576

B.2 企业计算系统 576

B.2.3 嵌入式控制系统 577

B.2.4 存储系统 577

B.2.5 通信系统 579

B.3 小结 580

C.2 使用模型 581

C.1 简介 581

C.2.1 智能适配器 581

附录C 用PCI Express技术实现智能适配器和多主机系统 581

C.2.3 多处理器系统 582

C.3 使用PCI的多处理器实现历史 582

C.2.2 主机故障转移 582

C.4 在PCI Express基本系统中实现多主机/智能适配器 583

C.4.1 示例:在PCI Express基本系统中实现智能适配器 585

C.4.2 示例:在PCI Express系统中实现故障转移 586

C.4.3 示例:在PCI Express基本系统中实现双主机 587

C.5 小结 588

C.6.1 直接地址转换 589

C.6.2 基于查找表的地址转换 589

C.6 地址转换 589

C.6.3 下游BAR限界寄存器 590

C.6.4 转发64位地址的存储器事务 590

附录D 类代码 592

E.2 背景 599

E.1 简介 599

E.3 PCI Express锁定协议 599

附录E 锁定事务系列 599

E.3.1 锁定消息——虚拟锁定信号 600

E.3.2 锁定协议序列——一个示例 600

E.4 锁定规则小结 602

E.4.1 与锁定事务的发起和传播有关的规则 602

E.4.2 与交换器有关的规则 603

E.4.5 与传统端点有关的规则 604

E.4.4 与根联合体有关的规则 604

E.4.6 与PCI Express端点有关的规则 604

E.4.3 与PCI Express/PCI桥有关的规则 604