高通的非同步多核和標準 ARM 的同步多核有什麼具體的區別?

如題。只是同步多核工作時核心一起工作而非同步多核工作時是一個滿載了再啟用第二個第三個嗎?有什麼利弊?


老問題了。asmp和smp之爭,不過現在基本不在乎這點性能損失。

以下就當神論看吧,各自立場不同,也懶得在這個point上繼續爭辯下去。

部分參考移動CPU非同步多核和大小核的那些事

arm標準架構(內核),是Symmetric multiprocessing,縮寫smp,對稱多處理。

高通的非同步多核,自稱asmp,Asynchronous smp,非同步對稱多處理。

用高通自己的ppt來說就是,每個核心都可以「智能負載」,達到功耗降低。

關鍵就在於asmp的每個cpu核心有獨立的電壓和頻率,而smp是所有核心有共同的電壓控制,所以頻率也是完全一致的。

用高通自己的見解,相比arm標準架構的smp,asmp「使得每個CPU內核都能根據所處理的工作,以最有效的電壓和頻率運行,而在不需使用時都可以獨立關閉,使其在待機狀態下沒有功耗,這些特性使得採用aSMP架構比同步SMP架構在功耗方面減少25%-40%。」

非同步頻率架構(Asynchronous Clock Architecture)。在這樣設計的多核處理器中,每個核心都可以工作在不同的電壓和頻率下。這樣,可以將計算繁重的任務交給一個工作在高頻的核心,而壓力較小的任務則可以讓一個工作在低頻的,較慢的核心去負擔。而在同步多核中,所有的核心都只能工作在相同的電壓和頻率下。

如下圖所示,當有兩個任務,一個計算負荷較重,而另一個計算負荷較輕時(圖中紫色部分表示任務的計算負荷),非同步多核可以讓負荷較重的核心CPU0工作在較高的頻率(圖中藍色部分代表頻率),而負荷較輕的核心CPU1工作在較低的頻率和電壓下,由此來減小功耗。而同步多核的CPU1雖然負荷較輕,但由於架構限制,只能和CPU0保持同樣的高頻率和高電壓,由此浪費了更多的能量。

smp和asmp就很好辨認了,與休眠的核心數量無關,只與頻率有關。

smp是要麼不蘇醒(工作),一蘇醒就大家頻率一樣。

asmp是就算蘇醒,大家頻率也不一樣。

借用對多核心soc的一點實測見解

note2的情況,exynos4412的4核,一核工作,一核待命,其他關閉休眠。

兩核工作,同樣800mhz,第三核待命,第四核休眠。

4核全開的時候,全部是同樣的頻率1100mhz,沒有不同的頻率。

用博主的話說。

總體看來4412這款晶元的核心調用方式與英偉達的可變式對稱多處理方式基本一致,動態地啟用或禁用一個或四個cpu內核,以達到降低功耗的作用。任務平均分配到所有未關閉的cpu內核,未關閉的內核都以同一頻率運行。

而m2,asmp的apq8064,每核的頻率存在不一樣的時候。

核心一1728mhz,核心二1134mhz,第三核待命,第四核休眠。

核一1728mhz,核21026mhz,其他兩核休眠。

其實asmp也有同頻的情況,也有兩核或三核同頻,其他核不同頻,甚至4核不同頻的情況,但比較難截到圖,一閃而過。

而gs4的exynos5410一樣是smp,4核開啟時一樣同一頻率250mhz,根本不存在什麼「和高通一樣非同步」的情況。

其實,最簡單分辨smp和asmp的方法就是——高通krait和scorpion是非同步asmp;arm的arm11,cortex a7-a15,a53,a57,都是smp。

cortex a5比較特別,arm沒說過是smp。

在arm官網,如果smp,arm一定會各個語言版本都列明是smp,唯獨a5含糊其辭。

a5的問題就暫不管。

插一段,以下可能與正文無關,純屬插曲,可以跳過

——————————————————————————————

下面這段話提及marvell的pj4,和高通krait的asmp也是「非同步頻率多處理器」。

好奇看了看原文《便攜處理器的過去,現在,和將來》有關章節

Also noteworthy is that the MSM8672 (for tablets/smartbooks) supports heterogeneous multiprocessing somewhat like Marvell: the two CPU cores each have their own voltage regulators (which adds some engineering complexity and a tiny bit of cost to the power management chip) so that they can simultaneously run at different clocks/voltages unlike current Cortex-A9 designs (it"s unclear what exactly Marvell does on that front). And there have been some indications that the two cores might have been synthesised separately (one using higher leakage transistors to reach 1.5GHz and the other limited to a slightly lower frequency and used by default for lower performance tasks) although the difference isn"t as extreme as in Marvell"s case.

渣谷歌翻譯是,關鍵在於對heterogeneous的理解,究竟是不是Asynchronous?

另外值得注意的是,MSM8672(片劑/智能本)支持異構多處理有點像Marvell的:兩個CPU每個核心都有自己的穩壓器(它增加了一些工程的複雜性和成本的電源管理晶元的一點點),讓他們可以同時在不同的時鐘/電壓運行不同於當前的Cortex-A9的設計(目前還不清楚究竟是什麼做的Marvell在這一方面)。並且已經有一些跡象表明兩個芯可能已分別合成(1使用較高的漏晶體管來達到1.5GHz與其它限於稍低頻率和較低性能的任務所使用的默認值),儘管該差異並不如極端如Marvell的情況。

其中由於msm8672是高通的廢案,根本沒量產過,而且開發代號也不是msm8672,而是「榮耀性稱號」qsd「。如果沒猜錯,qsd8672其實就是1.5ghz的msm8260的開發代號。

而裡面marvell的pj4,指的是sheeva pj4(相當krait里的krait200,krait300),按資料是smp?

而其他有個sheeva pj4資料是

還是異構Heterogeneous,還是SMP/AMP/Mixed,smp和amp混合?難道就是a-smp?!

(以上一段也有問題,pj4是v7,v6混合,不是純v7)

但是很可惜,sheeva pj4 居然沒mp產品!!pj4的armanda 510,armanda 610,armanda 618,pxa930,pxa935全是單核!!找了半天唯一的雙核armanda 1000居然是dual-core pj1!!你丫 pj4不能多核搞妹mp?!

山窮水絕疑無路,柳暗花明又一村。

在無奈之時,居然發現armanda 1000下面居然還有一個armanda 1500,google tv的處理器,然後打開pdf——

pj4b,和pj4一樣arm v7/v6的混合指令集,確認是sheeva pj4的beta版無誤。

然後,標明還是smp!連Heterogeneous都沒提,更不要說Asynchronous。也就是說,sheeva pj4,是符合arm規定的標準smp!雖然不是arm標準架構。

由於1500pro和1500plus都是cortex a9。也就是說唯一能證明sheeva pj4與「高通krait的asmp非同步頻率多處理器」沒有親戚關係的就是armanda 1500。sheeva pj4不是heterogeneous multiprocessor,而是和cortex a9,cortex a15等一樣是smp,稱其Heterogeneous,或者SMP/AMP/Mixed都是錯的。——很正常,認為其非同步頻率的時候,sheeva pj4還沒有雙核成品,只能臆測。

《便攜處理器的過去,現在,和將來》該文出現謬誤,同時引用其謬誤作為論據的部分也不成立。

離題到此為止——————————————————————————————————————

高通的asmp的cpu核心工作模式可以參考以下一些文章。

http://mobile.zol.com.cn/398/3985785_all.html#p3985785

arm和x86處理器的策略都是先提升頻率,依然不能滿足性能需求,再啟動一個核心工作,循環往複。

長時間內,降頻現象更加明顯;核心1在以1.7GHz的高頻運行6分鐘左右之後,降至1GHz或800MHz水平。核心2也偶有降頻,最終同樣降至800MHz,核心3、4偶爾運行,基本閑置。

短時間內,驍龍600用到最多的為前兩核,而且核心2和3都有不同程度降頻現象,核心4則不常啟動或運行在較低的1GHz頻率。

如果注意的長時間段話,會看到s600的cpu0基本是長期維持在高頻,成一直線,根本沒回落過。

以cpu1是在高頻區間不斷來回波動。既不能維持長期高頻,又不能回落到低頻以下。

cpu2在低頻區波動,偶爾竄上高頻區。

cpu3乾脆就在低頻區,甚至更多時候是休眠不動。

cpu3和cpu2的波動曲線有互補的情況——我上高頻區,你就醒了,我回落到低頻區,你又睡了。

短期內,雙核全開的幾率比三核全開多,4核全開是非常低的概率。

無論如何,總有一個單核滿載。除了最高頻,4核同頻的機會很少。

經過10分鐘的長時間使用,原本四核1.7GHz的驍龍600 CPU僅有1顆核心使用率較高,其他2、3核心僅平均為1.3GHz左右,核心4大部分時間並不工作,因此平均頻率只有0.6GHz左右。

長效工作方面,核心1、2仍然為主力核心,不過大約5分鐘過後也不得不從2.2GHz左右的高頻降至1.2GHz左右的頻率;核心3在後期比較密集的啟動來支持整體工作,核心4幾乎不參與工作。

由於驍龍800 CPU核心的性能更強,該遊戲對於CPU的挑戰進一步降低,因此驍龍800的主要1、2核心從一開始就沒有持續運行在最高主頻上,而是在2.15GHz到1.2GHz之間浮動。核心3、4更是啟動次數和時間非常少,基本不需要他們加入工作。

和600不同,800有一個非常非常特別的地方,就是cpu0和cpu1的頻率曲線重合非常嚴重,而且沒有一個核長期維持高頻的情況。s600是4條頻率曲線之間類似,更不要說重合。

而cpu3和cpu2和s600一樣有互補的情況。

從平均值來看,10分鐘內驍龍800的兩顆主力CPU核心的頻率平均在1.3GHz左右,核心3僅需要0.5GHz左右的頻率參與輔助即可,核心4幾乎用不到。

如果對比exynos5410和tegra4,有沒有發現頻率曲線重合的地方非常多。

exynos5410的長期頻率波動線的cpu0和cpu3,cpu1和cpu2,短期線的cpu1和cpu3,基本如同一個模子複印,。

tegra4更加明顯,無論長短期線里的cpu1,2,3,基本就是一模一樣!

smp的同頻特性有這樣頻率重合曲線不是很正常么?和高通asmp曲線對比,smp的頻率曲線是不是有非常明顯的差異?

krait400的s800的cpu0,cpu1的重合的頻率線,是不是和asmp的頻率重合現象很吻合?

而且對比krait300的s600,除了cpu2,cpu3的曲線互補現象,4條頻率曲線完全差異化比,s800是不是有了點像smp的頻率曲線的苗頭,尤其是其中兩個負擔的的主核?(手動斜眼——)

同一架構不同版本,頻率曲線怎麼會有那麼明顯的不同?不再一個單核100%滿載,第二核75%負載,第三核50%,第四核25%滿載,而是變成——兩個核90%負載,第三核50%負載,第四核25%負載,咦,核調度策略怎麼沒貫徹始終啊?

msm8960的功耗曲線還是,cpu0含辛茹苦獨擋一面,cpu1更多時候直接睡懶覺,什麼時候到了krait400就變成大家同甘苦共患難,有鍋對半背了?

那麼,就像某些人經常說「三星和NVIDIA,德儀都在抄襲模仿高通的asmp」,"現在所有多核處理器都是asmp「一樣,根據以上的數據,能不能夠合理懷疑krait400相對krait300之所以提升明顯,是因為在krait400里,雙核同頻,甚至三核同頻的幾率比之前更多了,尤其是在高頻部分??

那麼,大膽腦補一下:會不會不是arm公模的smp模仿」學習「高通的asmp,而是高通的asmp偷偷向smp靠攏?會不會不是smp正在更加像asmp,而是Asynchronous smp正在偷偷抹掉A字,變成Synchronous smp?

哦,忘了說,不知道Synchronous mp算不算symmetric mp·················

同場加送z2580的頻率曲線,不是說高通和intel都是非同步么,淫特兒非同步smt滅按摩店smp滿門,atom的cpu0和cpu1,cpu2和cpu3其實分別是同一個核不同線程可以理解,但是也不需要4條頻率曲線重合得那麼離譜吧?

以上純屬腦補,如有雷同,謝絕挖墳。接下來請收看跨年元宵大戲——《吧主帶頭黑高通》。

高通的asmp是否真如其宣傳的性能好,功耗低呢?

先看scorpion,以msm8260為代表,不看gpu測試,看cpu測試數據。

再來,http://tieba.baidu.com/p/1405487658?pn=1

視頻封面四大雙核性能對比-軟解1080p h264視頻

視頻封面四大雙核性能對比- 解壓縮(2)視頻

其他想一起黑的,請轉入以下網址http://i.youku.com/u/UMzYwNDQxOTMy

還有各大主流SoC CPU性能對比之GBA模擬器_wp7吧

一個人黑你,不一定是你的錯,一大群人黑你,是不是該反思下自己,畢竟能像晚香玉晚公主一樣能團結ab兩站狂歡的,前無古人,後無來者。

東西沒寫完,由於草稿里的圖太豐富了,上傳之後估計要被知乎封一天,希望嗎那麼多字別浪費,後天繼續八。


日經


以一個外行的視角來說:


asmp各核心之間電壓控制相互獨立,從而能在不同頻率下運行。


smp及類smp各核心電壓相關聯,在線核心頻率相同,部分cpu能關閉空載核心(如4412),部分cpu會強制所有核心在線(如Tegra2)。


另外「asmp不共享L2」、「asmp只能單核在線」來源於多年前某篇軟文里的胡謅。


高通非同步多核能分別控制各核心頻率和電壓(還有二級緩存也是單獨控制的),在一個核心負載高的時候不會讓其他核心保持相同頻率白白耗電。


缺點是兩個核心之間的通訊帶寬會較低,因為兩個核心通訊的帶寬會受制於較低頻率的核心。


非同步多核在性能上介於單核與同步多核之間,會比同步多核會更省電一些。

四核處理器為例,非同步(ASMP)四核處理器就是可以讓四個核心可以自由的調節頻率進行工作。比如一個簡單的程序,只需要一個核心處理便足夠了,那麼非同步四核便能將剩餘的三個核心關閉,只讓一個核心來完成這個程序。而同步四核(英文為Synchronous Multi-Processors,縮寫為SMP)則四個核心同時開啟,運行在同一頻率下,然後讓一個核心來完成任務,而其他核心卻沒有做任何事情,卻還是在耗電,就像一台開啟但沒有信號的電視機。所以,我之前得出的結論是,相比同步架構,非同步架構會在處理同一任務時更加省電,更加智能。

高通對非同步四核處理器的宣傳讓我以為其優勢在於四個核心可以智能的調節不同的頻率

非同步雙核架構的性能介於單核與同步雙核之間:

非同步雙核(ASMP)在處理任務時不可同時進行,所以,在第一個時鐘頻率時,當一個核心接到第一個任務時,第二個核心並不能馬上工作;到了第二個時鐘頻率後,第二個核心才可以開始接受任務。(我想,這才是非同步的原本意思吧)而同步雙核(SMP)則是兩個核心可以同時接受任務,並處理,所以在完成工作的效率上,要比非同步雙核更快一些,也就是性能更強一些。而這就是二者的主要區別。原理請看下圖:

上圖可以看出非同步雙核(ASMP)與同步雙核(SMP)共吞吐了4個數據,但非同步多核用了8個時鐘頻率完成,而同步雙核只用了6個時鐘頻率。所以同步架構的性能相對會更高一些。

單核接到任務時需要獨自完成數據的吞吐過程;而同步雙核(SMP)在處理這個任務時,可以兩個核心同時完成吞吐過程,所以效率是單核的近2倍;但非同步雙核卻是一個核心在完成了「吞」的過程之後,第二個核心才可以開始「吞」,所以速度要比同步雙核略慢,以至於整個過程接近於單核的運行機制。這也是為什麼人們老稱呼非同步雙核為膠水雙核的原因。


推薦閱讀:

對於CPU來說一個A72核心比A53核心貴多少?
如何評價ARM的Cortex A72構架?
怎麼解讀NS吧趙陽電玩拆解Nintendo Switch?
驍龍810的20納米工藝和14~16納米只差了5納米,發熱相差很多嗎?
展訊未來3年內到底能幹過MTK嗎?

TAG:Android手機 | 科技 | ARM架構 | SoC |