Cache 的write back和write through 收藏
为了保证cache和memory的数据一致性,通常有三种方法:
1〉write through:CPU向cache写入数据时,同时向memory也写一份,使cache和memory的数据保持一致。优点是简单,缺点是每次都要访问memory,速度比较慢。
2〉post write:CPU更新cache数据时,把更新的数据写入到一个更新缓冲器,在合适的时候才对memory进行更新。这样可以提高cache访问速度,但是,在数据连续被更新两次以上的时候,缓冲区将不够使用,被迫同时更新memory。
3〉write back:CPU更新cache时,只是把更新的cache区标记一下,并不同步更新memory。只是在cache区要被新进入的数据取代时,才更新memory。这样做的原因是考虑到很多时候cache存入的是中间结果,没有必要同步更新memory。优点是CPU执行的效率提高,缺点是实现起来技术比较复杂。
回写与透写
对于cache的算法。大方面有两种,Write-Through(通写)和Write-Back(回写). Write-Through,也就是说OS发送的处理data的请求,一直要等到全部memory里面的data正确写到稳定存储media(如硬盘)中,然后返回给OS报告处理完毕,然后OS才会去update其状态;这种情况下,通常不会有dirty cache. 而Write-Back,就是在OS发送处理data的请求后,该算法会将它用buffer存起来,并在没有正确写到稳定存储media(如硬盘)中前,就告诉OS处理完毕,然后OS就会去update;但是要是此时掉电或其他故障,buffer的数据没有被写入稳定存储media(如硬盘),那么os update的信息就和media中的信息不一致.为了避免这样,所以才用NVRAM,它在调电后数据仍然不丢失,但是在被重新上电后,其数据会是dirty的,也就是楼主所提到的dirty cache(如何将dirty cache更新到media,这是Write-Back应该做的事)。 这和买卖东西相似,Write-Through就相当于你亲自去买东西,你买到什么就可以亲手拿到;而Write-Back就和中介差不多,你给了中介钱,然后它告诉你说你的东西买到了,然后就相信拿到这个东西了,但是要是出现特殊情况中介跑了(掉链子了),你再去检查,东西原来没有真正到手。
1.Cache的两个类型
--Write Through
当写数据进Cache时,也同时更新了相应的Memory里的内容
--Write back
只是写到Cache里,Memory的内容要等到cache保存的要被别的数据替换或者系统做cache flush时,才会被更新。
2.Cache的两个函数
--Flush
把Cache内容写回Memory,当Cache为Write through,不需要Flush
--Invalidate
把Cache内容直接丢掉不要。
3.Cache的使用场合
当有DMA在使用memory的时候,一般要用到cache的处理。因为DMA在访问memory时是不经过cache的。比较典型的比如在Ethernet,wireless,USB等driver里,DMA会操作descriptors和packet buffers,Driver要做这些处理
--如果driver使用descripter和packet buffer的地址都是cache的地址,那么
a).Driver在读descripter里一些状态比如Owned by CPU/DMA,有没有收到包时,要对descripter当前结构里的内容做cache invalidate,收到packet后,也要对packet buffer做cache invalidate
b).Driver在写descripter里一些状态比如Owned by DMA,要发送包时,要对descripter当前结构里的内容做cache flush,发送packet时,也要对packet buffer做cache flush
--有些driver会对descripter使用uncache 地址,那么上面两种情况里invalidate/flush就不用做了。一般很少会对packet buffer也用uncache地址的,因为对packet内容的处理将会很频繁,使用uncache会很慢。而descripter一般由于结构比较小,如果也使用cache地址的话,做invalidate/flush的时间消耗可能会比uncache的还要多。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/efan_linux/archive/2009/09/23/4584807.aspx
分享到:
相关推荐
在缓存管理策略中,"Write Back"(回写)和"Write Through"(写通)是两种常见的写操作策略,它们在处理数据更新时有着不同的机制和优缺点。 **Write Back(回写)** Write Back策略是一种非立即写入主存的数据更新...
阵列Cache写机制是指阵列卡Cache的两种使用方式,即Write Through和Write Back。Write Through方式是指系统的写磁盘操作并不利用阵列卡的Cache,而是直接与磁盘进行数据的交互。Write Back方式则利用阵列Cache作为...
硬盘 Cache 写机制 Write-through 与 Write-back 的区别 硬盘 Cache 写机制是指在计算机系统中,使用缓存 Cache 来提高磁盘写入速度的机制。其中,Write-through 和 Write-back 是两种常见的写机制,下面将详细介绍...
写命中策略分为两类:写通(Write-through)和写回(Write-back)。写通策略是指每次缓存写命中时,数据既写入缓存,也同时写入主内存。这样做的好处是主内存和缓存保持一致,但缺点是增加了内存写操作的次数,可能...
综上所述,MCU内部的Cache操作机制涉及多种策略和技术,包括Write-through、Write-back、Writeallocate与No-writeallocate等。选择合适的策略可以显著提高系统的性能和可靠性。理解这些基本概念对于优化基于MCU的...
【cache设计实验_v0.11】实验主要探讨了如何设计高效的Cache系统,涉及的关键知识点包括Cache的接口设计、内部结构、I$与D$的分离策略以及Write Through与Write Back两种写策略的选择。 1. **Cache接口设计**:...
1. 写策略:S3C2410的Cache支持两种写策略——Write-Through(直写)和Write-Back(回写)。直写模式下,每当数据更新,都会立即写回到主内存;而回写模式则将数据暂存于Cache中,只有当Cache满或者特定条件触发时才...
Write-through策略是每次数据更新都立即同步到主存,而Write-back策略则是将修改的数据暂存在Cache中,等到替换时再写回主存。 4. 淘汰算法:2路组相联Cache通常使用LRU(最近最少使用)算法来决定替换哪个块。LRU...
cache memory, cache line, write through and write back. Average memory access time = Hit time + Miss rate x Miss penalty
主要分为两种:Write Through(写穿)和Write Back(回写)。Write Through策略下,数据同时写入Cache和主存;Write Back策略下,数据只写入Cache,等到该数据被替换时再一次性写回主存。 #### 六、总结 Cache是...
6. **写策略**:Cache对数据的写操作有两种方式,写直达(Write Through)和写回(Write Back)。前者将数据立即写入主存,后者仅在数据被替换出Cache时才写回。 7. **预取(Prefetching)**:为了进一步提高性能,...
- **写回法(Write-back)**:写操作仅发生在Cache中,当Cache中的数据被修改时,会在适当的时候(例如,当数据被替换出去时)才将修改后的数据写回主存。 ##### 4.2 多处理机条件下的Cache一致性 在多处理机或...
MIPS处理器可能采用写直达(Write-Through)、写回(Write-Back)和写禁止(Write-Invalidate)策略来维护一致性。 5. **缓存填充**:当CPU首次访问某个内存地址时,如果数据不在Cache中,会发生Cache miss,此时...
实验采用了Two-way Associated Cache的设计,结合了LRU替换算法和write back + write allocate策略。 **Two-way Associated Cache** 是一种缓存组织结构,其中每个缓存行可以映射到两个不同的位置,相比直接相联...
写数据时,存在Write-through(写穿)和Write-back(写回)两种策略。Write-through策略下,每次写操作都同时更新Cache-line和实际的物理地址。而Write-back策略下,数据首先更新到Cache-line,延迟到适当的时机或...
- **写操作**:Cache支持写直达(Write-Through)和写回(Write-Back)两种策略。前者每次写操作都同步更新主存,后者仅在替换时才更新主存。 ### 3. 实现Cache模拟器的关键部分 - **地址映射模块**:根据给定的...
1. **写直达(Write-Through)**:当Cache中的数据被修改时,立即同步写回主内存,保证主内存和Cache数据一致,但降低了Cache的性能。 2. **写回(Write-Back)**:数据在Cache中被修改时不立即写回,只有当Cache块...
- **写直达(Write Through)**: 每次写入Cache时都同时写入主内存。 - **写回(Write Back)**: 只在数据被替换出Cache时才写入主内存。 - **写分配(Write Allocate)**: 当Cache缺失时,即使只写入也要分配一个新...
写操作可能采用Write-Through或Write-Back策略,前者立即更新主内存,后者只写入Cache并在适当时间写回。 使用Verilog进行Cache实现,你需要理解硬件描述语言的基本语法和逻辑设计原理。以下是一些关键步骤: 1. *...
写入操作相对复杂,需要考虑Write-Through和Write-Back的区别,前者每次写都同步到主存,后者只在替换时才写回。 在实验过程中,我们还需要实现性能指标的计算,如命中率、miss rate、存取时间等,这些指标用于评估...