1.指令集编码
本文会接着RISC-V 简介(2)RISC-V指令集的特点及分类介绍RISC-V指令集的编码结构。指令长度按照指令编码可分为16位,32位,48位,64位,128位等,如图1所示。
16位指令长度:指令为16位,最低两位是aa,其中aa可以为00,01,10(aa不能为11);如果aa=11, 则一定为32位及以上的指令长度。
32位指令长度:指令为32位,最低五位是32位指令长度的标示bbbaa, 其中aa必须为11,bbb为000-110, bbb不能为111。
48位指令长度:指令为48位,最低6位为01_1111,实际上没有厂家和个人会支持48位CPU的开发。
64位指令长度:指令为64位,最低7位是011_1111。
80-192位指令长度:最低7位为111_1111,第12-14为nnn 而且nnn不能为111。
128位指令长度:128位的指令,低7位为111_1111,12-14位nnn为011.
大于192位指令长度:最低7位为 111_1111,第12-14位 nnn为111 。
图1 RISC-V 指令长度编码 [1]
2.编码结构的特点和优点
编码结构主要优点有以下三点:
可快速识别该指令是16位,32位,48位,64位还是128位,给指令译码器带来快速简洁的识别方便设计者混合使用不同位数的指令架构,便于代码优化。
压缩指令集模块(C)共46条16位长度的指令,但所有46条指令都不是独立的,只是32位指令中特殊条件下的压缩,因此每条16位指令都能找到32位指令的原型,因此在指令译码之前可以由硬件或软件翻译成32位指令。指令译码和执行依然可以按照32位指令的方式运行。因此如果在译码前翻译成32位指令,压缩格式在后续执行过程是不可见的。
3.指令集模块
1.标准配置模块 2. 扩展指令集 等
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。