字节面试问到CPU的多级缓存架构,诸佬们怎么回答?

前言:大家好,我是小威,24届毕业生,上周在面试字节中,问到了一个关于CPU多级缓存架构的问题,当时答得并不是很好,之后查阅了资料,对此进行了复盘总结。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,在一家满意的公司实习👏👏

🎁如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

以下正文开始

在这里插入图片描述

计算机由很多部分组成,每个部分的性能和访问数据的速度也是有差别的。比如在计算机中,CPU的执行速度大于内存的执行速度和磁盘等IO设备的执行速度,内存的执行速度快于磁盘等IO设备的执行速度。

为了缩小CPU,内存,磁盘等IO设备访问数据速度的差距,CPU增加了缓存。目前很多CPU内部不仅有寄存器来存储数据,还有L1,L2,L3三级缓存。有了这些缓存的部件,CPU访问数据的效率得到了提升。下面对CPU的三级缓存进行简单介绍:
在这里插入图片描述

L1缓存是最接近CPU的,L1缓存每个核上有两个缓存,一个用于存储数据(Data Cache),一个用于存储指令(Instruction Cache)。L1缓存的存储速度最快,但是存储容量最小。

L2缓存的存储容量比L1缓存的存储容量大,存储速度比L1小。L2缓存的容量会影响到CPU的性能,因此一般L2的缓存会比较大,L2缓存是由CPU的物理核心独占的,逻辑核心共享的。

L3缓存的存储速度最小,但存储容量最大,L3缓存是由所有CPU物理核心共享的。

因此,在存储速度上:寄存器>L1缓存>L2缓存>L3缓存
在存储容量上:寄存器<L1缓存<L2缓存<L3缓存
级别越小的缓存,越接近CPU,其存储速度越大,存储容量越小。

所有CPU都能访问计算机中的主内存,当然,主内存的容量比CPU缓存的容量大,CPU与内存之间的数据通信是通过总线(地址总线,数据总线,控制总线)进行的。

CPU在读取数据时,会先从缓存中读取数据,再从内存中读取数据。

如果CPU需要读取寄存器中的数据,那么会直接读取。

如果CPU需要读取L1缓存中的数据,首先会将缓存行锁住,再读取缓存中的数据,然后解锁,意味着CPU从L1缓存中读取数据的操作结束了。

如果CPU需要读取L2缓存中的数据,那么会先从L1缓存中读取数据,如果要读取的数据在L1缓存中不存在,就会将L2缓存加锁,加锁成功后,将L2缓存中的数据复制到L1缓存上,CPU从L1缓存中读取数据完成后,再对L2缓存进行解锁操作,意味着从L2缓存中读取数据的操作结束。

如果CPU需要读取L3缓存中的数据,会先从L1缓存中读取数据,如果读取的数据不存在,再到L2缓存中读取数据,如果在L2缓存中还不存在,则会到L3缓存中读取数据。与L1,L2缓存一样,首先会将L3缓存锁住,将L3缓存复制到L2缓存,在从L2缓存复制到L1缓存上,然后CPU从L1缓存中读取数据后,会对L3进行解锁操作,此时表示从L3缓存中读取数据操作结束。

在这里插入图片描述

而CPU从内存中读取数据的过程非常复杂。当CPU从内存中读取数据时,需要先通知内存控制器占用计算机的总线带宽,然后通知内存加锁,并发起读取内存数据的请求,等待内存回应数据。内存回应的数据首先保存到L3缓存,再从L3缓存复制到L2缓存,然后从L2缓存复制到L1缓存中,最后由L1缓存到CPU。在完成整个过程后,解除总线锁定。从主内存读取数据的过程结束。

虽然CPU的多级缓存架构缓解了CPU与主内存中的速度差距,但是会引起缓存一致性问题,对于缓存一致性问题,我们下篇文章继续聊。
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论🍻
希望能和诸佬们一起努力,今后进入到心仪的公司
再次感谢各位小伙伴儿们的支持🤞

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小威要向诸佬学习呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值