linux下写穿/直写(Write-Through)与写回(Write-Back)
2015-08-07 17:35
615 查看
CPU使用高速缓存(dcache)时,它对内存的的写操作有两种模式:写穿(write-throuht)、写回(write-back)。
写穿(write-throuht)模式:
该模式下,CPU对主存写数据时,不经过dcache直接写到内存,此时对于写的实现比较简单,如果系统只用写穿模式的话,dcache则变成了读缓存了。
写回(write-back)模式:
什么是写回
CPU写入数据时,不直接将数据写入内存,而是写入dcache,当dcache数据被替换出去时才写回主存。
此时存在一个问题,并不是所有的dcache中的数据都被修改过,因此没必要把所有替换出去的数据都重新写入主存。
为了表示哪些数据被修改过(dcache中是数据和主存中的数据是否不一致),dcache中每一块增加了一个记录信息位,CPU修改过的dcache时,设置此记录信息位(此时数据块为脏的(dirty), cache数据写入到主存时清理此位(此时数据块为干净的(clean)。
有了次记录信息位,数据从dcache替换到主存时只替换脏的数据块即可),
为什么有写回模式
大家都是知道cache速度远大于RAM(主存)。通过dcache吸收系统的写操作,在必要的时候再统一写入主存,从而减少频繁的相对较慢的对主存的写操作,这样明显能加速系统。同样的思想在主存与磁盘中也存在。
通过flush_dcache_page(page)函数可以把dcache中对应的页(page)强制写入到主存中以保证一致性。
写穿(write-throuht)模式:
该模式下,CPU对主存写数据时,不经过dcache直接写到内存,此时对于写的实现比较简单,如果系统只用写穿模式的话,dcache则变成了读缓存了。
写回(write-back)模式:
什么是写回
CPU写入数据时,不直接将数据写入内存,而是写入dcache,当dcache数据被替换出去时才写回主存。
此时存在一个问题,并不是所有的dcache中的数据都被修改过,因此没必要把所有替换出去的数据都重新写入主存。
为了表示哪些数据被修改过(dcache中是数据和主存中的数据是否不一致),dcache中每一块增加了一个记录信息位,CPU修改过的dcache时,设置此记录信息位(此时数据块为脏的(dirty), cache数据写入到主存时清理此位(此时数据块为干净的(clean)。
有了次记录信息位,数据从dcache替换到主存时只替换脏的数据块即可),
为什么有写回模式
大家都是知道cache速度远大于RAM(主存)。通过dcache吸收系统的写操作,在必要的时候再统一写入主存,从而减少频繁的相对较慢的对主存的写操作,这样明显能加速系统。同样的思想在主存与磁盘中也存在。
通过flush_dcache_page(page)函数可以把dcache中对应的页(page)强制写入到主存中以保证一致性。
相关文章推荐
- [原创]java局域网聊天系统
- 架构纵横谈之二 ---- 架构的模式与要点
- Windows 系统组策略应用全攻略(下)第1/3页
- PostgreSQL教程(二):模式Schema详解
- 代理区独立模式的说明
- 如何进行系统配置
- C#列出当前系统所有正在运行程序的方法
- SqlServer系统数据库的作用深入了解
- Powershell获取系统中所有可停止的服务
- C#中的递归APS和CPS模式详解
- C#迭代器模式(Iterator Pattern)实例教程
- C#观察者模式(Observer Pattern)实例教程
- 不用杀毒软件也能让系统百毒不侵的技巧
- C#单例模式(Singleton Pattern)实例教程
- C#实现系统托盘通知的方法
- Erlang中的模块与模式匹配介绍
- Android操作系统的架构设计分析
- C#装饰器模式(Decorator Pattern)实例教程
- 文章推荐系统(二)
- PHP网上调查系统