JP2019054448A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2019054448A
JP2019054448A JP2017178095A JP2017178095A JP2019054448A JP 2019054448 A JP2019054448 A JP 2019054448A JP 2017178095 A JP2017178095 A JP 2017178095A JP 2017178095 A JP2017178095 A JP 2017178095A JP 2019054448 A JP2019054448 A JP 2019054448A
Authority
JP
Japan
Prior art keywords
test pattern
decoding
maximum likelihood
unit
euclidean distance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017178095A
Other languages
English (en)
Inventor
尚子 木舩
Naoko Kibune
尚子 木舩
浩典 内川
Hironori Uchikawa
浩典 内川
大毅 渡邉
Daiki Watanabe
大毅 渡邉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2017178095A priority Critical patent/JP2019054448A/ja
Priority to US15/918,021 priority patent/US10452476B2/en
Publication of JP2019054448A publication Critical patent/JP2019054448A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】誤り訂正能力を低下させずにレイテンシを高める。【解決手段】実施形態に係るメモリシステムは、複数のテストパタンから中間復号語を検出するテストパタン復号部と、前記テストパタン復号部で検出された中間復号語と前記受信語とのユークリッド距離を計算するユークリッド距離計算部と、最尤復号語候補を保持する最尤復号語選択部とを備え、前記最尤復号語選択部は、前記テストパタン復号部で検出された中間復号語である第1の中間復号語のユークリッド距離が、前記保持している最尤復号語候補のユークリッド距離よりも短い場合、前記第1の中間復号語で前記保持している最尤復号語候補を更新し、前記テストパタン復号部は、中間復号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンに対する復号を実行しない。【選択図】図2

Description

以下の実施形態は、一般的に、メモリシステムに関する。
メモリシステムでは、一般に、記憶するデータを保護するために、符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
米国特許第8341502号明細書 米国特許第8468431号明細書
Antoine Valembois and Marc Fossorier, Senior Member, IEEE, "Box and Match Techniques Applied to Soft-Decision Decoding" IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 50, NO. 5, MAY 2004.
本発明の一つの実施形態は、誤り訂正能力を低下させずにレイテンシを高めることが可能なメモリシステムを提供することを目的とする。
実施形態に係るメモリシステムは、不揮発性メモリと、前記不揮発性メモリから読み出された受信語を軟判定値の符号語に変換する軟判定値変換部と、前記軟判定値の符号語に対する複数のテストパタンのリストを生成するリスト生成部と、前記リストに含まれるテストパタンから中間復号語を検出するテストパタン復号部と、前記テストパタン復号部で検出された中間復号語と前記受信語とのユークリッド距離を計算するユークリッド距離計算部と、最尤復号語候補を保持する最尤復号語選択部とを備え、前記最尤復号語選択部は、前記テストパタン復号部で検出された中間復号語である第1の中間復号語のユークリッド距離が、前記保持している最尤復号語候補のユークリッド距離よりも短い場合、前記第1の中間復号語で前記保持している最尤復号語候補を更新し、最終的に保持している前記最尤復号語候補を軟判定出力値として出力し、前記テストパタン復号部は、中間復号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンに対する復号を実行しない。
図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図2は、第1の実施形態に係るメモリI/Fのより詳細な構成例を示すブロック図である。 図3は、第1の実施形態における受信語のLLR列のソートを説明するための図である。 図4は、第1の実施形態に係るソート後のLLR列に対するフリップ対象範囲を示す図である。 図5は、第1の実施形態に係る最尤復号語選択部が選択する最尤復号語候補を説明するための図である。 図6は、第1の実施形態に係る復号動作の一例を示すフローチャートである。 図7は、第2の実施形態に係るソート後のLLR列に対するシンドロームサイズ及びフリップ対象範囲を示す図である。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
最尤復号法を使った軟判定復号では、メモリセルに記憶されている各ビットの(0,1)の値を“0である確率”で示したものを入力(受信語)とし、採用する復号アルゴリズムを使用して受信語から復号語の候補となる符号語のリストを生成する。なお、復号対象の符号語は、たとえば列方向の成分符号と行方向の成分符号との2次元の成分符号でユーザデータを二重に保護する積符号に代表されるような、2次元以上の成分符号でユーザデータの少なくとも一部を二重以上に保護する多次元の誤り訂正符号であってよい。その場合、説明文中の符号語は、多次元の誤り訂正符号における成分符号に相当する。このような多次元の誤り訂正符号には、上述した積符号の他に、積符号を一般化した概念であるグラフ符号(Graph Codes)や、グラフ符号を更に一般化した概念である一般化LDPC符号(Generalized Low-Density Parity Check Codes)などが存在する。
つづいて、受信語と復号語候補の符号語とがどの程度かけ離れているかを表すユークリッド距離といわれるメトリック(正しい符号語であることの尤もらしさを表す指標)を計算し、ユークリッド距離が最も小さい復号語候補の符号語を最尤復号語の候補(以下、最尤復号語候補という)として選択する。その後、最尤復号語候補として選択した符号語の軟判定出力値を計算して出力する。最尤復号語候補となる符号語のリストを生成する復号アルゴリズムとしては、Chase復号、OSD(Ordered Statistics Decoding)などが存在する。
このような最尤復号法を使った軟判定復号において最も高い訂正能力を得るには、復号語の候補となるリストに全符号語を含め、それぞれに対してユークリッド距離を計算して最尤符号語を決定する必要がある。しかしながら、全ての符号語に対してのユークリッド距離を計算するには膨大な計算量が発生するため、データ読出し時のレイテンシが非常に大きくなってしまうという課題がある。
そこで、一般的にメモリシステムに実装される軟判定復号では、「テストパタン」と呼ばれるエラービットの位置及び個数の組合せを仮定するパタンのリストを生成し、これらのテストパタンを用いつつ復号アルゴリズムに従って候補となる符号語を検出することで、ユークリッド距離の算出対象とする符号語を絞り込むことが行なわれる。
テストパタン生成方法の例としては、軟判定入力値の対数尤度比の絶対値の和の小さいものから順に候補とするテストパタンを選択する方法が存在する。また、OSDでは、Box and Match Algorithmなどの方法が存在する。しかしながら、これらの方法では、リストアップするテストパタンの数を削減するほど誤り訂正能力が低下してしまうという課題が存在する。そこで以下の実施形態では、誤り訂正能力を低下させずにレイテンシを小さくすることが可能なメモリシステムについて、例を挙げて詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリコントローラ10及び不揮発性メモリ20は、例えばそれらの組み合わせにより一つのメモリシステムを構成している。このようなメモリシステム1の例としては、SD(登録商標)カードのようなメモリカード、SSD(Solid State Drive)等が挙げられる。
不揮発性メモリ20は、例えばNAND型フラッシュメモリなどの不揮発性メモリであってよい。また、1つのメモリコントローラ10に接続される不揮発性メモリ20は1つに限られず、複数の不揮発性メモリ20を接続することが可能である。
メモリコントローラ10は、ホストバスを介して接続されたホスト30から受信した命令に応答して、不揮発性メモリ20にアクセスする。ホスト30は、コンピュータの構成を備えている。コンピュータとは、例えば、パーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等であってよい。ホストバスの準拠する規格としては、任意の規格が採用可能である。
メモリコントローラ10は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、バッファメモリ14、メモリインタフェース(I/F)15及びホストインタフェース(I/F)17を備え、これらが内部バス18を介して相互に接続されている。
ホストI/F17は、ホスト30から受信した命令及びデータを、それぞれCPU11及びバッファメモリ14に転送する。また、ホストI/F17は、CPU11からの命令に応答して、バッファメモリ14内のデータをホスト30へ転送する。
CPU11は、メモリコントローラ10全体の動作を制御する。例えば、CPU11は、ホスト30から書込み命令を受信した際には、それに応答して、メモリI/F15に対して書込み命令を発行する。読出し及び消去の際も同様に、ホスト30からの命令に応答して、メモリI/F15に対して読出し命令又は消去命令を発行する。またCPU11は、ウエアレベリングやガベージコレクション等、不揮発性メモリ20を管理するための様々な処理を実行する。
RAM12は、例えばDRAM(Dynamic RAM)等の半導体メモリであり、CPU11等の作業領域として使用される。RAM12には、不揮発性メモリ20を管理するためのファームウェア、及び、各種の管理テーブル等がロードされ得る。
バッファメモリ14は、書込みデータ又は読出しデータを一時的に保持するメモリ領域として機能する。バッファメモリ14は、DRAM、SRAM(Static RAM)等によって構成され得る。
メモリI/F15は、チャネルを介して1つ以上の不揮発性メモリ20と接続され、不揮発性メモリ20との通信を制御する。メモリI/F15は、CPU11から受信した命令に基づき、信号ALE、信号CLE、信号WEn、及び信号REnを不揮発性メモリ20へ出力する。例えば書込み時には、メモリI/F15は、CPU11が発行した書込み命令及びバッファメモリ14内の書込みデータを入出力信号I/Oとして不揮発性メモリ20へ転送する。また、読出し時には、メモリI/F15は、CPU11が発行した読出し命令を入出力信号I/Oとして不揮発性メモリ20へ転送する。そして、メモリI/F15は、不揮発性メモリ20から読み出されたデータを入出力信号I/Oとして受信し、これをバッファメモリ14へ転送する。
ここで、信号CEnは、不揮発性メモリ20をイネーブルにするための信号である。信号CLEは、入力信号I/Oが命令であることを不揮発性メモリ20に通知する信号である。信号ALEは、入力信号I/Oがアドレスであることを不揮発性メモリ20に通知する信号である。信号WEnは、入力信号I/Oを不揮発性メモリ20に取り込ませるための信号である。信号REnは、不揮発性メモリ20から出力信号I/Oを読み出すための信号である。レディ・ビジー信号RBnは、不揮発性メモリ20がレディ状態(メモリコントローラ10からの命令を受信できる状態)であるか、それともビジー状態(メモリコントローラ10からの命令を受信できない状態)であるかを示す信号である。入出力信号I/Oは、例えば8ビットの信号である。入出力信号I/Oは、不揮発性メモリ20とメモリコントローラ10との間で送受信されるデータの実体であり、命令、アドレス、書込みデータ、読出しデータ等である。
図2は、図1に示すメモリI/F15のより詳細な構成例を示すブロック図である。図2に示すように、メモリI/F15は、不揮発性メモリ20に書き込むデータを符号化するとともに、不揮発性メモリ20から読み出されたデータを復号するECC(Error Correction Code)部100を備える。ECC部100は、軟判定値変換部140と、内部メモリ130と、リスト生成部120と、軟判定復号部110と、硬判定値変換部150とを備える。
軟判定値変換部140は、不揮発性メモリ20から読み出されたデータを軟判定値(後述するLLR)に変換する。
内部メモリ130は、不揮発性メモリ20から読み出された受信語、軟判定値変換部140により軟判定値(LLR)に変換された符号語、この符号語に対するテストパタンを軟判定復号部110が復号する過程で生成された軟判定値の復号語(以下、中間復号語という)等を格納する。
軟判定復号部110は、内部メモリ130内の軟判定値の符号語又は中間復号語に対して軟判定復号(ソフトビット復号:SB復号)を実行する。
硬判定値変換部150は、内部メモリ130内に格納された軟判定値の符号語(例えば復号完了後の復号語)を(0,1)の2値で表された硬判定値の符号語に変換する。なお、硬判定値変換部150により硬判定値に変換された符号語は、不揮発性メモリ20内に再度書き込まれてもよいし(例えばガベージコレクション時)、バッファメモリ14等を介してホスト30へ出力されてもよい。
リスト生成部120は、SB復号の入力となるテストパタンのリストを生成する。例えばリスト生成部120は、既出の復号語候補がある場合(例えば後述する最尤復号語選択部114において最尤復号語候補が保持されている場合)、その復号語候補のユークリッド距離を元に、当該ユークリッド距離よりも短いユークリッド距離となる可能性のあるテストパタンのリストを生成する。
また、リスト生成部120は、テストパタン削減部121を備える。このテストパタン削減部121は、リスト生成部120により生成されたリストが既に存在する場合であって、既出の復号語候補がある場合には、その復号語候補のユークリッド距離を元に、当該ユークリッド距離よりも短いユークリッド距離となる可能性のないテストパタンを上記リストから削除する。
軟判定復号部110は、テストパタン復号部111と、ユークリッド距離計算部113と、最尤復号語選択部114と、テストパタン実行判定部112とを備える。
テストパタン復号部111は、規定のアルゴリズムに従ってリスト生成部120から入力されたリスト内のテストパタンを順次復号する。
ユークリッド距離計算部113は、テストパタン復号部111で検出された符号語(中間復号語)と受信語とのユークリッド距離を計算する。
最尤復号語選択部114は、ユークリッド距離計算部113で新たに計算されたユークリッド距離と既出の最尤復号語候補のユークリッド距離との大きさを比較し、ユークリッド距離が小さい方の中間復号語で最尤復号語候補を更新して保持する。
テストパタン実行判定部112は、最尤復号語選択部114に保持されている最尤復号語候補のユークリッド距離に基づいて、リスト生成部120から入力されたリストにおけるテストパタンに対してSB復号を実行するか否かを判定し、SB復号を実行すると判定したテストパタンをテストパタン復号部111に入力する。
このように本実施形態では、最尤復号語となり得ないテストパタンをリストに含めない機能(リスト生成部120及びテストパタン削減部121)を備えることで、復号時の計算量を削減し、レイテンシを小さくしている。また、本実施形態では、最尤復号語となり得ないテストパタンに対するSB復号をスキップする機能(テストパタン実行判定部112)を備えることでも、復号時の計算量を削減して、レイテンシを小さくしている。
なお、ECC部100は、メモリI/F15とは独立してメモリコントローラ10内に設けられてもよい。その場合、例えばCPU11は、不揮発性メモリ20から読み出されたデータをメモリI/F15を経由してECC部100へ入力するような制御を実行する。
つづいて、本実施形態における復号処理の流れについて、図面を用いて詳細に説明する。
復号処理では、まず、不揮発性メモリ20からの対象データ(符号語)の読出しが実行される。不揮発性メモリ20に対するデータの読出しでは、硬判定読出し(ハードビット(HB)リードともいう)と、軟判定読出し(ソフトビット(SB)リードともいう)とが実行される。
硬判定読出し(ハードビット(HB)リード)では、読み出したビット値が(0,1)で切り替わる読出し電圧(以下、HBリードレベルという)を各メモリセルに印加することで、2値のデータである硬判定値のデータ(ハードビット(HB)データともいう)が読み出される。軟判定読出し(ソフトビット(SB)リード)では、HBリードレベルから電圧値をそれぞれ±δ,±2δ,…シフトした複数のリードレベル(以下、SBリードレベルという)を各メモリセルに印加することで、LOWERページ、MIDDLEページ、UPPERページ等よりなる複数ページのデータ(ソフトビット(SB)データともいう)が読み出される。
SBリードにより各メモリセルから読み出されたSBデータは、各メモリセルの閾値電圧が想定される(0,1)の状態(閾値電圧分布)からどの程度ずれているかを示している。このSBデータは、各メモリセルから読み出したビット値の信頼性(値の正しさ)を表現する対数尤度比(Log Likelihood Ratio:LLR)に変換することができる。
ここで、不揮発性メモリ20から受信語yが読み出されたとすると、その受信語yにおけるi番目のビットbのLLRは、以下に式(1)で表すことができる。なお、式(1)において、P(b=0|y)は、i番目のビットbの値が“0”である確率を示し、P(b=1|y)は、i番目のビットbの値が“1”である確率を示している。
Figure 2019054448
式(1)から求まるLLRがプラスであれば、このLLRはi番目のビットbの値が“0”であることを示唆しており、マイナスであれば、i番目のビットbの値が“1”であることを示唆している。また、LLRの絶対値は、式(1)から求まるLLRの正負によって示唆される値の信頼度を示しており、絶対値が大きいほど信頼度が高く、小さいほど信頼度が低い。
軟判定値変換部140は、各メモリセルから読み出された複数ページのSBデータをLLRに変換し、内部メモリ130に格納する。図3の上段に、不揮発性メモリ20から読み出したSBデータの受信語を変換することで生成されたLLR列の一例を示す。理論的には、LLRは実数で表されるものであるが、本説明では、図3に示すように、LLRが整数に丸め込まれて、離散化された値を持つものとする。したがって、内部メモリ130内の符号語は、離散化された値を持つLLRで表現された符号語となる。
リスト生成部120は、図3に示すように、SB復号対象の符号語の各ビットを軟判定入力値(LLR)の絶対値の小さい順にソートする(S11)。その際、リスト生成部120は、SB復号対象の符号語における全ビットをソートしてもよいし、符号語の一部のビット(例えばLLRの絶対値の小さいものから順に所定数のビット)をソートしてもよい。
また、リスト生成部120は、テストパタン復号部111がChase復号アルゴリズムに従って復号を実行するように設計されていた場合には、Chase復号用のテストパタンのリストを生成し、OSDアルゴリズムに従って復号を実行するように設計されていた場合には、OSD用のテストパタンのリストを生成する。本実施形態では、Chase復号アルゴリズムが採用されている場合を例に挙げ、OSDアルゴリズムを採用した場合については、後述する第2の実施形態において説明する。
Chase復号用テストパタンのリストを生成する場合、リスト生成部120は、フリップ数を1としたテストパタンのリスト、フリップ数を2としたテストパタンのリスト、フリップ数を3としたテストパタンのリスト、…、フリップ数をf(fは1以上の整数)としたテストパタンのリストを順次生成する。
生成されるリストの大きさ(テストパタンの数)は、フリップするビットの数(以下、フリップ数という)の最大値から定められてもよいし、予めテストパタンの数の上限値として定められてもよい。ただし、リストの大きさ(テストパタンの数)は、許容されるレイテンシを満足し得る程度の大きさに設定される(LRB:LeastReliableBasis)。
また、フリップ対象とするビットの範囲(フリップ対象範囲)Fは、図4に示すように、例えばソート後のLLR列に対し、LLRの絶対値の小さいものから順に所定の個数(以下、閾値数という)(n)までの範囲となるように制限されてもよい。なお、図4では、閾値数(n)を4とした場合が示されている。
以上のような方法において、フリップ数の最大値をkとし、閾値数(n)を4とした場合、生成されるリストの大きさは、フリップ数を1としたテストパタンの組合せ数nC1と、フリップ数を2としたテストパタンの組合せ数nC2と、フリップ数を3としたテストパタンの組合せ数nC3と、…、フリップ数をkとしたテストパタンの組合せ数nCkとの合計値(nC1+nC2+nC3+…+nCk)となる。
なお、リスト内におけるテストパタンの優先順位は、例えばLLRの絶対値の小さいビットをフリップするテストパタンほど高い優先度となるような優先順位であってよい。言い換えれば、テストパタン復号部111における復号順序は、例えばLLRの絶対値の小さいビットをフリップするテストパタンほど高い優先度となるような優先順位であってよい。
また、本実施形態では、後述するように、Chase復号アルゴリズムを使って訂正可能数tの符号語に対してフリップ数fのテストパタンを生成する際、既に1つの候補となる復号語が見つかっており(言い換えれば、既に最尤復号語候補が最尤復号語選択部114に保持されており)、且つ、そのユークリッド距離が(f+t)a+t+1(なお、aは任意の自然数)より大きい場合には、リスト生成時のフリップ対象とするビットの条件に、LLRの絶対値がa以下のものという条件を追加する。このような条件を追加することで、フリップ対象範囲F(図4参照)内のビットからさらにフリップ対象とするビットが絞り込まれ、それにより、フリップするビットの組合せ数が減少し、生成されるテストパタンの数が減少する。その結果、復号時の計算量が削減し、レイテンシを小さくすることが可能となる。
軟判定復号部110は、入力された軟判定入力値(LLR)を用いてSB復号を実行する。Chase復号アルゴリズムが採用されている本実施形態では、軟判定復号部110は、フリップ数を0とした復号(復号実行回数が1回)、フリップ数を1とした復号、フリップ数を2とした復号、フリップ数を3とした復号、…、フリップ数をkとした復号を順次実行する。
ユークリッド距離計算部113は、テストパタン復号部111で検出された符号語(中間復号語)と受信語とのユークリッド距離を計算する。このユークリッド距離は、例えばエラービットに対応する軟判定入力値(LLR)の絶対値の総和であってよい。
例えば図5に示すように、テストパタン復号部111が中間復号語#1の1番目のビットと3番目のビットがエラービットであると検出した場合、ユークリッド距離計算部113は、中間復号語#1のユークリッド距離を1番目のビットのLLRの絶対値‘1’と、3番目のビットのLLRの絶対値‘5’との総和である‘6’を、中間復号語#1のユークリッド距離として算出する。また、中間復号語#2についても同様に、ユークリッド距離計算部113は、テストパタン復号部111がエラービットとして検出した1番目と9番目とのビットのLLRの絶対値の総和をユークリッド距離(‘4’)として算出する。同様に、中間復号語#3についても、ユークリッド距離計算部113は、テストパタン復号部111がエラービットとして検出した1番目と5番目と7番目と9番目とのビットのLLRの絶対値の総和をユークリッド距離(‘6’)として算出する。
最尤復号語選択部114は、最初に検出された中間復号語とユークリッド距離とを最尤復号語候補として保存する。また、最尤復号語選択部114は、2つ目以降に見つかった中間復号語については、その中間復号語のユークリッド距離を計算し、計算されたユークリッド距離と保存されている最尤復号語候補のユークリッド距離とを比較し、ユークリッド距離が小さい方の復号語を最尤復号語候補として保存し直す。したがって、新たに検出された中間復号語のユークリッド距離の方が小さければ、新たに検出された中間復号語で保存されている最尤復号語候補が更新される。
つづいて、Chase復号アルゴリズムを使ったSB復号の流れについて、具体例を挙げて説明する。
Chase復号アルゴリズムにおいて、訂正可能数tを1とし、フリップ数が1のテストパタンを用いて復号した場合、得られるエラー数はフリップ数1に訂正可能数t=1を加えた合計2ビットとなる。このとき、得られるユークリッド距離が検出されたエラービットのLLRの絶対値の総和であることから、得られるユークリッド距離とエラービットのLLRの絶対値との組み合わせは、以下の表1のように列挙することができる。
Figure 2019054448
表1から分かるように、訂正可能数tを1、フリップ数を1とした場合に、ユークリッド距離が3以下の最尤復号語候補を得るには、フリップ対象の1ビットはLLRの絶対値が1であるビットに限定される。また、ユークリッド距離が5以下の最尤復号語候補を得るには、フリップ対象の1ビットはLLRの絶対値が1又は2であるビットに限定される。これを一般化すると、ユークリッド距離が2a+1以下(aは0以上の整数)の最尤復号語候補を得るには、フリップ対象の1ビットはLLRの絶対値がa以下のビットに限定されることが得られる。
また、訂正可能数tを1とし、フリップ数を2とした場合には、Chase復号の結果として得られるエラービットの数は3ビットとなる。したがって、得られるユークリッド距離とエラービットのLLRの絶対値との組み合わせは、以下の表2のように列挙することができる。
Figure 2019054448
表2から分かるように、ユークリッド距離が3a+1以下の最尤復号語候補を得るには、フリップ対象とする2ビットは、それぞれLLRの絶対値がa以下のビットに限定される。
以上のことから、訂正可能数tを1とした符号において、フリップ数fでユークリッド距離が(f+1)a+1以下の最尤復号語候補を検出するためには、フリップ対象のfビットそれぞれを、LLRの絶対値がa以下のビットに限定すればよいことが分かる。
次に、訂正可能数tを2とした場合について説明する。訂正可能数tを2とし、フリップ数を1とした場合には、Chase復号の結果として得られるエラービットの数は3ビットとなる。したがって、得られるユークリッド距離とエラービットのLLRの絶対値との組み合わせは、以下の表3のように列挙することができる。
Figure 2019054448
表3から分かるように、訂正可能数tを2とした符号において、フリップ数fでユークリッド距離が3a+2以下の最尤復号語候補を検出するためには、フリップ対象のfビットそれぞれを、LLRの絶対値がa以下のビットに限定すればよいことが分かる。
また、訂正可能数tを2とし、フリップ数を2とした場合には、検出されるエラービットの数が4ビットとなるため、得られるユークリッド距離とエラービットのLLRの絶対値との組み合わせは、以下の表4のように列挙することができる。
Figure 2019054448
表4から分かるように、訂正可能数tを2とし、フリップ数を2とした場合において、ユークリッド距離が4a+2以下の最尤復号語候補を検出するためには、フリップ対象の2ビットそれぞれを、LLRの絶対値がa以下のビットに限定すればよい。
以上のように、Chase復号アルゴリズムを使って訂正可能数tの符号語をフリップ数fのビットフリップしたテストパタンを用いて復号する場合において、ユークリッド距離が(f+t)a+t以下となる最尤復号語候補を検出するためには、フリップ対象のfビットそれぞれを、LLRの絶対値がa以下のビットに限定すればよいことが分かる。
たとえば訂正可能数が2の符号語に関し、フリップ数0で1つの最尤復号語候補が検出され、そのユークリッド距離が9であった場合、最尤復号語候補を更新するためには、新たに検出された中間復号語のユークリッド距離は8以下である必要がある。そこで、リスト生成部120は、フリップ数を1としたテストパタンのリストを生成する際に、フリップ対象のビットをLLRの絶対値が1又は2のビットに制限する。または、既にフリップ数を1としたテストパタンのリストが生成されている場合には、リスト生成部120内のテストパタン削減部121が、フリップ対象のビットをLLRの絶対値が1又は2のビットでないテストパタンをリストから削除する。これにより、最尤復号語となり得ないテストパタンをリストから除外することが可能となるため、復号時の計算量が削減されて、レイテンシが小さくなるという効果が得られる。
また、フリップ数を1としたテストパタンのリストを用いてChase復号を実行した結果又は実行中にユークリッド距離が例えば6の最尤復号語候補が検出された場合、リストの残りのテストパタンのうちLLRの絶対値が2のビットがフリップされたテストパタンを用いてChase復号を実行したとしても、最尤復号語選択部114に保持された最尤復号語候補が更新されることはない。そこで、このような場合には、軟判定復号部110内のテストパタン実行判定部112は、LLRの絶対値が2のビットがフリップされたテストパタンに対し、テストパタン復号部111がChase復号が実行を実行しないように制限する。例えばテストパタン実行判定部112は、LLRの絶対値が2のビットがフリップされたテストパタンのテストパタン復号部111への入力をスキップする。これにより、最尤復号語となり得ないテストパタンに対するSB復号がスキップされるため、復号時の計算量が削減されて、レイテンシを小さくなるという効果が得られる。
次に、本実施形態に係る復号動作について、図面を参照して詳細に説明する。図6は、本実施形態に係る復号動作の一例を示すフローチャートである。図6に示すように、本実施形態では、まず、リスト生成部120がフリップ数をfとしたテストパタン(以下、fビットフリップのテストパタンという)のリストを生成する(ステップS101)。なお、fの初期値は1であるとする。また、既にfビットフリップのテストパタンのリストが存在する場合には、ステップS101がスキップされてもよい。
次に、リスト生成部120のテストパタン削減部121が、リストアップされたfビットフリップのテストパタンのうち、最尤復号語候補となる可能性のないテストパタンを削除することで、復号対象のテストパタンを絞り込む(ステップS102)。具体的には、テストパタン削減部121は、まず、リストアップされたテストパタンそれぞれについて、エラービットと仮定されているビットのLLRの総和からユークリッド距離を算出する。つづいて、テストパタン削減部121は、最尤復号語選択部114に格納されている最尤復号語候補のユークリッド距離を取得する。その後、テストパタン削減部121は、リストアップされたテストパタンのうち、ユークリッド距離が最尤復号語候補のユークリッド距離以上のものをリストから削除する。これにより、復号対象とするテストパタンが絞り込まれるため、復号時の計算量が削減されて、レイテンシを小さくすることができる。なお、ステップS101においてリスト生成部120が最尤復号語候補となる可能性のないテストパタンを生成しないように動作する場合には、ステップS102を省略することも可能である。また、絞り込み後のリストは、軟判定復号部110のテストパタン実行判定部112に入力される。
次に、テストパタン実行判定部112が、入力されたリストの中から未選択のテストパタンを1つ選択する(ステップS103)。なお、選択時の優先順位としては、上述したように、例えばLLRの絶対値の小さいビットをフリップするテストパタンほど高い優先度となるような優先順位であってよい。このような選択順序とすることで、エラーベクタが検出される可能性の高いテストパタンに対する復号を優先的に実行することが可能になるとともに、復号処理の流れにおける比較的早期に、最尤復号語選択部114に格納される最尤復号語候補のユークリッド距離を短くすることが可能となる。その結果、リスト生成部120がリストに含めないこととするテストパタンの数、テストパタン削減部121がリストから削除するテストパタンの数、及び、テストパタン実行判定部112がスキップ対象とするテストパタンの数が増加するため、復号時の計算量がより削減されて、レイテンシをより小さくすることが可能となる。
次に、テストパタン実行判定部112は、選択したテストパタンを用いたSB復号を実行するか否かを判定する(ステップS104)。具体的には、テストパタン実行判定部112は、選択したテストパタンのユークリッド距離を特定する。このユークリッド距離は、リスト生成部120からリストとともに入力されてもよいし、テストパタン実行判定部112が選択したテストパタンにおいてエラービットと仮定されているビットのLLRの総和から算出してもよい。つづいて、テストパタン実行判定部112は、最尤復号語選択部114に格納されている最尤復号語候補のユークリッド距離を取得する。その後、テストパタン実行判定部112は、選択したテストパタンのユークリッド距離が最尤復号語候補のユークリッド距離未満であれば、当該テストパタンに対するSB復号を実行すると判定し(ステップS104のYES)、ステップS105へ進む。一方、選択したテストパタンのユークリッド距離が最尤復号語候補のユークリッド距離以上であれば、テストパタン実行判定部112は、当該テストパタンに対するSB復号を実行しないと判定し(ステップS104のNO)、ステップS112へ進む。これにより、最尤復号語候補が検出され得ないテストパタンに対するSB復号がスキップされるため、復号時の計算量が削減されて、レイテンシを小さくすることができる。
ステップS105では、テストパタン実行判定部112からテストパタン復号部111にSB復号を実行すると判定されたテストパタンが入力され、テストパタン復号部111が入力されたテストパタンを用いたSB復号を実行する。つづいて、テストパタン復号部111は、エラーベクタが検出されたか否かを判定する(ステップS106)。エラーベクタが検出されなかった場合(ステップS106のNO)、ステップS110へ進む。一方、エラーベクタが検出された場合(ステップS106のYES)、ユークリッド距離計算部113が、テストパタンによりフリップされたビットのLLRと、検出されたエラーベクタが示すエラービットのLLRとからユークリッド距離を計算する(ステップS107)。つづいて、最尤復号語選択部114が、ユークリッド距離計算部113により新たに計算されたユークリッド距離と、保存している最尤復号語候補のユークリッド距離とを比較し(ステップS108)、新たに計算されたユークリッド距離が最尤復号語候補のユークリッド距離未満であれば(ステップS108のYES)、保存している最尤復号語候補及びそのユークリッド距離を、テストパタン復号部111によるSB復号により新たに検出された中間復号語及びその中間復号語についてユークリッド距離計算部113が新たに計算したユークリッド距離で更新し(ステップS109)、ステップS110へ進む。一方、新たに計算されたユークリッド距離の方が最尤復号語候補のユークリッド距離以上である場合(ステップS108のNO)、最尤復号語選択部114が保持する最尤復号語候補及びそのユークリッド距離を更新せずに、ステップS110へ進む。
ステップS110では、ステップS102による絞り込み後のリストにおけるテストパタンの全てに対してSB復号が完了したか否かが判定される。未だSB復号が実行されていないテストパタンが存在する場合(ステップS110のNO)は、ステップS103へリターンし、新たに選択されたテストパタンに対して以降の動作が実行される。一方、リストにある全てのテストパタンに対してSB復号が完了している場合(ステップS110のYES)、フリップ数fを1インクリメント(ステップS111)した後、ステップS112へ進む。
ステップS112では、フリップ数fがフリップ数の最大値kよりも大きいか否か、すなわち、フリップ数の最大値kまでの全てのテストパタンについての処理が完了したか否かが判定される。フリップ数fが最大値k以下である場合(ステップS112のNO)、ステップS101へリターンして、新たなフリップ数fについてfビットフリップのテストパタンのリストが生成された後、以降の動作が実行される。一方、フリップ数fが最大値kより大きい場合(ステップS112のYES)、本動作が終了される。
以上のように、本実施形態によれば、既出の最尤復号語候補よりもユークリッド距離が小さくなる可能性がないテストパタンをリストから排除して復号対象に含めないことで、最尤復号法での計算量を削減してレイテンシを小さくすることが可能となる。また、復号の途中で新たな最尤復号語候補が検出された場合には、この新たな最尤復号語候補よりもユークリッド距離が小さくなる可能性がないテストパタンに対するSB復号をスキップすることで、最尤復号法での計算量を削減してレイテンシを小さくすることが可能となる。
(第2の実施形態)
上述した第1の実施形態では、Chase復号アルゴリズムが採用されている場合を例に挙げた。これに対し、第2の実施形態では、OSDアルゴリズムが採用された場合について、例を挙げて詳細に説明する。
本実施形態において、メモリI/Fを含むメモリシステムの概略構成は、上述した第1の実施形態に係るメモリシステム1(図1及び図2参照)と同様であってよいため、ここでは詳細な説明を省略する。また、復号動作についても同様に、上述した第1の実施形態において図6等を用いて説明した概略動作例と同様であってよいため、ここでは詳細な説明を省略する。
つづいて、OSDアルゴリズムを使ったSB復号の流れについて、具体例を挙げて説明する。本説明では、保護対象の情報語が訂正可能数がtの符号語で保護されているものとする。また、入力された符号語に対して、OSD復号の前に実行された限界距離復号の結果、ユークリッド距離がbの中間復号語が最尤復号語候補として検出されているものとする。この場合、OSD復号の結果として得られるエラーベクタには、少なくとも(t+1)個のエラービットが含まれることになる。
OSD用テストパタンを生成する場合においては、符号語に対してフリップ対象とするビットの範囲(フリップ対象範囲)Fを設定する場合、リスト生成部120は、図7に示すように、例えば図3を用いて説明したソート(S11)後のLLR列に対し、LLRの絶対値の小さいものから順に、シンドロームサイズ(パリティサイズ)pに所定の閾値数(n)を加えた数(p+n)をエラーが存在する可能性のある範囲(以下、エラー仮定範囲という)とし、所定の閾値数(n)に相当する範囲をフリップ対象範囲Fに設定する。その際、閾値数(n)は、フリップ数ごとに異なる値としてもよい。なお、図7では、シンドロームサイズを4とし、閾値数(n)を4とした場合が示されている。
OSDアルゴリズムにおけるフェーズ(以下、OSDフェーズという)0では、軟判定復号部110は、ソートされたビットのうち、LLRの絶対値の最も小さいものから順にシンドロームサイズ分のビットを使用してOSDフェーズ0の復号を実行する。ただし、LLRの絶対値の最も小さいビットから数えて(t+1)番目のビットのLLRが最尤復号語候補のユークリッド距離b以上である場合、OSDフェーズ0の復号を実行したとしても最尤復号語選択部114内の最尤復号語候補が更新されることはない。そのため、この場合には、リスト生成部120はリストを生成せずに、「パタン無し」であることを軟判定復号部110に通知する。この場合、ECC部100は、以降のOSDを実行せず、既に得られている最尤復号語候補を最終的な復号語である軟判定出力値として出力する。
OSDフェーズ0以降、OSDフェーズ1からOSDフェーズk(kはフリップ数の最大値に相当)までが順次実行される。具体的には、OSDフェーズj(jは1以上k以下)では、リスト生成部120が、ソートされたビットのうちOSDフェーズ0で使用したシンドロームサイズpのビットを除いたフリップ対象範囲F内のビットをj個フリップするテストパタンのリストを生成し、軟判定復号部110が生成されたテストパタンのリストに従いOSDフェーズjの復号を実行する。
その際、OSDフェーズ(j−1)(jは1以上k以下)までの過程でユークリッド距離がcの符号語が検出されている場合、OSDフェーズj以降では、エラーと仮定するj個のビットのLLRの絶対値の和がcより大きくなるテストパタンを復号したとしても、当該復号により検出された中間復号語が最尤復号語候補となることはない。そこで、このような場合、OSDフェーズj以降では、リスト生成部120は、フリップ対象としたj個のビットのLLRの絶対値の和がcより大きくなるテストパタンを含まないリストを生成する。若しくは、既にリストが存在する場合には、テストパタン削減部121がリストから該当のテストパタンを削除するか、テストパタン実行判定部112が当該テストパタンをテストパタン復号部111による復号対象から除外する。
さらに、1<j<t(tは符号語の訂正可能数)の場合、LRBに基づいて(t+1−j)個のLLRの絶対値の和をmとおくとき、エラーと仮定するj個のビットのLLRの和がc−mより大きくなるテストパタンを復号したとしても、当該復号により検出された中間復号語が最尤復号語候補となることはない。そこで、このような場合、OSDフェーズj以降では、リスト生成部120は、フリップ対象とするj個のビットのLLRの絶対値の和がc−m以上となるテストパタンを含まないリストを生成する。若しくは、既にリストが存在する場合には、テストパタン削減部121がリストから該当のテストパタンを削除するか、テストパタン実行判定部112が当該テストパタンをテストパタン復号部111による復号対象から除外する。
以上のような構成及び動作とすることで、本実施形態によれば、OSDアルゴリズムを採用した場合も、第1の実施形態と同様に、既出の最尤復号語候補よりもユークリッド距離が小さくなる可能性がないテストパタンをリストから排除して復号対象に含めないことで、最尤復号法での計算量を削減してレイテンシを小さくすることが可能となる。また、復号の途中で新たな最尤復号語候補が検出された場合には、この新たな最尤復号語候補よりもユークリッド距離が小さくなる可能性がないテストパタンに対するSB復号をスキップすることで、最尤復号法での計算量を削減してレイテンシを小さくすることが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、10…メモリコントローラ、11…CPU、12…RAM、14…バッファメモリ、15…メモリI/F、17…ホストI/F、18…内部バス、20…不揮発性メモリ、30…ホスト、100…ECC部、110…軟判定復号部、111…テストパタン復号部、112…テストパタン実行判定部、113…ユークリッド距離計算部、114…最尤復号語選択部、120…リスト生成部、121…テストパタン削減部、130…内部メモリ、140…軟判定値変換部、150…硬判定値変換部。

Claims (17)

  1. 不揮発性メモリと、
    前記不揮発性メモリから読み出された受信語を軟判定値の符号語に変換する軟判定値変換部と、
    前記軟判定値の符号語に対する複数のテストパタンのリストを生成するリスト生成部と、
    前記リストに含まれるテストパタンから中間復号語を検出するテストパタン復号部と、
    前記テストパタン復号部で検出された中間復号語と前記受信語とのユークリッド距離を計算するユークリッド距離計算部と、
    最尤復号語候補を保持する最尤復号語選択部と、
    を備え、
    前記最尤復号語選択部は、前記テストパタン復号部で検出された中間復号語である第1の中間復号語のユークリッド距離が、前記保持している最尤復号語候補のユークリッド距離よりも短い場合、前記第1の中間復号語で前記保持している最尤復号語候補を更新し、最終的に保持している前記最尤復号語候補を軟判定出力値として出力し、
    前記テストパタン復号部は、中間復号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンに対する復号を実行しない
    メモリシステム。
  2. 前記リスト生成部は、前記テストパタンそれぞれがフリップ対象とするビットの軟判定値の絶対値に基づいて、前記テストパタン復号部で検出される符号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のない前記テストパタンを含めずに前記リストを生成する請求項1に記載のメモリシステム。
  3. 前記テストパタンそれぞれがフリップ対象とするビットの軟判定値の絶対値に基づいて、前記テストパタン復号部で検出される符号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンを前記リストから削除するテストパタン削減部をさらに備える請求項1に記載のメモリシステム。
  4. 前記テストパタンそれぞれがフリップ対象とするビットの軟判定値の絶対値に基づいて、前記リスト生成部が生成した前記リストに含まれる前記テストパタンのうち、前記テストパタン復号部で検出される符号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンに対する前記テストパタン復号部による復号をスキップするテストパタン実行判定部をさらに備える請求項1に記載のメモリシステム。
  5. 前記リスト生成部は、フリップするビットの数ごとに異なるテストパタンのリストを生成し、
    前記テストパタン復号部は、前記フリップするビットの数を0とした場合を含む前記フリップするビットの数の小さいリストに含まれるテストパタンから順に復号を実行する
    請求項2に記載のメモリシステム。
  6. 前記テストパタン復号部は、前記リストに含まれる前記テストパタンのうち、信頼度の低いビットをフリップ対象とするテストパタンを優先的に復号する請求項1に記載のメモリシステム。
  7. 前記ユークリッド距離計算部は、前記リスト生成部でフリップされたビットと前記テストパタン復号部で検出される1つ以上のエラービットに対応する1つ以上の軟判定値の絶対値の総和を前記ユークリッド距離として算出する請求項1に記載のメモリシステム。
  8. 前記所定のアルゴリズムは、Chase復号アルゴリズムであり、
    前記リスト生成部は、前記符号語の訂正可能数をtとし、フリップするビットの数をfとし、aを任意の自然数とした場合であって、前記最尤復号語選択部が(f+t)a+t+1のユークリッド距離の最尤復号語候補を保持している場合、フリップ対象とするビットの軟判定値の絶対値が前記a以下であるテストパタンが含まれない前記リストを生成する
    請求項2に記載のメモリシステム。
  9. 前記所定のアルゴリズムは、Chase復号アルゴリズムであり、
    前記テストパタン削減部は、前記符号語の訂正可能数をtとし、フリップするビットの数をfとし、aを任意の自然数とした場合であって、前記最尤復号語選択部が(f+t)a+t+1のユークリッド距離の最尤復号語候補を保持している場合、フリップ対象とするビットの軟判定値の絶対値が前記a以下であるテストパタンを前記リストから削除する
    請求項3に記載のメモリシステム。
  10. 前記所定のアルゴリズムは、Chase復号アルゴリズムであり、
    前記テストパタン実行判定部は、前記符号語の訂正可能数をtとし、フリップするビットの数をfとし、aを任意の自然数とした場合であって、前記最尤復号語選択部が(f+t)a+t+1のユークリッド距離の最尤復号語候補を保持している場合、フリップ対象とするビットの軟判定値の絶対値が前記a以下であるテストパタンに対する前記テストパタン復号部による復号をスキップする
    請求項4に記載のメモリシステム。
  11. 前記所定のアルゴリズムは、OSD(Ordered Statistics Decoding)アルゴリズムであり、
    前記リスト生成部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合、フリップ対象とするビットの軟判定値の絶対値の和が前記cより大きいテストパタンが含まれない前記リストを生成する
    請求項2に記載のメモリシステム。
  12. 前記所定のアルゴリズムは、OSDアルゴリズムであり、
    前記テストパタン削減部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合、フリップ対象とするビットの軟判定値の絶対値の和が前記cより大きいテストパタンを前記リストから削除する
    請求項3に記載のメモリシステム。
  13. 前記所定のアルゴリズムは、OSDアルゴリズムであり、
    前記テストパタン実行判定部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合、フリップ対象とするビットの軟判定値の絶対値の和が前記cより大きいテストパタンに対する前記テストパタン復号部による復号をスキップする
    請求項4に記載のメモリシステム。
  14. 前記所定のアルゴリズムは、OSDアルゴリズムであり、
    前記リスト生成部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合であって、前記符号語の訂正可能数をtとし、フリップするビットの数をjとし、前記符号語において前記軟判定値の絶対値の最も小さいビットから順に(t+1−j)個のビットの軟判定値の絶対値の和をmとした場合、フリップ対象とするビットの軟判定値の絶対値の和が前記c−mより大きいテストパタンが含まれない前記リストを生成する
    請求項2に記載のメモリシステム。
  15. 前記所定のアルゴリズムは、OSDアルゴリズムであり、
    前記テストパタン削減部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合であって、前記符号語の訂正可能数をtとし、フリップするビットの数をjとし、前記符号語において前記軟判定値の絶対値の最も小さいビットから順に(t+1−j)個のビットの軟判定値の絶対値の和をmとした場合、フリップ対象とするビットの軟判定値の絶対値の和が前記c−mより大きいテストパタンを前記リストから削除する
    請求項3に記載のメモリシステム。
  16. 前記所定のアルゴリズムは、OSDアルゴリズムであり、
    前記テストパタン実行判定部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合であって、前記符号語の訂正可能数をtとし、フリップするビットの数をjとし、前記符号語において前記軟判定値の絶対値の最も小さいビットから順に(t+1−j)個のビットの軟判定値の絶対値の和をmとした場合、フリップ対象とするビットの軟判定値の絶対値の和が前記c−mより大きいテストパタンに対する前記テストパタン復号部による復号をスキップする
    請求項4に記載のメモリシステム。
  17. 前記最尤復号語選択部から出力された前記軟判定出力値を硬判定値の符号語に変換する硬判定値変換部をさらに備える請求項1に記載のメモリシステム。
JP2017178095A 2017-09-15 2017-09-15 メモリシステム Pending JP2019054448A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017178095A JP2019054448A (ja) 2017-09-15 2017-09-15 メモリシステム
US15/918,021 US10452476B2 (en) 2017-09-15 2018-03-12 Memory system and method of controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017178095A JP2019054448A (ja) 2017-09-15 2017-09-15 メモリシステム

Publications (1)

Publication Number Publication Date
JP2019054448A true JP2019054448A (ja) 2019-04-04

Family

ID=65720256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017178095A Pending JP2019054448A (ja) 2017-09-15 2017-09-15 メモリシステム

Country Status (2)

Country Link
US (1) US10452476B2 (ja)
JP (1) JP2019054448A (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10707899B2 (en) * 2017-08-31 2020-07-07 SK Hynix Inc. Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
US10715182B2 (en) * 2018-07-27 2020-07-14 Innogrit Technologies Co., Ltd. Systems and methods for decoding error correcting codes with self-generated LLR
TWI686804B (zh) * 2019-04-26 2020-03-01 大陸商深圳大心電子科技有限公司 資料讀取方法、儲存控制器與儲存裝置
CN110277131B (zh) * 2019-05-30 2021-03-23 百富计算机技术(深圳)有限公司 基于nand flash存储器的校验方法、终端设备及存储介质
JP2021044750A (ja) 2019-09-12 2021-03-18 キオクシア株式会社 メモリシステム
US11057060B1 (en) * 2020-03-23 2021-07-06 Sage Microelectronics Corporation Method and apparatus for matrix flipping error correction
US20220107738A1 (en) * 2020-10-06 2022-04-07 Kioxia Corporation Read controller and input/output controller
US11513894B2 (en) * 2020-12-28 2022-11-29 Kioxia Corporation Hard decoding methods in data storage devices
KR102783350B1 (ko) * 2022-04-04 2025-03-19 한국전자통신연구원 연판정 복호 방법 및 장치

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5651032A (en) * 1993-11-04 1997-07-22 Kabushiki Kaisha Toshiba Apparatus and method for trellis decoder
US7046694B2 (en) * 1996-06-19 2006-05-16 Digital Radio Express, Inc. In-band on-channel digital broadcasting method and system
US5949796A (en) * 1996-06-19 1999-09-07 Kumar; Derek D. In-band on-channel digital broadcasting method and system
US5968199A (en) * 1996-12-18 1999-10-19 Ericsson Inc. High performance error control decoder
KR100560712B1 (ko) * 1997-06-19 2006-03-16 가부시끼가이샤 도시바 정보데이터 다중화 전송시스템과 그 다중화장치 및 분리장치와,에러정정 부호화장치 및 복호장치
JP3497399B2 (ja) * 1999-01-29 2004-02-16 シャープ株式会社 ビタビ復号器
JP3259725B2 (ja) * 1999-12-20 2002-02-25 日本電気株式会社 ビタビ復号装置
US6460160B1 (en) * 2000-02-14 2002-10-01 Motorola, Inc. Chase iteration processing for decoding input data
JP3923743B2 (ja) * 2000-03-29 2007-06-06 株式会社東芝 復号装置及び復号方法
EP1521414B1 (en) * 2003-10-03 2008-10-29 Kabushiki Kaisha Toshiba Method and apparatus for sphere decoding
EP1684454A4 (en) 2003-11-21 2013-07-03 Panasonic Corp MULTI-ANTENNA RECEIVING DEVICE, RECEIVING METHOD, TRANSMIT DEVICE AND MESSAGE TRANSMISSION SYSTEM
JP4172406B2 (ja) * 2004-03-17 2008-10-29 日本ビクター株式会社 再生装置
JP4840651B2 (ja) * 2006-07-27 2011-12-21 ソニー株式会社 復号装置および復号方法
GB2442785B (en) * 2006-10-10 2008-12-24 Toshiba Res Europ Ltd Wireless communications apparatus
JP2008118327A (ja) * 2006-11-02 2008-05-22 Nec Electronics Corp ビタビ復号方法
US8156397B2 (en) * 2007-08-21 2012-04-10 Broadcom Corporation Method and system for feedback of decoded data characteristics to a decoder in stored data access and decoding operations to assist in additional decoding operations
US8255780B2 (en) * 2009-02-18 2012-08-28 Saankhya Labs Pvt Ltd. Scalable VLIW processor for high-speed viterbi and trellis coded modulation decoding
US8675783B1 (en) * 2010-12-02 2014-03-18 Marvell International Ltd. Low complexity distance metrics for maximum likelihood receivers
US8737541B2 (en) * 2009-10-16 2014-05-27 Nec Corporation Decoding apparatus, decoding method and recording medium
US8341502B2 (en) 2010-02-28 2012-12-25 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8559540B2 (en) * 2010-10-14 2013-10-15 Nokia Corporation Apparatus and method for trellis-based detection in a communication system
US9191256B2 (en) * 2012-12-03 2015-11-17 Digital PowerRadio, LLC Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems
KR102275717B1 (ko) 2015-01-21 2021-07-09 에스케이하이닉스 주식회사 플래시 메모리 시스템 및 그의 동작 방법
US9588772B2 (en) * 2015-02-20 2017-03-07 Kabushiki Kaisha Toshiba Memory controller and decoding method
US9852022B2 (en) * 2015-09-04 2017-12-26 Toshiba Memory Corporation Memory system, memory controller and memory control method

Also Published As

Publication number Publication date
US20190087265A1 (en) 2019-03-21
US10452476B2 (en) 2019-10-22

Similar Documents

Publication Publication Date Title
JP2019054448A (ja) メモリシステム
US9529666B2 (en) Decoding method, memory storage device and memory controlling circuit unit
CN107135006B (zh) 错误校正电路和错误校正方法
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
TWI541820B (zh) 解碼方法、記憶體控制電路單元及記憶體儲存裝置
US10372529B2 (en) Iterative soft information correction and decoding
US10067824B2 (en) Error processing method, memory storage device and memory controlling circuit unit
US11726709B2 (en) Memory control method, memory storage device and memory control circuit unit
US9553612B2 (en) Decoding based on randomized hard decisions
TW201802822A (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US20180074894A1 (en) Memory system
US10923212B2 (en) Memory control method, memory storage device and memory control circuit unit
US11190217B2 (en) Data writing method, memory controlling circuit unit and memory storage device
TW202029202A (zh) 解碼方法、記憶體控制電路單元與記憶體儲存裝置
US11455209B2 (en) Memory system
US11204831B2 (en) Memory system
KR20200124054A (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
TWI607452B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
TWI836877B (zh) 讀取電壓校正方法、記憶體儲存裝置及記憶體控制電路單元
US12132499B2 (en) Storage device syndrome-weight-based error correction system
US12176921B2 (en) Storage device syndrome-weight-based error correction system
CN115910182B (zh) 读取电压校正方法、存储装置及存储器控制电路单元
US12009841B2 (en) Error recovery using adaptive LLR lookup table
US20250078897A1 (en) Memory management method, memory storage device and memory control circuit unit
US10628259B2 (en) Bit determining method, memory control circuit unit and memory storage device

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905