对应的,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模式。