為啥arm架構比x86 x64省電?

燒音箱


嵌入式系統

消費者計算趨勢一方面推動了功耗敏感型移動x86處理器(例如Intel Atom和Celeron)的出現,另一方面又推動了利用Cortex-A系列等內核的基於性能的基於Arm的處理器的出現。對於嵌入式系統開發人員而言,這意味著在開始一個新項目時,現在有更多選擇來選擇最佳平臺(圖1)。

但是,選擇越多,選擇過程就越複雜。此外,儘管傳統的軟件方法已將Arm項目引向Linux,而將X86項目引向Windows,但是針對ARM處理器的嵌入式Windows®操作系統和針對x86的輕量級Linux發行版也意味著,與以往相比,這種劃分沒有那麼明顯。

從開發人員的角度來看,有充分的理由繼續使用經過驗證的成功公式。同樣,評估未嘗試的選項也可以創建令人驚訝的新產品,這些新產品具有出乎意料的功能。

RISC與CISC

Arm處理器的起源可以追溯到1980年代中期,它基於Advanced RISC Machines(ARM)開發的精簡指令集計算機(RISC)架構。

RISC處理器致力於將指令的多樣性保持在最低限度同時還要使這些指令儘可能簡單。每個時鐘週期執行一條指令,這確保了可預測的處理並簡化了流水線之類的加速技術。簡單的指令只需要很少的硅晶體管,從而使芯片設計者可以自由地優化諸如成本和功耗之類的參數。另一方面,由於要選擇的指令較少,每個時鐘週期只有一條指令,因此需要大量指令才能完成給定任務。對於CISC處理器可以更輕鬆,快速地處理的複雜工作負載,這可能導致對RAM的嚴重依賴以及執行時間的降低。

x86家族始於1978年,最初是16位8086微處理器。它們被稱為CISC(複雜指令集計算)處理器。與RISC不同,CISC指令可以執行復雜的任務,需要執行多個週期。這些可以包括浮點數學計算和圖形處理指令。就每個程序的指令數量而言,CISC可以非常高效,與RISC相比,對代碼存儲和RAM的需求更低。另一方面,CISC處理器必須包含更多的晶體管來處理指令的複雜性。

x86已成為用於描述與Intel 8086及其後續產品兼容的CPU指令集的通用術語,包括臺式機和筆記本電腦中常用的Atom,Celeron,Pentium和Core iX處理器。

性能和功耗

由於按照RISC設計原則在管芯上製造晶體管的強度較低,並且速度相對較低,因此ARM磁芯可以實現高效率,因此在低功耗設計中表現出色。基於ARM的處理器的典型最大功耗小於5W,並且具有許多封裝,包括GPU,外圍設備和內存。

英特爾內核由於複雜性的增加,往往比ARM內核消耗更多的功率。針對物聯網和嵌入式用例的英特爾處理器的功耗通常從最小6W到大約30W。

對於要求不高的應用程序或需要較少命令的應用程序, Arm可以獨立使用。但是,更復雜的應用程序(例如涉及高分辨率,高端圖形或流數據的應用程序)可能更適合x86處理器。隨著x86處理器有更多處理可用功率,任務可以更快地完成,並且當接收到更高優先級的中斷不暫停,這最終提高了系統的可靠性並降低了軟件崩潰。

ARM或x86是否最適合產品壽命?

按照PC市場的模式,x86處理器在過去的5/7年生命週期中已被替換對於工業和醫療領域的許多嵌入式產品而言,這並不是理想的選擇。英特爾最近宣佈其打算支持工業CPU達15年。

現在,這使x86架構與基於Arm的處理器處於同一類,後者通常具有超過10年的保證生產壽命

什麼時間開發?技術支持如何?

為嵌入式項目選擇最佳平臺時,還應考慮對適當的開發工具和工程技能的任何現有投資。從理論上講,開發在x86處理器上運行的軟件應該是相對容易的槓桿工具,並支持PC軟件開發。提供了專門為嵌入式開發而創建的IDE和編譯器。使用基於Arm的硬件的開發人員將更有可能需要優化其軟件,使其僅包含基本要素並相應地集成/優化驅動程序。製造商提供的可用開發工具,驅動程序和技術支持的質量,可能會極大地影響完成此操作的時間和成本。


你看我獨角獸嗎


這個問題可以擴展為:為什麼arm架構的芯片都那麼省電!


引言

最初的ARM架構被設計成即使是一個相對簡單的指令譯碼器,也能以架構允許的最大速度運行。

後來的ARM版本有稍微複雜一點的指令解碼邏輯,但是每條指令都是一個或兩個單詞長。

在x86架構上,指令可以是1字節長,也可以是14字節長。

在設計最初的x86架構時,指令是按順序執行的,而且每個指令都需要多個週期才能執行。

如果執行一條指令需要三個週期,那麼找到下一條指令的起始點也需要三個週期。

另一方面,現在人們很難忍受x86代碼運行得那麼慢了。


設計能夠快速運行x86指令的硬件是有可能的

20年前,你可能會認為複雜的指令解碼會限制x86的速度,但事實並非如此。

x86架構要求英特爾和其他芯片製造商,包括一些相當複雜的轉換和緩存邏輯,以便一段代碼第一次運行時,就轉換成易於解碼的形式。

如果代碼再次運行,則可以跳過轉換。可縱然是非常快的芯片,這些邏輯也消耗能量。

相對而言,許多低功耗ARM芯片的前端邏輯要少得多。

x86有這麼緩存轉換性能,arm比不上;可是,沒有了額外技能加身的x86,比arm要遜色的多。


說說功耗

在低功耗的應用中,ARM處理器一直是首選,現在仍然是首選。

比較功耗並不是一件簡單的事情。操作系統、RAM大小和類型、閃存和使用的接口等方面需要與處理器的影響分開。

然而,一般的規則是,ARM在關閉處理器和等待喚醒的模式和可能性方面非常強大。這種空閒模式是指操作系統正在運行,但只等待輸入(例如來自鼠標、鍵盤或應用程序的輸入)。

X86處理器的預期功耗大約為1瓦特。在i.MX6處理器的功耗將是這個數字的一半。

此外,ARM高端部分得益於少數狀態/模式,這些 狀態/模式 (states/modes)的功耗低至100mW,而不犧牲合理快速喚醒的可能性。

低功耗有許多優點。

手持式和電池供電的產品,將受益於增加電池壽命。做產品設計則可以使用更小的電池。由於需要更小的冷卻裝置,材料清單、BOM成本和產品尺寸可能會進一步減少。


寫在最後

天下武功,唯快不破!小而快而全的arm架構普及也得益於其自身設計上的權衡。

Happy coding :)


我是@程序員小助手,持續分享編程故事,歡迎關注。

程序員小助手


1、設計理念不同

最好的性能和最低的功耗就猶如魚和熊掌不能兼得,X86從誕生之初就是為了高性能而誕生的。所以,X86在設計之初就是為了高性能目標,自然省電就放在比較低的位置了。而ARM則是以低功耗為出發點的,自然省電是最重要的。下面看看在CPU設計階段和功耗相關的有幾個要素:

①、運行頻率(時鐘信號)

時鐘信號每變化一次,芯片裡面的門電路自然必須加電壓做一次0/1切換,同時,需要執行的指令或者I/0操作都可以在這個時鐘週期裡調入CPU執行。而這一切就需要消耗電能。所以,時鐘信號變化越快,不管你有沒有指令調入CPU執行,CPU都在高速運轉待命。就好比跑車發動機保持高轉速待命。這裡說的時鐘信號變化就是CPU運行頻率。所以,

設計的運行頻率越高,自然功耗越大

X86處理器設計之初就是為了高性能,省電只是兼顧。所以,它的最高運行頻率都很高。而且每個內核都一樣。當然,為了兼顧省電,也設計有動態頻率功能。intel的睿頻就是這樣的功能,它在電腦普通使用時會降低頻率省電,在繁忙時時,升高頻率使用。但它設計的起點頻率就不低,畢竟電腦的不繁忙(普通使用)和手機的不繁忙(待機)是兩個概念。


ARM處理器設計之初就是為了更省電,畢竟嵌入式等設備並不會要求非常高的性能。所以,ARM處理器特意設計了大核、小核共同使用。當設備運行不繁忙時,小核工作,大核心休息。當設備運行繁忙時,大核心和小核心可以一起工作。這樣設計可以大大降低功耗。所以就算ARM的大核的運行頻率很高,使用到機會卻不多。

②、模塊待機省電

我們都知道X86處理器在處理亂序執行能力方面遠高於ARM處理器。因為,用戶使用電腦的操作是非常隨機,根本無法預測的。所以,X86芯片在設計時,為了滿足這種特性,加強了亂序指令的執行,這就導致了一個耗電問題。這樣必須保持處理器的所有子模塊都在開啟狀態,不能隨便進入關閉狀態來省電。只有當用戶按下休眠或者待機鍵時,才可以讓CPU部分子模塊進入關閉狀態。


ARM處理器就不同了,嵌入式設備通常功能比較單一。就算是現在功能強大的手機,也只有那麼小的屏幕,同一時間段都還是比較簡單。所以,ARM沒必要為了加強亂序指令處理能力。因為用到它的時候不多。如果玩複雜遊戲時需要用到,ARM也考慮到了,就將亂序處理執行的事交給大核處理就行了。這樣,就可以做到平時使用很省電了。


★在芯片設計時,除了這些考慮,還有浮點運算、單指令多數據等等一系列複雜運算。X86都把它設計到處理器裡面了,使得X86處理器的結構變得比較複雜,自然更耗電很多。而ARM則沒有,很多複雜的指令都轉換成簡單指令來處理,因為這些指令在嵌入式設備裡用到時間不多。所以,ARM處理器結構比較簡單。

2、製程工藝也有差別

眾所周知,製程工藝的納米數越低,性能越高,功耗越低。目前中高端手機上的ARM處理器都已經到7nm,5nm製程工藝了。而英特爾的X86處理器依然還在14nm、10nm徘徊,功耗自然也比較高。而AMD最新的X86 CPU,已經採用臺積電7nm製程,功耗明顯就下來很多。當然,前面講的X86 芯片設計目標是高性能,也使得同樣製程,X86芯片依然會更耗電一些。

3、ARM的高性能CPU,功耗一樣很高

ARM處理器一旦設計方向往高性能發展,功耗同樣很高,甚至超過英特爾。下面我們看看近期ARM的高性能服務器CPU。

  • 2017年高通也發佈過一款10nm服務器Centriq 2400芯片。採用10nm工藝,48個核心。性能也很強勁,但功耗TDP也飆升到120W。
  • 2019年華為的鯤鵬920也是ARM架構的服務器CPU。裡面集成64個核心。廣泛用於華為泰山服務器。功耗TDP也高達200W
  • 2020年3月,安晟培 半導體公司發佈了Ampere Altra處理器。它是一個搭載了80個內核的服務器CPU,性能要在數據中心芯片領域向英特爾和AMD發起挑戰。但是功耗TDP也直接飆升到210W

總結

總之,ARM和X86、X64從設計開始就朝著不同的方向設計的。ARM是朝著低功耗去設計的,X86、X64都是朝著高性能去設計的。所以,ARM的能耗自然就比X86、X64更少,但是,如果ARM也走高性能路線,功耗一樣會非常高。看看高通、華為、安晟培 的服務器CPU就知道了。


分享到:


相關文章: