`

Cache 的write back和write through

阅读更多
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的还要多。



分享到:
评论

相关推荐

    write back(回写)和write through(写通)

    在缓存管理策略中,"Write Back"(回写)和"Write Through"(写通)是两种常见的写操作策略,它们在处理数据更新时有着不同的机制和优缺点。 **Write Back(回写)** Write Back策略是一种非立即写入主存的数据更新...

    阵列Cache写机制:Write-through与Write-back区别.docx

    阵列Cache写机制是指阵列卡Cache的两种使用方式,即Write Through和Write Back。Write Through方式是指系统的写磁盘操作并不利用阵列卡的Cache,而是直接与磁盘进行数据的交互。Write Back方式则利用阵列Cache作为...

    硬盘Cache写机制 Write-through与Write-back的区别.docx

    硬盘 Cache 写机制 Write-through 与 Write-back 的区别 硬盘 Cache 写机制是指在计算机系统中,使用缓存 Cache 来提高磁盘写入速度的机制。其中,Write-through 和 Write-back 是两种常见的写机制,下面将详细介绍...

    cache write miss policy

    写命中策略分为两类:写通(Write-through)和写回(Write-back)。写通策略是指每次缓存写命中时,数据既写入缓存,也同时写入主内存。这样做的好处是主内存和缓存保持一致,但缺点是增加了内存写操作的次数,可能...

    MCU Cache 操作机制

    综上所述,MCU内部的Cache操作机制涉及多种策略和技术,包括Write-through、Write-back、Writeallocate与No-writeallocate等。选择合适的策略可以显著提高系统的性能和可靠性。理解这些基本概念对于优化基于MCU的...

    cache设计实验_v0.11

    【cache设计实验_v0.11】实验主要探讨了如何设计高效的Cache系统,涉及的关键知识点包括Cache的接口设计、内部结构、I$与D$的分离策略以及Write Through与Write Back两种写策略的选择。 1. **Cache接口设计**:...

    s3c2410_CACHES_WRITE_BUFFER.rar_S3C2410_WRI_arm cache

    1. 写策略:S3C2410的Cache支持两种写策略——Write-Through(直写)和Write-Back(回写)。直写模式下,每当数据更新,都会立即写回到主内存;而回写模式则将数据暂存于Cache中,只有当Cache满或者特定条件触发时才...

    头歌计算机组成原理2路组相联cache设计

    Write-through策略是每次数据更新都立即同步到主存,而Write-back策略则是将修改的数据暂存在Cache中,等到替换时再写回主存。 4. 淘汰算法:2路组相联Cache通常使用LRU(最近最少使用)算法来决定替换哪个块。LRU...

    Cache Memory相关操作总结

    cache memory, cache line, write through and write back. Average memory access time = Hit time + Miss rate x Miss penalty

    Cache的工作原理

    主要分为两种:Write Through(写穿)和Write Back(回写)。Write Through策略下,数据同时写入Cache和主存;Write Back策略下,数据只写入Cache,等到该数据被替换时再一次性写回主存。 #### 六、总结 Cache是...

    mmu和cache详解

    6. **写策略**:Cache对数据的写操作有两种方式,写直达(Write Through)和写回(Write Back)。前者将数据立即写入主存,后者仅在数据被替换出Cache时才写回。 7. **预取(Prefetching)**:为了进一步提高性能,...

    cache一致性和cache不一致的解决方法

    - **写回法(Write-back)**:写操作仅发生在Cache中,当Cache中的数据被修改时,会在适当的时候(例如,当数据被替换出去时)才将修改后的数据写回主存。 ##### 4.2 多处理机条件下的Cache一致性 在多处理机或...

    mips cache管理和操作非常有价值的两个文档

    MIPS处理器可能采用写直达(Write-Through)、写回(Write-Back)和写禁止(Write-Invalidate)策略来维护一致性。 5. **缓存填充**:当CPU首次访问某个内存地址时,如果数据不在Cache中,会发生Cache miss,此时...

    实验6:Two-way Associated Cache1

    实验采用了Two-way Associated Cache的设计,结合了LRU替换算法和write back + write allocate策略。 **Two-way Associated Cache** 是一种缓存组织结构,其中每个缓存行可以映射到两个不同的位置,相比直接相联...

    stm32F7 _Cache_MPU

    写数据时,存在Write-through(写穿)和Write-back(写回)两种策略。Write-through策略下,每次写操作都同时更新Cache-line和实际的物理地址。而Write-back策略下,数据首先更新到Cache-line,延迟到适当的时机或...

    简易的cache模拟器

    - **写操作**:Cache支持写直达(Write-Through)和写回(Write-Back)两种策略。前者每次写操作都同步更新主存,后者仅在替换时才更新主存。 ### 3. 实现Cache模拟器的关键部分 - **地址映射模块**:根据给定的...

    cache存储器 DMA和cache一致性问题.doc

    1. **写直达(Write-Through)**:当Cache中的数据被修改时,立即同步写回主内存,保证主内存和Cache数据一致,但降低了Cache的性能。 2. **写回(Write-Back)**:数据在Cache中被修改时不立即写回,只有当Cache块...

    处理器系统中的Cache-Memory

    - **写直达(Write Through)**: 每次写入Cache时都同时写入主内存。 - **写回(Write Back)**: 只在数据被替换出Cache时才写入主内存。 - **写分配(Write Allocate)**: 当Cache缺失时,即使只写入也要分配一个新...

    cache_axi4.rar

    写操作可能采用Write-Through或Write-Back策略,前者立即更新主内存,后者只写入Cache并在适当时间写回。 使用Verilog进行Cache实现,你需要理解硬件描述语言的基本语法和逻辑设计原理。以下是一些关键步骤: 1. *...

    CSAPP的cache实验代码

    写入操作相对复杂,需要考虑Write-Through和Write-Back的区别,前者每次写都同步到主存,后者只在替换时才写回。 在实验过程中,我们还需要实现性能指标的计算,如命中率、miss rate、存取时间等,这些指标用于评估...

Global site tag (gtag.js) - Google Analytics