這篇開始講述事務可以完成的方式。它顯示了參與事務的各種組件可以使用的所有允許的選項。
注: 除了PCrdReturn 和PrefetchTgt之外,其他的事務在開始的時候都可以包含一個Retry的序列,也就是說可能會發(fā)生Retry。
一、Read transactions
Read事務分為Allocating Read和Non-allocating Read。
1.1 Allocating Read
Allocating Read事務的順序是:
一、該事務從請求者向Home發(fā)出Allocating Read請求開始。初始請求是以下請求之一:
—— ReadClean
—— ReadNotSharedDirty
—— ReadShared
—— ReadUnique
—— ReadPreferUnique
—— MakeReadUnique
二、可選方案(Alt) 1-6顯示了Home處理事務的不同方式:
1.Combined response from Home
Home向請求者(一般為RNF)返回一個組合的數據和響應CompData(讀取數據+響應)。通常,當Home可以同時返回數據和響應時,就會使用此選項。例如,數據在本地緩存。
2.Separate data and response from Home
Home向請求者返回一個單獨的響應( RespSepData),和讀取的數據(DataSepResp)。通常,當Home返回的響應比提供的數據更快時,就會使用此選項。
3.Combined response from Subordinate
——HNF向SNF發(fā)送讀請求ReadNoSnp。
——可選地,當HNF請求 ReadReceipt響應時(即order !=0),SNF將返回一個ReadReceipt給HNF。
——SNF向RNF返回一個組合的響應和數據,CompData。
通常,HNF會使用此選項來減少消息計數或降低設計復雜性。
4.Response from Home, Data from Subordinate
——HNF向RNF返回一個單獨的響應,RespSepData。
——HNF向SNF發(fā)送讀數據請求ReadNoSnpSep。
——SNF返回一個ReadReceipt;注意HNF并不需要等待ReadReceipt才發(fā)RespSepData。
——SNF將讀取數據DataSepResp返回給請求者。
通常,當HNF可以快速返回響應,但它沒有可用的數據,并且需要下屬返回數據時,它將使用此選項。
注:請求者在收到RespSepData即可返回CompAck,而不需要等到DataSepResp數據返回之后再發(fā)。
5.Forwarding snoop
Home請求Snoopee將讀取數據Snp*Fwd轉發(fā)給請求者。
**snoopee:接收snoop請求的RNF。
也就是說,數據直接通過snoopee轉發(fā)給請求者,而不需要再通過HNF轉一道。
此處又有4個可選項:
Alt 5a.With response to Home
——Snoopee向請求者返回一個組合的響應和讀取數據,CompData。
——Snoopee向HNF返回一個snoop響應,SnpRespFwded。
通常,當Snoopee可以將數據轉發(fā)給請求者,并且不需要向HNF提供數據副本時,它就會使用此選項。
Alt 5b.With data to Home
——Snoopee向請求者返回一個組合的響應和讀取數據,CompData。
——Snoopee向HNF返回一個帶數據的snoop響應,SnpRespDataFwded。
注意:通常,當Snoopee可以將數據轉發(fā)到請求者,但也必須向主頁提供數據副本時,將使用此選項。例如,當Snoopee持有緩存行的dirty副本,但返回給請求者的數據必須是clean的時,就會發(fā)生這種情況。當HNF請求數據副本時,也會發(fā)生這種情況。
Alt 5c.Failed, must use alternative
snoopee返回了一個SnpResp給HNF。
HNF必須使用前面描述的其他替代方案來完成對請求者的事務。
Alt 5d.Failed, must use alternative
Snoopee返回了一個帶數據的snoop響應給HNF,SnpRespData或 SnpRespDataPtl。
HNF必須使用前面描述的其他替代方案來完成對請求者的事務。
6.MakeReadUnique only
HNF返回給請求者的完成響應Comp。
此選項只適用于不需要讀數據消息時的MakeReadUnique。
三、當請求者向HNF發(fā)送完成確認CompAck時,事務就結束了。
只能在接收到 CompData或者 RespSepData后發(fā)送。
允許在發(fā)送CompAck之前等待DataSepResp,但不是必需的。
(也就是說RNF必須在收到響應之后才能給HNF發(fā)送完成確認CompAck,而不需要等到收到數據)**
1.2 Non-allocating Read transactions
Non-allocating Read transactions的順序序列是:
一、事務從請求者向HNF發(fā)出讀取請求開始。
Non-allocating Read事務包括:
—— ReadNoSnp
—— ReadOnce
—— ReadOnceCleanInvalid
—— ReadOnceMakeInvalid
這些請求如果包含了以下字段的話,會影響事務的傳輸flow:
—— Order(order要求通過ReadReceipt保序)
—— ExpCompAck(必須回復CompAck)
二、可選的Alt 1-6 顯示了HNF可以處理事務的不同方式。
1.Combined response from Home
——(可選的)當原始請求有order保序要求時,HNF向請求者返回一個ReadReceipt。
——HNF向請求者返回一個組合響應和讀取數據,CompData。
2.Separate data and response from Home
——Home向請求者返回一個單獨的響應,RespSepData;以及一個單獨的讀數據,DataSepResp。如果請求有order要求,且不需要完成確認,則不能使用此替代方案。
3.Combined response from Subordinate
——(可選的)當原始請求有order保序要求時,HNF向請求者返回一個ReadReceipt。
——HNF向SN發(fā)送讀請求ReadNoSnp。
——(可選的)當HNF請求讀接收響應時,SN將返回ReadReceip給HNF。當不需要完成確認時,HNF必須這樣做。
——SN向請求者返回一個組合響應和讀取數據,CompData。
注:如果請求需要order要求,且沒有要求完成確認時,不能使用這種處理方式。
4.Response from Home, data from Subordinate
——HNF向請求者返回一個單獨的響應RespSepData,并向SN發(fā)ReadNoSnpSep。
——(可選的)當HNF請求讀接收響應時,SN將返回ReadReceipt給HNF。HNF必須要求ReadReceipt,除非原始要求表明order要求和(completion acknowledge)完成確認響應。
允許(但不要求),HNF等待ReadReceipt,然后返回RespSepData給請求者。
——SN將讀取數據DataSepResp返回給請求者。
5.Forwarding snoop
又有4個可選處理方式: (同allocating-read)
Alt 5a. With response to Home
——Snoopee向請求者返回一個組合的響應和讀取數據,CompData。
——Snoopee向HNF返回一個snoop響應,SnpRespFwded。
Alt 5b. With data to Home
——Snoopee向請求者返回一個組合的響應和讀取數據,CompData。
——Snoopee向HNF返回一個帶數據的snoop響應,SnpRespDataFwded。
Alt 5c. Failed, must use alternative
——snoopee返回了一個SnpResp給HNF。
——HNF必須使用前面描述的其他替代方案來完成對請求者的事務。
Alt 5d. Failed, must use alternative
——Snoopee返回了一個帶數據的snoop響應給HNF,SnpRespData或 SnpRespDataPtl。
——HNF必須使用前面描述的其他替代方案來完成對請求者的事務。
三、如果原始請求有ExpCompAck,請求者只能在以下情況之后提供CompAck響應:
——至少接收到一個CompData的packet。
——如果請求沒有order要求,收到RespSepData即可。在這種情況下,允許但不要求等待DataSepResp。
——如果請求有order要求,收到RespSepData之后,還必須收到DataSepResp的一個packet之后,才能回復CompAck。
如果原始請求有order要求,則允許(但不要求)請求者在發(fā)送CompAck之前等待ReadReceipt。
下表列出了RN中ReadNoSnp和ReadOnce*允許的DMT和DCT事務:
(Y:允許
N:不允許
:不適用)
二、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.1 Immediate Write
Immediate Write事務的順序是:
一、Requester發(fā)送一個Immediate Write請求到HNF開始。
Immediate Write包括:
— WriteNoSnpPtl
— WriteNoSnpFull
— WriteNoSnpDef
— WriteUniquePtl
— WriteUniqueFull
— WriteUniquePtlStash
— WriteUniqueFullStash
注:為完成這些事務而生成的Snoop請求被視為來自Home的獨立事務,并且不顯示在此flow中。向下游SN而生成的非DWT流程的寫入請求,被視為獨立事務,不顯示在該流程中。
這些請求如果包含了以下字段的話,會影響事務的傳輸flow:
—— TagOp(需要返回TagMatch響應)
—— ExpCompAck(必須回復CompAck)
三、Home可以選擇使用DWT或無DWT來完成事務傳輸。事務流的其余部分還將取決于原始請求是否需要完成確認響應,這將由ExpCompAck字段來確定。在備選方案1-3中描述了這些組合:
1.HNF使用DWT。
——Home向SN發(fā)送下游寫入請求,WriteNoSnpPtl, WriteNoSnpFull,
WriteNoSnpDef,使用DoDWT = 1。
——SN會向請求者返回一個數據請求,即DBIDResp。
——請求者向下級發(fā)送寫入數據,NCBWrData或取消寫入數據,WriteDataCancel。請求者必須僅在收到DBIDResp后才發(fā)送。
——SNF返回完成響應Comp給到HNF。
——HNF向請求者返回一個完成響應,Comp。允許(但不要求),HNF等待SNF返回的Comp,再給請求者發(fā)Comp。
——可選地,當請求需要TagMatch響應時,SNF將向請求者返回TagMatch響應。在返回TagMatch之前可以等待寫數據,但不是必需的。
-
接收機
+關注
關注
8文章
1182瀏覽量
53508 -
CMO
+關注
關注
0文章
12瀏覽量
8695 -
DCT
+關注
關注
1文章
56瀏覽量
19884 -
SNF
+關注
關注
0文章
2瀏覽量
3749
發(fā)布評論請先 登錄
相關推薦
評論