• AMBA-CHI协议详解(三)



    《AMBA 5 CHI Architecture Specification》
    在这里插入图片描述
    AMBA-CHI协议详解(一)
    AMBA-CHI协议详解(二)
    AMBA-CHI协议详解(三)
    AMBA-CHI协议详解(四)


    2.3.2 Write transactions

    写事务分为以下几类:
      ● Immediate Write
      ● Write Zero
      ● CopyBack Write
      ● Combined Immediate Write and CMO
      ● Combined Immediate Write and Persist CMO
      ● Combined CopyBack Write and CMO

    2.3.2.1 Immediate Write

    在这里插入图片描述
    Immediate Write顺序如下:
      事务从RN向HN发出 Immediate Write请求开始。

    Immediate Writ包含:
      — WriteNoSnpPtl
      — WriteNoSnpFull
      — WriteNoSnpDef
      — WriteUniquePtl
      — WriteUniqueFull
      — WriteUniquePtlStash
      — WriteUniqueFullStash

    为完成这些事务而生成的Snoop请求被视为独立于Home的事务,不会显示在此flow中。生成到SN(不属于DWT流)的写请求视为独立事务,不会再此flow中显示。

    请求包含以下影响事务流的字段:
      — ExpCompAck
      — TagOp

    Home可以选择使用DWT或不使用DWT来完成事务。事务流的其余部分还取决于原始请求是否需要CompAck,由ExpCompAck字段确定。

    1.DWT
    在这里插入图片描述

    Home使用DWT(写数据直接由RN到SN)
      ● 事务从RN向HN发出 Immediate Write请求开始。
      ● Home发送一个下行写请求,WriteNoSnpPtl, WriteNoSnpFull,或WriteNoSnpDef(DoDWT域段 = 1)到SN。
      ● SN向RN返回DBIDResp响应。
      ● RN发送写数据NCBWrData或取消数据WriteDataCancel到SN。(RN必须在接收到DBIDResp响应后才能发送)
      ● SN向HN返回一个Comp响应。允许(但不是必需的)SN在将Comp返回到Home之前等待来自RN的写数据。
      ● HN向RN返回一个Comp响应。允许Home在将Comp返回给RN之前等待SN的Comp,但这不是必需的。
      ● 可选地,当请求需要TagMatch响应时,SN将tag match响应TagMatch返回给请求者。在返回TagMatch之前等待写数据是允许的,但不是必需的。




    2. No DWT, no CompAck
    在这里插入图片描述在这里插入图片描述
    对于不需要CompAck,Home不使用DWT的情形
      ● Home有两种选择,可以将完成响应和数据请求响应发送给RN。
         Alt 2a1. Separate responses from the Home
         ● HN向RN返回DBIDResp或DBIDRespOrd响应。
         ● HN向RN返回Comp响应。允许(但不是必须)在返回Comp之前等待写数据。

         Alt 2a2. Combined responses from the Home
         ● HN向RN返回一个合并的响应CompDBIDResp。

      ● RN向HN发送写数据NCBWrData或取消数据WriteDataCancel。RN必须在接收到DBIDResp, DBIDRespOrd, or
    CompDBIDResp相应之后才能发送数据。

      ● 当请求需要TagMatch响应时,Home有两种选择。
         Alt 2b1. TagMatch from Home
         ● HN向RN返回一个TagMatch响应。在返回TagMatch之前等待写数据是允许的,但不是必需的。

         Alt 2b2. TagMatch from Subordinate
         ● HN向SN发送一个下行的写请求WriteNoSnpPtl或WriteNoSnpFull(DoDWT域段为0)。SN有两种选择发送返回数据请求DBID和完成响应Comp。
           Alt 2b2a. Separate responses from the Subordinate
           ● SN返回DBIDResp响应至HN。
           ● SN返回Comp响应至HN。允许(但不是必需的)SN在将Comp返回到Home之前等待从Home写入数据。

           Alt 2b2b. Combined response from the Subordinate
           ● SN向HN返回一个组合响应CompDBIDResp。

         ● HN向SN发送写数据NCBWrData或取消数据WriteDataCancel。Home必须在接收到DBIDResp或CompDBIDResp后才发送此消息。

         ● SN向RN返回TagMatch响应。在返回TagMatch之前等待写数据是允许的,但不是必需的。




    3. No DWT, with CompAck
    在这里插入图片描述在这里插入图片描述

    对于需要完成确认(CompAck)的请求,Home不使用DWT的情形:
      ● Home有两种选择,可以将完成响应和数据请求响应返回给Requester。
         Alt 3a1. Separate responses from the Home
         ● HN向RN返回DBIDResp或DBIDRespOrd响应。
         ● HN向RN返回Comp响应。允许(但不是必须)在返回Comp之前等待写数据。

         Alt 3a2. Combined responses from the Home
         ● HN向RN返回一个组合的CompDBIDResp响应。

      ● RN有两种选择发送写数据CompAck到Home。
         Alt 3b1. Separate responses from the Requester
         ● RN向HN发送写数据NCBWrData或数据取消WriteDataCancel。RN必须在接收到DBIDResp、DBIDRespOrd或CompDBIDResp后才发送此消息。
         ● 发送一个完成确认指示CompAck。RN只有在收到Comp或CompDBIDResp后才能发送此消息。允许,但不是必须,在发送CompAck之前等待DBIDResp或DBIDRespOrd。允许(但不期望)在返回CompAck之前等待TagMatch。

         Alt 3b2. Combined responses from the Requester
         ● RN向Home发送一个组合的写数据和完成确认(NCBWrDataCompAck)。RN必须只在收到CompDBIDResp或同时收到DBIDResp/DBIDRespOrd和Comp之后才发送此消息。

      ● 可选地,当请求需要TagMatch响应时,Home有两种返回响应的选择
         Alt 3c1. TagMatch from Home
         ● Home将tag匹配响应TagMatch返回给RN。在返回TagMatch之前等待写数据是允许的,但不是必需的。
         Alt 3c2. TagMatch from Subordinate
         ● Home向SN发送一个下行写请求,WriteNoSnpPtl或WriteNoSnpFull( DoDWT域段 = 0)。SN有两种选择,可以向Home返回数据请求和完成响应。

           Alt 3c2a. Separate responses from Subordinate
           ● SN向HN返回DBIDResp响应。
           ● SN向HN返回Comp响应。允许(但不是必须)下级在将Comp发送到HN之前等待写数据。

           Alt 3c2b. Combined response from Subordinate
           ● SN向HN返回一个组合响应CompDBIDResp响应。

         ● HN向SN发送写数据NCBWrData或写数据取消WriteDataCancel。Home必须在接收到DBIDResp或CompDBIDResp后才发送此消息。
         ● SN向RN返回TagMatch响应。在返回TagMatch之前等待写数据是允许的,但不是必需的。

    允许Write事务的Completer在接收到WriteDataCancel响应后立即返回Comp响应,而不依赖于写请求的处理或由于写而发送的任何snoops的完成。



    2.3.2.2 Write Zero

    在这里插入图片描述
       ● 事务从RN向HN发出 Write Zero请求开始。

    Write Zero transactions有:
       — WriteUniqueZero
       — WriteNoSnpZero
       ● Home有两种选择,可以将完成响应和数据请求响应发送给RN。
       1. Separate response from Home
         ● HN向RN返回DBIDResp或DBIDRespOrd。
         ● HN向RN返回一个Comp。
       2. Combinedresponse from Home
         ● Home向RN返回一个合并的数据请求和完成响应(CompDBIDResp)。



    2.3.2.3 CopyBack Write

    在这里插入图片描述

       ● 事务从RN向HN发出CopyBack Write请求开始。
       CopyBack Write transactions有:
       — WriteBackPtl
       — WriteBackFull
       — WriteCleanFull
       — WriteEvictFull
       — WriteEvictOrEvict

       请求包含以下影响事务流的字段:
       — CAH
       — Opcode

       ● Home可以选择使用Comp或CompDBIDResp响应来完成事务。来自Home的响应的选择由请求类型和CAH值决定。
         1. WriteEvictOrEvict or CopyAtHome request
         请求为WriteEvictOrEvict或者请求中的CAH位值被设置为1。
         ● Home有两个可选的响应返回给RN:
            Alt 1a. Without data transfer
            ● Home向RN返回一个完成响应Comp,以避免数据传输。
            ● RN发送一个完成确认,CompAck。无论原始请求中的ExpCompAck值是多少,请求方都必须在收到comp响应之后发送此消息。

            Alt 1b. With data transfer
            ● Home向RN返回一个合并的响应(CompDBIDResp)。
            ● RN将写数据CopyBackWrData发送到Home。RN只有在收到CompDBIDResp响应后才能发送此消息。

         2.Not WriteEvictOrEvict and not CopyAtHome request
         该请求不是WriteEvictOrEvict,并且该请求中的CAH位值被设置为0。
            ● Home向RN发送一个合并的响应CompDBIDResp。
            ●RN将写数据CopyBackWrData发送到Home。RN只有在收到CompDBIDResp响应后才能发送此消息



    2.3.2.4 Combined Immediate Write and CMO

    在这里插入图片描述
    Combined Immediate Write with CMO transactions 的顺序是:
       ● 事务从RN向HN发出 Combined Write and CMO请求开始。
       Combined Immediate Write and CMO transactions 有
       — WriteNoSnpPtlCleanInv
       — WriteNoSnpPtlCleanSh
       — WriteNoSnpFullCleanInv
       — WriteNoSnpFullCleanSh
       — WriteUniquePtlCleanSh
       — WriteUniqueFullCleanSh
       — WriteNoSnpPtlCleanInvPoPA
       — WriteNoSnpFullCleanInvPoPA

    为完成这些事务而生成的Snoop请求被视为独立于Home的事务,不会显示在此 flow中。生成到下游SN(不属于DWT流)的写请求被视为独立事务,不会在此 flow中显示。

       请求包含以下影响事务流的字段:
       — Opcode
       — ExpCompAck
    —Note———————
    在Combined Immediate Write and CMO transaction中不允许Match的TagOp值,因此不允许TagMatch响应,并且TagOp字段不影响事务流
    ——————————

       ● 为了完成事务,Home有三种选择:
       — Combined Write to Subordinate with DWT
       — Non-combined Write to Subordinate with DWT
       — Without DWT

       ● 事务流的其余部分也将取决于原始请求是否需要完成确认(由ExpCompAck确定)。

    1.Combined Write to Subordinate with DWT
    在这里插入图片描述
    Home使用组合写入和DWT。
      ● Home向SN发送一个DoDWT = 1的下行组合写请求。
      ● SN向HN返回DBIDResp响应。
      ● RN向SN发送写数据NCBWrData或取消数据WriteDataCancel。RN必须在接收到DBIDResp后才发送此消息
      ● SN向HN返回一个Comp响应。允许(但不是必需的)SN在将Comp返回到Home之前等待来自RN的写数据。
      ● HN向RN返回一个Como响应。允许Home在将Comp返回给RN之前等待从属的Comp,但这不是必需的。
      ● SN向Home返回一个CMO完成响应CompCMO。允许SN在将CompCMO返回到Home之前等待来自RN的写数据,但这不是必需的。
      ● HN向RN返回一个CMO完成响应(CompCMO)。在将CompCMO返回给RN之前,Home是允许的,但不是必需的,等待从SN的Comp或CompCMO。如果Home的下游有一个观察者(observer),那么Home必须等待从SN的CompCMO响应,然后再将CompCMO返回给RN。


    2. Non-combined Write to Subordinate with DWT
    在这里插入图片描述在这里插入图片描述
    Home使用Non-combined Write和DWT。
      ● HN向SN发送一个下行的WriteNoSnpPtl或WriteNoSnpFull(DoDWT域段 = 1 )。
      ● SN向RN返回DBIDResp。
      ● RN向SN发送写数据NCBWrData或取消数据WriteDataCancel。RN必须在接收到DBIDResp后才发送此消息
      ● SN向Home返回一个完成响应Comp。允许(但不是必需的)SN在将Comp返回到Home之前等待来自RN的写数据。
      ● HN向RN返回一个完成响应Comp。允许Home在将Comp返回给RN之前等待SN的Comp,但这不是必需的。
      ● HN向RN返回一个CMO完成响应(CompCMO)。允许Home在将CompCMO返回给RN之前等待SN的Comp,但这不是必需的。


    3.No DWT
    在这里插入图片描述
    在这里插入图片描述
      ● Home不使用DWT。
      ● Home有两种方法来请求写数据。
         Alt 3a1. Separate responses from Home
         ● 向RN返回DBIDResp或DBIDRespOrd响应。
         ● 向RN返回一个Comp响应。允许(但不是必须)在返回Comp之前等待写数据。

         Alt 3a2. Combined response from Home
         ● Home向RN返回一个合并的数据请求和完成响应(CompDBIDResp)。
      ● 根据事务是否需要完成确认,RN有几种发送写数据的备选方案。
         Alt 3b1. No CompAck required
         ● 不需要完成确认(CompAck),RN向Home发送写数据(NCBWrData)或写取消(WriteDataCancel)。RN必须在接收到DBIDResp、DBIDRespOrd或CompDBIDResp后才发送此消息。

         Alt 3b2. Separate response from Requester
         ● CompAck是必需的。RN有两种选择发送写数据和完成确认到Home。
           Alt 3b2a. Separate response from Requester
           ● RN向Home发送写数据NCBWrData或写取消WriteDataCancel。RN必须在接收到DBIDResp、DBIDRespOrd或CompDBIDResp后才发送此消息。
           ● RN向HN发送CompAck。RN只有在收到Comp或CompDBIDResp后才能发送此消息。不允许在发送CompAck之前等待CompCMO。

           Alt 3b2b. Combined response from Requester
           ● RN向Home发送一个组合的写数据和完成确认(NCBWrDataCompAck)。RN必须只在收到CompDBIDResp或同时收到DBIDResp/DBIDRespOrd和Comp之后才发送此消息。

      ● Home向RN返回一个CMO完成响应(CompCMO)。允许Home在返回CompCMO之前等待来自RN的写数据,但这不是必需的。



    2.3.2.5 Combined Immediate Write and Persist CMO

    在这里插入图片描述
    Combined Immediate Write and Persist CMO事务的顺序是:

    ● 事务开始于Requester 向Home发出Combined Immediate Write and Persist CMO请求。

    Combined Immediate Write and Persist CMO事务有:
       — WriteNoSnpPtlCleanShPerSep
       — WriteNoSnpFullCleanShPerSep
       — WriteUniquePtlCleanShPerSep
       — WriteUniqueFullCleanShPerSep

    请求包含以下影响事务流的字段:
       — Opcode
       — ExpCompAck

    ——Note—数字硬鉴———
    在 Combined Immediate Write and Persist CMO事务中不允许Match的TagOp值,因此不允许TagMatch响应,并且TagOp字段不影响事务流。
    ————————————

    ● Home可以选择使用以下方式完成事务:
       — Combined Write to the Subordinate with DWT
       — Combined Write to the Subordinate with DWT
       — Combined Write to the Subordinate with DWT

    注意:事务流的其余部分将取决于原始请求是否需要CompAck,由ExpCompAck字段确定。

    1.Combined Write to Subordinate with DWT
    在这里插入图片描述

      ● Home向SN发送一个 DoDWT = 1的组合写请求。
      ● SN向Requester返回一个DBIDResp响应。
      ● RN向SN发送写数据NCBWrData或发送数据取消WriteDataCancel。
       (RN必须在收到DBIDResp响应之后再发出)
      ● SN向HN返回一个Comp响应。
       (允许(但不是必需的)SN在将Comp返回到Home之前等待来自RN的写数据。)
      ● Home向RN返回一个完成响应Comp。
       (允许Home在将Comp返回给RN之前等待来自SN的Comp,但这不是必需的)
      ● SN向Home返回一个CMO完成响应CompCMO。
       (允许SN在将CompCMO返回到Home之前等待来自RN的写数据,但这不是必需的。)
      ● Home向RN返回一个CMO完成响应(CompCMO)。
       (在将CompCMO返回给RN之前,Home是允许但不是必需的,等待从SN的Comp或CompCMO。如果Home节点的下游有观察者,那么Home节点必须等待SN的CompCMO响应,然后再将CompCMO返回给RN。)
      ● SN向RN返回persist响应。
       (在返回Persist之前等待写数据是允许的,但不是必需的。)


    2.Non-combined write to Subordinate with DWT
    在这里插入图片描述
    在这里插入图片描述

      ● Home向SN发送一个下行的non-combined write request写请求,WriteNoSnpPtl或WriteNoSnpFull,DoDWT = 1 。
      ● SN向RN返回一个响应(DBIDResp)。
      ● RN向SN发送写数据NCBWrData或取消数据WriteDataCancel。
       RN必须在接收到DBIDResp后才发送此消息。
      ● SN向Home返回一个完成响应Comp。
       允许(但不是必需的)SN在将Comp返回到Home之前等待来自RN的写数据。
      ● Home向RN返回一个完成响应Comp。
       允许Home在将Comp返回给RN之前等待SN的Comp,但这不是必需的。
      ● Home有两种选择将CMO响应发送给请求者。

         Alt 2a. Persist CMO to Subordinate
            ● Home向SN发送一个下游请求,CleanSharedPersistSep。
            ● SN向Home返回一个完成响应Comp。
            ● Home向RN返回一个CMO完成响应(CompCMO)。
             如果Home的下游有一个观察者,那么Home必须等待从SN的Comp响应,然后再将CompCMO返回给RN。
            ● SN向RN返回persist响应。

         Alt 2b. No CMO to Subordinate as part of transaction
            Home将所有的CMO响应发送给RN。Home有两种选择
               Alt 2b1. Separate responses from Home
                ● 向RN返回一个CMO完成响应(CompCMO)。
                ● 向RN返回persist响应。
               Alt 2b2. Combined response from Home
                ● Home向RN返回一个合并的完成响应CompPersist。

    3.No DWT
    在这里插入图片描述
    在这里插入图片描述

    Home不使用DWT。
      ● Home有两种方法来请求写数据。

         Alt 3a1. Separate responses from Home
          ● 向RN返回一个数据请求,DBIDResp或DBIDRespOrd。
          ● 向RN返回一个完成响应Comp。
           允许(但不是必须)在返回Comp之前等待写数据。

         Alt 3a2. Combined response from Home
          ● Home向RN返回一个合并的数据请求和完成响应(CompDBIDResp)。

      ● 根据事务是否需要CompAck,RN有几种发送写数据的备选方案。

         Alt 3b1. No CompAck required
           RN向Home发送写数据NCBWrData或写取消WriteDataCancel。
           RN必须在接收到DBIDResp、DBIDRespOrd或CompDBIDResp后才发送此消息

         Alt 3b2. CompAck required
           需要一个完成确认响应(CompAck)。RN有两种选择发送写数据和CompAck到Home。

           Alt 3b2a. Separate response from Requester
              ● 向Home发送写数据NCBWrData或写取消WriteDataCancel。
              RN必须在接收到DBIDResp、DBIDRespOrd或CompDBIDResp后才发送此消息。
              ● 发送一个完成确认(CompAck)到Home。
              RN只有在收到Comp或CompDBIDResp后才能发送此消息。
              不允许在发送CompAck之前等待CompCMO或Persist。

           Alt 3b2b. Combined response from Requester
               RN向Home发送一个组合的写数据和完成确认(NCBWrDataCompAck)。
               RN 必须只在接收到CompDBIDResp或同时接收到DBIDResp/DBIDRespOrd和Comp之后才发送此消息。
               在发送NCBWrDataCompAck之前,不允许等待CompCMO或Persist。

      ● Home有几个替代方案来完成事务的剩余部分。

         Alt 3c1. Combined Write without DWT to Subordinate
            ● HN向SN发送一个不带DWT的组合写操作
            ● SN有两种选择来请求写数据。

            Alt 3c1a. Separate responses from Subordinate
               ● 将数据请求(DBIDResp)返回到Home
               ● 向Home返回一个完成响应Comp。
               允许(但不是必须)在返回Comp之前等待写数据。

            Alt 3c1b. Combined response from Subordinate
               SN向Home返回一个合并的数据请求和完成响应CompDBIDResp。
            ● Home向SN发送写数据NCBWrData或取消数据WriteDataCancel。
              Home必须在接收到DBIDResp或CompDBIDResp后才发送此消息。
            ●SN向Home返回一个CMO完成响应CompCMO。
              在返回CompCMO之前等待写数据是允许的,但不是必需的
            ● Home向RN返回一个CMO完成响应(CompCMO)。
              允许Home在将CompCMO返回给RN之前等待从SN发出的CompCMO,但这不是必需的。
            ● SN向RN返回persist响应。
              在返回Persist之前等待写数据是允许的,但不是必需的。

         Alt 3c2. All CMO transactions from Home
           Home有两种选择将所有CMO响应发送给RN。
            Alt 3c2a. Separate responses from Home
              ● 向RN返回一个CMO完成响应(CompCMO)。
              ● 向RN返回persist响应。
            Alt 3c2b. Combined response from Home
              Home向RN返回一个合并的响应CompPersist。

         Alt 3c3. Only CMO transactions to Subordinate
           ● Home向SN发送一个下游请求,CleanSharedPersistSep。
            通常,只有在先前作为独立事务发送了对SN的写操作的情况下,才会使用这种替代方法。
           ● SN向Home返回一个完成响应Comp
           ● Home向RN返回一个CMO完成响应(CompCMO)。
             如果Home的下游有一个观察者,那么Home必须等待从SN的Comp响应,然后再将CompCMO返回给RN。
           ● SN向RN返回persist响应。

    2.3.2.6 Combined CopyBack Write and CMO

    在这里插入图片描述
    请求包含以下影响事务流的字段:
       Opcode
       CAH

    1. Without Persist
    在这里插入图片描述

    Combined CopyBack Write and CMO transactions without persist事务有以下:
       ● WriteBackFullCleanInv
       ● WriteBackFullCleanSh
       ● WriteCleanFullCleanSh
       ● WriteBackFullCleanInvPoPA

    RN发出以上事务请求

       ● RN向Home发出请求。
          Alt 1a1. CopyAtHome request
            请求中的CAH位值设置为1。
           Home有两个可选的响应返回给RN
              Alt 1a1a. Without data transfer
              ● Home向RN返回一个完成响应Comp,以避免数据传输。
              ● RN发送一个完成确认,CompAck。
               无论原始请求中的ExpCompAck值是多少,RN都必须在收到comp响应之后发送此消息。

              Alt 1a1b. With data transfer
              ● Home向请求者返回一个合并的数据请求和完成响应(CompDBIDResp)。
              ● RN将写数据CopyBackWrData发送到Home。
               RN只有在收到CompDBIDResp响应后才能发送此消息。

          Alt 1a2. No CopyAtHome request
            请求中的CAH位值设置为0。
            ● Home向RN发送一个合并的数据请求和完成响应CompDBIDResp。
            ● RN将写数据CopyBackWrData发送到Home。
            RN只有在收到CompDBIDResp后才能发送此消息。
       ● Home向RN返回一个CMO完成响应(CompCMO)。
       在返回CompCMO之前,允许(但不是必须)等待CopyBackWrData或CompAck。





    1. With Persist
    在这里插入图片描述
    在这里插入图片描述
    CopyBack写和CMO合并事务是:
      ● WriteBackFullCleanShPerSep
      ● WriteCleanFullCleanShPerSep

    RN发出Combined CopyBack Write and CMO request with Persist response

      ● RN向Home发出请求。
         Alt 2a1. CopyAtHome request
          请求中的CAH位值设置为1。
          Home有两个可选的响应返回给RN:

            Alt 2a1a. Without data transfer
            ● Home向RN返回一个完成响应Comp,以避免数据传输。
            ● RN发送一个完成确认,CompAck。
            无论原始请求中的ExpCompAck值是多少,RN都必须在收到compp响应之后发送此消息。

            Alt 2a1b. With data transfer
            ● Home向RN返回一个合并的数据请求和完成响应(CompDBIDResp)。
            ●RN将写数据CopyBackWrData发送到Home。
             RN只有在收到CompDBIDResp响应后才能发送此消息。

        Alt 2a2. No CopyAtHome request
          请求中的CAH位值设置为0。
          ● Home向RN发送一个合并的数据请求和完成响应CompDBIDResp。
          ● RN将写数据CopyBackWrData发送到Home。
           RN只有在收到CompDBIDResp后才能发送此消息。

    Home有三种选择来完成事务,persist响应要么来自Home,要么来自SN。
    Alt 2b1. Persist from Home
      Home有两种选择来发送CMO完成响应和persist响应。
      允许Home在返回CompCMO、Persist或CompPersist之前等待CopyBackWrData或CompAck,但不是必需的。

       Alt 2b1a. Separate response from Home
        ● 向RN返回一个CMO完成响应(CompCMO)。
        ● 向RN返回persist响应。

       Alt 2b2b. Combined response from Home
        Home向RN返回一个组合的CMO完成响应和持久响应CompPersist。

    Alt 2b2. Persist from Subordinate
      当一个Combined Write被发送给下级,并且Persist响应被返回给RN时,会发生以下情况:
      ● Home向SN发送一个下行写请求WriteNoSnpPtlCleanShPerSep或WriteNoSnpFullCleanShPerSep。
       允许Home在发送下行写请求之前等待CopyBackWrData或CompAck,但不是必需的。
      ● SN有两种选择,可以将完成响应和数据请求响应返回给Home。
       Alt 2b2a. Separate response
        ● 将DBIDResp响应返回到Home。
        ● 向Home返回一个完成响应Comp。
         允许(但不是必须)在返回Comp之前等待写数据。

       Alt 2b2b. Combined response
        SN向Home返回一个合并的数据请求和完成响应CompDBIDResp。

      ● Home向SN发送写数据NCBWrData或取消数据WriteDataCancel。
       Home必须在接收到DBIDResp或CompDBIDResp后才发送此消息。
      ● SN向Home返回一个CMO完成响应CompCMO。
       在返回CompCMO之前等待写数据是允许的,但不是必需的。
      ● Home向RN返回一个CMO完成响应(CompCMO)。
       允许Home在将CompCMO返回给RN之前等待从SN发出的CompCMO,但这不是必需的。
      ● SN向RN返回persist响应。
       在返回Persist之前等待写数据是允许的,但不是必需的。

    Alt 2b3. Only CMO transaction to Subordinate
      当一个 persist CMO 被发送给SN并且Persist响应被返回给RN时,会发生以下情况:
      ● Home向SN发送一个下游请求,CleanSharedPersistSep。
       通常,只有在先前作为独立事务发送对SN的写操作或写入操作已被取消的情况下,才会使用此替代方法。
      ● SN向Home返回一个完成响应Comp。
      ● Home向RN返回一个完成响应CompCMO。
    如果Home的下游有一个观察者,那么Home必须等待从SN的Comp响应,然后再将CompCMO返回给RN。
      ● SN向RN返回持久响应persist。

  • 相关阅读:
    文字转图片,文字水印图片,合成图片,教你 Python 生成网站原创配图!
    人工智能与机器学习
    [WUSTCTF2020]颜值成绩查询-1
    JAVA线程的创建和使用
    39+又是一篇惊鸿巨作,教你如何打造高分SCI文章
    kafka零拷贝sendfile及mmap简述
    git 介绍 ,入门举例
    自用的一些网址,码住!
    设计模式 (三) 结构型设计模式系列
    ajax异步同步及请求方式
  • 原文地址:https://blog.csdn.net/qq_40147893/article/details/138753762