RISC-V的不同寻常之处,除了在于它是最近诞生和开源的以外,还在于和几乎所有以往的ISA不同,他是模块化的。他的核心是一个名为RV32I的基础ISA,运行一个完整的软件栈。RV32I是固定的,永远不会改变。这为编译器编写者,操作系统开发人员和汇编语言程序员提供了稳定的目标。模块化来源于可选的标准扩展,根据应用程序的需要,硬件可以包括或不包含这些扩展。这种模块特性使得RISC-V具有了袖珍化,低能耗的特点,而这对于嵌入式应用可能至关重要。
ISA设计
ISA的七种衡量标准
成本
处理器通过集成电路实现,通常称为芯片和晶粒。(晶粒是由单个圆形晶片被切割成许多单独的片得到)
使用相同大小缓存(16KB)的RISC-V Rocket处理器和采用相同技术(TSMC40GPLUS)的ARM-32 Cortex A5处理器进行比较。RISC-V晶粒的大小0.27mm²,而ARM-32晶粒的大小是0.53mm²。由于面积大一倍,ARM-32 Cortex A5的晶粒成本是RISC-V Rocket的约4(2²)倍。
注:cost≈f(die area²)
简洁性
ISA的简洁性不仅可以缩小芯片的面积,还能缩短芯片的设计和验证时间,而它们可能构成了芯片开发的大部分成本。
性能
性能可以分解为如下三个因素;
即使一个简单的ISA可能在每个程序执行的指令数方面多于复杂的ISA,但他可以通过更快的时钟频率或更低的平均单条指令周期数(CPI)来弥补。
架构和具体实现的分离
机器语言程序员了解架构后能写出正确的程序,但是却不一定能保证性能。为了在性能和成本上的对某一特定时间的某种实现进行优化,而在ISA中包含某些指令。
提升空间
随着摩尔定律的终结,对性价比进行重大改进的唯一途径是为特定领域(例如深度学习,增强显示,组合优化,图形等)添加自定义指令。这意味如今的ISA必须保留操作码以供未来的提升。
程序大小
程序越小,存储它所需要的芯片面积就越小。
当所有指令都是32位长是,ARM-32和RISC-V代码比x86-32长6%到9%。而x86-32代码比同时提供16位和32位指令的压缩版本(thumb-2和RV32C)大26%。
易于编程/编译/链接
由于寄存器中的数据访问起来要比存储器中快得多,编译器在寄存器分配方面一定要做的很好。鉴于这一点,ARM-32有16个寄存器,而x86-32只有8个。大多数现代ISA(包括risc-v)都有32个整形寄存器。有了更多寄存器,编译器和汇编程序员的工作会更加轻松。