自修復(fù)存儲(chǔ)器的制造方法
【專利摘要】存儲(chǔ)陣列具有包括多個(gè)存儲(chǔ)字的多行。多個(gè)第一位中的每個(gè)第一位都與每行的存儲(chǔ)字相關(guān)。每個(gè)第一位的狀態(tài)都指示相關(guān)存儲(chǔ)字是否存在錯(cuò)誤。多個(gè)冗余行中的每個(gè)冗余行都包括多個(gè)冗余字。每個(gè)冗余字都與存儲(chǔ)字相關(guān)。校正數(shù)據(jù)高速緩存具有:至少一個(gè)修復(fù)字(repair?word),被配置成存儲(chǔ)校正數(shù)據(jù);以及至少一個(gè)狀態(tài)位,與至少一個(gè)修復(fù)字相關(guān)聯(lián),狀態(tài)位指示存儲(chǔ)在修復(fù)字中的校正數(shù)據(jù)是否是待處理的修復(fù)。校正數(shù)據(jù)高速緩存被配置成將存儲(chǔ)在修復(fù)字中的校正數(shù)據(jù)寫入到相應(yīng)的存儲(chǔ)字和相應(yīng)的冗余字中的至少一個(gè)中。本發(fā)明還提供了自修復(fù)存儲(chǔ)器。
【專利說(shuō)明】自修復(fù)存儲(chǔ)器
[0001]相關(guān)申請(qǐng)的交叉參考
[0002]本申請(qǐng)要求于2012年6月29日提交的美國(guó)臨時(shí)申請(qǐng)第61/666,771號(hào)的優(yōu)先權(quán)并且是于2012年2月17日提交的美國(guó)申請(qǐng)第13/399,993號(hào)的部分繼續(xù)案,美國(guó)申請(qǐng)第13/399,993號(hào)又是于2010年8月3日提交的美國(guó)申請(qǐng)第12/849,157號(hào)的部分繼續(xù)案,并且美國(guó)申請(qǐng)第12/849,157號(hào)又要求于2009年8月12日提交的美國(guó)臨時(shí)申請(qǐng)第61/233,387號(hào)的優(yōu)先權(quán),其全部結(jié)合于此作為參考。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明一般地涉及半導(dǎo)體【技術(shù)領(lǐng)域】,更具體地來(lái)說(shuō),涉及存儲(chǔ)器。
【背景技術(shù)】
[0004]在一些情況下,從存儲(chǔ)陣列所讀取的信息包括錯(cuò)誤。一些錯(cuò)誤是存儲(chǔ)陣列的電路中的缺陷所產(chǎn)生結(jié)果。一些錯(cuò)誤是在信號(hào)處理期間發(fā)生的隨機(jī)結(jié)果。在任一種情況下,為了使用存儲(chǔ)陣列的組件適當(dāng)?shù)匕l(fā)揮作用,必須校正錯(cuò)誤。在一些現(xiàn)有方法中,當(dāng)在嵌入式存儲(chǔ)器的存儲(chǔ)位置處發(fā)生錯(cuò)誤時(shí),諸如系統(tǒng)工程師的人需要通過(guò)一些處理來(lái)修復(fù)錯(cuò)誤。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)中所存在的缺陷,根據(jù)本發(fā)明的一方面,提供了一種存儲(chǔ)器,包括:存儲(chǔ)陣列,具有多行,所述存儲(chǔ)陣列的所述多行中的每行都包括多個(gè)存儲(chǔ)字;多個(gè)第一位,所述多個(gè)第一位中的每個(gè)第一位都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的存儲(chǔ)字相關(guān)聯(lián),其中,每個(gè)第一位的邏輯狀態(tài)都指示與所述每個(gè)第一位相關(guān)聯(lián)的存儲(chǔ)字是否存在故障位;多個(gè)冗余行,所述多個(gè)冗余行中的每個(gè)冗余行都包括多個(gè)冗余字,所述多個(gè)冗余字中的每個(gè)冗余字都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的相應(yīng)存儲(chǔ)字相關(guān)聯(lián);以及校正數(shù)據(jù)高速緩存,具有被配置成存儲(chǔ)校正數(shù)據(jù)的至少一個(gè)修復(fù)字和與所述至少一個(gè)修復(fù)字相關(guān)聯(lián)的至少一個(gè)狀態(tài)位,所述狀態(tài)位指示存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)是否是待處理的修復(fù),所述校正數(shù)據(jù)高速緩存被配置成將存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)寫入到相應(yīng)的(counterpart)存儲(chǔ)字和相應(yīng)的冗余字的至少一個(gè)中。
[0006]該存儲(chǔ)器進(jìn)一步包括:
[0007]自修復(fù)地址比較器,被配置成將與所述校正數(shù)據(jù)相關(guān)聯(lián)的地址和要訪問(wèn)的地址進(jìn)行比較。
[0008]該存儲(chǔ)器進(jìn)一步包括:高速緩存堆棧計(jì)數(shù)器,被配置成監(jiān)控所述校正數(shù)據(jù)高速緩存中的待處理的修復(fù)的數(shù)量。
[0009]在該存儲(chǔ)器中,所述校正數(shù)據(jù)高速緩存被配置成具有在每兆字節(jié)(MB)存儲(chǔ)陣列中具有I個(gè)至4個(gè)待處理的修復(fù)的最大數(shù)量。
[0010]該存儲(chǔ)器進(jìn)一步包括:字邏輯引擎,被配置成處理所述存儲(chǔ)陣列的一行的所述多個(gè)存儲(chǔ)字中的每個(gè)存儲(chǔ)字;以及位-標(biāo)簽邏輯引擎,被配置成處理與要處理的所述多個(gè)存儲(chǔ)字中的每個(gè)存儲(chǔ)字相關(guān)聯(lián)的每個(gè)第一位。
[0011]該存儲(chǔ)器進(jìn)一步包括:錯(cuò)誤校正引擎,被配置成基于與所述每個(gè)第一位相關(guān)聯(lián)的存儲(chǔ)字中的錯(cuò)誤改變所述每個(gè)第一位的狀態(tài),并且將具有改變的位的存儲(chǔ)字寫入所述校正數(shù)據(jù)高速緩存中作為所述校正數(shù)據(jù);和/或基于與每個(gè)第二位相關(guān)聯(lián)的冗余字中的錯(cuò)誤改變所述每個(gè)第二位的狀態(tài),并且將具有改變的位的冗余字寫入所述校正數(shù)據(jù)高速緩存中作為所述校正數(shù)據(jù)。
[0012]該存儲(chǔ)器進(jìn)一步包括:錯(cuò)誤校正引擎,被配置成基于所述每個(gè)第一位的狀態(tài)和與所述每個(gè)第一位相關(guān)聯(lián)的存儲(chǔ)字中的錯(cuò)誤生成錯(cuò)誤-修復(fù)標(biāo)記;和/或基于每個(gè)第二位的狀態(tài)和與所述每個(gè)第二位相關(guān)聯(lián)的冗余字中的錯(cuò)誤生成錯(cuò)誤-修復(fù)標(biāo)記。
[0013]根據(jù)本發(fā)明的另一方面,提供了一種計(jì)算裝置,包括:處理器;以及存儲(chǔ)器宏,連接至所述處理器,包括:存儲(chǔ)陣列,具有多行,所述存儲(chǔ)陣列的所述多行中的每行都包括多個(gè)存儲(chǔ)字;多個(gè)第一位,所述多個(gè)第一位中的每個(gè)第一位都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的存儲(chǔ)字相關(guān)聯(lián),其中,每個(gè)第一位的邏輯狀態(tài)都指示與所述每個(gè)第一位相關(guān)聯(lián)的所述存儲(chǔ)字是否存在故障位;多個(gè)冗余行,所述多個(gè)冗余行中的每個(gè)冗余行都包括多個(gè)冗余字,所述多個(gè)冗余字中的每個(gè)冗余字都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的相應(yīng)存儲(chǔ)字相關(guān)聯(lián);以及校正數(shù)據(jù)高速緩存,具有被配置成存儲(chǔ)校正數(shù)據(jù)的至少一個(gè)修復(fù)字和與所述至少一個(gè)修復(fù)字相關(guān)聯(lián)的至少一個(gè)狀態(tài)位,所述狀態(tài)位指示存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)是否是待處理的修復(fù),所述校正數(shù)據(jù)高速緩存被配置成將存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)寫入相應(yīng)的存儲(chǔ)字和相應(yīng)的冗余字中的至少一個(gè)中。
[0014]該計(jì)算裝置進(jìn)一步包括:自修復(fù)地址比較器,被配置成將與所述校正數(shù)據(jù)相關(guān)聯(lián)的地址和要訪問(wèn)的地址進(jìn)行比較。
[0015]該計(jì)算裝置進(jìn)一步包括:高速緩存堆棧計(jì)數(shù)器,被配置成監(jiān)控所述校正數(shù)據(jù)高速緩存中的待處理的修復(fù)的數(shù)量。
[0016]在該計(jì)算裝置中,所述校正數(shù)據(jù)高速緩存被配置成具有在每兆字節(jié)(MB)存儲(chǔ)陣列中具有I個(gè)至4個(gè)待處理的修復(fù)的最大數(shù)量。
[0017]該計(jì)算裝置進(jìn)一步包括:字邏輯引擎,被配置成處理所述存儲(chǔ)陣列的一行的所述多個(gè)存儲(chǔ)字中的每個(gè)存儲(chǔ)字;以及位-標(biāo)簽邏輯引擎,被配置成處理與要處理的所述多個(gè)存儲(chǔ)字中的每個(gè)存儲(chǔ)字相關(guān)聯(lián)的每個(gè)第一位。
[0018]該計(jì)算裝置,進(jìn)一步包括:錯(cuò)誤校正引擎,被配置成:基于與所述每個(gè)第一位相關(guān)聯(lián)的所述存儲(chǔ)字中的錯(cuò)誤改變所述每個(gè)第一位的狀態(tài),并且將具有改變的位的存儲(chǔ)字寫入所述校正數(shù)據(jù)高速緩存中作為所述校正數(shù)據(jù);和/或基于與每個(gè)第二位相關(guān)聯(lián)的所述冗余字中的錯(cuò)誤改變所述每個(gè)第二位的狀態(tài),并且將具有改變的位的冗余字寫入所述校正數(shù)據(jù)高速緩存中作為所述校正數(shù)據(jù)。
[0019]該計(jì)算裝置進(jìn)一步包括:錯(cuò)誤校正引擎,被配置成:基于所述每個(gè)第一位的狀態(tài)和與所述每個(gè)第一位相關(guān)聯(lián)的存儲(chǔ)字中的錯(cuò)誤,生成錯(cuò)誤-修復(fù)標(biāo)記;和/或基于每個(gè)第二位的狀態(tài)和與所述每個(gè)第二位相關(guān)聯(lián)的存儲(chǔ)字中的錯(cuò)誤,生成所述錯(cuò)誤-修復(fù)標(biāo)記。
[0020]根據(jù)本發(fā)明的又一方面,提供了一種操作存儲(chǔ)器的方法,所述方法包括:檢測(cè)在訪問(wèn)存儲(chǔ)陣列中的地址期間發(fā)生的錯(cuò)誤;校正與檢測(cè)到的錯(cuò)誤相對(duì)應(yīng)的數(shù)據(jù);將校正數(shù)據(jù)存儲(chǔ)在校正數(shù)據(jù)高速緩存中;使所述校正數(shù)據(jù)與所述存儲(chǔ)陣列中的所述地址相關(guān)聯(lián);將所述校正數(shù)據(jù)輸出到所述存儲(chǔ)器外部的電路;確定所述錯(cuò)誤是硬錯(cuò)誤還是軟錯(cuò)誤;以及如果所述錯(cuò)誤是軟錯(cuò)誤,則將存儲(chǔ)在所述校正數(shù)據(jù)高速緩存中的所述校正數(shù)據(jù)寫回到所述存儲(chǔ)陣列中。
[0021]該方法進(jìn)一步包括:在將所述校正數(shù)據(jù)存儲(chǔ)在所述校正數(shù)據(jù)高速緩存中之后,檢驗(yàn)所述校正數(shù)據(jù)高速緩存的容量狀態(tài);以及當(dāng)存儲(chǔ)在所述校正數(shù)據(jù)高速緩存中的校正數(shù)據(jù)的數(shù)量超過(guò)閾值時(shí),輸出信號(hào)。
[0022]該方法進(jìn)一步包括:如果所述錯(cuò)誤是硬錯(cuò)誤,則將所述校正數(shù)據(jù)寫回到冗余存儲(chǔ)器中;以及使所述存儲(chǔ)陣列中的所述地址與所述冗余存儲(chǔ)器中的所述校正數(shù)據(jù)的地址相關(guān)聯(lián)。
[0023]該方法進(jìn)一步包括:如果所述錯(cuò)誤是硬錯(cuò)誤,則將所述校正數(shù)據(jù)永久地存儲(chǔ)在所述校正數(shù)據(jù)高速緩存中;以及將所述地址的隨后訪問(wèn)引導(dǎo)至存儲(chǔ)在所述校正數(shù)據(jù)高速緩存中的所述校正數(shù)據(jù)。
[0024]在該方法中,將所述數(shù)據(jù)寫回到所述存儲(chǔ)陣列中包括:執(zhí)行隱式寫入操作。
[0025]在該方法中,將所述數(shù)據(jù)寫回到所述存儲(chǔ)陣列中包括:在外部電路不訪問(wèn)所述存儲(chǔ)陣列的周期內(nèi),寫回到所述存儲(chǔ)陣列中。
【專利附圖】
【附圖說(shuō)明】
[0026]在以下附圖和說(shuō)明書中闡述了本發(fā)明的一個(gè)或多個(gè)實(shí)施例的細(xì)節(jié)。通過(guò)說(shuō)明書、附圖和權(quán)利要求應(yīng)該理解其他特征和優(yōu)點(diǎn)。
[0027]圖1是根據(jù)一些實(shí)施例的具有存儲(chǔ)器宏的系統(tǒng)的框圖。
[0028]圖2是根據(jù)一些實(shí)施例的存儲(chǔ)器宏的框圖。
[0029]圖3是根據(jù)一些實(shí)施例修復(fù)存儲(chǔ)器宏中的存儲(chǔ)器故障的方法的流程圖。
[0030]圖4至圖9是根據(jù)一些實(shí)施例處于各個(gè)操作階段的存儲(chǔ)器宏的框圖。
[0031]多個(gè)附圖中的類似參考標(biāo)號(hào)指示類似元件。
【具體實(shí)施方式】
[0032]以下使用特定語(yǔ)言公開(kāi)了附圖所示的實(shí)施例或?qū)嵗H欢?,?yīng)該理解,實(shí)施例和實(shí)例不用于進(jìn)行限定。對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),如通常發(fā)生的所公開(kāi)的實(shí)施例中的任何更改和修改、以及本文檔中公開(kāi)的原理的任何進(jìn)一步的應(yīng)用都在預(yù)期的范圍內(nèi)。
[0033]一些實(shí)施例具有以下特征和/或優(yōu)點(diǎn)中的一個(gè)或組合。在一些實(shí)施例中,動(dòng)態(tài)地(on-the-fly)執(zhí)行用于硬錯(cuò)誤或軟錯(cuò)誤的存儲(chǔ)器自修復(fù)處理,并且在硬錯(cuò)誤或軟錯(cuò)誤的識(shí)別之后但是在存儲(chǔ)器自修復(fù)處理的完成之前,存儲(chǔ)器適用于執(zhí)行一個(gè)或多個(gè)隨后存儲(chǔ)器訪問(wèn)操作。在一些實(shí)施例中,在自修復(fù)處理期間不使用外部存儲(chǔ)器。在一些實(shí)施例中,存儲(chǔ)器自修復(fù)在無(wú)操作(NOP)指令周期內(nèi)完成。在一些實(shí)施例中,在NOP指令的系統(tǒng)執(zhí)行期間執(zhí)行自修復(fù)。在一些實(shí)施例中,在系統(tǒng)讀取、寫入或刷新功能期間執(zhí)行自修復(fù)。結(jié)果,存儲(chǔ)器自修復(fù)沒(méi)有使用額外的外部系統(tǒng)操作。
[0034]示例件系統(tǒng)[0035]圖1是根據(jù)一些實(shí)施例的系統(tǒng)100的框圖。系統(tǒng)100包括:芯片上系統(tǒng)(SoC)120和SoC120外部的專用集成電路(ASIC)。在一些實(shí)施例中,系統(tǒng)100還包括在圖1中未示出的其他電部件。在一些實(shí)施例中,系統(tǒng)100用作網(wǎng)絡(luò)路由器、網(wǎng)絡(luò)交換機(jī)、移動(dòng)設(shè)備、計(jì)算機(jī)或計(jì)算機(jī)子系統(tǒng)。
[0036]SoC120包括處理器122和存儲(chǔ)器宏(memory macro) 126。在一些實(shí)施例中,處理器122是中央處理單元(CPU)、數(shù)字信號(hào)處理器(DSP)或被配置成執(zhí)行一個(gè)或多個(gè)預(yù)定任務(wù)的核心邏輯電路。在一些實(shí)施例中,存儲(chǔ)器宏126是存儲(chǔ)單元,該存儲(chǔ)單元包括諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)或靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)的易失性存儲(chǔ)設(shè)備、諸如閃存的非易失性存儲(chǔ)設(shè)備、一次編程(OTP)存儲(chǔ)器、多次編程(MTP)存儲(chǔ)器或它們的組合。在一些實(shí)施例中,SoC120進(jìn)一步包括輸入-輸出(IO)控制器、網(wǎng)絡(luò)接口或一個(gè)或多個(gè)數(shù)字或模擬電路。
[0037]ASIC130包括專用設(shè)計(jì),在一些實(shí)施例中,ASIC130包括網(wǎng)絡(luò)處理單元(NPU)、電源管理單元、編碼/解碼單元等。在一些實(shí)施例中,省略ASIC130。
[0038]存儲(chǔ)器宏
[0039]圖2是根據(jù)一些實(shí)施例的存儲(chǔ)器宏200的框圖。在一些實(shí)施例中,存儲(chǔ)器宏200可用作圖1中的存儲(chǔ)器宏126。存儲(chǔ)器宏200包括:存儲(chǔ)單元210、連接至存儲(chǔ)單元的錯(cuò)誤校正碼(ECC)引擎220、連接至ECC引擎的校正數(shù)據(jù)高速緩存230、連接至ECC引擎和校正數(shù)據(jù)高速緩存的自修復(fù)單元240、連接至自修復(fù)單元的全局控制邏輯250以及連接至全局控制邏輯和自修復(fù)單元的局部控制邏輯260。
[0040]全局控制邏輯250和局部控制邏輯260共同管理和控制存儲(chǔ)器宏210的操作。例如,全局控制邏輯250通過(guò)接口 272從諸如處理器122的存儲(chǔ)器宏200外部的電路接收命令和地址信息。然后,全局控制邏輯250將地址信息和/或命令發(fā)送至局部控制邏輯260和自修復(fù)單元240,以用于根據(jù)本發(fā)明進(jìn)行進(jìn)一步處理。
[0041]存儲(chǔ)單元210包括:存儲(chǔ)陣列212、錯(cuò)誤-標(biāo)簽(ET)存儲(chǔ)器214、冗余存儲(chǔ)器216以及ET冗余存儲(chǔ)器218。存儲(chǔ)陣列212和冗余存儲(chǔ)器216包括布置為行和列的存儲(chǔ)單元并且被用于存儲(chǔ)多行用戶數(shù)據(jù)。ET存儲(chǔ)器214和ET冗余存儲(chǔ)器218被用于存儲(chǔ)相應(yīng)行的用戶數(shù)據(jù)的錯(cuò)誤-標(biāo)簽信息。在一些實(shí)施例中,通過(guò)奇偶校驗(yàn)位和/或ECC編碼來(lái)保護(hù)用戶數(shù)據(jù)和錯(cuò)誤-標(biāo)簽信息。在一些實(shí)施例中,存儲(chǔ)陣列212包括多于一組存儲(chǔ)陣列和/或其相應(yīng)的ET存儲(chǔ)器214。在一些實(shí)施例中,存儲(chǔ)陣列212進(jìn)一步包括讀出放大器、字線、位線
坐寸ο
[0042]冗余存儲(chǔ)器216包括用于修復(fù)存儲(chǔ)陣列212和/或冗余存儲(chǔ)器216中的錯(cuò)誤存儲(chǔ)單元。一些應(yīng)用中的冗余存儲(chǔ)器216還被稱為行冗余存儲(chǔ)器。
[0043]在一些實(shí)施例中,存儲(chǔ)陣列212、ET存儲(chǔ)器214、冗余存儲(chǔ)器216和/或ET冗余存儲(chǔ)器218在物理上相互分離。然而,在一些實(shí)施例中,存儲(chǔ)陣列212、ET存儲(chǔ)器214、冗余存儲(chǔ)器216和/或ET冗余存儲(chǔ)器218是在一個(gè)或多個(gè)物理存儲(chǔ)陣列上所限定的虛擬存儲(chǔ)空間。而且,存儲(chǔ)陣列212、ET存儲(chǔ)器214、冗余存儲(chǔ)器216以及ET冗余存儲(chǔ)器218的不同位置在多個(gè)實(shí)施例的范圍內(nèi)。在一些實(shí)施例中,ET存儲(chǔ)器214和ET冗余存儲(chǔ)器218的存儲(chǔ)單元以與存儲(chǔ)陣列212和冗余存儲(chǔ)器216的存儲(chǔ)單元或字(即,一組預(yù)定數(shù)量的存儲(chǔ)單元)交替的方式進(jìn)行定位。在一些實(shí)施例中,ET存儲(chǔ)器214和ET冗余存儲(chǔ)器218的每個(gè)存儲(chǔ)單元都鄰近存儲(chǔ)陣列212和冗余存儲(chǔ)器216的相應(yīng)的存儲(chǔ)單元或字進(jìn)行定位。在一些實(shí)施例中,對(duì)錯(cuò)誤-標(biāo)簽信息和用戶數(shù)據(jù)同時(shí)進(jìn)行編碼和處理。
[0044]ECC引擎220對(duì)存儲(chǔ)到存儲(chǔ)單元210的入站數(shù)據(jù)進(jìn)行編碼和/或?qū)拇鎯?chǔ)單元210讀取的出站數(shù)據(jù)進(jìn)行解碼并且校正。當(dāng)訪問(wèn)存儲(chǔ)單元210時(shí),將數(shù)據(jù)和相關(guān)奇偶校驗(yàn)位發(fā)送至ECC引擎220,并且ECC引擎220確定是否存在錯(cuò)誤。在一些實(shí)施例中,如果ECC引擎220識(shí)別出存儲(chǔ)單元210中的錯(cuò)誤,則ECC引擎指示錯(cuò)誤的地址。在一些實(shí)施例中,ECC引擎220還能夠通過(guò)接口 274輸出指示存在錯(cuò)誤的“ECC標(biāo)記”、來(lái)自存儲(chǔ)單元210的讀取數(shù)據(jù)和/或校正數(shù)據(jù)。
[0045]在一些實(shí)施例中,ECC引擎220使用六個(gè)奇偶校驗(yàn)位來(lái)校正32位的數(shù)據(jù)字中的單個(gè)錯(cuò)誤,并且使用七個(gè)奇偶校驗(yàn)位來(lái)校正單個(gè)錯(cuò)誤并且檢測(cè)雙重錯(cuò)誤。在一些實(shí)施例中,ECC引擎220能夠進(jìn)行單個(gè)錯(cuò)誤校正雙重錯(cuò)誤檢測(cè)(SE⑶ED)。在一些實(shí)施例中,使用漢明碼(Hamming code )來(lái)實(shí)現(xiàn)SE⑶ED。在一些實(shí)施例中,ECC引擎220能夠進(jìn)行雙重錯(cuò)誤校正雙重錯(cuò)誤檢測(cè)(DE⑶ED)。在多個(gè)實(shí)施例中,ECC引擎220由SoC設(shè)計(jì)者進(jìn)行限定,因此,適用于設(shè)計(jì)選擇的不同數(shù)據(jù)寬度。ECC引擎的實(shí)現(xiàn)所依據(jù)的其他ECC算法在多個(gè)實(shí)施例的范圍內(nèi)。
[0046]錯(cuò)誤的實(shí)例包括軟錯(cuò)誤和硬錯(cuò)誤。軟錯(cuò)誤是指基本上隨機(jī)發(fā)生的并且不可能在相同位置多次重復(fù)的錯(cuò)誤。硬錯(cuò)誤是指在相同位置重復(fù)發(fā)生的錯(cuò)誤。
[0047]校正數(shù)據(jù)高速緩存230存儲(chǔ)來(lái)自ECC引擎220的校正數(shù)據(jù)。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230包括一行或多行存儲(chǔ)單元,并且每行校正數(shù)據(jù)高速緩存230都具有與存儲(chǔ)單元210類似的長(zhǎng)度和布置。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230的每行存儲(chǔ)單元都被用于存儲(chǔ)一行用戶數(shù)據(jù)和相應(yīng)的錯(cuò)誤-標(biāo)簽信息。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230還能夠通過(guò)接口 276輸出從ECC引擎220所接收到的校正數(shù)據(jù)。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230包括被配置成存儲(chǔ)修復(fù)字的至少一個(gè)存儲(chǔ)字(memory word)。
[0048]基于錯(cuò)誤的預(yù)測(cè)頻率、在存儲(chǔ)單元210的操作期間的期望數(shù)量的修復(fù)機(jī)會(huì)、存儲(chǔ)單元210中的相同地址的訪問(wèn)頻率、存儲(chǔ)陣列212的尺寸和/或用于創(chuàng)建存儲(chǔ)器宏200的制造處理的質(zhì)量來(lái)選擇校正數(shù)據(jù)高速緩存230的容量。當(dāng)校正數(shù)據(jù)高速緩存230的容量增加時(shí),校正數(shù)據(jù)高速緩存可以在修復(fù)之間存儲(chǔ)的錯(cuò)誤的數(shù)量增加;然而,校正數(shù)據(jù)高速緩存的尺寸也增加。為了補(bǔ)償錯(cuò)誤的較高預(yù)測(cè)頻率,校正數(shù)據(jù)高速緩存230的容量增加。當(dāng)在存儲(chǔ)單元210的操作期間的期望修復(fù)機(jī)會(huì)的數(shù)量增加時(shí),因?yàn)樾U龜?shù)據(jù)高速緩存具有修復(fù)存儲(chǔ)單元210中的錯(cuò)誤的更多機(jī)會(huì),所以校正數(shù)據(jù)高速緩存230的容量減小。類似地,當(dāng)訪問(wèn)存儲(chǔ)單元210中的相同地址的頻率增加時(shí),因?yàn)樾迯?fù)錯(cuò)誤的機(jī)會(huì)的數(shù)量增加,所以校正數(shù)據(jù)高速緩存230的容量減小。較大存儲(chǔ)陣列比較小存儲(chǔ)陣列更可能具有更多錯(cuò)誤。因此,當(dāng)存儲(chǔ)陣列212的尺寸增加時(shí),校正數(shù)據(jù)高速緩存230的容量也增加。制造處理的質(zhì)量與錯(cuò)誤的預(yù)測(cè)頻率相關(guān)。當(dāng)制造處理的質(zhì)量改進(jìn)時(shí),錯(cuò)誤的預(yù)測(cè)頻率減小。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230的容量在存儲(chǔ)陣列212中的每兆字節(jié)(MB)存儲(chǔ)器I個(gè)修復(fù)至存儲(chǔ)陣列212中的每MB存儲(chǔ)器4個(gè)修復(fù)的范圍內(nèi)。
[0049]在錯(cuò)誤的預(yù)測(cè)頻率足夠小的一些實(shí)施例中,省略冗余存儲(chǔ)器216和相應(yīng)ET冗余存儲(chǔ)器218,并且用于硬錯(cuò)誤的修復(fù)被存儲(chǔ)在校正數(shù)據(jù)高速緩存230中。在省略冗余存儲(chǔ)器216和相應(yīng)ET冗余存儲(chǔ)器218的一些實(shí)施例中,校正數(shù)據(jù)高速緩存230的容量增加,以負(fù)責(zé)保持(withhold)硬錯(cuò)誤的校正數(shù)據(jù)。[0050]冗余單元240包括冗余引擎242、自修復(fù)地址比較器244以及高速緩存堆棧計(jì)數(shù)器246。冗余單元240負(fù)責(zé)將訪問(wèn)存儲(chǔ)單元210的地址與存儲(chǔ)單元210中的已知錯(cuò)誤位置進(jìn)行比較,以以代替已知錯(cuò)誤位置將那些訪問(wèn)重定向(redirect)為被分配的冗余存儲(chǔ)器216中的冗余或備用位置。
[0051]在一些實(shí)施例中,冗余單元240存儲(chǔ)故障位置的地址。當(dāng)在操作期間錯(cuò)誤發(fā)生時(shí),例如,自修復(fù)地址比較器244識(shí)別故障位置,并且冗余引擎242控制并識(shí)別用于修復(fù)故障位置的冗余位置的相應(yīng)的可選地址。一旦冗余位置被修復(fù)(即,校正數(shù)據(jù)已被寫入到冗余位置),冗余引擎242就能夠?qū)⒔酉聛?lái)的訪問(wèn)從故障位置重定向?yàn)橄鄳?yīng)冗余位置。
[0052]在一些實(shí)施例中,由位于自修復(fù)地址比較器244中的相應(yīng)的狀態(tài)位SB指示校正數(shù)據(jù)高速緩存230中的每個(gè)修復(fù)字的狀態(tài)。例如,如果狀態(tài)位SB具有高邏輯值,則校正數(shù)據(jù)高速緩存230中的相應(yīng)修復(fù)字存儲(chǔ)未被寫回到存儲(chǔ)單元210中的相應(yīng)位置的校正數(shù)據(jù)。如果狀態(tài)位SB具有低邏輯值,則不再需要存儲(chǔ)在相應(yīng)的修復(fù)字中的數(shù)據(jù),并且可以再次使用該修復(fù)字。
[0053]自修復(fù)地址比較器244被配置成從全局控制邏輯250接收地址信息。自修復(fù)地址比較器244該地址與要使用校正數(shù)據(jù)高速緩存230修復(fù)的地址進(jìn)行比較。如果自修復(fù)地址比較器244沒(méi)有找到匹配地址,則全局控制邏輯250繼續(xù)正常地執(zhí)行訪問(wèn)命令,即,假設(shè)在所訪問(wèn)的存儲(chǔ)器位置處沒(méi)有錯(cuò)誤。如果自修復(fù)地址比較器244找到匹配地址,則自修復(fù)地址比較器檢驗(yàn)與校正數(shù)據(jù)高速緩存230中的相應(yīng)的修復(fù)字相關(guān)的狀態(tài)位SB。如果狀態(tài)位SB指示修復(fù)待處理,則自修復(fù)引擎242相應(yīng)地管理如以下進(jìn)一步說(shuō)明的訪問(wèn)和/或修復(fù)。在一些實(shí)施例中,自修復(fù)引擎242插入和去除用于在自修復(fù)地址比較器244中的修復(fù)的地址。
[0054]高速緩存堆棧計(jì)數(shù)器246被配置成確定校正數(shù)據(jù)高速緩存230中的存儲(chǔ)單元被校正數(shù)據(jù)占用的行數(shù)或字?jǐn)?shù)。在一些實(shí)施例中,高速緩存堆棧計(jì)數(shù)器246基于具有高邏輯值的多個(gè)狀態(tài)位SB來(lái)確定校正數(shù)據(jù)高速緩存230中的待處理的修復(fù)的數(shù)量。如果待處理的修復(fù)的數(shù)量等于校正數(shù)據(jù)高速緩存230的容量,則高速緩存堆棧計(jì)數(shù)器246通過(guò)接口 278輸出指示校正數(shù)據(jù)高速緩存滿了的“高速緩存滿”信號(hào)。在一些實(shí)施例中,高速緩存堆棧計(jì)數(shù)器246被配置成在待處理的修復(fù)的數(shù)量等于校正數(shù)據(jù)高速緩存230的容量之前,輸出警報(bào)信號(hào)。在一些實(shí)施例中,當(dāng)待處理的修復(fù)的數(shù)量在校正數(shù)據(jù)高速緩存230的容量的修復(fù)的預(yù)定數(shù)量的范圍內(nèi)時(shí),高速緩存堆棧計(jì)數(shù)器246輸出警報(bào)信號(hào)?;陬愃朴谛U龜?shù)據(jù)高速緩存230的容量的選擇的標(biāo)準(zhǔn),選擇預(yù)定數(shù)量。
[0055]在一些實(shí)施例中,當(dāng)存儲(chǔ)陣列212中的存儲(chǔ)單元具有硬錯(cuò)誤時(shí),使用冗余存儲(chǔ)器216中的行代替包含存儲(chǔ)陣列212中錯(cuò)誤存儲(chǔ)單元的的行。例如,如果存儲(chǔ)單元具有錯(cuò)誤并且被訪問(wèn),則自修復(fù)引擎242將存儲(chǔ)陣列212中的錯(cuò)誤存儲(chǔ)器行的訪問(wèn)重定向?yàn)槿哂啻鎯?chǔ)器216中的相應(yīng)行。而且,如果冗余存儲(chǔ)器216的行中的存儲(chǔ)單元具有硬錯(cuò)誤,使用冗余存儲(chǔ)器216中的另一行代替包含錯(cuò)誤存儲(chǔ)單元的冗余存儲(chǔ)器216的該行。自修復(fù)冗余存儲(chǔ)器216中的冗余行類似于自修復(fù)存儲(chǔ)陣列212中的行。
[0056]在一些實(shí)施例中,信號(hào)通過(guò)冗余單元240輸出“冗余存儲(chǔ)器滿”,以指示冗余存儲(chǔ)器216中的所有冗余行都已被使用,并且沒(méi)有附加硬錯(cuò)誤可以恢復(fù)。換句話說(shuō),滿信號(hào)指示存儲(chǔ)單元210已經(jīng)作出存儲(chǔ)單元210能夠進(jìn)行的所有修復(fù)。在一些實(shí)施例中,使用校正數(shù)據(jù)高速緩存230和/或存儲(chǔ)器宏200之外的其他存儲(chǔ)單元仍然可恢復(fù)隨后的硬錯(cuò)誤。[0057]使用高速緩存自修復(fù)的方法
[0058]圖3是根據(jù)一些實(shí)施例修復(fù)存儲(chǔ)器宏中的存儲(chǔ)器故障的示例性方法300的流程圖。圖4至圖9是根據(jù)一些實(shí)施例處于多個(gè)操作階段的存儲(chǔ)器宏200的框圖。應(yīng)該理解,在圖3所示的方法300之前、期間和/或之后,可以執(zhí)行附加操作,并且一些其他處理本文中僅簡(jiǎn)單地進(jìn)行描述。在一些實(shí)施例中,省略圖4所示的一個(gè)或多個(gè)操作。
[0059]如圖4所示,為了說(shuō)明,在存儲(chǔ)陣列212中示出存儲(chǔ)單元行415。存儲(chǔ)單元行包括多個(gè)存儲(chǔ)字。為了說(shuō)明,示出的行415具有被標(biāo)記為字W[1]、W[2]、W[3]和W[4]的四個(gè)字。在一些實(shí)施例中,行中的字W的一般數(shù)量包括:8、16、32、64等。存儲(chǔ)單元行中的字的不同數(shù)量在多個(gè)實(shí)施例的范圍內(nèi)。每個(gè)字都包括多個(gè)存儲(chǔ)單元或存儲(chǔ)位。在至少一個(gè)實(shí)施例中,字包括8位。
[0060]此外,作為實(shí)例,ET存儲(chǔ)器214包括分別對(duì)應(yīng)于四個(gè)字W[1]、W[2]、W[3]和W[4]的四個(gè)錯(cuò)誤標(biāo)簽(ET)位ET [I]、ET [2]、ET [3]和ET [4]。當(dāng)存儲(chǔ)單元行中的字的數(shù)量改變時(shí),錯(cuò)誤標(biāo)簽位的數(shù)量相應(yīng)地改變。例如,如果N表示整數(shù),并且如果存在N個(gè)字W[l]至W[N],則存在N個(gè)ET位ET [I]至ET [N]。
[0061]在一些實(shí)施例中,每個(gè)錯(cuò)誤標(biāo)簽位默認(rèn)為指示不存在先前在任何相應(yīng)字中所識(shí)別的軟錯(cuò)誤的邏輯低值。當(dāng)字中的存儲(chǔ)單元已被識(shí)別為具有軟錯(cuò)誤時(shí),相應(yīng)ET位被設(shè)置為高邏輯值。指示相應(yīng)字的錯(cuò)誤狀態(tài)的ET位中的其他值在多個(gè)實(shí)施例的范圍內(nèi)。
[0062]如圖3和圖4所示,在操作402中,執(zhí)行存儲(chǔ)器訪問(wèn)。存儲(chǔ)器訪問(wèn)開(kāi)始于通過(guò)邏輯控制單元250接收地址信息和訪問(wèn)命令。在一些實(shí)施例中,地址信息和訪問(wèn)命令從電路外部被發(fā)送至存儲(chǔ)器宏200。如果命令是讀取操作,則全局控制邏輯250將地址信息發(fā)送至冗余單元240,并且冗余單元240確定局部控制邏輯260是否需要被設(shè)置為將訪問(wèn)重定向?yàn)槿哂啻鎯?chǔ)器216。在圖4所示的實(shí)施例中,局部控制邏輯260沒(méi)有被設(shè)置為將訪問(wèn)重定向?yàn)槿哂啻鎯?chǔ)器216。
[0063]將存儲(chǔ)在存儲(chǔ)陣列212或冗余存儲(chǔ)器216的相應(yīng)地址中的數(shù)據(jù)(諸如,行415中的字W[3])輸出到ECC引擎220,以用于解碼和/或錯(cuò)誤校正。ECC引擎220確定在讀出數(shù)據(jù)中是否存在錯(cuò)誤。在一些實(shí)施例中,相應(yīng)的ET存儲(chǔ)器212或ET冗余存儲(chǔ)器218中的數(shù)據(jù)位(諸如,行415中的ET [3])還被發(fā)送至ECC引擎220。
[0064]ECC引擎220包括字邏輯引擎ECCW和錯(cuò)誤-標(biāo)簽邏輯引擎ECCET。字邏輯引擎ECCW用于處理字,諸如,字W[1]、W[2]、W[3]或W[4]。例如,當(dāng)訪問(wèn)字時(shí),將字的二進(jìn)制值和奇偶校驗(yàn)位提供給字邏輯引擎ECCW,在一些實(shí)施例中,該字邏輯引擎ECCW基于漢明碼技術(shù)識(shí)別被翻轉(zhuǎn)的字中的位。引擎ECCW還翻轉(zhuǎn)錯(cuò)誤位,以提供錯(cuò)誤字的校正數(shù)據(jù)。實(shí)際上,弓丨擎ECCW確定在字W中是否發(fā)生錯(cuò)誤,并且如果發(fā)生錯(cuò)誤,則引擎ECCW提供校正數(shù)據(jù)。漢明ECC碼技術(shù)用于說(shuō)明性的。其他ECC技術(shù)在多個(gè)實(shí)施例的范圍內(nèi)。
[0065]錯(cuò)誤-標(biāo)簽邏輯引擎ECCET用于處理每個(gè)ET位,四位ET[1]至ET[4]中的每位。在一些實(shí)施例中,引擎ECCET是提供指示被訪問(wèn)的ET位是邏輯高還是邏輯低的結(jié)果的比較器。例如,如果被訪問(wèn)的ET位具有高邏輯值,則引擎ECCET提供具有高邏輯值的結(jié)果。實(shí)際上,引擎ECCET指示對(duì)應(yīng)于位ET的字W先前具有錯(cuò)誤。相反地,如果被訪問(wèn)的ET位具有低邏輯值,則引擎ECCT提供具有低邏輯值的結(jié)果。實(shí)際上,引擎ECCET指示對(duì)應(yīng)于被訪問(wèn)的位ET的字W先前沒(méi)有錯(cuò)誤。對(duì)于另一個(gè)實(shí)例,來(lái)自引擎ECCET的高邏輯值和“ECC標(biāo)記”信號(hào)的高邏輯值指示對(duì)應(yīng)于被訪問(wèn)的位ET的字W中的錯(cuò)誤是硬錯(cuò)誤。在位ET與它們各自的字W共同定位的實(shí)施例中,引擎ECCET是引擎ECCW的一部分。實(shí)際上,ECC引擎220在估計(jì)相應(yīng)的ET位之前,進(jìn)行解碼并且檢測(cè)錯(cuò)誤。
[0066]在操作404中,確定在訪問(wèn)存儲(chǔ)單元415的地址期間是否生成“ECC標(biāo)記”。在一些實(shí)施例中,由ECC引擎220進(jìn)行確定。ECC引擎220確定存儲(chǔ)在該地址處的數(shù)據(jù)的錯(cuò)誤是否發(fā)生并且響應(yīng)于錯(cuò)誤生成標(biāo)記。
[0067]如圖3和圖5所示,在操作406中,如果沒(méi)有“ECC標(biāo)記”生成,則正常地訪問(wèn)存儲(chǔ)器宏200。在一些實(shí)施例中,通過(guò)接口 274輸出由ECC引擎220解碼的字W[3]。
[0068]如圖3和圖6所示,在操作408中,如果生成“ECC標(biāo)記”,則將由ECC引擎220生成的校正數(shù)據(jù)存儲(chǔ)在校正數(shù)據(jù)高速緩存230中。地址標(biāo)簽與校正數(shù)據(jù)相關(guān),并且被添加至自修復(fù)地址比較器244。在一些實(shí)施例中,校正數(shù)據(jù)被添加至校正數(shù)據(jù)高速緩存244并且作為堆棧進(jìn)行管理。在一些實(shí)施例中,校正數(shù)據(jù)被添加至校正數(shù)據(jù)高速緩存244中并且作為隊(duì)列進(jìn)行管理。在一些實(shí)施例中,校正數(shù)據(jù)以隨機(jī)方式被添加至校正數(shù)據(jù)高速緩存244。在一些實(shí)施例中,與校正數(shù)據(jù)相關(guān)的狀態(tài)位SB被設(shè)置為高邏輯值。
[0069]例如,如圖6所示,校正數(shù)據(jù)高速緩存230包括被配置成存儲(chǔ)修復(fù)字CW的至少一個(gè)存儲(chǔ)字。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230包括均被配置成存儲(chǔ)修復(fù)字CW的多個(gè)存儲(chǔ)單元。校正數(shù)據(jù)高速緩存230進(jìn)一步包括與存儲(chǔ)在校正數(shù)據(jù)高速緩存中的修復(fù)字CW相關(guān)的高速緩存錯(cuò)誤標(biāo)簽CET。在操作中,如果ECC引擎220在來(lái)自存儲(chǔ)陣列212或冗余存儲(chǔ)器216的輸出數(shù)據(jù)中檢測(cè)到錯(cuò)誤,則ECC引擎220校正輸出數(shù)據(jù)并且將校正數(shù)據(jù)發(fā)送至校正數(shù)據(jù)高速緩存230。然后,校正數(shù)據(jù)被存儲(chǔ)為修復(fù)字CW,以用于存儲(chǔ)陣列212或冗余存儲(chǔ)器216的隨后修復(fù)。一旦校正數(shù)據(jù)被存儲(chǔ)在校正數(shù)據(jù)高速緩存230中,對(duì)應(yīng)于修復(fù)字CW的高速緩存錯(cuò)誤標(biāo)簽CET就被重置為低邏輯值。
[0070]每個(gè)修復(fù)字CW都與位于自修復(fù)地址比較器244中的相應(yīng)狀態(tài)位SB相關(guān)聯(lián),使得狀態(tài)位SB的數(shù)量等于校正數(shù)據(jù)高速緩存230的修復(fù)字CW的數(shù)量。與每個(gè)修復(fù)字CW都相關(guān)聯(lián)的狀態(tài)位SB指示存儲(chǔ)在修復(fù)字CW中的修復(fù)的狀態(tài)。例如,如果狀態(tài)位SB具有高邏輯值,則存儲(chǔ)在修復(fù)字CW中的修復(fù)未被執(zhí)行。如果狀態(tài)位SB具有低邏輯值,則存儲(chǔ)在修復(fù)字Cff中的修復(fù)已被修復(fù),并且該修復(fù)字可以用新信息覆蓋。當(dāng)執(zhí)行修復(fù)時(shí),對(duì)應(yīng)于修復(fù)字CW的狀態(tài)位SB被重置為低邏輯值。在一些實(shí)施例中,通過(guò)自修復(fù)引擎242來(lái)重置狀態(tài)位SB。
[0071]如圖3和圖7所示,在操作410中,將校正數(shù)據(jù)輸出到外部電路中。在一些實(shí)施例中,由ECC引擎220輸出校正數(shù)據(jù)。在一些實(shí)施例中,由校正數(shù)據(jù)高速緩存230輸出校正數(shù)據(jù)。在一些實(shí)施例中,由ECC引擎220輸出“ECC標(biāo)記”。在一些實(shí)施例中,將“ECC標(biāo)記”輸出到自修復(fù)單元240。而且,在操作410中,基于被解碼的位ECCET和“ECC標(biāo)記”設(shè)置“重復(fù)錯(cuò)誤標(biāo)記”。設(shè)置“重復(fù)錯(cuò)誤標(biāo)記”使得相同地址處的任何隨后的錯(cuò)誤都被確定為硬錯(cuò)誤。例如,ECCET中的高邏輯值指示之前發(fā)生了關(guān)于字W[3]的軟錯(cuò)誤;以及“ECC標(biāo)記”進(jìn)一步指示字W[3]再次具有解碼錯(cuò)誤,因此,字W[3]被視為包含硬錯(cuò)誤。在一些實(shí)施例中,使用自修復(fù)引擎242設(shè)置“重復(fù)錯(cuò)誤標(biāo)記”。
[0072]在步驟412中,確定錯(cuò)誤是否為在相同位置處的重復(fù)錯(cuò)誤。在一些實(shí)施例中,通過(guò)自修復(fù)引擎242和/或自修復(fù)地址比較器244進(jìn)行該確定。在一些實(shí)施例中,在與“ECC標(biāo)記”相關(guān)的地址和先前發(fā)生錯(cuò)誤的地址之間進(jìn)行比較。如果比較的結(jié)果是匹配,則錯(cuò)誤被確定為硬錯(cuò)誤。如果比較的結(jié)果是不匹配,則錯(cuò)誤被確定為軟錯(cuò)誤。
[0073]如圖3和圖8所示,在操作414中,如果錯(cuò)誤被確定為軟錯(cuò)誤,則在非阻止周期期間將校正的數(shù)據(jù)寫回到存儲(chǔ)陣列212或冗余存儲(chǔ)器216中的相關(guān)的原始地址。而且,在操作414中,將高邏輯值設(shè)置在字W[3]中,以指示在位ET[3]的任一位中發(fā)生了錯(cuò)誤。而且,如果在字W[3]中再次發(fā)生錯(cuò)誤,則位ET[3]中的高邏輯值以及錯(cuò)誤的重現(xiàn)指示錯(cuò)誤是硬錯(cuò)誤。
[0074]在一些實(shí)施例中,當(dāng)具有比校正數(shù)據(jù)高速緩存230更高的優(yōu)先級(jí)的電路或系統(tǒng)訪問(wèn)各自存儲(chǔ)器時(shí),存儲(chǔ)陣列212或冗余存儲(chǔ)器216被視為被阻止。在一些實(shí)施例中,校正數(shù)據(jù)在NOP期間被寫回。在一些實(shí)施例中,校正數(shù)據(jù)在刷新操作期間被寫回。在一些實(shí)施例中,當(dāng)訪問(wèn)需要修復(fù)的地址時(shí),進(jìn)行修復(fù)。在一些實(shí)施例中,在各個(gè)存儲(chǔ)器的刷新周期期間進(jìn)行修復(fù)。
[0075]在一些實(shí)施例中,在關(guān)于與校正數(shù)據(jù)高速緩存230中的待處理的修復(fù)字CW相對(duì)應(yīng)的地址的讀取操作期間,全局控制器250管理校正數(shù)據(jù)高速緩存230的修復(fù)字CW。將存儲(chǔ)在修復(fù)字CW中的信息輸出到外部電路。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230作為NOP處理該讀取操作并且執(zhí)行“隱式寫入”,以修復(fù)對(duì)應(yīng)于被訪問(wèn)的修復(fù)字CW的錯(cuò)誤。校正數(shù)據(jù)高速緩存230將修復(fù)字CW寫入存儲(chǔ)陣列212中的相應(yīng)地址,并且與修復(fù)字相關(guān)聯(lián)的狀態(tài)位SB被改變?yōu)榈瓦壿嬛?。在一些?shí)施例中,校正數(shù)據(jù)高速緩存230不執(zhí)行“隱式寫入”并且等待NOP修復(fù)存儲(chǔ)陣列212中的錯(cuò)誤。
[0076]在一些實(shí)施例中,在關(guān)于與校正數(shù)據(jù)高速緩存230中的待處理的修復(fù)字CW相對(duì)應(yīng)的地址的寫操作期間,全局控制器250進(jìn)行管理以將所接收的數(shù)據(jù)直接寫入該地址,并且寫操作有效地修復(fù)錯(cuò)誤。對(duì)應(yīng)于與存儲(chǔ)陣列212中的被訪問(wèn)的存儲(chǔ)單元相關(guān)聯(lián)的修復(fù)字CW的狀態(tài)字SB被改變?yōu)榈瓦壿嬛狄灾甘就瓿尚迯?fù)。
[0077]在一些實(shí)施例中,在關(guān)于與校正數(shù)據(jù)高速緩存230中的待處理的修復(fù)字CW相對(duì)應(yīng)的地址的刷新操作期間,全局控制器250管理校正數(shù)據(jù)高速緩存230以將字CW中的校正數(shù)據(jù)寫入存儲(chǔ)陣列212中的地址。在一些實(shí)施例中,校正數(shù)據(jù)高速緩存230作為NOP處理刷新操作,并且執(zhí)行“隱式寫入”以修復(fù)對(duì)應(yīng)于被訪問(wèn)的修復(fù)字CW的錯(cuò)誤。此外,與修復(fù)字CW相關(guān)的狀態(tài)位SB被改變?yōu)榈瓦壿嬛怠T谝恍?shí)施例中,校正數(shù)據(jù)高速緩存230不執(zhí)行“隱式寫入”并且等待NOP修復(fù)存儲(chǔ)陣列212中的錯(cuò)誤。校正數(shù)據(jù)高速緩存230在刷新操作期間不輸出信息。
[0078]在一些實(shí)施例中,在NOP期間,校正數(shù)據(jù)高速緩存230將數(shù)據(jù)寫入存儲(chǔ)陣列212或冗余存儲(chǔ)器216,以校正軟錯(cuò)誤或硬錯(cuò)誤。
[0079]在一些實(shí)施例中,以先輸入先輸出(FIFO)調(diào)度排列執(zhí)行待處理的修復(fù)。在一些實(shí)施例中,以后輸入先輸出(LIFO)調(diào)度排列執(zhí)行待處理的修復(fù)。在一些實(shí)施例中,以任意調(diào)度排列執(zhí)行待處理的修復(fù)。
[0080]如圖3和圖9所示,在操作416中,如果錯(cuò)誤被確定為硬錯(cuò)誤,則校正數(shù)據(jù)被寫回到冗余存儲(chǔ)器216。作為實(shí)例,圖9中示出了冗余存儲(chǔ)器216包括的一行426冗余存儲(chǔ)器216。在至少一個(gè)實(shí)施例中,一行冗余存儲(chǔ)器216中的字的數(shù)量與一行存儲(chǔ)陣列212中的字的數(shù)量一致。例如,示出的行425具有分別對(duì)應(yīng)于存儲(chǔ)陣列212的四個(gè)字W[1]、W[2]、W[3]和W[4]的四個(gè)字RW[1]、Rff [2]、Rff [3]和RW[4]。如果一行存儲(chǔ)陣列212中的字的數(shù)量改變,則一行冗余存儲(chǔ)器216中的字的數(shù)量相應(yīng)地改變。冗余存儲(chǔ)器216中的冗余行的數(shù)量根據(jù)應(yīng)用和設(shè)計(jì)選擇改變,例如,考慮包括存儲(chǔ)器宏200的期望壽命、壽命期限內(nèi)的故障的估計(jì)數(shù)量等的多種因素。
[0081]ET冗余存儲(chǔ)器218包括對(duì)應(yīng)于行冗余存儲(chǔ)器216中的存儲(chǔ)字的錯(cuò)誤-標(biāo)簽位。如圖9示意性示出,ET冗余存儲(chǔ)器216包括分別對(duì)應(yīng)于四個(gè)字RW[1]、RW[2]、RW[3]和RW [4]的四位RET[1:4]。當(dāng)行中的字RW的數(shù)量改變時(shí),位RET的數(shù)量相應(yīng)地改變。在一些實(shí)施例中,以類似于錯(cuò)誤-標(biāo)簽位ET [I]、ET [2]、ET [3]和ET [4]以及字W[l]、W[2]、W[3]和W[4]的方式來(lái)布置錯(cuò)誤-標(biāo)簽位RET [I] ,RET [2] ,RET [3]和RET [4]以及字RW[I] ,Rff [2] ,Rff [3]和 Rff [4]。
[0082]在一些實(shí)施例中,除了使用引導(dǎo)至冗余存儲(chǔ)器216中的指定替換行的可選地址之夕卜,以類似于修復(fù)結(jié)合操作914所述的軟錯(cuò)誤的方式來(lái)執(zhí)行修復(fù)硬錯(cuò)誤。在一些實(shí)施例中,使用隱式寫入處理寫回校正數(shù)據(jù)。在一些實(shí)施例中,在NOP期間寫回校正數(shù)據(jù)。在一些實(shí)施例中,在刷新操作期間寫回校正數(shù)據(jù)。此外,在操作416中,冗余存儲(chǔ)器216中的寫回地址代替存儲(chǔ)陣列212中的相關(guān)地址。在一些實(shí)施例中,自修復(fù)引擎242執(zhí)行地址替換。此夕卜,在操作416中,重置關(guān)于字RW[3]的“重復(fù)錯(cuò)誤標(biāo)記”?!爸貜?fù)錯(cuò)誤標(biāo)記”被重置,使得冗余存儲(chǔ)器地址(例如,字RW[3])處的初始錯(cuò)誤被確定為軟錯(cuò)誤。在一些實(shí)施例中,使用自修復(fù)引擎242重置重復(fù)錯(cuò)誤標(biāo)記。
[0083]在一些實(shí)施例中,存儲(chǔ)單元210沒(méi)有冗余存儲(chǔ)器216,或者冗余存儲(chǔ)器216沒(méi)有可用于任何未來(lái)硬錯(cuò)誤的更多空間,省略操作416,并且通過(guò)校正數(shù)據(jù)高速緩存230來(lái)處理硬錯(cuò)誤。
[0084]如圖3所示,在操作418中,檢驗(yàn)校正數(shù)據(jù)高速緩存230,以確定校正數(shù)據(jù)高速緩存是否滿了。在一些實(shí)施例中,通過(guò)高速緩存堆棧計(jì)數(shù)器246進(jìn)行確定。
[0085]在操作418中,如果確定校正數(shù)據(jù)高速緩存230滿了,則將“高速緩存滿”信號(hào)發(fā)送至外部電路。在一些實(shí)施例中,當(dāng)接收到“高速緩存滿”信號(hào)時(shí),提供用于存儲(chǔ)器宏200的NOP周期,以提供校正數(shù)據(jù)高速緩存230寫回至少一個(gè)存儲(chǔ)的修復(fù)的機(jī)會(huì)。
[0086]在操作418中,如果確定校正數(shù)據(jù)高速緩存230沒(méi)有滿,則修復(fù)計(jì)數(shù)增加I。在一些實(shí)施例中,修復(fù)計(jì)數(shù)被存儲(chǔ)在高速緩存堆棧計(jì)數(shù)器246中。在一些實(shí)施例中,當(dāng)存儲(chǔ)在校正數(shù)據(jù)高速緩存230中的修復(fù)的數(shù)量超過(guò)閾值時(shí),將警報(bào)信號(hào)發(fā)送給外部電路。
[0087]以上方法包括示例性操作,但是不必按照所示的順序執(zhí)行操作。根據(jù)所公開(kāi)的實(shí)施例的精神和范圍,操作可以適當(dāng)?shù)乇惶砹?、替換、改變順序和/或刪除。
[0088]本發(fā)明的一個(gè)方面涉及存儲(chǔ)陣列具有包括多個(gè)存儲(chǔ)字的多行。多個(gè)第一位中的每個(gè)第一位都與每行的存儲(chǔ)字相關(guān)。每個(gè)第一位的狀態(tài)指示相關(guān)存儲(chǔ)字是否存在錯(cuò)誤。多個(gè)冗余行中的每個(gè)冗余行都包括多個(gè)冗余字。每個(gè)冗余字都與存儲(chǔ)字相關(guān)。校正數(shù)據(jù)高速緩存具有被配置成存儲(chǔ)校正數(shù)據(jù)的至少一個(gè)修復(fù)字和與至少一個(gè)修復(fù)字相關(guān)的至少一個(gè)狀態(tài)位,狀態(tài)位指示存儲(chǔ)在修復(fù)字中的校正數(shù)據(jù)是待處理的修復(fù)。校正數(shù)據(jù)高速緩存被配置成將存儲(chǔ)在修復(fù)字中的校正數(shù)據(jù)寫入相應(yīng)的(counterpart)存儲(chǔ)字和相應(yīng)的冗余字中的至少一個(gè)。
[0089]本發(fā)明的另一方面涉及包括連接至存儲(chǔ)陣列的處理器的計(jì)算設(shè)備,存儲(chǔ)陣列具有包括多個(gè)存儲(chǔ)字的多行。多個(gè)第一位中的每個(gè)第一位都與每行的存儲(chǔ)字相關(guān)。每個(gè)第一位的狀態(tài)都指示相關(guān)存儲(chǔ)字是否存在錯(cuò)誤。多個(gè)冗余行中的每個(gè)冗余行都包括多個(gè)冗余字。每個(gè)冗余字都與存儲(chǔ)字相關(guān)。校正數(shù)據(jù)高速緩存具有被配置成存儲(chǔ)校正數(shù)據(jù)的至少一個(gè)修復(fù)字和與至少一個(gè)修復(fù)字相關(guān)的至少一個(gè)狀態(tài)位,狀態(tài)位指示存儲(chǔ)在修復(fù)字中的校正數(shù)據(jù)是待處理的修復(fù)。校正數(shù)據(jù)高速緩存被配置成將存儲(chǔ)在修復(fù)字中的校正數(shù)據(jù)寫入相應(yīng)的存儲(chǔ)字和相應(yīng)的冗余字中的至少一個(gè)。
[0090]本發(fā)明的另一方面涉及操作存儲(chǔ)器的方法。該方法包括:檢測(cè)在訪問(wèn)存儲(chǔ)陣列中的地址期間發(fā)生的錯(cuò)誤。該方法進(jìn)一步包括:校正與被檢測(cè)的錯(cuò)誤相對(duì)應(yīng)的數(shù)據(jù)。該方法進(jìn)一步包括:將校正數(shù)據(jù)存儲(chǔ)在校正數(shù)據(jù)高速緩存中。該方法進(jìn)一步包括:使校正數(shù)據(jù)與存儲(chǔ)陣列中的地址相關(guān)。該方法進(jìn)一步包括:將校正數(shù)據(jù)輸出到存儲(chǔ)器外部的電路。該方法進(jìn)一步包括:確定錯(cuò)誤是硬錯(cuò)誤還是軟錯(cuò)誤。該方法進(jìn)一步包括:如果錯(cuò)誤是軟錯(cuò)誤,則將存儲(chǔ)在校正數(shù)據(jù)高速緩存中的校正數(shù)據(jù)寫回到存儲(chǔ)陣列。
[0091]已經(jīng)描述了多個(gè)實(shí)施例。然而,應(yīng)該理解,可以在不脫離本發(fā)明的精神和范圍的情況下,作出多種修改。
【權(quán)利要求】
1.一種存儲(chǔ)器,包括: 存儲(chǔ)陣列,具有多行,所述存儲(chǔ)陣列的所述多行中的每行都包括多個(gè)存儲(chǔ)字; 多個(gè)第一位,所述多個(gè)第一位中的每個(gè)第一位都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的存儲(chǔ)字相關(guān)聯(lián),其中,每個(gè)第一位的邏輯狀態(tài)都指示與所述每個(gè)第一位相關(guān)聯(lián)的存儲(chǔ)字是否存在故障位; 多個(gè)冗余行,所述多個(gè)冗余行中的每個(gè)冗余行都包括多個(gè)冗余字,所述多個(gè)冗余字中的每個(gè)冗余字都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的相應(yīng)存儲(chǔ)字相關(guān)聯(lián);以及 校正數(shù)據(jù)高速緩存,具有被配置成存儲(chǔ)校正數(shù)據(jù)的至少一個(gè)修復(fù)字和與所述至少一個(gè)修復(fù)字相關(guān)聯(lián)的至少一個(gè)狀態(tài)位,所述狀態(tài)位指示存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)是否是待處理的修復(fù),所述校正數(shù)據(jù)高速緩存被配置成將存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)寫入到相應(yīng)的存儲(chǔ)字和相應(yīng)的冗余字的至少一個(gè)中。
2.根據(jù)權(quán)利要求1所述的存儲(chǔ)器,進(jìn)一步包括: 自修復(fù)地址比較器,被配置成將與所述校正數(shù)據(jù)相關(guān)聯(lián)的地址和要訪問(wèn)的地址進(jìn)行比較。
3.根據(jù)權(quán)利要求1所述的存儲(chǔ)器,進(jìn)一步包括:高速緩存堆棧計(jì)數(shù)器,被配置成監(jiān)控所述校正數(shù)據(jù)高速緩存中的待處理的修復(fù)的數(shù)量。
4.根據(jù)權(quán)利要求1所述的存儲(chǔ)器,其中,所述校正數(shù)據(jù)高速緩存被配置成具有在每兆字節(jié)(MB)存儲(chǔ)陣列中具有I個(gè)至4個(gè)待處理的修復(fù)的最大數(shù)量。
5.根據(jù)權(quán)利要求1所述的存`儲(chǔ)器,進(jìn)一步包括: 字邏輯引擎,被配置成處理所述存儲(chǔ)陣列的一行的所述多個(gè)存儲(chǔ)字中的每個(gè)存儲(chǔ)字;以及 位-標(biāo)簽邏輯引擎,被配置成處理與要處理的所述多個(gè)存儲(chǔ)字中的每個(gè)存儲(chǔ)字相關(guān)聯(lián)的每個(gè)第一位。
6.根據(jù)權(quán)利要求1所述的存儲(chǔ)器,進(jìn)一步包括:錯(cuò)誤校正引擎,被配置成基于與所述每個(gè)第一位相關(guān)聯(lián)的存儲(chǔ)字中的錯(cuò)誤改變所述每個(gè)第一位的狀態(tài),并且將具有改變的位的存儲(chǔ)字寫入所述校正數(shù)據(jù)高速緩存中作為所述校正數(shù)據(jù);和/或 基于與每個(gè)第二位相關(guān)聯(lián)的冗余字中的錯(cuò)誤改變所述每個(gè)第二位的狀態(tài),并且將具有改變的位的冗余字寫入所述校正數(shù)據(jù)高速緩存中作為所述校正數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的存儲(chǔ)器,進(jìn)一步包括:錯(cuò)誤校正引擎,被配置成基于所述每個(gè)第一位的狀態(tài)和與所述每個(gè)第一位相關(guān)聯(lián)的存儲(chǔ)字中的錯(cuò)誤生成錯(cuò)誤-修復(fù)標(biāo)記;和/或 基于每個(gè)第二位的狀態(tài)和與所述每個(gè)第二位相關(guān)聯(lián)的冗余字中的錯(cuò)誤生成錯(cuò)誤-修復(fù)標(biāo)記。
8.一種計(jì)算裝置,包括: 處理器;以及 存儲(chǔ)器宏,連接至所述處理器,包括: 存儲(chǔ)陣列,具有多行,所述存儲(chǔ)陣列的所述多行中的每行都包括多個(gè)存儲(chǔ)字; 多個(gè)第一位,所述多個(gè)第一位中的每個(gè)第一位都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的存儲(chǔ)字相關(guān)聯(lián),其中,每個(gè)第一位的邏輯狀態(tài)都指示與所述每個(gè)第一位相關(guān)聯(lián)的所述存儲(chǔ)字是否存在故障位; 多個(gè)冗余行,所述多個(gè)冗余行中的每個(gè)冗余行都包括多個(gè)冗余字,所述多個(gè)冗余字中的每個(gè)冗余字都與所述存儲(chǔ)陣列的所述多行中的每行的所述多個(gè)存儲(chǔ)字中的相應(yīng)存儲(chǔ)字相關(guān)聯(lián);以及 校正數(shù)據(jù)高速緩存,具有被配置成存儲(chǔ)校正數(shù)據(jù)的至少一個(gè)修復(fù)字和與所述至少一個(gè)修復(fù)字相關(guān)聯(lián)的至少一個(gè)狀態(tài)位,所述狀態(tài)位指示存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)是否是待處理的修復(fù),所述校正數(shù)據(jù)高速緩存被配置成將存儲(chǔ)在所述修復(fù)字中的所述校正數(shù)據(jù)寫入相應(yīng)的存儲(chǔ)字和相應(yīng)的冗余字中的至少一個(gè)中。
9.根據(jù)權(quán)利要求8所述的計(jì)算裝置,進(jìn)一步包括: 自修復(fù)地址比較器,被配置成將與所述校正數(shù)據(jù)相關(guān)聯(lián)的地址和要訪問(wèn)的地址進(jìn)行比較。
10.一種操作存儲(chǔ)器的方法,所述方法包括: 檢測(cè)在訪問(wèn)存儲(chǔ)陣列中的地址期間發(fā)生的錯(cuò)誤; 校正與檢測(cè)到的錯(cuò)誤相對(duì)應(yīng)的數(shù)據(jù); 將校正數(shù)據(jù)存儲(chǔ)在校正數(shù)據(jù)高速緩存中; 使所述校正數(shù)據(jù)與所述存儲(chǔ)陣列中的所述地址相關(guān)聯(lián); 將所述校正數(shù)據(jù)輸出到所述存儲(chǔ)器外部的電路; 確定所述錯(cuò)誤是硬錯(cuò)誤還是軟錯(cuò)誤;以及 如果所述錯(cuò)誤是軟錯(cuò)誤,則將存儲(chǔ)在所述校正數(shù)據(jù)高速緩存中的所述校正數(shù)據(jù)寫回到所述存儲(chǔ)陣列中。
【文檔編號(hào)】G11C29/44GK103514961SQ201310250358
【公開(kāi)日】2014年1月15日 申請(qǐng)日期:2013年6月21日 優(yōu)先權(quán)日:2012年6月29日
【發(fā)明者】科馬克·邁克爾·歐康諾 申請(qǐng)人:臺(tái)灣積體電路制造股份有限公司