4074|4

1114

帖子

15

TA的资源

纯净的硅(高级)

楼主
 

RISC-V精简到何种程度?能省的都省了! [复制链接]

RISC-V是一个典型三操作数、加载-存储形式的RISC架构,包括三个基本指令集和6个扩展指令集,如表1所示,其中RV32E是RV32I的子集,不单独计算。
 
 
其中RV32I指令集仅有47条指令,却能够满足现代操作系统运行的基本要求,47条指令按照功能可以分为如下几类。
(1)整数运算指令:实现算术、逻辑、比较等运算。
(2)分支转移指令:实现条件转移、无条件转移等运算,并且没有延迟槽。
(3)加载存储指令:实现字节、半字、字的加载、存储操作,采用的都是寄存器相对寻址方式。
(4)控制与状态寄存器访问指令:实现对系统控制与状态寄存器的原子读-写、原子读-修改、原子读-清零等操作。
(5)系统调用指令:实现系统调用、调试等功能。
指令格式
先来看看指令格式,这格式规律地一塌糊涂啊,看着这张图,我的强迫症瞬间消失了。有规律的指令编码不仅是让强迫症患者舒服,也让处理器很舒服,指令越有规律,解码器所要的gate越少,芯片面积越小,运行速度越快。
 
 

没有立即数减法?
只有addi没有subi,减法怎么办?无论是数学上还是程序上,x - y都等价于x + (-y),也就是说可以把减法变成加法的,把被减数转成负数然后再加上减数就实现了和减法一样的功能了。正是基于这个原理,RISC-V只提供立即数加法,没有提供立即数减法,如果需要立即数减法,那么就要麻烦编译器把这个立即数转化成负数,然后继续使用加法。这也是RISC-V将立即数作为有符号数处理的原因吧。
x0简化指令集
通过引入x0寄存器,很多特殊指令用普通的指令加上x0做操作数就给解决了。指令的数量大大降低,指令数降低了,这处理器的解码电路不就简化了嘛。
32位常量
之前用ARM的处理器,ARM都是将立即数表示不下的常量存到常量池,然后用PC相关的LDR指令加载到寄存器的。RISC-V的常量完全是用指令拼接的,不需要Load指令,要知道使用Load指令是需要额外的访问周期的。RISC-V单条指令可以表示12位的有符号常量,超过12位需要两条指令来合成。其中一条指令是lui,lui指令加载常量的高20位,低12位可以用addi指令加上去,当然了这个过程又要麻烦编译器仔细算一算立即数到底是什么了,因为addi指令执行的是有符号加法,其中的12位立即数是会先被符号扩展成32位的有符号数再参与计算的。ARM的常量加载需要8个字节,一条指令+一个常量;RISC-V的常量加载也是需要8个字节,两条指令。占用的程序空间是一样的。
只有小于和大于等于
RISC-V的比较跳转指令只有blt和bge,即只有小于和大于等于。那大于和小于等于就不需要了吗?也是需要的,不过RISC-V用了个很巧妙的办法,将blt的两个参与比较的操作数位置换一下,就有了bgt,将bge的两个参与比较的操作数位置换一下,就有了ble。真是个好办法。用两条指令实现了四条指令的工作,其中两条是伪指令,实际的指令只有两条。
让编译器做更多
我对RISC的理解就是:处理器尽量少做,让编译器尽量多做。这是非常有道理的,毕竟编译的次数远少于执行的次数啊。上面几个段落就提到不少要让编译器多做的工作,再例举个为了简化处理器的设计而让编译器多做的工作。
B-type是比较跳转指令的格式,J-type是长跳转或函数调用指令格式,注意它们的立即数排列次序,我都有点同情编译器设计师了,这怎么搞啊?具体一点讲,填充这里的立即数的应该是链接器的工作。这么排放偏移地址立即数的目的还是为了简化处理器的设计,但明显给编译器增加了工作了。
其它省掉的指令
还有很多常用的指令也被省掉了,比如nop、move、not、neg,当然不是说这些功能没有,所有这些功能都是有的,不过都是用其它的指令来等价实现的,比如not指令是用xori rd, rs, -1实现的。每看到这样的指令,我对Berkeley的大神都是佩服地五体投地。
总结
能省的指令都省了。能让编译器做的都让编译器做了。绝对精简。
 
 
 
 
此帖出自FPGA/CPLD论坛

最新回复

非常棒,讲的太高了,价值非常高,收获很多啊,感谢楼主的分享,多学习   详情 回复 发表于 2022-1-19 18:11
点赞 关注
 

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

非常棒,讲的太高了,价值非常高,收获很多啊

此帖出自FPGA/CPLD论坛
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

总结很精炼

此帖出自FPGA/CPLD论坛
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(中级)

4
 

这也太好了, 正是需要的东西, 找了半天,感谢楼主分享。

此帖出自FPGA/CPLD论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

5
 

非常棒,讲的太高了,价值非常高,收获很多啊,感谢楼主的分享,多学习

此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表