1. overview
獨占訪問的原則是,執(zhí)行獨占序列的邏輯處理器(LP)執(zhí)行以下操作:
對一個地址執(zhí)行exclusive load。
計算要存儲到該位置的新值。
對該地址進行exclusive store。
支持對可嗅探(snoopable)和不可嗅探 (non-snoopable)的內存位置進行獨占訪問。
如果地址A在Exclusive Load之后被另一個LP更新了,那么在執(zhí)行Exclusive Store時必須失敗。在這種情況下,該store操作不能完成,即store的數(shù)據無法寫入到A地址。
以下是exclusive terms:
翻譯一下,就是:
Exclusive Load
是用于描述LP執(zhí)行特定的程序指令的行為,如LDREX,該操作包含:
1.獲得想要執(zhí)行exclusive操作序列的地址的數(shù)據;
2.指示LP開始執(zhí)行exclusive sequence;
(CPU的行為)
Exclusive Load transaction
如果數(shù)據沒有在LP的cache中存在,就需要發(fā)送一筆Exclusive Load transaction來獲取用于Exclusive Load的數(shù)據。
所以,但是不是每一筆Exclusive Load要求一筆Exclusive Load transaction。
(總線行為)
Exclusive Store
是用于描述LP執(zhí)行特定的程序指令的行為,如STREX,該操作包含:
決定是否exclusive sequence失敗還是成功;
如果可以的話,更新地址所在的數(shù)據;
另外,執(zhí)行的處理器(LP)知道Exclusive Store是成功還是失敗的,如果Exclusive Store失敗,那么地址所對應的數(shù)據不能被更新,并且Exclusive sequence必須重新開始。
(CPU的行為)
Exclusive Store transaction
用于描述interface發(fā)送一筆transaction來完成需要的Exclusive Store。不是每一筆Exclusive Store都需要一筆Exclusive Store transaction,一筆Exclusive Store transaction成功與否可以通過transaction response的RespErr域段告知LP;(有兩個特殊,后面詳細描述)
(總線行為)
2.Exclusive monitors
可以采用exclusive monitor來追蹤exclusive sequence的進行。monitor的位置和為了支持exclusive accesses需要產生的request type是依賴于地址的內存屬性。
例如,如果requester和monitor之間存在cache,那么獨占訪問應該是non-snoopable的。
2.1 Snoopable memory location
對于Snoopable memory地址的exclusive訪問,需要采用兩個monitor:
LP monitor:
RN-F內的每個LP都必須實現(xiàn)一個exclusive monitor,用于檢查exclusive sequence訪問使用的地址信息。LP在執(zhí)行Exclusive Load時,LP monitor置位;LP monitor在以下情況會復位:
LP收到同地址的invalidating snoop request,表明該地址已經被其它LP更新了;(即:本LP的獨占序列被破壞,獨占訪問失?。?br /> 同一個LP對該地址產生的store(即:本LP的獨占序列完成,獨占訪問成功)。如果store是由同一個LP采用non-exclusive命令產生的,monitor的復位是由實現(xiàn)具體決定的;
PoC monitor:
HN-F必須實現(xiàn)一個PoC monitor,用于判定Exclusive Store transaction的結果是成功還是失敗。如果成功,表明該transaction已經對其它一致性RN-F可見(通過snoop將其他RNF的cache line失效了)。如果失敗,表明該transaction沒有對其它一致性RN-F可見,因此Exclusive Store不能成功;
該monitor用于保證來自一個LP的Exclusive Store transactions的成功只有在該LP沒有接收到一筆同地址的snoop transaction,該snoop transaction是由其它RN-F對同地址的Exclusive Store產生的;
對PoC monitor的最低要求就是它能記錄任何LP對Snoopable地址產生的exclusive sequence;
如果一個LP已經執(zhí)行一筆exclusive sequence相關的transaction,然后在其它LP成功的執(zhí)行Exclusive Store transaction之前,該LP先執(zhí)行了Exclusive Store transaction,那么該Exclusive Store transaction必須成功;(意思就是獨占序列沒有被破壞,就獨占訪問成功了)
該monitor要支持并行監(jiān)控系統(tǒng)中所有支持exclusive能力的LP;(也就是每個LP都要有在monitor中有一個獨立的條目進行監(jiān)控)
當HN-F收到一筆和Exclusive Load或Exclusive Store相關的transaction后,該monitor會注冊/記錄LP正嘗試一個exclusive sequence;
當HN-F收到一筆Exclusive Store transaction:
如果PoC monitor中已經記錄了該LP正在執(zhí)行exclusive sequence,(即monitor對該LP的某地址的獨占標記還在),也就是說該LP的exclusive sequence還沒有被其它Exclusive Store transaction給復位掉,那么該Exclusive Store肯定成功并且允許繼續(xù)進行處理。在這種情況下,其它LPs的相關注冊都應該被復位,CHI協(xié)議建議但不要求PoC monitor對于已經成功的LP的注冊仍然保留;
如果PoC monitor沒有注冊LP正在進行的exclusive sequence,也就是說LP的注冊位已經被其它LP的Exclusive Store給復位了,那么該LP的Exclusive Store transaction失敗且不允許被繼續(xù)處理。但是PoC monitor必須注冊該LP的正在進行exclusive sequence。
注意:
1、對于一個LP,如果Exclusive Store transaction執(zhí)行成功,那么該LP在PoC monitor的注冊位不需要被復位,這樣的話,該LP可以繼續(xù)成功執(zhí)行一系列的Exclusive Store transaction,直到其它LP成功執(zhí)行Exclusive Store transaction。對于LP不確定的store transactions,該store transaction必須被處理為來自不同LP的訪問;
2、在系統(tǒng)復位初始化,第一個LP執(zhí)行Exclusive Store transaction可以成功,但是CHI協(xié)議不要求有這個功能。在這點上之后,所有其他LPs必須注冊它們exclusive sequence的開始,才能讓它們后續(xù)Exclusive Store transaction的成功進行;
3、當LP的Exclusive Store transaction成功后,其它LP的注冊位都被復位掉,只有成功的exclusive store transaction的CompAck響應成功后,其它LP才可以注冊新的exclusive sequence;
4、為了支持Exclusive訪問Snoopable memory空間,LP monitor和PoC monitor都需要;
2.2 Additional address comparison
PoC monitor的功能通過增加一些地址比較來增強,只需要記錄地址的某些bits就行,不需要全地址的匹配。這種方法可以減少其它LPs訪問不同地址的Exclusive Store transaction的失敗導致的風險,需要比較的地址位數(shù)由具體實現(xiàn)決定的。
當使用額外地址比較的monitor,在exclusive sequence(Load Exclusive or Store Exclusive)的最開始,監(jiān)控的地址需要被記錄下來。只有在其它地址匹配的LP成功的Exclusive Store transaction才會將其復位;
包含額外地址比較的monitor仍然包含最小1bit monitor用于監(jiān)控每個支持Exclusive能力的LP。
在以下條件發(fā)生時,Exclusive Store transaction才允許繼續(xù)進行:
地址monitor已經給同一個LP的匹配地址的exclusive sequence注冊過,且沒有被其它地址匹配的Exclusive Store transaction復位了;
最小1bit monitor已經給同一個LP的exclusive sequence注冊過,且沒有被其它任何值的LP的Exclusive Store transaction復位了。
--------這一段說的廢話,monitor必須記錄地址!
2.3 Alternatives to a PoC monitor
HN-F允許使用以下機制來代替PoC monitor來決定獨占訪問的結果:
一個精確的snoop filter,用來跟蹤請求者在Exclusive Store處理時是否保留了cache line的副本。
通過Home的snoop,以確定requester是否仍然持有cache line的副本。
注意:在CHI Issue E之前,需要實現(xiàn)PoC monitor
2.4Non-snoopable memory location
對于Non-snoopable memory地址區(qū)間,使用一個monitor。
System monitor:
系統(tǒng)monitor會跟蹤訪問Non-snoopable地址空間的Exclusive訪問。該monitor在有ReadNoSnp(Excl)操作時置位,會被其它同地址LP的改寫而復位;
System monitor可以放置于PoS或終端設備處。因為系統(tǒng)中終端的數(shù)據比PoS的數(shù)目多,一般將System monitor放置于PoS處,這樣可以:
減少System monitor的重復;
減少系統(tǒng)檢測Exclusive訪問失敗的時間;
System monitor應該放置于可以觀察到所有訪問監(jiān)控地址的transactions的地方。
PoS : Point of Serialization
PoC : Point of Coherence
3. Exclusive transactions
以下操作可以使用Excl bit來支持Exclusive訪問:
Exclusive操作的通訊節(jié)點對有:
xclusive transaction必須使用正確的LPID值。
3.1 Responses to exclusive requests
對于Exclusive requests的響應和其它正常讀寫的響應類似,除了:
? ReadClean, ReadNotSharedDirty, and ReadShared Exclusive transactions:
--不能使用分離的 Comp和 data response.
--Requests不能使用 DMT or DCT.
? ReadNoSnp Exclusive transactions 不能使用 DMT.
? WriteNoSnpFull and WriteNoSnpPtl transactions,, 如果 Exclusive monitor在HN-F,且獨占檢測通過,不能使用DWT
下面這些exclusive transaction必須通過響應來告知通過還是失敗:
? ReadClean
? ReadNotSharedDirty
? ReadShared
? ReadNoSnp
? CleanUnique
? WriteNoSnpFull
exclusive request的響應的RespErr域段可以指示exclusive操作成功與否。RespErr域值為0b01表示Exclusive Okay,即exclusive成功,RespErr域值為0b00表示Normal Okay,即exclusive失??;
只有一筆transaction的Excl置位,才可能返回Exclusive Okay響應;
不是所有的內存空間都支持獨占訪問。(什么樣的內存空間不支持獨占訪問??)對于不支持Exclusive訪問的地址不能回Exclusive Okay響應;
對于訪問不支持Exclusive操作的地址,執(zhí)行Exclusive Store是否會將數(shù)據更新到地址中是由具體實現(xiàn)決定的;
CHI協(xié)議建議不要對不支持Exclusive訪問的地址發(fā)送Exclusive Store transaction。
ReadPreferUnique 和 MakeReadUnique不使用RespErr來確定獨占操作的通過或失敗。而是通過收到的數(shù)據響應狀態(tài)來確定:
如果響應為shared cache狀態(tài),則表示獨占訪問失?。?/p>
如果響應為unique狀態(tài),requester必須使用其LP monitor狀態(tài)來確定獨占訪問是否為通過。
下為request的Snoopable屬性、相關monitor類型、exclusive失敗的可能原因以及響應需求。
3.2 System responsibility
使用CHI協(xié)議實現(xiàn)的系統(tǒng)必須遵循以下原則:
為了有效處理Exclusive訪問,每個LP應該包含一個monitor;
不管是使用monitor機制還是其它方法,對于所有的exclusive requests,都應該有防饑餓機制;
CHI協(xié)議建議安全exclusive訪問和非安全exclusive訪問獨立分開處理。
3.3 Exclusive accesses to Snoopable locations
本小節(jié)描述當使用exclusive訪問Snoopable地址空間時,LP需要執(zhí)行的行為。
Snoopable Exclusive Load
LP使用Exclusive Load開始一次exclusive sequence。exclusive sequence的開始必須將LP exclusive monitor置位。
LP要執(zhí)行一筆Snoopable地址的Exclusive訪問的數(shù)據可能在local cache中已經存在了:
如果LP中該cacheline為Unique狀態(tài),CHI協(xié)議允許(但不推薦)LP執(zhí)行Exclusive Load transaction;
如果LP中該cacheline為Shared狀態(tài),CHI協(xié)議允許但不要求LP執(zhí)行Exclusive Load transaction;
如果LP中該cacheline不存在,CHI協(xié)議推薦LP執(zhí)行Exclusive Load transaction來獲取一份cacheline數(shù)據,但是允許Excl bit不置位的ReadClean或ReadShared或ReadNotSharedDirty transaction;
Snoopable Exclusive Load to Snoopable Exclusive Store
在執(zhí)行完Exclusive Load之后,LP通常會計算該地址的新值,用于后續(xù)Exclusive Store存儲。
CHI協(xié)議不要求LP完成一次exclusive sequence。例如,Exclusive Load獲得數(shù)據可以指示旗語有沒有被其它LP拿走了,如果被拿走了的話,則不能改變該值直到其它LP釋放了該旗語。因此,新產生的exclusive sequence不需等待當前exclusive sequence的完成。
在Exclusive Load和Exclusive Store之間,LP exclusive monitor必須監(jiān)控該地址的數(shù)據來判斷是否已經被其它LP改變了。
Snoopable Exclusive Store
同一個LP不允許和任何注冊且正在執(zhí)行exclusive sequence的transaction同時執(zhí)行Exclusive Store transaction。在發(fā)送一筆Exclusive Store transaction之前,LP必須等到任何這樣的transaction的message已經交換完,或者接收到RetryAck響應。LP正在執(zhí)行的已經注冊的transactions的exclusive sequence有:
Exclusive Load transactions to any location.
Exclusive Storetransactions to any location.
當LP正在執(zhí)行Exclusive Store時,需要以下操作:
如果LP exclusive monitor已經被復位了,那么Exclusive Store必須失敗,且LP不能發(fā)送Exclusive Store transaction。LP必須重新開始exclusive sequence;注意:當LP monitor被置位了,不能發(fā)送最終失敗的Exclusive Store transaction,避免不需要的無效掉cacheline數(shù)據。
如果cacheline為Unique狀態(tài),且LP exclusive monitor置位,那么Exclusive Store已經PASS了,不需要發(fā)送Exclusive Store transaction就可以更新該地址的數(shù)據;
如果cacheline是Shared狀態(tài),且LP exclusive monitor置位,那么LP必須發(fā)送一筆Exclusive Store transaction。必須使用Excl比特置位的CleanUnique transaction。LP exclusive monitor必須繼續(xù)監(jiān)控在CleanUnique執(zhí)行過程中,該數(shù)據沒有被更新。
CleanUnique transaction將會受到Normal Okay或者Exclusive Okay響應。
如果收到Exclusive Okay響應,意味著該transaction已經成功并且把其它RN中有該cacheline的備份失效掉。在該筆exclusive transaction完成后,LP必須再次確認LP exclusive monitor:1. 如果LP exclusive monitor置位,那么Exclusive Store成功且數(shù)據更新已經執(zhí)行完成;2. 如果LP exclusive monitor沒有置位,表明該cacheline在Store transaction完成之前已經被更新了,因此Exclusive Store必須失敗,exclusive sequence必須重新開始;3. 如果LP無法跟蹤到cacheline的exclusive狀態(tài),因為該cacheline已經驅逐掉,那么exclusive store必須失敗,exclusive sequence必須重新開始。
如果收到Normal Okay響應,意味著其它LP已經完成了Exclusive Store,因此LP的Exclusive Store產生的transaction失敗,不能傳播給系統(tǒng)中的其它LPs。一筆Exclusive Store transaction以Normal Okay響應結束后,接下來可選選項有:1. 在訪問完成后,LP可以檢查或不檢查cacheline狀態(tài),LP將Exclusive Store失敗掉并且重新開始exclusive sequence;2. LP可以檢查LP exclusive monitor,如果LP exclusive monitor已經被復位了,那么LP必須將Exclusive Store失效掉,并且重啟exclusive sequence;3. LP可以檢查LP exclusive monitor,如果LP exclusive monitor置位,LP可以再次發(fā)起Exclusive Store transaction。
3.4 Exclusive accesses to Non-snoopable locations
對于Non-snoopable的exclusive訪問,有以下限制:
Exclusive access的地址必須和transaction總的bytes數(shù)對其;
Exclusive access傳輸總的bytes數(shù)目必須是合法數(shù)據size,即1、2、4、8、16、32bytes;
對于不遵循這些限制的行為將導致UNPREDICTABLE;
對于Exclusive read和Exclusive write transaction被認為是一對傳輸,必須遵守如下準則:
Exclusive read和Exclusive write的地址必須相等;
Exclusive read和Exclusive write的控制信號,即MemAttr和SnpAttr,必須相等;
Exclusive read和Exclusive write的data size必須一樣;
Exclusive read和Exclusive write的LPID必須一樣;
Exclusive operation的最小bytes數(shù)是transaction size決定的。System monitor可以監(jiān)控更大的bytes范圍,最多可達Exclusive access的最大size 64。然而,這樣可能導致成功的Exclusive訪問被認為是失敗的,由于在exclusive傳輸過程中,相鄰byte被改寫了。
多個訪問Non-snoopable memory地址的Exclusive transactions,不管是寫還是讀,是同一個地址還是不同地址,來自同一個LP的必須不能同時outstanding發(fā)送。
如果SN通過Exclusive ReadNoSnp的響應返回Exclusive Fail表示不支持Exclusive訪問,那么如果寫操作返回的是Exclusive Fail響應,其寫數(shù)據仍然會被更新到地址的存儲空間;
如果SN通過Exclusive ReadNoSnp的響應返回Exclusive Pass表示支持Exclusive訪問,那么如果寫操作返回的是Exclusive Fail響應,其寫數(shù)據不會被更新到地址的存儲空間。
-
處理器
+關注
關注
68文章
19100瀏覽量
228814 -
PoC
+關注
關注
1文章
67瀏覽量
20474 -
cache技術
+關注
關注
0文章
41瀏覽量
1043
發(fā)布評論請先 登錄
相關推薦
評論