1. 程式人生 > >CPU兩大架構X86 和 ARM

CPU兩大架構X86 和 ARM


(1)中央處理單元(CPU):

  主要由運算器、控制器、暫存器三部分組成。運算器就是起著運算的作用,控制器就是負責發出CPU每條指令所需要的資訊,暫存器就是儲存運算或者指令的一些臨時檔案,這樣可以保證更高的速度。

  CPU有著處理指令、執行操作、控制時間、處理資料四大作用。移動裝置很複雜, CPU需要執行數以百萬計的指示,才能使它向期待的方向執行,而CPU的速度和功率效率是至關重要的。速度影響使用者體驗,而效率影響電池壽命。最完美的移動裝置是高效能和低功耗相結合。

(2)CPU架構

  從CPU發明到現在,有非常多種架構,從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來分類的話,它們可以被分為兩大類,即所謂的“複雜指令集(CISC)”與“精簡指令集(RISC)”系統。

  Intel和ARM處理器的第一個區別是,前者使用複雜指令集(CISC),後者使用精簡指令集(RISC。屬於這兩種類中的各種架構之間最大的區別,在於它們的設計者考慮問題方式的不同。

(3)ARM

  ARM處理器非常適用於行動通訊領域,具有低成本、高效能和低耗電的特性,ARM的高性價比和低耗能在移動市場比英特爾更具優勢。

  ARM的架構相較於基於CISC的x86架構處理器,由於為了滿足電腦產業發展而不斷加入指令集,使得處理器日益龐大,但每個指令集用到的頻率也越差越大,許多指令到後來已經相當少用,甚至是可以被新的指令所取代。而ARM架構則大幅簡化架構,僅保留所需要的指令,可以讓整個處理器更為簡化,擁有小體積、高效能的特性。

  GOOGLE的Android系統和蘋果的IPAD、IPHONE推出後,ARM架構的電腦系統(特別是在終端方面應用)受到使用者的廣泛支援和追捧,ARM+Android成為IT、通訊領域最熱門的話題,眾多晶片廠商紛紛推出具有各種獨特應用功能基於ARM結構開發的產品,近期最新形成的“異構概念”更成為電腦今後發展主要方向。在IT行業推崇了20多年的“價效比“概念受到根本的動搖和衝擊,“適用的才是最好的”已經被越來越多的使用者接受。

(4)X86與ARM的比較

效能:

  X86結構的電腦無論如何都比ARM結構的系統在效能方面要快得多、強得多。

  X86的CPU隨便就是1G以上、雙核、四核大行其道,通常使用45nm(甚至更高階)製程的工藝進行生產;而ARM方面:CPU通常是幾百兆,最近才出現1G左右的CPU,製程通常使用不到65nm製程的工藝,可以說在效能和生產工藝方面ARM根本不是X86結構系統的對手。

  但ARM的優勢不在於效能強大而在於效率,ARM採用RISC流水線指令集,在完成綜合性工作方面根本就處於劣勢,而在一些任務相對固定的應用場合其優勢就能發揮得淋漓盡致。

擴充套件能力

  X86結構的電腦採用“橋”的方式與擴充套件裝置(如:硬碟、記憶體等)進行連線,而且x86結構的電腦出現了近30年,其配套擴充套件的裝置種類多、價格也比較便宜,所以x86結構的電腦能很容易進行效能擴充套件,如增加記憶體、硬碟等

  ARM結構的電腦是通過專用的資料介面使CPU與資料儲存裝置進行連線,所以ARM的儲存、記憶體等效能擴充套件難以進行(一般在產品設計時已經定好其記憶體及資料儲存的容量),所以採用ARM結構的系統,一般不考慮擴充套件。基本奉行“夠用就好”的原則。

作業系統的相容性

  X86系統由微軟及Intel構建的Wintel聯盟一統天下,壟斷了個人電腦作業系統近30年,形成巨大的使用者群,也深深固化了眾多使用者的使用習慣,同時x86系統在硬體和軟體開發方面已經形成統一的標準,幾乎所有x86硬體平臺都可以直接使用微軟的視窗系統及現在流行的幾乎所有工具軟體,所以x86系統在相容性方面具有無可比擬的優勢

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

功耗

  X86電腦因考慮要適應各種應用的需求,其發展思路是:效能+速度。20多年來x86電腦的速度從原來8088的幾M發展到現在隨便就是幾G,而且還是幾核,其速度和效能已經提升了千、萬倍,技術進步使x86電腦成為大眾生活中不可缺少的一部分。但是x86電腦發展的方向和模式,使其功耗一直居高不下,一臺電腦隨便就是幾百瓦,即使是號稱低功耗節能的手提電腦或上網本,也有十幾、二十多瓦的功耗,這與ARM結構的電腦就無法相比。

  ARM的設計及發展思路是:滿足某個特殊方面的應用即可,在某一專項領域是最強的,(哪怕在其他方面一無是處),這樣Arm以其不是最強的技術,同樣也不是很高階製程的製造工藝,生產出效能不是很強的電腦系統,但在某個專業應用方面則是最好的,特別是在眾多終端應用,尤其在移動終端應用上佔有絕對優勢的統治地位,這個原因就是:功耗

  高功耗導致了一系列X86系統無法解決的問題出現:系統的續航能力弱、體積無法縮小、穩定性差、對使用環境要求高等問題。

  從這裡我們可以看到x86系統與ARM系統是在兩個完全不同領域方面的應用,他們之間根本不存在替換性,在伺服器、工作站以及其他高效能運算等應用方面,是可以不考慮功耗和使用環境等條件時,X86系統佔了優絕對優勢;但受功耗、環境等條件制約且工作任務固定的情況下ARM就佔有很大的優勢,在手持式移動終端領域,X86的功耗更使他英雄毫無用武之地

(5)Linux和ARM

Linux和Ubuntu

  Linux是一套開源的免費使用和自由傳播的Unix作業系統,它支援32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多使用者網路作業系統。

  Linux作業系統存在著許多不同的版本,比如大家比較熟悉的UbuntuRedHatFedora等,但它們都使用了Linux核心。Linux可安裝在各種計算機硬體裝置中,比如手機、平板電腦、路由器、視訊遊戲控制檯、臺式計算機、大型機和超級計算機。

  嚴格來講,Linux這個詞本身只表示Linux核心,但實際上人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU 各種工具和資料庫的作業系統。

交叉編譯

  引入兩個名詞:宿主機(Host),和目標機(Target)。開發板由於硬體所限不能直接在本地建立起開發環境,需要在配置高的個人電腦上開發完軟體後再移植到開發板上執行。此處的開發板就是Target,個人電腦就是Host。

  簡單來說,交叉編譯就是在一個平臺上生成另一個平臺上的可執行程式碼。由於Target和Host的平臺不一樣(平臺包括體系結構,最直觀的就是CPU不一樣,一個是x86,另一個是ARM,使用的組合語言都不一樣),不能使用Host的編譯工具,而需要在Host中安裝Target的編譯工具鏈(cross compilation tool chain),來編譯得到的運行於Target上的可執行程式碼。

arm-linux-gcc的版本

  常用的交叉編譯工具就是arm-linux-gcc,和arm-linux-g++,分別用於編譯C檔案和C++檔案。早些年安裝arm-linux-gcc交叉編譯工具對於一個嵌入式新手來說特別棘手,因為它需要安裝多個軟體包,每個軟體包都有它的依賴關係,安裝過程中不能有半點差錯(真慶幸我沒趕上那些年)。現在我們購買開發板時,廠家都提供對應的交叉編譯工具,安裝非常方便。

  理論上講,某一個特定型號的CPU會有特定的arm-linux-gcc與之對應,採用不同CPU的開發板之間的程式是不能用同一個交叉編譯工具的(比如全志A20開發板的工具編譯得到的程式就不能在S3C6410開發板上執行)。但是也有特殊情況,前兩天就發現了一個。友善之臂S3C6410(ARM11)開發板提供的編譯工具編譯的一個小程式可以在S5PV210 (Coretex-A8)開發板上執行。不過反過來S5PV210開發板提供的編譯工具編譯的小程式就不能在S3C6410開發板上執行。