《AMBA 5 CHI Architecture Specification》

AMBA-CHI协议详解(一)
AMBA-CHI协议详解(二)
AMBA-CHI协议详解(三)
AMBA-CHI协议详解(四)
文章目录
- 2.3.3 Atomic transactions
- 2.3.4 Stash transactions
- 2.3.5 Atomic transactions
- 2.3.6 Prefetch transactions
- 2.3.7 DVM transactions
- 2.3.8 Retry
- 2.3.9 Home Initiated transactions
- 2.3.9.1 Home to Subordinate Read transactions
- 2.3.9.2 Home to Subordinate Write transactions
- 2.3.9.3 Home to Subordinate Write Zero transactions
- 2.3.9.4 Home to Subordinate Combined Write and CMO transactions
- 2.3.9.5 Home to Subordinate Dataless transactions
- 2.3.9.6 Home to Subordinate Atomic transactions
- 2.3.9.7 Home to Snoopee transactions
- 2.3.9.8 Home to Snoopee DVM transactions
2.3.3 Atomic transactions

原子事务有两种可能的序列。
1. AtomicStore
● RN向Home发送一个AtomicStore请求。
● Home有两种选择,可以将完成响应和数据请求响应发送给RN。
Alt 1a. Separate responses
● 向RN返回一个数据请求,DBIDResp或DBIDRespOrd。
● 向RN返回一个完成响应Comp。
允许(但不是必须)在返回Comp之前等待写数据。
Alt 1b. Combined response
Home向RN返回一个合并的数据请求和完成响应(CompDBIDResp)
● RN将写数据NCBWrData发送到Home。
RN必须在接收到DBIDResp、DBIDRespOrd或CompDBIDResp后才发送此消息。
● 可选地,当请求需要TagMatch响应时,Home将TagMatch响应TagMatch返回给RN。
在返回TagMatch之前等待写数据是允许的,但不是必需的。
2. Other Atomic transactions
对于AtomicLoad, AtomicSwap或AtomicCompare事务:
● RN向Home发送一个AtomicLoad、AtomicSwap或AtomicCompare请求。
● Home向RN发送一个数据请求响应(DBIDResp或DBIDRespOrd)。
● RN将写数据NCBWrData发送到Home。
RN必须在接收到DBIDResp或DBIDRespOrd后才发送此消息。在发送写数据之前,RN不能等待接收CompData。
● Home向RN返回一个组合的数据和完成响应CompData。
在返回CompData之前等待写数据是允许的,但不是必需的。
● 可选地,当请求需要TagMatch响应时,Home将TagMatch响应TagMatch返回给RN。
在返回TagMatch之前等待写数据是允许的,但不是必需的。
2.3.4 Stash transactions

以下因素会影响事务流:
● 允许Home忽略Stash请求并且不执行任何Stash窥探。
● 允许Stashee忽略Stash请求,而不请求 data pull来完成事务。
● StashOnceSepUnique和StashOnceSepShared可以有单独的StashDone响应或组合的CompStashDone响应。
1. Write with Stash Hint.

带有Stash提示的写请求 :
● WriteUniquePtlStash
● WriteUniqueFullStash
WriteUnique的事务流程与Immediate Write相同,
Home可以选择性地发送Stash Snp请求。
Alt 1a. SnpUniqueStash
● Home发送SnpUniqueStash给Stashee。
通常,Home发送SnpUniqueStash用于partial line write.。其他的snoops,包括其他stash的snoops,是允许的。
● Stashee有两种选择响应Stash Snoop请求。
Alt 1a1. No DataPull
Not request a data pull
Alt 1a2 DataPull
Request a data pull
data pull请求的完成与Allocating Read事务的完成相同。
Alt 1b. Other stashing snoops
● 发送SnpMakeInvalidStash, SnpStashShared,或SnpStashUnique到Stashee。
通常,Home发送SnpMakeInvalidStash进行full line write。其他的snoops,包括其他stash 的snoops,是允许的。
● Stashee有两种选择响应Stash Snoop请求。
Alt 2a. No DataPull
Not request a data pull
Alt 2b DataPull
Request a data pull
data pull请求的完成与Allocating Read事务的完成相同。
2. Independent Stash without StashDone response


3. Independent Stash with StashDone response


带有StashDone响应的独立Stash事务:
● StashOnceSepUnique
● StashOnceSepShared
Home可以选择发送一个隐藏 stash snoop请求,SnpStashUnique或SnpStashShared,到Stashee。
通常,当原始请求是StashOnceSepUnique时,Home发送SnpStashUnique;当原始请求是StashOnceSepShared时,发送SnpStashShared。
● Stashee有两种选择响应Stash Snoop请求。
Alt 3a1. No DataPull
Not request a data pull
Alt 3a2 DataPull
Request a data pull
data pull请求的完成与Allocating Read事务的完成相同。
Home有两种选择来完成事务:
Alt 3b1. Separate response from Home
● 向RN返回一个完成响应Comp。
● 将StashDone响应返回给RN。
Alt 3b2. Combined response from Home
Home向RN返回一个合并响应CompStashDone。
2.3.5 Atomic transactions

1. Transactions without CompAck or Persist
没有CompAck或Persist的Dataless事务是:
● CleanInvalid
● CleanInvalidPoPA
● MakeInvalid
● CleanShared
● CleanSharedPersist
● Evict
RN将请求发送到Home。
Home向RN返回一个完成响应Comp。
2. Transactions with CompAck
Dataless transactions with有:
● CleanUnique
● MakeUnique
RN将请求发送到Home。
Home向RN返回一个完成响应Comp。
RN向Home发送一个完成确认(CompAck)。(RN必须在收到Comp后才发送此消息)
3. Transactions with Persist
Dataless transaction with Persist有:
● CleanSharedPersistSep
RN将请求发送到Home。
Home有三种选择来完成事务。
Alt 3a. Separate responses from the Home
● 向RN返回一个完成响应Comp。
● 向RN返回persist响应。
Alt 3b. Combined response from Home
Home向RN返回一个合并的响应CompPersist。
Alt 3b. Combined response from Home
对于来自下级的Persist响应,会发生以下情况:
● Home向SN发送一个下游请求,CleanSharedPersistSep。
● SN向Home返回一个完成响应Comp。
● Home向RN返回一个完成响应Comp。
如果Home的下游有观察者,那么Home必须等待SN的Comp响应,然后再将Comp响应返回给RN。
● SN向RN返回persist响应。
2.3.6 Prefetch transactions

RN直接向下级发送PrefetchTgt请求。
2.3.7 DVM transactions

● 事务从RN向Home发出DVMOp请求开始。
● Home有三种备选方案,可以将完成响应和数据请求响应发送给Requester
1.Non-sync DVMOp with separate response
如果DVMOp是Non-sync DVMOp,Home可以返回分离的响应。
● Home向RN返回一个数据请求(DBIDResp)。
● RN将写数据NCBWrData发送到Home。
RN必须在接收到DBIDResp后才发送此消息。
● Home向请求者返回一个完成响应Comp。
允许(但不是必须)在返回Comp之前等待写数据。
2.Non-sync DVMOp with combined response
如果DVMOp是Non-sync DVMOp,Home可以返回组合的响应。
● Home向请求者返回一个合并的数据请求和完成响应(CompDBIDResp)
● RN将写数据NCBWrData发送到Home。
RN只有在接收到CompDBIDResp后才能发送此消息。
3.Sync DVMOp
如果DVMOp是sync DVMOp,Home可以返回组合的响应。
● Home向 RN返回一个数据请求(DBIDResp)。
● RN将写数据NCBWrData发送到Home。
RN必须在接收到DBIDResp后才发送此消息。
● Home向RN返回一个完成响应Comp。
Home必须在接收到写数据后才返回这个值。
2.3.8 Retry

请求事务第一次发送时没有协议信用(P-Credit)。如果事务不能在Completer上被接受,则给出一个RetryAck响应,表明该事务未被接受,并在提供适当的凭证时可以再次发送。当事务带着信用第二次发送时,它被保证被接受。
● RN发出一个没有信用的请求。
● Completer向RN返回retry响应RetryAck。
● Completer向RN返回一个协议信用授予PCrdGrant。
通常,在Retry响应之后很长一段时间才返回协议信用授予。但是,在非典型情况下,可以在RetryAck响应之前返回PCrdGrant响应。
● RN有两种选择来结束Retry序列。此步骤必须仅在RN同时接收到RetryAck和PCrdGrant之后执行。
1. Resend the original request
RN发出带有信用的请求。
3. Cancel the request and return the credit(取消请求并退还信用证)
RN向Completer发送一个协议信用返回(PCrdReturn)
2.3.9 Home Initiated transactions
(Home发起的事务,只展示时空图)
2.3.9.1 Home to Subordinate Read transactions

2.3.9.2 Home to Subordinate Write transactions

2.3.9.3 Home to Subordinate Write Zero transactions

2.3.9.4 Home to Subordinate Combined Write and CMO transactions

2.3.9.5 Home to Subordinate Dataless transactions

2.3.9.6 Home to Subordinate Atomic transactions

2.3.9.7 Home to Snoopee transactions

2.3.9.8 Home to Snoopee DVM transactions




















