面向系统能力培养的计算机硬件实验教学设计

2024-04-16 10:10余良俊
湖北第二师范学院学报 2024年2期
关键词:指令控制器实验

尚 俊,余良俊

(湖北第二师范学院 计算机学院,武汉 430205)

计算机组成原理是计算机科学与技术专业的硬件核心课程,在整个培养体系中起着承上启下的作用。传统的实验教学采用实验箱的方式,需要完成复杂的导线连接,效率低下,而且实验调试困难,实验箱维护成本较高,大多数是验证性实验,无法解决复杂工程问题。如何根据新工科建设的要求对计算机专业教学进行改革,提高计算机组成原理课程硬件实验教学的效率,是一个值得关注的问题。

1 硬件实验教学现状

计算机组成原理主要讲授单处理机系统的组成与结构,课程知识点众多且比较复杂抽象,其重难点是让学生建立起清晰的整机概念,并分析不同的结构和设计方法对运算速度、效率和成本的影响。从多年的教学实践来看,学生对硬件理论知识难以理解。为了加强学生对硬件结构和原理的理解,目前国内高校采用了以下几种方式开展硬件实验:

1.1 传统的实验箱

传统的实验箱采用了固定的计算机部件单元电路,完成实验需要大量的导线连接和开关的操作,学生无法直观看到各部件的内部电路结构,很难真正理解各部件的工作原理,而且实验的调试比较困难,受场地和时间的影响,多数是验证性实验,实验效果较差。在硬布线控制器设计实验中,学生更是难以理解各控制信号的产生和流向,对他们的自信心有较大的打击,以至于有些学生对后续课程的学习产生了畏难情绪。由于无法建立整机的概念,系统分析和设计能力也难以得到提高。

1.2 采用EDA技术和VHDL语言

采用EDA技术和VHDL语言描述硬件的方式提供了硬件描述语言的编写、仿真和综合功能,虽然能方便完成仿真结果分析,但是电路的修改和调试都比较繁琐,难以完成预定的目标,VHDL工具的性能和稳定性也可能受到影响。[1]丁男等利用proteus软件及平台搭建面向计算机组成原理的混合式教学平台,并对大连理工大学计算机组成原理的建设经验和实施过程进行了阐述。[2]也有高校采用FPGA的方式来完成硬件的实验,但是FPGA更强调工业化的设计,需要的知识体系较多,对老师和学生的要求更高,而且过于抽象,学习周期较长。[3]-[5]

1.3 采用高级语言或汇编语言

采用高级语言或汇编语言工具如MRAS 可以模拟内存或寄存器读写以及CPU 指令执行过程、帮助学生理解计算机硬件的基本原理,但是无法模拟真实的硬件环境,并可能存在一些差异和限制,要求学生具备一定的编程基础,否则会存在一定的困难和挑战。此外,汇编语言编程工具和仿真软件的性能和稳定性也可能受到影响。[6]

面对新工科教育和工程认证的要求,以往的实验教学模式无法解决复杂工程问题,难以提升计算机专业学生的系统能力,而新工科的计算机类专业教育中,系统能力培养是重要内容。随着云计算和大数据技术的飞速发展,应用程序也变得越来越复杂,应用开发人员必须了解不同系统平台的底层架构,并熟练掌握相应的技术和工具的运用,系统能力中的软硬件协同设计的贯通能力是关键因素。但当前培养的学生还不能满足社会和用人单位的要求,主要体现在缺乏系统观,只注重软件运行结果的正确性,而忽视了硬件的结构和工作方式对软件的效率和稳定性的影响。由于对计算机硬件系统的核心原理掌握不够充分,难以胜任复杂的软硬协同设计的任务,再加上计算机科学与技术专业课程之间缺乏良好的关联性,缺乏系统性和综合性的实践环节,使得学生综合分析、设计和应用能力也较差。

2 硬件实验教学设计整体思路

实验课程以培养学生现代计算机硬件系统设计能力为目标,强调软硬件关联与协同、以CPU 设计为核心的层次化系统设计的组织思路,使学生能从门电路开始逐步设计组合逻辑、时序逻辑、运算器、存储系统、数据通路和控制器直至完整的CPU,能让学生深入理解计算机主要功能部件的构成和工作原理。Logisim是一种用于设计和模拟数字逻辑电路的仿真软件,它无实体器件,仿真直观,调试方便,并通过封装子电路的方式组建复杂的数字电路,可有效突破传统硬件实验对时间、空间的限制,改变实验模式,极大地拓展延长课外实验时间,大大提升实验效率,特别适合线上线下开展。图1给出了硬件实验设计的框架图。在掌握数字逻辑和计算机组成的基本原理基础上,设计了运算器、存储器和CPU三大实验模块,每个模块由多个层次化子模块组成。流水CPU是对系统能力要求较高的硬件综合设计,需要掌握不同CPU设计和流水线的原理才能完成。

图1 硬件实验设计框架图

3 基于Logisim的硬件实验设计

3.1 运算器设计

运算器部分讲解数据的机器表示、运算方法及运算部件组成等问题,使学生掌握计算机的算术运算和逻辑运算的原理,主要包括补码加减法器、32位快速加法器、阵列乘法器、阵列除法器、多功能运算器实验。讲授算术运算目的是让学生理解计算机通过补码表示将减法运算转换成加法运算。

全加器是运算器的最基本的部件,利用数字逻辑课程中真值表、逻辑函数表达式设计全加器电路,能够将先修课程中讲授过的知识点延续。理论课上讲授的“求[-X]补由[X]补连同符号位在内每位取反,末位加1”的规则,对于学生来说是一个抽象难懂的过程。如何通过补码实现减法运算,需要设计专门的电路实现通过[X]补得到[-X]补的功能。在加法器电路上增加控制端M的方式实现并利用Logisim仿真验证,若M=0,做加法运算,M=1,做减法运算,让学生完整地看到了将一个抽象的计算法则通过一个具体的逻辑电路实现其功能的过程,对培养学生的设计能力起到了一定作用。对于阵列乘法器先用手工计算的方式分析每个部分积可以通过与门阵列得到,然后利用全加器进行累加的方式实现乘法运算。如图2所示通过分析进位信号的传递,让学生更直观理解乘法的运算过程。图3所示为加减交替法的阵列除法器,使用可控加减法单元CAS作为基本组件。以定点正小数相除为例,假设X<Y,第一行CAS做减法,每一行最左侧CAS的进位输出决定商的数值,并且控制下一行做加法还是减法。

图2 5位无符号阵列乘法器

图3 加减交替法的阵列除法器

3.2 存储器设计

存储器中地址线、数据线等比较抽象,学生难以真正理解存储器的读写过程。在给学生建立主存储器地址空间和存储空间等基本概念的基础上,应突出存储器芯片地址概念的物理内涵、按地址访问等基本特征,为此设计了汉字字库扩展实验。涉及到的知识点包括地址空间的分配、片选信号的产生以及与CPU的连接等。如图4所示为汉字字库扩展实验,要求用4个小容量芯片(地址线12位,数据线32位)通过字扩展的方式组成一个较大容量芯片(地址线14位,数据线32位)。理论课的难点在于片选信号的作用,很多学生不能理解芯片的工作方式。通过实验电路的设计和地址的分配可以让学生深刻理解字扩展的原理,即这4个小芯片不是同时读写,而是由高位地址控制读写哪个芯片,低位地址读对应存储单元的内容,让学生在数字逻辑中学到的组合电路知识得到了应用。

图4 汉字字库扩展实验

同时设计了MIPS寄存器实验,要求学生构建一个MIPS寄存器组,内部包含32个32位寄存器,具有一个写入端口和两个读出端口。通过数据选择器的地址端选择对应的寄存器编号来访问寄存器的内容,类似于一个具有多个地址端口和多个数据端口的高速存储器。

3.3 CPU设计

在完成运算器、存储器的基础上进行封装,添加控制器、暂存器、符号扩展器、指令寄存器、状态字寄存器等部件组成一个完整的计算机系统,这对学生的综合设计能力提出了较高的要求。控制器是计算机的核心部件,指令周期、指令译码、操作控制、时序控制的原理更加抽象复杂,学生理解起来有较大的难度。实验要求学生以单总线硬布线控制器为例设计5条MIPS核心指令(LW、SW、BEQ、ADDI、SLT)的三级时序控制器,实现内存地址从0x80开始的8个字单元的有符号数的降序排序。分析控制信号的产生要考虑在不同指令操作码译码输出信号、状态周期电位、节拍电位下的有效情况,其本质是一个组合逻辑。指令译码信号的输出是通过分线器分出操作码对应的字段再通过比较器判断得到。表1给出了典型控制信号的产生条件。这些控制信号可以分成四类:输出信号out是互斥的,控制向总线输出数据;输入信号in控制总线的数据送入到功能部件,需要时钟配合;运算器控制信号控制运算器的加减法运算;内存读写控制信号Read、Write。

表1 控制信号产生条件

时序发生器的作用是产生状态周期电位、节拍电位信号,主要包括状态寄存器,状态机组合逻辑,输出函数组合逻辑三部分。其中状态机负责现态与次态的转换,输出函数根据当前状态生成状态周期电位和节拍电位。利用组合逻辑的方法分析得到输出函数的逻辑表达式,从而让学生有效应用在数字逻辑课程学到的方法。

在设计好多功能运算器、硬布线控制器电路的基础上添加RAM、Register 两个组件并通过三态门控制输出就组成了单总线结构CPU。指令寄存器通过分线器分出rs、rt、rd字段。其中0-15位连接符号扩展器分离出立即数或分支地址字段。寄存器的读端口通过多路选择器的控制端RegDst、RegTgt 选择rs、rt、rd。图5给出了单总线结构的定长指令周期MIPS CPU完整电路图。在RAM中加载指令镜像,启动时钟运行冒泡排序程序,在最上面的隧道标签处用发光二极管显示当前处于addi指令的取指周期和T3节拍,总线上用探针组件也可以实时显示传输的数据。

图5 单总线定长指令周期CPU设计实验

微程序控制器由指令译码器、微程序入口查找逻辑和条件判别测试逻辑三个子电路组成。微程序入口地址是指令译码信号的组合逻辑,可以直接利用数字逻辑的方法得到。一旦微程序设计完毕,微程序的入口地址就是固定的。条件判别测试逻辑是根据微指令中的条件判别测试字段的和状态条件的值生成多路选择器的控制端,从而控制微指令的地址。根据微操作控制信号生成的微指令保存到控制存储器中,从而完成微程序控制器的设计。微地址与现代二级时序硬布线控制器的状态机编码等价,因此也很方便实现现代时序硬布线控制器的电路图。通过CPU设计实验,学生能很好地理解控制器的原理和指令的执行过程,对于提高学生的硬件分析设计能力起到了较好的效果。

单周期和多周期硬布线控制器的设计实验是为了比较不同CPU设计方案对成本、效率、价格的影响。为了进一步提高程序执行效率,引入了指令流水线。流水CPU设计实验是对学生能力要求较高的实验,通过该实验,帮助学生从MIPS单周期CPU开始逐步构建无冲突冒险的理想指令流水线,能处理分支相关的指令流水线,采用气泡处理数据相关的气泡式流水线,采用重定向解决数据相关的重定向流水线,并最终在MIPS五段流水线上实现动态分支预测技术。

4 头歌实践教学平台应用

头歌EduCoder是信息技术类实践教学平台,涵盖了计算机、软件工程、大数据、人工智能、物联网等专业课程的超60000个实训案例,建立了学、练、评、测一体化实验教学体系。可以通过如下几步创建专属的计算机组成原理在线实验课堂。

4.1 登录账号

登录www.educoder.net注册账号后,主页面点击教学课堂,填写课堂名称、学时、学分、结束时间等信息创建在线课堂。课堂模块包括通知公告、课堂实验、图文作业、分组作业、在线考试、教学资料、问卷调查、互动讨论、数据统计、视频直播等,可以根据实际教学需要进行选择。

4.2 创建在线实验

(如图6)根据教学的进度选择实验项目将其发送到新建的课堂。将课堂邀请码发送给学生后,学生加入课堂。教师可以将视频、课件、资料等上传并发布到课堂,并可对课堂实验的发布方式、评分规则、实验项目等进行设置。

4.3 综合评估

学生进入课堂后可以看到已发布的实验项目,即可开展在线实验。实验电路完成后,利用记事本打开电路文件,将文件内容复制粘贴到平台中,点击右下角评测即可自动评测。(如图7)在硬布线控制器的测试页面依次显示计数器、当前十六进制指令、equal标志、状态周期点位、节拍点位、控制总线数据、错误位等信息。通过预期输出与实际输出的对比,可以查看发生错误的时钟周期,进而对电路进行检查并改正,方便调试。教师可进入学生工作台查看电路代码,实时监控实验进展。

图7 实验项目自动测试

学生提交实验项目后,平台可自动对其代码进行查重,如有重复抄袭情况,可以将其打回并进行点评。所有学生完成后教师可以查看学生成绩、评测次数和耗时,并一键导出成绩(如图8)。

图8 学生实验成绩查询和导出

所有的实验无需任何硬件实验平台,有效突破传统硬件实验对时间和场地的限制,极大拓展了课外实验时间,大大提升了实验效果。实验项目跟理论教学同步,枯燥的理论知识得以在实践中得到验证,由易到难,可根据学生学习情况设置必做和可选实验。在实验中设置自动测评系统,系统可进行故障记录、自动评分,及时反馈实验结果,为实验提供精准指导。学生通过自主学习和主动实践的递进式学习不断提高系统设计能力,真正做到以学生为中心的教学方式的转变,让学生主动参与到教学活动中。通过门电路级的仿真实验并封装成子模块组合成完整的CPU,学生由浅入深地学习了各功能部件的设计,并将所学知识灵活地在各功能部件中加以扩展应用,分析不同设计方法对成本、效率、速度的影响,有效地加强了系统观的培养,也促进了实验教学模式的改革。

5 结语

通过在计算机组成原理实验课程中应用Logisim,学生在数字逻辑电路中学到的设计思想能够得到充分展现与应用,从门电路级的仿真实验中完成主要功能部件的设计如多功能运算器、存储器和控制器,并把它们组合成一个完整的计算机系统。在头歌平台发布实验,系统进行自动评测,教师可以在线监测学生的完成情况,实验结果后台自动记录并能一键导出实验成绩,对提高学生的硬件系统设计与系统能力的培养起到了较好的效果。在今后的教学中将基于计算机组成实验取得的成功经验,实现RISC-V指令集的现代时序硬布线控制器和微程序控制器,并为不同的时序系统增加中断处理机制。为进一步提高学生的软硬件协同设计能力,在后续课程中逐步融入操作系统和编译原理实验,形成从硬件、系统软件到应用软件的计算机系统综合实验课程。

猜你喜欢
指令控制器实验
听我指令:大催眠术
记一次有趣的实验
做个怪怪长实验
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
NO与NO2相互转化实验的改进
实践十号上的19项实验
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列
倍福 CX8091嵌入式控制器