專利名稱:在mru分配期間采用軟i-mru成員保護的方法和高速緩存系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及一種改進的數(shù)據(jù)處理系統(tǒng),并且特別地涉及一種 改進的高速緩存機制。更特別地,本發(fā)明涉及一種用于在高速緩存內(nèi)完 成I-MRU成員保護的改進的方法和設(shè)備。
背景技術(shù):
使用 一級或多級高速緩存來銜接處理器和主存儲器之間的性能差 距是數(shù)據(jù)處理系統(tǒng)中已完善建立的特征。當(dāng)處理器發(fā)出存儲器訪問請求 時,首先將該請求發(fā)送到高速緩存以確定所請求的數(shù)據(jù)或指令是否存在 于高速緩存存儲器中。當(dāng)在高速緩存中找到期望的信息時,"命中"就發(fā) 生了。當(dāng)對高速緩存的請求或訪問沒有產(chǎn)生期望的信息時,"未命中"就 發(fā)生了。作為對未命中的響應(yīng),高速緩存"行"中的一行被新的一行替代。 選捧一行來進行替代的方法稱為替代策略。高速緩存通常釆用集合關(guān)聯(lián)方案,通過該方案將高速緩存分成不同 類的行,其中每類包含較小的固定數(shù)量的行。行的類通常稱為"同余類"。 同余類中的行(其表明地址能夠駐留的位置數(shù))通常稱為集合關(guān)聯(lián)高速 緩存中的集合。一般使用的一種類型的替代策略是最近最少使用(LRU )策略。LRU 策略建立在同余類中最近最少使用的高速緩存行是最不值得保留的前 提上。因此,當(dāng)需要逐出一個高速緩存行以為一個新行騰出空位時,LRU 策略選擇一個高速緩存行作為犧牲,該高速緩存行是同余類中最近最少 訪問的集合(或成員)。在LRU策略內(nèi),典型地,針對LRU狀態(tài)(在高速緩存中針對每個 同余類維持該LRU狀態(tài))執(zhí)行兩種類型的操作。 最近最常使用的更新(MRU更新)操作典型地由于高速緩存命中 而發(fā)生。MRU更新調(diào)節(jié)LRU狀態(tài)使得"命中"成員排在該同余類中所有 其他成員的前面,將在該成員位置上的高速緩存行設(shè)定為該同余類中最 有價值的成員。最近最少使用的犧牲選擇(LRU犧牲選擇)操作典型地在高速緩存 未命中需要分配成員以保持從存儲層級結(jié)構(gòu)的其他地方到達(dá)的高速緩存行時發(fā)生。該操作確定哪一個高速緩存行是同余類中最不值得保留 的,逐出該高速緩存行,并且將最近到達(dá)的高速緩存行放置在該成員的 位置上。若干因素使多級高速緩存層級結(jié)構(gòu)中LRU替代策略的行為變得復(fù) 雜,特別是當(dāng)這些層級結(jié)構(gòu)包含在第n-l級由多個結(jié)構(gòu)共享的第n級高 速緩存時更是如此。例如,處理器可以包含第一級指令高速緩存和第一 級數(shù)據(jù)高速緩存。這些高速緩存可以由包括指令和數(shù)據(jù)的第二級高速緩 存來支持。設(shè)計這種結(jié)構(gòu)使得對在第一級高速緩存中未命中的高速緩存 行的處理器請求很可能在第二級高速緩存中找到。正如前面所描述的,在第一級高速緩存中的LRU替代策略將處理 器最經(jīng)常使用的那些高速緩存行更新為"最近最常使用"。對于處理器來 說更不重要(或更沒有價值)的高速緩存行,由于它們不那么經(jīng)常被使 用,所以它們被標(biāo)記為最近最常使用的可能性更小。這樣,更頻繁使用 的行往往保留在第一級高速緩存中,而較不常使用的行往往被從第一級 高速緩存中逐出。第二級高速緩存中的LRU策略將在第一級高速緩存未命中發(fā)生時 從第二級高速緩存請求的那些高速緩存行更新為最近最常使用。這些行 往往是被從第一級高速緩存中逐出的那些行,并且對于處理器來說比往 往在第一級高速緩存中命中的高速緩存行更沒有價值。這樣,最經(jīng)常出 現(xiàn)在第一級高速緩存沒有找到而又被處理器反復(fù)需要的情況的高速緩 存行是最可能在第二級高速緩存中保留的高速緩存行,這是這些高速緩 存行更可能被MRU更新有益地影響的事實。大量應(yīng)用具有小的指令覆蓋區(qū)和更大的數(shù)據(jù)需求,導(dǎo)致"不平衡"的 高速緩存行為,其中處理器最常利用的指令經(jīng)常被從L2高速緩存中逐 出。這樣,對處理器最有價值的高速緩存行從第二級高速緩存中的MRU 更新受益的可能性更小,并且因此,比對處理器更沒有價值的高速緩存 行更有可能被從第二級高速緩存逐出。已經(jīng)提供了前面的方法用于保護在第一級高速緩存處所需要的特 定指令不被從第二級(L2)高速緩存逐出。使用這些方法,L2高速緩 存LRU算法包含一個指針以針對L2高速緩存中每個同余類保護指令最 近最常使用(I-MRU)行。這個保留的'路徑,適用于防止技術(shù)代碼(帶 有小的指令("I")覆蓋區(qū),但是帶有大的數(shù)據(jù)覆蓋區(qū))"破壞"I覆蓋區(qū)。 這種傳統(tǒng)的方法將基本上保護高速緩存的一個完整'路徑,。例如8路集 合關(guān)聯(lián)高速緩存的1/8將保留給指令。另外,與典型的偽lru算法相結(jié) 合的剩余數(shù)據(jù)路徑的不對稱產(chǎn)生了 一些工作負(fù)載的次優(yōu)行為。因此,本發(fā)明認(rèn)識到,具有一種用于減輕由于對舊指令行的繼續(xù)保 護而表現(xiàn)出的次優(yōu)性能的改進的方法、設(shè)備和計算^L系統(tǒng)是有利的,這 些舊指令行當(dāng)前通過I-MRU策略而受保護以不3皮從第二級包含性的高 速緩存逐出。發(fā)明內(nèi)容所公開的是一種用于限制舊的指令最近最常使用(I-MRU)行在 LRU犧牲選擇處理中在MRU成員分配期間在高速緩存的同余類內(nèi)受保 護的時間長度的方法和設(shè)備。MRU更新邏輯被擴充為具有用以確定自量的邏輯。逐出循環(huán)的最大數(shù)量是預(yù)設(shè)的,在該最大數(shù)量的逐出循環(huán)之 后,曾經(jīng)受到I-MRU保護的行被認(rèn)為是"舊"的并不再值得保護。利用計數(shù)器/定時器跟蹤在由MRU更新邏輯初始選擇I-MRU成員 用于保護之后所經(jīng)過的循環(huán)的數(shù)量。在一個實施例中,同余類包括8個 成員,LRU狀態(tài)陣列包括三個附加的保護比特,其表示同余類中要受保 護以不被逐出高速緩存的特定成員(0-7)的值。在每次后續(xù)經(jīng)過MRU 更新邏輯期間通過將由保護比特標(biāo)識的特定成員標(biāo)記為I-MRU來保護
該成員不被選擇為下一個LRU犧牲成員。高速緩存線的這一 I-MRU保 護一直繼續(xù)到下面若干情況中的一種發(fā)生,包括(l)MRU更新邏輯 選擇一個不同的成員用于I-MRU保護;(2)該I-MRU成員變?yōu)闊o效; 或者(3)預(yù)設(shè)數(shù)量的逐出循環(huán)完成而沒有訪問/利用該行/成員。當(dāng)?shù)谌?種情況發(fā)生時,MRU更新邏輯取消對舊的I-MRU行的選擇,使該行符 合條件,可被選擇用于LRU逐出。根據(jù)一個實施例,針對每個同余類,修改MRU更新邏輯以通過基 于軟件的計數(shù)器/定時器來跟蹤所經(jīng)過的逐出循環(huán)的數(shù)量。定時器功能與 MRU分配邏輯相關(guān)聯(lián),其中被分配以I-MRU狀態(tài)的成員只在預(yù)設(shè)數(shù)量 的逐出循環(huán)內(nèi)受保護。 一旦經(jīng)過該數(shù)量的逐出循環(huán)而沒有選擇新的成員 作為I-MRU,舊的I-MRU行就不再受保護并且可被選擇用于LRU逐出。 然后舊的I-MRU行可以在后續(xù)LRU逐出循環(huán)中被從高速緩存逐出,并 且然后可以利用該行來存儲數(shù)據(jù)。在發(fā)生后續(xù)訪問的情況下,計數(shù)器/ 定時器實施例考慮到重新設(shè)置I-MRU成員的壽命。在另一個實施例中,將線性反々貴移位寄存器(LFSR)添加到MRU 更新邏輯以表示計數(shù)器/定時器功能。調(diào)整LFSR使得I-MRU行在預(yù)設(shè) 的隨機數(shù)量的逐出內(nèi)受保護。LFSR使對保護比特的編碼過載,4吏得保 護比特不再表示同余類的特定成員。LFSR實施例使得不需要大量定時 器。
被認(rèn)為是本發(fā)明特點所在的新穎特征在所附權(quán)利要求書中提出。但 是,參考應(yīng)結(jié)合附圖閱讀的對示例性實施例的以下詳細(xì)描述,可以最好 地理解本發(fā)明本身以及其優(yōu)選使用模式、進一步的目的和優(yōu)勢,其中圖1是可以在其中實現(xiàn)本發(fā)明的一個實施例的數(shù)據(jù)處理系統(tǒng)的框圖;圖2是可以在其中實現(xiàn)本發(fā)明的另 一個數(shù)據(jù)處理系統(tǒng)的示圖; 圖3A-圖3C表示根據(jù)本發(fā)明的實施例的示例性MRU更新功能的電 路圖,該MRU更新功能已經(jīng)被擴充為具有受時間限制的成員I-MRU保
護能力;圖4是根據(jù)本發(fā)明的示例性實施例的包括帶成員保護比特的擴展 LRU陣列的高速緩存體系結(jié)構(gòu),該陣列已經(jīng)被流水線式地輸入到MRU 更新邏輯以在預(yù)設(shè)數(shù)量的逐出循環(huán)內(nèi)保護選定的成員;以及圖5A和圖5B是示出了根據(jù)本發(fā)明的示例性實施例的MRU更新邏 輯的邏輯組件的兩個實施例的框圖,這兩個實施例分別配置為具有計數(shù) 器和LFSR以支持針對有效的受保護成員的受時間限制的I-MRU分配。
具體實施方式
現(xiàn)在參考附圖并且特別地參考圖1,示出了可以在其中實現(xiàn)本發(fā)明 的一個示例性實施例的數(shù)據(jù)處理系統(tǒng)的框圖。數(shù)據(jù)處理系統(tǒng)100是傳統(tǒng) 的多處理器計算^/L系統(tǒng)的示例。數(shù)據(jù)處理系統(tǒng)100具有若干處理單元, 其中處理單元102和處理單元104被示出。這些處理單元連接到各種外 圍設(shè)備,包括輸入/輸出(1/0)設(shè)備106、存儲器108以及固件110,其 主要目的是只要第 一次啟動計算機就從外圍設(shè)備中的 一個找出并加載 操作系統(tǒng)。1/0設(shè)備106可以包括例如顯示監(jiān)控器、鍵盤和永久存儲設(shè) 備。處理單元102和104通過不同的裝置與外圍設(shè)備通信,這些裝置包 括例如通用互聯(lián)或總線112。數(shù)據(jù)處理系統(tǒng)100可以具有4艮多沒有示出 的附加組件,諸如用于連接到諸如調(diào)制解調(diào)器或打印機之類的設(shè)備的串 行和并行端口。本領(lǐng)域的普通技術(shù)人員將進一步理解,還有另外的可以與圖1的框圖中示出的組件聯(lián)合使用的組件。例如,顯示適配器可以用 于控制視頻顯示監(jiān)控器,以及存儲控制器可以用于訪問存儲器108。同 樣,數(shù)據(jù)處理系統(tǒng)IOO可以具有多于兩個的處理單元。在對稱多處理器(SMP)計算機中,所有的處理單元一般都相同。 換句話說,這些處理器都使用指令和協(xié)議的公共集或子集來運行,并且 一爿殳具有相同的結(jié)構(gòu)。典型的體系結(jié)構(gòu)在圖1中示出。在這些示例中, 處理單元102包括包含處理器核心116的集成芯片114,并且處理單元 104包括包含處理器核心120、指令高速緩存126和數(shù)據(jù)高速緩存128 的集成電路118。處理器核心116和120包括寄存器和執(zhí)行單元。這些 組件用于執(zhí)行程序指令以運行數(shù)據(jù)處理系統(tǒng)100。正如所示出的,在圖1中,處理單元102和處理單元104也在各自 的集成電路114和118內(nèi)包括高速緩存,諸如指令高速緩存122、數(shù)據(jù) 高速緩存124、指令高速緩存126和數(shù)據(jù)高速緩存128。這些高速緩存 是使用高速存儲設(shè)備實現(xiàn)的。高速緩存一般用于臨時存儲可以由處理器 反復(fù)訪問的值,以便通過避免從存儲器108加載這些值時的較長延遲來 加速處理。當(dāng)在單個集成芯片上與處理器核心一起集成封裝時,這些高 速緩存稱為是在"板上"的。在這些示例中,位于集成電路114和集成電 路118內(nèi)的高速緩存是第1級(L1)高速緩存。每個高速緩存與一個高 速緩存控制器(沒有示出)關(guān)聯(lián),該高速緩存控制器管理高速緩存存儲 器與處理器核心和/或更低級的存儲器之間的數(shù)據(jù)傳輸。處理單元可以包括附加的高速緩存。例如,處理單元102包括高速 緩存130并且處理單元104包括高速緩存132,它們稱為第2級(L2) 高速緩存。L2高速緩存130和L2高速緩存132充當(dāng)存儲器108與板上 Ll高速緩存,即指令高速緩存122、數(shù)據(jù)高速緩存124、指令高速緩存 126和數(shù)據(jù)高速緩存128之間的媒介。這些L2高速緩存比板上高速緩 存存儲更大量的信息(例如指令和數(shù)據(jù)),但是具有更長的訪問延遲。 例如,高速緩存130和高速緩存132可以集成到芯片中并具有256或512 千字節(jié)的存儲容量,但是處理單元102中的指令高速緩存122和數(shù)據(jù)高 速緩存124以及處理單元104中的指令高速緩存126和數(shù)據(jù)高速緩存 128可能只具有64千字節(jié)的總?cè)萘?。正如所示出的,高速緩?30和132都連接到總線112。所有從存 儲器108到處理器核心116的信息加載都通過高速緩存130,而所有到 處理器核心120的信息加載都通過高速緩存132。盡管圖1只示出了兩 級高速緩存層級結(jié)構(gòu),但是在有多級串聯(lián)高速緩存的地方可以提供多級 高速緩存層級結(jié)構(gòu)。例如可以提供L3、 L4和L5高速緩存。在下面的對本發(fā)明的示例性實施例的詳細(xì)描述中,足夠詳細(xì)地描述
踐本發(fā)明,并且應(yīng)當(dāng)理解,可以利用其他實施例并且在不偏離本發(fā)明的 精神或范圍的情況下可以進行邏輯的、體系結(jié)構(gòu)的、程序的、機械的、 電的及其他的改變。因此,下面的詳細(xì)描述不應(yīng)被理解為具有限制性意 義,并且本發(fā)明的范圍只在所附權(quán)利要求中限定。同樣,在附圖的描述中,給類似的單元提供與前面的附圖中類似的 名稱和參考數(shù)字。當(dāng)后面的附圖在不同的上下文中或以不同的功能來利 用該單元時,提供給該單元一個代表圖號的不同起始數(shù)字(例如對于圖l來說是lxx,對于圖2來說是2xx)。提供分配給單元的特定數(shù)字只是 為了幫助描述,并不意味著暗示對本發(fā)明的任何限制(結(jié)構(gòu)上的或功能 上的)?,F(xiàn)在參考圖2,根據(jù)本發(fā)明的一個示例性實施例示出了另一個數(shù)據(jù) 處理系統(tǒng)的示圖。也可以在數(shù)據(jù)處理系統(tǒng)200內(nèi)實現(xiàn)本發(fā)明的處理和設(shè) 備。這個特定的示例示出了共享的L2高速緩存,而圖1中的數(shù)據(jù)處理 系統(tǒng)IOO示出了非共享的高速緩存。在這個示例中,數(shù)據(jù)處理系統(tǒng)200包括兩個處理器,即處理器202 和處理器204。高速緩存存儲器206和高速緩存存儲器208分別是位于 處理器202和處理器204內(nèi)的高速緩存存儲器。在這個示例中,高速緩 存存儲器210是一個被這兩個處理器共享的第2級高速緩存存儲器。通 過總線212提供對這個高速緩存存儲器的訪問。高速緩存控制214包括 用于作為對來自處理器202和204的請求的響應(yīng)而處理存儲器210內(nèi)的 高速緩存行的邏輯。高速緩存控制214通過總線216連接到其他組件。 例如,固件218 、 I/O設(shè)備220和存儲器222連接到總線216.數(shù)據(jù)處理系統(tǒng)100和數(shù)據(jù)處理系統(tǒng)200包括用于處理高速緩存行特 別是存儲最近獲取的指令的高速緩存行的機制。正如下面更詳細(xì)描述 的,本發(fā)明4是供了一種用于增強指令高速緩存行作為I-MRU保護成員 的選擇和后續(xù)釋放的方法、設(shè)備和計算機系統(tǒng)。高速緩存行的替代策略,特別是LRU替代策略在前面通過引用的 方式包含于此的以下共同轉(zhuǎn)讓、共同未決的申請中被詳細(xì)描述序列號 11/054,390 (律師存檔號AUS920040919US1)和序列號11/054,067 (律
師存檔號AUS920041052US1 )。此處只描述該描述中影響進行MRU處 理的部分。本發(fā)明的特征與由這些相關(guān)申請所描述的LRU逐出方法/機 制和高速緩存拓樸中的I-MRU成員保護功能有關(guān)。于是,本發(fā)明對MRU 成員保護功能提供了進一 步的修改/增強,如下面更詳細(xì)描述的那樣。如上所述,某些操作偶爾期望受保護以在LRU犧牲選擇期間不被 選擇作為犧牲,諸如當(dāng)不平衡的高速緩存行為發(fā)生時(數(shù)據(jù)高速緩存行 的高速流動與指令高速緩存行的低速流動)。這樣,本發(fā)明提供了用于 在LRU犧牲選擇期間實現(xiàn)對特定的MRU指令高速緩存行(同余類的成 員)的最佳的時間受控的保護的方法和設(shè)備。在特定的示例性實施例中, 同余類包括8個成員,并且利用三個附加的保護比特來指向同余類內(nèi)要 受保護以不被從高速緩存逐出的特定成員(0-7)。正如相關(guān)申請中所描述的,通過將成員保護比特設(shè)置成常量模式 (與已更新的成員關(guān)聯(lián))而不改變向量中的其他比特來完成MRU更新 操作。該子集包括n-l比特(其中n是高速緩存的關(guān)聯(lián)度),這些比特 限定了已更新成員與同余類中每個其他成員之間的順序。應(yīng)當(dāng)注意,利用三個比特作為成員保護比特的特定實現(xiàn)方式是針對 8比特的同余類示例而做出的。所需要的比特的實際數(shù)量是N,其中N 是整數(shù),使得2W大于或等于同余類中成員的數(shù)量。在處理針對高速緩存請求的搮:作期間,將保護比特與在LRU犧牲 選擇和MRU去往I狀態(tài)期間提供的其他信息同時地以流水線式輸入到 MRU更新邏輯。MRU更新邏輯被擴充為具有用以對保護比特的值進行 解碼以產(chǎn)生對應(yīng)的MRU向量的邏輯,將該MRU向量與MRU更新邏 輯內(nèi)的任意其他MRU向量進行邏輯或(OR)運算以創(chuàng)建單個MRU輸 入向量。MRU更新邏輯也包括用于在受保護成員被確定為無效時取代 對該成員的默認(rèn)的"進行MRU" (makeMRU)處理的邏輯。另外,根據(jù) 本發(fā)明,MRU更新邏輯被擴充為具有用以防止舊I-MRU繼續(xù)受保護的 邏輯。這個附加邏輯提供的核心功能是提供一種用于確定自從初始選擇 I-MRU行用于MRU保護所經(jīng)過的逐出循環(huán)的數(shù)量的機制。利用計數(shù)器
/定時器(或線性反々赍移位寄存器(LFSR))來跟蹤在由I-MRU成員初 始選擇MRU更新邏輯用于保護之后所經(jīng)過的循環(huán)的數(shù)量。通過在每次 后續(xù)經(jīng)過MRU更新邏輯期間將由保護比特標(biāo)識的特定成員標(biāo)記為 I-MRU來保護該成員不被選擇為下一個LRU犧牲。逐出循環(huán)的最大數(shù) 量是預(yù)設(shè)的,在該最大數(shù)量的逐出循環(huán)之后,曾經(jīng)受到I-MRU保護的 選定行被認(rèn)為是"舊"的并不再值得保護。這個預(yù)設(shè)的循環(huán)數(shù)量是一種設(shè) 計特征,其可以由系統(tǒng)工程師調(diào)整。通過這個附加邏輯,對高速緩存行的I-MRU保護繼續(xù)到若干情況 中的一種發(fā)生,包括(1 ) MRU更新邏輯選擇一個不同的成員用于 I-MRU保護;(2)該I-MRU成員變?yōu)闊o效;或者(3)預(yù)設(shè)數(shù)量的逐出 循環(huán)完成而沒有訪問/利用該行/成員。當(dāng)?shù)谌N情況發(fā)生時,MRU更新 邏輯取消對舊的I-MRU行的選擇,使該行符合條件,可被選擇用于LRU 逐出。根據(jù)一個實施例,針對每個同余類,修改MRU更新邏輯以通過基 于軟件的計數(shù)器/定時器來跟蹤所經(jīng)過的逐出循環(huán)的數(shù)量。定時器功能與 MRU分配邏輯相關(guān)聯(lián),其中被分配以I-MRU狀態(tài)的成員只在預(yù)設(shè)數(shù)量 的逐出循環(huán)內(nèi)受保護。 一旦經(jīng)過該數(shù)量的逐出循環(huán)而沒有選擇新的成員 作為I-MRU,舊的I-MRU行就不再受保護并且可被選擇用于LRU逐出。 然后舊的I-MRU行可以在后續(xù)LRU逐出循環(huán)中被從高速緩存逐出,并 且然后可以利用該行來存儲數(shù)據(jù)。在發(fā)生后續(xù)訪問的情況下,計數(shù)器/ 定時器實施例考慮到重新設(shè)置I-MRU成員的壽命。在另一個實施例中,將線性反々貴移位寄存器(LFSR)添加到MRU 更新邏輯以提供計數(shù)器/定時器功能。調(diào)整LFSR使得I-MRU行在預(yù)設(shè) 的隨機數(shù)量的逐出內(nèi)受保護。LFSR使對保護比特的編碼過載,使得保 護比特不再表示同余類的特定成員。LFSR實施例使得不需要大量定時 器。在示例性的實施例中,同余類包括8個成員,LRU狀態(tài)陣列包括三 個附加的保護比特,其表示同余類中要受保護以不被逐出高速緩存的特 定成員(0-7)的值。在每次后續(xù)經(jīng)過MRU更新邏輯期間通過將由保護
比特標(biāo)識的特定成員標(biāo)記為I-MRU來保護該成員不被選擇為下一個 LRU犧牲成員,直到(a)選擇一個不同的成員用于保護;或(b)該成 員變?yōu)闊o效;或(c)該成員作為受保護成員超時,如這里所描述的那 樣。如下面所描述的,將已擴充的MRU更新邏輯(512)擴展為包括支 持與保護比特關(guān)聯(lián)的受時間限制的I-MRU成員保護功能所需要的若干 邏輯組件。保護比特用作一個指針,其標(biāo)識了要受保護的成員/高速緩存行的特 定位置(也就是說,在8成員的同余類中,成員0-7中的一個映射到高 速緩存行A-H)。由這個指針標(biāo)識的特定成員成為I-MRU并且因此在 LRU犧牲選擇期間在預(yù)先指定數(shù)量的逐出循環(huán)內(nèi)受保護以不被選擇作 為犧牲,除非該成員是無效的或被作為I-MRU的另一個成員替代。這 樣,僅當(dāng)在該行被處理器訪問/利用之前該行變?yōu)闊o效或該行的保護狀態(tài) 超時,該受保護成員才會^^f西牲。為了本發(fā)明的目的,最近指令獲取(I獲取)操作觸發(fā)對在其中存 儲指令的成員的保護。然后,MRU更新邏輯的梯:作保護同余類中最近 獲取的指令(這里稱為指令最近最常使用,I-MRU)直到時間計數(shù)到期。 但是,當(dāng)檢測到具有期望屬性的新操作(也就是指令獲取)時,該指針 變?yōu)橹赶虼鎯π翴-MRU的成員。圖4示出了高速緩存體系結(jié)構(gòu)的擴展框圖表示,其中將成員保護比 特從LRU狀態(tài)陣列流水線式地輸入到MRU更新邏輯。正如所示出的, 保護比特通過一系列的鎖存器而被鎖存,同時執(zhí)行帶有I狀態(tài)偏置和D 狀態(tài)去往MRU的LRU犧牲選擇(參看相關(guān)申請)。D狀態(tài)去往MRU 獨立于對成員保護比特的流水線操作和處理而發(fā)生,并且在前面通過引 用的方式包含于此的律師存檔號為AUS920041052US1的未決相關(guān)專利 申請中描述了該過程。圖4的描述著重于對成員保護比特的流水線才喿作及關(guān)聯(lián)的功能。完 成實際確定和最終選擇保護成員用于MRU保護所需要的附加邏輯在圖 5A和圖5B的邏輯圖中提供。高速緩存同余類索引(或地址)保存在鎖存器401中。從那里該地
址#1同時路由到目錄陣列402、 LRU狀態(tài)陣列403以及為了進行隨機讀 取高速緩存的操作而路由到數(shù)據(jù)陣列404。已訪問的同余類的13個狀態(tài)比特被從LRU狀態(tài)陣列403中讀取并 存放到鎖存器405中。犧牲選擇邏輯406選擇犧牲成員,并且所選擇的 犧牲成員位置被存放在鎖存器409中。然后,犧牲選擇邏輯406通過流 水線鎖存器410和411將部分或全部LRU狀態(tài)信息傳遞到MRU更新邏 輯412。如上所述,"命中成員"信息被存放在鎖存器415中,并且被流 水線式地轉(zhuǎn)發(fā)到鎖存器416,從這里該信息被路由到MRU更新邏輯412。 更進一步地,反MRU邏輯產(chǎn)生反MRU向量,該向量也從鎖存器422 被路由到MRU更新邏輯412。在上述過程的同時,成員保護比特被放置到第一鎖存器430中并通 過流水線鎖存器435和440傳遞到MRU更新邏輯412。流水線鎖存器 435和440的使用使成員保護比特能夠基本上與LRU狀態(tài)信息、命中成 員向量(來自鎖存器416)和反MRU向量(來自鎖存器422)同時到達(dá) 已擴充的MRU更新邏輯412。同樣,由于成員保護比特正在通過高速緩存電路,因此將該操作的 屬性鎖存在操作屬性鎖存器407處并且通過鎖存器418和428將這些屬 性流水線式地輸入到MRU更新邏輯412。在用于確定何時選擇新成員(也就是不同的指令)用于保護的選擇過程中利用這些屬性。在一個實 施例中,這些屬性表明操作是否為指令獲取(I獲取)操作,并且對保 護比特進行更新以使它們指向主管所獲取的指令的成員。下面提出的描述只有在它們影響對與本發(fā)明相關(guān)的成員保護比特 的處理的地方才參考其他示例性的輸入。對于本發(fā)明來說,最重要的是 與受保護成員相關(guān)的信息(來自鎖存器440)。根據(jù)本發(fā)明,已擴充的MRU更新邏輯412利用年表向量的性質(zhì), 該性質(zhì)使得可以對年表向量同時執(zhí)行多個更新操作。利用這個性質(zhì), MRU更新功能能夠同時執(zhí)行多個"進行MRU更新"和多個"反MRU" 更新。當(dāng)利用年表同時執(zhí)行多個更新時,順序向"l"編碼(設(shè)置主導(dǎo))(set-dominant)或"0"編碼(重置主導(dǎo))(reset-dominant)偏置。
圖3A-圖3C示出了 "進行MRU/LRU"邏輯526內(nèi)的電路的內(nèi)部視 圖。特別地,圖3B示出了新的一組電路輸入,即"進行根MRU",其 確定根比特在"進行MRU"過程期間是否被翻轉(zhuǎn)(toggle )?,F(xiàn)在描述 與產(chǎn)生這些輸入關(guān)聯(lián)的一般功能和本發(fā)明的其他特征。正如隨著下面對 圖5A和圖5B的描述而變得清楚的,只有當(dāng)由命中或犧牲成員選擇產(chǎn) 生的"進行MRU"功能被觸發(fā)時才觸發(fā)"進行根MRU"輸入?,F(xiàn)在轉(zhuǎn)到圖5A,示出了已擴充的MRU更新邏輯512的框圖表示, 其包括提供本發(fā)明的時間限制I-MRU保護特征所需要的附加邏輯組件。 在圖A中,已擴充的MRU更新邏輯512接收以下內(nèi)容作為輸入(1) LRU狀態(tài)向量508 (表示當(dāng)前LRU狀態(tài)的13比特寬的輸入向量),(2) 反MRU向量506 (饋送給與/非門554的8比特寬的向量,該與/非門 554將"進行MRU"輸入饋送給"進行MRU/LRU"邏輯526 ), ( 3 ) 命中成員向量504 (饋送給MUX 516的也是8比特的向量,下面將描 述該MUX 516的功能),以及(4)成員保護比特502 (標(biāo)識預(yù)先選擇 的要保護的成員的LRU狀態(tài)比特13-15 )。根據(jù)本發(fā)明,MRU更新邏輯 512也接收與成員保護比特502關(guān)聯(lián)的并且如下面所描述地來利用的附 加計數(shù)器比特501。除了上述輸入,還示出了 MRU向量550 (表示刪除狀態(tài)成員的8 比特向量)。但是,與MRU向量550關(guān)聯(lián)的功能在律師存檔號為 AUS920041052US1的未決專利申請中描述。已擴充的MRU更新邏輯512包括"進行MRU/LRU"邏輯526, 其接收四組輸入。這些輸入是(1) 13比特的LRU狀態(tài)向量508; (2) 8比特的"進行LRU,,向量558; (3) 8比特的"進行MRU"向量557; 以及(4)8比特的"進行根MRU"向量556。直接從階段鎖存器411 接收的13比特的LRU狀態(tài)向量在前面已經(jīng)描述過了。每個其他輸入都 來自選擇過程/流水線操作,包括一個或多個邏輯組件和多個到MRU更 新邏輯512的上述輸入的置換。例如,除了成員保護比特和D狀態(tài)向量, 三組輸入一起進行或運算以提供單個"進行MRU,,輸入向量。成員保護比特502被路由到解碼模塊522,該解碼模塊522將3比
特的輸入轉(zhuǎn)換成8比特的向量(成員保護向量503 ),每個比特表示同余 類中的一個成員,其中與受保護成員對應(yīng)的比特設(shè)置為邏輯1,而所有 其他的比特設(shè)置為邏輯0。然后這個成員保護向量503通過"零計數(shù)"門 521被路由到與/非門552。與/非門552也從鎖存器422接收反MRU向 量506作為輸入。與/非門552反轉(zhuǎn)反MRU向量,并且兩個輸入的組合 使得可以在成員不是無效時對該成員進行MRU更新。根據(jù)本發(fā)明的實施例,提供了附加的邏輯,其建立了用于以下操作 的機制(a)跟蹤其中特定成員受保護的逐出循環(huán)的數(shù)量,和(b)觸 發(fā)從特定成員移除保護狀態(tài)。圖5A示出了第一實施例,其提供了計數(shù) 器更新/重新設(shè)置路徑。提供計數(shù)器值501作為LRU狀態(tài)增加。例如, 計數(shù)器可以包括附加的LRU狀態(tài)比特16-18,表示最大計數(shù)器值8 (二 進制000)。將計數(shù)器值501饋送到三條路徑,其中將第一條路徑示出為 命中路徑,將第二條并行路徑示出為未命中路徑(帶計數(shù)器減小邏輯), 以及將第三條路徑示出為到期的計數(shù)器路徑。當(dāng)在未命中路徑上傳播 時,計數(shù)器值減小1,與自從I-MRU成員最后一次由于命中該成員而受 保護以來經(jīng)過另 一個逐出循環(huán)對應(yīng)。命中和未命中路徑是計數(shù)器更新 MUX 515的輸入。計數(shù)器更新MUX515從命中確定邏輯514接收選擇 輸入,并且該選擇輸入使得計數(shù)器更新MUX 515: ( a)在命中發(fā)生時選 擇命中路徑輸入,以及(b)在命中未發(fā)生時選擇未命中路徑輸入(計 數(shù)器-1 )。然后,將所選擇的輸入傳遞到新的計數(shù)器確定MUX 523,其負(fù)責(zé) 選擇何時將當(dāng)前的計數(shù)器值傳遞到下一個循環(huán)或產(chǎn)生一個具有最大計 數(shù)器值的新計數(shù)器。這樣,如所示出的,MUX 523從MUX 515接收計 數(shù)器值的第一輸入和最大計數(shù)器值的第二輸入(Max—Cnt)。然后,基于 命中成員是否為指令(也就是當(dāng)前指令或新指令)來確定在MUX 523 的輸入選擇。如果命中成員不是指令,則在下一個逐出循環(huán)內(nèi)將來自 MUX 515的減小的計數(shù)器值作為新計數(shù)器值531來傳遞。但是,如果 命中成員是指令,則建立新的計數(shù)器,新計數(shù)器值531為最大計數(shù)器值 (例如111 )。到期的計數(shù)器路徑包括"計數(shù)器=0"確定邏輯513,其估計當(dāng)前計數(shù) 器的值是否等于0。當(dāng)該值等于零時,發(fā)送信號到MRU啟動(或零計 數(shù))門521。 MRU啟動門521允許傳遞來自解碼模塊522的輸出,該輸 出是同余類的8比特向量,其中一個單獨的比特被標(biāo)記為"進行 I-MRU"。當(dāng)門521從邏輯513接收信號時,門521將所有8比特翻轉(zhuǎn) 為0,使得沒有成員被標(biāo)記為"進行I-MRU"。也就是說,門521從先 前標(biāo)記為"進行I-MRU"的比特移除"進行I-MRU"狀態(tài)。通過這種 方式,使得沒有成員能夠在計數(shù)器到期后仍然受到I-MRU保護。在一個實施例中,門521是與門(或成串的與門)并且4妄收8比特 的向量作為單獨的向量行。與門也從邏輯513接收信號作為第二輸入。 當(dāng)計數(shù)器值501為非零時,邏輯513將1值作為信號發(fā)送到與門。然后, I-MRU成員(計數(shù)器行設(shè)置為1)在它的向量行與來自邏輯513的信號 進行與運算時從與門接收1輸出,而所有其他向量行產(chǎn)生零輸出。但是, 當(dāng)計數(shù)器值501為0時,從邏輯513傳遞0信號,并且當(dāng)與O輸入信號 進行與運算時I-MRU成員的向量行變?yōu)榱恪,F(xiàn)在參考圖5B,示出了根據(jù)本發(fā)明的第二實施例,其中利用LFSR 來提供時間限制特征用于"進行MRU"功能。通過該第二實施例,LRU 狀態(tài)比特13-15的000成員被偏置為從來不受保護。這樣,LRU狀態(tài)比 特的OOO編碼產(chǎn)生了 "進行MRU"向量'OOOOOOOO'。使用"O行偏置"配 置505來完成對000比特的偏置,通過這樣做,LRU狀態(tài)比特解碼的"O" 向量行被接地,而剩余的已解碼的向量行(1-7)被作為向量行輸入503 提供給與/非門552。如進一步所示出的,將狀態(tài)比特選擇MUX 563添 加到用于LRU狀態(tài)比特502的輸入路徑。然后,MUX563接收第二輸 入'000'。對MUX 563處的輸入的選擇依賴于兩個因素(a)是否 LFSR="true"(也就是說輸入值為1)以及(b)是否存在命中(514)。 當(dāng)LFSR二"true"并且不存在命中時,MUX 563的選擇輸入選擇000作為 LRU狀態(tài)以通過MRU選擇邏輯(512)傳播。否則,選擇輸入選擇LRU 狀態(tài)比特502。示出了一個向與/非門565提供單個輸入的示例LFSR 563,其也接收命中/未命中邏輯514的輸出作為第二輸入。如所示出的,
假定輸入B表明"不是命中",也就是未命中。同樣,假定LFSR默認(rèn)為 真值。這樣,當(dāng)兩個條件都為真值時兩個輸入都提供邏輯1。
然后,將從MUX 563選擇的輸入傳遞到解碼邏輯522,其在"0行 偏置"配置505中將LRU狀態(tài)輸入解碼成各自的八個向量行(比特0-7 )。 如所示出的,比特0的向量行被接地,使得比特O可以從來不被選擇為 I-MRU成員。配置505內(nèi)的每個其他向量行(1-7)都被表示并被傳遞 給與/非門552。利用LFSR來翻轉(zhuǎn)成員保護比特502的比特并使這些比特過載,以 便將所選擇的成員作為I-MRU成員而移除。這樣,基于LFSR狀態(tài)而 將8比特成員保護向量503的所有比特翻轉(zhuǎn)為0。當(dāng)成員保護向量503 經(jīng)過與/非門552時沒有值為1的比特,則沒有成員被標(biāo)識為I-MRU成 員。因此,移除了先前應(yīng)用于舊I-MRU的保護。
調(diào)整LFSR使得I-MRU行在預(yù)設(shè)的隨機數(shù)量的逐出內(nèi)受保護。在 這個實施例中,利用單個LFSR為所有同余類提供時間限制MRU保護 特征。特別地,圖5A示出的實施例需要大量定時器/計數(shù)器,每個同余 類需要一個。其他的邏輯裝置可以代替LFSR或與LFSR—起利用以達(dá) 到類似的取消對舊I-MRU的選擇以4吏其不受保護。例如, 一個實施例 可以通過向LRU狀態(tài)比特添加比特行來利用兩個計數(shù)器值以及LFSR。
反MRU向量用于找到無效的高速緩存行并使它成為LRU。使高速 緩存行成為LRU與用以使保護成員成為MRU的任何嘗試相沖突,并且 解決該沖突有利于使反轉(zhuǎn)的反MRU輸入取代先前受保護的成員的"默 認(rèn)""進行MRU"狀態(tài)。
與/非門552的0輸出禁用/關(guān)閉了針對該成員的"進行MRU"功能, 因此使得該成員符合條件,可通過犧牲選擇成為無效成員。但是,l輸 出使得該成員成為MRU,表明該成員是有效的并受到保護以不受到犧 牲選擇。
與/非門552的輸出表示或邏輯518的一個輸入,該或邏輯518接收 兩個附加輸入,即MRU向量550和來自MUX 516的輸出505。 MRU 向量550或"刪除"MRU向量在律師存檔號為AUS920041052US1的相關(guān)未決專利申請中描述。對三個輸入一起進行或運算以提供輸入到"進行MRU/LRU"邏輯526的單個"進行MRU"向量557。MUX 516接收命中成員向量504和選擇犧牲成員向量511 (來自推 斷犧牲成員邏輯510)作為它的輸入。MUX516也乂人命中確定邏輯514 接收(單比特)選擇輸入。命中確定邏輯514表明命中何時在高速緩存 內(nèi)發(fā)生,其也表明命中成員向量504應(yīng)當(dāng)被選擇為MUX516處的輸出。 但是,當(dāng)在高速緩存中該請求未命中并且選擇了犧牲成員時,選擇信號 將犧牲成員向量511作為MUX 516處的輸出轉(zhuǎn)發(fā)。否則,當(dāng)沒有操作 或操作中止時,輸出O向量。
將MUX 516的輸出路由到編碼邏輯520。編碼邏輯520得到8比 特向量并產(chǎn)生與該向量對應(yīng)的3比特指針(也就是,指向由在MUX516 處選擇的向量標(biāo)識的成員的位置),并且提供該指針作為兩個輸入中的 一個以保護選擇MUX 524。保護選擇MUX 524接收成員保護比特作為 它的第二輸入。選擇輸入528選擇兩個3比特輸入中的一個作為MUX 524的輸出。選擇輸入528是從選擇鎖存器428接收的并且表明操作是 否表現(xiàn)出了使得成員保護擴展到接收新指令的成員的特定屬性。選擇輸 入528對受保護的比特進行更新以指向分配給命中/犧牲成員的成員。
當(dāng)操作的屬性表明新操作是指令時(也就是,操作表現(xiàn)出了用于選 擇要受保護的成員的預(yù)定屬性),選擇輸入528觸發(fā)選擇來自編碼邏輯 520的輸入作為來自保護選擇MUX 524的輸出。這個輸出表示新的LRU 狀態(tài)比特13-15 530,并且指向要受保護的成員。否則,選擇成員保護 比特502(經(jīng)歷在成員保護向量503處可能進行的取消選擇),并且LRU 狀態(tài)比特13-15 530保持相同。
命中/未命中MUX 516也提供在產(chǎn)生"進行MRU/LRU"邏輯526 的三個輸入時所利用的三個輸出行。第一輸出是"進行根MRU" 556, 其是當(dāng)對根比特(LRU狀態(tài)比特O)進行更新時觸發(fā)的8比特向量。如 所示出的,"進行根MRU" 556只有當(dāng)在MUX516處選擇命中成員或 犧牲選擇向量時才接收輸入向量。當(dāng)兩種情況都不發(fā)生時,"進行根 MRU " 556接收空輸入并且根比特沒有被更新/翻轉(zhuǎn)。 來自命中/未命中MUX516的第二輸出是到或邏輯518的,在上面 已經(jīng)描述過該或邏輯518。通過這個輸入,命中成員和/或所選擇的犧牲 成員成為MRU (LRU比特1-12),其觸發(fā)輸入556。最后,^是供第三個 輸出作為到第二與/非門552的輸入。到與/非門552的第二輸入是反 MRU向量506,其選擇處于I狀態(tài)的成員作為要"進行LRU"的成員。 與/非門554提供用作"進行MRU/LRU"邏輯526的第三個輸入的"進 行LRU"輸出向量。因此,作為反MRU成員的成員只有在該成員也不 是命中成員或所選擇的犧牲成員時才成為LRU。如果反MRU成員是所 選擇的犧牲成員的當(dāng)前命中成員,那么就取代該成員的"進行LRU"功 能/操作,因為成員不能同時既是LRU又是MRU。這種取代由于所選 擇的犧牲成員被新的有效條目替代而發(fā)生,該新的有效條目變成MRU 成員并因此不應(yīng)當(dāng)被標(biāo)記為用于為LRU犧牲選擇。向量的所有組件。它們是LRU狀態(tài)比特O、 1-12 532,其表明在下一個 犧牲選擇過程期間哪一個成員要被選擇為LRU犧牲成員,以及LRU狀 態(tài)比特13-15 530,其指向/表明同余類中要保護的成員(如果有的話)。 在圖5A中,也提供了新計數(shù)器531的第三個輸出。然后,將這些輸出 比特路由到并存儲在LRU狀態(tài)陣列403中,替代LRU狀態(tài)陣列403內(nèi) 先前的LRU狀態(tài)。本發(fā)明提供了一種"軟"指令最近最常使用(I-MRU)保護方案, 其中所選擇的MRU成員只在有限數(shù)量的逐出循環(huán)內(nèi)受保護,除非該指 令高速緩存行在該期間被更新/利用。對指令的更新或訪問重新啟動確定 高速緩存行何時不再作為I-MRU受保護的倒計時。因此,只有經(jīng)常使 用的指令行受保護,并且舊的I-MRU行因老化而到達(dá)高速緩存外。舊 的I-MRU成員被逐出,使得同余類的所有成員可以用于數(shù)據(jù)。在一個 實施例中,通過基于線性反饋移位寄存器(LFSR)而"趕出"I-MRU高 速緩存行來完成I-MRU老化。調(diào)整LFSR使得I-MRU行在預(yù)設(shè)數(shù)量的 逐出內(nèi)受保護。因此,本發(fā)明大大減輕了由于對舊指令行的繼續(xù)保護而 表現(xiàn)出的次優(yōu)性能,傳統(tǒng)上這些舊指令行是通過I-MRU策略而受保護
以不被從第二級包含性的高速緩存逐出的。作為最后的內(nèi)容,重要的是注意到,盡管已經(jīng)并將繼續(xù)在安裝有管 理軟件的全功能計算機系統(tǒng)的上下文中描述本發(fā)明的示例性實施例,但 是本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明的示例性實施例的軟件方面 能夠作為程序產(chǎn)品以各種形式分布,并且本發(fā)明的示例性實施例可以等 同地應(yīng)用,而不管用于實際執(zhí)行該分布的信號承載介質(zhì)的特定類型如何。信號承載介質(zhì)的示例包括諸如軟盤、硬盤驅(qū)動器、CDROM之類的 可記錄類型的介質(zhì)和諸如數(shù)字和模擬通信鏈路之類的傳輸類型的介質(zhì)。 已經(jīng)為了說明和描述的目的而提出了對本發(fā)明的描述,但是該描述 并非旨在窮舉或?qū)⒈景l(fā)明限制為所公開形式的形式。很多修改和變更對 本領(lǐng)域的普通技術(shù)人員來說將是很明顯的。選擇和描述實施例是為了最 好地說明本發(fā)明的原理、實際應(yīng)用并使本領(lǐng)域的普通技術(shù)人員能夠針對 具有適合于所考慮的特定用途的各種修改的各種實施例來理解本發(fā)明。
權(quán)利要求
1.一種存儲設(shè)備,包括用于選擇同余類的最近最少使用(LRU)犧牲成員的第一流水線路徑;用于通過將所述同余類的特定成員標(biāo)記為指令最近最常使用(I-MRU)成員來保護所述特定成員不被選擇為所述LRU犧牲成員的機制;以及在完成預(yù)設(shè)數(shù)量的逐出循環(huán)之后自動移除所述同余類的所述特定成員的I-MRU標(biāo)記而不必命中所述I-MRU成員的I-MRU時序邏輯。
2. 根據(jù)權(quán)利要求1所述的存儲設(shè)備,進一步包括 用于確定當(dāng)前正在處理的操作何時是指令獲取和對I-MRU成員的訪問中的一個的邏輯;以及當(dāng)所述當(dāng)前操作是指令獲取或?qū)-MRU成員的訪問中的一個時用于將所述操作所針對的成員選擇為將要受到I-MRU保護的 成員的邏輯;以及用于將所述I-MRU時序邏輯重新設(shè)置為預(yù)設(shè)的最大時間計數(shù) 的邏輯。
3. 根據(jù)權(quán)利要求2所述的存儲設(shè)備,進一步包括LRU狀態(tài)陣列內(nèi)的一組保護比特,所述保護比特具有表明所述同余 類中哪一個是所述預(yù)先選擇的成員的值;以及其中保護所述成員的機制進一步包括用于更新所述保護比特的值以指向所述特定成員的邏輯;以及 用于與對標(biāo)識所述LRU犧牲成員的LRU狀態(tài)比特進行流水線操作并發(fā)地對所述保護比特進行流水線操:作的邏輯。
4. 根據(jù)權(quán)利要求3所述的存儲設(shè)備,其中所述用于流水線操作的邏 輯包括用于向MRU更新邏輯提供所述保護比特的邏輯,所述MRU更新 邏輯確定了 (a)所述同余類的哪些成員被標(biāo)記為MRU以及(b)哪一個發(fā)布了標(biāo)識下一個犧牲成員的LRU狀態(tài)比特;以及用于并發(fā)地向所述MRU更新邏輯提供所述操作的屬性的邏輯,所 述屬性用于確定所述操作所針對的高速緩存行是否為要成為受保護成 員的指令行。
5. 根據(jù)權(quán)利要求3所述的存儲設(shè)備,進一步包括所述LRU狀態(tài)陣列內(nèi)的一組計數(shù)器比特,所述計數(shù)器比特用于跟 蹤從所述I-MRU時序邏輯的始設(shè)置到所述預(yù)設(shè)最大時間計數(shù)所經(jīng)過的 循環(huán)的數(shù)量;用于在每次循環(huán)之后減小所述計數(shù)器比特的值的邏輯; 用于確定所述計數(shù)器比特的值何時等于0的邏輯;以及 當(dāng)所述計數(shù)器比特的值等于0時,用于取消對所述預(yù)先選擇的成員 的選擇使其不再具有I-MRU保護狀態(tài)的邏輯,其中所述成員可用于由 所述最近最少使用(LRU)犧牲成員選擇過程進行選擇。
6. 根據(jù)權(quán)利要求3所述的存儲設(shè)備,進一步包括 線性反饋移位寄存器(LFSR),其跟蹤從所述I-MRU時序邏輯的所述初始設(shè)置到所述預(yù)設(shè)最大時間計數(shù)所經(jīng)過的循環(huán)的數(shù)量值;用于確定所述I-MRU成員何時被命中的命中/未命中確定邏輯;以及當(dāng)所述LFSR提供表明所述最大時間計數(shù)到期的真值輸出,以及所 述命中/未命中確定邏輯表明未命中所述I-MRU成員時,用于將所述 LRU狀態(tài)陣列的所述保護比特的零狀態(tài)偏置為0值使得在LRU犧牲選 擇期間由所述保護比特的所述零狀態(tài)標(biāo)識的任何成員都不被保護的邏輯。
7. 根據(jù)權(quán)利要求6所述的存儲設(shè)備,其中所述用于偏置所述零比特 的邏輯包括用于對于從所述保護比特解碼的多個向量比特的零狀態(tài)向 量比特將所述已解碼的比特行接地的裝置。
8. —種用于存儲組件中的方法,包括通過將同余類的特定成員標(biāo)記為指令最近最常使用(I-MRU)成員 來保護所述特定成員不被選擇為所述LRU犧牲成員;以及在完成預(yù)設(shè)數(shù)量的逐出循環(huán)之后自動移除所述同余類的所述特定成員的I-MRU標(biāo)記而不必命中所述I-MRU成員。
9. 根據(jù)權(quán)利要求8所述的方法,進一步包括 確定當(dāng)前正在處理的操作何時是指令獲取和對I-MRU成員的訪問中的一個;以及當(dāng)所述當(dāng)前操作是指令獲取或?qū)-MRU成員的訪問中的一個時將所述操作所針對的成員選擇為將要受到I-MRU保護的成 員;以及將所述I-MRU時序邏輯重新設(shè)置為預(yù)設(shè)的最大時間計數(shù)。
10. 根據(jù)權(quán)利要求9所述的方法,進一步包括從LRU狀態(tài)陣列內(nèi)接收一組保護比特,所述保護比特具有表明所 述同余類中哪一個是所述預(yù)先選擇的成員的值;沿LRU犧牲選擇流水線路徑與對標(biāo)識所述LRU犧牲成員的LRU 狀態(tài)比特進行流水線操作并發(fā)地對所述保護比特進行流水線操作;以及更新所述保護比特的值以指向所述特定成員。
11. 根據(jù)權(quán)利要求12所述的方法,進一步包括向MRU更新邏輯提供所述保護比特,所述MRU更新邏輯確定了 (a)所述同余類的哪些成員被標(biāo)記為MRU以及(b)哪一個發(fā)布了標(biāo) 識下一個犧牲成員的LRU狀態(tài)比特;以及并發(fā)地向所述MRU更新邏輯提供所述操作的屬性,所述屬性用于 確定所述操作所針對的高速緩存行是否為要成為受保護成員的指令行。
12. 根據(jù)權(quán)利要求7所述的方法,進一步包括從所述LRU狀態(tài)陣列內(nèi)接收一組計數(shù)器比特,所述計數(shù)器比特用 于跟蹤從所述I-MRU時序邏輯的初始設(shè)置到所述預(yù)設(shè)最大時間計數(shù)所 經(jīng)過的循環(huán)的數(shù)量;在每次循環(huán)之后減d 、所述計數(shù)器比特的值;確定所述計數(shù)器比特的值何時等于O;以及當(dāng)所述計數(shù)器比特的值等于0時,取消對所述預(yù)先選擇的成員的選 擇使其不再具有I-MRU保護狀態(tài),其中所述成員可用于由所述最近最少使用(LRU)犧牲成員選擇過程進行選擇。
13. 根據(jù)權(quán)利要求1所述的方法,進一步包括 從線性反饋移位寄存器(LFSR)接收輸入,所述LFSR跟蹤從所述I-MRU時序邏輯的所述初始設(shè)置到所述預(yù)設(shè)最大時間計數(shù)所經(jīng)過的循 環(huán)的數(shù)量值;收第二輸入;以及當(dāng)(a)所述LFSR提供表明所述最大時間計數(shù)到期的真值輸出,動將所述LRU狀態(tài)陣列的所述保護比特的零狀態(tài)偏置為0值,使得在 LRU犧牲選擇期間由所述保護比特的所述零狀態(tài)向量標(biāo)識的任何成員 都不被保護。
14. 根據(jù)權(quán)利要求13所述的方法,其中所述自動偏置所述零比特包 括對于從所述保護比特解碼的多個向量比特的零狀態(tài)向量比特將所述 已解碼的比特行接地。
15. —種計算機系統(tǒng),包括 處理器;以及存^f諸組件,其連接到所述處理器,并且具有用于選擇同余類的最近最少使用(LRU)犧牲成員的第一流水 線路徑;用于通過將所述同余類的特定成員標(biāo)記為指令最近最常使用 (I-MRU)成員來保護所述特定成員不被選擇為所述LRU犧牲成 員的機制;以及在完成預(yù)設(shè)數(shù)量的逐出循環(huán)之后自動移除所述同余類的所述 特定成員的I-MRU標(biāo)記而不必命中所述I-MRU成員的I-MRU時 序邏輯。
16. 根據(jù)權(quán)利要求15所述的計算機系統(tǒng),所述存儲組件進一步包括用于確定當(dāng)前正在處理的才乘作何時是指令獲取和對I-MRU成員的 訪問中的一個的邏輯;以及當(dāng)所述當(dāng)前操作是指令獲取或?qū)-MRU成員的訪問中的 一個時用于將所述操作所針對的成員選擇為將要受到I-MRU保護的 成員的邏輯;以及用于將所述I-MRU時序邏輯重新設(shè)置為預(yù)設(shè)的最大時間計數(shù) 的邏輯。
17. 根據(jù)權(quán)利要求16所述的計算機系統(tǒng),所述存儲組件進一步包括LRU狀態(tài)陣列內(nèi)的一組保護比特,所述保護比特具有表明所述同余 類中哪一個是所述預(yù)先選捧的成員的值;以及其中保護所述成員的機制進一步包括用于更新所述保護比特的值以指向所述特定成員的邏輯;以及 用于與對標(biāo)識所述LRU犧牲成員的LRU狀態(tài)比特進行流水線才喿作并發(fā)地對所述保護比特進行流水線操作的邏輯,其中所述用于流水線操作的邏輯包括用于向MRU更新邏輯提供所述保護比特的邏輯,所述 MRU更新邏輯確定了 (a)所述同余類的哪些成員被標(biāo)記為 MRU以及(b)哪一個發(fā)布了標(biāo)識下一個犧牲成員的LRU狀 態(tài)比特;以及用于并發(fā)地向所述MRU更新邏輯提供所述操作的屬性的 邏輯,所述屬性用于確定所述操作所針對的高速緩存行是否為 要成為受保護成員的指令行。
18. 根據(jù)權(quán)利要求15所述的計算機系統(tǒng),所述存儲組件進一步包括..所述LRU狀態(tài)陣列內(nèi)的一組計數(shù)器比特,所述計數(shù)器比特用于跟 蹤從所述I-MRU時序邏輯的初始設(shè)置到所述預(yù)設(shè)最大時間計數(shù)所經(jīng)過 的循環(huán)的數(shù)量;用于在每次循環(huán)之后減小所述計數(shù)器比特的值的邏輯; 用于確定所述計數(shù)器比特的值何時等于0的邏輯;以及 當(dāng)所述計數(shù)器比特的值等于0時,用于取消對所述預(yù)先選擇的成員 的選擇使其不再具有I-MRU保護狀態(tài)的邏輯,其中所述成員可用于由 所述最近最少使用(LRU)犧牲成員選擇過程進行選擇。
19. 根據(jù)權(quán)利要求15所述的計算機系統(tǒng),所述存儲組件進一步包括線性反饋移位寄存器(LFSR),其跟蹤從所述I-MRU時序邏輯的 所述初始設(shè)置到所述預(yù)設(shè)最大時間計數(shù)所經(jīng)過的循環(huán)的數(shù)量值;用于確定所述I-MRU成員何時被命中的命中/未命中確定邏輯;以及 當(dāng)所述LFSR提供表明所述最大時間計數(shù)到期的真值輸出,以及所 述命中/未命中確定邏輯表明未命中所述I-MRU成員時,用于將所述 LRU狀態(tài)陣列的所述保護比特的零狀態(tài)偏置為0值使得在LRU犧牲選 擇期間由所述保護比特的所述零狀態(tài)標(biāo)識的任何成員都不被保護的邏 輯。
20. 根據(jù)權(quán)利要求16所述的計算機系統(tǒng),其中所述用于偏置所述零 比特的邏輯包括用于對于從所述保護比特解碼的多個向量比特的零狀 態(tài)向量比特將所述已解碼的比特行接地的裝置。
全文摘要
本發(fā)明涉及一種在MRU分配期間采用軟I-MRU(最近最常使用)成員保護的方法和高速緩存系統(tǒng),其中所選擇的I-MRU成員(高速緩存行)只在有限數(shù)量的逐出循環(huán)內(nèi)受保護,除非該成員在該期間被更新/利用。對指令的更新或訪問重新啟動確定高速緩存行何時不再作為I-MRU受保護的倒計時。因此,只有經(jīng)常使用的指令行受保護,并且舊的I-MRU行因老化而到達(dá)高速緩存外。舊的I-MRU成員被逐出,使得同余類的所有成員可以用于數(shù)據(jù)。通過計數(shù)器或基于線性反饋移位寄存器(LFSR)而“趕出”I-MRU高速緩存行來完成I-MRU老化。調(diào)整LFSR使得I-MRU行在預(yù)設(shè)數(shù)量的逐出內(nèi)受保護。
文檔編號G06F12/12GK101158928SQ20071014655
公開日2008年4月9日 申請日期2007年8月21日 優(yōu)先權(quán)日2006年10月3日
發(fā)明者J·A·施蒂赫利, R·H·小貝爾 申請人:國際商業(yè)機器公司