只知NVIDIA的GPU強,殊不知其CPU也很強!
提起NVIDIA,可能99%+的朋友第一反應(yīng)是“顯卡”和“GPU”。世界上兩大GPU巨頭之一、GPU領(lǐng)域絕對的霸主嘛,地球人都知道,前些天還剛剛發(fā)布了全新的Turing架構(gòu)和RTX 2080Ti/2080/2070顯卡呢。
這其實也沒什么毛病,不過近幾年以來,人們在麻木于NVIDIA GPU強大的同時,似乎冥冥之中忽略了某件事情。NVIDIA的GPU強不?確實強,爆炸強,不管是PC端還是SoC上,有目共睹,人盡皆知……emmm,然后嘞?
直到前陣子看到了這樣一張圖:
顯然,這是一張對目前市面上主流SoC的簡要概括,生動形象簡明易懂。不過看到最后一個的時候,我瞬間意識到了人們之前忽略了哪里:NVIDIA SoC的CPU怎么樣,真的是像圖上畫的一樣么?
CPU不行?這還真不服
實際上,NVIDIA對SoC的設(shè)計并不陌生,到目前為止他們已經(jīng)發(fā)布了7代Tegra系列SoC。NVIDIA一直在Tegra SoC中使用自家的GPU架構(gòu),但前幾代的CPU部分用的則是Arm公版CPU內(nèi)核。與同時期的高通三星聯(lián)發(fā)科處理器相比,除了“祖?zhèn)鳌钡腉PU外并無其他出彩之處。倒也有不少手機和平板電腦使用了Tegra處理器,還算差強人意。
然而即便時間僅止于此,我們似乎也挑不出NVIDIA SoC中的CPU有什么毛病。非要說的話,不知NVIDIA黃教主是否為蘋果喬幫主的鐵桿擁躉,這幾代Tegra均沒有集成neon協(xié)處理器,flash播放能力欠佳。至于使用Arm公版CPU內(nèi)核雖然不假,但是同時期的三星華為聯(lián)發(fā)科德州儀器用的也都是公版內(nèi)核。
更何況,NVIDIA在CPU上的野心和實力,遠(yuǎn)非人們的固有印象可以衡量。
在2011年的CES上,NVIDIA對外公布了Denver計劃,宣布將要開發(fā)基于64位Arm v8指令集的自研架構(gòu),用于從移動設(shè)備到服務(wù)器等各種設(shè)備。短短三年后的2014年CES,NVIDIA便推出了使用自研Denver架構(gòu)的Tegra K1上,并依此成為了繼蘋果之后第二個發(fā)布基于Arm v8指令集的消費級SoC的公司。
時間回退4個月,2013年9月,蘋果在其A7處理器上出人意料地使用了基于Arm v8指令集的Cyclone 架構(gòu)。此后的一年多時間里,市面上基于Arm v7指令集的Cortex A15公版架構(gòu)和高通Krait自研架構(gòu),甚至包括同樣基于Arm v8指令集的Cortex A57在內(nèi),所有其他同時期的CPU架構(gòu)均被Cyclone橫掃。
除了Denver。
傳統(tǒng)的CPU架構(gòu)設(shè)計分為兩種:順序執(zhí)行和亂序執(zhí)行。恰如其名,順序執(zhí)行體系嚴(yán)格按照接收順序執(zhí)行微指令,而亂序執(zhí)行體系允許在不改變指令運算結(jié)果的前提下調(diào)整執(zhí)行順序。
一直以來,亂序執(zhí)行被認(rèn)為是順序執(zhí)行發(fā)展到極限后的一次進(jìn)化。CPU執(zhí)行的任務(wù)紛繁復(fù)雜,某些情況下RAM等周邊部件會阻塞指令的順序執(zhí)行,這時亂序執(zhí)行便可以明顯改善運算的靈活性,有效提高吞吐量。
亂序執(zhí)行曾不止一次被提及,可見在這些高性能Arm內(nèi)核中,亂序執(zhí)行似乎已經(jīng)成為了不二的選擇。不過,換用亂序執(zhí)行需要增設(shè)亂序執(zhí)行窗口,有效識別可以重新排序的指令,確保指令可以安全的亂序執(zhí)行,這顯然會拉高架構(gòu)的復(fù)雜性,芯片尺寸和功耗都會明顯上升。
而NVIDIA在提升架構(gòu)性能方面則另辟蹊徑,認(rèn)為亂序執(zhí)行并不是解決問題的唯一方案。不光敢想,Denver真的放棄了Arm公版高性能架構(gòu)中主流的亂序執(zhí)行方式,轉(zhuǎn)而采用了低功耗處理器上常見的順序執(zhí)行,并為其配以一套高效的二進(jìn)制翻譯和代碼優(yōu)化方案。
NVIDIA的思路很簡單:順序執(zhí)行體系面臨的基本問題很明確,無外乎內(nèi)存停滯等硬件問題,以及指令排序不良等軟件問題。那么這些問題一定要硬改架構(gòu)體系么,能否在“軟層面”中解決? 而這就是Denver的核心思想。
這個架構(gòu)不尋常
Denver一個不尋常的地方是,它內(nèi)部的指令格式與ARMv7或ARMv8大相徑庭。在具體的內(nèi)部結(jié)構(gòu)上,Denver使用了在GPU中頗為常見的VLIW(Very Long Instruction Word,超長指令字)格式執(zhí)行指令(畢竟NVIDIA)。
而在架構(gòu)前端,Denver的指令解碼寬度達(dá)到了前無古人的7發(fā)射,比Cortex A15(3發(fā)射)、Cortex A57(4發(fā)射)和蘋果Cyclone(6發(fā)射)都要更寬。NVIDIA官方稱其為“7+”架構(gòu),其中的“+”指的是NVIDIA為Denver設(shè)計的DCO(動態(tài)代碼優(yōu)化器)。
DCO的任務(wù)是將Arm代碼轉(zhuǎn)換為Denver的原生格式,并優(yōu)化此代碼以使其在Denver上運行得更好。對于CPU整體而言,DCO是最關(guān)鍵的一個環(huán)節(jié),因為它的性能將直接由DCO決定。
長期以來,一直有傳言稱Denver最初的設(shè)計意圖瞄準(zhǔn)的是x86,其底層設(shè)計和二進(jìn)制翻譯機制旨在不侵犯任何x86專利的前提下兼容x86指令的執(zhí)行。不管這傳言是不是真的,最終結(jié)果是NVIDIA在軟層面上有了驚人的成果,打造出了一套可以將硬件設(shè)計和指令集分離的架構(gòu)。
然而盡管DCO如此逆天,NVIDIA還是在其之外配備了一套Arm指令解碼器。雖然官方表示這個Arm解碼器并不是“備胎”,但實際來看顯然是“口嫌體正直”,Denver的大部分指令都來自二進(jìn)制翻譯,這個Arm解碼器只有區(qū)區(qū)2指令寬度(Cortex A8級別),只在二進(jìn)制翻譯無法高效處理時才會接手以直接解碼Arm指令。
與此同時,由于NVIDIA選擇了在“軟層面”中解決問題的方式,Denver也擁有了其他架構(gòu)都不具備的可升級性,如果DCO有改進(jìn)的話,NVIDIA可以進(jìn)一步部署新版本的DCO。
而最終Denver的實際性能也足以用技驚四座來形容,在SPECint2000測試中,Denver相比Cortex A15有了35%的平均提升,最高提升幅度甚至高達(dá)67%:
更為具體一點,使用Denver核心的Tegra K1性能完全壓過了同時期Cyclone核心的蘋果A7,相較于Intel Haswell核心的賽揚2955U也是互有來回。
醉翁之意不在酒
看到這也許有朋友會疑惑,既然NVIDIA SoC的CPU不但不弱,反而也和GPU一樣是爆炸強的存在,為什么NVIDIA在手機和平板領(lǐng)域卻一直不得法,到最后干脆退出了呢?
很簡單,因為人家根本沒想爭這塊啊……
和我們這些看熱鬧不怕事大的普通用戶不同,NVIDIA對自家SoC的情況再清楚不過了。作為剛?cè)刖值男氯?,在基帶、底包、SDK、節(jié)能降耗等方面均處于后發(fā)劣勢,和市面上這些位根深蒂固的老黃牛拼力氣實為不智之舉。
沒見人家德州儀器都在2014年退出手機SoC領(lǐng)域了,Tegra出到第4代給小米3用用也算善始善終,交個朋友嘛……
很顯然,NVIDIA看到了SoC更好的應(yīng)用領(lǐng)域——AI等高性能移動計算平臺,說白了就是自動駕駛和機器人。
經(jīng)歷了Tegra K1和Tegra X1的過渡,Tegra Parker(即NVIDIA Drive PX)終于帶著改良版的Denver2架構(gòu)成功登上了自動駕駛的舞臺。而今年剛剛推出的NVIDIA Jetson Xavier平臺則更是帶來了強到?jīng)]朋友的自研架構(gòu)Carmel,其指令解碼達(dá)到了驚為天人的10寬度,在Denver的基礎(chǔ)上再次向前邁進(jìn)了一大步。
在眼下的AI芯片領(lǐng)域都在追求純AI運算的精簡設(shè)計時,NVIDIA是唯一沒有放棄高性能CPU的一家,同時也是將CPU、GPU、AI三部分平衡做的最好的一家。
So,老鐵們,別再說NVIDIA“CPU不行GPI帶”了,NVIDIA真的不是CPU差,而是是在太強了,強到已經(jīng)超出了我們所熟知的這個次元。