APP下载

基于RISC-V指令集的计算机组成原理课程实践

2020-11-14何立新江立辉

合肥学院学报(综合版) 2020年5期
关键词:指令集章节开源

程 知,何立新,张 新,江立辉

(合肥学院 人工智能与大数据学院,合肥 230061)

0 引 言

“计算机组成原理”是一门计算机专业的基础核心课,该课程通过对计算机各个部件的介绍,帮助学生建立系统级的计算机设计思想,让学生获知计算机硬件的工作原理。对于芯片开发或者系统级部件开发而言,这部分知识可以为学生提供工程实践的基本理论支持,同时,该门课程也是整个计算机体系结构的基础,掌握好这门课程对于学生从事计算机软硬件方面的工作非常重要。

由于这门课难度较大,理论性较强,且涉及大量硬件知识,学生迫切地感觉到抽象、难以理解、知识点庞杂而零碎。为了更好理解理论知识,进行实践环节的训练非常重要。目前,国内的实践方式主要有:(1)硬件实验箱。[1]这种方式尽管可以提高学生的动手能力,然而由于实验箱采用全封装方式,不容易与所学原理进行深层次对应。(2)verilog+MIPS指令集。[2]这种方式能够较好地与实验原理结合,但是MIPS指令集在最近几年逐渐淡出产业圈,没法让学生所学知识与时俱进。(3)logisim仿真+MIPS指令集。[3]logisim是一种用于设计和模拟数字逻辑电路的教育工具,这种方式依赖于学生对数字逻辑电路基本知识的理解。另外,目前这种实践方式也大多采用MIPS指令集。(4)Proteus仿真。[4]这类方法的优点为能够做细粒度实验,但是对学生的硬件设计提出了更高要求。

如何在讲授基本原理时,让本门课程能够有较好的实践项目,是本文思考的初衷。对于新手而言,较好的学习方法是从一个例子开始,贯穿全书,循序渐进,将抽象的理论知识具体化,因此,若从一种具体的指令集出发,便容易做到有章可循、有路可依。选择一种特定指令集,让学生能够在该指令集的基础上,构建计算机系统中处理器的原型系统,对于学生理解理论知识以及培养其工程实践能力,具有及其重要的作用。华中科技大学编写的“计算机组成原理与接口技术实验教程——基于MIPS架构”[5]便是遵循这样的思路。

由于第五代精简指令集RISC-V的先进性、开源性、可扩展性与易用性,近些年在学术界和工业界发展迅速,尤其是在工业界,受到诸多芯片公司的青睐,纷纷采用该指令集架构自研各种芯片,包括传统通用芯片和人工智能芯片。尽管该指令集的发展在企业界表现得欣欣向荣,但是,目前高内高校将该指令集架构及相应的处理器引入课堂还较少,为了让学生所学理论知识与工业界的相关技术有效融合,拟在“计算机组成原理”课程中系统地引入RISC-V指令集及其RISC-V E31处理器内核。

1 不同指令集比较

目前,市场上存在的指令集主要有商业指令集和开源指令集。对于商业指令集,如Intel的X86指令集[6],ARM[7]系列指令集,尽管很优秀,但因为涉及商业授权,其内部设计细节往往不对外公开。作为学习者,很难从中学到其设计精髓。因此,一种较好的学习方式便是从开源指令集入手。

目前的开源指令集主要有OpenPower[8]、OpenRISC[9]、MIPS[10]和RISC-V[11]。OpenPower是IBM公司的Power系列CPU架构,OpenPower联盟成立于2013年8月,由IBM联合Google、NVIDIA、Mellanox等公司成立的,其最初目的致力于将对外开放授权,以抗衡日益强大的Intel X86以及ARM等CPU体系的威胁,但是开放授权也需要昂贵的授权费用。直到2019年8月20日,IBM才正式宣布开源旗下高性能CPU——Power处理器的指令集架构(ISA)作为开放标准,尽管基于Power指令集的处理器具有效率高、性能强劲等特点,但Power CPU相比常规处理器要复杂太多,并且OpenPower芯片的底层物理架构还没有开源,其生态链也不完善。

OpenRISC是OpenRisc:OpenCores组织提供的一个开源指令集项目,该项目采用免费开放的32/64bit RISC/DSP架构,Verilog HDL(硬件描述语言)实现了基于该RISC/DSP架构的RTL(寄存器传输级)描述,具有完整的工具链。但是相比于RISC-V,该开源项目有两个不足:(1)该项目是基于GPL协议的开放源代码RISC,GPL协议强制企业共享任何的创新,难以保护企业的利益。(2)缺乏仿真验证和流片验证阶段,增加了中小企业的应用风险。

MIPS是一种精简指令集,产生于1985年,在20世纪90年代曾是世界上被使用最多的处理器。但是由于多方面的原因,被辗转收购了多次,2018年12月18日,MIPS宣布开源,不再产生架构授权费和版权费。包括32位及64位的MIPS R6指令集、MIPS SIMD扩展、MIPS DSP扩展、MIPS Multi-Threading (MT)、MIPS MCU、microMIPS Architecture架构、MIPS Virtualization (VZ)虚拟化等。但是相比于2014年彻底开源的第五代精简指令集RISC-V而言,其处理器生态并不完善。

不同于上述指令集,RISC-V指令集具有较大的优越性,相比于商业指令集,该指令集完全开源开放,相比于一般的开源指令集,它兼具低能耗、模块化、高灵活性和可扩展性等多种优势。因此,该指令集自2014年问世以来,短短几年时间,不仅催生了一批性能优越的处理器和颇具影响力的芯片创业公司,也吸引了诸如谷歌、英伟达、三星、阿里巴巴等巨头公司的大量投资开发。

2 RISC-V指令集发展现状分析

2.1 RISC-V指令集由来

第五代精简指令集RISC-V(读作“RISC-FIVE”)是基于精简指令集(RISC)原理建立的开放指令集架构(ISA)。该指令集是2010年美国加州大学伯克利分校的研究团队最初提出的,当时市场上存在Arm、MIPS、SPARC和x86等多种指令集。但这些指令集不仅复杂,还有很多知识产权、高昂授权费等问题。针对这些问题,他们提出一种新型的指令集架构RISC-V指令集[11],其目标是能满足从微控制器到超级计算机等各种尺寸的处理器,并且完全开源且免费。历时四年的研发,RISC-V指令集标准手册于2014年正式发布,其原型芯片也流片成功。与同类的ARM核架构设计的处理器相比,RISC-V架构[12]的处理器性能更高,面积也更小,功耗还不到ARM架构处理器的50%。

2.2 RISC-V指令集在人工智能与物联网时代的地位

RISC-V指令集自2014年发布至今,已经具有超过225个基金会会员组织,包括谷歌、高通、IBM、英伟达、三星、阿里巴巴、华为、中兴、华米科技、西部数据、Microsemi、中科院计算所、麻省理工学院、华盛顿大学、英国宇航系统公司等知名企业与研究机构。随着物联网、移动计算、人工智能、大数据和云的快速发展,迫切需要底层芯片在算力上的驱动,由于RISC-V指令集以模块化的方式组织在一起,可以通过一套统一的架构满足各种不同的应用场景,并且由于开源不受专利限制、能够任意移植调用软核等优势,成为人工智能与物联网时代(ALoT时代)[13]的新宠。

2.3 RISC-V指令集在产业界的发展

因该指令集具有完全开放、精简、高效、低能耗、模块化、高灵活性和可扩展性等方面的巨大优势,2017年,印度政府表示将大力资助基于RISC-V的处理器项目,使RISC-V成为了印度的事实国家指令集。以色列国家创新局(Israel Innovation Authority)选择RISC-V来研制服务于全国企业的处理平台,创建了RISC-VGenPro 孵化器。英伟达、西部数据、麻省理工学院等多家知名公司与研究机构,发布了RISC-V相关处理器。

2018年6月,上海市经济信息委发布了《上海市经济信息化委关于开展2018年度第二批上海市软件和集成电路产业发展专项资金(集成电路和电子信息制造领域)项目申报工作的通知》,其中有一项内容便是将从事RISC-V相关设计和开发的公司作为扶持对象。上海成为国内第一个将RISC-V列入政府扶持对象的城市。

2018年,晶心科技基于RISC-V系列的Soc芯片累积供货已超过35亿颗。阿里巴巴旗下的中天微系统有限公司推出了基于RISC-V的第三代C-SKY指令架构以及第一个32位低功耗CK902处理器。华米科技发布了全球首款基于RISC-V架构的可穿戴AI芯片——“黄山1号”,并且集成了AON(Always On)模块控制器和神经网络加速模块。2019年,核芯互联科技(青岛)有限公司正式发布中国第一款基于开源指令集架构RISC-V的家电通用芯片——璇玑CLE系列MCU。阿里巴巴旗下半导体公司平头哥正式发布玄铁910(XuanTie910),采用3发射8执行的复杂乱序执行架构,是业界首个实现每周期2条内存访问的RISC-V处理器,能够应用于5G、人工智能以及自动驾驶等领域。

从上述的产业现状可以看出,RISC-V已成为人工智能、物联网领域最为流行的指令集之一[14],移动5G的铺开引领了IoT物联网大潮,而RISC-V可以为此领域提供了一个高能效低成本的解决方案,可以期待将来它的生态甚至很可能足以挑战x86和ARM的地位。

2.4 RISC-V指令集在高校课程中的现状

高校作为孵化人才的重要基地,将学术界、产业界最先进、最优秀、最实用的专业技术传授给学生,让课程与时俱进是新时代育人的重要内涵与责任。在美国,已经有不少知名高校开始把原本使用的MIPS指令集启蒙教材转换成RISC-V指令集教材。[15]然而,在国内,与RISC-V在产业界的蓬勃发展不同,将RISC-V指令集及相关开源处理器引入课堂教学的并不多,尽管张军[16]探讨了RISC-V 开源项目对培养学生系统思维的重要性,但是没有提及融入的具体路径。

3 RISC-V指令集在课程实践中的实施环节

3.1 指令系统章节引入RISC-V指令集本身

RISC-V具有固定不变的基础整数指令集——RV32I,以及RISC-V的标准扩展指令集——RV32G。RV32G指令集中涉及的运算包括乘法和除法(RV32M)、浮点操作(RV32F和RV32D)、原子操作(RV32A)。其中RV32I包含六种基本指令格式,分别是:用于寄存器-寄存器操作的R类型指令,用于短立即数和访存load 操作的I 型指令,用于访存store 操作的S型指令,用于条件跳转操作的B类型指令,用于长立即数的U型指令和用于无条件跳转的J型指令。

3.2中央处理器和存储器章节引入RISC-V E31处理器内核

SiFive Freedom E310开发板[17]是基于RISC_V指令集的开源开发板,由SiFive公司提供,具有完整的FPGA套件和软硬件开发环境,非常有利于学生的动手实践。拟采用该开发板中的RISC-V E31 处理器核对中央处理器CPU进行课程教学与实践。图1为SiFive Freedom E310开发板中的E31处理器内核组成与相关章节内容的对应关系。从图1可知,E31处理器内核主要由高速缓存、控制系统、运算器、中断系统、调试系统等五大部件构成。下面分别加以介绍:

图1 RISC-V E31处理器核的组成与相关章节内容对应关系

(1)高速缓存。E31处理器内核的高速缓存模块将缓存分为指令缓存单元和数据缓存单元。其中指令缓存部分采用的是16KB-2路L1 I-cache指令缓存。这部分内容可以融入到存储器章节。

(2)控制系统。该模块由指令取指单元和指令流水线单元组成。指令取指单元采用标准的压缩扩展、16位指令字长。指令流水线单元采用单发射、顺序五级流水线。这部分内容可以完全融入到CPU中控制系统的教学。

(3)运算器。该模块主要包含RV32IMAC指令操作,其中字母I、M、A、C分别为指令集中的整数、乘法、原子以及压缩等操作,乘法器/除法器、加载/存储等。

(4)中断系统。这部分中断包含平台级和核级中断控制两个子系统,能够辅助中央处理器的中断系统教学。

(5)调试系统。中央处理器内置的调试模块,主要负责对中央处理器各个模块的调试。

通过分析,E31 RISC-V处理器核的上述模块分别对应了“计算机组成原理”这门课程中存储器章节中的高速缓存、中央处理器CPU章节的指令系统、运算方法、控制系统、中断系统等,这些章节约占整个课程的50%内容。

如果将RISC-V E31处理器核中各个部分的具体实现方法作为相关章节内容的实例,从宏观上来看,该案例能够将不同章节的知识融入到一个完整的硬件系统中,便于学生建立知识的整体观。从微观上来看,每一部分的理论知识都有相应的真实工程背景,学生既能够从原理上理解,又能够动手实践。

4 总 结

由于RISC-V近年来在产业界获得飞速发展,为了培养学生高水平的应用能力,能够在毕业之后较快地融入产业界芯片设计领域的开发工作,同时为了让学生更好地掌握中央处理器的设计原理与内涵,本文提出基于RISC-V E31处理器核的“计算机组成原理”课程实践探索方案,通过将该处理器核加入到课程实践中,提高学生在集成电路领域的工程动手能力,深化学生对中央处理器原理的理解与掌握。

猜你喜欢

指令集章节开源
基于Kubernetes的RISC-V异构集群云任务调度系统①
3DNow指令集被Linux淘汰
五毛钱能买多少头牛
2019开源杰出贡献奖
高中数学章节易错点提前干预的策略研究
基于Dais—CMX模型机的斐波那契数列指令集设计
利用“骨架突破法”,提高复习效率
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
八仙过海,各显神通