剛?cè)胧至薙ONY Xperia Z5 Premium匈庭,其CPU采用了爭(fa)議(re)較大的驍龍(Snapdragon )810灵迫,那就借此機會談?wù)勱P(guān)于桌面CPU和移動CPU的一些東西吧。從小就比較喜歡數(shù)碼比較多蚕愤,買了很多這方面的書和雜志答恶,但是對于絕大多數(shù)數(shù)碼設(shè)備的核心CPU詳細(xì)的一些技術(shù)參數(shù)也只是淺嘗輒止未嘗深究。上大學(xué)以后萍诱,關(guān)注數(shù)碼動態(tài)不多了悬嗓,反而更加想去了解之前不怎么探究的微觀參數(shù)了。好吧裕坊,我也不是科班出身包竹,只是憑著愛好不斷地追尋和了解,所以下文只是個人的一些看法與總結(jié)碍庵,多多交流多多批評映企!
忽然覺得自己這點知識儲備居然要論述這么大的一個問題,還是有點頭痛啊静浴。我們電力系統(tǒng)分析老師在課上有句話我感覺說的特別好堰氓,「你要給別人一滴水,首先你要有一桶水」苹享。那么在下面我主要是以學(xué)習(xí)筆記的形式來展現(xiàn)吧双絮,希望能和大家共同探討浴麻,共同提高!發(fā)現(xiàn)錯誤請一定要指出囤攀!
一 CPU的架構(gòu)
1.1什么是CPU的架構(gòu)(Microarchitecture)软免?
1.1.1 微架構(gòu)
在今日沛简,管線資料路徑是微架構(gòu)中最常被使用的資料路徑。這種作法也被普遍的用于微處理器斥废,微控制器椒楣,以及數(shù)位訊號處理器。管線化的結(jié)構(gòu)允許多個指令在同一時間執(zhí)行牡肉,不同的指令在微架構(gòu)不同的位置執(zhí)行撒顿。管線分有好幾個不同的階段(stage),這些階段是微架構(gòu)的基礎(chǔ)荚板。這些階段包含擷取指令,指令解碼吩屹,執(zhí)行指令跪另,以及將資料寫回。一些結(jié)構(gòu)還包含其他階段煤搜,像是對記憶體做存取的動作免绿。管線是微架構(gòu)其中一項主要的工作。執(zhí)行單元也是微架構(gòu)的基本元件擦盾。執(zhí)行單元包含算術(shù)邏輯單元(ALU)嘲驾,浮點運算器(FPU),load/store單元迹卢,分支預(yù)測辽故,以及SIMD。這些單元在處理器內(nèi)進行計算腐碱。執(zhí)行單元的數(shù)量誊垢,他們的latency(記憶體存取資料的時間)及throughput(將資料存到或是讀取出記憶體的速度)影響微架構(gòu)的效能。
有點不知所以對吧,那就用相對通俗的語言來介紹一下:CPU的架構(gòu)就是指「接受和處理信號的方式」喂走,也就是說殃饿,CPU就是一個工廠,不斷的接受到信號芋肠,并且處理(運算)這些信號乎芳,架構(gòu)就是在工廠里如何布置那些機器,讓機器快速的能夠進行以上的那些工序帖池。
CPU的基本組成單元即為核心(core)奈惑,而核心的實現(xiàn)方式即被稱為微架構(gòu)。微架構(gòu)的設(shè)計影響核心可以達到的最高頻率碘裕、核心在一定頻率下能執(zhí)行的運算量携取、一定工藝水平下核心的能耗水平等等。
1.1.2 微架構(gòu)的發(fā)展歷程
推動計算機性能提升的一個車輪是半導(dǎo)體的微型化帮孔,另一個車輪就是微架構(gòu)的改進雷滋,使得單位時間內(nèi)可執(zhí)行的指令更多。
1.1.2.1 微架構(gòu)的發(fā)展之路
微架構(gòu)的發(fā)展歷史就是縮短程序運行時間的奮斗史文兢。下面我們來走馬觀花的看看現(xiàn)代處理器是用的這些主要技術(shù)的發(fā)展史晤斩。
- 流水線處理
- 運算器高速化
- RISC和CISC
- 超標(biāo)量執(zhí)行
- 亂序執(zhí)行
- 分之預(yù)測
- 緩存
- 多核心
「流水線處理」就是用流水線方式執(zhí)行指令,以提高指令的處理速度姆坚。計算機是進行計算的機器澳泵,擁有各種運算的單元,讓這些運算能告訴執(zhí)行非常重要兼呵。
x86等CISC(Complex Instruction Set Computer兔辅,復(fù)雜指令計算機)處理器的指令很復(fù)雜,很難采用流水線處理击喂。而RISC(Reduced Instruction Set Computer维苔,精簡指令集計算機)是容易進行流水線處理的簡單指令架構(gòu),以在小型硬件上高速運行為目標(biāo)懂昂〗槭保可以認(rèn)為,RISC是為了實現(xiàn)比CISC更優(yōu)秀的微架構(gòu)而重新設(shè)計的指令架構(gòu)凌彬。
將流水線處理進一步發(fā)展沸柔,設(shè)置多條流水線,并行處理多條指令铲敛,這就是「超標(biāo)量執(zhí)行」褐澎。但是,如果嚇一跳指令會用到當(dāng)前指令的計算結(jié)果伐蒋,這兩條結(jié)果就無法并行執(zhí)行乱凿。因此顽素,要改變程序中的指令順序,先執(zhí)行能執(zhí)行的指令徒蟆,從而提高處理速度胁出,這就是「亂序執(zhí)行」。此外段审,遇到條件分支時全蝶,盡管不知道接下來要執(zhí)行哪條指令,但可以進行預(yù)測寺枉,以提高執(zhí)行速度抑淫,這就是「分支預(yù)測」。
半導(dǎo)體的微型化(下一篇會介紹到)帶來了處理器的高速化姥闪,但是DRAM內(nèi)存的主要開發(fā)經(jīng)歷放在了如何增大內(nèi)存容量上始苇,速度提高比較緩慢。因此筐喳,處理器訪問內(nèi)存就要花費很長時間催式,導(dǎo)致整體性能無法提高。而在處理器中設(shè)置小容量避归、高速度的存儲器荣月,就能解決內(nèi)存訪問時間過場的問題,這就是「高速緩存」技術(shù)梳毙。
像這樣哺窄,人們實現(xiàn)了眾多處理器高速化技術(shù),但實現(xiàn)這些機制需要大量的晶體管账锹,耗電量也相應(yīng)增大萌业。為此,與其在每個處理器中嵌入越來越多的晶體管提升性能奸柬,還不如制作多個適當(dāng)大小的處理器咽白,這樣同樣的耗電量能夠獲得更高的性能,這就是這幾年來流行的「多核心」技術(shù)鸟缕。
1.1.2.2 指令架構(gòu)
指令架構(gòu)規(guī)定了處理器執(zhí)行指令的方式及執(zhí)行結(jié)果的樣子等「處理器的行為」。指令架構(gòu)只規(guī)定了處理器執(zhí)行什么指令排抬、執(zhí)行結(jié)果如何懂从,但沒有規(guī)定處理器內(nèi)部的實現(xiàn)方式。相對于指令架構(gòu)的蹲蒲,具體的內(nèi)部硬件結(jié)構(gòu)就是我們上面說的微架構(gòu)啦番甩。
在程序運行方面,相同指令架構(gòu)下可以運行相同的軟件届搁,而不同的微架構(gòu)表現(xiàn)的性能會不同缘薛。
最早的電子計算機的速度大大超過機械式計算機窍育,但是人們注意到,計算變快宴胧、處理時間縮短之后漱抓,人們在更換程序或鍵盤輸入時,計算機就無所事事了恕齐,十分浪費乞娄。因此,人們把程序像數(shù)據(jù)那樣加載到內(nèi)存中運行显歧。進一步仪或,為了讓同一程序能在其他計算機上運行,人們設(shè)計了虛擬內(nèi)存士骤,能讓需要大量內(nèi)存的程序的運行不受物理內(nèi)存容量限制范删;確立了程序和硬件之間的接口——指令架構(gòu)。
所以說拷肌,生產(chǎn)CPU的廠家不斷的優(yōu)化微架構(gòu)到旦,想不斷的提高運行的效率,也就是說指令容易快速地在管線內(nèi)被擷取廓块,解碼與執(zhí)行厢绝,由于指令頻繁的被使用带猴,快取便被頻繁的使用昔汉,這樣就使記憶體存取的時間降低拴清。當(dāng)然靶病,架構(gòu)的升級不一定就是完全是好的,比如今年高通公司采用了ARM公司的big.LITTLE架構(gòu)口予,并且用在了其拳頭產(chǎn)品驍龍810上娄周,可是……
我們知道,在最新一級旗艦產(chǎn)品驍龍820已經(jīng)放棄了 ARM 的官方架構(gòu)沪停,轉(zhuǎn)而去重新自主設(shè)計架構(gòu)煤辨。(坑爹的big.LITTLE)
不過在桌面端,Intel公司有一個著名的戰(zhàn)略叫做Tick-Tock木张,也就是分別在奇數(shù)年和偶數(shù)年來更新架構(gòu)和工藝(制程)众辨,自從實行這個戰(zhàn)略以后,把老對手AMD甩出好幾條街舷礼,AMD也在自暴自棄鹃彻,在農(nóng)企的路上越走越遠(yuǎn)……
驍龍 820 集成新型 64 位定架構(gòu)制 Kryo 。借助完全定制自主設(shè)計的 CPU妻献,我們能夠更好地實施并優(yōu)化異構(gòu)計算架構(gòu) —— Qualcomm 中國
如果挑選一款CPU的話蛛株,一定要看看他的架構(gòu)团赁,一般來說,架構(gòu)越新相對來說是越好谨履!
1.2 移動端的架構(gòu)欢摄?
我們本可以大聲的喊出答案:ARM架構(gòu)!
但是屉符,最近幾年強大的高通已經(jīng)不滿足與ARM的公版架構(gòu)剧浸,轉(zhuǎn)而自行設(shè)計微架構(gòu),同時矗钟,三星也傳出消息要設(shè)計自己的架構(gòu)唆香,有趣的是,高通公司的架構(gòu)名稱為環(huán)蛇吨艇,在Exynos7420上大獲成功的三星針鋒相對躬它,將下一代自行設(shè)計的微架構(gòu)叫做貓鼬(Mongoose)(環(huán)蛇的天敵)《校看得出來冯吓,三星在2015年將高通驍龍系列按在地上摩擦以后,腰桿變硬許多疮跑,胸前的紅領(lǐng)巾更加鮮艷了……
話又說回來掀潮,即便是有些公司采用了自己的微架構(gòu),但是在根本上琼富,還是采用了ARM的架構(gòu)仪吧。為什么這么說呢?
可能說到這鞠眉,還沒有對ARM進行介紹薯鼠,也許有些對數(shù)碼不太感冒的同學(xué)已經(jīng)迷茫了,別急械蹋,現(xiàn)在就來引入和介紹ARM公司與ARM架構(gòu)出皇。ARM有好幾個概念,分別是:
- ARM公司
ARM是全球領(lǐng)先的半導(dǎo)體知識產(chǎn)權(quán) (IP) 提供商朝蜘。全世界超過95%的智能手機和平板電腦都采用ARM架構(gòu)。ARM設(shè)計了大量高性價比涩金、耗能低的RISC處理器谱醇、相關(guān)技術(shù)及軟件暇仲。ARM公司并不像INTEL那樣直接將芯片賣給消費者,ARM公司既不生產(chǎn)芯片也不銷售芯片副渴,它只出售芯片技術(shù)授權(quán):比如我們買了一款三星手機奈附,他采用了三星自己開發(fā)的一個手機芯片,這個芯片內(nèi)部包括了幾個部分組成煮剧,比如一個負(fù)責(zé)數(shù)據(jù)處理的“CPU”斥滤,一個負(fù)責(zé)圖形處的“GPU”等憾赁,那么蓉媳,這個負(fù)責(zé)數(shù)據(jù)處理運算的“CPU”,正是來自ARM公司設(shè)計狡耻。 - ARM架構(gòu)
過去稱作進階精簡指令集機器(Advanced RISC Machine草娜,更早稱作:Acorn RISC Machine)挑胸,是一個32位精簡指令集(RISC)處理器架構(gòu),其廣泛地使用在許多嵌入式系統(tǒng)設(shè)計宰闰。由于節(jié)能的特點茬贵,ARM處理器非常適用于移動通訊領(lǐng)域,符合其主要設(shè)計目標(biāo)為低耗電的特性移袍。ARM微架構(gòu) - ARM體系
我更喜歡叫它指令集架構(gòu),目前典型的有ARMv5 ARMv6 ARMv7以及最新的64位ARM指令集ARMv8等等葡盗,這個類似于臺式機上的IA32螟左、IA64,他是一個指令集戳粒,僅僅定義了機器指令路狮,寄存器結(jié)構(gòu)等等軟件開發(fā)者可以看到的最底層的東西,是軟硬件的接口蔚约。
注意微架構(gòu)與指令集是兩個概念:指令集是CPU選擇的語言奄妨,而微架構(gòu)是具體的實現(xiàn)。
補充關(guān)于指令集的知識:
CPU執(zhí)行計算任務(wù)時都需要遵從一定的規(guī)范苹祟,程序在被執(zhí)行前都需要先翻譯為CPU可以理解的語言砸抛。這種規(guī)范或語言就是指令集(ISA,Instruction Set Architecture)树枫。程序被按照某種指令集的規(guī)范翻譯為CPU可識別的底層代碼的過程叫做編譯(compile)直焙。x86、ARM v8砂轻、MIPS都是指令集的代號奔誓。指令集可以被擴展,如x86增加64位支持就有了x86-64搔涝。廠商開發(fā)兼容某種指令集的CPU需要指令集專利持有者授權(quán)厨喂,典型例子如Intel授權(quán)AMD和措,使后者可以開發(fā)兼容x86指令集的CPU。
目前市場上很多的CPU蜕煌,比如水果6s上逆天的A9,三星s6e+上的Exynos 7420(big.LITTLE架構(gòu)CortexA57+CortexA53)派阱,都是廠商兼容ARM指令集而自主研發(fā)的微架構(gòu),都可以成為是廠商自己研發(fā)的CPU斜纪。而相對于有些芯片廠商僅僅是在ARM購買微架構(gòu)來組裝芯片就不能被稱作CPU研發(fā)企業(yè)的贫母,比如之前的榮耀上的Kirin920、MX4Pro上的Exynos 5430等等盒刚。當(dāng)然腺劣,在上面那個圖里也可見看到有為嵌入式設(shè)備設(shè)計的的Cortex-Mx系列,之前曾經(jīng)用過的MK60就是基于Cortex-M0架構(gòu)的一款CPU伪冰,繼而封裝成了一片MCU誓酒。
1.3 栗子與展望2016
在2015年,移動端CPU是不同尋常的一年贮聂。三星在高通的屋檐下待了N多年靠柑,今年終于憑借使用7420的s6和s6e打了一個翻身仗(功勞主要在下面要談到的工藝上,當(dāng)然和微架構(gòu)也不無關(guān)系)吓懈,在2015Q3智能手機出貨量來看歼冰,三星名列第一,并且出貨量和市場占有率已經(jīng)接近蘋果iPhone的兩倍耻警。2016年三星的智能手機采用自主微架構(gòu)(貓鼬)的64位芯片Exynos8890隔嫡,性能及市場表現(xiàn)值得我們期待。
而在2015年甘穿,三星在處理器端的老大哥 高通 的日子真的不好過腮恩,由于驍龍810散熱問題芯片賣不出去,還要面對驍龍810手機表現(xiàn)甚至不如去年的驍龍801和驍龍805手機的事實温兼,又被中國政府找了麻煩交了罰款秸滴。所以2016年,習(xí)慣了作為智能手機市場執(zhí)牛耳者的高通募判,必然會做出大動作荡含,當(dāng)然我們也已經(jīng)知道了,驍龍820已經(jīng)放棄了 ARM 的官方架構(gòu)届垫,轉(zhuǎn)而去重新自主設(shè)計架構(gòu)Kyro释液。希望高通能通過驍龍820橫掃810帶來的陰霾,打一個漂亮的翻身仗吧装处,并且能給這個疲軟的市場一劑強心針误债。
關(guān)于big.LITTLE
Mr Big先生主要處理具有挑戰(zhàn)性的重任糟袁,Little小姐則負(fù)責(zé)小任務(wù)。我們這樣比喻躺盛,在大掃除的時候,男同學(xué)負(fù)責(zé)提水形帮、抬桌子抬椅子槽惫,女同學(xué)負(fù)責(zé)掃地擦黑板。當(dāng)手機不需要工作時辩撑,Big核心和LITTLE核心都可以停下來休息界斜。
基于big.LITTLE技術(shù)的八核處理器,并沒有將傳統(tǒng)內(nèi)核放在單一的處理器上合冀,而是一分為二各薇,其中一個使用了4個“小核心”,另一個則使用了4個“大核心”君躺,這兩個“核心”都有著自己獨立的速度和性能峭判。通過兩大核心自主運行,搭載Big.little技術(shù)的處理器比之前的手機CPU更加高效棕叫,畢竟后者只有一個或者兩個內(nèi)核林螃。
當(dāng)需要用智能手機打開一個網(wǎng)頁時,手機就可以用一個大的內(nèi)核來處理該任務(wù)俺泣,而小的內(nèi)核則同時處理其他小任務(wù)疗认,比如查看電子郵件、撥打電話等伏钠。
ARM解釋道横漏,big.LITTLE是一種節(jié)能省耗技術(shù),最高性能的ARM CPU核心與最高效的ARM CPU核心相結(jié)合熟掂,可以以更低的功耗提供最好的工作性能缎浇,最快的處理任務(wù)速度。
設(shè)想是美好的打掘,可是……A53 的 TDP (設(shè)計熱功耗)要比 A57 低數(shù)倍不止华畏,甚至在低頻模式下 A57 的功耗也要比 A53 高,這本來是個合作共贏的好事尊蚁,不過高通給出的原因是由于采用的ARM Cortex A57核心架構(gòu)出現(xiàn)了發(fā)熱問題亡笑,這就造成了一個怪現(xiàn)象 A53 性能不夠,而 A57 又太費電溫度太高横朋。當(dāng)然不是沒有解決辦法仑乌,對于 A57 這個耗電大戶ARM官方的建議是使用 big.LITTLE 大小核切換技術(shù)還有更低功耗的 FinFET 晶體管制程。
「可是,可是晰甚,你看看人家三星同樣采用這套64位核心架構(gòu)的Exynos 7420性能卻相對穩(wěn)定呀衙传!其中最重要的原因就是三星采用了自家最新的14nm工藝,而高通采用的而是20nm工藝(下面馬上就要講到工藝?yán)玻?/strong>)厕九”痛罚」
那么問題就來了,且不說 FinFET 根本上就沒幾個廠家用上扁远,就 big.LITTLE 這個技術(shù)也有不小的問題俊鱼。在切換大小核的時候甚至?xí)霈F(xiàn)毫秒級的延遲,這對手機的體驗甚至是致命的畅买。
不過就算是現(xiàn)在公認(rèn)的最好采用 big.LITTLE 的 Exynos 7420 也沒有解決切換延遲問題并闲,與驍龍801對比切換軟件明顯會有卡頓,而且四個 A57 同時工作的時候溫度很嚇人谷羞,驍龍810就是最大的受害者帝火,一旦溫度上去就要降頻這就造成了驍龍810的性能嚴(yán)重下降。
這不就印證了前面我們曾經(jīng)談到的觀點嗎湃缎?「一般來說犀填,架構(gòu)越新相對來說是越好」。不過在2015年來看嗓违,ARM給出的這次公版架構(gòu)宏浩,可是把高通搞得有點暈頭轉(zhuǎn)向。
所以我現(xiàn)在手頭上用的Z5P靠瞎,用著驍龍810比庄,索尼也是拿出了黑科技來鎮(zhèn)壓。在驅(qū)動之家的Z5P評測上的標(biāo)題是「鎮(zhèn)壓驍龍810 索尼Z5用上了雙熱管+硅脂」……
1.4 當(dāng)下的手機市場與總結(jié)
Cortex A57性能固然強悍乏盐,可是高通卻沒有駕馭得了佳窑。在各個手機廠商搭載了這顆CPU的旗艦手機一個個相繼淪為暖手寶的時候,高通只能無奈的推出了驍龍808父能,也就是減少了兩個Cortex A57大核心采用6核方案緩解發(fā)熱問題神凑。而在三星和高通的巔峰對決之外,MTK很聰明的用了8個Cortex-A53小核心推出自己的旗艦Helio X10繼續(xù)鞏固著自己的中低端市場份額何吝,讓驍龍615銷量慘淡溉委。Helio X10的穩(wěn)定性好,性能夠用爱榕,這也是很多國內(nèi)千元機市場的首選CPU瓣喊。
說到這,大家應(yīng)該能夠感覺得到工藝和架構(gòu)對于cpu的影響不亞于核心數(shù)和頻率了黔酥。再舉個栗子吧藻三,如今主流手機CPU都是六核洪橘,八核,聯(lián)發(fā)科甚至開始研發(fā)十核了棵帽,為什么性能和桌面端CPU還是有一定的差距呢熄求?沒錯,指令集不一樣逗概,核心架構(gòu)不一樣是最根本的原因弟晚。復(fù)雜指令系統(tǒng)(CISC)和X86、X64的微架構(gòu)與手機完全不同逾苫。手機多核其實應(yīng)該叫多CPU,將多個CPU芯片封裝起來處理不同的事情指巡,就是大家所說的膠水核心,也就是被強行粘在一起的意思隶垮。在待機或者空閑的時候,八核的手機也只能用到一至兩個核心秘噪。而電腦則不同狸吞,桌面端的多核處理器是指在一個處理器上集成了多個運算核心,通過相互配合指煎、相互協(xié)作可以處理同一件事情蹋偏,是多個并行的個體封裝在了一起。用一句話概括至壤,就是并行處理威始,雙核就是單車道變多車道。這不是說優(yōu)劣的問題像街,而是定位的不一樣黎棠。手機CPU要功耗低、廉價镰绎。所以采用ARM架構(gòu)的CPU脓斩,運算能力大大低于電腦CPU的運算能力,同等頻率CPU浮點運算能力相差在幾千到上萬倍畴栖。
好吧星立,寫到這里,已經(jīng)寫了不少了葬凳,自己也把架構(gòu)方面的知識復(fù)習(xí)了一下绰垂。那么下面一篇就是要關(guān)于CPU的工藝了,敬請期待火焰!
------------------------分割線------------------------
本文援引了很多的數(shù)據(jù)劲装、觀點、資料昌简,若有侵權(quán)占业,立刪!
部分參考資料:
《電的旅程:探索人類駕馭電子的歷史過程》(張大凱)湖南科技出版社
《浪潮之巔》(吳軍)電子工業(yè)出版社
《支撐處理器的技術(shù):永無止境地追求速度的世界》(Hisa Ando纯赎,李劍 譯)電子工業(yè)出版社 本文很多資料都出自于此谦疾,五星推薦!
2016旗艦芯誰爭鋒犬金?高通驍龍820念恍、三星Exynos 8890、華為麒麟950還是MTK:
http://www.cnbeta.com/articles/449055.htm
驍龍810+10=驍龍820晚顷? 才不是那么簡單呢峰伙!這是高通的自我救贖:
http://weibo.com/p/1001603892308377533736
四核成主流:七大主流平板處理器解析:
http://www.cnmo.com/pad/231340.html
寫在驍龍820和Exynos 8890之前:手機cpu淺談:
http://post.smzdm.com/p/396980/
ARM處理器全解析:A8/A9/A15都是什么?:
http://news.mydrivers.com/1/250/250003_all.htm#2
關(guān)于CPU该默、指令集瞳氓、架構(gòu)、芯片的一些科普:
http://zhuanlan.zhihu.com/xpenrynidea/19893066
三星大殺器“貓鼬” 驍龍820哭暈在廁所:
http://www.pcpop.com/doc/1/1121/1121698.shtml