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