CHI trans简析--CopyBack Write

文章详细分析了缓存系统中write操作的三种类型:ImmediateWrite、WriteZero和CopyBackwrite,涉及RN访问HN的过程。WriteBackptl/full是将脏数据发送给HN,状态从UD/SD变为I;WriteCleanFull则保持自身缓存行清洁,而将脏数据写入HN;WriteEvictFull和WriteEvictOrEvict处理UC或SC状态的缓存行,可能涉及数据下传或无效化操作。所有操作都关注状态转换和数据流动路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        此处仅简单分析每个命令的含义,背景,以及可能的状态变化,对于每个trans具体包含的流程,将在下文描述;

    write类型的操作分为三类,Immediate Write/ Write Zero/ Copy Back write;

Copy Back write

        RN访问HN;

   ==============================================================

   WriteBack ptl/full

  • 往HN或者SN发送一条dirty的cacheline数据;如果是partial的, 就用ptl的命令发送;
  • 根据上面的描述,那么RN在发送时的状态,只能是UD/SD;

       

  • 状态转换图如下:

     

  • 发送流程如下:

        

   ==============================================================

   WriteCleanFull

  • 将整条dirty的cacheline数据写入HN, 但是自身仍然保持该cacheline的clean态
  • 根据上面的描述,发送该命令时的RN状态,只能是UD/SD;

      

  • 命令完成后状态为:UC/SC;
  • 状态转化图如下:

      

   ==============================================================

   WriteEvictFull

  • 将UC的cacheline, 写入下一级cache;  -> 初始状态只能是UC;

      

  • 状态转换图示如下:

      

   ==============================================================

   WriteEvictOrEvict

  • 这个请求类似于将writeevictfull/evict这两个命令合并成一个,这种方式允许HN来决定是否发送命令
  • 将clean的cacheline(UC/SC), 写到下一级cache;
  • HN可以选择是否接收这个数据,如果不接受,那么就不会有数据的传递(evict)
  • 如果completer不接收数据,则数据不会发送过来;
  • 如果需要发送地址,data size为cacheline size;
  • likelyShared表示当前这个cacheline的状态; 

           

  • 初始状态如下:

     

  • 结束状态都是invalid, 不管数据是否接收;

     

   (Comp响应,就是不要发数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值