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