NVIDIA GPU結構
目前市場上的NVIDIA顯示卡都是基於Tesla架構的,分為G80、G92、GT200三個系列。Tesla體系架構是一塊具有可擴充套件處器數量的處理器陣列。每個GT200 GPU包含240個流處理器(streaming
processor,SP),每8個流處理器又組成了一個流多處理器(streaming multiprocessor,SM),因此共有30個流多處理器。GPU在工作時,工作負載由PCI-E匯流排從CPU傳入GPU視訊記憶體,按照體系架構的層次自頂向下分發。PCI-E 2.0規範中,每個通道上下行的資料傳輸速度達到了5.0Gbit/s,這樣PCI-E2.0×16插槽能夠為上下行資料各提供了5.0*16Gbit/s=10GB/s的頻寬,故有效頻寬為8GB/s,而PCI-E 3.0規範的上下行資料頻寬各為20GB/s。但是由於PCI-E資料封包的影響,實際可用的頻寬大約在5-6GB/s(PCI-E 2.0 ×16)。
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
在GT200架構中,每3個SM組成一個TPC(Thread Processing Cluster,執行緒處理器叢集),而在G80架構中,是兩個SM組成一個TPC,G80裡面有8個TPC,因為G80有128(2*8*8)個流處理器,而GT200中TPC增加到了10(3*10*8)個,其中,每個TPC內部還有一個紋理流水線。
大多數時候,稱呼streaming processor為流處理器,其實並不太正確,因為如果稱streaming processor為流處理器的話,自然是隱式的與CPU相對,但是CPU有獨立的一套輸入輸出機構,而streaming processor並沒有,不能在GPU程式設計中使用printf就是一個例證。將SM與CPU的核相比更加合適。和現在的CPU的核一樣,SM也擁有完整前端。
GT200和G80的每個SM包含8個流處理器。流處理器也有其他的名稱,如執行緒處理器,“核”等,而最新的Fermi架構中,給了它一個新的名稱:CUDA Core。 SP並不是獨立的處理器核,它有獨立的暫存器和程式計數器(PC),但沒有取指和排程單元來構成完整的前端(由SM提供)。因此,SP更加類似於當代的多執行緒CPU中的一條流水線。SM每發射一條指令,8個SP將各執行4遍。因此由32個執行緒組成的執行緒束(warp)是Tesla架構的最小執行單位。由於GPU中SP的頻率略高於SM中其他單元的兩倍,因此每兩個SP週期SP才能對片記憶體儲器進行一次訪問,所以一個warp中的32個執行緒又可以分為兩個half-warp,這也是為什麼取數會成為運算的瓶頸原因。Warp的大小對操作延遲和訪存延遲會產生影響,取Warp大小為32是NVIDIA綜合權衡的結果。
SM最主要的執行資源是8個32bit ALU和MAD(multiply-add units,乘加器)。它們能夠對符合IEEE標準的單精度浮點數(對應float型)和32-bit整數(對應int型,或者unsigned int型)進行運算。每次運算需要4個時鐘週期(SP週期,並非核心週期)。因為使用了四級流水線,因此在每個時鐘週期,ALU或MAD都能取出一個warp 的32個執行緒中的8個運算元,在隨後的3個時鐘週期內進行運算並寫回結果。
每個SM中,還有一個共享儲存器(Shared memory),共享儲存器用於通用平行計算時的共享資料和塊內執行緒通訊,但是由於它採用的是片上儲存器,其速度極快,因此也被用於優化程式效能。
每個SM 通過使用兩個特殊函式(Special Function Unit,SFU)單元進行超越函式和屬性插值函式(根據頂點屬性來對畫素進行插值)計算。SFU用來執行超越函式、插值以及其他特殊運算。SFU執行的指令大多數有16個時鐘週期的延遲,而一些由多個指令構成的複雜運算,如平方根或者指數運算則需要32甚至更多的時鐘週期。SFU中用於插值的部分擁有若干個32-bit浮點乘法單元,可以用來進行獨立於浮點處理單元(Float Processing Unit,FPU)的乘法運算。SFU實際上有兩個執行單元,每個執行單元為SM中8條流水線中的4條服務。向SFU發射的乘法指令也只需要4個時鐘週期。
在GT200中,每個SM還有一個雙精度單元,用於雙精度計算,但是其計算能力不到單精度的1/8。
控制流指令(CMP,比較指令)是由分支單元執行的。GPU沒有分支預測機制,因此在分支得到機會執行之前,它將被掛起,直到所有的分支路徑都執行完成,這會極大的降低效能。
在GT200架構中,每3個SM組成一個TPC(Thread Processing Cluster,執行緒處理器叢集),而在G80架構中,是兩個SM組成一個TPC,G80裡面有8個TPC,因為G80有128(2*8*8)個流處理器,而GT200中TPC增加到了10(3*10*8)個,其中,每個TPC內部還有一個紋理流水線。
大多數時候,稱呼streaming processor為流處理器,其實並不太正確,因為如果稱streaming processor為流處理器的話,自然是隱式的與CPU相對,但是CPU有獨立的一套輸入輸出機構,而streaming processor並沒有,不能在GPU程式設計中使用printf就是一個例證。將SM與CPU的核相比更加合適。和現在的CPU的核一樣,SM也擁有完整前端。
GT200和G80的每個SM包含8個流處理器。流處理器也有其他的名稱,如執行緒處理器,“核”等,而最新的Fermi架構中,給了它一個新的名稱:CUDA Core。 SP並不是獨立的處理器核,它有獨立的暫存器和程式計數器(PC),但沒有取指和排程單元來構成完整的前端(由SM提供)。因此,SP更加類似於當代的多執行緒CPU中的一條流水線。SM每發射一條指令,8個SP將各執行4遍。因此由32個執行緒組成的執行緒束(warp)是Tesla架構的最小執行單位。由於GPU中SP的頻率略高於SM中其他單元的兩倍,因此每兩個SP週期SP才能對片記憶體儲器進行一次訪問,所以一個warp中的32個執行緒又可以分為兩個half-warp,這也是為什麼取數會成為運算的瓶頸原因。Warp的大小對操作延遲和訪存延遲會產生影響,取Warp大小為32是NVIDIA綜合權衡的結果。
SM最主要的執行資源是8個32bit ALU和MAD(multiply-add units,乘加器)。它們能夠對符合IEEE標準的單精度浮點數(對應float型)和32-bit整數(對應int型,或者unsigned int型)進行運算。每次運算需要4個時鐘週期(SP週期,並非核心週期)。因為使用了四級流水線,因此在每個時鐘週期,ALU或MAD都能取出一個warp 的32個執行緒中的8個運算元,在隨後的3個時鐘週期內進行運算並寫回結果。
每個SM中,還有一個共享儲存器(Shared memory),共享儲存器用於通用平行計算時的共享資料和塊內執行緒通訊,但是由於它採用的是片上儲存器,其速度極快,因此也被用於優化程式效能。
每個SM 通過使用兩個特殊函式(Special Function Unit,SFU)單元進行超越函式和屬性插值函式(根據頂點屬性來對畫素進行插值)計算。SFU用來執行超越函式、插值以及其他特殊運算。SFU執行的指令大多數有16個時鐘週期的延遲,而一些由多個指令構成的複雜運算,如平方根或者指數運算則需要32甚至更多的時鐘週期。SFU中用於插值的部分擁有若干個32-bit浮點乘法單元,可以用來進行獨立於浮點處理單元(Float Processing Unit,FPU)的乘法運算。SFU實際上有兩個執行單元,每個執行單元為SM中8條流水線中的4條服務。向SFU發射的乘法指令也只需要4個時鐘週期。
在GT200中,每個SM還有一個雙精度單元,用於雙精度計算,但是其計算能力不到單精度的1/8。
控制流指令(CMP,比較指令)是由分支單元執行的。GPU沒有分支預測機制,因此在分支得到機會執行之前,它將被掛起,直到所有的分支路徑都執行完成,這會極大的降低效能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23057064/viewspace-629236/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GPU硬體結構GPU
- docker配置Nvidia環境,使用GPUDockerGPU
- [翻譯] NVIDIA HugeCTR,GPU 版本引數伺服器 --(10)--- 推理架構GPU伺服器架構
- VirGL與NVIDIA GPU一起執行 - 2024(QEMU)GPU
- Centos 7.8 中安裝Nvidia A100 GPU驅動CentOSGPU
- 如何在Ubuntu 18.04伺服器上安裝TensorFlow(Nvidia GPU)Ubuntu伺服器GPU
- Nvidia 悄悄推出更快、更低功耗的 Tesla GPU 加速器GPU
- 使用 NVIDIA Container Toolkit 和 Docker 配置 GPU 深度學習環境AIDockerGPU深度學習
- [原始碼解析] NVIDIA HugeCTR,GPU版本引數伺服器---(3)原始碼GPU伺服器
- [原始碼解析] NVIDIA HugeCTR,GPU版本引數伺服器--- (4)原始碼GPU伺服器
- [原始碼解析] NVIDIA HugeCTR,GPU 版本引數伺服器 --(1)原始碼GPU伺服器
- [原始碼解析] NVIDIA HugeCTR,GPU版本引數伺服器--- (2)原始碼GPU伺服器
- 在Ubuntu 20.04中安裝Nvidia V100 GPU驅動UbuntuGPU
- NVIDIA推出液冷GPU 助力實現可持續高效計算GPU
- GPU體系架構(二):GPU儲存體系GPU架構
- vGPU 7.X新特性解讀,NVIDIA為何力推虛擬GPU?GPU
- 在 NVIDIA DGX Cloud 上使用 H100 GPU 輕鬆訓練模型CloudGPU模型
- Nvidia顯示設定不可用,您當前未使用連線到NVIDIA GPU的顯示器解決方法GPU
- 華為麒麟980自研GPU曝光 欲聯手NVIDIA對抗高通GPU
- 滴滴雲即將推出基於NVIDIA Tesla A100 GPU的系列產品GPU
- wsl docker裡執行ollama並使用nvidia gpu的一些記錄DockerGPU
- Ollama本地部署Qwen2.5 14B(使用docker實現Nvidia GPU支援)DockerGPU
- [原始碼解析] NVIDIA HugeCTR,GPU版本引數伺服器--- (6) --- Distributed hash表原始碼GPU伺服器
- VMware ESXi安裝NVIDIA GPU顯示卡硬體驅動和配置vGPUGPU
- [原始碼解析] NVIDIA HugeCTR,GPU 版本引數伺服器 --(9)--- Local hash表原始碼GPU伺服器
- cuda程式設計與gpu平行計算(六):圖稀疏矩陣轉為CSR結構並傳入gpu程式設計GPU矩陣
- NVIDIA安培架構下MIG技術分析架構
- JPR:NVIDIA桌面GPU市佔率飆升至88% Intel份額已可忽略不計GPUIntel
- [原始碼解析] NVIDIA HugeCTR,GPU版本引數伺服器--- (5) 嵌入式hash表原始碼GPU伺服器
- [原始碼解析] NVIDIA HugeCTR,GPU 版本引數伺服器---(7) ---Distributed Hash之前向傳播原始碼GPU伺服器
- GPU 架構是圖形處理器GPU架構
- [原始碼解析] NVIDIA HugeCTR,GPU 版本引數伺服器---(8) ---Distributed Hash之後向傳播原始碼GPU伺服器
- JPR:2020年Q2全球GPU出貨量報告:NVIDIA獨顯份額已達80%GPU
- GPU 渲染管線簡單總結(網上資料總結)GPU
- NVIDIA Jetson平臺GPU/CPU/RAM等硬體資源利用率資料獲取及視覺化GPU視覺化
- NVIDIA Xavier CAN
- NVIDIA推Hopper架構 推動新一代加速計算架構
- 結構化與非結構化
- LightGCN實踐2——GPU記憶體爆炸終結篇GCGPU記憶體