0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

缓存如何工作,如何设计CPU缓存

h1654155282.3538 来源:EEtoday 作者:EEtoday 2020-11-19 17:23 次阅读

20世纪80年代,CPU性能有了显著提升,但这受到板载内存访问速度缓慢增长的阻碍。随着这种差异的恶化,工程师们发现了一种通过新的设计技术缓存来解决问题的方法。本文将帮助你进一步了解什么是缓存,它如何工作以及如何设计CPU缓存。

什么是CPU硬件缓存?

CPU硬件缓存是一个较小的内存,位于离处理器较近的位置,用于存储最近引用的数据或指令,以便在需要时可以快速检索它们。通过减少访问较慢主存储器的昂贵的读写操作,缓存对CPU的性能产生巨大影响。实际上,所有现代处理器都采用某种形式的缓存。第一个缓存是片外或外部的。这些很快就被通常由SRAM制成的片上高速缓存存储器取代。为了进一步提高性能,这些片上高速缓存分为指令和数据分区。图1显示了分区的示例。

图1.Intel80486使用了通用缓存,而其后继产品PentiumP5则使用了分区缓存(总线宽

缓存分区导致了多级缓存层次结构的诞生,其中处理器核心将拥有自己的小型私有缓存(L1),其位于更大的共享缓存(L2)之上,其中一些处理器包括第三级缓存(L3),偶尔会有第四级缓存(L4)。

位置(又称缓存如何工作?)

为什么缓存工作?缓存通过参考局部性原则工作。引用位置是指处理器在运行应用程序时访问相同内存位置的趋势。因为这些内存访问是可预测的,所以可以通过缓存来利用它们。局部性通常分为时间局部性和空间局部性两个子集,有时又分为三个子集,称为算法局部性。

时间位置

时间局部性是指在短时间内重用特定数据项。这依赖于以下事实:在处理器上运行的程序往往在短时间内使用相同的变量和数据结构。从主内存中提取一个项目并将其存储在缓存中之后,对该数据的任何后续调用都可以更快地完成。

空间位置

空间位置是指很快将需要的数据项驻留在当前需要的项附近或相邻的内存位置的趋势。这可能是程序员或编译器在内存中聚集项目的结果。例如,使用数组(一种数据结构)的应用程序将把数组的元素存储在相邻的存储单元中。通过缓存当前正在使用的数据项旁边的数据项,处理器可以在必要时快速访问那些相邻项。

算法局部性

一种不常讨论的局域类型是算法局部性。算法局部性是应用程序在相关数据项上执行操作的趋势,尽管不是在任何短时间段内,并且尽管事物在内存中彼此不相邻。使用链表(另一种数据结构)的应用程序可能会出现此行为。这种类型的局部性可能出现在图形处理或迭代模拟中。

逻辑缓存组织

缓存存储和检索数据的方式和位置取决于缓存的组织方式。这称为缓存的逻辑组织。确定存储的内容由内置于缓存中的管理启发式控制,但它也受到逻辑组织的严重影响。因此,缓存的布局方式在其性能中起着巨大的作用。组织缓存有三种主要方法:全相联缓存;直接映射高速缓存;组相联缓存。

缓存块

当CPU需要访问主内存中的项目时,它使用地址来查找该项目。CPU硬件缓存通常透明地工作,这意味着程序员不必以任何方式确认缓存。因此,用于访问存储器的地址首先由高速缓存处理。该地址用于标识数据项是否位于缓存中。

术语缓存命中表示在缓存中找到数据项,缓存未命中表示没有找到。高速缓存被组织成称为高速缓存块的数据组。每个地址被划分为若干个个位字段,以便可以识别正确的高速缓存块。这些字段是缓存标记、组编号和字节偏移量。图2显示了分成缓存可以解释的字段的地址。

图2.寻址缓存块

当一个CPU缓存被赋予一个地址时,它会将该地址分成必要的字段并开始检查其缓存条目。缓存条目包括缓存标记(此处标记为标记)和缓存块(标记数据)。缓存标记是一个标识符,用于指示引用哪个缓存块。缓存块是存储在该标记上的实际数据,表示来自主内存的一个项目块。要获取该块中的单个字段,需要使用偏移量。

直接映射

在直接映射的高速缓存中,高速缓存项被组织成多个组。地址中的组编号用于索引每组条目。一旦识别出组,就比较缓存标签。如果它们匹配,则这是缓存命中并输出指定的数据。理解直接映射缓存的关键是每个组只有一个缓存条目。这使得直接映射缓存非常快,同时消耗最少的功率。

图3.Adirect-mapped缓存

由于每个集合只能包含一个项,因此直接映射的缓存确实具有更高的争用率,这意味着需要将多个数据项存储在同一位置。这导致缓存未命中。解决此问题的一种方法是使用完全关联的缓存。

全相联

全相联缓存与直接映射缓存相反。全相联缓存具有多个缓存项,而不是包含单个项的多个集合,而是包含在单个集合中。因此,设定的号码不再提供任何信息,也不会使用。相反,当缓存处理内存地址时,将检查每个缓存条目的匹配标记。如果找到,则使用字节偏移量在高速缓存块内输出正确的数据。检查每个缓存条目使得全相联的缓存比直接映射缓存消耗更多的功率。通过使用组关联高速缓存来完成功耗和更高竞争率之间的平衡。

图4.全相联缓存

组相联

组相联缓存提供了两全其美的优势。它由多个集合组成,每个集合具有多个缓存条目。它是如何工作的?首先,设置好允许缓存跳转到适当的条目集。接下来,搜索每组条目以寻找匹配的标签。如果找到,则使用字节偏移量来输出所请求的数据。此方法允许缓存提供功耗和争用率的优化平衡。

图5显示了一个4路组相联缓存。它被称为4路,因为每个集合最多可以包含四个缓存条目。如果每个集合只能容纳两个缓存条目,那么它将是一个双向的。因此,直接映射高速缓存实际上只是单向组关联高速缓存,而组相联高速缓存是单组m路组相联高速缓存,其中m是高速缓存条目的数量。


责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10434

    浏览量

    206522
  • 缓存
    +关注

    关注

    1

    文章

    220

    浏览量

    26437
收藏 人收藏

    评论

    相关推荐

    CPU一级缓存与二级缓存深度分析

    CPU缓存:通过优化的的读取机制,可以使CPU读取缓存的命中率非常高,也就是说CPU下一次要读取的数据90%都在
    的头像 发表于 04-16 10:52 1.9w次阅读
    <b class='flag-5'>CPU</b>一级<b class='flag-5'>缓存</b>与二级<b class='flag-5'>缓存</b>深度分析

    CPU一级缓存

    CPU一级缓存              CPU缓存(Cache
    发表于 12-24 10:21 435次阅读

    CPU二级缓存容量

    CPU二级缓存容量            CPU缓存(Cache Memory)是位
    发表于 12-24 10:22 485次阅读

    什么是CPU工作电压/高级转移缓存

    什么是CPU工作电压/高级转移缓存CPU工作电压是指CPU正常
    发表于 02-04 10:32 1110次阅读

    什么是CPU一级缓存/二级缓存

    什么是CPU一级缓存/二级缓存?  即L1 Cache。集成在CPU内部中,用于CPU在处理数据过程中数据的暂时保存。由于
    发表于 02-04 10:43 1024次阅读

    什么是CPU缓存/前端总线(FSB)频率

    什么是CPU缓存/前端总线(FSB)频率  缓存   缓存大小也是CPU的重要指标之一,而且
    发表于 02-04 11:22 1294次阅读

    CPU缓存对性能的影响

      说到CPU,不得不说的就是CPU缓存,目前CPU缓存已经成了衡量CPU性能的一个必要指标,
    发表于 11-13 17:58 2159次阅读

    谈一谈CPU缓存缓存一致性

    左图为最简单的高速缓存的配置,数据的读取和存储都经过高速缓存CPU核心与高速缓存有一条特殊的快速通道;主存与高速缓存都连在系统总线上(BU
    的头像 发表于 05-03 17:51 1966次阅读
    谈一谈<b class='flag-5'>CPU</b><b class='flag-5'>缓存</b>和<b class='flag-5'>缓存</b>一致性

    CPU缓存是什么意思_CPU缓存有什么作用

    由于处理器是核心硬件,相信我们在选择处理器的时候都会去关心处理器参数方面,而在处理器核心参数中,我们经常会看到缓存(Cache)这个参数,那么CPU缓存有什么作用呢?下面小编科普一下关于CP
    发表于 05-19 09:24 6503次阅读

    各级别CPU缓存工作原理

    要。 在讨论CPU(Central Processing Units)时,您可能听说过高速缓存。但是,我们并没有过多地关注这些数字,它们也不是这些CPU广告的主要亮点。 那么,CPU
    的头像 发表于 10-30 15:25 3624次阅读
    各级别<b class='flag-5'>CPU</b><b class='flag-5'>缓存</b>的<b class='flag-5'>工作</b>原理

    CPU缓存的作用及原理有哪些

    在实际数据读取中重要的是一级缓存,因为一级缓存速度最快,二级缓存其次,三级缓存最慢,只是三级缓存的容量最大,更容易体现产品更新换代时的价值。
    的头像 发表于 08-27 15:58 9565次阅读

    关于CPU缓存的作用

    CPU没有存储功能,那么缓存到底是干什么的?CPU缓存是用于减少处理器访问内存所需平均时间的部件,作用类似于CPU内部的内存。
    的头像 发表于 03-30 10:58 3954次阅读
    关于<b class='flag-5'>CPU</b><b class='flag-5'>缓存</b>的作用

    CPU缓存设计的原则及工作原理

    本文将研究 CPU 缓存设计的原则,包括局部性、逻辑组织和启发式管理。
    的头像 发表于 04-28 17:19 3003次阅读
    <b class='flag-5'>CPU</b><b class='flag-5'>缓存</b>设计的原则及<b class='flag-5'>工作</b>原理

    cpu缓存的作用及原理是什么

    CPU高速缓存集成于CPU的内部,其是CPU可以高效运行的成分之一,本文围绕下面三个话题来讲解CPU缓存
    发表于 08-21 12:17 872次阅读
    <b class='flag-5'>cpu</b><b class='flag-5'>缓存</b>的作用及原理是什么

    CPU缓存那些事儿

    CPU Cache 在读取内存数据时,每次不会只读一个字或一个字节,而是一块块地读取,这每一小块数据也叫CPU 缓存行(CPU Cache Line)。这也是对局部性原理的运用,当一个
    的头像 发表于 09-10 10:57 385次阅读
    <b class='flag-5'>CPU</b><b class='flag-5'>缓存</b>那些事儿