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