用于校正數(shù)據(jù)錯誤的電路、設(shè)備及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實施例大體上涉及集成電路,且更特定來說(在所說明的實施例中的一或多者中),本發(fā)明的實施例涉及校正集成電路中的數(shù)據(jù)錯誤。
【背景技術(shù)】
[0002]隨著半導(dǎo)體處理技術(shù)改進繼續(xù)允許越來越小的裝置大小,出現(xiàn)若干問題。舉例來說,當在易失性或非易失性存儲器中的更小存儲元件允許每數(shù)據(jù)存儲單元的更大存儲密度及更低成本時,個別存儲元件的小的大小可導(dǎo)致數(shù)據(jù)錯誤的增加,例如,各種刷新時間錯誤(也稱作各種保持時間錯誤)、軟錯誤、單粒子翻轉(zhuǎn)錯誤,等等。在一些實例中,對存儲元件造成的物理損壞(例如,歸因于所述元件的不恰當制造)也可導(dǎo)致數(shù)據(jù)錯誤,但所述錯誤可被分布使得利用維修區(qū)域可為無效的。這些軟數(shù)據(jù)錯誤或硬數(shù)據(jù)錯誤損壞數(shù)據(jù)且通常隨機分布ο
[0003]一種用于減輕這些數(shù)據(jù)錯誤的影響的方法是:與所述數(shù)據(jù)一起存儲錯誤校正碼(“ECC”)奇偶校驗信息(以下稱為“奇偶校驗碼”),且在所述數(shù)據(jù)被讀出時解碼所述奇偶校驗碼以便檢測及/或校正原始數(shù)據(jù)或附加奇偶校驗碼中的任何錯誤。所述奇偶校驗碼在所存儲的數(shù)據(jù)的量(歸因于用于所述奇偶校驗碼的額外位)及用于寫入到數(shù)據(jù)存儲裝置及從數(shù)據(jù)存儲裝置讀取所需要的處理時間的量(歸因于編碼及解碼所述ECC奇偶校驗碼的處理時間)兩者中需要一些開銷。然而,使用ECC大體上仍被視為有效的且高效地檢測及校正隨機分布數(shù)據(jù)錯誤。
[0004]一些數(shù)據(jù)存儲裝置支持數(shù)據(jù)屏蔽選項,借此在寫入操作期間,所存儲的數(shù)據(jù)字的一或多個部分保留先前數(shù)據(jù)值,而所述數(shù)據(jù)字的一或多個其它部分經(jīng)更新具有新數(shù)據(jù)值。如本文中所使用,數(shù)據(jù)字是指多個位的信息,其通常作為單元而被處置或存儲在一起,盡管數(shù)據(jù)屏蔽選項可導(dǎo)致所述數(shù)據(jù)字的一或多個部分不同于所述數(shù)據(jù)字的其它部分而被處置或存儲。舉例來說,在存儲器中,存儲在特定地址處的數(shù)據(jù)字可包含128位的數(shù)據(jù),且在存儲器寫入操作期間的數(shù)據(jù)屏蔽選項可防止所述數(shù)據(jù)字的一或多個8位選項從所述寫入操作更新。作為更特定的實例,所述128位數(shù)據(jù)字的最后8位可被屏蔽,其中僅前120位的數(shù)據(jù)將被寫入到存儲器陣列,而最后8位保留在所述寫入操作之前其具有的任何值。
[0005]在寫入操作期間不具有數(shù)據(jù)屏蔽選項的情況下在存儲裝置中實施ECC是非常簡單的,因為待被寫入的數(shù)據(jù)字及奇偶校驗碼不取決于先前所存儲的數(shù)據(jù),但其完全隨待寫入到所述裝置的新數(shù)據(jù)而變化。然而,在具有可用數(shù)據(jù)屏蔽選項的數(shù)據(jù)存儲裝置中,所述數(shù)據(jù)字的經(jīng)屏蔽的部分可含有在如由數(shù)據(jù)屏蔽所請求的舊數(shù)據(jù)與新數(shù)據(jù)可適當?shù)睾喜⒅靶枰U囊换蚨鄠€錯誤。此外,為在具有數(shù)據(jù)屏蔽的寫入操作期間適當?shù)鼐幋a針對經(jīng)合并的數(shù)據(jù)字的奇偶校驗碼,所述經(jīng)屏蔽的部分應(yīng)由ECC編碼器考慮,且應(yīng)在ECC編碼器可產(chǎn)生新奇偶校驗碼之前校正那些經(jīng)屏蔽的部分。換句話說,針對經(jīng)合并的數(shù)據(jù)字的奇偶校驗碼不僅取決于所述數(shù)據(jù)字的新部分,而且取決于被屏蔽的經(jīng)校正的舊數(shù)據(jù)字的部分。
[0006]為解決此依賴性,一種解決方案可為讀出所述舊數(shù)據(jù)字及舊奇偶校驗碼,解碼所述舊奇偶校驗碼,基于所述解碼校正所述舊數(shù)據(jù)字中的任何錯誤,且隨后既而將所述數(shù)據(jù)字的新部分與所述數(shù)據(jù)字的經(jīng)校正的舊部分合并,產(chǎn)生新奇偶校驗碼,且將經(jīng)合并的數(shù)據(jù)字與所述新奇偶校驗碼一起寫入所述存儲裝置。然而,此順序的操作在一些例子中可能為不可接受的,因為ECC解碼及編碼操作可相對較長且在可產(chǎn)生及存儲所述新奇偶校驗碼之前ECC編碼操作等待ECC解碼及校正操作完成。
[0007]解決具有ECC的裝置中的數(shù)據(jù)屏蔽選項的另一方法可為具有針對適于被屏蔽的數(shù)據(jù)字的每一部分的單獨奇偶校驗碼。舉例來說,繼續(xù)128位數(shù)據(jù)字的說明,其中每一 8位部分可被屏蔽,所述數(shù)據(jù)字的每一 8位部分可被指派其自身的奇偶校驗碼,獨立于其它8位部分中的每一者的奇偶校驗碼。當執(zhí)行具有數(shù)據(jù)屏蔽操作的寫入時,經(jīng)屏蔽的部分可經(jīng)歷獨立于新的未經(jīng)屏蔽的部分的ECC編碼的ECC解碼及校正。在此方法中,盡管避免循序ECC操作,但存儲空間及處理能力兩者中的開銷的量增加。使用128位實例,每一 8位部分可具有4位長的奇偶校驗碼,因此需要總共64個奇偶校驗位(50%開銷),及可需要16個獨立ECC編碼/解碼電路以單獨地編碼或解碼針對每一 8位部分的奇偶校驗碼。相比之下,針對以上所描述的循序方法,針對128位數(shù)據(jù)字可需要僅8個奇偶校驗位(6.25%開銷),且單個ECC電路可解碼/校正及編碼所述奇偶校驗碼,因為直到ECC解碼操作完成,ECC編碼操作才能繼續(xù)進行。
【附圖說明】
[0008]圖1為根據(jù)本發(fā)明的實施例的用于校正數(shù)據(jù)錯誤的設(shè)備的框圖。
[0009]圖2為根據(jù)本發(fā)明的實施例的用于校正數(shù)據(jù)錯誤的設(shè)備的框圖。
[0010]圖3為根據(jù)本發(fā)明的實施例的用于校正數(shù)據(jù)錯誤的設(shè)備的框圖。
[0011]圖4為根據(jù)本發(fā)明的實施例的用于校正數(shù)據(jù)錯誤的流程圖。
[0012]圖5為根據(jù)本發(fā)明的實施例的存儲器的框圖。
【具體實施方式】
[0013]下文闡述某些細節(jié)以提供對本發(fā)明的實施例的充分理解。然而,所屬領(lǐng)域的技術(shù)人員將清楚,本發(fā)明的實施例可在無這些特定細節(jié)的情況下而實踐。此外,本文描述的本發(fā)明的特定實施例是以實例的形式提供且不應(yīng)被用于將本發(fā)明的范圍限制于這些特定實施例。在其它例子中,未詳細展示眾所周知的電路、控制信號、時序協(xié)議及軟件操作以便避免不必要地模糊本發(fā)明。
[0014]圖1說明根據(jù)本發(fā)明的實施例的用于校正數(shù)據(jù)錯誤的設(shè)備100。如本文中所使用,設(shè)備可指(例如)集成電路、存儲器裝置、存儲器系統(tǒng)、電子裝置或系統(tǒng)、智能電話、平板計算機、計算機、服務(wù)器等等。在一個實例中,設(shè)備100包含數(shù)據(jù)存儲裝置,例如,易失性或非易失性存儲器陣列106。在其它實施例中,所述數(shù)據(jù)存儲裝置可為中間存儲裝置,例如,緩沖器或高速緩存。設(shè)備100經(jīng)配置以將多個數(shù)據(jù)字存儲在陣列106內(nèi)的相應(yīng)地址處,且從陣列106讀取所存儲的數(shù)據(jù)字。在一個實例中,每一數(shù)據(jù)字可包含128位的數(shù)據(jù),而在其它實例中,每一數(shù)據(jù)字可包含32數(shù)據(jù)位、64數(shù)據(jù)位、256數(shù)據(jù)位、512數(shù)據(jù)位,等等。存儲在陣列106中的數(shù)據(jù)字可出現(xiàn)軟數(shù)據(jù)錯誤或硬數(shù)據(jù)錯誤一一舉例來說,在所述數(shù)據(jù)位被存儲到陣列106的時間與所述數(shù)據(jù)位被讀取的時間之間的時間中,所述數(shù)據(jù)字內(nèi)的一或多個數(shù)據(jù)位可“翻轉(zhuǎn)”且改變數(shù)據(jù)值。在其它實例中,陣列106中的一或多個存儲裝置可被損壞,借此防止校正存儲且讀取一或多個數(shù)據(jù)位。一般來說,任何機制可導(dǎo)致從陣列106讀取的數(shù)據(jù)字中的一或多個位不同于所述相應(yīng)位如何被認為已被寫入到陣列106內(nèi)。
[0015]為減輕此類數(shù)據(jù)錯誤的影響,設(shè)備100包含錯誤校正及/或檢測碼(“ECC”)系統(tǒng)102,借此產(chǎn)生針對每一數(shù)據(jù)字的奇偶校驗碼(其可包含一或多個奇偶校驗位)且存儲在陣列106中。ECC(如本文中所使用)包含任何類型的錯誤檢測及/或錯誤校正方法一一舉例來說,設(shè)備100的ECC系統(tǒng)102可在一些例子中檢測一或多個數(shù)據(jù)錯誤且可在一些實施例中額外地校正一或多個錯誤。ECC系統(tǒng)102可基于漢明碼(Hamming code)(包含延展?jié)h明碼)、循環(huán)冗余校驗或任何其它錯誤檢測及/或錯誤校正方法。由ECC系統(tǒng)102產(chǎn)生且存儲在陣列106中的奇偶校驗碼與相關(guān)聯(lián)數(shù)據(jù)字一起表示關(guān)于所述相關(guān)聯(lián)數(shù)據(jù)字的一些部分或全部的信息,且隨后可用以在從陣列106讀出所述數(shù)據(jù)字時檢測及/或校正所述數(shù)據(jù)字中的錯誤。為簡便起見,本文將描述實例ECC系統(tǒng)102及可檢測且校正數(shù)據(jù)字中的單個位數(shù)據(jù)錯誤的碼,但應(yīng)了解,本文所描述的原理可經(jīng)擴展以檢測及/或校正任何數(shù)目個數(shù)據(jù)錯誤。
[0016]再次參考圖1,ECC系統(tǒng)102包含可大體上并行操作的第一 ECC電路120與第二ECC電路140。第一 ECC電路102接收第一數(shù)據(jù)字DATA-0LD及與所述第一數(shù)據(jù)字DATA-0LD相關(guān)聯(lián)的奇偶校驗碼PARITY-OLD。所述第一數(shù)據(jù)字DATA-0LD可為先前所存儲的且從陣列106讀出的舊數(shù)據(jù)字。盡管其曾經(jīng)存儲在陣列106中,或其正被存儲到陣列106中,但所述第一數(shù)據(jù)字DATA-0LD的一或多個數(shù)據(jù)位可具有自其希望值改變的值,且因此向第一 ECC電路120提供的所述第一數(shù)據(jù)字DATA-0LD可具有一或多個位的數(shù)據(jù)錯誤。第一 ECC電路120還接收第二數(shù)據(jù)字DATA-NEW,其可為新數(shù)據(jù)字,所述第二數(shù)據(jù)字DATA-NEW的至少一些部分將存儲在陣列106中以代替所述第一數(shù)據(jù)字DATA-0LD的相應(yīng)部分(例如,所述第二數(shù)據(jù)字DATA-NEW的至少一些部分將蓋寫所述第一數(shù)據(jù)字DATA-0LD的相應(yīng)部分)。
[0017]第一 ECC電路120經(jīng)配置以在所述第一數(shù)據(jù)字DATA-0LD中檢測到一或多個數(shù)據(jù)錯誤時基于所述第一數(shù)據(jù)字DATA-0LD及其相關(guān)聯(lián)的奇偶校驗碼PARITY-OLD選擇性地校正所述第一數(shù)據(jù)字DATA-0LD中的一或多個數(shù)據(jù)錯誤。經(jīng)校正數(shù)據(jù)字可對應(yīng)于被認為已存儲在陣列106中的數(shù)據(jù)字。在ECC系統(tǒng)102操作期間,向第一 ECC電路120提供的所述第一數(shù)據(jù)字DATA-0LD可能不總是具有一或多個數(shù)據(jù)錯誤。實際上,在一些實例中,從陣列106讀出且向第一 ECC電路120提供的相對少的所述第一數(shù)據(jù)字DATA-0LD將不具有任何數(shù)據(jù)錯誤。應(yīng)理解,盡管第一 ECC電路120經(jīng)配置以在由第一 ECC電路120檢測到此類錯誤時校正向其提供的所述數(shù)據(jù)字DATA-0LD中的一或多個數(shù)據(jù)錯誤,但當向第一 ECC電路120提供的數(shù)據(jù)字DATA-0LD不具有任何數(shù)據(jù)錯誤時,第一 ECC電路120將不“校正”所述數(shù)據(jù)字中的數(shù)據(jù)位,因為不存在錯誤要校正。
[0018]第一ECC電路120也經(jīng)配