
本着系统设计实现分离的原则,降低实现难度,提升设计内容,采用简单易学logisim仿真平台,紧扣计算机组成原理各章重要知识点,设计一系列有针对性的设计型实验和大型课程设计实验,试图以实践教学为中心进行计算机组成原理课程的教学。
“计算机组成原理”作为计算机专业核心基础课,主要讨论计算机各大功能部件的基本组成原理及其互连构成整机的技术,在计算机系统能力培养目标中起着重要的承上启下作用,其先导课程包括“数字逻辑”和“汇编语言程序设计”,后续课程为“计算机系统结构”和“计算机接口技术”。该课程的实践教学应该站在贯穿计算机硬件系列课程的角度,引导学生如何利用前导课程的基本知识,设计计算机主要功能部件并构成整机系统。与理论课程配合,实现计算机系统设计能力的培养 。
“计算机组成原理”课程理论综合性强,课程实验尤其是综合实验难度大,存在时间、场所、平台等诸多制约因素,为了从根本上解决实践教学中的困难,作者结合多年的教学经验,进行了一系列卓有成效的实践教学改革。参考国际一流计算机专业相关课程的先进经验,引入了易学易用的开源虚拟仿真实验平台,本着理论实践一体化、实验目标系统化、实验平台虚拟化、教师指导轻松化的原则,历经5年持续的实践教学改革,开发并完善了一系列内容丰富的课程实验,建立了逐层递进、立足计算机系统、设计型实验为主导的实践教学体系。本教材就是相关实践教学改革的主要成果,其主要特点如下。
(1) 理论实践一体化: 相关实验紧扣理论教学重点、难点,课程内容覆盖率达90%以上,有助于构建理论课堂中师生的共同语境,为翻转课堂提供丰富的教学素材,实验内容大多处于布鲁姆认知分类法中的运用、分析、综合、评价4个层次,学生完成系列实验,对相关知识的掌握更透彻,为理论教学提供强力的支撑。
(2) 实验目标系统化: 围绕计算机系统设计与实现的系统能力培养目标,让学生站在硬件工程师的视角,从逻辑门电路开始,逐步设计运算部件、存储器、数据通路和控制器、冲突冒险机制,直至设计完整的流水CPU来深入理解计算机软硬件系统,将系统能力培养的复杂工程问题——五段流水CPU设计的高难度任务分解成若干难度递进的子任务和单元实验。
(3) 实验平台虚拟化: 主要实验均采用跨平台开源的Logisim虚拟仿真平台,该平台简单易学、易调试且无实验成本,突破传统实验对空间和时间的要求。美国加州大学伯克利分校CS61C、康奈尔大学CS3410课程均采用了该平台。实验平台采用分离数字电路对象构建原理图的方式进行CPU系统设计和仿真,有效地延续了数字逻辑课程的设计方法,有利于培养学生硬件设计思维。无须另外开设硬件描述语言类先导课程,也回避了硬件描述语言过于抽象、硬件设计程序化、学习周期长的问题。
(4) 实验过程游戏化: 借鉴游戏闯关的设计理念,将具有高难度挑战性的实验总目标细分成若干可明确检查的学习关卡。实验内容和难度逐渐递进,通过各阶段成果实时得分增强学习的及时反馈,提高学习趣味性;为学生提供丰富的测试用例以及自动检测工具等学习装备,让学生在较短时间内体验更多的设计内容;实验完成率高,学生成就感强,有助于激发学生的持续学习热情,在985高校和普通院校的实际应用中均取得了很好的效果。
(5) 教师指导轻松化:传统硬件系列实验检查和指导难度大,教师劳动强度高,通过实验输入输出界面规范化、测试用例标准化、性能指标数据化、实验测试评分自动化等一系列手段,提升了实验的易检查性,大大降低了教师工作负担。
本书前7章按“计算机组成原理”各章节内容进行组织,每章均结合各章的重点、难点设置若干实验,各实验均明确给出学生的学习目标和实验内容,并进行适当的背景知识补充,实验思考部分可有效地引导学生进行实验。其中,第1章为数据表示实验,设计了若干程序运行验证性实验,有助于学生站在软硬协同的角度理解数据表示;另外还设计了汉字编码、海明编校验码、CRC校验码实验,其中流水传输实验创造性地模拟了一个编码传输环境,让学生理解编码传输概念的同时,提前熟悉流水线的相关知识。第2章为运算器组成实验,主要包括先行进位加法器实验、MIPS运算器设计实验、阵列乘法器设计实验、原码及补码1位乘法器设计实验。第3章为存储系统实验,主要包括存储扩展实验、MIPS RAM设计实验、MIPS寄存器文件设计实验、虚拟存储器软件仿真实验,另外还包括3个Cache相关的实验,既包括Cache性能仿真,也包括Cache硬件设计实验,填补了组成原理实验在这方面的空白。第4章为MIPS汇编程序设计实验,主要介绍MIPS指令系统以及MIPS汇编程序设计方法,并给出若干MIPS汇编程序设计实验。第5章MIPS处理器设计实验为课程实验重点,包括MIPS单周期处理器设计实验、MIPS多周期处理器硬布线控制器设计实验、多周期处理器微程序控制器设计实验、基于FPGA的单周期处理器实验。第6章为MIPS五段流水机制设计实验,包括理想流水线CPU设计实验、气泡流水线CPU设计实验、重定向流水线CPU设计实验、动态分支预测机制设计实验等。第7章为输入输出系统实验,包括中断与轮询方式编程实验、单级中断机制设计实验、多级中断机制设计实验、流水中断机制设计实验等。第8章介绍虚拟仿真平台Logisim使用说明,方便师生快速掌握Logisim使用技巧。第9章给出Logisim中常用组件库参考手册,介绍不同组件的详细使用信息。第10章简要介绍MIPS汇编仿真器MARS的主要功能和使用方法。
注意: 本书图中的逻辑电路符号与平台软件中的符号一致。
本书实验众多,内容丰富,教学过程中教师可以根据学生具体情况有针对性地选择部分内容开展实验,学生也可以根据自己的学习情况自行选择实验。本书适合作为高等学校计算机相关专业“计算机组成原理”课程的实验教材,也可供IT工程技术人员参考。
特别感谢华中科技大学计算机科学与技术学院秦磊华教授,本书正是在秦教授的策划和不断鞭策鼓励下才得以完成;感谢华中科技大学计算机卓越1201班的全体学生,是他们和老师的高度配合才有了今天的一系列成果,尤其感谢王汉杰、徐钦振对Logisim手册的翻译工作;感谢华中科技大学计算机学院2013级、2014级、2015级全体学生,本书大多数实验均经过了他们多次检验和持续改进;最后感谢在我身后默默支持的家人,谢谢他们!
由于水平有限,书中难免存在错误和疏漏之处,敬请同行和广大读者批评指正,邮箱: stan@hust.edu.cn。
作者2018年7月
第1章数据表示实验1
1.1补码表示实验1
1.2浮点数表示实验6
1.3汉字编码实验12
1.4奇偶校验实验14
1.5海明校验码设计实验18
1.6CRC校验码设计实验21
1.7编码流水传输实验28
第2章运算器组成实验31
2.1可控加减法电路设计实验31
2.24位快速加法器设计实验33
2.3多位快速加法器设计实验37
2.432位ALU设计实验39
2.5阵列乘法器设计实验41
2.6原码1位乘法器设计实验44
2.7补码1位乘法器设计实验46
第3章存储系统实验50
3.1RAM组件实验50
3.2存储器扩展实验51
3.3MIPS RAM设计实验54
3.4MIPS寄存器文件设计实验56
3.5Cache软件仿真实验57
3.6Cache性能分析实验61
3.7Cache硬件设计实验66
3.8虚拟存储器软件仿真实验71
第4章MIPS汇编程序设计实验75
4.1MIPS体系结构75
4.2MIPS指令集78
4.3MIPS汇编入门83
4.4MIPS编程进阶904.5MIPS程序设计实验94
第5章MIPS处理器设计实验99
5.1MIPS单周期处理器设计实验99
5.2MIPS多周期处理器设计实验110
5.3微程序控制器设计实验116
5.5基于FPGA的单周期处理器实验118
第6章MIPS五段流水机制设计实验120
6.1理想流水线CPU设计实验120
6.2气泡流水线CPU设计实验125
6.3重定向流水线CPU设计实验133
6.4基于FPGA的流水CPU实验136
6.5动态分支预测机制设计实验137
第7章输入输出系统实验142
7.1AHBLite总线设计实验142
7.2程序查询控制方式编程实验145
7.3中断服务程序编程实验148
7.4单级中断机制设计实验150
7.5多级中断机制设计实验158
7.6流水中断机制设计实验161
第8章Logisim用户指南163
8.1新手上路163
8.2Logisim值传递算法168
8.3库和属性170
8.4子电路173
8.5线路178
8.6组合逻辑分析181
8.7菜单功能说明185
8.8存储组件1888.9日志190
8.10命令行测试193
8.11应用偏好设置196
8.12工程选项199
8.13Logisim的不足之处201
8.14Logisim总结201
第9章Logisim库参考手册204
9.1线路库204
9.2逻辑门库208
9.3复用器库211
9.4运算器库214
9.5存储库218
9.6输入输出库225
9.7基础库229
第10章MARS用户指南232
10.1MARS集成开发环境232
10.2交互式调试功能 236
10.3MARS系统设置237
10.4MARS命令行模式240
10.5MARS系统调用242
10.6MARS插件246
10.7MIPS异常处理程序253
10.8MARS伪指令255
10.9MARS宏指令256
参考文献261
(1) 理论知识点全覆盖
◆ 丰富的课堂翻转素材
◆ 做完实验,知识想忘都难
(2) 注重硬件思维培养
◆ 原理图方式构建硬件系统
◆ 虚实一体、复杂问题分解
(3) 零实验成本
◆ 跨平台免费开源软件
◆ 突破实验时间、空间限制
(4) 大大降低教师工作负担
◆ 易指导、易调试、易检查
◆ 一分钟实验自动评测框架
◆ 精准故障定位、自动评分
计算机组成课程教学团队。谭志虎,博士、华中科技大学副教授、硕士生导师。主要研究方向为计算机体系结构,网络存储,计算机组成原理课程组组长,先后为本科生开设了“计算机组成原理”、“计算机硬件基础”、“计算机系统基础”等课程,以提升计算机系统能力为导向,进行了计算机组成原理实践教学的改革实践与探索。