第1部分 基本体系结构的元素 3
第1章 简介 3
1.1 历史背景 3
1.1.1 自动化和机械计算器 3
1.1.2 从外部程序到存储程序 5
1.1.3 各代计算机简介 7
1.2 内部操作简介 10
1.2.1 与机器通信 10
1.2.2 执行指令 11
1.3 未来展望 12
第2章 基本模块 14
2.1 存储器 14
2.1.1 定义 14
2.1.2 几个技术元件 15
2.2 处理器 16
2.2.1 功能单元 16
2.2.2 处理器的寄存器 17
2.2.3 处理单元的元素 20
2.2.4 控制器的元件 21
2.2.5 地址计算单元 22
2.3 模块之间的通信 22
2.3.1 PCI总线 23
第3章 信息的表示 25
3.1 复习 25
3.1.1 以2为基数 25
3.1.2 二进制、八进制和十六进制表示 26
3.2 数字表示约定 27
3.2.1 整数 27
3.2.2 实数 28
3.2.3 浮点表示的一个示例——IEEE-754标准 31
3.2.4 动态范围与精度 33
3.2.5 实现 33
3.2.6 IEEE-754标准的扩展 34
3.3 字符表示 34
3.3.1 8位表示 34
3.3.2 现代表示 36
3.4 练习 37
第2部分 编程模型和操作 41
第4章 指令 41
4.1 编程模型 41
4.1.1 I8086的寄存器 41
4.1.2 地址构造和寻址模式 42
4.2 指令集 44
4.2.1 移动指令 44
4.2.2 算术和逻辑指令 45
4.2.3 移位指令 45
4.2.4 转移 46
4.2.5 其他指令 48
4.3 编程示例 49
4.4 从汇编语言到基本指令 51
4.4.1 汇编器 51
4.4.2 汇编阶段 52
4.4.3 连接器 53
4.4.4 何时利用汇编语言编程 54
第5章 处理器 55
5.1 控制总线 55
5.1.1 复位线路 56
5.1.2 保持线路 56
5.1.3 等待控制线路 56
5.1.4 中断线路 57
5.1.5 概念图 57
5.2 指令的执行:一个示例 57
5.2.1 指令的执行 59
5.2.2 时序图 62
5.3 定序器的构成 63
5.3.1 传统的合成方法 63
5.3.2 微编程 65
5.4 扩展 65
5.4.1 协处理器 65
5.4.2 矢量扩展 67
5.4.3 DSP和GPU 71
5.5 练习 72
第6章 输入和输出 74
6.1 示例 75
6.1.1 示例:控制热电偶 75
6.1.2 示例:串行终端连接 79
6.2 交换器的设计和寻址 81
6.2.1 交换器的设计 81
6.2.2 交换器寻址 82
6.3 交换模式 83
6.3.1 轮询交换模式 83
6.3.2 直接存储器存取 84
6.3.3 中断 88
6.4 处理中断 88
6.4.1 工作原理 88
6.4.2 示例 90
6.4.3 软件中断 91
6.4.4 屏蔽与取消屏蔽中断 91
6.4.5 中断优先级或级别 92
6.4.6 类似的机制 92
6.5 练习 93
第3部分 存储器层次结构 97
第7章 存储器 97
7.1 存储器资源 97
7.2 特征 97
7.3 存储器层次结构 98
7.3.1 局部性原理 99
7.3.2 层次结构的组织和管理 99
7.3.3 定义和性能 100
7.4 存储器大小和保护机制 100
7.5 分段 101
7.5.1 使用段寄存器:一个示例 101
7.5.2 使用段描述符 102
7.6 分页 103
7.7 存储器交叉存取和突发模式 105
7.7.1 C存取 105
7.7.2 S存取 105
7.7.3 突发模式 106
7.7.4 预取缓冲区 107
7.8 保护,I386的示例 108
第8章 缓存 109
8.1 高速缓冲存储器 109
8.1.1 操作原理和体系结构 109
8.1.2 高速缓冲存储器的操作 109
8.1.3 缓存设计 111
8.2 替换算法 114
8.2.1 LRU方法 114
8.2.2 多级缓存的情况 118
8.2.3 性能和模拟 119
第9章 虚拟存储器 122
9.1 一般概念 122
9.1.1 操作 122
9.1.2 存取信息 123
9.1.3 地址翻译 123
9.2 存取方法的规则 124
9.2.1 页错误 124
9.2.2 多级分页 125
9.2.3 服务信息、保护和访问权限 125
9.2.4 页大小 126
9.3 程序执行的示例 127
9.3.1 引入翻译缓存 128
9.3.2 执行 129
9.3.3 备注 131
9.4 二级分页的示例 132
9.4.1 管理 132
9.4.2 处理服务位 132
9.4.3 信息访问中的步骤 134
9.5 页式分段 136
9.5.1 36位扩展 138
9.6 练习 138
9.7 文档摘录 139
9.7.1 MMU简介 139
9.7.2 TLB的描述 140
9.7.3 TLB特性 142
第4部分 并行性和性能增强 147
第10章 流水线体系结构 147
10.1 动机和思想 147
10.1.1 RISC机器 147
10.1.2 操作原理 148
10.1.3 流水线体系结构的代价 150
10.2 流水线管理问题 150
10.2.1 结构风险 150
10.2.2 依赖冲突 153
10.2.3 转移 154
10.3 处理转移 155
10.3.1 延迟的转移和软件处理 155
10.3.2 转移预测 157
10.3.3 转移目标缓冲区 160
10.3.4 全局预测 161
10.3.5 示例 163
10.4 中断和异常 166
10.4.1 中断 166
10.4.2 陷阱和错误 167
第11章 体系结构的示例 168
11.1 简介 168
11.1.1 流水线描述 168
11.1.2 指令集 170
11.1.3 指令格式 171
11.2 执行指令 172
11.2.1 读取和解码指令 172
11.2.2 存储器读取 172
11.2.3 存储器写操作 174
11.2.4 寄存器到寄存器的操作 174
11.2.5 条件转移 176
11.2.6 具有立即寻址的指令 179
11.3 DLX中的冲突解决 179
11.3.1 转发技术 179
11.3.2 处理转移 182
11.4 练习 185
第12章 多处理器环境中的缓存 190
12.1 缓存一致性 191
12.1.1 示例 191
12.1.2 要考虑的元素 192
12.1.3 一致性的定义 192
12.1.4 方法 193
12.2 嗅探协议的示例 194
12.2.1 MSI协议 194
12.2.2 MEI协议 197
12.2.3 MESI协议 197
12.2.4 MOESI协议 199
12.3 改进 200
12.4 基于目录的一致性协议 200
12.5 一致性 203
12.5.1 相容性与一致性 203
12.5.2 表示法 203
12.5.3 原子相容性 204
12.5.4 顺序相容性 204
12.5.5 因果相容性 205
12.5.6 弱相容性 206
12.6 练习 207
第13章 超标量体系结构 210
13.1 超标量体系结构的原理 210
13.1.1 风险 211
13.2 寻求解决方案 212
13.2.1 原理 212
13.2.2 示例 214
13.3 处理指令流 215
13.3.1 记分牌的原理 215
13.3.2 记分牌实现 216
13.3.3 详细的示例 217
13.3.4 关于优先级约束的注释 221
13.3.5 Tomasulo算法的原理 222
13.3.6 详细的示例 224
13.3.7 循环执行和WAW风险 229
13.4 VLIW体系结构 231
13.4.1 超标量体系结构的局限性 231
13.4.2 VLIW体系结构概述 232
13.4.3 预测 233
13.5 练习 235
第5部分 附录 241
附录A 提示和解决方案 241
A.1 信息的表示 241
A.2 处理器 244
A.3 输入和输出 245
A.4 虚拟存储器 246
A.5 流水线体系结构 247
A.6 多处理器环境中的缓存 253
A.7 超标量体系结构 256
附录B 编程模型 258
B.1 I8086中的指令编码 258
B.2 DLX体系结构的指令集 259
B.2.1 浮点数上的操作 259
B.2.2 移动操作 259
B.2.3 算术和逻辑运算 260
B.2.4 转移 260
参考文献 262