处理器领域的“Linux”? 一起走进开源免费架构RISC-V

  • 来源:微型计算机
  • 关键字:处理器,RISC-V
  • 发布时间:2018-07-20 15:51

  经过多年的发展,处理器市场已经基本形成了以x86和ARM两大指令集为主,Power、MIPS、SPARC等特殊指令集为辅的市场格局。不过,由于x86的封闭、ARM的昂贵,以及其他指令集存在的知识产权或封闭性等问题,使得业内始终缺乏一个真正开放、免费的指令集体系。在这种情况下,一种名为RISC-V的指令集逐渐兴起。从2015年到现在,RISC-V已经引起了各大厂商和产业界的高度关注,各种基于RISC-V的资料、书籍、研发报告甚至相关产品已经摆在了人们面前。那么,究竟什么是RISC-V?它的优势在哪里?它相比目前其它采用RISC架构的指令集又有哪些差异呢?今天本文就带你一起了解RISC-V。

  心有余力不足的ARM

  指令集体系结构也就是ISA(Instruction-Set Architecture)是指定义处理器支持的指令和指令的字节级编码的一套代码组合,简单来说就是人们规定了处理器工作时需要的一些最基本的操作过程和操作方法,处理器就是建立在这些最基本的操作过程和操作方法基础上的一种设备。举例来说,小学数学的四则运算,最基本的四个操作就是“加减乘除”,因此可以说“加减乘除”就是最基本的指令集,在其上构建了整个四则运算系统。

  目前我们常见的桌面级CP U基本上采用的是x86 ISA,隶属于复杂指令集(CISC);而应用在移动设备上的芯片,其C PU部分则采用的是ARM ISA,属于精简指令集(RISC)。在CISC方面,主要是英特尔和AMD在不断地发力,且由于CISC的复杂性和知识产权等问题,除了上述两家厂商外,其他厂商基本上不再使用CISC指令集开发。于是,业内在指令集体系结构上的发力点主要集中于RISC,包括Power、ARM、SUN、MIPS等RISC指令集在不同的领域发挥着不同的作用,形成了我们今天处理器多样化和多种类的局面。

  看起来,整个产业界的指令集体系结构部分是非常完善的,从民用到商用,从移动计算到高性能计算,覆盖了所有的方面。但是,在这样看似齐全的产品覆盖之下,却酝酿着全新的机会。

  为什么人们需要一款新的ISA?

  我们先将时钟拨回2010年。这一年,加州大学伯克利分校的教授Krste Asanovic想为自己的教学研究项目选择一个指令集体系结构,发现找来找去竟然没有合适的可用的选择。纵观业内几大产品,x86的封闭性可想而知,ARM、MIPS等授权费用较高,完全开放的OpenRISC限制颇多,需要对任何的指令集改动进行开源,且对64位架构支持不成熟。

  在这种情况下,一般人的解决方法是找点什么企业赞助或者用项目经费买个教育版本授权。但是Krste Asanovic教授的解决方法却让人肃然起敬:那就是重新定义一个全新的ISA。从2010年夏天开始,经历了4年的研发,期间还得到RISC的发明者之一Dave Patterson教授的大力支持以后,Krste Asanovic教授和其团队终于成功开发了一整套完整的新的ISA,甚至包括这个ISA未来发展和使用相关的编译器、工具链、仿真器等,还经历了数次流片验证。在这个过程中,为了能够快速评估研发效果并及时修改设计,Krste Asanovic的团队还开发了一种全新的语言被称为Chisel,可以用它来设计硬件,并生成传统的Verilog HDL用于ASIC或者FPGA,或者生成C++用于仿真。拥有了这些技术后,Krste Asanovic团队为这种全新的指令集命名为RISC-V。

  RISC-V的读法是“risc-five”,“V”是罗马字母,意思是“5”。之所以这么命名,是因为这是加州大学伯克利分校推出的第五代RISC ISA。此外,“V”还包含了“变种(Variations)”和“矢量(Vectors)”的意思,以支持各种体系结构研究,包括各种数据并行加速器,这都是RISC-V的目标。

  实际上,除了教学的目的外,伯克利分校在RSIC-V指令集手册中,还详细说明了为什么自己要开发一个全新的ISA,并给出了7条详细的解释。目前来看,这7个解释中所遇到的问题,并不是只有伯克利分校在教学中才能遇到,这些问题广泛存在于业内所有需要指令集的厂商和用户之中,只是大部分人群没有能力去设想有这样一种全新的指令集、并有足够能力去开发一种符合自己要求的产品罢了。伯克利分校给出的7个解释如下:

  1.商业ISA是私有的,除了SPARCV8外,其他的商业ISA都是私有的,并且由于其私有性,因此对一些希望分享真实硬件实现的科研小组来说,存在一些麻烦,并且不允许创建全新的实现方式。

  2.目前的商业ISA并不能覆盖所有领域。比如x86在桌面和服务器领域比较流行,移动端就几乎没有建树,对ARM来说则完全相反。另外还有ARC和Tensilica,虽然支持可扩展的内核,但只在嵌入式市场走红。实际上这些ISA都只在某个领域内部发展,在新的领域必须重新构建整套软硬件生态。

  3.商业ISA的可靠性不够。一些当红的商业ISA在公司遇到问题或者不再支持后,就无人开发相关软硬件体系了,且依旧存在知识产权等问题,比如历史上出现过的SPARC、MIPS以及Alpha都是例证。

  4.流行的商业ISA过于复杂。这种复杂性来自于糟糕的设计,或者是过时的ISA设计,效率上还存在提高的空间。

  5.仅有商业ISA也不能运行程序。目前商业ISA整个生态系统导致很多应用程序需要完整的应用程序二进制接口才能运行,并不是光有ISA就可以了,甚至还需要大量的库文件和库文件之上的操作系统支持。而这些所有的支持都极为复杂,且没有很好的规范。

  6.流行的ISA都不是为可扩展设计的。占统治地位的商业ISA并不是为可扩展方案设计,因此随着后续指令及不断的增加,商业ISA的复杂程度逐渐提高,指令编码复杂程度大幅度增加。

  7.修改过的商业ISA实际上是全新的商业ISA。修改过的商业ISA需要修改编译器,应用程序需要从源代码开始重新编译以引入扩展,并且引入新的体系机构甚至需要对操作系统进行修改,这使得修改过的商业ISA牵一发而动全身,变成一个全新ISA,但考虑兼容性等问题,这些商业ISA不得不全盘兼容遗留下来的包袱。

  在指出这7条问题后,RISC-V就需要尽可能的避免这些问题。这就是今天我们看到的RISC-V,一个全新的、免费的、公开的、任何人都可以自由使用的ISA。

  RISC-V内容概览

  在说明了有关RISC-V的优势之后,本文将进入RISC-V的内容概览部分。在这个部分,本文将重点放在介绍RISC-V的性质、机构和基本情况上,并不太多涉及技术内容。

  RISC-V的性质:标准、免费、开放

  根据RISC-V的白皮书,RISC-V被定义为这样一种ISA:

  首先,RISC-V是一个完全开放的ISA。完全开放的意思是指R ISC-V中的所有内容都是自由且免费的,使用RI SC-V的内容不包含专利问题,任何公司或者实体都可以在自己的产品中免费使用RISC-V,且对RISC-V的相关修改也无需开源。

  其次,RISC-V是一个真正的ISA,适合在硬件上直接实现,不仅仅用于模拟、教学或者二进制翻译等,它可以被用在工业产品中(实际上已有巨头开始基于RISC-V开发产品)。

  第三,RISC-V在技术上并没有偏向性,也不存在过度体系结构化(over-architecting),它可以支持各种各样的设计需求,满足几乎所有的扩展需求,能够利用所有的技术来实现,能够被应用在全定制产品、ASIC或者F P G A中,使用的场景包括嵌入式、移动设备、桌面设备、服务器甚至超级计算机。

  第四,RISC-V本身只包含了一个小的基本整数ISA,基本整数ISA可以作为定制加速器或者教学用途使用,但R ISC-V同时也提供了多个可扩展标准的ISA,支持通用的软件开发。

  其他方面,RISC-V支持最新的2008 IEEE-754浮点标准、支持32位和64位乃至更高位的扩展,支持单核、多核、异构多核、可选变长指令、可选密集指令编码等。在ISA特性上,RISC-V是一个可完全虚拟化的ISA、支持新的管理员级别和虚拟机监督管理级的ISA设计等。在安全方面,RISC-V几乎是无可比拟的,因为其源代码开放,因此设计人员可以通过逐行检查源代码来寻找漏洞和后门,这和封闭的ISA相比存在巨大优势,可能被敏感场合用户重点关注。

  RISC-V的组织:2个机构和1个研讨会

  在一种ISA定义后,需要一系列组织和机构来对其负责。RISC-V方面目前拥有2个机构和1个组织。

  对R ISC-V负责的两个机构分别是RISC-V基金会和SiFive。其中RISC-V基金会是一个非盈利组织,其主要目的是维护RISC-V架构的标准规范。一般RISC-V架构的白皮书、指令集手册、操作指南等内容由RISC-V基金会负责。SiFive则是一个盈利性公司,公司由伯克利分校的教授和研究生们负责,其主要工作是提供一些已经研发完成的内核IP供业界使用,比如目前最新的Coreplex系列,包括E31、E51等多个不同的产品,用户可以直接购买后加入自己的设备中。虽然SiFive是一个企业,但是其源代码都是开放的,这也符合RISC-V的开放精神。

  除了上述两个正规机构外,RISC-V还有一个会议机构,被称为RISC-V研讨会。RISC-V研讨会的目的主要是通过在不同的地点和机构举办会议,将一段时间内各个研究人员和企业的对RISC-V发展的思想和创意进行展示,并在同行业之间做出交流和沟通,在更好的推进RISC-V的产业化的同时,推进R ISC-V的发展。目前全球RISC-V研讨会每半年一次,从2015年开始到现在已经举办了七次。值得一提的是,2017年5月8日到11日的第六次RISC-V研讨会在上海交通大学举办,这还是首次在中国举办如此高等级的技术研讨会议。

  RISC-V的内容:精简的核心、自由的扩展

  在本段中,我们将浅尝辄止地了解一下RISC-V的相关定义和一些基本命名规范等内容,并不会太过于深入去了解RISC-V有关ISA的核心信息。有兴趣的读者建议直接翻阅RISC-V组织的指令集解释。

  作为一个开放的ISA,RISC-V在核心内容的定义上并不多,正如前文所说,RISC-V被定义为一个基本的整数ISA,并且这个核心内容和早期的RISC处理器非常相似,没有分支延迟槽,支持可选的变长指令编码。基本的RISC-V指令足够支持一个合理的目标机,编译器、汇编器、连接器和操作系统等都可以在上运行。

  但是基本的RISC-V功能非常非常有限,不可能满足所有用户的需求,因此RISC-V的扩展性、定制化和特殊化就显得特别重要。RISC-V规定,除了基本的整数部分外,RISC-V的其余部分都可以被重新定义。在RISC-V的规范中,这些定义被分为标准扩展和非标准扩展。标准扩展往往是公开且标准化的,和其他的标准扩展不存在冲突。非标准扩展则是某些单位或实体自行定义的规范,可能和其它的非标准扩展存在冲突。有关标准扩展和非标准扩展,RISC-V指令集解释也规定了一定的规范,方便用户查询和区分。

  在标准扩展方面,RISC-V定义了一系列的标准扩展,除了原有的基本整数外,提供了乘法、除法、原子操作以及单精度、双精度浮点算数等常用高级操作。在命名上,RISC-V的基本整数ISA被称为“I”,也就是“Int”的首个字母。相应的,标准单精度浮点扩展的代表字母则是“F”、双精度是“D”、标准乘法和除法扩展被称为“M”、标准原子指令操作被称为“A”。这些操作都分别取了各自操作英文名称的首字母,比如Float、Atom等。RISC-V的基本整数内核加上这4个标准扩展,组成了一个完整的通用标量指令集,被称为“IMAFD”,缩写为“G”。进一步说明的话,以基本整数ISA为例,其中包括了整数计算指令、整数读取、整数存储和控制流等,根据寄存器宽度的不同,可以分作32位和64位,命名为RV32和RV64,随后再加上I表示是整数,所以RISC-V的基本整数ISA就有RV32I和RV64I两种。目前RISC-V组织认为在教育和一般应用中,RV32I足够了,当然更大的系统需要64位时可以选用RV64I,未来还会有RV128I,这会在新的RISC-V框架中包含。

  除了上述基础内容外,RISC-VISA还定义和规范了大量有关处理器设计的内容,包括基本的计算指令、控制转移指令、load和store指令、原子操作指令、双精度扩展指令、扩展指令设计概念、VLIW的相关编码内容、寄存器相关内容、软硬件术语、管理员级别ISA、机器级别ISA、指令压缩等内容。此外,在功能特性方面,RISC-V的模块化、硬件设计和编译器实现都非常简单。由于RISC-V对模块化友好,用户可以实现模块化可配置指令子集。在编译器方面,RISC-V的编译器以简单和直接著称,比如仅支持小端格式、指令一次只访问一个元素、不使用指令条件码也不支持零开销硬件循环等,整体过程清晰明确。

  总的来看,作为创新的设计和全新的架构,RISC-V的技术特点还是非常明确的,简单、可扩展、模块化、易实现是它非常显著的特征。借由这些内容,工程师们可以定义自己的处理器模块或者扩展相关功能设计,甚至研发出高性能产品等,这在RISC-V的环境和理念下,都是完全可能出现的。

  RISC-V的未来

  RISC-V无疑是产业界的一股新风,它以自由和开放的姿态,为沉闷已久的ISA产业界带来新的希望。那么RISC-V的强势之处在哪里?它能否真正挑战A R M和x86,成为又一产业巨头呢?

  RISC-V的性能:充满希望

  在介绍了RISC-V的相关知识后,大家肯定很好奇RISC-V相关产品的性能情况。目前RISC-V的实际产品并不多,其具体性能情况只能以设计目标来进行对比。根据2014年业内研究的论文数据,可以简单对比RISC-V架构的产品和ARM架构产品的相关性能情况。

  在表1中,展示了在同样TSMC 40nm 40GPLUS工艺下,选择32位ARMCortex-A5核心对比64位RISC-V Rocket制作的实际产品的理论性能、功耗、面积对比数据。这两款核心都面向嵌入式设备或者超低功耗设备,全部都采用单发射执行架构和顺序流水线,产品定位相当,应该说具有非常好的可比性。其中第三行“R/A”是指RISC-V架构对比ARM架构的产品的比值,其中性能、面积效率越高越好,面积和动态功耗越低越好。数据来自于ARM网站和Y.Lee在2014年的论文,数据来源可信度还是很高的。

  总的来看,RISC-V的Rocket核心基本上全方位胜出了目前A R M的Cortex-A5核心,无论是功耗、性能还是面积方面。出现这样的情况,主要原因可能还是RISC-VISA诞生更晚,设计理念更先进一些。Cor tex-A5发布于2009年,再加上ARM的首款处理器产品发源于1985年,公司正式成立于1990年,ARM架构比RISC-V的设计时间早了20多年,其产品在设计时所具有的思维和RISC-V已经不可同日而语,并且ARM在多年间为了保持兼容性,还不得不背上一些历史的包袱。这一点RISC-V就完全不存在,凭借着更新的架构,RISC-V展示出了更好的实力。

  但是,在小型架构上能够大获全胜,并不代表在高性能领域上也能够如此出色。一个典型的例子就是ARM目前一直想进入的高性能服务器市场依旧没有太大起色,这个市场依旧是英特尔的x86和IBM的Power系列的天下。RISC-V初出茅庐,并没有涉及大规模、高性能处理器设计,甚至连可以抗衡ARM Cortex-A73这样移动高性能核心的产品都没有,因此还不能说RISC-V已经大获全胜。只能说希望尚存,还需要进一步观察。

  RISC-V的市场:频获支持

  产品是一面,市场则是另一面。RISC-V在诞生以后,就频繁获得了大企业的支持。目前已经有谷歌、惠普、Oracle、西部数据、英伟达、美光、三星、IBM、微软、高通等业内巨头给予支持,此外国内企业方面,中科院计算所、华为等厂商也积极投身其中,甚至一些大学也开始针对RISC-V开设研究项目。

  产品方面,不少厂商已经推出了基于RISC-V的产品。其中包括法国GreenWaves Tech的物联网处理器GAP8、Microsemi推出的基于RISC-V的知识产权产品、英伟达正在基于RISC-V开发内存控制器、高通在基于RISC-V开发物联网产品。最值得关注的是三星,目前有未经证实的传言称,三星的Exynos 8890处理器中采用的M1内核是基于RISC-V研发的,而不是像之前那样基于ARMv8 ISA(之前也有消息称M1内核基于Cortex-A72改进,但并未得到三星证实)。另外,三星还考虑在智能手表、可穿戴设备中使用自研的RISC-V架构产品。

  RISC-V之所以这样火热,除了技术特性外,另一个重要原因恐怕还是其开源和免费的特征。在RISC-V出现之前,大部分嵌入式设备、绝大部分物联网设备、几乎全部的移动处理器都在使用ARM架构,另外,诸如CPU、G PU的内存控制器、部分网卡、声卡以及目前常见的很多路由器、电视盒子芯片、视频编解码芯片、各类音频芯片等,都使用的是基于ARM或者其他授权厂商的ISA。以最常见的ARMCortex-M系列为例,根据不同的用户、付款方式、用途、核心和最终产品,其价格可能在几十万美元至数百万美元不等,性能更好的Cortex-A系列核心的价格甚至会达到千万美元等级,并且ARM在收费方式方面,还存在一次性收费和按产品数量收费等,整个过程覆盖了从研发到生产直至最后销售的全步骤,也正是由于这样高昂的费用和独此一家别无分店的市场态势,才支撑起了ARM高达95%的史无前例的毛利率。RISC-V一出现,其免费和开放的特性,就很快吸引了各大厂商的加入,毕竟能少花一点是一点,“科技税”收起来也是很可怕的。

  RISC-V的隐忧:成败之间

  作为一个开放性、全新的标准,RISC-V显然并不是高枕无忧的。在成长为业内甚至产业领导标准之前,RISC-V还面临着诸多的隐忧。

  首先就是RISC-V的开放性。开放和免费是RISC-V能够兴起的最重要原因之一,但是也可能成为RISC-V发展上的拦路虎。目前RISC-V通过基金会的形式保证了一个公开的ISA的统一,但是各种厂商私有的ISA和随后衍生出的各种各样的产品,还是会带来各种兼容性问题,这种兼容性问题甚至会导致RISC-V的分裂。一旦这种分裂的情况出现,RISC-V的通用软件堆栈就可能存在问题,因为对开发者而言,RISC-V不需要维护编译器、连接器、操作系统、驱动程序等,一切都是RISC-V生态环境中的一部分。过于开放可能带来的分裂会造成严重的后果。

  其次,RISC-V目前还很不成熟。相比ARM这样纵横业界多年的产业巨擘而言,RISC-V还只是初生的婴孩。RISC-V的整个生态链中大部分内容都还在开发初期,没有经历过市场的检验甚至都没有走完一个开发流程,还需要RISC-V社区和RISC-V开发人员的进一步努力。相比ARM已经有的产业基础,R ISC-V不得不复制这一切,或者使其兼容目前已有的生态系统和产业链,这对RISC-V来说也是很难做到的一件事情。

  第三,RISC-V在技术路径上还存在不确定性。作为一个初生的ISA,RISC-V在很多应用领域都是以纸面或者数据的形式出现,如何将这些数据或者设计硬件化并使其在商业上占据优势,这是一个很困难的问题。对一家成熟的企业来说,在选择产品研发路径上,如果可以选择成熟且有性能基础的ARM,那么要怎样才能去考虑目前尚不确定、最终性能也不是很明确的RISC-V?另外,RISC-V的在发展中的一些改动,甚至还可能影响到实际产品的设计,并且RISC-V目前也没有系统控制或者类似于ARM DynamiQ这样的技术,要如何面对应用这些技术的客户呢?这个问题目前也不存在具体的答案。

  除了上述内容外,RISC-V在目前半导体从软到硬的漫长产业链中需要面对很多问题,无论是软件核心方面的ISA扩展,还是工程师着手基于RISC-V的设计工具和开发环境,以及最后的设备验证、流片等内容,R I SC-V都需要重新走一遍所有的流程,这对已经熟悉了目前基于ARM、x86等架构开发的产业界来说还需要一段时间来接受。当然,RISC-V的自由和开放,也带来了低成本和无法律风险,至于如何平衡两者之间的关系,还得看RISC-V的进一步发展和业界对RISC-V的态度了。

  RISC-V:做处理器业界的“Linux”?

  RISC-V的出现,目前看起来是喜忧参半。纵观产业发展,曾经出现过很多的开源和免费的ISA,但是都雨打风吹去,消失在时间长河之中了。这些免费I SA各有各的问题,有些过于开放,有些在技术和结构上存在缺陷。RISC-V能走到现在,证明了其已经通过了产业界的检视,最起码能够真正实现商业化。RISC-V的出现更像一个破坏者和搅局者,它以完全开源的方式,其实直接面向了ARM这样的业界巨擘,带给了人们多一个、不一样的选择。

  就像软件上开放和封闭的争议那样,在I S A上,开放和封闭的争议也一直没有停止。软件产业中封闭的Windows和iOS对阵的是开放的Linux和Android,那么在ISA界,也应该有封闭的ARM和开放的RISC-V对阵—这是比较好的预期。Linux的发展和成长目前也是业内研究的一个热点,人们关注到的问题就是,没有机构宣称自己是Linux内核的最大贡献者,对Linux内核的贡献实际上形成了一个竞争的环境,各种机构在不断的提高对Linux的贡献度,但并没有直接的掌控。此外,Linux复杂的分支和巨大的代码量以及各种类数据库和应用程度等,共同组成了Linux这样一个开源的体系。当然其中也有一些商业模式,采用付费获取服务的方法,也成为了Linux生态的一部分。

  正如Linux,RISC-V是否也能维持这样一个开放的架构,形成众多的机构对RISC-V贡献资源?如果是这样的话,RISC-V将真正的“Vector”。但RISC-V和Linux还存在很多不同,成本和产业结构的差异有可能完全改变两者的发展方向,毕竟RISC-V的验证和流片并不只需要一台电脑就能完成。这些差异有可能改变RISC-V的发展模式,诞生出新的发展方法,但最好RISC-V能够变身成为ISA界的“Linux”,多一种选择,总比什么都没有强。

  TIPS:RISC的诞生和加州大学伯克利分校前四代RISC ISA

  20世纪70年代初,处理器尚处于发展的早期阶段,当时的主流产品采用的是C ISC也就是复杂指令集,典型代表就是英特尔的x86。虽然当时C PU和x86架构发展速度很快,但是有识之士还是意识到了CISC的缺陷,比如x86的指令超过200条,字长不固定,复杂而庞大,常用的指令大约只有20%,80%不常用的指令却占据了大量的资源,代价很高。

  在这样的情况下,IB M先站出来,计划对C ISC存在的诸多问题进行改善。1974年,IBM决定新开发一种全新指令集系统替代CISC并将这项任务委托给了IBM研究院的研究员JohnCocke 和他的团队。经历漫长研发后,John Cocke 及其团队最终设计出了基于RISC架构的计算机原型。这个原型所展示的RISC相比CISC就要简单很多,只包含最常用的指令,指令等长且小于100条,各指令执行时间大多在一个周期就可以完成,效率大幅度提高。

  在RISC发明之后,加州大学伯克利分校迅速跟进,借助于学校强劲的科研实力,学校在随后的时间内推出了RISC-I、RISC-II、SOAR、SPUR等四个基于RISC的ISA。当然,这些指令集体系逐渐在历史的长河中消失了,除了在研究论文和专业书籍中,一般用户很难接触到它们。虽然这四代指令集并没有广泛流行,但这也为加州大学伯克利分校积累了深厚的研发底蕴并聚集了一群高水平的指令级架构研发人员,这才有了后来RISC-V的故事。

  如何进一步了解RISC-V

  在推出了有关RISC-V的架构后,加州大学伯克利分校还在官网上公布了有关RISC-V指令集手册,这个手册同时也是学校的科研报告,最新修订的第二版的号码为UCB/EECS-2016-118,感兴趣的读者可以在https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.html这个网址找到它。

  文/张平

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: