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