決戰性能之巔!NV雙芯旗艦GTX590評測
GF100核心擁有很多種類的緩存,他們的用途不盡相同,其中一級緩存、共享緩存和紋理緩存位于SM內部,二級緩存則是獨立的一塊,與光柵單元及顯存控制器相連。
9.6 一級緩存與二級緩存
● 64KB可配置共享緩存與一級高速緩存
以往的GPU都是沒有一級緩存的,只有一級紋理緩存,因為這些緩存無法在通用計算中用于存儲計算數據,只能用于在紋理采樣時暫存紋理。而在GF100當中,NVIDIA首次引入真正的一級高速緩存,而且還可被動態的劃分為共享緩存。
在GF100 GPU中,每個SM除了擁有專用的紋理緩存外,還擁有64KB容量的片上緩存,這部分緩存可配置為16KB的一級緩存+48KB共享緩存,或者是48KB一級緩存+16KB共享緩存。這種劃分方式完全是動態執行的,一個時鐘周期之后可自動根據任務需要即時切換而不需要程序主動干預。
一級緩存與共享緩存是互補的,共享緩存能夠為明確界定存取數據的算法提升存取速度,而一級緩存則能夠為一些不規則的算法提升存儲器存取速度。在這些不規則算法中,事先并不知道數據地址。
對于圖形渲染來說,重復或者固定的數據比較多,因此一般是劃分48KB為共享緩存,當然剩下的16KB一級緩存也不是完全沒用,它可以充當寄存器溢出的緩沖區,讓寄存器能夠實現不俗的性能提升。
而在并行計算之中,一級緩存與共享緩存同樣重要,它們可以讓同一個線程塊中的線程能夠互相協作,從而促進了片上數據廣泛的重復利用并減少了片外的通信量。共享存儲器是使許多高性能CUDA應用程序成為可能的重要促成因素。
● 共享式二級高速緩存
GF100擁有一個768KB容量統一的二級高速緩存,該緩存可以為所有載入、存儲以及紋理請求提供服務。二級緩存可在整個GPU中提供高效、高速的數據共享。物理效果、光線追蹤以及稀疏數據結構等事先不知道數據地址的算法在硬件高速緩存上的運行優勢尤為明顯。后期處理過濾器需要多個SM才能讀取相同的數據,該過濾器與存儲器之間的距離更短,從而提升了帶寬效率。
統一的共享式緩存比單獨的緩存效率更高。在獨享式緩存設計中,即使同一個緩存被多個指令預訂,它也無法使用其它緩存中未貼圖的部分。高速緩存的利用率將遠低于它的理論帶寬。GF100的統一共享式二級高速緩存可在不同請求之間動態地平衡負載,從而充分地利用緩存。二級高速緩存取代了之前GPU中的二級紋理緩存、ROP緩存以及片上FIFO。
GF100的緩存架構讓各流水線之間可以高效地通信,減少了顯存讀寫操作
統一的高速緩存還能夠確保存儲器按照程序的順序執行存取指令。當讀、寫路徑分離(例如一個只讀紋理路徑以及一個只寫ROP路徑)時,可能會出現先寫后讀的危險。一個統一的讀/寫路徑能夠確保程序的正確運行,同時也是讓NVIDIA GPU能夠支持通用C/C++程序的重要因素。
與只讀的GT200二級緩存相比,GF100的二級高速緩存既能讀又能寫,
而且是完全一致的。NVIDIA采用了一種優先算法來清除二級緩存中的數據,這種算法包含了各種檢查,可幫助確保所需的數據能夠駐留在高速緩存當中。
關注我們



