版本:v1.2
摘要
此文主要介绍ARM和MIPS之间的区别和联系,包括ARM的Thumb,MIPS的MIPS16e ASE
2013-10-04
修订历史 | ||
---|---|---|
修订 1.2 | 2013-10-04 | crl |
| ||
修订 1.0 | 2011-07-19 | crl |
|
版权 © 2013 Crifan, http://crifan.com
目录
目录
摘要
常见的ARM是32位的,其中有个Thumb模式,即16位模式。
在标准32位模式下,可以切换到Thumb模式下,这样的话,代码大小会压缩不少,以此提高空间利用率。
同样的代码,如果用Thumb模式的话,比用普通ARM模式的指令,代码大小最大可以减少大约40%。
程序可以通过对应的指令,在ARM和Thumb模式之间切换。
对应的,MIPS中也有个类似的做法。
普通MIPS是32位的,当然也有MIPS64的。
MIPS中有个MIPS16e ASE ,其中ASE是Application Specific Extension,(根据应用的)专用扩展。
关于为何叫做ASE,我的理解是,MIPS16e ASE是针对MIPS32来说的,是对其一种扩展,是在,某些特定的应用(多为嵌入式应用)下减少代码大小,方面的扩展,因此,才叫做Specific Extension专用扩展。
MIPS16e ASE也常被简称为MIPS16e。
在MIPS16e ASE之前,有个MIPS16™,提供了一些额外的指令,用于提高代码的兼容性。而MIPS16e ASE,可以看作是MIPS16™的增强版。
相比MIPS32,利用MIPS16e编译的应用程序平均减小30%,最多可减少40%。
MIPS16e的指令集,兼容MIPS32 和 MIPS64的指令集。
程序也可以在MIPS16e 模式和MIPS 32位模式之间切换。
用了MIPS16e ASE后,代码量减少,也相应的带来一个好处,还能提高指令缓存命中率(cache hit rate),即降低了cache miss rate。
而由于缓存是个耗电大户,因此,相应地减少了功耗,实现省电,环保(有利于生态系统Ecosystem)的功效。
与优点相对应的缺点是,MIPS16e ASE比普通的MIPS32,增加了解码的复杂度,即解码时间相对增加了。
不过,拿MIPS16e ASE的劣质和优势相比,总体优势还是很明显的。
不过,貌似实际应用中用到MIPS16e ASE的不多。
软件中可以通过检测MIPS16e ASE中的Config1 CP0寄存器的CA bit位来判断是否是处在MIPS16e ASE模式。