终于有人理清了各个指令集之间的关系和发展。与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。虽然这不是第一个开源指令集,但它的意义重大,因为它的设计使其适用于现代计算设备,如仓库规模的云计算机、高端手机和微型嵌入式系统。设计人员考虑了这些应用的性能和能效。该指令集还具有广泛的软件支持,解决了新指令集的常见弱点。RISC-V的特点是:1.指令集的使用完全开源,RISC-V基金会不收取高额授权费。开源采用宽松的BSD协议,完全免费供企业使用。同时也允许企业在不开放共享的情况下添加自己的指令集扩展,实现差异化发展。2.简单的架构RISC-V架构坚持简单的设计理念。体现在:在处理器领域,主流架构是x86和ARM架构。x86和ARM架构的发展过程也伴随着现代处理器架构技术的不断发展和成熟。但是,作为一个商业架构,为了保持架构的向后兼容性,不得不保留很多过时的定义,导致了指令的数量。数量多,指令冗余严重,文档数量庞大,因此开发新的操作系统或直接在这些架构上开发应用程序的门槛非常高。RISC-V架构可以完全抛开包袱,利用经过多年发展已经成为比较成熟技术的计算机架构,因此更容易上手。RISC-V基础指令集只有40多条指令,加上其他模块化的扩展指令,一共是几十条指令。RISC-V的规范文档只有145页,“特权架构文档”只有91页。3.易于移植*nix现代操作系统已经将特权指令和用户级指令分开。特权指令只能被操作系统调用,而用户级指令只能在用户态调用,以保证操作系统的稳定性。RISC-V提供了特权级指令和用户级指令,并提供了详细的RISC-V特权级指令规范和RISC-V用户级指令规范的详细信息,使开发者可以轻松地将linux和unix系统移植到RISC-V平台。4.模块化设计RISC-V架构不仅短小紧凑,而且其不同部分可以模块化的方式组织在一起,力图通过统一的架构满足各种应用场景。用户可以灵活选择不同的模块组合,满足自己定制化设备的需求。例如,对于小面积、低功耗的嵌入式场景,用户可以选择与RV32IC结合的指令集,只使用MachineMode(计算机模式);对于性能应用操作系统场景,可以选择RV32IMFDC等指令集,使用两种模式:MachineMode(计算机模式)和UserMode(用户模式)。5.完整的工具链对于CPU的设计,工具链是软件开发者与CPU交互的一个窗口。没有工具链,对软件开发人员开发软件的要求非常高,甚至软件开发人员也无法让CPU工作。在cpu设计中,工具链的开发是一项庞大的工作。如果使用RISC-V来设计芯片,芯片设计公司不再担心工具链问题,只需要专注于芯片设计。RISC-V社区提供了完整的工具链,RISC-V基金会继续维护工具链。目前对RISC-V的支持已经纳入主要工具,如编译工具链gcc、仿真工具qemu等。6.开源实现更多地因为商业因素加入RISC-V阵营。目前,伯克利研究团队已经完成了基于RISC-V指令集顺序执行的64位处理器核心(代号Rocket),并基于45nm和28nm工艺流片12次。Rocket芯片的主频为1GHz。与ARMCortex-A5相比,实测性能提升10%,面积效率提升49%,单位频率动态功耗仅为Cortex-A5的43%。在嵌入式领域,Rocket已经可以和ARM争夺市场。目前,全球已有数百家科技公司加入了RISC-V阵营,其中绝大部分是出于商业原因。虽然在很多报道中,ARM的成功都归功于开放,但实际上,ARM只是在商业模式上开放,技术上很卡。至此,获得ARM32授权的公司一只手就可以数过来。ARM64的license虽然多了一些,但是license费用极其昂贵。法国创业公司Greenwave表示,如果他们使用ARM架构,他们将花费1500万美元用于授权费。而且,授权到期后,是否继续授权以及授权费用都必须重新协商。虽然对于高通、苹果、华为等大公司来说,数亿元的授权费不算什么,但对于初创企业来说,这是难以承受的负担。为了更深入地研究RISC-V,我们应该看看一些不同类型的指令集架构。当前的指令集架构类型是什么?最常见的按其复杂性进行描述和分类:精简指令集(RISC)和复杂指令集计算机(CISC)这仅实现常用指令,不太常见的操作作为子例程实现。使用子程序有性能上的折衷,但它只适用于最不常见的操作。RISC使用加载或存储架构,这意味着它将指令分为访问内存的指令和执行算术逻辑单元(ALU)操作的指令。RISC的英文全称是ReducedInstructionSetComputer,中文是简化指令集。特点是所有指令的格式一致,所有指令的指令周期也相同,采用流水线技术。中高端服务器使用RISC指令的CPU主要有Compaq(康柏,新惠普)的Alpha、HP的PA-RISC、IBM的PowerPC、MIPS的MIPS和SUN的Sparc。在计算机指令系统的优化和发展过程中,出现了两个完全不同的优化方向:CISC技术和RISC技术。CISC指复杂指令集计算机(ComplexInstructionSetComputer);RISC是指精简指令集计算机(ReducedInstructionSetComputer)。这里的计算机指令系统是指计算机底层的计算机指令,即CPU可以直接识别的指令。随着计算机系统的复杂化,要求计算机指令系统的结构能够使计算机的整体性能更快、更稳定。最初,人们采用的优化方法是设置一些复杂的功能指令,将一些原本由软件实现的常用功能用硬件指令系统代替,以提高计算机的执行速度。这种计算机系统称为复杂指令系统计算机,或ComplexInstructionSetComputer,简称CISC。另一种优化方法是在1980年代开发的。它的基本思想是尽可能地简化计算机指令的功能,只保留那些功能简单、可以一拍执行的指令,在一个周期内使用更复杂的功能。子程序实现,这种计算机系统称为精简指令集计算机。即精简指令集计算机,简称RISC。RISC技术的本质是通过简化计算机指令的功能来降低指令的平均执行周期,从而提高计算机的运行频率,同时使用大量的通用寄存器来提高运行速度子程序执行。RISC和CISC是设计和制造微处理器的两种典型技术,虽然它们都试图在体系结构、运算、软硬件、编译时间和运行时间等诸多因素之间做出一定的平衡,以达到高效的目的,但是所用的方法不同,所以在很多方面都有很大的不同。主要包括:1.指令系统:RISC设计者着重于那些经常使用的指令,并尽量使它们简单高效。对于不常用的功能,往往通过组合指令来完成。因此,在RISC计算机上实现特殊功能时效率可能较低。但是可以通过流水线技术和超标量技术进行改进和补偿。CISC计算机的指令系统比较丰富,有专门的指令来完成特定的功能。因此,处理特殊任务效率更高。2、内存操作:RISC对内存操作有限制,简化了控制;而CISC计算机有很多内存操作指令和直接操作。3、程序:CISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,设计难度大;而RISC汇编语言程序编程相对简单,科学计算和复杂运算相对容易编写,效率高。4、中断:RISC计算机可以在指令执行的适当位置响应中断,但CISC指令的执行时间比CISC指令短,因此中断响应及时;而CISC计算机在指令执行完成后响应中断。5、CPU:RISCCPU包含的单元电路少,因此占地面积小,功耗低;而CISCCPU由于电路单元丰富,功能强,面积大,功耗大。6、设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,易于采用新技术;CISC微处理器结构复杂,设计周期长。7、用户使用:RISC微处理器结构简单,指令规则,性能易于掌握,易学易用;CISC微处理器结构复杂,功能强大,特殊功能易于实现。8、适用范围:由于CISC指令系统的确定与具体的应用领域有关,因此CISC计算机更适用于专用计算机;RISC计算机更适用于通用计算机。超长指令字(VLIW)和显式并行指令计算(EPIC)VLIW是超长指令的组合,将许多指令连接在一起以提高运算速度。超长指令字(VLIW)是指令级并行,超线程(Hyper-Threading)是线程级并行,多核是芯片级并行。这三种方法都是提高并行计算性能的有效途径。其中,VLIW(VeryLongInstructionWord)架构是美国Multiflow和Cydrome公司在1980年代设计的架构,而EPIC架构则源于VLIW。上述方法要求硬件执行所有这些逻辑,从而使硬件复杂化。相反,VLIW将这种复杂性留给了程序。作为权衡,编译器变得更加复杂,而硬件得到简化并且在计算上仍然表现良好。VLIW最常见于嵌入式媒体处理器和图形处理单元(GPU)。然而,Nvidia和AMD已经转向RISC架构来提高非图形工作负载的性能。为开拓64位处理器的高端应用市场,英特尔与惠普于1994年6月签署合作协议,共同开发以服务器和T工作站为主要应用对象的新型64位架构高性能微处理器。1997年11月,英特尔和惠普发布了基于EPIC(ExplicitlyParallelInstructionComputing,显式并行指令计算)的安腾系统架构。超标量和VLIW是开发指令级并行性的两种极端结构。前者完全依靠流水线硬件来动态识别并行指令并分配给相应的功能单元执行,而后者则将指令级并行的开发工作全部交给编译器来静态确定流出时间以及每条指令在编译时的执行延迟,仅依靠简单的流水线硬件来保证在指令的实际执行延迟与编译器假定的延迟不一致时,程序的执行结果仍然正确。在这两种结构中,单指令级的并行开发机制使得它们都存在着严重的先天缺陷:超标量结构的硬件复杂度过高,学术界和工业界一致认为8条指令同时流转和执行将达到这种结构的限制;VLIW面临着严重的代码兼容性问题,目前的VLIW编译器的智能程度还远远不能满足人们的要求。显式并行指令计算(EPIC)技术的提出正是为了解决这两种结构的本质缺陷。它是在VLIW的基础上设计的,结合了超标量结构的一些优点。以有限的硬件开销为代价,利用了更多的指令级并行性。MinimumInstructionSet(MISC)MISC比RISC小,它包含了极少量的基本操作和相应的操作码。如果它们基于堆栈而不是基于寄存器,则它们被归类为MISC,但也可以通过指令数(少于32条但多于1条)来定义。单指令集(OISC)这描述了仅使用一条指令的抽象计算机,它消除了对计算机语言操作码的需要。例如,“mov”是图灵完备的,这意味着它能够成为OISC,以及其他使用减法的指令。据我所知,OISC还没有商业化。在很多媒体报道中,定义一套指令集被描述为黑科技,但实际上,实现高性能CPU,围绕指令集构建软件生态系统,才是真正具有挑战性的工作。定义一套指令集难度并不大,伯克利研究团队的四名成员仅用了3个月就完成了RISC-V指令集的开发。由于伯克利研究团队缺人缺钱,他们决定开源RISC-V,成为CPU中的Linux。在得到各方的支持后,他们陆续开发了一些产品。
