zoukankan      html  css  js  c++  java
  • 在CPU Hit/MIss时,Cache和Main Memory之间交互策略

     关键词:Hit、Miss、Read Through、Read Allocate、Write Through、Write Back、Write Allocate、No Write Allocate等。

    对Cache和Main Memory之间数据维护设计到性能问题,也涉及到一致性问题。

    了解下面各种策略,有利于理解Cache和Main Memory行为和配置Cache属性。

    1. 各种策略行为和优缺点

    Read Through:CPU Read data Through(not Allocate) Cache to Main Memory.

    Read Allocate:CPU Read data from Main Memory and Allocate it in cache

    Write Through:CPU Write data Through Cache to Main Memory。

    Write Back:CPU Write data Back to Cache.

    Write Allocate: CPU Write data to Main Memory and Allocate it in Cache.

    No Write Allocate: CPU Write data to Main Memory, but No Allocate it in Cache.

    Read/Write在Hit/Miss情况下,不同策略的表现行为:

      行为    
    Read Hit CPU直接从Cache获取数据。  

    Miss

    Read Through

    直接从Main Memory读取内容到CPU,不经过Cache。

     避免Cache占用,但是对统一内容连续读效率很低。

    Read Allocate

    No Read Through

    先把数据从Main Memory读取到Cache中,再从Cache中读取数据到CPU。

    占用Cache, 
    Write Hit Write Through 把数据同时从CPU写到Cache和Main Memory中。 优点:
     - 未命中的读不会导致写到Main Memory。
     - 较易实现。
     - Main Memory中内容往往是最新的,也即一致性。
    缺点:
     - 写入Main Memory较慢。
     - 每次写操作都会触发访问Main Memory。
     - 所需带宽更大。
    Write Back

    只把数据从CPU写到Cache中。

    后续可以通过flush方式把数据从Cache写入到Main Memory中。

    优点:
     - 写的速度非常快,Cache访问速度远高于Main Memory。
     - 多次到Cache的写只需一次到Main Memory的写。
     - 所需带宽更小。
    缺点:
      - 实现较难
      - Main Memory数据和Cache中不一致。
      - 导致Cache替换的读操作会将dirty快写入Main Memory。
    Miss Write Allocate

    先把要写的数据从Main Memory载入到Cache中,CPU将数据写入到Cache中。

    后续通过flush将数据从Cache写入到Main Memory中。

     
    No Write Allocate 数据在Main Memory中被修改,直接从CPU写入到Main Memory中。不会被加载到Cache中。  

    2. Write策略组合

    不同Write Hit和Write MIss策略组合下的行为: 

    Write Hit Policy Write Miss Policy    
    Write Through Write Allocate

    Hit:将数据写入Cache和Main Memory。

    Miss:将数据从Main Memory读到Cache中,然后CPU Hit,CPU再写到Cache和Main Memory中。

    当Miss的时候将数据带到Cache中,然后再将数据写入Cache和Main Memory,其中Cache的操作不太合情理

     
    Write Through No Write Allocate

    Hit:将数据写入到Cache和Main Memory。

    Miss:更新Main Memory中内容,并且不会在Cache中存在相关内容。

    后续内容写入将更新Main Memory,因为使用了Write Through策略。因此,节省了一些时间,不会在Miss时将内容带进Cache中,因为它看起来毫无用处。

     
    Write Back Write Allocate

    Hit:将数据写入Cache并更新dirty位,Main Memory不会被更新。

    Miss:更新Main Memory中的内容并将该块带到Cache中;

    对同一块的后续写入,如果该块最初导致未命中,则下次将命中Cache,为该块设置脏位。这将消除额外的Main Memory访问,并比Write Through与Write Allocate组合执行更加有效。

     
    Write Back No Write Allocate  

    Hit:当它写入Cache设置块的脏位时,Main Memory不会被更新;

    MIss:更新Main Memory中的块,而不将该块带到Cache中;

    对同一块的后续写入,如果该块最初为Miss,则会一直导致Miss,并导致执行效率非常低

     

    所以常见的组合是Write Through-No Write AllocateWrite Back-Write Allocate

    3. 一个ARM内存实例

    下图是M33的Cache策略实例:

    参考文档:

    Interaction Policies with Main Memory

    Write Through and Write Back in Cache

    联系方式:arnoldlu@qq.com
  • 相关阅读:
    POJ NOI0113-05 素数回文数的个数(PKU2928)
    POJ NOI0113-04 垂直直方图(PKU2800)
    POJ NOI0113-03 八进制小数(PKU2765)
    UVALive2245 POJ1131 HDU1376 ZOJ1086 Octal Fractions【进制】
    HDU2708 Vertical Histogram
    POJ2136 Vertical Histogram【打印图案】
    POJ2190 HDU2714 ISBN
    POJ NOI0113-02 不吉利日期(PKU2723)
    POJ NOI0113-01 数制转换(PKU2710)
    POJ NOI MATH-7828 最大公约数与最小公倍数
  • 原文地址:https://www.cnblogs.com/arnoldlu/p/14522564.html
Copyright © 2011-2022 走看看