近日,有網(wǎng)友問RT,cpu有核心,一級,二級,甚至三級緩存。而GPU沒有像CPU那樣的二級緩存?關(guān)于這個問題,小編收集了一些有關(guān)專業(yè)的網(wǎng)友的回答,帶大家看看GPU究竟有沒有二級緩存?
網(wǎng)友1
首先明確一下是否有二級緩存這個問題,我的確記不住什么時候GPU開始帶二級緩存,至少英偉達的GPU芯片發(fā)展到Kepler這個級別的時候,都已經(jīng)帶2級緩存。
我猜樓主是對GPU為什么以前沒有二級緩存有疑惑吧,只是簡單地提一下。
首先明確的是,CPU對訪存時延的要求很高,所以用了大緩存+亂序執(zhí)行的方式容忍訪存的高延時。但是緩存在什么情況下才能用得上呢?當(dāng)然是時間局部性/空間局部性比較強的時候緩存才能發(fā)揮效果,減少對內(nèi)存的直接訪問。
然而,常規(guī)的GPU應(yīng)用大多是流處理,時間局部性比較低,這是其一。第二是GPU是通過多個warps(32個threads一組)并發(fā)的方式來容忍訪存時延的(也就是有多個warps,如果warpA需要訪存,那么就看warpB,C,D,E....是否已經(jīng)得到數(shù)據(jù),可以切換到其他的warp進行執(zhí)行)。所以在一定程度上,GPU不需要特別大的cache。另外,在部分應(yīng)用中,程序員可以將頻繁訪問的數(shù)據(jù)放在sharedmemory上,從而降低對顯存的訪問。
但是GPU從原本規(guī)則的圖形計算發(fā)展到現(xiàn)在的通用計算,一些非常規(guī)應(yīng)用表現(xiàn)出的空間局部性或者時間局部性的特點,這可能是加L2緩存的原因。
另外要說明的是,顯卡不是只有流處理器和紋理單元,GPU的存儲體系有點倒三角的味道,片上有大量的寄存器,還有可劃分的L1緩存和sharedmemory。
網(wǎng)友2
現(xiàn)在GPU一般是有二級緩存的。
下圖為NVIDIA的keplerGK110顯卡框架圖:
而NVIDIAKepler顯卡架構(gòu)的內(nèi)存層次結(jié)構(gòu)如下圖(其二級緩存大小為1536k):
網(wǎng)友3
這是AMD的GCN
NVIDIA從很久以前就有了
(審核編輯: 小丸子1)
分享