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