TWI705452B - 具有硬通道資訊的位元翻轉ldpc解碼演算法 - Google Patents
具有硬通道資訊的位元翻轉ldpc解碼演算法 Download PDFInfo
- Publication number
- TWI705452B TWI705452B TW106128484A TW106128484A TWI705452B TW I705452 B TWI705452 B TW I705452B TW 106128484 A TW106128484 A TW 106128484A TW 106128484 A TW106128484 A TW 106128484A TW I705452 B TWI705452 B TW I705452B
- Authority
- TW
- Taiwan
- Prior art keywords
- variable node
- decoding
- flip
- indicator
- memory
- 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
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
記憶體系統可包括一記憶體儲存裝置以及一錯誤校正碼(ECC)單元,該錯誤校正碼單元適於:確定在一解碼程序之解碼迭代中的一通道輸出之不滿足的校驗節點的數量;更新一變數節點的一翻轉指示符;將該變數節點的翻轉指示符與和該解碼程序相關的一翻轉閾值進行比較;當該翻轉指示符大於該翻轉閾值時,翻轉該變數節點的一位元;及當確定解碼成功或達到一最大的迭代次數時,結束解碼程序。
Description
本揭露的示例性實施例係有關於一種記憶體系統及其操作方法。
電腦環境範例已經轉變為普及的計算系統,其能夠在任何時間和任何地點使用。由於這個事實,例如行動電話、數位相機和筆記型電腦之可擕式電子設備的使用已經迅速增加。這些可擕式電子裝置通常使用具有記憶體裝置的一記憶體系統,即一資料記憶體儲存裝置。該資料記憶體儲存裝置被用作該等可擕式電子裝置的一主記憶體裝置或一輔助記憶體裝置。
使用記憶體裝置的資料記憶體儲存裝置因其不具有移動部件而提供優良的穩定性、耐用性、高資訊存取速度以及低功耗。具有這些優點的資料記憶體儲存裝置的示例包括通用序列匯流排(USB)記憶體裝置、具有各種介面的記憶卡以及固態硬碟(SSD)。
寫入快閃記憶體(例如:NAND)中的資料遭受讀取錯誤,該等資料通常係由錯誤校正碼所保護。在一些情況下,錯誤校正碼依然會失敗。因此,存在對用於克服讀取錯誤之改進的錯誤校正碼和程序的需求。
本發明的態樣包括記憶體系統。該記憶體系統可包括一記憶體儲存裝置(memory storage)以及一錯誤校正碼(error correcting code,ECC)單元,該錯誤校正碼單元適於:確定在一解碼程序之解碼迭代中的一通道輸出之不滿足的校驗節點的數量;更新一變數節點的翻轉指示符;將該變數節點的翻轉指示符與和該解碼程序相關的一翻轉閾值進行比較;當該翻轉指示符大於該翻轉閾值時,翻轉該變數節點的一位元;及當確定解碼成功或達到一最大的迭代次數時,結束該解碼程序。
本發明的其它態樣包括方法。該方法可包括:確定在一解碼程序之解碼迭代中的一通道輸出之不滿足的校驗節點的數量;更新一變數節點的一翻轉指示符;將該變數節點的翻轉指示符與和該解碼程序相關的一翻轉閾值進行比較;當該翻轉指示符大於該翻轉閾值時,翻轉該變數節點的一位元;以及當確定解碼成功或達到一最大的迭代次數時,結束該解碼程序。
本發明的另外的態樣包括記憶體裝置。該記憶體裝置可包括一記憶體儲存裝置以及一錯誤校正碼單元,該錯誤校正碼單元被配置成:確定在一解碼程序之解碼迭代中的一通道輸出之不滿足的校驗節點的數量;更新一變數節點的一翻轉指示符;將該變數節點的翻轉指示符與和該解碼程序相關的一翻轉閾值進行比較;當該翻轉指示符大於該翻轉閾值時,翻轉該變數節點的一位元,及當確定解碼成功或達到一最大的迭代次數時;結束該解碼程序。
10:記憶體系統
100:控制器
110:儲存單元
120:控制單元
130:錯誤校正碼單元
140:主機介面
150:記憶體介面
160:匯流排
200:記憶裝置
210:記憶體單元陣列
211:記憶區塊
220:控制電路
230:電壓生成電路
240:行解碼器
250:頁面緩衝器
260:列解碼器
270:輸入/輸出電路
40:記憶體系統
400:揮發性記憶體
402:非揮發性記憶體
404:控制器
406:錯誤校正碼模組
410:邏輯位元位址邏輯區塊定址表
430:主機寫入
440:垃圾收集
50:流程圖
500~512:流程步驟
〔圖1〕係示意性地示出根據本發明一實施例之記憶體系統的方塊圖。
〔圖2〕係示出根據本發明一實施例之記憶體系統的方塊圖。
〔圖3〕係示出根據本發明一實施例之記憶體裝置的一記憶區塊的電路圖。
〔圖4〕係根據本發明的態樣之示例性記憶體系統的圖。
〔圖5〕係根據本發明的態樣之用於解碼的方法中之步驟的流程圖。
下面將參照附圖更詳細地描述各個實施例。然而,本發明可以不同的形式實施,並不應被解釋為限於本文所闡述的實施例。相反地,提供這些實施例以便使得本揭露徹底且完整,並且將本發明的範圍完整地傳達給本領域的技術人員。在本整個揭露中,於本發明的各個附圖和實施例中,相同的參考標號表示相同的部件。
本發明可以多種方式實施,包括如一程序;一設備;一系統;一物質的組成;嵌入在電腦可讀取儲存介質上的一電腦程式產品;及/或一處理器,例如適於執行儲存在聯接到該處理器之一記憶體上的指令及/或由聯接到該處理器之一記憶體提供的指令的一處理器。在本說明書中,這些執行或本發明可能採取的任何其他形式可被稱為技術。通常,揭露的程序之步驟的順序在本發明的範圍內可被改變。除非另有說明,否則例如被描述為適於執行一任務的一處理器或者一記憶體的部件可被實施為暫時適於在一給定時間執行該任務的一般部件,或被製造以執行該任務的一特定部件。如本文所使用的,術語「處理器」係指適於處理例如電腦程式指令的資料的一個或多個裝置、電路及/或處理核心。
下文提供了本發明的一個或多個實施例的詳細描述以及說明本發明原理的附圖。結合這些實施例描述本發明,但是本發明不限於任何實施例。本發明的範圍僅由申請專利範圍所限制,並且本發明包括許多替代方案、修改和等同物。為了提供對本發明的全面理解,在以下描述中闡述了許多具體細節。為了示例的目的提供這些細節,並且可在沒有一些或所有這些具體細節的情況下根據申請專利範圍實現本發明。為了清楚的目的,沒有詳細描述與本發明相關的技術領域中習知的技術內容,以免不必要地模糊本發明。
圖1係示意性地示出根據本發明一實施例之記憶體系統10的方塊圖。
參照圖1,該記憶體系統10可包括一記憶體控制器100和一半導體記憶裝置200。
該記憶體控制器100可控制該半導體記憶裝置200的全部操作。
該半導體記憶裝置200可在該記憶體控制器100的控制下執行一個或多個抹除操作、程式化操作和讀取操作。該半導體記憶裝置200可透過輸入/輸出線接收一指令CMD、一位址ADDR和資料DATA。該半導體記憶裝置200可透過一電源線接收電力PWR,並且透過一控制線接收一控制訊號CTRL。該控制訊號可包括一指令鎖存致能(command latch enable,CLE)訊號、一位址鎖存致能(address latch enable,ALE)訊號、一晶片致能(chip enable,CE)訊號、一寫入致能(write enable,WE)訊號、一讀取致能(read enable,RE)訊號等。
該記憶體控制器100和該半導體記憶裝置200可被整合到一單個半導體裝置中。例如,該記憶體控制器100和半導體記憶裝置200可被整合在例如一固態硬碟(SSD)的一單個半導體裝置中。該固態硬碟可包括用於在其中儲
存資料的一儲存裝置。當該半導體記憶體系統10被用在一固態硬碟中時,聯接到該記憶體系統10之一主機(未示出)的操作速度可顯著提升。
該記憶體控制器100和該半導體記憶裝置200可被整合到例如一記憶卡的一單個半導體裝置中。例如,該記憶體控制器100和該半導體記憶裝置200可被整合在一單個半導體裝置中以配置為一記憶卡,例如國際個人電腦記憶卡協會(personal computer memory card international association,PCMCIA)的一PC卡、一緊湊型快閃(compact flash,CF)記憶卡、一智慧媒體(smart media,SM)卡、一記憶棒、一多媒體卡(multimedia card,MMC)、一縮小尺寸的多媒體卡(reduced-size multimedia card,RS-MMC)、一微型版本多媒體卡(micro-size version of MMC,MMCmicro)、一安全數位(secure digital,SD)卡、一小型安全數位(mini secure digital,miniSD)卡、一微型安全數位(micro secure digital,microSD)卡、一高容量安全數位卡(secure digital high capacity,SDHC)和一通用快閃記憶體(universal flash storage,UFS)。
對於另一示例,該記憶體系統10可被提供為包括一電子裝置之多種元件中的一種,該電子裝置例如一電腦、一超移動PC(ultra-mobile PC,UMPC)、一工作站、一上網本電腦、一個人數位助理(personal digital assistant,PDA)、一可擕式電腦、一網路平板PC、一無線電話、一行動電話、一智慧型手機、一電子書閱讀器、一可擕式多媒體播放機(portable multimedia player,PMP)、一可擕式遊戲裝置、一導航裝置、一黑盒、一數位相機、一數位多媒體廣播(digital multimedia broadcasting,DMB)播放機、一三維電視、一智慧電視、一數位音訊記錄器、一數位音訊播放機、一數位圖片記錄器、一數位圖片播放機、一數位視訊記錄器、一數位視訊播放機、一資料中心的儲存裝置、能
夠在一無線環境中接收和發送資訊的一裝置、一家用網路的電子裝置之一、一電腦網路的電子裝置之一、一遠端通訊處理網路的電子裝置之一、一射頻識別(radio-frequency identification,RFID)裝置或一計算系統的元件裝置。
圖2係示出根據本發明一實施例之記憶體系統的詳細方塊圖。例如,圖2的記憶體系統可描述圖1所示的記憶體系統10。
參照圖2,該記憶體系統10可包括一記憶體控制器100和一半導體記憶裝置200。該記憶體系統10可回應於來自一主機裝置的請求而操作,並且特別地,儲存待由該主機裝置所存取的資料。
該主機裝置可利用各種電子裝置中的任一種來實施。在一些實施例中,該主機裝置可包括一電子裝置,例如一桌上型電腦、一工作站、一三維(3D)電視、一智慧電視、一數位音訊記錄器、一數位音訊播放機、一數位圖片記錄器、一數位圖片播放機、一數位視訊記錄器以及一數位視訊播放機。在一些實施例中,該主機裝置可包括一可擕式電子裝置,例如一行動電話、一智慧型手機、一電子書、一MP3播放機、一可擕式多媒體播放機(PMP)以及一可擕式遊戲機。
該記憶裝置200可儲存待由該主機裝置所存取的資料。
該記憶裝置200可利用一揮發性記憶裝置實施,例如一動態隨機存取記憶體(dynamic random access memory,DRAM)和一靜態隨機存取記憶體(static random access memory,SRAM),或一非揮發性記憶裝置實施,例如一唯讀記憶體(read only memory,ROM)、一遮罩式唯讀記憶體(mask ROM,MROM)、一可程式化唯讀記憶體(programmable ROM,PROM)、一可抹除可程式化唯讀記憶體(erasable programmable,EPROM)、一電可抹除可程式化唯
讀記憶體(electrically erasable programmable ROM,EEPROM)、一鐵電隨機存取記憶體(ferroelectric random access memory,FRAM)、一相變隨機存取記憶體(phase change RAM,PRAM)、一磁阻式隨機存取記憶體(magnetoresistive RAM,MRAM)和一電阻式隨機存取記憶體(resistive RAM,RRAM)。
該控制器100可控制該記憶裝置200中的資料儲存。例如,該控制器100可回應來自該主機裝置的一請求來控制該記憶裝置200。該控制器100可將從該記憶裝置200讀取的資料提供給該主機裝置,並且將從該主機裝置提供的資料儲存到該記憶裝置200中。
該控制器100可包括透過一匯流排160聯接的一儲存單元110、一控制單元120、該錯誤校正碼(ECC)單元130、一主機介面140和一記憶體介面150。
該儲存單元110可作為該記憶體系統10和該控制器100的一工作記憶體,並且儲存用於驅動該記憶體系統10和該控制器100的資料。當該控制器100控制該記憶裝置200的操作時,該儲存單元110可儲存由該控制器100和該記憶裝置200用於例如讀取操作、寫入操作、程式化操作和抹除操作之操作的資料。
該儲存單元110可利用一揮發性記憶體實施。該儲存單元110可利用一靜態隨機存取記憶體(SRAM)或一動態隨機存取記憶體(DRAM)實施。如上所述,該儲存單元110可將該主機裝置使用的資料儲存在該記憶裝置200中,用於讀取操作和寫入操作。為了儲存資料,該儲存單元110可包括一程式記憶體、一資料記憶體、一寫入緩衝器、一讀取緩衝器、一映射緩衝器等。
回應於來自該主機裝置的一寫入請求或一讀取請求,該控制單元120可控制該記憶體系統10的一般操作,以及用於該記憶裝置200的一寫入操作
或一讀取操作。該控制單元120可驅動被稱為一快閃記憶體轉換層(flash translation layer,FTL)的韌體來控制該記憶體系統10的一般操作。例如,該快閃記憶體轉換層可執行例如邏輯到物理(logical to physical,L2P)映射、損耗均衡、垃圾收集和壞區塊處理的操作。該邏輯到物理映射被稱為邏輯區塊定址(logical block addressing,LBA)。
該錯誤校正碼單元130可在該讀取操作期間檢測並校正從該記憶裝置200讀取之資料中的錯誤。當錯誤位元的數量大於或等於可校正錯誤位元的一閾值數量時,該錯誤校正碼單元130可不校正錯誤位元,並且可輸出指示校正錯誤位元失敗的一錯誤校正失敗訊號。
在一些實施例中,該錯誤校正碼單元130可基於一編碼調變來執行一錯誤校正操作,例如一低密度同位校驗(low density parity check,LDPC)碼、一博斯-查德胡裡-霍昆格姆(Bose-Chaudhri-Hocquenghem,BCH)碼、一渦輪(Turbo)碼、一渦輪乘積碼(turbo product code,TPC)、一呂德-所羅門(Reed-Solomon,RS)碼、一迴旋碼、一遞迴系統碼(recursive systematic code,RSC)、一網格編碼調變(trellis-coded modulation,TCM)以及一區塊編碼調變(Block coded modulation,BCM)等。該錯誤校正碼單元130可包括用於該錯誤校正操作的所有電路、系統或裝置。
該主機介面140可透過各種介面協定中的一種或多種與該主機裝置通信,例如一通用序列匯流排(USB)、一多媒體卡(MMC)、一高速周邊元件連接(peripheral component interconnect express,PCI-E)、一小型電腦系統介面(small computer system interface,SCSI)、一串列SCSI(SAS)、一串列先進技術附接(serial advanced technology attachment,SATA)、一並行先進技術附
接(parallel advanced technology attachment,PATA)、一增強型小型磁片介面(enhanced small disk interface,ESDI)以及一整合驅動電子裝置(integrated drive electronics,IDE)。
該記憶體介面150可在該控制器100和該記憶裝置200之間提供一介面,以允許該控制器100回應於來自該主機裝置的一請求以控制該記憶裝置200。該記憶體介面150可在該中央處理器(CPU)120的控制下產生用於該記憶裝置200的控制訊號並處理資料。當該記憶裝置200是例如NAND快閃記憶體的一快閃記憶體時,該記憶體介面150可在該中央處理器120的控制下產生用於記憶體的控制訊號並處理資料。
該記憶裝置200可包括一記憶體單元陣列210、一控制電路220、一電壓生成電路230、一行解碼器240、一頁面緩衝器250、一列解碼器260一輸入/輸出電路270。該記憶體單元陣列210可包括複數個記憶區塊211,並且可在其中儲存資料。該電壓生成電路230、該行解碼器240、該頁面緩衝器250、該列解碼器260和該輸入/輸出電路270形成該記憶體單元陣列210的一週邊電路。該週邊電路可執行該記憶體單元陣列210的一程式化操作、一讀取操作或一抹除操作。該控制電路220可控制該週邊電路。
該電壓生成電路230可產生具有各種電平的操作電壓。例如,在一抹除操作中,該電壓生成電路230可產生具有各種電平的操作電壓,例如一抹除電壓和一通過電壓。
該行解碼器240可連接到該電壓生成電路230和該複數個記憶區塊211。該行解碼器240可回應於由該控制電路220生成的一行位址RADD,在該
複數個記憶區塊211中選擇至少一個記憶區塊,並將由該電壓生成電路230供應的操作電壓傳輸到該複數個記憶區塊211之中選擇的記憶區塊。
該頁面緩衝器250透過位元線BL(未示出)連接到該記憶體單元陣列210。回應於由該控制電路220產生的一頁面緩衝控制訊號,該頁面緩衝器250可利用正電壓對該等位元線BL進行預充電,在程式化操作和讀取操作中向一選擇的記憶區塊傳輸資料,或從該選擇的記憶區塊接收資料,或者暫時地儲存被發送的資料。
該列解碼器260可向該頁面緩衝器250傳輸資料或從該頁面緩衝器250接收資料,或者向該輸入/輸出電路270發送資料或從該輸入/輸出電路270接收資料。
該輸入/輸出電路270可將從一外部裝置(例如:該記憶體控制器100)傳輸的一指令和一位址傳輸到該控制電路220,透過該輸入/輸出電路270將資料從該外部裝置傳輸到該列解碼器260,或將資料從該列解碼器260輸出到該外部裝置。
該控制電路220可回應該指令和該位址以控制該週邊電路。
圖3係示出根據本發明一實施例之半導體記憶裝置的記憶區塊的電路圖。例如,圖3的一記憶區塊可以是圖2所示之記憶體單元陣列200的記憶區塊211。
參照圖3,該記憶區塊211可包括分別聯接到位元線BL0至BLm-1的複數個單元串221。每列的單元串可包括一個或多個汲極選擇電晶體DST和一個或多個源極選擇電晶體SST。複數個記憶體單元或記憶體單元電晶體可被串聯聯接在選擇的電晶體DST和SST之間。記憶體單元MC0至MCn-1的每一個可由每
個單元中之儲存多位元資料資訊的多層單元(MLC)所形成。該等單元串221可分別電聯接到對應的位元線BL0至BLm-1。
在一些實施例中,該等記憶區塊211可包括一NAND型快閃記憶體單元。然而,該等記憶區塊211不限於該NAND快閃記憶體,而是可包括NOR型快閃記憶體、組合兩種或更多種類型於其中的記憶體單元的混合快閃記憶體及將一控制器嵌入其中到一記憶體晶片內的one-NAND快閃記憶體。
在圖4中顯示一記憶體系統40的一般性示例。該記憶體系統40可包括一揮發性記憶體400(例如:一DRAM)以及與該揮發性記憶體400通信的一非揮發性記憶體(NVM)402(例如:NAND)。該揮發性記憶體400可包括例如本文該之控制器的一控制器404、一錯誤校正碼模組406以及用於將位元的物理位址映射到邏輯位址的一邏輯位元位址邏輯區塊定址表410。該非揮發性記憶體402可包括複數個記憶區塊(及/或複數個超級記憶區塊),也包括用於主機寫入430的一開放區塊和用於垃圾收集(GC)440的一開放區塊。該記憶體系統40顯示一通用記憶體系統,且本領域技術人員將理解可與記憶體系統一起使用以實現本文揭露之發明的附加/替代部件。
如本文所提及的,例如「NAND」或「NVM」的術語可指非揮發性記憶體,例如可實施錯誤校正碼程序的快閃記憶體。此外,「DRAM」可指可包括例如控制器和錯誤校正碼模組的部件的揮發性記憶體。
低密度同位校驗(LDPC)碼是一系列線性區塊前向偵錯(forward error-correction,FEC)碼,其同位矩陣可以由一低密度同位矩陣表示。存在許多低密度同位校驗碼的迭代解碼演算法,例如位元翻轉(bit-flipping,BF)解碼演算法、可進度傳遞(belief-propagation,BP)解碼演算法、和積(sum-product,SP)
解碼演算法、最小和(min-sum)解碼演算法、最小-最大(Min-Max)解碼演算法等。
通常在位元翻轉(BF)演算法中,存在用於確定一變數節點是否需要翻轉和在哪裡翻轉的兩個要素。第一要素可被稱為每個變數節點的翻轉指示符。u(j)在本文中用於表示變數節點j的翻轉指示符。第二要素可被稱為一翻轉閾值,本文稱為T。在每次迭代中,u(j)和T係基於一些規則進行計算。在計算/確定u(j)和T之後,變數節點j是否被翻轉係基於u(j)和T之間的關係。例如,若u(j)大於T,則變數節點j將被翻轉。否則,變數節點j仍然與一先前迭代的決定相同。
如果僅提供硬通道資訊,則u(j)僅考慮連接到變數節點j之不滿足的校驗節點的數量,但並未利用變數節點j的通道資訊。在本文公開的位元翻轉(BF)演算法中,使用鄰近於變數節點j之不滿足的校驗節點的數量和變數節點j的硬通道資訊。除了u(j)的計算方法外,還揭露一可調適翻轉閾值T計算流程。透過應用這兩個改進,可顯著提高位元翻轉(BF)演算法的錯誤校正表現。
圖5是根據本發明的態樣用於解碼的示例性程序中之步驟的流程圖50。流程圖50中所示的步驟是示例性而非排他的,使得本領域技術人員將理解,在不脫離本文揭露之發明性概念的情況下,為了實現本發明可執行附加步驟、替代步驟、步驟的替代順序等。步驟500至512可透過本文所述的例如一控制器、DRAM、ECC單元的記憶體部件,及/或透過本揭露將瞭解的其它合適的部件(例如:參照圖1至圖4所述的部件)來執行。
在步驟500中,一解碼程序被初始化。例如,假設x=[x0,x1,...,xN-1]為一位元向量,並且H=[hi,j]為在行i和列j的交叉處具有一二進位值hi,j的一M×N低密度同位矩陣。接著,H的每一行為x提供一同位。若x為H的一碼字,則xHT=0。
在示例中,x通過一雜訊通道被傳輸,並且損壞的通道輸出為y=[y0,y1,...,yN-1]。y的校正子為透過s=[s0,s1,...,sM-1]=yHT計算的一二進位向量,權重為∥s∥,其表示不滿足的校驗節點的數量。因此,可透過確定x、s、y、H等來初始化解碼程序。
在步驟502中,確定在一解碼迭代中一通道輸出之不滿足的校驗節點的數量。如本文所使用的,∥sj∥表示與變數節點j連接的不滿足的校驗節點的數量。如本文所述,變數節點j可表示解碼迭代正在處理之當前的變數節點。因此,用於該解碼迭代處理變數節點j之不滿足的校驗節點的數量為∥sj∥,通道輸出為yj。
在步驟504中,更新一變數節點的一翻轉指示符。該翻轉指示符u(j)可針對變數節點j進行更新。例如,假設t(0ttmax)表示該迭代次數,表示第t次迭代之變數節點j的判定(例如:硬判定、硬通道資訊等),並且d(t)=,s(t)=。假設d(-1)==y,則s(-1)=yHT。若==yj,u(j)=∥sj∥,則該翻轉指示符可在第t迭代中被更新,否則u(j)=∥sj∥+α。α可以為各種不同的值。例如,當不等於yj時,若α被設置為1,則u(j)=∥sj∥+1。可選擇地,若來自引數節點j的硬判定(例如:硬通道資訊)等於該通道輸出(例如:損壞的通道輸出),則在變數節點j的解碼迭代期間,該翻轉指示符可被更新以被設置成與變數節點j連接之不滿足的校驗節點的數量的值。否則,該翻轉指示符可被設置成被一因數α改變的值。
在步驟506中,透過將該翻轉指示符與該翻轉閾值進行比較,確定是否對該變數節點執行一位元翻轉操作。例如,若該翻轉指示符大於該翻轉閾值,則可翻轉該位元。若該翻轉指示符小於或等於該翻轉閾值,則該位元可
不被翻轉,或可選擇地,可被設置成在一先前迭代中之該變數節點的值。可選擇地在變數的情況下,對於0jN-1,比較u(j)和T。如果u(j)>T,=1-;否則=,其中N為低密度同位校驗(LDPC)矩陣中之列的數量(例如:碼字的數量)。
在步驟508中,可更新與該解碼程序相關的該翻轉閾值。該翻轉閾值可為一可調適翻轉閾值,其被配置成在該解碼程序期間必要時適應(例如:改變),以提升成功的可能性(和精確解碼)。
為了產生該可調適翻轉閾值T,該迭代次數、一先前迭代之不滿足的校驗節點的數量以及在該先前迭代中翻轉的變數節點的數量都要進行考慮。假設p為在該先前迭代中翻轉的變數節點的數量,雖然本領域技術人員將理解在不脫離本文揭露之本發明的情況下可利用替代的適當的演算法,但可使用下方揭露的以下演算法:若(t==0)且(∥s∥<β1),則T=δ1;否則若(t==0),則T=δ1-1;否則若(t==1),則T=δ1;否則若(p==0),則T=T-1;否則若(t>ε)且(∥s∥β2),則T=δ2;否則若(∥s∥<β3)且(p>θ1)且(T+1)<δ3,則T=T+1;否則若(∥s∥<β3)且(p>θ1),則T=δ3;否則若(pθ2)且(∥s∥>β3),則T=max(δ4,T-1)。
否則T=T
變數(β1,β2,β3,δ1,δ2,δ3,δ4,θ1,θ2,ε)是可調適配置的一組參數。例如:(β1,β2,β3,δ1,δ2,δ3,δ4,θ1,θ2,ε)=(50,20,9999,5,4,5,3,10,10,10)。這些參數可能與代碼參數相關,並且可透過針對不同的最適目標之模擬來確定,例如實現最佳錯誤校正表現或獲得最快的收斂速度。
在步驟510中,若解碼未成功,則可對一後續解碼迭代和一後續變數節點重複步驟502、504、506和508。在步驟512中,若解碼成功或者若達到迭代的最大次數,則解碼程序結束。例如,若可透過不滿足的校驗節點的數量是否等於零而確定的解碼是成功的,或者若解碼程序達到解碼迭代的最大次數,其中解碼迭代的最大次數可被設置成待解碼之碼字的數量,或者如本領域技術人員從本揭露中將理解的其它因素,則解碼程序結束。
儘管為了清楚理解已經對前述實施例進行一些細節的描述,但本發明不限於所提供的細節。存在許多可選擇的方法來實施本發明。所揭露的實施例是說明性而非限制性的。
50:流程圖
500~512:流程步驟
Claims (15)
- 一種記憶體系統,其包括:一記憶體儲存裝置;以及一錯誤校正碼(ECC)單元,其適於:確定在一解碼程序之解碼迭代中的一通道輸出之不滿足的校驗節點的數量;更新一變數節點的一翻轉指示符,其中該翻轉指示符至少以該變數節點之硬通道資訊為基礎;將該變數節點的翻轉指示符與和該解碼程序相關的一翻轉閾值進行比較;當該翻轉指示符大於該翻轉閾值時,翻轉該變數節點的一位元;基於至少該解碼程序的一迭代次數來迭代地更新與該解碼程序相關的該翻轉閾值;及當確定解碼成功或達到一最大的迭代次數時,結束該解碼程序。
- 如請求項1所述的記憶體系統,其中該變數節點的該翻轉指示符以鄰近於該變數節點之不滿足的校驗節點的數量為基礎。
- 如請求項1所述的記憶體系統,其中該錯誤校正碼單元進一步適於:當該變數節點的一硬判定等於該變數節點之解碼迭代的通道輸出時,透過將該變數節點的翻轉指示符設置成該解碼迭代中確定的不滿足的校驗節點的數量,更新該變數節點的該翻轉指示符。
- 如請求項1所述的記憶體系統,其中該翻轉閾值基於一先前解碼迭代之不滿足的校驗節點的數量或在該先前解碼迭代中翻轉的變數節點的數量被更新。
- 如請求項1所述的記憶體系統,其中該錯誤校正碼單元進一步適於:當確定的不滿足的校驗的數量為零時,確定該解碼程序成功。
- 一種用於解碼程序的方法,其包括:確定在一解碼程序之解碼迭代中的一通道輸出之不滿足的校驗節點的數量;更新一變數節點的一翻轉指示符,其中該翻轉指示符至少以該變數節點之硬通道資訊為基礎;將該變數節點的翻轉指示符與和該解碼程序相關的一翻轉閾值進行比較;當該翻轉指示符大於該翻轉閾值時,翻轉該變數節點的一位元;基於至少該解碼程序的一迭代次數來迭代地更新與該解碼程序相關的該翻轉閾值;及當確定解碼成功或達到一最大的反覆迭代次數時,結束該解碼程序。
- 如請求項6所述的方法,其中該變數節點的該翻轉指示符以鄰近於該變數節點之不滿足的校驗節點的數量為基礎。
- 如請求項6所述的方法,其進一步包括:當該變數節點的一硬判定等於該變數節點之解碼迭代的通道輸出時,透過將該變數節點的 該翻轉指示符設置成該解碼迭代中確定的不滿足的校驗節點的數量,更新該變數節點的該翻轉指示符。
- 如請求項6所述的方法,其中該翻轉閾值基於一先前解碼迭代之不滿足的校驗節點的數量或在該先前解碼迭代中翻轉的變數節點的數量被更新。
- 如請求項6所述的方法,其進一步包括:當確定的不滿足的校驗的數量為零時,確定該解碼程序成功。
- 一種記憶體裝置,其包括:一記憶體儲存裝置;以及一錯誤校正碼(ECC)單元,其被配置成:確定在一解碼程序之解碼迭代中的一通道輸出之不滿足的校驗節點的數量;更新一變數節點的一翻轉指示符,其中該翻轉指示符至少以該變數節點之硬通道資訊為基礎;將該變數節點的翻轉指示符與和該解碼程序相關的一翻轉閾值進行比較;當該翻轉指示符大於該翻轉閾值時,翻轉該變數節點的一位元;基於至少該解碼程序的一迭代次數來迭代地更新與該解碼程序相關的該翻轉閾值;及當確定解碼成功或達到一最大的迭代次數時,結束該解碼程序。
- 如請求項11所述的記憶體裝置,其中該變數節點的該翻轉指示符以鄰近於該變數節點之不滿足的校驗節點的數量為基礎。
- 如請求項11所述的記憶體裝置,其中該錯誤校正碼單元被進一步配置成:當該變數節點的一硬判定等於該變數節點之解碼迭代的通道輸出時,透過將該變數節點的該翻轉指示符設置成該解碼迭代中確定的不滿足的校驗節點的數量,更新該變數節點的該翻轉指示符。
- 如請求項11所述的記憶體裝置,其中該翻轉閾值基於一先前解碼迭代之不滿足的校驗節點的數量或在該先前解碼迭代中翻轉的變數節點的數量被更新。
- 如請求項11所述的記憶體裝置,其中該錯誤校正碼單元被進一步配置成:當確定的不滿足的校驗的數量為零時,確定該解碼程序成功。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/346,158 US10148287B2 (en) | 2016-11-08 | 2016-11-08 | Bit-flipping LDPC decoding algorithm with hard channel information |
US15/346,158 | 2016-11-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201818420A TW201818420A (zh) | 2018-05-16 |
TWI705452B true TWI705452B (zh) | 2020-09-21 |
Family
ID=62064863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106128484A TWI705452B (zh) | 2016-11-08 | 2017-08-22 | 具有硬通道資訊的位元翻轉ldpc解碼演算法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10148287B2 (zh) |
CN (1) | CN108073467B (zh) |
TW (1) | TWI705452B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10965319B2 (en) * | 2018-10-25 | 2021-03-30 | PetaIO Inc. | Bit flipping algorithm for decoding LDPC-encoded data |
US10951232B2 (en) | 2018-11-26 | 2021-03-16 | Micron Technology, Inc. | Error correction bit flipping scheme |
KR20200081785A (ko) * | 2018-12-28 | 2020-07-08 | 에스케이하이닉스 주식회사 | 데이터 처리 장치 |
CN111435838B (zh) * | 2019-01-14 | 2022-06-14 | 华为技术有限公司 | 译码方法、装置及设备 |
KR102588969B1 (ko) | 2019-03-19 | 2023-10-16 | 에스케이하이닉스 주식회사 | 오류 정정 디코더 및 이를 포함하는 메모리 시스템 |
US11271589B2 (en) | 2019-10-18 | 2022-03-08 | SK Hynix Inc. | Memory system with error-reduction scheme for decoding and method of operating such memory system |
US11018695B1 (en) * | 2019-11-11 | 2021-05-25 | SK Hynix Inc. | Fast-converging bit-flipping decoder for low-density parity-check codes |
US11043969B2 (en) * | 2019-11-12 | 2021-06-22 | SK Hynix Inc. | Fast-converging soft bit-flipping decoder for low-density parity-check codes |
US11184024B2 (en) | 2019-12-02 | 2021-11-23 | SK Hynix Inc. | Error mitigation scheme for bit-flipping decoders for irregular low-density parity-check codes |
US11108407B1 (en) * | 2020-03-09 | 2021-08-31 | SK Hynix Inc. | Performance of a bit flipping (BF) decoder of an error correction system |
US11967970B2 (en) * | 2022-09-14 | 2024-04-23 | SK Hynix Inc. | Bit-flipping decoder and decoding method for irregular codes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160179620A1 (en) * | 2014-06-30 | 2016-06-23 | Sandisk Technologies Inc. | Multi-stage decoder |
US9385753B2 (en) * | 2013-02-14 | 2016-07-05 | Marvell World Trade Ltd. | Systems and methods for bit flipping decoding with reliability inputs |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312354B1 (en) * | 2007-12-27 | 2012-11-13 | Marvell International Ltd. | Method and apparatus for improved performance of iterative decoders on channels with memory |
US9614548B1 (en) * | 2013-07-08 | 2017-04-04 | Marvell International Ltd. | Systems and methods for hybrid message passing and bit flipping decoding of LDPC codes |
US9614547B2 (en) * | 2014-06-30 | 2017-04-04 | Sandisk Technologies Llc | Multi-stage decoder |
-
2016
- 2016-11-08 US US15/346,158 patent/US10148287B2/en active Active
-
2017
- 2017-08-22 TW TW106128484A patent/TWI705452B/zh active
- 2017-09-12 CN CN201710818453.9A patent/CN108073467B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9385753B2 (en) * | 2013-02-14 | 2016-07-05 | Marvell World Trade Ltd. | Systems and methods for bit flipping decoding with reliability inputs |
US20160179620A1 (en) * | 2014-06-30 | 2016-06-23 | Sandisk Technologies Inc. | Multi-stage decoder |
Also Published As
Publication number | Publication date |
---|---|
CN108073467B (zh) | 2021-06-15 |
CN108073467A (zh) | 2018-05-25 |
TW201818420A (zh) | 2018-05-16 |
US10148287B2 (en) | 2018-12-04 |
US20180131389A1 (en) | 2018-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI705452B (zh) | 具有硬通道資訊的位元翻轉ldpc解碼演算法 | |
US10700706B2 (en) | Memory system with decoders and method of operating such memory system and decoders | |
US10122382B2 (en) | VSS LDPC decoder with improved throughput for hard decoding | |
US10484008B2 (en) | Memory system with on-the-fly error detection and termination and operating method thereof | |
US10693496B2 (en) | Memory system with LDPC decoder and method of operating such memory system and LDPC decoder | |
US10447302B2 (en) | Memory system decoding design and operating method thereof | |
US11070234B2 (en) | Memory system with hybrid decoding scheme with information exchange and method of operating such memory system | |
US10956263B2 (en) | Memory system with deep learning based interference correction capability and method of operating such memory system | |
US9979417B2 (en) | Enhanced chip-kill schemes by using ECC syndrome pattern | |
US11182243B2 (en) | Memory system with adaptive information propagation and method of operating such memory | |
US11005503B2 (en) | Memory system with hybrid decoding scheme and method of operating such memory system | |
CN112687323B (zh) | 具有用于解码的错误减少方案的存储器系统及其操作方法 | |
US11074128B2 (en) | Memory system with hybrid iterative decoding capability and method of operating such memory system | |
US11062758B2 (en) | Memory system to process multiple word line failures with limited storage and method of operating such memory system | |
US11356123B2 (en) | Memory system with low-complexity decoding and method of operating such memory system | |
US11115062B2 (en) | Memory system with adaptive threshold decoding and method of operating such memory system | |
US11973515B2 (en) | Hybrid precision MS decoder to reduce gate-count for long codes | |
US11621727B2 (en) | Decoding systems and methods for local reinforcement | |
CN110047554B (zh) | 具有超级芯片删除恢复的存储器系统及其操作方法 |