计算机组成原理实验的探讨论文(2)
计算机组成原理实验的探讨论文篇二
《计算机组成原理实验初探》
摘要:根据国内外计算机硬件类实践课程教育的现状,分析传统计算机组成原理实验课程教学中的弊端,介绍南京大学计算机系对此门实验课的教学安排,从知识准备、具体实验内容设置和教学组织形式等方面,全面介绍计算机组成原理实验课程的内容和教学方式,并对教学效果进行总结。
关键词:计算机组成原理;CPU;FPGA;单周期;多周期
1 课程设计初衷
计算机组成原理是计算机专业重要的核心课程,在计算机专业的整个课程体系中起着承上启下的作用。熟练掌握计算机的结构和工作过程,不仅为计算机硬件的学习和研究打下基础,对从事软件工作的人也大有益处。
近年来,南京大学计算机系对国际一流大学计算机专业的相关课程进行了详尽的跟踪调研,调研结果表明,计算机组成原理实验课程设置一般都有两个不同的角度:一个是偏重软件的程序员角度,另一个是偏重硬件的硬件设计人员角度。偏重软件的实验课程一般是用高级语言和模拟器实现CPU,使学生能够更好地理解计算机底层的系统结构,提高程序编写和调试能力。偏重硬件的课程一般要求学生利用硬件描述语言,在FPGA上设计一个处理器系统。
国内传统的计算机组成原理实验的教学方式是做验证性实验,在固定的实验箱上,通过插拔一些连线,拨动部分开关和编制微程序等方式,和固定的硬件系统进行交互,从而了解计算机的内部结构。这一实验形式无法让学生深入理解计算机各个部件的具体硬件结构,也不能使学生很好地理解计算机底层的结构和系统软件之间的关系,更不能培养学生利用现代化的工具设计计算机硬件系统的能力。鉴于这些传统教学的弊端,国内部分高校在课程设置和教学内容上都开始借鉴国外一流大学计算机专业的做法,一部分高校已经率先利用EDA技术在FPGA上进行计算机单元部件的设计、并以系统搭建的形式来组织计算机组成原理的实验教学。南京大学计算机系从2007年开始了这一教学形式的尝试,经过几年的探索,已经形成了相对稳定的计算机组成原理实验课程的教学模式和教学内容。
2 课程知识准备
利用EDA技术在FPGA上实现一个处理器,需要学生有一定的知识准备。首先,计算机系在数字逻辑电路实验课程中,利用EDA技术在FPGA上进行数字逻辑单元电路的设计和简单数字系统的设计。其次,在计算机组成与系统结构课程中,学生深入学习MIPS体系结构的指令系统,单周期、多周期以及流水线结构CPU的数据通路。计算机组成原理实验课程在这些课程的基础上,从设计CPU内部的单元电路开始,逐步进行MIPS体系结构的完整CPU的设计。
3 课程设置
课程内容的安排主要分为3大部分:部件级实验、简单CPU实验和大型作业。
3.1 部件级实验
在CPU的硬件电路设计中,涉及许多简单的单元电路,如选择器、译码器、触发器等,这些内容在数字逻辑电路实验课程中已经很熟悉了,在本实验课程中,主要是安排CPU内部其他重要的功能独立部件的设计,如存储器、寄存器组、桶形移位器和ALU等。
3.1.1 存储器的设计及测试
存储器是计算机系统的重要组成部分,用于存储指令和数据。指令存储器和数据存储器可以分开设计,也可以只设计一个既存储指令又存储数据的存储器。存储器有读和写两个端口,读存储器时,可以使用时钟进行触发,也可以不使用时钟进行触发。写存储器时,一定需要有时钟进行触发才能将数据写入存储器中,时钟的上升沿和下降沿都可以触发存储器的写操作。
存储器实验的主要内容,是让学生掌握存储器的接口及控制信号的功能和使用,学会各种存储器的设计及测试,特别要掌握存储器的工作时序,这在单周期CPU设计时特别重要。单周期CPU需要在一个时钟周期内完成一整条指令的执行,而在这一个时钟周期内,CPU有可能会两次访问存储器——读指令和存储数据,如果存储器设计不合理,在一个时钟周期内是无法完成一条指令的。对于多周期和流水线CPU,一条指令需要多个时钟周期才能完成,对存储器时序的要求相对小一些,这时可以灵活应用方便读写的存储器结构。
3.1.2 寄存器组的设计
寄存器是CPU内部暂存数据的空间,速度最快,使用也最为频繁。MIPS体系结构的CPU内部寄存器,是一组由32个32位的寄存器组成的通用寄存器组。仅从寄存器组的外部特性来看,MIPS结构的寄存器组由无差别的32个32位寄存器组成,任何条件下均可访问寄存器组中的任意寄存器。但是,为了简化CPU的结构,MIPS体系结构寄存器组的0号寄存器的值被设置为恒“0”,只能读出,不能写入。
MIPS指令集中一条指令(R型)最多同时对三个寄存器进行操作:两个源寄存器和一个目的寄存器。R型指令执行过程中,需要读出两个源地址寄存器中的内容,经过运算后再写入目的地址指定的寄存器,由此可以得出MIPS体系结构的寄存器组至少需要两个输出端口和一个输入端口。32位宽的寄存器是由4个字节组成的,寄存器组可以仅对某个寄存器的某个字节进行写操作,因此寄存器组还需要一个4位的写使能控制端,分别用于控制4个字节的写操作。
3.1.3 桶形移位器
在MIPS的指令集中,有一些移位指令,要求对某寄存器中的数据一次性移动数位。如果用移位寄存器来完成这一移位操作,就需要多个移位周期才能完成一条移位指令,工作效率太低,显然不能满足快速CPU的要求。
桶形移位器是一个组合逻辑电路,移位位数可以在0~31位之间自由设置,移位方式有逻辑左移、逻辑右移、算术右移和循环右移4种。因此,桶形移位器的输入端有32位的待移位数据输入端、5位移位位数输入端和2位移位方式控制端;桶形移位器输出一个已经经过移位的32位数据。
3.1.4 ALU设计
ALU是CPU中负责运算的电路,通常ALU只实现算术运算和逻辑运算,但是,MIPS指令系统要求一些特殊指令也在ALU中完成,如LUI(置高位立即数)、SEB(字节扩展)、SEH(半字扩展)、SLT(比较置数)、CLZ(计算前导0)和CLO(计算前导1)等。经过对MIPS指令系统进行详细的分析,MIPS体系结构的ALU要执行15种不同的运算,ALU具体的操作及编码如表1所示。此外,为了简化后续电路和扩展CPU功能,在ALU电路设计时,其输出端也产生和保留了一些通常ALU没有保留的信号,如溢出信号、进位信号和是否小于信号等。
3.2 简单CPU设计实验
3.2.1 单周期CPU设计实验
所谓单周期CPU,是指所有的指令都在一个时钟周期内完成的CPU结构,单周期CPU的指令执行过程和硬件结构都相对简单。理解单周期CPU的工作和设计原理,对于理解多周期CPU和流水线CPU都有很大帮助,因此,学习设计CPU从单周期CPU人手是非常合适的。
该实验要求完成一个单周期CPU的设计,此CPU能完成表2中的指令,这些指令包含R型指令、I型指令和J型指令,为了使单周期CPU的结构相对简单,实验中没有加上移位指令和存储指令。
处理器的设计涉及数据通路的实现与控制逻辑的设计,能够执行以上16条指令的单周期CPU的数据通路如图1所示。
3.2.2 多周期CPU设计实验
单周期CPU的指令周期长度,必须满足执行时间最长的指令周期长度。实际上,大部分的指令执行周期都很短,这就导致了单周期CPU的效率低下。多周期CPU是将每条指令分成几个时间相同的执行阶段,每个阶段执行特定的操作,执行时间长的指令就执行多个周期,执行时间短的指令就使用相对少的几个周期,这样就提高了指令执行的效率。
多周期CPU除了要完成上述所有单周期CPU需要执行的指令外,还增加了表3中的4条指令,这些指令包括逻辑移位指令和存储器访问指令。
观察多周期CPU可执行的指令,它比单周期CPU可执行的指令多了逻辑移位指令和存储访问指令,因此,多周期CPU在结构上比单周期CPU多了桶形移位器和数据存储器。另外,多周期CPU执行一条指令时需要多个时钟周期,只有在指令的运算周期,才会用到ALU,在其他周期ALU是空闲的。为了简化硬件结构,在ALU空闲期间可以用它来计算下一条指令的地址,这样用于计算下条指令地址的加法器就省略了。和单周期CPU相比,多周期CPU的控制信号也相应的有所增加,多周期CPU的结构图如图2所示。
3.3 大型作业
进行了单周期CPU和多周期CPU的设计训练之后,同学们具备了一定的CPU设计基础,有了设计相对复杂的CPU的知识储备。在学期的后半段,我们会布置大型课程设计作业,作业内容包括MIPS体系结构5级流水线CPU的设计,或是ARM体系结构CPU的设计,我们也鼓励同学们自己设计指令系统,并能够设计出可以执行这些指令的CPU。
大型作业要求同学们分组完成,每组2~4名同学分工合作,这样既减轻了他们的工作量,又锻炼了他们协同合作的能力。
4 教学效果
自2008年秋季学期开始,我系在计算机组成原理实验课程中采用了用EDA技术在FPGA上进行CPU设计的教学方式。通过对CPU设计的学习,同学们加强了对于计算机硬件结构的理解,增强了数字系统设计的能力。在有些设计阶段,同学们的设计超出了教学讲解的范围,他们通过讨论、查询网络和查阅图书资料等方式解决问题,增加了他们的自学能力和搜集利用资料的能力。部分同学因此对CPU的设计产生了浓厚的兴趣,有些同学设计了包含MIPS所有整数指令的五级流水CPU,还有的同学设计了ARM 11结构的处理器,并在此基础上增加总线及总线接口、PS/2接口、VGA接口等部分,接上键盘和显示器,就构成了一台完整的计算机硬件裸机,然后又用已经实现的指令编写了游戏软件,实现了在自己设计的机器上玩自己设计的游戏的梦想。也有同学将设计的系统作为作品参加了相关的设计大赛,获得了很好的名次。
5 结语
经过5年的教学实践,计算机系证明了在计算机组成原理实验课程中,指导学生利用EDA技术在FPGA上实现—个CPU在教学安排上是可行的,相关实践取得了很好的教学效果,为学生的研究和学习增加了—个可选的方向,对我国硬件人才的培养也非常有益。
参考文献:
[1]袁春风,张泽生,蔡晓燕.计算机组成原理课程实践教学探[J].计算机教育,2011(17):110-114.
[2]王帅.美国一流大学计算机组成与系统结构实验课程研究[J].计算机教育,2011(17):115-118.
[3]李山山,全成斌.计算机组成原理课程实验教学的调查与研究[J].计算机教育,2010(22):127-129.
[4]袁春风.计算机组成与系统结构[M].北京:清华大学出版社,2010:229-264.
[5]李亚民.计算机原理与设计:Veirilog HDL版[M].北京:清华大学出版社,2011:127-202.
计算机组成原理实验的探讨论文相关文章: