新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM和X86功耗差別的深層原因探討

ARM和X86功耗差別的深層原因探討

作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
ARMX86功耗的差別一直是個(gè)很熱的話題.ARM可以做的很低,甚至1瓦都不到.而X86服務(wù)器的芯片可以達(dá)到100-200瓦,就算是嵌入式處理器Atom系列也需要幾瓦.很多人說這是指令集的關(guān)系.ARM采用精簡指令集,X86采用復(fù)雜指令集,前者每條功能簡單,單挑指令耗電低.而后者每條指令復(fù)雜,單個(gè)指令耗電高.但是這種解釋很模糊.如果大家都做同樣的事情,完成一個(gè)大功能,精簡指令集需要指令較多,而復(fù)雜指令集需要指令少,加起來到底誰耗電多呢.還有,現(xiàn)在處理器普遍采用微指令,大的指令會(huì)被拆分成更小的指令,以達(dá)到更高的流水線效率.簡單指令集的單條微指令和復(fù)雜指令集的單條微指令相比的話,情況就更復(fù)雜.我手頭沒有關(guān)于比較的具體數(shù)據(jù),但是至少前文所列出關(guān)于功耗和指令集相關(guān)的解釋不是很有說服力.

今天碰到一個(gè)資深人士,總算找到一個(gè)比較合理的解釋.

首先,功耗和工藝制程相關(guān).ARM的處理器,不管是哪家,主要是靠臺(tái)積電等專業(yè)制造商生產(chǎn)的.而Intel的是自己的工廠制造的.一般來說后者比前者的工藝領(lǐng)先一代,也就是2-3年.如果同樣的設(shè)計(jì),造出來的處理器因該是Intel的更緊湊,比如一個(gè)是22納米,一個(gè)是28納米,同樣功能肯定是22納米的耗電更少.

那為什么反而ARM的比X86耗電少得多呢.這就和另外一個(gè)因素相關(guān)了,那就是設(shè)計(jì).

設(shè)計(jì)又分為前端和后端設(shè)計(jì),前端設(shè)計(jì)體現(xiàn)了處理器的構(gòu)架,精簡指令集和復(fù)雜指令集的區(qū)別是通過前端設(shè)計(jì)體現(xiàn)的.后端設(shè)計(jì)處理電壓,時(shí)鐘等問題,是耗電的直接因素.

先說下后端怎么影響耗電的.我們都學(xué)過,晶體管耗電主要兩個(gè)原因,一個(gè)是動(dòng)態(tài)功耗,一個(gè)是漏電功耗.動(dòng)態(tài)功耗是指晶體管在輸入電壓切換的時(shí)候產(chǎn)生的耗電,而所有的邏輯功能的0/1切換,歸根結(jié)底都是時(shí)鐘信號(hào)的切換.如果時(shí)鐘信號(hào)保持不變,那么這部分的功耗就為0.這就是所謂的門控時(shí)鐘(ClockGating).而漏電功耗可以通過關(guān)掉某個(gè)模塊的電源來控制(PowerGating).當(dāng)然,其中任何一項(xiàng)都會(huì)使得時(shí)鐘和電源所控制的模塊無法工作.他們的區(qū)別在于,門控時(shí)鐘的恢復(fù)時(shí)間較短,而電源控制的時(shí)間較長.此外,如果條單條指令使用多個(gè)模塊的功能,在恢復(fù)功能的時(shí)候,并不是最慢的那個(gè)模塊的時(shí)間,而可能是幾個(gè)模塊時(shí)間相加,因?yàn)檫@牽涉到一個(gè)上電次序(PowerSequence)的問題,也就是恢復(fù)工作時(shí)候模塊間是有先后次序的,不遵照這個(gè)次序,就無法恢復(fù).而遵照這個(gè)次序,就會(huì)使得總恢復(fù)時(shí)間很長.所以在后端這塊,可以得到一個(gè)結(jié)論,為了省電,可以關(guān)閉一些暫時(shí)不會(huì)用到的處理器模塊.但是也不能輕易的關(guān)閉,否則一旦需要,恢復(fù)的話會(huì)讓完成某個(gè)指令的時(shí)間會(huì)很長,總體性能顯然降低.此外,子模塊的門控時(shí)鐘和電源開關(guān)通常是設(shè)計(jì)電路時(shí)就決定的,對(duì)于操作系統(tǒng)是透明的,無法通過軟件來優(yōu)化.

再來看前端.ARM的處理器有個(gè)特點(diǎn),就是亂序執(zhí)行能力不如X86.換句話說,就是用戶在使用電腦的時(shí)候,他的操作是隨機(jī)的,無法預(yù)測的,造成了指令也無法預(yù)測.X86為了增強(qiáng)對(duì)這種情況下的處理能力,加強(qiáng)了亂序指令的執(zhí)行.此外,X86還增強(qiáng)了單核的多線程能力.這樣做的缺點(diǎn)就是,無法很有效的關(guān)閉和恢復(fù)處理器子模塊,因?yàn)橐坏╆P(guān)閉,恢復(fù)起來就很慢,從而造成低性能.為了保持高性能,就不得不讓大部分的模塊都保持開啟,并且時(shí)鐘也保持切換.這樣做的直接后果就是耗電高.而ARM的指令強(qiáng)在確定次序的執(zhí)行,并且依靠多核而不是單核多線程來執(zhí)行.這樣容易保持子模塊和時(shí)鐘信號(hào)的關(guān)閉,顯然就更省電.

此外,在操作系統(tǒng)這個(gè)級(jí)別,個(gè)人電腦上通常會(huì)開很多線程,而移動(dòng)平臺(tái)通常會(huì)做優(yōu)化,只保持必要的線程.這樣使得耗電差距進(jìn)一步加大.當(dāng)然,如果X86用在移動(dòng)平臺(tái),肯定也會(huì)因?yàn)榫€程少而省電.凌動(dòng)系列(ATOM)專門為這些特性做了優(yōu)化,在一定程度上降低亂序執(zhí)行和多線程的處理能力,從而達(dá)到省電.

此外,現(xiàn)在移動(dòng)處理器都是片上系統(tǒng)(SoC)結(jié)構(gòu),也就是說,處理器之外,圖形,視頻,音頻,網(wǎng)絡(luò)等功能都在一個(gè)芯片里.這些模塊的打開與關(guān)閉就容易預(yù)測的多,并且可以通過軟件來控制.這樣,整體功耗就更加取決于軟件和制造工藝而不是處理機(jī)結(jié)構(gòu).在這點(diǎn)上,X86的處理器占優(yōu)勢,因?yàn)镮ntel的工藝有很大優(yōu)勢,而軟件優(yōu)化只要去做肯定就可以做到.

以上原因我覺得較好的解釋了ARM和X86的功耗差別.

現(xiàn)在看看趨勢.

Intel現(xiàn)在積極推進(jìn)晶體管工藝革新,簡化前端設(shè)計(jì),所以功耗劣勢會(huì)逐步減低.再有,隨著工藝的進(jìn)一步發(fā)展,以后的移動(dòng)設(shè)備主要功耗會(huì)轉(zhuǎn)移到外部設(shè)備而非處理器.比如內(nèi)存,顯示屏,通訊模塊等.這樣,性能會(huì)變的越來越重要.不過Intel有個(gè)難以跨越的鴻溝,就是成本,為了保持高利潤,就算可以降低也不會(huì)愿意降低.等到不得不靠降成本維生的那一天,說明技術(shù)優(yōu)勢不復(fù)存在,公司也快走到頭了,只能轉(zhuǎn)型依靠服務(wù)和平臺(tái)來掙錢.這點(diǎn)可以參照思科和華為的競爭史.大膽預(yù)測,如果2013之后人類仍舊存在,移動(dòng)處理器會(huì)逐漸分為兩個(gè)市場,低端ARM把持,高端Intel獨(dú)占.


關(guān)鍵詞: ARMX86功耗差

評(píng)論


技術(shù)專區(qū)

關(guān)閉