开源的好处已经被赋予了一种称为RISC-V的指令集架构(ISA)。 的Linux是最早,最著名的开源技术示例之一。有关广泛接受的官方开源定义,请参见 开源计划。但是,开源并不仅限于Linux。最近的一项开源计划是针对开源RISC-V的,被称为“风险五”。 RISC-V是一种可扩展的,基本整数的精简指令集计算机(RISC)ISA,它是UC Berkeley于2010年发起的“夏季项目”,旨在为课堂教学创建一个简单的ISA,该知识产权不会受到任何法律纠缠。 )的另一家公司。 RISC-V 花费的时间比预期的要长,并于2015年作为免版税的开源项目正式启动, RISC-V基金会.
RISC-V旨在与其他类似 RISC ISA,但也要保持简单,还可以提供广泛的自定义和专业化功能。基本ISA可以使用标准的可选扩展名和操作码进行扩展,以创建自定义的指令。因此,RISC-V ISA扩展分为标准扩展和非标准扩展。但是,不能重新定义基本整数指令。
这种简单性的好处之一是RISC-V ISA可以用于小型嵌入式处理器,甚至可以用于高性能的超级计算机,其应用范围很广。三种不同的RISC-V指令集的地址长度分别为32位,64位和128位。如上所述,开源还创建了一个标准,每个人都知道期望什么,并且技能集可以在公司之间移植。 RISC-V可以通过标准的便携式ISA在非常复杂的工程领域节省大量时间和精力。作为开源,任何人都可以使用RISC-V ISA进行更改或添加专有部分。标准的开放式ISA可防止在非常复杂,先进的技术中浪费能源“重新发明轮子”,从而使许多人受益。 ISA不会直接影响性能或能源效率 怎么样 使用ISA。 RISC-V作为嵌入式处理的必要组成部分,可以大大增加嵌入式系统的成本,因此可以节省大量时间和金钱。
另一个好处是,现在越来越多的大学教授RISC-V,这使毕业生在就业的第一年变得更有价值。利用开放软件堆栈和硬件,对ISA的研究和教育有可能变得更加现实。 RISC-V用户手册的介绍指出:“我们的立场是,ISA可能是计算系统中最重要的接口,并且没有理由认为这样的重要接口应该是专有的。 “
RISC-V当前有4个 基础 整数指令集,每个指令集均由其整数寄存器的宽度和相应的用户地址空间大小来表征。全部使用二进制补码表示有符号整数。 RV32I和RV64I是两个主要的基本整数变量,它们分别支持32位和64位用户级地址空间。 RV32E实际上是RV32I基本指令集的子集变体,它是为支持小型MCU而添加的。将来的128位用户地址空间将表征RISC-V框架所容纳的指令库变型RV128I。基本ISA和扩展组合在一起以指示自定义ISA。例如,RV32IMAC表示32位整数+原子+乘法+压缩。 RV64GC表示ISA是64位的,并支持整数,乘法,原子,单精度和双精度浮点,以及对16位指令的压缩。 RV64GCXext指示IMAFDC和非标准扩展名,其中“ ext”是非标准扩展名。规范中未描述非标准扩展名(xext)。有关ISA名称字符串选项,请参见表1。
基础 | 版 | ||
RV32I | 32位基本整数ISA | 2.0 | 冰冻的 |
RV32E | 嵌入式系统的RV32I的简化版本 | 1.9 | |
RV64I | 64位基本整数ISA | 2.0 | 冰冻的 |
RV128I | 128位基本整数ISA | 1.7 | |
扩展名 | 标准扩展名: | 版 | |
M | 整数乘法和除法 | 2.0 | 冰冻的 |
A | 原子学 | 2.0 | 冰冻的 |
F | 单精度浮点 | 2.0 | 冰冻的 |
D | 双精度浮点 | 2.0 | 冰冻的 |
Q | 四精度浮点 | 2.0 | 冰冻的 |
L | 十进制浮点数 | 0.0 | |
C | 16位压缩指令 | 2.0 | 冰冻的 |
B | 位操作 | 0.0 | |
J | 动态翻译语言 | 0.0 | |
T | 交易记忆 | 0.0 | |
P | SIMD打包说明 | 0.1 | |
V | 向量运算 | 0.2 | |
N | 用户级中断 | 1.1 | |
扩展名 | 代表: | ||
Xext | 非标准扩展名“ ext” | 不适用 | |
G | 通用,是合并IMAFD的绰号 | 不适用 |
表1:ISA名称字符串。基本ISA和扩展名可以组合以指示自定义ISA。
较小的代码大小可以降低嵌入式系统的成本。例如,微控制器中的闪存数量通常会影响价格。较小的代码大小可以提高性能 快取基于内核的。 RV64也可以使用压缩指令扩展名。 RISC-V的合理之处在于,您可以在16位体系结构中使用64位指令。
不编写本书就很难详细介绍RISC-V,因此下面提供了一些选择。
的 RISC-V指令集手册 展示了RISC-V ISA的灵活性。基本的RISC-V ISA是用于访问内存的低端字节序。但是,可以制作非标准变体来支持big-endian或bi-endian存储系统。加载存储体系结构仅加载和存储指令。访问存储器和算术指令仅对CPU寄存器起作用。 RISC-V架构中有32个整数寄存器,如果启用了FP,则还有一个可选的32个浮点寄存器。寄存器的宽度由ISA确定。 RISC-V规范还描述了定义标准功能或寄存器的应用二进制接口(ABI),这对软件互操作性很重要。
RISC-V对全局和本地中断进行了分类。本地中断的两种类型是软件中断和计时器中断,每个硬件线程有两个本地中断。本地中断是可选的,可用于连接外围设备(例如UART中断)。 RISC-V将全局中断定义为可以路由到系统中任何硬件线程的中断。
RISC-V定义了三个级别的特权,称为模式。级别0用于用户或应用程序层特权。级别1用于主管权限。级别2是保留级别,级别3是计算机级别特权。机器模式是唯一需要的模式,也是最高特权模式。这允许进行一系列有针对性的实现,包括最简单的版本,其中仅实现机器模式。机器和主管模式分别具有自己的一组控制和状态寄存器(CSR)。

RISC-V具有物理内存保护,用于对特权较低的模式强制执行访问限制。使用不受信任的用户模式软件,RISC-V可以限制该软件可以访问的内存级别。 RISC-V物理内存保护方案还具有锁定内存区域的能力。锁定区域将对所有访问(包括机器模式)强制执行权限。例如,这可用于在引导后保护内存区域。解锁该区域的唯一方法是重置系统。物理内存保护方案最多允许16个受保护区域,最小区域大小为4字节。 RISC-V支持虚拟内存,从而可以进行复杂的内存管理和操作系统支持。
RISC-V旨在随着时间的推移保持基础和每个标准扩展的稳定性。可以通过将新指令分层作为可选扩展进行更改。不管后续扩展如何,基本整数ISA将继续作为独立ISA受到完全支持。 RISC-V ISA基础结构包括文档,支持一些操作系统的端口,编译器工具链,FPGA和ASIC中的硬件实现,体系结构测试套件和模拟器,社区论坛以及教材。有关更多信息,请查看 RISC-V规格,看一些 SiFive的RISC-V 101网络研讨会,由RISC-V的创建者创立的公司,或访问 YouTube上的RISC-V频道.
发表评论