登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入   新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2025年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書

『簡體書』计算机系统贯通课程实践教材(RISC-V架构)

書城自編碼: 4187153
分類:簡體書→大陸圖書→教材研究生/本科/专科教材
作者:
國際書號(ISBN): 9787302702788
出版社: 清华大学出版社
出版日期: 2025-10-01

頁數/字數: /

售價:HK$ 75.9

我要買

** 我創建的書架 **
未登入.



新書推薦:
海权与陆权的变局
《 海权与陆权的变局 》

售價:HK$ 107.8
《西南联大名师课(全10册)》中国历史·中国文学·中国哲学·诸子百家·诗词曲赋·文化常识·人文精神·
《 《西南联大名师课(全10册)》中国历史·中国文学·中国哲学·诸子百家·诗词曲赋·文化常识·人文精神· 》

售價:HK$ 657.8
天命无常:五代十国 优酷人文·“梅毅说中国史”系列(全三册)
《 天命无常:五代十国 优酷人文·“梅毅说中国史”系列(全三册) 》

售價:HK$ 151.8
武王墩:亲历2020—2024楚王墓发掘
《 武王墩:亲历2020—2024楚王墓发掘 》

售價:HK$ 96.8
异化
《 异化 》

售價:HK$ 94.6
你的脆弱很正常
《 你的脆弱很正常 》

售價:HK$ 60.0
鸟墙——康奈尔鸟类学实验室巨幅壁画诞生记
《 鸟墙——康奈尔鸟类学实验室巨幅壁画诞生记 》

售價:HK$ 195.8
政治人--政治的社会基础(东方编译所译丛)
《 政治人--政治的社会基础(东方编译所译丛) 》

售價:HK$ 129.8

編輯推薦:
u软硬贯通的实验设计:本书构建了一套完整的计算机系统贯通实验体系,包括了数字逻辑设计、计算机组成、汇编语言、操作系统、计算机体系结构等计算机系统类核心课程,从系统认知、设计、优化的角度层层深入,手把手引导读者从零开始设计64位RISC-V架构CPU和RV64操作系统内核。u统一的实验平台:本书中的所有软硬件实验均基于开源的RISC-V架构,使用统一的软件和硬件平台,不需要多次切换实验环境就可以完成全部实验,避免了读者在学习过程中需要使用不同的实验环境带来的困扰。u科教融合的工具链:本教材配套的实验提供了Verilator、Spike、riscv-pk、QEMU、riscv-toolchain等广泛应用于科研工作中的软硬件工具链,缩短了本科教学与一线科研实践之间的距离,提高了处理器验证、调试的效率,帮助读者逐步认识真实的计算机系统全貌。u灵活多样的学习路径:本书分为三个篇章,共24个实验。每个篇章是相对独立的,可以实现不同的最小系统,并且每一章的实验也是相对独立的。读者既可以按照章节顺序完整完成一整套软硬件贯通实验,也可以根据需要将不同章节的实验模块组合起来实现不同的设计。
內容簡介:
本书是一本面向64位RISC-V架构计算机系统设计的实验指导教材。本书构建了一套完整的实验体系,贯通了数字逻辑设计、计算机组成、汇编语言、操作系统、计算机体系结构等计算机系统类课程中的核心知识点及系统软硬件设计。全书共三部分,包含24个实验,从系统认知、设计、优化的角度层层深入,帮助读者由浅入深地认识计算机系统的全貌。本书的内容打破了传统计算机系统类课程间的壁垒,弥补了计算机系统类课程理论学习与真实系统之间的鸿沟,手把手引导读者从零开始设计?64?位?RISC-V?架构的CPU和RV64操作系统内核,通过亲自动手实验,理解和掌握计算机系统的工作原理。  本书适用于想了解和探究真实计算机系统运行基本原理和本质规律的读者,可作为高等院校计算机大类相关专业,以及信息安全、网络空间安全、人工智能、芯片设计等相关交叉专业的教学实验指导书,也可以作为计算机系统相关方向工程技术人员的岗前培训实验指导用书。
目錄
目录
第1部分 计算机系统I——单周期CPU设计 ...................................................................................... 1
第1章 SysI-Lab1实验准备 ...................................................................................... 3
1.1实验工具 ...................................................................................... 3
1.2背景知识
......................................................................................... 4
1.2.1
FPGA的发展历程................................................................. 4
1.2.2
Verilog基础知识 ................................................................... 6
1.3实验环境配置
.................................................................................12
1.3.1
Linux环境配置 ....................................................................12
1.3.2
SPICE仿真反相器 ...............................................................13
1.3.3
Logisim电路仿真 .................................................................15
1.4
Verilator仿真测试 ..........................................................................16
1.5
Vivado操作流程.............................................................................18
1.5.1 FPGA上的 Verilog实践.......................................................28
1.
5.2以二选一多路选择器为例 ......................................................35
思考及练习 ............................................................................................36
第 2章 SysI-Lab2多路选择器 ..................................................................38
2.1实验工具
........................................................................................38
2.
2多路选择器设计 ..............................................................................38
2.2.1基本概念
..............................................................................38
2.
2.2电路级别的实现....................................................................39
2.
2.3四路选择器的实现 ................................................................39
2.3实验步骤
........................................................................................41
思考及练习 ............................................................................................41
第 3章 SysI-Lab3七段数码管 ..................................................................42
3.1实验工具
........................................................................................42
3.2背景知识
........................................................................................42
3.
2.1复合多路选择器....................................................................42
3.2.2译码器
.................................................................................43
计算机系统贯通课程实践教材(RISC-V架构)
3.2.3时钟分频器 ..........................................................................43
3.2.4 NEXYS A7-100T七段管 ......................................................43
3.3实验步骤 ........................................................................................45
思考及练习 ............................................................................................46
第 4章 SysI-Lab4全加减法器 ..................................................................47
4.1实验工具 ........................................................................................47
4.2加法器设计.....................................................................................47
4.2.1加法器实验原理....................................................................47
4.2.2加法器实验步骤....................................................................50
4.3加减法器设计 .................................................................................51
4.3.1加减法器实验原理 ................................................................51
4.3.2 64b加减法器实验步骤 ..........................................................52
思考及练习 ............................................................................................52
第 5章 SysI-Lab5时序电路设计 ...............................................................53
5.1实验工具 ........................................................................................53
5.2时序电路设计基础...........................................................................53
5.2.1有限状态机 ..........................................................................53
5.2.2计数器 .................................................................................55
5.2.3分频器 .................................................................................55
5.3计时器设计.....................................................................................56
5.3.1 4位二进制计数器 .................................................................56
5.3.2 2位 BCD码计数器 ..............................................................57
5.3.3计时器实验步骤....................................................................57
5.4乘法器设计.....................................................................................58
5.4.1乘法器实验原理....................................................................58
5.4.2 Booth算法 ..........................................................................60
5.4.3乘法器实验步骤....................................................................61
思考及练习 ............................................................................................62
第 6章 SysI-Lab6卷积核实现 ..................................................................63
6.1实验工具 ........................................................................................63
6.2背景知识 .......................................................................................63
6.2.1移位寄存器 ..........................................................................63
6.2.2 SystemVerilog语法...............................................................64
6.2.3 Ready-Valid握手 .................................................................66
6.3实验原理 ........................................................................................67
7.5.1理解跳转表 ..........................................................................86
7.5.2回顾冒泡排序算法 ................................................................87
7.5.3理解简单 RISC-V程序 .........................................................87
7.5.4理解递归汇编程序 ................................................................88
7.5.5理解 switch语句产生的跳转表 ..............................................89
7.6实验步骤 ........................................................................................90
7.6.1冒泡排序的汇编实现 .............................................................90
7.6.2斐波那契数列的汇编实现 ......................................................90
7.6.3通过调试破解密钥 ................................................................91
7.6.4 RISC-V Binary Bomb...........................................................92
思考及练习 ............................................................................................93
第 8章 SysI-Lab8单周期 CPU设计........................................................94
8.1实验工具 ........................................................................................94
8.2背景知识 ........................................................................................94
8.2.1 RISC-V指令格式 .................................................................94
8.2.2数据通路..............................................................................95
8.2.3控制单元..............................................................................97
8.3 RISC-V基础指令 ......................................................................... 101
8.4实验原理 ...................................................................................... 114
8.4.1 Memory设计 ..................................................................... 114
8.4.2数据通路设计 ..................................................................... 116
数据冒险............................................................................
9.3.2实现暂停机制 ..................................................................... 128
9.4 DRAM和 BRAM的区别.............................................................. 128
9.5 BRAM的使用.............................................................................. 129
9.6实验目标 ...................................................................................... 130
9.7实验步骤 ...................................................................................... 131
思考及练习 .......................................................................................... 132
第 10章 SysII-Lab2流水线冒险的解决.................................................... 133
10.1实验工具 .................................................................................... 133
10.2实验原理 .................................................................................... 133
10.2.1流水线的旁路机制 ........................................................... 133
10.2.2 Axi-lite总线协议 ............................................................ 134
10.3实验步骤 .................................................................................... 136
思考及练习 .......................................................................................... 136
第 11章 SysII-Lab3卷积加速器.............................................................. 137
11.1实验工具 .................................................................................... 137
11.2实验原理 .................................................................................... 137
11.2.1外设编程接口.................................................................. 137
11.2.2 MMIO机制及定义 .......................................................... 138
11.2.3卷积加速器的 I/O映射及操作 ......................................... 139
实验工具 ....................................................................................
13.2背景知识 .................................................................................... 150
13.2.1 RISC-V中的中断和异常.................................................. 150
13.2.2上下文处理 ..................................................................... 152
13.2.3异常处理程序和时钟中断 ................................................. 152
13.3实验步骤 .................................................................................... 152
13.3.1准备工程 ........................................................................ 152
13.3.2开启异常处理.................................................................. 154
13.3.3实现上下文切换 .............................................................. 155
13.3.4实现异常处理函数 ........................................................... 156
13.3.5实现时钟中断相关函数 .................................................... 156
13.3.6实验样例 ........................................................................ 157
思考及练习 .......................................................................................... 157
第 14章 SysII-Lab6异常流水线.............................................................. 158
14.1实验工具 .................................................................................... 158
14.2实验原理 .................................................................................... 158
14.2.1 RISC-V特权级 ............................................................... 158
14.2.2控制和状态寄存器 ........................................................... 158
14.2.3异常和中断 ..................................................................... 159
14.3异常流水线设计 .......................................................................... 162
14.3.1实现 CSR指令................................................................ 162
15.3.4实验样例 ........................................................................ 174
思考及练习 .......................................................................................... 176
第 16章 SysII-Lab8软硬件协同的尝试.................................................... 177
16.1实验工具 .................................................................................... 177
16.2实验原理 .................................................................................... 177
16.2.1整体架构设计.................................................................. 177
16.2.2硬件外围设计.................................................................. 178
16.3编译内核 .................................................................................... 178
16.4外围准备 .................................................................................... 179
16.4.1 Bootloader代码 .............................................................. 179
16.4.2生成下板代码.................................................................. 180
16.4.3建立工程文件.................................................................. 180
16.4.4观察下板现象.................................................................. 181
16.4.5 Vivado仿真运行 ............................................................. 182
16.5实验步骤 .................................................................................... 182
思考及练习 .......................................................................................... 182
第 3部分计算机系统 III——定制化内核 + CPU综合设计 .............183
第 17章 SysIII-Lab1动态分支预测 ......................................................... 185
17.1实验工具 .................................................................................... 185
18.2.4 Cache与 Memory的数据传输.......................................... 196
18.3 Cache控制逻辑 .......................................................................... 198
18.3.1初始化 IDLE状态........................................................... 199
18.3.2读事务执行 READ状态 .................................................. 199
18.3.3写事务执行 WRITE状态 ................................................ 200
18.4 Cache的完整结构 ....................................................................... 201
18.5实验步骤 .................................................................................... 203
18.5.1实验目标 ........................................................................ 203
18.5.2仿真测试 ........................................................................ 204
18.5.3上板验证 ........................................................................ 205
思考及练习 .......................................................................................... 205
第 19章 SysIII-Lab3 RV64虚拟内存管理 ............................................... 206
19.1实验工具 .................................................................................... 206
19.2虚拟内存布局.............................................................................. 206
19.3 SATP寄存器.............................................................................. 207
19.4虚实地址转换.............................................................................. 208
19.4.1虚拟地址和物理地址........................................................ 208
19.4.2 RISC-V Sv39模式页表项 ................................................ 208
19.4.3 RISC-V地址转换............................................................ 209
19.5实验步骤 .................................................................................... 209
20.4.3中断处理 ........................................................................ 221
20.4.4添加系统调用.................................................................. 223
20.4.5修改内核启动.................................................................. 223
20.4.6编译及测试 ..................................................................... 223
思考及练习 .......................................................................................... 224
第 21章 SysIII-Lab5 RV64缺页异常处理 ............................................... 225
21.1实验工具 .................................................................................... 225
21.2背景知识 .................................................................................... 225
21.2.1虚拟内存管理.................................................................. 225
21.2.2缺页异常 ........................................................................ 226
21.3实验步骤 .................................................................................... 227
21.3.1准备工程 ........................................................................ 227
21.3.2实现虚拟内存管理 ........................................................... 228
21.3.3任务初始化 ..................................................................... 230
21.3.4实现缺页异常处理 ........................................................... 230
21.3.5编译及测试 ..................................................................... 231
思考及练习 .......................................................................................... 232
第 22章 SysIII-Lab6 fork机制............................................................... 233
22.1实验工具 .................................................................................... 233
22.2 fork基础知识 ............................................................................. 233
23.2.1 RISC-V Sv39分页模式.................................................... 241
23.2.2 Axi-lite总线模型 ............................................................ 243
23.2.3 MMU模块 ..................................................................... 243
23.3实验步骤 .................................................................................... 244
23.3.1实验目标 ........................................................................ 244
23.3.2仿真测试 ........................................................................ 244
23.3.3上板验证 ........................................................................ 244
思考及练习 .......................................................................................... 244
第 24章 SysIII-Lab8完成自己的计算机系统 ............................................ 245
24.1实验工具 .................................................................................... 245
24.2实验目标 .................................................................................... 245
24.3实验原理 .................................................................................... 246
24.3.1用户态实现及中断完善 .................................................... 246
24.3.2地址转换后备缓冲器........................................................ 246
24.3.3 MMIO与外设................................................................. 247
24.4设计范例 .................................................................................... 247
24.4.1范例一:指令集扩展........................................................ 247
24.4.2范例二:运行较为完善的 Kernel ...................................... 252
思考及练习 .......................................................................................... 259
第4部分 附录及常见问题.................................. 261
附录A 硬件描述语言常见语句及电路图 ..................................263
附录B 配置IP核..................................275
附录C 常见问题..................................287
参考文献..................................294
內容試閱
面向新工科专业建设计算机系列教材
计算机系统贯通课程实践教材(RISC-V架构)
常 瑞 申文博 吴 磊 周亚金 著
清?华?大?学?出?版?社
北 京
内 容 简 介
  本书是一本面向64位RISC-V架构计算机系统设计的实验指导教材。本书构建了一套完整的实验体系,贯通了数字逻辑设计、计算机组成、汇编语言、操作系统、计算机体系结构等计算机系统类课程中的核心知识点及系统软硬件设计。全书共三部分,包含24个实验,从系统认知、设计、优化的角度层层深入,帮助读者由浅入深地认识计算机系统的全貌。本书的内容打破了传统计算机系统类课程间的壁垒,弥补了计算机系统类课程理论学习与真实系统之间的鸿沟,手把手引导读者从零开始设计?64?位?RISC-V?架构的CPU和RV64操作系统内核,通过亲自动手实验,理解和掌握计算机系统的工作原理。
  本书适用于想了解和探究真实计算机系统运行基本原理和本质规律的读者,可作为高等院校计算机大类相关专业,以及信息安全、网络空间安全、人工智能、芯片设计等相关交叉专业的教学实验指导书,也可以作为计算机系统相关方向工程技术人员的岗前培训实验指导用书。
本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
版权所有,侵权必究。举报:010-62782989,beiqinquan@tup.tsinghua.edu.cn。
  图书在版编目(CIP)数据
  计算机系统贯通课程实践教材?:?RISC-V架构?/?常瑞等著.?--?北京?:?清华大学出版社,?2025.?9.
(面向新工科专业建设计算机系列教材).?--?ISBN 978-7-302-70278-8
  Ⅰ. TP303
  中国国家版本馆CIP数据核字第2025RJ7461号
策划编辑:白立军
责任编辑:杨 帆 薛 阳
封面设计:刘 键
责任校对:韩天竹
责任印制:杨 艳
出版发行:清华大学出版社
     网 址:https://www.tup.com.cn,https://www.wqxuetang.com
     地 址:北京清华大学学研大厦A座邮 编:100084
     社 总 机:010-83470000邮 购:010-62786544
     投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn
     质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn
     课件下载:https://www.tup.com.cn,010-83470236
印 装 者:三河市龙大印装有限公司
经 销:全国新华书店
开 本:185mm×260mm 印 张:21 插 页:1 字 数:440千字
版 次:2025年10月第1版 印 次:2025年10月第1次印刷
定 价:69.00元
产品编号:101515-01
出版说明
识的逻辑性,通过完成一个个实验,学生将拔地而起逐步构建出计算机系统的知识大厦。
——陈向群北京大学教授,讲授“计算机操作系统”等课程
随着计算机、人工智能等技术日新月异地发展,计算机科学的基础知识也在不断演进。然而,无论技术如何变迁,处理器和操作系统的原理始终是计算机科学的核心。在计算机学科的本科教学中,学生需要掌握处理器与操作系统这两个重要的计算机软硬件专业领域知识,它们共同构成了现代计算技术的基石。
一般情况下,对学生进行计算机系统方面的培养和教育,是由“计算机组成原理”和“操作系统”这两门课程来完成的;或者通过一门更基础一些的“计算机系统导论”课程,开展计算机系统的通识教育。但浙江大学的常瑞、申文博等老师走了一条具有特色的创新之路,他们精心构建了一座桥梁,把处理器和操作系统的实践过程融会贯通,成为一个有机的整体。学生可以从零开始设计一个处理器,并进一步开发一个可以在这个处理器上运行的操作系统。这不仅是对硬件和软件之间关系的理解,更是一种创造性的体验,让学生有机会亲手打造属于自己的计算世界。
书中首先深入浅出地介绍了计算机组成原理,解释了数据如何在硅片上流动,以及指令是如何被执行的。通过一系列实例和练习,学生能够理解每一个逻辑门背后的含义,并逐步掌握整个处理器的设计方法。接下来,本书带领学生走进操作系统的世界,这里不再是抽象的概念,而是建立在之前建立的处理器之上的从小到大的操作系统实例。从任务调度到内存管理,从文件系统到设备驱动,每节都是对操作系统核心概念的深刻剖析。此外,本书还特别注重培养学生的问题解决能力,提供了大量的实践细节和题目,鼓励学生动手实践,将所学知识应用于现实问题的解决中。这种学习方式不仅提高了学生的技术水平,更重要的是激发了他们对于计算机科学的热情和创造力。
我诚挚推荐此书给每位对计算机软硬件系统抱有好奇心的同学,愿你们在阅读过程中收获知识,启迪智慧,开启一段精彩的计算之旅。 ——陈渝清华大学长聘副教授,讲授“计算机操作系统”等课程
计算机系统贯通课程实践教材(RISC-V架构)
以实验贯通计算机类专业的硬件和系统类核心课程,可以聚焦计算机系统能力培养,是一种高效的方法,本书给出了非常好的探索和尝试。本书以 RISC-V CPU设计为核心,面向部件、系统结构和计算机系统三个层次的教学目标,设计了单周期 CPU、简易内核 +流水线 CPU和定制化内核 + CPU三组实验模块,既满足了不同课程的实验教学需要,也为计算机大类贯通实验建设提供了重要参考。
——沈立国防科技大学教授,讲授“计算机体系结构”等课程
本书采用了从硬件到软件、从抽象到实践的系统化教学方式,帮助学生深入理
解计算机系统的构造与运行机制。不同于传统课程仅专注于某一层次的理论讲解,
本书通过 RISC-V架构的实验体系,设计了由浅入深的几个层次来逐步加深对系
统的认知,实验覆盖了计算机系统课程的核心知识点。无论是对希望夯实计算机系
统基础的学生,还是对寻求实践能力提升的工程师,本书都能提供系统性、工程
化、可操作性强的学习路径,让学习者在实践中掌握计算机系统设计的本质。
——夏虞斌上海交通大学教授,讲授“计算机操作系统”等课程
本书为计算机系统能力培养提供了一种独特的视角,通过循序渐进的实验安排,融会贯通地把逻辑电路、 CPU和操作系统内核的设计与实现组织成一个有机的整体,可帮助学生通过实践深入理解计算机系统的软硬件的工作原理。本书案例丰富且深入,可用于高校本科计算机专业相关课程实验教学。
——向勇清华大学副教授,讲授“计算机操作系统”等课程
很多人都以为顶尖黑客是靠“脑洞大开”来发现问题的,殊不知他们的“魔力”
更多地来自对计算机运行的每个细节的洞察。想要拥有这种能力,最好的方法便
是从零开始建造一个“计算机宇宙”,像造物主一样设计并理解每比特变化的规律。
当然,这个过程必然是一条光荣的荆棘路。所幸有这么一门课程,提供了从最基本
的电路设计到 CPU流水线实现,再到操作系统内核定制的实践机会,这就是浙江
大学的“计算机系统贯通”课程。纵观国内外,鲜有类似的课程能够如此全面地挖
掘计算机最底层的“基础物理定律”,如果你希望真正理解计算机,请不要错过这
本书,动起手来,让自己拥有计算机世界的“上帝视角”。
——李卷孺上海交通大学基础学科拔尖学生培养计划“计算机系统安全”课程负责人
作为一本将 CPU硬件设计与操作系统软件设计打通的实验教材,本书实现了计算机专业本科阶段在计算机系统实践层面的终极目标。如果“奋战两星期、造台计算机”对大多数学生而言,终究是难以企及的口号,那么按照这本实践教材的三个阶段、24个实验,一步一步亲手造一台属于你自己的计算机并不是梦!
同时,对于任课老师,将它作为“计算机组成与设计”和“操作系统设计”等
相关课程的实践指导书,也是大有裨益的。 ——龚奕利武汉大学副教授,《深入理解计算机系统》译者,讲授“计算机
组成与设计”“计算机体系结构”等课程
专家赞誉
计算机系统课程围绕一个核心问题展开:如果你拥有十亿个晶体管(逻辑门)和无限的导线,如何构建一个现代高性能的计算机软硬件系统?这本实践教材提供了一次非常有趣的尝试:从数字逻辑电路开始,逐步搭建一个完整的计算机系统。通过不断复用前序实验的组件,学生能够亲手构建整个系统,体验创造的乐趣。
——蒋炎岩南京大学副教授,讲授“操作系统”等课程,公开的课程视频超 400万次播放量和累计关注量突破 10万
本书将引导学生构建一个完整的 RISC-V计算机系统,覆盖程序、操作系统、指令集、处理器、数字电路等计算机系统抽象层,帮助学生打通多门计算机系统方向核心课程的关键知识点,构建软硬件协同的计算机系统能力。此外,本书还通过大量的编程任务锻炼学生的工程能力,并让学生深刻理解计算机系统中的每处细节,为学生将来从事相关方向的工作打下坚实的基础。
——余子濠中国科学院计算技术研究所工程师,“一生一芯”计划培养方案设计者和首席讲师,编写《计算机组成与设计(基于 RISC-V架构)》《数字逻辑与计算机组成》等教材
验操作的训练。但李比希深信理论与实践一定要结合,他认为必须通过化学实验训练才能让学生真正掌握化学知识。于是,李比希下决心创建吉森实验室,让一批又一批的青年人在实验室得到训练。吉森实验室的科研和教学风格,吸引着世界各地的学生涌向吉森大学。在李比希的精心指导下,吉森实验室培养出了一大批闻名于世的化学家。这些学生回国后仿效吉森实验室的做法,建立了一批面向学生的教学实验室,使李比希的理念传遍全世界,形成了“吉森 -李比希学派” ——最早获得诺贝尔化学奖的 60人里,有 42位来自该学派。李比希秉持的“从做中学”(Learning-by-Doing)理念为近代化学教育体制奠定了基础,进而为世界化学发展做出了巨大贡献。
200年前李比希的故事展现了“从做中学”教育模式对于一些学科的重要性。毋庸置疑,计算机系统领域也属于这一类学科。为什么这些学科一定要通过实践才能真正掌握理论,而不能仅通过听讲、阅读与做题等方式?对此,我认为可以从以下两方面来解释。
一方面,传统的课堂教学以课程为边界划分了整个学科紧密联系的知识点,例如计算机系统领域所涵盖的几百个知识点被划分到数字电路、组成原理、体系结构、操作系统、编译原理等不同课程中,每个课程仅覆盖几十个知识点。于是在一门课程的教学过程中,不管是平时作业还是期末考试,哪怕学生获得了高分,其所掌握和理解的知识也不会超出这门课所覆盖的那几十个知识点。然而,真实的计算机系统中涵盖了几百个知识点,形成了一张相互连接的知识点网络,只有沉浸到真实系统中,才能感知到这张网络的运行细节,才能领略到知识点之间的连接。贯通式实践也许是能实现真正沉浸到真实系统的唯一手段。
另一方面,爱德加 ·戴尔在 1946年提出的“学习金字塔”模型揭示了人类采用不同学习方式与知识留存率之间的联系。根据“学习金字塔”模型,我们最为熟悉和常见的听讲方式,两周后的知识留存率仅为 5%,即学生平均只能记住所学内容的 5%;阅读方式的知识留存率也仅为 10%;但是,实践方式,即让学生亲自动手去做、去尝试、去应用所学的知识,其知识留存率则可大幅提升至 75%!这表明,
计算机系统贯通课程实践教材(RISC-V架构)
通过动手实践将知识转化为实际的行动和能力,能够极大地提高知识的留存率,有助于学生真正理解与掌握知识。
由此可见,提升学生的计算机系统能力,加强动手实践是必不可少的环节。浙江大学常瑞副教授的这本《计算机系统贯通课程实践教材( RISC-V架构)》正是一本难得的、以此为目标的实践教材。这本实践教材有几个鲜明的特色:一是贯通实验设计理念,在一套实验中覆盖了四门核心课程,包括“数字逻辑设计”“计算机组成原理”“计算机操作系统”“计算机体系结构”二是由浅入深,迭代式认识计算机系统,从单周期 CPU设计,到简易内核及流水线 CPU设计,再到定制化内核与 CPU综合设计,不断添加系统设计的细节,循序渐进,逐渐接近真实系统;三是与开源生态紧密结合,实验内容结合了开源开放的 RISC-V指令集、开源 RTL仿真器 Verilator、开源模拟器 Spike、开源工具链 riscv-toolchain等,这有助于学生了解开源软硬件生态,在未来更好地参与到国际开源生态建设中。
如今,新一轮人工智能( AI)浪潮已到来,我也经常收到青年学生的提问:现
在已经进入 AI时代,还需要学习计算机系统这样的底层知识吗?在这一轮 AI浪
潮中,掌握哪些专业能力的人才将会在未来备受青睐?众所周知,这一轮 AI浪潮
有三个驱动力,即算法、算力与数据,算力已成为推动 AI发展不可或缺的要素。
若一个人能在算力方向上“修炼”到一定水平,相信其一定会在这一轮 AI浪潮中
游刃有余;倘若其还能同时兼修其他方向且达到相当水平,相信必然能脱颖而出,
乃至成为领域的中坚力量。
谷歌首席科学家杰夫 ·迪恩( Jeff Dean)博士的成长经历可谓是一个典型案
例:20世纪 90年代,迪恩在华盛顿大学博士毕业后的第一份工作是在 DEC公
司从事 Alpha处理器微体系结构设计,后来加入了谷歌; 21世纪 00年代,迪恩
博士在谷歌开展数据中心研究,在分布式系统“三驾马车”(GFS、MapReduce、
BigTable)的研发中做出了奠基性贡献; 21世纪 10年代,迪恩博士转向人工智能
系统方向,成立“谷歌大脑”(Google Brain)研究中心,研发 TensorFlow深度学
习编程框架,参与谷歌 TPU研发; 21世纪 20年代,迪恩博士积极参与 AI应用
方面的工作,如 AI设计芯片等。回顾迪恩博士的经历,他正是因为拥有坚实的计
算机系统基础,才能在不断向上层跨越的过程中游刃有余,成为一名复合型、全栈
式的国际领军人才。
期待未来中国也能涌现越来越多的全栈式人才!
包云岗中国科学院计算技术研究所
2025年元旦
从人工智能到物联网,从移动应用到云计算,计算机系统及其应用无处不在,要能很好地完成各种算力生态系统构建任务,必须能够站在系统的高度进行软硬件协同设计和实现。因此,在新的时代背景下,对计算机类专业学生来说,能深入理解计算机系统并具备计算机系统软硬件设计实现能力将显得更加重要。
本书从计算机系统整体观出发,指导学生从零开始逐步设计实现单周期 CPU、带简易操作系统内核的流水线 CPU,并最终实现支持 Cache、TLB、MMU和 BPU等核心硬件且具有进程管理、存储管理、设备管理和文件系统管理等功能的完整计算机系统,这种将多门计算机系统类课程内容相互融合进行软硬件贯通设计的实验方案,在计算机系统能力培养方面无疑是一种有力的尝试与积极的创新举措。
RISC-V作为近年来迅速兴起的开放指令集架构,具有模块化和可扩展的特点,以其开放性、灵活性和高效性,受到学术界和工业界的广泛关注。它不仅为科研探索和技术创新提供了广阔的平台,也为计算机类专业人才培养提供了新的契机。本书以 RISC-V架构为基础,精心设计了 24个涵盖从数字逻辑电路、计算机组成,到操作系统和体系结构等多个计算机专业核心课程内容的实验项目。这种软硬件贯通的实验指导方式不仅可以引导学生在实践中学习和深刻理解计算机系统,还大大锻炼和提升了学生的计算机系统软硬件综合设计实现能力。
课程实践是计算机类专业教育的重要环节,它能将书本上的知识快速转化为学生手中的技能,使其在解决实际问题中锻炼思维、积累经验。无论是组合逻辑电路设计、时序逻辑电路设计、处理器和存储器的设计实现,还是操作系统内核的代码编写与调试方法,以及各类软硬件工具的使用,每个实验都是学生理解和掌握计算机系统核心概念和设计方法的重要途径。这种学习和实践路径不仅可以提高学生的动手能力,还能培养学生在面对复杂问题时的分析问题与解决问题的能力。
在计算机类专业课程体系建设中,理论教学与实验教学的结合至关重要。遗憾的是,许多院校在计算机类人才培养过程中往往只重视理论,而忽视了实践的重要性。本书的出现弥补了这一缺憾,它不仅提供了丰富的案例和详细的测试用例,还
自 20世纪 90年代以来,浙江大学就明确提出计算机专业人才“系统能力培养”这一概念,指出系统能力是指以计算思维为基本思想来理解计算机系统的整体性、关联性、层次性、动态性和开放性,掌握计算机软硬件协同工作及相互作用机制,并综合运用多种知识与技术完成全系统开发的能力,主要包括系统分析能力、系统设计能力、系统工程能力和系统创新能力。这一理念的提出,为计算机教育的发展提供了很好的借鉴。 2012年左右,浙江大学计算机学院就提出了以学生“系统能力”培养为教学目标,通过“设计一台功能计算机、实现一个操作系统、跑一段应用程序”为路径,培养学生既能很好地理解和掌握计算机基础系统,又能利用计算方法并基于计算系统进行问题求解的能力。
本书的出版,正是基于浙江大学在计算机专业系统能力培养方面的深厚积累,推动这一理念在实践中有效落实。而浙江大学在硬件课程改革、软硬件课程贯通等方面取得的成效,也为其他高校提供了宝贵的经验。
我和本书的主要作者常瑞共事多年。她在读博士期间长期在我的“体系结构实验室 ARClab”做科研,还曾经深度参与了浙江大学的系统能力教学改革的重要工作。这段经历不仅让她在计算机系统领域有了更深入的理解和实践,也为本书的编写提供了丰富的素材和灵感。本书其他几位作者也是在系统结构领域年轻有为的学者,他们都长期担任“计算机组成”“操作系统”等相关课程的主讲老师,对学生的学习需求和难点有着深入的了解。
本书主要分为三部分,详细内容如下。
第 1部分:单周期 CPU设计
.实验准备:为学生提供了实验所需的软件和硬件环境。
.多路选择器:介绍并实践了多路选择器的基本工作原理。
.七段数码管:通过实践掌握七段数码管的显示原理。
.全加减法器:设计了全加减法器,并进行了实验验证。
.时序电路设计:深入探讨了时序电路的设计方法。
.卷积核实现:实现了简单的卷积核操作,为后续的深度学习实验打下基础。
. RISC-V汇编:介绍了 RISC-V汇编语言的基本语法和指令。
.单周期 CPU设计:设计并实现了单周期 CPU,了解了 CPU的基本工作原理。
计算机系统贯通课程实践教材(RISC-V架构)
此部分为学生奠定了 CPU设计的基础知识,从基础的硬件组件如多路选择器和七段数码管,到更复杂的电路设计时序和卷积核操作,再到 RISC-V汇编语言的学习和 CPU的基本工作原理,为后续的进阶设计打下了坚实的基础。
第 2部分:简易内核 +流水线 CPU设计
.流水线 CPU设计:设计了流水线 CPU,提高了 CPU的工作效率。
.流水线冒险的解决:探讨了流水线冒险的解决方法,提高了 CPU的稳定性。
.卷积加速器:设计了卷积加速器,提高了深度学习的计算速度。
. RV64内核引导:实现了 RV64内核的引导过程。
. RV64时钟中断处理:设计了 RV64时钟中断处理机制。
.异常流水线:探讨了异常流水线的设计方法。
. RV64内核线程调度:实现了 RV64内核的线程调度机制。
.软硬件协同的尝试:进行了软硬件协同设计的尝试,了解了软硬件协同设计的基本方法。
在第 1部分的基础上,此部分进一步深入 CPU设计,引入了流水线 CPU设计和冒险的解决,提高了 CPU的工作效率和稳定性。同时,卷积加速器的设计也为学生提供了深度学习计算速度提升的实践机会。此外, RV64内核引导、RV64时钟中断处理、异常流水线和 RV64内核线程调度等都为学生理解和掌握内核设计提供了丰富的实践内容。软硬件协同设计的尝试则为学生开阔了更广阔的视野。
第 3部分:定制化内核 +CPU综合设计
.动态分支预测:实现了动态分支预测算法,提高了 CPU的预测准确性。
.设计高速缓存 Cache:设计了高速缓存 Cache,提高了 CPU的访问速度。
. RV64虚拟内存管理:实现了 RV64虚拟内存管理机制。
. RV64用户模式:设计了 RV64用户模式,提高了系统的安全性。
. RV64缺页异常处理:实现了 RV64缺页异常处理机制。
. fork机制:探讨了 fork机制的基本原理和实现方法。
.内存管理单元:设计了内存管理单元,实现了内存的有效管理。
.完成自己的计算机系统:要求学生综合运用所学知识,完成自己的计算机系统设计。
此部分是对前两部分知识的综合运用和深化。学生将学习如何设计和实现动态分支预测算法,提高 CPU的预测准确性,同时设计高速缓存 Cache以提高 CPU
序 315
的访问速度。RV64虚拟内存管理、用户模式、缺页异常处理和 fork机制等内容的学习,则使学生更加深入地理解和掌握操作系统的基本原理。最后,学生将综合运用所学知识,完成自己的计算机系统设计,实现知识的全面整合和实践能力的提升。
计算机系统的全方位培养
一个完整的计算机系统设计涵盖芯片、系统结构、编程环境、系统软件、应用软件等多方面,因此,培养学生的计算机系统观和整体观至关重要。为了达成这一目标,教育内容和教学方法都需要精心设计。
在硬件层面,课程如“数字逻辑设计”“计算机组成”“计算机体系结构”为学生打下了坚实的基础。这些课程不仅教授了硬件的基本组成和运作原理,还强调了硬件与软件之间的协同工作,帮助学生理解计算机系统的整体结构。
在软件层面,“编译原理”和“操作系统”等课程则深化了学生对软件的理解和掌握。通过这些课程,学生不仅学会了编写高效的代码,还理解了软件如何与硬件交互,从而能够设计出更加高效和可靠的计算机系统。
然而,仅依靠这些课程是不足以培养学生的计算机系统观和整体观的。因此,还需要通过综合性的实验和项目,让学生在实践中深化对计算机系统的理解。本书正是这一理念的具体体现,它通过一系列精心设计的实验,让学生在实际操作中掌握计算机系统各方面的知识,从而培养出具有计算机系统观和整体观的卓越人才。
教材编写的重要性与挑战
如何编写出既符合教学需求又能激发学生兴趣的教材,是每个教育工作者都需要面对的挑战。特别是在计算机系统这样一个快速发展的领域,教材的编写更需要紧跟时代步伐,不断更新和完善。
在编写本书时,作者充分考虑了学生的学习需求和难点,以及计算机系统的最新发展动态,力求通过简洁明了的语言、生动具体的实例和丰富多样的实验内容,激发学生的学习兴趣。同时,还注重培养学生的实践能力和创新思维,让他们在掌握基础知识的同时,能够灵活运用所学知识解决实际问题。
然而,教材编写并非易事。它需要作者不断总结经验教训,不断改进和完善。特别是在当前这个信息爆炸的时代,更需要保持敏锐的洞察力,及时捕捉计算机系统的最新发展动态,并将其融入教材。只有这样,才能编写出真正符合时代需求、能够培养出卓越人才的优秀教材。
作者的写作特点和思路
本书的作者团队具有深厚的学术背景和丰富的实践经验,这使得作者在写作过程中能够准确地把握计算机系统的核心知识和难点。写作特点主要体现在以下几方面。
计算机系统贯通课程实践教材(RISC-V架构)
.循序渐进,层次分明。作者按照从基础到复杂、从理论到实践的顺序,将计算机系统的知识分为三部分进行介绍。每部分又包含多个实验,每个实验都紧密相连,逐步深入,使得学生能够逐步建立起对计算机系统的深入理解。
.注重实践,强化动手能力。本书的实验内容设计丰富多样,涵盖了计算机系统的多方面。作者通过大量的实验,让学生在实践中掌握计算机系统的基本知识和设计方法,提高了学生的动手能力和实践水平。
.结合实际,注重应用。作者在编写本书时,充分考虑了计算机系统的实际应用需求。通过引入实际案例和场景,学生可以更好地了解计算机系统的应用场景和市场需求,为学生的职业发展提供有力的支持。
.条理清晰,易于理解。本书的条理清晰,语言简洁明了。作者通过详细的步骤和说明,帮助学生更好地理解计算机系统的知识和设计方法。同时,还提供了大量的图表和示例,使得内容更加直观易懂。
作者的写作思路也非常清晰。首先明确了本书的目标和定位,即为学生提供一条清晰的学习路径,帮助他们系统地掌握计算机系统的知识。然后,根据计算机系统的特点和难点,将知识分为三部分进行介绍。每部分都包含多个实验,通过实验的方式让学生逐步深入理解计算机系统的知识和设计方法。最后,通过总结和展望,帮助学生更好地掌握本书的内容,并为他们的未来发展提供了有力的支持。
本书的出版,对于推动计算机系统教学改革具有重要意义。它不仅为教师提供了丰富的教学资源,更为学生提供了一条清晰的学习路径。通过本书的学习,学生能够系统地掌握计算机系统设计的知识,为成为具有系统观的卓越人才打下坚实的基础。
在当前的教育背景下,无论是智能化时代对于智能计算系统的需求,还是计算机系统本身对于卓越人才的需求,都显得尤为紧迫。本书的出版,正是对这一需求的积极回应。愿本书不仅能为计算机教育领域提供新的教学资源,更为学生提供一条清晰的学习路径,帮助他们更好地掌握系统能力。
陈文智浙江大学·求是园
2025年 2月
前言
本书是计算机系统类相关课程的实验指导用书。计算机系统类课程涉及多门计
算机软硬件专业课程,而计算机系统作为一个整体,其软硬件贯通的重点在于实验
设计。本书以构建一套完整的实验体系来代替“数字逻辑”“计算机组成”“汇编语
言””操作系统”“计算机体系结构”等相关课程中抽象的知识点,从系统认知、设计、优化的角度层层深入,帮助读者由浅入深地认识计算机系统的全貌。本书的内容打破传统计算机系统类课程间的壁垒,弥补了计算机系统课程理论学习和真实系统之间的鸿沟,手把手引导读者从零开始设计 64位 RISC-V架构 CPU和 RV64操作系统内核,通过亲自动手实验,理解和掌握计算机系统的工作原理。
编写初衷
本书编写的初衷是面向计算机系统类相关课程的学习者,为解决计算机系统课程理论体系庞杂、基础概念抽象、课程交叉多、实验与理论脱节等教学中遇到的问题,给出一套完整的基于统一实验平台的计算机系统贯通实验体系指导。本书也是国家级一流本科专业——浙江大学信息安全专业和浙江大学图灵班(计算机科学与技术专业、人工智能专业)的核心主干课程“计算机系统 I、II、III”的实验配套教材。
所有实验均基于开源的 64位 RISC-V架构,为培养处理器设计和操作系统设计专业人才、解决网络基础设施建设“卡脖子”技术奠定坚实基础。同时,本书旨在探索学科研究和课程教学新范式,推动信息学科发展,坚实系统基础,致力于为国产系统的设计贡献力量。本书适用于想了解和探究真实计算机系统运行基本原理和本质规律的读者,可作为高等院校计算机大类相关专业,以及信息安全、网络空间安全、人工智能、芯片设计等相关交叉专业的教学实验指导书,也可以作为计算机系统相关方向工程技术人员的岗前培训实验指导书。
内容安排
本书使用统一的软硬件平台开展实验,包含三部分,分别对应于浙江大学“计算机系统 I、II、III”系列课程,每部分都有一个主题,逐步递进,逐渐为读者呈现计算机系统的细节,每部分完成都有一个最小系统的输出,最终能够搭建一个自主设计的处理器并在其上运行操作系统。三部分也可单独使用,适用于不同的使用群体,读者可以根据需要选择其中独立的实验内容。全书精心设计了 24个软硬件设
计算机系统贯通课程实践教材(RISC-V架构)
计实验,正文共 24章,内容由浅入深,讲解细致,手把手引导读者从零开始设计 CPU和操作系统,每章的结尾附有相应的思考题,以供延伸学习。
第 1部分:计算机系统 I——单周期 CPU设计,包括“计算机系统 I”课程配
套的 8个实验( SysI-Lab1~SysI-Lab8),分别是实验准备、多路选择器、七段数码
管、全加减法器、时序电路设计、卷积核实现、 RISC-V汇编和单周期 CPU设计。
本部分包含数字逻辑设计实验、汇编语言及单周期指令的设计。通过指令扩展,可
以实现一个简单的单周期 CPU设计。
第 2部分:计算机系统 II——简易内核 +流水线 CPU设计,包括“计算机系
统 II”课程配套的 8个实验( SysII-Lab1~SysII-Lab8),分别是流水线 CPU设计、
流水线冒险的解决、卷积加速器、 RV64内核引导、 RV64时钟中断处理、异常流
水线、 RV64内核线程调度和软硬件协同的尝试。通过完成本部分的实验,读者可
以初步设计一个小型系统,在自己设计的流水线处理器上加载简易系统。
第 3部分:计算机系统 III——定制化内核 + CPU综合设计,包括“计算机系
统 III”课程配套的 8个实验( SysIII-Lab1~SysIII-Lab8),分别是动态分支预测、设
计高速缓存 Cache、RV64虚拟内存管理、 RV64用户模式、 RV64缺页异常处理、
fork机制、内存管理单元,以及完成自己的计算机系统。通过本部分的实验,读者
可以在自己设计的带 Cache的处理器上加载自己编写的更为复杂的操作系统或真
实操作系统,还可以通过拓展实验部分,对自己设计的系统进行功能拓展与性能
优化。
教材特色
(1)全国首例。本书是“新工科”建设背景下国内第一本原创的基于 64位 RISC-V处理器架构的计算机系统软硬件贯通设计实验指导书,首次基于开源的 RISC-V架构贯通了计算机系统类的多门软硬件课程,包括数字逻辑、计算机组成原理、操作系统、汇编语言和计算机体系结构,从系统认知、设计、优化的角度层层深入,帮助读者由浅入深地认识计算机系统的全貌。
(2)信息安全 /人工智能专业的首次尝试。本书设计的实验内容是全国首个针对信息安全 /人工智能专业进行贯通教学改革的尝试。计算机系统安全及人工智能的未来发展是国家的战略需求,深入理解计算机系统及设计原理,才能更全面分析系统是否安全,也能更好地理解上层软件、大语言模型等的运行机理,因此计算机系统的软硬件设计能力是信息安全专业的核心能力之一,也是智能系统 /芯片设计的重要基础。
(3)统一的实验平台。本书中的所有软硬件实验均基于开源的 RISC-V架构,使用统一的软件和硬件平台,不需要多次切换实验环境就可以完成全书的 24个实验,避免了读者在学习过程中需要使用不同的实验环境带来的困扰。同时,本书在附录中给出了学习者在实验中可能会遇到的问题及解答,方便读者进行查阅。
前言19
(4)科教融合的工具链。本书配套的实验提供了 Verilator、Spike、riscv-pk、 QEMU、riscv-toolchain等广泛应用于科研工作中的软硬件工具链,缩短了本科教学与一线科研实践之间的距离,同时将科研成果反哺于教学,如科研工作中的 co-simulation差分测试工具可应用于课程实验中的处理器正确性验证,大大提高了处理器验证、调试的效率。
(5)灵活多样的学习路径。本书共分为三部分,共 24个实验。读者既可以按照章节顺序完整完成一整套软硬件贯通实验,也可以根据需要选择不同的部分进行学习,每部分的内容都是相对独立的,且有对应的输出,可以实现不同的最小系统。更加灵活的是,每部分中的实验也是相对独立的,不同实验模块的组合可以实现不同的设计。更多的学习路径详见图 8。
特别感谢
本书的撰写伴随着教学过程的开展不断补充、完善和迭代更新,历经三年编写至目前的版本。在本书的编写过程中,感谢浙江大学计算机学院对该系列课程教学改革的大力支持,感谢校内外前辈及同行们的鼓励,以及所提出的宝贵建议。尤其要感谢中国科学院计算技术研究所包云岗老师、南京大学袁春风老师、浙江大学陈文智老师为本书作序。特别感谢北京大学陈向群老师、清华大学陈渝老师、国防科技大学沈立老师、上海交通大学夏虞斌老师、清华大学向勇老师、上海交通大学李卷儒老师、武汉大学龚奕利老师、南京大学蒋炎岩老师、中国科学院计算技术研究所余子濠工程师为本书倾情推荐。感谢清华大学出版社对本书进行审阅。感谢参与本系列课程的助教对教材中实验环境的搭建、文字排版、图表美化等做出的贡献,他们是李鸿屹、陈卓、张行健、苑子琦、潘子曰、孙志博、洪斯谕、徐金焱、周杨叶、王晶晶、叶泽凯、汤尧、陈佳彤、林浩然、陈杰伟、赵小迪、王鹤翔、耿华、杨儒宁、秦嘉俊、赵恒、李英琦、张幸智等。其中,本书的公开实验仓库由周杨叶、王鹤翔、张幸智、李英琦进行创建、校对及验证,对他们的辛勤付出表示感谢。感谢浙江大学 2021—2024年修读该系列课程并使用该实验指导的同学们对本书提出的宝贵建议,他们也贡献了附录 C中的常见问题。
作者
2025年 6月于杭州
理”课程介绍计算机的硬件组成,是第一门从 CPU角度来了解计算机系统的课程。在指令集层面,“计算机体系结构”课程是以指令集为核心,更加深入理解 CPU的工作原理,以及软硬件的交互界面。以系统软件的视角,“计算机操作系统”课程则建立在硬件之上,介绍如何通过操作系统这个复杂的系统软件来管理计算机的软硬件资源,在这个层次上,指令集是透明的。因此,从不同的角度出发,上述计算机系统的相关课程都是从某一个抽象的层次上来认识计算机系统。
如果读者已经学习过上述系统课程,是否能够回答以下问题?
.计算机系统是什么样的?
.系统软硬件是如何配合协同工作的?
.不同的层次之间是如何互相影响的?
.运行一个程序,需要什么硬件设备和哪些系统软件的支持?
.从计算机系统设计的角度出发,怎样的系统设计是简洁的、高效的、安全的?
为解答这些问题,助力读者更加深入地理解计算机系统软硬件的设计细节,本书的编写初衷是将真实系统的全貌呈现给对计算机系统感兴趣的读者。希望读者通过动手完成本书的实验,亲手找到上述问题的答案,而不只是理论上了解这些抽象的原理。
于是,本书的作者设计了计算机系统贯通的课程以及配套的实验。从系统认知的层面上,通过设计自己的最小系统来理解计算机系统真实的样子,而这个读者自己设计的系统会随着一个个实验的开展,呈现动态变化的样子。读者将亲身经历系统从简单到复杂的过程,亲自在系统里添加细节以完善系统的功能,或者优化系统的性能,进一步切实体验软硬件协同工作的精妙之处。
在这个过程中,也许一个很小的错误会让读者发现,原来软件运行时呈现出问题的背后可能是由一条指令或者硬件环境引发的,也会明白原来操作系统的启动和运行需要那么多的特权指令来支持。在真实系统的设计中,读者会感受到精简指令集的魅力,会领悟到为什么 RISC-V指令集架构适合做流水,以及流水线什么时候速度会变慢,这些理论不再是课本上生硬的结论,而是读者在设计自己的系统时得到的真实体会。
图 1 SysI整体架构图
在 SysI的基础上,添加了流水线所需的部件、简易 OS启动需要的支持、进程管理等,如图 2所示,为 SysII整体架构图和涉及的知识模块。这时的指令集可以支持流水线,有了软硬件的中断处理,也可以与软件有简易的交互,但是还不能支持复杂操作系统的运行。
计算机系统贯通课程实验总述23
图 2 SysII整体架构图
在 SysI、SysII的基础上,添加了 TLB、MMU、BPU等,以及 Cache、内存管理、文件管理等存储层次,如图 3所示,为 SysIII整体架构图和涉及的知识模块。至此,较为完整的计算机系统已初具雏形,基本的软件、硬件都具备了,在自己设计的处理器上可以运行自己编写的系统软件、操作系统内核等。
图 3 SysIII整体架构图
图 4 SysI实验设计整体架构图
如图 5所示,为 SysII实验设计整体架构图及主要模块,SysII开始在硬件之上涉及系统软件部分。因此, CPU设计在单周期的基础上加上了流水线及冒险的处理、总线、中断与异常处理等,系统软件主要包括内核启动和进程管理等。
图 5 SysII实验设计整体架构图
计算机系统贯通课程实验总述25
如图 6所示,为 SysIII实验设计整体架构图及主要模块。在 SysII的基础上,软硬件部分都更加接近真实的系统,加上了整个存储层次,主要包括 Cache设计、内存管理、虚拟内存管理、MMU等,体现了更完整的软硬件综合设计。
图 6 SysIII实验设计整体架构图
4.使用的实验工具链
本书使用的主要实验工具如图 7所示,包括软件层面编译内核和硬件层面仿真验证以及上板执行的若干工具,在后续实验中会详细介绍各个工具的使用。其中,使用到的开源工具如下。
. Verilator:Verilog/SystemVerilog模拟执行、验证开源软件。
. Spike:针对 RISC-V设计的指令集模拟器,用于 RISC-V指令集的完整性测试和 RISC-V规范一致性检查。
. riscv-toolchain:RISC-V工具链,包括编译器、汇编器等。
. gtkwave:仿真波形查看软件。
. mobaxterm(可选):终端工具。
为了更加方便地在实验过程中对处理器设计进行自动化测试及安全性验证,本书也采用了如下自主研发的系列工具。
. co-simulation(riscv-isa-cosim):基于 Spike设计实现的处理器差分测试和正确性验证工具。
. starship(可选):可用于处理器核 RTL仿真、 FPGA生成、处理器前端设计的工具。
. riscv-spike-sdk(可选):配合 starship工具,可用于生成 starship硬件可执行的 RV64操作系统和文件系统。
图 7 SysIII实验设计整体架构图
5.实验安排
按照上述分层次和模块化设计,本书的组织将 SysI、SysII、SysIII作为三部分,每部分都有独立的输出,全书设计了 24个独立实验,共 24章。同时,教材的附录部分提供了可方便读者查询的一些信息,包括硬件描述语言常见语句及电路图、配置 IP核以及实验中可能会遇到的常见问题。
如图 8所示,每部分包括 8个实验,其中有 7个基础实验和 1个综合性实验,同时也提供了多条可灵活使用的学习路径。例如,通过第 1~5章、第 8章和第 9章就可以完成不带 Cache的基础流水线 CPU设计;通过第 12、13、15章和第 19~22章可以完成小型操作系统设计;对于有数字逻辑设计和计算机组成原理基础的读者,可以通过其中一些章节的学习掌握高阶 CPU设计技术,如第 10章增加了流水线冒险的解决方法,第 17章增加了动态分支预测的实现,第 18章可以增加带 Cache的流水线 CPU设计等。除此之外,软硬件协同的设计实验贯穿了三个不同的部分,每部分的最后一个实验均为软硬件综合实验,另有一些实验的设计也增加了本书的挑战性与趣味性,如第 6章的卷积核实现和第 11章的卷积加速器,第 23章要实现处理器上支持 RISC-V的分页模式和虚拟地址转换等。当然,本书使用的方式不限于图中给出的几种,读者既可以按照本书的章节安排,也可以使用
计算机系统贯通课程实验总述27
其中的部分内容进行灵活组合,更多的可组合配置方式期待读者打开下面的篇章自己探索。
图 8本书的实验内容概览
6.实验仓库
本书提供的开源仓库地址可扫描二维码查看。
开源仓库地址
目录
第1部分 计算机系统I——单周期CPU设计 ...................................................................................... 1
第1章 SysI-Lab1实验准备 ...................................................................................... 3
1.1实验工具 ...................................................................................... 3
1.2背景知识
......................................................................................... 4
1.2.1
FPGA的发展历程................................................................. 4
1.2.2
Verilog基础知识 ................................................................... 6
1.3实验环境配置
.................................................................................12
1.3.1
Linux环境配置 ....................................................................12
1.3.2
SPICE仿真反相器 ...............................................................13
1.3.3
Logisim电路仿真 .................................................................15
1.4
Verilator仿真测试 ..........................................................................16
1.5
Vivado操作流程.............................................................................18
1.5.1 FPGA上的 Verilog实践.......................................................28
1.
5.2以二选一多路选择器为例 ......................................................35
思考及练习 ............................................................................................36
第 2章 SysI-Lab2多路选择器 ..................................................................38
2.1实验工具
........................................................................................38
2.
2多路选择器设计 ..............................................................................38
2.2.1基本概念
..............................................................................38
2.
2.2电路级别的实现....................................................................39
2.
2.3四路选择器的实现 ................................................................39
2.3实验步骤
........................................................................................41
思考及练习 ............................................................................................41
第 3章 SysI-Lab3七段数码管 ..................................................................42
3.1实验工具
........................................................................................42
3.2背景知识
........................................................................................42
3.
2.1复合多路选择器....................................................................42
3.2.2译码器
.................................................................................43
计算机系统贯通课程实践教材(RISC-V架构)
3.2.3时钟分频器 ..........................................................................43
3.2.4 NEXYS A7-100T七段管 ......................................................43
3.3实验步骤 ........................................................................................45
思考及练习 ............................................................................................46
第 4章 SysI-Lab4全加减法器 ..................................................................47
4.1实验工具 ........................................................................................47
4.2加法器设计.....................................................................................47
4.2.1加法器实验原理....................................................................47
4.2.2加法器实验步骤....................................................................50
4.3加减法器设计 .................................................................................51
4.3.1加减法器实验原理 ................................................................51
4.3.2 64b加减法器实验步骤 ..........................................................52
思考及练习 ............................................................................................52
第 5章 SysI-Lab5时序电路设计 ...............................................................53
5.1实验工具 ........................................................................................53
5.2时序电路设计基础...........................................................................53
5.2.1有限状态机 ..........................................................................53
5.2.2计数器 .................................................................................55
5.2.3分频器 .................................................................................55
5.3计时器设计.....................................................................................56
5.3.1 4位二进制计数器 .................................................................56
5.3.2 2位 BCD码计数器 ..............................................................57
5.3.3计时器实验步骤....................................................................57
5.4乘法器设计.....................................................................................58
5.4.1乘法器实验原理....................................................................58
5.4.2 Booth算法 ..........................................................................60
5.4.3乘法器实验步骤....................................................................61
思考及练习 ............................................................................................62
第 6章 SysI-Lab6卷积核实现 ..................................................................63
6.1实验工具 ........................................................................................63
6.2背景知识 .......................................................................................63
6.2.1移位寄存器 ..........................................................................63
6.2.2 SystemVerilog语法...............................................................64
6.2.3 Ready-Valid握手 .................................................................66
6.3实验原理 ........................................................................................67
7.5.1理解跳转表 ..........................................................................86
7.5.2回顾冒泡排序算法 ................................................................87
7.5.3理解简单 RISC-V程序 .........................................................87
7.5.4理解递归汇编程序 ................................................................88
7.5.5理解 switch语句产生的跳转表 ..............................................89
7.6实验步骤 ........................................................................................90
7.6.1冒泡排序的汇编实现 .............................................................90
7.6.2斐波那契数列的汇编实现 ......................................................90
7.6.3通过调试破解密钥 ................................................................91
7.6.4 RISC-V Binary Bomb...........................................................92
思考及练习 ............................................................................................93
第 8章 SysI-Lab8单周期 CPU设计........................................................94
8.1实验工具 ........................................................................................94
8.2背景知识 ........................................................................................94
8.2.1 RISC-V指令格式 .................................................................94
8.2.2数据通路..............................................................................95
8.2.3控制单元..............................................................................97
8.3 RISC-V基础指令 ......................................................................... 101
8.4实验原理 ...................................................................................... 114
8.4.1 Memory设计 ..................................................................... 114
8.4.2数据通路设计 ..................................................................... 116
数据冒险............................................................................
9.3.2实现暂停机制 ..................................................................... 128
9.4 DRAM和 BRAM的区别.............................................................. 128
9.5 BRAM的使用.............................................................................. 129
9.6实验目标 ...................................................................................... 130
9.7实验步骤 ...................................................................................... 131
思考及练习 .......................................................................................... 132
第 10章 SysII-Lab2流水线冒险的解决.................................................... 133
10.1实验工具 .................................................................................... 133
10.2实验原理 .................................................................................... 133
10.2.1流水线的旁路机制 ........................................................... 133
10.2.2 Axi-lite总线协议 ............................................................ 134
10.3实验步骤 .................................................................................... 136
思考及练习 .......................................................................................... 136
第 11章 SysII-Lab3卷积加速器.............................................................. 137
11.1实验工具 .................................................................................... 137
11.2实验原理 .................................................................................... 137
11.2.1外设编程接口.................................................................. 137
11.2.2 MMIO机制及定义 .......................................................... 138
11.2.3卷积加速器的 I/O映射及操作 ......................................... 139
实验工具 ....................................................................................
13.2背景知识 .................................................................................... 150
13.2.1 RISC-V中的中断和异常.................................................. 150
13.2.2上下文处理 ..................................................................... 152
13.2.3异常处理程序和时钟中断 ................................................. 152
13.3实验步骤 .................................................................................... 152
13.3.1准备工程 ........................................................................ 152
13.3.2开启异常处理.................................................................. 154
13.3.3实现上下文切换 .............................................................. 155
13.3.4实现异常处理函数 ........................................................... 156
13.3.5实现时钟中断相关函数 .................................................... 156
13.3.6实验样例 ........................................................................ 157
思考及练习 .......................................................................................... 157
第 14章 SysII-Lab6异常流水线.............................................................. 158
14.1实验工具 .................................................................................... 158
14.2实验原理 .................................................................................... 158
14.2.1 RISC-V特权级 ............................................................... 158
14.2.2控制和状态寄存器 ........................................................... 158
14.2.3异常和中断 ..................................................................... 159
14.3异常流水线设计 .......................................................................... 162
14.3.1实现 CSR指令................................................................ 162
15.3.4实验样例 ........................................................................ 174
思考及练习 .......................................................................................... 176
第 16章 SysII-Lab8软硬件协同的尝试.................................................... 177
16.1实验工具 .................................................................................... 177
16.2实验原理 .................................................................................... 177
16.2.1整体架构设计.................................................................. 177
16.2.2硬件外围设计.................................................................. 178
16.3编译内核 .................................................................................... 178
16.4外围准备 .................................................................................... 179
16.4.1 Bootloader代码 .............................................................. 179
16.4.2生成下板代码.................................................................. 180
16.4.3建立工程文件.................................................................. 180
16.4.4观察下板现象.................................................................. 181
16.4.5 Vivado仿真运行 ............................................................. 182
16.5实验步骤 .................................................................................... 182
思考及练习 .......................................................................................... 182
第 3部分计算机系统 III——定制化内核 + CPU综合设计 .............183
第 17章 SysIII-Lab1动态分支预测 ......................................................... 185
17.1实验工具 .................................................................................... 185
18.2.4 Cache与 Memory的数据传输.......................................... 196
18.3 Cache控制逻辑 .......................................................................... 198
18.3.1初始化 IDLE状态........................................................... 199
18.3.2读事务执行 READ状态 .................................................. 199
18.3.3写事务执行 WRITE状态 ................................................ 200
18.4 Cache的完整结构 ....................................................................... 201
18.5实验步骤 .................................................................................... 203
18.5.1实验目标 ........................................................................ 203
18.5.2仿真测试 ........................................................................ 204
18.5.3上板验证 ........................................................................ 205
思考及练习 .......................................................................................... 205
第 19章 SysIII-Lab3 RV64虚拟内存管理 ............................................... 206
19.1实验工具 .................................................................................... 206
19.2虚拟内存布局.............................................................................. 206
19.3 SATP寄存器.............................................................................. 207
19.4虚实地址转换.............................................................................. 208
19.4.1虚拟地址和物理地址........................................................ 208
19.4.2 RISC-V Sv39模式页表项 ................................................ 208
19.4.3 RISC-V地址转换............................................................ 209
19.5实验步骤 .................................................................................... 209
20.4.3中断处理 ........................................................................ 221
20.4.4添加系统调用.................................................................. 223
20.4.5修改内核启动.................................................................. 223
20.4.6编译及测试 ..................................................................... 223
思考及练习 .......................................................................................... 224
第 21章 SysIII-Lab5 RV64缺页异常处理 ............................................... 225
21.1实验工具 .................................................................................... 225
21.2背景知识 .................................................................................... 225
21.2.1虚拟内存管理.................................................................. 225
21.2.2缺页异常 ........................................................................ 226
21.3实验步骤 .................................................................................... 227
21.3.1准备工程 ........................................................................ 227
21.3.2实现虚拟内存管理 ........................................................... 228
21.3.3任务初始化 ..................................................................... 230
21.3.4实现缺页异常处理 ........................................................... 230
21.3.5编译及测试 ..................................................................... 231
思考及练习 .......................................................................................... 232
第 22章 SysIII-Lab6 fork机制............................................................... 233
22.1实验工具 .................................................................................... 233
22.2 fork基础知识 ............................................................................. 233
23.2.1 RISC-V Sv39分页模式.................................................... 241
23.2.2 Axi-lite总线模型 ............................................................ 243
23.2.3 MMU模块 ..................................................................... 243
23.3实验步骤 .................................................................................... 244
23.3.1实验目标 ........................................................................ 244
23.3.2仿真测试 ........................................................................ 244
23.3.3上板验证 ........................................................................ 244
思考及练习 .......................................................................................... 244
第 24章 SysIII-Lab8完成自己的计算机系统 ............................................ 245
24.1实验工具 .................................................................................... 245
24.2实验目标 .................................................................................... 245
24.3实验原理 .................................................................................... 246
24.3.1用户态实现及中断完善 .................................................... 246
24.3.2地址转换后备缓冲器........................................................ 246
24.3.3 MMIO与外设................................................................. 247
24.4设计范例 .................................................................................... 247
24.4.1范例一:指令集扩展........................................................ 247
24.4.2范例二:运行较为完善的 Kernel ...................................... 252
思考及练习 .......................................................................................... 259
第4部分 附录及常见问题.................................. 261
附录A 硬件描述语言常见语句及电路图 ..................................263
附录B 配置IP核..................................275
附录C 常见问题..................................287
参考文献..................................294

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2026 (香港)大書城有限公司  All Rights Reserved.