專利名稱:存儲器控制設備和存儲器控制方法
技術領域:
本發(fā)明涉及一種可靠地保持高速緩存之間的一致性(consistency)的技術。
背景技術:
近年來,為了解決處理器和與處理器連接的主存儲器之間的速度上的差異,通常在處理器中提供高速緩存存儲器。雖然這樣獲得了更高的處理速度,但由于高速緩存存儲器的存儲容量比主存儲器小得多,所以主存儲器中的數(shù)據(jù)僅有一小部分可被存儲在高速緩存存儲器中。因此,只有頻繁使用的數(shù)據(jù)被順序地依次存儲在高速緩存存儲器中。用從主存儲器中讀出的新數(shù)據(jù)寫覆蓋高速緩存存儲器中存在的舊數(shù)據(jù)的操作稱為高速緩存替換。
用于進行高速緩存替換的技術公開在(例如)日本專利申請?zhí)亻_No.H10-55305中。下文將詳細解釋在多處理器系統(tǒng)中怎樣進行高速緩存替換操作。
圖9是用于解釋高速緩存替換操作的示意圖。圖9示出的結構包括多處理器系統(tǒng)、存儲器控制設備100、和主存儲器40。該多處理器系統(tǒng)包括兩個處理器10和20。處理器10包括高速緩存存儲器11,處理器20包括高速緩存存儲器21。假設以4路(W0到W3)集相關方式(4-way setassociative scheme)控制高速緩存存儲器11和21。還假設某高速緩存索引的四個通路都處于有效狀態(tài),并且數(shù)據(jù)A到D分別存儲在該四個通路中。
處理器10和20通過存儲器控制設備100與主存儲器40通信。存儲控制設備100進行處理器10和20與主存儲器40之間的數(shù)據(jù)輸入/輸出控制,并且包括兩個TAG-RAM(標簽隨機存取存儲器)130和131以便有效地進行高速緩存的一致性控制。TAG-RAM 130和131分別存儲在高速緩存存儲器11和21中分別存儲的數(shù)據(jù)的地址信息。
為了解釋的目的,假設處理器10請求來自主存儲器40的具有與數(shù)據(jù)A到D相同的高速緩存索引的數(shù)據(jù)E(步驟S1301)。接著處理器10查閱高速緩存存儲器11以確定數(shù)據(jù)E在高速緩存中存儲的位置。因為全部通路有效,所以處理器10確定某一通路必須被無效。假設處理器10選擇W1作為被無效的塊(步驟S1302)。
處理器10進行高速緩存逐出處理,該高速緩存逐出處理包括從W1中逐出舊數(shù)據(jù)B并使逐出了數(shù)據(jù)B的塊無效。隨后,處理器10通知存儲器控制設備100對數(shù)據(jù)B的高速緩存逐出處理已經(jīng)完成(步驟S1303)。響應于該通知,存儲器控制設備100使TAG-RAM130的W1無效并將被處理器10逐出的數(shù)據(jù)B寫入主存儲器40。
此后,主存儲器40將數(shù)據(jù)E傳送給存儲器控制設備100。該存儲器控制設備100接收數(shù)據(jù)E并在TAG-RAM 130的W1中存儲數(shù)據(jù)E的地址信息,并且將數(shù)據(jù)E發(fā)送給處理器10。處理器10接收數(shù)據(jù)E并在W1中存儲該數(shù)據(jù)E。這樣完成了高速緩存替換操作。
因此,在傳統(tǒng)的方法中,不僅高速緩存存儲器中的內(nèi)容被更新,而且TAG-RAM中的內(nèi)容也被更新。存儲器控制設備通過查閱TAG-RAM來確定數(shù)據(jù)的輸入/輸出路線(route)。因此,在執(zhí)行高速緩存的一致性管理中,保持處理器的高速緩存存儲器的內(nèi)容與存儲器控制設備的TAG-RAM的內(nèi)容的一致性是絕對強制的要求。
然而,某些已知的處理器不將有關高速緩存逐出處理的信息通知給存儲器控制設備。如果多處理器系統(tǒng)包括這樣的處理器,則TAG-RAM中的內(nèi)容不能與高速緩存存儲器中的內(nèi)容一致,以至于存儲器控制設備不能維持高速緩存之間的一致性。解決該問題的一種方法是根本不提供TAG-RAM,但是,在這種情況下,每次進行存儲器訪問時都需要檢查全部處理器中高速緩存的存在/不存在,這降低了系統(tǒng)的性能。
發(fā)明內(nèi)容
本發(fā)明的一個目的是至少解決傳統(tǒng)技術中的問題。
根據(jù)本發(fā)明的一個方面,被連接到主存儲器和各自具有高速緩存存儲器的多個處理器之間的,并且控制由處理器對主存儲器的訪問的存儲器控制設備包括標簽信息存儲單元,具有多個存儲有高速緩存存儲器中保存的數(shù)據(jù)的地址信息的塊,其中所述塊可被有效或者無效;請求處理單元,用于處理處理器的存儲器訪問請求,并且當所述標簽信息存儲單元的任何一個所述塊必須被無效時,用于請求其高速緩存存儲器中保存有與將被無效的標簽信息存儲單元的塊中存儲的數(shù)據(jù)相同的待逐出數(shù)據(jù)的處理器進行將該待逐出的數(shù)據(jù)從該高速緩存存儲器逐出到主存儲器的高速緩存逐出處理;逐出目標數(shù)據(jù)存儲單元,用于在請求處理單元請求處理器進行高速緩存逐出處理時,在一條目中存儲待逐出數(shù)據(jù)的地址信息,直到處理器完成高速緩存逐出處理;和再次執(zhí)行決定單元,在所述請求處理單元確定了用于獲得處理器所請求的數(shù)據(jù)的獲取路線決定處理時,檢查存儲在所述逐出目標數(shù)據(jù)存儲單元中的地址信息,并且如果所請求的數(shù)據(jù)的地址信息包括在任何一條所述條目中,則使所述請求處理單元再次進行數(shù)據(jù)的獲取路線決定處理。
根據(jù)本發(fā)明的一個方面,一種控制多個各自具有高速緩存存儲器的處理器對主存儲器的訪問的方法包括對處理器的存儲器訪問請求進行處理,并且當保存有處理器的高速緩存存儲器中所保存的數(shù)據(jù)的地址信息的標簽信息存儲單元的任何一個所述塊必須被無效時,請求其高速緩存存儲器保存有待逐出的數(shù)據(jù)的處理器進行將該待逐出的數(shù)據(jù)從高速緩存存儲器逐出到主存儲器的高速緩存逐出處理,該待逐出的數(shù)據(jù)與將被無效的標簽信息存儲單元的塊中存儲的數(shù)據(jù)相同;當處理器在處理步驟被請求進行高速緩存逐出處理時,將待逐出數(shù)據(jù)的地址信息存儲在逐出目標數(shù)據(jù)存儲單元的一個條目中,直到處理器完成高速緩存逐出處理;以及當由任何一個所述處理器請求的獲得數(shù)據(jù)的獲取路線決定處理在處理步驟中被確定時,檢查存儲在逐出目標數(shù)據(jù)存儲單元中的地址信息,并且如果所請求的數(shù)據(jù)的地址信息被包括在任何一條所述條目中,則使處理步驟再次進行,以便再次進行數(shù)據(jù)的獲取路線決定處理。
本發(fā)明的其它目的,特征和優(yōu)點將在下面的詳細說明中具體闡述,或者將在結合附圖閱讀下面的詳細說明時顯而易見。
圖1是根據(jù)本發(fā)明的實施例的存儲器控制設備的功能框圖;圖2是用于解釋圖1所示的EWB緩沖器進行的寄存/釋放操作的示意圖;圖3是用于解釋圖1所示的ELA寄存器進行的寄存操作的示意圖;圖4是用于解釋圖1所示的ELA寄存器進行的另一寄存操作的示意圖;圖5是用于解釋圖1所示的再次執(zhí)行決定單元的操作的示意圖;圖6是用于解釋圖1所示的取消決定單元的操作的示意圖;圖7是用于解釋同一緩存行的數(shù)據(jù)在反向驅逐(BackEviction)完成之前被另一個處理器請求獲得時進行的操作的示例的示意圖;圖8是用于解釋當被反向驅逐的緩存行通過自主移出被無效時進行的操作的示例的示意圖;圖9是用于解釋高速緩存替換操作的示例的示意圖;圖10是用于解釋利用反向驅逐的高速緩存替換操作的示例的示意圖;圖11是用于解釋當相同緩存行的數(shù)據(jù)在反向驅逐完成之前被另一處理器請求獲得時進行的操作的示例的示意圖;圖12是用于解釋當被反向驅逐的緩存行被自主移出而無效時進行的操作的示例的示意圖。
具體實施例方式
下面將參照
本發(fā)明的示例性實施例。
在本發(fā)明中使用被稱為反向驅逐(BackEviction)的存儲器控制方法。然而首先將描述反向驅逐具有的某些缺陷。
當多處理器系統(tǒng)由不會將關于高速緩存逐出處理的信息傳送給存儲器控制設備的處理器所構建時,絕大部分問題可通過使存儲器控制設備指定處理器進行高速緩存逐出處理來解決。存儲器控制設備指定處理器進行高速緩存逐出處理的過程被稱為反向驅逐。
下面將描述使用反向驅逐的存儲器控制方案的示例。圖10是用于解釋利用反向驅逐進行高速緩存替換操作的示例的示意圖。與圖9中示出的部件具有相同或者類似的配置或者執(zhí)行相同或者類似功能的部件由相同的附圖標記指示。在圖10中,假設處理器10的高速緩存存儲器11是通過4路(W0到W3)集相關方式控制的,并且特定高速緩存索引的全部四個通路都處于有效狀態(tài),并且數(shù)據(jù)A到D被分別存儲在該四個通路中。
假設處理器10向主存儲器40請求與數(shù)據(jù)A到D具有相同高速緩存索引的數(shù)據(jù)E(步驟S1401)。處理器10查閱高速緩存存儲器11來確定數(shù)據(jù)E在高速緩存中存儲的位置。因為全部四路都有效,所以處理器10確定某一通路必須被無效。假設處理器10選擇W2作為要被無效的塊(步驟S1402)。存儲器控制設備100不會被通知處理器10已經(jīng)選擇了W2作為要被無效的塊。
另一方面,存儲器控制設備100接收對主存儲器40的數(shù)據(jù)E的請求,并且查閱TAG-RAM 130來確定數(shù)據(jù)E的地址信息在高速緩存中存儲的位置。因為相同高速緩存索引的通路全部有效,所以確定某一通路必須被無效。假設存儲了數(shù)據(jù)B的地址信息的W1被確定要被無效(步驟S1403)。
在此情況下,存儲器控制設備100請求處理器10對存儲有數(shù)據(jù)B的通路進行高速緩存逐出處理(步驟S1404)。響應該請求,處理器10進行對存儲有數(shù)據(jù)B的通路的高速緩存逐出處理,由此使W1無效(步驟S1405)。
此后,主存儲器40將數(shù)據(jù)E發(fā)送給存儲器控制設備100。該存儲器控制設備100接收數(shù)據(jù)E并將數(shù)據(jù)E的地址信息存儲在TAG-RAM 130的W1中,并將數(shù)據(jù)E發(fā)送給處理器10。該處理器10接收數(shù)據(jù)E并且將數(shù)據(jù)E存儲到W2中。這樣就完成了高速緩存替換操作。
當以這種方式進行高速緩存替換操作時,如圖10所示,高速緩存存儲器11的W1和W2中的內(nèi)容與TAG-RAM 130的W1和W2中的內(nèi)容不相同。然而,因為存儲在高速緩存存儲器11中的數(shù)據(jù)的所有地址信息都被存儲在TAG-RAM 130中,所以存在數(shù)據(jù)之間的一致性。這是因為,雖然在高速緩存存儲器11中存在數(shù)據(jù)A、E和D的最新的數(shù)據(jù),但在存儲器控制設備100查閱TAG-RAM 130情況下,不能從主存儲器40獲得這些數(shù)據(jù)。
這樣,即使多處理器系統(tǒng)包括不將有關高速緩存逐出處理的信息傳送給存儲器控制設備的處理器,在大多數(shù)情況下,也可通過使存儲器控制設備指定處理器進行高速緩存逐出處理來保持數(shù)據(jù)之間的一致性。然而,存在不能保持數(shù)據(jù)之間的一致性的兩種例外情況。下面將詳細描述這些例外情況。
第一例外情況是,同一緩存行(line)的數(shù)據(jù)在反向驅逐完成之前被另一個處理器請求。在反向驅逐期間,雖然在高速緩存存儲器11中存在最新數(shù)據(jù),但存在這樣的時段,在該時段中TAG-RAM 130的相應數(shù)據(jù)的塊被無效了。如果在該時段中,與該數(shù)據(jù)的緩存行相同的緩存行被另一處理器請求,則從主存儲器40獲取了不合需要的數(shù)據(jù),獲取了舊數(shù)據(jù)而沒有獲取新數(shù)據(jù)。
第二種例外情況是,將被反向驅逐的緩存行被自主移出(autonomousmove-out)無效。為了有效地使用高速緩存,處理器可能會自主地將舊數(shù)據(jù)從高速緩存存儲器中逐出。當已被自主移出而無效的塊的數(shù)據(jù)被不知情地由反向驅逐再次逐出時,主存儲器40中的最新數(shù)據(jù)會被舊數(shù)據(jù)寫覆蓋。
下面將描述兩個示例。圖11是用于解釋在反向驅逐完成之前,另一處理器請求獲得同一緩存行的數(shù)據(jù)時進行的操作的示例的示意圖。假設處理器10的高速緩存存儲器11的某個高速緩存索引的全部四個通路都處于有效狀態(tài),并且數(shù)據(jù)A到D被分別存儲在該四個通路中。
假設處理器10向主存儲器40請求與數(shù)據(jù)A到D具有相同高速緩存索引的數(shù)據(jù)E(步驟S1501)。處理器10查閱高速緩存存儲器11確定數(shù)據(jù)E在高速緩存中的存儲位置。因為所有這四路都有效,所以處理器10確定某一通路必須被無效。假設處理器10選擇W2作為要被無效的塊(步驟S1502)。
另一方面,存儲器控制設備100一旦檢測出處理器10已經(jīng)請求來自主存儲器40的數(shù)據(jù)E,則查閱TAG-RAM 130確定數(shù)據(jù)E所存儲的位置。因為相同高速緩存索引的所有四個通路全部有效,所以它確定某一通路必須被無效。此時,確定存儲有數(shù)據(jù)B的地址信息的W1將被無效(步驟S1503)。
存儲器控制設備100請求處理器10進行針對存儲有數(shù)據(jù)B的通路的高速緩存逐出處理(步驟S1504)。此時,TAG-RAM 130的W1被無效。在高速緩存存儲器11中存在著數(shù)據(jù)B的最新數(shù)據(jù),并且高速緩存逐出處理尚未結束。因此,沒有被更新的舊數(shù)據(jù)存儲在主存儲器40中。
假設另一個處理器(處理器20)此時請求來自主存儲器40的數(shù)據(jù)B(步驟S1505)。因為存儲有數(shù)據(jù)B的TAG-RAM 130的塊被無效,所以處理器20請求的數(shù)據(jù)在TAG-RAM 130中沒有命中(hit),所以確定數(shù)據(jù)B在所有處理器的高速緩存中都不存在。從主存儲器40獲得的數(shù)據(jù)B被處理器20確認(步驟S1506)。因為數(shù)據(jù)不是最新數(shù)據(jù)B,所以數(shù)據(jù)之間出現(xiàn)了不一致性。
圖12是用于解釋當將被反向驅逐的緩存行已被自主移出無效時進行的操作的示例的示意圖。假設某個高速緩存索引的全部四個通路都處于有效狀態(tài),并且數(shù)據(jù)A到D被分別存儲在該四個通路中。
假設處理器10向主存儲器40請求與數(shù)據(jù)A到D具有相同高速緩存索引的數(shù)據(jù)E(步驟S1601)。處理器10查閱高速緩存存儲器11以確定數(shù)據(jù)E在高速緩存中存儲的位置。因為全部四個通路都有效,所以處理器10確定某一通路必須被無效。在這種情況下,處理器10確定將W2選為要被無效的塊(步驟S1602)。
另一方面,存儲器控制設備100一旦檢測到處理器10已經(jīng)請求來自主存儲器40的數(shù)據(jù)E,就查閱TAG-RAM 130以確定存儲數(shù)據(jù)E的地址信息的位置。因為相同高速緩存索引的四個通路全部有效,所以它確定某一通路必須被無效。此時,其確定存儲數(shù)據(jù)B的地址信息的W1將被無效(步驟S1603)。
現(xiàn)在,假設處理器10自主移出存儲數(shù)據(jù)B的塊(步驟S1604)。結果,存儲數(shù)據(jù)B的高速緩存存儲器11的W1因移出而被無效,從而最新數(shù)據(jù)B被存儲在主存儲器40中。
此外,假設由存儲器控制設備100向處理器10發(fā)出的針對存儲數(shù)據(jù)B的通路的高速緩存逐出處理請求被執(zhí)行(步驟S1605)。結果,如果高速緩存逐出處理被執(zhí)行,將高速緩存存儲器11的W1中的內(nèi)容寫入主存儲器40中(步驟S1606),則主存儲器中的數(shù)據(jù)B就會被非最新的數(shù)據(jù)寫覆蓋,而出現(xiàn)數(shù)據(jù)之間的不一致性。
因此,基于反向驅逐的存儲器控制方案在上述例外情況中會失敗。下面將說明即使在上述例外情況中也不會失敗的存儲器控制方案。
圖1是根據(jù)本發(fā)明的實施例的存儲器控制設備100的功能框圖。存儲器控制設備100與多個處理器(圖1中為三個處理器10到30)以及主存儲器40通信。
處理器10到30是進行各種算術運算的運算設備。處理器10包括高速緩存存儲器11、處理器20包括高速緩存存儲器21、并且處理器10包括高速緩存存儲器31。假設這些高速緩存存儲器以4路集相關方式管理。雖然圖1中示出了三個處理器,但處理器的數(shù)目不限于三個。主存儲器40是臨時存儲被處理器10、20和30使用的數(shù)據(jù)或者計算機程序的存儲設備。
存儲器控制設備100根據(jù)來自處理器10、20和30的請求,在主存儲器40和高速緩存存儲器11、21和31之間輸入和輸出數(shù)據(jù),并且對存儲設備進行控制以防止存儲設備中的數(shù)據(jù)之間出現(xiàn)不一致性。存儲器控制設備100包括請求接收單元110、請求處理單元120、TAG-RAM 130、高速緩存控制單元140、EWB(早回寫,Early Write Back)緩存150、ELA(驅逐鎖定地址,Eviction Lock Address)寄存器160、再次執(zhí)行決定單元170、和取消決定單元180。
EWB緩存150和ELA寄存器160分別對應于自主逐出目標數(shù)據(jù)存儲單元和逐出目標數(shù)據(jù)存儲單元。
請求接收單元110是從處理器10到30接收數(shù)據(jù)輸入/輸出請求的接收單元,并且包括多個端口。這些端口監(jiān)控請求處理單元120中的處理狀態(tài),直到完成所接收的數(shù)據(jù)輸入/輸出請求。請求處理單元120處理請求接收單元110所接收的請求,并且被管道化(pipelined)以進行多個請求的并行處理。
TAG-RAM 130是存儲高速緩存存儲器11、21和31中所存儲的數(shù)據(jù)的地址信息的存儲單元。高速緩存控制單元140將處理器10到30請求輸入或者輸出的數(shù)據(jù)的地址信息與TAG-RAM 130中存儲的地址信息相比較,以確定數(shù)據(jù)的輸入/輸出目的地或者輸入/輸出過程,高速緩存存儲器11、21和31以及TAG-RAM 130的更新內(nèi)容等。
EWB緩存150存儲被處理器10、20和30請求自主移出的數(shù)據(jù)的地址信息。EWB緩存150在自主移出開始時存儲地址信息,并且保留該地址信息,直到自主移出完成。
圖2是用于解釋EWB緩存150的寄存/釋放操作的示意圖。當一個或者多個處理器10、20和30請求自主移出時,該請求由請求接收單元110接收,并且所請求的數(shù)據(jù)的地址信息被存儲在EWB緩存150中(步驟S101)。當請求處理被請求處理單元120完成時,所請求的數(shù)據(jù)的地址信息被從EWB緩存150中刪除(步驟S102)。
ELA寄存器160存儲將被反向驅逐進行高速緩存逐出處理的數(shù)據(jù)的地址信息。在ELA寄存器160中,在由反向驅逐進行的高速緩存逐出處理開始時,待處理的地址信息被寄存在條目中(entry-registered),并且一旦高速緩存逐出處理完成,就將該條目無效。
圖3是用于解釋ELA寄存器160的寄存操作的示意圖。當處理器10、20和30之一發(fā)出了存儲器獲取請求時(步驟S201),該請求獲得請求接收單元110的多個端口中的任一個端口。此后,該請求在有效定時被輸入到請求處理單元120的管道中(步驟S202)。
假設高速緩存控制單元140搜索TAG-RAM 130以便檢查所請求的數(shù)據(jù)是否被存儲在高速緩存存儲器11、21或者31中,并檢查具有與所請求的數(shù)據(jù)的索引相同的索引的高速緩存的四個通路是否都有效。在本例中,高速緩存控制單元140通知請求處理單元120所請求的數(shù)據(jù)應該從主存儲器40獲得并且應該進行高速緩存逐出處理,以在高速緩存上確保存儲所獲得的數(shù)據(jù)的空間(步驟S203)。
請求處理單元120接收該通知,向主存儲器40發(fā)送數(shù)據(jù)獲取請求,并且向請求該數(shù)據(jù)的處理器發(fā)送針對被高速緩存控制單元140選擇為高速緩存逐出處理的目標通路中的數(shù)據(jù)的高速緩存逐出處理請求。此時,被選擇作為高速緩存逐出處理的目標通路中存儲的數(shù)據(jù)的地址信息被寄存在ELA寄存器160的條目中(步驟S204)。
如圖3所示,在ELA寄存器160中的每個條目都具有用于存儲物理地址和表示條目有效性的有效位(V位)的區(qū)域。當?shù)刂沸畔⒈患拇嬖跅l目中時,進行改寫物理地址區(qū)域中的地址信息并打開有效位的處理。
圖4是用于解釋ELA寄存器160的釋放操作的示意圖。當與步驟S204中的向處理器請求進行高速緩存逐出處理的請求相對應的響應請求被發(fā)出時(步驟S301),該請求獲得請求接收單元110的多個端口中的某個端口。此后,該請求在有效定時被輸入到請求處理單元120的管道中(步驟S302)。
一旦完成了請求處理單元120中的處理,該請求就在ELA寄存器160中找出用于存儲被高速緩存逐出處理的數(shù)據(jù)的地址的條目,并且開啟條目的有效位(步驟S303)。
當處理器做出了存儲器獲取請求時,再次執(zhí)行決定單元170參照ELA寄存器160檢查所請求的數(shù)據(jù)是否正被反向驅逐處理。在該數(shù)據(jù)正在被處理的情況下,處理單元指示請求接收單元110再次執(zhí)行該請求。
圖5是用于解釋再次執(zhí)行決定單元170的操作的示意圖。在本例中,假設處理器所請求的數(shù)據(jù)正被反向驅逐處理。因此,假設TAG-RAM 130中的該數(shù)據(jù)的塊是無效的,并且假定處理器的高速緩存存儲器中的最新數(shù)據(jù)沒有被寫入主存儲器40中。假設該數(shù)據(jù)的地址信息通過圖3中的操作被有效地寄存在ELA寄存器160中。
如圖5所示,當存儲器獲取請求被處理器10、20和30中任何一個發(fā)出時(步驟S401),該請求獲得請求接收單元110的多個端口中的任意一個端口。此后,該請求在有效定時被輸入到請求處理單元120的管道中(步驟S402)。由于數(shù)據(jù)在TAG-RAM 130中沒有被命中,所以請求處理單元120向主存儲器40發(fā)出數(shù)據(jù)獲得請求。
此時,再次執(zhí)行決定單元170搜索ELA寄存器160以檢測與所請求的數(shù)據(jù)具有相同的地址的有效條目是否存在,并且指示請求處理單元120再次執(zhí)行該處理(步驟S403)。結果,該存儲器獲得請求被返回給請求接收單元110并且再次被輸入到請求處理單元120的管道中(步驟S404)。重復由再次執(zhí)行決定單元170在步驟S403進行的操作,直到反向驅逐被完成,以釋放ELA寄存器160中的條目。
以這種方式,被反向驅逐的數(shù)據(jù)的地址被存儲在ELA寄存器160中,并且在與處理器請求獲得的數(shù)據(jù)具有相同地址的有效條目在ELA寄存器160中存在的情況下,再次執(zhí)行決定單元170連續(xù)指定再次執(zhí)行從主存儲器獲得數(shù)據(jù)的處理。因此,可避免在反向驅逐執(zhí)行期間由TAG-RAM 130的無效數(shù)據(jù)引起的數(shù)據(jù)之間的不一致性。
當向處理器請求由反向驅逐執(zhí)行的高速緩存逐出處理時,取消決定單元180查閱EWB緩存150以檢查被高速緩存逐出處理的數(shù)據(jù)是否正被自主移出而逐出。當數(shù)據(jù)正被自主移出處理逐出時,停止被反向驅逐執(zhí)行的高速緩存逐出處理。
圖6是用于解釋取消決定單元180的操作的示意圖。當處理器10、20和30中的任一個發(fā)出了存儲器獲取請求時(步驟S501),該請求獲得請求接收單元110的多個端口中的任一個端口。此后,該請求在有效定時被輸入到請求處理單元120的管道中(步驟S502)。當高速緩存控制單元140查閱TAG-RAM 130時,高速緩存控制單元140確定反向驅逐是必要的。假設請求處理單元120將被反向驅逐的數(shù)據(jù)的地址寄存在ELA寄存器160中,并且請求處理器進行高速緩存逐出處理。
此時,取消決定單元180搜索EWB緩存150的全部條目以檢查與寄存在ELA寄存器160中的數(shù)據(jù)具有相同地址的條目是否存在。當具有相同地址的條目存在時,取消決定單元180關閉ELA寄存器160中的條目的有效位,以取消高速緩存逐出處理的請求(步驟S503)。
因此,在自主移出請求被存儲在EWB緩存150中的情況下,由取消決定單元180取消對被請求要移出的數(shù)據(jù)的高速緩存逐出處理。結果,可防止主存儲器40上的最新數(shù)據(jù)被不恰當?shù)姆聪蝌屩鹩门f數(shù)據(jù)寫覆蓋。
下面將解釋存儲器控制設備100的操作。圖7是用于解釋當相同緩存行的數(shù)據(jù)在反向驅逐完成之前被另一處理器請求時,存儲器控制設備100進行的操作的示意圖。圖7與結合圖11解釋的第一例外情況相關。
假設處理器10向主存儲器40請求與數(shù)據(jù)A到D具有相同的高速緩存索引的數(shù)據(jù)E(步驟S1101)。處理器10查閱高速緩存存儲器11以確定數(shù)據(jù)E在高速緩存中存儲的位置。因為四個通路全部有效,所以處理器10確定某一通路必須無效。在本實施例中,假設處理器10選擇W2作為被無效的塊(步驟S1102)。
另一方面,存儲器控制設備100一旦檢測到處理器10已經(jīng)請求來自主存儲器40的數(shù)據(jù)E,則查閱TAG-RAM 130來確定存儲數(shù)據(jù)E的地址信息的位置。因為四個通路全部有效,所以確定某一通路必須被無效。在本實施例中,假設其中存儲了數(shù)據(jù)B的地址信息的W1被確定將被無效(步驟S1103)。
在此情況下,存儲器控制設備100將經(jīng)過高速緩存逐出處理的數(shù)據(jù)B的地址信息寄存到ELA寄存器160中(步驟S1104),并且請求處理器10進行用于其中存儲有數(shù)據(jù)B的通路的高速緩存逐出處理(步驟S1105)。在此時,TAG-RAM 130的W1是無效的。另外,數(shù)據(jù)B的最新數(shù)據(jù)存在于高速緩存存儲器11中,并且高速緩存逐出處理沒有完成。因此,未更新的舊數(shù)據(jù)被存儲在主存儲器40中。
假設此時處理器20請求來自主存儲器40的數(shù)據(jù)B(步驟S1106)。因為其中存儲有TAG-RAM的數(shù)據(jù)B的塊是無效的,所以處理器20請求的數(shù)據(jù)B在TAG-RAM 130中沒有命中。因此,請求處理單元120試圖從主存儲器40獲得數(shù)據(jù)B。然而,再次執(zhí)行決定單元170一旦檢測到數(shù)據(jù)B的地址信息在ELA寄存器160中存在,則指令請求處理單元120再次執(zhí)行該處理(步驟S1107)。當存儲數(shù)據(jù)B的地址信息的有效條目存在時,重復該處理的再次執(zhí)行。
一旦步驟S1105中請求的高速緩存逐出處理完成,高速緩存存儲器11上的數(shù)據(jù)B的最新數(shù)據(jù)就被寫入主存儲器40中,并且ELA寄存器160中的對應條目被無效(步驟S1108)。由于ELA寄存器160中的條目被無效,所以再次執(zhí)行決定單元不再要求再次執(zhí)行該處理。主存儲器40被請求以獲得數(shù)據(jù)B(步驟S1109),并將該數(shù)據(jù)B發(fā)送給處理器20。
在此所發(fā)送的數(shù)據(jù)B是由處理器10的高速緩存存儲器11寫入的最新數(shù)據(jù),不會出現(xiàn)數(shù)據(jù)之間的不一致性。以這種方式,根據(jù)本實施例的存儲控制方案,即使在第一例外情況下,也可保持數(shù)據(jù)的一致性。
圖8是用于解釋當被反向驅逐的緩存行已被自主移出無效時進行的操作的示例的示意圖。圖8與結合圖12所解釋的第二例外情況相關。
假設處理器10請求主存儲器40的與數(shù)據(jù)A到D具有相同的高速緩存索引的數(shù)據(jù)E(步驟S1201)。處理器10查閱高速緩存存儲器11以確定數(shù)據(jù)E在高速緩存中存儲的位置。因為全部四個通路都有效,所以處理器10確定某一通路必須被無效。此時,假設處理器10選擇W2作為要被無效的塊(步驟S1202)。
另一方面,存儲器控制設備100一旦檢測到處理器10已經(jīng)請求主存儲器40的數(shù)據(jù)E,就查閱TAG-RAM 130以確定數(shù)據(jù)E的地址信息被存儲的位置。因為四個通路全部有效,所以確定某一通路必須被無效。此時,假設確定存儲數(shù)據(jù)B的地址信息的W1將被無效(步驟S1203)。
請求處理單元120無效W1并且將W1中存儲的數(shù)據(jù)B的地址信息寄存在ELA寄存器160中。請求處理單元120試圖請求處理器10來進行存儲有數(shù)據(jù)B的塊的高速緩存逐出處理(步驟S1204)。
假設處理器10此時自主地移出了存儲有數(shù)據(jù)B的塊。存儲有數(shù)據(jù)B的高速緩存存儲器11的W1被移出而無效,使得最新數(shù)據(jù)B被存儲在主存儲器40中。在移出完成之前,數(shù)據(jù)B的地址信息一直保存在EWB緩存150中(步驟S1205)。
在此情況下,取消決定單元180檢測到被請求經(jīng)受高速緩存逐出處理的數(shù)據(jù)B的地址信息在EWB緩存150的條目中存在(步驟S1206)。取消決定單元180取消向處理器10發(fā)出的對存儲有數(shù)據(jù)B的塊進行高速緩存逐出處理的請求,并且釋放ELA寄存器160中的條目(步驟S1207)。
當高速緩存逐出處理請求被取消時,可避免對已被自動移出的塊進行不適當?shù)母咚倬彺嬷鸪鎏幚怼_@樣,根據(jù)本實施例的存儲器控制方案即使在第二例外情況下也可維持數(shù)據(jù)的一致性。
如上所述,在開始由反向驅逐進行的高速緩存逐出處理時,目標數(shù)據(jù)的地址信息被存儲在ELA寄存器160中。當處理器請求獲得的數(shù)據(jù)的地址在ELA寄存器160中存在時,請求處理單元連續(xù)地再次執(zhí)行數(shù)據(jù)獲得處理。因此即使相同緩存行的數(shù)據(jù)在反向驅逐完成之前被另一處理器請求,也不會獲得不正確的數(shù)據(jù)。
此外,在處理器開始進行自主移出時,目標信息的地址信息被存儲在EWB緩存150中。當被反向驅逐的數(shù)據(jù)的地址在EWB緩存150中存在時,停止由反向驅逐進行的高速緩存逐出處理。因此,即使被反向驅逐的緩存行因自主移出而無效,不正確的數(shù)據(jù)也不會被寫覆蓋到主存儲器40中。
根據(jù)本發(fā)明,即使使用不通知存儲器控制設備關于高速緩存逐出處理的信息的處理器,也可保持高速緩存存儲器中的數(shù)據(jù)的一致性。此外,還可抑制等待時間,簡化結構。
雖然為了完整清晰地公開而根據(jù)具體實施例來描述本發(fā)明,但所附的權利要求并不因此受到限制,而是應該被解釋為包含了本領域技術人員所能想到的,落入在此闡述的基本教導中的全部變型和替代結構。
權利要求
1.一種存儲器控制設備,連接在主存儲器和各自具有高速緩存存儲器的多個處理器之間,用于控制所述處理器對所述主存儲器的訪問,所述存儲器控制設備包括標簽信息存儲單元,具有多個存儲所述高速緩存存儲器中保存的數(shù)據(jù)的地址信息的塊,其中所述塊可被有效或者無效;請求處理單元,用于處理所述處理器的存儲器訪問請求,并且當所述標簽信息存儲單元的任一個所述塊必須被無效時,用于請求其高速緩存存儲器中保存有與所述標簽信息存儲單元的將被無效的塊中存儲的數(shù)據(jù)相同的待逐出數(shù)據(jù)的處理器執(zhí)行高速緩存逐出處理,所述高速緩存逐出處理將所述待逐出的數(shù)據(jù)從所述高速緩存存儲器逐出到所述主存儲器中;逐出目標數(shù)據(jù)存儲單元,用于當所述請求處理單元請求所述處理器進行所述高速緩存逐出處理時,在一條目中存儲待逐出數(shù)據(jù)的地址信息,直到所述處理器完成所述高速緩存逐出處理;和再次執(zhí)行決定單元,用于在所述請求處理單元確定用于獲得所述處理器請求的數(shù)據(jù)的獲取路線決定處理時,檢查存儲在逐出目標數(shù)據(jù)存儲單元中的地址信息,并且如果任何一條所述條目中包括所請求的數(shù)據(jù)的地址信息,則使所述請求處理單元再次進行數(shù)據(jù)的獲取路線決定處理。
2.根據(jù)權利要求1所述的存儲器控制設備,其中當任一所述處理器請求的數(shù)據(jù)的地址與逐出目標數(shù)據(jù)存儲單元的任何條目中存儲的數(shù)據(jù)地址都不一致時,所述再次執(zhí)行決定單元不使所述請求處理單元再次進行所述獲取路線決定處理。
3.根據(jù)權利要求1所述的存儲器控制設備,進一步包括請求接收單元,用于從任何一個所述處理器接收存儲器訪問請求,并且指示所述請求處理單元進行與所述存儲器訪問請求對應的處理,并且監(jiān)控所述請求處理單元中的處理狀態(tài),直到完成所述對應處理,并且其中當所述再次執(zhí)行決定單元確定必須再次進行所述獲取路線決定處理時,所述請求處理單元指示所述請求接收單元再次進行所述對應處理。
4.根據(jù)權利要求1所述的存儲器控制設備,其中所述逐出目標數(shù)據(jù)存儲單元包括表示每個用于保存信息的條目中的數(shù)據(jù)的有效性的有效位。
5.根據(jù)權利要求1所述的存儲器控制設備,進一步包括自主逐出目標數(shù)據(jù)存儲單元,用于在自主高速緩存逐出處理完成之前,存儲自主高速緩存逐出處理的目標數(shù)據(jù)的地址信息,在該自主高速緩存逐出處理中,所述處理器中的任何一個處理器自主地逐出高速緩存數(shù)據(jù);和取消決定單元,用于當所述請求處理單元試圖請求任何一個所述處理器進行數(shù)據(jù)逐出處理時,檢索存儲在自主逐出目標數(shù)據(jù)存儲單元中的地址信息,并在被所述請求處理單元請求進行逐出處理的數(shù)據(jù)的地址信息被包括在任何一條所述條目中時,使所述請求處理單元停止所述數(shù)據(jù)逐出處理的請求。
6.根據(jù)權利要求5的存儲器控制設備,其中所述取消決定單元在所述請求處理單元試圖請求任何一個所述處理器進行數(shù)據(jù)逐出處理時,檢索存儲在所述自主逐出目標數(shù)據(jù)存儲單元中的信息,并且當被所述請求處理單元請求逐出處理的數(shù)據(jù)的地址信息沒有被包括在任何一條條目中時,不使所述請求處理單元停止所述逐出處理的請求。
7.一種控制多個各自具有高速緩存存儲器的處理器對主存儲器進行的訪問的方法,包括對所述處理器的存儲器訪問請求進行處理,并且當保存有所述處理器的高速緩存存儲器中所保存的數(shù)據(jù)的地址信息的標簽信息存儲單元的任何一塊必須被無效時,請求其高速緩存存儲器中保存有與所述標簽信息存儲單元的將被無效的塊中存儲的數(shù)據(jù)相同的待逐出數(shù)據(jù)的處理器執(zhí)行高速緩存逐出處理,所述高速緩存逐出處理將待逐出的數(shù)據(jù)從所述高速緩存存儲器逐出到所述主存儲器中;當所述處理器在所述處理步驟被請求進行高速緩存逐出處理時,將待逐出的數(shù)據(jù)的地址信息存儲在逐出目標數(shù)據(jù)存儲單元的一個條目中,直到所述處理器完成所述高速緩存逐出處理;和在所述處理步驟中確定了用于獲得任何一個所述處理器請求的數(shù)據(jù)的獲取路線決定處理時,檢查存儲在所述逐出目標數(shù)據(jù)存儲單元中的地址信息,并且如果任何一個所述條目中包括所請求的數(shù)據(jù)的地址信息,則使所述處理步驟再次執(zhí)行以再次進行數(shù)據(jù)的獲取路線決定處理。
8.根據(jù)權利要求7的方法,其中當任何一個所述處理器所請求的數(shù)據(jù)的地址與逐出目標數(shù)據(jù)存儲單元的任何一條所述條目中存儲的數(shù)據(jù)的地址不一致時,所述檢查步驟不引起所述處理步驟被再次執(zhí)行。
9.根據(jù)權利要求7的方法,進一步包括將自主高速緩存逐出處理的目標數(shù)據(jù)的地址信息存入自主逐出目標數(shù)據(jù)存儲單元中,直到自主高速緩存逐出處理完成,在該自主高速緩存逐出處理中,任何一個所述處理器自主地逐出高速緩存數(shù)據(jù);和當所述處理步驟試圖請求任何一個所述處理器進行數(shù)據(jù)逐出處理時,檢查存儲在自主逐出目標數(shù)據(jù)存儲單元中的地址信息,并且當在所述處理步驟中被請求進行逐出處理的數(shù)據(jù)的地址信息包括在任何一條所述條目中時,使所述處理步驟停止所述數(shù)據(jù)逐出處理的請求。
10.根據(jù)權利要求9的方法,其中所述檢查步驟包括當所述處理步驟試圖請求任何一個所述處理器進行數(shù)據(jù)逐出處理時,檢查存儲在自主逐出目標數(shù)據(jù)存儲單元中的信息,并且,當在所述處理步驟中被請求進行逐出處理的數(shù)據(jù)的地址信息沒有被包括在任何一條所述條目中時,不使所述處理步驟停止所述數(shù)據(jù)逐出處理的請求。
全文摘要
存儲器控制設備和存儲器控制方法。目標數(shù)據(jù)的地址信息在開始由反向驅逐進行高速緩存逐出處理時被存儲在ELA寄存器中,并且當由處理器請求獲得的數(shù)據(jù)的地址在ELA寄存器中存在時,請求處理單元連續(xù)地再次進行數(shù)據(jù)獲取處理。目標數(shù)據(jù)的地址信息在開始由處理器進行自主移出時被存儲在EWB緩存中,并且當被反向驅逐的數(shù)據(jù)的地址在EWB緩存中存在時,停止由反向驅逐進行的高速緩存逐出處理。
文檔編號G06F12/08GK1779664SQ20051005541
公開日2006年5月31日 申請日期2005年3月17日 優(yōu)先權日2004年11月26日
發(fā)明者松井孝夫, 岡田誠之, 伊藤大介, 畑井田誠, 植木俊和 申請人:富士通株式會社