主页
FPGA培训
关于平台
企业孵化
峰会大赛
展厅预约
FPGA知识库
联系我们
登录 注册
首页 > 技术文章 > RISC-V指令集编码结构
RISC-V指令集编码结构
来源: 2021-09-30 15:50

本文会接着介绍RISC-V指令集的编码结构。指令长度按照指令编码可分为16位,32位,48位,64位,128位等,如图1所示。

  1. 16位指令长度:指令为16位,最低两位是aa,其中aa可以为00,01,10(aa不能为11);如果aa=11, 则一定为32位及以上的指令长度。

  2. 32位指令长度:指令为32位,最低五位是32位指令长度的标示bbbaa, 其中aa必须为11,bbb为000-110, bbb不能为111。

  3. 48位指令长度:指令为48位,最低6位为01_1111,实际上没有厂家和个人会支持48位CPU的开发。

  4. 64位指令长度:指令为64位,最低7位是011_1111。

  5. 80-192位指令长度:最低7位为111_1111,第12-14为nnn 而且nnn不能为111。

    1. 128位指令长度:128位的指令,低7位为111_1111,12-14位nnn为011.

  6. 大于192位指令长度:最低7位为 111_1111,第12-14位 nnn为111 。

RISC-V 指令集编码

图1 RISC-V 指令长度编码 [1]

2.编码结构的特点和优点

编码结构主要优点有以下三点:

  1. 可快速识别该指令是16位,32位,48位,64位还是128位,给指令译码器带来快速简洁的识别

  2. 方便设计者混合使用不同位数的指令架构,便于代码优化。

  3. 压缩指令集模块(C)共46条16位长度的指令,但所有46条指令都不是独立的,只是32位指令中特殊条件下的压缩,因此每条16位指令都能找到32位指令的原型,因此在指令译码之前可以由硬件或软件翻译成32位指令。指令译码和执行依然可以按照32位指令的方式运行。因此如果在译码前翻译成32位指令,压缩格式在后续执行过程是不可见的。

3.指令集模块

1.标准配置模块


    1. RV32I,RV32E:其中E只是I中的一个分集,RV32I定义了32个通用寄存器组,RV32E使用了其中的16个(后续会专门介绍寄存器组)。

    2. RV64I

    3. RV128I

2. 扩展指令集,如图2所示


    1. M:整数乘法和除法指令

    2. A:存储器原子(Atomic)操作指令和 Load-Reserved/Store-Coditional指令

    3. F:单精度(32-bit)浮点指令集

    4. D:双精度(64-bit)浮点指令集

    5. C:压缩指令集,指令长度为16位

扩展指令架构对比

图2 部分扩展指令架构对比

4.文章参考

[1] D. Patterson and A. Waterman, The RISC-V reader. Berkeley: Strawberry Canyon LLC, 2018.


声明:文章来源于IC知识库本文内容及配图的版权归版权所有人所有,内容仅代表作者个人观点,不代表本网站观点或证实其内容的真实性。对于本网刊载的各类评论非本网评论员评论,仅代表评论者个人观点,并不代表本网证实或赞成其描述。如其他媒体、网站或个人转载使用,需保留本网注明的“稿件来源”,并自负法律责任。本文转载仅为更好的传播行业信息,若有内容图片侵权或者其他问题,请及时通过邮件联系我们,以便做侵删处理。