為什么CPU設計了三級緩存,GPU只設計兩級緩存?按照我的理解,CPU緩存的終極目的是降低指令延遲,GPU也是為了提高帶寬,但是順著這個思路卻想不到問題的答案
這可不是工程師拍腦袋決定的,而是因為它們倆的"工作性格"完全不一樣。打個比方,CPU就像醫院里的急診醫生,講究"快準狠",必須第一時間處理緊急情況;而GPU則像食堂阿姨打飯,追求的是"批量快",管你多少人,唰唰唰就把飯打出來了。
![]()
CPU:三級緩存就像貼身秘書+文件柜+檔案館
CPU的三級緩存,就像是給它配了三套"數據倉庫"。最里面的L1緩存最小(就幾萬個字節),但速度快得離譜,相當于老板的"貼身秘書",手里永遠拿著最常用的文件,隨要隨給,一秒都不帶耽誤的。中間的L2緩存就像"部門文件柜",能裝更多東西(幾百萬字節),雖然找起來慢一點,但常用的資料都在這兒。最外面的L3緩存就是公司的"檔案館"了,能存幾十億字節的數據,全公司(所有CPU核心)都能用,就是找東西得等一會兒——不過比起跑到公司外面(內存或硬盤)去調資料,還是快太多了。
![]()
為啥CPU這么"矯情",非要三級緩存伺候?因為它干的都是精細活。比如你用Excel算工資,或者玩需要復雜操作的游戲時,CPU要不斷判斷"如果這樣就執行A,否則執行B"。這種時候,數據能不能馬上拿到手,直接決定了反應速度。就像老司機開車,看到紅燈得立刻踩剎車,晚0.1秒都可能出事。三級緩存就是保證CPU能"秒反應"的關鍵,把常用數據層層"囤"起來,90%以上的需求都不用等。
![]()
GPU:兩級緩存夠用,因為它靠"人海戰術"
GPU就完全是另一個路數了。它的L1緩存是每個計算單元(類似小CPU)自己用的"小抽屜",L2緩存是大家共用的"儲藏室",但它偏偏不搞L3。這不是因為GPU"窮",而是因為它根本不需要——GPU的秘訣是"人多力量大"。
![]()
想象一下,當你用顯卡打《賽博朋克2077》時,屏幕上每秒要渲染幾十張復雜畫面,每張畫面有幾百萬個像素點需要計算。這時候GPU會同時開工幾千上萬個"小工人"(線程),每個工人干一點點簡單重復的活。就算某個工人需要的數據暫時拿不到(比如要從顯存里調),其他幾千個工人照樣能接著干,等數據來了再回頭處理就行。這種情況下,建個超大的L3緩存反而浪費——就像食堂阿姨不會給每個打飯窗口都配個倉庫,大家共用一個大儲藏室就夠了,反正一次能煮幾百人的飯。
工作方式不同,緩存設計當然不一樣
![]()
最根本的區別在于CPU和GPU的"工作習慣"。CPU喜歡"深入思考",一次只干一件復雜的事,但要求特別快;GPU則擅長"集體作業",一次干幾萬件簡單的事,追求總量大。
比如算數學題,CPU算1+2+3+...+10000,會老老實實按順序一個一個加;GPU則會把這道題拆成10000道"1+2""3+4"這樣的小題,分給10000個小工人同時算,最后把結果加起來。這時候,數據是不是放在第三級緩存根本不重要,只要工人夠多,哪怕數據暫時不夠,大家輪著等一會兒,總體速度照樣飛快。
![]()
再舉個更形象的例子:CPU像你點外賣時遇到的"現做現賣"的小餐館,雖然出餐慢,但你點個特別的菜也能做;GPU則像學校食堂,菜都是大鍋提前做好的,雖然選擇少,但幾百人來了也能幾分鐘內全打上飯。餐館需要冰箱(緩存)分三層放食材(常用調料放操作臺上=L1,備用菜放冷藏柜=L2,庫存放倉庫=L3),而食堂只要有幾個大冰柜(L2)就夠用了——反正一次要炒幾百份菜,直接從冰柜里整箱搬出來就行。
![]()
未來他們會"學"對方嗎?
現在CPU和GPU也開始互相"取經"了。蘋果M系列芯片搞了個"系統級緩存",讓CPU和GPU共用一個超大L3緩存,誰需要就給誰用;AMD則把緩存像疊高樓一樣堆起來,讓CPU也能用上超大緩存。說不定以后顯卡也會學著加個L3緩存?
![]()
不過不管怎么變,只要我們既需要電腦"反應快如閃電"(比如玩游戲操作),又需要它"處理多如牛毛"(比如渲染視頻),CPU和GPU的緩存設計就還得各走各的路。就像世界上既要有短跑冠軍(快),也要有馬拉松選手(耐力),還得有舉重運動員(力量),各司其職才能讓整個計算世界轉起來。對此大家是怎么看的,歡迎關注我“創業者李孟”和我一起交流!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.