這篇開始講述事務可以完成的方式。它顯示了參與事務的各種組件可以使用的所有允許的選項。
注: 除了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)返回一個組合的數(shù)據(jù)和響應CompData(讀取數(shù)據(jù)+響應)。通常,當Home可以同時返回數(shù)據(jù)和響應時,就會使用此選項。例如,數(shù)據(jù)在本地緩存。
2.Separate data and response from Home
Home向請求者返回一個單獨的響應( RespSepData),和讀取的數(shù)據(jù)(DataSepResp)。通常,當Home返回的響應比提供的數(shù)據(jù)更快時,就會使用此選項。
3.Combined response from Subordinate
——HNF向SNF發(fā)送讀請求ReadNoSnp。
——可選地,當HNF請求 ReadReceipt響應時(即order !=0),SNF將返回一個ReadReceipt給HNF。
——SNF向RNF返回一個組合的響應和數(shù)據(jù),CompData。
通常,HNF會使用此選項來減少消息計數(shù)或降低設計復雜性。
4.Response from Home, Data from Subordinate
——HNF向RNF返回一個單獨的響應,RespSepData。
——HNF向SNF發(fā)送讀數(shù)據(jù)請求ReadNoSnpSep。
——SNF返回一個ReadReceipt;注意HNF并不需要等待ReadReceipt才發(fā)RespSepData。
——SNF將讀取數(shù)據(jù)DataSepResp返回給請求者。
通常,當HNF可以快速返回響應,但它沒有可用的數(shù)據(jù),并且需要下屬返回數(shù)據(jù)時,它將使用此選項。
注:請求者在收到RespSepData即可返回CompAck,而不需要等到DataSepResp數(shù)據(jù)返回之后再發(fā)。
5.Forwarding snoop
Home請求Snoopee將讀取數(shù)據(jù)Snp*Fwd轉發(fā)給請求者。
**snoopee:接收snoop請求的RNF。
也就是說,數(shù)據(jù)直接通過snoopee轉發(fā)給請求者,而不需要再通過HNF轉一道。
此處又有4個可選項:
Alt 5a.With response to Home
——Snoopee向請求者返回一個組合的響應和讀取數(shù)據(jù),CompData。
——Snoopee向HNF返回一個snoop響應,SnpRespFwded。
通常,當Snoopee可以將數(shù)據(jù)轉發(fā)給請求者,并且不需要向HNF提供數(shù)據(jù)副本時,它就會使用此選項。
Alt 5b.With data to Home
——Snoopee向請求者返回一個組合的響應和讀取數(shù)據(jù),CompData。
——Snoopee向HNF返回一個帶數(shù)據(jù)的snoop響應,SnpRespDataFwded。
注意:通常,當Snoopee可以將數(shù)據(jù)轉發(fā)到請求者,但也必須向主頁提供數(shù)據(jù)副本時,將使用此選項。例如,當Snoopee持有緩存行的dirty副本,但返回給請求者的數(shù)據(jù)必須是clean的時,就會發(fā)生這種情況。當HNF請求數(shù)據(jù)副本時,也會發(fā)生這種情況。
Alt 5c.Failed, must use alternative
snoopee返回了一個SnpResp給HNF。
HNF必須使用前面描述的其他替代方案來完成對請求者的事務。
Alt 5d.Failed, must use alternative
Snoopee返回了一個帶數(shù)據(jù)的snoop響應給HNF,SnpRespData或 SnpRespDataPtl。
HNF必須使用前面描述的其他替代方案來完成對請求者的事務。
6.MakeReadUnique only
HNF返回給請求者的完成響應Comp。
此選項只適用于不需要讀數(shù)據(jù)消息時的MakeReadUnique。
三、當請求者向HNF發(fā)送完成確認CompAck時,事務就結束了。
只能在接收到 CompData或者 RespSepData后發(fā)送。
允許在發(fā)送CompAck之前等待DataSepResp,但不是必需的。
(也就是說RNF必須在收到響應之后才能給HNF發(fā)送完成確認CompAck,而不需要等到收到數(shù)據(jù))**
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向請求者返回一個組合響應和讀取數(shù)據(jù),CompData。
2.Separate data and response from Home
——Home向請求者返回一個單獨的響應,RespSepData;以及一個單獨的讀數(shù)據(jù),DataSepResp。如果請求有order要求,且不需要完成確認,則不能使用此替代方案。
3.Combined response from Subordinate
——(可選的)當原始請求有order保序要求時,HNF向請求者返回一個ReadReceipt。
——HNF向SN發(fā)送讀請求ReadNoSnp。
——(可選的)當HNF請求讀接收響應時,SN將返回ReadReceip給HNF。當不需要完成確認時,HNF必須這樣做。
——SN向請求者返回一個組合響應和讀取數(shù)據(jù),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將讀取數(shù)據(jù)DataSepResp返回給請求者。
5.Forwarding snoop
又有4個可選處理方式: (同allocating-read)
Alt 5a. With response to Home
——Snoopee向請求者返回一個組合的響應和讀取數(shù)據(jù),CompData。
——Snoopee向HNF返回一個snoop響應,SnpRespFwded。
Alt 5b. With data to Home
——Snoopee向請求者返回一個組合的響應和讀取數(shù)據(jù),CompData。
——Snoopee向HNF返回一個帶數(shù)據(jù)的snoop響應,SnpRespDataFwded。
Alt 5c. Failed, must use alternative
——snoopee返回了一個SnpResp給HNF。
——HNF必須使用前面描述的其他替代方案來完成對請求者的事務。
Alt 5d. Failed, must use alternative
——Snoopee返回了一個帶數(shù)據(jù)的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會向請求者返回一個數(shù)據(jù)請求,即DBIDResp。
——請求者向下級發(fā)送寫入數(shù)據(jù),NCBWrData或取消寫入數(shù)據(jù),WriteDataCancel。請求者必須僅在收到DBIDResp后才發(fā)送。
——SNF返回完成響應Comp給到HNF。
——HNF向請求者返回一個完成響應,Comp。允許(但不要求),HNF等待SNF返回的Comp,再給請求者發(fā)Comp。
——可選地,當請求需要TagMatch響應時,SNF將向請求者返回TagMatch響應。在返回TagMatch之前可以等待寫數(shù)據(jù),但不是必需的。
-
接收機
+關注
關注
8文章
1180瀏覽量
53453 -
CMO
+關注
關注
0文章
12瀏覽量
8673 -
DCT
+關注
關注
1文章
56瀏覽量
19869 -
SNF
+關注
關注
0文章
2瀏覽量
3740
發(fā)布評論請先 登錄
相關推薦
評論