專利名稱:具有允許寫入未預先加載的高速緩存行的高速緩存電路的多處理電路的制作方法
技術領域:
本發(fā)明涉及一種多處理系統(tǒng)以及一種處理多個任務的方法。
背景技術:
已知在多處理電路的主存儲器與各個處理器電路之間使用高速緩存存儲器。高 速緩存存儲來自主存儲器的數(shù)據(jù)的拷貝,來自主存儲器的數(shù)據(jù)可以通過主存儲器地址來 進行尋址。因此,每個處理器電路可以訪問其高速緩存存儲器中的數(shù)據(jù),而不直接訪問 主存儲器。在具有可以存儲相同數(shù)據(jù)的拷貝的多個高速緩存存儲器的多處理系統(tǒng)中,在修 改數(shù)據(jù)時數(shù)據(jù)的一致性是一個問題。如果一個處理器單元修改其高速緩存存儲器中針對 主存儲器地址的數(shù)據(jù),在將修改后的數(shù)據(jù)寫回主存儲器之前,從該主存儲器地址加載數(shù) 據(jù)會導致不一致性。同樣其他處理器電路的高速緩存存儲器中針對主存儲器地址的先前 數(shù)據(jù)的拷貝會不一致??梢允褂酶咚倬彺鎱f(xié)議來防止不一致性。一種已知的高速緩存協(xié)議是所謂的 “修改_排他-共享-無效”(MESI)協(xié)議。該協(xié)議基于高速緩存行來工作,高速緩存行
分別包含針對來自連續(xù)主存儲器位置的數(shù)據(jù)的高速緩存存儲器位置。根據(jù)MESI協(xié)議, 每個高速緩存行具有分配的狀態(tài),這種狀態(tài)根據(jù)與高速緩存行有關的事件而改變。這樣 的事件可以通過監(jiān)控(監(jiān)聽)其他高速緩存存儲器使用來訪問主存儲器的地址以及其他高 速緩存存儲器廣播的信號來檢測。正如協(xié)議的名稱所建議的,狀態(tài)包括“修改”狀態(tài)、“排他”狀態(tài)、“共享”
狀態(tài)以及“無效”狀態(tài)。當從主存儲器將數(shù)據(jù)加載到高速緩存行中且沒有其他高速緩存 存儲器高速緩存該數(shù)據(jù)時,將排他狀態(tài)分配給該高速緩存行。當從主存儲器將數(shù)據(jù)加載 到高速緩存行中且另一高速緩存存儲器也存儲了該高速緩存行時,將共享狀態(tài)分配給高 速緩存行。如果在發(fā)生上述情況時其他高速緩存存儲器中的高速緩存行處于排他狀態(tài), 則將其他高速緩存存儲器中的高速緩存行改成共享狀態(tài)。當高速緩存行被“損壞”時, 即,被從高速緩存中移除時,向高速緩存行分配“無效”狀態(tài)。這可以為其他數(shù)據(jù)讓出 空間,或者在需要避免不一致時進行。在MESI協(xié)議中,當來自關聯(lián)的處理器電路的寫入操作修改高速緩存行中的數(shù)據(jù) 時,將“修改”狀態(tài)分配給高速緩存存儲器的該高速緩存行??梢允褂弥列薷臓顟B(tài)的轉 移來觸發(fā)將無效狀態(tài)分配給其他高速緩存存儲器中的相應高速緩存行。在高速緩存存儲 器已將高速緩存行寫回主存儲器之前,保持修改狀態(tài)。當已執(zhí)行了寫回時,可以將高速緩存行從修改狀態(tài)切換。然而,有利的是并不 使用立即寫回,以避免在接收到高速緩存行中的多次數(shù)據(jù)修改情況下的多次寫回??梢?在單次動作中寫回這種多次修改的最后結果。在這種情況下,高速緩存行保持在修改狀 態(tài),直到寫回為止。
修改狀態(tài)具有以下效果防止其他高速緩存存儲器獨立地加載高速緩存行的針 對主存儲器地址的數(shù)據(jù)。取而代之,當嘗試將這樣的數(shù)據(jù)加載到其他高速緩存存儲器中 時,采取動作以確保一致性。一種解決方案是,通過將修改后的高速緩存行寫回到主存 儲器中,即,通過從修改狀態(tài)中退出,來響應來自另一高速緩存的加載嘗試。當上述已 經(jīng)完成時,其他高速緩存可以從主存儲器加載高速緩存行。更快速的解決方案是,從修 改狀態(tài)的高速緩存行中將數(shù)據(jù)拷貝到嘗試加載該數(shù)據(jù)的其他高速緩存存儲器,而不是從 主存儲器加載該數(shù)據(jù)。在這之后,稍后進行寫回到主存儲器。已經(jīng)提出了 MESI協(xié)議的各種改進,其中,已經(jīng)擴展了可以分配給高速緩存行的 狀態(tài)的范圍,以提高高速緩存效率。例如,美國專利申請2005/27946已經(jīng)提出了添加
“增強修改”狀態(tài)和“增強排他”狀態(tài)?!霸鰪娦薷摹睜顟B(tài)的分配對于高速緩存行表示 了與“修改”狀態(tài)相同,同時加上以下事實修改后的高速緩存行的拷貝存儲在另一高 速緩存存儲器中?!霸鰪娕潘睜顟B(tài)分配給高速緩存行表示了高速緩存行在另一高速緩 存存儲器中處于“增強修改”狀態(tài)。這些狀態(tài)用于將寫回高速緩存行的職責從一個高速 緩存?zhèn)鬟f給另一個高速緩存。MESI協(xié)議下的訪問操作要求,包括針對所訪問的主存儲器地址的數(shù)據(jù)在內(nèi)的高 速緩存行必須在高速緩存存儲器中。如果數(shù)據(jù)沒有存在于高速緩存中,則發(fā)生高速緩存 未命中,并且首先必須加載數(shù)據(jù)。這也可以應用在訪問操作是寫入操作時。這一點可以 是有利的,因為很可能以短時間距離來訪問針對高速緩存行中相鄰地址的數(shù)據(jù),從而它 們在高速緩存中的可獲得性會加速處理。在任何情況下,這在將MESI協(xié)議的修改狀態(tài) 分配給高速緩存行之前是有必要的,這表示了高速緩存行包含最新數(shù)據(jù)。然而,僅需要使用來自高速緩存行的修改的數(shù)據(jù)。在這種情況下,在能夠訪問 數(shù)據(jù)之前將數(shù)據(jù)加載到高速緩存存儲器中的這種需要在寫入操作情況下降低了處理器效 率。
發(fā)明內(nèi)容
本發(fā)明的目的是提高具有高速緩存存儲器的多處理系統(tǒng)的效率。提供了一種根據(jù)權利要求1所述的多處理電路。該電路包括具有存儲器的高速 緩存電路,所述存儲器用于高速緩存行、定義存儲器中高速緩存行的狀態(tài)的狀態(tài)信息、 以及存儲器中至少一個高速緩存行內(nèi)的各個可尋址位置的標志信息。當標志信息指示無 效狀態(tài)時,響應于對未存儲在存儲器中的高速緩存行中的位置進行尋址的訪問命令以及 響應于對存儲在存儲器中的所述至少一個高速緩存行內(nèi)的位置進行尋址的讀取命令,來 檢測高速緩存未命中。當?shù)谝惶幚黼娐穼?shù)據(jù)寫入位置的一部分時,第一高速緩存電路的控制電路選 擇性地在第一高速緩存電路中將標志信息置位,而不預先從后臺存儲器中加載存儲的至 少一個高速緩存行。第二高速緩存電路的高速緩存控制電路結合針對至少一個高速緩存 行的標志信息,從第一高速緩存電路中拷貝來自至少一個高速緩存行的數(shù)據(jù),因此,在 不必從后臺存儲器中讀取高速緩存行的情況下,無法為寫入數(shù)據(jù)提供高速緩存一致性。在實施例中,通過首先迫使第一高速緩存電路將至少一個高速緩存行連同從標 志信息導出的信號一起寫回至主存儲器,以選擇性地使能高速緩存行的一部分的寫入,
5來執(zhí)行拷貝。在這種情況下,第二高速緩存可以從該寫回獲得高速緩存行數(shù)據(jù)以及標志 信息。因此,不需要附加手段來實現(xiàn)高速緩存到高速緩存的拷貝。在實施例中,針對寫入操作,響應于高速緩存未命中來為高速緩存行分配存儲 空間,而不響應于高速緩存未命中來將數(shù)據(jù)從后臺存儲器加載到高速緩存中。然后將來 自寫入操作的數(shù)據(jù)寫入分配的存儲空間,并且將標志信息置位以選擇性地指示來自寫入 命令的數(shù)據(jù)所寫入的那個位置或那些位置有效。因此,由此避免了從后臺存儲器加載數(shù) 據(jù)的時間損失。在實施例中,當至少一個高速緩存行在存儲器中但標志信息指示無效狀態(tài)時, 通過產(chǎn)生針對該高速緩存行的無效信號,響應于針對讀取命令的高速緩存未命中,產(chǎn)生 針對高速緩存未命中的無效信號。相反,其他高速緩存未命中(例如,由于高速緩存行 根本沒有存儲在高速緩存電路中這一事實引起的未命中)引起讀取請求。這樣,以簡單 方式確保了針對讀取操作的一致數(shù)據(jù)。在實施例中,當至少一個高速緩存行在存儲器中但標志信息指示無效狀態(tài)時, 針對讀取命令,在高速緩存未命中的情況下使用特殊讀取請求。第一和第二高速緩存電 路的控制電路選擇性地將通過特殊讀取請求所獲得的后臺存儲器數(shù)據(jù)僅拷貝到標志信息 指示不處于無效狀態(tài)的位置。因此,避免了首先將來自高速緩存行的數(shù)據(jù)寫回至后臺存 儲器的需要。在實施例中,當無效和/或收回(evict)至少一個高速緩存行時,寫回涉及到基 于標志信息的針對內(nèi)容的相應部分的寫入使能信號。因此,使后臺存儲器保持一致。在 實施例中,針對寬數(shù)據(jù)總線的相應部分的寫選通脈沖(writestrobe)可以用于該目的。
圖1示出了多處理器系統(tǒng);圖2示出了高速緩存電路的結構方面;圖3示出了高速緩存操作的流程圖。
具體實施例方式圖1示出了多處理器系統(tǒng),包括主存儲器10、多個處理器電路12、以及分別 耦接在主存儲器與各個處理器電路12之間的高速緩存電路14、14’、14”。諸如總線之 類的通信電路16可以用于將高速緩存電路14、14’、14”耦接至主存儲器10,并將高 速緩存電路14、14’、14”彼此耦接。處理器電路12可以包括可編程電路,被配置 為通過執(zhí)行指令程序來執(zhí)行任務。備選地,處理器電路12可以被專門設計為執(zhí)行任務。 盡管為了簡要起見在處理器電路12與主存儲器之間示出了具有一個高速緩存電路層的簡 單結構,應當強調(diào)的是,實際上可以使用更大數(shù)量的高速緩存層。在操作中,當每個處理器電路12執(zhí)行任務時,每個處理器電路12通過提供地 址、通知要執(zhí)行讀取還是寫入操作(以及可選地,讀取修改寫入操作)、以及輸入和/或 輸出在操作中所涉及的數(shù)據(jù),來訪問其高速緩存電路14、14’、14”。高速緩存電路14、14’、14”可以具有類似結構,并因此在下文中當不存在區(qū) 別時使用附圖標記14來指代每個高速緩存電路。更詳細示出了高速緩存電路14中的一個。該高速緩存電路包括高速緩存存儲器140、地址比較電路142以及控制電路144。高 速緩存存儲器140耦接至處理器電路12的數(shù)據(jù)輸入/輸出接口。高速緩存存儲器140包 括用于存儲高速緩存行的存儲地址。地址比較電路142耦接在處理器電路12的地址輸出 與高速緩存存儲器140的選擇輸入之間。此外,地址比較電路142具有耦接至來自通信 電路的連接的監(jiān)聽輸入??刂齐娐?44耦接在高速緩存存儲器140與主存儲器10之間, 其中,控制電路144經(jīng)由通信電路16耦接至主存儲器10。此外,控制電路144耦接至地 址比較電路142??梢詫⒖刂齐娐?44實現(xiàn)為被編程以執(zhí)行在下文中描述的動作的微處理 器電路。取而代之,可以使用被設計為執(zhí)行這些動作的邏輯電路,或查找電路。在操作中,高速緩存存儲器140存儲具有來自主存儲器10的數(shù)據(jù)的拷貝的高速 緩存行。地址比較電路142將來自處理器電路12的地址與存儲的高速緩存行的地址信息 進行比較,并且如果檢測到針對該地址的數(shù)據(jù)存儲在高速緩存存儲器140中,則產(chǎn)生選 擇信號,以在高速緩存中選擇存儲位置。響應于此,高速緩存存儲器140在所選位置中 讀取和/或寫入數(shù)據(jù)。當?shù)刂繁容^電路142檢測到高速緩存存儲器140沒有存儲針對該地址的數(shù)據(jù)時, 地址比較電路142將這一點通知給控制電路144。如果發(fā)生了上述情況,控制電路144在 高速緩存存儲器140中選擇存儲位置,以存儲具有針對該地址的數(shù)據(jù)的高速緩存行???制電路144將信息提供給地址比較電路142,使其能夠將地址轉換成對存儲位置的選擇。 如果訪問是讀取操作,則控制電路144首先訪問主存儲器10,以加載包含針對該地址的 數(shù)據(jù)在內(nèi)的高速緩存行,并控制電路144將該高速緩存行存儲在高速緩存存儲器140中的 所選位置中。地址比較電路142還監(jiān)控其他高速緩存電路14所發(fā)送的地址,并且將這些地址 與存儲的高速緩存行的地址信息進行比較。當?shù)刂繁容^電路142檢測到高速緩存存儲器 140存儲針對這樣的地址的數(shù)據(jù)時,地址比較電路142將這一點通知給控制電路144。響 應于此,控制電路可以修改高速緩存行的狀態(tài)、更新高速緩存行中的數(shù)據(jù)、或者使高速 緩存行無效。這可以根據(jù)MESI協(xié)議以及如下所述來進行。圖2示出了高速緩存電路14的結構方面。示出了多個高速緩存行20,并且針對 每個高速緩存行,示出了針對地址標簽22、高速緩存行狀態(tài)信息24以及標志信息26的存 儲位置。高速緩存行20存儲在高速緩存存儲器140中。地址標簽22、高速緩存行狀態(tài) 信息24以及標志信息26可以存儲在地址比較電路142中,但是備選地,該信息的一部分 或全部可以存儲在高速緩存存儲器140中。地址標簽22表示應用于相應高速緩存行20的地址的一部分或全部。應注意, 地址標簽可以在復雜的地址比較方案起作用,例如在η向關聯(lián)比較方案中,在這樣的情 況下僅需要表示地址的一部分。在全關聯(lián)方案中,可以使用更完整的地址。由于這與進 一步描述無關,因此不對比較方案的具體內(nèi)容進行描述。高速緩存行狀態(tài)信息24表示分配給高速緩存行20的狀態(tài)。該狀態(tài)信息至少在排 他狀態(tài)、無效狀態(tài)、修改狀態(tài)以及共享狀態(tài)之間進行區(qū)分。與標志信息相結合地或者通 過其自身,狀態(tài)信息還可以區(qū)分部分有效修改狀態(tài)與部分有效共享狀態(tài)??梢允褂酶?狀態(tài)。當使用少于8個狀態(tài)時,三個比特足以表示狀態(tài),但是可以使用任何狀態(tài)表示。在高速緩存行20中提供針對各個可尋址位置(例如,字節(jié)或字)的標志信息
726。因此,例如,如果每個高速緩存行由8個可尋址位置組成,則針對每個高速緩存行 提供8個標志信息項,如果每個高速緩存行由16個可尋址位置組成,則針對每個高速緩 存行提供16個標志信息項。每個項可以由單個比特組成。標志信息項可以處于置位狀態(tài) 或重置狀態(tài),在這樣的情況下,可以將針對位置的標志信息分別描述為“置位”和“重 置”(或“未置位”)。在標志比特的情況下,置位可以對應于二進制值1,重置對應于 二進制值0??刂齐娐?44被配置為使用高速緩存行狀態(tài)信息24和標志信息26來控制高速緩 存操作。除了來自處理器電路12的寫入操作的情況之外,當高速緩存行的狀態(tài)信息24指 示排他狀態(tài)、無效狀態(tài)、修改狀態(tài)或共享狀態(tài)時,傳統(tǒng)MESI協(xié)議可以用于高速緩存行。圖3示出了高速緩存電路14的操作的流程圖。在第一步驟31中,處理器電路 12發(fā)出具有地址的訪問操作。在第二步驟32中,比較電路142檢測具有該地址的高速緩 存行是否存儲在高速緩存存儲器140中。如果是,比較電路142執(zhí)行第三步驟33,測試 操作是否是讀取操作(第二步驟32和第三步驟33可以并行執(zhí)行)。在讀取操作的情況 下,高速緩存存儲器140執(zhí)行第四步驟34,讀取并返回其所存儲的針對該地址的數(shù)據(jù)。 如果操作是寫入操作,則高速緩存存儲器140在備選第四步驟34a中將數(shù)據(jù)寫入針對該高 速緩存行的存儲位置。同樣,如果操作是至緩存的高速緩存行的寫入操作,則控制電路 144執(zhí)行第五步驟35,在高速緩存行處于共享狀態(tài)情況下向其他高速緩存電路14發(fā)送針 對該高速緩存行的無效信號,并且執(zhí)行第六步驟36,將高速緩存行的狀態(tài)改變成修改狀 態(tài)。當?shù)诙襟E32揭示了在高速緩存存儲器140中沒有存儲具有數(shù)據(jù)的高速緩存行 時,控制電路144執(zhí)行第七步驟37,在高速緩存存儲器140中為包含該地址的高速緩存行 分配存儲位置。這可以涉及另一高速緩存行的收回。隨后,控制電路144測試操作是讀 取操作還是寫入操作。在讀取操作的情況下,控制電路144執(zhí)行第九步驟39,發(fā)出從主 存儲器10加載高速緩存行的請求,或者如果已經(jīng)提供了,則發(fā)出從另一高速緩存電路14 加載高速緩存行的請求。此外,在第九步驟39中,控制電路依據(jù)從中拷貝該高速緩存行 的源,將高速緩存行的狀態(tài)置位為例如排他或共享。隨后,高速緩存存儲器140可以進 行第四步驟34 (在流程圖中省略了連接)。因此,在從主存儲器10中讀取針對具體地址的高速緩存行時,控制電路114可 以在沒有接收到其他高速緩存電路14緩存了針對該具體地址的高速緩存行的信號情況 下,將高速緩存行狀態(tài)信息置位為表示排他狀態(tài),并且在一個或多個其他高速緩存電路 14緩存了處于共享或排他狀態(tài)的、針對該具體地址的高速緩存行的情況下,將高速緩存 行狀態(tài)信息置位為共享狀態(tài)。類似的,當控制電路144檢測到另一高速緩存電路14加載 了針對該地址的高速緩存行時,控制電路114可以將針對該具體地址的高速緩存行的排 他狀態(tài)替換為共享狀態(tài)。當高速緩存行被“收回”時,例如,為針對另一地址的高速緩存行讓出空間, 或者在修改之后,控制電路將高速緩存行狀態(tài)信息24置位為表示無效狀態(tài)。地址比較電 路142測試高速緩存行狀態(tài)信息24是否表示“無效狀態(tài)”。如果是,則地址比較電路 142不選擇該高速緩存行,從而對于相關地址發(fā)生高速緩存未命中。并行地,高速緩存電路14還監(jiān)控來自其他高速緩存電路14的信號。如果比較電路142檢測到來自另一高速緩存電路的、針對存儲在高速緩存存儲器140中的高速緩存 行中的地址的信號,則將這一點通知給控制電路144。依據(jù)該信號,控制電路144可以收 回高速緩存行或改變其狀態(tài)。部分有效高速緩存行當處理器電路12通知針對寫入地址的寫入操作,并且地址比較電路142檢測到 沒有存儲針對該寫入地址的有效高速緩存行時,則執(zhí)行特殊動作。地址比較電路142將 這一點通知給控制電路144。響應于此,控制電路144例如通過收回高速緩存存儲器140 中的另一高速緩存行,來選擇高速緩存存儲位置,以存儲具有與該寫入地址相關聯(lián)的數(shù) 據(jù)的高速緩存行。任何已知的策略,例如,LRU(最近最少使用)可以用于選擇這樣的 存儲位置。隨后,控制電路144將針對所選高速緩存行的高速緩存行狀態(tài)信息24置位為表 示修改狀態(tài)。備選地,可以將狀態(tài)信息24置位為特殊的“部分有效修改”狀態(tài)。當例 如通過將高速緩存行地址的一部分寫入到針對分配的存儲位置的標簽信息來使用寫入地 址時,控制電路144使得地址比較電路142能夠選擇該高速緩存行。將來自處理器電路 12的寫入操作的寫入數(shù)據(jù)存儲在高速緩存行中。然而,不加載來自主存儲器10的針對高 速緩存行的數(shù)據(jù)。應當認識到,這意味著高速緩存行中未寫入處的數(shù)據(jù)實際上是無效的(即,不 確保與主存儲器10中的數(shù)據(jù)相同,或者通過處理器電路12修改的),盡管并沒有為高速 緩存行置位無效狀態(tài)。取而代之,這可以通過標志信息來指示。將針對數(shù)據(jù)所寫入的一 個或多個位置的標志位或標志信息置位。重置高速緩存行中針對所有其他可尋址位置的 標志信息。效果上,標志信息連同狀態(tài)信息24 —起可以指示高速緩存行處于“部分有效 修改”狀態(tài)。當將高速緩存行從主存儲器10整體地讀入到高速緩存存儲器中時,針對高 速緩存行中的所有位置將標志信息26置位。備選地或附加地,可以將高速緩存行的狀態(tài) 置位,以指示高速緩存行整體上是有效的。當處理器電路12隨后將數(shù)據(jù)寫入到與處于修改或部分有效修改狀態(tài)中的高速緩 存行20相關聯(lián)的地址時,將高速緩存行中一個或多個可尋址位置的標志信息置位,并且 將來自處理器電路12的寫入數(shù)據(jù)存儲在這些位置中。如可以注意到的,這可以意味著高 速緩存行中該部分數(shù)據(jù)是有效的,但是不知道等于主存儲器中的相應數(shù)據(jù)。當將寫入數(shù)據(jù)寫入到高速緩存行中時,如果在分配之后或者隨后,控制電路144 向其他高速緩存電路14發(fā)送具有該寫入地址的高速緩存行的無效信號,使得這些高速緩 存電路在已經(jīng)存儲了該高速緩存行的情況下可以收回高速緩存行??蛇x地,如果高速緩 存行處于排他狀態(tài),則可以省略上述操作。響應于此,其他高速緩存電路如果已經(jīng)存儲 了該高速緩存行,則收回該高速緩存行。圖3示出了該操作的示例的流程圖。在第八步驟38之后,當檢測到針對還沒有 在高速緩存存儲器140中的高速緩存行中的地址接收到寫入操作時,控制電路144執(zhí)行第 一附加步驟301,將針對該高速緩存行的狀態(tài)信息置位為修改,或者如果可用,置位為部 分有效修改。隨后,控制電路144執(zhí)行第二附加步驟302,向其他高速緩存電路14針對 該高速緩存行的無效信號。接著,高速緩存存儲器140執(zhí)行第三附加步驟303,將寫入操作的數(shù)據(jù)寫入到針對該高速緩存行的分配位置的一部分中,并且將針對寫入了數(shù)據(jù)的位置的標志信息26置 位。類似的,在備選第四步驟34a中,在檢測到至先前存儲的高速緩存行的寫入之后, 高速緩存存儲器140將寫入了數(shù)據(jù)的位置的標志信息26置位。在寫入期間已置位的標志信息用于控制針對處理器電路12的讀取操作的控制執(zhí) 行。當處理器電路12從與處于部分有效修改狀態(tài)中的高速緩存行20相關聯(lián)的地址中讀 取數(shù)據(jù)時,地址比較電路142測試高速緩存行中針對該地址的標志比特(或者在讀取操作 覆蓋多個可尋址位置的情況下,測試針對地址序列的標志比特),并且在沒有標志比特未 被置位(或者針對序列的標志信息中的任何一個未被置位)的情況下產(chǎn)生高速緩存未命中 信號??刂齐娐?44通過以下操作響應針對部分有效修改狀態(tài)的高速緩存行的高速緩 存未命中將數(shù)據(jù)從高速緩存行寫回至主存儲器10,僅針對來自高速緩存行中由標志比 特的置位值標記了的可尋址位置的數(shù)據(jù),使能寫入。不在主存儲器10中更新標志比特處 于重置狀態(tài)的位置。例如,可以使用具有針對主存儲器的各個數(shù)據(jù)線的多個寫選通脈沖 線的主存儲器,在這種情況下,使用標志信息來控制寫選通脈沖線。隨后,控制電路144 將數(shù)據(jù)從高速緩存行讀取回至主存儲器10,并且將排他或共享狀態(tài)分配給高速緩存行。在圖3的流程圖中,這可以通過第四步驟34來實現(xiàn),第四步驟34包括子步驟 341,在從高速緩存存儲器140中讀取(或至少輸出)數(shù)據(jù)的子步驟343之前,在子步驟 341中,控制電路144測試讀取操作是否僅讀取被標志信息26指示為有效的數(shù)據(jù)。如果 數(shù)據(jù)的任何部分或全部是無效的,則在使得高速緩存存儲器140執(zhí)行讀取數(shù)據(jù)的子步驟 之前,控制電路144首先執(zhí)行子步驟342,使得將數(shù)據(jù)從主存儲器10讀取到高速緩存存儲 器140中。當控制電路144判定收回高速緩存行時,該控制電路144測試高速緩存行的分配 狀態(tài),并且根據(jù)針對傳統(tǒng)MESI狀態(tài)的MESI協(xié)議,執(zhí)行寫回。當測試揭示出高速緩存行 處于修改狀態(tài)(或者如果可用,部分有效修改狀態(tài))時,控制電路144對收回執(zhí)行寫回, 選擇性地使能對來自標志信息26已置位的位置的數(shù)據(jù)的寫回,并禁用來自標志信息26未 置位的的位置的數(shù)據(jù)的寫入。這可以通過使用被配置為依據(jù)標志信息來使能寫入的主存 儲器來進行,例如,主存儲器具有寫選通脈沖線,在這種情況下,控制電路144利用標 志信息來控制寫選通脈沖線。備選地,控制電路144可以具體提供必須修改的主存儲器 位置的地址。高速緩存行收回可以發(fā)生在例如控制電路144從另一高速緩存電路14接收到針 對高速緩存行的無效信號時。此外,控制電路144本身可以引起收回,例如當控制電路 144需要用于另一高速緩存行的存儲空間時。具有收回的一些特性的動作也發(fā)生在針對高速緩存行中的特定位置檢測到讀取 高速緩存未命中時。這可以涉及首先選擇性地使能來自主存儲器的高速緩存行中修改 后的數(shù)據(jù)的寫回讀回,然后從主存儲讀回整個高速緩存行。在另一實施例中,控制電路 144可以執(zhí)行從主存儲器10讀取高速緩存行,而不首先寫回修改后的數(shù)據(jù)。在這種情況 下,控制電路144利用來自主存儲器10的數(shù)據(jù)更新在高速緩存存儲器中的所選位置處的 數(shù)據(jù),在標志信息24指示數(shù)據(jù)不是有效的位置處。在這種情況下,控制電路144將高速 緩存行保持在修改狀態(tài)。
10
與其他高速緩存電路的交互控制電路144監(jiān)控來自其他高速緩存電路14的請求。當控制電路144檢測到請 求與相關聯(lián)的高速緩存存儲器140中存儲的高速緩存行有關時,控制電路可以響應該請 求。當高速緩存行處于部分有效修改狀態(tài)(由標志信息或特殊部分有效修改狀態(tài)值指示) 時,可以提供多種類型的請求。在實施例中,控制電路可以通過將高速緩存行的修改后 的數(shù)據(jù)寫回至主存儲器10來進行響應,以使其可用于其他高速緩存電路14。在這種情況 下,高速緩存行可以切換至共享狀態(tài)。在另一實施例中,可以在高速緩存電路14之間直 接通信修改后的數(shù)據(jù)。在這些實施例中,當?shù)刂繁容^電路142檢測到來自另一高速緩存電路14的讀取 請求具有存儲的高速緩存行中的地址,并且該高速緩存行具有修改狀態(tài)(或部分有效修 改狀態(tài))時,控制電路144通過向主存儲器10和/或其他高速緩存電路14傳輸已被分 配部分有效修改狀態(tài)的高速緩存行,來響應針對該高速緩存行的讀取請求。在這種情況 下,控制電路144還例如經(jīng)由寫選通脈沖線傳輸針對高速緩存行的標志信息26??蛇x 地,控制電路僅傳輸來自標志比特已置位的位置的數(shù)據(jù)。請求該高速緩存行的高速緩存電路14的控制電路144將數(shù)據(jù)加載到其高速緩存 存儲器140中針對該高速緩存行的存儲位置,并且根據(jù)接收到的標志信息,對針對該高 速緩存行的標志信息進行置位。在實施例中,在高速緩存行處于修改狀態(tài)的情況下,這 可以通過拷貝數(shù)據(jù)以及從高速緩存電路14發(fā)送給主存儲器的標志信息來進行。在這種情 況下,高速緩存行效果上處于在部分有效共享狀態(tài)。這可以與共享狀態(tài)的分配相結合地 通過標志信息來指示,或者可選地通過分配不同的部分有效共享狀態(tài)值來指示。如將認識到的,高速緩存電路14之間的部分有效高速緩存行的拷貝具有以下 效果高速緩存存儲器140可以包含修改后的數(shù)據(jù)的拷貝,但在其他位置中具有無效數(shù) 據(jù),這由標志信息標記。如果來自高速緩存行的讀取操作對由標志信息26標記為無效的位置進行尋址, 則控制電路144產(chǎn)生針對高速緩存行的無效信號。如所述,這會使持有高速緩存行在部 分有效修改狀態(tài)的高速緩存電路14的控制電路144將高速緩存行的有效部分寫回主存儲 器10。之后,請求該讀取的控制電路從主存儲器10加載整個高速緩存行。類似地,對于 后續(xù)讀取操作,如果涉及由標志信息26標記為無效的位置,則會產(chǎn)生高速緩存未命中。在備選實施例中,控制電路144響應于針對在高速緩存中但僅部分有效的高速 緩存行的這種類型的讀取未命中,產(chǎn)生特殊類型的讀取請求,而不是無效信號。這可以 避免首先寫回高速緩存行??梢允褂脙煞N可檢測類型的讀取請求當高速緩存行根本沒 有存儲在高速緩存存儲器時,正常類型的讀取請求;以及當存儲了高速緩存行但數(shù)據(jù)部 分無效時,特殊類型的讀取請求??刂齐娐?44監(jiān)控是否發(fā)送了針對標志信息指示了數(shù)據(jù)的一部分無效的高速緩 存行的特殊類型的讀取請求。如果是,控制電路144選擇性地從主存儲器10返回的數(shù)據(jù) 中拷貝標志信息未置位的位置處的數(shù)據(jù)。因此,將有效數(shù)據(jù)加載到不包含有效數(shù)據(jù)的位 置中。在這種情況下,可以針對高速緩存行中所有位置將標志信息置位。這可以在存 儲了該高速緩存行的所有高速緩存電路中進行,其中為該高速緩存行部分地重置標志信 肩、o
存在多種可能性來確保在共享情況下的后續(xù)一致性以及向主存儲器10最終寫回 修改。原則上,將修改狀態(tài)(或者部分有效修改狀態(tài))分配給高速緩存電路14中的高速 緩存行意味著,高速緩存電路具有將修改后的數(shù)據(jù)寫回至主存儲器10的職責。當已經(jīng)履 行了該職責時,可以將高速緩存行切換至另一狀態(tài)。在一個實施例中,完全職責始終保 持在首先將高速緩存行置于修改狀態(tài)(或部分有效修改狀態(tài))的高速緩存電路14。在其他實施例中,用于確保一致性和/或寫回的職責可以在高速緩存電路之間 部分或全部地轉移。在轉移針對高速緩存行的職責的實施例中,在高速緩存行處于修改 狀態(tài)(或部分有效修改狀態(tài))時請求該高速緩存行并從高速緩存電路14接收該高速緩存 行的高速緩存電路14的控制電路144隨后可以將該高速緩存行的狀態(tài)置位為修改狀態(tài) (或部分有效修改狀態(tài))。在這種情況下,可以發(fā)通知原高速緩存電路將該高速緩存行從 修改狀態(tài)切換。在實施例中,這可以通過將針對該高速緩存行的無效信號發(fā)送至原高速 緩存電路14來進行。例如,當檢測到至共享狀態(tài)并且數(shù)據(jù)部分有效的高速緩存行的、來 自處理器電路12的寫入操作時,可以采用上述動作。因此,在高速緩存電路14之間可以轉移一些權限和職責。例如,在檢測到至 處于部分有效共享狀態(tài)的高速緩存行的寫入操作時,控制電路144可以允許寫入,將寫 入數(shù)據(jù)的位置的標志信息置位,并向其他高速緩存電路發(fā)送針對該高速緩存行的無效信 號。在這種情況下,伴隨著上述操作,控制電路可以將高速緩存行切換至部分有效修改 狀態(tài)。盡管已經(jīng)從所采取的動作方面描述了高速緩存電路14的操作,但是應當理解, 可以將該方法操作直接轉換成高速緩存電路14的配置,例如,轉換成執(zhí)行該動作的控制 電路144的計算機程序的指令,和/或轉換成使在指定情況下執(zhí)行動作的邏輯電路。應當認識到,各種備選實施例是可能的。盡管已經(jīng)描述了針對所有存儲的高速 緩存行保持標志信息的實施例,但是應當認識到,取而代之,也可以僅針對一個存儲的 高速緩存行或高速緩存行的一部分來保持標志信息。在這種情況下,可以根據(jù)傳統(tǒng)MESI 協(xié)議來處理其他高速緩存行,當必須從處理器電路12寫入數(shù)據(jù)時,如果整個高速緩存行 不在高速緩存存儲器140中,則將整個高速緩存行加載到高速緩存存儲器140中。效果 上,這意味著,隱含地假定針對這種高速緩存行中的所有位置,標志信息是置位的。在 這種情況下,可以提供由在具有標志信息的高速緩存行的情況下的標志信息控制的任何 信號,就如同為不具有標志信息的高速緩存行設置了標志信息一樣。在實施例中,狀態(tài)信息24僅表示MESI狀態(tài)值(修改、排他、共享和無效),在 這種情況下,控制電路144在依據(jù)所有數(shù)據(jù)是否有效而需要不同動作時執(zhí)行針對高速緩 存行的標志信息的測試。備選地,附加的狀態(tài)值可以用于指示部分有效數(shù)據(jù)的存在。在 這種情況下,控制電路144可以首先測試針對高速緩存行的狀態(tài)信息是否指示這樣的附 加狀態(tài)。這可以去除對測試各個單獨標志信息項的需要。附加狀態(tài)的表示也可以是標志 信息的一部分,例如采取應用于整個高速緩存行的單個比特的形式??梢钥紤]該比特是 標志信息26和狀態(tài)信息24中的一個或二者的一部分。標志信息26和狀態(tài)信息24可以 交疊。在實施例中,在高速緩存電路之間已經(jīng)拷貝了高速緩存行之后,可以在高速緩 存電路之間部分地轉移寫回部分有效高速緩存行的職責。在實施例中,這可以通過以下操作來實現(xiàn)提供附加信息來在高速緩存電路所修改的數(shù)據(jù)與其他高速緩存電路所修改 的數(shù)據(jù)之間進行區(qū)分,并隨后進行拷貝。在這種情況下,每個高速緩存電路可以被配置 為使能僅針對因在高速緩存電路中的修改而被標記的數(shù)據(jù)至存儲器的寫回。在實施例中,這可以通過提供附加信息指示存儲了部分有效高速緩存行的拷貝 的高速緩存電路的數(shù)目來實現(xiàn)。在這種情況下,控制電路144每次在檢測到高速緩存 行被拷貝至另一高速緩存電路時以及每次在檢測到從另一高速緩存電路收回高速緩存行 時,更新附加信息。在該實施例中,假定附加信息指示高速緩存電路是(仍)存儲了高速 緩存行的唯一一個高速緩存電路,控制電路144在從高速緩存電路收回高速緩存行時, 寫回該高速緩存行,選擇性地使能了被修改的位置。在另一實施例中,附加信息可以僅指示高速緩存電路是否是存儲高速緩存行的 唯一一個高速緩存電路。在該實施例中,寫回的職責可以保持在存儲了高速緩存行的拷 貝的前兩個高速緩存電路。盡管已經(jīng)描述了可應用于單層高速緩存的實施例,但是應認識到,類似的技術 可以應用于多層高速緩存。同樣,盡管已經(jīng)描述了具有主存儲器10的實施例,但是應認 識到,取而代之可以使用任何公共的后臺存儲器。此外,盡管優(yōu)選地針對所有處理電路使用相同設計的高速緩存電路,每一個均 允許部分有效高速緩存行,但是應當認識到,備選地,針對部分有效性,可以僅提供高 速緩存電路的一部分電路,其他部分的電路遵照正常MESI協(xié)議。因此,例如,一個高 速緩存電路可以允許伴隨著標志設置來對不具有來自存儲器的數(shù)據(jù)的高速緩存行進行寫 入,而另一高速緩存電路可以提供用于拷貝標志信息以及使用標志信息檢測高速緩存未 命中,即使這兩個高速緩存不是都同時具有這兩種能力。甚至可以將一些處理電路設置 為根本不具有高速緩存。如將注意的是,當通過這樣的處理器電路訪問數(shù)據(jù)時,有必要 將來自部分有效高速緩存行的數(shù)據(jù)寫回至主存儲器。根據(jù)對附圖、本公開以及所附權利要求的研究,本領域技術人員在實踐權利要 求所保護的本發(fā)明時可以理解和實現(xiàn)所公開的實施例的其他變體。在權利要求中,單詞
“包括”不排除其他元件或步驟,不定冠詞“a”或“an”不排除多個。單個處理器或 其他單元可以履行權利要求中所引述的若干項的功能。在彼此不同的獨立權利要求中引 述特定手段的事實并不指示這些措施的組合不是有利的。計算機程序可以存儲/分布在 適合介質(zhì)上,例如,與其他硬件一起提供或作為其他硬件的一部分提供的光存儲介質(zhì)或 固態(tài)介質(zhì),但是也可以以其他形式分布,例如經(jīng)由互聯(lián)網(wǎng)或其他有線或無線電信系統(tǒng)。 權利要求中的附圖標記不應視為限制本發(fā)明的范圍。
權利要求
1.一種多處理電路,具有至后臺存儲器(10)的接口、第一和第二處理電路(12)、 以及分別耦接在所述接口與第一和第二處理電路(12)之間的第一和第二高速緩存電路 (14、14’),第一和第二高速緩存電路(14,14’)分別包括_存儲器(140),用于高速緩存行、定義了存儲器(140)中高速緩存行的狀態(tài)的狀態(tài) 信息、以及存儲器(140)中至少一個高速緩存行內(nèi)的各個可尋址位置的標志信息;-高速緩存命中和未命中檢測電路(142),耦接至存儲器(140)和處理電路(12), 用于接收訪問命令,高速緩存命中和未命中檢測電路(142)被配置為在標志信息指示無 效狀態(tài)時,響應于對未存儲在存儲器(140)中的高速緩存行中的位置進行尋址的訪問命 令以及對存儲在存儲器(140)中的所述至少一個高速緩存行內(nèi)的位置進行尋址的讀取命 令,來產(chǎn)生高速緩存未命中命令;-高速緩存控制電路(144),耦合至高速緩存命中和未命中檢測電路(142)、存儲器 (140)和后臺存儲器接口,其中,第一高速緩存電路(14)的高速緩存控制電路(144)被配 置為,在第一處理電路(12)向所述至少一個存儲高速緩存行內(nèi)的可尋址位置的一部分寫 入數(shù)據(jù)時選擇性地將第一高速緩存電路(14)中針對可尋址位置的所述一部分的標志信息 置位為有效狀態(tài),而不預先從后臺存儲器(10)加載所存儲的所述至少一個高速緩存行, 第二高速緩存電路(14’ )的高速緩存控制電路(144)被配置為結合針對至少一個高速緩 存行的標志信息,從第一高速緩存電路(14)拷貝來自所述至少一個高速緩存行的數(shù)據(jù)。
2.根據(jù)權利要求1所述的多處理電路,其中,第二高速緩存電路(14’)的控制電路 (144)被配置為產(chǎn)生針對未命中的高速緩存行的讀取請求,以及第一高速緩存電路(14) 被配置為檢測所述讀取請求并在檢測到所述讀取請求具有與所述至少一個高速緩存行的 地址匹配的請求地址時,使第一高速緩存電路(14)的控制電路(144)結合標志信息來產(chǎn) 生依據(jù)所述至少一個高速緩存行的信息的傳輸,第二高速緩存電路(14’)的控制電路 (144)被配置為根據(jù)所述傳輸導出高速緩存行和標志信息。
3.根據(jù)權利要求2所述的多處理電路,其中,第一高速緩存電路(14)的控制電路 (144)被配置為產(chǎn)生所述傳輸作為至后臺存儲器(10)的寫入命令,其中所述至少一個高 速緩存行的內(nèi)容作為寫入數(shù)據(jù),以及根據(jù)標志信息導出針對所述內(nèi)容的相應部分的寫入 使能信號。
4.根據(jù)權利要求1所述的多處理電路,其中,第一高速緩存電路(14)的控制電路 (144)被配置為當所述至少一個高速緩存行不在第一高速緩存電路(14)的存儲器(14) 中時,響應于針對來自第一處理器電路(12)的寫入命令的具有所述至少一個高速緩存行 中的地址的高速緩存未命中,在存儲器(140)中為所述至少一個高速緩存行分配存儲空 間;使能來自第一處理的至所分配的存儲空間的寫入,而不首先從后臺存儲器拷貝高速 緩存行的當前內(nèi)容;以及將標志信息置位以選擇性指示來自寫入命令的數(shù)據(jù)所寫入的那 個位置或那些位置為有效的。
5.根據(jù)權利要求1所述的多處理電路,其中,第二高速緩存電路(14’)的控制電路 (144)被配置為當所述至少一個高速緩存行在存儲器(140)中但標志信息指示無效狀態(tài) 時,通過產(chǎn)生針對高速緩存行的無效信號來響應針對讀取命令的高速緩存未命中;以及 通過產(chǎn)生讀取請求來響應于其他高速緩存未命中。
6.根據(jù)權利要求1所述的多處理電路,其中,第二高速緩存電路(14’)的控制電路(144)被配置為在所述至少一個高速緩存行在存儲器(140)中但標志信息指示無效狀態(tài) 時,通過產(chǎn)生與針對其他高速緩存未命中的正常讀取請求有區(qū)別的針對該高速緩存行的 特殊讀取請求,來響應針對讀取命令的高速緩存未命中,第一和第二高速緩存電路(14, 14’ )的控制電路(144)被配置為,選擇性地將通過特殊讀取請求所獲得的后臺存儲器數(shù) 據(jù)僅拷貝至標志信息指示不在無效狀態(tài)的位置,并且將這些位置的標志信息置位。
7.根據(jù)權利要求1所述的多處理電路,其中,第一高速緩存電路(14)的控制電路 (144)被配置為當所述至少一個高速緩存行被無效和/或被收回時,將所述至少一個高速 緩存行寫回,其中所述至少一個高速緩存行的內(nèi)容作為寫入數(shù)據(jù),并根據(jù)標志信息導出 內(nèi)容的相應部分的寫入使能信號。
8.—種使用分別經(jīng)由第一和第二高速緩存電路(14,14’)耦接至后臺存儲器(10)的 第一和第二處理電路(12)來處理數(shù)據(jù)的方法,所述方法包括-在每個高速緩存電路(14,14’)中存儲高速緩存行、定義了存儲的高速緩存行的 狀態(tài)的狀態(tài)信息、以及存儲的至少一個高速緩存行內(nèi)各個可尋址位置的標志信息;-當?shù)谝惶幚黼娐?12)將數(shù)據(jù)寫入所述存儲的至少一個高速緩存行內(nèi)的可尋址位置 的一部分時,選擇性將第一高速緩存電路(14)中針對可尋址位置的所述一部分的標志信 息置位成有效狀態(tài),而不預先從后臺存儲器(10)加載所述存儲的至少一個高速緩存行;-結合所述至少一個高速緩存行內(nèi)的位置的標志信息,從第一高速緩存電路(14)中 將來自所述至少一個高速緩存行的數(shù)據(jù)拷貝到第二高速緩存電路(14’ )中;-在標志信息未置位時,響應于對未存儲在存儲器中的高速緩存行中的位置進行尋址 的訪問命令以及響應于對存儲在存儲器(140)中的所述至少一個高速緩存行內(nèi)的位置進 行尋址的讀取命令,來通知高速緩存未命中信號。
全文摘要
使用分別經(jīng)由第一和第二高速緩存電路(14,14’)耦接至后臺存儲器(10)的第一和第二處理電路(12)來處理數(shù)據(jù)。每個高速緩存電路(14,14’)存儲高速緩存行、定義了所存儲的高速緩存行的狀態(tài)的狀態(tài)信息、以及至少一個存儲的高速緩存行內(nèi)針對各個可尋址位置的標志信息。第一高速緩存電路(14)的高速緩存控制電路被配置為當?shù)谝惶幚黼娐?12)將數(shù)據(jù)寫入至少一個存儲高速緩存行內(nèi)的可尋址位置的一部分時,選擇性地將針對可尋址位置的所述部分的標志信息置位為有效狀態(tài),而不預先從后臺存儲器(10)加載至少一個存儲高速緩存行。結合針對至少一個高速緩存行內(nèi)的位置的標志信息,從第一高速緩存電路(14)將來自至少一個高速緩存行的數(shù)據(jù)拷貝到第二高速緩存電路(14’)中。在標志信息未置位時,響應于對未存儲在存儲器中的高速緩存行中的位置進行尋址的訪問命令和對存儲在存儲器(140)中的至少一個高速緩存行內(nèi)的位置進行尋址的讀取命令,來產(chǎn)生高速緩存未命中信號。
文檔編號G06F12/08GK102016810SQ200980113959
公開日2011年4月13日 申請日期2009年4月22日 優(yōu)先權日2008年4月22日
發(fā)明者特雷克·安德烈謝爾蓋耶維奇, 簡·胡格布魯格 申請人:Nxp股份有限公司