TWI691834B - 採用連氏錯誤校正碼設計的記憶體儲存裝置及其編碼方法 - Google Patents
採用連氏錯誤校正碼設計的記憶體儲存裝置及其編碼方法 Download PDFInfo
- Publication number
- TWI691834B TWI691834B TW107139229A TW107139229A TWI691834B TW I691834 B TWI691834 B TW I691834B TW 107139229 A TW107139229 A TW 107139229A TW 107139229 A TW107139229 A TW 107139229A TW I691834 B TWI691834 B TW I691834B
- Authority
- TW
- Taiwan
- Prior art keywords
- codeword
- bit
- flip
- bits
- existing
- Prior art date
Links
Images
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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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/1044—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 with specific ECC/EDC distribution
-
- 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
-
- 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
- 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
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
提供了一種採用連氏錯誤校正碼設計的記憶體儲存裝置的編碼方法。記憶體儲存裝置包括使用連氏碼的錯誤校正碼編碼器。編碼方法包括:接收寫入命令,寫入命令包括寫入位址與寫入資料。讀取現有碼字,現有碼字包括用以指示現有碼字翻轉的第一翻轉位元,以及基於第一翻轉位元來翻轉現有碼字的位元。藉由錯誤校正碼編碼器,基於連氏碼將寫入資料編碼進新碼字,以及基於需要從現有碼字改變為新碼字的位元數,翻轉新碼字的位元。 並且將新碼字寫進寫入地址,新碼字包括指示新碼字位元翻轉的第一翻轉位元。此外,提供了使用基於連氏錯誤校正碼的編碼方法的記憶體儲存裝置。
Description
本發明是有關於一種記憶體儲存裝置,且特別是有關於一種採用連氏錯誤校正碼設計的記憶體儲存裝置及其編碼方法。
一般來說,根據錯誤校正碼(Error-Correcting Code,簡稱ECC),寫入可複寫式非揮發性記憶體(Non-Volatile Memory,簡稱NVM)的資料可以編碼為碼字(codeword)。從可複寫式非揮發性記憶體讀取的碼字也可以通過相應的解碼程序處理以恢復資料。碼字通常是資料本身和根據Bose-Chaudhuri-Hocquenghem(BCH)碼、漢明碼(Hamming Code)、具有附加奇偶校驗的漢明碼(SECDED)、里德-所羅門碼(Reed-Solomon code),或蕭式碼(Hsiao code)等所產生的奇偶校驗資料的組合。
本發明提供一種編碼方法與使用該編碼方法的記憶體儲存裝置,其中利用錯誤校正碼演算法實現非揮發性記憶體的翻轉位元寫入功能,以減少寫入時間、寫入功率並提高可靠性。
本發明提供一種採用連氏錯誤校正碼設計的記憶體儲存裝置的編碼方法,包括:接收寫入命令,寫入命令包括寫入位址與寫入資料。讀取現有碼字,現有碼字包括用以指示現有碼字翻轉的第一翻轉位元,以及基於第一翻轉位元來翻轉現有碼字的位元。藉由錯誤校正碼編碼器,基於連氏碼將寫入資料編碼進新碼字,以及基於需要從現有碼字改變為新碼字的位元數,翻轉新碼字的位元。將新碼字寫進寫入地址,新碼字包括指示新碼字位元翻轉的第一翻轉位元。
本發明提供一種採用連氏錯誤校正碼設計的記憶體儲存裝置,包括連接介面、記憶體陣列與記憶體控制電路。連接介面配置為耦合到主機系統。記憶體控制電路耦合到連接介面與記憶體陣列,且被配置為根據所接收到包括寫入地址與寫入資料的寫入命令,基於連氏碼來進行編碼操作。其中編碼操作包括:讀取現有碼字,現有碼字包括用以指示現有碼字位元翻轉的第一翻轉位元,以及基於第一翻轉位元來翻轉現有碼字的位元。藉由錯誤校正碼編碼器,基於連氏碼將寫入資料編碼進新碼字,以及基於需要從現有碼字改變為新碼字的位元數,翻轉新碼字的位元。將新碼字寫進寫入地址,新碼字包括指示新碼字位元翻轉的第一翻轉位元。
基於上述,本發明所提供的編碼方法和記憶體儲存裝置,在接收到寫入命令時,編碼寫入資料並與寫入位址中已有的碼字進行比較,或與一個預定義模式進行比較,以決定需要在寫入需改變的位元數。基於所決定的數目選擇性地翻轉編碼後碼字的位元,並且將至少一個指示位元翻轉的翻轉位元添加到碼字。因此,可以減少寫入中的位元數變化,且可以減少寫入時間和寫入功率。
參照圖1,記憶體儲存裝置100包括連接介面110、記憶體控制電路130與記憶體陣列150。在一個實施例中,記憶體儲存裝置100是一個可複寫式非揮發性記憶體,記憶體陣列150可以包括多個可複寫式非揮發性記憶體單元。
在一實施例中,連接介面110被配置為通過序列先進技術附件標準(Serial Advanced Technology Attachment ,簡稱SATA)耦合到主機系統(未示出)。在其他實施例中,連接介面110可以符合並行先進技術附件(Parallel Advanced Technology Attachment,PATA)標準,電氣和電子工程師協會(IEEE)1394標准或其他合適的標準,本發明不作限制。在一個實施例中,連接介面110可以與記憶體控制電路130一起封裝在一個晶片中,或者放置在具有記憶體控制電路130的晶片外。
記憶體控制電路130耦合至連接介面110和記憶體陣列150,並且被配置為執行以硬體形式或以韌體形式實現的多邏輯閘或控制命令,並且進行諸如根據主機系統命令在記憶體陣列150中寫入、讀取或抹除資料等操作。
在一實施例中,記憶體儲存裝置100是採用連氏錯誤校正碼設計(Lien ECC Scheme)的可複寫式非揮發記憶體,其中記憶體控制電路130還包括使用連氏碼(Lien Code)的錯誤校正碼編碼器131,其對通過連接介面110所接收到的資料進行編碼,以產生碼字並將碼字寫入記憶體陣列150。連氏碼的一個特徵是使用連氏碼所產生碼字的1補數(one’s complement),仍是使用連氏碼產生的另一碼字。
記憶體陣列150耦合至記憶體控制電路130,包括多個記憶胞(例如,可複寫式非揮發性記憶體單元)。在一實施例中,主機系統向記憶體儲存裝置100發送寫入命令以寫入資料。然後根據寫入命令,記憶體控制電路130將寫入資料編碼為碼字並將碼字儲存在記憶體陣列150。
圖2為依據本發明一實施例所繪示的連氏碼編碼方法的流程圖。連氏碼編碼方法可以由圖1實施例的記憶體儲存裝置100進行。因此,在本實施例中,參照上述記憶體儲存裝置100來說明編碼方法。
參考圖2,記憶體控制電路130通過連接介面110接收寫入命令,寫入命令包括寫入位址和寫入資料(步驟S202)。根據接收到的寫入命令,記憶體控制電路130的錯誤校正碼編碼器131事先讀取現有碼字(步驟S204)。在一實施例中,現有碼字是事先儲存在寫入位址中的碼字。而在另一實施例中,現有碼字是具有預定義資料模式的碼字(例如000000 ...或FFFFFF ...),在此不作限制。
同時,錯誤校正碼編碼器131基於連氏碼,將寫入資料編碼成新碼字,並基於需要從現有碼字改變為新碼字的位元數,翻轉新碼字中的多個位元(步驟S206)。具體來說,在步驟S206中,錯誤校正碼編碼器131可以基於連氏碼來計算寫入資料的奇偶校驗資料,並將奇偶校驗資料和寫入資料進行合併,以產生新的碼字。然後,錯誤校正碼編碼器131比較編碼後新碼字的多個位元與被讀取的現有碼字的多個位元,以確定需要從現有碼字改變為新碼字的位元數,並確定位元數是否超過預設閥值。值得注意的是,編碼後的新碼字的1補數也是碼字。
在一些實施例中,預設閥值為碼字位數的一半,在此不作限制。如果所確定的位元數確定超過預設閥值,則錯誤校正碼編碼器131在編碼後的新碼字中翻轉多個位元,並產生新碼字中用以指示位元翻轉的第一翻轉位元。在一些實施例中,錯誤校正碼編碼器131產生第一翻轉位元的值為0,用於指示要寫入的碼字的位元全部翻轉。另一方面,如果確定位元數低於預設閥值,則錯誤校正碼編碼器131不對編碼後碼字的位元進行位元翻轉。必須注意的是,如果預設閥值等於碼字位數的一半,且確定位元數等於預設閥值,意即,要改變的位元數與不改變位元數相同,則錯誤校正碼編碼器131也不對編碼後的新碼字進行位元翻轉。
最後,錯誤校正碼編碼器131將包括第一翻轉位元的新碼字寫進寫入位址(步驟S208)。
基於上述,由於藉由選擇性翻轉待寫入碼字的位元,現有碼字改變為新碼字的位元數減少到低於碼字位元數的一半,可以減少寫入時間和寫入功率,並改善可靠性。
舉例來說,圖3為依據本發明另一實施例所繪示的編碼方法,其為由BCH(51,33,7)修改的連氏碼的示意圖。
參考圖3,基於由BCH(51,33,7)修改的連氏碼,錯誤校正碼編碼器131將33位元資料OD編碼為51位元碼字CW,33位元資料包括32個資料位元m1-m32和1個翻轉位元f1。並且矩陣Mp是用於計算33位元資料OD中18位元奇偶校驗資料PD的18×41矩陣。具體而言,通過事先將8個“0”位元插入33位元資料OD以將33位元資料OD擴展為41位元資料MD,以產生41位元資料MD,其中41位元資料MD的第8、10、14、15、16、23、28與30位元插入“0”。如圖3所示,41位元資料MD可以被寫進一個單行向量(one column vector),該單行向量具有包括41個元素包括m1-m32、f1與8個“0”,其中33個元素m1-m32與f1代表資料OD的33個位元。然後將41位元資料MD與矩陣Mp相乘,以獲得具有18元素p1-p18的單行向量,每個元素代表18位元奇偶校驗資料PD的一個位元。然後,錯誤校正碼編碼器131將33位元資料OD附加到18位元奇偶校驗位元資料PD,以產生51位元碼字CW。
基於上述使用連氏碼的編碼方法,藉由錯誤校正碼編碼器131從寫入資料產生新碼字,新碼字包括翻轉位元(flip bit)。值得注意的是,在一實施例中,編碼後的新碼字的翻轉位元被決定,以使從寫入位址讀取的現有碼字改變為新碼字的位元數最小化。並且,在另一實施例中,決定翻轉位元以將具有預定義資料模式的現有碼字的位元數最小化為新的碼字。以下提供示範性實施例以進一步說明。
圖4為依據本發明另一實施例所繪示的由BCH(51,33,7)修改的連氏碼編碼方法的示意圖。參照圖4,當錯誤校正碼編碼器131接收包括32個資料位元和一個轉換位元的寫入資料OD1時,藉由使用如圖3實施例所述的連氏錯誤校正碼,錯誤校正碼編碼器131將寫入資料OD1編碼為51位元新碼字NC1。錯誤校正碼編碼器131更由寫入位址中讀出51位元現有碼字EC1,並基於現有碼字EC1中的翻轉位元事先翻轉現有碼字EC1的位元。然後,錯誤校正碼編碼器131將新碼字NC1的多個位元與現有碼字EC1的多個位元進行比較,以確定碼字NC1的翻轉位元,以將現有碼字EC1改變為新碼字NC1的位元數最小化。最後,錯誤校正碼編碼器131基於確定的翻轉位元,翻轉新碼字NC1中的位元,更新翻轉後的新碼字NC1中的翻轉位元,並且將包括翻轉位元的新碼字NC1寫進寫入位址。
另一方面,圖5為依據本發明另一實施例所繪示的由BCH(51,33,7)修改的連氏碼編碼方法的示意圖。參考圖5,當錯誤校正碼編碼器131接收到包括32個資料位元和1個轉換位元的 寫入資料OD2時,如圖3實施例所述,通過使用連氏錯誤校正碼將寫入資料OD2編碼為51位元新碼字NC2。錯誤校正碼編碼器131更讀出具有諸如000000 ...的預定義資料模式的51位元現有碼字EC2。然後,錯誤校正碼編碼器131將新碼字NC2的多個位元與現有碼字EC2的多個位元進行比較,以確定碼字NC2的翻轉位元,以最小化將現有碼字EC2改變為新碼字NC2的位元數。最後,錯誤校正碼編碼器131基於所確定的翻轉位元,翻轉新碼字NC2的位元,更新翻轉後的新碼字NC2中的翻轉位元,並且將包括翻轉位元的新碼字NC2寫進寫入位址。
值得注意的是,在某些實施例中,除了最小化寫入中的位元改變量外,還可以進一步使用翻轉位元來最小化經選擇位元的切換,例如奇偶校驗位元(parity bits),以便改善位元寫入持久性,但是本公開不限於此。
為了進一步減少寫入時間和寫入功率,在一些實施例中,採用了多個翻轉位元來分別指示碼字中不同部分的的位元翻轉。在某些實施例中,翻轉位元也包含在不同部分,在此不作限制。在一實施例中,翻轉位元包括在碼字中多個偶數位元的第一翻轉位元,第一翻轉位元用以指示偶數位元的位元翻轉。以及包括在碼字中多個奇數位元的第二翻轉位元,第二翻轉位元用以指示奇數位元的位元翻轉。
圖6為依據本發明一實施例所繪示的連氏碼編碼方法的流程圖。連氏碼的編碼方法可以由圖1實施例的記憶體儲存裝置100進行。因此,在本實施例中,參照上述記憶體儲存裝置100來說明編碼方法。
參考圖6,記憶體控制電路130接收寫入命令,寫入命令包括寫入位址和寫入資料(步驟S602)。根據接收到的寫入命令,記憶體控制電路130的錯誤校正碼編碼器131事先讀取現有碼字(步驟S604)。在一實施例中,現有碼字是事先儲存在寫入位址中的碼字,而在另一實施例中,現有碼字是具有預定義資料模式的碼字(例如,000000 ...或FFFFFF ...),在此不作限制。
同時,錯誤校正碼編碼器131基於連氏碼將寫入資料編碼為新碼字,而不翻轉新碼字的位元,並將編碼後的新碼字載入到寫入緩衝器(步驟S606)。然後,錯誤校正碼編碼器131併行或按照順序執行步驟S608和S614。必須注意的是,編碼後的新碼字的1補數也是碼字。
在步驟S608中,錯誤校正碼編碼器131將新碼字的偶數位元與現有碼字的偶數位元進行比較,以確定在所有偶數位元中需要從現有碼字改變為新碼字的位元數,然後確定改變的位元數是否超過碼字位元數的四分之一(步驟S610)。如果是,則錯誤校正碼編碼器131翻轉碼字的所有偶數位元並將翻轉後的偶數位元載入到寫入緩衝器中(步驟S612)。
類似地,在步驟S614中,錯誤校正碼編碼器131將新碼字的奇數位元與現有碼字的奇數位元進行比較,以確定在所有偶數位元中需要從現有碼字改變為新碼字的位元數,然後確定改變的位元數是否超過碼字位元數的四分之一(步驟S616)。如果是,則錯誤校正碼編碼器131翻轉碼字的所有奇數位元並將翻轉後的奇數位元載入到寫入緩衝器中(步驟S618)。
必須注意的是,在步驟S610和S616中,如果確定結果為否,則錯誤校正碼編碼器131不對碼字進行位元翻轉(步驟S620),因此寫入緩衝器中沒有改變。注意,在偶數位元和奇數位元的每個部分中,如果要改變的位元數與不改變的位元數相等,錯誤校正碼編碼器131不進行位元翻轉。
最後,錯誤校正碼編碼器131進行碼字寫入,以將寫入緩衝器中的碼字寫進寫入位址(步驟S622)。
基於上述,由於通過選擇性並個別地翻轉要寫入碼字的偶數位元和奇數位元來減少從現有碼字改變為新碼字的位元數,因此進一步降低寫入時間和寫入功率,以及進一步改善可靠性。
舉例來說,圖7為依據本發明另一實施例所繪示的由BCH(51,33,7)修改的連氏碼編碼方法的示意圖。參考圖7,當接收包括32個資料位元與兩個翻轉位元f3和f4的寫入資料OD3時,錯誤校正碼編碼器131使用連氏錯誤校正碼將寫入資料OD3編碼為52位元新碼字NC3。值得注意的是,在某些實施例中,翻轉位元f3和f4分別控制寫入資料OD3中所有偶數資料位元和所有奇數資料位元的翻轉。因此,在編碼寫入資料OD3之前,錯誤校正碼編碼器131可以基於翻轉位元f3和f4,讀取翻轉位元f3和f4並翻轉寫入資料OD3中的偶數資料位元和/或奇數資料位元。
在一些實施例中,根據所接收到的寫入命令,錯誤校正碼編碼器131更讀出包括兩個翻轉位元的52位元現有碼字EC,並且基於翻轉位元事先翻轉現有碼字中的偶數碼字位元和/或奇數碼字位元。
然後,錯誤校正碼編碼器131將新碼字NC3中的多個偶數位元NC3a與現有碼字EC3中的多個偶數位元EC3a進行比較,以確定新碼字NC3中的第一翻轉位元f3,用以將所有偶數位元中從現有碼字EC3改變為新碼字NC3的位元數最小化。同時,錯誤校正碼編碼器131還將新碼字NC3中的多個奇數位元NC3b與現有碼字EC中的多個奇數位元EC3b進行比較,以確定新碼字NC3中的第二翻轉位元f4,用以將所有奇數位元中從現有碼字EC3改變為新碼字NC3的位元數最小化。上面確定的翻轉位元f3和f4單獨控制碼字NC3中所有偶數碼字位元和所有奇數字位元的翻轉。此外,必須注意,編碼後新碼字的任何部分(即偶數位元或奇數位元)的1補數也是碼字。
最後,錯誤校正碼編碼器131基於所確定的第一翻轉位元f3,來翻轉新碼字NC3的偶數位元NC3a;基於所確定的第二翻轉位元f4,來翻轉新碼字NC3的奇數位元素NC3b;更新翻轉後新碼字NC3中的第一翻轉位元f3和第二翻轉位元f4,並將包括翻轉位元f3和f4的新碼字NC3寫進寫入位址。
在上述實施例中,確定翻轉位元以最小化從現有碼字改變為編碼後碼字的偶數位元和奇數位元的數目。然而,在一些實施例中,可以確定翻轉位元,以使第一部分或第二部分中的奇偶校驗位元中改變的位元數最小化,其中第一部分或第二部分包含翻轉位元。但是本公開不限於此。
綜上所述,本發明提供的編碼方法和記憶體儲存裝置,採用基於連氏碼的連氏錯誤校正碼設計,藉由BCH ECC演算法,實現非揮發記憶體中翻轉位元的寫入功能。在資料位元或碼字位元的不同部分,採用一個或多個翻轉位元來控制資料位元翻轉或碼字位元翻轉。因此,可以減少寫入中的位元數變化,並且可以減少寫入時間和寫入功率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100‧‧‧記憶體儲存裝置110‧‧‧連接介面130‧‧‧記憶體控制電路131‧‧‧錯誤校正碼編碼器150‧‧‧記憶體陣列m1-m32‧‧‧資料位元f1、f2、f3、f4‧‧‧翻轉位元p1-p18‧‧‧元素OD‧‧‧33位元資料MD‧‧‧41位元資料PD‧‧‧18位元奇偶校驗資料CW‧‧‧51位元碼字OD1‧‧‧包括32個資料位元和一個轉換位元的寫入資料NC1、NC2、NC3‧‧‧51位元新碼字EC1、EC2、EC3‧‧‧51位元現有碼字OD2‧‧‧包括32個資料位元和1個轉換位元的寫入資料OD3‧‧‧包括32個資料位元與兩個翻轉位元f3和f4的寫入資料NC3a‧‧‧新碼字NC3中的多個偶數位元NC3b‧‧‧新碼字NC3中的多個奇數位元EC3a‧‧‧現有碼字NC3中的多個偶數位元EC3b‧‧‧現有碼字NC3中的多個奇數位元S202、S204、S206、S208、S602、S604、S606、S608、S610、S612、S614、S616、S618、S620、S622‧‧‧步驟
圖1為依據本發明一實施例所繪示的記憶體儲存裝置的系統方塊圖。 圖2為依據本發明一實施例所繪示的連氏碼編碼方法的流程圖。 圖3為依據本發明另一實施例所繪示的編碼方法,其為由BCH(51,33,7)修改的連氏碼的示意圖。 圖4為依據本發明另一實施例所繪示的由BCH(51,33,7)修改的連氏碼編碼方法的示意圖。 圖5為依據本發明另一實施例所繪示的由BCH(51,33,7)修改的連氏碼編碼方法的示意圖。 圖6為依據本發明一實施例所繪示的連氏碼編碼方法的流程圖。 圖7為依據本發明另一實施例所繪示的由BCH(51,33,7)修改的連氏碼編碼方法的示意圖。
S202、S204、S206、S208‧‧‧步驟
Claims (10)
- 一種採用連氏錯誤校正碼設計的記憶體儲存裝置的編碼方法,包括:接收寫入命令,所述寫入命令包括寫入位址與寫入資料;讀取現有碼字,所述現有碼字包括用以指示所述現有碼字翻轉的第一翻轉位元,以及基於所述第一翻轉位元來翻轉所述現有碼字的位元;藉由錯誤校正碼編碼器,基於連氏碼將所述寫入資料編碼進新碼字並將經編碼的新碼字載入到寫入緩衝器,以及基於需要從現有碼字改變為新碼字的位元數來翻轉所述新碼字的位元;將所述新碼字寫進寫入地址,所述新碼字包括指示所述新碼字位元翻轉的第一翻轉位元。
- 如申請專利範圍第1項所述的編碼方法,其中決定所述新碼字的第一翻轉位元,以使從所述寫入地址讀取的所述現有碼字或具有預定義資料模式的所述現有碼字改變為所述新碼字的位元數最小化。
- 如申請專利範圍第1項所述的編碼方法,其中如果要改變的位元數與不改變的位元數相同,則不進行位元翻轉。
- 如申請專利範圍第1項所述的編碼方法,其中所述現有碼字與所述新碼字的任意碼字的1補數也是碼字。
- 如申請專利範圍第1項所述的編碼方法,其中所述現有碼字與所述新碼字的每個碼字包括在所述碼字的第一部分中的第一翻轉位元,且更包括在所述碼字的第二部分的第二翻轉位元。
- 如申請專利範圍第5項所述的編碼方法,其中決定所述碼字的第一部分中的第一翻轉位元與所述碼字的第二部分的第二翻轉位元中的每一個翻轉位元,以最小化在所述翻轉位元的所述第一部分或所述第二部分中被改變的位元數。
- 如申請專利範圍第1項所述的編碼方法,其中決定並使用所述現有碼字翻轉的第一翻轉位元,以最小化所述新碼字與所述現有碼字中經選位元的切換。
- 如申請專利範圍第7項所述的編碼方法,其中所述經選位元是奇偶校驗位元。
- 一種採用連氏錯誤校正碼設計的記憶體儲存裝置,包括:連接介面,配置為耦合到主機系統;記憶體陣列;以及記憶體控制電路,耦合到所述連接介面與所述記憶體陣列,且被配置為根據所接收到包括寫入地址與寫入資料的寫入命令,基於連氏碼來進行編碼操作,其中所述編碼操作包括:讀取現有碼字,所述現有碼字包括用以指示所述現有碼字位元翻轉的第一翻轉位元,以及基於所述第一翻轉位元來翻轉所述現有碼字的位元; 藉由錯誤校正碼編碼器,基於連氏碼將所述寫入資料編碼進新碼字並將經編碼的新碼字載入到寫入緩衝器,以及基於需要從現有碼字改變為新碼字的位元數來翻轉所述新碼字的位元;以及將所述新碼字寫進寫入地址,所述新碼字包括指示所述新碼字位元翻轉的第一翻轉位元。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中所述記憶體控制電路被配置為決定所述新碼字的第一翻轉位元,以使從所述寫入地址讀取的所述現有碼字或具有預定義資料模式的所述現有碼字改變為所述新碼字的位元數最小化。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/933,367 | 2018-03-22 | ||
US15/933,367 US10514980B2 (en) | 2018-03-22 | 2018-03-22 | Encoding method and memory storage apparatus using the same |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201941053A TW201941053A (zh) | 2019-10-16 |
TWI691834B true TWI691834B (zh) | 2020-04-21 |
Family
ID=67983595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107139229A TWI691834B (zh) | 2018-03-22 | 2018-11-06 | 採用連氏錯誤校正碼設計的記憶體儲存裝置及其編碼方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10514980B2 (zh) |
CN (1) | CN110299182B (zh) |
TW (1) | TWI691834B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831596B2 (en) * | 2018-01-22 | 2020-11-10 | Micron Technology, Inc. | Enhanced error correcting code capability using variable logical to physical associations of a data block |
TWI698881B (zh) * | 2018-07-13 | 2020-07-11 | 華邦電子股份有限公司 | 編碼方法及使用所述編碼方法的記憶體儲存裝置 |
WO2021176244A1 (en) * | 2020-03-03 | 2021-09-10 | Micron Technology, Inc. | Counter-based sense amplifier method for memory cells |
KR102406449B1 (ko) * | 2020-06-25 | 2022-06-08 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070277066A1 (en) * | 2006-05-23 | 2007-11-29 | Micron Technology, Inc. | System and method for more efficiently using error correction codes to facilitate memory device testing |
CN103197897A (zh) * | 2012-01-09 | 2013-07-10 | 三星电子株式会社 | 存储装置和非易失性存储器装置及其操作方法 |
US20150212877A1 (en) * | 2014-01-28 | 2015-07-30 | Infineon Technologies Ag | Apparatus and method for improving data storage by data inversion |
TW201603031A (zh) * | 2014-07-10 | 2016-01-16 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
TW201618112A (zh) * | 2014-11-06 | 2016-05-16 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元及記憶體儲存裝置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7171605B2 (en) * | 2002-02-01 | 2007-01-30 | International Business Machines Corporation | Check bit free error correction for sleep mode data retention |
US7401201B2 (en) * | 2006-04-28 | 2008-07-15 | Freescale Semiconductor, Inc. | Processor and method for altering address translation |
KR20140078576A (ko) | 2011-07-31 | 2014-06-25 | 샌디스크 테크놀로지스, 인코포레이티드 | 메모리 및 전력 요건들이 감소된 에러-정정 디코딩 |
US8856443B2 (en) * | 2012-03-12 | 2014-10-07 | Infinidat Ltd. | Avoiding duplication of data units in a cache memory of a storage system |
JP5597666B2 (ja) * | 2012-03-26 | 2014-10-01 | 株式会社東芝 | 半導体記憶装置、情報処理システムおよび制御方法 |
WO2014051611A1 (en) * | 2012-09-28 | 2014-04-03 | Duke University | Systems for and methods of extending lifetime of non-volatile memory |
KR102049281B1 (ko) * | 2012-10-23 | 2019-11-27 | 삼성전자주식회사 | 불휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템, 그리고 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법 |
KR20140076127A (ko) * | 2012-12-12 | 2014-06-20 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 장치 및 동작 방법과, 이를 포함하는 데이터 처리 시스템 |
KR20150029848A (ko) * | 2013-09-10 | 2015-03-19 | 매그나칩 반도체 유한회사 | 메모리 프로그래밍 방법 및 이를 수행하는 장치 |
US9384144B1 (en) * | 2014-03-25 | 2016-07-05 | SK Hynix Inc. | Error detection using a logical address key |
TWI540586B (zh) * | 2014-04-15 | 2016-07-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 |
TWI543178B (zh) | 2014-06-10 | 2016-07-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI550615B (zh) * | 2014-08-28 | 2016-09-21 | 群聯電子股份有限公司 | 資料存取方法、記憶體儲存裝置及記憶體控制電路單元 |
CN107077430B (zh) * | 2014-10-24 | 2020-06-30 | 索尼公司 | 存储器控制器、存储器系统以及存储器控制器控制方法 |
KR102358177B1 (ko) * | 2015-12-24 | 2022-02-07 | 에스케이하이닉스 주식회사 | 제어회로 및 제어회로를 포함하는 메모리 장치 |
US9954556B2 (en) * | 2015-02-25 | 2018-04-24 | SK Hynix Inc. | Scheme to avoid miscorrection for turbo product codes |
US9979417B2 (en) * | 2015-06-16 | 2018-05-22 | SK Hynix Inc. | Enhanced chip-kill schemes by using ECC syndrome pattern |
KR102286193B1 (ko) * | 2015-06-30 | 2021-08-09 | 에스케이하이닉스 주식회사 | 플래시 메모리 시스템 및 그의 동작 방법 |
CN104932951B (zh) | 2015-07-12 | 2017-09-05 | 符方晓 | 一种nand闪存出现ecc无法纠错时的数据恢复方法 |
CN106445406B (zh) * | 2015-08-07 | 2019-07-26 | 株式会社东芝 | 存储控制器、存储装置以及数据写入方法 |
US9811418B2 (en) * | 2015-10-26 | 2017-11-07 | Sandisk Technologies Llc | Syndrome-based codeword decoding |
US9785502B2 (en) * | 2015-10-27 | 2017-10-10 | Sandisk Technologies Llc | Pipelined decoder with syndrome feedback path |
KR20180025357A (ko) * | 2016-08-29 | 2018-03-09 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
-
2018
- 2018-03-22 US US15/933,367 patent/US10514980B2/en active Active
- 2018-11-06 TW TW107139229A patent/TWI691834B/zh active
- 2018-12-24 CN CN201811580028.1A patent/CN110299182B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070277066A1 (en) * | 2006-05-23 | 2007-11-29 | Micron Technology, Inc. | System and method for more efficiently using error correction codes to facilitate memory device testing |
CN103197897A (zh) * | 2012-01-09 | 2013-07-10 | 三星电子株式会社 | 存储装置和非易失性存储器装置及其操作方法 |
US20150212877A1 (en) * | 2014-01-28 | 2015-07-30 | Infineon Technologies Ag | Apparatus and method for improving data storage by data inversion |
TW201603031A (zh) * | 2014-07-10 | 2016-01-16 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
TW201618112A (zh) * | 2014-11-06 | 2016-05-16 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元及記憶體儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
US20190294496A1 (en) | 2019-09-26 |
US10514980B2 (en) | 2019-12-24 |
CN110299182B (zh) | 2021-05-18 |
CN110299182A (zh) | 2019-10-01 |
TW201941053A (zh) | 2019-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI691834B (zh) | 採用連氏錯誤校正碼設計的記憶體儲存裝置及其編碼方法 | |
KR100845529B1 (ko) | 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템 | |
US8091010B2 (en) | Error correction circuit and method for reducing miscorrection probability and semiconductor memory device including the circuit | |
JP5017407B2 (ja) | 半導体記憶装置 | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
US8713407B2 (en) | Semiconductor memory system having ECC circuit and controlling method thereof | |
US10545804B2 (en) | Memory controller, memory system, and memory controller control method | |
US10848184B2 (en) | Method for controlling storage device with aid of error correction and associated apparatus | |
TWI541820B (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN108463807B (zh) | 温度相关的多模式错误校正 | |
CN102024501A (zh) | 存储器系统以及对存储器系统的控制方法 | |
US10635528B2 (en) | Memory controller and method of controlling memory controller | |
JP2010237822A (ja) | メモリコントローラおよび半導体記憶装置 | |
KR101550762B1 (ko) | 연접 오류 정정 장치 | |
US20190340070A1 (en) | Encoding method and memory storage apparatus using the same | |
US10191801B2 (en) | Error correction code management of write-once memory codes | |
JP7066581B2 (ja) | メモリシステム | |
US20180198468A1 (en) | Error correction code (ecc) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes | |
JP2019057752A (ja) | メモリシステム | |
TWI698881B (zh) | 編碼方法及使用所述編碼方法的記憶體儲存裝置 | |
JP2009157515A (ja) | 半導体メモリコントローラおよび半導体メモリ | |
US20150256204A1 (en) | Memory controller, storage device and memory control method | |
KR101460240B1 (ko) | 메모리 기반 저장 장치 및 그것의 블록 관리 기법 | |
US20190294497A1 (en) | Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same | |
JP2005011386A (ja) | 誤り訂正装置 |