Cache替换策略和Write-through介绍

描述

  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了。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分