TWI529735B - 二次組態記憶體裝置之錯誤更正碼方法與裝置 - Google Patents
二次組態記憶體裝置之錯誤更正碼方法與裝置 Download PDFInfo
- Publication number
- TWI529735B TWI529735B TW103126835A TW103126835A TWI529735B TW I529735 B TWI529735 B TW I529735B TW 103126835 A TW103126835 A TW 103126835A TW 103126835 A TW103126835 A TW 103126835A TW I529735 B TWI529735 B TW I529735B
- Authority
- TW
- Taiwan
- Prior art keywords
- error correction
- correction code
- programming operation
- bit
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1052—Bypassing or disabling error detection or correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Description
本發明係關於包括錯誤更正碼(error correction code)邏輯之記憶體裝置與系統。
用於積體電路之記憶體技術正在往越來越小的技術環節發展,並且被使用在單一積體電路上使用越來越大的記憶體矩陣。隨著針對記憶體單位的技術進步,感測資料的容許範圍也更嚴格。另外,記憶體單元與相鄰記憶體單元因高速且大量的存取而存在的記憶體單元狀態干擾,記憶體單元保存資料的能力會受到更嚴苛的容許範圍所限制。
由於這些技術著重於大小與密度,為了解決像是那些更嚴格的容許範圍與記憶體單元干擾所導致的問題,相嵌於積體電路記憶體的錯誤更正碼已更為廣泛使用。
通常會將快閃記憶體設定成可以進行一次清除一個區塊的區塊清除。當清除區塊時,會將區塊中的多個記憶體單元設為一邏輯值,像是0。在清除一個區塊後,可將區塊中的記憶體單元設為一不同值,像是1。一旦將記憶體單元設為1,可藉由區塊清除將包括該已被編程之記憶體單元改回0。一旦在第一編程操作期間,將區塊中的一些記憶體單元,像是該區塊中被選擇的8位元組(byte)或16位元組(word)中的多個記憶體單元編程為1,則可以在第二編程操作期間,在不要求對區塊進行預先
清除的情況下,就將已知在清除狀態內之相同區塊中位於不同之8位元組(byte)或16位元組(word)之其它記憶體單元編程為1。為描述之目的,可將對相同區塊中不同位置之第一編程操作與第二編程操作所伴隨的區塊清除稱作二次組態(double patterning)。當然,當個別編程操作被導向區塊的不同部分時,會有多個(多於兩個)編程操作伴隨多個區塊清除操作,以達成「多次組態操作」。
在二次或多次組態操作中,可以在第一編程操作期間,在區塊中的特定位置上計算並設定錯誤更正碼。然而,對於使用區塊清除之記憶體中的第二編程操作,錯誤更正碼無法安全地被改變。因為重新計算的錯誤更正碼會要求將錯誤更正碼中的至少一位元從1改為0,而該改變會要求清除整個區塊中的資料之區塊清除,所以無法安全地改變第二編程操作中的錯誤更正碼。
為了可靠地控制針對錯誤偵測之錯誤更正碼邏輯的使用,以及針對二次組態與多次組態操作之更正,需要提出一解決方法。
本發明提出一種操作具有儲存對應於資料之錯誤更正碼之記憶體裝置的方法。針對編程操作,該方法包括在第一編程操作期間寫入延伸錯誤更正碼(Extended ECC),該延伸錯誤更正碼包括錯誤更正碼以及從該錯誤更正碼所導出之延伸位元(Extended bit)。該方法包括在第一編程操作之後的第二編程操作期間,使用一預定狀態來覆寫包括延伸位元與錯誤更正碼之延伸錯誤更正碼,以指示第二編程操作。舉例來說,可使用漢明碼(Hamming code)來計算錯誤控制碼。藉由在錯誤更正碼上執
行邏輯的同或(XNOR)功能,來導出延伸位元。在一實施例中,針對延伸錯誤更正碼之預定狀態中的每一位元具有一高邏輯值。該方法包括將錯誤更正碼設為在第一編程操作前的初始錯誤更正碼狀態。該方法包括,在第一編程操作期間,計算錯誤更正碼,以及假如所計算之錯誤更正碼等於該預定狀態,則將錯誤更正碼改成在該第一編程操作前的初始錯誤更正碼狀態。在一實施例中,初始錯誤更正碼狀態中的每一位元具有低邏輯值。該方法包括,在第一編程操作期間,假如錯誤更正碼等於初始錯誤更正碼狀態,則將延伸位元改變成在第一編程操作之前的初始值。初始值會包括邏輯低值。
針對讀取操作,該方法包括讀取一含有一延伸位元以及對應於由記憶體裝置中讀取資料的一錯誤更正碼之延伸錯誤更正碼,其中,該延伸位元係從該錯誤更正碼導出。該方法包括,決定是否要將使用該延伸錯誤更正碼於該對應資料上之用以偵測與更正錯誤之錯誤更正碼邏輯致能。該方法包括在含有該延伸位元與該錯誤更正碼之該延伸錯誤更正碼上執行一位元奇偶校驗以偵測位元奇偶錯誤。可藉由在延伸錯誤更正碼上執行邏輯異或(XOR)功能來執行位元奇偶校驗。該方法包括假如偵測到位元奇偶錯誤,並且錯誤更正碼等於在第一編程操作之前的初始錯誤更正碼狀態,則致能用以偵測與更正錯誤之錯誤更正碼邏輯。該方法包括假如偵測到位元奇偶錯誤,並且錯誤更正碼等於與初始錯誤更正碼狀態不同之值,則失能該用以偵測與更正錯誤之錯誤更正碼邏輯。該方法包括假如沒偵測到位元奇偶錯誤,並且錯誤更正碼等於初始錯誤更正碼狀態,則將錯誤更正碼改成指示在第一編程操作
之後的第二編程操作之一預定狀態,並接著致能該用以偵測與更正錯誤之錯誤更正碼邏輯。該方法包括,假如沒偵測到位元奇偶錯誤,並且錯誤更正碼等於該預定狀態,則失能該用以偵測與更正錯誤之錯誤更正碼邏輯。該方法包括,假如沒有偵測到位元奇偶錯誤,並且錯誤更正碼等於一與該預定狀態以及該初始錯誤更正碼狀態皆不同之值,則致能該用以偵測與更正錯誤之錯誤更正碼邏輯。
伴隨著附圖簡要說明與和如下公開實施例的詳細描述,易於理解本發明的優點,範圍和技術細節。
640‧‧‧64輸入端之異或閘
645‧‧‧錯誤更正碼路徑
650‧‧‧2輸入端之異或閘
660‧‧‧錯誤更正碼解碼器
670‧‧‧分工器
685‧‧‧奇偶路徑
第1圖係針對第二編程操作將錯誤更正碼功能失能的編程與讀取操作之示意圖。
第2圖針對第二編程操作將錯誤更正碼功能失能之改良的編程與讀取操作之示意圖。
第3圖係相關於第2圖之改良的編程操作流程圖。
第4圖係係相關於第2圖之改良的讀取操作流程圖。
第5圖係改良的編程與讀取操作如何回應資料與延伸錯誤更正碼的錯誤之表格。
第6圖係一實施例中之改良的讀取操作之簡化實施方式之示意圖。
第7圖係依據一實施例之積體電路記憶體裝置之簡化晶片方塊圖。
本發明的詳細說明於隨後描述,這裡所描述的較佳實施例是作為說明
和描述的用途,並非用來限定本發明之範圍。
第1圖係針對第二編程操作將錯誤更正碼功能失能的編程與讀取操作之示意圖。指示位元(先前技術)會被用來指示是否要在讀取操作期間,在資料上執行錯誤更正碼邏輯來偵測以及更正錯誤。
在第1圖所示的例子中,欄110中所顯示的是頁面資料中之128位元資料。欄120中所顯示的是針對對應之128位元資料的錯誤更正碼。欄130中所顯示的是指示位元。針對第一編程操作會將邏輯值「0」指定給指示位元,以致能錯誤更正碼。致能錯誤更正碼代表,偵測並更正在讀取期間的頁面之所計算以及所儲存之錯誤更正碼的對應資料上之錯誤。在第一編程操作之後的第二編程操作期間,有時候不需要要求頁面之清除操作,就能將不同資料寫入資料的相同頁面。舉例來說,當將第二程式導向停留於第一程式之後的清除狀態中之頁面的一部分時,會發生上述情況。在該圖中,會針對第二編程操作將指示位元指定為「1」,以失能錯誤更正碼。失能錯誤更正碼代表不會對在讀取操作期間使用錯誤更正碼之對應資料執行錯誤偵測與更正。假如執行第二編程操作而沒有進行會同時清除錯誤更正碼位元之預先清除,則接下來在像是快閃記憶體中的記憶體內,用來自於第二編程操作的錯誤更正碼來覆寫來自第一編程操作的錯誤更正碼會是不可靠的。所以,在這樣的情況中,對於第二編程操作之後的資料讀取,將錯誤更正碼操作失能是重要的。
資料頁面的區塊清除可以造成初始錯誤更正碼狀態,以使初始錯誤更正碼狀態全部是「0」。舉例來說,假如錯誤更正碼包括8位元,接下來
在區塊清除之後,初始錯誤更正碼狀態會等於「00000000」或是清除狀態值。如列140所示,在區塊清除後,頁面中的資料以及針對頁面的指示位元也是全部是「0」。在此例子中,雖然錯誤更正碼會針對不同長度之對應資料具有不同的位元數量,ECC[7:0]代表對應於128位元的資料之8位元的錯誤更正碼。
針對第一編程操作,如列150所示,資料「0000…0001」係設定於資料頁面中,ECC[7:0]具有對應於資料之計算值「00000011」,而指示位元會被指定為「0」來致能錯誤更正碼。
針對第二編程操作,如列160所示,如同第一編程操作所設定,設定第二位元的資料會造成相同資料頁面中的「0000…0011」,ECC[7:0]會保留來自第一編程操作之所計算值「00000011」,並且指示位元會被設為值「1」以失能錯誤更正碼。指示位元之值不是從ECC[7:0]所導出,並且係被設定來指示第二編程操作的發生。第二編程操作所造成之資料「0000…0011」係不同於第一編程操作所造成之資料「0000…0001」。在接續著第二編程操作的讀取操作中,由於指示位元具有值「1」以失能錯誤更正碼,所以不會在第二編程操作所設定之資料上執行錯誤更正碼邏輯。
列170係由於保存錯誤,指示位元「1」會被誤轉成「0」(例如173)的情況。在讀取操作中,指示位元之錯誤值會讓錯誤更正碼被致能,並因此使用了不可靠的錯誤更正碼會錯誤地執行錯誤更正碼邏輯,如此一來資料就會被錯誤地記號為具有無法更正的錯誤,或還原成第一編程操作所設定的資料。舉例來說,在列180上,使用來自第一編程操作的錯誤
更正碼會使資料中的位元(如181)被從第二編程操作所設定的「1」改為第一編程操作所設定的「0」,造成讀取資料中無法偵測的資料錯誤。
第2圖係針對第二編程操作將錯誤更正碼功能失能之改良的編程與讀取操作之示意圖。延伸錯誤更正碼(例如xtECC[8:0])包括錯誤更正碼(例如xtECC[7:0])以及從錯誤更正碼所導出的延伸位元(如xtECC[8])。延伸位元可被用來指示是否要執行錯誤更正邏輯來對具有讀取操作之對應資料進行錯誤偵測以及錯誤更正,其中,藉由第一編程操作或第二編程操作設定對應資料。另外,在此說明的延伸位元會防止未偵測到的錯誤發生,如參考第1圖之列180之上述說明。在此例子中,雖然錯誤更正碼會具有針對不同大小之對應資料之不同數量的位元,xtECC[7:0]指的的是針對128位元之對應資料的8位元錯誤更正碼。
延伸位元係從錯誤更正碼位元導出,例如藉由計算一奇數校驗位元值,並將其加至錯誤更正碼以執行奇數校驗。奇數校驗位元值使值為1的位元的總數量會為一奇數,其中,位元的總數量會包括錯誤更正碼中的位元與延伸位元。舉例來說,假如錯誤更正碼具有8位元,並且8位元個別具有值1,總共有8個1,其中8不是奇數,接下來奇數校驗位元值被設定為1,如此一來總共有9個1,其中9為奇數。舉另一例子來說,假如錯誤更正碼具有8位元,並且8位元中有3位元具有值1,總共有3個1,其中3為奇數,接下來會決定奇數校驗位元值為0,如此一來總共會有3個1,其中3為奇數。
由於當偶數個同或(XNOR)函數的輸入值為1時,該同或(XNOR)函數會傳回1,所以可使用一邏輯同或(XNOR)函數於錯誤更正碼上以產生該
奇數校驗位元值。由於當奇數個異或(XOR)函數的輸入值為1時,該異或(XOR)函數會傳回1否則傳回0,所以可使用一邏輯異或(XOR)函數於錯誤更正碼及延伸位元上以執行奇數校驗。
在第2圖中所示的例子中,資料頁面中128位元的資料會顯示在欄210中。欄220中會顯示對應於128位元資料之錯誤更正碼。欄230中會顯示延伸位元xtECC[8]。一般來說,在第一編程操作期間,針對對應資料之錯誤更正碼會衍生出延伸位元作為奇數校驗位元,而在讀取操作期間,除了這裡所說明的初始狀況與特殊狀況之外,假如在錯誤更正碼以及延伸位元上之奇數校驗沒顯示錯誤,則會執行錯誤偵測與錯誤更正。
資料頁面的區塊清除可以造成初始錯誤更正碼狀態,以使初始錯誤更正碼狀態全部是「0」。舉例來說,假如錯誤更正碼包括8位元,接著在區塊清除之後,初始錯誤更正碼狀態會等於「00000000」或是被清除後之狀態值。如列240所示,在區塊清除之後,頁面中的延伸位元xtECC[8]與資料也全部為「0」。如下所述,在錯誤更正碼與延伸位元上的奇偶校驗會將初始錯誤更正碼狀態與延伸位元之初始值「0」當作奇偶錯誤。如連同第3圖與第4圖之說明,編程與讀取操作已解決此「初始情況」,以保護當錯誤更正碼在初始錯誤更正碼狀態時之資料。錯誤更正碼與延伸位元係針對第一編程操作來計算。錯誤更正碼與延伸位元在第二編程操作被一預定狀態所覆寫。該預定狀態之奇偶校驗不會被視為一奇偶錯誤,而是頁面中的資料已被該第二編程操作所覆寫過的指示,所以錯誤更正碼邏輯不應被致能來進行錯誤偵測與錯誤更
正。
針對第一編程操作,如列250所示,資料「0001…0001」係被設定於資料之頁面。xtECC[7:0]初始具有針對對應資料之計算值「11111111」,而延伸位元xtECC[8]具有使用邏輯同或函數從所計算之錯誤更正碼值「11111111」所導出之具有值為「1」之奇數校驗位元。針對以下與第二編程操作相連之說明理由,針對第一編程操作之所計算的錯誤更正碼值「11111111」會被改成「00000000」(226)。
針對第二編程操作,如列260所示,資料「0001…0011」係被設定於第一編程操作所設定之資料的相同頁面中。第二編程操作所設定之資料「0001…0011」係不同於第一編程操作所設定之資料「0001…0001」。確切地說,第二編程操作所設定之資料中的位元261係不同於第一編程操作所設定之資料中的對應位元251。
針對第二編程操作,會使用像是「11111111」之預定狀態來覆寫xtECC[7:0]與延伸位元xtECC[8],以指示出第二編程操作會設定該資料,並且因此該資料上的讀取操作係用以失能錯誤更正碼,而不是使用錯誤更正碼來在該資料上執行錯誤更正與錯誤偵測。
然而,在特殊情形中,xtECC[7:0]之計算值會包括「11111111」,並且從該計算值所導出之延伸位元xtECC[8]為「1」,與預定狀態相符以失能錯誤更正碼。為確保xtECC[7:0]之計算值「11111111」不會指示失能錯誤更正碼,在第一編程操作期間,針對第一編程操作之「11111111」的計算錯誤更正碼值會被設為「00000000」(226)。如以下所說明,讀取操作會辨識此特殊情形,將「00000000」改成「11111111」,並接著
致能錯誤更正碼以對對應資料進行錯誤偵測與錯誤更正。
如列270所示,由於保存錯誤,針對第二編程操作所設定的資料之讀取操作,會不正確地***延伸位元xtECC[8]。假如發生了此錯誤,錯誤更正碼上之奇數校驗與延伸位元xtECC[8]會指示奇數校驗錯誤,以防止不正確地執行錯誤更正碼邏輯。舉例來說,假如因為保存錯誤(273)而將針對第二編程操作之列260中的值為「1」之xtECC[8]改為列270上之「0」,具有值「11111111」之錯誤更正碼的奇數校驗與具有值為「0」之延伸位元xtECC[8]會指示奇數校驗錯誤並且不會對第二編程操作所設定之資料做任何改變。在列280上,縱使延伸位元xtECC[8]被錯誤地改變,如列270上所示,所讀取之位元281具有與第二編程操作所設定之位元261相同的值(假設位元261沒有錯誤)。
本發明使用的是十六進位與二進位表示法。舉例來說,「8’hFF」是8位元二元數字「8’b11111111」的十六進位表示法,其中在二元數字中的個別位元具有的值為「1」。「8’hFF」中的「h」指的是十六進位,而「8’b11111111」中的「b」指的是二進位。「8’hFF」中的「h」之後的位元為十六進位位元。「8’b11111111」中的「b」之後的位元為二進位位元。十六進位位元包括16個值:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E與F,分別等於二進位中的0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、以及1111。因此,十六進位的「8’hFF」、「8’h00」、與「9’h1FF」分別為二進位的「8’b11111111」、「8’b00000000」、以及「9’b111111111」。舉另一例子來說,1’b0為只包括一個值為「0」的
位元之二進位數字,而1’b1為只包括一個值為「1」的位元之二進位數字。
第3圖為與第2圖相關之改良的編程操作流程圖。在步驟310中,像是128位元之資料,可用來在使用編程操作之記憶體裝置中的資料頁面裡進行編程。在步驟315中,會決定針對資料之編程操作為一在編程任何資料之前的第一編程操作,或是為一在第一編程操作之後的已有至少一些資料被編程於該頁面中的第二編程操作。換句話說,假如該頁面中不具有任何編程資料,則該編程操作為第一編程操作,否則在不需要預先執行清除操作以執行該第二編程時,則該編程操作為第二編程操作。
針對第一編程操作,在步驟320,使用錯誤更正碼方法的記憶體裝置中之錯誤更正碼邏輯會針對資料計算錯誤更正碼(ECC)。在第3圖所示之例子中,該資料具有128位元之長度以及該資料之錯誤更正碼具有8位元,如第3圖中之xtECC[7:0]所指示。一般來說,錯誤更正碼針對不同長度的對應資料會具有不同之位元數量。
記憶體裝置中的錯誤更正碼邏輯能支援任何適用的錯誤更正碼方法。代表性的錯誤更正碼方法包括了漢明碼,以及延伸漢明碼。與特定資料組相關之錯誤更正碼ECC的長度由以下三要素決定:(1)錯誤更正碼方法;(2)最大更正位元數量;(3)一頁面的資料長度。
在步驟320,在計算出錯誤更正碼ECC(例如xtECC[7:0])之後,從xtECC[7:0]會導出延伸位元xtECC[8]。延伸位元可以是奇數校驗位元,並由在錯誤更正碼上執行邏輯同或函數(XNOR)所導出,如此一來
xtECC[8:0]中「1」的數量會是奇數。在與第4圖相連說明之讀取操作中,延伸位元會被用以決定是否要執行錯誤更正碼邏輯來進行錯誤偵測與錯誤更正。
在步驟330中,在第二編程操作期間,會使用一預定狀態(例如9’h1FF)來覆寫包括延伸位元(例如xtECC[8])與錯誤更正碼(例如xt[7:0])之延伸錯誤更正碼(例如xtECC[8:0]),以指示第二編程操作。在與第4圖相連說明之讀取操作中,該預定狀態會將在第二編程操作所編程之資料上執行錯誤偵測與錯誤更正之錯誤更正碼邏輯失能(步驟450與404,第4圖)。
在步驟340中,在第一編程操作期間,如與第2圖相連之說明,會決定出錯誤更正碼是否等於初始錯誤更正碼狀態(例如,「xtECC[7:0]=8’h00」)。假如錯誤更正碼不等於初始錯誤更正碼狀態,則接下來在步驟350中,會另決定錯誤更正碼是否等於指示第二編程操作之預定狀態(例如,「xtECC[7:0]=8’hFF」)。
假如錯誤更正碼不等於初始錯誤更正碼狀態,並且不等於預定狀態(步驟340,N;步驟350,N),則在步驟365中,來自步驟320之結果的錯誤更正碼(例如xtECC[7:0])與延伸位元(例如xtECC[8])是不變的。在步驟380中,會將包括錯誤更正碼之資料與延伸錯誤更正碼(例如xtECC[8:0])設定在記憶體裝置中。如第4圖相連之說明,假如沒有奇數校驗錯誤而錯誤更正碼等於一與預定狀態以及非初始錯誤更正碼狀態皆不同之一值,則讀取操作會致能錯誤更正碼來進行錯誤偵測與錯誤更正(步驟440、450、以及405,第4圖)。假如有奇數校驗錯誤並且錯誤更正碼包括非初始錯誤更正碼狀態以外之值,則讀取操作會將錯誤更正邏輯(步
驟430與402,第4圖)失能。
在第一編程操作期間,可能會出現特殊情況與初始情況並在此做一說明。該特殊情況會發生在當針對xtECC[7:0]所計算之值等於用來指示第二編程操作之預定狀態(例如「8’hFF」)時。在步驟360中,假如所計算之值等於預定狀態(例如「8’hFF」),則針對第一編程操作之所計算之錯誤更正碼值會改變,例如變為初始錯誤更正碼狀態(例如「8’h00」)。延伸位元xtECC[8]是不變的,因為「8’hFF」與「8’h00」之奇數校驗位元皆為「1」。如與第4圖相連之說明,讀取操作可以辨識特殊情況,將錯誤更正碼從初始錯誤更正碼狀態(例如「8’h00」)改變回預定狀態(例如「8’hFF」),並接著致能錯誤更正碼以便在對應資料上進行錯誤偵測與錯誤更正(步驟440與403,第4圖)。
假如在步驟340中,針對錯誤更正碼所計算之值等於初始之被清除狀態之錯誤更正碼(例如「xtECC[7:0]=8’h00」),接著會發生初始情況。在初始情況中,針對初始錯誤更正碼狀態「xtECC[7:0]=8’h00」之延伸位元(例如xtECC[8])為「1」。因此,步驟340之後的延伸錯誤更正碼(例如xtECC[8:0])具有值9’h100,對應一在步驟360之後於特殊情況下之延伸錯誤更正碼之值,並因此在讀取操作(第4圖,步驟440與403)中,或會不正確地指示對應於初始錯誤更正碼狀態(「xtECC[7:0]=8’h00」)之計算值應改為該預定狀態(例如「xtECC[7:0]=8’hFF」)。為解決此初始情況之問題,在步驟370中,假如錯誤更正碼等於初始錯誤更正碼狀態,則會在第一編程操作前,將延伸位元(例如xtECC[8])改變為初始值。如第2圖所說明,延伸位元之初始值係位於以值「0」來代表低邏
輯態。所以,在步驟370之後,9位元之延伸錯誤更正碼等於初始8位元錯誤更正碼狀態以及延伸位元之初始之一位元值(例如xtECC[8:0]=9’h000)。在與第4圖相連說明所述之讀取操作中,當頁面中沒有編程資料時,會針對初始錯誤更正碼狀態,以及針對當第一編程操作期間之錯誤更正碼的計算值等於初始錯誤更正碼狀態時的初始情況,來致能錯誤更正碼邏輯。(步驟430與431,第4圖)。
在步驟380中,資料與針對該資料之延伸錯誤更正碼(例如xtECC[8:0])會被編程於記憶體裝置中,以進行第一編程操作或第二編程操作。
第4圖係與第2圖之敘述相關的改良之讀取操作的流程圖。在步驟410中,會從記憶體裝置讀取資料與對應於該資料之一包括延伸位元(例如xtECC[8])與錯誤更正碼(例如xtECC[7:0])的延伸錯誤更正碼(例如xtECC[8:0]),其中,延伸位元係從第一編程操作期間之錯誤更正碼所導出(步驟320,第3圖)。在步驟420中,會藉由在延伸錯誤更正碼(例如xtECC[8:0])上執行邏輯異或(XOR)函數,來進行延伸錯誤更正碼(例如xtECC[8:0])之奇偶校驗。假如延伸錯誤更正碼包括偶數個值為「1」的位元,則異或函數會傳回「1’b0」來指示奇數校驗錯誤。假如延伸錯誤更正碼包括奇數個值為「1」的位元,則異或函數會傳回「1’b1」來指示沒有奇數校驗錯誤。流程圖剩下的部分是依據錯誤更正碼(例如xtECC[7:0])之值上有無奇數校驗錯誤,來決定是否要致能使用延伸錯誤更正碼來偵測並更正資料中的錯誤之錯誤更正碼邏輯。
在步驟430中,會決定錯誤更正碼是否等於第一編程操作前之初始錯誤更正碼狀態(例如xtECC[7:0]=8’h00)。在步驟431中,假如指示出有奇
數校驗錯誤以及錯誤更正碼等於第一編程操作前的初始錯誤更正碼狀態(例如xtECC[7:0]=8’h00),則會致能錯誤更正碼邏輯。初始錯誤更正碼狀態可在第一編程操作前存在,例如為準備第一編程操作而清除頁面資料之時。初始錯誤更正碼狀態也會因解決該初始情況而存在,其中,如第3圖中步驟370所說明,該延伸位元會在第一編程操作前被改變為該初始值。
在步驟432中,假如一奇偶校驗錯誤被指出並且錯誤更正碼包括非初始錯誤更正碼狀態(例如xtECC[7:0]=8’h00)之值,則會將錯誤更正碼邏輯失能。換句話說,當延伸錯誤更正碼(例如xtECC[8:0])上有奇偶校驗錯誤,以及錯誤更正碼不是在初始錯誤更正碼狀態時,會將錯誤更正碼邏輯失能。因此,假如由於奇偶校驗錯誤而將第一編程操作期間所設定之延伸位元(例如xtECC[8])反轉,讀取操作期間之奇偶校驗會防止此錯誤導致不正確地執行錯誤更正碼邏輯去改變資料。
在步驟440中,當沒有奇數校驗錯誤被指出時,會再進一步決定錯誤更正碼是否是在初始錯誤更正碼狀態。在步驟403中,如果錯誤更正碼是在初始錯誤更正碼狀態(例如,xtECC[7:0]=8'h00),則錯誤更正碼會改變為該預定狀態(例如,xtECC[7:0]:=8'hFF)。步驟403中反轉在第一編程操作時於特殊情況下之步驟360的動作,如同第3圖相關的描述。隨後啟動錯誤更正碼邏輯的錯誤檢測和校正,有效地使用原來在第一編程操作的步驟320所產生的錯誤更正碼。
在步驟450中,表示沒有奇偶錯誤時,進一步判斷錯誤更正碼是否為表示第二編程操作之預定狀態(例如xtECC[7:0]=8'hFF)。如果是,那麼
在步驟404中,錯誤更正邏輯會被失能,以防止對第二編程操作所設定之數值做錯誤之檢測和校正。如果否,則在步驟405中,錯誤更正邏輯會被致能以檢測和校正第一編程操作所設定之數值之錯誤。
第5圖係改良的編程與讀取操作如何回應資料與延伸錯誤更正碼的錯誤之表格,其中,該延伸錯誤更正碼包括一錯誤更正碼(例如,xtECC[7:0]和一由錯誤更正碼所產生的奇偶校驗位元(parity bit)延伸位元(例如xtECC[8])。使用奇偶校驗位元之改良的編程與讀取操作方式改進了如第1圖中所描述的使用一個指示位元的方式,因此,由於保存錯誤造成奇偶校驗位元改變,改進的讀操作可以檢測到延伸錯誤更正碼之奇偶校驗錯誤,並防止因錯誤地將錯誤更正碼邏輯致能所導致的數據錯誤。多個行中針對“數據失敗”、“xtECC[7:0]失敗”、“xtECC[8]錯誤”之步驟401~405分別對應第4圖中之讀取流程的步驟401~405。第5圖包括四種情形其步驟編號與第4圖中帶下劃線的步驟編號相對應。四種情況的說明如下。
海明碼(Hamming Code)解碼器(例如,660,圖6),可以檢測和校正多個數據位元或對應於該多個數據位元之ECC位元之錯誤。在一個實施例中,在128個數據位元(例如,數據[127:0])或對應於該128個數據位元之8個錯誤更正碼位元(例如xtECC[7:0])都可能會發生錯誤。在此實施例中,海明碼(Hamming Code)解碼器有一8位元之輸出,每一解碼器輸出值可以指出128個數據位元或8個錯誤更正碼位元中那一個位元需要校正。下表列示一些解碼器輸出值以及與其在128個數據位元或8個錯誤更正碼位元中相對應的校正。特別是,如果解碼器輸出值等於
8'b00000000那麼就沒有錯誤,如果解碼器的輸出值是大於8'b10001000,則沒有一個數據位元或錯誤更正碼位元被校正。
在510列,於初始情況下,xtECC[7:0]是在初始的錯誤更正碼狀態“00000000”,也就是十六進制之“8'h00”。xtECC[8]的初始值為'0',也就是十六進制之“1'b0。因此,圖4的步驟420表示一個奇偶錯誤(parity error),並根據步驟401,檢測和校正錯誤的錯誤更正碼邏輯被致能。因此,如果對應於xtECC[7:0]的數據發生錯誤,步驟401會更正錯誤,如在510列的“數據失敗”行所示。
如果xtECC[7:0]在初始情況下發生錯誤,情景1可能會發生。在初始的錯誤更正碼狀態“00000000”中之一位元被倒值為'1',從而在圖4中之步驟420可能會錯誤地表示沒有奇偶校驗錯誤。由於錯誤的xtECC[7:0]現具有一初始錯誤更正碼狀態(如8'h00)以及指示第二個編程操作之該預定狀態(如8'hFF)以外的其他值,步驟405錯誤地致能錯誤更正碼邏輯,如510列中之“ECC[7:0]失敗”行所示。
如果在初始情況下一延伸位元發生錯誤,情景2可能會發生。該延伸位元xtECC[8]被倒值成'1',從而在圖4中之步驟420可能會表示沒有奇偶校驗錯誤。由於xtECC[7:0]等於初始的錯誤更正碼狀態(例如8'h00),xtECC[7:0]被改變為步驟403中的預定狀態(例如8'hFF)。步驟403也顯示出錯誤更正碼邏輯被致能。然而,在情景2中的解碼器的輸出等於8'b11111111,其係大於上述表格中的8'b10001000。因此,沒有錯誤更正碼校正被執行。情景2被顯示在圖5中之510列中之“xtECC[8]]失敗”行之步驟403。
在520列,於初始情況下,xtECC[7:0]等於初始的錯誤更正碼狀態“00000000”,也就是十六進制之“8'h00。xtECC[8]具有值'1',也就是十六進制之“1'b1。如同圖2中的250列和260列之特殊情況所解釋的理由,特殊情況之xtECC[7:0]的計算值由原來的“11111111”或“8'hFF”,變更為“00000000“或”8'h00“。因此,圖4中的步驟420表示沒有奇偶錯誤(parity error),並於步驟403中,檢測和校正錯誤的錯誤更正碼邏輯被致能。因此,如果對應於xtECC[7:0]之數據發生錯誤時,數據之錯誤藉由步驟403來更正,如520列中之的“數據失敗”行所示。
如果xtECC[7:0]於特殊情況下發生錯誤,在圖4中的步驟420可以指示一個奇偶錯誤。由於失敗的xtECC[7:0]不再等於初始的錯誤更正碼狀態(例如8'h00),錯誤更正碼邏輯於步驟402中被失能,如圖5中的520列中之ECC[7:0]失敗”行所示。
如果在初始情況下一延伸位元發生錯誤,情景3可能會發生。該延伸位元xtECC[8]被反相為一“0”,從而圖4中的步驟420可能指示一個奇偶錯誤。由於xtECC[7:0]等於初始的錯誤更正碼狀態(例如8'h00),如圖4所示,下一個步驟是步驟401,以致能錯誤更正碼邏輯。然而,在情景3中的解碼器的輸出值等於8'b11111111,其係大於上述表格中的8'b10001000。因此,沒有錯誤更正碼校正被執行。情景3被顯示在圖5中之520列中之“xtECC[8]]失敗”行之步驟401。
用於530列之第二編程操作,延伸錯誤更正碼(例如,ECC[8:0])包括延伸位元(例如,xtECC[8])和錯誤更正碼(例如xtECC[7:0])被一預定狀態(ECC[8:0]=9'h1FF)覆寫。換句話說,xtECC[8]的值為1'以及xtECC[7:0]的值為“11111111”。因此,在圖4中的步驟420表示沒有奇偶錯誤,且步驟401將錯誤更正碼邏輯失能,如行530列中之“數據失敗”行所示。因此,被第二編程操作編程的數據無法被改變。
如果對應於第二編程操作所編程的數據之xtECC[7:0]發生錯誤,在圖4中的步驟420可能表明一個奇偶錯誤。由於錯誤的xtECC[7:0]不等於初始的錯誤更正碼狀態(例如8'h00),步驟402將錯誤更正碼邏輯失能,如圖中的530列之“ECC[7:0]失敗”行所示。
如果對應於第二編程操作所編程的數據之延伸位元發生錯誤,延伸位元xtECC[8]被反相為“0”,從而圖4中的步驟420可能指示一個奇偶錯誤。由於xtECC[7:0]不等於初始的錯誤更正碼狀態(例如8'h00),步驟402將錯誤更正碼邏輯失能,如530列之“xtECC[8]失敗”行所示。
對於第一編程操作所編程的數據,延伸位元(xtECC[8])具有值'0'或'1'。列540包括xtECC的[7:0]之多個值,該多個值都具有單個1'值,即8'b10000000,8'b01000000,8'b00100000,8'b00010000,8'b00001000,8'b000001008'b00000010,8'b00000001。這些值對應於上述表格中之指出錯誤更正碼位元中那一個位元需要校正的解碼器輸出值。列550包括一些未被包括在圖5中的其他列之xtECC[7:0]的值。對於一個具有單個1'值之xtECC[7:0]值,對應的延伸位元(例如xtECC[8])具有值'0',如540列之xtECC[8]行所示。xtECC[7:0]之延伸位元在550列之其他情
況下取決於在xtECC[7:0]其他情況下的值。例如,針對xtECC[7:0]的值8'b00001111,延伸位元的值為'1'。
如果有一個數據錯誤,無論延伸位元(例如,xtECC[8])的值為'0'或'1',如果沒有奇偶錯誤被檢測到同時xtECC[7:0]等於一不同於預定狀態和初始的錯誤更正碼狀態之值,步驟405將錯誤更正碼邏輯致能,如列540和列550中之“數據失敗”行所示。
如果對應於第一編程操作所編程的數據之xtECC[7:0]發生錯誤,無論延伸位元(如xtECC[8])的值為'0'或'1',在圖4中的步驟420可能表示發生奇偶錯誤。如果錯誤的xtECC[7:0]不等於初始的錯誤更正碼狀態(例如8'h00),步驟40將錯誤更正碼邏輯失能,如列540和列550中之“ECC[7:0]失敗”行所示。
如果延伸位元(xtECC[8])的值為'0'且錯誤的xtECC[7:0]等於初始的錯誤更正碼狀態(例如8'h00)情景4可能會發生。例如,由於保存錯誤,當xtECC[7:0]從“10000000”改變為“00000000”時,錯誤可能會發生。步驟401錯誤地將錯誤更正碼邏輯致能,如列540中之“ECC[7:0]失敗”行所示。
如果對應於第一編程操作所編程的數據之延伸位元發生錯誤,延伸位元xtECC[8]被反相為“0”,無論是延伸位元(例如,xtECC[8])值為'0'或'1,圖4中的步驟420可能指示一個奇偶錯誤。由於xtECC[7:0]不等於初始的錯誤更正碼狀態(例如8'h00),步驟402將錯誤更正碼邏輯失能,如530列和列540之“xtECC[8]失敗”行所示。
圖6係一實施例中之改良的讀取操作之簡化實施方式之示意圖,在圖6中所示的例子中,xtECC[7:0]是相應於128位元數據的8位元錯誤更正碼,雖然錯誤更正碼會針對不同長度之對應資料具有不同的位元數量。區塊610的數據以及一包括一延伸位元(例如,xtECC[8])與區塊680中的錯誤更正碼(例如xtECC[7:0])之延伸錯誤更正碼(例如xtECC[8:0])中的數據,包括一個延伸位元(例如,xtECC[8])以及區塊680中對應於該數據的錯誤更正碼(例如xtECC[7:0])自記憶體裝置中讀取出來。
用以檢測和校正錯誤的錯誤更正碼邏輯的實施方式包括沿一錯誤更正碼路徑(例如,645)的電路。改良之讀操作的實施方式包括沿一平行於該錯誤更正碼路徑之一奇偶路徑(例如,685)的電路。錯誤更正碼的路徑(例如,645)包括一64輸入端之異或閘(XOR gate)(如640),一2輸入端之異或閘(如650),一錯誤更正碼解碼器(660),以及一分工器(例如,670)。錯誤更正碼的路徑(例如,645)引至經錯誤更正碼校正之數據,例如,分工器的輸出端之S[0]。分工器(例如,670)係代表對應於區塊610中之128位元的數據塊之多個分工器(圖中未示出其他分工器)之一。S[0]係代表對應於區塊610中之128位元數據之經錯誤更正碼校正後之128位元數據之一位元。
奇偶校驗的路徑(例如,685)包括一個9輸入異或閘(XOR gate)682,一區塊690,和一分工器692。該奇偶路徑與該錯誤更正碼的路徑校驗路徑耦接至該異或閘(如650)之2輸入端。該9輸入異或閘(XOR gate)682等於如圖4中之判定區塊420之“XOR xtECC[8:0]”。圖6中的區
塊690與區塊620之“新奇偶”(New Parity)對應於該9個輸入異或閘(XOR gate)682的輸出。區塊690對應圖4中的判定區塊440。該分工器692根據區塊690的輸出選擇xtECC[7:0]中的一位元,例如ECC[0],和一固定的邏輯值'1'其中之一。選擇該固定的邏輯值“1”對應於圖4中區塊403。選擇xtECC中的xtECC[7:0]中的一位元圖4中的區塊405。其它分工器(圖中未示出)就像該分工器692一樣分別選擇xtECC[7:0]中的其它一位元和固定的邏輯值'1'其中之一。區塊620產生一個信號將用於“新奇偶”與該錯誤更正碼之錯誤更正碼邏輯失能,對應於圖4中的步驟402和404。
錯誤更正碼路徑645之該64輸入異或閘640中的邏輯比該9輸入閘682,該區塊690,該奇偶路徑685的分工器692中的邏輯要複雜得多。奇偶路徑的邏輯比區塊620中的邏輯要複雜得多。因此,錯誤更正碼路徑延遲比奇偶路徑的延遲更長。因此,錯誤更正碼路徑是關鍵路徑,即限制讀取操作時的讀取速度的一路徑。由於奇偶校驗/延伸位元(例如xtECC[8])可以在不添加關鍵路徑額外的延遲時間的方式實現,所以不會產生對讀取速度之不利影響。
圖7係依據一實施例之積體電路記憶體裝置之簡化晶片方塊圖。積體電路700包括記憶體陣列760,該記憶體陣列760在一個積體電路基板儲存資料與包括一奇偶校驗位元之延伸錯誤更正碼。
一列解碼器740被耦合到多個位址線745,且沿記憶體陣列760多個列而配置。一行解碼器770被耦合到沿記憶體陣列760多個行而配置以讀取和寫入記憶體陣列760之一複數個位元線765。來自於控制邏輯
710至行解碼器770,以及列解碼器740之地址線匯集至總線730。在區塊780中用於讀取操作之感側放大器以及一用於寫入操作之編程緩衝器,在一例子中,通過第一數據總線775被耦合至行解碼器770,在另一例子中,通過第二數據總線785,被耦合至輸入/輸出電路790。輸入/輸出電路790驅動數據到積體電路700之外的目的地。輸入/輸出數據和控制信號通過數據總線705在電路790的輸入/輸出、控制邏輯710積體電路700之輸入/輸出端口或積體電路內部或外部的其他數據源之間移動,對積體電路700或積體電路內部或外部的其他數據源,其中其他數據源可以是一通用處理器或專用的應用電路,或者提供由記憶體陣列760所支持的單晶片系統功能的組合模塊。
在圖7中所示的例子中,控制邏輯710使用的偏壓配置狀態機控制由區塊720所產生或經由其所提供之電源電壓之偏壓配置,例如讀取和編程電壓。控制邏輯710被耦合到感側放大器、在區塊780的編程緩衝器,錯誤更正碼邏輯750,以及具有延伸錯誤更正碼之記憶體陣列。錯誤更正碼邏輯750和使用延伸錯誤更正碼之電路751通過信號755與感側放大器和在區塊780的編程緩衝器通信。
對於編程操作,記憶體裝置700包括在第一個編程操作中寫入一延伸錯誤更正碼之電路(例如755),其中,該延伸錯誤更正碼包括錯誤更正碼以及從該錯誤更正碼所導出之延伸位元(Extended bit),在第一編程操作之後的第二編程操作期間,使用一預定狀態來覆寫包括延伸位元與錯誤更正碼之延伸錯誤更正碼,以指示第二編程操作。該電路可以使用漢明碼計算錯誤更正碼。該延伸位元可以經由於錯誤更正碼上執
行邏輯同或閘(XNOR)函數而推導出。在一個實施方案中,用於延伸錯誤更正碼之預定狀態之每一位元,具有一高邏輯高值。該電路可以在第一編程操作之前將錯誤更正碼設定為一初始錯誤更正碼狀態。該電路可以計算錯誤更正碼以及在第二編程操作時,如果計算出來之錯誤更正碼等於該預定狀,則改變錯誤更正碼至第一編程操作之前的初始錯誤更正碼狀態。在一個實施例中,在初始的錯誤更正碼狀態之每一位元有一低邏輯值。如果錯誤更正碼等於初始的錯誤更正碼狀態,該電路可在第一編程操作之前將延伸位元改變至一初始值。初始值可以有一個低邏輯值。
對於讀取操作,讀取電路(如755)包括讀取對應於記憶體裝置的數據之一延伸位元和一錯誤更正碼,其中該延伸位元可從錯誤更正碼導出,並決定是否將使用該延伸位元之用於錯誤檢測和更正相應數據之錯誤更正碼邏輯致能。該電路可以在包括延伸位元和錯誤更正碼之延伸錯誤更正碼上進行奇偶校驗以檢測奇偶錯誤。奇偶校驗可以於延伸錯誤更正碼上執行一個邏輯異或閘函數來實現。如果檢測到一個奇偶錯誤以及錯誤更正碼等於一在第一編程操作之前的個初始錯誤更正碼狀態,該電路可以將用於錯誤檢測和校正之錯誤更正碼邏輯致能。如果檢測到一個奇偶錯誤以及錯誤更正碼等於一不同於初始錯誤更正碼狀態之值,該電路可以將用於錯誤檢測和校正之錯誤更正碼邏輯失能。在第一編程操作之後,該電路可以改變錯誤更正碼至一指示一第二編程操作之預定狀態,然後,如果沒有檢測到一個奇偶錯誤以及錯誤更正碼等於一初始錯誤更正碼狀態,該電路可以將用於錯誤檢測和
校正之錯誤更正碼邏輯致能。如果沒有檢測到一個奇偶錯誤以及錯誤更正碼等於該預定狀態,該電路可以將用於錯誤檢測和校正之錯誤更正碼邏輯失能。該電路可以進一步將用於錯誤檢測和校正之錯誤更正碼邏輯致能,如果沒有檢測到一個奇偶錯誤以及錯誤更正碼等於一不同於該預定狀態與初始錯誤更正碼狀態之值。
控制邏輯710可以使用本領域中已知之特殊用途的邏輯電路來實現。在其他的實施例中,控制邏輯包括一個可以實現在同一積體電路之一通用處理器,該通用處理器執行計算機程式以控制該記憶體裝置的操作。在另一些實施例中,可以結合特殊目的邏輯電路和一個通用處理器來實現控制邏輯。
雖然本發明以前述之較佳實施例揭露如上,然其並非用以限定本發明,任何熟習相像技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之專利保護範圍須視本說明書所附之申請專利範圍所界定者為準。
Claims (10)
- 一種用以操作一儲存對應於資料之錯誤更正碼之記憶體裝置的方法,包括:在一第一編程操作期間寫入一對應於資料之延伸錯誤更正碼,該延伸錯誤更正碼包括一錯誤更正碼以及從該錯誤更正碼導出之一延伸位元;以及在該第一編程操作之後的第二編程操作期間,使用一預定狀態來覆寫包括該延伸位元與該錯誤更正碼之該延伸錯誤更正碼,以表示該第二編程操作。
- 如申請專利範圍第1項所述之方法,更包括藉由在該錯誤更正碼上執行一邏輯函數以導出該延伸位元。
- 如申請專利範圍第1項所述之方法,更包括:將該錯誤更正碼設定為在該第一編程操作之前的一初始錯誤更正碼狀態;以及在該第一編程操作期間,計算該錯誤更正碼,以及假如所計算之該錯誤更正碼等於該預定狀態,則將該錯誤更正碼改為在該第一編程操作之前的該初始錯誤更正碼狀態。
- 一種操作用於儲存對應於資料之錯誤更正碼之記憶體裝置的方法,包括:讀取一延伸錯誤更正碼,該延伸錯誤更正碼包括一延伸位元以及對應於來自該記憶體裝置之資料的一錯誤更正碼,其中,該延伸位元係從該錯誤更正碼導出;以及決定是否要將使用該延伸錯誤更正碼於該對應資料上之錯誤更正碼 邏輯致能。
- 如申請專利範圍第4項所述之方法,包括:在包括該延伸位元與該錯誤更正碼之該延伸錯誤更正碼上執行一奇偶校驗以偵測一奇偶錯誤。
- 一種記憶體裝置,包括:一記憶矩陣,用以儲存資料以及對應於資料之錯誤更正碼;一錯誤更正碼邏輯,用以使用該錯誤更正碼來偵測以及更正該對應之資料中的錯誤;以及多個電路,用以在一第一編程操作期間寫入對應於資料之包括一錯誤更正碼以及從該錯誤更正碼所導出之一延伸位元的一延伸錯誤更正碼,以及在第一編程操作之後的第二編程操作期間,使用一預定狀態來覆寫包括該延伸位元與該錯誤更正碼之該延伸錯誤更正碼,以表示該第二編程操作。
- 如申請專利範圍第6項所述之記憶體裝置,其中,該多個電路係被設定為藉由在該錯誤更正碼上執行一邏輯函數,以導出該延伸位元。
- 如申請專利範圍第6項所述之記憶體裝置,其中,該多個電路係被設定為將該錯誤更正碼設定為該第一編程操作前之一初始錯誤更正碼狀態,以及在該第一編程操作期間,計算該錯誤更正碼,以及假如該所計算之錯誤更正碼等於該預定狀態,將該錯誤更正碼改為該第一編程操作前之該初始錯誤更正碼狀態。
- 如申請專利範圍第6項所述之記憶體裝置,其中,該多個電路係另被設定為當該錯誤更正碼等於該第一編程操作期間之該初始錯誤更正碼狀態時,將該延伸位元改變為該第一編程操作之前的一初始值。
- 如申請專利範圍第6項所述之記憶體裝置,其中,該多個電路係更被設定為:讀取包括一延伸位元與對應於來自該記憶體裝置之資料的一錯誤更正碼之一延伸錯誤更正碼,其中,該延伸位元係從該錯誤更正碼所導出;以及決定是否要將使用該延伸錯誤更正碼於該對應資料上之錯誤更正碼邏輯致能。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/047,418 US9146809B2 (en) | 2013-10-07 | 2013-10-07 | ECC method for double pattern flash memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201515000A TW201515000A (zh) | 2015-04-16 |
TWI529735B true TWI529735B (zh) | 2016-04-11 |
Family
ID=52777968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103126835A TWI529735B (zh) | 2013-10-07 | 2014-08-06 | 二次組態記憶體裝置之錯誤更正碼方法與裝置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9146809B2 (zh) |
TW (1) | TWI529735B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146809B2 (en) | 2013-10-07 | 2015-09-29 | Macronix International Co., Ltd. | ECC method for double pattern flash memory |
US9535785B2 (en) | 2014-01-17 | 2017-01-03 | Macronix International Co., Ltd. | ECC method for flash memory |
US9600360B2 (en) * | 2014-11-21 | 2017-03-21 | International Business Machines Corporation | Dynamic partial blocking of a cache ECC bypass |
US9734008B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
US9733870B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
US10063263B2 (en) * | 2015-05-20 | 2018-08-28 | International Business Machines Corporation | Extended error correction coding data storage |
GB201710839D0 (en) * | 2017-07-05 | 2017-08-16 | Irdeto Bv | Data protection |
KR102362229B1 (ko) * | 2017-08-10 | 2022-02-11 | 삼성전자주식회사 | 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서 |
CN108595286A (zh) * | 2018-03-29 | 2018-09-28 | 深圳忆联信息***有限公司 | 一种提升闪存可靠性的方法及固态硬盘 |
US11042436B2 (en) | 2019-08-29 | 2021-06-22 | Micron Technology, Inc. | Semiconductor device with modified access and associated methods and systems |
US10963336B2 (en) * | 2019-08-29 | 2021-03-30 | Micron Technology, Inc. | Semiconductor device with user defined operations and associated methods and systems |
US11200118B2 (en) | 2019-08-29 | 2021-12-14 | Micron Technology, Inc. | Semiconductor device with modified command and associated methods and systems |
US11823760B2 (en) * | 2020-11-10 | 2023-11-21 | Sunrise Memory Corporation | System and method for data integrity in memory systems that include quasi-volatile memory circuits |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4005405A (en) * | 1975-05-07 | 1977-01-25 | Data General Corporation | Error detection and correction in data processing systems |
US4888773A (en) * | 1988-06-15 | 1989-12-19 | International Business Machines Corporation | Smart memory card architecture and interface |
JP3184129B2 (ja) * | 1997-09-29 | 2001-07-09 | 甲府日本電気株式会社 | 記憶装置 |
JP2002056671A (ja) * | 2000-08-14 | 2002-02-22 | Hitachi Ltd | ダイナミック型ramのデータ保持方法と半導体集積回路装置 |
JP4129381B2 (ja) | 2002-09-25 | 2008-08-06 | 株式会社ルネサステクノロジ | 不揮発性半導体記憶装置 |
US20040083334A1 (en) * | 2002-10-28 | 2004-04-29 | Sandisk Corporation | Method and apparatus for managing the integrity of data in non-volatile memory system |
US7196644B1 (en) * | 2004-07-01 | 2007-03-27 | Seagate Technology Llc | Decoupling of analog input and digital output |
US7644347B2 (en) * | 2005-09-30 | 2010-01-05 | Intel Corporation | Silent data corruption mitigation using error correction code with embedded signaling fault detection |
US7355892B2 (en) * | 2006-06-30 | 2008-04-08 | Sandisk Corporation | Partial page fail bit detection in flash memory devices |
US8149748B2 (en) * | 2006-11-14 | 2012-04-03 | Raytheon Company | Wireless data networking |
TWI473117B (zh) * | 2008-06-04 | 2015-02-11 | A Data Technology Co Ltd | 具資料修正功能之快閃記憶體儲存裝置 |
US8321775B2 (en) * | 2009-04-21 | 2012-11-27 | Micron Technology, Inc. | Non-volatile memory with extended error correction protection |
JP5540969B2 (ja) * | 2009-09-11 | 2014-07-02 | ソニー株式会社 | 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム |
US8751736B2 (en) * | 2011-08-02 | 2014-06-10 | Oracle International Corporation | Instructions to set and read memory version information |
US9146809B2 (en) | 2013-10-07 | 2015-09-29 | Macronix International Co., Ltd. | ECC method for double pattern flash memory |
-
2013
- 2013-10-07 US US14/047,418 patent/US9146809B2/en active Active
-
2014
- 2014-08-06 TW TW103126835A patent/TWI529735B/zh active
-
2015
- 2015-09-01 US US14/841,950 patent/US9760434B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW201515000A (zh) | 2015-04-16 |
US20150370634A1 (en) | 2015-12-24 |
US20150100852A1 (en) | 2015-04-09 |
US9146809B2 (en) | 2015-09-29 |
US9760434B2 (en) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI529735B (zh) | 二次組態記憶體裝置之錯誤更正碼方法與裝置 | |
US9703633B2 (en) | Circuits, apparatuses, and methods for correcting data errors | |
US9535785B2 (en) | ECC method for flash memory | |
US8694855B1 (en) | Error correction code technique for improving read stress endurance | |
US4740968A (en) | ECC circuit failure detector/quick word verifier | |
US8051337B2 (en) | System and method for fast cache-hit detection | |
CN107436821B (zh) | 为包括多个数据位和地址位的块生成错误码的装置和方法 | |
US8910018B2 (en) | Memory with dynamic error detection and correction | |
US8914708B2 (en) | Bad wordline/array detection in memory | |
CN103140841A (zh) | 保护存储器的部分的方法和装置 | |
US8918707B2 (en) | Codeword error injection via checkbit modification | |
JP2008523503A (ja) | メモリ周辺装置における改良されたエラー検出のためのシステムおよび方法 | |
US9552244B2 (en) | Real time correction of bit failure in resistive memory | |
US20160239379A1 (en) | Dynamic cache row fail accumulation due to catastrophic failure | |
TWI527049B (zh) | 操作記憶體之方法及記憶體裝置 | |
US9329926B1 (en) | Overlapping data integrity for semiconductor devices | |
JPH0594377A (ja) | パリテイ検出回路 | |
US10613918B2 (en) | Data register monitoring | |
CN104637542B (zh) | 储存对应于数据的错误更正码的存储器装置及其操作方法 | |
TWI509622B (zh) | 具分散錯誤功能的記憶體及其分散錯誤位元的方法 | |
TWI523023B (zh) | 用於記憶體之錯誤校正碼方法 | |
KR20240067770A (ko) | 데이터 메모리의 자가 진단을 위한 전자 회로 및 방법 |