《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发起的事务,只展示时空图)