深入了解CPU兩大架構(gòu)ARM與X86
隨便逮住一個(gè)人問(wèn)他知不知道CPU,我想他的答案一定會(huì)是肯定的,但是如果你再問(wèn)他知道ARM和X86架構(gòu)么?這兩者的區(qū)別又是什么?絕大多數(shù)的人肯定是一臉懵逼。今天小編就帶你深入了解CPU的這兩大架構(gòu):ARM和X86。以后出去裝X就靠它了!
本文引用地址:http://2s4d.com/article/201710/366424.htm重溫下CPU是什么鬼
中央處理單元(CPU)主要由運(yùn)算器、控制器、寄存器三部分組成,從字面意思看運(yùn)算器就是起著運(yùn)算的作用,控制器就是負(fù)責(zé)發(fā)出CPU每條指令所需要的信息,寄存器就是保存運(yùn)算或者指令的一些臨時(shí)文件,這樣可以保證更高的速度。
CPU有著處理指令、執(zhí)行操作、控制時(shí)間、處理數(shù)據(jù)四大作用,打個(gè)比喻來(lái)說(shuō),CPU就像我們的大腦,幫我們完成各種各樣的生理活動(dòng)。因此如果沒(méi)有CPU,那么電腦就是一堆廢物,無(wú)法工作。移動(dòng)設(shè)備其實(shí)很復(fù)雜,這些CPU需要執(zhí)行數(shù)以百萬(wàn)計(jì)的指示,才能使它向我們期待的方向運(yùn)行,而CPU的速度和功率效率是至關(guān)重要的。速度影響用戶(hù)體驗(yàn),而效率影響電池壽命。最完美的移動(dòng)設(shè)備是高性能和低功耗相結(jié)合。
要了解X86和ARM,就得先了解復(fù)雜指令集(CISC)和精簡(jiǎn)指令集(RISC) 從CPU發(fā)明到現(xiàn)在,有非常多種架構(gòu),從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來(lái)分類(lèi)的話,它們可以被分為兩大類(lèi),即所謂的“復(fù)雜指令集”與“精簡(jiǎn)指令集”系統(tǒng),也就是經(jīng)常看到的“CISC”與“RISC”。 Intel和ARM處理器的第一個(gè)區(qū)別是,前者使用復(fù)雜指令集(CISC),而后者使用精簡(jiǎn)指令集(RISC)。屬于這兩種類(lèi)中的各種架構(gòu)之間最大的區(qū)別,在于它們的設(shè)計(jì)者考慮問(wèn)題方式的不同。
我們可以繼續(xù)舉個(gè)例子,比如說(shuō)我們要命令一個(gè)人吃飯,那么我們應(yīng)該怎么命令呢?我們可以直接對(duì)他下達(dá)“吃飯”的命令,也可以命令他“先拿勺子,然后舀起一勺飯,然后張嘴,然后送到嘴里,最后咽下去”。從這里可以看到,對(duì)于命令別人做事這樣一件事情,不同的人有不同的理解,有人認(rèn)為,如果我首先給接受命令的人以足夠的訓(xùn)練,讓他掌握各種復(fù)雜技能(即在硬件中實(shí)現(xiàn)對(duì)應(yīng)的復(fù)雜功能),那么以后就可以用非常簡(jiǎn)單的命令讓他去做很復(fù)雜的事情——比如只要說(shuō)一句“吃飯”,他就會(huì)吃飯。但是也有人認(rèn)為這樣會(huì)讓事情變的太復(fù)雜,畢竟接受命令的人要做的事情很復(fù)雜,如果你這時(shí)候想讓他吃菜怎么辦?難道繼續(xù)訓(xùn)練他吃菜的方法?我們?yōu)槭裁床豢梢园咽虑榉譃樵S多非常基本的步驟,這樣只需要接受命令的人懂得很少的基本技能,就可以完成同樣的工作,無(wú)非是下達(dá)命令的人稍微累一點(diǎn)——比如現(xiàn)在我要他吃菜,只需要把剛剛吃飯命令里的“舀起一勺飯”改成“舀起一勺菜”,問(wèn)題就解決了,多么簡(jiǎn)單。這就是“復(fù)雜指令集”和“精簡(jiǎn)指令集”的邏輯區(qū)別。
從幾個(gè)方面比較ARM與X86架構(gòu)Intel和ARM的處理器除了最本質(zhì)的復(fù)雜指令集(CISC)和精簡(jiǎn)指令集(RISC)的區(qū)別之外,下面我們?cè)購(gòu)囊韵聨讉€(gè)方面對(duì)比下ARM和X86架構(gòu)。一、制造工藝ARM和Intel處理器的一大區(qū)別是ARM從來(lái)只是設(shè)計(jì)低功耗處理器,Intel的強(qiáng)項(xiàng)是設(shè)計(jì)超高性能的臺(tái)式機(jī)和服務(wù)器處理器。
一直以來(lái),Intel都是臺(tái)式機(jī)的服務(wù)器行業(yè)的老大。然而進(jìn)入移動(dòng)行業(yè)時(shí),Intel依然使用和臺(tái)式機(jī)同樣的復(fù)雜指令集架構(gòu),試圖將其硬塞入給移動(dòng)設(shè)備使用的體積較小的處理器中。但是Intel i7處理器平均發(fā)熱率為45瓦?;贏RM的片上系統(tǒng)(其中包括圖形處理器)的發(fā)熱率最大瞬間峰值大約是3瓦,約為Intel i7處理器的1/15。其最新的Atom系列處理器采用了跟ARM處理器類(lèi)似的溫度控制設(shè)計(jì),為此Intel必須使用最新的22納米制造工藝。一般而言,制造工藝的納米數(shù)越小,能量的使用效率越高。ARM處理器使用更低的制造工藝,擁有類(lèi)似的溫控效果。比如,高通曉龍805處理器使用28納米制造工藝。
二、64位計(jì)算對(duì)于64位計(jì)算,ARM和Intel也有一些顯著區(qū)別。Intel并沒(méi)有開(kāi)發(fā)64位版本的x86指令集。64位的指令集名為x86-64(有時(shí)簡(jiǎn)稱(chēng)為x64),實(shí)際上是AMD設(shè)計(jì)開(kāi)發(fā)的。Intel想做64位計(jì)算,它知道如果從自己的32位x86架構(gòu)進(jìn)化出64位架構(gòu),新架構(gòu)效率會(huì)很低,于是它搞了一個(gè)新64位處理器項(xiàng)目名為IA64。由此制造出了Itanium系列處理器。
同時(shí)AMD知道自己造不出能與IA64兼容的處理器,于是它把x86擴(kuò)展一下,加入了64位尋址和64位寄存器。最終出來(lái)的架構(gòu),就是 AMD64,成為了64位版本的x86處理器的標(biāo)準(zhǔn)。IA64項(xiàng)目并不算得上成功,現(xiàn)如今基本被放棄了。Intel最終采用了AMD64。Intel當(dāng)前給出的移動(dòng)方案,是采用了AMD開(kāi)發(fā)的64位指令集(有些許差別)的64位處理器。
而ARM在看到移動(dòng)設(shè)備對(duì)64位計(jì)算的需求后,于2011年發(fā)布了ARMv8 64位架構(gòu),這是為了下一代ARM指令集架構(gòu)工作若干年后的結(jié)晶。為了基于原有的原則和指令集,開(kāi)發(fā)一個(gè)簡(jiǎn)明的64位架構(gòu),ARMv8使用了兩種執(zhí)行模式,AArch32和AArch64。顧名思義,一個(gè)運(yùn)行32位代碼,一個(gè)運(yùn)行64位代碼。ARM設(shè)計(jì)的巧妙之處,是處理器在運(yùn)行中可以無(wú)縫地在兩種模式間切換。這意味著64位指令的解碼器是全新設(shè)計(jì)的,不用兼顧32位指令,而處理器依然可以向后兼容。
三、異構(gòu)計(jì)算ARM的big.LITTLE架構(gòu)是一項(xiàng)Intel一時(shí)無(wú)法復(fù)制的創(chuàng)新。在big.LITTLE架構(gòu)里,處理器可以是不同類(lèi)型的。傳統(tǒng)的雙核或者四核處理器中包含同樣的2個(gè)核或者4個(gè)核。一個(gè)雙核Atom處理器中有兩個(gè)一模一樣的核,提供一樣的性能,擁有相同的功耗。ARM通過(guò)big.LITTLE向移動(dòng)設(shè)備推出了異構(gòu)計(jì)算。這意味著處理器中的核可以有不同的性能和功耗。當(dāng)設(shè)備正常運(yùn)行時(shí),使用低功耗核,而當(dāng)你運(yùn)行一款復(fù)雜的游戲時(shí),使用的是高性能的核。
這是什么做到的呢?設(shè)計(jì)處理器的時(shí)候,要考慮大量的技術(shù)設(shè)計(jì)的采用與否,這些技術(shù)設(shè)計(jì)決定了處理器的性能以及功耗。在一條指令被解碼并準(zhǔn)備執(zhí)行時(shí),Intel和ARM的處理器都使用流水線,就是說(shuō)解碼的過(guò)程是并行的。
為了更快地執(zhí)行指令,這些流水線可以被設(shè)計(jì)成允許指令們不按照程序的順序被執(zhí)行(亂序執(zhí)行)。一些巧妙的邏輯結(jié)構(gòu)可以判斷下一條指令是否依賴(lài)于當(dāng)前的指令執(zhí)行的結(jié)果。Intel和ARM都提供亂序執(zhí)行邏輯結(jié)構(gòu),可想而知,這種結(jié)構(gòu)十分的復(fù)雜,復(fù)雜意味著更多的功耗。
Intel處理器由設(shè)計(jì)者們選擇是否加入亂序邏輯結(jié)構(gòu)。異構(gòu)計(jì)算則沒(méi)有這方便的問(wèn)題。ARM Cortex-A53采用順序執(zhí)行,因此功耗低一些。而ARM Cortex-A57使用亂序執(zhí)行,所以更快但更耗電。采用big.LITTLE架構(gòu)的處理器可以同時(shí)擁有Cortex-A53和Cortex-A57核,根據(jù)具體的需要決定如何使用這些核。在后臺(tái)同步郵件的時(shí)候,不需要高速的亂序執(zhí)行,僅在玩復(fù)雜游戲的時(shí)候需要。在合適的時(shí)間使用合適的核。
此外,ARM具有其與X86架構(gòu)電腦不可對(duì)比的優(yōu)勢(shì),該優(yōu)勢(shì)就是:功耗。其實(shí)它們的功耗主要是由這幾點(diǎn)決定的。首先,功耗和工藝制程相關(guān)。ARM的處理器不管是哪家主要是靠臺(tái)積電等專(zhuān)業(yè)制造商生產(chǎn)的,而Intel是由自己的工廠制造的。一般來(lái)說(shuō)后者比前者的工藝領(lǐng)先一代,也就是2-3年。如果同樣的設(shè)計(jì),造出來(lái)的處理器應(yīng)該是Intel的更緊湊,比如一個(gè)是22納米,一個(gè)是28納米,同樣功能肯定是22納米的耗電更少。
那為什么反而ARM的比X86耗電少得多呢。這就和另外一個(gè)因素相關(guān)了,那就是設(shè)計(jì)。
設(shè)計(jì)又分為前端和后端設(shè)計(jì),前端設(shè)計(jì)體現(xiàn)了處理器的構(gòu)架,精簡(jiǎn)指令集和復(fù)雜指令集的區(qū)別是通過(guò)前端設(shè)計(jì)體現(xiàn)的。后端設(shè)計(jì)處理電壓,時(shí)鐘等問(wèn)題,是耗電的直接因素。先說(shuō)下后端怎么影響耗電的。我們都學(xué)過(guò),晶體管耗電主要兩個(gè)原因,一個(gè)是動(dòng)態(tài)功耗,一個(gè)是漏電功耗。動(dòng)態(tài)功耗是指晶體管在輸入電壓切換的時(shí)候產(chǎn)生的耗電,而所有的邏輯功能的0/1切換,歸根結(jié)底都是時(shí)鐘信號(hào)的切換。如果時(shí)鐘信號(hào)保持不變,那么這部分的功耗就為0。這就是所謂的門(mén)控時(shí)鐘(Clock Gating)。而漏電功耗可以通過(guò)關(guān)掉某個(gè)模塊的電源來(lái)控制(Power Gating)。當(dāng)然,其中任何一項(xiàng)都會(huì)使得時(shí)鐘和電源所控制的模塊無(wú)法工作。他們的區(qū)別在于,門(mén)控時(shí)鐘的恢復(fù)時(shí)間較短,而電源控制的時(shí)間較長(zhǎng)。此外,如果條單條指令使用多個(gè)模塊的功能,在恢復(fù)功能的時(shí)候,并不是最慢的那個(gè)模塊的時(shí)間,而可能是幾個(gè)模塊時(shí)間相加,因?yàn)檫@牽涉到一個(gè)上電次序(Power Sequence)的問(wèn)題,也就是恢復(fù)工作時(shí)候模塊間是有先后次序的,不遵照這個(gè)次序,就無(wú)法恢復(fù)。而遵照這個(gè)次序,就會(huì)使得總恢復(fù)時(shí)間很長(zhǎng)。所以在后端這塊,可以得到一個(gè)結(jié)論,為了省電,可以關(guān)閉一些暫時(shí)不會(huì)用到的處理器模塊。但是也不能輕易的關(guān)閉,否則一旦需要,恢復(fù)的話會(huì)讓完成某個(gè)指令的時(shí)間會(huì)很長(zhǎng),總體性能顯然降低。此外,子模塊的門(mén)控時(shí)鐘和電源開(kāi)關(guān)通常是設(shè)計(jì)電路時(shí)就決定的,對(duì)于操作系統(tǒng)是透明的,無(wú)法通過(guò)軟件來(lái)優(yōu)化。
再來(lái)看前端。ARM的處理器有個(gè)特點(diǎn),就是亂序執(zhí)行能力不如X86。換句話說(shuō),就是用戶(hù)在使用電腦的時(shí)候,他的操作是隨機(jī)的,無(wú)法預(yù)測(cè)的,造成了指令也無(wú)法預(yù)測(cè)。X86為了增強(qiáng)對(duì)這種情況下的處理能力,加強(qiáng)了亂序指令的執(zhí)行。此外,X86還增強(qiáng)了單核的多線程能力。這樣做的缺點(diǎn)就是,無(wú)法很有效的關(guān)閉和恢復(fù)處理器子模塊,因?yàn)橐坏╆P(guān)閉,恢復(fù)起來(lái)就很慢,從而造成低性能。為了保持高性能,就不得不讓大部分的模塊都保持開(kāi)啟,并且時(shí)鐘也保持切換。這樣做的直接后果就是耗電高。而ARM的指令強(qiáng)在確定次序的執(zhí)行,并且依靠多核而不是單核多線程來(lái)執(zhí)行。這樣容易保持子模塊和時(shí)鐘信號(hào)的關(guān)閉,顯然就更省電。
此外,在操作系統(tǒng)這個(gè)級(jí)別,個(gè)人電腦上通常會(huì)開(kāi)很多線程,而移動(dòng)平臺(tái)通常會(huì)做優(yōu)化,只保持必要的線程。這樣使得耗電差距進(jìn)一步加大。當(dāng)然,如果X86用在移動(dòng)平臺(tái),肯定也會(huì)因?yàn)榫€程少而省電。凌動(dòng)系列(ATOM)專(zhuān)門(mén)為這些特性做了優(yōu)化,在一定程度上降低亂序執(zhí)行和多線程的處理能力,從而達(dá)到省電。現(xiàn)在移動(dòng)處理器都是片上系統(tǒng)(SoC)架構(gòu),也就是說(shuō),處理器之外,圖形,視頻,音頻,網(wǎng)絡(luò)等功能都在一個(gè)芯片里。這些模塊的打開(kāi)與關(guān)閉就容易預(yù)測(cè)的多,并且可以通過(guò)軟件來(lái)控制。這樣,整體功耗就更加取決于軟件和制造工藝而不是處理機(jī)架構(gòu)。在這點(diǎn)上,X86的處理器占優(yōu)勢(shì),因?yàn)镮ntel的工藝有很大優(yōu)勢(shì),而軟件優(yōu)化只要去做肯定就可以做到。
ARM和X86現(xiàn)在發(fā)展如何?關(guān)于X86架構(gòu)和ARM架構(gòu)這兩者誰(shuí)將統(tǒng)一市場(chǎng)的爭(zhēng)執(zhí)一直都有,但是也有人說(shuō)這兩者根本不具備可比性,X86無(wú)法做到ARM的功耗,而ARM也無(wú)法做到X86的性能?,F(xiàn)在ARM架構(gòu)已經(jīng)具備了進(jìn)入服務(wù)器芯片的能力,眾多芯片研發(fā)企業(yè)紛紛采用ARM架構(gòu)研發(fā)服務(wù)器芯片無(wú)疑將促進(jìn)其繁榮, 2015年一款采用ARM架構(gòu)的Windows 10平板現(xiàn)身,這也是目前曝光的全球首款非X86架構(gòu)、運(yùn)行Windows系統(tǒng)的平板產(chǎn)品。
同時(shí),經(jīng)過(guò)數(shù)年的努力,2016年AMD終于推出了首個(gè)基于ARM架構(gòu)的處理器——Opteron A1100。AMD希望能夠憑借這一處理器挑戰(zhàn)Intel在數(shù)據(jù)中心服務(wù)器市場(chǎng)的霸主地位。這樣看來(lái),Intel在服務(wù)器芯片市場(chǎng)將會(huì)逐漸失去霸主地位,而且,Intel已然錯(cuò)過(guò)了移動(dòng) CPU 市場(chǎng),現(xiàn)在它正試圖跳進(jìn)千萬(wàn)億的物聯(lián)網(wǎng)領(lǐng)域,具體表現(xiàn)如何,看時(shí)間的考驗(yàn)吧。
評(píng)論