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的做法。
Cache写机制的更多相关文章
- Cache写机制:Write-through与Write-back
cache through https://www.cnblogs.com/gordonkong/p/7161809.html 原文地址:https://blog.csdn.net/wyzxg/art ...
- Linux 内核的文件 Cache 管理机制介绍
Linux 内核的文件 Cache 管理机制介绍 http://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完 ...
- cache写策略
cache写策略 Write Through (完全写入) CPU向cache写入数据时,同时向memory也写一份,使cache和memory的数据保持一致.优点是简单,缺点是每次都要访问memor ...
- Linux页快速缓存与回写机制分析
參考 <Linux内核设计与实现> ******************************************* 页快速缓存是linux内核实现的一种主要磁盘缓存,它主要用来降低 ...
- linux块设备的IO调度算法和回写机制
************************************************************************************** 參考: <Linux ...
- HDFS写机制
HDFS写机制: 1.client客户端调用分布式文件系统对象DistributedFileSystem对象的create方法,创建一个文件输出流FSDataOutputStream对象. 2.Dis ...
- 转:深入浅出cache写策略
转自:http://www.ssdfans.com www.ssdfans.com › blog › 2018/07/27 › 深入浅出cach... 随着计算机行业的飞速发展,CPU的速度和内存的大 ...
- Linux 内核的文件 Cache 管理机制介绍-ibm
https://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使 ...
- Linux 3.2中回写机制的变革
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://alanwu.blog.51cto.com/3652632/1109952 wri ...
随机推荐
- Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
转:https://m.sogou.com/web/id=4c468b90-3f64-418c-acf8-990b5fe2a757/keyword=python%20os%E6%A8%A1%E5%9D ...
- 学习JAVAWEB第十三天
会话技术 1. 会话:一次会话中包含多次请求和响应. * 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 2. 功能:在一次会话的范围内的多次请求间,共享数据 3. 方式: ...
- C++读写图片文件
1.C方式 string sourcefilename = "D:\\Logo.jpg"; string destfilename="D:\\Logo1.jpg" ...
- Java流程控制02:Scanner进阶
Scanner进阶使用 import java.util.Scanner;public class Demo04 { public static void main(String[] args ...
- Java里的new
java里的new的英文意思就是"新的"的意思.在JAVA里就是创建一个新的实例,或者说一个新的对象,一个普通类在没有实例化之前,就是new之前,它的属性,方法等等在内存中都是不存 ...
- windows10下设置Maven的本地仓库和阿里云的远程中央仓库
感谢原文作者:测试zhang 原文链接:https://www.jianshu.com/p/1782feee6eff 菜鸟:https://www.runoob.com/maven/ 1.设置Mave ...
- hibernate中的一级缓存与闪照区
首先Hibernate中的一级缓存默认是打开的,并且范围从session创建到session关闭,存储的数据必须是持久态的数据. 1 //从session创建开始,一级缓存也跟着创建 2 Sessio ...
- having筛选结果集
题目要求:让你输出有两科及其以上挂科(60分及格)的学生的名单? name subject score 错误的做法: mysql> select name, count(scoure<60 ...
- MySQL 日志管理及备份与恢复
MySQL 日志管理及备份与恢复 1.日志管理 2.备份与恢复 1.日志管理: MySQL的默认日志保存位置为/usr/local/mysql/data 日志开启方式有两种:通过配置文件或者是通过命令 ...
- Spark算子 - aggregate
释义 将每个partition内元素进行聚合,然后将每个partition的聚合结果进行combine,得到最终聚合结果.最终结果允许跟原始RDD类型不同 方法签名如下: def aggregate[ ...