JP2019054448A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- 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
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/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 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/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
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum 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
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/451—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
-
- 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
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
以下の実施形態は、一般的に、メモリシステムに関する。
メモリシステムでは、一般に、記憶するデータを保護するために、符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
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の中間復号語で前記保持している最尤復号語候補を更新し、最終的に保持している前記最尤復号語候補を軟判定出力値として出力し、前記テストパタン復号部は、中間復号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンに対する復号を実行しない。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
最尤復号法を使った軟判定復号では、メモリセルに記憶されている各ビットの(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)等が挙げられる。
図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番目のビットbiのLLRは、以下に式(1)で表すことができる。なお、式(1)において、P(bi=0|y)は、i番目のビットbiの値が“0”である確率を示し、P(bi=1|y)は、i番目のビットbiの値が“1”である確率を示している。
式(1)から求まるLLRがプラスであれば、このLLRはi番目のビットbiの値が“0”であることを示唆しており、マイナスであれば、i番目のビットbiの値が“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のように列挙することができる。
表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のように列挙することができる。
表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のように列挙することができる。
表3から分かるように、訂正可能数tを2とした符号において、フリップ数fでユークリッド距離が3a+2以下の最尤復号語候補を検出するためには、フリップ対象のfビットそれぞれを、LLRの絶対値がa以下のビットに限定すればよいことが分かる。
また、訂正可能数tを2とし、フリップ数を2とした場合には、検出されるエラービットの数が4ビットとなるため、得られるユークリッド距離とエラービットのLLRの絶対値との組み合わせは、以下の表4のように列挙することができる。
表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アルゴリズムが採用された場合について、例を挙げて詳細に説明する。
上述した第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に記載のメモリシステム。
- 前記テストパタンそれぞれがフリップ対象とするビットの軟判定値の絶対値に基づいて、前記テストパタン復号部で検出される符号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンを前記リストから削除するテストパタン削減部をさらに備える請求項1に記載のメモリシステム。
- 前記テストパタンそれぞれがフリップ対象とするビットの軟判定値の絶対値に基づいて、前記リスト生成部が生成した前記リストに含まれる前記テストパタンのうち、前記テストパタン復号部で検出される符号語のユークリッド距離が前記最尤復号語選択部に保持されている前記最尤復号語候補の前記ユークリッド距離よりも短くなる可能性のないテストパタンに対する前記テストパタン復号部による復号をスキップするテストパタン実行判定部をさらに備える請求項1に記載のメモリシステム。
- 前記リスト生成部は、フリップするビットの数ごとに異なるテストパタンのリストを生成し、
前記テストパタン復号部は、前記フリップするビットの数を0とした場合を含む前記フリップするビットの数の小さいリストに含まれるテストパタンから順に復号を実行する
請求項2に記載のメモリシステム。 - 前記テストパタン復号部は、前記リストに含まれる前記テストパタンのうち、信頼度の低いビットをフリップ対象とするテストパタンを優先的に復号する請求項1に記載のメモリシステム。
- 前記ユークリッド距離計算部は、前記リスト生成部でフリップされたビットと前記テストパタン復号部で検出される1つ以上のエラービットに対応する1つ以上の軟判定値の絶対値の総和を前記ユークリッド距離として算出する請求項1に記載のメモリシステム。
- 前記所定のアルゴリズムは、Chase復号アルゴリズムであり、
前記リスト生成部は、前記符号語の訂正可能数をtとし、フリップするビットの数をfとし、aを任意の自然数とした場合であって、前記最尤復号語選択部が(f+t)a+t+1のユークリッド距離の最尤復号語候補を保持している場合、フリップ対象とするビットの軟判定値の絶対値が前記a以下であるテストパタンが含まれない前記リストを生成する
請求項2に記載のメモリシステム。 - 前記所定のアルゴリズムは、Chase復号アルゴリズムであり、
前記テストパタン削減部は、前記符号語の訂正可能数をtとし、フリップするビットの数をfとし、aを任意の自然数とした場合であって、前記最尤復号語選択部が(f+t)a+t+1のユークリッド距離の最尤復号語候補を保持している場合、フリップ対象とするビットの軟判定値の絶対値が前記a以下であるテストパタンを前記リストから削除する
請求項3に記載のメモリシステム。 - 前記所定のアルゴリズムは、Chase復号アルゴリズムであり、
前記テストパタン実行判定部は、前記符号語の訂正可能数をtとし、フリップするビットの数をfとし、aを任意の自然数とした場合であって、前記最尤復号語選択部が(f+t)a+t+1のユークリッド距離の最尤復号語候補を保持している場合、フリップ対象とするビットの軟判定値の絶対値が前記a以下であるテストパタンに対する前記テストパタン復号部による復号をスキップする
請求項4に記載のメモリシステム。 - 前記所定のアルゴリズムは、OSD(Ordered Statistics Decoding)アルゴリズムであり、
前記リスト生成部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合、フリップ対象とするビットの軟判定値の絶対値の和が前記cより大きいテストパタンが含まれない前記リストを生成する
請求項2に記載のメモリシステム。 - 前記所定のアルゴリズムは、OSDアルゴリズムであり、
前記テストパタン削減部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合、フリップ対象とするビットの軟判定値の絶対値の和が前記cより大きいテストパタンを前記リストから削除する
請求項3に記載のメモリシステム。 - 前記所定のアルゴリズムは、OSDアルゴリズムであり、
前記テストパタン実行判定部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合、フリップ対象とするビットの軟判定値の絶対値の和が前記cより大きいテストパタンに対する前記テストパタン復号部による復号をスキップする
請求項4に記載のメモリシステム。 - 前記所定のアルゴリズムは、OSDアルゴリズムであり、
前記リスト生成部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合であって、前記符号語の訂正可能数をtとし、フリップするビットの数をjとし、前記符号語において前記軟判定値の絶対値の最も小さいビットから順に(t+1−j)個のビットの軟判定値の絶対値の和をmとした場合、フリップ対象とするビットの軟判定値の絶対値の和が前記c−mより大きいテストパタンが含まれない前記リストを生成する
請求項2に記載のメモリシステム。 - 前記所定のアルゴリズムは、OSDアルゴリズムであり、
前記テストパタン削減部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合であって、前記符号語の訂正可能数をtとし、フリップするビットの数をjとし、前記符号語において前記軟判定値の絶対値の最も小さいビットから順に(t+1−j)個のビットの軟判定値の絶対値の和をmとした場合、フリップ対象とするビットの軟判定値の絶対値の和が前記c−mより大きいテストパタンを前記リストから削除する
請求項3に記載のメモリシステム。 - 前記所定のアルゴリズムは、OSDアルゴリズムであり、
前記テストパタン実行判定部は、前記最尤復号語選択部に前記ユークリッド距離がcの前記最尤復号語候補が保持されている場合であって、前記符号語の訂正可能数をtとし、フリップするビットの数をjとし、前記符号語において前記軟判定値の絶対値の最も小さいビットから順に(t+1−j)個のビットの軟判定値の絶対値の和をmとした場合、フリップ対象とするビットの軟判定値の絶対値の和が前記c−mより大きいテストパタンに対する前記テストパタン復号部による復号をスキップする
請求項4に記載のメモリシステム。 - 前記最尤復号語選択部から出力された前記軟判定出力値を硬判定値の符号語に変換する硬判定値変換部をさらに備える請求項1に記載のメモリシステム。
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)
| 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)
| 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 |
-
2017
- 2017-09-15 JP JP2017178095A patent/JP2019054448A/ja active Pending
-
2018
- 2018-03-12 US US15/918,021 patent/US10452476B2/en active Active
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 |
