是否可以简单地把 CPU 缓存理解为 DDR 内存?

是否可以简单地把 CPU 缓存理解为 DDR10 内存?
如果能这样简单地理解,那么为什么内存都是GB级别,而缓存才是KB,MB级别?这么一点点够用吗?
如果不能这样简单地理解,那么CPU缓存的用途是什么?

作者:Corning
链接:https://www.zhihu.com/question/330184137/answer/729043890
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

不可以这样理解。对CPU来说,缓存(Cache)是一个相对更近,更方便存取数据的结构。我们可以用书桌和书架来进行类比。假设你有很多书,一开始,它们都放在书架上,你一般都在书桌上学习,而书架与书桌有一定距离。有一天你突然想学习关于缓存的知识,因此,你就从书架上找了几本关于缓存的书开始阅读。单核的你同一时刻只能读一本书,但好在你已经把相关书籍都放在了书桌上,当需要看某一本书时,你只需伸手就可以拿到,而不用再站起来,走到书架边上去找。这时的你就相当于CPU,书就是数据,书桌就相当于是缓存,存放着你将要可能看的书,而书架就可以看作是内存。进一步,其实你今天还有两个课程报告没写完,为此,你还要从书架上把这两个课程相关的书籍找出来,放到书桌上,以备参考。但是书桌的大小是有限的,而你拿出来的书太多了,放不下,怎么办?机智的你开始思考这样一个问题:其实每本书并不都是有用的,即使是有用的书,也不是书里面所有部分都是有用的。于是,你首先把大概率不可能用到的书放回到了书架上。对于可能用到的书,你也想了一个办法,即把书撕开,分成许多子块,比如,你把所有书以章节为单位撕成了许多块,那么,你就可以只把你现在会用到的部份放到书桌上,而过一段时间才会用到的部份放到了书桌附近的地上,当你用到时直接弯腰从地上取就好。虽然这比直接从桌子上拿书稍微麻烦一些,但地上空间显然比书桌更大,这无疑扩展了你放书的空间。这时书桌与其附近的地面就相当于是一级二级缓存。此时的CPU(你)也可以处理多进程任务了(两个课程报告,学习缓存知识)。再进一步,你通过把书暴力拆开的方式,很好地解决了方便取用的问题,但这样的方式却很容易把书弄乱,怎么办?为此,你首先在每一个书块上写上它们的书名,同时在放书时,你又把相同起始章节的书放在了一起,比如你把所有第一章的书块堆成一摞。这其实就是一种多路组相联的缓存结构,其中,书名可以看作整本书的起始地址,而章节名可以看作是该章节的起始地址。上述过程类比了数据读取的过程,实际写的过程还要复杂一些,而且实际数据从内存到二级缓存、二级缓存到一级缓存的过程应该是复制,即数据存到上级存储单元的过程就是数据备份到上级存储单元的过程。总体来说,缓存比内存快,不仅仅是结构问题(内存是DRAM,缓存是SRAM),还因为它本身较小,而且距离数据通路近。

以下是原答案首先,Cache不用做太大也可以有很好的性能提升。一般来说,数据(程序)的存取具有时间局部性和空间局部性。时间局部性就是说,在一定时间内,一块数据被操作以后,大概率会继续被重复操作;空间局部性是说,一块数据被操作以后,它相邻的数据也大概率会被操作。根据这个理论,Cache也不必做的很大,只需能够存储被操作数据及其相邻的数据就可以。当然,Cache越大,命中率越高。其次,Cache做大不容易。Cache的作用主要是提升cpu的数据存取速度,它与直接从内存读取数据,速度上有数量级的提升。而Cache是很占空间的一种结构,要是造的太大,距离数据通路就会变远,速度就上不来了。所以工艺不提升,Cache很难做得很大。其实,还存在一些空间和时间局部性很弱的数据,比如图数据,Cache对这类数据存取的性能提升有限,也就不在Cache设计的考虑范围了。终上所述,就造成了cache现在这样的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值