儲存對應(yīng)于數(shù)據(jù)的錯誤更正碼的存儲器裝置及其操作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是關(guān)于包括錯誤更正碼(Error Correcting Code,ECC)邏輯的存儲器裝置與系統(tǒng),尤其是一種儲存對應(yīng)于數(shù)據(jù)的錯誤更正碼的存儲器裝置及其操作方法。
【背景技術(shù)】
[0002]用于集成電路的存儲器技術(shù)正在往越來越小的技術(shù)環(huán)節(jié)發(fā)展,并且被使用在單一集成電路上使用越來越大的存儲器矩陣。隨著針對存儲器單位的技術(shù)進(jìn)步,感測數(shù)據(jù)的容許范圍也更嚴(yán)格。另外,存儲器單元與相鄰存儲器單元因高速且大量的存取而存在的存儲器單元狀態(tài)干擾,存儲器單元保存數(shù)據(jù)的能力會受到更嚴(yán)苛的容許范圍所限制。
[0003]由于這些技術(shù)著重于大小與密度,為了解決像是那些更嚴(yán)格的容許范圍與存儲器單元干擾所導(dǎo)致的問題,相嵌于集成電路存儲器的錯誤更正碼已更為廣泛使用。
[0004]通常會將閃存設(shè)定成可以進(jìn)行一次擦除一個區(qū)塊的區(qū)塊擦除。
[0005]當(dāng)擦除區(qū)塊時,會將區(qū)塊中的多個存儲器單元設(shè)為一邏輯值,像是O。在擦除一個區(qū)塊后,可將區(qū)塊中的存儲器單元設(shè)為一不同值,像是I。一旦將存儲器單元設(shè)為1,可通過區(qū)塊擦除將包括該已被編程的存儲器單元改回O。一旦在第一編程操作期間,將區(qū)塊中的一些存儲器單元,像是該區(qū)塊中被選擇的8字節(jié)(byte)或16字節(jié)(word)中的多個存儲器單元編程為1,則可以在第二編程操作期間,在不要求對區(qū)塊進(jìn)行預(yù)先擦除的情況下,就將已知在擦除狀態(tài)內(nèi)的相同區(qū)塊中位于不同的8字節(jié)(byte)或16字節(jié)(word)的其它存儲器單元編程為I。為描述的目的,可將對相同區(qū)塊中不同位置的第一編程操作與第二編程操作所伴隨的區(qū)塊擦除稱作二次組態(tài)(double patterning)。當(dāng)然,當(dāng)個別編程操作被導(dǎo)向區(qū)塊的不同部分時,會有多個(多于兩個)編程操作伴隨多個區(qū)塊擦除操作,以達(dá)成「多次組態(tài)操作」。
[0006]在二次或多次組態(tài)操作中,可以在第一編程操作期間,在區(qū)塊中的特定位置上計算并設(shè)定錯誤更正碼。然而,對于使用區(qū)塊擦除的存儲器中的第二編程操作,錯誤更正碼無法安全地被改變。因為重新計算的錯誤更正碼會要求將錯誤更正碼中的至少一位從I改為0,而該改變會要求擦除整個區(qū)塊中的數(shù)據(jù)的區(qū)塊擦除,所以無法安全地改變第二編程操作中的錯誤更正碼。
[0007]為了可靠地控制針對錯誤偵測的錯誤更正碼邏輯的使用,以及針對二次組態(tài)與多次組態(tài)操作的更正,需要提出一解決方法。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提出一種操作具有儲存對應(yīng)于數(shù)據(jù)的錯誤更正碼的存儲器裝置的方法。針對編程操作,該方法包括在第一編程操作期間寫入延伸錯誤更正碼(Extended ECC),該延伸錯誤更正碼包括錯誤更正碼以及從該錯誤更正碼所導(dǎo)出的延伸位(Extended bit)。該方法包括在第一編程操作之后的第二編程操作期間,使用一預(yù)定狀態(tài)來覆寫包括延伸位與錯誤更正碼的延伸錯誤更正碼,以指示第二編程操作。舉例來說,可使用漢明碼(Hammingcode)來計算錯誤句柄。通過在錯誤更正碼上執(zhí)行邏輯的同或(XNOR)功能,來導(dǎo)出延伸位。在一實施例中,針對延伸錯誤更正碼的預(yù)定狀態(tài)中的每一位具有一高邏輯值。該方法包括將錯誤更正碼設(shè)為在第一編程操作前的初始錯誤更正碼狀態(tài)。該方法包括,在第一編程操作期間,計算錯誤更正碼,以及假如所計算的錯誤更正碼等于該預(yù)定狀態(tài),則將錯誤更正碼改成在該第一編程操作前的初始錯誤更正碼狀態(tài)。在一實施例中,初始錯誤更正碼狀態(tài)中的每一位具有低邏輯值。該方法包括,在第一編程操作期間,假如錯誤更正碼等于初始錯誤更正碼狀態(tài),則將延伸位改變成在第一編程操作之前的初始值。初始值會包括邏輯低值。
[0009]針對讀取操作,該方法包括讀取一含有一延伸位以及對應(yīng)于由存儲器裝置中讀取數(shù)據(jù)的一錯誤更正碼的延伸錯誤更正碼,其中,該延伸位是從該錯誤更正碼導(dǎo)出。該方法包括,決定是否要將使用該延伸錯誤更正碼于該對應(yīng)數(shù)據(jù)上的用以偵測與更正錯誤的錯誤更正碼邏輯致能。該方法包括在含有該延伸位與該錯誤更正碼的該延伸錯誤更正碼上執(zhí)行一位奇偶校驗以偵測位奇偶錯誤。可通過在延伸錯誤更正碼上執(zhí)行邏輯異或(XOR)功能來執(zhí)行位奇偶校驗。該方法包括假如偵測到位奇偶錯誤,并且錯誤更正碼等于在第一編程操作之前的初始錯誤更正碼狀態(tài),則致能用以偵測與更正錯誤的錯誤更正碼邏輯。該方法包括假如偵測到位奇偶錯誤,并且錯誤更正碼等于與初始錯誤更正碼狀態(tài)不同的值,則失能該用以偵測與更正錯誤的錯誤更正碼邏輯。該方法包括假如沒偵測到位奇偶錯誤,并且錯誤更正碼等于初始錯誤更正碼狀態(tài),則將錯誤更正碼改成指示在第一編程操作之后的第二編程操作的一預(yù)定狀態(tài),并接著致能該用以偵測與更正錯誤的錯誤更正碼邏輯。該方法包括,假如沒偵測到位奇偶錯誤,并且錯誤更正碼等于該預(yù)定狀態(tài),則失能該用以偵測與更正錯誤的錯誤更正碼邏輯。該方法包括,假如沒有偵測到位奇偶錯誤,并且錯誤更正碼等于一與該預(yù)定狀態(tài)以及該初始錯誤更正碼狀態(tài)皆不同的值,則致能該用以偵測與更正錯誤的錯誤更正碼邏輯。
[0010]伴隨著附圖簡要說明與和如下公開實施例的詳細(xì)描述,易于理解本發(fā)明的優(yōu)點,范圍和技術(shù)細(xì)節(jié)。
【附圖說明】
[0011]圖1是針對第二編程操作將錯誤更正碼功能失能的編程與讀取操作的示意圖。
[0012]圖2針對第二編程操作將錯誤更正碼功能失能的改良的編程與讀取操作的示意圖。
[0013]圖3是相關(guān)于圖2的改良的編程操作流程圖。
[0014]圖4是相關(guān)于圖2的改良的讀取操作流程圖。
[0015]圖5是改良的編程與讀取操作如何響應(yīng)數(shù)據(jù)與延伸錯誤更正碼的錯誤的表格。
[0016]圖6是一實施例中的改良的讀取操作的簡化實施方式的示意圖。
[0017]圖7是依據(jù)一實施例的集成電路存儲器裝置的簡化芯片方塊圖。
[0018]【符號說明】
[0019]640 64輸入端的異或門
[0020]645錯誤更正碼路徑
[0021]650 2輸入端的異或門
[0022]660錯誤更正碼譯碼器
[0023]670多功復(fù)用器
[0024]685奇偶路徑
【具體實施方式】
[0025]本發(fā)明的詳細(xì)說明于隨后描述,這里所描述的較佳實施例是作為說明和描述的用途,并非用來限定本發(fā)明的范圍。
[0026]圖1是針對第二編程操作將錯誤更正碼功能失能的編程與讀取操作的示意圖。指示位(先前技術(shù))會被用來指示是否要在讀取操作期間,在數(shù)據(jù)上執(zhí)行錯誤更正碼邏輯來偵測以及更正錯誤。
[0027]在圖1所示的例子中,欄110中所顯示的是頁面數(shù)據(jù)中的128位數(shù)據(jù)。欄120中所顯示的是針對對應(yīng)的128位數(shù)據(jù)的錯誤更正碼。欄130中所顯示的是指示位。針對第一編程操作會將邏輯值「O」指定給指示位,以致能錯誤更正碼。致能錯誤更正碼代表,偵測并更正在讀取期間的頁面的所計算以及所儲存的錯誤更正碼的對應(yīng)數(shù)據(jù)上的錯誤。在第一編程操作之后的第二編程操作期間,有時候不需要要求頁面的擦除操作,就能將不同數(shù)據(jù)寫入數(shù)據(jù)的相同頁面。舉例來說,當(dāng)將第二程序?qū)蛲A粲诘谝怀绦蛑蟮牟脸隣顟B(tài)中的頁面的一部分時,會發(fā)生上述情況。在該圖中,會針對第二編程操作將指示位指定為「I」,以失能錯誤更正碼。失能錯誤更正碼代表不會對在讀取操作期間使用錯誤更正碼的對應(yīng)數(shù)據(jù)執(zhí)行錯誤偵測與更正。假如執(zhí)行第二編程操作而沒有進(jìn)行會同時擦除錯誤更正碼位的預(yù)先擦除,則接下來在像是閃存中的存儲器內(nèi),用來自于第二編程操作的錯誤更正碼來覆寫來自第一編程操作的錯誤更正碼會是不可靠的。所以,在這樣的情況中,對于第二編程操作之后的數(shù)據(jù)讀取,將錯誤更正碼操作失能是重要的。
[0028]數(shù)據(jù)頁面的區(qū)塊擦除可以造成初始錯誤更正碼狀態(tài),以使初始錯誤更正碼狀態(tài)全部是「O」。舉例來說,假如錯誤更正碼包括8位,接下來在區(qū)塊擦除之后,初始錯誤更正碼狀態(tài)會等于「00000000」或是擦除狀態(tài)值。如列140所示,在區(qū)塊擦除后,頁面中的數(shù)據(jù)以及針對頁面的指示位也是全部是「O」。在此例子中,雖然錯誤更正碼會針對不同長度的對應(yīng)數(shù)據(jù)具有不同的位數(shù)量,ECC[7:0]代表對應(yīng)于128位的數(shù)據(jù)的8位的錯誤更正碼。
[0029]針對第一編程操作,如列150所示,數(shù)據(jù)「0000...0001」系設(shè)定于數(shù)據(jù)頁面中,ECC[7:0]具有對應(yīng)于數(shù)據(jù)的計算值「00000011」,而指示位會被指定為「O」來致能錯誤更正碼。
[0030]針對第二編程操作,如列160所示,如同第一編程操作所設(shè)定,設(shè)定第二位的數(shù)據(jù)會造成相同數(shù)據(jù)頁面中的「0000...0011」,ECC[7:0]會保留來自第一編程操作的所計算值「00000011」,并且指示位會被設(shè)為值「I」以失能錯誤更正碼。指示位的值不是從ECC[7:0]所導(dǎo)出,并且是被設(shè)定來指示第二編程操作的發(fā)生。第二編程操作所造成的數(shù)據(jù)「0000...0011」是不同于第一編程操作所造成的數(shù)據(jù)「0000...0001」。在接續(xù)著第二編程操作的讀取操作中,由于指示位具有值「I」以失能錯誤更正碼,所以不會在第二編程操作所設(shè)定的數(shù)據(jù)上執(zhí)行錯誤更正碼邏輯。
[0031]列170是