一窺NVIDIA「真正人工智慧」Volta的執行單元細節
https://goo.gl/8nwZuj
畢竟是享有IEEE這響亮品牌「加持」的研討會,加上坐在台下的聽眾多半又不是呆頭呆腦
的「諸多媒體先進」,諸多在Hot Chips趁機宣揚國威並現場隔空較勁的晶片廠商,多半
都會講些和技術行銷簡報「很不一樣」的深度內容。
NVIDIA這次公佈了「人工智慧最佳化」GPU微架構Volta (GV100) 的執行單元細節,頗有
看頭,平日很難得看到繪圖晶片廠商願意打開「黑盒子」給大家品頭論足,尤其是扮演著
GPU關鍵靈魂,也就是NVIDIA從Fermi一路改名SM SMX SMM再改回SM的「多執行緒SIMD (或
SIMT) 處理器」,過去大家都在亂猜一通,現在總算有機會一窺其廬山真面目。
「分而治之」的NVIDIA產品發展策略
如果今天要筆者馬上評論「為何NVIDIA可以在高階繪圖市場壓倒AMD」,唯一可勉強擠出
的大概也只有一句話:NVIDIA集中足夠的資源,採取分散風險的多樣化產品研發計畫,而
不像同時經營CPU GPU兩條戰線、蠟燭兩頭燒的AMD,被迫雞蛋都放在同一個籃子內。
在2013年的NVIDIA時程表,原本Maxwell要直接演進到Volta。
https://media.cool3c.com/files/media/1/1/11_408.jpg
但2014年,在Volta前就多出一個Pascal了。
https://media.cool3c.com/files/media/1/2/12_355.jpg
所以2016年「汎用」的Pascal,2017年「專用」的Volta,打破了NVIDIA兩年推出一個嶄
新微架構的節奏,搞不好NVIDIA以後的「鐘擺」就以一年為期,也說不定。
https://media.cool3c.com/files/media/1/3/13_324.jpg
以事後諸葛的角度回顧NVIDIA「小步快跑」的決定,一點都不讓人感到意外,因為Volta
的確是NVIDIA史上第一個真正針對人工智慧量身訂做、兼顧「學習 / 訓練」與「推論 /
預測」的微架構。
逐步深入、抽絲剝繭Volta微架構的SM細節
Volta的單一SM規劃和「前前代」Maxwell雷同,切成四塊「次核心 (Sub-Core)」。其實
圖中少畫了載入儲存單元,但好像也無關緊要了。
https://media.cool3c.com/files/media/1/4/14_296.jpg
四塊次核心共用L1指令快取、L1資料快取 (與材質和區域共享記憶體共用128kB容量,
NVIDIA宣稱這樣比較有彈性)、與晶片共用的記憶體子系統 (6MB第二階快取和12GB HBM2
主記憶體)。
每個次核心單一時脈執行一個由32執行緒組成的「Warp」,想的簡單一點,一個Warp就代
表畫面上的一個小方格。
https://media.cool3c.com/files/media/1/5/15_274.jpg
次核心內的執行單元就是重頭戲了,Volta包含五種截然不同的獨立運算功能,這讓它能
夠在眾多GPU中鶴立雞群。
32位元浮點 (FP32):16組,「CUDA Core」的同義詞,如執行16位元半精度,輸出率將會
倍增。
特殊運算 (MUFU):4組,特殊功能單元,負責平方根、倒數、sine 和 cosine 等三角函
數。
64位元浮點 (FP64):8組,高效能運算必備品,消費市場就閹割或著根本看不到。
整數運算 (INT):16組,人工智慧一定用得到,看看Google第一代TPU就知道了。
張量運算核心 (Tensor Core):2組,執行4x4 16位元浮點乘積和,適用於特徵辨識的卷
積運算 (Convolutional Neural Network,CNN)。
值得注意的是,為了確保執行單元隨時有指令可跑,次核心具備「L0」指令快取。
https://media.cool3c.com/files/media/1/6/16_234.jpg
一顆GV100有640個Tensor Core:每個次核心2個 x 4個次核心 x 80個SM = 640個。
可理可證,GV100有5120個CUDA core,Fermi完全體GF110的整整「十倍」,時間過得真快
。
https://media.cool3c.com/files/media/1/7/17_218.jpg
最後,也是最重要的,Volta可實現更精細的執行緒執行資源管理,每個Warp的32執行緒
,都有其個別獨立的程式計數器 (Program Counter),更利於多工與虛擬化應用。
https://media.cool3c.com/files/media/1/8/18_201.jpg
無所不備則無所不寡
Volta (GV100) 這些補強,特別像獨立的64位元浮點單元、獨立的整數運算單元、與為了
強化推論 (Inference) 而生的16位元浮點乘積和張量 (Tensor) 運算單元「Tensor Core
」,都是對一般遊戲娛樂或高效能運算而言,敬謝不敏的化外之民,即使Pascal後期型號
(GP102 / GP104 / GP106) 也追加了對8位元短整數的支援性,但仍看不到Volta的車尾
燈,而那時的AMD,大概只能仆在馬路上,背後深深烙印著兩條被NVIDIA活活輾過的輪胎
痕。
同樣的「分工」精神,也早已成為NVIDIA自「讓GPU更接近汎用CPU」的Fermi微架構為起
點,產品規劃的重要特色:具備高效能64位元浮點運算的高階應用,都會有專屬的大型化
晶粒,像GF100、GF110、GK110、GK210、GP100、GV100等 (Maxwell世代沒這樣搞,算是
特例),以免消費市場壓根兒不需要的「外掛」,傷害產品競爭力,如不必要的多餘製造
成本與耗電量等。
很不幸的,就剛好就是AMD的弱點,想要單一設計面面俱到,下場就是兩邊都顧不到,
Vega就是很好的血淋淋例證。疑?怎麼又讓筆者想起Fusion了?