ARM的體系結(jié)構(gòu)與編程系列博客——ARM體系變種
掃描二維碼
隨時(shí)隨地手機(jī)看文章
ARM體系變種的簡(jiǎn)介
有人會(huì)很奇怪一件事情,ARM居然會(huì)變種,不會(huì)是基因突變了吧,呵呵,其實(shí)ARM變種通俗一點(diǎn)來(lái)講呢,就是ARM突然具備了一種特定的功能!并非是基因突變哦!ARM是reboot好不好?
回到頂部
ARM體系變種首先讓我們通過(guò)一個(gè)表格來(lái)看看ARM變種。了解ARM變種涉及到了什么!
現(xiàn)在讓我來(lái)為大家解釋一下這張圖:
ARMv你就不用去管它了
v后面對(duì)應(yīng)的是ARM指令集的版本號(hào)
有x呢,表示排除某項(xiàng)功能
要說(shuō)的是自版本4之后M變種就為標(biāo)準(zhǔn)功能了,不再列出了!
那么這個(gè)就是ARM/Thumb的命名格式啦!不要著急還不了解什么ARM體系變種,且聽我細(xì)細(xì)道來(lái)!
T變種t變種的全名——Thumb指令集,可以說(shuō)T變種是ARM的效率上質(zhì)一般的飛躍,thumb指令集是ARM指令集的一個(gè)子集重新編碼而成的。它使ARM更加高效地進(jìn)行運(yùn)作。
ARM的指令長(zhǎng)度為32位,而Thumb指令長(zhǎng)度只有16位,對(duì)于一些冗余空余位的操作來(lái)講的話,在使用16位的基礎(chǔ)上,明顯比使用32位更加高效!
但是thumb自身也有一定的局限性:
完成相同的操作時(shí),Thumb指令通常情況下需要比ARM更多的指令。
Thumb指令集是不包含異常處理時(shí)的一些指令的
因此ARM是不能舍棄ARM的32位指令的!它與16位的Thumb指令配合才能更加有效率地執(zhí)行
那么發(fā)展至今,Thumb有哪些版本呢?
Thumb指令集版本1,這個(gè)適用在ARM體系版本4中
Thumb指令集版本2,這個(gè)適用在ARM體系版本5中
M變種我們通常稱之為長(zhǎng)乘法指令,那么注意了:
上篇我們說(shuō)到了長(zhǎng)乘法操作與長(zhǎng)乘加操作(乘法指令和乘加法指令的操作),現(xiàn)在就為大家解釋一下這兩個(gè)操作。
長(zhǎng)乘法操作:32位整數(shù)乘以32位整數(shù),生成64位整數(shù)
長(zhǎng)乘加操作:32位整數(shù)乘以32位整數(shù),加上32位整數(shù),生成64位整數(shù)
E變種它其實(shí)做版本3中正式引入,版本2的時(shí)候僅是有了這個(gè)思想的,然后在版本4以后,M變種就變成了系統(tǒng)中的標(biāo)準(zhǔn)部分。我們也不再說(shuō)M變種了,因?yàn)槲覀冊(cè)陂_發(fā)ARM過(guò)程中直接是使用相應(yīng)的指令的!
我們將其定義為增強(qiáng)型DSP指令,針對(duì)于ARM的應(yīng)用范圍越來(lái)越廣闊,那么為了滿足DSP算法,ARM就需要增強(qiáng)這個(gè)算法的處理性能。
那么它到底有了哪些的增強(qiáng)呢?
增加了新的16位數(shù)據(jù)乘法與乘加操作指令
實(shí)現(xiàn)飽和的帶符號(hào)數(shù)的加減法操作指令
進(jìn)行雙字?jǐn)?shù)據(jù)操作的指令,包含LDRD、STDR、MCRRMRRC
cache預(yù)取指令PLD
J變種E變種是在版本5T中開始使用的。值得注意的是:早期的E變種未有包含LDRD、STRD、MCRRMRRC、PLD
ARM能跑android和java不得不歸功于這個(gè)變種——java加數(shù)器jazelle
這個(gè)加數(shù)器相當(dāng)了不起,與一般的java虛擬機(jī)相比,它將java代碼運(yùn)行速度提高了整整8倍,而功耗竟降低了80%。使得程序員們可以在這個(gè)上面做更有力的開發(fā)!
SIMD變種隨著技術(shù)進(jìn)步,人們對(duì)于數(shù)字媒體流更加追捧,你能夠在手機(jī)上看電影,玩游戲,大多歸功于ARM技術(shù)的強(qiáng)勁的高性能音頻視頻處理技術(shù),這就是我們所說(shuō)的ARM媒體功能擴(kuò)展(SIMD變種)
它將音頻視頻處理性能提高了4倍,具有這個(gè)功能的ARM芯片(泛指采用ARM技術(shù)的芯片)是目前市場(chǎng)上最受歡迎的芯片了!
那么,它的特點(diǎn)有哪些呢:
音頻視頻處理性能提高了4倍
提供小數(shù)算術(shù)運(yùn)算
可同時(shí)進(jìn)行兩個(gè)16位操作數(shù)或者4個(gè)8位操作數(shù)的運(yùn)算
用戶可以定義飽和運(yùn)算模式
兩套16位操作數(shù)的乘加/乘減運(yùn)算
32位乘以32位的小數(shù)MAC