第1章 Cell宽带引擎处理器概述 1
1.1 背景 2
1.1.1 设计目标 2
1.1.2 功率消耗、内存和频率 3
1.1.3 本书内容 4
1.2 硬件环境 4
1.2.1 处理器部件 4
1.2.2 部件互连总线 5
1.2.3 存储器接口控制器 5
1.2.4 Cell宽带引擎接口单元 6
1.3 编程环境 6
1.3.1 指令集 6
1.3.2 存储域和接口 7
1.3.3 字节排序法和比特表示法 9
1.3.4 运行环境 9
第2章 PowerPC处理器部件 10
2.1 PowERPC处理器单元 11
2.2 PowERPC处理器存储子系统 12
2.3 PPE寄存器 13
2.4 PowERPC指令 15
2.4.1 数据类型 15
2.4.2 寻址模式 16
2.4.3 指令 16
2.5 向量/SIMD多媒体扩展指令 17
2.5.1 SIMD向量化 17
2.5.2 数据类型 18
2.5.3 寻址模式 19
2.5.4 指令类型 19
2.5.5 指令 20
2.5.6 图形舍入模式 20
2.6 向量/SIMD多媒体扩展C/C++语言内置指令 20
2.6.1 向量数据类型 20
2.6.2 向量值文字表述 20
2.6.3 内置指令 21
第3章 协同处理部件 23
3.1 协同处理单元 24
3.1.1 本地存储 24
3.1.2 寄存器堆 27
3.1.3 可执行单元 27
3.1.4 浮点型的支持 28
3.2 内存流控制器 30
3.2.1 通道 31
3.2.2 邮箱和信令 31
3.2.3 MFC命令和命令队列 32
3.2.4 DMA控制器 32
3.2.5 协同内存管理单元 33
3.3 SPU指令集 33
3.3.1 数据类型 34
3.3.2 指令 34
3.4 C/C++语言内建指令 34
3.4.1 向量数据类型 35
3.4.2 向量文字(Vector Literals) 35
3.4.3 内建指令 35
第4章 虚拟存储环境 36
4.1 简介 36
4.2 PPE存储管理 37
4.2.1 存储管理单元 38
4.2.2 地址转换过程 39
4.2.3 地址转换使能 39
4.2.4 有效-实地址的转换 40
4.2.5 分段 42
4.2.6 分页 49
4.2.7 快表 49
4.2.8 实地址模式 54
4.2.9 32位模式下的有效地址 57
4.3 SPE存储管理 57
4.3.1 协同内存管理(SMM)单元 57
4.3.2 地址转换使能 58
4.3.3 分段 59
4.3.4 分页 61
4.3.5 快表 61
4.3.6 实地址模式 69
4.3.7 异常处理和存储保护 69
第5章 内存映射 73
5.1 简介 73
5.1.1 配置环的初始化 74
5.1.2 内存区域的分配 75
5.1.3 内存中的保留区域 77
5.1.4 保护属性 77
5.2 PPE内存映射 77
5.2.1 PPE内存映射寄存器 77
5.2.2 预定义的实地址位置 78
5.3 SPE内存映射 78
5.3.1 SPE本地存储的内存映射 79
5.3.2 SPE内存映射寄存器 80
5.4 BEI内存映射寄存器 81
输入和输出 82
第6章 高速缓存管理 83
6.1 PPE高速缓存 83
6.1.1 配置 84
6.1.2 概述 84
6.1.3 L1高速缓存 85
6.1.4 跳转历史表与链接栈 91
6.1.5 L2高速缓存 91
6.1.6 L1和L2高速缓存管理指令 96
6.1.7 有效地址至实地址的转换阵列 99
6.1.8 快表TLB 99
6.1.9 指令预取队列管理 99
6.1.10 加载子单元管理 100
6.2 SPE高速缓存 100
6.2.1 快表 100
6.2.2 原子单元与原子缓存 100
6.3 替换管理表 103
6.3.1 PPE的TLB置换管理表 103
6.3.2 PPE的L2高速缓存替换管理表 106
6.3.3 SPE的TLB替换管理表 107
6.4 VO地址转换缓存 107
第7章 输入/输出体系结构 108
7.1 简介 108
7.1.1 输入/输出接口 108
7.1.2 系统配置 109
7.1.3 输入/输出寻址 110
7.2 数据与访问类型 111
7.2.1 数据长度与对齐 111
7.2.2 原子访问 111
7.3 寄存器与数据结构 111
7.3.1 IOCmd配置寄存器 112
7.3.2 I/O段表起始地址寄存器 112
7.3.3 I/O段表 114
7.3.4 I/O页表 115
7.3.5 IOC基地址寄存器 118
7.3.6 I/O异常状态寄存器 120
7.4 I/O地址转换 120
7.4.1 转换概述 120
7.4.2 I/O转换步骤 120
7.5 V/O异常 123
7.5.1 I/O异常原因 123
7.5.2 V/O异常状态寄存器 124
7.5.3 V/O异常屏蔽寄存器 124
7.5.4 V/O异常响应 124
7.6 VO地址转换缓存 124
7.6.1 IOST缓存 124
7 6.2 IOPT缓存 126
7.7 I/O存储模型 130
7.7.1 内存一致性 131
7.7.2 存储访问顺序 131
7.7.3 通过一个IOIF到其他V/O单元的访问 136
7.7.4 例程 137
第8章 资源分配管理 143
8.1 简介 143
8.2 请求方 144
8.2.1 PPE和SPE 145
8.2.2 输入/输出 145
8.3 资源管理 146
8.4 令牌 147
8.4.1 单Cell/B.E.处理器系统所需令牌 147
8.4.2 无须令牌的操作 151
8.4.3 多Cell/B.E.处理器系统所需要的令牌 151
8.5 令牌管理器 152
8.5.1 请求跟踪 152
8.5.2 令牌授予 152
8.5.3 未分配的RAG 154
8.5.4 高优先级令牌请求 154
8.5.5 内存令牌 155
8.5.6 输入/输出令牌 157
8.5.7 未使用令牌 158
8.5.8 内存区块,IOIF分配速率和未使用令牌 158
8.5.9 令牌请求和授予的范例 158
8.5.10 分配比例 161
8.5.11 有效地判断TKM优先级寄存器的值 162
8.5.12 从资源到令牌管理器的反馈 164
8.6 PPE、SPEs、MIC和IOC的配置 166
8.6.1 配置寄存器概要 166
8.6.2 SPE地址范围检查 168
8.7 用MMIO改变资源管理器寄存器的设置 169
8.7.1 对RAID的改变 169
8.7.2 改变请求方的令牌请求启用状态 170
8.7.3 改变请求方的地址映射 171
8.7.4 改变请求方对每次存取中多令牌的使用 171
8.7.5 改变对TKM的反馈 172
8.7.6 改变TKM寄存器 172
8.8 令牌请求与令牌授予之间的延迟 173
8.9 系统管理器接口 173
第9章 PPE中断 174
9.1 简介 174
9.2 中断体系结构概要 175
9.3 中断寄存器 178
9.4 中断处理 179
9.5 中断向量及定义 180
9.5.1 系统复位中断(可选的向量地址或x‘00..00000100’) 181
9.5.2 机器检查中断(x‘00..00000200’) 182
9.5.3 数据存储中断(x‘00..00000300’) 183
9.5.4 数据段中断 185
9.5.5 指令存储中断(x‘00..00000400’) 185
9.5.6 指令段中断(x‘00..00000480’) 186
9.5.7 外部中断(x‘00..00000500’) 186
9.5.8 对齐中断(x‘00..00000600’) 187
9.5.9 程序中断(x‘00..00000700’) 187
9.5.10 浮点不可用中断(x‘00..00000800’) 189
9.5.11 递减器中断(x‘00..00000900’) 189
9.5.12 系统管理器递减器中断(x‘00..00000980’) 189
9.5.13 系统调用中断(x‘00..00000C00’) 190
9.5.14 跟踪中断(x‘00..00000D00’) 190
9.5.15 VXU不可用中断(x‘00..00000F20’) 191
9.5.16 系统错误中断(x‘00..00001200’) 192
9.5.17 维护中断(x‘00..00001600’) 193
9.5.18 温度管理中断(x‘00..00001800’) 194
9.6 直接外部中断 195
9.6.1 中断的表示 196
9.6.2 IIC中断寄存器 197
9.6.3 SPU与MFC中断 201
9.6.4 其他外部中断 202
9.7 间接外部中断 206
9.7.1 间接外部中断体系结构 206
9.7.2 间接外部中断的实现 207
9.8 转发至PPE的SPU和MFC中断 209
9.8.1 中断类型和类别 209
9.8.2 中断寄存器 210
9.8.3 中断定义 214
9.8.4 处理SPU和MFC中断 217
9.9 中断线程目标 218
9.10 中断优先级 219
9.11 中断延迟 221
9.12 中断产生时机器状态寄存器的设置 221
9.13 中断与系统管理器 222
9.14 中断与多线程 223
9.15 停机检查 223
9.16 外部中断控制器使用 223
9.17 Cell/B.E.与PowerPC中断间的关系 223
第10章 PPE多线程 225
10.1 多线程程序设计指导 226
10.2 线程资源 227
10.2.1 寄存器 228
10.2.2 数组、队列和其他结构 228
10.2.3 流水线共享和多线程支持 229
10.3 线程状态 231
10.3.1 特权态 231
10.3.2 挂起或启用状态 232
10.3.3 阻塞或停顿状态 232
10.4 线程控制和状态寄存器 232
10.4.1 机器状态寄存器 233
10.4.2 硬件实现寄存器0(HID0) 234
10.4.3 逻辑分区控制寄存器(LPCR) 235
10.4.4 控制寄存器(CTRL) 235
10.4.5 本地和远程线程状态寄存器(TSRL和TSRR) 236
10.4.6 线程切换控制寄存器(TSCR) 237
10.4.7 线程切换超时寄存器(TTR) 238
10.5 线程优先级 238
10.5.1 线程优先级组合 238
10.5.2 选择有用的线程优先级 240
10.5.3 指令调度优先级组合的实例 241
10.6 线程控制和配置 243
10.6.1 恢复和挂起线程 244
10.6.2 设置指令分发策略:线程优先级和临时停顿 244
10.6.3 预防饥饿:进度监测 246
10.6.4 多线程操作状态切换 246
10.7 流水线事件和指令分发 247
10.7.1 指令分发原则 247
10.7.2 使指令分发停顿的流水线事件 247
10.8 挂起和恢复线程 249
10.8.1 线程挂起 249
10.8.2 线程恢复 250
10.8.3 挂起状态线程的异常和中断交互 251
10.8.4 中断的目标线程和行为 253
第11章 系统管理器和逻辑分区 255
11.1 简介 255
11.1.1 系统管理器和操作系统 256
11.1.2 分区资源的划分 256
11.1.3 逻辑分区管理流程图示例 257
11.2 PPE逻辑分区机制 258
11.2.1 系统管理状态使能 258
11.2.2 系统管理状态寄存器 259
11.2.3 实存管理 260
11.2.4 中断及环境管理 264
11.3 SPE逻辑分区机制 266
11.3.1 访问特权级 267
11.3.2 存储管理机制 267
11.3.3 中断控制 269
11.3.4 其他SPE管理机制 270
11.3.5 缓存管理 270
11.3.6 错误管理 271
11.4 I/O地址转换 271
11.4.1 IOC存储管理单元 271
11.4.2 I/O段表和页表 272
11.5 资源分配管理 272
11.5.1 逻辑分区与资源管理的结合 272
11.5.2 资源分配组和令牌管理器 273
11.6 功耗管理 273
11.6.1 进入低功耗状态 273
11.6.2 线程状态的挂起和恢复 274
11.7 错误隔离 274
11.8 代码范例 274
11.8.1 错误代码和系统管理调用(hcall)令牌 275
11.8.2 PowerPC 64位ELF格式的系统管理调用的C函数接口 275
第12章 SPE上下文切换 277
12.1 简介 277
12.2 数据结构 278
12.2.1 本地存储上下文保存区 278
12.2.2 上下文保存区 278
12.3 SPE上下文切换序列概述 279
12.3.1 SPE上下文的保存 280
12.3.2 SPE上下文的恢复 281
12.4 实现技巧 282
12.4.1 加锁 282
12.4.2 看门狗计时器 282
12.4.3 事件的等待 282
12.4.4 PPE对SPU通道的访问机制 282
12.4.5 SPE中断 283
12.4.6 MFC DMA队列的挂起 283
12.4.7 SPE上下文保存与恢复序列的代码 283
12.4.8 SPE参数传递 283
12.4.9 SPE上下文保存和恢复序列代码的存储 284
12.4.10 复位SPE状态 284
12.4.11 调度 284
12.4.12 轻量级SPE上下文保存 284
12.5 SPE上下文切换详细步骤 285
12.5.1 上下文保存代码 285
12.5.2 上下文恢复代码 291
12.6 系统管理器下的实现 300
第13章 时基与递减器 301
13.1 简介 301
13.2 时基机制 301
13.2.1 时钟域 301
13.2.2 时基寄存器 302
13.2.3 时基频率 303
13.2.4 时基同步模式控制 304
13.2.5 TB寄存器的读与写 307
13.2.6 计算Time-of-Day 308
13.3 递减器 309
13.3.1 PPE递减器 309
13.3.2 SPE递减器 310
13.3.3 使用SPU递减器监控SPU的代码性能 310
第14章 对象、可执行文件及SPE的加载 315
14.1 简介 315
14.2 ELF的概述与扩展 316
14.2.1 概述 316
14.2.2 SPE-ELF扩展 317
14.3 运行时的初始化及要求 319
14.3.1 PPE的初始机器状态 319
14.3.2 Linux环境下SPE的初始机器状态 321
14.4 链接器的要求 323
14.4.1 对SPE链接器的要求 324
14.4.2 对PPE链接器的要求 324
14.5 CESOF格式 324
14.5.1 CESOF概述 325
14.5.2 CESOF中ELF的使用约定 326
14.5.3 嵌入PPE-ELF对象中的SPE-ELF可执行对象:.spu.elf节 326
14.5.4 spe_program_handle的数据结构 327
14.5.5 TOE: EA空间中定义的访问符号值 329
14.5.6 未来对CESOF软件工具链的改进 333
14.6 SPE运行时加载器 333
14.6.1 运行时加载的概述 334
14.6.2 SPE运行时加载器的要求 334
14.6.3 SPE运行时加载器的示范框架定义 336
14.7 SPE执行环境 341
14.7.1 SPE Stop-and-Signal指令的信号类型 341
第15章 电源与温度管理 343
15.1 电源管理 343
15.1.1 Cell/B.E.慢速状态 344
15.1.2 PPE暂停态(0) 345
15.1.3 SPU暂停态 346
15.1.4 MFC暂停态 346
15.2 温度管理 347
15.2.1 温度管理操作 347
15.2.2 配置环的设置 349
15.2.3 热寄存器 349
15.2.4 热传感状态寄存器 349
15.2.5 热传感器中断寄存器 349
15.2.6 动态温度管理寄存器 352
第16章 性能监测 356
16.1 工作原理 357
16.2 事件(信号) 357
16.3 性能计数器 357
16.4 跟踪数组 358
第17章 SPE通道和相关MMIO接口 359
17.1 简介 359
17.1.1 SPE内部通道的使用 359
17.1.2 PPE和其他的SPE访问通道 360
17.1.3 通道特性 360
17.1.4 通道概要 361
17.1.5 通道指令 361
17.1.6 通道容量与阻塞 361
17.2 SPU事件管理通道 365
17.3 SPU信号通知通道 365
17.4 SPU递减器 366
17.4.1 SPU写递减器通道 366
17.4.2 SPU读递减器通道 366
17.5 MFC写多源同步请求通道 367
17.6 SPU读机器状态通道 367
17.7 SPU写状态保存-恢复通道 368
17.8 SPU读状态保存-恢复通道 368
17.9 MFC命令参数通道 368
17.9.1 MFC本地存储器地址通道 370
17.9.2 MFC有效地址高32位通道 370
17.9.3 MFC有效地址低32位/列表地址通道 370
17.9.4 MFC传输大小/列表大小通道 371
17.9.5 MFC命令标签标识符通道 372
17.9.6 MFC类标识符和MFC命令操作码通道 372
17.10 MFC标签组管理通道 373
17.10.1 MFC写标签组查询屏蔽通道 373
17.10.2 MFC读标签组查询屏蔽通道 374
17.10.3 MFC写标签状态更新请求通道 374
17.10.4 MFC标签组状态读通道 375
17.10.5 MFC读列表停顿-通知标签状态通道 375
17.10.6 MFC写列表停顿-通知标签确认通道 376
17.11 MFC原子命令状态读通道 377
17.12 SPU邮箱通道 378
第18章 SPE事件 379
18.1 简介 379
18.2 事件和事件管理通道 380
18.2.1 事件管理通道的事件条件和位定义 380
18.2.2 挂起事件寄存器 381
18.2.3 SPU读事件状态 382
18.2.4 SPU写事件屏蔽 383
18.2.5 SPU写事件确认 383
18.2.6 SPU读事件屏蔽 384
18.3 SPU中断机制 384
18.4 中断地址保存-恢复通道 385
18.4.1 SPU读状态保存-恢复通道 385
18.4.2 SPU写状态保存-恢复通道 385
18.4.3 使用SPU写状态保存-恢复通道的嵌套中断 385
18.5 事件处理协议 386
18.5.1 使用轮询或停顿的方法处理同步事件 386
18.5.2 使用中断的方法处理异步事件 387
18.5.3 中断时的临界段保护 388
18.6 事件的处理准则 388
18.6.1 多个启用事件的协议 388
18.6.2 处理多源同步事件的步骤 390
18.6.3 处理特权注意事件的步骤 391
18.6.4 处理锁行保留丢失事件的步骤 392
18.6.5 处理信号通知1可用事件的步骤 393
18.6.6 处理信号通知2可用事件的步骤 394
18.6.7 处理SPU写出邮箱可用事件的步骤 394
18.6.8 处理SPU写出中断邮箱可用事件的步骤 395
18.6.9 处理SPU递减器事件的步骤 396
18.6.10 处理SPU读入邮箱可用事件的步骤 397
18.6.11 处理MFC SPU命令队列可用事件的步骤 398
18.6.12 处理DMA列表命令停顿-通知事件的步骤 398
18.6.13 处理标签组状态更新事件的步骤 400
18.7 开发一个基本的中断处理函数 401
18.7.1 基本中断协议的特征和设计 401
18.7.2 FLIH的设计 401
18.7.3 SLIH设计和注册SLIH函数 404
18.7.4 应用程序代码范例 406
18.8 嵌套中断的处理函数 407
18.8.1 嵌套处理函数的设计 407
18.8.2 嵌套中断的FLIH设计 407
18.9 专用中断栈的使用 409
18.10 应用举例 411
18.10.1 SPU递减器事件 411
18.10.2 标签组状态更新事件 412
18.10.3 DMA列表命令停顿-通知事件 413
18.10.4 MFC SPU命令队列可用事件 415
18.10.5 SPU读入邮箱可用事件 415
18.10.6 SPU信号通知可用事件 416
18.10.7 锁行保留丢失事件 416
18.10.8 特殊注意事件 416
第19章 DMA传输与处理器交互通信 417
19.1 简介 417
19.2 MFC命令 418
19.2.1 DMA命令 419
19.2.2 DMA列表命令 421
19.2.3 同步命令 421
19.2.4 命令修饰 422
19.2.5 标签组 422
19.2 6 MFC命令发射 423
19.2.7 类标识符的替换和传输 424
19.2.8 DMA命令的完成 425
19.3 PPE发起的DMA传输 425
19.3.1 MFC命令发射 426
19.3.2 MFC命令队列控制寄存器 427
19.3.3 DMA命令发射状态和错误 428
19.4 SPE发起的DMA传输 431
19.4.1 MFC命令发射 432
19.4.2 MFC命令队列监控通道 433
19.4.3 DMA命令发射状态和错误 434
19.4.4 DMA列表命令的例程 437
19.5 高效MFC命令使用指南 440
19.6 邮箱 440
19.6.1 邮箱的读和写 441
19.6.2 邮箱阻塞 442
19.6.3 等待预期消息 442
19.6.4 邮箱的使用 442
19.6.5 SPU写出邮箱 443
19.6.6 SPU读入邮箱 447
19.7 信号通知 451
19.7.1 SPU信号通道 451
19.7.2 信号的使用 452
19.7.3 模式配置 452
19.7.4 SPU信号通知通道1 452
19.7.5 SPU信号通知通道2 453
19.7.6 发送信号 453
19.7.7 接收信号 456
19.7.8 邮箱和信号通知之间的区别 458
第20章 共享存储同步 459
20.1 共享存储访问定序 459
20.1.1 存储模型 459
20.1.2 PPE定序指令 461
20.1.3 SPU定序指令 465
20.1.4 MFC定序机制 468
20.1.5 MFC多源同步机制 472
20.1.6 定序机制的应用场景 478
20.2 PPE原子同步 479
20.2.1 原子同步指令 479
20.2.2 PPE同步原语 481
20.2.3 SPE同步原语 484
20.3 SPE原子同步 491
20.3.1 用于原子更新的MFC命令 491
20.3.2 MFC读原子命令状态通道 493
20.3.3 活锁避免 493
20.3.4 同步原语 495
第21章 并行编程 503
21.1 挑战 503
21.2 并行编程模式 504
21.2.1 术语 504
21.2.2 寻找并行 505
21.2.3 并行编程策略 506
21.3 并行编程的步骤 508
21.3.1 第1步:理解问题 508
21.3.2 第2步:选择编程工具和编程技术 508
21.3.3 第3步:开发高层并行策略 509
21.3.4 第4步:开发底层并行策略 509
21.3.5 第5步:设计有效的数据结构 509
21.3.6 第6步:循环改进 510
21.3.7 第7步:性能调优 510
21.4 CELL/B.E.处理器中并行的级别 511
21.4.1 SIMD并行 512
21.4.2 超标量并行 512
21.4.3 硬件多线程 512
21.4.4 多执行单元 512
21.4.5 多个Cell/B.E.处理器 512
21.5 并行化工具 513
21.5.1 语言扩展:内置指令与指示 513
21.5.2 编译器对单-共享内存的支持 514
21.5.3 OpenMP指示 515
21.5.4 编译器控制的软件缓存 516
21.5.5 用于代码分割的编译器及运行时支持 519
21.5.6 线程库 520
第22章 单指令多数据编程 521
22.1 单指令多数据基础 521
22.1.1 将标量数据转为向量数据 522
22.1.2 系统学习SIMD编程 525
22.1.3 编写高效的自动SIMD化代码 532
22.2 支持自动SIMD化的编译器 534
22.2.1 动机与挑战 535
22.2.2 正确和错误的SIMD化实例 537
22.3 编译器的SIMD化框架 539
22.3.1 阶段一:基本块聚集 541
22.3.2 阶段二:短循环聚集 541
22.3.3 阶段三:循环级聚集 542
22.3.4 阶段四:对齐反虚拟化 543
22.3.5 阶段五:长度反虚拟化 547
22.3.6 阶段六:SIMD化代码生成和指令调度 547
22.3.7 SIMD化例程:多源SIMD并行 549
22.3.8 SIMD化例程:多数据长度 551
22.3.9 向量操作和混和模式SIMD化 554
22.4 其他编译器优化 554
22.4.1 OpenMP 554
22.4.2 子字数据类型 555
22.4.3 SPE的后端调度 556
22.4.4 利用典型优化 556
第23章 SIMD扩展与SPU编程 558
23.1 结构差异 558
23.1.1 寄存器 559
23.1.2 数据类型 560
23.1.3 指令集差异 561
23.2 将PPE上的SIMD指令移植到SPE上 563
23.2.1 代码映射 563
23.2.2 简单宏转换 564
23.2.3 全功能映射 567
23.2.4 具有代码可移植性的typedef 567
23.2.5 目标编译器的定义 568
第24章 SPE编程技巧 569
24.1 DMA传输 570
24.1.1 从SPE端启动DMA传输 570
24.1.2 重叠DMA传输和计算 570
24.1.3 DMA传输和LS访问 575
24.2 SPU流水线和双发射原则 575
24.3 跳转消除和预测 576
24.3.1 函数内联和循环展开 577
24.3.2 使用位选指令进行预测 577
24.3.3 跳转提示 578
24.3.4 基于程序的跳转预测 581
24.3.5 概要分析或语言提示跳转预测 583
24.3.6 软件跳转-目标地址缓冲 584
24.3.7 使用控制流记录跳转历史 584
24.4 循环展开和流水线化 585
24.5 偏移指针 587
24.6 转换和查表 587
24.6.1 字节混洗指令 587
24.6.2 快速8位SIMD查表 588
24.7 整数乘 591
24.8 标量代码 591
24.8.1 标量加载和存储 591
24.8.2 将标量数据类型转换为向量数据类型 592
24.9 非对齐加载 593
附录A PPE指令集和内置指令 594
附录B SPU指令集与内置指令 637
附录C 性能监测信号 659
术语表 688