ARM的體系結構與程式設計系列部落格——ARM體系變種

King_Alex發表於2015-02-12

ARM體系變種的簡介

有人會很奇怪一件事情,ARM居然會變種,不會是基因突變了吧,呵呵,其實ARM變種通俗一點來講呢,就是ARM突然具備了一種特定的功能!並非是基因突變哦!ARM是reboot好不好?

ARM體系變種

首先讓我們通過一個表格來看看ARM變種。瞭解ARM變種涉及到了什麼!

ARM的體系結構與程式設計系列部落格——ARM體系變種

現在讓我來為大家解釋一下這張圖:

  • ARMv你就不用去管它了
  • v後面對應的是ARM指令集的版本號
  • 有x呢,表示排除某項功能

要說的是自版本4之後M變種就為標準功能了,不再列出了!

那麼這個就是ARM/Thumb的命名格式啦!不要著急還不瞭解什麼ARM體系變種,且聽我細細道來!

T變種

t變種的全名——Thumb指令集,可以說T變種是ARM的效率上質一般的飛躍,thumb指令集是ARM指令集的一個子集重新編碼而成的。它使ARM更加高效地進行運作。

ARM的指令長度為32位,而Thumb指令長度只有16位,對於一些冗餘空餘位的操作來講的話,在使用16位的基礎上,明顯比使用32位更加高效!

但是thumb自身也有一定的侷限性:

  • 完成相同的操作時,Thumb指令通常情況下需要比ARM更多的指令。
  • Thumb指令集是不包含異常處理時的一些指令的

因此ARM是不能捨棄ARM的32位指令的!它與16位的Thumb指令配合才能更加有效率地執行

那麼發展至今,Thumb有哪些版本呢?

  1. Thumb指令集版本1,這個適用在ARM體系版本4中
  2. Thumb指令集版本2,這個適用在ARM體系版本5中

M變種

我們通常稱之為長乘法指令,那麼注意了:

上篇我們說到了長乘法操作與長乘加操作(乘法指令和乘加法指令的操作),現在就為大家解釋一下這兩個操作。

  • 長乘法操作:32位整數乘以32位整數,生成64位整數
  • 長乘加操作:32位整數乘以32位整數,加上32位整數,生成64位整數

它其實做版本3中正式引入,版本2的時候僅是有了這個思想的,然後在版本4以後,M變種就變成了系統中的標準部分。我們也不再說M變種了,因為我們在開發ARM過程中直接是使用相應的指令的!

E變種

我們將其定義為增強型DSP指令,針對於ARM的應用範圍越來越廣闊,那麼為了滿足DSP演算法,ARM就需要增強這個演算法的處理效能。

那麼它到底有了哪些的增強呢?

  • 增加了新的16位資料乘法與乘加操作指令
  • 實現飽和的帶符號數的加減法操作指令
  • 進行雙字資料操作的指令,包含LDRD、STDR、MCRR\MRRC
  • cache預取指令PLD

E變種是在版本5T中開始使用的。值得注意的是:早期的E變種未有包含LDRD、STRD、MCRR\MRRC、PLD

J變種

ARM能跑android和java不得不歸功於這個變種——java加數器jazelle

這個加數器相當了不起,與一般的java虛擬機器相比,它將java程式碼執行速度提高了整整8倍,而功耗竟降低了80%。使得程式設計師們可以在這個上面做更有力的開發!

SIMD變種

隨著技術進步,人們對於數字媒體流更加追捧,你能夠在手機上看電影,玩遊戲,大多歸功於ARM技術的強勁的高效能音訊\視訊處理技術,這就是我們所說的ARM媒體功能擴充套件(SIMD變種)

它將音訊\視訊處理效能提高了4倍,具有這個功能的ARM晶片(泛指採用ARM技術的晶片)是目前市場上最受歡迎的晶片了!

那麼,它的特點有哪些呢:

  • 音訊\視訊處理效能提高了4倍
  • 提供小數算術運算
  • 可同時進行兩個16位運算元或者4個8位運算元的運算
  • 使用者可以定義飽和運算模式
  • 兩套16位運算元的乘加/乘減運算
  • 32位乘以32位的小數MAC

最後,求鮮花,求關注~~~

相關文章