TW201530553A - 用於記憶體之錯誤校正碼方法 - Google Patents
用於記憶體之錯誤校正碼方法 Download PDFInfo
- Publication number
- TW201530553A TW201530553A TW103101910A TW103101910A TW201530553A TW 201530553 A TW201530553 A TW 201530553A TW 103101910 A TW103101910 A TW 103101910A TW 103101910 A TW103101910 A TW 103101910A TW 201530553 A TW201530553 A TW 201530553A
- Authority
- TW
- Taiwan
- Prior art keywords
- ecc
- data set
- bit
- selected data
- eccs
- Prior art date
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
提供一種儲存資料集(data set)以及資料集之ECC於記憶體中之操作方法。此方法包括在將新資料寫入在一資料集中時,如果儲存新資料及事先在資料集中被程式化之資料之一些可編址段包括至少一預定數目之可編址段,則計算並儲存一ECC。此方法包括藉由使用ECC及從ECC衍生出的一第一額外ECC位元,來儲存關於是否致能或禁能ECC之使用之複數個指示。此方法包括從一資料集讀取一擴展ECC(包括一ECC及從ECC衍生出的一第一額外ECC位元),並依據為資料集所儲存的指示而致能或禁能ECC之使用。此方法包括藉由使用這些指示及一第二額外ECC位元來致能空白資料集之ECC之使用。
Description
本案是有關於包括錯誤校正碼(Error Correction Code, ECC)邏輯之記憶體裝置及系統。
用於積體電路記憶體之記憶體技術正朝向體積越來越小的技術發展,且應用於單一積體電路之越來越大的記憶體陣列上。隨著記憶胞(Memory Cell)之技術前進,用於感測資料之容限(Margin)會變成更嚴謹。又,在記憶胞狀態之擾動(由存取記憶胞及存取鄰近記憶胞之高速及高容積所導致)存在時,記憶胞保留資料值之能力(亦即,持久性)更受限於更嚴謹的容限。
當這些技術著重在尺寸及密度上時,為了處理因更嚴謹的容限及記憶胞擾動而出現的關鍵問題,使用嵌入於積體電路記憶體之錯誤校正碼(ECC)已變得更普及。
通常將快閃記憶體設計成可藉由區塊抹除來一次抹除一區塊。當抹除一區塊時,區塊中之記憶胞被設定到邏輯值,例如1。在抹除了一區塊之後,區塊中之記憶胞可被程式化至不同數值,例如0。一旦記憶胞被程式化至0,對被程式化記憶胞之區塊進行區塊抹除可將記憶胞改回至1。一旦一區塊中之某些記憶胞(例如區塊之一選擇的位元組(byte)或字(word)中的晶胞)係在一第一編程操作期間被程式化至0,在相同區塊之不同位元組或字中之其他記憶胞(已知是處於抹除狀態),仍然可在一第二編程操作期間被程式化至0,而不需要預先抹除此區塊。在本說明中,伴隨著對相同區塊中之不同位置所進行之第一編程操作及第二編程操作之一區塊抹除,可被稱為雙重圖案化。當然,當每個編程操作係針對此區塊之一不同部分以達成一"多重圖案化操作"時,區塊抹除操作可以伴隨著多重編程操作(兩個以上)。
在雙重或多重圖案化操作中,一錯誤校正碼(ECC)可在第一編程操作期間,被計算並程式化於此區塊中之一特定位置。然而,因為區塊抹除之一記憶體中的第二編程操作的關係,無法安全地改變ECC。ECC無法在第二編程操作中安全地被改變,這是因為一再計算出的ECC,必須將ECC中之至少一位元從0(被程式化狀態)改變成1(抹除狀態),且此改變將需要一區塊抹除,這將抹除整個區塊中的資料。
較好可以提供一種解決方法,用於確實地控制雙重圖案化及多重圖案化操作之錯誤偵測及修正用之ECC邏輯之利用。
一種記憶體之操作方法包括:儲存複數個資料集(例如分頁),以及資料集用之複數個錯誤校正碼ECC於記憶體中,資料集包括複數個可編址段(例如字或位元組)。當將新資料寫入在記憶體中之一選擇資料集之其中一個可編址段中時,如果儲存新資料及事先在選擇資料集中被程式化之資料之一些可編址段包括至少一預定數目之可編址段,則可為選擇資料集計算並儲存一ECC。預定數目可以是選擇資料集中之全部的可編址段。
複數個指示可以與資料集一起被儲存,資料集表示是否致能或禁能與資料集一起被儲存之ECC之使用。這些指示可藉由儲存擴展ECC(例如128位元資料用之xtECC[9:0])而被提供,擴展ECC包括資料集之ECC之一欄位(例如128位元資料用之xtECC[7:0])、從ECC衍生出的一第一額外ECC位元之一欄位(例如xtECC[8])以及一第二額外ECC位元用一欄位(例如xtECC[9])。對ECC執行一邏輯互斥函數(logical exclusive-OR function)而衍生出第一額外ECC位元。擴展ECC可表示是否致能或禁能與資料集一起被儲存之ECC之使用。
擴展ECC可具有一第一預定值(例如128位元資料用之9'h000)、一第二預定值(例如128位元資料用之9'h1C0)以及一計算值,第一預定值供第一額外位元與ECC使用,表示一第一狀態以禁能ECC之欄位中的資料之使用,第二預定值供第一額外位元與ECC使用,表示一第二狀態,於其中擴展ECC原始具有等於第一預定值之一計算值,而計算值表示一第三狀態,包括在ECC之欄位中的複數個計算出的ECC,以及在從計算出的ECC衍生出的第一額外ECC位元之欄位中的一位元。
此方法包括:如果儲存新資料及事先在選擇資料集中被程式化之資料之一些可編址段包括至少一預定數目(例如全部)之可編址段,則使用選擇資料集之一擴展ECC之一計算值,且一錯誤狀況不會發生(於此錯誤狀況中,選擇資料集已經於新資料用之可編址段被程式化)。
此方法包括:如果選擇資料集係事先於新資料用之可編址段被程式化,則將擴展ECC設定成第一預定值,藉以表示禁能與選擇資料集一起被儲存之ECC之使用。此方法包括:如果擴展ECC等於第一預定值,且選擇資料集並未於新資料之可編址段被程式化,則將擴展ECC設定成第二預定值。
此方法更包括:將第二額外ECC位元設定成一數值,用於表示選擇資料集係在至少一可編址段中被程式化。一空白或未被程式化狀態可起因於資料集之一區塊抹除,以使位於空白ECC狀態之一ECC包括所有"1"。在一區塊抹除之後,第一額外ECC位元亦包括一數值'1'。一ECC之一計算值亦可以是所有"1",而ECC之第一額外ECC位元應具有一數'0',如於此所說明的。然而,在一保留錯誤的情況下,第一額外ECC位元可錯誤地改變成'1'。在那種情況下,為了決定ECC之使用是否應被致能的,一讀取操作無法分辨全為"1s"之ECC,以及具有一數值"1"之第一額外ECC位元是否是計算值或位於抹除狀態。第二額外ECC位元從而用於表示選擇資料集是否在至少一可編址段中被程式化。
包括一ECC(例如128位元資料之xtECC[7:0])、一第一額外ECC位元(例如xtECC[8])以及一第二額外ECC位元(例如xtECC[9])之一擴展ECC(例如128位元資料之xtECC[9:0]),係可從一選擇資料集被讀取,於此第一額外ECC位元係藉由使用一邏輯函數而從ECC衍生出。如果ECC之邏輯函數等於第一額外ECC位元,且ECC並不等於表示第一狀態之第一預定值以禁能ECC之使用,則可致能與選擇資料集一起被儲存之ECC之使用。
此方法包括:將ECC設定成表示第一狀態之第一預定值(例如9'h000),然後致能具有選擇資料集之ECC之使用。邏輯函數可以是一邏輯互斥函數,如果ECC之邏輯函數並不等於第一額外ECC位元,且ECC等於第二預定值(例如9'h1C0)(表示第二狀態,其中ECC原始具有等於第一預定值之一計算值)的話。
此方法包括:讀取第二額外ECC位元,表示選擇資料集是否在至少一可編址段中被程式化;以及致能與選擇資料集一起被儲存之ECC之使用,如果ECC之邏輯函數並不等於第一額外ECC位元、ECC等於表示一空白ECC狀態之一空白值(例如8'hFF),以及第二額外ECC位元表示選擇資料集在至少一可編址段中被程式化的話。一空白ECC狀態可起因於資料集之一區塊抹除,以使位於空白ECC狀態之一ECC位於抹除狀態,例如所有"1"。第一與第二狀態用之第一與第二預定值係被預先決定成不同於空白值。
為了對本案之上述及其他方面有更佳的瞭解,下文特舉較佳實施例,並配合所附圖式,作詳細說明如下:
100‧‧‧記憶體
105‧‧‧資料匯流排
110‧‧‧控制器
120‧‧‧偏壓配置電源電壓方塊
130‧‧‧匯流排
140‧‧‧列解碼器
145‧‧‧字線
150‧‧‧ECC邏輯
155‧‧‧信號
160‧‧‧資料集
165‧‧‧位元線
170‧‧‧分頁緩衝器
175‧‧‧資料匯流排
190‧‧‧輸入/輸出電路
210‧‧‧第一局部資料集編程操作
211‧‧‧其他位址
212‧‧‧陣列之ECC
213‧‧‧第一額外ECC位元及第二額外位元
220‧‧‧第二局部資料集編程操作
221‧‧‧其他位址
222‧‧‧資料集之ECC
223‧‧‧第一額外ECC位元及第二額外位元
230‧‧‧最後局部陣列操作
232‧‧‧ECC
233‧‧‧第一額外ECC位元
305、310、320、330、340、341、343、350、360、365、370、375、380、385、390‧‧‧步驟
410、420、430、440、451、453、460、470、480、490‧‧‧步驟
510、520、530、550、551、560、561、563、570、571‧‧‧步驟
105‧‧‧資料匯流排
110‧‧‧控制器
120‧‧‧偏壓配置電源電壓方塊
130‧‧‧匯流排
140‧‧‧列解碼器
145‧‧‧字線
150‧‧‧ECC邏輯
155‧‧‧信號
160‧‧‧資料集
165‧‧‧位元線
170‧‧‧分頁緩衝器
175‧‧‧資料匯流排
190‧‧‧輸入/輸出電路
210‧‧‧第一局部資料集編程操作
211‧‧‧其他位址
212‧‧‧陣列之ECC
213‧‧‧第一額外ECC位元及第二額外位元
220‧‧‧第二局部資料集編程操作
221‧‧‧其他位址
222‧‧‧資料集之ECC
223‧‧‧第一額外ECC位元及第二額外位元
230‧‧‧最後局部陣列操作
232‧‧‧ECC
233‧‧‧第一額外ECC位元
305、310、320、330、340、341、343、350、360、365、370、375、380、385、390‧‧‧步驟
410、420、430、440、451、453、460、470、480、490‧‧‧步驟
510、520、530、550、551、560、561、563、570、571‧‧‧步驟
第1圖係為依據一實施例之一積體電路記憶體之簡化晶片方塊圖。
第2圖顯示一記憶體中之局部資料集編程操作。
第3圖係為一記憶體中之編程操作之流程圖。
第4圖係為使用擴展ECC之ECC產生之流程圖。
第5圖係為使用擴展ECC之讀取操作之流程圖。
第2圖顯示一記憶體中之局部資料集編程操作。
第3圖係為一記憶體中之編程操作之流程圖。
第4圖係為使用擴展ECC之ECC產生之流程圖。
第5圖係為使用擴展ECC之讀取操作之流程圖。
以下參考附圖而提供本案之複數個實施例之詳細說明。
隨著積體電路記憶體中之記憶胞的技術尺寸縮小,用於感測資料之容限會變得更嚴謹,因而在記憶胞狀態之擾動(由存取記憶胞及存取鄰近記憶胞之高速及高容積所導致)存在時,限制了記憶胞保留資料值之能力。為了處理起因於更嚴謹的容限與記憶胞擾動的議題,可使用嵌入於積體電路記憶體之錯誤校正碼(ECC)。
一種完整資料集編程操作係為將位於資料集中之每個位址之資料集予以程式化。當利用完整資料集編程操作而程式化一資料集(例如一分頁之記憶胞)時,可計算出此資料集之ECC並與資料集一起被儲存。一局部資料集編程操作係用於將位於資料集中之某些而非所有位址之資料集予以程式化。當利用一第一局部資料集編程操作而程式化一資料集時,可計算出此資料集之ECC並與資料集一起被儲存。然而,當利用一在第一局部資料集編程操作之後的第二局部資料集編程操作來程式化資料集時,此資料集之ECC將無法被更新(理由於底下說明之),從而對利用多重局部資料集編程操作而程式化之資料集使用ECC可能失敗。
本技術藉由使用擴展錯誤校正碼ECC來提供控制邏輯,用於致能由多重局部資料集編程操作而程式化之資料集的ECC之使用,擴展的錯誤校正碼ECC包括資料集之ECC、每一個資料集之一第一額外ECC位元及一第二額外ECC位元。
第1圖係為依據一實施例之一積體電路記憶體之簡化晶片方塊圖。在第1圖所顯示之例子中,一記憶體100儲存複數個資料集160,該些資料集160包括複數個可編址段以及資料集之擴展錯誤校正碼ECC。擴展ECC包括資料集之ECC、每一個資料集之一第一額外ECC位元及一第二額外ECC位元。
在第1圖所顯示之例子中,使用一偏壓配置狀態機之控制器110,係利用方塊120之電壓源或電源供應所產生或提供之電源電壓而控制偏壓配置(例如讀取及程式電壓)之施加。控制器110係耦接至分頁緩衝器170、ECC邏輯150以及具有擴展ECC(包括第一與第二額外ECC位元)之資料集160。ECC邏輯150係經由複數個信號155而耦接至分頁緩衝器170。
在一編程模式中,控制器110所包括的邏輯在將新資料寫入在記憶體中之一選擇資料集之其中一個可編址段時,可為選擇資料集計算並儲存一ECC,如果儲存新資料及事先在選擇資料集中被程式化之資料之一些可編址段係包括至少一預定數目之可編址段的話。預定數目之可編址段可以是選擇資料集之全部可編址段。舉例而言,如第2圖所示,對一最後的局部陣列操作(例如230)而言,儲存新資料(例如最終字wordx
)及事先在選擇資料集中被程式化之資料(例如word0
至wordx-1
)之一些可編址段包括選擇資料集之全部可編址段。因此,選擇的資料集之ECC(232)係被計算出並與選擇資料集一起被儲存。
複數個指示可以與資料集一起被儲存,這些指示表示是否致能或禁能與資料集一起被儲存之ECC之使用。這些指示可藉由儲存擴展ECC(包括資料集之ECC之一欄位,以及從ECC衍生之一第一額外ECC位元之一欄位)而提供。擴展ECC表示是否致能或禁能與資料集一起被儲存之ECC之使用。控制器110另包括一邏輯,此邏輯儲存選擇資料集用之一第二額外ECC位元,以表示選擇資料集係在至少一可編址段中被程式化。
在一讀取模式中,控制器110包括邏輯,此邏輯從一選擇資料集讀取一擴展ECC(包括一ECC及一第一額外ECC位元),於此,第一額外ECC位元係藉由使用一邏輯函數(Logical Function)而從ECC衍生出。如果ECC之邏輯函數等於第一額外ECC位元,且ECC並不等於指示將ECC使用禁能之一第一狀態之一第一預定值,則控制器110所包括之邏輯可致能ECC(其與選擇資料集一起被儲存)之使用。藉由使用第二額外ECC位元,控制器110所包括之邏輯可致能一空白資料集之ECC之使用。
控制器110可藉由使用如習知技藝已知的特殊用途邏輯電路(Special-Purpose Logic Circuitry)而被實施。在替代實施例中,控制邏輯包括可在相同的積體電路上被實施之一通用處理器(General-Purpose Processor),通用處理器執行一電腦程式以控制此裝置之操作。在又其他實施例中,可利用特殊用途邏輯電路及通用處理器之組合來實行控制邏輯。
在第1圖所顯示之例子中,一列解碼器140係耦接至複數條字線145,並沿著資料集160中之列而排列。分頁緩衝器170係耦接至複數條沿著資料集160中之多行排列之位元線165,用於從資料集160讀取資料並寫入資料至資料集160。複數個位址係在匯流排130上從控制器110被提供至分頁緩衝器170與列解碼器140。分頁緩衝器170可包括耦接至資料集160與匯流排130之行解碼器,以及讀取操作用之複數個感測放大器,以及耦接至行解碼器之編程操作之程式緩衝器。於此例子中,分頁緩衝器170係經由資料匯流排175而耦接至輸入/輸出電路190。輸入/輸出電路190將資料驅動至記憶體100外部之目標。輸入/輸出資料及控制信號係透過資料匯流排105而移動,資料匯流排105介於輸入/輸出電路190、記憶體100上之控制器110及輸入/輸出埠或記憶體100內部或外部之其他資料源(例如一通用處理器或特殊用途應用電路,或者提供由資料集160所支持之系統單晶片功能之模組之一組合)之間。
第2圖顯示依據本實施例之記憶體中之局部資料集編程操作。在第2圖所顯示之例子中,記憶體儲存例如分頁之資料集。資料集包括複數個可編址段(例如字或位元組),以及該記憶體之該些資料集之錯誤校正碼ECC。每個資料集亦可包括一第一額外ECC位元及一第二額外位元。如在本案所說明的,一資料集包括一擴展ECC,而擴展ECC包括一資料集之一ECC、一第一額外ECC位元以及一第二額外位元。在第2圖所顯示之例子中,在一第一局部資料集編程操作(例如210)期間,一第一字(例如word0
)係於一資料集中之一第一位址被程式化,而資料集中之其他位址維持未被程式化(例如211)。陣列之ECC(例如212)在第一局部資料集編程操作期間並未被程式化,且維持於一空白或未被程式化狀態。在第一局部資料集編程操作(例如210)之後,第一額外ECC位元及第二額外位元(例如213)亦維持於一空白或未被程式化狀態。
一空白ECC狀態可起因於資料集之一區塊抹除,以使位於空白ECC狀態之一ECC包括抹除狀態值,例如全部為"1s"。舉例而言,如果一ECC包括8位元,則ECC之空白ECC狀態等於"11111111"或抹除狀態值。在一區塊抹除之後,ECC可具有指示空白ECC狀態之一空白值(例如"11111111")。如於此所說明的資料集之第一額外ECC位元及第二額外ECC位元,亦可在一區塊抹除之後具有一抹除數值(例如'1')。不同位元數目之ECC對應至不同長度資料,舉例而言,8位元ECC係用於128位元之資料。對一資料集之8位元ECC而言,資料集之擴展ECC包括10位元,其包括ECC之8位元,第一額外ECC位元之1位元以及第二額外ECC位元之1位元。
在一第二局部資料集編程操作(例如220)期間,一第二字(例如word1
)係於資料集之一第二位址被程式化,而資料集之其他位址維持未被程式化(例如221)。資料集之ECC(例如222)在第二局部資料集編程操作期間並未被程式化,且維持於一空白ECC狀態。第一額外ECC位元及第二額外位元(例如223)亦在第二局部資料集編程操作(例如220)之後,維持於一空白或未被程式化狀態。
可執行額外局部資料集編程操作,以將資料集中之更多字予以程式化,直到資料集係於此陣列中之全部的位址被程式化為止。如第2圖所示,在一最後的局部陣列操作(例如230)中,在第二字(例如word1
)與最終字(例如wordx
)兩者之間的字(例如word2
~wordx-1
)在資料集中被程式化之後,一最終字(例如wordx
)係於資料集之一最後位址被程式化。當資料集之最終字(例如wordx
)被程式化時,資料集之ECC(例如232)係被計算出並與資料集一起被儲存。第一額外ECC位元(例如233)亦可在最後的局部資料集編程操作(例如230)期間被計算出並與資料集一起被儲存。因此,在一讀取操作期間,當利用多重局部資料集程式化操作來將資料集程式化時,可致能與資料集一起被儲存之ECC之使用。第一額外ECC位元及第二額外位元係參考第4圖及第5圖而更進一步作說明。更特別是,在資料集之至少一位址被程式化時,第二額外位元係被程式化。
於一實施例中,資料集中的位址朝第一字至最終字之方向增加,於此第一字係位於最低位址,而最終字係位於資料集中之最高位址。在一替代實施例中,資料集中的位址朝最終字至第一字之方向增加,於此第一字係位於最高位址,而最終字係位於資料集中之最低位址。
結合第3、4及5圖說明控制邏輯,此控制邏輯用於在一資料集中之最終字被程式化時計算並儲存ECC,且用於在一讀取操作期間致能與資料集一起被儲存之ECC之使用。
第3圖係為記憶體之編程操作之流程圖。在第3圖所顯示之例子中,於步驟305,接收到記憶體之一選擇資料集之其中一個可編址段的新資料。於步驟310,決定新資料之編程操作是否為一完整資料集編程操作或一局部資料集編程操作。如果新資料用之編程操作係為一完整資料集編程操作(步驟310,是),則於步驟320為新資料計算一錯誤校正碼ECC。於步驟330,檢查資料集是否於任何位址被程式化。如果資料集並未於任何位址被程式化,則資料集被稱為空白。如果資料集是空白的(步驟340,是),則於步驟341,資料集係與新資料及從此資料集所計算出之ECC一起被程式化。如果資料集係於任何位址被程式化或不是空白的(步驟340,否),則於步驟343,資料集係與新資料一起被程式化,且ECC被設定為一第一預定值(例如9'h00),其指示禁能ECC之使用之一第一狀態。第一狀態係更進一步結合第4圖作說明。或者,用於為新資料計算ECC之步驟320,係可在步驟340之後(當決定資料集是空白時)以及在步驟341之前(當ECC被程式化時)被執行。
如果新資料之編程操作並非是一完整資料集編程操作而是一局部資料集編程操作(步驟310,否),則於步驟350,檢查資料集,以決定是否新資料之位址是空白的或被程式化。如果資料集於新資料之位址並非是空白的(步驟360,否),則資料集係於這些位址與新資料一起被程式化,且ECC被設定到第一預定值(例如9'h00),其指示禁能ECC之使用之第一狀態(步驟365)。第一狀態係更進一步結合第4圖作說明。
如果資料集於新資料之位址是空白的(步驟360,是),則決定資料集是否於資料集之第一位址或最後位址被程式化(步驟370)。如果資料集係於資料集之第一位址或最後位址被程式化(步驟370,是),則更進一步決定資料集是否於不是新資料之位址之其他位址是空白的(步驟380)。如果不是(步驟380,否),則新資料及於資料集中之其他位址事先被程式化之資料可填滿資料集。因此,如果儲存新資料及事先在選擇資料集中被程式化之資料之可編址段包括至少一預定數目之可編址段,則為選擇資料集之ECC計算出一數值(步驟385)。預定數目可以是選擇資料集中之全部的可編址段。於步驟390,資料集係與新資料及選擇資料集的ECC一起被程式化。
如果資料集於第一位址並未被程式化,且於資料集之最後位址並未被程式化(步驟370,否),或如果資料集於某些位址(非新資料用之位址)是空白的(步驟380,是),則新資料與事先在選擇資料集中被程式化之資料無法填滿資料集。因此,新資料係被程式化(步驟375),但並不計算ECC,直到新資料與事先在選擇資料集中被程式化之資料可填滿選擇資料集為止。
十六進位及二進位的表示法係使用於本案中。舉例而言,"8'hFF"係為一8位元二進位數"8'b11111111"之十六進位的表示法,於此二進位數中之每個位元具有一數值'1'。"8'hFF"或"8'b11111111"中之"8"表示位元數。"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"及"8'hC0"係分別等於二進位中的"8'b11111111"、"8'b00000000"及"8'b11000000"。對另一個例子而言,1'b0係為只包括具有數值'0'之1位元之二進位數,而1'b1係為只包括具有數值'1'之1位元之二進位數。
第4圖係為使用擴展ECC之ECC產生之流程圖。在第4圖所顯示之例子中,一資料集具有128位元資料,而資料之ECC具有8個位元。複數個指示可與資料集一起被儲存,以表示是否致能或禁能ECC(與資料集一起被儲存)之使用。這些指示可藉由儲存擴展ECC(例如128位元資料用之xtECC[9:0])而提供,擴展ECC包括資料集之ECC之一欄位(例如xtECC[7:0])、從ECC衍生出的一第一額外ECC位元之一欄位(例如xtECC[8])以及一第二額外ECC位元之一欄位(例如xtECC[9])。第一額外ECC位元可以藉由對ECC執行邏輯互斥函數(XOR)而衍生出。ECC之長度隨著資料長度改變,且因此擴展ECC之長度隨著資料長度而改變。例如,在一替代實施例中,256位元資料之ECC具有9個位元(例如xtECC[8:0]),而256位元資料之擴展ECC具有11個位元(例如xtECC[10:0]),包括第一額外位元(例如xtECC[9])及第二額外位元(例如xtECC[10])。
擴展ECC可具有一第一預定值(例如9'h000)、一第二預定值(例如9'h1C0)以及一計算值;第一預定值指示禁能ECC之欄位中的資料之一第一狀態;第二預定值指示一第二狀態,於其中擴展ECC原始具有一等於第一預定值之計算值;而計算值指示一第三狀態,其包括複數個在ECC欄位中之計算出的ECC及在從計算出的ECC衍生出的第一額外ECC位元之欄位中的一位元。於此例子中,第一預定值及第二預定值兩者係128位元資料之擴展ECC中之第一額外位元與ECC。
第一、第二及第三狀態係總結在第4圖之表格中。當ECC被設定到第一預定值(例如9'h000)以禁能ECC之使用時,第一狀態對應至步驟460之是(Yes)分支及步驟470。當ECC被設定到第二預定值(例如9'h1C0)以表示ECC原始為等於第一預定值之計算值時,第二狀態對應至步驟440之是(Yes)分支及步驟451。當致能計算出的ECC之使用時,第三狀態對應至步驟440之否(No)分支及步驟453。
ECC產生之流程於步驟410開始,於此,係藉由如第3圖所示之步驟341、343、390、375及365來決定是否計算資料集之ECC。於此所說明之複數個理由,決定結果可以是不要計算一ECC(步驟410,否),如對應於步驟375、343及365,或要計算一ECC(步驟410,是),如對應於步驟341及390。
如果決定是不要計算ECC(步驟410,否),則更進一步決定是否禁能讀取操作之ECC的使用(步驟460)。此決定可以是不要禁能一讀取操作之ECC的使用(步驟460,否),因為局部資料集編程操作尚未程式化一完整資料集(步驟375)。如果此決定是不要禁能一讀取操作之ECC之使用(步驟460,否),則如於步驟305所接收之新資料係在記憶體中被程式化,而不需要儲存任何新資料之ECC(步驟480)。此決定可以是禁能一讀取操作之ECC之使用(步驟460,是),因為一資料集對一完整資料集編程操作而言並非是空白的(步驟343),或因為一資料集對一局部資料集編程操作而言是於新資料用之位址被程式化(步驟365)。如果此決定是禁能一讀取操作之ECC之使用(步驟460,是),則於步驟470,將第一額外位元與資料集之擴展ECC中之ECC設定到第一預定值(例如xtECC[8:0]=9'h000),藉以指示在一讀取操作中,禁能ECC(與資料集一起被儲存)之使用。
如果於步驟410之決定是計算一ECC(步驟410,是),如對應於一完整資料集編程操作之步驟341,或對應於一局部資料集編程操作(程式化資料集中之最終字)之步驟390,則於步驟420,計算資料集之ECC之數值。於步驟430,此數值係由來自ECC之第一額外ECC位元所衍生出。此數值可藉由對ECC執行一邏輯互斥函數(XOR)(例如xECC[8] = XOR (xtECC[7:0])而衍生出。包括第一額外ECC位元與ECC之擴展ECC,係可被使用在一讀取操作中,用於表示是否致能或禁能ECC(與資料集一起被儲存)之使用。
於步驟440,決定ECC是否等於表示第一狀態之第一預定值,如步驟470中所使用的。如果是的話(步驟440,是),則一特殊情況發生,於此擴展ECC用之計算值可以是9'h000,對應於步驟470之第一狀態,從而錯誤地指示禁能ECC之使用。為了解決特殊情況,將擴展ECC中之第一額外位元與ECC設定到指示一第二狀態之第二預定值(例如xtECC[8:0] = 9'h1C0),於其中擴展ECC原始具有等於第一預定值之計算值。在如結合第5圖所說明的一讀取操作中,特殊情況是相反的(步驟550及551,第5圖)。如果ECC並不等於表示第一狀態之第一預定值,則於步驟453,包括第一額外ECC位元與ECC之擴展ECC是不變的。
在步驟451、453或470以後,第二額外ECC位元可被設定到指示被程式化狀態之數值(例如xtECC[9]=1'b0),用於表示選擇資料集係在至少一可編址段中被程式化,因此,資料集並非是一空白資料集。第二額外ECC位元因此可用來保護一空白資料集,如結合第5圖所說明的。於步驟305所接收之新資料與新資料之擴展ECC(例如xtECC[9:0]),係可在記憶體之資料集中被程式化(步驟490)。
第5圖係為使用擴展ECC之讀取操作之流程圖。在第5圖所顯示之例子中,從記憶體讀取一資料集中之資料(例如128位元資料)與擴展ECC(例如xtECC[9:0]);擴展ECC包括一資料集中之資料之ECC (例如xtECC[7:0])、一第一額外ECC位元(例如xtECC[8])以及一第二額外ECC位元(例如xtECC[9])(步驟510)。第一額外ECC位元係藉由使用一邏輯函數而從ECC衍生出。用於衍生儲存於資料集之第一額外ECC位元所用之相同邏輯函數係對ECC執行,且接著決定從資料集讀取之第一額外ECC位元是否等於來自邏輯函數之結果(步驟520)。
在讀取流程中所使用的第一狀態、第二狀態、第三狀態及一空白ECC狀態係總結在第5圖之表格中。當禁能ECC之使用時,第一狀態對應至步驟560之是(Yes)分支及步驟561。當ECC被反轉至等於表示第一狀態之第一預定值之原始數值時,第二狀態對應至步驟550之是(Yes)分支及步驟551。當致能計算出的ECC之使用時,第三狀態對應至步驟563。
如果從資料集讀取之第一額外ECC位元(例如xtECC[8])等於來自邏輯函數之結果(步驟520,是),則更進一步決定ECC是否等於表示第一狀態之第一預定值(例如xtECC[7:0]= 8'h00)。如果不是的話(步驟560,否),則擴展ECC(例如xtECC[8:0])表示資料集係藉由一完整資料集編程操作(步驟341)或程式化資料集中之最終字之一局部資料集編程操作(步驟390)而與ECC一起被程式化。因此,致能ECC(與資料集一起被儲存)之使用(步驟563)。
於步驟560,如果ECC等於表示第一狀態之第一預定值(例如xtECC[7:0] = 8'h00),則並未致能ECC(與資料集一起被儲存)之使用(步驟561),其乃因為第一狀態表示禁能ECC之欄位中的資料之使用(步驟470、第4圖)。
如果從資料集讀取之第一額外ECC位元(例如xtECC[8])並不等於來自邏輯函數之結果(步驟520,No),則可表示ECC等於指示第二狀態之第二預定值(xtECC[7:0]= 8'hC0),ECC等於指示空白ECC狀態之空白值(xtECC[7:0] = 8'hFF),或擴展ECC由於一保留錯誤已改變。更進一步決定ECC是否等於表示第一狀態之第一預定值(例如xtECC[7:0]= 8'h00)。如果是的話(步驟530,是),則並未致能與資料集一起被儲存之ECC之使用(步驟540)。如果不是的話(步驟530,否),則更進一步決定ECC等於是否指示第二狀態之第二預定值(例如xtECC[7:0] = 8'hC0),如為特殊情況所設定的(步驟451,第4圖)。如果ECC等於指示第二狀態之第一預定值(步驟550,是),則將ECC設定到第一預定值(例如xtECC[7:0]= 8'h00),然後,致能與資料集一起被儲存之ECC之使用(步驟551)。
如果ECC並不等於指示第二狀態之第二預定值(步驟550,否),則於步驟570,更進一步決定ECC是否等於指示一空白ECC狀態之空白值(例如xtECC[7:0] = 8'hFF)。如果ECC並不等於指示一空白ECC狀態之空白值,則不致能與資料集一起被儲存之ECC之使用(步驟561)。
於步驟570,如果ECC等於指示一空白ECC狀態之空白值(例如xtECC[7:0] = 8'hFF),則更進一步決定第二額外ECC位元是否被程式化(例如xtECC[9]=1'b0),藉以指示資料集不是空白的。如果資料集不是空白的(步驟571,否),則不致能與資料集一起被儲存之ECC之使用(步驟561)。因為資料集不是空白的,所以已發生一項錯誤,如由從資料集讀取之第一額外ECC位元不等於來自邏輯函數之結果(步驟520,否)之事實所表示的。如果資料集是空白的(例如xtECC[9]=1'b1。步驟571,是),則與資料集一起被儲存之ECC之使用係為一空白資料集而致能(步驟572),從而保護一資料集中之一空白資料圖案。
綜上所述,雖然本案已以較佳實施例揭露如上,然其並非用以限定本案。本案所屬技術領域中具有通常知識者,在不脫離本案之精神和範圍內,當可作各種之更動與潤飾。因此,本案之保護範圍當視後附之申請專利範圍所界定者為準。
305、310、320、330、340、341、343、350、360、365、370、375、380、385、390‧‧‧步驟
Claims (1)
-
(1)
一種記憶體之操作方法,包括:
儲存複數個資料集以及該些資料集之複數錯誤校正碼(ECC)於該記憶體中,該些資料集包括複數個可編址段;以及
當將新資料寫入在該記憶體中之一選擇資料集之該些可編址段之其中一個可編址段中時,如果儲存該新資料及事先在該選擇資料集中被程式化之資料之可編址段包括至少一預定數目之可編址段的話,則計算並儲存該選擇資料集之一ECC。
(2)
如申請專利範圍第1項所述之方法,包括:儲存複數指示於該些資料集,該些指示表示是否致能或禁能與該些資料集一起被儲存之該些ECC之使用。
(3)
如申請專利範圍第1項所述之方法,包括:儲存複數個擴展ECC,包括該些資料集之該些ECC的一欄位,以及從該ECC衍生出的一第一額外ECC位元之一欄位。
(4)
如申請專利範圍第3項所述之方法,其中該些擴展ECC具有一第一預定值、一第二預定值以及一計算值,該第一預定值表示一第一狀態,用於禁能該些ECC之該欄位中的該資料之使用,該第二預定值表示一第二狀態,其中該些擴展ECC原始具有等於該第一預定值之一計算值,而該計算值表示一第三狀態,包括在該些ECC之該欄位中的複數個計算出的ECC,以及在從該計算出的ECC衍生出的該第一額外ECC位元之該欄位中的一位元;
如果儲存該新資料及事先在該選擇資料集中被程式化之資料之可編址段包括至少一預定數目之可編址段,且該選擇資料集已經於該新資料之該可編址段被程式化的一錯誤狀況不會發生的話,則使用該選擇資料集之一擴展ECC之一計算值;
如果該選擇資料集係於該選擇資料集之可編址段數目中的一第一可編址段或一最終可編址段被程式化,且該選擇資料集係於非該新資料之該些位址之其他位址被程式化的話,則使用該計算值;
如果該選擇資料集係於該新資料之該可編址段事先被程式化的話,則將該擴展ECC設定成該第一預定值,藉以表示禁能與該選擇資料集一起被儲存之該些ECC之使用;
如果該擴展ECC等於該第一預定值,且該選擇資料集並未於該新資料用之該可編址段被程式化的話,則將該擴展ECC設定成該第二預定值;以及
該些擴展ECC包括一第二額外ECC位元之一欄位,包括將該第二額外ECC位元設定成一數值,用於表示該選擇資料集係在至少一可編址段中被程式化。
(5)
一種記憶體之操作方法,該記憶體儲存包括複數個可編址段之複數個資料集以及該記憶體中之該些資料集之複數個錯誤校正碼(ECC),該操作方法包括:
從一選擇資料集讀取一擴展ECC,該擴展ECC包括一ECC及一第一額外ECC位元,其中該第一額外ECC位元係藉由使用一邏輯函數而從該ECC衍生出;以及
如果該ECC之該邏輯函數等於該第一額外ECC位元,且該ECC不等於一第一預定值的話,則致能與該選擇資料集一起被儲存之該ECC之使用,其中該第一預定值表示一第一狀態以禁能該些ECC之使用。
(6)
如申請專利範圍第5項所述之方法,包括:如果該ECC之該邏輯函數不等於該第一額外ECC位元,且該ECC等於一第二預定值的話,則將該ECC設定成該第一預定值,然後,致能相關於該選擇資料集之該ECC之使用,其中該第二預定值表示一第二狀態,該ECC原始具有等於該第一預定值之一計算值。
(7)
如申請專利範圍第5項所述之方法,包括:
讀取一第二額外ECC位元,該第二額外ECC位元表示該選擇資料集是否在至少一可編址段中被程式化;以及
如果該ECC之該邏輯函數不等於該第一額外ECC位元,該ECC等於表示一空白ECC狀態之一空白值,且該第二額外ECC位元表示該選擇資料集是空白的話,則致能與該選擇資料集一起被儲存之該些ECC之使用。
(8)
一種記憶體,包括:
複數個資料集,包括複數個可編址段,以及該記憶體中之該些資料集之複數個錯誤校正碼(ECC);以及
一控制器,耦接至該些資料集,包括邏輯,該邏輯在將新資料寫入在該記憶體中之一選擇資料集之該些可編址段之其中一個可編址段中時,如果儲存該新資料及事先在該選擇資料集中被程式化之資料之一些可編址段係包括至少一預定數目之可編址段的話,則計算並儲存該選擇資料集之一ECC。
(9)
如申請專利範圍第8項所述之記憶體,其中
該控制器包括:
一邏輯,儲存複數個擴展ECC,該些擴展ECC包括該些資料集之該些ECC的一欄位,以及從該ECC衍生出的一第一額外ECC位元之一欄位,該些擴展ECC具有一第一預定值、一第二預定值以及一計算值,該第一預定值表示一第一狀態,用於禁能該些ECC之該欄位中的該資料之使用,該第二預定值表示一第二狀態,於其中該些擴展ECC原始具有等於該第一預定值之一計算值,而該計算值表示一第三狀態,包括在該些ECC之該欄位中的複數個計算出的ECC,以及在從該計算出的ECC衍生出的該第一額外ECC位元之在該欄位中的一個位元;
一邏輯,使用該選擇資料集之一擴展ECC之一計算值,如果儲存該新資料及事先在該選擇資料集中被程式化之資料之可編址段包括至少一預定數目之可編址段,且該選擇資料集已經於該新資料之該可編址段被程式化的一錯誤狀況不會發生的話;
一邏輯,其將該擴展ECC設定成該第一預定值,藉以表示禁能與該選擇資料集一起被儲存之該些ECC之使用,如果該選擇資料集係於該新資料之該可編址段事先被程式化的話;
一邏輯,將該擴展ECC設定成該第二預定值,如果該擴展ECC等於該第一預定值且該選擇資料集並未於該新資料之該可編址段被程式化的話,該些擴展ECC包括一第二額外ECC位元用之一欄位;以及
一邏輯,該邏輯將該第二額外ECC位元設定成一數值,以表示該選擇資料集係在至少一可編址段中被程式化。
(10)
如申請專利範圍第8項所述之記憶體,其中
該控制器包括:
一邏輯,用於從一選擇資料集讀取包括一ECC及一第一額外ECC位元之一擴展ECC,其中該第一額外ECC位元係藉由使用一邏輯函數而從該ECC衍生出;
一邏輯,用於致能與該選擇資料集一起被儲存之該ECC之使用,如果該ECC之該邏輯函數等於該第一額外ECC位元,且該ECC並不等於一第一預定值的話,該第一預定值表示一第一狀態以禁能該些ECC之使用;
一邏輯,將該ECC設定成該第一預定值,然後致能具有該選擇資料集之該ECC之使用,如果該ECC之該邏輯函數並不等於該第一額外ECC位元,且該ECC等於一第二預定值,該第二預定值表示該ECC原始具有等於該第一預定值之一計算值之一第二狀態;
一邏輯,讀取一第二額外ECC位元,該第二額外ECC位元表示該選擇資料集是否在至少一可編址段中被程式化;以及
一邏輯,致能與該選擇資料集一起被儲存之該些ECC之使用,如果該ECC之該邏輯函數並不等於該第一額外ECC位元、該ECC等於表示一空白ECC狀態之一空白值,以及該第二額外ECC位元表示該選擇資料集是空白的話。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103101910A TWI523023B (zh) | 2014-01-20 | 2014-01-20 | 用於記憶體之錯誤校正碼方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103101910A TWI523023B (zh) | 2014-01-20 | 2014-01-20 | 用於記憶體之錯誤校正碼方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201530553A true TW201530553A (zh) | 2015-08-01 |
TWI523023B TWI523023B (zh) | 2016-02-21 |
Family
ID=54342816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103101910A TWI523023B (zh) | 2014-01-20 | 2014-01-20 | 用於記憶體之錯誤校正碼方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI523023B (zh) |
-
2014
- 2014-01-20 TW TW103101910A patent/TWI523023B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI523023B (zh) | 2016-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11362685B2 (en) | Nonvolatile memory device and read and copy-back methods thereof | |
CN110147295B (zh) | 存取闪存模块的方法、闪存控制器以及记忆装置 | |
KR102102828B1 (ko) | 메모리에서 에러 정정 코드(ecc) 연산 | |
CN105144302B (zh) | 存储器装置中的错误校正操作 | |
KR101750662B1 (ko) | 데이터 에러 교정용 회로, 장치, 및 방법 | |
KR101730510B1 (ko) | 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출 | |
US9535785B2 (en) | ECC method for flash memory | |
US10635585B2 (en) | On-chip copy with data folding in three-dimensional non-volatile memory array | |
US9760434B2 (en) | ECC method for double pattern flash memory | |
TWI442407B (zh) | 在固態儲存系統中之資料回復 | |
KR101343262B1 (ko) | 동시 판독 및 기록 메모리 동작을 수행하는 방법 및 장치 | |
US20160283319A1 (en) | Data storage device and encoding method thereof | |
TW201508758A (zh) | 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 | |
CN103594120A (zh) | 以读代写的存储器纠错方法 | |
KR20210029661A (ko) | 메모리 액세스와 관련하여 결함 있는 비트 라인 관리 | |
US10514980B2 (en) | Encoding method and memory storage apparatus using the same | |
US20230195566A1 (en) | Memory device crossed matrix parity | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2010282369A (ja) | メモリシステム | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
TWI523023B (zh) | 用於記憶體之錯誤校正碼方法 | |
US9104596B2 (en) | Memory system | |
US9417954B2 (en) | Data storage device and method for operating the same | |
TWI500036B (zh) | 非揮發性儲存裝置及其控制方法 | |
KR20200070686A (ko) | 저장 장치 및 그 동작 방법 |