基于开源EDA软件的CPU设计实验

2018-08-22 10:27彭蔓蔓李建江
计算机教育 2018年8期
关键词:计算机系统开源软件

吴 强,彭蔓蔓,李建江

(1.湖南大学 信息科学与工程学院,湖南 长沙 410082;2. 北京科技大学 计算机与通信工程学院,北京 100083)

0 引 言

随着“做中学”理念在计算机教学中的深入[1],硬件设计实验已成为计算机硬件基础课程,如数字逻辑、计算机组成原理、计算机系统结构等课程的重要组成部分[2-4]。CPU设计实验在计算机系统结构教学中有着重要的作用,是学生深入了解计算机体系结构核心知识的重要手段。通常,这些实验采用商业EDA(电子设计自动化)软件作为设计工具,例如Altera公司(现已被Intel公司收购)的Quartus或者Xilinx公司的ISE等[5-6]。

采用商业EDA软件作为硬件设计工具常常出现的一个问题是:商业EDA软件功能比较庞杂,对学生来说,学习和掌握商业EDA软件需要花费较多的时间。在实际教学中,往往发现由于学生对商业EDA软件不熟悉,导致在硬件设计实验初期常常受挫于一些简单问题而产生畏难情绪,打击了其对硬件设计的兴趣,不利于实现实验教学目标。

开源软件由于其开放的特点,近年来在计算机实践教学中得到了青睐和广泛应用[7]。计算机组成原理、计算机系统结构等课程也广泛使用了开源软件模拟器辅助课程知识的讲解,甚至安排了相关的实验[4-8]。不过,在硬件设计实验中采用开源软件替代商业EDA软件还比较少见,一方面与开源EDA软件比较少有关,另一方面是因为FPGA实验平台限制了设计软件的选择。

计算机系统结构课程中CPU设计实验目标主要是功能性验证,并不强调一定要用硬件实现,因此不是必须采用支持完整硬件实现,尤其是FPGA实现流程的商业EDA软件。根据这一特点,笔者提出采用开源EDA软件的计算机系统结构课程CPU设计实验方案。

1 实验方案

1.1 课程简介

计算机系统结构课程是面向非计算机科学与技术专业学生的选修课,被安排在大三上学期,开设给智能科学与技术、物联网工程、信息安全等学科及专业的学生。这些专业的学生都已先修了计算机组成原理或类似课程,对计算机系统硬件设计有一定了解。但是,因为专业培养目标更偏向于计算机应用,因此在硬件设计上的实践训练要求不像计算机科学与技术专业那样深入,主要目标是让学生了解现代计算机系统体系结构方面的技术和特征,从而更好地利用计算机系统实现所需功能。

在课程实践训练安排上,本课程的实验也不像面向计算机科学与技术专业那样安排单独的实验课程,而是跟随课堂教学过程,由教师自主安排课程实验。这意味着本课程的实验不会有FPGA实验板等硬件资源支持。实际上,以往本课程的实验通常利用各种软件模拟器向学生演示计算机体系结构中硬件的设计方法和特性。

基于软件模拟器的演示性实验虽然在帮助学生了解计算机体系结构知识方面比较直观,但是通过硬件设计掌握相关知识能产生更加深刻的理解和记忆。因此,在本课程中,笔者安排了以CPU设计为核心的实验项目,希望贯彻“做中学”的教学理念,加深学生对相关知识的了解。由于课程实验并不安排在FPGA实验板上完成,因此笔者选择了开源EDA软件作为设计工具,以便降低软硬件方面的学习开销,提高学习效率。

1.2 实验安排

按照学校的要求,计算机系统结构课程采用“课堂讲授+课程实验”的方式组织教学。课程共64学时,其中课堂教学48学时,课程实验16学时,在16周内完成。

课程实验的16个学时共安排了32节课,每次4节课,共计8次实验课。通常这8次实验课会根据实验室资源利用情况安排在学期中第3周到第10周完成。如果实验室资源紧张,可能会有所推迟,但最晚不超过第15周。

笔者给这8次实验课安排了3个实验项目,要求完成后演示并提交实验报告。具体的实验项目安排见表1。

这3个实验项目以流水线CPU设计为核心,最终完成一个支持数据转送(Data forwarding)和单个分支延迟的5级流水线CPU。需要说明的是,其中指令和数据存储器设计是简化的,假定它们能与CPU同频率运作。

2 设计工具

2.1 开源EDA软件

笔者根据所承担计算机系统结构课程实验的需要,选择VHDL作为硬件设计描述语言,因此选择了GHDL[9]开源软件作为VHDL设计描述的模拟工具。为了查看电路输出波形,笔者选择了GTKWave[10]开源软件作为波形查看工具。表2给出了开源EDA软件与商业软件Quartus Prime Lite[5]的简单比较。

由表2可知,GHDL和GTKWave软件功能简单明确,文件大小适合快速下载安装,而Quartus软件因为功能庞杂,文件很大,下载和安装比较耗时。除此之外,在实际使用中,GHDL软件模拟速度比较快,而Quartus软件模拟速度相对较慢。这主要是因为GHDL对VHDL代码采取转换为C++程序后编译运行的方式,因此模拟速度相对于采用解释方式的Quartus软件要快。

表1 实验项目

表2 设计工具比较

2.2 设计流程

采用开源EDA软件的设计流程与使用商业软件设计流程基本一致,都包括硬件设计描述输入、硬件设计描述编译(综合)、硬件设计模拟、模拟结果查看和验证。在本计算机系统结构课程CPU设计实验中,具体设计流程如下:

(1)采用gedit编写VHDL代码,包括测试例程(testbench);

(2)使用GHDL编译VHDL代码,产生可执行文件;

(3)运行第(2)步产生的可执行文件,得到模拟结果;

(4)利用GTKWave查看模拟结果的波形,检查和验证结果是否正确。

上述设计流程要求学生在Linux操作系统下进行。这样做的好处是可以直接使用Linux系统附带的各种开源软件,例如C++编译器;同时,可利用Linux下的MAKE工具,为上述设计流程编写脚本,从而省去每个步骤都需要在命令行输入相应命令的重复操作。

2.3 可视化界面

考虑到目前大多数学生习惯了可视化界面操作,对命令行操作方式不熟悉,为减少学生因命令行操作方式而耽误的时间,我们闭合编写了一个简单的程序,把设计流程中需要用到的命令封装在可视化界面下,以便学生能迅速使用gedit、GHDL、GTKWave等开源软件完成CPU设计实验。

该程序列出了文件目录树以及当前目录下所有文件和子目录,学生可以通过菜单选择文件进行编辑、编译或运行以及查看波形文件。程序界面见图1。

图中菜单选项实际都是执行相应的命令行命令。由于GHDL先将VHDL代码转换成C++程序,然后进行编译和运行,因此菜单中的“分析文件(Analyze File)”是对VHDL代码进行转换,“编译测试例程(Build Testbench)”是对转换后的C++程序进行编译,“运行测试例程(Run Testbench)”则是运行编译后的可执行程序,产生模拟结果的波形文件,然后就可以使用菜单选项“查看波形(View Waveform)”进行检查了。

图1 可视化界面

3 教学经验

3.1 总体情况

笔者在2016—2017年的计算机系统结构课程中采用了上述基于开源EDA软件的CPU设计实验方案,学生表示他们可以接受这一实验方案。课程实验的讨论和交流中,学生反映开源EDA软件的编译和模拟速度很快,能让他们“立刻测试(对设计做的)修改”,提高了设计效率。

3.2 学习开销

如笔者预料的一样,学生在开始学习命令行操作时提出了很多问题,主要是对命令行操作方式不熟悉导致。笔者专门抽出1节课的时间向学生解释了命令行操作的知识,大部分学生可以参考笔者给出的命令说明开始实验。相对于以往使用商业EDA软件的情况,虽然讲解课时都是1节课,但明显使用开源EDA软件时学生的掌握程度较好。这是因为开源EDA软件功能简单明确,按照命令说明操作即可得到预期的结果。然而,商业EDA软件功能庞杂,学生在实际操作中总是受挫于一些选项设置、流程步骤,甚至是菜单选项位置等方面的问题而停顿不前。总的来看,采用开源EDA软件的学习开销较使用商业EDA软件要少。

3.3 设计效率

学生在使用开源EDA软件进行设计时,最常见的一个积极评价就是模拟速度比使用商业EDA软件快。笔者在实验指导时也可以看到,学生采用MAKE脚本编译和运行测试例程的时间基本是秒级的,而不是商业EDA软件那种分钟级别的等待。这使学生能在修改设计后,迅速完成测试,检查修改效果,从而不断推进设计过程,最后得到正确结果。因此,在笔者看来,本计算机系统结构课程采用开源EDA软件,设计效率是更高的。

3.4 探 讨

在计算机系统结构课程的CPU设计实验中采用开源EDA软件,对降低学习开销、提高设计效率有积极作用。不过笔者也认识到,这主要是因为本课程的CPU设计实验基本是功能性设计和验证,省去了硬件实现环节带来的好处。因此,不能就此认为开源EDA软件可以完全替代商业EDA软件,而应该根据实际情况选择符合要求的EDA软件。

学生对命令行式操作的学习速度之快是笔者在实验指导中比较意外的发现。由于以往学生总是接触可视化操作软件,笔者一度以为学生学习命令行操作会比较费时,因此还编写了简单的可视化界面程序。但在实验中,学生只在初期使用了几次可视化界面程序,一旦学会命令行操作,尤其使用MAKE脚本后,更倾向于使用自动化程度高的MAKE脚本,而不再使用可视化界面程序。这可能意味着在未来教学中可以尝试更多命令行操作方式的开源软件。

4 结 语

由于计算机系统结构课程CPU设计实验不必进行FPGA实现,笔者尝试采用开源EDA软件作为硬件设计工具,而不是FPGA厂商的商业化EDA软件,并规划了相应的实验方案和硬件设计流程。实验教学效果表明这一实验方案有利于降低学生的学习开销、提高设计效率,鼓励了笔者在未来教学中尝试更多的开源软件。

猜你喜欢
计算机系统开源软件
禅宗软件
关于不法分子冒充《小型微型计算机系统》名义诈骗的严正声明
五毛钱能买多少头牛
2019开源杰出贡献奖
IBM推出可与人类“辩论”的计算机系统
软件对对碰
关于不法分子冒充《小型微型计算机系统》名义诈骗的严正声明
计算机系统集成实施与项目管理途径分析
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0