关于嵌入式arm与Thumb指令的问题
很简单一个问题:为什么使用32位的存储器,arm代码比THUMB快,而使用16位的存储器,THUMB却比ARM更快呢?而且不管使用哪种存储器,THUMB的功耗都会小一点?...
很简单一个问题:为什么使用32位的存储器,arm代码比THUMB快,
而使用16位的存储器,THUMB却比ARM更快呢?
而且不管使用哪种存储器,THUMB的功耗都会小一点?
尤其是第二个问题 展开
而使用16位的存储器,THUMB却比ARM更快呢?
而且不管使用哪种存储器,THUMB的功耗都会小一点?
尤其是第二个问题 展开
1个回答
2014-01-01
展开全部
第二个问题一定对吗?功耗不一定吧,个人觉得你不能用你自己的经历就下定论说Thumb的功耗一定会小。
ARM指令集是32位的,所以操作数,地址都是32位的。当使用32位存储器,一次读取就读出了一条指令或者数据。如果使用16位存储器,需要读取两次。当然32位的指令集在32位总线宽度的系统下会快。Thumb指令集是16位的,照理说在32位系统下速度一样。但是要考虑到的是,对于32位的加减法,32位指令集一次完成,16位指令集却需要2次,更别提乘法,4次以上。所以16位指令集计算32位数据会出现问题。
具体的应用的功耗,和所需要的计算,总线带宽,编码效率,指令集使用,编译器优化都有关系。所以单说thumb的功耗一定低,肯定是错的。如果说往往比较低,倒可信一点。现在的存储器一般还是16位的。
ARM指令集是32位的,所以操作数,地址都是32位的。当使用32位存储器,一次读取就读出了一条指令或者数据。如果使用16位存储器,需要读取两次。当然32位的指令集在32位总线宽度的系统下会快。Thumb指令集是16位的,照理说在32位系统下速度一样。但是要考虑到的是,对于32位的加减法,32位指令集一次完成,16位指令集却需要2次,更别提乘法,4次以上。所以16位指令集计算32位数据会出现问题。
具体的应用的功耗,和所需要的计算,总线带宽,编码效率,指令集使用,编译器优化都有关系。所以单说thumb的功耗一定低,肯定是错的。如果说往往比较低,倒可信一点。现在的存储器一般还是16位的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询