源于一種基于消息的存儲(chǔ)一致模型
?
傳統(tǒng)上,,多處理器系統(tǒng)中的存儲(chǔ)器一致性都是通過(guò)總線偵聽(tīng)" title="總線偵聽(tīng)">總線偵聽(tīng)實(shí)現(xiàn)的,,每個(gè)內(nèi)核都與一個(gè)通用多層總線連接,,能夠偵聽(tīng)同級(jí)處理器的存儲(chǔ)器存取流量,,以調(diào)節(jié)每個(gè)高速緩沖器行的一致?tīng)顟B(tài),。這樣,,每個(gè)內(nèi)核都在本地保持了L1高速緩沖器行的一致?tīng)顟B(tài),,并通過(guò)通用總線將狀態(tài)的改變通知同級(jí)處理器,。
?
SoC不斷增加的面積和復(fù)雜性導(dǎo)致了多層總線基本哲學(xué)的改變,,以利于采用集中流量路由的本地點(diǎn)對(duì)點(diǎn)連接。由于負(fù)載的減少和段長(zhǎng)的縮短,,這將有助于顯著加速和推動(dòng)現(xiàn)在的本地化總線段的改善,。同時(shí),也可以緩解總線爭(zhēng)用問(wèn)題,,同時(shí)增加了本地化數(shù)據(jù)交換吞吐量,。為了滿(mǎn)足這一系統(tǒng)架構(gòu)趨勢(shì),出現(xiàn)了OCP(開(kāi)放內(nèi)核協(xié)議)標(biāo)準(zhǔn),,進(jìn)一步鞏固了這一設(shè)計(jì)哲學(xué),。另外,IP供應(yīng)商業(yè)務(wù)模式的出現(xiàn)催化了IP互連和設(shè)計(jì)方法的標(biāo)準(zhǔn)化,,有利于在一個(gè)開(kāi)放標(biāo)準(zhǔn)基礎(chǔ)上實(shí)現(xiàn)設(shè)計(jì)的復(fù)用,。
?
然而,與通過(guò)OCP互連段操控一樣,,本地化總線執(zhí)行將整個(gè)多核集群上的處理器分拆開(kāi),。一致方案不能直接基于總線偵聽(tīng)和依賴(lài)總線仲裁來(lái)確保存取排序,需要不同的通信方法來(lái)確保數(shù)據(jù)存取的一致性。在爭(zhēng)用L1行數(shù)據(jù)請(qǐng)求排序的過(guò)程中,,其他挑戰(zhàn)也浮現(xiàn)出來(lái),。應(yīng)對(duì)這些挑戰(zhàn)的一種方法是給每個(gè)處理單元增加一致消息通信,如圖1所示,。這些消息提供了偵聽(tīng)型緩沖器一致的方法,。
圖 1? 一致處理系統(tǒng)
?
一致消息包含了OCP協(xié)議中的一個(gè)新命令。處理器系統(tǒng)中的成員向一個(gè)集中一致管理器" title="管理器">管理器發(fā)送一致消息,。該管理器提供存取排序(順序化)和消息路由,,為同級(jí)成員提供偵聽(tīng)型存取。這些同級(jí)成員將以其單獨(dú)的L1行狀態(tài)進(jìn)行響應(yīng),,并發(fā)出一個(gè)消息響應(yīng),。根據(jù)這些響應(yīng),一致管理器發(fā)起對(duì)內(nèi)核間一致數(shù)據(jù)的數(shù)據(jù)移動(dòng),,將存取集中在更高級(jí)別的存儲(chǔ)器層,,如L2和L3高速緩沖器。I/O" title="I/O">I/O一致單元還可提供一種方式逐漸采用/逐漸淘汰數(shù)據(jù)進(jìn)/出一致地址空間的數(shù)據(jù),,它是一致消息交換的一部分,。
?
除了OCP協(xié)議中的新消息類(lèi)命令外,還需要具體的處理器響應(yīng)一致?tīng)顟B(tài)請(qǐng)求,,因此它們不只是總線處理的發(fā)動(dòng)者(主控),。一致處理系統(tǒng)" title="處理系統(tǒng)">處理系統(tǒng)滿(mǎn)足這一要求的方法可能是通過(guò)提供一個(gè)OCP從端口來(lái)接收和響應(yīng)一致管理器發(fā)送的消息。處理器的一致請(qǐng)求將利用OCP主端口,。在處理集群內(nèi),,內(nèi)核間和一致管理器之間的一致消息交換被稱(chēng)為“干預(yù)”。處理器的OCP從端口接收干預(yù),,因此稱(chēng)為“干預(yù)端口”,。
?
如圖1所示,1004K系統(tǒng)的每個(gè)獨(dú)立處理器都是基于我們多線程處理器架構(gòu)的,,可以在單標(biāo)量,、9級(jí)流水線范圍內(nèi)提供兩個(gè)獨(dú)立線程并處理上下文。復(fù)制的1級(jí)數(shù)據(jù)高速緩沖器標(biāo)記陣列可同時(shí)用于存取CPU操作和干預(yù)查尋,。一致處理系統(tǒng)可支持MESI型高速緩沖器行一致性,。
?
處理系統(tǒng)一致管理器通過(guò)其請(qǐng)求單元—OCP從端口,在每個(gè)CPU和I/O一致單元的推動(dòng)下,,接收進(jìn)入的消息并對(duì)其進(jìn)行串化,。串化的消息按照其地址空間和上下文,或使用“存儲(chǔ)器接口單元”發(fā)送到更高級(jí)別的高速緩沖器層,,或使用“偵聽(tīng)代理”發(fā)送至同級(jí)處理器和I/O一致單元。偵聽(tīng)代理發(fā)起OCP主處理(干預(yù))來(lái)查尋每個(gè)處理器的一致L1高速緩沖器行狀態(tài)。干預(yù)返回到消息發(fā)起者,,稱(chēng)為自我干預(yù),,有助于發(fā)起者提供存取排序。對(duì) CPU 發(fā)起的一致消息響應(yīng)和數(shù)據(jù)響應(yīng)是在“響應(yīng)單元”內(nèi)確立的,,并發(fā)送到每個(gè) CPU,。
?
一致OCP命令
?
在1004K CPS中使用的OCP命令可以分成三類(lèi)。
?
第一類(lèi)是保持MESI型高速緩沖器行狀態(tài)的一致消息,。它們是CPU負(fù)載/存儲(chǔ)操作的結(jié)果,,能夠發(fā)起CPU和/或存儲(chǔ)器子系統(tǒng)之間的數(shù)據(jù)移動(dòng)。CPS(一致處理系統(tǒng))的所有同級(jí)CPU將接收由一個(gè)發(fā)起者發(fā)送的一致消息,,并根據(jù)它們的高速緩沖器行一致?tīng)顟B(tài)做出響應(yīng),。一致管理器將根據(jù)需要發(fā)起數(shù)據(jù)移動(dòng)。
?
一致高速緩沖器操作指令" title="操作指令">操作指令用于一致地址空間內(nèi)高速緩沖器行的維護(hù),。I/O流量將新的一致行帶入該域,,或?qū)⒁恢律舷挛膹母咚倬彌_器行中移除。另外,,還要進(jìn)行存儲(chǔ)器層的同步化操作,。
?
第三類(lèi)是非一致命令,在一致地址空間外的存儲(chǔ)區(qū)中執(zhí)行OCP主端口處理,。它們代表了OCP讀寫(xiě)命令,。
?
一致消息
?
一致處理系統(tǒng)可能執(zhí)行四個(gè)一致消息,這四個(gè)消息是由CPU負(fù)載/存儲(chǔ)活動(dòng)產(chǎn)生的L1高速緩沖器行狀態(tài)變化導(dǎo)致的,。發(fā)起的CPU將這個(gè)消息以O(shè)CP主端口命令發(fā)送,。系統(tǒng)的同級(jí)CPU接收基于該行狀態(tài)變化的干預(yù),并以其本地高速緩沖器行狀態(tài)進(jìn)行響應(yīng),。
?
第一種消息類(lèi)型是CohReadOwn,,表示在嘗試修改高速緩沖器行時(shí)發(fā)生的高速緩沖器的不命中。同級(jí)內(nèi)核遇到處于“修改”狀態(tài)的該行時(shí),,會(huì)強(qiáng)制回寫(xiě)到存儲(chǔ)器子系統(tǒng)中,,并執(zhí)行本地失效。作為優(yōu)化,,本地遇到的行數(shù)據(jù)將被轉(zhuǎn)發(fā)到請(qǐng)求方 CPU,,以降低存取延遲。請(qǐng)求方CPU將使該行作為“專(zhuān)有”行,,并執(zhí)行行修改指令,。然后,高速緩沖器行狀態(tài)將變成“修改過(guò)的”,。在等待行重新填滿(mǎn)的時(shí)候,,請(qǐng)求方CPU將繼續(xù)另一個(gè)線程的執(zhí)行。
?
?? 一致讀取共享(CohReadShared)消息表明在讀行操作過(guò)程中發(fā)生的高速緩沖器不命中。不需要行修改,。遇到“已修改”狀態(tài)的該行的同級(jí)內(nèi)核將強(qiáng)制回寫(xiě)到存儲(chǔ)器子系統(tǒng),。命中的同級(jí)行將轉(zhuǎn)換到“共享”狀態(tài)。命中數(shù)據(jù)將被轉(zhuǎn)發(fā)到請(qǐng)求方內(nèi)核,,并以“共享”狀態(tài)安裝,。然后執(zhí)行讀行操作。在等待行重新填滿(mǎn)的時(shí)候,,請(qǐng)求方CPU將繼續(xù)另外一個(gè)線程的執(zhí)行,。
?
一致升級(jí)(CohUpgrade)消息表明遇到命中“共享”行的一個(gè)高速緩沖器行修改指令。同級(jí)內(nèi)核將收到通知取消命中行,。在修改指令執(zhí)行完以后,,“共享”行會(huì)隨之升級(jí)為“修改”行。
?
最終,,一致回寫(xiě)(CohWriteBack)消息表示驅(qū)逐了一個(gè)一致高速緩沖器行,。一致管理器將通過(guò)干預(yù)端口發(fā)起數(shù)據(jù)移動(dòng),并將數(shù)據(jù)轉(zhuǎn)發(fā)到存儲(chǔ)器子系統(tǒng),。被驅(qū)逐的高速緩沖器行隨后便由一個(gè)新的—可能是一致的—地址取代,。在這種情況下,CohReadOwn或CohReadShared導(dǎo)致了這個(gè)驅(qū)逐,。
?
一致高速緩沖器操作指令
?
為了響應(yīng)高速緩沖器操作,,需要發(fā)起一致消息,并發(fā)送到同級(jí)內(nèi)核,。
CohCopyBack—將一致高速緩沖器行回寫(xiě)到存儲(chǔ)子系統(tǒng),。
CohInvalidate—清除一致高速緩沖器行,而不是將其內(nèi)容回寫(xiě)到存儲(chǔ)子系統(tǒng),。
CohWriteInvalidate—I/O一致單元在一個(gè)新的高速緩沖器行注入一致域,。
CohReadInvalidate — I/O一致單元通知系統(tǒng),高速緩沖器行將離開(kāi)一致域,。
CohCompletionSync—無(wú)數(shù)據(jù)的命令可以保持排序,。
非一致命令
傳統(tǒng)的OCP命令,如“讀取”和“寫(xiě)入”命令是由整個(gè)一致處理系統(tǒng)支持的,,以處理非一致存儲(chǔ)器存取的數(shù)據(jù)存取,。當(dāng)高速緩存的、非一致地址內(nèi)的命中失敗,,或者非高速緩存存取引發(fā)存儲(chǔ)子系統(tǒng)內(nèi)的讀取操作時(shí),,就會(huì)發(fā)出讀命令。如果響應(yīng)數(shù)據(jù)是作為非一致高速緩存安裝的話,,那么非高速緩存數(shù)據(jù)就會(huì)直接被消耗掉,。提取和負(fù)載/存儲(chǔ)活動(dòng)可導(dǎo)致讀取處理,。當(dāng)高速緩存的、非一致逐出數(shù)據(jù)或非高速緩存地址范圍存儲(chǔ)被寫(xiě)入存儲(chǔ)子系統(tǒng)時(shí),,即發(fā)出寫(xiě)入命令,。內(nèi)核的 OCP 主端口執(zhí)行命令和數(shù)據(jù)階段的處理。
?
實(shí)例—一致讀取共享消息
?
CPU0 在一致高速緩存行上遇到負(fù)載不命中,,并發(fā)起 cohReadShared 消息(無(wú)修改意圖)。一致管理器將干預(yù)消息發(fā)送到所有內(nèi)核,,在此內(nèi)核 1 將響應(yīng)“修改”的命中,。一致管理器現(xiàn)在發(fā)起了一個(gè)修改行回寫(xiě),將行數(shù)據(jù)從內(nèi)核 1 中的干預(yù)端口移動(dòng)到存儲(chǔ)子系統(tǒng),。命中的內(nèi)核 1 高速緩存行轉(zhuǎn)移到“共享”狀態(tài)(見(jiàn)圖2),。行數(shù)據(jù)移動(dòng)也會(huì)轉(zhuǎn)發(fā)到內(nèi)核 0,在此它可在“共享”狀態(tài)下安裝,。
圖2? 一致讀取共享消息
?
結(jié)語(yǔ)
?
OCP互連有助于支持基于消息的一致方案,。集中的一致管理器可以串化從單獨(dú)內(nèi)核發(fā)出的一致消息,并詢(xún)問(wèn)同級(jí)內(nèi)核的一致?tīng)顟B(tài),。內(nèi)核之間的數(shù)據(jù)轉(zhuǎn)發(fā)可減少存取延遲和對(duì)更高級(jí)別的存儲(chǔ)器層的流量,。單個(gè)內(nèi)核支持OCP主端口發(fā)起數(shù)據(jù)存取和OCP從端口接收來(lái)自一致管理器的詢(xún)問(wèn)。
?
參考文獻(xiàn):
1.OCP規(guī)范2.2,,2006 OCP-IP協(xié)會(huì),,版權(quán)所有
2.OCP一致擴(kuò)展,第二部分:信號(hào)和解碼(未發(fā)表,、初稿)
3.MIPS32 1004K一致處理系統(tǒng)用戶(hù)手冊(cè),,MIPS科技公司
?
?