從CPU架構和技術的演變看GPU未來發展
再來看看GPU二級緩存部分的設計,這一方面就與CPU非常相似了。
★ Cypress的二級緩存:綁定顯存控制器的分離式設計
以往的GPU,包括NVIDIA上代的GT200以及AMD最新的Cypress核心,二級緩存都是與顯存控制器綁定在一起的,其作用就是縮短GPU到顯存的響應時間。由于顯存控制器一般都是64bit一組,為多組模塊化設計,因此二級緩存也被劃分為N個獨立的模塊,而不是統一的整體。
Cypress:L2綁定Memory Controller
Cypress擁有4個64bit顯存控制器,每個顯存控制器綁定128KB容量的二級緩存,總計512KB,這個容量要比NVIDIA上代的GT200大一倍。
★ GF100的二級緩存:統一的大容量高速緩存
而GF100擁有一個768KB容量統一的二級高速緩存,該緩存可以為所有載入、存儲以及紋理請求提供服務。二級緩存可在整個GPU中提供高效、高速的數據共享。物理效果、光線追蹤以及稀疏數據結構等事先不知道數據地址的算法在硬件高速緩存上的運行優勢尤為明顯。后期處理過濾器需要多個SM才能讀取相同的數據,該過濾器與存儲器之間的距離更短,從而提升了帶寬效率。
統一的共享式緩存比單獨的緩存效率更高。在獨享式緩存設計中,即使同一個緩存被多個指令預訂,它也無法使用其它緩存中未貼圖的部分。高速緩存的利用率將遠低于它的理論帶寬。GF100的統一共享式二級高速緩存可在不同請求之間動態地平衡負載,從而充分地利用緩存。二級高速緩存取代了之前GPU中的二級紋理緩存、ROP緩存以及片上FIFO。
GF100的緩存架構讓各流水線之間可以高效地通信,減少了顯存讀寫操作
統一的高速緩存還能夠確保存儲器按照程序的順序執行存取指令。當讀、寫路徑分離(例如一個只讀紋理路徑以及一個只寫ROP路徑)時,可能會出現先寫后讀的危險。一個統一的讀/寫路徑能夠確保程序的正確運行,同時也是讓NVIDIA GPU能夠支持通用C/C++程序的重要因素。
與只讀的GT200二級緩存相比,GF100的二級高速緩存既能讀又能寫,
而且是完全一致的。NVIDIA采用了一種優先算法來清除二級緩存中的數據,這種算法包含了各種檢查,可幫助確保所需的數據能夠駐留在高速緩存當中。
★ GF100共享式二級緩存堪比酷睿2:
可以看出,ATI的一二級緩存都是完全分散的,為了協調一二級緩存之間的數據交換,ATI特意設計了一個可全局共享的64KB數據緩存。
而GF100的一級緩存可以根據需求動態的為共享緩存或者一級緩存分配較大的容量,從而加速數據處理。二級緩存更是大容量一體式設計,當線程組在一級緩存中找不到數據時,可以直接從“海量”的二級緩存中索取,縮短了數據請求與定址時間,消除了瓶頸。
至于獨享式緩存與共享式緩存的效率與性能,無需多言,大家可參照CPU的發展即可略知一二。
關注我們



