exb*_*ker 15 optimization gcc arm
我正致力于使用GCC编译的ARM C/C++代码的性能优化.CPU是Tegra 3.我知道标志-mthumb意味着生成旧的16位Thumb指令.在不同的测试中,我使用-marm对-mthumb的性能提高了10-15%.
-mthumb仅用于兼容性和性能 - marm总是更好吗?我问,因为android-cmake在Release模式下使用了-mthumb而在Debug中使用了-marm,这对我来说非常困惑.
Nic*_*rth 26
Thumb不是较旧的指令集,但实际上是较新的指令集.当前版本是Thumb-2,它是一个混合的16/32位指令集.Thumb1指令集是原始ARM指令集的压缩版本.CPU将获取指令,将其解压缩到ARM中然后处理它.目前(ARMv7及更高版本),Thumb-2是除性能关键或系统代码之外的所有内容的首选.例如,GCC默认会为ARMv7生成Thumb2(与Tegra3一样),因为16/32位ISA提供的更高代码密度可以更好地利用icache.但这在普通基准测试中非常难以衡量,因为大多数基准测试无论如何都适合L1 icache.
有关更多信息,请访问维基百科网站:http://en.wikipedia.org/wiki/ARM_architecture#Thumb
归档时间: |
|
查看次数: |
10406 次 |
最近记录: |