JP2014140111A - コントローラ、情報処理システム、コントローラの制御方法およびプログラム - Google Patents

コントローラ、情報処理システム、コントローラの制御方法およびプログラム Download PDF

Info

Publication number
JP2014140111A
JP2014140111A JP2013008257A JP2013008257A JP2014140111A JP 2014140111 A JP2014140111 A JP 2014140111A JP 2013008257 A JP2013008257 A JP 2013008257A JP 2013008257 A JP2013008257 A JP 2013008257A JP 2014140111 A JP2014140111 A JP 2014140111A
Authority
JP
Japan
Prior art keywords
error correction
level
soft decision
unit
host computer
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
JP2013008257A
Other languages
English (en)
Inventor
Rui Sakai
塁 阪井
Yasushi Fujinami
靖 藤波
Ryoji Iketani
亮志 池谷
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2013008257A priority Critical patent/JP2014140111A/ja
Priority to CN201410016125.3A priority patent/CN103942154B/zh
Priority to US14/156,024 priority patent/US9385754B2/en
Publication of JP2014140111A publication Critical patent/JP2014140111A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • 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/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
    • 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/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding

Landscapes

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

Abstract

【課題】軟判定アルゴリズムを使用する情報処理システムにおいて誤り訂正能力を向上させる。
【解決手段】低レベル誤り訂正部が、所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する。高レベル軟判定誤り訂正部が、低レベル誤り訂正部による誤りの訂正が失敗した場合には所定のアルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する。
【選択図】図8

Description

本技術は、コントローラ、情報処理システム、コントローラの制御方法およびプログラムに関する。詳しくは、軟判定復号アルゴリズムにより誤り訂正を行うコントローラ、情報処理システム、コントローラの制御方法およびプログラムに関する。
近年の情報処理システムにおいては、不揮発性メモリ(NVM:Non-Volatile memory)やHDD(Hard Disk Drive)がストレージとして用いられることがある。これらのストレージにおいては、記録したデータが破損して正しく読み出せなくなることがある。このため、情報処理システムは、記録する対象のデータに基づいて誤り検出訂正符号(ECC:Error detection and Correction Code)を生成してストレージに記録することが多い。情報処理システムは、データの再生時に、このECCに基づいてデータにおける誤りの検出および訂正を行うことができる。
ECCに基づいて誤りを訂正する際には、軟判定復号アルゴリズムが用いられることがある。この軟判定復号アルゴリズムは、データにおけるビットが「1」である確率または「0」である確率に応じた軟判定値に基づいて誤りを訂正するアルゴリズムである。これに対して、データにおけるビットが「1」または「0」のいずれの値であるかを示す硬判定値に基づいて誤りを訂正するアルゴリズムは、硬判定復号アルゴリズムと呼ばれる。
軟判定復号アルゴリズムは、硬判定復号アルゴリズムと比較して誤り訂正能力が高いが、処理が複雑であるために回路規模や処理時間が増大してしまう。そこで、軟判定復号アルゴリズムの一部を簡略化して回路規模等の増大を抑制した装置が提案されている(例えば、特許文献1参照。)。具体的には、この装置は、変数ノードおよび検査ノードの一方で生成した軟判定値を他方に受け渡して誤り訂正を行う処理を繰り返す繰返し方式の軟判定復号アルゴリズムを使用し、その検査ノードでの処理を簡略化している。
特開2010−28408号公報
しかしながら、上述の技術では、誤り訂正能力を向上させることが困難である。符号化においてデータに付加するパリティの情報量を大きくするほど、言い換えれば、符号化率を低くするほど誤り訂正能力が高くなるが、記憶領域の使用効率が低下してしまう。符号化率を変えずに誤り訂正能力を向上させるには、より誤り訂正能力の高いアルゴリズムを使用する方法や、繰返し方式における繰返し回数を多くする方法を用いればよい。ところが、前者の方法では、誤り訂正能力が高いアルゴリズムほど処理が複雑となるために、回路規模や処理時間が増大してしまうという問題がある。また、繰返し回数を多くする後者の方法では、処理時間が長くなってしまうという問題がある。したがって、符号化率を変えずに、回路規模や処理時間の増大を抑制しつつ、誤り訂正能力を向上させることが困難である。
本技術はこのような状況に鑑みて生み出されたものであり、軟判定アルゴリズムを使用する情報処理システムにおいて誤り訂正能力を向上させることを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正部と、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して上記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正部とコントローラ、および、その制御方法ならびに当該方法をコンピュータに実行させるためのプログラムである。これにより、低レベル誤り訂正部による誤りの訂正が失敗した場合には高レベルアルゴリズムを使用して上記符号語の誤りが訂正されるという作用をもたらす。
また、この第1の側面において、上記符号語は、複数の符号要素を含み、上記符号語をメモリから読み出して上記低レベル誤り訂正部に供給するリード処理部と、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記メモリから上記符号語を読み出す符号語取得処理を複数回実行する符号語取得部と、上記符号語取得部により読み出された符号語の各々に基づいて上記符号要素が特定の値となる確率に応じた軟判定値を上記符号要素ごとに生成して上記符号要素の各々の値を上記軟判定値に置き換えた上記符号語を上記高レベル軟判定誤り訂正部に供給する軟判定値生成部とをさらに具備してもよい。これにより、低レベル誤り訂正部による誤りの訂正が失敗した場合には、符号語を読み出す符号語取得処理が複数回実行されて、読み出された符号語の各々に基づいて軟判定値が生成されるという作用をもたらす。
また、この第1の側面において、上記軟判定値生成部は、上記符号語取得部により上記特定の値が読み出された頻度を上記符号要素ごとに求めて当該頻度に応じて上記軟判定値を生成してもよい。これにより、特定の値が読み出された頻度に応じて軟判定値が生成されるという作用をもたらす。
また、この第1の側面において、上記符号要素の値を判断するための閾値を所定の範囲内で上記符号語取得処理が実行されるたびに変更する閾値制御部をさらに具備し、上記軟判定値生成部は、上記特定の値の符号要素が読み出されたときの上記閾値のうち最大値または最小値に応じて上記軟判定値を生成してもよい。これにより特定の値の符号要素が読み出されたときの閾値のうち最大値または最小値に応じて軟判定値が生成されるという作用をもたらす。
また、この第1の側面において、上記軟判定値生成部は、上記符号語取得処理が複数回実行されてから上記軟判定値を生成し、上記高レベル軟判定誤り訂正部は、上記軟判定値が生成されると上記高レベル軟判定誤り訂正処理を実行してもよい。これにより、符号語取得処理が複数回実行されてから軟判定値が生成されて、高レベル軟判定誤り訂正処理が実行されるという作用をもたらす。
また、この第1の側面において、上記軟判定値生成部は、上記符号語取得処理が実行されるたびに上記軟判定値を生成し、上記高レベル軟判定誤り訂正部は、上記軟判定値が生成されるたびに上記高レベル軟判定誤り訂正処理を実行してもよい。これにより、符号語取得処理が実行されるたびに軟判定値が生成されて、高レベル軟判定誤り訂正処理が実行されるという作用をもたらす。
また、この第1の側面において、上記低レベル誤り訂正部は、上記符号要素が特定の値となる確率に応じた軟判定値を上記符号要素ごとに生成して上記符号要素の各々の値を上記軟判定値に置き換えた上記符号語を上記高レベル軟判定誤り訂正部に供給してもよい。これにより、上記低レベル誤り訂正部が生成した軟判定値が上記高レベル軟判定誤り訂正部に供給されるという作用をもたらす。
また、本技術の第2の側面は、記憶部から前記符号語を読み出すことを指示するリードコマンドを発行するホストコンピュータと、前記リードコマンドに従って前記記憶部から前記符号語を読み出すリード処理部と、所定のアルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正部と、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正部とを具備する情報処理システムである。これにより、低レベル誤り訂正部による誤りの訂正が失敗した場合には高レベルアルゴリズムを使用して上記符号語の誤りが訂正されるという作用をもたらす。
また、この第2の側面において、上記ホストコンピュータは、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記高レベル軟判定誤り訂正処理の開始を指示する訂正開始コマンドを含む1つ以上のコマンドの実行順序を上記高レベル軟判定誤り訂正処理の処理時間に基づいて決定し、上記実行順序で上記コマンドの各々を上記高レベル軟判定誤り訂正部に供給し、上記高レベル軟判定誤り訂正部は、上記低レベル誤り訂正部による誤りの訂正が失敗し、かつ、上記訂正開始コマンドが供給されたときに上記高レベル軟判定誤り訂正処理を開始してもよい。これにより、低レベル誤り訂正部による誤りの訂正が失敗し、かつ、訂正開始コマンドが供給されたときに高レベル軟判定誤り訂正処理が実行されるという作用をもたらす。
また、この第2の側面において、上記ホストコンピュータは、上記低レベル誤り訂正部による誤りの訂正が失敗し、上記符号語を読み出す処理に対する割込みが発生した場合には上記高レベル軟判定誤り訂正処理の中断を指示するアボートコマンドを発行し、上記高レベル軟判定誤り訂正部は、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記高レベル軟判定誤り訂正処理を実行し、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記アボートコマンドに従って上記実行していた高レベル軟判定誤り訂正処理を中断してもよい。これにより、符号語を読み出す処理に対する割込みが発生した場合に高レベル軟判定誤り訂正処理が中断されるという作用をもたらす。
また、この第2の側面において、上記ホストコンピュータは、上記符号語の種類に基づいて上記高レベル軟判定誤り訂正処理を実行するか否かを示すイネーブル信号をさらに生成し、上記高レベル軟判定誤り訂正部は、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記イネーブル信号に従って上記高レベル軟判定誤り訂正処理を実行してもよい。これにより、低レベル誤り訂正部による誤りの訂正が失敗した場合にはイネーブル信号に従って高レベル軟判定誤り訂正処理が実行されるという作用をもたらす。
また、この第2の側面において、上記ホストコンピュータは、上記符号語の種類に基づいて複数の上記高レベルアルゴリズムのうちのいずれかを指定し、上記高レベル軟判定誤り訂正部は、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記指定された高レベルアルゴリズムを使用して上記符号語の誤りを訂正してもよい。これにより、低レベル誤り訂正部による誤りの訂正が失敗した場合には指定された高レベルアルゴリズムを使用して符号語の誤りが訂正されるという作用をもたらす。
また、本技術の第3の側面は、記憶部から上記符号語を読み出すことを指示するリードコマンドを発行するホストコンピュータと、上記リードコマンドに従って上記記憶部から上記符号語を読み出すリード処理部と、所定のアルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正部と、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して上記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正部と
を具備する情報処理システムである。
また、この第3の側面において、上記ホストコンピュータは、上記符号語の種類に基づいて複数の上記高レベルアルゴリズムのうちのいずれかを指定し、上記高レベル軟判定誤り訂正部は、上記低レベル誤り訂正部による誤りの訂正が失敗した場合には上記指定された高レベルアルゴリズムを使用して上記符号語の誤りを訂正してもよい。これにより、コントローラは、上記符号語出力コマンドに従って符号語を上記記憶部から読み出して低レベル誤り訂正処理を実行せずに上記ホストコンピュータに出力するという作用をもたらす。
上記コントローラは、上記低レベル誤り訂正処理において上記符号語の誤りの訂正に成功したか否かを示す訂正成否情報を生成して上記ホストコンピュータに出力し、上記ホストコンピュータは、上記訂正成否情報に基づいて上記コントローラによる誤りの訂正が失敗したか否かを判断してもよい。これにより、ホストコンピュータにおいて訂正成否情報に基づいて上記コントローラによる誤りの訂正が失敗したか否かが判断されるという作用をもたらす。
本技術によれば、軟判定アルゴリズムを使用する情報処理システムにおいて誤り訂正能力を向上させることができるという優れた効果を奏し得る。
第1の実施の形態における情報処理システムの一構成例を示すブロック図である。 第1の実施の形態におけるホストコンピュータの一構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第1の実施の形態における誤り訂正符号のデータ構成の一例を示す図である。 第1の実施の形態における検査行列の一例を示す図である。 第1の実施の形態における誤り訂正符号の生成方法の一例を説明するための図である。 第1の実施の形態における誤り訂正部の一構成例を示すブロック図である。 第1の実施の形態における低レベル誤り訂正部の一構成例を示すブロック図である。 第1の実施の形態における低レベル誤り訂正回路の一構成例を示す図である。 第1の実施の形態における変数ノードと検査ノードとの間のメッセージ交換の一例を示す図である。 第1の実施の形態における高レベル軟判定誤り訂正部の一構成例を示す図である。 第1の実施の形態におけるホストコンピュータの動作の一例を示すフローチャートである。 第1の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第1の実施の形態におけるリード処理の一例を示すフローチャートである。 第1の実施の形態における低レベル誤り訂正処理の一例を示すフローチャートである。 第1の実施の形態における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。 第1の実施の形態の第1の変形例における誤り訂正部の一構成例を示すブロック図である。 第1の実施の形態の第1の変形例における低レベル誤り訂正部の一例を示すブロック図である。 第1の実施の形態の第1の変形例における高レベル軟判定誤り訂正部の一例を示すブロック図である。 第1の実施の形態の第2の変形例における誤り訂正部の一構成例を示すブロック図である。 第1の実施の形態の第2の変形例におけるホストコンピュータの動作の一例を示すフローチャートである。 第1の実施の形態の第2の変形例におけるリード処理の一例を示すフローチャートである。 第2の実施の形態における誤り訂正部の一構成例を示すブロック図である。 第2の実施の形態におけるホストコンピュータの動作の一例を示すフローチャートである。 第2の実施の形態におけるリード処理の一例を示すフローチャートである。 第2の実施の形態の第1の変形例における誤り訂正部の一構成例を示すブロック図である。 第2の実施の形態の第1の変形例におけるホストコンピュータの動作の一例を示すフローチャートである。 第2の実施の形態の第1の変形例における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。 第2の実施の形態の第2の変形例における誤り訂正部の一構成例を示すブロック図である。 第2の実施の形態の第2の変形例におけるホストコンピュータの動作の一例を示すフローチャートである。 第2の実施の形態の第2の変形例におけるリード処理の一例を示すフローチャートである。 第2の実施の形態の第3の変形例におけるホストコンピュータの動作の一例を示すフローチャートである。 第2の実施の形態の第3の変形例における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。 第3の実施の形態におけるホストコンピュータの一構成例を示すブロック図である。 第3の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第3の実施の形態における誤り訂正部の一構成例を示すブロック図である。 第3の実施の形態におけるホストコンピュータの動作の一例を示すフローチャートである。 第3の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第3の実施の形態におけるリード処理の一例を示すフローチャートである。 第4の実施の形態におけるホストコンピュータの一構成例を示すブロック図である。 第4の実施の形態におけるリードデータおよび軟判定値の一例を示す図である。 第4の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第4の実施の形態におけるホストコンピュータの動作の一例を示すフローチャートである。 第4の実施の形態における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。 第4の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第4の実施の形態におけるリード処理の一例を示すフローチャートである。 第4の実施の形態の変形例におけるホストコンピュータの動作の一例を示すフローチャートである。 第5の実施の形態におけるホストコンピュータの一構成例を示すブロック図である。 第5の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第5の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。 第5の実施の形態における軟判定値の生成方法を説明するための図である。 第5の実施の形態におけるホストコンピュータの動作の一例を示すフローチャートである。 第5の実施の形態におけるリード処理の一例を示すフローチャートである。 第5の実施の形態の変形例におけるホストコンピュータの動作の一例を示すフローチャートである。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(メモリコントローラが複数の軟判定復号アルゴリズムにより誤り訂正を行う例)
2.第2の実施の形態(ホストコンピュータの制御に従ってメモリコントローラが誤り訂正を行う例)
3.第3の実施の形態(ホストコンピュータが軟判定復号アルゴリズムにより誤り訂正を行う例)
4.第4の実施の形態(同一の閾値で読み出したデータから軟判定値を生成して誤り訂正を行う例)
5.第5の実施の形態(異なる閾値で読み出したデータから軟判定値を生成して誤り訂正を行う例)
<1.第1の実施の形態>
[情報処理システムの構成例]
図1は、第1の実施の形態における情報処理システムの一構成例を示すブロック図である。この情報処理システムは、ホストコンピュータ100およびストレージ200を備える。
ホストコンピュータ100は、情報処理システム全体を制御するものである。具体的には、ホストコンピュータ100は、コマンドおよびライトデータを生成してストレージ200に信号線109を介して供給する。また、ホストコンピュータ100は、ストレージ200からリードデータを受け取る。ここで、コマンドは、ストレージ200を制御するためのものであり、例えば、ライトデータの書込みを指示するライトコマンドや、リードデータの読出しを指示するリードコマンドを含む。
ストレージ200は、メモリコントローラ300および不揮発性メモリ400を備える。このメモリコントローラ300は、不揮発性メモリ400を制御するものである。メモリコントローラ300は、ホストコンピュータ100からライトコマンドおよびライトデータを受け取った場合には、そのライトデータから誤り検出訂正符号(ECC:Error detection and Correction Code)を生成する。具体的には、メモリコントローラ300は、ライトデータを、そのライトデータおよびパリティからなる符号語に変換(すなわち、符号化)する。メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化したデータを書き込む。
また、ホストコンピュータ100からリードコマンドを受け取った場合、メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化されたデータを読み出す。そして、メモリコントローラ300は、符号化されたデータを、符号化前の元のデータに変換(すなわち、復号)する。復号においてメモリコントローラ300は、ECCに基づいてデータにおける誤りの検出および訂正を行う。メモリコントローラ300は、訂正したデータをホストコンピュータ100に供給する。
なお、メモリコントローラ300は、特許請求の範囲に記載のコントローラの一例である。
不揮発性メモリ400は、メモリコントローラ300の制御に従って、データを記憶するものである。例えば、ReRAMが不揮発性メモリ400として用いられる。なお、ReRAMの代わりに、フラッシュメモリ、PCRAM、および、MRAMなどを不揮発性メモリ400として用いてもよい。また、メモリコントローラ300は、データを不揮発性メモリ400に記録しているが、データを記録することができる媒体や装置であれば、不揮発性メモリ400以外の記録媒体や記憶装置にデータを記録してもよい。そのような記憶装置の一例として、ハードディスクドライブ(HDD:Hard Disk Drive)などを想定することができる。
[ホストコンピュータの構成例]
図2は、第1の実施の形態におけるホストコンピュータ100の一構成例を示すブロック図である。このホストコンピュータ100は、ROM(Read Only Memory)102、RAM(Random Access Memory)103およびCPU(Central Processing Unit)104を備える。また、ホストコンピュータ100は、ユーザインターフェース101、バス105およびストレージインターフェース106を備える。
ユーザインターフェース101は、情報処理システムと、その利用者とが互いに、入力データや出力データをやりとりするためのインターフェースである。ROM102は、CPU104が実行するプログラム等を記憶するものである。RAM103は、CPU104が実行する処理において必要となるデータを一時的に保持するものである。CPU104は、ホストコンピュータ100全体を制御するものである。バス105は、ユーザインターフェース101、ROM102、RAM103、CPU104およびストレージインターフェース106が相互にデータを交換するための共通の経路である。ストレージインターフェース106は、ホストコンピュータ100とストレージ200とがデータやコマンドを相互に交換するためのインターフェースである。
[メモリコントローラの構成例]
図3は、第1の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。このメモリコントローラ300は、ホストインターフェース301、RAM302、CPU303、ECC処理部304、ROM305、バス306および不揮発性メモリインターフェース307を備える。
ホストインターフェース301は、メモリコントローラ300がホストコンピュータ100との間でデータやコマンドを相互に交換するものである。RAM302は、CPU303が実行する処理において必要となるデータを一時的に保持するものである。
ECC処理部304は、ライトデータを符号化し、また、リードデータを復号するものである。ライトデータの符号化においてECC処理部304は、複数のライトデータの各々にパリティを付加することにより所定の単位で符号化する。ここで、符号化は、軟判定復号アルゴリズムにより誤りを訂正することが可能なアルゴリズムにより行われる。また、所定の単位で符号化された個々のデータを以下、「符号語」と称する。そして、ECC処理部304は、符号化したライトデータを不揮発性メモリ400にバス306を介して供給する。
また、ECC処理部304は、符号化されたリードデータを元のデータに復号する。この復号において、ECC処理部304は、軟判定復号アルゴリズムを使用して符号語の誤りを訂正する。ECC処理部304は、誤りの訂正が失敗したか否かを示す訂正正否情報をCPU303にバス306を介して供給する。また、誤りの訂正に成功した場合、ECC処理部304は、復号したデータをホストコンピュータ100にバス306を介して供給する。
CPU303は、メモリコントローラ300全体を制御するものである。また、CPU303は、誤り訂正が失敗したことを示す訂正成否情報をECC処理部304から受け取った場合には、ECC処理部304が使用したアルゴリズムよりも誤り訂正能力の高い軟判定復号アルゴリズムを使用して、その符号語の誤りを訂正する。
ROM305は、CPU303が実行するプログラム等を記憶するものである。例えば、ROM305には、軟判定復号アルゴリズムにより誤りを訂正する処理を実行するためのプログラムが記憶される。
バス306は、ホストインターフェース301、RAM302、CPU303、ECC処理部304、ROM305および不揮発性メモリインターフェース307が相互にデータを交換するための共通の経路である。不揮発性メモリインターフェース307は、メモリコントローラ300が不揮発性メモリ400との間でデータやコマンドを相互に交換するためのインターフェースである。
図4は、第1の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。このメモリコントローラ300は、符号化部310、ライト処理部320、リード処理部330および誤り訂正部340を備える。図4における符号化部310は、図3におけるECC処理部304により実現される。また、図4におけるライト処理部320およびリード処理部330は、図3におけるホストインターフェース301、RAM302、CPU303、ROM305、バス306および不揮発性メモリインターフェース307などにより実現される。図4における誤り訂正部340は、図3におけるRAM302、CPU303、ECC処理部304およびROM305などにより実現される。
符号化部310は、符号語にライトデータを符号化するものである。この符号化において、ライトデータは、軟判定復号アルゴリズムにより誤りが訂正される符号に符号化される。具体的には、ライトデータは、LDPC(低密度パリティ検査:Low Density Parity Check)符号などに符号化される。符号化部310は、生成した符号語をライト処理部320に供給する。
なお、符号化部310は、LDPC符号に符号化しているが、軟判定復号アルゴリズムにより誤りを訂正することができる誤り訂正符号であれば、ライトデータをLDPC符号以外の符号に符号化してもよい。例えば、符号化部310は、畳込み符号やターボ符号に符号化してもよい。
ライト処理部320は、ライトコマンドに従って、符号化されたライトデータを不揮発性メモリ400に書き込む処理を実行するものである。ライト処理部320は、ホストコンピュータ100からライトコマンドを受け取ると、符号語に符号化されたライトデータを符号化部310から取得し、不揮発性メモリ400にアクセスして、そのコマンドにより指定されたメモリアドレスに符号語を書き込む。
リード処理部330は、リードコマンドに従って、リードデータを不揮発性メモリ400から読み出す処理を実行するものである。リード処理部330は、ホストコンピュータ100からリードコマンドを受け取ると、不揮発性メモリ400にアクセスして、そのコマンドにより指定されたメモリアドレスから符号語に相当するデータをリードデータとして読み出す。ここで、符号語における各ビットの値は、「0」または「1」の値、すなわち硬判定値により読み出されるものとする。リード処理部330は、そのリードデータを誤り訂正部340に供給する。
誤り訂正部340は、リードデータ(符号語に相当するデータ)の誤りを訂正するものである。誤り訂正部340は、まず、複数の復号アルゴリズムのうち、誤り訂正能力の低いアルゴリズム(以下、「低レベルアルゴリズム」と称する。)を使用してリードデータの誤りを訂正する。低レベルアルゴリズムによる誤りの訂正に失敗した場合には、誤り訂正部340は、低レベルアルゴリズムよりも誤り訂正能力の高い軟判定復号アルゴリズム(以下、「高レベルアルゴリズム」と称する)を使用してリードデータの誤りを訂正する。高レベルアルゴリズムによる誤りの訂正が成功した場合に誤り訂正部340は、訂正した符号語からパリティを除いた元のデータ(kビット)をホストコンピュータ100に出力する。また、誤り訂正部340は、訂正が成功したか否かを示す情報を記載したステータスを生成してホストコンピュータ100に出力する。
ここで、軟判定復号アルゴリズムの誤り訂正能力の高さは、BER(Bit Error Rate)などのデータの誤り率や、CNR(Carrier to Noise Ratio)などの通信品質により表わされる。例えば、軟判定復号アルゴリズムを使用した場合に、誤り率(BERなど)を一定以下に抑制するために必要な通信品質(CNRなど)が低いほど、その軟判定復号アルゴリズムの誤り訂正能力は高い。あるいは、一定の通信品質における誤り率が低いほど、軟判定復号アルゴリズムの誤り訂正能力は高い。
図5は、第1の実施の形態における符号語のデータ構成の一例を示す図である。図5に示すように、符号化部310は、kビットのデータの各々をnビットの符号語に符号化する。ここで、kは整数であり、nは、kより大きな整数である。それぞれの符号語は、kビットのデータと、n−kビットのパリティとを含む。これらの符号語の各々が誤り検出訂正符号(ECC)である。このように、符号語が、符号化対象のデータをそのまま含み、データとパリティとに符号語を容易に分離することができる符号は、組織符号と呼ばれる。なお、データを非組織符号に符号化してもよい。
図6は、第1の実施の形態における誤り訂正符号のデータ構成の一例を示す図である。LDPC符号化方式においては、誤り訂正部340により検査行列Hが生成される。この検査行列Hは、行および列における「1」の個数(以下、「重み」と称する。)が一定の検査行列である。行および列の重みは、検査行列全体における「1」の個数が疎となるように設定される。図5におけるaは、検査行列Hの重みの一例を示す図である。この例では、列の各々の重みは「3」であり、行の各々の重みは「6」である。図6におけるbは、図5におけるaに示した重みを持つ検査行列Hの一例を示す図である。
図7は、第1の実施の形態における生成行列の使用方法を説明するための図である。図77におけるaは、第1の実施の形態における生成行列Gの一例を示す図である。符号化部310は、図6において例示された検査行列Hから次式を使用して、図7におけるaに例示する生成行列Gを生成する。なお、符号化は、次式を要する検査行列に限定されるものではない。例えば、LDGM(Low Density Generation matrix)構造の検査行列を用いて符号化を行ってもよい。
G×H=0
検査行列Hの列数がnで行数がn−kである場合、その検査行列Hから、図7におけるaに示すように、列数がnで行数がkの生成行列Gが生成される。図7におけるbは、生成行列およびデータから符号語を生成する計算式の一例である。図7におけるbに示すように、生成行列Gと、符号化対象のデータとの積により、符号語が生成される。この符号語は、kビットのデータと、n−kビットのパリティとを含む。なお、符号化部310が生成行列Gを生成する構成としているが、この構成に限定されない。予め生成しておいた生成行列Gを、ROMなどの生成行列記憶部に記憶しておき、符号化部310が生成行列記憶部から生成行列を読み出す構成としてもよい。
[誤り訂正部の構成例]
図8は、第1の実施の形態における誤り訂正部340の一構成例を示すブロック図である。この誤り訂正部340は、リードデータバッファ350、低レベル誤り訂正部360、誤り訂正プログラム記憶部370および高レベル軟判定誤り訂正部380を備える。
リードデータバッファ350は、リード処理部330により読み出されたリードデータを保持するものである。
低レベル誤り訂正部360は、高レベル軟判定誤り訂正部380におけるアルゴリズムよりも誤り訂正能力の低い復号アルゴリズム(低レベルアルゴリズム)を使用してリードデータの誤りを訂正するものである。低レベルアルゴリズムとして、例えば、軟判定復号アルゴリズムであるMin−Sumアルゴリズムが用いられる。なお、低レベルアルゴリズムは、軟判定復号アルゴリズムに限定されない。例えば、リードデータの誤りを訂正することができる復号アルゴリズムであれば、Bit−flippingアルゴリズムなど、軟判定アルゴリズム以外の復号アルゴリズムであってもよい。低レベル誤り訂正部360は、リードデータバッファ350からリードデータを読み出し、低レベルアルゴリズムを使用してリードデータの誤りを訂正する。誤りの訂正に成功した場合には、低レベル誤り訂正部360は、訂正したリードデータからパリティを除いた元のデータ(kビット)をホストコンピュータ100へ出力する。また、低レベル誤り訂正部360は、訂正に成功したか否かを示す訂正成否情報を高レベル軟判定誤り訂正部380に供給する。
誤り訂正プログラム記憶部370は、高レベルアルゴリズムにより誤りを訂正する処理を実行するための誤り訂正プログラムを記憶するものである。
高レベル軟判定誤り訂正部380は、低レベル誤り訂正部360におけるアルゴリズムよりも誤り訂正能力の高い軟判定復号アルゴリズム(高レベルアルゴリズム)を使用してリードデータの誤りを訂正するものである。高レベルアルゴリズムとして、例えば、BP(Brief-Propagation)アルゴリズムが用いられる。BPアルゴリズムは、サムプロダクトアルゴリズムとも呼ばれる。高レベル軟判定誤り訂正部380は、訂正に失敗したことを示す訂正成否情報を低レベル誤り訂正部360から受け取ると、リードデータバッファ350から、訂正に失敗したリードデータを読み出す。高レベル軟判定誤り訂正部380は、誤り訂正プログラム記憶部370から、誤り訂正プログラムを読み出して実行することにより、リードデータの誤りの訂正を開始する。誤りの訂正に成功した場合に高レベル軟判定誤り訂正部380は、訂正したリードデータからパリティを除いた元のデータ(kビット)をホストコンピュータ100へ出力する。また、高レベル軟判定誤り訂正部380は、訂正が成功したか否かを示す情報を記載したステータスを生成してホストコンピュータ100に出力する。
前述したように、リードデータ内のそれぞれのビットの値は硬判定値であるから、低レベル誤り訂正部360および高レベル軟判定誤り訂正部380には硬判定値が入力される。
なお、低レベル誤り訂正部360は、高レベル軟判定誤り訂正部380におけるアルゴリズムよりも誤り訂正能力の低い軟判定復号アルゴリズムであれば、Min−Sumアルゴリズム以外のアルゴリズムを使用して誤りを訂正することができる。また、高レベル軟判定誤り訂正部380は、低レベル誤り訂正部360におけるアルゴリズムよりも誤り訂正能力の高い軟判定復号アルゴリズムであれば、BPアルゴリズム以外のアルゴリズムを使用して誤りを訂正することができる。
[低レベル誤り訂正部の構成例]
図9は、第1の実施の形態における低レベル誤り訂正部360の一構成例を示すブロック図である。この低レベル誤り訂正部360は、低レベル誤り訂正回路361および訂正成否判定部366を備える。
低レベル誤り訂正回路361は、軟判定復号アルゴリズムを使用してリードデータの誤りを訂正する回路である。低レベル誤り訂正回路361においては、例えば、軟判定復号アルゴリズムとして、Min−Sumアルゴリズムが使用される。Min−Sumアルゴリズムが用いられる場合、低レベル誤り訂正回路361は、変数ノード処理部362および検査ノード処理部364を備える。
変数ノード処理部362は、検査ノード処理部364におけるパリティ検査の結果に基づいてリードデータにおける誤りの検出および訂正を行うものである。また、検査ノード処理部364は、リードデータに対してパリティ検査を行うものである。
具体的には、変数ノード処理部362は、リードデータをリードデータバッファ350から取得し、そのリードデータに基づいてメッセージu0_iLを生成する。このメッセージu0_iLは、訂正前の符号語におけるi番目の符号要素(例えば、ビット)の値の「0」らしさ、または、「1」らしさの度合い(すなわち、尤度)を示す実数の変数である。また、「i」は、0乃至n−1(nは符号語の符号長)の整数である。ここで、この符号要素は、符号語を構成する最小単位であり、シンボルとも呼ばれる。
変数ノード処理部362は、メッセージu0_jLと検査ノード処理部364におけるパリティ検査の結果とに基づいてメッセージviLを生成して、検査ノード処理部364に出力する。このメッセージviLは、訂正後の符号語におけるiL番目の符号要素(例えば、ビット)の値の尤度を示す実数の変数である。例えば、対数尤度比Λ(riL)がメッセージu0_iLとして生成される。対数尤度比Λ(riL)は、符号語のiL番目のビットの値が「0」である確率と、「1」である確率との比の対数であり、例えば、次式により求められる。
Figure 2014140111
上式において、rは受け取ったリードデータであり、P(riL=1|r)は、そのリードデータにおいてiL番目のビットriLの値が「1」である確率であり、P(riL=0|r)は、その値が「0」である確率である。
なお、メッセージu0_iLは、尤度を示す値であれば、対数尤度比に限定されない。例えば、riLの値が「1」または「0」である確率をメッセージu0_iLとしてもよい。他のメッセージ(viLやujLなど)についても同様である。低レベル誤り訂正回路361において、これらのメッセージは、例えば、符号付きの固定小数点型データにより表わされる。
検査ノード処理部364は、メッセージviLに基づいてパリティ検査を行い、その結果に基づいてメッセージujLを生成して変数ノード処理部362に出力する。ここで、「jL」は、0乃至(n−k)−1の整数である。また、kは符号化対象のデータのサイズである。
変数ノード処理部362と検査ノード処理部364とは所定の終了条件を満たすまでメッセージを交換する。例えば、一定回数メッセージを交換したときや、対数尤度比の絶対値が閾値を越えたときに終了条件を満たしたと判断される。
終了条件が満たされると、変数ノード処理部362は、受け取ったメッセージujLに基づいて、訂正結果であるメッセージviL'を生成して訂正成否判定部366に出力する。
訂正成否判定部366は、誤りの訂正が成功したか否かを判定するものである。訂正成否判定部366は、例えば、検査行列の各行におけるパリティチェックの全てに成功したのであれば、訂正に成功したと判断する。一方、訂正成否判定部366は、いずれかのパリティチェックに失敗したのであれば、訂正に失敗したと判断する。なお、訂正成否判定部366は、メッセージviL'の絶対値の全てが所定の閾値を超えているか否かにより、訂正の成否を判定してもよい。訂正に成功した場合に訂正成否判定部366は、メッセージviL'に基づいて、誤りを訂正した符号語を生成し、その符号語からパリティを除いた元のデータ(kビット)をホストコンピュータ100へ出力する。また、訂正成否判定部366は、訂正に成功したか否かを示す訂正成否情報を高レベル軟判定誤り訂正部380に供給する。
図10は、第1の実施の形態における低レベル誤り訂正回路361の一構成例を示す図である。低レベル誤り訂正回路361において、変数ノード処理部362は、符号語のビット数(すなわち、検査行列Hの列数)と同数の変数ノード363を備える。また、検査ノード処理部364は、パリティのビット数(すなわち、検査行列Hの行数)と同数の検査ノード365を備える。そして、検査行列Hの成分の値に基づいて変数ノード363および検査ノード365が接続される。具体的には、jL行iL列の成分の値が「1」であれば、jL番目の検査ノード365とiL番目の変数ノード363とが接続され、「0」であれば、それらのノードは接続されない。
iL番目の変数ノード363は、検査ノード365におけるパリティ検査の結果に基づいてリードデータにおけるiL番目のビットの誤りの検出および訂正を行うものである。jL番目の検査ノード365は、検査行列HのjL番目の行に対応するパリティ検査を行うものである。
具体的には、iL番目の変数ノード363は、リードデータのiL番目のビットをリードデータバッファ350から取得し、そのビットの値に基づいて、メッセージu0_iLを生成する。メッセージu0_iLを対数尤度比とする場合、iL番目のビットの値が「1」であれば、正の所定値がu0_iLに設定される。一方、iL番目のビットの値が「0」であれば、負の所定値がu0_iLに設定される。
メッセージu0_iLを生成した後、変数ノード363は、接続された検査ノード365の各々からのメッセージujLを初期値(例えば、「0」)に設定する。そして、変数ノード363は、次式を使用して、メッセージviLを算出し、接続された検査ノード365のいずれかに出力する。
Figure 2014140111
上式において、dは、検査行列Hの列における「1」の値の個数(すなわち、重み)である。
検査ノード365は、接続された変数ノード363の各々からメッセージviLを受け取ると、次式を使用してメッセージujLを算出し、接続された変数ノード363のいずれかに出力する。
Figure 2014140111
上式において、min|viL|は、viLの中の最小値を示す。また、sign(x)は、入力値xに対し、x≧0であれば「1」の値を返し、x<0であれば「−1」の値を返す関数である。dは、検査行列Hの行における「1」の値の個数(すなわち、重み)である。この式では対数演算が用いられない。一方、BPアルゴリズムでは対数演算を要する。このため、BPアルゴリズムを使用する回路と比較して、低レベル誤り訂正部360の回路規模は比較的小さくすることができる。
変数ノード363および検査ノード365は、所定の終了条件を満たすまで、式2および式3などを使用してメッセージviLおよびujLを生成し、それらのメッセージを交換する。
終了条件が満たされた場合には、変数ノード363は、次式を使用して、メッセージviL'を生成して訂正成否判定部366に供給する。訂正成否判定部366は、このメッセージviL'に基づいて、符号語のiL番目のビットの値を決定する。訂正成否判定部366は、例えば、viL'≧0であればiL番目の値を「1」に決定し、viL'<0であれば、「0」に決定する。これにより、リードデータの誤りが訂正される。
Figure 2014140111
なお、変数ノード363は、式2の演算を、式4と次の式5とに分けて実行することもできる。この場合、変数ノード363は、終了条件が満たされていない場合には式5により算出したメッセージviLを検査ノード365に出力する。そして、終了条件が満たされた場合には変数ノード363は、式5により算出したメッセージviL'を訂正成否判定部366に供給する。
iL=viL'−udv ・・・式5
上式において、udvは、変数ノード363に接続されたd個目の検査ノード365からのメッセージである。
図11は、第1の実施の形態における変数ノード363と検査ノード365との間のメッセージ交換の一例を示す図である。図11におけるaは、変数ノード363がメッセージviLを生成するときのメッセージ交換の一例を示す図である。例えば、1番目の変数ノードV1と、1、3および5番目の検査ノードU1、U3およびU5とが接続されているものとする。この場合、変数ノードV1は、読み出されたリードデータに基づいてメッセージu0_1を生成し、検査ノードU1およびU3からメッセージuおよびuを受け取ると、これらのメッセージに基づいてメッセージvを生成し、検査ノードU5に出力する。
図11におけるbは、検査ノード365がメッセージuを生成するときのメッセージ交換の一例を示す図である。例えば、1番目の検査ノードU1と、1、3、5、6、7および9番目の変数ノードV1、V3、V5、V6、V7およびV9とが接続されているものとする。この場合、検査ノードU1は、変数ノードV3、V5、V6、V7およびV9からメッセージv、v、v、vおよびvを受け取ると、これらのメッセージに基づいてメッセージuを生成し、変数ノードV1に出力する。
[高レベル軟判定誤り訂正部]
図12は、第1の実施の形態における高レベル軟判定誤り訂正部380の一構成例を示す図である。この高レベル軟判定誤り訂正部380は、高レベル誤り訂正処理部381および訂正成否判定部386を備える。
高レベル誤り訂正処理部381は、軟判定復号アルゴリズムを使用してリードデータの誤りを訂正するものである。高レベル誤り訂正処理部381においては、軟判定復号アルゴリズムとして、例えば、BPアルゴリズムが使用される。BPアルゴリズムが用いられる場合、高レベル誤り訂正処理部381は、変数ノード処理部382および検査ノード処理部384を備える。
高レベル誤り訂正処理部381は、訂正に失敗したことを示す訂正成否情報を低レベル誤り訂正部360から受け取った場合には、誤り訂正プログラム記憶部370から誤り訂正プログラムを読み出して実行する。この誤り訂正プログラムにより、変数ノード処理部382および検査ノード処理部384における処理が実行される。高レベル誤り訂正処理部381において、メッセージは、例えば、符号付きの浮動少数点型データにより表わされる。
変数ノード処理部382の構成は、変数ノード383が式2の代わりに次の式6を使用する点以外は、低レベル誤り訂正部360における変数ノード処理部362の構成と同様である。なお、変数ノード383は、図12において省略されている。
Figure 2014140111
上式は、式1におけるiLおよびiLの表記をiHおよびjHに置き換えたものである。
検査ノード処理部384は、低レベル誤り訂正部360における変数ノード処理部382とは異なる処理により、パリティ検査を行うものである。具体的には、検査ノード処理部384内の検査ノード385は、式3の代わりに次の式7によりメッセージujHを求める。なお、検査ノード385は、図12において省略されている。
Figure 2014140111
上式において、tanh()は双曲線正接関数であり、Πxは、xの総乗である。
この式7は、式8を使用して、次の式9に変形することができる。
a×b=exp(ln|a|+ln|b|)×sign(a)×sign(b)・・・式8
Figure 2014140111
上式において、ln(x)はxの自然対数を意味する。また、sign()は、式3におけるsign()と同様の関数である。
ここで、次の式10に定義した関数を使用して、式7を変形した式9を式11にさらに変形することができる。検査ノード385は、式7の代わりに式11を使用してメッセージujHを算出してもよい。
φ(x)=−ln{tanh(x/2)} ・・・式10
Figure 2014140111
上式において、ln(x)はxの自然対数を意味する。上式におけるsign()は、式3におけるsign()と同様の関数である。
なお、メッセージujHは、式7や式11を使用して求めるほか、それらより簡易な演算によって求めることもできる。例えば、次の式12に定義する関数R(v,v)の演算結果を、メッセージvおよびvの取りうる値ごとに予め計算しておく。そして、その演算結果とメッセージvおよびvの組合せとを対応付けたテーブルを予め作成しておき、そのテーブルから読み出した演算結果を、次の式13に示すように再帰的に使用することにより、メッセージujHを簡易に求めることができる。
R(v,v)=2tanh−1{tan(v/2)tan(v/2)} ・・・式12
jH=R(v,R(v,R(v・・・R(vdc−2,vdc−1)))) ・・・式13
訂正成否判定部386は、誤りの訂正が成功したか否かを判定するものである。訂正成否判定部386は、メッセージviH'を変数ノード処理部382から受け取り、そのメッセージのいずれかがの絶対値が所定の閾値以下である場合、訂正に失敗したと判定する。一方、メッセージviL'の全ての絶対値が閾値を越えている場合には、訂正成否判定部366は、訂正に成功したと判定する。訂正に成功した場合に訂正成否判定部386は、メッセージviH'に基づいて、誤りを訂正した符号語を生成し、その符号語からパリティを除いた元のデータ(kビット)をホストコンピュータ100へ出力する。また、訂正成否判定部386は、訂正に成功したか否かを示す情報を記載したステータスを生成してホストコンピュータ100に出力する。
[ホストコンピュータの動作例]
図13は、第1の実施の形態におけるホストコンピュータ100の動作の一例を示すフローチャートである。この動作は、例えば、所定のアプリケーションが実行されたときに開始する。ホストコンピュータ100は、必要に応じてライトコマンドやリードコマンドを発行する(ステップS901)。ホストコンピュータ100は、発行したコマンドをメモリコントローラ300に出力する。発行したコマンドがライトコマンドであれば、ホストコンピュータ100は、ライトコマンドとともにライトデータをメモリコントローラ300に出力する(ステップS902)。
ホストコンピュータ100は、ステータスを受信したか否かを判断する(ステップS903)。ステータスを受信していなければ(ステップS903:No)、ホストコンピュータ100はステップS903に戻る。ステータスを受信したのであれば(ステップS903:Yes)、ホストコンピュータ100は、ステップS901に戻る。
[メモリコントローラの動作例]
図14は、第1の実施の形態におけるメモリコントローラ300の動作の一例を示すフローチャートである。この動作は、例えば、メモリコントローラ300に電源が投入されたときに開始する。
メモリコントローラ300は、ライトコマンドをホストコンピュータ100から受信したか否かを判断する(ステップS951)。ライトコマンドを受信したのであれば(ステップS951:Yes)、メモリコントローラ300は、ライトデータを符号化して不揮発性メモリ400に書き込む(ステップS952)。
ライトコマンドを受信していない場合(ステップS951:No)、または、ステップS952の後、メモリコントローラ300は、リードコマンドをホストコンピュータ100から受信したか否かを判断する(ステップS953)。リードコマンドを受信したのであれば(ステップS953:Yes)、メモリコントローラ300は、リードデータ(符号語に相当するデータ)を読み出すためのリード処理を実行する(ステップS960)。リードコマンドを受信していない場合(ステップS953:No)、または、ステップS960の後、メモリコントローラ300は、ステップS951に戻る。
図15は、第1の実施の形態におけるリード処理の一例を示すフローチャートである。メモリコントローラ300は、低レベルアルゴリズムを使用する低レベル誤り訂正処理を実行する(ステップS970)。メモリコントローラ300は、低レベル誤り訂正処理において訂正が成功したか否かを判断する(ステップS961)。
訂正に失敗した場合には(ステップS961:No)、メモリコントローラ300は、高レベルアルゴリズムを使用する高レベル軟判定誤り訂正処理を実行する(ステップS980)。一方、訂正に成功した場合(ステップS961:Yes)、または、ステップS980の後、メモリコントローラ300は、ステータスをホストコンピュータ100に出力する。また、ステップS970またはS980における訂正に成功していれば、ホストコンピュータ100は、符号語からパリティを除いた元のデータ(kビット)とステータスとをホストコンピュータ100に出力する(ステップS962)。ステップS962の後、メモリコントローラ300は、リード処理を終了する。
図16は、第1の実施の形態における低レベル誤り訂正処理の一例を示すフローチャートである。メモリコントローラ300は、不揮発性メモリ400からリードデータを読み出し(ステップS971)、リードデータバッファ350に保持する(ステップS972)。メモリコントローラ300における低レベル誤り訂正部360は、誤り訂正能力の低い軟判定復号アルゴリズムを使用して、リードデータの誤りを訂正する(ステップS973)。ステップS973の後、メモリコントローラ300は、低レベル誤り訂正を終了する。
図17は、第1の実施の形態における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。メモリコントローラ300は、リードデータバッファ350からリードデータを読み出す(ステップS981)。また、メモリコントローラ300における高レベル軟判定誤り訂正部380は、誤り訂正プログラムを誤り訂正プログラム記憶部370から読み出す(ステップS982)。高レベル軟判定誤り訂正部380は、誤り訂正プログラムの実行により、誤り訂正能力の高い軟判定復号アルゴリズムを使用してリードデータの誤りを訂正する(ステップS983)。ステップS983の後、メモリコントローラ300は、高レベル軟判定誤り訂正処理を終了する。
このように、第1の実施の形態によれば、メモリコントローラ300は、低レベルアルゴリズムによる誤りの訂正が失敗すると高レベルアルゴリズムを使用して誤りを訂正することにより、処理時間の増大を抑制しつつ、誤り訂正能力を向上させることができる。また、高レベルアルゴリズムによる復号をソフトウェアにより実現することにより、回路規模の増大を抑制することができる。
[第1の変形例]
第1の実施の形態では、高レベル軟判定誤り訂正部380への入力値は硬判定値であったが、低レベル誤り訂正部360が生成した軟判定値を高レベル軟判定誤り訂正部380に入力してもよい。軟判定値を入力値とすることにより、硬判定値を入力値とした場合よりも高レベル軟判定誤り訂正部380における誤り訂正が容易となる。第1の変形例は、低レベル誤り訂正部360が生成した軟判定値を高レベル軟判定誤り訂正部380に入力する点において第1の実施の形態と異なる。
図18は、第1の実施の形態の第1の変形例における誤り訂正部340の一構成例を示すブロック図である。第1の変形例の誤り訂正部340は、低レベル誤り訂正部360がメッセージviL'(すなわち、軟判定値)を高レベル軟判定誤り訂正部380に出力する点において第1の実施の形態と異なる。
図19は、第1の実施の形態の第1の変形例における低レベル誤り訂正部360の一例を示すブロック図である。第1の変形例における低レベル誤り訂正部360において、低レベル誤り訂正回路361は、メッセージviL'を訂正成否判定部366に加えて、高レベル軟判定誤り訂正部380にも出力する。
図20は、第1の実施の形態の第1の変形例における高レベル軟判定誤り訂正部380の一例を示すブロック図である。第1の変形例における変数ノード処理部382には、リードデータの代わりにメッセージviL'が入力される。変数ノード処理部382は、メッセージviL'をメッセージui_0Hとして式6に例示した演算を実行する。
[第2の変形例]
第1の実施の形態では、メモリコントローラ300は、訂正成否情報をホストコンピュータ100に出力していなかったが、この訂正成否情報をホストコンピュータ100に出力してもよい。第2の変形例のメモリコントローラ300は、訂正成否情報をホストコンピュータ100に出力する点において第1の実施の形態と異なる。
図21は、第1の実施の形態の第2の変形例における誤り訂正部340の一構成例を示すブロック図である。第2の変形例の低レベル誤り訂正部360は、訂正成否情報をホストコンピュータ100にも出力する点において第1の実施の形態と異なる。
図22は、第1の実施の形態の第2の変形例におけるホストコンピュータ100の動作の一例を示すフローチャートである。第2の変形例のホストコンピュータ100は、ステップS911およびS912をさらに実行する点において第1の実施の形態と異なる。
ホストコンピュータ100は、ステップS902の後、訂正失敗を示す訂正成否情報を受信したか否かを判断する(ステップS911)。訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、メモリコントローラ300で訂正中のデータの読出しを待たずに、必要に応じて他の処理を実行する(ステップS912)。訂正失敗を示す訂正成否情報を受信しなかった場合(ステップS911:No)、または、ステップS912の後、ホストコンピュータ100は、ステップS903を実行する。
誤り訂正能力の高いアルゴリズムによる訂正は時間がかかるため、誤り訂正能力の低いアルゴリズムによる訂正が失敗した場合、図22に例示したようにホストコンピュータ100は、訂正に要する予測時間内に別の処理を実行することができる。
図23は、第1の実施の形態の第2の変形例におけるリード処理の一例を示すフローチャートである。第2の変形例のリード処理は、ステップS963をさらに実行する点において第1の実施の形態と異なる。
低レベルアルゴリズムによる訂正に失敗した場合(ステップS961:No)、メモリコントローラ300は、訂正失敗を示す訂正成否情報を生成してホストコンピュータ100へ出力する(ステップS963)。そして、メモリコントローラ300は、高レベル軟判定誤り訂正処理を実行する(ステップS980)。
<2.第2の実施の形態>
[誤り訂正部の構成例]
第1の実施の形態では、メモリコントローラ300は、低レベルアルゴリズムにより誤り訂正が失敗すると直ちに高レベルアルゴリズムによる誤り訂正を開始していた。しかし、メモリコントローラ300は、ホストコンピュータ100の制御に従って、高レベルアルゴリズムによる誤り訂正を開始してもよい。第2の実施の形態のメモリコントローラ300は、ホストコンピュータ100の制御に従って、高レベルアルゴリズムによる誤り訂正を開始する点において第1の実施の形態と異なる。
図24は、第2の実施の形態における誤り訂正部340の一構成例を示すブロック図である。第2の実施の形態の低レベル誤り訂正部360は、訂正の成否を示す訂正成否情報をホストコンピュータ100にも出力する点において第1の実施の形態と異なる。また、第2の実施の形態の高レベル軟判定誤り訂正部380は、訂正開始コマンドに従って誤り訂正を開始する点において第1の実施の形態と異なる。この訂正開始コマンドは、誤り訂正を開始することを高レベル軟判定誤り訂正部380に指示するコマンドであり、ホストコンピュータ100により発行される。
[ホストコンピュータの動作例]
図25は、第2の実施の形態におけるホストコンピュータ100の動作の一例を示すフローチャートである。第2の実施の形態のホストコンピュータ100は、ステップS911、S921およびS922をさらに実行する点において第1の実施の形態と異なる。
ホストコンピュータ100は、ステップS902の後、訂正失敗を示す訂正成否情報を受信したか否かを判断する(ステップS911)。訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、訂正開始コマンドを含む各種のコマンドの実行順序のスケジューリングを行う(ステップS921)。そして、ホストコンピュータ100は、スケジュールに基づいて訂正開始コマンドをメモリコントローラ300に出力する(ステップS922)。訂正失敗を示す訂正成否情報を受信しなかった場合(ステップS911:No)、または、ステップS922の後、ホストコンピュータ100は、ステップS903を実行する。
[メモリコントローラの動作例]
図26は、第2の実施の形態におけるリード処理の一例を示すフローチャートである。第2の実施の形態のリード処理は、ステップS963およびS964をさらに実行する点において第1の実施の形態と異なる。
低レベルアルゴリズムによる訂正に失敗した場合(ステップS961:No)、メモリコントローラ300は、訂正失敗を示す訂正成否情報を生成してホストコンピュータ100へ出力する(ステップS963)。そして、メモリコントローラ300は、訂正開始コマンドをホストコンピュータ100から受信したか否かを判断する(ステップS964)。訂正開始コマンドを受信していなければ(ステップS964:No)、メモリコントローラ300は、ステップS964に戻る。訂正開始コマンドを受信したのであれば(ステップS964:Yes)、メモリコントローラ300は、高レベル軟判定誤り訂正処理を実行する(ステップS980)。
このように第2の実施の形態によれば、ホストコンピュータ100は、高レベルアルゴリズムによる誤り訂正の開始のタイミングを制御することができるため、処理を最適化することができる。例えば、順に読み出す必要のないデータ#1、#2のうちデータ#1の読出しにおいて低レベルアルゴリズムによる誤り訂正が失敗した場合を考える。この場合、情報処理システムは、高レベルアルゴリズムによるデータ#1の誤り訂正のタイミングを遅らせて、低レベルアルゴリズムによるデータ#2の読出しと誤り訂正とを先に行うことができる。これにより、スループットが向上する。
[第1の変形例]
第2の実施の形態では、メモリコントローラ300は、ホストコンピュータ100の制御に従って高レベルアルゴリズムによる誤り訂正を開始していた。しかし、ホストコンピュータ100の制御に従って高レベルアルゴリズムによる誤り訂正を中断し、その後に再開してもよい。第2の実施の形態のメモリコントローラ300は、ホストコンピュータ100の制御に従って、高レベルアルゴリズムによる誤り訂正を中断および再開する点において第2の実施の形態と異なる。
図27は、第2の実施の形態の第1の変形例における誤り訂正部340の一構成例を示すブロック図である。第1の変形例の高レベル軟判定誤り訂正部380は、アボートコマンドに従って誤り訂正を中断する点において第2の実施の形態と異なる。このアボートコマンドは、誤り訂正を中断することを高レベル軟判定誤り訂正部380に指示するコマンドであり、ホストコンピュータ100により発行される。また、第1の変形例の高レベル軟判定誤り訂正部380は、訂正再開コマンドに従って、中断した誤り訂正を再開する点において第2の実施の形態と異なる。この訂正再開コマンドは、誤り訂正を再開することを高レベル軟判定誤り訂正部380に指示するコマンドであり、ホストコンピュータ100により発行される。
図28は、第2の実施の形態の第1の変形例におけるホストコンピュータ100の動作の一例を示すフローチャートである。第1の変形例のホストコンピュータ100は、ステップS921およびS922の代わりにステップS923、S924、S991およびS992を実行する点において第2の実施の形態と異なる。
訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、訂正中のデータのリード処理に対する割込みが発生したか否かを判断する(ステップS923)。割込みが発生した場合には(ステップS923:Yes)、ホストコンピュータ100は、アボートコマンドを発行してメモリコントローラ300に出力し(ステップS924)、割込み処理が終了したか否かを判断する(ステップS991)。割込み処理が終了していなければ(ステップS991:No)、ホストコンピュータ100は、ステップS991に戻る。割込み処理が終了したのであれば(ステップS991:Yes)、ホストコンピュータ100は、訂正再開コマンドを発行してメモリコントローラ300に出力する(ステップS992)。訂正失敗を示す訂正成否情報を受信しなかった場合(ステップS911:No)、割込みが発生しなかった場合(ステップS923:No)、または、ステップS992の後、ホストコンピュータ100は、ステータスを受信したか否かを判断する(ステップS903)。
ステータスを受信していなければ(ステップS903:No)、ホストコンピュータ100はステップS911に戻る。ステータスを受信したのであれば(ステップS903:Yes)、ホストコンピュータ100は、ステップS901に戻る。
図29は、第2の実施の形態の第1の変形例における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。第1の変形例の高レベル軟判定誤り訂正処理は、ステップS984およびS985をさらに実行する点において第2の実施の形態と異なる。
メモリコントローラ300は、ステップS983の実行後、訂正処理が終了したか否かを判断する(ステップS984)。訂正処理が終了していなければ(ステップS984:No)、メモリコントローラ300は、アボートコマンドを受信したか否かを判断する(ステップS985)。アボートコマンドを受信した場合(ステップS985:Yes)、メモリコントローラ300は、訂正再開コマンドを受信したか否かを判断する(ステップS993)。訂正再開コマンドを受信していなければ(ステップS993:No)、メモリコントローラ300は、ステップS993に戻る。訂正再開コマンドを受信したのであれば(ステップS993:Yes)、メモリコントローラ300は、高レベル軟判定誤り訂正処理を再開する(ステップS994)。アボートコマンドを受信していない場合(ステップS985:No)、または、ステップS994の後、メモリコントローラ300は、ステップS984に戻る。訂正処理が終了したのであれば(ステップS984:Yes)、メモリコントローラ300は、高レベル軟判定誤り訂正処理を終了する。
[第2の変形例]
第2の実施の形態では、情報処理システムは、データの種類に関らず、高レベルアルゴリズムによる誤り訂正を行っていたが、データの種類によっては高レベルアルゴリズムによる誤り訂正を行わなくてもよい場合がある。例えば、動画データや画像データの場合、多少の誤りがあるデータを再生しても観賞上は問題が少ない。このため、高レベルアルゴリズムによる誤り訂正を行う必要性に乏しい。一方、データベース内のデータやテキストデータは、時間がかかっても誤りを完全に訂正することが望ましい。このため、高レベルアルゴリズムによる誤り訂正を行う必要性が高い。第2の変形例の情報処理システムは、データの種類に基づいて高レベルアルゴリズムによる誤り訂正を行うか否かを判断する点において第2の実施の形態と異なる。
図30は、第2の実施の形態の第2の変形例における誤り訂正部340の一構成例を示すブロック図である。第1の変形例の高レベル軟判定誤り訂正部380は、イネーブル信号に従って誤り訂正を行う点において第2の実施の形態と異なる。このイネーブル信号は、高レベル軟判定誤り訂正部380における誤り訂正を行うか否かを示す信号であり、ホストコンピュータ100により生成される。イネーブル信号は、例えば、誤り訂正を行う場合にオンに設定され、そうでない場合にオフに設定されるものとする。
図31は、第2の実施の形態の第2の変形例におけるホストコンピュータ100の動作の一例を示すフローチャートである。第2の変形例のホストコンピュータ100は、ステップS911、S921およびS922の代わりにステップS925乃至S927を実行する点において第2の実施の形態と異なる。
ホストコンピュータ100は、コマンドを発行する(ステップS901)。ただし、ステップS901においてリードコマンドを発行する際、ホストコンピュータ100は、読み出す対象のデータの種類に基づいてイネーブル信号を生成する。データの種類は、例えば、実行中のアプリケーションにより判断される。より具体的には、アプリケーションが動画を再生するためのものであれば、読み出すデータは動画データであると判断され、オフに設定されたイネーブル信号が生成される。また、アプリケーションがデータベースを管理するためのものであれば、読み出すデータはデータベース内のデータであると判断され、オンに設定されたイネーブル信号が生成される。
なお、データの種類を、そのデータが記録された不揮発性メモリ400内の領域により判断することもできる。例えば、OS(Operation System)が記録されている領域からデータを読み出す場合、ホストコンピュータ100は、イネーブル信号をオンにし、それ以外の領域からデータを読み出す場合にイネーブル信号をオフにする。
ホストコンピュータ100は、発行したコマンドがライトコマンドであるか否かを判断する(ステップS925)。ライトコマンドである場合(ステップS925:Yes)、ホストコンピュータ100は、ライトコマンドおよびライトデータをメモリコントローラ300に出力する(ステップS926)。
一方、リードコマンドである場合(ステップS925:No)、ホストコンピュータ100は、リードコマンドおよびイネーブル信号をメモリコントローラ300に出力する(ステップS927)。ステップS926またはS927の後、ホストコンピュータ100は、ステップS903を実行する。
なお、リードコマンドを生成するときにおいて、イネーブル信号を生成する構成としているが、イネーブル信号を生成するタイミングはリード時に限定されない。例えば、ホストコンピュータ100は、ライト処理においてイネーブル信号を生成して、符号化したデータとともにイネーブル信号を不揮発性メモリ400に保持させておいてもよい。
図32は、第2の実施の形態の第2の変形例におけるリード処理の一例を示すフローチャートである。第2の変形例のリード処理は、ステップS963およびS964の代わりにステップS965を実行する点において第2の実施の形態と異なる。
低レベルアルゴリズムによる訂正に失敗した場合(ステップS961:No)、メモリコントローラ300は、イネーブル信号がオンであるか否かを判断する(ステップS965)。イネーブル信号がオンである場合には(ステップS965:Yes)、メモリコントローラ300は、高レベル軟判定誤り訂正処理を実行する(ステップS980)。イネーブル信号がオフである場合(ステップS965:No)、または、ステップS980の後、メモリコントローラ300は、ステップS962を実行する。
[第3の変形例]
第2の実施の形態では、情報処理システムは、1種類の高レベルアルゴリズムを使用していたが、複数の種類の高レベルアルゴリズムの中から選択したアルゴリズムを使用してもよい。第3の変形例の情報処理システムは、複数の高レベルアルゴリズムの中から選択したアルゴリズムを使用する点において第2の実施の形態と異なる。
図33は、第2の実施の形態の第3の変形例におけるホストコンピュータ100の動作の一例を示すフローチャートである。第3の変形例のホストコンピュータ100は、ステップS921およびS922の代わりにステップS928およびS929を実行する点において第2の実施の形態と異なる。
訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、データの種類に基づいて、誤り訂正能力の異なる複数の高レベルアルゴリズムの中から、いずれかを選択する。例えば、動画データであれば、誤り訂正能力が低い高レベルアルゴリズムが選択される。また、データベース内のデータであれば、誤り訂正能力の高い高レベルアルゴリズムが選択される。高レベルアルゴリズムとしては、BPアルゴリズム、Layered BPアルゴリズム、Shuffled BPアルゴリズム、Improved BPアルゴリズム、線形計画法などが用意される(ステップS928)。ホストコンピュータ100は、選択したアルゴリズムに対応する誤り訂正プログラムを指定する訂正開始コマンドを発行し、メモリコントローラ300に出力する(ステップS929)。ステップS929の後、ホストコンピュータ100は、ステップS903を実行する。
なお、ホストコンピュータ100は、訂正開始コマンドとは別のコマンドまたは信号により、アルゴリズムを指定してもよい。
図34は、第2の実施の形態の第3の変形例における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。第3の変形例の高レベル軟判定誤り訂正処理は、ステップS982の代わりにステップS986を実行する点において第2の実施の形態と異なる。
メモリコントローラ300は、リードデータバッファ350からリードデータを読み出す(ステップS981)。高レベル軟判定誤り訂正部380は、ホストコンピュータ100により指定された誤り訂正プログラムを誤り訂正プログラム記憶部370から読み出し(ステップS986)、ステップS983を実行する。
<3.第3の実施の形態>
[ホストコンピュータの構成例]
第1の実施の形態では、メモリコントローラ300が高レベル軟判定誤り訂正処理を実行していたが、この処理をホストコンピュータ100が実行することもできる。第3の実施の形態の情報処理システムは、ホストコンピュータ100が高レベル軟判定誤り訂正処理を実行する点において第1の実施の形態と異なる。
図35は、第3の実施の形態におけるホストコンピュータ100の一構成例を示すブロック図である。このホストコンピュータ100は、符号語取得部110、制御部120、リードデータバッファ130、高レベル軟判定誤り訂正部140および誤り訂正プログラム記憶部150を備える。
符号語取得部110は、メモリコントローラ300が誤り訂正に失敗したときにメモリコントローラ300からリードデータ(符号語に相当するデータ)を取得するものである。具体的には、符号語取得部110は、メモリコントローラ300から、誤り訂正に成功したか否かを示す訂正成否情報を受け取る。この訂正成否情報が訂正の失敗を示すものであれば、符号語取得部110は、訂正に失敗したリードデータにかかるアドレスを指定した符号語出力コマンドを発行してメモリコントローラ300に出力する。この符号語出力コマンドは、メモリコントローラ300に対して、データおよびパリティからなるリードデータをホストコンピュータ100へ出力するように指示するコマンドである。
メモリコントローラ300は、リードコマンドに対して符号語から除いてパリティを除いて元のデータ(kビット)をホストコンピュータ100に出力する。一方、符号語出力コマンドに対しては、メモリコントローラ300は、パリティを除かないでリードデータ(nビット)をそのまま出力する。符号語取得部110は、メモリコントローラ300からリードデータを受け取り、リードデータバッファ130に保持させる。
制御部120は、ホストコンピュータ100全体を制御するものである。この制御部120は、ユーザの操作に従って様々なアプリケーションを実行し、ライトコマンドやリードコマンドを発行する。また、制御部120は、ライトコマンドを発行した場合、そのライトコマンドおよびデータをストレージ200に出力する。一方、リードコマンドを発行した場合、制御部120は、メモリコントローラ300または高レベル軟判定誤り訂正部140から、誤りが訂正されたデータを受け取って処理する。また、制御部120は、メモリコントローラ300からステータスを受け取る。
リードデータバッファ130は、符号語取得部110により取得されたリードデータを保持するものである。
高レベル軟判定誤り訂正部140の構成は、第1の実施の形態におけるメモリコントローラ300内の高レベル軟判定誤り訂正部380と同様である。高レベル軟判定誤り訂正部140は、訂正した符号語からパリティを除いた元のデータ(kビット)をリードデータとして制御部120に供給する。
誤り訂正プログラム記憶部150の構成は、第1の実施の形態におけるメモリコントローラ300内の誤り訂正プログラム記憶部370と同様である。
[メモリコントローラの構成例]
図36は、第3の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。第3の実施の形態のメモリコントローラ300の構成は、符号語出力部390をさらに備える点において第1の実施の形態と異なる。
符号語出力部390は、符号語出力コマンドに従って、リードデータ(nビット)を不揮発性メモリ400から読み出してホストコンピュータ100に出力するものである。
また、第3の実施の形態の誤り訂正部340は、訂正成否情報をホストコンピュータ100にさらに出力する点において第1の実施の形態と異なる。
[誤り訂正部の構成例]
図37は、第3の実施の形態における誤り訂正部340の一構成例を示すブロック図である。第3の実施の形態の誤り訂正部340は、誤り訂正プログラム記憶部370および高レベル軟判定誤り訂正部380を備えない点において第1の実施の形態と異なる。また、第3の実施の形態の低レベル誤り訂正部360は、訂正成否情報をホストコンピュータ100に出力する。
[ホストコンピュータの動作例]
図38は、第3の実施の形態におけるホストコンピュータ100の動作の一例を示すフローチャートである。第3の実施の形態のホストコンピュータ100は、ステップS911、S931、S932およびステップS980をさらに実行する点において第1の実施の形態と異なる。
ホストコンピュータ100は、ステップS902の後、訂正失敗を示す訂正成否情報を受信したか否かを判断する(ステップS911)。訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、誤り訂正に失敗したリードデータにかかるアドレスを指定した符号語出力コマンドを発行する。そして、ホストコンピュータ100は、その符号語出力コマンドをメモリコントローラ300に出力する(ステップS931)。ホストコンピュータ100は、メモリコントローラ300により読み出されたリードデータをリードデータバッファ130に保持させる(ステップS932)。ホストコンピュータ100は、高レベル軟判定誤り訂正処理を実行し(ステップS980)、ステップS901に戻る。
訂正失敗を示す訂正成否情報を受信しなかった場合には(ステップS911:No)、ホストコンピュータ100は、ステップS903を実行する。
[メモリコントローラの動作例]
図39は、第3の実施の形態におけるメモリコントローラ300の動作の一例を示すフローチャートである。第3のメモリコントローラ300は、ステップS954およびS955をさらに実行する点において第1の実施の形態と異なる。
リードコマンドを受信していない場合(ステップS953:No)、または、ステップS960の後、メモリコントローラ300は、符号語出力コマンドを受信したか否かを判断する(ステップS954)。符号語出力コマンドを受信した場合には(ステップS954:Yes)、メモリコントローラ300は、符号語出力コマンドに従ってリードデータ(nビット)を不揮発性メモリ400から読み出し、ホストコンピュータ100に出力する(ステップS955)。符号語出力コマンドを受信していない場合(ステップS954:No)、または、ステップS955の後、メモリコントローラ300はステップS951に戻る。
図40は、第3の実施の形態におけるリード処理の一例を示すフローチャートである。第3の実施の形態のリード処理は、ステップS980の代わりにステップS963を実行する点において第1の実施の形態と異なる。
訂正に成功した場合(ステップS961:Yes)、メモリコントローラ300は、符号語からパリティを除いた元のデータ(kビット)とステータスとをホストコンピュータ100に出力する(ステップS962)。一方、訂正に失敗した場合(ステップS961:No)、メモリコントローラ300は、訂正失敗を示す訂正成否情報をホストコンピュータ100に出力する(ステップS963)。ステップS962またはS963の後、メモリコントローラ300はリード処理を終了する。
このように、第3の実施の形態によれば、ホストコンピュータ100が高レベル軟判定誤り訂正処理を実行するため、高レベル軟判定誤り訂正処理においてメモリコントローラ300より豊富なリソースを利用することができる。
<4.第4の実施の形態>
[ホストコンピュータの構成例]
第3の実施の形態では、ホストコンピュータ100は、高レベル軟判定誤り訂正部140に硬判定値を入力していたが、軟判定値を入力することにより誤り訂正がより容易になる。第4の実施の形態のホストコンピュータ100は、軟判定値を生成して高レベル軟判定誤り訂正部140に入力する点において第3の実施の形態と異なる。
図41は、第4の実施の形態におけるホストコンピュータ100の一構成例を示すブロック図である。第4の実施の形態のホストコンピュータ100は、軟判定値生成部160をさらに備える点において第3の実施の形態と異なる。
また、第4の実施の形態の符号語取得部110は、訂正失敗を示す訂正成否情報を受信すると、訂正停止信号を生成して一定期間の間、ストレージ200へ出力する。また、ホストコンピュータ100は、訂正停止信号が出力されている間に、符号語出力コマンドをストレージ200に一定の周期で複数回出力する。
ここで、訂正停止信号は、低レベル誤り訂正処理を一定期間停止するようにメモリコントローラ300に指示する信号である。また、符号語出力コマンドが出力される周期は、例えば、ランダムテレグラフノイズなどによりデータの値が変動する周期である。符号語取得部110は、複数回取得したリードデータのそれぞれをリードデータバッファ130に保持させる。
軟判定値生成部160は、複数回読み出されたリードデータから軟判定値を生成するものである。この軟判定値生成部160は、リードデータバッファ130に保持された複数のリードデータのそれぞれに基づいて、各々のビットが「1」または「0」となる確率に応じた軟判定値を生成する。ここで、不揮発性メモリにおいては、データの値が時間的に変動するノイズであるランダムテレグラフノイズが生じることがある。このようなノイズが生じるときに、異なるタイミングで同じデータを複数回読み出すと、それらのデータの値が異なるものになることがある。これらのデータの値の統計をとることにより、各々のビットが「1」または「0」となる確率が求められる。例えば、同じリードデータが読み出された回数が10回であり、そのうち最初のビットの値が「1」となるリードデータが読み出された回数が9回である場合、最初のビットが「1」である確率は0.9である。一方、最初のビットが「0」である確率は0.1である。軟判定値として対数尤度比を使用する場合、式1から、ln9(≒2.2)の値が軟判定値として求められる。軟判定値生成部160は、リードデータの全てのビットの軟判定値を求め、それらの軟判定値からなる軟判定値データを生成して高レベル軟判定誤り訂正部140に供給する。
高レベル軟判定誤り訂正部140は、軟判定値データにおける軟判定値を式6におけるメッセージu0_iHとして使用し、誤り訂正を行う。
なお、第1の実施の形態に例示したようにメモリコントローラ300が高レベルアルゴリズムによる誤り訂正を行う構成において、第4の実施の形態の構成を適用することもできる。この場合、メモリコントローラ300に軟判定値生成部160が設けられる。
図42は、第4の実施の形態におけるリードデータおよび軟判定値の一例を示す図である。メモリコントローラ300がアドレスAからリードデータを読み出し、その誤り訂正に失敗した場合を考える。
この場合、ホストコンピュータ100が、訂正停止信号を生成し、そのアドレスAを指定する符号語出力コマンドを複数回(例えば、3回)メモリコントローラ300に出力する。メモリコントローラ300は、複数回、アドレスAからリードデータを読み出し、誤り訂正をせずにホストコンピュータ100に出力する。
図42におけるaは、アドレスAから1回目に読み出されたリードデータ#1の一例である。符号語の符号長はnビットであるものとする。図42におけるbは、アドレスAから2回目に読み出されたリードデータ#2の一例であり、同図におけるcは、アドレスAから3回目に読み出されたリードデータ#3の一例である。図42におけるdは、リードデータ#1乃至#3から生成された軟判定値データの一例である。軟判定値データは、例えば、n個の浮動少数点型データからなるデータである。
例えば、リードデータ#1乃至#3の0番目のビットの値が、いずれも「0」である場合、0番目のビットが「0」となる確率は1.0であるから、式1より、そのビットの値として負の無限大の値が得られる。この場合、符号付きの浮動小数点型データで表現される数値範囲内の最小値が軟判定値として生成される。また、リードデータ#1の1番目のビットが「1」であり、リードデータ#2および#3の1番目のビットの値が「0」である場合、そのビットが「1」となる確率は1/3である。この場合、式1より、1番目のビットの軟判定値としてln2(≒0.7)が生成される。同様にして、nビットのそれぞれの軟判定値が生成される。これらのn個の軟判定値からなるデータが軟判定値データとして生成される。
なお、ホストコンピュータ100は、複数回読み出したデータから軟判定値データを取得しているが、他の方法で軟判定値を取得してもよい。例えば、不揮発性メモリ400におけるメモリセルがA/D(Analog to Digital)コンバータを有し、メモリセルに保持されたデータの値を軟判定値として読み出し、A/D変換して出力する構成であってもよい。ホストコンピュータ100は、メモリセルから読み出された軟判定値を取得して、誤り訂正処理を行う。
[メモリコントローラの構成例]
図43は、第4の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。第3の実施の形態のリード処理部330は、リードコマンドまたは符号語出力コマンドを受け取った場合には不揮発性メモリ400からリードデータを読み出して誤り訂正部340に供給する。誤り訂正部340は、ホストコンピュータ100から訂正停止信号が出力されている間において、リードデータに対して誤り訂正を行わずにホストコンピュータ100に出力する。
[ホストコンピュータの動作例]
図44は、第4の実施の形態におけるホストコンピュータ100の動作の一例を示すフローチャートである。第4の実施の形態のホストコンピュータ100は、ステップS931およびS932の代わりに、ステップS941乃至945を実行する点において第3の実施の形態と異なる。
訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、訂正停止信号を生成し、メモリコントローラ300への訂正停止信号の出力を開始する(ステップS941)。そして、ホストコンピュータ100は、誤り訂正に失敗したリードデータが記録されているアドレスを指定した符号語出力コマンドを発行する。そして、メモリコントローラ300は、リードデータを前回読み出したときから一定の周期が経過したときに、符号語出力コマンドをメモリコントローラ300に出力する(ステップS942)。ホストコンピュータ10は、メモリコントローラ300により読み出されたリードデータをリードデータバッファ130に保持させる(ステップS943)。
ホストコンピュータ100は、リードデータの読出し回数が所定回数に達したか否かを判断する(ステップS944)。リードデータの読出し回数が所定回数未満である場合(ステップS944:No)、ホストコンピュータ100はステップS942に戻る。リードデータの読出し回数が所定回数に達した場合(ステップS944:Yes)、ホストコンピュータ100は、各々のリードデータから、リードデータの各々のビットの軟判定値を示す軟判定値データを生成する(ステップS945)。ホストコンピュータ100は、軟判定値を入力値とする高レベル軟判定誤り訂正処理を実行する(ステップS980)。
図45は、第4の実施の形態における高レベル軟判定誤り訂正処理の一例を示すフローチャートである。第4の実施の形態の高レベル軟判定誤り訂正処理は、ステップS981の代わりにステップS987を実行する点において第1の実施の形態と異なる。
ホストコントローラ100は、生成した軟判定値データを保持し(ステップS987)、その軟判定値データを使用してステップS982およびS983を実行する。
[メモリコントローラの動作例]
図46は、第4の実施の形態におけるメモリコントローラ300の動作の一例を示すフローチャートである。第4の実施の形態のメモリコントローラ300は、ステップS954をさらに実行する点において第1の実施の形態と異なる。
リードコマンドを受信していない場合(ステップS953:No)、メモリコントローラ300は、符号語出力コマンドを受信したか否かを判断する(ステップS954)。リードコマンドを受信した場合(ステップS953:Yes)、または、符号語出力コマンドを受信した場合(ステップS954:Yes)、メモリコントローラ300はリード処理を実行する(ステップS960)。符号語出力コマンドを受信していない場合(ステップS954:No)、または、ステップS960の後、メモリコントローラ300はステップS951に戻る。
図47は、第4の実施の形態におけるリード処理の一例を示すフローチャートである。第4の実施の形態のリード処理は、ステップS980の代わりにステップS963、S966およびS967を実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、訂正停止信号を受信したか否かを判断する(ステップS966)。訂正停止信号を受信した場合(ステップS966:Yes)、メモリコントローラ300は、符号語出力コマンドに従ってリードデータを読み出してホストコンピュータ100に出力する(ステップS967)。一方、訂正停止信号を受信していなければ(ステップS966:No)、メモリコントローラ300は、低レベル誤り訂正処理を実行する(ステップS970)。メモリコントローラ300は、低レベル誤り訂正処理において訂正が成功したか否かを判断する(ステップS961)。
訂正が成功した場合(ステップS961:Yes)、メモリコントローラ300は、訂正した符号語からパリティを除いた元のデータ(kビット)とステータスとをホストコンピュータ100に出力する(ステップS962)。
訂正に失敗した場合(ステップS961:No)、または、ステップS967の後、メモリコントローラ300は、訂正失敗を示す訂正成否情報を生成してホストコンピュータ100に出力する(ステップS963)。ステップS962またはS963の後、メモリコントローラ300はリード処理を終了する。
このように第4の実施の形態によれば、ホストコンピュータ100が軟判定値を生成し、その軟判定値を入力値として高レベル軟判定誤り訂正処理を行うことにより、硬判定値を入力値とする場合よりも容易に誤りを訂正することができる。具体的には、誤り訂正能力が向上する。また、誤り訂正に要する時間が短くなる。
[変形例]
第4の実施の形態では、ホストコンピュータ100は、複数回リードデータを読み出してから誤り訂正を行っていたが、リードデータを読み出すたびに誤り訂正を行ってもよい。誤り率が想定より低い場合、リードデータを読み出すたびに誤り訂正を行った方が、誤り訂正に要する時間が短くて済む場合があるためである。例えば、10回の読出しが必要な程度の誤り率を想定していたところ、5回の読み出しで誤り訂正に成功する程度の誤り率であった場合を考える。この場合、読み出すたびに誤り訂正を行えば、5回目の誤り訂正に成功するため、10回読み出してから誤り訂正を行うよりも誤り訂正に要する時間が短くなる。第4の実施の形態の変形例のホストコンピュータ100は、リードデータを読み出すたびに誤り訂正を行う点において第4の実施の形態と異なる。
図48は、第4の実施の形態の変形例におけるホストコンピュータ100の動作の一例を示すフローチャートである。変形例のホストコンピュータ100は、リードデータを読み出すたびに高レベル軟判定誤り訂正処理を実行する点において第4の実施の形態と異なる。
具体的には、訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、符号語出力コマンドをメモリコントローラ300に出力する(ステップS942)。ホストコンピュータ100は、メモリコントローラ300により読み出されたリードデータをリードデータバッファ130に保持させ(ステップS943)、軟判定値データを生成する(ステップS945)。ホストコンピュータ10は、その軟判定値データを使用して高レベル軟判定誤り訂正処理を実行する(ステップS980)。
ホストコンピュータ100は、高レベル軟判定誤り訂正処理における誤り訂正が成功したか否かを判断する(ステップS946)。誤り訂正に失敗した場合には(ステップS946:No)、ホストコンピュータ100は、リードデータの読出し回数が所定回数に達したか否かを判断する(ステップS944)。リードデータの読出し回数が所定回数未満である場合(ステップS944:No)、ホストコンピュータ100は訂正停止信号を生成してメモリコントローラ300への出力を開始する(ステップS941)。ステップS941の後、ホストコンピュータ100はステップS901に戻る。また、誤り訂正に成功した場合(ステップS946:Yes)、または、リードデータの読出し回数が所定回数に達した場合(ステップS944:Yes)、ホストコンピュータ100は、誤り訂正の成否に基づいて所定の処理を実行し、ステップS901に戻る。
<5.第5の実施の形態>
[ホストコンピュータの構成例]
第4の実施の形態では、ホストコンピュータ100は、同一の閾値で読み出した複数のリードデータから軟判定値を生成していたが、異なる閾値で読み出した複数のリードデータから軟判定値を生成することもできる。ここで、閾値は、不揮発性メモリ400に記録されたビットの値が、「1」であるか「0」であるかを判断するために用いられる値である。第5の実施の形態のホストコンピュータ100は、異なる閾値で読み出した複数のリードデータから軟判定値を生成する点において第4の実施の形態と異なる。
不揮発性メモリ400がReRAMである場合、不揮発性メモリ400は複数の可変抵抗素子を備え、閾値として抵抗値が用いられる。これらの可変抵抗素子は、高抵抗状態(HRS:High Resistive State)と低抵抗状態(LRS:Low Resistive State)との2状態で1ビットのデータを記録することができる。
図49は、第5の実施の形態におけるホストコンピュータ100の一構成例を示すブロック図である。第5の実施の形態のホストコンピュータ100は、閾値制御部170をさらに備える点において第4の実施の形態と異なる。
閾値制御部170は、リードデータを読み出す際の閾値を制御するものである。この閾値制御部170は、訂正成否信号をメモリコントローラ300から受け取る。訂正成否信号が訂正失敗を示すものであれば、閾値制御部170は、リードデータを読み出す際の閾値を、一定の範囲内で前回と異なる閾値に制御するための制御信号を生成して、メモリコントローラ300に出力する。
第5の実施の形態の軟判定値生成部160は、複数のリードデータにおいて、「1」および「0」のうち特定の値が読み出されたときの閾値のうち、最大値または最小値に応じて軟判定値を生成する。
なお、第1の実施の形態に例示したようにメモリコントローラ300が高レベルアルゴリズムによる誤り訂正を行う構成において、第5の実施の形態の構成を適用することもできる。この場合、メモリコントローラ300に軟判定値生成部160および閾値制御部170が設けられる。
[メモリコントローラの構成例]
図50は、第5の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。第5の実施の形態のリード処理部330は、符号語出力コマンドおよび閾値制御信号をホストコンピュータ100から受け取ると、閾値制御信号に従って閾値を制御してリードデータを読み出し、誤り訂正部340に供給する。
図51は、第5の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。横軸は、抵抗値Rを示しており、縦軸は、セルの数の相対的な分布を相対値により示している。この図が示すように可変抵抗素子の抵抗分布は、低抵抗状態と高抵抗状態とに分かれている。
可変抵抗素子の高抵抗状態および低抵抗状態をそれぞれ「0」または「1」の何れかに対応付けることにより、可変抵抗素子はメモリセルとして機能する。「0」または「1」の何れに対応付けるかは任意である。例えば、高抵抗状態が「1」に対応付けられ、低抵抗状態が「0」に対応付けられる。
これらの可変抵抗素子に記録されたデータを読み出す場合に、可変抵抗素子の状態が2状態のいずれであるか、すなわち記録されているデータが2値のうちのいずれであるかを判断するために通常用いられる閾値を閾値Rとする。
メモリセルの抵抗値が閾値Rに近いほど、メモリセルに保持されたデータの値が「1」または「0」である確率が、いずれも0.5に近くなる。「1」または「0」である確率が0.5に近いということは、そのメモリセルに正常にデータが保持されていないことを意味する。つまり、この確率は、データが正常に保持されている程度を示すものである。このため、その確率に応じた軟判定値に基づいて誤り訂正を行うことにより、メモリコントローラ300は、データが正常に保持されていない場合に、誤り訂正能力の低下を防止することができる。
ここで、閾値Rより小さな所定の閾値を閾値RVLとし、閾値Rより大きな所定の閾値を閾値RVHとする。誤り訂正に失敗したリードデータを複数回読み出す場合、閾値RVLから閾値RVHまでの間の範囲において閾値が制御されるものとする。
図52は、第5の実施の形態における軟判定値の生成方法を説明するための図である。閾値RVL、R、RおよびRVHの4つの閾値のそれぞれにより、リードデータが読み出された場合を考える。ここで、閾値RVLは閾値Rより小さく、閾値Rは閾値Rより小さい値である。また、閾値Rは閾値RVHより小さい値である。それぞれの閾値に制御する順番は任意である。
それぞれの閾値でメモリセルから読み出した値の統計をとることにより、そのメモリセルの抵抗値を推定し、その抵抗値からメモリセルに保持されたビットが「1」または「0」である確率に応じた軟判定値を求めることができる。例えば、「1」の値が読み出されたときの閾値の最大値に応じて軟判定値が求められる。もしくは、「0」の値が読み出されたときの閾値の最小値に応じて軟判定値が求められる。
具体的には、閾値RV、R、RおよびRVのいずれの閾値でも「1」の値が読み出された場合、言い換えれば、「1」の値が読み出されたときの閾値の最大値がRVHである場合を考える。この場合、抵抗値が最大の閾値RVHでも「1」が読み出されることから、メモリセルの抵抗値は閾値RVHより大きい。メモリセルの抵抗値が十分に大きいため、そのメモリセルに保持されたデータが「1」である確率は十分に高く、1.0であると推測される。したがって、式1より正の無限大の軟判定値が生成される。
次に、閾値RVLおよびRのときに「1」の値が読み出された場合、言い換えれば、「1」の値が読み出されたときの閾値の最大値がRである場合を考える。この場合、メモリセルの抵抗値は閾値RVLと式値RVHとの中間である。メモリセルの抵抗値が閾値Rに近いため、そのメモリセルに保持されたデータが「1」である確率は0.5に近いと推測される。したがって、式1より0.0の軟判定値が生成される。
また、閾値RV、R、RおよびRVのいずれの閾値でも「0」の値が読み出された場合、言い換えれば、「1」の値が読み出されたときの閾値の最大値がRVL未満である場合を考える。この場合、抵抗値が最小の閾値RVLでも「0」が読み出されることから、メモリセルの抵抗値は閾値RVLより小さい。メモリセルの抵抗値が非常に小さいため、そのメモリセルに保持されたデータが「1」である確率は極めて低く、0.0であると推測される。したがって、式1より正の無限大の軟判定値が生成される。
また、「1」の値が読み出されたときの閾値の最大値がRである場合、正の無限大と0.0との間の所定の軟判定値(例えば、1.1)が生成される。「1」の値が読み出されたときの閾値の最大値がRVLである場合、負の無限大と0.0との間の所定の軟判定値(例えば、−1.1)が生成される。
[ホストコンピュータの動作例]
図53は、第5の実施の形態におけるホストコンピュータ100の動作の一例を示すフローチャートである。第5の実施の形態のホストコンピュータ100は、ステップS942およびS944の代わりにステップS947およびS948を実行する点において第4の実施の形態と異なる。
ホストコンピュータ100は、メモリコントローラ300への停止信号の出力を開始し(ステップS941)、前回と異なる閾値に制御するための閾値制御信号と符号語出力コマンドとをメモリコントローラ300に出力する(ステップS947)。ホストコンピュータ100は、メモリコントローラ300により読み出されたリードデータをリードデータバッファ130に保持させる(ステップS943)。ホストコンピュータ100は、一定範囲内の全ての閾値でリードデータを読み出したか否かを判断する(ステップS948)。全ての閾値で読み出していなければ(ステップS948:No)、ホストコンピュータ100は、ステップS947に戻る。一方、全ての閾値で読み出したのであれば(ステップS948:Yes)、ホストコンピュータ100は、各々のリードデータから軟判定値データを生成する(ステップS945)。
[メモリコントローラの動作例]
図54は、第5の実施の形態におけるリード処理の動作の一例を示すフローチャートである。第5の実施の形態のリード処理は、ステップS967の代わりにステップS968を実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、訂正停止信号を受信した場合(ステップS966:No)、閾値制御信号および符号語出力コマンドに従って、閾値を制御してリードデータを読み出し、ホストコンピュータ100に出力する(ステップS968)。ステップS968の後、メモリコントローラ300はステップS963を実行する。
このように第5の実施の形態によれば、メモリコントローラ300は、異なる閾値で読み出した複数のリードデータから軟判定値を生成して使用することにより、硬判定値を使用する場合よりも容易に誤りを訂正することができる。また、異なる閾値で読み出した複数のリードデータから生成した軟判定値は、データが正常に保持されている程度を示す値である。このため、その軟判定値に基づいて誤り訂正を行うことにより、データが正常に保持されていない場合に誤り訂正能力の低下を防止することができる。
[変形例]
第5の実施の形態では、ホストコンピュータ100は、複数回リードデータを読み出してから誤り訂正を行っていたが、リードデータを読み出すたびに誤り訂正を行ってもよい。第5の実施の形態の変形例のホストコンピュータ100は、リードデータを読み出すたびに誤り訂正を行う点において第5の実施の形態と異なる。
図55は、第5の実施の形態の変形例におけるホストコンピュータ100の動作の一例を示すフローチャートである。変形例のホストコンピュータ100は、リードデータを読み出すたびに高レベル軟判定誤り訂正処理を実行する点において第5の実施の形態と異なる。
具体的には、訂正失敗を示す訂正成否情報を受信した場合には(ステップS911:Yes)、ホストコンピュータ100は、閾値制御信号および符号語出力コマンドをメモリコントローラ300に出力する(ステップS947)。ホストコンピュータ10は、メモリコントローラ300により読み出されたリードデータをリードデータバッファ130に保持させ(ステップS943)、軟判定値データを生成する(ステップS945)。ホストコンピュータ10は、その軟判定値データを使用して高レベル軟判定誤り訂正処理を実行する(ステップS980)。
ホストコンピュータ100は、高レベル軟判定誤り訂正処理における誤り訂正が成功したか否かを判断する(ステップS946)。誤り訂正に失敗した場合には(ステップS946:No)、ホストコンピュータ100は、全ての閾値で読み出したか否かを判断する(ステップS948)。全ての閾値で読み出していない場合(ステップS948:No)、ホストコンピュータ100は訂正停止信号を生成してメモリコントローラ300への出力を開始する(ステップS941)。ステップS941の後、ホストコンピュータ100はステップS901に戻る。また、誤り訂正に成功した場合(ステップS946:Yes)、または、全ての閾値で読み出した場合(ステップS948:Yes)、ホストコンピュータ100は、誤り訂正の成否に基づいて処理を実行し、ステップS901に戻る。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
なお、本技術は以下のような構成もとることができる。
(1)所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正部と、
前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正部と
を具備するコントローラ。
(2)前記符号語は、複数の符号要素を含み、
前記符号語をメモリから読み出して前記低レベル誤り訂正部に供給するリード処理部と、
前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記メモリから前記符号語を読み出す符号語取得処理を複数回実行する符号語取得部と、
前記符号語取得部により読み出された符号語の各々に基づいて前記符号要素が特定の値となる確率に応じた軟判定値を前記符号要素ごとに生成して前記符号要素の各々の値を前記軟判定値に置き換えた前記符号語を前記高レベル軟判定誤り訂正部に供給する軟判定値生成部と
をさらに具備する前記(1)記載のコントローラ。
(3)前記軟判定値生成部は、前記符号語取得部により前記特定の値が読み出された頻度を前記符号要素ごとに求めて当該頻度に応じて前記軟判定値を生成する
前記(2)記載のコントローラ。
(4)前記符号要素の値を判断するための閾値を所定の範囲内で前記符号語取得処理が実行されるたびに変更する閾値制御部をさらに具備し、
前記軟判定値生成部は、前記特定の値の符号要素が読み出されたときの前記閾値のうち最大値または最小値に応じて前記軟判定値を生成する
前記(2)記載のコントローラ。
(5)前記軟判定値生成部は、前記符号語取得処理が複数回実行されてから前記軟判定値を生成し、
前記高レベル軟判定誤り訂正部は、前記軟判定値が生成されると前記高レベル軟判定誤り訂正処理を実行する
前記(2)乃至(4)のいずれかに記載のコントローラ。
(6)前記軟判定値生成部は、前記符号語取得処理が実行されるたびに前記軟判定値を生成し、
前記高レベル軟判定誤り訂正部は、前記軟判定値が生成されるたびに前記高レベル軟判定誤り訂正処理を実行する
前記(2)乃至(5)のいずれかに記載のコントローラ。
(7)前記低レベル誤り訂正部は、前記符号要素が特定の値となる確率に応じた軟判定値を前記符号要素ごとに生成して前記符号要素の各々の値を前記軟判定値に置き換えた前記符号語を前記高レベル軟判定誤り訂正部に供給する
前記(1)乃至(6)のいずれかに記載のコントローラ。
(8)記憶部から前記符号語を読み出すことを指示するリードコマンドを発行するホストコンピュータと、
前記リードコマンドに従って前記記憶部から前記符号語を読み出すリード処理部と、
所定のアルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正部と、
前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正部と
を具備する情報処理システム。
(9)前記ホストコンピュータは、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記高レベル軟判定誤り訂正処理の開始を指示する訂正開始コマンドを含む1つ以上のコマンドの実行順序を前記高レベル軟判定誤り訂正処理の処理時間に基づいて決定し、前記実行順序で前記コマンドの各々を前記高レベル軟判定誤り訂正部に供給し、
前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗し、かつ、前記訂正開始コマンドが供給されたときに前記高レベル軟判定誤り訂正処理を開始する
前記(8)記載の情報処理システム。
(10)前記ホストコンピュータは、前記低レベル誤り訂正部による誤りの訂正が失敗し、前記符号語を読み出す処理に対する割込みが発生した場合には前記高レベル軟判定誤り訂正処理の中断を指示するアボートコマンドを発行し、
前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記高レベル軟判定誤り訂正処理を実行し、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記アボートコマンドに従って前記実行していた高レベル軟判定誤り訂正処理を中断する
前記(8)または(9)に記載の情報処理システム。
(11)前記ホストコンピュータは、前記符号語の種類に基づいて前記高レベル軟判定誤り訂正処理を実行するか否かを示すイネーブル信号をさらに生成し、
前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記イネーブル信号に従って前記高レベル軟判定誤り訂正処理を実行する
前記(8)乃至(10)のいずれかに記載の情報処理システム。
(12) 前記ホストコンピュータは、前記符号語の種類に基づいて複数の前記高レベルアルゴリズムのうちのいずれかを指定し、
前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記指定された高レベルアルゴリズムを使用して前記符号語の誤りを訂正する
前記(8)乃至(11)のいずれかに記載の情報処理システム。
(13)記憶部から符号語を読み出して所定の復号アルゴリズムを使用して前記符号語の誤りを訂正する低レベル誤り訂正処理を実行するコントローラと、
前記コントローラによる誤りの訂正が失敗した場合には前記所定のアルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行するホストコンピュータと
を具備する情報処理システム。
(14)前記ホストコンピュータは、前記コントローラによる誤りの訂正が失敗した場合には前記符号語の出力を前記コントローラに指示する符号語出力コマンドを発行し、
前記コントローラは、前記符号語出力コマンドに従って前記符号語を前記記憶部から読み出して前記低レベル誤り訂正処理を実行せずに前記ホストコンピュータに出力する
前記(13)記載の情報処理システム。
(15)前記コントローラは、前記低レベル誤り訂正処理において前記符号語の誤りの訂正に成功したか否かを示す訂正成否情報を生成して前記ホストコンピュータに出力し、
前記ホストコンピュータは、前記訂正成否情報に基づいて前記コントローラによる誤りの訂正が失敗したか否かを判断する
前記(13)または(14)に記載の情報処理システム。
(16)低レベル誤り訂正部が、所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正手順と、
高レベル軟判定誤り訂正部が、前記低レベル誤り訂正手順において誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正手順と
を具備するコントローラの制御方法。
(17)低レベル誤り訂正部が、所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正手順と、
高レベル軟判定誤り訂正部が、前記低レベル誤り訂正手順において誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正手順と
をコンピュータに実行させるためのプログラム。
100 ホストコンピュータ
101 ユーザインターフェース
102、305 ROM
103、302 RAM
104、303 CPU
105、306 バス
106 ストレージインターフェース
110 符号語取得部
120 制御部
130、350 リードデータバッファ
140、380 高レベル軟判定誤り訂正部
150、370 誤り訂正プログラム記憶部
160 軟判定値生成部
170 閾値制御部
200 ストレージ
300 メモリコントローラ
301 ホストインターフェース
304 ECC処理部
307 不揮発性メモリインターフェース
310 符号化部
320 ライト処理部
330 リード処理部
340 誤り訂正部
360 低レベル誤り訂正部
361 低レベル誤り訂正回路
362、382 変数ノード処理部
363、383 変数ノード
364、384 検査ノード処理部
365、385 検査ノード
366、386 訂正成否判定部
381 高レベル誤り訂正処理部
390 符号語出力部
400 不揮発性メモリ

Claims (17)

  1. 所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正部と、
    前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正部と
    を具備するコントローラ。
  2. 前記符号語は、複数の符号要素を含み、
    前記符号語をメモリから読み出して前記低レベル誤り訂正部に供給するリード処理部と、
    前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記メモリから前記符号語を読み出す符号語取得処理を複数回実行する符号語取得部と、
    前記符号語取得部により読み出された符号語の各々に基づいて前記符号要素が特定の値となる確率に応じた軟判定値を前記符号要素ごとに生成して前記符号要素の各々の値を前記軟判定値に置き換えた前記符号語を前記高レベル軟判定誤り訂正部に供給する軟判定値生成部と
    をさらに具備する請求項1記載のコントローラ。
  3. 前記軟判定値生成部は、前記符号語取得部により前記特定の値が読み出された頻度を前記符号要素ごとに求めて当該頻度に応じて前記軟判定値を生成する
    請求項2記載のコントローラ。
  4. 前記符号要素の値を判断するための閾値を所定の範囲内で前記符号語取得処理が実行されるたびに変更する閾値制御部をさらに具備し、
    前記軟判定値生成部は、前記特定の値の符号要素が読み出されたときの前記閾値のうち最大値または最小値に応じて前記軟判定値を生成する
    請求項2記載のコントローラ。
  5. 前記軟判定値生成部は、前記符号語取得処理が複数回実行されてから前記軟判定値を生成し、
    前記高レベル軟判定誤り訂正部は、前記軟判定値が生成されると前記高レベル軟判定誤り訂正処理を実行する
    請求項2記載のコントローラ。
  6. 前記軟判定値生成部は、前記符号語取得処理が実行されるたびに前記軟判定値を生成し、
    前記高レベル軟判定誤り訂正部は、前記軟判定値が生成されるたびに前記高レベル軟判定誤り訂正処理を実行する
    請求項2記載のコントローラ。
  7. 前記低レベル誤り訂正部は、前記符号要素が特定の値となる確率に応じた軟判定値を前記符号要素ごとに生成して前記符号要素の各々の値を前記軟判定値に置き換えた前記符号語を前記高レベル軟判定誤り訂正部に供給する
    請求項1記載のコントローラ。
  8. 記憶部から前記符号語を読み出すことを指示するリードコマンドを発行するホストコンピュータと、
    前記リードコマンドに従って前記記憶部から前記符号語を読み出すリード処理部と、
    所定のアルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正部と、
    前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正部と
    を具備する情報処理システム。
  9. 前記ホストコンピュータは、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記高レベル軟判定誤り訂正処理の開始を指示する訂正開始コマンドを含む1つ以上のコマンドの実行順序を前記高レベル軟判定誤り訂正処理の処理時間に基づいて決定し、前記実行順序で前記コマンドの各々を前記高レベル軟判定誤り訂正部に供給し、
    前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗し、かつ、前記訂正開始コマンドが供給されたときに前記高レベル軟判定誤り訂正処理を開始する
    請求項8記載の情報処理システム。
  10. 前記ホストコンピュータは、前記低レベル誤り訂正部による誤りの訂正が失敗し、前記符号語を読み出す処理に対する割込みが発生した場合には前記高レベル軟判定誤り訂正処理の中断を指示するアボートコマンドを発行し、
    前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記高レベル軟判定誤り訂正処理を実行し、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記アボートコマンドに従って前記実行していた高レベル軟判定誤り訂正処理を中断する
    請求項8記載の情報処理システム。
  11. 前記ホストコンピュータは、前記符号語の種類に基づいて前記高レベル軟判定誤り訂正処理を実行するか否かを示すイネーブル信号をさらに生成し、
    前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記イネーブル信号に従って前記高レベル軟判定誤り訂正処理を実行する
    請求項8記載の情報処理システム。
  12. 前記ホストコンピュータは、前記符号語の種類に基づいて複数の前記高レベルアルゴリズムのうちのいずれかを指定し、
    前記高レベル軟判定誤り訂正部は、前記低レベル誤り訂正部による誤りの訂正が失敗した場合には前記指定された高レベルアルゴリズムを使用して前記符号語の誤りを訂正する
    請求項8記載の情報処理システム。
  13. 記憶部から符号語を読み出して所定の復号アルゴリズムを使用して前記符号語の誤りを訂正する低レベル誤り訂正処理を実行するコントローラと、
    前記コントローラによる誤りの訂正が失敗した場合には前記所定のアルゴリズムよりも誤り訂正能力が高い軟判定復号アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行するホストコンピュータと
    を具備する情報処理システム。
  14. 前記ホストコンピュータは、前記コントローラによる誤りの訂正が失敗した場合には前記符号語の出力を前記コントローラに指示する符号語出力コマンドを発行し、
    前記コントローラは、前記符号語出力コマンドに従って前記符号語を前記メモリから読み出して前記低レベル誤り訂正処理を実行せずに前記ホストコンピュータに出力する
    請求項13記載の情報処理システム。
  15. 前記コントローラは、前記低レベル誤り訂正処理において前記符号語の誤りの訂正に成功したか否かを示す訂正成否情報を生成して前記ホストコンピュータに出力し、
    前記ホストコンピュータは、前記訂正成否情報に基づいて前記コントローラによる誤りの訂正が失敗したか否かを判断する
    請求項13記載の情報処理システム。
  16. 低レベル誤り訂正部が、所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正手順と、
    高レベル軟判定誤り訂正部が、前記低レベル誤り訂正手順において誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正手順と
    を具備するコントローラの制御方法。
  17. 低レベル誤り訂正部が、所定の復号アルゴリズムを使用して符号語の誤りを訂正する低レベル誤り訂正処理を実行する低レベル誤り訂正手順と、
    高レベル軟判定誤り訂正部が、前記低レベル誤り訂正手順において誤りの訂正が失敗した場合には前記所定の復号アルゴリズムよりも誤り訂正能力が高い軟判定アルゴリズムである高レベルアルゴリズムを使用して前記符号語の誤りを訂正する高レベル軟判定誤り訂正処理を実行する高レベル軟判定誤り訂正手順と
    をコンピュータに実行させるためのプログラム。
JP2013008257A 2013-01-21 2013-01-21 コントローラ、情報処理システム、コントローラの制御方法およびプログラム Pending JP2014140111A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013008257A JP2014140111A (ja) 2013-01-21 2013-01-21 コントローラ、情報処理システム、コントローラの制御方法およびプログラム
CN201410016125.3A CN103942154B (zh) 2013-01-21 2014-01-14 控制器、信息处理系统、控制器的控制方法以及程序
US14/156,024 US9385754B2 (en) 2013-01-21 2014-01-15 Controller, information processing system, method of controlling controller, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013008257A JP2014140111A (ja) 2013-01-21 2013-01-21 コントローラ、情報処理システム、コントローラの制御方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2014140111A true JP2014140111A (ja) 2014-07-31

Family

ID=51189826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013008257A Pending JP2014140111A (ja) 2013-01-21 2013-01-21 コントローラ、情報処理システム、コントローラの制御方法およびプログラム

Country Status (3)

Country Link
US (1) US9385754B2 (ja)
JP (1) JP2014140111A (ja)
CN (1) CN103942154B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10256838B2 (en) 2015-05-08 2019-04-09 Kabushiki Kaisha Toshiba Decoding apparatus, decoding method, and computer program product
US10908994B2 (en) 2019-03-19 2021-02-02 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
US11637566B2 (en) 2021-05-26 2023-04-25 Fujitsu Limited Storage device and control method for storage device

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258215B2 (en) * 2013-01-02 2016-02-09 Infinera Corporation Optical layer protection switching applications
JP2014140111A (ja) * 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
JP2016062463A (ja) * 2014-09-19 2016-04-25 株式会社東芝 メモリシステム、誤り訂正装置、および誤り訂正方法
US10084481B2 (en) 2014-12-18 2018-09-25 Apple Inc. GLDPC soft decoding with hard decision inputs
DE102015104841B4 (de) * 2015-03-30 2024-08-14 Infineon Technologies Ag Chip und Verfahren zum Detektieren einer Veränderung eines gespeicherten Datenvektors
US9542269B1 (en) * 2015-06-29 2017-01-10 SK Hynix Inc. Controller controlling semiconductor memory device and operating method thereof
US9817716B2 (en) 2015-07-16 2017-11-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for retaining non-converged data sets for additional processing
US10133627B2 (en) * 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
KR20170133545A (ko) * 2016-05-25 2017-12-06 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US10409672B2 (en) * 2016-11-16 2019-09-10 SK Hynix Inc. Media quality aware ECC decoding method selection to reduce data access latency
US10636504B2 (en) * 2017-10-31 2020-04-28 Sandisk Technologies Llc Read verify for improved soft bit information for non-volatile memories with residual resistance

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3863058B2 (ja) * 2001-09-13 2006-12-27 三菱電機株式会社 光受信装置
CA2540112A1 (en) * 2003-10-24 2005-05-12 Tyco Telecommunications (Us) Inc. System and method for adjusting soft decision thresholds in a soft-decision error correction system
JP4261575B2 (ja) * 2006-11-30 2009-04-30 株式会社東芝 誤り訂正処理装置及び誤り訂正処理方法
WO2010029830A1 (ja) * 2008-09-12 2010-03-18 株式会社日立製作所 半導体装置および情報処理システム
US8473815B2 (en) * 2008-12-22 2013-06-25 Industrial Technology Research Institute Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data
JP5502363B2 (ja) * 2009-04-28 2014-05-28 三菱電機株式会社 光伝送装置および光伝送方法
JP2011065599A (ja) * 2009-09-18 2011-03-31 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
RU2527207C2 (ru) * 2010-04-27 2014-08-27 Нек Корпорейшн Устройство кодирования, способ конфигурирования кода с исправлением ошибок и программа для них
JP2012160229A (ja) * 2011-01-31 2012-08-23 Toshiba Corp 情報再生装置及び情報再生方法
KR101968746B1 (ko) * 2011-12-30 2019-04-15 삼성전자주식회사 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
KR102089570B1 (ko) * 2012-06-04 2020-03-16 삼성전자주식회사 저장 장치 및 그것의 데이터 처리 방법
JP5591876B2 (ja) * 2012-06-22 2014-09-17 株式会社東芝 誤り訂正装置、誤り訂正方法およびプログラム
JP2014140111A (ja) * 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
KR102252379B1 (ko) * 2013-06-24 2021-05-14 삼성전자주식회사 메모리 시스템 및 이의 독출 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10256838B2 (en) 2015-05-08 2019-04-09 Kabushiki Kaisha Toshiba Decoding apparatus, decoding method, and computer program product
US10908994B2 (en) 2019-03-19 2021-02-02 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
US11637566B2 (en) 2021-05-26 2023-04-25 Fujitsu Limited Storage device and control method for storage device

Also Published As

Publication number Publication date
US20140208182A1 (en) 2014-07-24
CN103942154A (zh) 2014-07-23
US9385754B2 (en) 2016-07-05
CN103942154B (zh) 2018-10-23

Similar Documents

Publication Publication Date Title
JP2014140111A (ja) コントローラ、情報処理システム、コントローラの制御方法およびプログラム
US8448050B2 (en) Memory system and control method for the same
CN102077173B (zh) 利用写入验证减轻代码的误码平层
JP2014154899A (ja) 誤り検出訂正装置、誤り検出訂正方法、情報処理装置、および、プログラム
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
US9529666B2 (en) Decoding method, memory storage device and memory controlling circuit unit
US10333558B2 (en) Decoding device and decoding method
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
WO2016063592A1 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP6540703B2 (ja) メモリコントローラおよびメモリコントローラの制御方法
JP2014116927A (ja) 誤訂正ハンドリング処理を伴う低密度パリティ検査復号化器
US20150263760A1 (en) Soft and hard decision message-passing decoding
US8751895B2 (en) Semiconductor memory device and decoding method
JP7039298B2 (ja) メモリシステム
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
TW201939902A (zh) 用於多個字元線失敗的軟晶片消除恢復
JP6657634B2 (ja) 符号化装置、メモリシステム、通信システムおよび符号化方法
JP2019057812A (ja) メモリシステム
CN106681856B (zh) 解码方法、存储器存储装置及存储器控制电路单元
WO2023246473A1 (zh) 一种译码方法、芯片及相关装置
KR20160075001A (ko) 플래시 메모리 시스템 동작 방법
KR102678314B1 (ko) 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법
KR101547858B1 (ko) 심볼 재그룹화 디코딩 프로세싱을 위한 시스템 및 방법
JP2020135391A (ja) メモリシステム
US10592334B2 (en) Data storage device emphasizing parity sector processing of un-converged codewords