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

    文章

    20329

    浏览量

    254859
  • 存储器
    +关注

    关注

    39

    文章

    7755

    浏览量

    172177
  • SMP
    SMP
    +关注

    关注

    0

    文章

    82

    浏览量

    20959
  • 状态机
    +关注

    关注

    2

    文章

    501

    浏览量

    29327
  • cache技术
    +关注

    关注

    0

    文章

    41

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    磁盘阵列RAID写缓存掉电保护怎么做?永铭双电层超级电容模块SDM 8.0F/13.5V为服务器存储提供短时后备供电解决

    企业级服务器、磁盘阵列、边缘存储等设备,磁盘阵列RAID通常会将正在写入的数据和关键元数据暂存在Cache(高速缓冲存储器),以提升写性能。当整机突发掉电时,若后备能源不能及时接
    的头像 发表于 04-18 16:47 54次阅读
    磁盘阵列RAID写缓存掉电保护怎么做?永铭双电层超级电容模块SDM 8.0F/13.5V为服务器存储提供短时后备供电解决

    忆联自研芯片以压缩技术重塑KV Cache存储效率

    2026年3月,谷歌研究院发布TurboQuant压缩算法技术,迅速存储与AI基础设施领域引发热议。该算法能够压缩KV缓存,实现内存占用降低6倍、推理速度提升8倍的潜力。这一技术突破的背后,折射出大模型推理时代最核心的硬件瓶颈
    的头像 发表于 04-10 14:10 382次阅读

    什么是“TKU”( Dubhe-80 )?

    Interface 我目前的猜测是,T 可能代表张量(如机器学习),而 K 可能是用于神经网络的内核(代数)。但 T 也可以代表 Trusted,K 也可以代表 Keys,所以有人知道 TKU 到底是什么?
    发表于 02-25 07:11

    【ESP32-C2系列】WT018684-S1/S1U模组规格书

    概述1特性01MCU内置ESP8684系列芯片,32位RISC-V单核处理器,支持高达120MHz的时钟频率576KBROM272KBSRAM(其中16KB专用于cache)SIPflash引入
    的头像 发表于 02-04 18:20 311次阅读
    【ESP32-C2系列】WT018684-S1/S1U模组规格书

    【ESP32-C2系列】WT018684-S5/S5U模组规格书

    概述1特性01MCU内置ESP8684系列芯片,32位RISC-V单核处理器,支持高达120MHz的时钟频率576KBROM272KBSRAM(其中16KB专用于cache)SIPflash引入
    的头像 发表于 02-04 18:20 410次阅读
    【ESP32-C2系列】WT018684-S5/S5U模组规格书

    【ESP32-C2系列】WT018684-S5/S5U模组产品介绍

    概述1特性01MCU内置ESP8684系列芯片,32位RISC-V单核处理器,支持高达120MHz的时钟频率576KBROM272KBSRAM(其中16KB专用于cache)SIPflash引入
    的头像 发表于 01-28 18:20 459次阅读
    【ESP32-C2系列】WT018684-S5/S5U模组产品介绍

    【ESP32-C2系列】WT018684-S1/S1U模组产品介绍

    概述1特性01MCU内置ESP8684系列芯片,32位RISC-V单核处理器,支持高达120MHz的时钟频率576KBROM272KBSRAM(其中16KB专用于cache)SIPflash引入
    的头像 发表于 01-28 18:19 948次阅读
    【ESP32-C2系列】WT018684-S1/S1U模组产品介绍

    滑动平均滤波器介绍

    滑动平均滤波器工程十分常见,这里用C语言设计一个灵活的滑动滤波器库函数,十分简单易用,并且滤波器不使用for循环,大大减少了代码运行时间。 并且滤波器可以使用malloc自动申请内存,也可以不使
    发表于 01-23 08:18

    请问030系列集成的PreFetch 和 Cache怎么用呀?

    各位大佬,030系列集成的PreFetch 和 Cache怎么用呀?有这方面的demo或者pdf操作流程么?
    发表于 01-19 07:07

    提高系统效率几个误解解析

    :CPU用大一点的CACHE,就应该快了 点 评:CACHE的增大,并不一定就导致系统性能的提高,某些情况下关闭CACHE反而比使用CACHE
    发表于 12-15 06:09

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

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

    国密系列算法简介及SM4算法原理介绍

    在后续分享中分析AES和SM4算法的共同特点和可重构方法。 二、 SM4算法原理 图2所示为128位输入、128位密钥和128位输出的SM4算法流程图,共有32轮操作。SM4每轮
    发表于 10-24 08:25

    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 1281次阅读