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



