您的位置:首頁>數碼>正文

什麼叫arm架構?X86架構與ARM架構有什麼區別

什麼叫arm架構

ARM架構過去稱作進階精簡指令集機器(AdvancedRISCMachine, 更早稱作:AcornRISCMachine), 是一個32位元精簡指令集(RISC)處理器架構, 其廣泛地使用在許多嵌入式系統設計。 由於節能的特點, ARM處理器非常適用於移動通訊領域, 符合其主要設計目標為低耗電的特性。

在今日, ARM家族占了所有32位嵌入式處理器75%的比例[1], 使它成為占全世界最多數的32位架構之一。 ARM處理器可以在很多消費性電子產品上看到, 從可攜式裝置(PDA、行動電話、多媒體播放機、掌上型電子遊戲, 和電腦)到電腦外設(硬碟、桌上型路由器)甚至在導彈的彈載電腦等軍用設施中都有他的存在。

在此還有一些基於ARM設計的派生產品, 重要產品還包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM架構圖

下圖所示的是ARM構架圖。 它由32位ALU、若干個32位元通用寄存器以及狀態寄存器、32&TImes;8位乘法器、32&TImes;32位元桶形移位暫存器、指令解碼以及控制邏輯、指令流水線和資料/位址寄存器組成。

1.ALU:它有兩個運算元鎖存器、加法器、邏輯功能、結果以及零檢測邏輯構成。

2.桶形移位暫存器:ARM採用了32&TImes;32位的桶形移位暫存器, 這樣可以使在左移/右移n位、環移n位和算術右移n位等都可以一次完成。

3.高速乘法器:乘法器一般採用“加一移位”的方法來實現乘法。 ARM為了提高運算速度, 則採用兩位元乘法的方法, 根據乘數的2位元來實現“加一移位”運算;ARM高速乘法器採用32&TImes;8位元的結構,

這樣, 可以降低集成度(其相應晶片面積不到並行乘法器的1/3)。

4.浮點部件:浮點部件是作為選件供ARM構架使用。 FPA10浮點加速器是作為協處理方式與ARM相連, 並通過協處理指示的解釋來執行。

5.控制器:ARM的控制器採用的是硬接線的可程式設計邏輯陣列PLA。

6.寄存器

除了使用者模式之外的其他6種處理器模式稱為特權模式(PrivilegedModes)。 在這些模式下, 程式可以訪問所有的系統資源, 也可以任意地進行處理器模式的切換。 其中, 除系統模式外, 其他5種特權模式又稱為異常模式。

處理器模式可以通過軟體控制進行切換, 也可以通過外部中斷或異常處理過程進行切換。 大多數的使用者程式運行在使用者模式下, 這時, 應用程式不能夠訪問一些受作業系統保護的系統資源,

應用程式也不能直接進行處理器模式的切換。 當需要進行處理器模式的切換時, 應用程式可以產生異常處理, 在異常處理過程中進行模式的切換。 這種體系結構可以使作業系統控制整個系統的資源。

當應用程式發生異常中斷時, 處理器進入相應的異常模式。 在每一種異常模式中都有一組寄存器, 供相應的例外處理常式使用, 這樣就可以保證在進入異常模式時, 使用者模式下的寄存器(保證了程式運行狀態)不被破壞。

系統模式並不是通過異常過程進入的, 它和使用者模式具有完全一樣的寄存器。 但是系統模式屬於特權模式, 可以訪問所有的系統資源, 也可以直接進行處理器模式的切換。

它主要供作業系統任務使用。 通常作業系統的任務需要訪問所有的系統資源, 同時該任務仍然使用使用者模式下的寄存器組, 而不是使用異常模式下相應的寄存器組, 這樣可以保證當異常中斷發生時任務狀態不被破壞

ARM的技術實現

要想深入理解ARM的實現原理是個很大的學習工程, 這裡一樣希望讀者讀後能對ARM起到一個總體的認識, 後續可以進一步的深入學習。 我們先以ARM彙編基礎來展開這一章的chat。

組合語言是機器代碼上的一個薄的語法層, 它由以二進位編碼的指令組成, 這是我們的電腦所理解。 那麼為什麼我們不寫代碼呢?可想而知以二進位來進行coding的話是多麼的痛苦, 因此我們將編寫ARM程式集。

但是電腦本身只識別機器碼是不能運行彙編代碼的, 這就需要將彙編代碼裝到機器代碼中的工具GNUBinutils項目中的GNUAssembler。 一旦用副檔名*.s編寫程式就需要把它與其進行組合並與ld連結起來:

我們從最底層來看下, 在最底層, 電路上有電信號, 信號是將電壓切換為兩個電平來形成的, 例如0伏(關)或5伏(開)。

因為只是我們不能輕易的告訴電路電壓, 只能選擇使用1/0來寫入開/關的模式, 然後我們對0和1的順序進行分組, 以形成機器碼指令, 該指令是電腦處理器的最小工作單元, 以下是機器語言的示例:

我們知道ARM處理器只能對寄存器執行資料處理, 所以與記憶體的交互有兩種:從記憶體載入到寄存器, 並將值從寄存器存儲到記憶體, 即ARM使用載入/存儲(LDR和STR)模型進行記憶體訪問。

通常LDR用於將記憶體中的內容載入到寄存器中,STR用於存儲寄存器中的內容到記憶體位址。我們來舉一個基本例子:

第一看的小夥伴或許會一頭霧水,下面以一張圖來解釋下ARM是如何和記憶體交互的:

X86架構工業電腦與ARM架構工業電腦的區別

1、性能

X86架構的工業電腦比ARM架構的工業電腦在性能方面要快得多、強得多。ARM的優勢在於效率,ARM採用RISC流水線指令集,在完成綜合性工作處於劣勢,而在任務相對固定的應用場合其優勢就能發揮得淋漓盡致。

2、擴展能力

X86架構的工業電腦採用“橋”的方式與擴展設備(如硬碟、記憶體等)進行連接,且X86架構的工業電腦能很容易進行性能擴展,如增加記憶體、硬碟等。

ARM架構的工業電腦是通過專用的資料介面使CPU與資料存放裝置進行連接,所以ARM的存儲、記憶體等性能擴展難以進行(一般在產品設計時已經定好其記憶體及資料存儲的容量),所以採用ARM架構的工業電腦,一般不考慮擴展。

3、作業系統的相容性

幾乎所有X86硬體平臺都可以直接使用微軟的視窗系統及現在流行的幾乎所有工具軟體,所以X86系統在相容性方面具有無可比擬的優勢。

ARM幾乎都採用Linux的作業系統,而且幾乎所有的硬體系統都要單獨構建自己的系統,與其他系統不能相容,這也導致其應用軟體不能方便移植,也制約了ARM的發展和應用。Android系統開發後,統一了ARM架構電腦的作業系統,使新推出基於ARM架構的電腦系統有了統一的、開放式的、免費的作業系統,為ARM的發展提供了強大的支援和動力。

4、軟體發展的方便性及可使用工具的多樣性

在軟體發展方面, X86架構比ARM架構更容易、更簡單、實際成本也更低,同時更容易找到協力廠商軟體(免去自己開發的時間和成本),而且軟體移植更容易。

5、功耗

在伺服器、工作站以及其他高性能運算等應用方面,不考慮功耗和使用環境等條件,X86占了優絕對優勢;但受功耗、環境等條件制約且工作任務固定的情況下ARM就佔有很大的優勢。

即ARM使用載入/存儲(LDR和STR)模型進行記憶體訪問。

通常LDR用於將記憶體中的內容載入到寄存器中,STR用於存儲寄存器中的內容到記憶體位址。我們來舉一個基本例子:

第一看的小夥伴或許會一頭霧水,下面以一張圖來解釋下ARM是如何和記憶體交互的:

X86架構工業電腦與ARM架構工業電腦的區別

1、性能

X86架構的工業電腦比ARM架構的工業電腦在性能方面要快得多、強得多。ARM的優勢在於效率,ARM採用RISC流水線指令集,在完成綜合性工作處於劣勢,而在任務相對固定的應用場合其優勢就能發揮得淋漓盡致。

2、擴展能力

X86架構的工業電腦採用“橋”的方式與擴展設備(如硬碟、記憶體等)進行連接,且X86架構的工業電腦能很容易進行性能擴展,如增加記憶體、硬碟等。

ARM架構的工業電腦是通過專用的資料介面使CPU與資料存放裝置進行連接,所以ARM的存儲、記憶體等性能擴展難以進行(一般在產品設計時已經定好其記憶體及資料存儲的容量),所以採用ARM架構的工業電腦,一般不考慮擴展。

3、作業系統的相容性

幾乎所有X86硬體平臺都可以直接使用微軟的視窗系統及現在流行的幾乎所有工具軟體,所以X86系統在相容性方面具有無可比擬的優勢。

ARM幾乎都採用Linux的作業系統,而且幾乎所有的硬體系統都要單獨構建自己的系統,與其他系統不能相容,這也導致其應用軟體不能方便移植,也制約了ARM的發展和應用。Android系統開發後,統一了ARM架構電腦的作業系統,使新推出基於ARM架構的電腦系統有了統一的、開放式的、免費的作業系統,為ARM的發展提供了強大的支援和動力。

4、軟體發展的方便性及可使用工具的多樣性

在軟體發展方面, X86架構比ARM架構更容易、更簡單、實際成本也更低,同時更容易找到協力廠商軟體(免去自己開發的時間和成本),而且軟體移植更容易。

5、功耗

在伺服器、工作站以及其他高性能運算等應用方面,不考慮功耗和使用環境等條件,X86占了優絕對優勢;但受功耗、環境等條件制約且工作任務固定的情況下ARM就佔有很大的優勢。

Next Article
喜欢就按个赞吧!!!
点击关闭提示