1.融入主流应用,系统性凝练知识体系。
2.结合企业实际,注重培养工程师实践能力。
3.依托前沿场景,聚焦业务逻辑,实现应用开发。
这本教材,把**的RISC-V技术发展动态融合进理论授课中,引入真实的工业级处理器案例和软硬件开发流程,让学生紧跟产业前沿,并通过相关的实验教学内容构建理论联系实际的学习过程。
- 体系结构入门:以RISC-V为基础讲解体系结构原理,解决传统教材抽象难懂的问题。
- 理论与实践结合:引入玄铁C910工业级处理器案例,解决理论脱离实际的问题。
- 实验环节缺失:提供基于开源项目的系列实验,解决缺乏动手实践的问题。
- 软硬件协同设计:介绍完整的软硬件开发流程,解决软硬件协同设计能力不足的问题。
- 前沿技术学习:融入RISC-V最新发展动态,解决知识陈旧的问题。
★★★
中级
入门初级中级进阶高级
- 计算机专业本科生:需要系统学习计算机体系结构,为后续课程打基础。
- 处理器设计工程师:需要掌握RISC-V架构和处理器设计方法,提升设计能力。
- SoC设计人员:需要了解SoC设计流程和软硬件协同设计方法。
- 研究生与科研人员:需要深入学习体系结构前沿技术,开展科研工作。
- 理论学习:先阅读第1至第3章,掌握体系结构基础概念和流水线原理。
- 实验操作:按照第7至第9章的实验指导,动手完成工具链和SoC设计实验。
- 案例学习:结合第10章玄铁C910案例,加深对理论知识的理解。
- 拓展阅读:关注RISC-V社区和开源项目,持续学习最新技术。
- 体系结构知识:系统掌握计算机体系结构的基本原理和设计方法。
- RISC-V技能:熟悉RISC-V指令集架构,具备基于RISC-V的处理器设计能力。
- 实验经验:通过系列实验,获得完整的软硬件开发实践经验。
- 工程能力:了解工业级处理器设计流程,提升工程实践能力。
- 前沿视野:了解体系结构领域的最新发展趋势。
📖 书籍简介
编辑推荐
内容简介
本书是一本以产教融合思想为指引,面向处理器与系统芯片设计人才培养的新型教材,主要分为基础和实验两部分。基础部分侧重于基于开源指令架构RISC-V并结合阿里平头哥半导体公司的玄铁C910等先进处理器案例讲授计算机体系结构的基本原理。RISC-V架构的开放性与良好生态为理论知识的教学提供了更好的蓝本,通过剖析业界先进的RISC-V处理器也使理论知识能够更好地联系具体应用。实验部分详细介绍基于RISC-V开源项目开发的系列实验,包括编译与仿真工具链实验、体系结构探索实验、SoC设计实验等内容,充分利用了平头哥XuanTie处理器、Wujian100 SoC平台等工业级的开发资源,使学生可以切实感受体系结构知识的实践运用和完整的软硬件开发流程。
作者简介
韩军,复旦大学教授,中国计算机学会计算机工程与工艺专业委员会常务委员及教育工作组组长、复旦大学集成芯片与系统全国重点实验室 IP 与芯片架构创新中心主任、国家重点研发计划“光电子与微电子器件及集成”重点专项“高能效人机交互芯片技术”项目首席科学家、国家自然科学基金重点项目负责人。以第一作者和通信作者在国内外重要的学术期刊与会议上发表论文 90 篇,获 30 项国家发明专利。担任《电子学报》、Microelectronics Journal 和Chinese Journal of Electronics编委会委员。长期致力于开展处理器架构与系统芯片的产学合作。
目录
第 一章 计算机体系结构简介 1
1.1 计算机的过去,现在和未来 1
1.1.1 计算机的历史回顾 1
1.1.2 计算机的发展现状 4
1.1.3 计算机的未来趋势 8
1.2 计算机体系结构的定义 13
1.2.1 ISA 14
1.2.2 微架构 16
1.2.3 硬件实现 18
1.3 主流ISA介绍 18
1.3.1 ISA的诞生 19
1.3.2 CISC架构指令集 19
1.3.3 RISC架构指令集 21
1.4 案例学习:平头哥C910处理器介绍 27
1.4.1 平头哥公司介绍 27
1.4.2 玄铁C910简介 28
1.4.3 玄铁C910的处理器微架构 28
1.4.4 玄铁C910的工作模式 32
1.5 本章小结 32
第二章 指令集基本原理 34
2.1 指令集的发展历史与分类 34
2.1.1 CISC和RISC之争 35
2.1.2 指令集的分类 36
2.2 指令寻址模式 37
2.2.1 指令的组成 38
2.2.2 常见的指令寻址模式 38
2.3 数据类型与指令操作 39
2.3.1 RISC-V指令集的数据类型 39
2.3.2 指令操作分类 40
2.3.3 控制流指令 42
2.4 指令集编码 42
2.4.1 可变长度编码与固定长度编码 43
2.4.2 操作码的编码 44
2.4.3 RISC-V的指令编码 45
2.5 特权等级与CSR 46
2.5.1 特权等级 47
2.5.2 RISC-V指令集的CSR 48
2.6 指令集的ABI规定 49
2.7 案例学习:平头哥C910处理器的自定义指令 50
2.7.1 Cache指令子集 51
2.7.2 多核同步指令子集 51
2.7.3 算术运算指令子集 52
2.7.4 位操作指令子集 52
2.7.5 存储指令子集 53
2.8 本章小结 53
第三章 处理器流水线结构 55
3.1 实现RISC指令集的典型硬件结构 55
3.1.1 微架构与指令集的关系 55
3.1.2 RV32I指令集的数据通路 56
3.2 基础流水线 60
3.2.1 流水线的基本概念 60
3.2.2 基础流水线的性能分析 64
3.3 流水线冲突 66
3.3.1结构冲突(structural hazard) 66
3.3.2控制冲突(control hazard) 66
3.3.3数据冲突(data hazard) 67
3.4 前馈 69
3.5 乱序执行和超标量流水线 72
3.5.1 基础流水线的性能瓶颈 72
3.5.2 多发射(multiple issue)技术与超标量(superscalar)技术 73
3.5.3 乱序执行与动态调度 74
3.5.4 重排序缓冲区(reorder buffer,ROB) 77
3.5.5 寄存器重命名和Tomasulo算法 80
3.6 分支预测 85
3.6.1 静态预测 85
3.6.2 局部预测器 86
3.6.3 相关预测器 90
3.6.4 预测跳转地址 91
3.6.5 指令复用 94
3.6.6 预测的代价 95
3.6.7 BOOM中的分支预测器 96
3.7 指令级并行的过去与未来 102
3.8 案例学习:平头哥C910处理器的指令级并行 104
3.9 本章小结 105
第四章 计算机存储系统 107
4.1 半导体存储技术 107
4.1.1 SRAM 108
4.1.2 DRAM 108
4.1.3 flash 109
4.1.4 RRAM 111
4.1.5存储技术在计算机中的应用 111
4.2 虚拟存储(virtual memory) 112
4.2.1 虚拟存储的工作原理 112
4.2.2 保护进程 114
4.2.3 页式虚拟存储的可能结构 115
4.3 处理器与内存的速度差距:内存墙 117
4.4 缓存 118
4.4.1 缓存的概念 118
4.4.2 缓存的基本性质 119
4.5 缓存结构示例 124
4.6 缓存的性能和基本优化手段 124
4.6.1 增加缓存容量,以降低缺失率 125
4.6.2 增加路数,以降低缺失率 125
4.6.3 增加块粒度,以降低缺失率 126
4.6.4 缓存读优先于缓存写,以降低缺失惩罚 126
4.6.5 多级缓存,以降低缺失惩罚 126
4.6.6 地址翻译和缓存索引并行,以减少命中时间 127
4.7 多核处理器中的缓存一致性 128
4.7.1 缓存一致性协议的分类和比较 129
4.7.2 MSI一致性协议 131
4.8 案例学习:平头哥C910处理器的存储系统 133
4.8.1 平头哥玄铁C910的缓存层次 134
4.8.2 平头哥玄铁C910缓存优化手段 136
4.8.3 平头哥玄铁C910的虚拟内存系统 137
4.9 本章小结 139
第五章 计算机I/O原理 140
5.1 I/O概述 140
5.1.1 I/O设备 141
5.1.2 I/O接口和I/O总线 142
5.2 I/O设备与主机间的通信 145
5.2.1 处理器查询方式 145
5.2.2 中断方式 147
5.2.3 DMA方式 148
5.3 常见的I/O总线协议 151
5.3.1 PCI,PCI-X,PCI-E 151
5.3.2 SCSI,SAS,iSCSI 152
5.3.3 ATA,SATA 153
5.4 磁盘的基本原理 154
5.4.1 磁盘的经典结构 154
5.4.2 磁盘的演化 155
5.4.3 磁盘阵列 157
5.5 排队论简介 163
5.5.1 队列系统的简单抽象 163
5.5.2 队列系统的表示——Kendall表示法 164
5.5.3 Little定理 165
5.5.4 用排队论评估简单的I/O系统 165
5.6 案例学习:wujian100的USI模块 167
5.6.1 UART 169
5.6.2 SPI 170
5.6.3 I2C 172
5.7 本章小结 173
第六章 SoC系统设计 175
6.1 SoC概述 175
6.1.1 SoC简介 175
6.1.2 SoC的基本组成 176
6.1.3 SoC的优势 178
6.1.4 SoC面临的发展挑战 180
6.2 系统总线 181
6.2.1 总线概述 181
6.2.2 AMBA总线 183
6.3 SoC软硬件协同开发 189
6.3.1 SoC的软件环境 189
6.3.2 SoC的软硬件协同设计 190
6.4 案例学习:wujian100 SoC平台 195
6.5 本章小结 198
第七章 嵌入式操作系统 200
7.1 操作系统简介 200
7.1.1 操作系统的基本概念 200
7.1.2 操作系统的发展历史 201
7.1.3 嵌入式操作系统的主要特点 203
7.2 进程与保护 204
7.2.1 进程的基本概念 204
7.2.2 进程保护 207
7.3 进程调度 209
7.3.1 单处理器进程调度 210
7.3.2 实时调度 213
7.4 文件管理 215
7.4.1 文件系统 215
7.4.2 目录 217
7.4.3 文件 219
7.5 案例学习:在RISC-V处理器上运行Linux系统 220
7.5.1 GNU和LLVM项目 220
7.5.2 准备交叉编译环境 222
7.5.3 编译内核 223
7.5.4 根文件系统和引导程序 224
7.6 本章小结 226
第八章 体系结构仿真器实验 227
8.1 RISC-V交叉编译和仿真环境的安装与配置 227
8.1.1 实验目的 227
8.1.2 实验介绍 227
8.1.3 实验内容 229
8.2 QEMU运行裸机程序与Linux系统并调试 234
8.2.1 实验目的 234
8.2.2 实验介绍 234
8.2.3 实验内容 236
8.3 RISC-V汇编程序编程练习 247
8.3.1 实验目的 247
8.3.2 实验介绍 247
8.3.3 实验内容 250
8.4 QEMU上运行YOLO算法 254
8.4.1 实验目的 254
8.4.2 实验介绍 254
8.4.3 实验内容 259
8.5 本章小结 264
第九章 RTL级的SoC平台仿真实验 265
9.1 SMART平台基础操作实验 265
9.1.1 实验目的 265
9.1.2 实验介绍 265
9.1.3 实验内容 268
9.2 缓存操作实验 270
9.2.1 实验目的 270
9.2.2 实验介绍 270
9.2.3 实验内容 271
9.3 分支预测实验 275
9.3.1 实验目的 275
9.3.2 实验介绍 275
9.3.3 实验内容 276
9.4 YOLO综合仿真实验 278
9.4.1 实验目的 278
9.4.2 实验介绍 278
9.4.3 实验内容 281
9.5 本章小结 285
第十章 基于FPGA的SoC板级测试实验 286
10.1 wujian100平台介绍和FPGA测试 286
10.1.1 实验目的 286
10.1.2 实验介绍 286
10.1.3 实验内容 288
10.2 语音识别电子系统综合设计 295
10.2.1 实验目的 295
10.2.2 实验介绍 295
10.2.3 实验内容 301
10.3 本章小结 303
1.1 计算机的过去,现在和未来 1
1.1.1 计算机的历史回顾 1
1.1.2 计算机的发展现状 4
1.1.3 计算机的未来趋势 8
1.2 计算机体系结构的定义 13
1.2.1 ISA 14
1.2.2 微架构 16
1.2.3 硬件实现 18
1.3 主流ISA介绍 18
1.3.1 ISA的诞生 19
1.3.2 CISC架构指令集 19
1.3.3 RISC架构指令集 21
1.4 案例学习:平头哥C910处理器介绍 27
1.4.1 平头哥公司介绍 27
1.4.2 玄铁C910简介 28
1.4.3 玄铁C910的处理器微架构 28
1.4.4 玄铁C910的工作模式 32
1.5 本章小结 32
第二章 指令集基本原理 34
2.1 指令集的发展历史与分类 34
2.1.1 CISC和RISC之争 35
2.1.2 指令集的分类 36
2.2 指令寻址模式 37
2.2.1 指令的组成 38
2.2.2 常见的指令寻址模式 38
2.3 数据类型与指令操作 39
2.3.1 RISC-V指令集的数据类型 39
2.3.2 指令操作分类 40
2.3.3 控制流指令 42
2.4 指令集编码 42
2.4.1 可变长度编码与固定长度编码 43
2.4.2 操作码的编码 44
2.4.3 RISC-V的指令编码 45
2.5 特权等级与CSR 46
2.5.1 特权等级 47
2.5.2 RISC-V指令集的CSR 48
2.6 指令集的ABI规定 49
2.7 案例学习:平头哥C910处理器的自定义指令 50
2.7.1 Cache指令子集 51
2.7.2 多核同步指令子集 51
2.7.3 算术运算指令子集 52
2.7.4 位操作指令子集 52
2.7.5 存储指令子集 53
2.8 本章小结 53
第三章 处理器流水线结构 55
3.1 实现RISC指令集的典型硬件结构 55
3.1.1 微架构与指令集的关系 55
3.1.2 RV32I指令集的数据通路 56
3.2 基础流水线 60
3.2.1 流水线的基本概念 60
3.2.2 基础流水线的性能分析 64
3.3 流水线冲突 66
3.3.1结构冲突(structural hazard) 66
3.3.2控制冲突(control hazard) 66
3.3.3数据冲突(data hazard) 67
3.4 前馈 69
3.5 乱序执行和超标量流水线 72
3.5.1 基础流水线的性能瓶颈 72
3.5.2 多发射(multiple issue)技术与超标量(superscalar)技术 73
3.5.3 乱序执行与动态调度 74
3.5.4 重排序缓冲区(reorder buffer,ROB) 77
3.5.5 寄存器重命名和Tomasulo算法 80
3.6 分支预测 85
3.6.1 静态预测 85
3.6.2 局部预测器 86
3.6.3 相关预测器 90
3.6.4 预测跳转地址 91
3.6.5 指令复用 94
3.6.6 预测的代价 95
3.6.7 BOOM中的分支预测器 96
3.7 指令级并行的过去与未来 102
3.8 案例学习:平头哥C910处理器的指令级并行 104
3.9 本章小结 105
第四章 计算机存储系统 107
4.1 半导体存储技术 107
4.1.1 SRAM 108
4.1.2 DRAM 108
4.1.3 flash 109
4.1.4 RRAM 111
4.1.5存储技术在计算机中的应用 111
4.2 虚拟存储(virtual memory) 112
4.2.1 虚拟存储的工作原理 112
4.2.2 保护进程 114
4.2.3 页式虚拟存储的可能结构 115
4.3 处理器与内存的速度差距:内存墙 117
4.4 缓存 118
4.4.1 缓存的概念 118
4.4.2 缓存的基本性质 119
4.5 缓存结构示例 124
4.6 缓存的性能和基本优化手段 124
4.6.1 增加缓存容量,以降低缺失率 125
4.6.2 增加路数,以降低缺失率 125
4.6.3 增加块粒度,以降低缺失率 126
4.6.4 缓存读优先于缓存写,以降低缺失惩罚 126
4.6.5 多级缓存,以降低缺失惩罚 126
4.6.6 地址翻译和缓存索引并行,以减少命中时间 127
4.7 多核处理器中的缓存一致性 128
4.7.1 缓存一致性协议的分类和比较 129
4.7.2 MSI一致性协议 131
4.8 案例学习:平头哥C910处理器的存储系统 133
4.8.1 平头哥玄铁C910的缓存层次 134
4.8.2 平头哥玄铁C910缓存优化手段 136
4.8.3 平头哥玄铁C910的虚拟内存系统 137
4.9 本章小结 139
第五章 计算机I/O原理 140
5.1 I/O概述 140
5.1.1 I/O设备 141
5.1.2 I/O接口和I/O总线 142
5.2 I/O设备与主机间的通信 145
5.2.1 处理器查询方式 145
5.2.2 中断方式 147
5.2.3 DMA方式 148
5.3 常见的I/O总线协议 151
5.3.1 PCI,PCI-X,PCI-E 151
5.3.2 SCSI,SAS,iSCSI 152
5.3.3 ATA,SATA 153
5.4 磁盘的基本原理 154
5.4.1 磁盘的经典结构 154
5.4.2 磁盘的演化 155
5.4.3 磁盘阵列 157
5.5 排队论简介 163
5.5.1 队列系统的简单抽象 163
5.5.2 队列系统的表示——Kendall表示法 164
5.5.3 Little定理 165
5.5.4 用排队论评估简单的I/O系统 165
5.6 案例学习:wujian100的USI模块 167
5.6.1 UART 169
5.6.2 SPI 170
5.6.3 I2C 172
5.7 本章小结 173
第六章 SoC系统设计 175
6.1 SoC概述 175
6.1.1 SoC简介 175
6.1.2 SoC的基本组成 176
6.1.3 SoC的优势 178
6.1.4 SoC面临的发展挑战 180
6.2 系统总线 181
6.2.1 总线概述 181
6.2.2 AMBA总线 183
6.3 SoC软硬件协同开发 189
6.3.1 SoC的软件环境 189
6.3.2 SoC的软硬件协同设计 190
6.4 案例学习:wujian100 SoC平台 195
6.5 本章小结 198
第七章 嵌入式操作系统 200
7.1 操作系统简介 200
7.1.1 操作系统的基本概念 200
7.1.2 操作系统的发展历史 201
7.1.3 嵌入式操作系统的主要特点 203
7.2 进程与保护 204
7.2.1 进程的基本概念 204
7.2.2 进程保护 207
7.3 进程调度 209
7.3.1 单处理器进程调度 210
7.3.2 实时调度 213
7.4 文件管理 215
7.4.1 文件系统 215
7.4.2 目录 217
7.4.3 文件 219
7.5 案例学习:在RISC-V处理器上运行Linux系统 220
7.5.1 GNU和LLVM项目 220
7.5.2 准备交叉编译环境 222
7.5.3 编译内核 223
7.5.4 根文件系统和引导程序 224
7.6 本章小结 226
第八章 体系结构仿真器实验 227
8.1 RISC-V交叉编译和仿真环境的安装与配置 227
8.1.1 实验目的 227
8.1.2 实验介绍 227
8.1.3 实验内容 229
8.2 QEMU运行裸机程序与Linux系统并调试 234
8.2.1 实验目的 234
8.2.2 实验介绍 234
8.2.3 实验内容 236
8.3 RISC-V汇编程序编程练习 247
8.3.1 实验目的 247
8.3.2 实验介绍 247
8.3.3 实验内容 250
8.4 QEMU上运行YOLO算法 254
8.4.1 实验目的 254
8.4.2 实验介绍 254
8.4.3 实验内容 259
8.5 本章小结 264
第九章 RTL级的SoC平台仿真实验 265
9.1 SMART平台基础操作实验 265
9.1.1 实验目的 265
9.1.2 实验介绍 265
9.1.3 实验内容 268
9.2 缓存操作实验 270
9.2.1 实验目的 270
9.2.2 实验介绍 270
9.2.3 实验内容 271
9.3 分支预测实验 275
9.3.1 实验目的 275
9.3.2 实验介绍 275
9.3.3 实验内容 276
9.4 YOLO综合仿真实验 278
9.4.1 实验目的 278
9.4.2 实验介绍 278
9.4.3 实验内容 281
9.5 本章小结 285
第十章 基于FPGA的SoC板级测试实验 286
10.1 wujian100平台介绍和FPGA测试 286
10.1.1 实验目的 286
10.1.2 实验介绍 286
10.1.3 实验内容 288
10.2 语音识别电子系统综合设计 295
10.2.1 实验目的 295
10.2.2 实验介绍 295
10.2.3 实验内容 301
10.3 本章小结 303
📑 章节目录
- 计算机体系结构简介
- 指令集基本原理
- 处理器流水线结构
- 存储器层次结构
- 多处理器系统
- SoC设计基础
- 实验:编译与仿真工具链实验
- 实验:体系结构探索实验
- 实验:SoC设计实验
- 案例研究:玄铁C910处理器