在嵌入式多核集群中利用OCP處理高速緩沖器一致流量
一致消息
本文引用地址:http://www.ex-cimer.com/article/86946.htm一致處理系統(tǒng)可能執(zhí)行四個(gè)一致消息,這四個(gè)消息是由CPU負(fù)載/存儲(chǔ)活動(dòng)產(chǎn)生的L1高速緩沖器行狀態(tài)變化導(dǎo)致的。發(fā)起的CPU將這個(gè)消息以OCP主端口命令發(fā)送。系統(tǒng)的同級(jí)CPU接收基于該行狀態(tài)變化的干預(yù),并以其本地高速緩沖器行狀態(tài)進(jìn)行響應(yīng)。
第一種消息類型是CohReadOwn,表示在嘗試修改高速緩沖器行時(shí)發(fā)生的高速緩沖器的不命中。同級(jí)內(nèi)核遇到處于“修改”狀態(tài)的該行時(shí),會(huì)強(qiáng)制回寫到存儲(chǔ)器子系統(tǒng)中,并執(zhí)行本地失效。作為優(yōu)化,本地遇到的行數(shù)據(jù)將被轉(zhuǎn)發(fā)到請(qǐng)求方 CPU,以降低存取延遲。請(qǐng)求方CPU將使該行作為“專有”行,并執(zhí)行行修改指令。然后,高速緩沖器行狀態(tài)將變成“修改過(guò)的”。在等待行重新填滿的時(shí)候,請(qǐng)求方CPU將繼續(xù)另一個(gè)線程的執(zhí)行。
一致讀取共享(CohReadShared)消息表明在讀行操作過(guò)程中發(fā)生的高速緩沖器不命中。不需要行修改。遇到“已修改”狀態(tài)的該行的同級(jí)內(nèi)核將強(qiáng)制回寫到存儲(chǔ)器子系統(tǒng)。命中的同級(jí)行將轉(zhuǎn)換到“共享”狀態(tài)。命中數(shù)據(jù)將被轉(zhuǎn)發(fā)到請(qǐng)求方內(nèi)核,并以“共享”狀態(tài)安裝。然后執(zhí)行讀行操作。在等待行重新填滿的時(shí)候,請(qǐng)求方CPU將繼續(xù)另外一個(gè)線程的執(zhí)行。
一致升級(jí)(CohUpgrade)消息表明遇到命中“共享”行的一個(gè)高速緩沖器行修改指令。同級(jí)內(nèi)核將收到通知取消命中行。在修改指令執(zhí)行完以后,“共享”行會(huì)隨之升級(jí)為“修改”行。
最終,一致回寫(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—將一致高速緩沖器行回寫到存儲(chǔ)子系統(tǒng)。
·CohInvalidate—清除一致高速緩沖器行,而不是將其內(nèi)容回寫到存儲(chǔ)子系統(tǒng)。
·CohWriteInvalidate—I/O一致單元在一個(gè)新的高速緩沖器行注入一致域。
·CohReadInvalidate — I/O一致單元通知系統(tǒng),高速緩沖器行將離開(kāi)一致域。
·CohCompletionSync—無(wú)數(shù)據(jù)的命令可以保持排序。
非一致命令
傳統(tǒng)的OCP命令,如“讀取”和“寫入”命令是由整個(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ǔ)被寫入存儲(chǔ)子系統(tǒng)時(shí),即發(fā)出寫入命令。內(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è)修改行回寫,將行數(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ā)出的一致消息,并詢問(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)自一致管理器的詢問(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)用戶手冊(cè),MIPS科技公司
評(píng)論