RISC-V定义了一个 32 位处理器指令集架构(ISA),它是开源的并且可以以多种方式自由实现。它被吹捧为一个非常小而高效的架构,同时被定义为易于扩展。许多附加组件已经是经过批准的扩展,其中大量在 2021 年 12 月的 RISC-V 峰会上亮相。
但问题依然存在。基本规格是否足够小?不是添加额外的功能,而是需要删除一些东西?它作为微控制器有用吗?根据多份行业报告,2020
年 8 位微控制器市场约为 80亿美元,预计在可预见的未来将增长 4% 至 5%。2014 年,8 位仍然是最大的销量,占销售额的
39.7%,而 32 位紧随其后,为 38.5%。
如今,16 位市场已成为最大的市场,占有 48.8% 的份额。8 位正在逐渐失去市场份额,但这将是 16 位而不一定是 32 位。其中大部分是分立芯片,小型处理器显然有一个庞大且可持续的市场。
无处不在的控制器
复杂的设备可能包含许多控制器,但它们很少受到关注。Imperas
Software首席执行官 Simon Davidmann 表示:“有许多芯片包含多个大型 Arm
内核,被用作应用处理器,但你也会在其中发现许多小得多的处理器。” “它们被用来做各种各样的事情,其中许多很可能是基于 RISC-V
的小众处理器。没有人真正知道它们是什么,因为它们是隐藏的。”
这些处理器不必遵守相同的规则。Arteris
IP的研究员兼系统架构师 Michael Frank 说:“您将始终拥有几个 CPU
来执行一般处理并协调系统周围的数据移动。” “他们做了所有需要图灵完备和可编程的事情。但是你有一些专门的东西。这是硅面积的最佳利用,因为现在您可以省略算法中不需要的任何东西。”
微控制器的其他大型市场包括汽车、HVAC、物联网和医疗。一个
RISC-V 内核可能只需要 20,000
个门,那么当整个芯片可能有数百万个门时,为什么有人会担心尝试进一步优化它呢?在某些情况下,成本是最关键的因素,这意味着可能的面积最小。对其他人来说,这就是关键。对于必须使用单个电池持续数月或数年的设备,任何无所作为的逻辑都被视为必须消除的浪费。
最小的 RISC-V
RISC-V 基数很小。它仅包含每个人都必须执行的 47 条指令。相比之下,x86 为 1,503,Arm 约为 500。它使用最简单的加载/存储架构,这意味着所有操作都在内部寄存器上执行,并且有专门的指令在寄存器和内存之间进行传输。
“RISC-V
从一个简单的整数指令集开始,基本上,已经是处理器的基本结构,”Arteris 的 Frank 说。“你可以从中剥离的东西不多。最简单的
RISC-V 处理器的实现具有 32
位整数。这就是过去的微控制器。我看不出你为什么要进一步减少它的原因。伯克利团队创建了一个很好的分层和可扩展架构。他们从之前所做的所有事情中吸取了教训,并通过构建许多变体以及集成到架构中的扩展,我总是将其视为基础层,而不是可以削减的东西。”
在指令集中,可以定义寄存器文件的大小。“RISC-V
的一个非常好的方面是你可以减少它,”Imperas 的 Davidmann 说。“作为一个组织,RISC-V
试图做的是帮助人们做这样的事情。例如,有减少寄存器数量的 E 版本。通常是 32,但这个版本只定义了 16。”
例如,SiFive 最近讨论了 RV32E 的实现,该实现可以配置为仅在 13,500 个门中实现。ZERO-RISCY 是作为 PULP 平台的一部分开发的用于节能计算的核心,具有消耗 11,600 个门的两级流水线实现。
该规范还允许定义简单的控制器,这些控制器不需要大量的逻辑来围绕核心。“他们试图做到这一点,你甚至可以在没有特权模式功能和控制/状态寄存器的情况下设计它,这样你就可以把它归结为一个非常简单的控制器,”Davidmann
说。“这仍然允许你使用标准汇编器,它仍然是一个 RISC-V,但它不会很快完成你的浮点运算。它只是一个非常小的控制器。”
其中一些减少来自该标准的早期工作。Axiomise
的创始人兼首席执行官 Ashish Darbari
说:“剥离大型设计以获得更小的处理器很有价值的原因可能有很多。” “已经有来自公开处理器的例子。例如,来自 PULP 平台组的两个 RISC-V
内核 ZERO-RISCY 和 Ibex 是 RI5CY 的精简版本,后来成为 cv32e40p。在这种特定情况下,RI5CY 具有不属于标准
RISC-V ISA 的自定义指令。”
似乎没有考虑的一种减少涉及字长。“如果你减小字长,你就会失去
RISC-V 处理器的功能和美感,你可以在相同的寄存器中,在相同的 ALU 中进行地址计算、整数计算,所有事情,”弗兰克说。“在减少
RISC-V 之后,很难保留有用的东西。RISC-V 的美妙之处在于它有一个工具链,如果你开始切割东西,你就只能靠自己了。”
具有讽刺意味的是,延期可能会产生储蓄。Codasip的首席技术官
Zdeněk Přikryl
说:“如果您的芯片上有一堆处理器,那么每个处理器都可以针对特定任务进行优化或定制。” “它可以是人工智能,也可以是安全性,也可以是任何东西。我们使处理器能够以高级架构描述语言设计,通过它我们捕获指令集,可以称为架构视图,以及微架构视图,这基本上是
ISA 的实现。由于我们在高级架构语言中拥有这一单一描述,因此我们能够生成编译器、汇编器、反汇编器、模拟器,最终生成 RTL。”
一种这样的扩展是压缩指令集,它使代码空间更小。压缩指令允许您将两条指令放入一个
32 位字中。这减少了所需的程序内存量,尽管它略微增加了处理器的复杂性。一种说法是实现这一点需要 400
个门。这可能不仅仅是由内存面积的减少所弥补的。其他尝试这样做,例如 Arm Thumb 格式,本质上是不同的指令集。
因此,优化的核心可能并不总是意味着最小的。“我们有一位客户开始调查已批准的
RISC-V 扩展,试图找到最佳折衷方案,”Codasip 的 Přikryl
说。“他们从基线开始,然后添加扩展并研究不同扩展的组合。他们不仅关注性能,还关注大小和内存占用。关键之一是处理器是系统的一部分,而您正在尝试优化该系统。在这种情况下,拥有高效的代码很重要,因为当您在硅片中实现子系统时,您的指令存储器是能源和电力的主要消耗者之一。在优化过程中,我们设法将代码大小减少了大约三倍。”
进行更改确实会给流程带来一些复杂性。“任何人都可以使用
RISC-V 并对其进行更改,”Davidmann
说。“他们可以添加比特,拿走他们喜欢的比特,扔掉他们不喜欢的比特。只要是针对深度嵌入式系统,没有人会关心他们完成了什么。没有人会看到它。这就是为什么一开始没有人真正关心兼容性和合规性的原因。”
修改后的内核确实必须经过验证。Axiomise
的 Darbari 说:“沿着这条道路前进的最大挑战是确定 delta 更改对核心的整体功能有何影响,以及确定 delta
是否按照预期进行。” “这些是正式方法的最佳点,可以通过检查精简内核的架构合规性与正式验证 RISC-V 内核的应用程序formalISA
中的一组正式指定的架构属性来发现差异。”
结论
指定的
RISC-V ISA 是一个最小但完整的处理器架构,可以在少于 20K
的门中实现。该标准考虑到在某些情况下只需要一个最小的核心,并且已经定义了变体和扩展以使其适应代码大小等问题。扩展可能会产生更优化的内核,不仅可以更快地完成工作,而且可以减小尺寸、功耗或在特定应用中重要的其他方面。
用后来由林肯总统改编的约翰·利德盖特的话来说,“你可以一直取悦某些人,有时也可以取悦所有人,但你不能一直取悦所有人。”
RISC-V International 在让大多数人开心方面做得很好。