當有人問你,為什麼電腦的CPU不設計成大小核,你會想到什麼?當小編聽到這個問題時,第一想到的是功耗,畢竟即使是筆記型電腦,也沒有手機那樣長的續航要求。但只有這一個原因嗎?

眾所周知,現在手機裡用的Arm SoC採用的是big.LITTLE大小核架構,也就是在一個SoC裡面包含了幾個高性能核心和幾個高能效核心。但英特爾(Intel)也有凌動(Atom)和酷睿(Core)兩種CPU (AMD也有類似產品線),為什麼就遲遲沒把它們做在一起呢?

這個問題其實早就有網友討論過,EDN小編現在在這裡做個整理,看看有哪些說法靠譜。

四點想法以及指正

先看看下面某網友的幾個想法以及另一名網友的指正:

20190308_Core_NT61P1

(製表:Franklin Zhao, EDN China)

英特爾不做大小核是因為...

以下面看看知乎網友北極談的幾點想法。他表示,首先有幾個事實必須要明確:

  1. 英特爾也有低功耗的需求場景,當然也做物聯網和低功耗裝置。
  2. 英特爾有足夠的技術能力設計出大小核的CPU。
  3. 英特爾產品強調的是相容性和產品的延續性——這是重點。

所以,所有在講不需要關注功耗、睿頻能解決功耗、Atom架構功耗低的回答都是片面的。

首先,針對前面兩項:不管是需求還是設計能力,英特爾都有對應的市場和相應的技術能力,存在物聯網應用的需求,也有極低功耗裝置的需求.至於對應的技術能力,英特爾更是沒問題,大小核又不是多複雜的東西,異質多核心都能做出來,況且英特爾還收購了Altera——本身就是衝著異質多核心而開發的,做不出來是不可能的,況且在小核心上真就搞不出SIMD指令?真要做,英特爾會沒這個實力?

那麼,英特爾不做大小核的原因,無非就是一點:跟現有的產品特性不一致,在相容性和延續性上達不到英特爾的要求——不管是產品特性還是企業發展本身。

其實很多人在討論功耗的時候,多數情況下只關注到了頻率這一項。確實,根據公式,主頻確實是影響功耗的一個關鍵因素,但僅僅只有主頻嗎?有人會提到英特爾採用CISC,和Arm的RISC架構不一樣,但同為RISC的MIPS和PPC功耗並不低,況且Arm也嘗試進軍伺服器市場,Arm的伺服器級CPU功耗一樣很高。況且,英特爾的睿頻也並不能像Arm那樣降低多少功耗,Arm的大核心是小核心性能的一倍多,功耗只有10%多一些,但英特爾的睿頻差距能達到4倍甚至更多,功耗差距卻沒Arm那麼大。真要考慮運算功耗比,顯卡可比CPU省電多了。所以主頻只是影響功耗的一方面,還存在別的因素影響了功耗。

在英特爾和Arm的架構上,對於編寫作業系統的人來說,最明顯的區別是對於cache的處理,看CPU的結構圖,cache佔用空間基本上是最大的,功耗也相當大,並且多數情況下,除了L1 cache以外,cache多數都是共用的,那麼即使某個核心關掉了,cache也不能關。

cache對功耗的影響是很大的。在Arm上寫驅動和作業系統,需要很小心的維護cache的一致性,否則就容易出錯,而在x86上寫作業系統就相對簡單的多。

除了cache的問題,還有像memory ordering這類的區別。

在現代的CPU裡,這些區別其實佔用很大的功耗,而英特爾和Arm的最大不同也就是這些。主頻降下來很容易,架構改變卻很難。

如果英特爾的cache需要像Arm一樣不友善,那麼英特爾的CPU也許會很省電,但寫作業系統的人肯定會罵——難用、相容性差,老代碼跑起來會有問題。

大小核看上去很美好,但核心間遷移的效率極低,過去甚至需要以毫秒計算,要知道CPU的指令都是奈秒級的。

所以,假設英特爾做了大小核,如果仍然沿用現有的cache設計和記憶體模型,那麼功耗並不會降低多少,因為英特爾 CPU即使降低主頻也不會多省電——這就是睿頻的思路。

況且核心間遷移是一個很考驗cache設計的問題,英特爾的cache設計已經是很複雜了,比Arm複雜的多。

所以,是這些相容性和產品特性的問題,導致了英特爾不會選擇做大小核——不是做不出來,也不是不值得做,真要做出來,也肯定不叫x86,而是別的名字。

因為作業系統不支援?

接下來,我們再來看下這個說法,EDN小編認為這個可能最靠譜。

英特爾要做大小核,實際受制於作業系統。Windows一直支持同質多處理器架構(SMP),直到Windows 10才開始支援異質多處理器架構(HMP),並且針對的主要還是使用Arm big.LITTLE的行動系統。對於桌面系統來說,功耗並不是個大問題。而且,大多數應用希望每個核心具有相似的性能特性,並且HMP系統的調度過程比傳統的SMP系統要複雜得多。

此外,目前大多數桌上型電腦和筆記型電腦的處理器在某些核心需要快速運行,甚至是有短時突發的情況下,也不用擔心會出現散熱或者電氣問題。真正遇到的瓶頸是如何提高單個核心性能,而大小核設計並不能讓大核心跑得更快。

雖然x86處理器也可以透過採用大小核設計來最佳化重載應用,但這會使處理器的設計複雜性攀升,並有可能遇到應用不支援或指令不相容的情況。

大多數Windows下的多執行緒應用都假設每個核心的性能水準相同或幾乎相同,並且可以執行相同的指令。因此,這種不對稱性可能會導致性能不佳,甚至如果它使用了小核心不支援的指令,還有可能崩潰。雖然英特爾可以透過修改小核心,添加先進指令支援,但這不能解決異質處理器的軟體支援問題。

不是不採用大小核設計,而是即將採用...

知乎網友長生天尊的觀點是,桌上型電腦CPU並不是不採用大小核心設計,而是即將採用大小核心設計,因為任何歷史發展都是有慣性的,即使是CPU設計,也是有架構的慣性。總要有人先試水,後面跟上。

大小核心的優點在於低成本、功耗管理、單個die面積小。缺點在於核心間通訊延遲。

電腦CPU的架構不是一天就進化而來的。從1978到2018足足40年時間裡,x86不僅在架構上演變,還保持了對軟體/硬體的前向相容問題。x86/X64的成功往往不是因為架構設計的先進,反而是架構設計的落後但相容所帶來的成功。而那些架構優於英特爾的RISC、MIPS並不能保證相容的新架構都死在了沙灘上。

  1. 從1978-1986年是CPU架構草創時代,這個時代CPU的性能主要由架構決定,在這時代的CPU架構百花齊放,x86才是眾多CPU設計中的一位小老弟,這時候的Digitial VAX-11/780才僅5MHz速度,而英特爾的20286 80386並未形成技術上的護城河,英特爾多虧了IBM的提攜才迅速的在家用機市場上普及,這時候的伺服器市場依舊是IBM的PowerPC時代。

  2. 從1986-2002年是主頻加速時代,即MIPS M2000 英特爾80486到Digital Alpha 21064、Dighital Alpha、Intel Pentium III 1000MHz,這個時代的CPU致力於以單核心、長流水線、超標量、亂序執行、主頻加速的方式來提升性能,比如Intel Pentium的2路超標量64位元匯流排、Pentium Pro的亂序3路超標量、Pentium4的亂序流水線、晶片上L2 cache。直到英特爾的奔騰系列達到4.0GHz之後撞上了功耗牆大家才發現,單核心的限制無法避免。最終業界普遍認為,單個核心的設計頻率最好不要達到5GHz以上。

  3. 從2002至今是多核心加速性能時代,從AMD的K6雙核心開始,CPU進入了多核心加速時代,開始了L3 cache和Turbo睿頻,與其說電腦CPU不採用大小核心設計,不如說說Arm這家企業。

Arm以前是做低功耗處理器的,而手機的A7x系列設計則是在千禧年之後的事情,這意味著Arm SoC在設計之初就可以吸收多核心發展的思想,結合著自己獨特的電源管理能力,這意味著Arm開始時就是衝著省電多核心設計去的。

再加上Apple和Google兩家公司對Arm架構的情有獨鍾,唯一指定,使得Arm最終在手機晶片領域的崛起,但實際上這種崛起不是必然的,比如智慧型手機的發明者賈伯斯,最開始找到的是英特爾,Google最開始也是找到的英特爾,但是英特爾當時並不看好手機市場,使得凌動系列錯失了手機智慧化浪潮的發展機會,而AMD則由於資金問題不得不將行動CPU賣給了高通。

20190308_Core_NT61P2

(來源:知乎@長生天尊)

但這是個多核心的時代,大小核心設計的確擁有潛力。

20190308_Core_NT61P3

(來源:知乎@長生天尊)

只要能夠解決通訊延遲,單PCB上多核心必然會重見天日。

英特爾大小核SoC即將投產,會應用到電腦上?

最後,再來看看英特爾最近這條新聞。

英特爾在本屆CES展會上展出的產品主要跟行動相關。首先,英特爾再次確認使用大小核架構以及3D封裝的Lakefield處理器今年內投產,大核心是1個Sunny Cove高性能核心,小核心是4個Atom核心。同時會使用英特爾創新的3D封裝Foreros技術整合在一起。此外,英特爾還推出了「雅典娜」筆記型電腦設計計畫……

具體哪些產品會使用這款處理器還不得而知,最可能的還是行動設備,比如二合一筆電等對續航要求較高的產品。

所以,最終電腦CPU是否也會採用大小核架構,讓我們拭目以待。

讀者朋友們,你們又有怎樣的想法或指正,歡迎在評論欄中不吝賜教。