專利名稱:讀寫感知的高速緩存的制作方法
技術領域:
本申請一般涉及改進的數(shù)據(jù)處理設備和方法,更具體而言,涉及一種用于提供讀寫感知的高速緩存的設備和方法。
背景技術:
高速緩存被用于加速數(shù)據(jù)傳輸并用作數(shù)據(jù)的中間停留(staging)區(qū)域。存儲器高速緩存加速指令執(zhí)行、數(shù)據(jù)檢索和數(shù)據(jù)更新,且其內容不斷改變。存儲器高速緩存,或者 “CPU高速緩存”,是橋接主存儲器和中央處理單位(CPU)的存儲體(memory bank)。存儲器高速緩存比主存儲器更快,并且允許更快地執(zhí)行指令及讀寫數(shù)據(jù)。指令和數(shù)據(jù)按照被稱為高速緩存“線”的固定塊從主存儲器傳輸?shù)礁咚倬彺?。并非大高速緩存的所有部分都可以以相同的延時(latency)來從給定點(例如 CPU)訪問。于是出現(xiàn)了作為用于大高速緩存設計的新興高速緩存架構的非一致高速緩存架構(NUCA)。在NUAC設計中,高速緩存被分為多個存儲體,這些存儲體由于其所處的位置、 不同的線路延遲和延時而具有從不同訪問點(例如CPU)的不同的訪問延遲。智能地管理 NUCA中存在的不同的延時特征改進了存儲系統(tǒng)的性能。在動態(tài)NUCA (D-NUCA)設計中,線被典型地置于任一個存儲體中。D-NUCA可以使用非傳統(tǒng)的高速緩存替換和數(shù)據(jù)移動策略,以將頻繁訪問的數(shù)據(jù)置于較近的存儲體中。如果第一存儲體比第二存儲體到處理器單元具有更短延時,則第一存儲體被定義為比第二存儲體更“近”。于是從較近的存儲體中可以更快地訪問數(shù)據(jù)。
發(fā)明內容
在一個說明性實施例中,提供了一種數(shù)據(jù)處理系統(tǒng)中的用于讀寫感知的高速緩存的方法。該方法包括在高速緩存控制器中接收來自處理器單元的高速緩存訪問請求。如果高速緩存訪問請求是載入,并且導致高速緩存未命中(miss),則高速緩存控制器將高速緩存線的數(shù)據(jù)載入到高速緩存的經常讀取的區(qū)域。高速緩存包括存儲體陣列,其中,經常讀取的區(qū)域包括接近處理器單元的存儲體。該方法還包括高速緩存控制器將高速緩存存儲未命中的結果存入高速緩存的經常寫入的區(qū)域。該經常寫入的區(qū)域包括遠離處理器單元的存儲體。在另外的說明性實施例中,提供了一種計算機程序成品,其包括具有計算機可讀程序的計算機可用或可讀介質。當在計算設備上執(zhí)行該計算機可讀程序時,其使得計算設備執(zhí)行上述各種與方法說明性實施例相關的單獨或組合的操作。在又一個說明性實施例中,提供了一種用于讀寫感知的高速緩存的裝置。該裝置包括處理器單元、包含存儲體陣列的高速緩存陣列,以及與高速緩存陣列和處理器單元連接的高速緩存控制器。存儲體陣列包括經常讀取的區(qū)域和經常寫入的區(qū)域。經常讀取的區(qū)域包括存儲體陣列中接近處理器單元的存儲體。經常寫入的區(qū)域包括存儲體陣列中遠離處理器單元的存儲體。高速緩存控制器被配置為從處理器單元接收高速緩存訪問請求。如果該訪問是引起高速緩存未命中的載入,高速緩存控制器將高速緩存線的數(shù)據(jù)載入到經常讀取的區(qū)域。高速緩存控制器還被配置為在引起高速緩存未命中的存儲的情況下,該高速緩存線的數(shù)據(jù)被置于高速緩存的經常寫入的區(qū)域。本發(fā)明的這些以及其他特征將在本發(fā)明的示例性實施例的下列詳細描述中被說明,或者由于該詳細描述對本領域普通技術人員來說變得更為明顯。
本發(fā)明及其優(yōu)選實施方式和進一步的目標和優(yōu)勢,將參考說明性實施例的下列詳細描述并結合附圖而被最好地理解,在附圖中圖1是可在其中實現(xiàn)說明性實施例的方面的數(shù)據(jù)處理系統(tǒng)的框圖;圖2是示出可在其中實現(xiàn)說明性實施例的方面非一致高速緩存架構的框圖;圖3是示出根據(jù)說明性實施例的讀寫感知的非一致高速緩存架構的框圖;圖4是示出根據(jù)說明性實施例的用于讀寫感知的高速緩存的硬件支持的框圖;圖5是示出根據(jù)說明性實施例的用于讀寫感知的高速緩存的高速緩存控制器的操作的流程圖。
具體實施例方式說明性實施例提供了一種用于提供讀寫告知的高速緩存的機制。該機制將大高速緩存分為經常讀取的區(qū)域和經常寫入的區(qū)域。該機制在非一致高速緩存架構替換策略中考慮讀寫頻率。經常寫入的高速緩存線被置于一個較遠的存儲體中。經常讀取的高速緩存線被置于一個較近的存儲體中。頻繁讀取的高速緩存線被置于一個較近的存儲體中。經常讀取和經常寫入的區(qū)域之間的尺寸比例可以是靜態(tài)或動態(tài)的。經常讀取的區(qū)域和經常寫入的區(qū)域之間的邊界可以是清楚的或模糊的。因此,說明性實施例可以在包括分布式數(shù)據(jù)處理環(huán)境、單個數(shù)據(jù)處理裝置等多種不同類型的數(shù)據(jù)處理環(huán)境中使用。為了提供用于描述說明性實施例的特定元件和功能的上下文,下面提供圖1和圖2作為示例環(huán)境,說明性實施例的方面可以在其中實現(xiàn)。盡管依照圖1和圖2的描述將主要集中在單個數(shù)據(jù)處理裝置實現(xiàn)上,這僅是示例,而不是旨在說明或暗示與本發(fā)明的特征相關的限制。相反,說明性實施例旨在包含分布式數(shù)據(jù)處理環(huán)境?,F(xiàn)在參考附圖并特別參考圖1和圖2,提供了數(shù)據(jù)處理環(huán)境的示例圖,本發(fā)明的說明性實施例可以在其中實現(xiàn)。應該理解圖1和圖2僅是例子,而不是旨在斷定或暗示與本發(fā)明的實施例的方面可在其中實現(xiàn)的環(huán)境相關的任何限制??梢詫γ枋龅沫h(huán)境進行多種修改,而不偏離本發(fā)明的范圍。現(xiàn)在參考附圖,圖1是可在其中實現(xiàn)說明性實施例的方面的數(shù)據(jù)處理系統(tǒng)的框圖。數(shù)據(jù)處理系統(tǒng)100是計算機的例子,實現(xiàn)用于說明性實施例的過程的計算機可用程序代碼或指令可以位于其中。在該說明性示例中,數(shù)據(jù)處理系統(tǒng)100包括通信結構(fabric), 其提供處理器單元104、存儲器106、持久存儲設備108、通信單元110、輸入/輸出(I/O)單元112和顯示器114之間的通信。處理器單元104用于執(zhí)行可以被載入到存儲器106的軟件指令。根據(jù)具體實現(xiàn), 處理器單元104可以是一組單個或多個處理器,或可以是多處理器內核。此外,處理器單元104可以使用一個或多個異構處理器系統(tǒng)來實現(xiàn),其中在單個芯片上存在主處理器和從屬處理器。作為另一個說明性例子,處理器單元104可以是包含相同類型的多個處理器的對稱多處理器系統(tǒng)。存儲器106和持久存儲設備108是存儲設備116的例子。存儲設備可以是能臨時和/或持久地存儲信息的任何硬件,該信息例如但不限于數(shù)據(jù)、功能形式的程序代碼、和/ 或其他合適的信息。存儲器106在這些例子中可以是,例如,隨機存取存儲器和任何其他合適的易失性或非易失性存儲設備。持久存儲設備108可以基于具體實現(xiàn)采用各種形式。例如,持久存儲設備108可以包括一個或更多個組件或裝置。例如,持久存儲設備108可以是硬盤、閃存、可重寫光盤、可重寫磁帶或上述各項的組合。持久存儲設備108所使用的介質也可以是可拆裝的。例如,可拆裝硬盤驅動器可以被用于持久存儲設備108。處理器單元104可以具有高速緩存134。高速緩存134可以是級別0 (LO)或級別 I(Ll)高速緩存。存儲器106可以具有高速緩存136,其可以是例如級別高速緩存。 存儲器106可以是在多個線程或多個處理單元之間共享的共享存儲器。因此,高速緩存136 可以是共享高速緩存。在這些例子中通信單元110提供與其他數(shù)據(jù)處理系統(tǒng)或裝置之間的通信。在這些例子中,通信單元110是網絡接口卡。通信單元100可以通過使用物理或無線通信鏈路中的任一個或兩者來提供通信。輸入/輸出單元112允許與其他設備的數(shù)據(jù)輸入和輸出,該其他設備可以連接到數(shù)據(jù)處理系統(tǒng)100。例如,輸入/輸出單元112可以提供連接,以用于通過鍵盤、鼠標和/或某種其他合適的輸入設備的用戶輸入。此外,輸入/輸出單元112可以將輸出發(fā)送到打印機。顯示器114提供將信息顯示給用戶的機制。用于操作系統(tǒng)、應用和/或程序的指令可以位于存儲設備116中,該存儲設備通過通信結構102與處理器單元104通信。在這些說明性示例中以功能形式位于持久存儲設備 108中。這些指令可以被載入到存儲器106以被處理器單元104執(zhí)行。不同實施例的過程可以由處理器單元104使用計算機實現(xiàn)的指令來執(zhí)行,所述指令可以位于存儲器例如存儲器106中。這些指令可以被稱為計算機代碼、計算機可用程序代碼或計算機可讀程序代碼, 其可以被處理器單元104中的處理器讀取和執(zhí)行。不同實施例中的程序代碼可以在不同的物理或有形計算機可讀介質例如存儲器106或持久存儲設備108中實現(xiàn)。程序代碼118以功能形式位于可選擇性拆裝的計算機可讀介質120中,并且可以被載入或傳輸?shù)綌?shù)據(jù)處理系統(tǒng)100中以由處理器單元104來執(zhí)行。程序代碼118和計算機可讀介質120在這些例子中構成計算機程序產品122。在一個例子中,計算機可讀介質120 可以是有形的形式,例如光盤或磁盤,該光盤或磁盤被插入到或置于作為持久存儲設備108 的一部分的驅動器或其他設備中,以便傳輸?shù)酱鎯υO備,例如作為持久存儲設備108的一部分的硬盤驅動器。在有形的形式下,計算機可讀介質120還可以采取持久存儲設備的形式,例如連接到數(shù)據(jù)處理系統(tǒng)100的硬盤、優(yōu)盤或閃存。計算機可讀介質120的有形形式還可以被稱為計算機可記錄存儲介質。在一些例子中,計算機可讀介質120是不可拆裝的。或者,程序代碼118可以通過到通信單元110的通信鏈路或到輸入/輸出單元112 的連接,從計算機可讀介質120傳輸?shù)綌?shù)據(jù)處理系統(tǒng)100。在說明性例子中,通信鏈路和/或連接可以是物理的或無線的。計算機可讀介質還可以采取無形介質的形式,例如包含程序代碼的通信鏈路或無線傳輸。在一些說明性實施例中,程序代碼118可以通過網絡從其他設備或數(shù)據(jù)處理系統(tǒng)下載到持久存儲設備108中,以在數(shù)據(jù)處理系統(tǒng)100中使用。例如,在服務器數(shù)據(jù)處理系統(tǒng)的計算機可讀存儲介質中存儲的程序代碼可以通過網絡從該服務器下載到數(shù)據(jù)處理系統(tǒng) 100。提供程序代碼118的數(shù)據(jù)處理系統(tǒng)可以是服務器計算機、客戶端計算機,或能夠存儲并發(fā)送程序代碼118的某個其他設備。為數(shù)據(jù)處理系統(tǒng)100示出的不同組件不是旨在提供對不同實施例可被實現(xiàn)的方式的架構限制。不同的說明性實施例可以在包含附加于或替換為數(shù)據(jù)處理系統(tǒng)100示出的那些組件的組件的數(shù)據(jù)處理系統(tǒng)中實現(xiàn)。圖1中示出的其他組件可以與說明性示例中示出的不同。不同的實施例可以使用任何能執(zhí)行程序代碼的硬件裝置或系統(tǒng)來實現(xiàn)。作為另一個例子,數(shù)據(jù)處理系統(tǒng)100中的存儲設備是可以存儲數(shù)據(jù)的任意硬件設備。存儲器106、持久存儲設備108和計算機可讀介質120是有形形式的存儲設備的例子。在另一個例子中,總線系統(tǒng)可以被用來實現(xiàn)通信結構102,并可以包括一條或多條總線,例如系統(tǒng)總線或輸入/輸出總線。當然,總線系統(tǒng)可以使用能提供連接到總線系統(tǒng)的不同組件和設備之間的數(shù)據(jù)傳輸?shù)娜我夂线m類型的架構來實現(xiàn)。此外,通信單元可以包括一個或多個用來發(fā)送和接收數(shù)據(jù)的設備,例如調制解調器或網絡適配器。此外,存儲器可以是,例如,存儲器106或者如可在通信結構102中存在的接口和存儲器控制器中心中找到的高速緩存。圖2是示出可在其中實現(xiàn)說明性實施例的方面的非一致高速緩存架構的框圖。非一致高速緩存架構(NUCA)包括具有級別I(Ll)高速緩存的核心210、級別2 (L2)高速緩存控制器212和L2高速緩存陣列220。根據(jù)說明性實施例,L2高速緩存控制器212對讀取和寫入進行不同處理,因為讀取比寫入對高速緩存訪問延時更為敏感。因此,在L2高速緩存 220中分配新的高速緩存線時,或者在L2高速緩存220中移動高速緩存線時,L2高速緩存控制器212考慮讀/寫頻率。圖3是示出根據(jù)示例性實施例的讀寫感知的非一致高速緩存架構(NUCA)的框圖。 非一致高速緩存架構(NUCA)包括具有Ll高速緩存的核心310、L2高速緩存控制器312、以及被分為經常讀取的區(qū)域322和經常寫入的區(qū)域324的L2高速緩存陣列。L2高速緩存控制器312考慮NUCA中的讀/寫頻率。L2高速緩存控制器312將經常寫入的高速緩存線置于經常寫入的區(qū)域324中的一個較遠的存儲體中,并將經常讀取的高速緩存線置于經常讀取的區(qū)域322中的一個較近的存儲體中。此外,對于NUCA替換,L2高速緩存控制器312將經常寫入的高速緩存線移動到經常寫入的區(qū)域324中的較遠的存儲體中,并將經常讀取的線移動到經常讀取的區(qū)域322中的較近的存儲體中。經常讀取的區(qū)域322和經常寫入的區(qū)域3M之間的尺寸比例可以是靜態(tài)的或動態(tài)的。即,經常讀取的區(qū)域322和經常寫入的區(qū)域3M可以基于一般的讀/寫頻率比例信息而被設置為靜態(tài)尺寸。例如,高速緩存陣列中較近的三分之二可以被配置為經常讀取的區(qū)域322,而高速緩存陣列中較遠的三分之一可以被配置為經常寫入的區(qū)域324?;蛘撸琇2高速緩存控制器312可以考慮讀/寫頻率信息,并動態(tài)配置經常讀取的區(qū)域322和經常寫入的區(qū)域324。例如,L2高速緩存控制器312可以基于經常讀取和經常寫入的高速緩存線的運行時比例來動態(tài)地重新配置經常讀取的區(qū)域322和經常寫入的區(qū)域324。在一個示例性實施例中,L2高速緩存控制器312可以從高速緩存陣列的前端(較近的存儲體)開始為經常讀取的區(qū)域322分配高速緩存線,并從高速緩存陣列的后端(較遠的存儲體)開始為經常寫入的區(qū)域3M分配高速緩存線。在該示例性實施例中,經常讀取的區(qū)域322和經常寫入的區(qū)域3M之間的邊界可以是模糊的,而在其他的實施例中,經常讀取的區(qū)域322和經常寫入的區(qū)域3M之間的邊界可以是固定的或靜態(tài)的。在示例性實施例中,L2高速緩存控制器312可以通過軟件接收讀/寫頻率信息。 例如,軟件可以在載入或存儲指令中提供特殊位,其表示軟件所保存的讀/寫頻率信息。軟件也可以在頁表項中存儲用于讀/寫頻率信息的特殊位。在另一示例性實施例中,軟件可以使用具有讀/寫頻率信息的特殊的高速緩存指令,例如預取用于讀取的高速緩存線或預取用于寫入的高速緩存線?;蛘撸琇2高速緩存控制器312可以檢測硬件中的讀/寫頻率。例如,預取引擎(未示出)可以檢測讀取流或寫入流。L2高速緩存控制器312可以每個高速緩存保持一個飽和計數(shù)器(saturation counter)來檢測經常讀取和經常寫入的高速緩存線。根據(jù)說明性實施例,L2高速緩存控制器312可以擴展用于讀寫感知的高速緩存的已知的替換策略。例如,對于寫入未命中,L2高速緩存控制器312可以替換X條最近最少使用(LRU)的高速緩存線中最遠的高速緩存線,其中X可以是從2到高速緩存關聯(lián)性 (associativity)的值。對于讀取未命中,L2高速緩存控制器312可以替換X條LRU高速緩存線中最近的線。作為另一個例子,對于經常讀取的高速緩存線,L2高速緩存控制器312 可以替換經常讀取的區(qū)域322中的LRU線,并且對于經常寫入的高速緩存線,L2高速緩存控制器312可以替換經常寫入的區(qū)域324中的LRU線。根據(jù)說明性實施例,L2高速緩存控制器312可以擴展用于讀寫感知的高速緩存的已知的數(shù)據(jù)移動策略。例如,使用世代促進(generational promotion),L2高速緩存控制器312可以簡單地在寫入命中后不將高速緩存線換到較近的存儲體中。這些對數(shù)據(jù)移動策略的擴展帶來了減少的數(shù)據(jù)移動,其降低了功耗。作為對數(shù)據(jù)移動策略的更為主動 (proactive)的擴展,經常寫入的高速緩存線可以觸發(fā)交換,將經常讀取的高速緩存線移動到較遠的存儲體中。圖4是示出根據(jù)示例性實施例的用于讀寫感知的高速緩存的硬件支持的框圖。標簽和狀態(tài)陣列410包括用于讀取區(qū)域420的標簽和狀態(tài)陣列,以及用于寫入區(qū)域430的標簽和狀態(tài)陣列。用于讀入區(qū)域420的標簽和狀態(tài)陣列包括飽和計數(shù)器(sat cnt)、有效位、 以及用于高速緩存的經常讀取的區(qū)域中的每條高速緩存線的標簽。類似地,用于寫入區(qū)域 430的標簽和狀態(tài)陣列包括飽和計數(shù)器、有效位、以及用于高速緩存的經常寫入的區(qū)域中的每條高速緩存線的標簽。數(shù)據(jù)陣列450包括讀取區(qū)域460和寫入區(qū)域470。解碼器440解碼用于讀取或寫入到高速緩存的地址。用于高速緩存訪問的地址可以包括標簽、索引或偏移量。用于讀取區(qū)域420的標簽和狀態(tài)陣列比較標簽。如果標簽匹配并且為讀取區(qū)域420的標簽和狀態(tài)陣列中的高速緩存線設置了有效位,則高速緩存訪問引起讀取區(qū)域460中的高速緩存命中。類似地,用于寫入區(qū)域430的標簽和狀態(tài)陣列比較標簽。如果標簽匹配,并且為寫入區(qū)域430的標簽和狀態(tài)陣列中的高速緩存線設置了有效位,則高速緩存訪問引起寫入區(qū)域470中的命中。
對于讀取區(qū)域420的標簽和狀態(tài)陣列中的命中,解碼器440使用索引和偏移量來訪問經常讀取的區(qū)域460中的高速緩存線。對于寫入區(qū)域430的標簽和狀態(tài)陣列中的命中, 解碼器440使用索引和偏移量來訪問經常寫入的區(qū)域470中的高速緩存線。被經常寫入的經常讀取的高速緩存線可以從經常讀取的區(qū)域460移動到經常寫入的區(qū)域470。被經常讀取的經常寫入的高速緩存線可以經交換緩沖區(qū)480從經常寫入的區(qū)域470移動到經常讀取的區(qū)域460。本領域的技術人員將理解,本發(fā)明的方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產品。因此,本發(fā)明的各方面可以采取完全硬件實施例、完全軟件實施例(包括固件、駐留軟件、微代碼等)或組合了軟件和硬件方面的實施例的形式,所有這些軟件和硬件方面在此通常被稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的方面可以采取體現(xiàn)在一個或多個計算機可讀介質(在介質中具有計算機可讀程序代碼)中的計算機程序產品的形式??梢允褂靡粋€或多個計算機可讀介質的任意組合。所述計算機可讀介質或計算機可用介質例如可以是(但不限于)電、磁、光、電磁、紅外線或半導體系統(tǒng)、裝置或設備或上述各項任何適合的組合。計算機可讀存儲介質的更具體的示例(非窮舉列表)可以包括以下項具有一條或多條線的電連接、便攜式計算機軟盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式光盤只讀存儲器 (CD-ROM)、光存儲設備、諸如支持因特網或內部網的傳輸介質,或輔助存儲設備。注意計算機可用或計算機可讀介質甚至可以是紙張或可在其上打印程序的其他合適的介質,該程序可以例如通過對紙張或其他介質的光掃描被電子地捕獲,然后在必要時以合適的方式被編譯、解釋或處理,然后被存儲在計算機存儲器中。在本文檔的上下文中,計算機可用或計算機可讀存儲介質可以是任何能夠包含、存儲、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設備使用或與所述指令執(zhí)行系統(tǒng)、裝置或設備結合的程序的任意介質。計算機可讀信號介質可以包括其中包含計算機可讀程序代碼(例如,在基帶中或作為載波的一部分)的傳播數(shù)據(jù)信號。 可以使用任何適當?shù)慕橘|(包括但不限于無線、線纜、光纜、RF等)來傳輸計算機可用程序代碼。用于執(zhí)行本發(fā)明的方面的操作的計算機程序代碼可以使用一種或多種編程語言的任意組合來編寫,所述編程語言包括諸如JavaTM、SmalltalkTM, C++或類似語言之類的面向對象的編程語言或者諸如“C”編程語言或類似的編程語言之類的常規(guī)過程編程語言。 所述程序代碼可以完全地在用戶計算機上執(zhí)行,部分地在用戶計算機上執(zhí)行,作為獨立的軟件包執(zhí)行,部分地在用戶計算機上并部分地在遠程計算機上執(zhí)行,或者完全地在遠程計算機或服務器上執(zhí)行。在后者的情況中,所述遠程計算機可以通過包括局域網(LAN)或廣域網(WAN)的任何類型網絡與用戶的計算機相連,也可以與外部計算機進行連接(例如,使用因特網服務提供商通過因特網連接)。此外,程序代碼可以在遠程服務器或遠端計算機上的計算機可讀存儲介質中實現(xiàn),并可以通過網絡下載到遠程計算機或用戶的計算機上的計算機可讀存儲介質中,以用于存儲和/或執(zhí)行。此外,任意計算系統(tǒng)或數(shù)據(jù)處理系統(tǒng)可以在通過網絡從遠程計算系統(tǒng)或數(shù)據(jù)處理系統(tǒng)中下載了程序代碼后在計算機可讀存儲介質中存儲該程序代碼下面參考根據(jù)本發(fā)明的實施例的方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或方塊圖對本發(fā)明的方面進行描述。將理解,所述流程圖和/或框圖的每個方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計算機程序指令來實現(xiàn)。這些計算機程序指令可以被提供給通用計算機、專用計算機或其他可編程數(shù)據(jù)處理裝置的處理器以產生機器,以便通過所述計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的所述指令產生用于實現(xiàn)在流程圖和/或框圖方塊中指定的功能/操作的裝置。這些計算機程序指令也可以被存儲在引導計算機、其他可編程數(shù)據(jù)處理裝置或其他設備以特定方式執(zhí)行功能的計算機可讀介質中,以便存儲在所述計算機可讀介質中的所述指令產生一件包括實現(xiàn)在所述一個或多個流程圖和/或框圖方塊中指定的功能/操作的指令的制品。所述計算機程序指令還可被加載到計算機、其他可編程數(shù)據(jù)處理裝置或其他設備,以導致在所述計算機、其他可編程裝置或其他設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的過程,從而在所述計算機或其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程各附圖中的流程圖和框圖示出了根據(jù)本發(fā)明的各種實施例的系統(tǒng)的可能實施方式的結構、功能和操作、方法和計算機程序產品。就這點而言,流程圖或框圖中的每個方框可代表模塊、段或部分代碼,其包括一個或多個可執(zhí)行指令以實現(xiàn)指定的邏輯功能。應注意,在一些替換實施例中,方框中提到的功能可不按圖中提到的順序發(fā)生。例如,兩個連續(xù)示出的方框實際上可以基本上以先后順序執(zhí)行,或者方框有時候可以相反的順序被執(zhí)行, 這視涉及的功能而定。也注意到,在框圖和/或流程圖的每個方框中的結合可通過執(zhí)行指定的功能或動作的基于硬件的專用系統(tǒng)或專用硬件和計算機指令的結合來實施。圖5是示出根據(jù)示例性實施例的用于讀寫感知的高速緩存的高速緩存控制器的操作的流程圖。操作開始,高速緩存控制器接收高速緩存訪問請求(框50 。高速緩存控制器確定該高速緩存訪問請求是否引起高速緩存命中(框504)。如果高速緩存訪問請求未引起高速緩存命中,高速緩存控制器在高速緩存陣列中分配新的高速緩存線(框506)。高速緩存控制器然后確定高速緩存訪問是載入還是存儲(框508)。如果高速緩存訪問是載入,則高速緩存控制器將高速緩存線載入到高速緩存的經常讀取的區(qū)域中(框510),并初始化用于該高速緩存線的飽和計數(shù)器(框512)。此后,操作結束。如果在框508中高速緩存訪問是存儲,則高速緩存控制器將高速緩存線載入到高速緩存的經常寫入的區(qū)域中(框 514),并初始化用于該高速緩存線的飽和計數(shù)器(框516)。然后,操作結束。根據(jù)說明性實施例,飽和計數(shù)器確定高速緩存線是否位于正確的區(qū)域中。在其他實施例中,一個或多個計數(shù)器可以被用來確定讀/寫頻率。例如,單個計數(shù)器可以被使用, 并可以對讀取遞增而對寫入遞減。在另一個例子中,高速緩存控制器可以保持單獨的讀取計數(shù)器和寫入計數(shù)器。此外,在其他實施例中,高速緩存控制器可以例如通過調整遞增/遞減權重或通過將讀取和寫入計數(shù)器與不同閾值比較,來對讀取和寫入分配不同權重?;氐綀D5,如果高速緩存訪問請求在框504中導致命中,則高速緩存控制器確定該高速緩存訪問是在經常讀取的區(qū)域中的載入或在經常寫入的區(qū)域中的存儲(框518)。換句話說,在框518中,高速緩存控制器確定該高速緩存訪問是否與高速緩存線被分配所在的區(qū)域對應。如果高速緩存控制器確定該高速緩存訪問是在經常讀取的區(qū)域中的載入或在經常寫入的區(qū)域中的存儲,則高速緩存控制器從高速緩存線提供數(shù)據(jù)(框520),并遞增與該高速緩存線關聯(lián)的飽和計數(shù)器(框522)。隨后,操作結束。
如果在框518中,高速緩存訪問不是在經常讀取的區(qū)域中的載入并且不是在經常寫入的區(qū)域中的存儲,則高速緩存訪問是在經常讀取的區(qū)域中的存儲或在經常寫入的區(qū)域中的載入,并且該高速緩存訪問與高速緩存線被分配所在的區(qū)域不對應。在這種情況下, 高速緩存控制器從高速緩存線提供數(shù)據(jù)(框524),并遞減與該高速緩存線關聯(lián)的飽和計數(shù)器。然后,高速緩存控制器確定飽和計數(shù)器的最高有效位(MSB)是否是0(框528)。在示出的例子中,如果飽和計數(shù)器的MSB不是0,則高速緩存線位于正確的區(qū)域中,且操作結束。如果在框528中,飽和計數(shù)器的MSB是0,則高速緩存線沒有位于正確的區(qū)域中。在這種情況下,高速緩存控制器在相對的區(qū)域中選擇高速緩存線,并將當前的高速緩存線與選擇的高速緩存線進行交換(框530)。高速緩存控制器然后初始化與被交換的高速緩存線關聯(lián)的飽和計數(shù)器(框532),且操作結束。因此,說明性實施例提供了一種用于提供讀寫感知的高速緩存的機制。該機制將大的高速緩存分為經常讀取的區(qū)域和經常寫入的區(qū)域。該機制考慮非一致高速緩存架構替換策略中的讀/寫頻率。頻繁寫入的高速緩存線被置于一個較遠的存儲體中。頻繁讀取的高速緩存線被置于一個較近的存儲體中。經常讀取和經常寫入的區(qū)域之間的尺寸比例可以是靜態(tài)或動態(tài)的。經常讀取和經常寫入的區(qū)域之間的邊界可以是清楚的或模糊的。如上所述,應該理解說明性實施例可以采用完全的硬件實施例、完全的軟件實施例(包括固件、駐留程序、微代碼等),或包含軟件部分和硬件部分的實施例。在一個說明性實施例中,在軟件或程序代碼中實現(xiàn)說明性實施例的機制,所述軟件或程序代碼包括但不限于固件、駐留軟件、微代碼等。適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包含至少一個通過系統(tǒng)總線直接或間接連接到存儲器元件的處理器。存儲器元件可以包括在程序代碼實際執(zhí)行期間使用的本地存儲器、塊存儲設備、以及高速緩存存儲器,其提供至少某些程序代碼的臨時存儲, 以減少執(zhí)行期間代碼必須從塊存儲中取回的次數(shù)。輸入/輸出或I/O裝置(包括但不限于鍵盤、顯示器、指點設備等)可以直接或通過中間的I/O控制器來連接到系統(tǒng)。網絡適配器也可以連接到系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)能通過中間的私有或公共網絡連接到其他數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設備。調制解調器、電纜調制解調器和以太網卡僅是目前可用的若干類網絡適配器。本發(fā)明的描述為了示例和描述的目的而被展示,并且不是旨在是窮盡的或將本發(fā)明限制于所公開的形式。多種修改和改變對于本領域普通技術人員來說很明顯。選擇和描述該實施例以最好地解釋本發(fā)明的原則、實際應用,并使本領域普通技術人員能夠針對適于所計劃的特定用途的具有各種修改的各種實施例來理解本發(fā)明。
權利要求
1.數(shù)據(jù)處理系統(tǒng)中的一種用于讀寫感知的高速緩存的方法,該方法包括 在高速緩存控制器中從處理單元接收高速緩存訪問請求;如果高速緩存訪問請求是引起高速緩存未命中的載入,該高速緩存處理器將高速緩存線的數(shù)據(jù)載入到高速緩存的經常讀取的區(qū)域,其中,該高速緩存包含存儲體陣列,并且其中,該經常讀取的區(qū)域包含接近于處理單元的存儲體;以及如果高速緩存訪問請求是引起高速緩存未命中的存儲,該高速緩存處理器將高速緩存線的數(shù)據(jù)置于高速緩存的經常寫入的區(qū)域,其中,該經常寫入的區(qū)域包含遠離處理單元的存儲體。
2.如權利要求1所述的方法,還包括初始化與所述高速緩存線關聯(lián)的飽和計數(shù)器。
3.如權利要求2所述的方法,還包括在高速緩存控制器中接收用于訪問高速緩存線的后續(xù)高速緩存訪問請求; 確定該高速緩存線是否在正確的區(qū)域中;以及響應于該高速緩存線沒有位于正確的區(qū)域中,將該高速緩存線與相對區(qū)域中的高速緩存線進行交換。
4.如權利要求3所述的方法,其中,確定被高速緩存訪問請求訪問的高速緩存線是否位于正確的區(qū)域中包括響應于該高速緩存訪問請求是在經常讀取的區(qū)域中的存儲或在經常寫入的區(qū)域中的載入,遞減所述飽和計數(shù)器;并且響應于該飽和計數(shù)器小于閾值,確定該高速緩存線沒有位于正確的區(qū)域中。
5.如權利要求2所述的方法,還包括在高速緩存控制器中接收用于訪問高速緩存線的后續(xù)高速緩存訪問請求;以及響應于該高速緩存訪問請求是在經常讀取的區(qū)域中的載入或在經常寫入的區(qū)域中的存儲,遞增所述飽和計數(shù)器。
6.如權利要求1所述的方法,其中,所述經常讀取的區(qū)域與經常寫入的區(qū)域的尺寸比例是靜態(tài)的。
7.如權利要求1所述的方法,其中,所述經常讀取的區(qū)域和經常寫入的區(qū)域之間的邊界是清楚的。
8.數(shù)據(jù)處理系統(tǒng)中的一種用于讀寫感知的高速緩存的裝置,該裝置包括 處理單元;包含存儲體陣列的高速緩存陣列,其中,所述存儲體陣列包含經常讀取的區(qū)域和經常寫入的區(qū)域,其中,該經常讀取的區(qū)域包含存儲體陣列中接近處理單元的存儲體,且其中, 該經常寫入的區(qū)域包含存儲體陣列中遠離處理單元的存儲體;連接到高速緩存陣列和處理單元的高速緩存控制器,其中,該高速緩存控制器被配置為從處理單元接收高速緩存訪問請求;響應于高速緩存訪問請求是引起高速緩存未命中的載入,將高速緩存線的數(shù)據(jù)載入到經常讀取的區(qū)域;以及響應于高速緩存訪問請求是引起高速緩存未命中的存儲,將高速緩存線的數(shù)據(jù)置于高速緩存的經常寫入的區(qū)域中。
9.如權利要求8所述的裝置,其中,所述高速緩存控制器還被配置為初始化與高速緩存線關聯(lián)的飽和計數(shù)器。
10.如權利要求9所述的裝置,其中,所述高速緩存控制器還被配置為在高速緩存控制器中接收用于訪問高速緩存線的后續(xù)高速緩存訪問請求;確定該高速緩存線是否位于正確的區(qū)域中;以及響應于該高速緩存沒有位于正確的區(qū)域中,將該高速緩存線與相對區(qū)域中的高速緩存線進行交換。
11.如權利要求10所述的裝置,其中,確定被高速緩存訪問請求訪問的高速緩存線是否在正確的區(qū)域中包括響應于該高速緩存訪問請求是在經常讀取的區(qū)域中的存儲或在經常寫入的區(qū)域中的載入,遞減所述飽和計數(shù)器;并且響應于該飽和計數(shù)器小于閾值,確定該高速緩存線沒有位于正確的區(qū)域中。
12.如權利要求9所述的裝置,其中,所述高速緩存控制器還被配置為在高速緩存控制器中接收用于訪問高速緩存線的后續(xù)高速緩存訪問請求;以及響應于該高速緩存訪問請求是在經常讀取的區(qū)域中的載入或在經常寫入的區(qū)域中的存儲,遞增所述飽和計數(shù)器。
13.如權利要求8所述的裝置,其中,所述經常讀取的區(qū)域與經常寫入的區(qū)域的尺寸比例是靜態(tài)的。
14.如權利要求8所述的裝置,其中,所述經常讀取的區(qū)域和經常寫入的區(qū)域之間的邊界是清楚的。
15.一種包含計算機可記錄介質的計算機程序產品,該計算機可記錄介質上記錄有計算機可讀程序,其中,所述計算機可讀程序在計算設備上執(zhí)行時,使得計算設備在高速緩存控制器中從處理單元接收高速緩存訪問請求;響應于該高速緩存訪問請求是引起高速緩存未命中的載入,由高速緩存控制器將高速緩存線的數(shù)據(jù)載入到高速緩存的經常讀取的區(qū)域中,其中,該高速緩存包含存儲體陣列,且其中所述經常讀取的區(qū)域包含接近于處理單元的存儲體;以及響應于高速緩存訪問請求是引起高速緩存未命中的存儲,由高速緩存控制器將高速緩存線的數(shù)據(jù)載入到高速緩存的經常寫入的區(qū)域中,其中所述經常寫入的區(qū)域包含遠離處理單元的存儲體。
16.如權利要求15所述的計算機程序產品,其中,所述計算機可讀程序還使得計算設備初始化與所述高速緩存線關聯(lián)的飽和計數(shù)器;在高速緩存控制器中接收用于訪問高速緩存線的后續(xù)高速緩存訪問請求;確定該高速緩存線是否在正確的區(qū)域中;以及響應于該高速緩存線不在正確的區(qū)域中,將該高速緩存線與相對區(qū)域中的高速緩存線進行交換。
17.如權利要求16所述的計算機程序產品,其中,確定被高速緩存訪問請求訪問的高速緩存線是否在正確的區(qū)域中包括響應于該高速緩存訪問請求是在經常讀取的區(qū)域中的存儲或在經常寫入的區(qū)域中的載入,遞減所述飽和計數(shù)器;并且響應于該飽和計數(shù)器小于閾值,確定該高速緩存線不在正確的區(qū)域中。
18.如權利要求16所述的計算機程序產品,其中,所述計算機可讀程序還使得計算設備在高速緩存控制器中接收用于訪問高速緩存線的后續(xù)高速緩存訪問請求;并且響應于該高速緩存訪問請求是在經常讀取的區(qū)域中的載入或在經常寫入的區(qū)域中的存儲,遞增所述飽和計數(shù)器。
19.如權利要求15所述的計算機程序產品,其中所述計算機可讀程序被存儲在數(shù)據(jù)處理系統(tǒng)的計算機可讀存儲介質中,且其中該計算機可讀程序通過網絡從遠程數(shù)據(jù)處理系統(tǒng)下載。
20.如權利要求15所述的計算機程序產品,其中所述計算機可讀程序被存儲在服務器數(shù)據(jù)處理系統(tǒng)的計算機可讀存儲介質中,且其中該計算機可讀程序通過網絡下載到遠程數(shù)據(jù)處理系統(tǒng),以在遠程系統(tǒng)的計算機可讀存儲介質中使用。
全文摘要
在高速緩存中提供了一種用于提供讀寫感知的高速緩存的機制。該機制將大的高速緩存分為經常讀取的區(qū)域和經常寫入的區(qū)域。該機制考慮非一致高速緩存架構替換策略中的讀/寫頻率。頻繁寫入的高速緩存線被置于一個較遠的存儲體中。頻繁讀取的高速緩存線被置于一個較近的存儲體中。經常讀取和經常寫入的區(qū)域之間的尺寸比例可以是靜態(tài)或動態(tài)的。經常讀取和經常寫入的區(qū)域之間的邊界可以是清楚或模糊的。
文檔編號G06F12/08GK102483720SQ201080038805
公開日2012年5月30日 申請日期2010年8月31日 優(yōu)先權日2009年9月18日
發(fā)明者R·拉賈莫尼, W·E·斯佩特, 張立新, 李健 申請人:國際商業(yè)機器公司