温州市建设安监局网站,苏州seo关键词优化软件,dedecms 一键更新网站,网站seo1. 前言
RISC-V旨在支持广泛的定制和专业化。RISC-V的ISA是由一个基本整型ISA和其它对基本ISA的可选扩展组成。每个整型ISA可以使用一个或多个可选的ISA扩展进行扩展。
基本整型ISA精选了最小的一组指令#xff0c;这些指令足以为编译器、汇编器、链接器和操作系统提供足够的…1. 前言
RISC-V旨在支持广泛的定制和专业化。RISC-V的ISA是由一个基本整型ISA和其它对基本ISA的可选扩展组成。每个整型ISA可以使用一个或多个可选的ISA扩展进行扩展。
基本整型ISA精选了最小的一组指令这些指令足以为编译器、汇编器、链接器和操作系统提供足够的功能它提供了一组便利的ISA和软件工具链骨架可以围绕它构建更多定制的处理器ISA。基本整型ISA与早期RISC处理器非常类似除了没有分支延迟槽(branch delay slot)和可选的变长指令编码(Variable-length instruction encoding)。 2. RISC-V基本整型ISA
虽然RISC-V ISA说起来方便但RISC-V实际上是一个ISA集合目前确定的有四个基本ISA。每个基本整型ISA的特征是整型寄存器的宽度、相应的地址空间的大小以及整型寄存器的数量。RV32I和RV64I是两个主要的基本整型ISA变体分别提供32-bit和64-bit地址空间用术语XLEN来表示以bit为单位的整型寄存器的宽度它的值为32或64。RV32E和RV64E分别是RV32I和RV64I基本ISA的子集变体它们用于支持小型微控制器并且具有一半数目的整型寄存器。另外还有一个未确定的基本ISA是RV128I(XLEN128)。 RISC-V之所以分成4个基本整型ISA而不是做成一个统一的ISA。主要的优势是每个基本ISA都可以根据自己的需要进行优化而不需要支持其它基本ISA所需的所有操作。例如RV64I可以省略只用于处理RV32I中较窄的寄存器的指令和CSR。RV32I可以使用只保留给更宽地址空间变体所需的指令的编码空间。主要缺点是它使一个基本ISA在另一个基本ISA平台上模拟所需的硬件复杂化例如在RV64I上模拟RV32I。 3. RISC-V ISA的可选扩展
任何RISC-V处理器实现都必须支持基本整型ISA (RV32I、RV32E、RV64I、RV64E或RV128I)。此外一个实现可以支持一个或多个扩展。RISC-V ISA中标记为“Ratified”的模块表示此时已被批准标记为“Frozen”的模块表示在被批准之前预计也不会发生重大变化标记为“Draft”的模块表示在被批准之前预计会发生变化。
扩展(extension)可以被分类为标准(standard)、定制(custom)和不符合(non-conforming)。为此我们将每个RISC-V ISA编码空间(以及相关的编码空间如CSR)划分为三个互不关联的类别标准(standard)、保留(reserved)和定制(custom)。 标准扩展和编码是由RISC-V国际组织定义的。任何扩展不是由RISC-V国际组织定义的都算是非标准的。每个基本ISA及其标准扩展仅使用标准编码并且在使用这些编码时不得相互冲突。保留编码目前没有定义但为将来的标准扩展保留一旦被使用它们就称为标准编码。定制编码永远不会用于标准扩展而只能用于特定于供应商的非标准扩展。非标准扩展要么是只使用定制编码的定制扩展要么是使用任何标准或保留编码的不符合扩展。
指令集扩展通常是共享的但可能根据基本ISA提供略有不同的功能。
上述扩展可以进一步分为两大类标准(standard)和非标准(non-standard包括定制和不符合)。
标准扩展通常是有用的并且不与任何其他标准扩展相冲突。目前RISC-V手册中描述的“MAFDQLCBTPV”扩展要么是完成的要么是计划中的标准扩展。非标准扩展可能是高度专门化的并且可能与其他标准或非标准扩展相冲突。预计随着时间的推移会开发出各种各样的非标准扩展其中一些最终会被提升为标准扩展。 4. ISA命名规范
RISC-V ISA旨在支持各种指令集扩展的各种实现有组织的命名方案简化了软件工具和文档RISC-V ISA扩展命名方案可以简洁地描述硬件实现中的ISA。ISA命名字符串不区分大小写。
RISC-V ISA命名组成为
基本整型ISA名 标准扩展名 非标准扩展名 4.1 基本整型ISA
RISC-V ISA字符串以RV32I、RV32E、RV64I、RV64E或RV128I开头表示支持的基本整型ISA的地址空间大小(以bit为单位)。 4.2 标准扩展名
标准ISA扩展由一个单个字母组成的名称。例如“M”表示整型乘法和除法“A”表示原子访存指令“F”表示单精度浮点指令“D”表示双精度浮点指令。任何RISC-V指令集变体都可以通过将基本整型前缀与包含的扩展名连接起来简洁描述。例如RV64IMAFD。
一些ISA扩展依赖于其他扩展的存在例如“D”依赖于“F”“F”依赖于“Zicsr”。这些依赖关系可能隐含在ISA名称中。例如RV32IF等价于RV32IFZicsr, RV32ID等价于RV32IFD和RV32IFDZicsr。
指令集可能随着时间的推移而扩展或改变需要在扩展名后面加上扩展版本号。版本号分为主版本号和次版本号用“p”分隔。如果次要版本为“0”则可以从版本字符串中省略“p0”。主版本号的更改意味着向后兼容性的丧失而仅小版本号的更改必须向后兼容。例如“RV64I1p0M1p0A1p0F1p0D1p0”和“RV64I1M1A1F1D1”的含义是一样的。
为了提高可读性并消除歧义引入下划线“_”可用于分隔ISA扩展例如“RV32I2_M2_A2”。 4.3 其他标准扩展名
标准扩展也可以使用一个“Z”来命名后面跟着一个字母名称和一个可选的版本号。例如“Zifencei”命名了instruction-fetch fence扩展且“Zifencei2”与“Zifencei2p0”名称版本相同。
“Z”后面的第一个字母通常表示最密切相关的字母扩展类别类别有IMAFDQCVH。例如对于用于附加浮点指令的“Zfa”扩展字母“f”表示该扩展与“f”标准扩展相关。如果命名了多个“Z”扩展名它们应该首先按类别排序然后按类别中的字母顺序排序——例如“Zicsr_Zifencei_Zam”。
所有多字母扩展名包括以“Z”为前缀的扩展名必须用下划线与其他多字母扩展名分开例如“RV32IMACZicsr_Zifencei”。 4.4 非标准扩展名
非标准扩展使用单个“X”命名后跟字母名称和可选的版本号。例如“Xhwacha”命名了Hwacha vector-fetch ISA扩展“Xhwacha2”与“Xhwacha2p0”名称2.0版本相同。
非标准扩展必须列在所有标准扩展之后并且与其它多字母扩展一样必须用下划线与其他多字母扩展分开。例如带有非标准扩展名Argle和Bargle的ISA可以命名为“RV64IZifencei_Xargle_Xbargle”。
如果列出了多个非标准扩展则应按字母顺序排列。 下表列出了一部分标准的扩展名表还定义了扩展名必须在ISA名称字符串中出现的规范顺序表中越往上出现在ISA名称字符串中的位置需要越靠前例如RV32IMACV是合法的而RV32IMAVC是非法的因此C必须在V之前。