為什麼手機核心數目提升的比計算機快?

現在手機已經進軍十核心了,個人計算機才是六核心。


需要澄清地是,如果問題的計算機不單指 PC,問題本身都是不成立的。因為幾年前筆者開發 BSP 時,就有做過多達 16x4,即 64 核的網路交換機方案,而用於超算的大型計算機的核心數目更會驚人。

另外,如果算上 GPU,這個問題也可能不成立。

好吧,這裡暫且設定背景為手機與 PC 的 CPU 吧。

~~~

兩個領域有非常不同的需求~

PC 可以一味地追求高主頻,高單核性能,因為它可以安裝風扇或者安裝很大塊的散熱裝置,可以直接接入家用能源。當然,雖然 PC 的性能往上漲的空間可以更高,但是這個「一味地」也是有限制的,所以 PC 在更早以前就在嘗試多核了。

但是手持智能設備的單核不可以「一味地」追求高頻,它小巧,它隨身攜帶,它要考慮發熱,要考慮電池的容量。所以,智能終端的 SOC 在設計的時候必須在兼顧溫控與能耗的情況下。這註定智能終端的 SOC 要走 PC 的多核化老路,並且做更多樣化的嘗試。

就是因為這種差異,導致手持設備 SOC 的設計廠商在做各種架構,技術與工藝的嘗試。

多核只是其中一種嘗試。

因為單核在主頻上去以後,要求的電壓更高,發熱嚴重,而隨著發熱量的增加,漏電率又會增加,會進一步增加能耗與發熱。而這兩項恰會影響手持設備的兩個重要體驗,即續航與溫控。

在單核方面,相應的技術改進有 HPM 以及最新的 FinFet,漏電率比 LP 下降不少,所以同樣的主頻可以跑在更低的電壓上。除此之外,還有一些篩選和區分不同品質晶圓的技術,例如三星的 ASV,晶圓質量高的同頻下可以跑更低的電壓。

與此同時,還有各種類型資源的 DVFS 支持,idle支持,clock gating,regulator gating,power domain……

好了,那單核的性能努力如何呢?從當前市場上在售的來看:

「 Cortex-A57 是 ARM 最先進、性能最高的應用處理器,號稱可在同樣的功耗水平下達到當今頂級智能手機性能的三倍;而 Cortex-A53 是世界上能效最高、面積最小的64位處理器,同等性能下能效是當今高端智能手機的三倍。這兩款處理器還可整合為 ARM big.LITTLE(大小核心伴侶)處理器架構,根據運算需求在兩者間進行切換,以結合高性能與高功耗效率的特點,兩個處理器是獨立運作的。」

而未來聯發科上市的全新 Helio X20(即MT6797)的大核 A72 可以到2.5G。

那問題來了,雖然性能很強勁,但是發熱的劇增會導致處理器持續高頻不了多久。因為人體的溫度是恆定的,37度,如果人體接觸的物體溫度,溫一點,42~43度,再熱一點45~47度,再就燙起來了。所以這個加上主板的散熱結構已經阻止了固定工藝和技術下的性能成長空間。也限制了高頻核心的高性能的應用。

而加上手持設備的結構空間限制,又限制了散熱技術的應用,這個是 PC 和伺服器根本就不存在的問題。

既然往上漲不了了(實際上還有技術和成本制約),那是不是可以橫著漲呢?好了,嘗試多核,而多核又有同構多核,異構多核,有真多核還有偽多核。

到這個份上,咱們就可以得到一個初步的結論,多核完全是為了迎合消費者,不是為了迎合和迎合,而是為了給用戶更好的體驗。

為什麼會提供更好的體驗?

隨著主頻的提升,單核的工作能耗會隨著指數級上升,相應的熱量聚集也會更高。換算到同等計算能力(單位時間內可執行的指令數)的多核,能耗上升呈線性關係,熱量聚集會明顯降低。具體量化起來,得畫個圖表,把頻率,核數和能耗關係繪製出來,這裡先省掉。大家可以看下百科上的一篇推導:多核_互動百科

先來介紹一下這種換算的實際場景限制:

1,對於遠古時代的單一任務系統,多核是沒有意義的。任務的工作量沒有辦法分派給其他核心執行。並行不起來。

2,現今的系統,包括 Android 等手持設備的系統默認任務數量已經非常多,具體數量會有差異。稍微看了下 MX3,有100+,實際線程數只會更多。

3,多核相比單核,無用的任務 Context Switch 會減少,能耗利用率會提高,任務的響應能力(最高頻率滿足條件下)也相應會增加。甚至對於一些關鍵的任務,可以通過獨佔某一個核心獲得最好的響應能力。

那核數是不是越多越好呢?是不是 100 個任務就開 100 個核呢?肯定不是,首先有硬體成本(晶體管個數會成倍增加)的限制;其次,核數多了以後,負載均衡,任務遷移,甚至任務同步也是很大一筆開銷;再者,並不是所有的任務都是大任務(CPU 緊密型,典型的例子是 Android 升級包的 AES 解密演算法),實際上是大部分任務都是輕任務(典型的例子是很多內核線程,比如 watchdog),輕任務完全可以通過單核分時調度,未來的 Linux 還支持 package 多個小任務到一塊;還有一個是,蠻多應用在開發之初未能採用多任務設計,無法充分利用多核。

那到底應該設計成多少個核呢?不同的核如何分配呢?大小核還是異構多核?

核心數的上限應該取決於實際的應用情況:

1、單個應用的設計情況,暫時手頭沒有詳細的不同應用的線程數數據,綜合其他渠道的一些數據,大型遊戲通常會是使用多任務的典型場景。

2、多個應用同時工作的情況,以及前後台同時工作,系統啟動,系統休眠後喚醒等場景,例如後台下載,聽音樂,前台瀏覽網頁。

3、未來應用場景,比如說分屏與多窗口,多個前台應用同時工作等。

具體的核心數利用情況,手頭沒有大數據,暫時不給確切的結論。後面找個時間寫個腳本觀察下自己一天的使用情況,把日常應用都跑一遍,統計下真實的核心利用率,根據部分實驗結果預計部分場景可以到 5~8 個,也有部分可以比較充分地利用 3~4 個,而有一部分用到 1~2 就夠了。

但是目前最多的手機核數已經到 8 核,包括同構與大小核(big.LITTLE)。

同構多核的 8 個核是對等的,所以考慮的場景更多應該是 8 個核同時利用的情況,這個情況應該是非常少數的,比如系統啟動,前後台多個大型任務同時工作,以及未來潛在的分屏或者多窗口,再一個是 Benchmark(忽悠!)。

而大小核(4+4)的這種情況則不一樣,這相當於搞了兩個檔位,一個高檔位是 High Performance 的 U,一個低檔位是 High Efficiency 的 U,這個可以針對不同應用場景進行靈活組合,並不需要多個核一定要完全跑起來,比如說:1)很多小型遊戲,比如說玩過的一個漂流遊戲,三個小核跑起來很節能也很順暢,但是 2 個就不夠,第三個線程無法並行。2)比如說應用啟動與 ListView,可以立即遷移到大核上,保留1~2個小核跑其他的小任務,Boost 1~2 秒後,交互完工後再回到小核。3)而開機以及前後台等場景則可以突發把所有核心都開起來,做到快速開機。這裡的大小核同樣是切了答主在開頭提到的手持設備的續航和溫控體驗的,這裡的多核並不僅僅是需要多個核心同時跑起來,而是可以有多個不同的檔位選擇適應不同的場景。

至於 MTK 未來的 4 + 4 + 2 架構(Helio X20)則更多是對當前大小核的一個補充,相當於多引入了一個檔位,這個對於平衡能耗與性能是非常不錯的嘗試。相比於之前簡單的調頻來調節檔位,這個切換不同架構的 U (low energy v.s. high performance)的檔位能更好地體現能效與性能的差異(蠻像汽車的檔位哈),謀求不同場景的應用需求。

A72 的引入必然會全面提升交互場景以及超大型遊戲的應用體驗,讓交互延遲進一步下降。而兩個低檔位的不同頻率(工藝方面暫時不確定是否有差異?)的 A53 則可以進一步突破 MT6752 的同構 8 核架構,讓兩對 4 核分別滿足不同場景需求,比如說在線瀏覽和小型遊戲等日常應用場景可以降到最低檔,而中型遊戲可以跑中檔,確實負載小的時候還可以切回最低檔;而系統啟動等場景,由於可以多核全開,那麼啟動速度可以預想應該會提升不少。

A53 在魅藍 note 上的精彩表現已經證明了 A53 的能效設計優勢,而 A72 作為 ARM 的下一代 High Performance CPU,性能提升是可以預見的。我們可以預想 Helio 這款 U 的能效與性能應該可以做到更好的 Belance,期待有更精彩的表現,對於續航、溫控與交互體驗或許都會有提升。大家可以看看某媒體的實測情況:測試曝光:Helio X20運行溫度低於驍龍810_科技頻道,具體還是要看後續市場產品的表現了。

不過,對於低端一些的機型,如果多核的價值不能得到充分發揮,出於成本的原因,或許會回歸 4 ~ 6 個核心,比如 3 + 2 或者 4 + 1 或者 2 + 2,如果 1~2 個 big 核採用 A72,那麼綜合的性能和能效表現或許會更好。

~~~

暫時更新到這裡……後面有空貼一些實測數據上來……更多技術文章請訪問 http://tinylab.org


是時候給你看看我的掃雷神器了


Xeon 麻煩您看一下


MTK剛出八核的時候,有人問高通的高管怎麼看。高管說:「你永遠不能用一個八缸的除草機來比較四缸的法拉利」


因為銷售覺得核心多他們好騙錢。

---------------------------------------------------

世上沒有免費的午餐。

一個TDP只有3-5W的破手機,怎麼可能和80-100W的台式機比。
80W可能能幹得過200W(對,就是說你,AMD),但是8W,絕對沒戲。
不不不,別說是AMD,就是DMA也能幹過你。
所以別說8核了,800核也不管鳥用。

另外說超線程,HT走的是性能導向,不是性能功耗比導向,在手機上這一類的東西都不太討好,就連OoO都是晚近才出現的設計。

還有,你們以為Intel的CPU差嗎?手機是靠什麼吃飯,既不是CPU也不是GPU,是靠基帶。你CPU屌,能屌得過貴通買基帶送CPU,買基帶送GPU嗎?以後Intel要翻身,也是要基帶先翻身。

你們啊,要漲一張姿勢。我精神導師說過,你們年輕人,too young, too si…

等等有人敲門,我先去收個快遞。

------------------------------------------------

我一直覺得,Mobile CPU,2-4顆核是比較合適的選擇。
因為

  1. 散熱壓力減小(因為單核的Die Size增大了);
  2. 可以留一些晶體管提升單核性能;
  3. 可以多放點Cache。

特別是對28nm以下的製程,Leakage已經變得不容忽視了。
而Leakage Power和溫度是正相關的,所以做好散熱設計更加重要一些。
不過目前大家都看重核多也是沒辦法的事情了。

在CPU的設計方面,只有市場相對獨立、盈利狀況良好的Apple,可以做一些自己想做的事情:

  • 只做2 Cores(更加側重於單核性能);
  • 比一般Mobile CPU更大的Die Size(意味著更高的成本);
  • 一個比較大的Cache;
  • 散熱設計和晶元性能的均衡(比如A8處理器宣傳說可以滿頻率運行長時間。雖然實際證明手機上這也只是吹牛逼,但是要比其他廠,比如貴通,貴科,貴訊,貴思都要好)

---------------------------------------

評論裡面有評論說多核肯定有用。
是有用,但是目前這個狀況,真不需要8核/10核那麼多。

----------------------------------------

8月1日補充

某些答案說別人「狂歡」,自己才是真正的狂歡。

人家問六核八核,有把PC的顯卡、AC97、IO Bridge、內存控制器、電源管理、硬碟DSP都算了嗎?那我一個Transistor就是一個核,一個電腦大幾十億個核,是不是你就更狂歡了。
不要說得就很多核不要錢一樣,每一個核都有大量的重複單元怎麼不算進去。
也不要以為十個核就是一個核的十倍性能,基本並行加速公式被沖抽水馬桶了嗎?
還有,「功耗是頻率的三次方」,更高效的單核設計可以降低對頻率的需求怎麼都不提了?
核關掉可以控制功耗沒錯,那每個核分攤的面積小了只有簡單設計的非同步時鐘和Power Gate變粗導致性能上升要怎麼算?
很多任務都是不能分拆的,要是硬甩到不同核上導致大量的晶元間通信怎麼辦?
100個線程。喚醒率有多少有計算過嗎?
不同場景SoC不同部分的功耗分布有看過嗎?典型場景有剖析過嗎?

我也很希望做晶元就能和你說的那樣,沒事兒堆核就好了,那多簡單。
很可惜核數和性能或功耗,並不是Y=AX的線性關係,更加是Y=AX^2+BX+C這樣的二次型。一切複雜的設計和分析,包括核的數量、調度的複雜度,都是為了找到這個二次型的最值點。

這個最佳點,不是靠嘴炮得來的,是被槍斃的一輪輪方案的屍體所堆出來的。


原因是手機行業競爭的白熱化。

起初諾基亞時代,手機賣的是設計,後來蘋果HTC時代,手機賣的是系統,再後來三星時代,手機賣的的是配置,到了小米的這個時代手機賣的只有參數了。

因為競爭的加劇,深刻的東西越來越沒有市場,膚淺,直接明顯的東西越來越大行其道。


設計和系統在此不談,直說配置跟參數的區別。

intel曾經出國一款單核2.0Ghz的x86架構手機處理器,他的性能比高通某款4核1.0Ghz的arm A5架構處理器要強出一大截,即使只是說跑分。

從配置上說英特爾的那款單核處理器要比高通的那款四核處理器要高,但是,

從參數上說,高通的是4核,intel是單核。


對於普通消費者,會毫不猶豫的選擇4核。因為不論何如4核總感覺比單核強的多。


所以,性能差4核比性能好的單核要有優勢。

正是生產商發現這個荒誕的「真理」,所以誰也不願意在做吃力不討好的東西,大家都明白,只要把幾個簡單易懂的參數堆起來就夠了,而最容易被人理解的就是幾核,所以,手機處理器在實際性能沒有提升情況下,從雙核到四核,再到八核,用了大約兩年時間走完了pc十年才走完的路。

受限與電池和散熱,手機的穩定性能提升已經極為有限,廠商能做的只有峰值性能,也就是跑分數值在不停升高。

實際上,穩定性能提升極其困難,完全是吃力不討好的事。

結果就如同前面單核跟四核的故事一樣,聯發科開是不顧一切的設法堆核,本來兩大兩小就可以應付自如的處理器,為了參數更好看,強行拆成二大四中四小的十核心,僅僅是為了湊齊數字而已。

當然,這麼設計還是有一定道理的,不同情況用不同大小的核,確實可以在峰值更快,在低谷出更省點節能。但是,只用兩大兩小其實也能做到。


聯發科這麼做,就是為了讓這個處理器更有賣點而已,而廠商也只是需要一些噱頭而已。

-------------------------------
ps:有人說intel的處理器兼容性差不是我的說原因導致銷售差,那麼我可以換成8960t跟6589對比,甚至可以跟6592對比兩者實際體驗差距有多大?


簡單的說:因為消費者迷信多核,所以安卓手機廠商們喜歡在手機上弄更多的核。

--------------------6月15日補充--------------------

有人說我不該拿手機CPU跟台式機比,或者不該跟x86比,可是題主問的就是跟PC比,評論里一堆人都不看問題嗎?

跟我說功耗的,ARM也有伺服器CPU,市場佔有率怎樣?有x86的多嗎?有x86性能好嗎?

ATOM也有手機版本,單核性能同樣秒殺大部分ARM的CPU

用戶迷信多核,廠商喜歡堆多核,二者互相影響造成了現在市場上的這種局面。

跟我提多核可以省電的,iPhone用雙核也沒見比安卓多費電,核心少降頻也一樣可以降低功耗,非得多搞幾個核才行

做不好單核,就只好堆多核,這種事情在過去台式機CPU的歷史上曾經就發生過。

說可以讓小核跑後台任務的,我問問你們,手機CPU除了玩遊戲的時候什麼時候負載滿過?小核持續滿負荷跑後台任務,那功耗數據可真好看,那後台任務可真變態啊。尤其是小吳同學,你給我說說,實際情況下低速四核的負載到底有多高?真用得了十個核那麼多?

--------------------補充完--------------------

當然了,核再多也沒什麼用,MTK的MT6797(MediaTek)綜合性能應該還趕不上早年的i3(PC版,非移動版),性能和ATOM不相上下。

MT6797這款CPU,10個核心,分別是Cortex-A72(2.5GHz)兩個核心,Cortex-A53(2GHz)四個核心,Cortex-A53(1.3GHz)四個核心。也就是說它性能最強的也就是那兩個2.5G的核心,性能上估計跟Intel的ATOM-Z8700開睿頻差不多(ARK | Intel? Atomx7-Z8700 Processor (2M Cache, up to 2.40 GHz)),其餘的中低速核心都是廢物,別指望用1.3G的核跑遊戲,能把十個核心全利用起來的可能只有跑分軟體了。

所以這個CPU雖然號稱10核,最多勉強稱之為雙核而已,之所以是「勉強」,是因為它可能無法長期使用最高速的那兩個核,否則可能會發熱量太大。

但很多手機消費者不懂,覺得核心數越多越好,其實ARM架構下,雙核如果做的好了,完全可以獲得更好的性能,蘋果雙核不是也跑的很流暢嗎?

而且,誰說個人計算機才六核心的?i7-5960X可是8核16線程:ARK | Intel? Corei7-5960X Processor Extreme Edition (20M Cache, up to 3.50 GHz)

況且手機上的ARM CPU有哪個是支持超線程的?

台式機上的CPU,可以拿一個核跑兩個線程,手機上的CPU,有時候要多個核跑一個線程(任務遷移)。

就我現在用的這個PC用的CPU(ARK | Intel? Corei7-4770K Processor (8M Cache, up to 3.90 GHz))就是4核八線程的,拿出兩個核心4個線程出來,就可以秒殺所有手機CPU:

這還是個人電腦上的CPU,如果算上伺服器,至強上十幾個核心都是正常的:List of Intel Xeon microprocessors

最多的是:ARK | Intel? Xeon? Processor E7-8890 v3 (45M Cache, 2.50 GHz),18核36線程。

如果Intel想集成多個核的話,把十個ATOM做到一個SoC里做一個20-40核的CPU完全沒問題,當年intel還搞過膠水雙核呢。問題是造出這麼一個東西出來能幹啥?性能趕不上一個i7-4770,做出來是為了跑分的嗎?普通軟體哪個在運行的時候能用到十幾個核心?你當是搞科學計算呢?人家科學計算有性能更強的東西,不用這個。

同樣的還有手機GPU的核心數,廠商也是喜歡堆核心,在我看來,手機GPU上的所謂的「核心」,大概就跟台式機用的顯卡里的流處理單元差不多,要按照手機上的GPU的演算法,大概在台式機上高端顯卡可能有幾百上千個核了。

手機上的(尤其是安卓手機上的)CPU核心,都是忽悠消費者的,讓消費者自我感覺良好而已,單核性能還遠遠趕不上Intel的台式機。

打架的時候,十個幼兒園的小朋友也打不過一個散打運動員;MTK哪怕搞出20個核的CPU,只要單核還是那麼差,性能還是趕不上台式機。


因為 CPU 這種晶元的功耗是與電壓平方成正比的。

畫出來是拋物線。電壓越大時,功耗增長越快。手機對功耗的容忍度比筆記本或台式低很多。所以不能靠用電壓推主頻來提高手機性能,只能靠多核低電壓來指望在多任務時有不錯的性能。

俺不是學硬體的,只知皮毛,有不對的請指正 :)


首先,真正決定日常流暢度的,是單核心極限性能,但是高性能低功耗的大核心不好做,所以在主流消費級設備上堆核心基本上可以確定是因為廠商內核架構設計能力不行了……

順便說說ARM的big.LITTLE架構。
A7 A53 這倆核心核心面積小,多放幾個不費什麼錢,宣傳上跑分上那可是實打實的成倍增加。事實上MT6732 6752這倆SOC用起來真幾乎沒差別,但是一個4核一個8核。
有人誤以為bL技術能節能,然而並沒有。這個技術其實就是ARM迎合市場需求,掩蓋自身架構設計實力不足的遮羞布。當初發布A15的時候,可是說給高性能平板和伺服器準備的哦~但是眼看著自己設計IP的高通 Krait 發展越來越好,A9後繼無人,Krait 在市場上無人能擋,三星等沒有自研能力的廠商嗷嗷待哺,ARM只好弄個bL來強上A15增強性能。還真有人以為bL是用來省電的, 自己去看高通Krait,蘋果Cyclone,intel ATOM手機,真比bL費電了么?順便也能打打以為X86就是不能低功耗的人的臉。手機上X86表現不好是歷史原因,不是技術。
你看看有能力自己設計IP的廠家,哪個真看得上ARM公版架構了?蘋果,高通,英偉達,AMD,連LG,三星都有自研架構的計劃。

附:如何評價 ARM 的 big.LITTLE 大小核切換技術? - Android 題目下的一個答案

其實沒節到什麼能,你看做得好的 Krait 和 Apple 的各代 core,都不是這種方式。
這個方案最牛逼之處在於 marketing。
- 很容易堆積 core 數量,四核八核消費者說起來倍兒有面子。
- 你們不覺得 big.LITTLE 挺好理解的嗎?要節能就用小,要性能就換大。容易闡述清楚的特點才能成為賣點。當然具體做得好不好就沒人管了。

印象中以前回答過類似的問題:
為什麼 Android 的機器主頻和核心數比 iPhone 高,卻沒有更流暢? - 盧Alpha 的回答


看到這麼多非專業人士在狂黑多核系統,有點受不了了,覺得有必要為多核系統(MPSoC)正名。尤其是排名第一的那幅圖雖然很經典,但尼瑪在逗我呢,有點專業素養好吧。 @周周@null122 的答案靠譜些。
我們實驗室近幾年設計的兩款4G通信多核晶元都發表在頂會ISSCC上,三年前就已經是20核了;另一款用於5G(雛形)的多核晶元也剛tapeout,所以對移動多核晶元有些了解(可能與普通商用的晶元有點區別),可以回答這個問題。 其實Intel的多核系統已經做得相當好了,這個我就不多說了。
------------------------------------------------------------------------------------------------------------------------
首先明確,手機的多核不是為了忽悠消費者(也許也有這個因素),而是降低功耗(降低頻率),提高性能,性價比最佳的解決方案提高單核性能發展多核是兩條腿走路,但現在單核已遇到瓶頸,而加多核效果顯著,所以多核自然成了廠商最優選擇。舉個例子,3個2G的CPU比一個4G的CPU設計便宜多了。

系統的功耗是與頻率成三次方關係增長(電壓正相關於頻率),而對於移動設備(電池供電)最大的問題就是功耗,所以註定手機的core(核心)的頻率不能太高。但其實就是對於PC的單核性能也已經到達瓶頸了(詳見我的回答 CPU搞大一點有用嗎,為什麼非要多核呢? - young cc 的回答)。所以就用一堆小核以較低的頻率獲得更好的性能。並且每個core都有自己的時鐘域,這樣可以通過DVFS,動態調整電壓頻率到合適值,降低功耗(詳見核心速度不同對多核處理器性能有什麼影響? - young cc 的回答)。另外單個RISC 的ARM的性能本身就比不過X86的CISC的CPU,所以更需要靠多核以數量取勝。

那多核有哪些優勢呢?

對於multicore,一切都變得簡單,有些core可以只處理固定任務,因為無需太高主頻,無需太多級pipeline,無需太複雜指令out of order execution, instruction prediction/prefetch等等,降低每個core的研發難度,並行處理數據,降低每個core的頻率。

手機中是多個application並行運行,完美適合多核。比如基帶無線信號處理,audio, video, 圖片,瀏覽網頁,遊戲,3D,UI,下載,GPRS,跑APP等等,是可以被專用core處理。這樣很多core就能變成專用core(secipalized core),甚至ASIC,性能會比通用處理器高上百倍。

多核的精髓是並行處理。現在的多核系統的任務調度(task scheduling)是很先進的,不會出現一個core的負載過重,而其他的都在空閑(詳見多核處理器可以同時處理多條指令嗎? - young cc 的回答)。如果出現這種情況,只能說你的手機太挫了。當然若任務不重,一個核能處理就不用開別的核,來降低功耗。


比如我們實驗室的晶元,有一個centralized core(CM)負責task scheduling(任務調度不僅是操作系統在做,更主要是微架構級的核心自己在做),將task合理分配到各個core。

The CM does adaptive power management and dynamic task scheduling(including resource allocation, data-dependency checking and data management), to maximize data locality and to configure the dynamic voltage and frequency scaling (DVFS) performance levels of the PEs according to current system load, priorities and deadlines.

可以看到,他的任務調度比你想像的還厲害,會考慮各種因素優化性能。

大家看到八核,十核就這麼大驚小怪,如果知道了多核的發展趨勢又作何感想?貼張實驗室的一個項目圖吧,目標是到2025年在一升體積中會集成十億個processor,並且會解決掉功耗,散熱問題。

最後告訴大家,多核是晶元的發展方向,並且這個多核不是現在說的六核八核,而是成百上千核

-----------------------------------------------------------------------------------------------------------------------------------
PPPS.鑒於贊到百了,做點補充吧:
@Xiaofeng Lee提到了一個很好的問題:內存是限制CPU性能的一大因素,那多核中是如何解決的?
回答:是的,內存(DRAM)非常限制計算性能,所以一般在多核系統中,每個core都有一個private cache(SRAM),並且可以由多塊物理內存組成一個邏輯虛擬內存,並且採用高效的fairness內存仲裁機制,保證內存帶寬最大。此時就需要保證共享內存數據的一致性,Memory Consistency and Cache Coherence. 共享內存連接如下圖:

有人說CPU單線程處理性能影響系統性能?
那我解釋下吧:在多核系統中,都是大核+小核,所以當有不可分割的大的單線程任務就交給大核處理,此時的並行小任務交給其他core並行處理,這樣當有大的單線程任務就交給大核專註處理,處理速度明顯上升。(詳見核心速度不同對多核處理器性能有什麼影響? - young cc 的回答)

最後重申一點,我不僅回答了手機中多general purpose processor的問題,而且概述了通用意義上的多核系統(MPSoC)的優勢
---------------------------------------------------------------------------------------------------------------------

PS.不知道大家怎麼在我這回復這麼多。明天要工作了,為避免影響工作評論已關閉,不好意思。大多數人還是懂多核的,知道我在說什麼,支持我的回答,表示感謝;但總有那麼一小撮在這糾纏(他們中大部分人壓根沒認真看我寫的是什麼),大家都很忙的。覺得我寫的還行的,請順手點個贊吧,覺得應該超過評論數吧。
PPS. 早上起來一看有這麼多贊,好開心,總算超過評論數了。鑒於有這麼多贊了,那我對這個問題負責點,真對多核感興趣的可以私信我,可以一起討論。如果對細節不清楚,有疑問的,可以看看鏈接的我的其他幾個回答,我想大部分疑問都能從中找到答案吧。 最後謝過那些贊過的小夥伴們。
PS.5. 贊到三百了,謝大家支持。評論開了,覺得寫的不好的可以另開一個回答呀。給大家提供些multicore的資料吧:
論文: http://www.nvidia.com/content/PDF/tegra_white_papers/Benefits-of-Multi-core-CPUs-in-Mobile-Devices_Ver1.2.pdf
Multi-core for mobile phones
Single-ISA heterogeneous multi-core architectures: the potential for processor power reduction IEEE Xplore Abstract
An Analysis of Efficient Multi-Core Global Power Management Policies: Maximizing Performance for a Given Power Budget An Analysis of Efficient Multi-Core Global Power Management Policies
Dynamic, Multi-Core Cache Coherence Architecture for
Power-Sensitive Mobile Processors IEEE Xplore Abstract

CMU公開課:https://www.youtube.com/watch?v=PhUo1IMo6UUlist=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKqindex=31


舉個例子吧,小白買顯卡的時候,你和他解釋什麼核心什麼架構多少個流處理器多少納米工藝他們完全沒耐心聽,就以為顯存大就好,所以電腦城才有那麼多顯存巨大的垃圾卡賣啊。手機cpu也是一樣,小白直接認為核心多=吊,簡單粗暴。


電腦上的流氓軟體種類比較少,大多是XX衛士這種,並且還有互相屏蔽、卸載的功能,所以用戶的電腦上一般不會有多少流氓軟體,需要的核心就比較少。
而手機上的流氓軟體就是遍地開花了,像XX貼吧、X付寶、X哪兒這種電腦上很乖的APP都大耍流氓,一天不彈出幾十個推送,後台不自動啟動幾十個服務都不好意思出來見人,這時候沒幾十個核心跑這些流氓軟體,手機還怎麼用?

以上是抖機靈,正經的回答還是像樓上北極說的那樣,提高單核心性能的研發難度比堆核心大得多。


為什麼火車都幾百個輪子了,汽車才4個


  • 手機核心現在大多是走的littleBig路線,也就是大小核心,其中日常操作都是由性能稍差的小核心進行,而大型遊戲是大核心進行,主要目的是為了在功耗和性能中進行tradeoff。
  • 但是實際上核心數真的可以對性能提升很大么?答案是否定的,很大一部分原因就在於調度問題。Android系統是一個通用系統,運行的硬體平台不說上萬也就幾千,因此面對的硬體環境多種多樣:單核,雙核,四核,八核等等情況都有,而且無論系統版本有多新,由於Android系統的開源性,都無法像iOS一樣固定硬體,甚至64bit和32bit都是共存的。這樣就帶來一個很顯然的問題,系統如何去調度CPU資源呢?答案就是現在很多的app都只是調用單核進行運行,並沒有利用到其他的幾個核心。這就帶來了核心多但是性能依然不足。很大程度來說,手機作為更新換代很快的電子產品,處于飛速發展的時期,核心數也是一種宣傳方式。
  • 相對比來說,PC端由於相對功耗的要求不像手機端這麼高,因此可以充分壓榨CPU的計算能力,大部分時間不需要通過切換核心或者降頻來完成節能。所以PC上的單個CPU計算能力會很強大,足夠使用。同時計算機作為生產力工具,並不是一種經常更換的電子產品,CPU性能早已出現過剩。

總結:手機端核心的提升一方面是為了節能,一方面是為了營銷,計算機上其實已經存在CPU過剩的情況(Windows的優化),所以日常使用的核心數沒有大量增加的必要。

(回答有點亂,有時間再來整理~~


AMD不是一直在喊more core么?桌面級別不是已經到了8核嗎? 轉過頭來看Intel,至強xeon已經有18核,E5 2699v3。而且過一段時間會發布 E7 v3,誰知道Intel又會搞什麼。

說回arm架構,感覺上真正也就4核的樣子。他們的CPU是大小核(big.LITTLE)。聽聞也有人說是膠水CPU,感覺上和傳統的桌面CPU有本質上的不同。

我現在不在家,大概先把思路寫下來。之後有空再填坑。對於農企我不是很熟悉,所以就不介紹了。

arm官方給出的大小核介紹
http://www.arm.com/zh/products/processors/technologies/biglittleprocessing.php

還有就是建議題主多多上Intel的ark,上面的東西雖然是產品的介紹,但是能全部明白其中的意思也是不簡單。
http://ark.intel.com/zh-cn/


我只是看到核心多的amd被核心少的intel吊打,核心多的安卓被核心少的蘋果吊打


計算機有各種各樣的架構。不說普通的多核,GPU幾千個核,Xeon Phi有61個x86的CPU core,下一代還將成為獨立的處理器。有哪個手機的CPU核心數量能超過這些?


PC,多核不多核,由Intel定,Intel好東西太多,不急於上多核。研究部門其實早就準備好了。
手機AP,嘻嘻,由ARM推動。CCI/CCN產品路標在哪裡,你不上,你家競爭對手就上,比著逼著就上去了。


I3還是雙核呀
I5 I7還是四核呀
有句話咋說來著的
I3默秒全


移動Soc增加核心數不是為了性能,而是為了省電(大小核)和防止過熱(哪個核心溫度過高就切換)

沒想到贊同還不少,那就多寫幾句,因為自己的工作主要是做瀏覽器內核渲染性能優化,而瀏覽器渲染流水線一般來說算是多線程並發程度比較高的,通常會涉及多個線程 —— UI線程,GPU線程,一個或者多個光柵化線程。

而通過方法跟蹤工具得出的跟蹤結果會發現實際的並發程度並不高,受限於目前移動Soc的內存介面設計,緩存設計和內存帶寬,一旦某個線程正在進行內存密集型操作,其它線程對內存的訪問都會受到阻塞,所以所謂的真八核,即使全開也很難真正全部跑的起來,除非全部都是運算密集型而不需要太多的內存訪問。

在移動設備上,系統/應用的流暢度在軟體上取決於渲染流水線設計的並發程度,硬體上還是很大程度取決於單核性能,內存位寬和帶寬。


推薦閱讀:

TAG:手機 | 中央處理器 (CPU) | 計算機 | 計算機科學 | 處理器 |