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

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

3天内不再提示

Cache替换策略和Write-through介绍

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-10-31 11:48 次阅读

Cache和存储器一样具有两种基本操作,即读操作和写操作。当CPU发出读操作命令时,根据它产生的主存地址分为两种情形:一种是需要的数据已在Cache中,那么只需要直接访问Cache,从对应单元中读取信息到数据总线即可;

另一种是需要的数据尚未装入Cache,CPU需要从主存中读取信息的同时,Cache替换部件把该地址所在的那块存储内容从主存复制到Cache中。若Cache中相应位置已被字块占满,就必须去掉旧的字块。常见的替换策略有以下两种:

1-先进先出策略(FIFO)

FIFO(First In First Out)策略总是把最先调入的Cache字块替换出去,它不需要随时记录各个字块的使用情况,较容易实现。缺点是经常使用的块,如一个包含循环程序的块也可能由于它是最早的块而被替换掉。

2-最近最少使用策略(LRU)

LRU(Least Recently Used)策略是把当前近期Cache中使用次数最少的信息块替换出去,这种替换算法需要随时记录Cache中字块的使用情况。LRU的平均命中率比FIFO高,在组相联映像方式中,当分组容量加大时,LRU的命中率也会提高。

关于Write-through和Write-back

1-对于磁盘操作来说

write-through的意思是写操作根本不使用缓存,数据总是直接写入磁盘,关闭写缓存,可释放缓存用于读操作(缓存被读写操作共用)。

write-back的意思是数据不直接被写入磁盘,而是先写入缓存,再由控制器将缓存内未写入磁盘的数据写入磁盘,从应用程序的角度看,比等待完成磁盘写入操作要快得多,因此可以提高写性能。

但是write-back(write cache)方式通常在磁盘负荷较轻时速度更快。负荷重时,每当数据被写入缓存后,就要马上再写入磁盘以释放缓存来保存将要写入的新数据,这时如果数据直接写入磁盘,控制器会以更快的速度运行。因此,负荷重时,将数据先写入缓存反而会降低吞吐量。

2-对于CPU内部的cache缓冲模式来说

Write-Through和Write-Back,前者是按顺序来一个写一个,而后者则是先将资料按一定数量保存在缓冲区中,然后将相同位置的数据一次性写出。举例说明:有一部电梯,如果按先入先出的原则,即write through模式,第一个人去3楼,第二个去2楼,第三个也去3楼,那么这电梯就得先到3楼,然后到2楼,再去3楼。

但如果在write back模式下,电梯先到2楼把第二个人送出去,然后再到3楼把第一个人和第三个人送出去,效率显然高多了。早期的cache只有write through模式,但现在的cache都使用write back模式了。

3-其他的解释

•Write-Through:在write的时候,同步更新cache和memory中的数据。

•Write-Back:在write的时候更新cache,但是memory中的数据不一定同步更新,只有当cache到一定程度才会把cache中的数据刷到memory中,或者通过cache指令刷新,不会同步自动刷新。

•cache line的意思是假设你那条指令只要从memory中读4个字节,但是一般来说你接下来的指令很有可能要读这4个字节后面的数据,所以一般硬件会多读一些数据进入cache,比如64字节,那么这64字节就是一个cache line。而如果你这个cache line里的数据长时间不被CPU访问,那么这个cache line可能会被选中换出,这时候就必须把cache里被改过的信息写回memory了。

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

    关注

    38

    文章

    7150

    浏览量

    161998
  • 数据
    +关注

    关注

    8

    文章

    6512

    浏览量

    87601
  • 磁盘
    +关注

    关注

    1

    文章

    338

    浏览量

    24883
  • Cache
    +关注

    关注

    0

    文章

    127

    浏览量

    27984
收藏 人收藏

    评论

    相关推荐

    CacheWrite Buffer一般性介绍

    Cache是位于CPU与主存储器即DRAM(Dynamic RAM,动态存储器)之间的少量超高速静态存储器SRAM(Static RAM)
    的头像 发表于 10-31 15:07 390次阅读
    <b class='flag-5'>Cache</b>和<b class='flag-5'>Write</b> Buffer一般性<b class='flag-5'>介绍</b>

    如何用__write函数替换掉原先的fputc函数呢

    如何用__write函数替换掉原先的fputc函数呢?
    发表于 12-01 06:55

    MPU的作用是什么?有哪些功能?

    MPU的作用是什么?有哪些功能?MPU常用的寄存器有哪些?read/write-through/back/allocate的区别是什么?
    发表于 02-22 07:01

    为什么需要cachecache是如何影响code的呢

    当发生cache命中时,写操作应该如何更新数据。cache更新策略分成两种:写直通和回写。写直通(write through)当CPU执行s
    发表于 04-21 11:10

    浅析cache控制器的分配策略替换策略

    Write-through策略通常比write-back策略要慢 。当然,目前写入不会直接写入到主存,会通过在cache和主存之间插入
    发表于 06-15 16:24

    介绍一种多级cache的包含策略Cache inclusion policy)

    时不会通知L2 cachewrite-through policy在写L1 cache时会通知L2 cache。原作者:xpuu
    发表于 07-20 14:46

    基于修正LRU的压缩Cache替换策略

    以优化压缩cache替换策略为目标,提出一种优化的基于修正LRU的压缩cache替换策略MLR
    发表于 04-15 09:51 36次下载

    基于BWDSP指令Cache的PLRU替换算法研究

    通过BWDSP模拟器对目前常用的几种替换算法和大小不同的指令Cache块进行仿真实验得出不同缺失率。实验结果表明,所提出的PLRU替换算法性能高于LRU、LFU、FIFO替换算法,并使
    发表于 09-25 14:50 17次下载

    一种有效的Cache优化替换策略

    该问题,一种有效的解决方法是优化Cache替换策略,减少Cache中脏块被替换出的数量。现有研究主要通过在插入和访问命中时给脏块设定较高的保
    发表于 11-27 15:16 1次下载
    一种有效的<b class='flag-5'>Cache</b>优化<b class='flag-5'>替换</b><b class='flag-5'>策略</b>

    OrCAD教程:如何对元件进行替换与更新

    批量替换replace cache 打开cache,选中要替换的元件,如图所示 右键,replace cache 弹出
    发表于 04-17 14:18 1.2w次阅读
    OrCAD教程:如何对元件进行<b class='flag-5'>替换</b>与更新

    寄存器和cache的区别介绍

    本文开始阐述了CACHE的概念、CACHE替换机构与读写操作,其次介绍了寄存器的原理以及它的主要技术,最后阐述了寄存器和cache两者之间的
    发表于 04-11 14:10 1.2w次阅读

    从三个方面阐述Cache

    关于cache,大概可以从三个方面进行阐述:内存到cache的映射方式,cache的写策略cache
    的头像 发表于 11-21 11:09 2185次阅读

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

    LRU(Least Recently Used)算法:该算法会跟踪每个cache line的age(年龄)情况,并在需要时替换掉近期最少使用的cache line。
    的头像 发表于 10-08 11:10 475次阅读

    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替换操作中不会被替换,但当通过C7控制cache中特定的块时,比如使某特定的块无效时,这些被“锁
    的头像 发表于 10-31 11:31 370次阅读