開普勒微架構

開普勒是英偉達在2012年4月釋出的圖形處理器微架構的代號，是費米架構的繼承者。Kepler是英偉達第一款專注於節能的微架構。大多數GeForce 600 系列、GeForce 700 系列和部分GeForce 800 系列顯示卡基於Kepler架構，均使用28納米制程。Kepler架構也應用於Tegra K1 SOC上的圖形處理器GK20A以及NVIDIA Quadro Kxxxx系列顯示卡、Quadro NVS 510顯示卡和NVIDIA Tesla計算卡。Kepler的後繼者為麥斯維爾，並且和Maxwell架構一併用於GeForce 700 系列和GeForce 800 系列顯示卡。Kepler架構的命名來自17世紀科學革命使其的著名德國數學家約翰內斯·開普勒。概覽.在Kepler的前一代架構Fermi中，英偉達主要專注於提升計算與曲面細分的效能。然而在Kepler架構中，英偉達轉向了提升效率、可程式設計性與效能。 效率的提升來自採用了統一的GPU時鐘、簡化的靜態指令排程和更加最佳化的每瓦效能。 儘管廢棄過去GPU中採用的著色器時鐘需要額外的核心來達到高效能，但透過這麼做依然得以使效率提升。這不僅是因為新的核心更加節能，同時也是因為統一GPU時鐘使得這部分的功耗降低了50%。可程式設計性是透過Kepler架構的Hyper-Q技術、動態並行和多個新的Compute Capabilities 3.x功能實現的。透過這些得以在GK系列GPU中實現GPU的高利用率和簡化的程式碼管理，從而使得針對Kepler系列GPU的程式設計更加靈活。在效能上，額外的執行資源以及Kepler架構支援的6 GHz記憶體速度使得Kepler架構的效能較過去的英偉達GPU顯著增強。功能.GK系列GPU包含了來自老的Fermi架構的和新的Kepler架構的功能。但Kepler架構的GPU包含了以下額外的基本功能：下一代流處理器.The Kepler architecture employs a new Streaming Multiprocessor Architecture called "SMX".Kepler架構使用了新的流處理器架構“SMX”。SMX因為採用了統一的GPU時鐘而成為了Kepler架構節能的主要原因。 儘管採用了統一時鐘的SMX表現出的效果為多個低主頻的Kepler的CUDA核比多個高主頻的Fermi的CUDA核的功耗低90%，Kepler架構需要更多的處理單元來在每個時鐘執行一組wrap。將每組CUDA陣列的數量從16個翻倍至32個解決了wrap的執行問題。同時SMX前端也將wrap的排程器和分配器翻倍，而暫存器堆也被翻倍到64K條來滿足額外的執行單元的需要。面對芯片面積暴增的風險，SMX的PolyMorph Engine並沒有也隨其他部分翻倍，而是升級到了2.0版本使得它能夠在更少的週期內地繪製多邊形。 專用的雙精度CUDA核心被用來彌補Kepler CUDA核心為了節省芯片面積而放棄的雙精度計算能力。英偉達在SMX上做的改進帶來了GPU在效能和效率上的提升。GK110上的48KB材質快取可被用於計算負載。在計算負載中，材質快取變為了一個只讀資料快取，專供非對齊的記憶體訪問負載使用。同時，錯誤糾正功能也使得需要ECC的負載能更加安全地執行。在GK110中每個執行緒的暫存器數也翻倍到了255個。簡化指令排程器.額外的芯片面積是透過將複雜的硬體排程器簡化為軟體排程器帶來的。透過軟體排程，wraps的排程被放在了編譯階段。同時因為簡化後GPU的計算流水線的延遲固定，英偉達線上程級並行之外也實現了指令級並行。由於指令是被靜態排程的，透過採用固定延遲的指令可以實現一致性，且靜態排程的編譯器降低了一層複雜度。GPU Boost.GPU Boost是一個基本類似於CPU睿頻的新技術。GPU總是能以一個最低的頻率執行，稱之為“基礎頻率”。這個頻率是透過測試在最高負載下也能保持在TDP以內的方法得出的。 然而當負載較低時，將存在一定空間來提升頻率而不超過TDP。這種情況下，GPU Boost將會一級級逐漸提高GPU頻率，直到GPU達到了一個預設的功耗。 透過這種方法，GPU將會動態提高或降低自己的頻率，從而使得它能夠在TDP規範哪提供最大的速度。預設功耗和每一級提升的頻率均可透過第三方工具調整，並且提供了給基於Kepler架構的GPU超頻的方法。Microsoft Direct3D支援.基於Fermi和Kepler架構GPU的GeForce 600系列支援Direct3D 11.0規範。英偉達原本聲稱Kepler架構完整支援DirectX 11.1，包括Direct3D 11.1。然而以下“Modern UI” Direct3D 11.1功能並不被支援：根據微軟的定義，Direct3D feature level 11_1必須完備，否則無法執行Direct3D 11.1Kepler架構內建的Direct3D功能和採用Fermi架構的GeForce 400系列顯示卡一致下一代Microsoft Direct3D支援.基於Kepler架構的GeForce 600/700系列顯示卡支援Direct3D 12 feature level 11_0。TXAA支援.TXAA是英偉達設計的新的抗鋸齒技術，需要遊戲引擎直接實現在其中，且僅限於Kepler系列GPU。TXAA基於多重取樣抗鋸齒和定製的濾鏡。TXAA被用來解決一個遊戲中的關鍵問題：閃爍或temporal aliasing。TXAA透過柔化動態場景來確保遊戲內的場景不包含任何的鋸齒和閃爍。Shuffle指令.在底層，GK110擁有額外的指令和操作來進一步提升效能。新的shuffle指令允許在一個wrap內的執行緒在不訪問記憶體的情況下共享資料，使得整個過程比原來的load/share/store方式更加迅速。原子操作也被重新設計使得原子操作的速度得以提升。同時還添加了一些原本只針對單精度浮點的操作的雙精度支援。Hyper-Q.Hyper-Q將GK110的硬體工作佇列從原本的唯一一個提升到32個。在Fermi架構中，有時唯一的工作佇列被佔據時工作量其實並不夠讓每個流處理器都有工作。而擁有32個工作佇列，GK110在很多情形下可以使得原本空閒的SMX工作起來從而達到更高的利用率。Hyper-Q的這種特質還因為它能夠被更輕易地對映到MPI——一個常見的在高效能計算中使用的通訊介面——而被進一步增強。傳統的為多個處理器系統設計的基於MPI的演算法所面臨的錯誤依賴問題透過Hyper-Q得到了解決。透過增加MPI工作的數量，程式設計師將可以在不修改程式碼的情況下應用Hyper-Q來提升演算法效能。動態並行.動態並行有能力分發其他kernel。在Fermi架構中，只有CPU可以分發kernel，因此增加了與CPU通訊的開銷。而透過給kernel分配子kernel的能力，GK110可以既可以減少與CPU的通訊開銷，還可以讓CPU空下來去執行其他任務。Grid管理單元.為了能夠使用動態並行，GPU需要一個新的grid管理系統和分發控制系統。新的Grid管理單元管理grid的執行並決定它們執行的優先順序。GMU可以暫停新的grid的分發、將grid放入佇列和終止grid直到它們準備好被執行。這樣，GMU將能夠提供支援執行如動態並行這樣強大的執行時的靈活性。在Kepler架構中，CUDA Work Distributor記憶著將要被分發的grid。新的CWD有能力分發32個活動的grid，較Fermi架構的CWD翻了一倍。Kepler架構的CWD與GMU透過一個雙向連線進行互動，使得GMU能夠暫停分發新的grid、待機和甚至終止grid直到CWD需要。GMU同時也有一個與SMX單元的單向連線使得用動態並行來新增新工作的grid能夠將新工作傳回給GMU進行排優先順序和分發。如果新增新工作的kernel暫停了，GMU將會保持其休眠直到它依賴的工作完成。NVIDIA GPUDirect.NVIDIA GPUDirect是一項允許在同一臺電腦或在網路中的多臺伺服器的GPU可以在不需訪問CPU和系統記憶體的情況下交換資料的技術。GPUDirect的RDMA功能能夠使第三方裝置如SSD、NIC和IB介面卡等直接訪問同一臺機器上多個GPU的記憶體，從而顯著降低經由MPI讀寫GPU記憶體的延遲。 這項技術同時減輕了對系統記憶體頻寬的需求，並且使得GPU的DMA能夠空閒出來來執行其他CUDA任務。基於Kepler架構的GK110還支援包括P2P和GPUDirect for Video等GPUDirect功能。影片解碼/編碼.NVENC.NVENC時英偉達的高效率固定編碼引擎，能夠解碼、預處理和編碼H.264內容。NVENC的輸入編碼僅限於H.264。然而彌補這塊短板的是NVENC可以編碼4096x4096的內容。如同Intel的Quick Sync技術，NVENC的使用需要用到專有的API。然而英偉達並沒有計劃提供在CUDA內呼叫NVENC的方法。效能.Kepler架構的GPU的理論單精度浮點運算能力以GFLOPS為單位大約為2 (操作每FMA指令每CUDA核心每指令週期) × CUDA核心數 × 核心速度。值得注意的是和上代的Fermi架構一樣，Kepler架構不能像Tesla架構一樣透過雙發射MAD和MUL指令來提升處理效能。基於Kepler架構的GK110/210 GPU的理論雙精度浮點效能大約為其單精度浮點效能的1/3。然而這個效能指標僅在專業級的NVIDIA Quadro、NVIDIA Tesla顯示卡和高階的GeForce TITAN顯示卡上提供。面向普通消費者的GeForce顯示卡驅動限制了雙精度浮點效能到單精度浮點效能的1/24。 GK10x的雙精度浮點效能也被類似地限制到了單精度浮點效能的1/24。