RISC-V指令集架构介绍
RISC-V(英文发音为"risk-five")是一个全新的指令集架构,该架构最初由美国加州大学伯克利分校的EECS部门的计算机科学部门的Krste Asanovic教授、Andrew Waterman和Yunsup Lee等开发人员于2010年发明。 其中"RISC"表示精简指令集,而其中"V"表示伯克利分校从RISC I开始设计的第五代指令集。
2010年,加州大学伯克利分校的研究团队分析了ARM、MIPS、SPARC、X86等多种指令集,发现这些指令集不仅复杂度不断提升,且还存在知识产权风险,而处理器架构种类和处理能力并无直接关联。针对以上问题,该小组设计并推出了一套基于BSD协议许可的免费开放的指令集架构RISC-V,其原型芯片也于2013年1月成功流片。RISC-V指令集具有性能优越,彻底免费开放两大特征。RSIC-V的设计目标是能够满足从微控制器到超级计算机等各种复杂程度的处理器需求,支持从FPGA、ASIC乃至未来器件等多种实现方式,同时能够高效地实现各种微结构,支持大量定制与加速功能,并与现有软件及编程语言可良好适配。RISC-V产业生态正进入快速发展期。加州大学伯克利分校在2015年成立非盈利组织RISC-V基金会,该基金会旨在聚合全球创新力量共同构建开放、合作的软硬件社区,打造RISC-V生态系统。三年多来,谷歌、高通、IBM、英伟达、NXP、、西部数据、Microsemi、中科院计算所、麻省理工学院、华盛顿大学、英国宇航系统公司等100多个企业和研究机构先后加入了RISC-V基金会。
RISC-V基金会负责维护RSIC-V指令集标准手册与架构文档,每年RISC-V基金会都会举办各种专题讨论会和全球活动,将广阔的生态系统聚集在一起,讨论当前和未来RISC-V项目和实施,以促进RISC-V阵营的交流和发展。一款指令集架构能否取得成功,很大程度依赖于软件生态环境。当前可用的RISC-V软件工具包括GNU编译器集合(GCC工具链、GDB调试器),LLVM工具链,OVPsim仿真器(以及RISC-V快速处理器模型库),Spike仿真器和QEMU模拟器。当前支持该指令集架构的操作系统包括FreeRTOS、SylixOS、RT-Thread、Linux等。RTRISC-V架构在短时间内还无法撼动x86和ARM架构,但是随着越来越多的公司和项目采用RSIC-V架构的处理器,相信RSIC-V的软件生态会逐渐壮大起来。
RISC-V的特色
1 简单就是美——RISC-V的设计哲学
RISC-V架构作为一种指令集架构,在介绍细节之前,让我们先了解设计的哲学。所谓设计的“哲学”便是其推崇的一种策略,譬如说我们熟知的日本车的设计哲学是经济省油,美国车的设计哲学是霸气外漏等。RISC-V架构的设计哲学是什么呢?是“大道至简”。
所谓大道至简,在IC设计的实际工作中,笔者曾见过最简洁的设计实现安全可靠,也曾见过最繁复的设计长时间无法稳定收敛。最简洁的设计往往是最可靠的,在大多数的项目实践中一次次的得到检验。
IC设计的工作性质非常特殊,其最终的产出是芯片,而一款芯片的设计和制造周期均很长,无法像软件代码那样轻易的升级和打补丁,每一次芯片的改版到交付都需要几个月的周期。不仅如此,芯片的一次制造成本费用高昂,从几十万美金到百千万美金不等。这些特性都决定了IC设计的试错成本极为高昂,因此能够有效的降低错误的发生就显得非常的重要。
现代的芯片设计规模越来越大,复杂度越来越高,并不是说要求设计者一味的逃避使用复杂的技术,而是应该将好钢用在刀刃上,将最复杂的设计用在最为关键的场景,在大多数有选择的情况下,尽量选择简洁的实现方案。其简单就是美的哲学,可以从几个方面容易看出,后续将一一加以论述。
2 架构的篇幅
在处理器领域,目前主流的架构为x86与ARM架构,笔者曾经参与设计ARM架构的应用处理器,因此需要阅读ARM的架构文档,如果对其熟悉的读者应该了解其篇幅。经过几十年的发展,现代的x86与ARM架构的架构文档长达几百数千页。打印出来能有半个桌子高,可真是“著作等身”。
之所以现代x86与ARM架构的文档长达数千页,且版本众多,一个主要的原因是因为其架构的发展的过程也伴随了现代处理器架构技术的不断发展成熟。
并且作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,或者在定义新的架构部分时为了能够将就已经存在的技术部分而显得非常的别扭。久而久之就变得极为冗长。
那么现代成熟的架构是否能够选择重新开始,重新定义一个简洁的架构呢,可以说是几乎不可能。其中一个重要的原因便是其无法向前兼容,从而无法得到用户的接受。试想一下如果我们买了一款新的搭配新的处理器的电脑或者手机回家,之前所有的软件都无法运行而变砖,那肯定是无法让人接受的。
而现在才推出的RISC-V架构,则具备了后发优势,由于计算机体系结构经过多年的发展已经成为比较成熟的技术,多年来在不断成熟的过程中暴露的问题都已经被研究透彻,因此新的RISC-V架构能够加以规避,并且没有背负向后兼容的历史包袱,可以说是无病一身轻。
目前的“RISC-V架构文档”分为“指令集文档”(riscv-spec-v2.2.pdf)和“特权架构文档”(riscv-privileged-v1.10.pdf)。“指令集文档”的篇幅为145页,而“特权架构文档”的篇幅也仅为91页。熟悉体系结构的工程师仅需一至两天便可将其通读,虽然“RISC-V的架构文档”还在不断地丰富,但是相比“x86的架构文档”与“ARM的架构文档”,RISC-V的篇幅可以说是极其短小精悍。
3模块化的指令集
RISC-V架构相比其他成熟的商业架构的最大一个不同还在于它是一个模块化的架构。因此,RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用。
这种模块化是x86与ARM架构所不具备的。以ARM的架构为例,ARM的架构分为A、R和M三个系列,分别针对于Application(应用操作系统)、Real-Time(实时)和Embedded(嵌入式)三个领域,彼此之间并不兼容。
但是模块化的RISC-V架构能够使得用户能够灵活选择不同的模块组合,以满足不同的应用场景,可以说是“老少咸宜”。譬如针对于小面积低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。而他们共同的部分则可以相互兼容。
RISC-V总结
开放而免费的RISC-V架构已经吸引了国内外一大批知名企业、科研院校和初创公司致力于开发基于RISC-V指令集架构的处理器,其中就包括谷歌、惠普、Oracle和西部数据等。当前国内还处在起步阶段,国内很多科研院校和初创公司都基于一些开源的RISC-V IP核或者SiFive公司的开源SOC上做增量开发。
元峰公司作为其中的一员致力于RISC-V嵌入式实时操作系统及其开发环境的生态搭建,当前主要工作是移植FreeRTOS操作系统到SiFive公司的HiFive1开发板上并提供配套的开发环境。开发环境提供基本的编译、运行和调试环境,包括OpenOCD、Jlink等硬件调试环境,并提供FreeRTOS操作系统项目用于用户开发FreeRTOS应用。后续还将支持RT-Thread、SylixOS等操作系统并集成到开发环境,方便用于开发调试。
|