为什么是RISC-V ?

       RISC-V(音“risk-five”)是基于已建立的精简指令集-----RISC(相较于复杂指令集CISC,如英特尔的X86架构,应该是应用最广的复杂指令集,没有之一)原则的一个开源指令集(ISA)。

        与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片及软件。RISC-V于2010年始于加州大学伯克利分校,2015年基金会成立,但许多贡献者是该大学以外的志愿者和行业工作者。它并不是第一个开源指令集,但为什么说觉得意义非凡,那些过往的,出身名门且高贵的架构啊指令集比比皆是,如:SPARC作为SUN公司经典的RISC微处理器架构之一(其痛点在庞大的寄存器族群(庞大数量的专门类寄存器可以带来高性能,但是弊端也不会少),并不是任何场景条件下需要使用到如此多资源,这样做不仅仅是浪费了晶片面积!

       RISC-V指令集的设计考虑了小型、快速、低功耗的现实要求实现。其设计使其适用于现代计算设备(计算机云计算、移动电话和微小嵌入式)。设计之初考虑到了这些用途中的性能与功率效率。指令集还具有众多支持的软件,从而解决了新指令集通常的弱点。

        大道至简!简单就是可靠,简单就是安全,简单成浓缩精华!

        简单美学如日本设计讲的侘寂,大道至简,在IC(芯片)设计的实际工作中,见过最简洁的设计实现安全可靠,也见过最繁复的设计长时间无法稳定。最简洁的设计往往是最可靠的,在大多数的项目实践中一次次的得到检验,这和生活中的很多事情一样的人生哲理。IC设计的工作性质非常特殊,设计完成到最终的芯片,而一款芯片的设计和制造生产周期长到你无法想象,并无法像软件代码那样轻易的升级和打补丁,每一次芯片的改版到交付都需要几个月的周期。不仅如此,芯片的一次制造一次流片成本费用高昂,几十万美金到百千万美金不等。这些特性决定了IC设计的试错成本极为高昂,因此能够有效的降低错误的发生就显得非常的重要,简单尤为重要!现代的芯片设计规模越来越大,复杂度越来越高,并不是说设计一味使用复杂的技术,而是应该在最恰当最关键的场合,多数情况下尽量简洁的方案。RISC-V恰恰是硬件的实现足够简单,我们可以一一。

       处理器目前主流的架构为x86与ARM,无论是我们学校学习阶段更为简单的8051(实现过8051一款IP核的设计)或是ARMv7指令集,都需要阅读架构文档,ARM则更为庞大的家族,除了v7,更有许多为不同应用而生的庞大并列排列的指令家族且版本众多,夸张的讲x86与ARM架构的架构文档打印出来足够开一间图书馆。因为其架构的发展的过程现代处理器架构技术的不断发展成熟,作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,或者在定义新的架构部分时为了能够将就已经存在的技术部分而显得非常的别扭,久而久之就变得极为冗长。那么现代成熟的架构是否能够选择重新开始,重新定义一个简洁的架构,可以说几乎不可能,重新定义架构无法做到向前代产品兼容。而RISC-V架构,则具备了先天优势,计算机体系结构经过多年发展已经成为比较成熟的技术,在不断成熟的过程中暴露的问题都已经被研究透彻,因此新的RISC-V架构能够加以规避,并且背负兼容的历史包袱,无病一身轻。

        目前的“RISC-V架构文档”分为“指令集文档”(riscv-spec)和“特权架构文档”(riscv-privileged),总共不过数百页。熟悉体系结构的工程师仅需一至两天便可将其通读,虽然“RISC-V的架构文档”还在不断地丰富,但是相较于x86与ARM,RISC-V的篇幅可以说是极其短小精悍。以一个在校本科生为例,阅读文档并以开源项目架构为基础设计一款,一两月时间绰绰有余(前提是得有不错的天赋)。感兴趣可以在(https://riscv.org/specifications/)下载文档。

       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指令数目仅有40多条,加上其他的模块化扩展指令总共几十条指令。很多常用的指令也被省掉了,比如nop、move、not、neg,不是说这些功能没有,所有这些功能都有,不过都是用其它的指令来等价实现的,比如not指令是用xori rd, rs, -1实现的。看到这样的指令,不得不对Berkeley的大神佩服的五体投地。能省的指令都省了。能让编译器做的都让编译器做了。绝对精简!

你可能感兴趣的:(为什么是RISC-V ?)