游戏百科

为什么CPU有三级缓存,而GPU只有两级缓存?

为什么CPU设计了三级缓存,GPU只设计两级缓存?按照我的理解,CPU缓存的终极目的是降低指令延迟,GPU也是为了提高带

为什么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的缓存设计就还得各走各的路。就像世界上既要有短跑冠军(快),也要有马拉松选手(耐力),还得有举重运动员(力量),各司其职才能让整个计算世界转起来。对此大家是怎么看的,欢迎关注我“创业者李孟”和我一起交流!