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

評(píng)論