本文转自什么是RISC-V 向作者致敬。
RISC-V读作RISC Five,也即第五代精简指令处理器
什么是RISC和CISC?
RISC(精简指令集计算机,Reduced Instruction Set Computer-RISC)和CISC(复杂指令集计算机,Complex Instruction Set Computer-CISC)是CPU的两种架构,区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构。
计算机性能的提高可以通过增加硬件的复杂性来获得,随着集成电路技术,特别是VLSI(超 大规模集成电路)技术的迅速发展,硬件工程师可以通过不断增加可实现复杂功能的指令和多种灵活的编址方式软件编程方便和提高程序的运行速度,相应地,硬件越来越复杂,造价也相应提高。通过提供复杂指令来提高性能的方法,顾名思义,也就叫做CISC。一般CISC计算机所含的指令数目至少300条,甚至超过500条。CISC的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,可能只需要一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器、相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。如今,Intel及其兼容CPU还在使用CISC 架构。
随着CISC的发展,它的缺点也逐渐暴露出来,日趋庞杂的指令系统不但不易实现,而且还可能降低系统性能。IBM公司的JhomasI.Wason研究中心于1975年组织力量研究指令系统的合理性问题,1979年David Patterson教授也开始UC Berkeley开展这一研究。结果发现,首先,在CISC系统中,各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的80%指令,只占处理器指令系统所有指令中的20%,事实上最频繁使用的指令是取数据、存数据和加法这些最简单的指令。这就说明,花大力气设计和实现的复杂指令其实作用并不大。而且,复杂的指令系统必然带来结构的复杂性,不但增加了设计的时间与成本还容易造成设计失误。此外,尽管VLSI技术已达到很高的水平,但也很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展。
因而,针对CISC的这些弊病,David Patterson教授等人提出了精简指令的设想,即指令系统应当只包含那些使用频率很高的少量指令,并提供一些必要的指令以支持操作系统和高级语言.按照这个原则发展而成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构。RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。
RISC-V读作RISC Five,也即第五代精简指令处理器。取这个名字正是因为美国伯克利研究团队的David Patterson教授在此之前已经研制了四代精简指令处理器芯片。
RISC-V
在2010年,伯克利研究团队要设计一款CPU,然而,英特尔对X86的授权卡的很严,ARM的指令集授权很贵,MIPS、SPARC、Open Power也都需要各自的公司授权。在选择很有限的情况下,伯克利的研究团队决定从零开始设计一套全新的指令集。而被很多媒体大肆宣扬也让人振奋的是,伯克利的研究团队4名成员仅用了3个月就完成了RISC-V的指令集开发。目前,伯克利研究团队已经完成了基于RISC-V指令集的顺序执行的64位处理器核心(代号为Rocket),并前后基于45nm与28nm工艺进行了12次流片。Rocket芯片主频1GHz,与ARM Cortex-A5相比,实测性能较之高10%,面积效率高49%,单位频率动态功耗仅为Cortex-A5的43%。在嵌入式领域,Rocket已经可以和ARM争市场了。
RISC-V指令集是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),RISC-V是在指令集不断发展和成熟的基础上建立的全新指令。RISC-V指令集完全开源,设计简单,易于移植Unix系统,模块化设计,完整工具链,同时有大量的开源实现和流片案例,已在社区得到大力支持。它虽然不是第一个开源的的指令集(ISA),但它是第一个被设计成可以根据具体场景可以选择适合的指令集的指令集架构。基于RISC-V指令集架构可以设计服务器CPU、家用电器CPU、工控CPU和传感器中的CPU。
在处理器领域,目前主流的架构为x86与ARM架构,但它们作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义。久而久之就变得极为冗长。RISC-V架构相对而言不用向后兼容。目前的“RISC-V架构文档”分为“指令集文档”(riscv-spec-v2.2.pdf)和“特权架构文档”(riscv-privileged-v1.10.pdf)。“指令集文档”的篇幅为145页,而“特权架构文档”的篇幅也仅为91页。相对上手和入门较快。
RISC-V架构相比其他成熟的商业架构的最大一个不同还在于它是一个模块化的架构。因此,RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用。这种模块化是x86与ARM架构所不具备的。以ARM的架构为例,ARM的架构分为A、R和M三个系列:
名称 | 用途 |
---|---|
A系列 | Application(应用操作系统) |
R系列 | Real-Time(实时) |
M系列 | Embedded(嵌入式) |
短小精悍的架构以及模块化的哲学,使得RISC-V架构的指令数目非常的简洁。基本的RISC-V指令数目仅有40多条,加上其他的模块化扩展指令总共几十条指令。