在嵌入式多核集群中利用OCP處理高速緩沖器一致流量
一致消息
本文引用地址:http://www.104case.com/article/86946.htm一致處理系統可能執行四個一致消息,這四個消息是由CPU負載/存儲活動產生的L1高速緩沖器行狀態變化導致的。發起的CPU將這個消息以OCP主端口命令發送。系統的同級CPU接收基于該行狀態變化的干預,并以其本地高速緩沖器行狀態進行響應。
第一種消息類型是CohReadOwn,表示在嘗試修改高速緩沖器行時發生的高速緩沖器的不命中。同級內核遇到處于“修改”狀態的該行時,會強制回寫到存儲器子系統中,并執行本地失效。作為優化,本地遇到的行數據將被轉發到請求方 CPU,以降低存取延遲。請求方CPU將使該行作為“專有”行,并執行行修改指令。然后,高速緩沖器行狀態將變成“修改過的”。在等待行重新填滿的時候,請求方CPU將繼續另一個線程的執行。
一致讀取共享(CohReadShared)消息表明在讀行操作過程中發生的高速緩沖器不命中。不需要行修改。遇到“已修改”狀態的該行的同級內核將強制回寫到存儲器子系統。命中的同級行將轉換到“共享”狀態。命中數據將被轉發到請求方內核,并以“共享”狀態安裝。然后執行讀行操作。在等待行重新填滿的時候,請求方CPU將繼續另外一個線程的執行。
一致升級(CohUpgrade)消息表明遇到命中“共享”行的一個高速緩沖器行修改指令。同級內核將收到通知取消命中行。在修改指令執行完以后,“共享”行會隨之升級為“修改”行。
最終,一致回寫(CohWriteBack)消息表示驅逐了一個一致高速緩沖器行。一致管理器將通過干預端口發起數據移動,并將數據轉發到存儲器子系統。被驅逐的高速緩沖器行隨后便由一個新的—可能是一致的—地址取代。在這種情況下,CohReadOwn或CohReadShared導致了這個驅逐。
一致高速緩沖器操作指令
為了響應高速緩沖器操作,需要發起一致消息,并發送到同級內核。
·CohCopyBack—將一致高速緩沖器行回寫到存儲子系統。
·CohInvalidate—清除一致高速緩沖器行,而不是將其內容回寫到存儲子系統。
·CohWriteInvalidate—I/O一致單元在一個新的高速緩沖器行注入一致域。
·CohReadInvalidate — I/O一致單元通知系統,高速緩沖器行將離開一致域。
·CohCompletionSync—無數據的命令可以保持排序。
非一致命令
傳統的OCP命令,如“讀取”和“寫入”命令是由整個一致處理系統支持的,以處理非一致存儲器存取的數據存取。當高速緩存的、非一致地址內的命中失敗,或者非高速緩存存取引發存儲子系統內的讀取操作時,就會發出讀命令。如果響應數據是作為非一致高速緩存安裝的話,那么非高速緩存數據就會直接被消耗掉。提取和負載/存儲活動可導致讀取處理。當高速緩存的、非一致逐出數據或非高速緩存地址范圍存儲被寫入存儲子系統時,即發出寫入命令。內核的 OCP 主端口執行命令和數據階段的處理。
實例—一致讀取共享消息
CPU0 在一致高速緩存行上遇到負載不命中,并發起 cohReadShared 消息(無修改意圖)。一致管理器將干預消息發送到所有內核,在此內核 1 將響應“修改”的命中。一致管理器現在發起了一個修改行回寫,將行數據從內核 1 中的干預端口移動到存儲子系統。命中的內核 1 高速緩存行轉移到“共享”狀態(見圖2)。行數據移動也會轉發到內核 0,在此它可在“共享”狀態下安裝。
圖2 一致讀取共享消息
結語
OCP互連有助于支持基于消息的一致方案。集中的一致管理器可以串化從單獨內核發出的一致消息,并詢問同級內核的一致狀態。內核之間的數據轉發可減少存取延遲和對更高級別的存儲器層的流量。單個內核支持OCP主端口發起數據存取和OCP從端口接收來自一致管理器的詢問。
參考文獻:
1. OCP規范2.2,2006 OCP-IP協會,版權所有
2. OCP一致擴展,第二部分:信號和解碼(未發表、初稿)
3. MIPS32 1004K一致處理系統用戶手冊,MIPS科技公司
評論