Cache 写机制分为:Write-through和Write-back

Write-through(直写模式)

定义:在数据更新时,同时写入缓存Cache和后端存储(主存);

优点:操作简单;

缺点:因为数据修改需要同时写入存储,数据写入速度较慢。

对于写缺失使用no write allocate policy(见下文)的write through 处理流程

Write-back(回写模式)

定义:在数据更新时只写入缓存Cache,只在数据被替换出缓存时,被修改(用dirty标记)的缓存数据才会被写到后端存储(主存);

优点:数据写入速度快,因为不需要写到后端存储(主存);

缺点:一旦更新后的数据未被写入存储时出现系统掉电的情况,数据将无法找回。

对于写缺失使用write allocate policy(见下文)的write back 的处理流程:

注意:上述两种写模式都是针对当缓存cache中存在要写的数据的地址时的分配策略,然而,当要写的数据的地址不在缓存cache中,即发生Write miss。

Write-miss(写失效)

write-miss(即所要写的数据的地址不在cache中)的处理方式有两种:

no write allocate policy:将要写的内容直接写回main memory;

write allocate policy:将要写的地址所在的块先从main memory(主存)调入cache中,然后写cache;

注意:拿L1 Dcache为例,因为对一个cache line的写入一般不会刚好是一个cache line的长度(抓了trace看过,肉眼观察是8个字节的访问粒度居多),

一个cache line一般是64字节,你的一次register spilling只有几个字节,也就是说你的一次写入只更新了一个cache line的一小部分,其他部分的值必须保持和内存一致,

所以你不能在cache里随便找一个地方就写,而是要先把旧值取上来,再写入,这是write-allocate的做法。

 

最新文章

  1. 让 Ubuntu 桌面自动更换壁纸
  2. FPGA 开发笔记 点滴
  3. JAVA List<> 合并去重
  4. linux net command /uboot command
  5. python 相关安装和配置
  6. (笔记)angular 多选按钮
  7. OBD Experts OBD II Software OBD II Protocol Stack
  8. Demo学习: Basic jQuery
  9. javascript继承—继承的实现原理(1)
  10. Mysql表锁、行锁、页锁
  11. 六、 从Controller中访问模板数据(ASP.NET MVC5 系列)
  12. python版mapreduce题目实现寻找共同好友
  13. intellij idea 主题大全,看不惯idea 那2种主题的来这里了
  14. Winform DevExpress控件库(一) DevExpress控件库的安装与新建第一个DevExpress项目
  15. 初学javascript《一》break和continue的标签问题
  16. Android 模块构建错误不能下载依赖包
  17. 11.1、socket连接中的粘包、精确传输问题
  18. 配置alibaba的yum 源
  19. 关于NavigationItem.rightBarButtonItem设置
  20. centos 6无法上外网

热门文章

  1. 学习Java第2天
  2. 守护石谈学习Java之路
  3. 计算机网络再次整理————UDP例子[六]
  4. Linux中Swap与Memory内存简单介绍 (转)
  5. Jackson 高级应用
  6. Vue项目history模式下微信分享总结
  7. Category基本概念
  8. java中Statement 对象
  9. git推送项目到github并使用gitee做镜像仓库
  10. 聊聊MySQL的加锁规则《死磕MySQL系列 十五》