您的位置:首页 > 运维架构 > Linux

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)强制写入到主存中以保证一致性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  写入数据 系统 模式