姓名:韓政
學(xué)號:16010188021
轉(zhuǎn)載自:https://www.zhihu.com/question/20148756野芒,有刪節(jié)
【嵌牛導(dǎo)讀】:在大一下學(xué)期嵌入式微處理器原理這門課程中蓝纲,我們學(xué)習(xí)了arm cortexM3的架構(gòu)奢啥。其中老師說到了X86與ARM架構(gòu)處理器能效有很大差異從而引發(fā)探索。
【嵌牛鼻子】:架構(gòu) ?指令集
【嵌牛提問】:X86和ARM架構(gòu)的處理器能效差異為什么會這么大闺魏?
【嵌牛正文】
ARM處理器本身定位于嵌入式平臺节槐,應(yīng)付輕量級、目的單一明確的程序按脚,現(xiàn)在應(yīng)用在移動設(shè)備上正是得心應(yīng)手。x86定位于桌面和服務(wù)器敦冬,這些平臺上很多應(yīng)用是計(jì)算密集型的辅搬,比如多媒體編輯、科研計(jì)算脖旱、模擬等等堪遂。因此將x86和ARM在移動環(huán)境下做對比得出“差不多”是不好的。
由于定位的不同萌庆,ARM處理器基于精簡指令集(RISC)架構(gòu)溶褪。指令集數(shù)量少就可以簡化硬件邏輯的設(shè)計(jì),減少晶體管數(shù)量踊兜,也就意味著低功耗。而且由于移動平臺應(yīng)用通常簡單佳恬,程序的控制流不復(fù)雜捏境,執(zhí)行效率沒有必要很高于游,所以流水線、分支預(yù)測等硬件邏輯都比較簡單垫言。這些都降低了晶體管總量贰剥。同時因?yàn)橐苿釉O(shè)備有電池的能源限制,ARM的電源管理是作為重要部分特別設(shè)計(jì)了的筷频。比如移動設(shè)備的處理器在待機(jī)時通常只以極低的主頻在運(yùn)行蚌成,甚至可以暫時關(guān)閉閑置的核心、協(xié)處理器來降低功耗凛捏。
x86就截然不同担忧。x86是復(fù)雜指令集(CISC)架構(gòu),存在很多機(jī)器指令坯癣,只為了高效地完成一項(xiàng)專門任務(wù)(比如MMX, SSE中的指令)刃跛。這就使得硬件的邏輯很復(fù)雜聚至,晶體管數(shù)量龐大。為了高效地進(jìn)行運(yùn)算,x86架構(gòu)有較長的流水線以達(dá)到指令級并行(ILP)凹蜂。長流水線帶來的一個弊端,就是當(dāng)遇到分支時荆虱,如果預(yù)載入分支指令不是未來真實(shí)的分支先誉,那么要清空整個流水,代價較高绍绘。所以x86為此還必須有復(fù)雜的分支預(yù)測機(jī)構(gòu)奶镶,確保流水線的效率。再加上多級cache脯倒,支持超線程实辑、虛擬化等等,x86的復(fù)雜度其實(shí)相當(dāng)高藻丢。
硬件層面剪撬,這兩種處理器的設(shè)計(jì)初衷可說是背道而馳的,目前看來悠反,x86架構(gòu)在移動計(jì)算站穩(wěn)腳跟很困難残黑,而ARM之類的RISC架構(gòu)也無法在較復(fù)雜的應(yīng)用中表現(xiàn)很出色,例如高性能計(jì)算等領(lǐng)域斋否。
至于發(fā)熱量和功耗梨水,一則因?yàn)閤86處理器要包含很多指令集,這用去了不少晶體管茵臭,二則因?yàn)閮?nèi)部邏輯比較復(fù)雜疫诽,也用去了不少晶體管。所以它從架構(gòu)上講,做到低功耗其實(shí)很困難奇徒,intel號稱可以講功耗做到數(shù)百毫瓦雏亚,但那是在CPU閑置進(jìn)入C5或者C6 state的時候的功耗,相當(dāng)于某些低頻ARM處理器正常工作的功耗摩钙。
總結(jié)來看:
1罢低、精簡指令集就意味著更小的芯片,更少的晶體管工作胖笛。CISC相比于RISC有更多實(shí)現(xiàn)單一功能的晶體管結(jié)構(gòu)(言外之意它們被使用的頻率并不高)网持,而這部分晶體管在不工作的時候會提供不小的靜態(tài)功耗。
2长踊、ARM在無指令處理的時候可以休眠功舀,而X86在無指令處理時只是降低工作頻率而已
3、ARM一般都有協(xié)處理器共同工作之斯,比如GPU