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

    文章

    20158

    浏览量

    247648
  • 存储器
    +关注

    关注

    39

    文章

    7716

    浏览量

    170932
  • SMP
    SMP
    +关注

    关注

    0

    文章

    81

    浏览量

    20696
  • 状态机
    +关注

    关注

    2

    文章

    497

    浏览量

    28883
  • cache技术
    +关注

    关注

    0

    文章

    41

    浏览量

    1329
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    采用Prefetch+Cache架构什么优势?

    我看官方说,采用Prefetch+Cache架构同频CoreMark 计算力/功耗比超越同类产品,这优势就是低功耗么?要是具体芯片比较的话,应该怎么比?
    发表于 12-11 07:35

    gd32h737 开启cache程序跑飞是哪里的问题?

    gd32h737 rtthread 4.1.1版本上运行,开启cache功能,程序跑飞,JLink连接失败的。错误信息没有。配置方式的说明吗? /*! briefenable the CPU
    发表于 09-11 08:28

    STM32H7的MPU配置与D-Cache冲突如何解决?​​

    现象​​: STM32H743 MPU 与 D-Cache 冲突问题详细描述** 硬件环境 MCU 型号 :STM32H743VIT6 开发板 :自定义板(或 STM32H743I-EVAL 等
    发表于 06-23 17:32

    MCU缓存设计

    从Flash或外部存储器读取的指令,减少CPU因等待指令加载而停滞,适用于实时性要求高的场景(如中断服务程序)。 D-Cache‌:缓存从Flash、SRAM或外部存储器读取的数据,加速变量与堆栈的读写操作。 TCM(紧耦合内存)‌:部分MCU(如STM32H743)设置
    的头像 发表于 05-07 15:29 860次阅读

    请问RTD3.0.0修改bootloader的链接器的正确程序是什么?

    我正在尝试更新链接器,以便我的应用程序可以与 uds bootloader 2.0.0 一起使用。但是,每当我链接器中进行更改时,应用程序启动都会失败。我在这里的问题是修改 bootloader
    发表于 04-14 13:29

    如何在NXP MCU上启用D-Cache

    Data Cache,我已经能够减少其他 MCU 的推理时间。我想知道如何在 NXP MCU 上启用 D-Cache。任何其他性能提升策略也受到欢迎。
    发表于 03-27 07:48

    国产电压基准源替换REF3025工业电源管理应用替换方案

    国产电压基准源替换REF3025工业电源管理应用替换方案
    的头像 发表于 03-19 09:44 907次阅读
    国产电压基准源<b class='flag-5'>替换</b>REF3025<b class='flag-5'>在</b>工业电源管理应用<b class='flag-5'>中</b>的<b class='flag-5'>替换</b>方案

    国产AFE替换ADS1248压力传感器的应用

    国产AFE替换ADS1248压力传感器的应用
    的头像 发表于 03-10 09:47 837次阅读
    国产AFE<b class='flag-5'>替换</b>ADS1248<b class='flag-5'>在</b>压力传感器<b class='flag-5'>中</b>的应用

    请问惊鸿7110是否支持cache维护指令?

    惊鸿7110是就sifive u74处理器的。查看了一下u74手册,它是专门的cache维护指令CFLUSH.D.L1。赛昉官方版本编译不通过。请问一下大佬,这个怎么解决呀?
    发表于 03-10 07:24

    替换MAX22088,家庭总线系统SC5120远程监控的应用

    替换MAX22088,家庭总线系统SC5120远程监控的应用
    的头像 发表于 02-26 10:10 679次阅读
    <b class='flag-5'>替换</b>MAX22088,家庭总线系统SC5120<b class='flag-5'>在</b>远程监控<b class='flag-5'>中</b>的应用

    国产电压基准源替换REF3125伺服驱动器的应用

    国产电压基准源替换REF3125伺服驱动器的应用
    的头像 发表于 02-19 10:22 770次阅读
    国产电压基准源<b class='flag-5'>替换</b>REF3125<b class='flag-5'>在</b>伺服驱动器<b class='flag-5'>中</b>的应用

    高速缓冲存储器是内存还是外存,高速缓冲存储器是为了解决什么

    高速缓冲存储器(Cache)是内存的一种特殊形式,但它与通常所说的主存储器(RAM)有所不同。计算机存储体系Cache位于CPU和主存储器之间,
    的头像 发表于 01-29 11:48 3185次阅读

    Linux服务器卡顿救星之一招释放Cache内存

    为了加速操作和减少磁盘I/O,内核通常会尽可能多地缓存内存,这部分内存就是Cache Memory(缓存内存)。根据设计,包含缓存数据的页面可以按需重新用于其他用途(例如,应用程序)。 缓存内存
    的头像 发表于 01-16 10:04 2183次阅读

    晶圆scribe line(划片线)和saw line(锯片线)的差异

    关键的概念,它们晶圆的后段工艺扮演着重要的角色。为了方便理解,我们可以把晶圆比作一块大饼,而每一片芯片就像是从大饼上切下来的薄片,划片线和锯片线则是切割这些薄片的“指引”和“路径”。 Scribe Line(划片线) 定义:
    的头像 发表于 01-03 11:33 2566次阅读
    晶圆<b class='flag-5'>中</b>scribe <b class='flag-5'>line</b>(划片线)和saw <b class='flag-5'>line</b>(锯片线)的差异

    什么是缓存(Cache)及其作用

    缓存(Cache)是一种高速存储器,用于临时存储数据,以便快速访问。计算机系统,缓存的作用是减少处理器访问主存储器(如随机存取存储器RAM)所需的时间。 缓存(
    的头像 发表于 12-18 09:28 1.5w次阅读