1.1 PCI总线的历史 1
1.2 PCI总线的特点 1
第1章 PCI简介 1
1.3 PCI设备与功能 3
1.5 如何获得PCI总线技术规范 4
1.4 遵循的技术规范 4
2.1 突发传送 5
第2章 PCI总线操作简介 5
2.4 PCI总线时钟 6
2.3 单功能与多功能PCI设备 6
2.2 起动方、目标和代理 6
2.6 声明一个交易 7
2.5 地址段 7
2.10 对非法操作的反应 8
2.9 交易完成与总线返回空闲状态 8
2.7 数据段 8
2.8 交易过程 8
2.11 “绿色”机器 9
3.1 每条电路都是一条传送线 10
第3章 反射波转换简介 10
3.3 PCI方法:反射波转换 11
3.2 老方法:入射波转换 11
3.4 时钟信号(CLK) 13
3.6 减慢时钟可以增加总线长度 14
3.5 复位(RST*)与64位请求(REQ64*)信号时序 14
4.1 简介 15
第4章 信号组 15
4.2.1 PCI时钟信号(CLK) 16
4.2 系统信号 16
4.2.2 CLKRUN*信号 17
4.3 地址/数据总线、命令总线和字节使能 18
4.2.3 复位信号(RST*) 18
4.5 交易控制信号 20
4.4 防止过大的电流泄漏 20
4.8 错误报告信号 21
4.7 中断请求信号 21
4.6 仲裁信号 21
4.8.2 系统错 22
4.8.1 数据奇偶校验错 22
4.9 Cache支持(侦测结果)信号 23
4.12 JTAG/边界扫描信号 24
4.11 资源锁定 24
4.10 64位扩展信号 24
4.16 信号类型 25
4.15 边带信号 25
4.13 中断请求引脚 25
4.14 PME*和3.3Vaux 25
4.19.1 背景 27
4.19 负向译码(通过ISA桥) 27
4.17 设备不能同时驱动和接收一个信号 27
4.18 中央资源功能 27
4.20 阅读时序图 29
4.19.2 调节负向译码器 29
5.1 仲裁器 31
第5章 PCI总线仲裁 31
5.2 仲裁算法 32
5.3 公平仲裁举例 33
5.6 总线停放 35
5.5 隐式总线仲裁 35
5.4 主设备希望执行多次交易 35
5.8 双主设备间的仲裁举例 36
5.7 请求/确认时序 36
5.11 损坏的主设备 39
5.10 从插入式连接器的请求信号(REQ*)上拉 39
5.9 在复位(RST*)时请求信号(REQ*)和确认信号(HNT*)的状态 39
6.2 总线访问延迟 40
6.1 第一次交易起动前的强制性延迟 40
第6章 主设备与目标延迟 40
6.3 2.1版前的设备可能是“坏孩子” 41
6.4.2 在最后数据传送之后的时钟周期使IRDY*失效 42
6.4.1 主设备必须在8个时钟周期内传送数据 42
6.4 防止主设备独占总线 42
6.4.3 延迟定时器防止主设备独占总线 43
6.5.2 目标必须迅速传送数据 45
6.5.1 概述 45
6.5 防止目标独占总线 45
6.5.3 在初始化时间的目标延迟 47
6.5.4 延迟的交易 48
6.6.1 概述 52
6.6 报告改进了存储器写性能 52
6.7 存储器写最大完成限制 53
6.6.4 崩溃是禁止的 53
6.6.2 组合 53
6.6.3 字节合并 53
6.8 交易顺序和死锁 54
7.1 简介 55
第7章 命令 55
7.2.2 背景 56
7.2.1 简介 56
7.2 中断确认命令 56
7.2.3 Host/PCI桥中断确认的处理 57
7.2.4 PCI中断确认交易 58
7.3.1 概述 59
7.3 专用周期命令 59
7.2.5 PowerPCPReP中断请求的处理 59
7.3.3 专用周期交易 61
7.3.2 在软件控制下的专用周期生成 61
7.5.2 Cache行容量寄存器与批量命令 63
7.5.1 目标支持批量命令是可选的 63
7.4 IO读和写命令 63
7.5 访问存储器 63
7.5.3 批量命令是可选的性能提升工具 64
7.5.5 写存储器 65
7.5.4 桥必须丢弃主设备役使用的预提 65
7.6 配置读和写命令 67
7.5.6 关于存储器传送的更多信息 67
7.8 保留的总线命令 68
7.7 双地址周期 68
8.3 单数据段读交易举例 69
8.2 奇偶校验 69
第8章 读传送 69
8.1 关于读和写的一些基本规则 69
8.4 突发读交易举例 71
8.5.3 没有有效字节使能的数据段 73
8.5.2 在每个数据段中字节使能可以改变 73
8.5 在读或写期间字节使能的处理 73
8.5.1 在进入数据段时出现的字节使能 73
8.5.6 可以忽略字节使能的情况 74
8.5.5 字节使能采样的规则 74
8.5.4 具有有限字节使能支持的目标 74
8.6 读交易时的性能 75
9.1 单数据段写交易举例 76
第9章 写传送 76
9.2 突发写交易举例 77
9.3 写交易时的性能 80
10.1.2 在存储器突发时的寻址顺序 81
10.1.1 起始地址 81
第10章 存储器和IO寻址 81
10.1 存储器寻址 81
10.2.4 由具有8位或16位端口的设备译码 83
10.2.3 由具有完整IO双字的设备译码 83
10.2 PCIIO寻址 83
10.2.1 不要合并处理器IO写 83
10.2.2 概述 83
10.2.5 未受支持的字节使能组合导致目标失败 84
10.2.8 当IO目标不支持多数据段交易 85
10.2.7 IO地址管理 85
10.2.6 空的第一个数据段是合法的 85
10.2.9 原有的IO译码 86
11.1.1 实现快速背靠背能力的决定 87
11.1 快速背靠背交易 87
第11章 快速背靠背和步进 87
11.1.2 情况1:主设备保证没有冲突 88
11.1.3 情况2:目标保证没有冲突 91
11.2 地址/数据步进 92
11.2.5 设计者可以步进地址、数据、PAR(和PAR64)与IDSEL 93
11.2.4 设备如何表示使用步进的能力 93
11.2.1 优点:减少的电流泄漏和交叉干扰 93
11.2.2 为什么目标在步进过程中不能锁存地址 93
11.2.3 数据步进 93
11.2.8 在步进过程中的预占 94
11.2.7 步进的缺点 94
11.2.6 连续的和离散的步进 94
11.2.11 当不能使用步进时 95
11.2.10 步过举例 95
11.2.9 损坏的主设备 95
11.2.12 谁必须支持步进? 96
12.2.1 预占的主设备 97
12.2 主设备起动的终止 97
第12章 早期交易结束 97
12.1 简介 97
12.2.2 主设备失败:目标不能声明交易 99
12.3.1 STOP*信号将目标置于驱动者的地位 102
12.3 目标起动的终止 102
12.3.3 连接断开 103
12.3.2 在交接周期不允许STOP 103
12.3.4 重试 107
12.3.5 目标失败 111
12.3.6 在重试/连接断开后尽快重复请求 112
12.4目标起动的终止小结 113
13.2 PCI奇偶校验简介 114
13.1 状态位名称改变 114
第13章 错误检测与处理 114
13.4.1 数据奇偶校验的产生并在读交易检查 115
13.4 数据奇偶校验 115
13.3 PERR*信号 115
13.4.2 数据奇偶校验的产生并在写交易检查 118
13.4.3 数据奇偶校验报告 120
13.4.5 特殊情况:在专用周期的数据奇偶校验错 122
13.4.4 从数据奇偶校验错恢复 122
13.5SERR*信号 123
13.4.6 没有PERR*要求的设备 123
13.5.1 地址段奇偶校验 124
13.5.2 系统错 125
14.2 使用引脚与使用MSI能力 127
14.1 向处理器发送中断的三种方法 127
第14章 申断 127
14.3 单功能PCI设备 128
14.5 INTX*引脚到系统板电路的连接 129
14.4 多功能PCI设备 129
14.6.1 概述 130
14.6 中断路由 130
14.6.2 在PCI规范中推荐的路由 131
14.6.5 中断路由信息 133
14.6.4 专门设计的芯片组具有可编程中断路由设备 133
14.6.3 BIOS“知道”中断电路布局 133
14.7.1 概述 134
14.7 中断路由表 134
14.10.1 概述 137
14.10 中断链 137
14.7.2 寻找中断路由表 137
14.8 PCI中断是共享的 137
14.9 “挂起”中断 137
14.10.5 步骤4:执行扩展总线ROM扫描 138
14.10.4 步骤3:“挂起”嵌入式设备BIOS例程的入口 138
14.10.2 步骤1:初始化中断的全部人口到虚设的处理程序 138
14.10.3 步骤2:初始化嵌入式设备的全部入口 138
14.10.6 步骤5:执行PCI设备扫描 139
14.12.1 情况举例 140
14.12 服务共享中断 140
14.10.7 步骤6:装载操作系统 140
14.10.8 步骤7:操作系统装载和调用驱动程序的初始化代码 140
14.11 为每个中断级建立联系列表 140
14.12.3 处理器被中断并请求向量 141
14.12.2 两个设备同时产生请求 141
14.12.6 跳到虚设的处理程序:控制返回被中断的程序 143
14.12.5 跳到联系列表中的下一个驱动程序 143
14.12.4 执行第一个处理程序 143
14.13 隐式的优先级方案 144
14.15.3 MSI配置的基础 145
14.15.2 MSI中断的优点 145
14.14 中断与PCI-PCI桥 145
14.15 消息信号中断(MSI) 145
14.15.1 简介 145
14.15.4 产生MSI中断请求的基础 146
14.15.6 当中断处理程序处理时存储器已经同步 147
14.15.5 桥如何处理存储器写 147
14.15.9 MSI是一种新的能力类型 148
14.15.8 MSI不是共享的 148
14.15.7 中断延迟 148
14.15.10 MSI能力寄存器组的描述 149
14.15.12 一些规定、建议 151
14.15.11 消息写操作能够具有损坏的结尾 151
15.2 64位扩展信号 152
15.1 64位数据传送与64位寻址:独立的能力 152
第15章 64位PCI扩展 152
15.4 在未使用时,上拉防止64位扩展的漂移 153
15.3 在32位插入式连接器上的64位卡 153
15.4.2 64位插卡如何确定所安装插槽的类型 154
15.4.1 问题:32位的PCI连接器上的64位传送 154
15.5 64位数据传送能力 155
15.5.3 64位主设备与64位目标 156
15.5.2 起始地址四字排列 156
15.5.1 只有存储器命令可以使用64位传送 156
15.5.4 64位主设备与32位目标 159
15.5.5 空数据段举例 161
15.5.6 32位主设备与64位目标 162
15.5.7 执行一个64位传送 163
15.6.3 64位寻址协议 166
15.6.2 简介 166
15.664位寻址 166
15.6.1 寻址4GB以上的存储器 166
15.6.4 对负向译码时序的影响 170
15.7.1 地址段奇偶校验 171
15.7 64位奇偶校验 171
15.6.5 对主设备失败时序的影响 171
15.6.6 地址步进 171
15.6.7 在单数据段交易中的FRAME*时序 171
15.7.2 数据段奇偶校验 172
16.3.1 66MHZ能力状态位 173
16.3 器件如何表示对66MHz的支持 173
第16章 66MHzPCI的实现 173
16.1 简介 173
16.2 66MHz使用3.3V信号环境 173
16.3.2 M66EN信号 174
16.7 66MHZ器件如何确定总线速率 175
16.6 停下时钟和改变时钟频率 175
16.3.3 时钟发生器如何设定其频率 175
16.4 时钟必须是66MHZ吗? 175
16.5 时钟信号源与路由 175
16.9 可获得的最大流通量 176
16.8 具有独立总线的系统主板 176
16.10 电气特性 177
16.14 插入式连接器的数目 178
16.13 增加更多的负载与/或加长总线 178
16.11 延迟规定 178
16.12 66MHZ器件推荐的引脚排列 178
17.1 简介 179
第17章 配置地址空间简介 179
17.3 三种地址空间:I/O、存储器与配置 180
17.2 PCI设备与PCI功能 180
17.4 主桥不需要实现配置空间 181
17.5 具有一个PCI总线的系统 182
18.2.1 简介 183
18.2 总线结构 183
第18章 配置交易 183
18.1 谁执行配置? 183
18.3 在RST*后必须在225时钟之内对配置访问作出反应 185
18.2.3 情况2:目标总线是PCI总线0的下线 185
18.2.2 情况1:目标总线是PCI总线0 185
18.5.1 背景 186
18.5 配置机构*1(唯一的机构!) 186
18.4 配置机构简介 186
18.5.2 配置机构*1描述 187
18.5.3 专用周期的软件产生 190
18.6.1 基本配置机构*2 191
18.6 配置机构*2(向下兼容) 191
18.6.2 配置空间使能CSE寄存器 192
18.8.1 地址段 193
18.8 类型0配置交易 193
18.6.3 前向寄存器 193
18.6.4 对主总线上同级桥的支持 193
18.6.5 专用周期的产生 193
18.7 PowerPCPReP配置机构 193
18.8.2 IDSEL的实现 195
18.8.3 进入数据段,译码开始 197
18.8.4 类型0配置交易举例 198
18.9.1 描述 199
18.9 类型1配置交易 199
18.9.2 专用周期请求 201
18.12 不允许64位配置交易 202
18.11 允许配置突发交易 202
18.10 目标设备不存在 202
19.1 配置首部区简介 203
第19章 配置寄存器 203
19.2.2 用于识别设备驱动程序的寄存器 204
19.2.1 简介 204
19.2 强制性的首部寄存器 204
19.2.3 命令寄存器 212
19.2.4 状态寄存器 214
19.2.5 首部类型寄存器 216
19.3.3 延迟定时器:“时间片”寄存器 217
19.3.2 Cache行容量寄存器 217
19.3 其他首都寄存器 217
19.3.1 简介 217
19.3.5 基地址寄存器(BAR) 218
19.3.4 BIST寄存器 218
19.3.6 扩展ROM基地址寄存器 223
19.3.10 Min_Gnt寄存器:时间片请求 224
19.3.9 中断线寄存器 224
19.3.7 CardBusCIS指针 224
19.3.8 中断引脚寄存器 224
19.4.3 新能力列表看上去像什么 225
19.4.2 发现存在的新能力 225
19.3.11 Max_Lat寄存器:优先级请求 225
19.4 新能力 225
19.4.1 配置首部空间不够大 225
19.4.4 AGP能力 227
19.4.5 关键产品数据(VPD)能力 229
19.5 用户定义特征(UDF) 235
20.2 ROM检测 237
20.1 ROM的用途——用于引导过程的设备 237
第20章 扩展ROM 237
20.4.1 多代码 239
20.4 ROM内容 239
20.3 ROM映射要求 239
20.4.2 一种代码的格式 241
20.5 初始化代码的执行 244
20.6.1 简介 245
20.6 开放固件简介 245
20.6.2 通用设备驱动程序格式 246
20.6.3 将资源列表传送到即插即用OS 247
20.7.3 数据结构 248
20.7.2 规范2.1版中VPD的实现 248
20.7 关键产品数据(VPD) 248
20.7.1 在2.2版中从ROM移入配置空间 248
21.1.1 32与64位连接器 251
21.1 插入式连接器 251
第21章 插入卡与连接器 251
21.1.2 3.3V与5V连接器 257
21.1.3 通用卡 257
21.1.4 共享槽 258
21.3.2 长短格式卡 259
21.3.1 3.3V、5V和通用卡 259
21.1.5 Riser卡 259
21.1.6 在插入式连接器上的侦测结果 259
21.2 PME*和3.3Vaux 259
21.3 插入卡 259
21.3.6 插入卡的电源要求 260
21.3.5 保持边界扫描链的完整 260
21.3.3 小PCI(SPCI) 260
21.3.4 器件层 260
21.3.7 插入卡的最大电路长度 261
21.3.8 每个共享信号一个负载 262
22.2 解决方案 263
22.1 问题 263
第22章 热插拔PCI 263
22.4.1 概述 264
22.4 软件元素 264
22.3 不改变适配器卡 264
22.5.1 概述 265
22.5 硬件元素 265
22.4.2 系统起动 265
22.5.2 提醒指示灯与可选的槽状态指示灯 266
22.6.1 开关状态 267
22.6 卡的拔插过程 267
22.5.3 选项——电源坏检测器 267
22.5.4 选项——追踪系统电源使用情况 267
22.6.3 基本的卡插入过程 268
22.6.2 基本的卡拔出过程 268
22.7.2 暂停一个驱动程序(可选) 269
22.7.1 概述 269
22.7 静止卡与驱动程序 269
22.9 设备ROM的处理 270
22.8 驱动程序第一次访问卡 270
22.7.3 必须正确处理共享中断 270
22.7.4 静止控制多个设备的驱动 270
22.7.5 静止一个坏的卡 270
22.12.2 逻辑槽ID 271
22.12.1 物理槽ID 271
22.10 谁来配置卡? 271
22.11 存储器与/或IO空间的有效利用 271
22.12 槽识别 271
22.13 插卡组 272
22.12.4 转换槽ID 272
22.12.3 PCI总线编号,设备编号 272
22.14 原始请求 273
22.16 关于66MHZ的说明 274
22.15 关于PCIRST*的说明 274
22.17.2 卡连接到具有独立电源的设备 275
22.17.1 槽电源要求 275
22.17 关于电源的说明 275
23.3.1 PCPM基础 276
23.3 电源管理入门 276
第23章 电源管理 276
23.1 在本章中电源管理简称为“PM” 276
23.2 PCI总线PM接口规范——但首先 276
23.3.2 当前的起始设计方案定义了总体电源管理 278
23.3.3 PCI电源管理与ACPI 282
23.4 PCI总线PM接口规范 286
23.4.3 发现功能的PM能力 287
23.4.2 设备对PCIPM的支持(可选) 287
23.4.1 原有的PCI设备——无标准PM方法 287
23.4.4 电源管理——PCI总线与PCI功能 288
23.4.6 功能PM状态 291
23.4.5 总线PM状态转换 291
23.4.7 PM寄存器详细描述 297
23.4.8 PM事件的详细描述 304
23.6 BIOS/POST在起动时的责任 310
23.5.3 取得电源状态功能调用 310
23.5 OS电源管理功能调用 310
23.5.1 取得能力功能调用 310
23.5.2 设置电源状态功能调用 310
24.2 术语 312
24.1 可大可小的总线结构 312
第24章 PCI-PCI桥 312
24.3.1 例一 313
24.3 系统举例 313
24.4 PCI-PCI桥:交通指挥 315
24.3.2 例二 315
24.5 延迟规则 318
24.6.2 首部类型寄存器 319
24.6.1 概述 319
24.6 配置寄存器 319
24.6.3 关于设备ID的寄存器 320
24.6.4 总线编号寄存器 321
24.6.5 命令寄存器 322
24.6.7 底板/槽编号寄存器简介 326
24.6.6 状态寄存器 326
24.6.8 地址译码相关寄存器 328
24.6.11 BIST寄存器 341
24.6.10 延迟定时寄存器 341
24.6.9 Cache行容量寄存器 341
24.7.2 总线编号分配 342
24.7.1 简介 342
24.6.12 中断相关的寄存器 342
24.7 配置过程 342
24.7.3 底板与糟编号分配 343
24.7.4 地址空间分配 349
24.7.6 显示配置 351
24.7.5 IRQ分配 351
24.8.1 简介 356
24.8 配置与专用周期过滤 356
24.8.3 类型1配置交易 357
24.8.2 专用周期交易 357
24.8.4 类型0配置访问 358
24.11 复位 359
24.10 具有负向译码特征的PCI-PCI桥 359
24.9 中断确认处理 359
24.13.1 使用中断跟踪的设备 360
24.13 中断支持 360
24.12 仲裁 360
24.14 缓冲区管理 361
24.13.2 使用MSI的设备 361
24.14.3 多数据段专用周期请求 362
24.14.2 关于报告写缓冲区用法的规则 362
24.14.1 存储器写与使失效命令的处理 362
24.15.2 处理地址段奇偶校验错 363
24.15.1 概述 363
24.15 错误检测与处理 363
24.15.3 读数据段奇偶校验错 364
24.15.4 写数据段奇偶校验错 365
24.15.5 处理主设备失败 370
24.15.6 处理目标失败 371
24.15.7 放弃定时器时间溢出 372
24.15.8 在第二总线上处理SERR 374
25.2.1 简单设备的顺序规则 375
25.2 简单设备:顺序规则与死锁 375
第25章 交易顺序与死锁 375
25.1 简单设备与桥的定义 375
25.1.1 简单设备 375
25.1.2 桥 375
25.2.2 与简单设备有关的死锁 376
25.3.2 桥管理双向交通流量 377
25.3.1 简介 377
25.3 桥:顺序规则与死锁 377
25.3.3 生产者/消费者模型 378
25.3.4 一般顺序要求 380
25.3.5 延迟的交易顺序要求 381
25.3.6 桥顺序规则 382
25.3.7 锁定延迟的交易与报告写 387
26.2.1 概述 389
26.2 支持的OS环境 389
第26章 PCIBIOS 389
26.1 PCIBIOS的用途 389
26.2.3 286保护模式(16:16) 390
26.2.2 实模式 390
26.2.5 今天的OS使用平模式(0:32) 391
26.2.4 386保护模式(32:32) 391
26.4 确定32位BIOS支持的服务 392
26.3 确定系统是否实现32位BIOS 392
26.6 调用PCIBIOS 393
26.5 确定32位BIOS是否支持PCIBIOS服务 393
26.7 PCIBIOS存在调用 394
27.2.2 EISA主设备起动的以主存储器为目标的锁定的交易系列 395
27.2.1 概述 395
第27章 锁定 395
27.12.2 规范重新定义锁定的用法 395
27.2 要求锁定的情况 395
27.2.4 可能的死销情况 396
27.2.3 处理器起动以EISA存储器为目标的锁定的交易系列 396
27.3.1 LOCK*信号 397
27.3 PCI解决方案:总线与资源锁定 397
27.3.3 资源锁定:推荐的解决方案 398
27.3.2 总线锁定:允许但不推荐 398
27.6.1 主设备实现规则 403
27.6 锁定规则小结 403
27.4 64位寻址时LOCK*的使用 403
27.5 锁定与延迟的交易 403
27.6.2 目标实现规则 404
28.3 基本PCI/CompactPCI比较 405
28.2 CompactPCI卡与PCI兼容 405
第28章 CompactPCI与PMC 405
28.1 什么是CompactPCI 405
28.4.1 标准PCI环境 406
28.4 基本定义 406
28.4.2 无源底板 407
28.4.4 前和后面板IO简介 409
28.4.3 连接器基础 409
28.4.5 CompactPCI卡简介 410
28.4.6 系统卡 411
28.5.1 连接器 412
28.5 设计规则 412
28.4.7 周边卡 412
28.5.2 系统与周边卡设计规则 417
28.5.3 前面板和前面板IO连接器 422
28.5.4 底板设计规则 423
28.5.5 后面板IO转换板 435
28.6.2 电气插入与拔出的不同阶段 437
28.6.1 在CompactPCI2.1规范中添加ENUM*信号 437
28.6 热切换能力 437
28.6.4 三种层次的实现 438
28.6.3 要求独立的时钟线 438
28.8.3 堆积高度与卡的厚度 439
28.8.2 规范 439
28.7 关于连接器编码键的电信应用问题 439
28.8 PCI背卡(PMC) 439
28.8.1 小尺寸可附加在CompactPCI卡上 439
28.8.7 PMC后面板IO映射到3U后面板IO 440
28.8.6 PMC连接器 440
28.8.4 PMC卡的连接器部分 440
28.8.5 前面板企口 440
28.8.8 PMC后面板IO映射到6U后面板IO 441
附录——术语表 443