• Cache的一致性问题


    Cache中的内容是主存中的副本。访问数据是先访问Cache,Cache中没有再看主存中有没有。当对cache中的内容更新时,就会存在cache和主存如何保持数据一致的问题。此外,下列问题也会导致cache一致性问题。

    • 多个设备都允许访问主存时,cache中的内容被cpu修改,而主存中的没有,同时该内容需要写入磁盘,此时从内存写入到磁盘的数据和cache(希望的数据)不一样。
    • 当多个CPU都有各自的cache而共享主存时,若有一个cpu修改了自身cache中的内容,则对应的主存块和其他cpu中对应的cache行的内容都变为无效(共享数据,数据更改了,未及时更改的那些数据都没用了)

    Cache一致性问题的关键是处理好写操作。

    全写法

    对写命中,写未命中的解释:cache的写命中和写未命中,就是磁盘或者内存上的存储区域之前有没有写过数据。如果有,这次再写到相同的区域叫写命中;如果写到其他区域,叫写未命中。

    写操作时,若写命中,则同时写cache和主存;若写不命中,则有以下两种方式。

    • 写分配法:
      • 先更新主存中的数据,再将更新后的主存块装入到cache中。可重复利用程序的局部性原理。
    • 非写分配法:
      • 仅更新主存中数据不写入cache,可减少读入主存块的时间,但是没有很好地利用程序地局部性原理。
    • 为减少写主存地开心,通常再cache和主存之间加一个写缓冲,写入cache时也写入缓冲中,然后由存储控制器将写缓冲中的数据写入主存。(写缓冲的读取速度很快,远远高于对主存的读取速度)

    回写法

    CPU执行写操作时,若写命中,则信息只写入cache不写入主存;若写不命中,则在cache中分配一行,将主存块调入该cache行中并更新相应单元的内容。该方式下,写不命中时通常采用写分配法进行写操作。

    我个人理解,写命中就是这个数据在cahce和内存里,但是内容不对需要更新。写未命中就是,这个数据不在内存,也不在cache,需要申请一块新的空间存放它。

  • 相关阅读:
    dpkg安装deb缺少依赖包的解决方法
    一个linux命令之grep---1
    win10快捷键
    Windows Server 2008 R2遗忘管理员密码后的解决方案
    手工释放linux内存
    oracle数据库用户加锁和解锁
    完全卸载Oracle数据库软件
    Linux上VNC 启动和关闭常见问题
    Linux 开启VNCSERVER
    RedHat 简易配置 VNC Server 与VNC View详细说明
  • 原文地址:https://www.cnblogs.com/ljwdemo/p/12571177.html
Copyright © 2020-2023  润新知