TWI698881B - 編碼方法及使用所述編碼方法的記憶體儲存裝置 - Google Patents
編碼方法及使用所述編碼方法的記憶體儲存裝置 Download PDFInfo
- Publication number
- TWI698881B TWI698881B TW108124718A TW108124718A TWI698881B TW I698881 B TWI698881 B TW I698881B TW 108124718 A TW108124718 A TW 108124718A TW 108124718 A TW108124718 A TW 108124718A TW I698881 B TWI698881 B TW I698881B
- Authority
- TW
- Taiwan
- Prior art keywords
- codeword
- bits
- bit
- new
- flip
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- 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
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
一種用於採用錯誤校正碼演算法的記憶體存儲裝置的編碼方法。所述編碼方法包括:接收包含寫入位址及寫入資料的寫入命令;讀取現有碼字;將翻轉位元附加到寫入資料;由錯誤校正碼編碼器基於錯誤校正碼演算法對寫入資料及翻轉位元進行編碼以產生多個奇偶校驗位元,並將寫入資料及翻轉位元附加到所述多個奇偶校驗位元以產生新碼字;基於所選位元中從現有碼字成為新碼字需要改變的位元數目來翻轉新碼字;以及將新碼字及經翻轉的新碼字中的一者寫入到寫入位址。另外,本發明提供一種使用所述編碼方法的記憶體儲存裝置。
Description
本發明是有關於一種記憶體儲存裝置,且特別是有關於一種編碼方法及使用所述編碼方法的記憶體儲存裝置。
一般來說,可根據錯誤校正碼(error correcting code,ECC)將待寫入到可重複寫入非易失性記憶體(non-volatile memory,NVM)的資料編碼成碼字。也可通過對應的解碼程序來處理從可重複寫入非易失性記憶體讀取的碼字以還原所述資料。碼字通常是資料本身與根據以下產生的奇偶校驗資料的組合:博斯-喬杜裡-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)碼、漢明碼(hamming code)、具有額外奇偶校驗的漢明碼(SECDED)、裡德-索羅門(Reed-Solomon)碼、蕭氏(Hsiao)碼、或連氏(Lien)碼等。
為改善NVM寫入功率、寫入時間及週期可靠性,需要一種方法及一種晶片上ECC演算法來實現低功率設計及頁面寫入時
間減少並改善裝置可靠性。
因此,本發明提供一種編碼方法及一種使用所述編碼方法的記憶體儲存裝置,其中利用ECC演算法來實作NVM翻轉位元寫入功能,以減少寫入時間、寫入功率並改善可靠性。
本發明的示例性實施例提供一種用於採用錯誤校正碼(ECC)演算法的記憶體儲存裝置的編碼方法。所述編碼方法包括:接收包含寫入位址及寫入資料的寫入命令;讀取現有碼字;將翻轉位元附加到寫入資料;由ECC編碼器基於預設ECC對寫入資料及翻轉位元進行編碼以產生多個奇偶校驗位元,並將寫入資料及翻轉位元附加到所述奇偶校驗位元以產生新碼字;基於所選位元中從現有碼字成為新碼字需要改變的位元數目來翻轉新碼字;以及將新碼字及經翻轉的新碼字中的一者寫入到寫入位址。
本發明的另一示例性實施例提供一種採用ECC演算法的記憶體儲存裝置。所述記憶體儲存裝置包括連接介面、記憶體陣列及記憶體控制電路。所述連接介面被配置成耦接到主機系統。所述記憶體控制電路耦接到連接介面及記憶體陣列且被配置成回應於接收到包含寫入位址及寫入資料的寫入命令而基於ECC演算法來執行編碼操作。所述編碼操作包括:讀取現有碼字;將翻轉位元附加到寫入資料;由ECC編碼器基於ECC演算法來對寫入資料及翻轉位元進行編碼以產生多個奇偶校驗位元,並將寫入資料
及翻轉位元附加到所述奇偶校驗位元以產生新碼字;基於所選位元中從現有碼字成為新碼字需要改變的位元數目來翻轉新碼字;以及將新碼字及經翻轉的新碼字中的一者寫入到寫入位址。
基於以上內容,通過採用本發明中所提供的編碼方法及記憶體儲存裝置,回應於接收到寫入命令,對寫入資料進行編碼並與寫入位址中的或具有預定義模式的現有碼字進行比較以確定寫入時需要改變的位元數目。基於所確定數目來選擇性地翻轉經編碼碼字的位元,並將指示位元翻轉的至少一個翻轉位元添加到碼字。因此,寫入時的位元改變數目可減少,且寫入時間及功率可減少。
100:記憶體儲存裝置
110:連接介面
130:記憶體控制電路/記憶體控制電路單元
131:錯誤校正碼(ECC)編碼器
150:記憶體陣列
CW:51位元碼字/51位元新碼字
EC1、EC2、EC4:51位元現有碼字/現有碼字
EC3:現有碼字
EC3a:現有碼字的偶數位元
EC3b:現有碼字的奇數位元
f1、f3、f4:翻轉位元
m1~m32:寫入資料
Mp:矩陣
NC1、NC2、NC4:51位元新碼字/新碼字
NC1’、NC2’、NC3a’、NC3b’、NC4’:經翻轉新碼字
NC3:52位元新碼字/新碼字
NC3a:新碼字的偶數位元
NC3b:新碼字的奇數位元
OD:33位元資料
p1~p18:元素
PD:18位元奇偶校驗資料
S202、S204、S206、S208、S702、S704、S706、S708、S710、S712、S714、S716、S718、S720、S722:步驟
圖1是示出根據本發明實施例的記憶體儲存裝置的示意性方塊圖。
圖2是示出根據本發明實施例用於記憶體儲存裝置的編碼方法的流程圖。
圖3是示出根據本發明另一實施例採用通過BCH(51,33,7)修改的ECC演算法的編碼方法的示意圖。
圖4是示出根據本發明另一實施例採用通過BCH(51,33,7)修改的ECC演算法的編碼方法的示意圖。
圖5是示出根據本發明另一實施例採用通過BCH(51,33,7)
修改的ECC演算法的編碼方法的示意圖。
圖6是示出根據本發明另一實施例採用通過BCH(51,33,7)修改的ECC演算法的編碼方法的示意圖。
圖7是示出根據本發明實施例用於記憶體儲存裝置的編碼方法的流程圖。
圖8是示出根據本發明另一實施例採用通過BCH(52,34,7)修改的ECC演算法的編碼方法的示意圖。
現在將詳細參照本發明的較佳實施例,在圖式中示出所述較佳實施例的實例。在圖式及說明中,盡可能地使用相同參考編號來指代相同或類似的元件。
參照圖1,記憶體儲存裝置100包括連接介面110、記憶體控制電路130及記憶體陣列150。在一個實施例中,記憶體儲存裝置100是可重複寫入非易失性記憶體,且記憶體陣列150包括多個可重複寫入非易失性記憶體胞元。
在一個實施例中,連接介面110被配置成通過序列先進技術附接(Serial Advanced Technology Attachment,SATA)標準耦接到主機系統(圖中未示出)。在其他實施例中,連接介面110可符合並行先進技術附接(Parallel Advanced Technology Attachment,PATA)標準、電機電子工程師學會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、或其他適
合的標準,這在本發明並不受限。在一個實施例中,連接介面110可與記憶體控制電路單元130封裝在一個晶片中,或者被放置在具有記憶體控制電路單元130的晶片之外。
記憶體控制電路130耦接到連接介面110及記憶體陣列150,且被配置成執行多個邏輯閘或控制命令,所述邏輯閘或控制命令是以硬體形式或以韌體形式來實作並根據主機系統的命令而在記憶體陣列150中執行例如資料寫入、讀取或抹除等操作。
在一個實施例中,記憶體儲存裝置100是採用ECC演算法的可重複寫入NVM,其中記憶體控制電路130進一步包括ECC編碼器131,ECC編碼器131使用所述ECC演算法來對通過連接介面110接收的資料進行編碼以產生碼字並將所述碼字寫入到記憶體陣列150中。應注意,在本發明中,通過所述ECC演算法產生的碼字的一的補數(one's complement)仍為另一碼字。所述ECC演算法例如是通過連氏碼、博斯-喬杜裡-霍昆格姆(BCH)碼、漢明碼、具有額外奇偶校驗的漢明碼(SECDED)、裡德-索羅門碼、或蕭氏碼等修改的ECC,這在本文並不受限。
記憶體陣列150耦接到記憶體控制電路130,且包括多個記憶體胞元(例如,可重複寫入非易失性記憶體胞元)。在一個實施例中,主機系統向記憶體儲存裝置100傳送要將資料寫入到記憶體儲存裝置100的寫入命令,且接著,記憶體控制電路130回應於所述寫入命令而將寫入資料編碼成碼字並將所述碼字儲存在記憶體陣列150中。
圖2是示出根據本發明實施例用於記憶體儲存裝置的編碼方法的流程圖。所述編碼方法可由圖1所示實施例的記憶體儲存裝置100執行。因此,在本實施例中,將通過參照前述記憶體儲存裝置100來說明所述編碼方法。
參照圖2,記憶體控制電路130通過連接介面110接收包含寫入位址及寫入資料的寫入命令(步驟S202)。回應於所接收的寫入命令,記憶體控制電路130的ECC編碼器131預先讀取現有碼字(步驟S204)。在一個實施例中,現有碼字是預先儲存在寫入位址中的碼字,且在另一實施例中,現有碼字是具有預定義資料模式(例如,000000…、或者FFFFFF…)的碼字,這在本文並不受限。
同時,ECC編碼器131基於以上所述的ECC演算法將寫入資料編碼成新碼字,並基於從現有碼字成為新碼字需要改變的位元數目來翻轉所述新碼字的多個位元(步驟S206)。具體來說,在步驟S206中,ECC編碼器131可將翻轉位元附加到寫入資料,基於ECC演算法來計算寫入資料及翻轉位元的奇偶校驗資料,並將奇偶校驗資料、寫入資料及翻轉位元組合以產生新碼字。接著,ECC編碼器131將新碼字的多個所選位元與現有碼字的多個所選位元進行比較以確定從現有碼字成為新碼字需要改變的位元數目,並判斷需要改變的所確定位元數目是否超過預定閾值。應注意,在本發明中,經編碼新碼字的一的補數也為碼字。
在一些實施例中,所述預定閾值是資料位元及奇偶校驗
位元的總數目的一半,這在本文並不受限。
如果所確定位元數目被確定為超過預定閾值,則ECC編碼器131翻轉包括資料位元、奇偶校驗位元及翻轉位元的新碼字的位元。另一方面,如果所確定位元數目被確定為低於預定閾值,則ECC編碼器131不對新碼字的位元執行位元翻轉。應注意,如果預定閾值等於碼字位元的數目的一半且所確定位元數目被確定為等於預定閾值,也就是說,將改變的位元數目與將不改變的位元數目相同,則ECC編碼器131也不對經編碼新碼字的位元執行位元翻轉。
最終,ECC編碼器131將新碼字及經翻轉新碼字中的一者寫入到寫入位址(步驟S208)。
基於以上內容,由於通過選擇性地翻轉將寫入的碼字的位元而將從現有碼字成為新碼字而改變的位元數目減少至小於碼字位元數目的一半,因此寫入時間及功率可減少,且可靠性及耐久性可改善。
舉例來說,圖3是示出根據本發明另一實施例採用通過BCH(51,33,7)修改的ECC演算法的編碼方法的示意圖。
參照圖3,基於通過BCH(51,33,7)修改的ECC演算法,ECC編碼器131將包括32位元寫入資料m1至m32及一個翻轉位元f1的33位元資料OD編碼成51位元碼字CW,且矩陣Mp是計算33位元資料OD的18位元奇偶校驗資料PD時所使用的18*33矩陣。具體來說,當記憶體儲存裝置100接收到32位元寫入資料
時,ECC編碼器131首先將翻轉位元f1附加到所述32位元寫入資料。接著,可將包括所述32位元寫入資料及翻轉位元f1的33位元資料OD寫入單行向量中。接著,將33位元資料OD乘以矩陣Mp,以便獲得具有18個元素p1至p18的單行向量,所述18個元素p1至p18各自表示18位元奇偶校驗資料PD的一個位元。接著,ECC編碼器131將33位元資料OD附加到18位元奇偶校驗資料PD,以產生51位元新碼字CW。
在一些實施例中,翻轉位元f1指示對碼字的位元翻轉。在一些實施例中,以第一值(即,邏輯1)來設定所附加的翻轉位元f1,所述第一值指示未對碼字進行位元翻轉。當對碼字執行位元翻轉時,翻轉位元f1也被翻轉成第二值(即,邏輯0),所述第二值指示對碼字進行了位元翻轉。
基於以上所述的編碼方法,由ECC編碼器131從寫入資料產生包括翻轉位元的新碼字。應注意,在一個實施例中,從自寫入位址讀取的現有碼字成為新碼字而改變的位元被減至最少,且在另一實施例中,從具有預定義資料模式的現有碼字成為新碼字而改變的位元被減至最少。以下給出示例性實施例來進行進一步說明。
圖4是示出根據本發明另一實施例採用通過BCH(51,33,7)修改的ECC演算法的編碼方法的示意圖。參照圖4,當接收到寫入資料時,ECC編碼器131通過使用在圖3所示實施例中所述的ECC演算法將寫入資料編碼成51位元新碼字NC1。ECC編碼
器131還從寫入位址讀出51位元現有碼字EC1。接著,ECC編碼器131將新碼字NC1的多個位元與現有碼字EC1的多個位元進行比較,以確定從現有碼字EC1成為新碼字NC1需要改變的位元數目。最終,ECC編碼器131基於所確定數目來翻轉包括寫入資料、奇偶校驗位元及翻轉位元的新碼字NC1的位元,並將新碼字NC1及經翻轉新碼字NC1’中的一者寫入到寫入位址。具體來說,ECC編碼器131判斷所確定數目是否超過碼字位元的數目的一半。如果是,則ECC編碼器131翻轉新碼字NC1的所有位元並將包括翻轉位元的經翻轉新碼字NC1’寫入到寫入位址。如果判斷結果為否,則ECC編碼器131不對新碼字NC1執行位元翻轉,並將新碼字NC1寫入到寫入位址。
另一方面,圖5是示出根據本發明另一實施例採用通過BCH(51,33,7)修改的ECC演算法的編碼方法的示意圖。參照圖5,當接收到寫入資料時,ECC編碼器131通過使用圖3所示實施例中所述的ECC演算法將寫入資料編碼成51位元新碼字NC2。ECC編碼器131還讀出具有預定義資料模式(例如000000…)的51位元現有碼字EC2。接著,ECC編碼器131將新碼字NC2的多個位元與現有碼字EC2的多個位元進行比較,以確定從現有碼字EC2成為新碼字NC2需要改變的位元數目。最終,ECC編碼器131基於所確定數目來翻轉包括寫入資料、奇偶校驗位元及翻轉位元的新碼字NC2的位元,並將新碼字NC2及經翻轉新碼字NC2’中的一者寫入到寫入位址。具體來說,ECC編碼器131判斷所確定
數目是否超過碼字位元的數目的一半。如果是,則ECC編碼器131翻轉新碼字NC2的所有位元並將包括翻轉位元的經翻轉新碼字NC2’寫入到寫入位址。如果判斷結果為否,則ECC編碼器131不對新碼字NC2執行位元翻轉,並將新碼字NC2寫入到寫入位址。
應注意,由於通過ECC演算法產生的奇偶校驗位元(例如,圖3中的奇偶校驗位元p1至p18)始終隨著寫入資料的改變(甚至單位元(one-bit)改變)而改變,因此預期會頻繁地寫入那些奇偶校驗位元、接著寫入所述寫入資料(例如,圖3中的寫入資料)。在此種情形中,即使奇偶校驗位元中需要改變的位元數目是大的,因寫入資料中需要改變的位元較少(即,需要改變的總位元數目小於碼字位元的數目的一半),碼字可能不被翻轉。因此,如果通過資料位元與奇偶校驗位元的總數目來確定位元翻轉,則無法有效地減少奇偶校驗位元的週期次數。因此,在以下實施例中,編碼方法可僅基於從現有碼字成為新碼字需要改變的奇偶校驗位元來確定位元翻轉,以進一步改善位元寫入耐久性,但本發明並非僅限於此。
舉例來說,圖6是示出根據本發明另一實施例採用通過BCH(51,33,7)修改的ECC演算法的編碼方法的示意圖。參照圖6,當接收到寫入資料時,ECC編碼器131通過使用在圖3所示實施例中所述的ECC演算法將寫入資料編碼成51位元新碼字NC4。ECC編碼器131還從寫入位址讀出51位元現有碼字EC4。接著,ECC編碼器131將新碼字NC4的多個奇偶校驗位元p1至
p18與現有碼字EC4的多個奇偶校驗位元p1至p18進行比較,以確定奇偶校驗位元中從現有碼字EC4成為新碼字NC4需要改變的位元數目。最終,ECC編碼器131基於所確定數目來翻轉新碼字NC4的位元,並將新碼字NC4及經翻轉新碼字NC4’中的一者寫入到寫入位址。具體來說,ECC編碼器131判斷所確定數目是否超過奇偶校驗位元的數目的一半。如果是,則ECC編碼器131翻轉新碼字NC4的所有位元並將包括翻轉位元的經翻轉新碼字NC4’寫入到寫入位址。如果判斷結果為否,則ECC編碼器131不對新碼字NC4執行位元翻轉,並將新碼字NC4寫入到寫入位址。
為進一步減少寫入時間及功率,在一些實施例中,採用多個翻轉位元以分別指示對碼字的不同部分的位元翻轉,且在一些實施例中,所述翻轉位元還包含在碼字的不同部位中,這在本文並不受限。在一個實施例中,翻轉位元包括:第一翻轉位元,包含在碼字的多個偶數位元中的一者中以用於指示對偶數位元的位元翻轉;以及第二翻轉位元,包含在碼字的多個奇數位元中的一者中以用於指示對奇數位元的位元翻轉。
圖7是示出根據本發明實施例用於記憶體儲存裝置的編碼方法的流程圖。所述編碼方法可由圖1所示實施例的記憶體儲存裝置100執行。因此,在本實施例中,將通過參照前述記憶體儲存裝置100來說明所述編碼方法。
參照圖7,記憶體控制電路130接收包含寫入位址及寫入資料的寫入命令(步驟S702)。回應於所接收的寫入命令,記憶體
控制電路130的ECC編碼器131預先讀取現有碼字(步驟S704)。在一個實施例中,現有碼字是預先儲存在寫入位址中的碼字,且在另一實施例中,現有碼字是具有預定義資料模式(例如,000000…、或者FFFFFF…)的碼字,這在本文並不受限。
同時,ECC編碼器131基於ECC演算法將寫入資料編碼成新碼字而不翻轉新碼字的位元,並將新碼字載入到寫入緩衝器(步驟S706)。具體來說,在步驟S706中,ECC編碼器131可將兩個翻轉位元附加到寫入資料,基於ECC演算法來計算寫入資料及翻轉位元的奇偶校驗資料,將奇偶校驗資料、寫入資料及翻轉位元組合以產生新碼字,並將新碼字載入到寫入緩衝器。在此實施例中,所附加的翻轉位元包括用於指示對偶數位元的位元翻轉的第一翻轉位元、及用於指示對奇數位元的位元翻轉的第二翻轉位元。
接著,ECC編碼器131並行或連續地執行步驟S708及S714。應注意,在本發明中,經編碼新碼字的一的補數也為碼字。
在步驟S708中,ECC編碼器131將新碼字的偶數位元與現有碼字的偶數位元進行比較以確定從現有碼字的所有偶數位元成為新碼字的所有偶數位元需要改變的位元數目,並接著判斷所確定數目是否超過碼字位元的數目的四分之一(步驟S710)。如果是,則ECC編碼器131翻轉碼字的所有偶數位元,並將經翻轉偶數位元載入到寫入緩衝器中(步驟S712)。
相似地,在步驟S714中,ECC編碼器131將新碼字的奇
數位元與現有碼字的奇數位元進行比較以確定從現有碼字的所有奇數位元成為新碼字的所有奇數位元需要改變的位元數目,並接著判斷所確定數目是否超過碼字位元的數目的四分之一(步驟S716)。如果是,則ECC編碼器131翻轉碼字的所有奇數位元並將經翻轉奇數位元載入到寫入緩衝器中(步驟S718)。
應注意,在步驟S710及S716中,如果判斷結果為否,則ECC編碼器131不對碼字執行位元翻轉(步驟S720),且因此,寫入緩衝器中不存在改變。應注意,在偶數位元及奇數位元中的每一部分中,如果將改變的位元數目與將不改變的位元數目相同,則ECC編碼器131不執行位元翻轉。
最終,ECC編碼器131執行碼字寫入,以將寫入緩衝器中的碼字寫入到寫入位址(步驟S722)。
基於以上內容,由於通過選擇性地且分別地翻轉將寫入的碼字的偶數位元及奇數位元而減少從現有碼字成為新碼字改變的位元數目,因此寫入時間及功率可進一步減少且可靠性可進一步改善。
舉例來說,圖8是示出根據本發明另一實施例採用通過BCH(52,34,7)修改的ECC演算法的編碼方法的示意圖。參照圖8,當接收到寫入資料時,ECC編碼器131通過使用與圖3所示實施例中所述的ECC演算法相似的ECC演算法將寫入資料編碼成52位元新碼字NC3。應注意,在此實施例中,ECC編碼器131首先將兩個翻轉位元附加到寫入資料,並將資料位元及翻轉位元編
碼成52位元新碼字。在一些實施例中,所述兩個翻轉位元單獨地指示對碼字中所有偶數資料位元及所有奇數資料位元的位元翻轉。在一些實施例中,以第一值(即,邏輯1)來設定所附加的所述兩個翻轉位元,所述第一值指示未對碼字進行位元翻轉。當對碼字的偶數位元或奇數位元執行位元翻轉時,對應的翻轉位元也被翻轉成第二值(即,邏輯0),所述第二值指示對碼字進行了位元翻轉。
在一些實施例中,回應於接收到寫入命令,ECC編碼器131還讀出包括兩個翻轉位元的52位元現有碼字EC3。
接著,ECC編碼器131將新碼字NC3的多個偶數位元NC3a與現有碼字EC3的多個偶數位元EC3a進行比較,以確定所有偶數位元中從現有碼字EC3成為新碼字NC3需要改變的位元數目。同時,ECC編碼器131還將新碼字NC3的多個奇數位元NC3b與現有碼字EC3的多個奇數位元EC3b進行比較,以確定所有奇數位元中從現有碼字EC3成為新碼字NC3需要改變的位元數目。此外,應注意,在本發明中,經編碼新碼字的任一部分(即,偶數位元或奇數位元)的一的補數也為碼字。
最終,ECC編碼器131基於偶數位元中需要改變的所確定位元數目來翻轉新碼字NC3的偶數位元NC3a,基於奇數位元中需要改變的所確定位元數目來翻轉新碼字NC3的奇數位元NC3b,並將包括所述兩個翻轉位元的整個新碼字寫入到寫入位址。具體來說,ECC編碼器131判斷偶數位元中需要改變的所確
定位元數目是否超過碼字位元的數目的四分之一。如果是,則ECC編碼器131翻轉新碼字NC3的所有偶數位元NC3a並將包括翻轉位元的經翻轉新碼字NC3a’載入到寫入緩衝器。如果否,則ECC編碼器131不對新碼字NC3的偶數位元NC3a執行位元翻轉。相似地,ECC編碼器131判斷奇數位元中需要改變的所確定位元數目是否超過碼字位元的數目的四分之一。如果是,則ECC編碼器131翻轉新碼字NC3的所有奇數位元NC3b並將包括翻轉位元的經翻轉新碼字NC3b’載入到寫入緩衝器。如果否,則ECC編碼器131不對新碼字NC3的奇數位元NC3b執行位元翻轉。接著,將寫入緩衝器中包括所有偶數位元及所有奇數位元的整個碼字寫入到記憶體陣列150中。
在前述實施例中,基於本發明的編碼方法,從現有碼字成為經編碼碼字而改變的偶數位元及奇數位元被減至最少。然而,在一些實施例中,基於本發明中所提供的編碼方法,第一部分或第二部分中的奇偶校驗位元中改變的位元被減至最少,但本發明並非僅限於此。
綜上所述,在本發明中所提供的編碼方法及記憶體儲存裝置中,引入一種利用BCH ECC演算法來實作NVM翻轉位元寫入功能的ECC演算法,其中採用一個或多個翻轉位元來指示碼字位元的不同部分上的碼字位元翻轉。因此,寫入時的位元改變數目可減少,且寫入時間及功率可減少。此外,記憶體裝置的耐久性得以改善。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S202~S208‧‧‧步驟
Claims (12)
- 一種用於採用錯誤校正碼演算法的記憶體儲存裝置的編碼方法,包括:接收包含寫入地址及寫入資料的寫入命令;讀取現有碼字;將翻轉位元附加到所述寫入資料;由錯誤校正碼編碼器基於所述錯誤校正碼演算法對所述寫入資料及所述翻轉位元進行編碼以產生多個奇偶校驗位元,並將所述寫入資料及所述翻轉位元附加到所述多個奇偶校驗位元以產生新碼字;基於所選位元中從所述現有碼字成為所述新碼字需要改變的位元數目來翻轉所述新碼字;以及將所述新碼字及經翻轉的所述新碼字中的一者寫入到所述寫入地址。
- 如申請專利範圍第1項所述的編碼方法,其中如果將改變的所述位元數目與將不改變的位元數目相同,則不執行位元翻轉。
- 如申請專利範圍第1項所述的編碼方法,其中所述現有碼字及所述新碼字中的任一碼字的一的補數也為碼字。
- 如申請專利範圍第1項所述的編碼方法,其中所述現有碼字及所述新碼字中的每一碼字包括第一翻轉位元且更包括第二 翻轉位元,所述第一翻轉位元包含在所述碼字的第一部分中,所述第二翻轉位元包含在所述碼字的第二部分中。
- 如申請專利範圍第4項所述的編碼方法,其中所述新碼字及所述現有碼字中的任一碼字的所述第一部分或所述第二部分的一的補數也為碼字。
- 如申請專利範圍第4項所述的編碼方法,其中在所述第一部分及所述第二部分中的每一部分中,如果將改變的所述位元數目與將不改變的位元數目相同,則不執行位元翻轉。
- 如申請專利範圍第1項所述的編碼方法,其中所述所選位元是所述奇偶校驗位元或所述奇偶校驗位元及資料位元。
- 一種採用錯誤校正碼演算法的記憶體儲存裝置,包括:連接介面,被配置成耦接到主機系統;記憶體陣列;以及記憶體控制電路,耦接到所述連接介面及所述記憶體陣列,且被配置成響應於接收到包含寫入地址及寫入資料的寫入命令而基於所述錯誤校正碼演算法來執行編碼操作,其中所述編碼操作包括:讀取現有碼字;將翻轉位元附加到所述寫入資料;由錯誤校正碼編碼器基於所述錯誤校正碼演算法來對所述寫入資料及所述翻轉位元進行編碼以產生多個奇偶校驗位元,並將所述 寫入資料及所述翻轉位元附加到所述多個奇偶校驗位元以產生新碼字;基於所選位元中從所述現有碼字成為所述新碼字需要改變的位元數目來翻轉所述新碼字;以及將所述新碼字及經翻轉的所述新碼字中的一者寫入到所述寫入地址。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中所述記憶體控制電路被配置成:如果將改變的所述位元數目與將不改變的位元數目相同,則不執行位元翻轉。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中所述現有碼字及所述新碼字中的每一碼字包括第一翻轉位元且更包括第二翻轉位元,所述第一翻轉位元包含在所述碼字的第一部分中,所述第二翻轉位元包含在所述碼字的第二部分中。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中在所述第一部分及所述第二部分中的每一部分中,所述記憶體控制電路被配置成:如果將改變的所述位元數目與將不改變的位元數目相同,則不執行位元翻轉。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中所述所選位元是所述奇偶校驗位元或所述奇偶校驗位元及資料位元。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/034,365 US20190294497A1 (en) | 2018-03-22 | 2018-07-13 | Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same |
| US16/034,365 | 2018-07-13 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202006735A TW202006735A (zh) | 2020-02-01 |
| TWI698881B true TWI698881B (zh) | 2020-07-11 |
Family
ID=69210128
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108124718A TWI698881B (zh) | 2018-07-13 | 2019-07-12 | 編碼方法及使用所述編碼方法的記憶體儲存裝置 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN110716824B (zh) |
| TW (1) | TWI698881B (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP4115418A4 (en) * | 2020-03-03 | 2023-04-26 | Micron Technology, Inc. | COUNTER-BASED DETECTION AMPLIFIER METHOD FOR MEMORY CELLS |
| CN111679932B (zh) * | 2020-06-01 | 2021-03-09 | 北京和德宇航技术有限公司 | 一种误码数据生成方法、装置、计算机设备及存储介质 |
| CN116112670B (zh) * | 2023-02-10 | 2026-01-16 | 湖南国科微电子股份有限公司 | 一种编码方法、装置、设备及可读存储介质 |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7069494B2 (en) * | 2003-04-17 | 2006-06-27 | International Business Machines Corporation | Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism |
| US20100174954A1 (en) * | 2008-12-31 | 2010-07-08 | Stmicroelectronics, Inc. | Non-polynomial processing unit for soft-decision error correction coding |
| US8880983B2 (en) * | 2009-03-17 | 2014-11-04 | Broadcom Corporation | Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein |
| US9614547B2 (en) * | 2014-06-30 | 2017-04-04 | Sandisk Technologies Llc | Multi-stage decoder |
| US20170199784A1 (en) * | 2015-07-12 | 2017-07-13 | Fangxiao FU | Method of data recovery when errors failing to be corrected through ecc occur to nand flash |
| US20170286197A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Validation of memory on-die error correction code |
| US9811418B2 (en) * | 2015-10-26 | 2017-11-07 | Sandisk Technologies Llc | Syndrome-based codeword decoding |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7904793B2 (en) * | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
| US20140344643A1 (en) * | 2013-05-14 | 2014-11-20 | John H. Hughes, Jr. | Hybrid memory protection method and apparatus |
| US9384144B1 (en) * | 2014-03-25 | 2016-07-05 | SK Hynix Inc. | Error detection using a logical address key |
| TWI543178B (zh) * | 2014-06-10 | 2016-07-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
| US9785502B2 (en) * | 2015-10-27 | 2017-10-10 | Sandisk Technologies Llc | Pipelined decoder with syndrome feedback path |
| US10198313B2 (en) * | 2016-03-11 | 2019-02-05 | Western Digital Technologies, Inc. | Redundancy of error correction encoded data in a storage system |
| US10514980B2 (en) * | 2018-03-22 | 2019-12-24 | Winbond Electronics Corp. | Encoding method and memory storage apparatus using the same |
-
2019
- 2019-07-12 CN CN201910630198.4A patent/CN110716824B/zh active Active
- 2019-07-12 TW TW108124718A patent/TWI698881B/zh active
Patent Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7069494B2 (en) * | 2003-04-17 | 2006-06-27 | International Business Machines Corporation | Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism |
| TWI269155B (en) * | 2003-04-17 | 2006-12-21 | Ibm | Method and checker of checking for errors in an error correction code (ECC) protected mechanism and a computer system including the checker |
| US20100174954A1 (en) * | 2008-12-31 | 2010-07-08 | Stmicroelectronics, Inc. | Non-polynomial processing unit for soft-decision error correction coding |
| US8880983B2 (en) * | 2009-03-17 | 2014-11-04 | Broadcom Corporation | Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein |
| US9614547B2 (en) * | 2014-06-30 | 2017-04-04 | Sandisk Technologies Llc | Multi-stage decoder |
| US20170199784A1 (en) * | 2015-07-12 | 2017-07-13 | Fangxiao FU | Method of data recovery when errors failing to be corrected through ecc occur to nand flash |
| US9811418B2 (en) * | 2015-10-26 | 2017-11-07 | Sandisk Technologies Llc | Syndrome-based codeword decoding |
| US20170286197A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Validation of memory on-die error correction code |
Also Published As
| Publication number | Publication date |
|---|---|
| CN110716824B (zh) | 2023-08-15 |
| TW202006735A (zh) | 2020-02-01 |
| CN110716824A (zh) | 2020-01-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8091010B2 (en) | Error correction circuit and method for reducing miscorrection probability and semiconductor memory device including the circuit | |
| US11003529B2 (en) | Encoding method and memory storage apparatus using the same | |
| JP5017407B2 (ja) | 半導体記憶装置 | |
| KR101645906B1 (ko) | 계층적 반복 에러 교정을 위한 종료 기준 | |
| KR102828487B1 (ko) | 메모리 모듈, 이를 포함하는 메모리 시스템 및 이의 에러 정정 방법 | |
| US10333558B2 (en) | Decoding device and decoding method | |
| US8713407B2 (en) | Semiconductor memory system having ECC circuit and controlling method thereof | |
| JP6540703B2 (ja) | メモリコントローラおよびメモリコントローラの制御方法 | |
| TWI691834B (zh) | 採用連氏錯誤校正碼設計的記憶體儲存裝置及其編碼方法 | |
| KR20080064029A (ko) | 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템 | |
| TWI698881B (zh) | 編碼方法及使用所述編碼方法的記憶體儲存裝置 | |
| US10191801B2 (en) | Error correction code management of write-once memory codes | |
| JP2019057752A (ja) | メモリシステム | |
| US20160285478A1 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
| CN109427401B (zh) | 编码方法和使用此方法的存储器存储装置 | |
| KR20190132238A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
| US20190294497A1 (en) | Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same | |
| CN103631669B (zh) | 一种纠错sram的回写方法 | |
| CN115774632A (zh) | 存储器系统 | |
| TWI701674B (zh) | 記憶體裝置及其資料讀取方法 |