没有合适的资源?快使用搜索试试~ 我知道了~
首页胡伟武《计算机体系结构基础》2023版:指令系统与硬件协同
胡伟武《计算机体系结构基础》2023版:指令系统与硬件协同
精选学习资源,大学生必学!(篇)
需积分: 0 8 下载量 190 浏览量
更新于2024-06-16
收藏 14.54MB PDF 举报
"《计算机体系结构基础 2023版 胡伟武》是针对计算机体系结构的教材,内容涵盖了指令系统结构、计算机硬件结构、CPU微结构、并行处理结构和计算机性能分析等多个核心主题。书中强调了体系结构、基础软件、电路和器件之间的相互关系,并对计算机的基本组成、性能指标、发展历史和设计原则进行了深入讲解。此外,还详细探讨了RISC指令集、特权指令系统、存储管理和软硬件协同等方面的知识。"
正文:
计算机体系结构基础是计算机科学的重要组成部分,胡伟武等编著的2023版教材全面介绍了这一领域。首先,引言部分阐述了计算机体系结构的研究内容,从一以贯之的角度出发,解释了计算机的基本组成,包括运算器、控制器、存储器和输入输出设备,并讨论了衡量计算机性能、价格和功耗的指标。
在指令系统结构章节中,教材深入解析了指令系统的重要性,介绍了指令系统设计的原则,如简化指令集(RISC)和复杂指令集(CISC)的对比,以及C语言如何在机器层面表示。特权指令系统章节则详细讲解了异常与中断的处理机制,存储管理中的TLB(Translation Lookaside Buffer)结构及其在地址翻译异常中的作用。
书中强调软硬件协同,讲解了应用程序二进制接口(ABI)的设计,包括寄存器约定和函数调用约定,这些对于理解软件和硬件如何无缝交互至关重要。此外,CPU微结构部分可能涵盖了流水线技术、超标量设计和多核架构等内容,而并行处理结构则可能涉及SIMD(单指令多数据)和MIMD(多指令多数据)模型,以及GPU的角色。
计算机性能分析是另一个关键主题,可能涵盖了性能度量、性能模型以及优化策略。书中可能会讨论摩尔定律的影响,以及随着技术进步,如何通过架构创新来应对性能提升的挑战。
整体来看,这本教材不仅提供了理论知识,还强调实践应用,适合计算机科学专业的学生和相关从业者学习,有助于他们理解计算机体系结构的深层次原理,以及如何设计和优化高性能计算系统。
xvi 插图
4.2 fun.c 对应的 LoongArch 汇编代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.3 fun.c 对应的 MIPS 汇编代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.4 varg.c 源代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.5 C 程序的典型虚拟内存布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.6 一个简单 C 程序的虚拟内存布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.7 使用帧指针寄存器的栈帧布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.8 一个简单的 simple 函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.9 simple 函数的汇编代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.10 simple 函数不保留栈帧指针的编译结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.11 normal 函数代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.12 normal 函数的 gcc ‑O2 编译结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.13 dynamic 函数源代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.14 dynamic 函数的汇编代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.15 键盘输入的中断处理部分路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.16 调用 write 系统调用输出字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.1 冯·诺依曼计算机体系结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.2 存储层次 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.3 DRAM 的单元读写原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.4 SDRAM 的功能结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.5 磁盘的内部结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.6 CPU‑GPU‑北桥‑南桥结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.7 CPU ‑北桥 ‑南桥结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.8 CPU ‑弱北桥 ‑南桥结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.9 CPU ‑ 南桥结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.10 SOC 单片结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.11 龙芯 3A3000+7A1000 两片方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.12 3A3000+7A1000 的不同显示方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.1 君正 M200 芯片的结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.2 读事务架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
插图 xvii
6.3 写事务架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.4 AXI 设备的接口和互连 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.5 突发读事务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.6 重叠的读事务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.7 写事务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.8 使用 AHB 和 APB 连接的微控制器系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.9 使用 AXI 总线互连的通用高性能处理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.10 台式机的 DDR3 内存条和内存插槽 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.11 台式机的 DDR2 内存条 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.12 DDR2 内存各状态转换图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.13 DDR3 SDRAM 读时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.14 DDR3 SDRAM 写时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.15 SDRAM 的访问时序图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
6.16 调度前的命令序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.17 调度后的命令序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.18 CPU‑南桥两片结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.19 龙芯 3A2000/3A3000 四路系统结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.20 PCI 总线设备连接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.21 HT 总线连接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.22 PCI 总线信号定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.23 HT 总线传输示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.24 PCIE 接口位置示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.25 PCIE 接口连接示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.26 PCIE 总线包格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.1 系统复位到操作系统启动的简要流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.2 龙芯 3A5000 的一级数据 Cache 组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7.3 HyperTransport 总线配置访问的两种类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.4 标准的设备配置空间寄存器分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.5 BAR 的寄存器定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
xviii 插图
8.1 IEEE 754 浮点数格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8.2 半导体硅原子结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
8.3 MOS 晶体管组成结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
8.4 NMOS 晶体管工作原理示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.5 MOS 晶体管开关行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.6 常用基本逻辑门电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.7 时钟信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.8 RS 锁存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.9 D 锁存器和 D 触发器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.10 D 触发器建立时间、保持时间和 Clock‑to‑Q 时间 . . . . . . . . . . . . . . . . . . . . . . . 196
8.11 CMOS 电路:非门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.12 CMOS 电路:与非门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.13 CMOS 电路:或非门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.14 CMOS 电路:传输门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.15 CMOS 电路:D 触发器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.16 CMOS 反相器的延迟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.17 一位全加器逻辑电路图与示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.18 32 位行波进位加法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.19 块内并行的 4 位先行进位逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
8.20 块内并行块间串行的 16 位先行进位加法器的进位逻辑 . . . . . . . . . . . . . . . . . . . 204
8.21 包含块间进位生成因子和进位传递因子的 4 位先行进位逻辑 . . . . . . . . . . . . . . . 205
8.22 块内并行且块间并行的 16 位先行进位逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.23 利用加法器实现减法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.24 4 位相等比较器逻辑电路及其示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
8.25 4 位移位器逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
8.26 迭代式硬件原码乘法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
8.27 补码乘法计算示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.28 迭代式硬件补码乘法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.29 Booth 一位乘示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
插图 xix
8.30 Booth 两位乘示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
8.31 Booth 结果选择逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.32 Booth 选择信号生成逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.33 Booth 部分积生成逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.34 使用移位加实现 Booth 乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.35 一位全加器示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
8.36 使用全加器实现 3 个 4 位数相加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
8.37 使用全加器实现 4 个 4 位数相加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.38 8 个数相加的一位华莱士树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.39 两种错误的 8 个数相加的一位华莱士树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.40 16 位乘法器示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
9.1 简单 CPU 的数据通路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9.2 译码功能示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9.3 带有时序控制逻辑的数据通路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.4 多周期处理器的结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.5 多周期处理器的流水线时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
9.6 流水线处理器的结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.7 流水线处理器的流水线时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.8 处理器部件时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
9.9 RAW 数据相关的流水线时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
9.10 用阻塞解决数据相关的流水线时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
9.11 有阻塞的处理器部件时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
9.12 加入前递的数据相关时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
9.13 处理指令相关的流水线结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
9.14 控制相关示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
9.15 解决控制相关的流水线时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
9.16 优化控制相关处理后的流水线时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
9.17 改进后的解决控制相关的流水线结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
9.18 双发射处理器的流水线时空图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
xx 插图
9.19 动态调度流水线结构示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
9.20 转移指令之间的相关性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
9.21 BTB 结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
9.22 2 位 PHT 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
9.23 Cache 在流水线结构图中的示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
9.24 直接相联、全相联、组相联映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
9.25 直接相联、全相联、组相联 Cache 结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
9.26 龙芯 3A3000 流水线示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
10.1 消息传递(左)和共享存储系统(右) . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
10.2 积分求圆周率算法示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
10.3 矩阵乘法算法示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
10.4 SISD 和 SIMD 执行控制流示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10.5 线程管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.6 编译制导语言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
10.7 共享任务类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
11.1 Cache 结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
11.2 共享 LLC 结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
11.3 三状态 Cache 一致性协议状态转换图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
11.4 基于目录的写无效 Cache 一致性协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
11.5 NUCA 架构多核处理器的片上互连 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
11.6
片上互连结构分类
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
11.7 片上网络示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
11.8 拓扑结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
11.9 路由器结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
11.10 基于信用的流量控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
11.11 一个并行程序产生两种不同结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
11.12 用 LL/SC 指令对实现原子交换操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
11.13 Test‑and‑Set 自旋锁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
11.14 集中式栅障伪代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
剩余429页未读,继续阅读
跨境万事屋
- 粉丝: 7
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功