JP5330428B2 - データ記憶装置及び誤り検出訂正方法 - Google Patents

データ記憶装置及び誤り検出訂正方法 Download PDF

Info

Publication number
JP5330428B2
JP5330428B2 JP2011034601A JP2011034601A JP5330428B2 JP 5330428 B2 JP5330428 B2 JP 5330428B2 JP 2011034601 A JP2011034601 A JP 2011034601A JP 2011034601 A JP2011034601 A JP 2011034601A JP 5330428 B2 JP5330428 B2 JP 5330428B2
Authority
JP
Japan
Prior art keywords
error
data
error detection
logical address
correction
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.)
Expired - Fee Related
Application number
JP2011034601A
Other languages
English (en)
Other versions
JP2012173933A (ja
Inventor
祐行 茂呂
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011034601A priority Critical patent/JP5330428B2/ja
Priority to US13/301,649 priority patent/US8732554B2/en
Publication of JP2012173933A publication Critical patent/JP2012173933A/ja
Application granted granted Critical
Publication of JP5330428B2 publication Critical patent/JP5330428B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/13Linear 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative 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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)

Description

本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置に関する。
近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ(以下、単にフラッシュメモリと表記する場合がある)を記憶媒体とするSSD(solid state drive)の開発が推進されている。
SSDは、フラッシュメモリからアクセス対象のデータを読み出すと、ホストシステムに転送する前に、誤り検出訂正(ECC:error checking and correcting)処理を実行する。以下、誤り検出訂正処理をECC処理と表記する場合がある。
SSDは、ECC処理により誤り(エラー)が検出されないデータまたはエラー訂正後のデータを、アクセス要求を行なったホストシステムに転送する。ところで、SSDは、データ読み出し動作時に、アクセス対象のデータ(ユーザデータと呼ぶ場合がある)だけでなく、所定の単位(例えばセクタ)のデータフォーマットに含まれる論理ブロックアドレス(LBA)などのデータに対してもECC処理を実行する。
特開2010−108029号公報
SSDでは、ECC処理によりエラーが検出された場合には、エラー訂正処理が実行される。エラー訂正処理では、予めエラー訂正能力が決定されており、その限界を超えた場合にはエラー訂正不能と判定される。具体的には、ユーザデータとLBAを含めて、例えば8ビットのエラーまで訂正可能である場合に、9ビットのエラーが検出されるとエラー訂正不能と判定される。
SSDは、エラー訂正不能と判定された場合には、フラッシュメモリからデータを再度読み出し、ECC処理を再実行するような処理を行なう。このような再度の読み出し処理を伴うECC処理の再実行は、SSDのリード処理効率を低下させる要因となる。
そこで、本発明の目的は、エラー訂正不能と判定された場合に、ECC処理の再実行を効率的に行なうことを実現し、リード処理効率を向上できるデータ記憶装置を提供することにある。
実施形態によれば、データ記憶装置は、リード手段と、誤り検出手段と、制御手段とを具備する。前記リード手段は、不揮発性メモリから、リードコマンドに含まれる第1の論理アドレスにより指定されるデータ及び当該データを特定する第2の論理アドレスを読み出す。前記誤り検出手段は、前記リード手段により読み出されたデータ及び前記第2の論理アドレスに対する誤り検出処理を実行する。前記制御手段は、前記誤り検出手段による検出結果に基づいて誤り訂正が不能である場合に、前記第1の論理アドレスと前記第2の論理アドレスとに基づいて再度の誤り検出処理を前記誤り検出手段に実行させる。
実施形態に関するデータ記憶装置の構成を説明するためのブロック図。 実施形態に関するECCモジュールの構成を説明するためのブロック図。 実施形態に関するデータフォーマットを説明するための図。 実施形態に関するフラッシュメモリのデータ記憶状態を説明するための図。 実施形態に関するコマンドフォーマットを説明するための図。 実施形態に関するECC処理の手順を説明するためのフローチャート。 実施形態に関するECCエンコーダの一例を示す図。 実施形態に関するECCデコーダの一例を示す図。
以下図面を参照して、実施形態を説明する。
[データ記憶装置の構成]
図1は、実施形態のデータ記憶装置の構成を示すブロック図である。
図1に示すように、実施形態のデータ記憶装置はSSD(solid state drive)であり、大別してSSDコントローラ10と、NAND型フラッシュメモリ(フラッシュメモリ)19とを有する。フラッシュメモリ19はSSDのデータ記憶媒体であり、複数のチャネルに対応するフラッシュメモリ19-1〜19-nからなる。
SSDコントローラ10は、ホストインターフェース11と、マイクロプロセッサ(MPU)12と、コマンド処理モジュール13と、レジスタ群14と、フラッシュメモリコントローラ(以下、メモリコントローラと表記する)15とを有する。
ホストインターフェース11は、SSDとホストシステム(例えばパーソナルコンピュータ)20とのインターフェースであり、ホストシステム20との間でコマンドやデータの転送を制御する。ホストインターフェース11は、ホストシステム20からのデータアクセス要求に応じて、後述するようなフォーマットからなるコマンド111を生成してMPU12に転送する。
MPU12は図示しないシステムバスを介して、ホストインターフェース11、コマンド処理モジュール13、レジスタ群14及びメモリコントローラ15と接続し、各種の制御を実行する。MPU12は、レジスタ群14に対して各種の制御に必要なコマンド、データ、値などを設定する。
コマンド処理モジュール13は、MPU12によりレジスタ群14のコマンドレジスタに設定されたコマンド111を解釈し、メモリコントローラ15に対してリードコマンド又はライトコマンド等のコマンドを発行する。
メモリコントローラ15は、調停モジュール(以下、アービタと表記する)16と、NANDコントローラ17とを有する。NANDコントローラ17は、ライト動作、リード動作、イレース(消去)動作などに関して、フラッシュメモリ19を制御する。NANDコントローラ17は、フラッシュメモリ19-1〜19-nをそれぞれ個別に制御するチャネル毎のNANDコントローラ17-1〜17-nからなる。さらに、NANDコントローラ17-1〜17-nはそれぞれ、後述する誤り検出訂正モジュール(以下、ECCモジュールと表記する)18-1〜18-n及びリードモジュールを有する。図示しないリードモジュールは、フラッシュメモリ19-1〜19-nからデータを読み出すリード動作を実行する。
なお、本実施形態のSSDでは、ライト動作は、各チャネルのフラッシュメモリ19-1〜19-nに対して、データを並列に書き込むマルチチャネル方式である。また、フラッシュメモリに対するライト動作はプログラム動作と呼ばれる場合がある。
アービタ16は、NANDコントローラ17-1〜17-nに接続し、ライト動作、リード動作、イレース動作のタイミングを調整する。また、アービタ16は、NANDコントローラ17-1〜17-nに対して、コマンドやデータの転送を調整する。
図2は、NANDコントローラ17-1〜17-nに設けられるECCモジュール18-1〜18-nの構成を示すブロック図である。各ECCモジュール18-1〜18-nは同一構成である。ここでは、便宜的にECCモジュール18をそれぞれの代表として説明する。
図2に示すように、ECCモジュール18は、データバッファ181と、エラー訂正部182と、シンドローム計算部183と、エラー検出器184と、エラー特定部185と、LBA差分計算部186と、シンドローム補正計算部187と、補正切り換え部188とを有する。
データバッファ181は、フラッシュメモリ19から読み出されたセクタ単位のデータ100を保持し、エラー訂正部182及びシンドローム計算部183に出力する。データ100は、後述するように、ユーザデータ110と論理ブロックアドレス(以下、LBAと表記する)120を有する。エラー訂正部182は、エラー訂正処理の準備が完了すると、データバッファ181から出力されるデータに対して、エラー特定部185からのエラー位置情報に基づいてデータのエラー(エラービット)を訂正する。
シンドローム計算部183は、データバッファ181からのデータに対してシンドローム(syndrome)を算出する。シンドロームは、エラー位置を特定するための情報である。エラー検出器184は、シンドローム計算部183で算出されたシンドロームを使用してエラーを検出する。即ち、エラー検出器184は、エラーの有無を判定し、エラー判定結果210を出力する。エラー判定結果210は、アービタ16を経由してMPU12に転送される。エラー検出器184は、エラー判定結果としてエラーを検出した場合には、エラー特定部185にシンドロームを引き渡す。
エラー特定部185はエラー検出器184からのシンドロームに基づいて、エラー位置を特定し、当該エラー位置情報をエラー訂正部182に出力する。エラー訂正部182は、エラー訂正後のデータ200を出力する。
LBA差分計算部186は、フラッシュメモリ19から読み出されたデータ100に含まれるLBA(値M)120と、リードコマンドの引数として与えられたLBA(値C)113とを入力とし、これらの差分を算出する。LBA差分計算部186は、計算結果をシンドローム補正計算部187に出力する。LBA(値C)は、後述するように、ホストインターフェース11により生成されて、レジスタ群14に設定されているコマンドフォーマット111に含まれる論理ブロックアドレスである。
シンドローム補正計算部187は、LBA差分計算部186からの情報(差分結果)に基づいて、シンドローム計算部183で算出されたシンドロームに対する補正値を算出する。補正切り換え部188は、補正オンの場合に補正値をシンドローム計算部183に出力する。補正切り換え部188は、エラー検出器184からの補正オン/オフの切り替え指示に応じて、補正オンの場合には補正値を出力し、補正オフの場合には補正値の出力を停止する。
ここで、エラー検出器184は、エラー検出結果(エラー判定)に基づいて、エラー訂正部182でのエラー訂正能力を超えるエラー状態を検出した場合には、訂正不能であると判定し、補正切り換え部188に対して補正オンを指示する。逆に、エラー検出器184は、検出したエラー状態がエラー訂正部182でエラー訂正可能であれば、補正切り換え部188に対して補正オフを指示する。エラー訂正部182でのエラー訂正能力とは、データ100のビット数で、例えば8ビットまでのエラーに対してエラー訂正可能であると想定する。従って、エラー検出器184は、9ビット以上のエラーを検出した場合には、エラー訂正不能であると判定する。
[ECC処理]
以下、図6のフローチャートを参照して、本実施形態のECC処理を説明する。
SSDでは、NANDコントローラ17-1〜17-nはそれぞれ、コマンド処理モジュール13により発行されるリードコマンドに応じて、フラッシュメモリ19-1〜19-nからLBA(値C)により指定されるLBA(値M)のデータを読み出す(ブロック600)。ECCモジュール18-1〜18-nはそれぞれ、読み出されたデータに対するECC処理を実行する。なお、本実施形態では、便宜的に1つのチャネルに対するデータ読み出し動作と、ECC処理を説明する。
図3は、データフォーマットを示す図である。図3に示すように、1エントリとして例えばセクタ単位のデータフォーマット100は大別して、ユーザデータ110とLBA(値M)120からなる。ユーザデータ110は、ホストシステム20からのアクセス対象データである。LBA(M)120は、当該ユーザデータ110を指定するための指定データであり、フラッシュメモリ19内の格納位置を示すアドレスデータである。図4に示すように、フラッシュメモリ19には、図3に示すデータフォーマット100からなるデータ群が整列して記憶されている。
図5は、コマンド処理モジュール13により発行されて、SSDコントローラ10内で取り扱われるコマンド111のフォーマットである。コマンドフォーマットは、フラッシュメモリ19に対してデータの読み出し又はライトを区別するためのフラグ112、アクセス対象データを指定するLBA(C)113、及びその他の属性を示すデータ114からなる。フラグ112がデータの読み出しを示すコマンド111は、便宜的にリードコマンドと呼ぶ。また、LBA(C)113は、フラッシュメモリ19内のデータフォーマット100のLBA(M)120に対応するものである。LBA(C)113により、値Cと同一の値MのLBA(M)120が付加されたデータ110がアクセス対象データとして指定される。
図2に示すように、ECCモジュール18は、フラッシュメモリ19から読み出されたデータ100を入力し、データバッファ181に格納する。シンドローム計算部183は、データバッファ181からのデータに対してシンドローム(syndrome)を算出し、エラー検出器184に出力する。エラー検出器184は、シンドロームを使用してエラー検出処理を実行し、エラー判定結果210を出力する(ブロック601)。
ここで、エラー検出器184からエラーが存在しないエラー判定結果210が出力されると、NANDコントローラ17は、読み出し完了として処理する(ブロック602のNO,603)。なお、通常では、NANDコントローラ17は、読み出したデータを一時的に格納するバッファを有する。メモリコントローラ15は、NANDコントローラ17からクラスタ単位(例えば8セクタ)のデータ読み出しが完了すると、ホストインターフェース11へのデータ転送を実行する。
エラー検出器184は、エラー判定結果としてエラーを検出した場合には、前述のエラー訂正部182でのエラー訂正能力に基づいて、そのエラーが訂正可能または訂正不能であるかをチェックする(ブロック604)。
エラー検出器184により訂正可能と判定された場合には、エラー訂正部182は、エラー訂正処理を実行し、エラー訂正後のデータ200を出力する(ブロック605)。ここで、エラー訂正部182は、前述したように、エラー特定部185からのエラー位置情報に基づいてエラー訂正処理を実行する。エラー訂正部182による訂正処理が完了すると、NANDコントローラ17は、読み出し完了として処理する(ブロック603)。
一方、エラー検出器184により訂正不能と判定された場合には、LBA差分計算部186は、フラッシュメモリ19から読み出されたデータ100に含まれるLBA(M)120と、リードコマンドのLBA(C)113とを入力とし、これらの差分を算出する(ブロック606)。
ここで、差分がなく、即ち読み出されたLBA(M)がリードコマンドのLBA(C)と同一の場合には、LBA(M)にはエラーが存在しないことになる(ブロック607のNO)。この場合、ECCモジュール18は、エラー訂正不能としてECC処理を終了する(ブロック608)。即ち、本実施形態のECCモジュール18は、後述するように、LBA(M)のシンドロームの補正処理後に再度のエラー検出処理を実行する。LBA(M)にはエラーが存在しない場合には、再度のエラー検出処理の結果は同じであるため、エラー訂正不能としてECC処理を終了することになる。
LBA差分計算部186により差分が有る場合には、LBA(M)にはエラービットが存在することになる(ブロック607のYES)。そこで、シンドローム補正計算部187は、LBA差分計算部186からの差分結果に基づいて、シンドローム計算部183で算出されたシンドロームの修正処理を実行する(ブロック609)。具体的には、シンドローム補正計算部187は、エラービットを含むLBA(M)のシンドロームを、LBA(C)に基づいたシンドロームに補正する補正値を算出する。
ここで、エラー検出器184は、エラー訂正不能であると判定した場合には、補正切り換え部188に対して補正オンを指示する。これにより、補正切り換え部188は、シンドローム補正計算部187により算出された補正値をシンドローム計算部183に出力する。
シンドローム計算部183は、最初に計算したシンドロームを保持しており、当該シンドロームの中でLBA(M)に対応する部分を補正値に置き換えたシンドロームを、エラー検出器184に出力する。これにより、エラー検出器184は、補正値を含むシンドロームを使用して、再度のエラー検出処理を実行する(ブロック610)。
ここで、エラー検出器184からエラーが存在しないエラー判定結果210が出力されると、NANDコントローラ17は、読み出し完了として処理する(ブロック611のNO,603)。一方、エラーを検出した場合には、エラー検出器184は、再度、そのエラーが訂正可能または訂正不能であるかをチェックする(ブロック612)。
エラー検出器184により訂正可能と判定された場合には、エラー訂正部182は、エラー訂正処理を実行し、エラー訂正後のデータ200を出力する(ブロック613)。また、エラー検出器184により訂正不能と判定された場合には、ECCモジュール18は、エラー訂正不能としてECC処理を終了する(ブロック612のYES,608)。
以上のように本実施形態によれば、フラッシュメモリ19から読み出されたデータ100に対するECC処理において、エラー検出処理でエラー訂正不能であると判定される場合に、LBA(C)に基づいたLBA(M)の修正処理により、再度のエラー検出処理を実行する。具体的には、LBA(M)に対するシンドロームを補正した補正値を使用して、再度のエラー検出処理を実行する。
このような方法により、エラー訂正不能であると判定された場合に、データ100の再読み出しを行なうことなく、効率的に再度のエラー検出処理を実行することが可能となる。即ち、エラー訂正部182でのエラー訂正能力が例えば8ビットの場合に、ユーザデータ110に8ビットのエラーが存在し、さらに1ビットのエラーがLBA(M)に存在するとエラー訂正能力を超える。このため、最初のエラー検出処理により、エラー訂正不能であると判定される。このような場合に、本実施形態であれば、LBA(M)の修正処理後の再度のエラー検出処理により、訂正可能の判定を得る可能性が高くなる。従って、結果としてECCモジュール18の訂正能力以上のエラー発生に対しても訂正が行える可能性が高くなる。
また、本実施形態の方法であれば、フラッシュメモリ19のエラー数の増加を示す統計情報を収集して記録する処理も、効率的に行なうことが可能となる。
なお、本実施形態の変形例として、LBA(M)をLBA(C)に基づいて補正し、この補正したLBA(M)とユーザデータとを使用して、再度のシンドローム計算を実行する方法でも良い。但し、この方法では、データバッファ181からユーザデータ110の再読み出しが必要となる。
[ECCエンコーダ及びECCデコーダ]
図7は、ECCエンコーダの一例を示す機能ブロック図である。
本実施形態のECCモジュール18は、リード動作時に前述のECC処理を実行する場合に、ECCエンコーダにより生成されるエラー訂正符号を使用する。ECCエンコーダは、フラッシュメモリ19にデータを書き込むライト動作時に、LBA(M)及びユーザデータを有するデータを使用してエラー訂正符号を生成する。
図7に示すように、ECCエンコーダは、データ保持要素701,702と、ガロワ体(Galois field)の乗算器703,704と、ガロワ体の加算器705,706とを有する。データ保持要素701,702は例えばフリップフロップであり、ここでは符号値R1,R0を保持している状態を示す。乗算器703,704はそれぞれ、α25倍器とα倍器である。
ECCエンコーダは、下記式(1)の生成多項式(generator polynomial)で示される255シンボルのコード長に対して、1シンボルの訂正能力を持つGF(2)上のRS符号(255,253,1)を生成する。RS符号は、リードソロモン符号(Reed-Solomon code)である。
+Xα25+α…(1)
なお、シンドローム生成項(syndrome generators)は、X−1,X−αとなる。
ECCエンコーダは、入力データを1クロックで1シンボルずつ入力し、入力が完了した時点でのデータ保持要素701,702で保持されている符号値R1,R0をエラー訂正符号として生成する。
図8は、図7に示すECCエンコーダと対になるECCデコーダの一例を示す機能ブロック図である。
図8に示すECCデコーダは、ECCモジュール18のシンドローム計算部183またはシンドローム補正計算部187の機能を実現する構成である。図8に示すように、ECCデコーダは、データ保持要素811,812と、ガロワ体(Galois field)の乗算器813,814と、ガロワ体の加算器815,816とを有する。
データ保持要素811,812は例えばフリップフロップであり、ここではシンドロームの値S0,S1を保持している状態を示す。乗算器813,814はそれぞれ、α倍器、α倍器である。
ECCデコーダは、入力データを1クロックで1シンボルずつ入力し、入力が完了した時点でデータ保持要素811,812に保持されている値S0,S1をシンドロームとして導出する。ここで、図8に示すように、シンドロームS0,S1の計算は独立しており、相互の計算結果は影響しない。シンドローム計算後にデータ保持要素811,812に保持されている値が両方とも0の場合には、エラー無しの判定となる。
ここで、デコードする入力データを、I、I、I、…、Iとした場合に、データ保持要素811に保持される値S0は、下記式(2)により算出される。
S0=I(α+I(α(n−1)+I(α(n−2)+ … +I…(2)
また、データ保持要素812に保持される値S1は、下記式(3)により算出される。
S1=I(α+I(α(n−1)+I(α(n−2)+ … +I…(3)
ここで、シンドローム補正計算部187によるシンドローム補正計算は、入力データとしてLBA(M)とLBA(C)との違いが有る部分の項を入れ替えることで実現される。
例えばIが異なるのであれば、前記式(2),(3)から、I(α(n−2)及びI(α(n−2)の項を減算し、それぞれ入れ替えたい値であるI2aから算出したI2a (α(n−2)及びI2a (α(n−2)を加算する。
即ち、補正後のシンドロームをS0a及びS1aとした場合、ガロワ体の減算は加算という性質を利用すると、S0a及びS1aは、下記式(4),(5)から算出される。
S0a=S0−I(α(n−2)+I2a(α(n−2)
S0+(I−I2a)(α(n−2)…(4)
S1a=S1−I(α(n−2)+I2a(α(n−2)
S1+(I−I2a)(α(n−2)…(5)
以上のように、シンドロームS0,S1を補正する値は、入力データの差分にそれぞれα及びαの(入力データ位置)乗を乗じた値を加算すれば容易に算出できることがわかる。
なお、図7及び図8に示すECCエンコーダ及びECCデコーダは、便宜的にRS符号に関する構成として説明したが、これに限ることはない。例えば、データフォーマット100におけるデータ長が4Kバイトであれば、GF(213)上のBCH(Bose-Chaudhuri-Hocquenghem)符号に関する構成でもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…SSDコントローラ、11…ホストインターフェース、
12…マイクロプロセッサ(MPU)、13…コマンド処理モジュール、
14…レジスタ群、15…フラッシュメモリコントローラ、
16…調停モジュール(アービタ)、17,17-1〜17-n…NANDコントローラ、
18,18-1〜18-n…誤り検出訂正モジュール(ECCモジュール)、
19,19-1〜19-n…NAND型フラッシュメモリ(フラッシュメモリ)、
20…ホストシステム。

Claims (9)

  1. 不揮発性メモリから、リードコマンドに含まれる第1の論理アドレスにより指定されるデータ及び当該データを特定する第2の論理アドレスを読み出すリード手段と、
    前記リード手段により読み出されたデータ及び前記第2の論理アドレスに対する誤り検出処理を実行する誤り検出手段と、
    前記誤り検出手段による検出結果に基づいて誤り訂正が不能である場合に、前記第1の論理アドレスと前記第2の論理アドレスとに基づいて再度の誤り検出処理を前記誤り検出手段に実行させる制御手段と
    を具備するデータ記憶装置。
  2. 前記制御手段は、
    前記第1の論理アドレスと前記第2の論理アドレスとの差分を算出し、
    前記差分に基づいて前記再度の誤り検出処理を前記誤り検出手段に実行させる請求項1に記載のデータ記憶装置。
  3. 前記制御手段は、
    前記第2の論理アドレスを前記第1の論理アドレスに変更し、変更後の前記第2の論理アドレスに基づいて前記再度の誤り検出処理を前記誤り検出手段に実行させる請求項1に記載のデータ記憶装置。
  4. 前記誤り検出手段は、前記データ及び前記第2の論理アドレスに対するシンドローム計算を実行し、当該シンドローム計算結果に基づいて最初の誤り検出処理を行なう手段を含み、
    前記制御手段は、
    前記差分に基づいて前記シンドローム計算結果を補正し、
    前記補正値に基づいて前記再度の誤り検出処理を前記誤り検出手段に実行させる請求項2に記載のデータ記憶装置。
  5. 前記制御手段は、
    前記第2の論理アドレスに対するシンドロームを前記第1の論理アドレスに対するシンドロームに補正する手段を含む請求項4に記載のデータ記憶装置。
  6. 前記制御手段は、
    前記差分がない場合に、前記誤り訂正が不能であることを確定する手段を含む請求項2に記載のデータ記憶装置。
  7. 前記制御手段は、
    前記再度の誤り検出処理による検出結果に基づいて誤り訂正が不能である場合には、前記誤り訂正が不能であることを確定する手段を含む請求項1に記載のデータ記憶装置。
  8. 前記誤り検出手段は、前記データ及び前記第2の論理アドレスに対するシンドローム計算を実行し、当該シンドローム計算結果に基づいて最初の誤り検出処理を行なう手段を含み、
    前記制御手段は、
    前記第1の論理アドレスと前記第2の論理アドレスとに基づいて補正した補正後の前記第2の論理アドレス及び前記データに対する前記シンドローム計算を再実行し、
    前記再実行後のシンドローム計算結果に基づいて前記再度の誤り検出処理を行なう手段を含む請求項1に記載のデータ記憶装置。
  9. 不揮発性メモリから、リードコマンドに含まれる第1の論理アドレスにより指定されるデータ及び当該データを特定する第2の論理アドレスを読み出すリード手段を有するデータ記憶装置に適用する誤り検出訂正方法であって、
    前記リード手段により読み出されたデータ及び前記第2の論理アドレスに対する誤り検出処理を実行し、
    前記誤り検出処理による検出結果に基づいて誤り訂正が不能である場合に、前記第1の論理アドレスと前記第2の論理アドレスとに基づいて再度の誤り検出処理を実行する誤り検出訂正方法。
JP2011034601A 2011-02-21 2011-02-21 データ記憶装置及び誤り検出訂正方法 Expired - Fee Related JP5330428B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011034601A JP5330428B2 (ja) 2011-02-21 2011-02-21 データ記憶装置及び誤り検出訂正方法
US13/301,649 US8732554B2 (en) 2011-02-21 2011-11-21 Data storage device and method for checking and correcting errors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011034601A JP5330428B2 (ja) 2011-02-21 2011-02-21 データ記憶装置及び誤り検出訂正方法

Publications (2)

Publication Number Publication Date
JP2012173933A JP2012173933A (ja) 2012-09-10
JP5330428B2 true JP5330428B2 (ja) 2013-10-30

Family

ID=46653769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011034601A Expired - Fee Related JP5330428B2 (ja) 2011-02-21 2011-02-21 データ記憶装置及び誤り検出訂正方法

Country Status (2)

Country Link
US (1) US8732554B2 (ja)
JP (1) JP5330428B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034603B (zh) * 2012-12-07 2014-06-18 天津瑞发科半导体技术有限公司 多通道闪存卡控制装置及其控制方法
KR102170857B1 (ko) 2013-08-19 2020-10-29 삼성전자주식회사 저항체를 이용한 비휘발성 메모리 장치의 구동 방법
JP2015056198A (ja) 2013-09-13 2015-03-23 株式会社東芝 メモリチップ、記憶装置および読み出し方法
JP2020150515A (ja) * 2019-03-15 2020-09-17 キオクシア株式会社 誤り訂正回路及びメモリシステム
JP2022052089A (ja) 2020-09-23 2022-04-04 キオクシア株式会社 メモリシステム及びメモリシステムの制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0452841A (ja) * 1990-06-15 1992-02-20 Nec Ibaraki Ltd 記憶装置
JPH04184551A (ja) * 1990-11-20 1992-07-01 Nec Corp 電子ディスク装置のデータ復旧方式
JPH04239355A (ja) * 1991-01-14 1992-08-27 Nec Corp 電子ディスク装置
US5398331A (en) * 1992-07-08 1995-03-14 International Business Machines Corporation Shared storage controller for dual copy shared data
JP4239657B2 (ja) * 2003-04-16 2009-03-18 パナソニック株式会社 電子機器
CN100407178C (zh) * 2004-05-19 2008-07-30 松下电器产业株式会社 存储器控制电路、非易失性存储装置及存储器控制方法
US7587658B1 (en) * 2005-01-03 2009-09-08 Sun Microsystems, Inc. ECC encoding for uncorrectable errors
JP4840859B2 (ja) * 2006-05-10 2011-12-21 ルネサスエレクトロニクス株式会社 半導体装置、及び起動方法
JP5265883B2 (ja) * 2007-05-24 2013-08-14 株式会社メガチップス メモリアクセスシステム
JP4315461B2 (ja) 2007-10-30 2009-08-19 株式会社ハギワラシスコム ソリッドステートドライブ及びデータ書き込み方法
JP4675984B2 (ja) 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
JP2010009345A (ja) * 2008-06-27 2010-01-14 Fujitsu Ltd ディスクアレイ装置およびソフトエラー修復方法
JP2010108029A (ja) 2008-10-28 2010-05-13 Panasonic Corp 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム

Also Published As

Publication number Publication date
JP2012173933A (ja) 2012-09-10
US8732554B2 (en) 2014-05-20
US20120216098A1 (en) 2012-08-23

Similar Documents

Publication Publication Date Title
US20110239081A1 (en) Semiconductor storage device and method for controlling a semiconductor storage device
KR101861247B1 (ko) 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
CN103164298B (zh) 产生用于奇偶校验扇区的数据通路保护的冗余的数据存储装置
US10346268B2 (en) Efficient data recovery for write path errors
US8650458B2 (en) Methods of encoding/decoding for error correction code utilizing interdependent portions of codewords and related circuits
JP2012155430A5 (ja)
JP5330428B2 (ja) データ記憶装置及び誤り検出訂正方法
EP2183745A2 (en) Ecc functional block placement in a multi-channel mass storage device
CN101329916A (zh) 闪存装置纠错码控制器以及相关方法和存储系统
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
CN109669800B (zh) 用于写入路径错误的高效数据恢复
US20170147433A1 (en) Memory controller and method of controlling memory controller
KR20180089104A (ko) 메모리 모듈, 이를 포함하는 메모리 시스템 및 이의 에러 정정 방법
US9431132B2 (en) Data managing method, memory control circuit unit and memory storage apparatus
JP2013137708A (ja) メモリコントローラ、データ記憶装置およびメモリ制御方法
KR20110025524A (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
JP2009301194A (ja) 半導体記憶装置の制御システム
US8713410B2 (en) Data storage apparatus, memory control apparatus and method for controlling flash memories
US9286156B2 (en) Data storage device and method for processing error correction code thereof
KR101512927B1 (ko) 비휘발성 메모리의 페이지 관리 방법 및 장치
TW201438018A (zh) 錯誤修正方法以及記憶體裝置
US20170017544A1 (en) Systems and methods for providing low latency read path for non-volatile memory
JP2008165518A (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2013069377A (ja) 復号方法、復号装置および記憶装置
CN111427717A (zh) 用于在存储器系统中编码和解码数据的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130225

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20130305

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130416

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130617

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130725

LAPS Cancellation because of no payment of annual fees