專利名稱:低壓高速緩存的修復(fù)位的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高速緩存存儲(chǔ)器領(lǐng)域,具體來說,涉及對(duì)高速緩存陣 列中的單元的修復(fù)。
背景技術(shù):
通過允許各種大小和關(guān)聯(lián)性選擇來提供高速緩存的設(shè)計(jì)靈活性, 同時(shí)保持高速緩存找出/存儲(chǔ)所請(qǐng)求的元素的速度,&于于利用高速緩 存的體系結(jié)構(gòu)來說是非常有利的。但是,當(dāng)涉及半導(dǎo)體技術(shù)時(shí),功率 節(jié)省始終是一個(gè)普遍問題,它通常會(huì)導(dǎo)致限制性能或犧牲可靠性。
在涉及高速緩存陣列時(shí), 一種典型的節(jié)省功率的方法包括在比設(shè) 備的其余部分(如處理器、芯片集或其它集成電路)的電壓低的電壓 下運(yùn)行高速緩存陣列。然而,電壓越低,會(huì)使高速緩存陣列內(nèi)的單元 越易出現(xiàn)軟錯(cuò)誤,即出現(xiàn)導(dǎo)致錯(cuò)誤的位反轉(zhuǎn)。此外,高速緩存內(nèi)的單 元通常會(huì)因?yàn)樵O(shè)計(jì)、制造、或在制造事件之后^C久地?fù)p壞,這通常稱 為硬錯(cuò)誤。
傳統(tǒng)上,為了校正硬錯(cuò)誤,用備用行來替換包括硬錯(cuò)誤的高速緩 存行。與之相比,軟錯(cuò)誤通??梢酝ㄟ^高速緩存陣列所用的錯(cuò)誤校正
碼(ECC)來校正。ECC通常是指用于檢測(cè)并且可以潛在地找出以及 修補(bǔ)錯(cuò)誤的邏輯。作為一個(gè)實(shí)例,許多高速緩存陣列利用1位ECC 來校正每個(gè)字或高速緩存行的單個(gè)位錯(cuò)誤。
參照?qǐng)D1,示出現(xiàn)有技術(shù)的高速緩存100。通常,高速緩存存儲(chǔ) 器就是一個(gè)存儲(chǔ)器陣列;但是,它也可以在物理上組織成或在邏輯上 視為是具有多個(gè)行/字,如行106-113。此外,高速緩存的每一行中的 每個(gè)位或每組位都可以在邏輯上視為是形成一列,如列115、 116、 117
和118。假定高速緩存100包括1位ECC,則可以檢測(cè)和修補(bǔ)每行中 的單個(gè)錯(cuò)誤,如高速緩存行106中的位錯(cuò)誤130、高速緩存行109中 的位錯(cuò)誤131和高速緩存行111中的位錯(cuò)誤132。
但是,當(dāng)高速緩存100的電壓下降到低于臨界電壓時(shí),某些位會(huì) 開始發(fā)生故障。因此,為了確保高速緩存IOO中的可靠性,供應(yīng)給高 速緩存100的電壓只有在諸如高速緩存行113的行開始具有多個(gè)位錯(cuò) 誤(如位錯(cuò)誤120和125)之前才可能降低到臨界電壓。因此,為了 確??煽啃?,不會(huì)再進(jìn)一步降低電壓;但是,這是以犧牲功率節(jié)省為 代價(jià)的。
通過附圖中的各圖舉例而不是限制性地示出本發(fā)明。 圖1示出現(xiàn)有技術(shù)的高速緩存陣列的實(shí)施例。 圖2示出包括高速緩存、修復(fù)高速緩存和修復(fù)^t塊的處理器的實(shí) 施例。
圖3示出高速緩存陣列的物理組織和從邏輯角度看的組織的實(shí)施例。
圖4a示出用于修復(fù)高速緩存中的多個(gè)錯(cuò)誤的修復(fù)高速緩存的實(shí) 施例。
圖4b示出查找表的實(shí)施例。
圖5示出用于修復(fù)具有多個(gè)組和路的高速緩存陣列中的錯(cuò)誤的修
復(fù)高速緩存的實(shí)施例。
圖6a示出用于修復(fù)高速緩存單元的流程圖的實(shí)施例。
圖6b示出如圖6a所示的用于修復(fù)高速緩存單元的流程圖的特定
實(shí)施例。
圖7示出用于基于高速緩存中待修復(fù)的多個(gè)位的優(yōu)化配置來修復(fù) 高速》爰存中的位的流程圖的實(shí)施例。
具體實(shí)施例方式
在以下描述中,闡述了眾多特定細(xì)節(jié),如特定高速緩存組織、高 速緩存設(shè)置、高速緩存大小等的實(shí)例,以便充分理解本發(fā)明。但是, 本領(lǐng)域的技術(shù)人員將明白,無需釆用這些特定細(xì)節(jié)也可以實(shí)現(xiàn)本發(fā) 明。在其它情況下,沒有詳細(xì)示出熟知的元件或方法,如4f誤校正、 高速緩存設(shè)計(jì)和高速緩存接口等,以免不必要地使本發(fā)明晦澀難懂。
本文描述的方法和設(shè)備是用于修復(fù)高速緩存存儲(chǔ)器/陣列的。在 一個(gè)實(shí)施例中,在諸如微處理器、嵌入式處理器、單元處理器或其它 整數(shù)或浮點(diǎn)執(zhí)行設(shè)備的處理設(shè)備上實(shí)現(xiàn)高速緩存。但是,用于修復(fù)高 速緩存的方法和裝置不限于此,它們可以在任何集成電路設(shè)備上實(shí) 現(xiàn),或與任何集成電路裝置相關(guān)聯(lián)地實(shí)現(xiàn)。 處理器的實(shí)施例
圖2示出處理器200,它包括處理器邏輯220、高速緩存205、修 復(fù)高速緩存210和修復(fù)模塊215。處理器邏輯220可以包括用于執(zhí)行 指令或?qū)?shù)據(jù)進(jìn)行操作的任何邏輯。在一個(gè)實(shí)施例中,處理器邏輯220 包括用于亂序并行執(zhí)行整數(shù)和浮點(diǎn)數(shù)據(jù)的邏輯。作為另一個(gè)說明性實(shí) 例,處理器邏輯220包括用于與外部設(shè)備對(duì)接的接口邏輯、用于提取 和解碼數(shù)據(jù)或指令的前端邏輯、用于輔助指令的亂序執(zhí)行的亂序邏輯 和用于執(zhí)行指令和/或?qū)?shù)據(jù)進(jìn)行操作的至少 一個(gè)執(zhí)行單元。
高速緩存205包括與處理器200關(guān)聯(lián)的任何高速緩存存儲(chǔ)器陣 列,包括諸如一級(jí)高速緩存的低級(jí)高速緩存、諸如跟蹤高速緩存或二 級(jí)高速緩存的中級(jí)高速緩存、或諸如三級(jí)高速緩存的較高級(jí)高速緩 存。盡管圖中將高速緩存205、修復(fù)高速緩存210和修復(fù)模塊215示 為是位于處理器200中,^a每一個(gè)也可以集成在另一個(gè)內(nèi),同時(shí)也可 以位于處理器200之外。作為一個(gè)實(shí)例,在修復(fù)高速緩存210中實(shí)現(xiàn) 修復(fù)模塊215。諸如模塊215的任何模塊可以在硬件、軟件、固件或 其任意組合中實(shí)現(xiàn)。通常,在不同的實(shí)施例中,模塊邊界會(huì)有所變化, 并且可以共同或獨(dú)立地實(shí)現(xiàn)各個(gè)功能。修復(fù)高速緩存210用于根據(jù)修 復(fù)模塊215的判斷修復(fù)高速緩存205中的高速緩存單元。下文將參照 圖4a、 4b和5更詳細(xì)地論述修復(fù)高速緩存210和;f莫塊215。 高速緩存的物理和邏輯組織
轉(zhuǎn)到圖3,示出高速緩存陣列302的組織。通常,高速》爰存在物 理上組織成陣列。圖中將高速緩存陣列302示為是一維陣列;但是, 高速緩存可以是多維的,并且在物理上可以按任何方式組織。然而, 在邏輯上,高速緩存可以視為是具有多個(gè)組、路、行/字、歹'j、以及單 元/位。此外,高速緩存單元是指分解成高速緩存字/行的任何粒度。 例如,高速緩存單元包括單個(gè)位,或者在備選實(shí)施例中,是指位的分 組。高速緩存302包括用作數(shù)據(jù)或指令的中間存儲(chǔ)設(shè)備的任何類型的 存儲(chǔ)器,如隨機(jī)存取存儲(chǔ)器(RAM)設(shè)備或靜態(tài)RAM (SRAM)設(shè) 備。
傳統(tǒng)上,使用三種類型的高速緩存組織全關(guān)聯(lián)、k-路組關(guān)聯(lián)以 及直接映射高速緩存組織。在全關(guān)聯(lián)高速緩存中,在任何高速緩存項(xiàng) 中存儲(chǔ)主存儲(chǔ)器的任一行,這使得高速緩存比較變得復(fù)雜。在組關(guān)聯(lián) 高速緩存中,通常將高速緩存在邏輯上分解成多路,其中來自主存儲(chǔ) 器的單元存儲(chǔ)在每路內(nèi)的特定的預(yù)定單元中,由此簡化高速緩存查找 過程??捎糜诖鎯?chǔ)主存儲(chǔ)單元的每條路內(nèi)的單元通常在邏輯上集合在 一起并稱為組。直接映射高速緩存實(shí)際上是l路組關(guān)聯(lián)高速緩存,它 具有用于潛在地存儲(chǔ)具有共同尋址屬性的多個(gè)存儲(chǔ)單元的一個(gè)單元。
為了簡化對(duì)高速緩存內(nèi)的行和列的描述,假定陣列302可以在邏 輯上視為是具有高速緩存行/字305、 310和315的單個(gè)路。每個(gè)高速 緩存行305、 310和315具有多個(gè)位,如位306、 311和316。物理視 圖300示出在物理上組織成一維陣列的高速緩存行。邏輯視圖350示 出行和列配置,其中高速緩存行305、 310和315是行,并且這些高 速纟爰存行的相同位置中的每個(gè)位形成一列。作為實(shí)例,列320包括來 自高速緩存行305、 310和315的第一位306、 311和316。
作為另一個(gè)實(shí)例,陣列302在邏輯上組織成M行和N列。通常,
高速緩存具有任意整數(shù)數(shù)量的M行,并在每行中具有16的倍數(shù)的N 個(gè)位。但是,高速緩存不限于此,因?yàn)镸和N可以是任意正整數(shù)。 如上所述,高速緩存可以按照與如圖3所示的方式不同的方式在物理 上和邏輯上組織。實(shí)際上,圖5中示出并參照?qǐng)D5論述組關(guān)聯(lián)高速》爰 存的一個(gè)實(shí)例。 修復(fù)高速緩存的實(shí)施例
接下來轉(zhuǎn)到圖4a,示出高速緩存405和修復(fù)高速緩存430。高速 緩存405具有多個(gè)字406-413,這些字又稱為行、行或元素。如上所 述,參照?qǐng)D3,在它們的相應(yīng)字內(nèi)具有相同位置或偏移的字406-413 的每個(gè)位在邏輯上可以視為是列或在邏輯上組織成列。例如,列415 包括行406-413中的每一行內(nèi)的第一位,而列416包括行406-413的 第二位。
如圖所示,高速緩存405在例如單元421-423和426-429處包括 一些錯(cuò)誤。這些錯(cuò)誤可以是硬錯(cuò)誤、軟錯(cuò)誤、或硬錯(cuò)誤和軟錯(cuò)誤的組 合。硬錯(cuò)誤是其中位或高速緩存單元因某個(gè)制造、硬件或設(shè)計(jì)缺陷而 發(fā)生故障的錯(cuò)誤。軟錯(cuò)誤也可包括因制造缺陷引起的可預(yù)測(cè)的錯(cuò)誤和 不太可能兩次影響相同單元的隨機(jī)錯(cuò)誤,如由于低電壓供應(yīng)引起的位 的無限反轉(zhuǎn)。高速緩存405還描繪修復(fù)后的單元426、 427、 428和429。 修復(fù)后的單元426-429將參照修復(fù)高速緩存430進(jìn)行更詳細(xì)地論述。
盡管圖中將修復(fù)高速緩存430示為與高速緩存405分離并耦合到 高速緩存405,但修復(fù)高速緩存430不限于此。實(shí)際上,在一個(gè)實(shí)施 例中,是在高速緩存450中實(shí)現(xiàn)修復(fù)高速緩存430的。修復(fù)高速緩存 430包括多個(gè)"路"。與分解成組和路的高速緩存組織方案類似,修 復(fù)高速緩存430中的路包括映射到高速緩存405中的列的至少一個(gè)位 或單元。作為一個(gè)簡化的說明性實(shí)例,假定每條高速纟爰存行為128位 寬,則修復(fù)高速緩存430包括128路。還值得注意的是,修復(fù)高速緩 存430不需要具有與高速緩存405中的位數(shù)量相同的路。作為一個(gè)實(shí) 例,即使與修復(fù)高速緩存關(guān)聯(lián)的高速緩存具有128位的行寬,修復(fù)高
速緩存仍可包括64路。在該實(shí)例中,修復(fù)高速緩存的每一路與高速 緩存的兩列關(guān)聯(lián)或映射到高速緩存的兩列。在圖4a的實(shí)例中,修復(fù)高 速緩存430中的每一路具有1個(gè)位;但是,修復(fù)高速緩存430中的每 一路也可以包括多個(gè)位,稍后如圖5所示。 將修復(fù)路/位與高速緩存的列關(guān)聯(lián)
修復(fù)高速緩存430內(nèi)的路與高速緩存405中的從邏輯上可見的列 /垂直帶關(guān)聯(lián)。為簡單起見,圖4a示出修復(fù)高速緩存430中只具有一 個(gè)位的每一路,如包括位438的第一路和包括位436的第二路。位438 與高速緩存405的列415關(guān)聯(lián)。在一個(gè)實(shí)施例中,列415直接映射到 位438。因此,列415內(nèi)的錯(cuò)誤映射到位438并通過位438來修復(fù)。
在使用不同數(shù)量的路或每一路中使用多個(gè)位的實(shí)施例中,可以使 用其它熟知的映射技術(shù)和替4奐算法來將路與列關(guān)聯(lián)。在一個(gè)實(shí)例中, 使用上次使用或時(shí)間替換算法來選擇修復(fù)位用于修復(fù)高速緩存中的 錯(cuò)誤。下文將參照?qǐng)D5論述其它實(shí)例。
將修復(fù)位或修復(fù)路與高速緩存的在邏輯上可見的列關(guān)聯(lián)可以在 任何^^莫塊中實(shí)現(xiàn)。在一個(gè)實(shí)施例中,通過硬件來將修復(fù)位438與列415 關(guān)聯(lián),其中修復(fù)位438在物理上與引用列415的地址或地址的一部分 關(guān)聯(lián)。在另一個(gè)實(shí)施例中,通過硬件和軟件的組合來將^f務(wù)復(fù)位438與 歹'J415關(guān)聯(lián)。作為一個(gè)實(shí)例,使用引用列415中的單元的物理或虛擬 地址的特定位來將位438與列415關(guān)聯(lián)。因此,當(dāng)存在引用那些特定 位的訪問時(shí),使用正確的修復(fù)位438來修復(fù)該單元。作為另一個(gè)實(shí)例, 當(dāng)使用修復(fù)位438來修復(fù)列415中的單元(如修復(fù)后的單元428 )時(shí), 查找表將修復(fù)位438與單元列415和單元428關(guān)聯(lián)。 確定待修復(fù)的單元
諸如高速緩存405的高速緩存內(nèi)待修復(fù)的單元或位的確定或找出 (target)可以基于任何數(shù)量的因素或考慮因素。通常,在確定待修復(fù)的 單元或位時(shí),首先確定某個(gè)位或單元處是否存在錯(cuò)誤。上文論述的高 速緩存405示出具有諸如位421 、 422和423以及位426-429的錯(cuò)誤的
多個(gè)單元。如上所述,錯(cuò)誤421-423和426-429包括硬錯(cuò)誤、軟錯(cuò)誤 或硬錯(cuò)誤和軟錯(cuò)誤的組合。硬錯(cuò)誤相對(duì)易于檢測(cè),因?yàn)槟硞€(gè)硬件或制 造缺陷往往會(huì)始終如一地包含一個(gè)錯(cuò)誤。但是,軟錯(cuò)誤常常更難檢測(cè), 因?yàn)檫@一次位或單元有效,而到下一次訪問時(shí),就會(huì)存在錯(cuò)誤。當(dāng)供 應(yīng)給高速緩存的電壓降低到高速緩存單元的臨界電壓附近時(shí)尤其如 此,在臨界電壓附近,某些單元開始發(fā)生故障。
因此,最初確定單元或位是否具有錯(cuò)誤也可以基于多個(gè)因素。在 第一實(shí)施例中,將產(chǎn)生反轉(zhuǎn)位或錯(cuò)誤值的任何單元確定為是壞位或出 錯(cuò)位。在另一個(gè)實(shí)施例中,使用不那么剛性的策略來檢測(cè)和確定為故 障位。作為一個(gè)實(shí)例,使用預(yù)測(cè)故障分析來確定位是否出錯(cuò)。這里, 跟蹤位或單元發(fā)生故障的次數(shù),即位故障率。在發(fā)生預(yù)定次數(shù)的故障 或足夠高的故障率之后,確定該位為待修復(fù)的壞位或故障位。這潛在 地避免在過少或過多故障時(shí)將位標(biāo)記為故障位或錯(cuò)誤位??梢允褂闷?它熟知的錯(cuò)誤檢測(cè)方法來檢測(cè)和/或識(shí)別壞高速緩存單元,這里不再詳 細(xì)描述這些熟知的錯(cuò)誤檢測(cè)方法,以免使本發(fā)明晦澀難懂。
當(dāng)將諸如位421-423和426-429的多個(gè)位視為是出錯(cuò)或故障位時(shí), 則找出待修復(fù)的一個(gè)位或多個(gè)位。下文將參照?qǐng)D5更詳細(xì)地論述高速 緩存中位的修復(fù)。在一個(gè)實(shí)施例中,確定待修復(fù)的位的優(yōu)化配置。如 上所述,利用多種因素來確定待修復(fù)的位的優(yōu)化配置,這些因素如位 在字和列中的位置、位的故障率、位的故障率的預(yù)測(cè)分析、每個(gè)字中 的錯(cuò)誤數(shù)量、每個(gè)字中可校正的錯(cuò)誤數(shù)量、優(yōu)化每個(gè)字中的錯(cuò)誤校正 以及其它熟知的用于校正或修復(fù)高速緩存單元的考慮因素。在確定待 修復(fù)的位時(shí),可以個(gè)別或相互結(jié)合地考慮這些考慮因素中的每個(gè)因 素。
作為特定的說明性實(shí)例,假定高速緩存405實(shí)現(xiàn)單個(gè)位錯(cuò)誤校正 碼(ECC)。因此,ECC可以校正每個(gè)字或行中的l位。以前,在單 個(gè)高速緩存行中具有兩個(gè)壞位的部分(如高速緩存)會(huì)使這部分不能 再用,這是因?yàn)閱蝹€(gè)位校正ECC無法恢復(fù)正確的數(shù)據(jù)。但是,利用修
復(fù)高速緩存430,可以降低電壓,并修復(fù)每個(gè)字中更多的錯(cuò)誤。在該 實(shí)例中,高速緩存行409和413各具有三個(gè)位錯(cuò)誤。因此,為了將每 個(gè)高速緩存行中的錯(cuò)誤數(shù)量減少至可校正的量(在本實(shí)例中,因?yàn)閷?shí) 現(xiàn)1位ECC,所以為1個(gè)位),要修復(fù)高速緩存的行409和413中的 兩個(gè)位。注意,在列416中,用修復(fù)位436來修復(fù)位426而不是修復(fù) 位421?;诿總€(gè)字中的錯(cuò)誤數(shù)量和每個(gè)字中可校正的錯(cuò)誤數(shù)量找出 待修復(fù)的位426。具體來說,如果使用修復(fù)位436來修復(fù)位421,則 字409將具有三個(gè)錯(cuò)誤,其中只能修復(fù)一個(gè)位,即位427。因此,1 位ECC將不能校正兩個(gè)錯(cuò)誤,并且就無法訪問字409。
在備選方法中,如果高速緩存405實(shí)現(xiàn)多位校正ECC,如X位錯(cuò) 誤校正,則確定待修復(fù)的位的優(yōu)化配置以將高速緩存405的每個(gè)字中 的錯(cuò)誤數(shù)量減少至X個(gè)錯(cuò)誤。具體來說,如果實(shí)現(xiàn)2位校正ECC,則 優(yōu)化每個(gè)字中的錯(cuò)誤校正包括將每個(gè)字中的錯(cuò)誤數(shù)量減少至2個(gè)或更 少。然而,確定待修復(fù)的位也可以基于前述考慮因素釆用層級(jí)方式進(jìn) 行。在一個(gè)實(shí)施例中,第一級(jí)考慮因素是將高速緩存的每個(gè)字中的錯(cuò) 誤數(shù)量減少至兩個(gè)錯(cuò)誤。在第二級(jí),在修復(fù)兩個(gè)位之間存在同等選擇 的情形下,選擇基于其它次級(jí)因素。
為了說明,注意,列417中的位423或位429是待通過修復(fù)位439 來修復(fù)的候選位。在用修復(fù)位439來修復(fù)位429的所示實(shí)施例的備選 實(shí)施例中,修復(fù)位439改為修復(fù)位423。為了對(duì)此變化做出補(bǔ)償,用 修復(fù)位440來修復(fù)位441以使行413中只保留1位錯(cuò)誤。因此,為了 在位423和429之間選擇,使用諸如故障率的其它次級(jí)考慮因素來確 定要修復(fù)哪個(gè)位。為了進(jìn)一步說明該實(shí)例,假定位429發(fā)生20次(75% 的時(shí)間)故障,而位423發(fā)生5次(20%的時(shí)間)故障,則基于it丈障 次數(shù)或它們的故障率來選擇其中任何一個(gè)位為待修復(fù)。注意,不是每 個(gè)錯(cuò)誤或位都需要修復(fù)的,因?yàn)榭梢酝ㄟ^ECC校正的錯(cuò)誤的數(shù)量仍可 留下。
上述這些實(shí)施例和實(shí)例純粹是示例性的,這如以下事實(shí)證明,即
高速緩存405可以實(shí)現(xiàn)多位ECC或不需要實(shí)現(xiàn)任何級(jí)的ECC,并且 可以通過任何已知方法將位確定為壞/故障位或基于任何數(shù)量的因素 找出待修復(fù)的位。
盡管圖中描繪為位于修復(fù)高速緩存430中,但用于確定高速緩存 405內(nèi)待修復(fù)的位的模塊450也可以在高速緩存405、修復(fù)高速緩存 430、包括高速緩存405和修復(fù)高速緩存430的處理器、或其任意組 合中實(shí)現(xiàn)。模塊450包括用于確定高速緩存405內(nèi)待修復(fù)的位的任何 硬件、軟件、固件、代碼、電路或其組合。諸如模塊450的任何模塊 都可以在硬件、軟件、固件或其任意組合中實(shí)現(xiàn)。通常,在不同的實(shí) 施例中,模塊邊界會(huì)有所改變,并且各個(gè)功能可以一起或者獨(dú)立實(shí)現(xiàn)。 固件通常是指用于執(zhí)行某個(gè)功能的硬件和軟件/微代碼例行程序的組 合。
在模塊450的一個(gè)實(shí)施例中,使用包括ECC的高速緩存405中的 邏輯來確定哪些位發(fā)生了故障,而修復(fù)高速緩存430中的固件則跟蹤 這些位的故障次數(shù)和/或故障率并基于每個(gè)字中的錯(cuò)誤數(shù)量和故障率 找出待修復(fù)哪些位。在另一個(gè)實(shí)施例中,僅僅與修復(fù)高速緩存430關(guān) 聯(lián)的固件只確定高速緩存405中的待修復(fù)的位。
作為模塊450的另一個(gè)簡化的說明性實(shí)例,固件跟蹤高速緩存405 中的位故障。固件例行程序基于上述因素中的任何個(gè)別因素或因素組 合來根據(jù)算法確定待修復(fù)的位,這些因素如每個(gè)字中的錯(cuò)誤數(shù)量、每 個(gè)字中可校正的錯(cuò)誤數(shù)量、故障率和其它考慮因素。此外,固件存儲(chǔ) 用于將以下元素的任意組合彼此關(guān)聯(lián)的查找表待修復(fù)的高速纟岌存單 元/位、包括待修復(fù)的高速緩存單元/位的高速緩存行/字、修復(fù)單元/ 位、或包括待修復(fù)的高速緩存單元/位的高速緩存列。如下所論述,在 訪問高速緩存時(shí),查找表潛在地幫助修復(fù)高速緩存單元。 修復(fù)高速緩存單元
如上文參照?qǐng)D4a所示,修復(fù)高速緩存或修復(fù)沖莫塊(如修復(fù)高速緩 存430和修復(fù)模塊450 )用與高速緩存405中包括待修復(fù)的位的列關(guān)
聯(lián)的修復(fù)位(如修復(fù)位436-440)來修復(fù)諸如高速緩存405的高速緩 存中的位。用修復(fù)高速緩存430沖的位來修復(fù)高速緩存405中的位包 括用修復(fù)位來替換待修復(fù)的位;將待存儲(chǔ)在待修復(fù)的位中的值存儲(chǔ) 在修復(fù)位中;提供修復(fù)位的內(nèi)容以取代待修復(fù)的位;或以其它方式幫 助修復(fù)高速緩存中待修復(fù)的位。
在一個(gè)實(shí)施例中,使用修復(fù)位來修復(fù)高速鄉(xiāng)爰存中的位包括確定 對(duì)高速緩存的請(qǐng)求是否引用高速緩存中包括待修復(fù)的位的字;以及用 存儲(chǔ)在修復(fù)位中的邏輯信息來替換待從高速緩存的該位讀取的邏輯 信息。作為一個(gè)實(shí)例,假定修復(fù)位428被確定為是待修復(fù)的位。則將 位428的內(nèi)容復(fù)制到位438,或者在之前寫入到行413時(shí),將待存儲(chǔ) 在位428中的位存儲(chǔ)在位438中。因此,如果請(qǐng)求對(duì)行413的讀取, 則在完成該讀取時(shí),通過讀取值,即存儲(chǔ)在修復(fù)位438中的邏輯值, 來修復(fù)位428。從不同的角度看,因?yàn)閱卧?28被確定為是具有潛在 不正確信息的壞單元,所以請(qǐng)求讀取的設(shè)備從高速緩存405接收具有 來自修復(fù)單元438的位而不是具有存儲(chǔ)在單元428中的位的高速緩存 行413。
在另一個(gè)實(shí)施例中,使用修復(fù)位來修復(fù)高速緩存中的位包括確 定對(duì)高速緩存的請(qǐng)求是否引用高速緩存中包括待修復(fù)的位的字;以及 將待寫入到高速緩存的該位內(nèi)的邏輯信息寫V存儲(chǔ)到修復(fù)位。作為一 個(gè)實(shí)例,假定修復(fù)位426被確定為是待修復(fù)的位。因此,如果存在對(duì) 字409的寫入,則通過將待寫入到位426的值寫入到修復(fù)位436來修 復(fù)位426。從不同的角度看,設(shè)備寫入是寫入到高速緩存405中的字 409,并且待寫入到單元426的位是寫入到修復(fù)單元436。
由上文可見,從高速緩存405的角度看,修復(fù)高速緩存430可以 透明地工作,它也可以作為中間層不透明地工作。
在一個(gè)實(shí)施例中,修復(fù)高速纟岌存430和關(guān)聯(lián)的邏輯用作訪問高速 緩存405的設(shè)備和高速緩存405之間的中間層。在該實(shí)施例中,修復(fù) 高速緩存430將接收諸如讀取和寫入的所有請(qǐng)求,并在讀取和寫入操
作期間修復(fù)高速緩存單元。例如,如果設(shè)備請(qǐng)求從高速緩存405的行 413中讀取,則修復(fù)高速緩存430將截獲該請(qǐng)求,并在完成該請(qǐng)求時(shí), 通過用修復(fù)位438替換位428并用位439替換位429來向所請(qǐng)求的設(shè) 備提供高速緩存行413的內(nèi)容。
但是,用作中間層會(huì)潛在地減緩某些高速緩存訪問時(shí)間。例如, 在訪問高速緩存行406時(shí),不需要通過修復(fù)高速緩存430來修復(fù)任何 位,在此情況下,修復(fù)高速纟爰存沒有理由截獲和轉(zhuǎn)發(fā)該請(qǐng)求。
因此,在另一個(gè)實(shí)施例中,修復(fù)高速緩存430透明地修復(fù)高速緩 存405中的位。透明工作的修復(fù)高速緩存430通過與以上實(shí)例對(duì)比來 示出。在訪問高速緩存行413時(shí),修復(fù)高速緩存430查看請(qǐng)求所引用 的單元,而不是截獲和轉(zhuǎn)發(fā)該請(qǐng)求。如果請(qǐng)求是讀取并引用高速緩存 行413,則在完成該請(qǐng)求時(shí),從高速緩存405發(fā)送出高速緩存行413, 并且修復(fù)高速緩存430用修復(fù)位438來修復(fù)高速緩存單元428并用修 復(fù)位439來修復(fù)高速緩存單元439。由此可見,修復(fù)高速緩存430的 操作基本上對(duì)高速緩存405透明,因?yàn)楦咚倬彺?05在不受修復(fù)高速 緩存替換位428和429的影響下接收請(qǐng)求并完成該請(qǐng)求。此外,在寫 入到高速緩存行413時(shí),對(duì)于高速緩存405,寫入像它之前那樣繼續(xù), 因?yàn)樗兄刀紝懭氲礁咚倬彺?05中。但是,同時(shí)也將高速緩存單元 428和429的值寫入到修復(fù)單元438和439中。
如上所述,在一個(gè)實(shí)施例中,才莫塊450可以跟蹤將通過修復(fù)高速 緩存430中的修復(fù)位來修復(fù)高速緩存405中的哪個(gè)位。例如,在查找 表中,如在如圖4b所示的查找表460中,歹'j 465中所列的修復(fù)位與 它們要修復(fù)的高速緩存405中的位關(guān)聯(lián),高速緩存405中的這些位如 列470中的對(duì)應(yīng)項(xiàng)所列。因此,當(dāng)訪問引用包括單元428和429的高 速緩存行413時(shí),通過檢查查找表460,便能夠確定位428和429為 待修復(fù)的位。此外,表460包括關(guān)于將通過位438和439來修復(fù)它們 的信息。
但是,;漠塊450不限于如圖4b所示的查找表460的特定實(shí)現(xiàn)。
例如,除了列470中所列的位之外,或者取代列470中所列的位,查 找表可以包括對(duì)高速緩存行的地址的引用。在另一個(gè)實(shí)施例中,該表 包括修復(fù)高速緩存430中的所有修復(fù)位,并在將要修復(fù)位時(shí)設(shè)置標(biāo)志 位或?qū)懭雽?duì)應(yīng)的位單元。在備選方法中,如圖4b所示,只有在修復(fù) 位將要修復(fù)壞單元時(shí)才在表460中創(chuàng)建各項(xiàng)。
作為另 一個(gè)說明性實(shí)例,假定模塊450將高速緩存405中的位426 確定為是需要修復(fù)的位。還假定,因?yàn)镋CC已經(jīng)檢測(cè)并且固件已經(jīng)跟 蹤到位426具有高故障率,所以沖莫塊450確定要修復(fù)位426。此外, 包括位426的行409具有兩個(gè)其它錯(cuò)誤,并且只實(shí)現(xiàn)1位ECC。因此, 才莫塊450將高速緩存行409的起始地址和大小、位426的地址以及修 復(fù)位436的地址(因?yàn)樾迯?fù)位436與列416關(guān)聯(lián))存儲(chǔ)在表中。因此, 在訪問高速緩存行409時(shí),檢查該表,并確定引用高速緩存行409。 在完成該請(qǐng)求時(shí),模塊450用修復(fù)位436來修復(fù)位426,這是因?yàn)樵?表中它們與該高速緩存行關(guān)聯(lián)。作為修正,多個(gè)高速緩存單元和修復(fù) 位與多個(gè)高速緩存行關(guān)聯(lián)。
作為說明性實(shí)例,以上實(shí)例證明了修復(fù)模塊450和查找表460的 巨大的可能性。例如,通過硬件、軟件、固件或其組合,表460可以 將以下元素中的每個(gè)元素彼此關(guān)聯(lián)以幫助修復(fù)高速緩存單元待修復(fù) 的高速緩存單元/位、包括待修復(fù)的高速緩存單元/位的高速緩存行/字、 修復(fù)單元/位、或包括待修復(fù)的高速緩存單元/位的高速緩存列。還應(yīng) 注意,可以存儲(chǔ)待關(guān)聯(lián)的地址、地址引用、地址的若干部分或上述各 項(xiàng)的其它表示。
系統(tǒng)中的修復(fù)高速緩存的實(shí)施例
轉(zhuǎn)到圖5,示出具有耦合到存儲(chǔ)器561的微處理器505的系統(tǒng)。 盡管圖中沒有示出,但控制器集線器或其它集成電路/設(shè)備可以潛在地 耦合在存儲(chǔ)器561與微處理器505之間。微處理器505包括用于對(duì)數(shù) 據(jù)進(jìn)行操作和執(zhí)行指令的任何邏輯或才莫塊。如圖所示,微處理器505 包括高速緩存510和修復(fù)高速緩存550。微處理器505還可包括用于
執(zhí)行指令、對(duì)數(shù)據(jù)進(jìn)行操作或與外部設(shè)備進(jìn)行通信的其它處理邏輯。
在所示實(shí)例中,將高速緩存510示為是雙路組關(guān)聯(lián)高速緩存;但 是,高速緩存510可以組織成直接映射高速緩存、關(guān)聯(lián)高速緩存、全 關(guān)聯(lián)高速》爰存、組關(guān)聯(lián)高速緩存或路關(guān)聯(lián)高速緩存。通常,主存儲(chǔ)器 陣列561在邏輯上分解成多頁,如頁565-580。主存儲(chǔ)器561包括任 何存儲(chǔ)器組或陣列,如隨機(jī)存取存儲(chǔ)器(RAM)、靜態(tài)隨機(jī)存取存儲(chǔ) 器(SRAM)、動(dòng)態(tài)RAM (DRAM)或其它主存儲(chǔ)器設(shè)備。
主存儲(chǔ)地址566引用存儲(chǔ)器561的頁內(nèi)單元,如頁565內(nèi)的單元 566。在地址566內(nèi),某些位對(duì)于頁565內(nèi)的每個(gè)單元來說是相同的, 并且有些位指定頁565內(nèi)的單元566的偏移,即頁偏移值。地址566 的段567 (又稱為標(biāo)簽值)通常用于將單元566映射到高速緩存510 內(nèi)的一個(gè)組,如組540。實(shí)際上,頁565或者是頁565-580中的每一 頁中具有相同偏移的單元都可以通過段567映射到一個(gè)組。組540包 括地址單元566所映射到的第一路511中的高速緩存行和第二路512 中的高速緩存行。因此,在對(duì)主存儲(chǔ)單元566請(qǐng)求時(shí),高速緩存只需 檢查組540,以便查看存儲(chǔ)單元566的副本是否存在。高速緩存510 中的每一路都包括M個(gè)行,其中每一行包括N個(gè)位。在圖5中,M 和N分別示為是每路8行和每行7個(gè)位。
圖中將修復(fù)高速緩存550示為是耦合到高速緩存510。修復(fù)高速 纟爰存550包括14路,即高速纟爰存510的M行的N個(gè)位中的每一位對(duì) 應(yīng)1路,其中每一路與N個(gè)位中的至少一個(gè)位關(guān)聯(lián)。如上所述,在另 一個(gè)實(shí)施例中,利用7路來實(shí)現(xiàn)修復(fù)高速緩存,其中每一路具有兩個(gè) 位并映射到高速緩存510的兩列。但是,如圖所示,修復(fù)高速緩存550 包括14路,每一路具有兩個(gè)位并與高速緩存510的一列關(guān)聯(lián)。例如, 路555包括位556和位557,并與列541關(guān)聯(lián)。
在一個(gè)實(shí)施例中,高速緩存510實(shí)現(xiàn)ECC。作為說明性實(shí)例,高 速緩存510實(shí)現(xiàn)具有在高速緩存510的每行中校正兩個(gè)位的能力的2 位ECC。行521包括三個(gè)故障位,即位545-547,它們?nèi)紵o法通過2位ECC來校正。因此,使用與列541關(guān)聯(lián)的路555中的修復(fù)位556 來修復(fù)位545。此外,行522包括4個(gè)壞位。因此,使用路555中的 第二位(即修復(fù)位557 )來修復(fù)高速緩存單元548。
修復(fù)高速緩存550還包括修復(fù)模塊560。如上所述,修復(fù)模塊560 可以在修復(fù)高速緩存550、高速緩存510、微處理器505或其任意組 合中或之間實(shí)現(xiàn)。修復(fù)模塊560將每一路和修復(fù)位與高速緩存的列關(guān) 聯(lián)。在一個(gè)實(shí)施例中,路555直接映射到列541。在該實(shí)例中,將路 555直接映射到列541包括用路555中的修復(fù)位只修復(fù)列545中的位。 一個(gè)映射實(shí)例包括將識(shí)別列541中的位的地址的一部分與路555關(guān) 聯(lián),這可以通過比較邏輯、映射表、查找邏輯、或其它常見的關(guān)聯(lián)技 術(shù)來咒成。
修復(fù)模塊560還確定各列中待修復(fù)的位。如上所述,修復(fù)模塊560 基于優(yōu)化配置來選擇高速緩存510中待修復(fù)的位。在確定優(yōu)化配置和 待修復(fù)的位時(shí),可以考慮通過算法、軟件、硬件或其它機(jī)制的任何數(shù) 量的因素,如位故障率、每個(gè)高速緩存行中的錯(cuò)誤數(shù)量、每個(gè)高速緩 存行中可校正的錯(cuò)誤數(shù)量、實(shí)現(xiàn)的ECC類型、可用的修復(fù)位的數(shù)量、 修復(fù)列中的 一個(gè)位而不修復(fù)其它高速緩存行或列上的另 一個(gè)位的影 響、以及其它考慮因素。在一個(gè)實(shí)施例中,修復(fù)邏輯560基于上述因 素動(dòng)態(tài)地分析和重新確定待校正的位。
此外,修復(fù)才莢塊560修復(fù)經(jīng)確定要修復(fù)的位。如上所述,在對(duì)包 括壞位的高速緩存行進(jìn)行讀取時(shí),從修復(fù)位讀取與壞位所在的列關(guān)聯(lián) 的修復(fù)位,并在完成讀取請(qǐng)求時(shí)用該修復(fù)位來替換壞位。作為一個(gè)實(shí) 例,假定處理器505做出引用映射到組540的主存儲(chǔ)地址566的讀取 請(qǐng)求。高速緩存510在行521中包括主存儲(chǔ)單元566的副本。修復(fù)模 塊560確定要修復(fù)位545。作為一個(gè)說明性實(shí)例,假定,修復(fù)邏輯560 之前已經(jīng)確定位545是故障位,并在表中創(chuàng)建了一個(gè)項(xiàng)以形成將用修 復(fù)位557來修復(fù)壞位545的關(guān)聯(lián)。然后,從高速緩存510中讀出高速 緩存行521 ,并用存儲(chǔ)在修復(fù)位557中的值來替換來自壞位545的值。
最后,因?yàn)橛脕碜孕迯?fù)位557的有效信息替換了壞位545,所以微處 理器505從高速緩存510接收到主存儲(chǔ)單元566的有效副本。類似地, 在寫入到高速緩存510時(shí),將待寫入到壞單元545的值寫入到修復(fù)位 557。
修復(fù)高速緩存單元的實(shí)施例
接下來參照?qǐng)D6a,示出修復(fù)高速緩存單元的流程圖的實(shí)施例。在 方框605,接收訪問高速緩存的請(qǐng)求,其中該請(qǐng)求引用第一高速緩存 行。如上所述,請(qǐng)求可以用多種方式引用高速緩存行,這些方式包括 與該高速緩存行關(guān)聯(lián)的標(biāo)簽值、與該高速緩存行關(guān)聯(lián)的物理地址、與 該高速緩存行關(guān)聯(lián)的虛擬地址、復(fù)制到該高速緩存行的物理/虛擬主存 儲(chǔ)地址、或任何其它常見的引用高速緩存的字/行的方法。
接著,在方框610,確定該高速緩存行是否包含待修復(fù)的第一高 速緩存單元。在一個(gè)實(shí)施例中,使用查找才莫塊來確定該高速緩存行是 否包含待修復(fù)的第 一 高速緩存單元。當(dāng)確定要修復(fù)第 一 高速緩存單元 時(shí),創(chuàng)建或修改查找4莫塊中的項(xiàng)以便將修復(fù)單元與高速緩存單元和/ 或包含該高速緩存單元的高速緩存行關(guān)聯(lián)。因此,在訪問時(shí),檢查查 找模塊,以便查看第一高速緩存行是否包含待修復(fù)的第一單元。
在另 一個(gè)實(shí)施例中,使用多層查找才莫塊來首先確定該高速緩存行 是否包含任何待修復(fù)的單元。這可以通過在查找沖莫塊中列出對(duì)包括待 修復(fù)的單元的高速緩存行的引用來完成。如果沒有匹配的高速緩存 行,則不需要做進(jìn)一步的分析。如果列出/有匹配的高速緩存行,則確 定該高速緩存單元是否在第一高速緩存行內(nèi)或哪些高速緩存單元要 修復(fù)。這可以用多種方式來完成,例如在查找模塊中輸入信息或使用 地址比較來確定該高速緩存單元在高速緩存行的地址邊界內(nèi)。
可以使用其它機(jī)制和模塊來確定高速緩存行是否包括待修復(fù)的 第一高速緩存單元。例如,固件可以存儲(chǔ)對(duì)具有待修復(fù)的單元的高速 緩存行的引用。關(guān)于確定高速緩存行是否包含待修復(fù)的第一單元的更 多論述,請(qǐng)參照上文中的修復(fù)高速緩存單元的部分。
在方框615,如果第一高速緩存行包含待修復(fù)的第一高速緩存單
元,則在完成訪問高速緩存的請(qǐng)求時(shí),用與第一高速緩存單元關(guān)聯(lián)的 修復(fù)高速緩存單元來修復(fù)第一高速緩存單元。如上所述,第一高速緩 存單元可以通過包括查找表的^f莫塊來關(guān)聯(lián)。在一個(gè)實(shí)施例中,通過將 修復(fù)高速緩存單元映射到包括第一高速緩存單元的在邏輯上可見的 列來將第一高速緩存單元與修復(fù)高速緩存單元關(guān)聯(lián)。這里,將修復(fù)高 速緩存單元直接映射到高速緩存的列,并在確定要修復(fù)第一高速緩存 單元時(shí),使用直接映射到包括第一高速緩存單元的列的修復(fù)高速緩存單元。
轉(zhuǎn)到圖6b,示出用修復(fù)高速緩存單元來修復(fù)第一高速緩存單元的 流程圖的特定實(shí)施例。在方框616,在完成對(duì)高速緩存的寫入請(qǐng)求時(shí), 將待寫入到第 一 高速緩存單元的邏輯值透明地寫入到與第 一 高速緩 存單元關(guān)聯(lián)的修復(fù)高速緩存單元。 一個(gè)實(shí)例包括寫入到高速緩存行, 其中該高速緩存行具有第一壞位。從高速緩存的角度看,對(duì)高速緩存 行的寫入像正常一樣發(fā)生。但是,當(dāng)如在方框610那樣確定寫入是寫 入到包括壞位的高速緩存行時(shí),則也將待寫入到第一壞位的值寫入到 映射到包括第一壞位單元的高速纟復(fù)存的邏輯列的修復(fù)位。
在方框617,在完成從高速緩存讀取的請(qǐng)求時(shí),從與第一高速緩 存單元關(guān)聯(lián)的修復(fù)高速緩存單元讀取待從第一高速緩存單元讀取的 邏輯值。繼續(xù)上文的實(shí)例,在方框610,確定對(duì)高速緩存行的請(qǐng)求包 含第一壞位單元。從高速緩存的角度看,如完成正常請(qǐng)求一樣,讀取 高速緩存行,并由高速緩存提供該高速緩存行。但是,從修復(fù)位單元 讀取存儲(chǔ)在與第一壞位關(guān)聯(lián)的修復(fù)位中的值,并用該值替換來自笫一 壞位單元的值。因此,高速緩存正常工作,而為壞位存儲(chǔ)和讀出的數(shù) 據(jù)位于修復(fù)位中。從高速緩存的觀點(diǎn)看的這種視角是指寫^/存儲(chǔ)和讀 取/替換的透明度,就像高速緩存正常工作一樣。
轉(zhuǎn)到圖7,示出基于待修復(fù)的多個(gè)位的優(yōu)化配置來修復(fù)高速緩存 的流程圖的實(shí)施例。在方框705,確定待用修復(fù)高速緩存來修復(fù)的高
速緩存中的多個(gè)位的優(yōu)化配置。修復(fù)高速緩存包括直接映射到高速緩
存的每個(gè)邏輯垂直帶(stripe)/列的修復(fù)位。
如上所述,高速緩存可以具有任何數(shù)量的確定為壞位的位。因此, 要修復(fù)哪些位的選擇可以基于任何數(shù)量的因素做出。在一個(gè)實(shí)施例 中,為了選擇優(yōu)化配置,使用基于以下因素中的任何一個(gè)因素或任何 因素組合來選擇待修復(fù)的位的配置的算法位故障率,每個(gè)高速緩存 行中壞位的數(shù)量,每個(gè)高速緩存行中可校正的壞位數(shù)量,實(shí)現(xiàn)的ECC 類型,可用的修復(fù)位的數(shù)量,以及修復(fù)垂直帶中的一個(gè)位、而不修復(fù) 其它高速緩存行或列內(nèi)的另一個(gè)位的影響。
在一個(gè)實(shí)施例中,動(dòng)態(tài)地重新評(píng)估或動(dòng)態(tài)地確定位的優(yōu)化配置的 確定。例如,假定基于它的故障率和在具有其它壞位的行內(nèi)的位置而 確定要修復(fù)第一位。但是,如果在不同的時(shí)間情形發(fā)生變化,則可以 選擇要修復(fù)位于與第一位相同的垂直帶內(nèi)的另 一個(gè)位來取代修復(fù)第 一位。這允許修復(fù)高速緩存具有最大的靈活性來確保在變化的情形下 確定待修復(fù)的位的最佳配置。
接著,在方框710,在對(duì)高速緩存的訪問引用包含第一位的高速 緩存的字時(shí),修復(fù)經(jīng)確定待用直接映射到包含第 一位的邏輯垂直帶的 修復(fù)位來修復(fù)的高速緩存內(nèi)的多個(gè)位中的第一位。在一個(gè)實(shí)施例中, 修復(fù)多個(gè)位中的第一位包括如果引用包括第一位的字的對(duì)高速緩存 的訪問是寫操作,則將待存儲(chǔ)在第一位中的值寫入到修復(fù)位。在另一 個(gè)實(shí)例中,修復(fù)多個(gè)位中的第一位包括如果引用包括第一位的高速 緩存的字的對(duì)高速緩存的訪問是讀操作,則讀取存儲(chǔ)在修復(fù)位中的 值。
如上所示,可以使用修復(fù)高速緩存來增加在較低電壓下運(yùn)行的高 速緩存的效率和準(zhǔn)確度。以前,高速緩存無法將電源電壓降低到更低 的電壓極限,因?yàn)檫@會(huì)使每個(gè)高速緩存行中存在太多的無法通過ECC 校正的錯(cuò)誤。但是,通過包含修復(fù)高速緩存,可以修復(fù)高速緩存的每 個(gè)邏輯列中的錯(cuò)誤,從而允許降低所供應(yīng)的電壓,而不會(huì)犧牲通過
ECC校正的錯(cuò)誤的數(shù)量。另外,不是高速緩存內(nèi)的每個(gè)錯(cuò)誤都需要修
復(fù)。潛在地,通過與校正ECC配合使用,只需修復(fù)足以確保有效數(shù)據(jù) 的錯(cuò)誤。此外,被選擇要校正/修復(fù)的位可以隨著時(shí)間動(dòng)態(tài)地變化,以 選擇修復(fù)位的更優(yōu)化配置。因此,節(jié)省了功率,而不會(huì)犧牲高速緩存 的準(zhǔn)確度。
在以上說明中,參照具體示例性實(shí)施例給出了詳細(xì)描述。但是, 很明顯,在不偏離如隨附權(quán)利要求所述的本發(fā)明的更廣的精神和范圍 的前提下,可以對(duì)本發(fā)明做出各種修改和改變。因此,應(yīng)將說明書和 附圖視為是說明性意義而不是限制性意義。此外,上文使用的實(shí)施例 和其它示例性語言不一定是指相同的實(shí)施例或相同的實(shí)例,而是可以 指完全不同的實(shí)施例,也可以潛在地指相同的實(shí)施例。
權(quán)利要求
1. 一種裝置,包括具有多個(gè)字的高速緩存,所述高速緩存在邏輯上可見呈多個(gè)列;具有多個(gè)修復(fù)路的修復(fù)高速緩存,所述多個(gè)修復(fù)路中的每一修復(fù)路與所述多個(gè)列中的一個(gè)列關(guān)聯(lián);修復(fù)模塊,用于以所述多個(gè)修復(fù)路中的與包含第一位的第一列關(guān)聯(lián)的第一路中的修復(fù)位來修復(fù)第一位。
2. 如權(quán)利要求1所述的裝置,其中所述修復(fù)模塊動(dòng)態(tài)地確定待修 復(fù)的第一位,并且確定待修復(fù)的第一位基于優(yōu)化所述多個(gè)字中的每個(gè) 字的錯(cuò)誤校正。
3. 如權(quán)利要求2所述的裝置,其中所述高速緩存實(shí)現(xiàn)1位錯(cuò)誤校 正碼(ECC)。
4. 如權(quán)利要求2所述的裝置,其中所述高速緩存實(shí)現(xiàn)所述多個(gè)字 的每個(gè)字的多位錯(cuò)誤校正碼(ECC)。
5. 如權(quán)利要求2所述的裝置,其中確定待修復(fù)的第一位還基于第 一位的故障率。
6. 如權(quán)利要求1所述的裝置,其中所述多個(gè)修復(fù)路中的每一修復(fù) 路包含一個(gè)修復(fù)位,并且所述多個(gè)修復(fù)路的所述一個(gè)修復(fù)位直接映射 到所述多個(gè)列中的一個(gè)列。
7. 如權(quán)利要求1所述的裝置,其中所述多個(gè)修復(fù)路中的每一修復(fù) 路包含多個(gè)修復(fù)位,并且使用替換算法來選擇第一路中的修復(fù)位來修 復(fù)第一位。
8. 如權(quán)利要求1所述的裝置,其中利用所述多個(gè)修復(fù)路中的與第 一列關(guān)聯(lián)的第一路中的修復(fù)位來修復(fù)第一位包括確定高速緩存寫入是否引用所述多個(gè)字中的包含第 一位的高速 緩存字; 將待通過所述高速緩存寫入而寫入到笫 一位的邏輯信息寫入到 所述修復(fù)高速緩存中的修復(fù)位。
9. 如權(quán)利要求1所述的裝置,其中利用所述多個(gè)修復(fù)路中的與第 一列關(guān)聯(lián)的第一路中的修復(fù)位來修復(fù)第一位包括確定高速緩存讀取是否引用所述多個(gè)字中的包含第 一位的高速 緩存字;用來自所述修復(fù)高速緩存內(nèi)的修復(fù)位的邏輯信息來替換待從第 一位讀取的邏輯信息。
10. 如權(quán)利要求9所述的裝置,其中用來自所述修復(fù)高速緩存內(nèi) 的修復(fù)位的邏輯信息來替換邏輯信息對(duì)于所述高速緩存是透明的。
11. 一種裝置,包括在邏輯上組織成M行和N列的存儲(chǔ)器陣列;具有N個(gè)替換位的修復(fù)陣列,所述N個(gè)替換位中的每個(gè)替換位直 接映射到所述N列中的一列;以及模塊,在對(duì)包含第一位的行訪問時(shí),所述模塊找出所述N列的第 一列中的待修復(fù)的第一位并用所述N個(gè)替換位中的直接映射到第一 列的替換位來修復(fù)第一位。
12. 如權(quán)利要求11所述的裝置,其中M是正整數(shù),N是16的整 數(shù)倍。
13. 如權(quán)利要求11所述的裝置,其中所述存儲(chǔ)器陣列是高速緩存 存儲(chǔ)器,并且所述修復(fù)陣列是修復(fù)高速緩存。
14. 如權(quán)利要求13所述的裝置,還包括用于修補(bǔ)所述M行的每 行中的X個(gè)位的X位錯(cuò)誤校正碼(ECC)。
15. 如權(quán)利要求14所述的裝置,其中所述才莫塊基于用于將所述M 行中的每行的錯(cuò)誤數(shù)量減少至X個(gè)錯(cuò)誤的算法來找出第一位。
16. 如權(quán)利要求15所述的裝置,其中所述才莫塊基于用于將所述M 行中的每行的錯(cuò)誤數(shù)量減少至X個(gè)錯(cuò)誤的算法來動(dòng)態(tài)地重新找出第 一位。
17. —種系統(tǒng),包括 微處理器,所述微處理器包括具有多個(gè)行的高速緩存,其中所述高速緩存在邏輯上可見呈多個(gè)列;修復(fù)模塊,用于將修復(fù)位與所述多個(gè)列中的每一列關(guān)聯(lián), 確定所述多個(gè)列的第一列中的待修復(fù)的第一位,以及 在對(duì)包含第一位的行訪問時(shí),用與第一列關(guān)聯(lián)的修復(fù)位 來修復(fù)第一位;包括耦合到所述微處理器的多個(gè)元件的系統(tǒng)存儲(chǔ)器,其中所述高 速緩存用于存儲(chǔ)所述多個(gè)元件的內(nèi)容的本地副本。
18. 如權(quán)利要求17所述的系統(tǒng),其中所述微處理器能夠進(jìn)行并行 亂序的整數(shù)和浮點(diǎn)執(zhí)行。
19. 如權(quán)利要求17所述的系統(tǒng),其中所述高速緩存具有從由以下 高速緩存組成的組中選出的組織直接映射高速緩存、組關(guān)聯(lián)高速緩 存和全關(guān)聯(lián)高速緩存。
20. 如權(quán)利要求17所述的系統(tǒng),其中所述修復(fù)邏輯包括固件,并 且通過將修復(fù)位直接映射到所述多個(gè)列中的每一列來將修復(fù)位與所 述多個(gè)列中的每一列關(guān)聯(lián)。
21. 如權(quán)利要求17所述的系統(tǒng),其中確定所述多個(gè)列的第一列中 的待修復(fù)的第一位包括跟蹤第一位的故障率;確定在包含第 一位的行中的錯(cuò)誤數(shù)量;基于第 一位的故障率和包含第 一位的行中的錯(cuò)誤數(shù)量來確定待 修復(fù)的第一位。
22. 如權(quán)利要求17所述的系統(tǒng),其中在對(duì)包含第一位的行訪問時(shí) 用與第 一列關(guān)聯(lián)的修復(fù)位來修復(fù)第 一位包括如果對(duì)包含第一位的行的訪問是對(duì)包含第一位的行的寫入,則將 待存儲(chǔ)在第 一位中的值存儲(chǔ)到與第 一列關(guān)聯(lián)的修復(fù)位;如果對(duì)包含第 一位的行的訪問是從包含第 一位的行讀取,則用存 儲(chǔ)在與第一列關(guān)聯(lián)的修復(fù)位中的值來替換待從第一位寫出的值。
23. 如權(quán)利要求17所述的系統(tǒng),其中所述系統(tǒng)存儲(chǔ)器是從由隨機(jī) 存取存儲(chǔ)器(RAM)、雙倍數(shù)據(jù)速率(DDR)存儲(chǔ)器設(shè)備以及靜態(tài) RAM (SRAM)存儲(chǔ)器設(shè)備組成的組中選出的存儲(chǔ)器設(shè)備。
24. —種方法,包括接收訪問高速緩存的請(qǐng)求,所述請(qǐng)求引用第一高速緩存行;確定第一高速緩存行是否包含待修復(fù)的第一高速緩存單元;以及如果第一高速緩存行包含待修復(fù)的第一高速緩存單元,則在完成訪問所述高速緩存的請(qǐng)求時(shí),用與第一高速緩存單元關(guān)聯(lián)的修復(fù)高速緩存單元來修復(fù)第一高速i爰存單元。
25. 如權(quán)利要求24所述的方法,其中訪問所述高速緩存的請(qǐng)求是 對(duì)所述高速緩存的寫入,并且修復(fù)第一高速緩存單元包括在完成對(duì) 所述高速緩存的寫入時(shí),將待寫入到第 一高速緩存單元的邏輯值透明 地寫入到與第一高速緩存單元關(guān)聯(lián)的修復(fù)高速緩存單元。
26. 如權(quán)利要求24所述的方法,其中訪問所述高速緩存的請(qǐng)求是 從所述高速緩存讀取,并且修復(fù)第一高速緩存單元包括在完成從所 述高速緩存讀取時(shí),從與第一高速緩存單元關(guān)聯(lián)的修復(fù)高速緩存單元 透明地讀取待從第 一 高速緩存單元讀取的邏輯值。
27. 如權(quán)利要求24所述的方法,其中確定第一高速緩存行是否包 含待修復(fù)的第 一 高速緩存單元包括如果查找模塊沒有將第一高速緩存單元與第一高速緩存行關(guān)聯(lián), 則確定第 一 高速緩存行不包含待修復(fù)的笫 一 高速緩存單元;如果所述查找模塊將第一高速緩存單元與第一高速緩存行關(guān)聯(lián), 則確定第 一 高速緩存行包含待修復(fù)的第 一 高速緩存單元。
28. 如權(quán)利要求24所述的方法,其中將所述修復(fù)高速緩存單元與 第一高速緩存單元關(guān)聯(lián)包括將所述修復(fù)高速緩存單元直接映射到所 述高速緩存的包含第 一 高速緩存單元的列。
29. 如權(quán)利要求28所述的方法,其中第一高速緩存單元是第一 位,并且修復(fù)高速緩存單元是修復(fù)位。
30. 如權(quán)利要求29所述的方法,其中對(duì)第一高速緩存行的引用包 括用于識(shí)別所述高速緩存的第 一行的標(biāo)簽值。
31. 如權(quán)利要求24所述的方法,其中訪問所述高速緩存的請(qǐng)求是 對(duì)所述高速緩存的寫入,并且修復(fù)第一高速緩存單元包括在完成對(duì) 所述高速緩存的寫入時(shí),將待寫入到第一高速緩存單元的邏輯值透明 地寫入到與第 一 高速緩存單元關(guān)聯(lián)的修復(fù)高速緩存單元。
32. —種方法,包括確定待用修復(fù)高速緩存來修復(fù)的高速緩存中的多個(gè)位的優(yōu)化配 置,所述修復(fù)高速緩存包含直接映射到所述高速緩存的每個(gè)邏輯垂直 帶的修復(fù)位;以及在對(duì)所述高速緩存的訪問引用所述高速緩存的包含第 一位的字 時(shí),修復(fù)經(jīng)確定待用直接映射到包含第一位的邏輯垂直帶的修復(fù)位來 修復(fù)的所述高速緩存中的所述多個(gè)位的第 一位。
33. 如權(quán)利要求32所述的方法,其中確定待修復(fù)的高速緩存中的 多個(gè)位的優(yōu)化配置基于將所述高速緩存的每個(gè)字中的第 一錯(cuò)誤數(shù)量 減少至所述高速緩存的每個(gè)字中的可校正的錯(cuò)誤數(shù)量。
34. 如權(quán)利要求33所述的方法,其中所述高速緩存包括2位錯(cuò)誤 校正碼(ECC),并且所述高速緩存的每個(gè)字中的可校正的錯(cuò)誤數(shù)量 是2。
35. 如權(quán)利要求32所述的方法,其中確定待修復(fù)的高速緩存中的 多個(gè)位的優(yōu)化配置基于所述多個(gè)位的故障率。
36. 如權(quán)利要求32所述的方法,其中修復(fù)所述多個(gè)位中的第一位 包括如果引用包含第一位的字的對(duì)所述高速緩存的訪問是寫操作,則 將待存儲(chǔ)在第 一位中的值寫入到直接映射到包含第 一位的邏輯垂直 帶的修復(fù)位;如果引用包含第一位的所述高速緩存的字的對(duì)所述高速緩存的 訪問是讀操作,則讀取存儲(chǔ)在直接映射到包含第一位的邏輯垂直帶的 修復(fù)位中的值。
37.如權(quán)利要求32所述的方法,其中動(dòng)態(tài)地重新評(píng)估待修復(fù)的所 述多個(gè)位的優(yōu)化配置的確定。
全文摘要
本文描述用于修復(fù)高速緩存存儲(chǔ)器/陣列的方法和裝置。高速緩存包括多個(gè)行,并且在邏輯上可見呈多個(gè)列。耦合到該高速緩存的修復(fù)高速緩存包括映射到每個(gè)在邏輯上可見的列的修復(fù)位。修復(fù)模塊基于任何個(gè)別因素或因素組合來確定列中待修復(fù)的壞位,這些因素如高速緩存的每行中的錯(cuò)誤數(shù)量、高速緩存的每行中可以通過錯(cuò)誤校正碼(ECC)校正的錯(cuò)誤數(shù)量、位故障率或其它考慮因素。在訪問包括壞位的高速緩存行時(shí),通過映射到包括壞位的列的修復(fù)位來透明地修復(fù)壞位。
文檔編號(hào)G11C29/00GK101379566SQ200680049881
公開日2009年3月4日 申請(qǐng)日期2006年12月14日 優(yōu)先權(quán)日2005年12月30日
發(fā)明者J·A·邁斯, M·J·德姆普塞 申請(qǐng)人:英特爾公司