CHI trans简介--dataless trans

本文详细分析了多个与缓存管理相关的命令,如CleanUnique用于获取写权限,而MakeUnique则旨在获得cacheline的主导权,清除其他副本。CleanInvalid和MakeInvalid两者都涉及无效化所有副本并可能flush数据到内存,但MakeInvalid不保存脏数据。Evict则是通知主机缓存行已被驱逐。这些命令涉及的状态转换和处理流程对理解多级缓存系统至关重要。
摘要由CSDN通过智能技术生成

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

dataless trans的整体流程图下:

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

CleanUnique

  • 访问snoopable空间,想要获得unique状态,来获得写的权限;
  • 典型的场景是,当前RN有shared copy时,想要获得该cacheline的写权限;
  • 被snoop的RN对应的cacheline,如果是dirty的,需要写回主存;
  • 和ReadUnique的区别在于,partial的写,merge发生在下一级cache,而非本地
  • 初始状态:除了UDP之外的所有状态;

    

  • 结束状态:UC/UD/UCE;

    

  • 被snoop的RN, 最终状态都是I;

    

  • 对应的snoop请求

    

  • requester的cache state transaction

    

  • 可能的场景flow:

        

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

MakeUnique

  • 访问的是snoopable空间,想要获得该cacheline的主导权,不需要获得对应的数据;
  • 其他RN处dirty的数据直接丢弃;
  • 典型场景是当前的这个RN,保证它会改写整条cacheline;
  • 初始状态:UC/UCE/SC/SD/I;

      

  • 结束状态:UD, 注意这里不能是UC, 因为这个命令的本意,就是他保证一定会改写这个cacheline;

      

  • 被snoop的RN的状态:I;

        

  • 状态转换图示如下,注意这里的响应和最终状态的关系;
  • 这里comp response是Comp_UC, 最终状态是UD, 应该是该RN保证会写,所以UC-> UD;

     

  • 可能的flow如下:

        

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

CleanInvalid

  • HN将所有包含该cacheline的RN中的copy都invalid掉,如果有dirty的数据,flush到memory;
  • 初始状态和结束状态都只能是I;

      

     

  • 状态转换图如下:

        

  • 对应的snp请求;

      

  • communication node;

      

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

MakeInvalid

  • HN将所有包含该cacheline的RN中的copy都invalid掉,如果有dirty的数据,直接丢弃;
  • 这个命令对应的snoop attributes如下:

      

  • 同cleaninvalid, 初始状态和结束状态都只能是I;
  • 初始状态:

      

  • 结束状态:

      

  • 被snp的RN的状态如下:

    

  • 对应的snp请求:

    

  • 状态转换图如下:

        ​​​​​​

  • communitcation node;

    

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

Evict

  • 告诉HN, 当前RN中的这条clean的cacheline不再进行缓存;
  • 类似于CPU知会HNF某一条cacheline已经被逐出了,因为是clean的,这个数据也不给你了,直接丢掉;
  • snoop atrr:

    

  • 初始状态:

    

  • 结束状态:

      

  • 状态转换图:

    

  • RN在发送之前,会先将状态调整到I; -> RNF move the cache line to I state and issue an Evict trans;
  • evict request是一种提示,HNF回comp resp的时候,可以更新snoop filter 或者directory, 或者不更新;

        

  • 因此,发送evict的RN,只能是invalid状态;
  • communication nodes

    

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

CleanShared

  • 类似于cleaninvalid, 将所有包含该cacheline的copy的RN状态,都改成non-dirty的,如果有dirty的,写回mem;
  • 当cleanshared的completion response返回后,标志着所有的cache copy都变成了non-dirty状态,同时任何dirty的copy, 都已经写入到了memory中;
  • snoop attr;

      

  • 初始状态:I,UC, SC,;

      

  • 结束后的状态,也只能是I,UC, SC;

    

  • 被snp之后的RN, 状态可以是UC/SC/I;

     

  • 对应的snoop请求;

    

  • 状态转换图如下:

    

  • communication node

cleansharedPersist

  • 此命令的completion response返回,标志着所有的cache copy都变成了non-dirty state, 如果由dirty的cache copy, 已经写入了POP或者最终的目的地;
  • 示意流程图

CleanSharedPersistSep

  • 此命令的persist responce,或者comppersist completion 返回,标志着所有的cache copy都变成了non-dirty state, 如果由dirty的cache copy, 已经写入了POP或者最终的目的地;
  • 功能同cleansharedPersist, 只是允许两个seperatede response;
  • 两个命令,倾向于用CleanSharedPersistSep,这样允许即可以返回合并的响应,也可以返回分开的响应;
  • 状态转变在cleanshared中已经描述了;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值