标题:
ARM指令集- Thumb指令集
[打印本页]
作者:
look_w
时间:
2017-9-24 15:42
标题:
ARM指令集- Thumb指令集
3.4 Thumb
指令集
为兼容数据总线宽度为
16
位的应用系统,
ARM
体系结构除了支持执行效率很高的
32
位
ARM
指令集以外,同时支持
16
位的
Thumb
指令集。
Thumb
指令集是
ARM
指令集的一个子集,允许指令编码为
16
位的长度。与等价的
32
位代码相比较,
Thumb
指令集在保留
32
位代码优势的同时,大大的节省了系统的存储空间。
所有的
Thumb
指令都有对应的
ARM
指令,而且
Thumb
的编程模型也对应于
ARM
的编程模型,在应用程序的编写过程中,只要遵循一定调用的规则,
Thumb
子程序和
ARM
子程序就可以互相调用。当处理器在执行
ARM
程序段时,称
ARM
处理器处于
ARM
工作状态,当处理器在执行
Thumb
程序段时,称
ARM
处理器处于
Thumb
工作状态。
与
ARM
指令集相比较,
Thumb
指令集中的数据处理指令的操作数仍然是
32
位,指令地址也为
32
位,但
Thumb
指令集为实现
16
位的指令长度,舍弃了
ARM
指令集的一些特性,如大多数的
Thumb
指令是无条件执行的,而几乎所有的
ARM
指令都是有条件执行的;大多数的
Thumb
数据处理指令的目的寄存器与其中一个源寄存器相同。
由于
Thumb
指令的长度为
16
位,即只用
ARM
指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的
Thumb
指令的条数较
ARM
指令多。在一般的情况下,
Thumb
指令与
ARM
指令的时间效率和空间效率关系为:
— Thumb代码所需的存储空间约为ARM代码的60%~70%
— Thumb代码使用的指令数比ARM代码多约30%~40%
—
若使用
32位的存储器,ARM代码比Thumb代码快约40%
—
若使用
16位的存储器,Thumb代码比ARM代码快约40%~50%
—
与
ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%
显然,
ARM
指令集和
Thumb
指令集各有其优点,若对系统的性能有较高要求,应使用
32
位的存储系统和
ARM
指令集,若对系统的成本及功耗有较高要求,则应使用
16
位的存储系统和
Thumb
指令集。当然,若两者结合使用,充分发挥其各自的优点,会取得更好的效果。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0