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

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

3天内不再提示

在组相联cache中,用于替换cache line的算法有哪些?

冬至子 来源:CSDN 作者:谷公子 2023-10-08 11:10 次阅读

1. 在组相联cache中,用于替换cache line的算法有哪些?

  • LRU(Least Recently Used)算法:该算法会跟踪每个cache line的age(年龄)情况,并在需要时替换掉近期最少使用的cache line。
  • MRU(Most Recently Used)算法:这与LRU相反,最年轻的cache line会优先被替换掉。
  • PLRU(Pseudo LRU)算法:这与LRU相似,它没有age跟踪cache line(这样开销较大),只有1个或2个bit来跟踪cache line使用情况。
  • LFU(Least Frequently Used)算法:该算法会跟踪一个cache line访问的频率,并决定替换使用次数最少的cache line。
  • Random replacement算法:该算法不存储任何信息,当需要替换时随机选择一个cache line。

2. Cache coherency的问题是什么?

在SMP(Shared Multiprocessor systems)中,多个处理器都有自己的cache,同一数据(同一地址)的多个副本可能同时存在于不同的cache中。如果允许每个处理器自由更新cache,则可能导致数据一致性被破坏了。例如:如果允许两个处理器向相同的地址写入值,那么在不同的处理器上读取相同的地址可能会看到不同的值。

3. 基于snoop的缓存一致性协议和基于directory的缓存一致性协议有什么区别?

在基于Snoop的一致性协议中,来自处理器的数据请求被发送到共享系统里的所有其它处理器。其它处理器根据这个请求查看自己是否有数据的副本,并做出相应的响应。因此,每个处理器都试图保持内存的一致性视图。

在基于directory的一致性协议中,directory用于跟踪哪些处理器正在访问和缓存哪些地址。任何发出新请求的处理器都将检查该directory,以了解是否有任何其它处理器用于数据副本,然后可以向该处理器发送点到点请求,以获取最新的数据副本。

两者的优缺点为:基于snoop的一致性协议用于较小的系统的话,如果有足够的带宽用于传递请求,它会更快。但对于较大的SMP系统不具有可伸缩性,因此需要为每个请求广播消息,可能会使系统过载阻塞。基于directory的一致性协议由于在发送消息之前需要查找记录的表,可能会有较长的延迟。但它没有广播消息,可伸缩性更好,通常用于较大的SMP系统中。

4. 什么是MESI协议?

MESI协议是具有多个write-back 类型cache的设计中最常用的cache一致性协议。MESI表示在所有cache中跟踪每个cache line并用于响应snoop请求的状态。这些不同的状态可以解释如下:

  • M(Modified):表示cache line数据相对于memory数据被修改过了,为dirty的。
  • E(Exclusive):此状态表示cache line数据相对于内存是clean的,且只在该cache中存在。Exclusive属性允许该cache所在的处理器对该cache line进行写操作。
  • S(Shared):该状态表示cache line被多个cache共享,并且相对memory也是clean的。由于这是在所有cache共享的,因此协议不允许直接对该cache line进行写操作。
  • I(Invalid):该状态表示cache line无效,没有任何有效数据。
  • 当cache line处于除Invalid之外的任何状态时,cache都可以处理读请求。当cache line处于Modified或Exclusive状态时,才可以处理写请求。

5. 什么是MESIF和MOESIF协议?

这两个协议都是MESI协议的扩展,引入了两个新的状态”F”和”O”,解释如下:

  • F(Forward):F状态时S状态的一种特殊形式,表明cache应该通过转发数据来充当给定cache line的任何请求的指定反馈者。如果系统中有多个cache具有处于S状态的同一cache line,则将其中一个指定为F状态,以便为来自不同处理器的新请求转发数据。该协议确保,如果任何cache保存的cache line为S状态,那么最多只有一个(其他)cache保存的cache line为F状态。这种状态有助于减少对memory带宽的占用,因为没有F状态,即使一条cache line在多个cache中处于S状态,它们都不能将数据转发给请求读或写的不同处理器。(请注意,cache中的S状态cache line只能服务于相同的处理器读取)
  • O(Owned):O状态时一种特殊的状态,它是为了在不需要写回memory的情况下在系统的不同cache中移动修改过的或dirty的数据而引入的。如果cache line还与其它可以使cache line保持S状态的cache共享,则cache line需要从M状态转换到O状态。O状态有助于将修改后的数据推迟写回memory,直到真正需要时再写。

6. 什么是RFO?

RFO代表Read for Ownership。这是cache一致性协议中的一种操作。它是由处理器试图写入共享或无效状态的cache line时发出的,这将导致所有其它处理器将该cache line的状态设置为Invalid。RFO是意图写入该memory地址的读操作。因此,该操作是排他的,它将数据读到cache中,并使持有该memory地址的所有其它处理器的cache无效掉这个cache line。

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

    关注

    68

    文章

    18288

    浏览量

    222167
  • 存储器
    +关注

    关注

    38

    文章

    7151

    浏览量

    162000
  • SMP
    SMP
    +关注

    关注

    0

    文章

    68

    浏览量

    19450
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27182
  • cache技术
    +关注

    关注

    0

    文章

    41

    浏览量

    986
收藏 人收藏

    评论

    相关推荐

    Cache的data不同核间获取数据的时候如何保证拿到的数据是最新的?

    1. Cache 的data不同核间获取数据的时候如何保证拿到的数据是最新的? 2.如果关闭了Cache ,运行速度就变好慢,但是core0取core1的数据又想要保持是最新的数据
    发表于 01-31 06:49

    Cache替换策略和Write-through介绍

    信息到数据总线即可; 另一种是需要的数据尚未装入Cache,CPU需要从主存中读取信息的同时,Cache替换部件把该地址所在的那块存储内容从主存复制到Cache中。若
    的头像 发表于 10-31 11:48 713次阅读

    Cache写入方式原理简介

    提高高速缓存命中率的最好方法是尽量使Cache存放CPU最近一直在使用的指令与数据,当Cache装满后,可将相对长期不用的数据删除,提高Cache的使用效率。 为保持Cache中数据与
    的头像 发表于 10-31 11:43 627次阅读

    Cache工作原理是什么

    具有Cache的计算机,当CPU需要进行存储器存取时,首先检查所需数据是否在Cache中。如果存在,则可以直接存取其中的数据而不必插入任何等待状态,这是最佳情况,称为高速命中; 当CPU所需信息不在
    的头像 发表于 10-31 11:34 511次阅读
    <b class='flag-5'>Cache</b>工作原理是什么

    Cache内容锁定是什么

    “锁定”在cache中的块在常规的cache替换操作中不会被替换,但当通过C7控制cache中特定的块时,比如使某特定的块无效时,这些被“锁
    的头像 发表于 10-31 11:31 371次阅读

    Cache分类与替换算法

    根据不同的分类标准可以按以下3种方法对Cache进行分类。 •1)数据cache和指令cache •● 指令cache:指令预取时使用的cache
    的头像 发表于 10-31 11:26 467次阅读
    <b class='flag-5'>Cache</b>分类与<b class='flag-5'>替换算法</b>

    Cache的原理和地址映射

    cache存储系统中,把cache和主存储器都划分成相同大小的块。 主存地址由块号B和块内地址W两部分组成,cache地址由块号b和块内地址w组成。 当CPU访问cache时,CPU
    的头像 发表于 10-31 11:21 620次阅读

    Cache为什么还要分I-Cache,D-Cache,L2 Cache,作用是什么?

    Cache为什么还要分I-Cache,D-Cache,L2 Cache,作用是什么?
    发表于 10-25 06:38

    Python 中怎么来实现类似 Cache 的功能

    cachetools,这是一个可扩展的基于内存的 Collections、Decorators 的封装实现。 因为是 Cache,那么就一定有它的页面置换算法。根据操作系统学过的一些知识,置换算法
    的头像 发表于 10-17 10:47 267次阅读

    请问ARMv8如何读取cache line中的MOESI信息呢?

    本文以Cortex-A53处理器为例,通过访问 处理器中的 **内部存储单元** (tag RAM和dirty RAM),来读取cache line 中的MOESI信息。
    发表于 09-08 14:35 456次阅读
    请问ARMv8如何读取<b class='flag-5'>cache</b> <b class='flag-5'>line</b>中的MOESI信息呢?

    高速缓存Cache介绍

    被访问,那么将来它附近的位置也会被访问。比如顺序执行代码,或者使用一个数据结构• 时间局部性:被访问过一次的存储器位置,接下来会被多次引用。比如:循环• 缓存行(cache line)• 逻辑上的一
    发表于 09-07 08:22

    Arm Cortex-A53 cache的架构解析

    A53的L1 Data cache遵从的是MOESI协议,如下所示在L1 data cache的tag中存有MOESI的标记位。
    的头像 发表于 09-01 15:01 5893次阅读
    Arm Cortex-A53 <b class='flag-5'>cache</b>的架构解析

    多个CPU各自的cache同步问题

      CACHE 的一致性 Cache的一致性有这么几个层面 1.     一个CPU的icache和dcache的同步问题 2.     多个CPU各自的cache同步问题 3.     CPU
    的头像 发表于 06-17 10:38 1053次阅读
    多个CPU各自的<b class='flag-5'>cache</b>同步问题

    深入理解Cache工作原理

    按照数据关系划分:Inclusive/exclusive Cache: 下级Cache包含上级的数据叫inclusive Cache。不包含叫exclusive Cache。举个例子,
    的头像 发表于 05-30 16:02 470次阅读
    深入理解<b class='flag-5'>Cache</b>工作原理

    使用Spring Cache实现缓存

    在学习Spring Cache之前,笔者经常会硬编码的方式使用缓存。
    的头像 发表于 05-11 17:40 391次阅读
    使用Spring <b class='flag-5'>Cache</b>实现缓存