The RISC-V Analysis (in Chinese)
Title: RISC-V Analysis
题目:开放指令集RISC-V分析
作者:it’s me
研究机构:cpu@xxxx
Email:NA
Ref: NA
1 RISC-V简介
RISC-V是加州大学伯克利分校提出的开放指令集,始于2010年。项目起初的主要驱动力在于当时在学术界和商业界都缺乏公认的64位ISA指令集用于研究和教学,特别是用于包括多核等特性的现代处理器实现的研究和教学。RISC-V团队认为现有各种体系结构的指令集定义有意或者无意的将一部分内容引向了专利保护的知识产权部分。RISC-V同时认为,指令集ISA作为软硬件接口的一种说明和描述规范,不应该受到限制,应该是开放(Open)和自由(free)的。为使研究人员,特别未来大量基于处理器的信息技术研究、实现[1]和应用得到解放,David Patterson和Krste Asanovic两位教授领导的研究团队提出了RISC-V。
RISC-V使用的授权协议(License Model)为BSD Open Source License。简单的说就是开放设计细节,只要告知UC Berkeley就可以使用。不同于GNU License,在BSD License上的增量设计或者自主设计并不需要同时开源。
1.1 RISC-V提出的原因
业界缺乏学术界可用的64位指令集设计:ARM当时还未公开(还在内部讨论64b的价值)ARMv8,OpenRISC还未启动64bit设计。
现有的ISA存在专利风险:MIPS在2002年发给OpenRISC的律师函就说明:即使以非盈利为目的,开源RTL设计;但由于引用MIPS公司网站链接(指令集手册),描述设计与MIPS相关等行为都侵犯了MIPS的知识产权。RISC-V的团队认为仅有SPARC v8作为IEEE 32位处理器标准公布的指令集设计(IEEE Std. 1754–1994)是明确对学术界开放的,但并非64位指令集。2010年左右所有的64位指令集,包括SPARC64(v9)、Power64与X86_64等都在指令定义细节上进行了专利保护,属于Property ISA,未经授权的实现可能有法律风险。
商业ISA不适合作为研究使用:RISC-V团队认为商业ISA有各种商业考虑、无法预料的生命周期和轮回、以及过于复杂的结构定义等不利因素,不适合在持续的学术研究和教学中使用。
总结而言,RISC-V的设计目标是:完全开放completely Open,现实realistic,和简单simple的指令集。除此之外,RISC-V的ISA设计目标还包括:支持桌面和服务器的64位寻址;同时支持低功耗嵌入式实现需要的32位寻址;实现IEEE 754–2008标准的浮点运算;易于扩展;能够支持多核与众核的高度并行实现;易于抽取子集并用于教学或者降低引入新设计的复杂度。
1.2 RISC-V目前的状态
目前RISC-V团队已经完成了在RISC-V指令集上FPGA原型、软件工具链、模拟工具和操作系统的移植。所有开放的内容都可以通过riscv.org网站下载。基于IBM 45nm SOI工艺生产的顺序单核处理器主频在1.3GHz,并展现出与ARM A5处理器接近的性能、面积、功耗优势(详细参见2.2)。目前用户级ISA说明文档版本为2.0,特权级ISA说明还处于审核阶段,尚没有完全公开。
软件生态环境上:RISC-V完成了基于GCC 4.6和LLVM 3.3的工具链移植,Linux 3.14.15的内核移植。为硬件设计、体系结构研究和系统开发提供了验证工具包、ISA指令集模拟器Spike和全系统模拟环境riscv-QEMU。
硬件生态环境上:目前开源的RISC-V的Sodor设计采用UCBerkeley提出了高级硬件开发语言Chisel描述。Sodor仅包括简单的整数流水线。包含支持IEEE-754标准的Rocket核心设计的Chisel源代码处于即将开源过程中。作为一种开源的硬件描述语言,Chisel可以产生用于FPGA或者ASIC流程的底层Verilog/VHDL描述。Riscv.org网站上给出了Xilinx zynq开发板上测试RISC-V设计的样例。
2 RISC-V的技术分析
根据RISC-V指令集手册中历史回顾说明看,其受到David Patterson和Krste Asanovic两位教授之前MIPS设计的强烈影响。其对RISC的简单simple设计哲学的强调与重视,32位定长指令编码等特点,也MIPS指令集设计一脉相传。因此正如其论文中所描述的,由于简单的ISA设计,从原理上RISC-V指令集兼容的处理器在性能功耗比、面积效率上不会比ARM差。如图 1所示,采用同样的TSMC 40G 工艺,RSIC-V团队得到的结果在性能、面积和功耗上都优于表中的Cortex A5。
2.1 优势
与同样开源的SPARC V8和OpenRISC相比,RISC-V在软件工具链和软件生态环境上并没有优势,但也没有明显缺失。其ISA上的主要优势是兼顾了嵌入式、多核和异构并行的需求。这是RISC-V面向学术研究的实际需求,也得益于其从2010年开始设计,没有兼容性需求的后发优势。
在可靠性与可实现性上,RISC-V的一个主要目标就是专注于处理器实现方面的研究,并不注重于(特别是要回避)在ISA说明中使用太多的体系结构设计技巧(如滑动寄存器窗口等)。从2011到2014年的3年时间中,RISC-V团队在ST和IBM的工艺线上完成了8款测试芯片的生产(如图 3)。
由于RISC-V指令集的简洁特性,以及图 3中罗列的测试芯片,可以认为RISC-V指令集在可制造性和硅验证方面的质量至少比OpenRISC要高。同时各种ISA子集,和各种并行设计的支持也使得RISC-V符合目前各个处理器市场的特性要求。由于没有类似ARM Thumb,和多种Predication标记等兼容性的需求,兼顾低功耗需求的RISC-V在实现复杂性上也会优于ARM指令集。
2.2 缺陷
虽然RISC-V已经面向先进工艺进行了多轮实现,并且公开给出了与Cortex A5的比较(如图 1)。但根据2012年可获得ARM数据,至少在面积有效性上,并没有展现出优势。
表 1 不同来源数据比较
2012年ARM A5 PPA || 40G ||32K Cache ||0.32 mm2
2014年RISC-V论文给出的A5数据 || 40G ||16K Cache ||0.53 mm2
2014年RISC-V论文中给出的RISC-V数据40G ||16K Cache||0.39 mm2
如表 1所示,2012年A5的Cache在容量一倍的情况下,仍然比直接映射的RISC-V Cache占用面积小。这一方面可能是由于2012年A5的主频为950MHz,没有超过1G。另一方面也可能是源于作为商业产品,A5在不断的进行更新和修正,Artisan物理设计部门的持续资源投入,都可能导致2012的A5内部实现数据远高于2014年RISC-V。
另外RISC-V在未来技术发展上最大的缺陷在于其物理开发环境难以获得,导致软件开发和生态环境建设基本完全依赖于Berkeley开发人员。虽然有模拟环境和QEMU可以使用,但对于RedHat、Fedora Core、Debian这样的发行商,其正式开发版本是必需经过实际的物理机器来验证的。这制约了RISC-V在短期内不会有任何正式的Linux 发行版。
由于GCC/LLVM目前工具链是面向顺序单发射的RISC-V设计,仅解决了工具有无的问题。正对目标优化,和面向科学计算、嵌入式应用的库代码优化,如OpenMP和FFT等均尚未启动。
2.3 未来展望
RISC-V目前仍然仅是局限于学术界的研究成果,没有商业公司介入的趋势与痕迹。其简洁和较为通用的设计,可以简化以其为基础的专门应用处理器,或者加速器的设计。但即使在体系结构和微处理器学术研究领域,RISC-V也没有展现出某种不可替代,或者明显优越的技术优势。
由于Berkeley开源硬件设计采用Chisel语言描述,RISC-V并非硬件行业标志性的完整Verilog/VHDL设计开源。这点上,RISC-V甚至不如OpenRISC,能够成为商业EDA软件的教程实例,因此很难吸引传统的硬件开发人员。由于缺乏足够多和廉价的硬件环境,在软件生态环境上RISC-V可以说尚在起步阶段,虽然其完善速度已经相当快。同时尚未看到操作系统或者编译领域的学术研究必须选择一种类似RISC-V完全开放的指令集才能进行的趋向。
RISC-V在学术界或者工业界最可能的切入点可能是:需要软硬件协同设计的加速处理器设计。在这一领域,精简设计基础有利于加入所谓的加速逻辑创新,而较为通用的ISA和工具链基础可以降低软硬件结合研究中验证正确性,并发挥有效性的技术门槛。
3 RISC-V的商业分析
从目前公开的资料看,RISC-V目前尚未进入商业应用领域。原因可能包括:
1. RISC-V开放可获取的内容仍然有限,其代码和资料的完备性尚不如OpenRISC和SPARC V9(例如:没有能载入商业HDL Simulator运行Verilog代码和验证环境)
2. RISC-V在ISA技术和设计上并未展现出某种潜在的优势(除了Open)。
3. RISC-V目标面向的桌面、服务器和高端嵌入式市场上都已经形成了技术、专利和生态环境壁垒;
4. RISC-V并没有针对新型的物联网等市场上特性和软硬件优势,而Intel/ARM等已经开始布局;
4 RISC-V的专利分析
RISC-V采用BSD License发布,由于允许衍生设计和开发闭源,对商业公司的吸引力应该高于GPL发布的OpenRISC和OpenSPARC。RISC-V团队在FAQ中申明不会申请或者试图申请RISC-V兼容处理器实现相关的专利。
同时RISC-V团队也表示,由于处理器实现可能各不相同,他们认为实现RISC-V兼容处理器并不需要任何专利许可,他们也无法保证ISA或者实现,不被其他什么人提起诉讼或专利权利要求。
仅从声明和描述上就可以发现如下问题:无法阻止其它人申请与RISC-V兼容处理器实现相关的专利。也没有明确的专利联盟或者交叉授权模式可以借用,以保证在未来不受到专利诉讼请求。
BSD License并不是类似ARM授权协议的保护伞。其License框架的代表BSD操作系统在发展过程中就受到AT&T的专利诉讼威胁,虽然通过重写和删除代码,历经数年时间最终得以解决(其中还包括著名的Berkeley法学院资源的帮助)。但这一过程也导致了Linux压倒BSD成为主流开源操作系统。Linux在2004年也受到Microsoft和SCO的专利威胁,但由于IBM加入Linux一方而缓解的危机。因此未来商业化的RISC-V兼容处理器几乎肯定会受到专利诉讼的威胁。以上软件领域的例子可以开到,即使开源,或者使用不同开源License模型,如果没有商业联盟的交叉专利库作为后盾,几乎无法达成和解。
由于微处理器实现相关的专利可能涉及微体系结构、电路和布图等多个层次,用开放的ISA并不能确保处理器产品不受专利诉讼威胁。老牌技术公司,如IBM、Intel已经在微处理器设计实现的各个方面申请、购买和交叉授权了相当多的专利,并用增量设计延长SIMD指令字的打包等专利的时效。这也是为何ARM要联合Imagination联合收购MIPS专利的原因之一。
5 RISC-V的启示
不谈设计哲学与设计目标,与RISC-V当前技术状态最接近的就是曾经热闹过一阵的完全自主ISA设计。重头设计的ISA都不可避免的出现无法切入市场,工具链和软件生态环境保持在演示状态,缺乏商业、经济和技术潜力上的吸引力,无法自主完成或者借力完成生态进化等等问题。这些情况都可以从RISC-V上看到缩影。
同时在RISC-V上也可以看到,自主定义并设计一个ISA,完成测试芯片并构建基本软件展示环境,并不是一个需要非常高深技术实力和大规模团队的任务。如何让一个ISA设计活下来,并保持对用户的持续吸引力才是困难的。
参考文献
[1] Ian Smythe and Ian Ferguson(ARM). The Case For Licensed Instruction Sets. Microprocessor Report. August 18. 2014
[2] Krste Asanovic and David Patterson(UC Berkeley). The Case for Open Instruction Sets. Microprocessor Report. August 18. 2014.
[3] Krste Asanovic and David Patterson. Instruction Sets Should Be Free: The Case for RISC-V. Technical Report No. UCB/EECS-2014–146. http://www.eecs/berkeley.edu /Pubs/ TechRpts/2014 /EECS-2014–146.html, August 6. 2014.
[4] Andrew Waterman, Yunsup Lee, David, Patterson, Krste Asanovic. The RISC-V Instruction Set Manual Volume I: User-Level ISA versioin.2.0. Technical Report No. UCB/EECS-2014–54. http://www.eecs.berkeley.edu / Pubs/ TechRpts/2014 / EECS-2014–54html, May 6. 2014.
[1] 微处理器的实现Implementation由于涉及微结构、电路等方面的内容,RISC-V团队虽然主要目的是对处理器实现进行研究,但开放的ISA并不能保证在实现过程中不侵犯专利。但开放的RISC-V至少在指令集层面已经避免其成为专利诉讼的目标。RISC-V团队保证不申请或者试图申请任何与实现RISC-V处理器相关的专利。但并不能保证任何特定的RISC-V实现不侵犯他人专利权限。