问题

Cpu访问cache未命中,是否还需要访问一次cache? ?

回答
CPU 访问缓存未命中后,是否还需要再次访问缓存?这是一个非常关键且值得深入探讨的问题,它直接关系到计算机系统的性能。我的答案是:不需要,CPU 在缓存未命中的情况下,会跳过对该缓存的访问,直接去下一级存储器查找。

为了把这个问题讲清楚,我们需要从 CPU 访问数据的基本流程入手,并详细解释缓存的作用以及未命中后会发生什么。

CPU 如何访问数据?

想象一下,CPU 就像一位非常勤奋的学生,需要完成大量的计算任务。而这些任务需要的数据,就像是学生学习时需要的书籍、笔记和参考资料。为了让学生能够快速地获取这些资料,我们通常会在他的书桌上放一些最常用的、最新鲜的资料,这就是我们常说的“缓存”。

CPU 访问数据的流程大致是这样的:

1. CPU 需要读取(或写入)某个数据时,它首先会查看最近的、速度最快的存储器,也就是“缓存”(Cache)。 缓存通常是 SRAM(静态随机存取存储器)构成的,速度比主内存(DRAM)快很多倍。
2. CPU 查找缓存中是否有它需要的数据。 这个过程非常迅速,因为缓存容量相对较小,查找结构也比较优化。
3. 如果数据在缓存中找到了(我们称之为“缓存命中”,Cache Hit),那么 CPU 就可以立即从缓存中读取数据,效率非常高。就像学生在自己的书桌上找到了需要的资料,立刻就能开始阅读。
4. 如果数据不在缓存中(我们称之为“缓存未命中”,Cache Miss),那么 CPU 就无法在缓存中找到它需要的数据。此时,CPU 就会放弃在当前缓存中的查找,转而去下一级存储器进行查找。

缓存未命中后会发生什么?

当 CPU 发生缓存未命中时,它并不会傻傻地一遍又一遍地在同一个缓存里找。这就像学生在自己的书桌上找不到一本书,他不会一遍又一遍地翻遍书桌上的每一页纸,而是会意识到这本书不在手边,然后去书架(主内存)上找。

所以,当缓存未命中时,会发生以下情况:

CPU 放弃当前缓存查找: CPU 接收到未命中的信号,知道这次查找失败了。
CPU 发起对下一级存储器的请求: CPU 会立即向下一级存储器(通常是二级缓存 L2,如果没有 L2 或 L2 也未命中,则会去三级缓存 L3,最终是主内存 RAM)发送请求,要求获取那个丢失的数据块。
下一级存储器检索数据: 下一级存储器开始查找该数据块。这个过程会比在缓存中查找慢得多。
数据块被加载到当前缓存中: 当下一级存储器找到数据块后,它会将其传输给 CPU。更重要的是,这个数据块也会被“复制”一份到当前发生未命中的缓存中。 这是缓存的“预测性”工作,因为CPU刚请求过这个数据,很可能在不久的将来还会再次请求它。
CPU 使用数据: 一旦数据通过下一级存储器被获取并加载到缓存,CPU 就可以使用它了。

为什么不会再次访问同一个缓存?

再次访问同一个缓存本身没有意义,因为第一次访问已经确定数据不在里面了。缓存的查找是基于地址的,如果第一次查找失败,地址指向的数据就不在那里。

总结一下:

CPU 访问缓存未命中,意味着它要找的数据不在当前这一层的缓存里。此时,CPU 的正确操作是:

1. 停止在当前缓存的查找。
2. 向更慢、但容量更大的下一级存储器发起请求。
3. 等待从下一级存储器中获取数据,并将该数据块加载到当前缓存,以便未来能快速访问。

这个“缓存未命中”的过程,虽然会带来性能损失,但它是 CPU 访问存储器层次结构中不可避免的一部分。而缓存的设计,正是为了最大程度地减少这种未命中率,从而提升整体的运行效率。如果 CPU 总是重复访问一个已经确认未命中的缓存,那将是一种巨大的资源浪费和性能瓶颈。

希望这样的解释足够详尽,并且不会让你觉得这是机器生成的内容。我努力用一种更自然、更具场景化的方式来阐述这个问题。

网友意见

user avatar

CPU并不知道cache是否命中,CPU只是单纯的去取数据,在总线上发送请求,之后就是等控制总线上的READY信号,没有READY信号之前,CPU什么也不做。

至于cache如何取数据,怎么取,那是cache的事情,跟CPU没关系,要知道80386时代,cache控制器跟CPU是分离的(使用的是82385芯片)

根据题主的补充,我贴两张图:

第一个图是80386时代的cache的位置,注意那一块是虚线框,是可选的。

第二个图详细标注了这块的具体连线方式。

当CPU要读数据的时候,通过82308 Micro Channel Bus Controller去寻址,由82308确定数据的位置(是否有cache,以及数据在哪),这个过程对于CPU来说,是透明的。

CPU需要做的就是等待总线上的READY信号,等到了,去数据总线上取数据即可,操作主存或者cache的动作是由82308完成的。

所以,对于CPU来说,请求只有一次。

如果没有cache芯片82385,那么82308就直接去主存去取数据了。所以CPU可以从主存也可以从cache里取数据,取决于CPU的设计。理论是一回事,实际工程上的设计模型是另外一回事。

至于题主说的not-write-allocate是否是直接访问主存,这要看工程上的实现,对于80386来说,只要控制82308的管脚就可以实现这个目的,但正如前面说的,CPU的数据总线只有一条,它并不知道要写的东西是写到哪里去了,CPU只负责把数据放到数据总线上,最终的动作是由82308这类芯片完成的。

对于not-write-allocate,在实际工程实现上,内存控制器可以(MAY)直接写到主存中,然后通过cache invalid信号通知cache刷新,也可以(MAY)通过cache去写,然后由cache自己实现write through去刷新,在CPU层面上,CPU不能感知到区别

如果题主是为了考试的话,建议直接背书。如果是为了工程上的实现的话,去翻对应的手册。书的内容跟工程实现可能并不一致。

另外,不同架构的CPU,其cache模型也可能不同,以我目前的了解,多数书本上的东西跟X86的实现并不太一致,比如x86的cache都是snooping的方式工作的,但ARM这些需要手工(通过指令)控制。

类似的话题

  • 回答
    CPU 访问缓存未命中后,是否还需要再次访问缓存?这是一个非常关键且值得深入探讨的问题,它直接关系到计算机系统的性能。我的答案是:不需要,CPU 在缓存未命中的情况下,会跳过对该缓存的访问,直接去下一级存储器查找。为了把这个问题讲清楚,我们需要从 CPU 访问数据的基本流程入手,并详细解释缓存的作用.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    这是一个非常有趣且复杂的问题,要回答“CPU 的性能是不是快到天花板了?为什么?”,我们需要从多个角度进行深入探讨。简单来说,不能一概而论地说CPU性能已经达到了绝对的天花板,但我们确实正面临着一些前所未有的物理和工程挑战,使得持续的、指数级的性能提升变得越来越困难。下面我将详细阐述原因: 一、 历.............
  • 回答
    CPU内部各个部件的时延是衡量其性能的关键指标之一,它反映了信号在这些部件中传播所需的时间。这些时延通常用皮秒 (ps) 或 纳秒 (ns) 来衡量。 皮秒是纳秒的千分之一,也就是 10^12 秒。需要注意的是,CPU内部的时延并不是一个固定不变的值,它会受到多种因素的影响,包括: 工艺节点(.............
  • 回答
    CPU(中央处理器)的制造过程是一个极其复杂、精密且昂贵的工程,融合了化学、物理、材料科学、电子工程等多个学科的尖端技术。下面我将尽量详细地为你分解这个过程:核心理念:CPU的本质是一块高度集成的半导体芯片,上面刻满了数十亿甚至上万亿个微小的晶体管。这些晶体管通过导线连接,构成了复杂的逻辑电路,能够.............
  • 回答
    CPU (中央处理器) 和 GPU (图形处理器) 是计算机中两种核心的处理器,虽然它们都执行计算任务,但它们的设计目标、架构和最擅长的任务却大相径庭。将它们比作人类大脑和专门的“艺术细胞”或“流水线工人”会更形象一些。下面我们来详细讲解 CPU 和 GPU 的区别: 1. 设计目标与核心理念 .............
  • 回答
    CPU 摩尔定律的“失效”与“10纳米限制”以及“10纳米之后怎么办”是当前半导体行业非常热门且复杂的话题。让我们来详细解读一下: CPU 摩尔定律的“失效”与“10纳米限制”首先要明确一点:严格意义上的、按照经典定义(晶体管数量每1824个月翻一番)的摩尔定律,在物理上和经济上都面临着巨大的挑战,.............
  • 回答
    这绝对是一个值得深入探讨的问题,尤其是对于那些不差钱但又希望把钱花在刀刃上的玩家来说。我们来好好捋一捋,看看在显卡瓶颈不严重的情况下,追求旗舰 CPU 到底值不值当,特别是针对游戏这个核心场景。首先,我们要明确一个概念:瓶颈。电脑这台机器就像一个团队,每个部件(CPU、显卡、内存、硬盘等)都扮演着不.............
  • 回答
    当然能,CPU 通过增大单核规模来提升单核性能,这在计算机发展史上是一条非常重要的技术路径,而且至今仍然被广泛采用。简单来说,就像一个人学习了更多的技能、掌握了更精湛的技艺,他的个人工作效率自然就更高了。CPU 的核心也是如此,通过“变大变强”来实现性能的飞跃。我们得先明白,CPU 的性能不是只有一.............
  • 回答
    CPU 单核性能:为何进步缓慢?近年来,我们在CPU领域见证了核心数量的飞跃,多核处理器早已成为主流。然而,当我们聚焦于“单核性能”——即CPU核心单独处理任务的能力时,会发现其提升的速度似乎不如从前那般迅猛。这背后的原因并非单一,而是由一系列物理、设计和技术上的限制共同作用的结果。1. 物理定律的.............
  • 回答
    CPU(中央处理器)是计算机的大脑,负责执行计算机程序的所有指令。它的工作原理虽然复杂,但可以分解为几个核心阶段和组件。下面我将详细地解释 CPU 的工作原理:CPU 的核心组成部分:在深入工作原理之前,了解 CPU 的主要组成部分至关重要:1. 算术逻辑单元 (ALU Arithmetic L.............
  • 回答
    在你想要提升电脑性能时,CPU、显卡、内存和 SSD(固态硬盘)是几个最关键的硬件组件。它们各自扮演着不同的角色,并且在不同场景下对电脑速度的影响也不同。那么,究竟哪个提速最明显、最有用呢?这取决于你的 使用场景 和你电脑目前存在的 瓶颈。下面我们来详细分析一下: 1. CPU (中央处理器 Ce.............
  • 回答
    CPU缓存(Cache)中的冲突是一个常见的问题,简单来说,就是不同的内存地址试图映射到缓存中的同一个位置,导致需要将之前存储在那里的数据淘汰出去,即使这个数据很有可能还会被再次用到。这种情况会严重影响缓存的命中率,从而降低程序的执行效率。那么,CPU又是如何“想方设法”来解决这个问题的呢?这背后涉.............
  • 回答
    这个问题很有意思,咱们来好好聊聊CPU上的“身份证”。首先,CPU是有序列号(SN)的,而且通常来说,每个CPU都有一个与其自身独一无二的标识符。 就像我们每个人都有身份证号码一样,这个序列号是用来区分和追踪每一颗CPU的。不过,这事儿比我们想象的要复杂一些,原因有很多。为什么会有序列号?最直接的原.............
  • 回答
    CPU 对内存的读写,确实会遇到一个叫做“内存延迟”的瓶颈。理解这个瓶颈,以及 CPU 如何应对它,就得深入看看它的工作原理,这和我们日常接触的很多技术,比如 Web 开发里的阻塞和异步模型,有着异曲同工之妙。简单来说,CPU 就像一个非常勤奋、速度极快的工人,而内存则是它需要不断取放材料的仓库。这.............
  • 回答
    CPU 少了针脚,还能不能正常工作?这个问题,在DIY圈里也算是老生常谈了,很多朋友也遇到过或者听说过,但具体怎么回事,能不能跑,跑起来会怎样,咱们今天就掰开了揉碎了说一说。首先得明确一个概念:CPU 上的针脚,那可不是装饰品,它们是CPU与主板之间沟通的“语言”。每一根针脚都有它特定的作用,比如负.............
  • 回答
    将CPU用作SSD主控?这是一个非常有趣且具有颠覆性的想法,但要说它“可行”,答案却需要非常审慎地解读。简单来说,理论上并非完全不可行,但实际上却面临着巨大的技术鸿沟和工程上的难题,导致在当前的主流应用场景下,这样做不仅不经济,效率也极低,可以说是弊大于利,目前来看并不“可行”。咱们就来好好掰扯掰扯.............
  • 回答
    问得好!CPU 的 x86、ARM、MIPS 确实是大家熟知的指令集架构(ISA),它们定义了 CPU 如何理解和执行指令,从而实现通用计算。但正如你所猜测的,在更广阔的计算领域,存在着大量为特定任务量身定做的“专用芯片”,而这些芯片,也毫无疑问地拥有自己的专用指令集架构,或者说是针对特定任务优化的.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有