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

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

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

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,在一家满意的公司实习👏👏
🎁如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

以下正文开始

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

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

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

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

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

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

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

因此,在存储速度上:寄存器>L1缓存>L2缓存>L3缓存
在存储容量上:寄存器

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

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

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

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

Original: https://blog.csdn.net/qq_53847859/article/details/127912638
Author: 小威要向诸佬学习呀
Title: 字节面试问到CPU的多级缓存架构,诸佬们怎么回答?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/793572/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Pipenv 中安装 Django

    安装 Pipenv ​​Pipenv​​ 是一个生产流的工具,旨在将最好的打包世界( bundler, composer, npm, cargo, yarn, etc. )带入 P…

    Python 2023年5月25日
    0101
  • Pytest框架运行方式(主函数、命令行、配置、执行顺序)

    一、pytest单元测试框架 二、单元测试框架和自动化测试框架有什么关系? 三、pytest简介 四、使用pytest,默认的测试用例的规则以及基础应用 五、pytest测试用例的…

    Python 2023年9月13日
    073
  • .NET静态代码织入——肉夹馍(Rougamo) 发布1.2.0

    在 1.0.0 版本中,肉夹馍提供了最基础的AOP功能,可以进行日志记录和APM埋点。在 1.1.0 版本中新增了对更加实用的AOP操作的支持,可以进行异常处理和修改返回值。本次的…

    Python 2023年10月21日
    062
  • 《Tango With Django2》Chapter5笔记 — Model & DB

    Django用对象关系映射器(Object Relational Mapper, ORM)¹来访问存储在数据库中的数据 本质上,存储在数据库表中的数据是通过Django模型封装的。…

    Python 2023年8月6日
    095
  • python 一文教你入门洗衣机行业,啊呸,是入门面向对象

    深入理解面向对象 面向对象就是将编程当作一个事物,它对外界来说是直接可以使用的,而不需要在意内部的构造情况。这里的编程是指为事物创建一列动作。 为了让你更容易理解,以洗衣店为例。 …

    Python 2023年5月24日
    0158
  • Python科学计算和数据分析库简介

    数据表示、数据清理、数据统计、数据可视化等算法库是科学计算、数据分析以及人工智能的基础。 python拥有非常丰富数据科学相关的库,被广泛用于工程领域、数据分析领域以及人工智能领域…

    Python 2023年8月28日
    089
  • pytest-进阶

    pytest-进阶 一、什么是自动化测试 框架? 二、自动化前置条件 三、fixture装饰器实现部分用例的前后置 * 1.它存在的意义? 2.声明方式: 3.五个参数解析 4.五…

    Python 2023年9月14日
    059
  • 【python大神之路】scrapy的中间件使用流程

    首先我们要知道scrapy的基本数据流向 scrapy 数据的基本流向 那个十字框架图我就不画了,数据处理是这样的:spider -> 引擎-> 调度器 -> r…

    Python 2023年10月4日
    059
  • 一、Pytest简介和插件库

    0、web自动化和接口自动化的框架见如下:pytest单元测试框架:只是自动化测试框架中的重要组成部分pom设计模式:只是自动化测试框架中的组成部分之一数据驱动关键字驱动全局配置文…

    Python 2023年9月13日
    055
  • 用python完成多项式拟合曲线

    用python完成多项式拟合需要用到的库有 numpy和 matplotlib 曲线拟合的函数在numpy库中: polyfit(x,y,n) x 为源数据点对应的横坐标,可为行向…

    Python 2023年8月2日
    0106
  • 生成对抗网络GAN和DCGAN的理解(pytorch+李宏毅老师作业6)

    作者在进行GAN学习中遇到的问题汇总到下方,并进行解读讲解,下面提到的题目是李宏毅老师机器学习课程的作业6(GAN) 一.GAN 二.DCGAN 三.示例代码解读 成功下载并解压,…

    Python 2023年10月26日
    072
  • 浅谈深度学习中的概率

    摘要:本次就和大家聊一聊深度学习中的概率。 为什么会用到概率呢?因为在深度学习中经常会需要处理随机的数据,或者包含随机性的任务,随机性也来自非常多的方面,所以在存在不确定性的情况下…

    Python 2023年10月29日
    067
  • scrapy+mysql不报错_Scrapy+twisted 异步MySQL批量提交不报错

    Scrapy+twisted 异步MySQL批量提交不报错 在正常情况下,默认1000个item执行一次插入,如果爬虫爬取结束,就将剩下的都插入 每1000个的插入如果出错,会报出…

    Python 2023年10月6日
    067
  • python学习之 pygame模块

    以第一篇文章为主干,其他文章拓展和深入进行学习参考文章:用Python和Pygame写游戏-从入门到精通python—-pygame图形接口(太全了,收了)Python…

    Python 2023年9月22日
    0243
  • matplotlib之pyplot模块——绘制对数线图(loglog()、semilogx()、semilogy())

    当前有效 matplotlib版本为: 3.4.1。 对数图 常规图表坐标轴采用算术尺度(线形尺度)。对数图即坐标轴采用对数尺度的图表。对数图分为双对数图和半对数图,双对数图是两个…

    Python 2023年9月2日
    066
  • 第七章 使用 matplotlib 绘制堆叠条形图

    系列文章目录 第一章 使用 matplotlib 绘制折线图第二章 使用 matplotlib 绘制条形图第三章 使用 matplotlib 绘制直方图第四章 使用 matplot…

    Python 2023年9月4日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球