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