本帖最後由 ledpf 於 2020-5-30 13:46 編輯
2020年5月14日晚間,NVIDIA的新一代Ampere架構隨最新的計算卡A100正式亮相,這張加速卡上面使用的GA100核心也是目前世界上最大的7nm核心,其面積高達826mm2。那麼這枚核心中包含的Ampere架構與前代相比究竟在哪些地方有不同呢?本文就帶各位一起簡單地看看這個NVIDIA最新一代圖形架構。 
首先我們的旅程從整個GA100 GPU開始,下圖是官方提供的GA100 GPU全貌(可以點擊打開原圖)。 
分割成了兩組的超大L2緩存和超高顯存帶寬Ampere架構仍然沿用了成熟的GPC-TPC-SM多級架構,GA100內部包含8組GPC,每組GPC包含8組TPC,每組TPC又包含8組SM。主要的區別點在於,中間的L2緩存不再是統一的一組,而是被分割成了兩組。實際上,GA100的L2緩存相比起前代的GV100要大上近7倍——從原本的6MB直接跳到了40MB。大容量的L2緩存會在一定程度上減輕計算單元對顯存帶寬的依賴,不過為了避免訪問遠端L2緩存時出現延遲過高的問題,它被分成了兩塊,保證延遲不過高。這種大容量特性和分割結構讓GA100的L2緩存帶寬提升了2.3倍,同時硬件的緩存一致性保證應用程序可以自動利用大容量的L2緩存提升性能。 NVIDIA三代頂級計算卡規格對比表
| Tesla P100 | Tesla V100 | A100 | | GPC | 6 | 6 | 8 | | TPC | 28 | 40 | 54 | | SM | 56 | 80 | 108 | | FP32/SM | 64 | 64 | 64 | | FP32/GPU | 3584 | 5120 | 6912 | | FP64/SM | 32 | 32 | 32 | | FP64/GPU | 1792 | 2560 | 3456 | | Tensor Cores代數 | N/A | 第一代 | 第三代 | | Tesor Cores/SM | N/A | 8 | 4 | | 材質單元 | 224 | 320 | 432 | | 顯存接口 | 4096-bit HBM2 | 4096-bit HBM2 | 5120-bit HBM2 ECC | | 顯存容量 | 16 GB | 32/16 GB | 40 GB | | 顯存帶寬 | 720 GB/s | 900 GB/s | 1555 GB/s | | 二級緩存大小 | 4 MB | 6 MB | 40 MB | | SM單元共享緩存大小 | 64 KB | 96 KB | 164 KB | | 寄存器文件大小/SM | 256 KB | 256 KB | 256 KB | | 寄存器文件大小/GPU | 14 MB | 20 MB | 27 MB | | TDP | 300 W | 300 W | 400 W | | 芯片面積 | 610 mm2 | 815 mm2 | 826 mm2 | | 製程工藝 | 16nm FinFET+ | 12nm FFN | 7nm N7 | | 超 能 網 制 作 |
除了容量和結構上的變化,Ampere也在架構上引入了名為計算數據壓縮(Compute Data Compression)的新緩存特性,它可以加速非結構化的稀疏數據和其他可壓縮的數據,使DRAM的讀寫帶寬能夠提升4倍,L2中的讀取帶寬提升4倍,容量提升2倍。同時,針對大容量的L2緩存,Ampere為程序員提供了數據駐留控制,允許用戶對緩存數據進行管理,可以手動將一些數據保留在L2中,加速持久化的訪問。 另外在顯存帶寬上面,A100也有突破。它仍然使用了HBM2的顯存,一共五個活動堆棧,每個堆棧中有8片8Gb顯存,最終組成40GB的顯存,運行在1215MHz的頻率上,其顯存帶寬高達1555GB/s,是V100的1.7倍多。另外它具備ECC硬件校驗功能,需要佔用額外的顯存,這也就是在架構圖和渲染圖上,GA100均擁有6組HBM2顯存,而只有5組是實際可用的原因了。而且不僅僅是顯存,GPU內部的所有寄存器、L1和L2緩存均支持ECC特性。 新的數據接口再來看上下的外圍部分,首先比較顯眼的應該是PCI Express 4.0。相信我們的讀者對PCIe 4.0已經很熟悉了,這裡也就不講具體的了,只要知道它的帶寬比3.0提升了一倍即可。 在NVIDIA的計算陣列中用的更多的是NVLink這個專門用來讓GPU實現互聯的接口,在Ampere上,NVLink升級到了第三代。第三代NVLink將每個信號對(signal pair)的數據速率提升到了50Gb/s,比前代幾乎提升一倍,單個第三代NVLink在每個方向上面能夠提供25GB/s的帶寬,這與上代類似,但少用了一半的信號對,這也使得GA100上面的NVLink鏈路總數直接擴增了一倍,達到12條,總帶寬達到600GB/s,比GV100提升一倍。 延續Volta的SM設計看完更新了的數據交換接口,讓我們把這張圖放到放大鏡下面,來看一看Ampere,應該說是GA100的SM單元設計。 
GA100的SM單元
如果要搞明白它的變化點,我們還要請出Volta架構和Turing架構的SM單元。 
左GA100,右GV100

左GA100,右TU102
可以看到Ampere的SM單元設計保留了從Volta開始的分精度計算思路,將計算核心分成了針對整數計算的INT32單元和針對浮點計算的FP32、FP64單元和針對FP16、INT8等AI計算中常見的數據類型的Tensor Cores。從數量來看,每個SM仍然擁有64個FP32單元、64個INT32單元和32個FP64單元,這與Volta和Turing沒有太大的區別(Turing SM沒有FP64單元)。比較明顯的區別在於,在Ampere SM中,每SM僅包含四個Tensor Core。至於RT Cores?那是遊戲卡才有的,面對純計算用途的GA100自然不需要這玩意兒。 大幅加強的Tensor Cores是的,Tensor Cores變少了,但是它變強了。在Ampere架構上,Tensor Cores升級到了第三代,這也是Ampere SM中變化最大的地方了。第三代Tensor Cores變得幾乎無所不能,它可以加速幾乎所有的常見數據類型,包括FP16、BF16、TF32、FP64、INT8、INT4和二進制。下面是官方的代際數據類型對比表: 
不僅僅是支持的數據類型變多了,它的算力也有很大的提高,現在每個Tensor Cores在每個時鐘內可以執行256次FP16/FP32 FMA操作,在前代,這個數字是64次。也就是提高了足足4倍,於是,就算是每個SM中減少一半的Tensor Cores,它仍然能夠提供兩倍於前代的性能。 
另外,為了提高Tensor Cores訓練AI時的效率,NVIDIA新創了一種名為TF32的數據類型,它擁有FP32的範圍和FP16的精度,對於調用Tensor Core的操作,它會自動啟用TF32進行處理。而沒有調用Tensor Cores的操作將仍然走FP32的數據路徑,Tensor Cores會自動讀取FP32數據,在內部減精度進行運算,在最終輸出的時候會將數據還原成IEEE標準。 
新版Tensor Cores還支持稀疏矩陣運算。稀疏矩陣指的是大部分元素為0的矩陣,對於這種矩陣,NVIDIA使用了自己開發出來的稀疏計算方式,它支持2:4的結構化稀疏運算,需要參與計算的矩陣在每四個元素中有2個以上的0元素,它可以將Tensor Cores的計算吞吐量翻一倍。 虛擬多實例(MIG)特性數據中心多採用虛擬化技術為客戶提供計算實例,在CPU虛擬化上面,現有的方案已經非常成熟,但對於GPU,現有的虛擬化方案就不太能夠滿足當前數據中心的需求,如同下圖中所示意的,一個CPU可能會被多名用戶同時佔用,而一塊GPU在單一時間內只能被一名用戶所使用,這就有可能造成資源浪費。設想一下,用戶1只需要0.5塊GPU的資源即可完成任務,而用戶2則需要1.5塊GPU資料,如果按照CPU虛擬化的方式,那麼此時2塊GPU即可滿足用戶的需求,但因為GPU並不能夠分塊,使得數據中心要給用戶分配1+2共3塊GPU,才能夠滿足需求,這無疑是浪費了計算資源。 
而Ampere上面引入的多實例GPU(Multi-Instance GPU)特性則很好地從硬件上面解決了當前數據中心在GPU資源分配上面遇到的問題,它在硬件底層即可將整塊顯卡切分成7個獨立實例,並且可以分配給不同用戶使用。 
MIG特性的引入實際上是將GPU資源進行了細粒度的劃分,就有如CPU按核心數量來劃分計算資源一樣,不過GPU暫時還做不到細化到單個SM單元這麼細,但已經是為虛擬化做出了重大的升級。 總結:改良性的更新,讓人更期待遊戲版的改變總的來說,Ampere架構的更新並不是革命性的,而是延續了NVIDIA這幾年在架構設計上的一貫思路,微觀上在SM單元中延續分精度計算,並加強Tensor Cores這個對深度學習計算非常有用的單元,宏觀上面增大GPU的規模,不僅將整個GPU包含的SM單元數量擴大到128組這個數字,更是把整片GPU上面的緩存系統都放大了,尤其是40MB的二級緩存,讓人印象深刻。 不過,GA100是一個為計算而特別設計的核心,雖然Ampere將會同時登陸計算卡和圖形卡之中,但它們的配置會有一些不同。我們目前可以判斷的是,Ampere的圖形版中勢必會取消掉所有FP64單元,另外Turing中引入的RT Cores將會被繼承,Tensor Cores也應該會升級到第三代。而其他改動,像是SM的共享緩存大小和寄存器文件大小,應該會被保留,但二級緩存應該不會有40MB那麼誇張了,另外,顯存接口肯定會改到更為便宜的GDDR6上去。至於核心的規模嘛……肯定不會比GA100大(廢話),但這代在CUDA Core上貌似沒有進行太大的改進,如果想要在圖形性能上進行提升,那要麼是提升頻率,要麼是擴大規模,兩者並行下來,未來的GA102芯片在FP32的數量上面可能會逼近A100計算卡的6912個,當然,拿到GeForce中肯定會挨上幾刀。 那麼,關於Ampere架構的簡要解讀就到此為止了,對於我們來說,更有用的內容還是要等到圖形卡出來才有的分析。本文主要參考了官方的《NVIDIA Ampere Architecture In-Depth》,由於本人能力和認知有限,文章中難免會有錯誤,還請各位讀者指出。
https://www.expreview.com/74230.html
|