RISC-V又被称为“CPU的Linux”。对一些人来说,这个称谓像一种传承又像一种创新,尤其当你是开源的坚定信仰者。不过我是一个地道的实用主义者,而RISC-V的过度营销反而让我对这个词儿提不起兴趣。
直到我开始详细研究RISC-V,我才发现成为某种微处理器的Linux可能是RISC-V最不足为外人道的优点之一。
在以下的文章中,我将对RISC-V的创新性展开更深入的讨论。规范开源已经是许多框架都在做的事,所以并不新鲜,基于本身架构设计上的特性和开放性才让RISC-V的创新力凸显出来。
一个可拓展的指令集架构
为什么x86和ARM
不能复用类似方式?
软件如何支持多个扩展
x86 和 ARM 扩展的问题
把指令集的精简程度作为一项特性
然而,沿用旧有想法并非因为RISC-V设计人员缺乏想象力或创新失败。相反,他们刻意希望使用来自现有架构的经过验证的指令和设计。
原因很多。比如过去许多新颖且过于“聪明”的选择在未来的微架构创新中已过时。
相反,RISC-V的创新是取一切精华去一切糟粕的完美体现,以保证指令集的精简性。从过往经验中吸取的教训让他们知道将来需要同时支持压缩指令和64位指令。
RISC-V指令编码的变体很少,
这使得它们非常容易解码。
其次,精简性有利于性能,因为更小和更简单的芯片更容易提高时钟频率。一家名为Micro Magic的小公司已经制造了一种RISC-V芯片,它可以在0.07w的功率上运行。
相比之下,苹果M1芯片在10w的功率上运行。Micro Magic芯片的时钟频率最高可达5 GHz。
凝练的设计
乍看之下“凝练”这个词不该用来形容RISC-V。但实际上,压缩指令集和64 bits指令等从一开始就被预设具有可扩展性。基本指令级是在设计时考虑到将有一个64 bits扩展,而这一点之前的设计都没有考虑到,所以32 bits指令都必须为64 bits的重复。相较之下,在RISC-V上大多数现有指令只在64 bits寄存器上工作,而不是在64 bits的RISC-V CPU上使用32 bits寄存器。因此,RISC-V 64 bits扩展实际上只是添加特殊指令来处理64 bits寄存器的32 bits部分。
例如, ADDW 和 SUBW 指令用于将32 bits结果存储在目标寄存器中。正常 ADD 和 SUB 指令会在 64 bits CPU 上加减 64 位数字,在32 bits CPU 上加减32 bits的数字。
这意味着RISC-V上的64 bits 的代码看起来几乎与32 bits 代码相同。
压缩指令集是一个类似的扩展指令集,允许将两个指令放在32 bits 字节内,而其它框架只能用笨拙的方式挤压。例如,在ARM上Thumb2 压缩指令格式本质上是一种不同的ISA,而不是RISC-V上的扩展。这意味着CPU必须在内部切换模式并使用不同的解码器。这增加了复杂性。相比之下,解码压缩的RISC-V指令非常简单。将它们转换为32位指令只需要400个逻辑门(与门、或门、或非门、与非门)。这还只是冰山一角。
实现基本指令集的最小RISC-V CPU仅用了8000个逻辑门。
矢量指令集
结论
非增量ISA。以前添加的指令不会永远使ISA膨胀。软件开发人员、工具开发人员和硬件制造商必须确保可选扩展的存在与否是可控的。
积极删除严格来说不需要的所有内容,以将复杂性保持在最低限度。这意味着它很容易实现RISC-V芯片,并且可以在几个晶体管中完成,使其更便宜,更容易增加时钟频率等。
点击文末阅读原文:
What Is Innovative About RISC-V?
来源:酷芯微电子
作者:Erik Engheim
翻译:酷芯PR团队
校对:酷芯芯片工程部
上海酷芯微电子有限公司
【电话】+86 2161422387
【传真】+86 2161807625
【邮箱】info@artosyn.cn
【地址】上海市杨浦区淞沪路308号9号楼6楼
END