多方位對比ARM和x86 CPU兩大架構現在發展如何

來源:http://www.chinabaike.com/t/9642/2016/0528/5224946.html


 隨便逮住一個人問他知不知道CPU,我想他的答案一定會是肯定的,但是如果你再問他知道ARM和X86架構麼?這兩者的區別又是什麼?絕大多數的人肯定是一臉懵逼。今天小編就帶你深入瞭解CPU的這兩大架構:ARM和X86。以後出去裝X就靠它了!

多方位對比CPU兩大架構:ARM和x86

  重溫下CPU是什麼鬼

  中央處理單元(CPU)主要由運算器、控制器、寄存器三部分組成,從字面意思看運算器就是起着運算的作用,控制器就是負責發出CPU每條指令所需要的信息,寄存器就是保存運算或者指令的一些臨時文件,這樣可以保證更高的速度。

  CPU有着處理指令、執行操作、控制時間、處理數據四大作用,打個比喻來說,CPU就像我們的大腦,幫我們完成各種各樣的生理活動。因此如果沒有CPU,那麼電腦就是一堆廢物,無法工作。移動設備其實很複雜,這些CPU需要執行數以百萬計的指示,才能使它向我們期待的方向運行,而CPU的速度和功率效率是至關重要的。速度影響用戶體驗,而效率影響電池壽命。最完美的移動設備是高性能和低功耗相結合。

多方位對比CPU兩大架構:ARM和x86

  要了解X86和ARM,就得先了解複雜指令集(CISC)和精簡指令集(RISC)

  從CPU發明到現在,有非常多種架構,從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來分類的話,它們可以被分爲兩大類,即所謂的“複雜指令集”與“精簡指令集”系統,也就是經常看到的“CISC”與“RISC”。 Intel和ARM處理器的第一個區別是,前者使用複雜指令集(CISC),而後者使用精簡指令集(RISC)。屬於這兩種類中的各種架構之間最大的區別,在於它們的設計者考慮問題方式的不同。

  我們可以繼續舉個例子,比如說我們要命令一個人吃飯,那麼我們應該怎麼命令呢?我們可以直接對他下達“吃飯”的命令,也可以命令他“先拿勺子,然後舀起一勺飯,然後張嘴,然後送到嘴裏,最後嚥下去”。從這裏可以看到,對於命令別人做事這樣一件事情,不同的人有不同的理解,有人認爲,如果我首先給接受命令的人以足夠的訓練,讓他掌握各種複雜技能(即在硬件中實現對應的複雜功能),那麼以後就可以用非常簡單的命令讓他去做很複雜的事情——比如只要說一句“吃飯”,他就會吃飯。但是也有人認爲這樣會讓事情變的太複雜,畢竟接受命令的人要做的事情很複雜,如果你這時候想讓他吃菜怎麼辦?難道繼續訓練他吃菜的方法?我們爲什麼不可以把事情分爲許多非常基本的步驟,這樣只需要接受命令的人懂得很少的基本技能,就可以完成同樣的工作,無非是下達命令的人稍微累一點——比如現在我要他吃菜,只需要把剛剛吃飯命令裏的“舀起一勺飯”改成“舀起一勺菜”,問題就解決了,多麼簡單。這就是“複雜指令集”和“精簡指令集”的邏輯區別。

  從幾個方面比較ARM與X86架構

  Intel和ARM的處理器除了最本質的複雜指令集(CISC)和精簡指令集(RISC)的區別之外,下面我們再從以下幾個方面對比下ARM和X86架構。

  一、製造工藝

  ARM和Intel處理器的一大區別是ARM從來只是設計低功耗處理器,Intel的強項是設計超高性能的臺式機和服務器處理器。

  一直以來,Intel都是臺式機的服務器行業的老大。然而進入移動行業時,Intel依然使用和臺式機同樣的複雜指令集架構,試圖將其硬塞入給移動設備使用的體積較小的處理器中。但是Intel i7處理器平均發熱率爲45瓦。基於ARM的片上系統(其中包括圖形處理器)的發熱率最大瞬間峯值大約是3瓦,約爲Intel i7處理器的1/15。其最新的Atom系列處理器採用了跟ARM處理器類似的溫度控制設計,爲此Intel必須使用最新的22納米制造工藝。一般而言,製造工藝的納米數越小,能量的使用效率越高。ARM處理器使用更低的製造工藝,擁有類似的溫控效果。比如,高通曉龍805處理器使用28納米制造工藝。

  二、64位計算

  對於64位計算,ARM和Intel也有一些顯著區別。Intel並沒有開發64位版本的x86指令集。64位的指令集名爲x86-64(有時簡稱爲x64),實際上是AMD設計開發的。Intel想做64位計算,它知道如果從自己的32位x86架構進化出64位架構,新架構效率會很低,於是它搞了一個新64位處理器項目名爲IA64。由此製造出了Itanium系列處理器。

  同時AMD知道自己造不出能與IA64兼容的處理器,於是它把x86擴展一下,加入了64位尋址和64位寄存器。最終出來的架構,就是 AMD64,成爲了64位版本的x86處理器的標準。IA64項目並不算得上成功,現如今基本被放棄了。Intel最終採用了AMD64。Intel當前給出的移動方案,是採用了AMD開發的64位指令集(有些許差別)的64位處理器。

多方位對比CPU兩大架構:ARM和x86

  而ARM在看到移動設備對64位計算的需求後,於2011年發佈了ARMv8 64位架構,這是爲了下一代ARM指令集架構工作若干年後的結晶。爲了基於原有的原則和指令集,開發一個簡明的64位架構,ARMv8使用了兩種執行模式,AArch32和AArch64。顧名思義,一個運行32位代碼,一個運行64位代碼。ARM設計的巧妙之處,是處理器在運行中可以無縫地在兩種模式間切換。這意味着64位指令的解碼器是全新設計的,不用兼顧32位指令,而處理器依然可以向後兼容。

  三、異構計算

  ARM的big.LITTLE架構是一項Intel一時無法複製的創新。在big.LITTLE架構裏,處理器可以是不同類型的。傳統的雙核或者四核處理器中包含同樣的2個核或者4個核。一個雙核Atom處理器中有兩個一模一樣的核,提供一樣的性能,擁有相同的功耗。ARM通過big.LITTLE向移動設備推出了異構計算。這意味着處理器中的核可以有不同的性能和功耗。當設備正常運行時,使用低功耗核,而當你運行一款複雜的遊戲時,使用的是高性能的核。

多方位對比CPU兩大架構:ARM和x86

  這是什麼做到的呢?設計處理器的時候,要考慮大量的技術設計的採用與否,這些技術設計決定了處理器的性能以及功耗。在一條指令被解碼並準備執行時,Intel和ARM的處理器都使用流水線,就是說解碼的過程是並行的。

  爲了更快地執行指令,這些流水線可以被設計成允許指令們不按照程序的順序被執行(亂序執行)。一些巧妙的邏輯結構可以判斷下一條指令是否依賴於當前的指令執行的結果。Intel和ARM都提供亂序執行邏輯結構,可想而知,這種結構十分的複雜,複雜意味着更多的功耗。

  Intel處理器由設計者們選擇是否加入亂序邏輯結構。異構計算則沒有這方便的問題。ARM Cortex-A53採用順序執行,因此功耗低一些。而ARM Cortex-A57使用亂序執行,所以更快但更耗電。採用big.LITTLE架構的處理器可以同時擁有Cortex-A53和Cortex-A57核,根據具體的需要決定如何使用這些核。在後臺同步郵件的時候,不需要高速的亂序執行,僅在玩複雜遊戲的時候需要。在合適的時間使用合適的核。

  此外,ARM具有其與X86架構電腦不可對比的優勢,該優勢就是:功耗。

  其實它們的功耗主要是由這幾點決定的。首先,功耗和工藝製程相關。ARM的處理器不管是哪家主要是靠臺積電等專業製造商生產的,而Intel是由自己的工廠製造的。一般來說後者比前者的工藝領先一代,也就是2-3年。如果同樣的設計,造出來的處理器應該是Intel的更緊湊,比如一個是22納米,一個是28納米,同樣功能肯定是22納米的耗電更少。

  那爲什麼反而ARM的比X86耗電少得多呢。這就和另外一個因素相關了,那就是設計。

  設計又分爲前端和後端設計,前端設計體現了處理器的構架,精簡指令集和複雜指令集的區別是通過前端設計體現的。後端設計處理電壓,時鐘等問題,是耗電的直接因素。先說下後端怎麼影響耗電的。我們都學過,晶體管耗電主要兩個原因,一個是動態功耗,一個是漏電功耗。動態功耗是指晶體管在輸入電壓切換的時候產生的耗電,而所有的邏輯功能的0/1切換,歸根結底都是時鐘信號的切換。如果時鐘信號保持不變,那麼這部分的功耗就爲0。這就是所謂的門控時鐘(Clock Gating)。而漏電功耗可以通過關掉某個模塊的電源來控制(Power Gating)。當然,其中任何一項都會使得時鐘和電源所控制的模塊無法工作。他們的區別在於,門控時鐘的恢復時間較短,而電源控制的時間較長。此外,如果條單條指令使用多個模塊的功能,在恢復功能的時候,並不是最慢的那個模塊的時間,而可能是幾個模塊時間相加,因爲這牽涉到一個上電次序(Power Sequence)的問題,也就是恢復工作時候模塊間是有先後次序的,不遵照這個次序,就無法恢復。而遵照這個次序,就會使得總恢復時間很長。所以在後端這塊,可以得到一個結論,爲了省電,可以關閉一些暫時不會用到的處理器模塊。但是也不能輕易的關閉,否則一旦需要,恢復的話會讓完成某個指令的時間會很長,總體性能顯然降低。此外,子模塊的門控時鐘和電源開關通常是設計電路時就決定的,對於操作系統是透明的,無法通過軟件來優化。

  再來看前端。ARM的處理器有個特點,就是亂序執行能力不如X86。換句話說,就是用戶在使用電腦的時候,他的操作是隨機的,無法預測的,造成了指令也無法預測。X86爲了增強對這種情況下的處理能力,加強了亂序指令的執行。此外,X86還增強了單核的多線程能力。這樣做的缺點就是,無法很有效的關閉和恢復處理器子模塊,因爲一旦關閉,恢復起來就很慢,從而造成低性能。爲了保持高性能,就不得不讓大部分的模塊都保持開啓,並且時鐘也保持切換。這樣做的直接後果就是耗電高。而ARM的指令強在確定次序的執行,並且依靠多核而不是單核多線程來執行。這樣容易保持子模塊和時鐘信號的關閉,顯然就更省電。

  此外,在操作系統這個級別,個人電腦上通常會開很多線程,而移動平臺通常會做優化,只保持必要的線程。這樣使得耗電差距進一步加大。當然,如果X86用在移動平臺,肯定也會因爲線程少而省電。凌動系列(ATOM)專門爲這些特性做了優化,在一定程度上降低亂序執行和多線程的處理能力,從而達到省電。

  現在移動處理器都是片上系統(SoC)架構,也就是說,處理器之外,圖形,視頻,音頻,網絡等功能都在一個芯片裏。這些模塊的打開與關閉就容易預測的多,並且可以通過軟件來控制。這樣,整體功耗就更加取決於軟件和製造工藝而不是處理機架構。在這點上,X86的處理器佔優勢,因爲Intel的工藝有很大優勢,而軟件優化只要去做肯定就可以做到。

  ARM和X86現在發展如何?

  關於X86架構和ARM架構這兩者誰將統一市場的爭執一直都有,但是也有人說這兩者根本不具備可比性,X86無法做到ARM的功耗,而ARM也無法做到X86的性能。現在ARM架構已經具備了進入服務器芯片的能力,衆多芯片研發企業紛紛採用ARM架構研發服務器芯片無疑將促進其繁榮, 2015年一款採用ARM架構的Windows 10平板現身,這也是目前曝光的全球首款非X86架構、運行Windows系統的平板產品。

  同時,經過數年的努力,2016年AMD終於推出了首個基於ARM架構的處理器——Opteron A1100。AMD希望能夠憑藉這一處理器挑戰Intel在數據中心服務器市場的霸主地位。

  這樣看來,Intel在服務器芯片市場將會逐漸失去霸主地位,而且,Intel已然錯過了移動 CPU 市場,現在它正試圖跳進千萬億的物聯網領域,具體表現如何,看時間的考驗吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章