(57)【要約】【課題】半導体記憶素子から読み出したデータの出力異常を早期に発見することで解析コストを削減する。【解決手段】実施形態の記憶装置は、データが記憶された不揮発性の半導体記憶素子から前記データを読み出す記憶装置であって、誤り訂正回路、保持回路、データ振分回路、処理回路を備える。誤り訂正回路は不揮発性の半導体記憶素子から所定の処理単位で読み出されたデータに対して誤り検出を行い必要に応じて誤り訂正を行う。保持回路はデータを処理単位毎に一時保持可能である。データ振分回路は不揮発性の半導体記憶素子から読み出した処理単位のデータを誤り訂正回路に転送するとともに、データを保持回路に退避させる。処理回路は誤り訂正回路によりデータに誤り訂正不可の誤りが検出された場合、保持回路に退避させたデータを読み出してデータ解析に関する所定の処理を行う。【選択図】図１
2020144554.tif 000002
【特許請求の範囲】
【請求項１】
データが記憶された不揮発性の半導体記憶素子から前記データを読み出す記憶装置であって、
前記不揮発性の半導体記憶素子から所定の処理単位で読み出されたデータに対して誤り検出を行い必要に応じて誤り訂正を行う誤り訂正回路と、
前記データを処理単位毎に一時保持可能な保持回路と、
前記不揮発性の半導体記憶素子から読み出した処理単位の前記データを誤り訂正回路に転送するとともに、前記データを前記保持回路に退避させるデータ振分回路と、
前記誤り訂正回路により前記データに誤り訂正不可の誤りが検出された場合、前記保持回路に退避させた前記データを読み出してデータ解析に関する所定の処理を行う処理回路と
を具備する記憶装置。
【請求項２】
前記処理回路は、
前記保持回路に退避させた前記データを読み出して、外部の装置へ出力する請求項１に記載の記憶装置。
【請求項３】
前記処理回路は、
前記保持回路に退避させた前記データを読み出して、前記不揮発性の半導体記憶素子に記憶する請求項１に記載の記憶装置。
【請求項４】
前記処理回路は、
外部の装置からの要求に応じて前記保持回路または前記不揮発性の半導体記憶素子に退避させた前記データを要求元へ出力する請求項２または請求項３いずれか１項に記載の記憶装置。
【請求項５】
前記処理回路は、
退避したデータのビット数を計数する計数回路と、
前記計数回路により計数された値および／またはビット配列が予め設定されている偏り条件に適合した場合、前記不揮発性の半導体記憶素子の動作異常と判定し、偏り条件に適合しない場合は読み出しの際のデータの劣化と判定する判定回路と
を具備する請求項１乃至請求項４いずれか１項に記載の記憶装置。
【請求項６】
前記判定回路は、
判定結果に応じたフラグを前記データに付与した異常履歴を保持する請求項５に記載の記憶装置。
【請求項７】
外部の装置からの要求に応じて前記異常履歴を要求元へ出力する請求項６に記載の記憶装置。
【請求項８】
不揮発性の半導体記憶素子から所定の処理単位で読み出されたデータに対して誤り検出を行い必要に応じて誤り訂正を行い、誤り訂正したデータを、外部の装置へ出力するためのデータバッファに保持する誤り訂正回路と、
前記誤り訂正回路により誤り訂正不可とされたデータを前記不揮発性の半導体記憶素子から再度読み出し、前記誤り訂正回路を経由せずに前記データバッファに保持するデータ振分回路と、
前記データバッファに保持されたデータを、前記データバッファから読み出してデータ解析に関する所定の処理を行う処理回路と
を具備する記憶装置。
【請求項９】
データが記憶された不揮発性の半導体記憶素子から前記データを読み出すデータ読出方法であって、
前記不揮発性の半導体記憶素子から所定の処理単位で読み出されたデータに対して誤り検出を行い必要に応じて誤り訂正を行い、
前記不揮発性の半導体記憶素子から読み出した処理単位の前記データを誤り訂正回路に転送するとともに、前記データを処理単位毎に一時保持可能な保持回路に退避させ、
前記データに誤り訂正不可の誤りが検出された場合、前記保持回路に退避させた前記データを読み出してデータ解析に関する所定の処理を行う
データ読出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＳＳＤ（Solid State Drive）、ｅＭＭＣ（embedded Multi Media Card）、ＵＦＳ（Universal Flash Storage）などの不揮発性の半導体記憶素子を備える記憶装置およびデータ読出方法に関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリをはじめとした不揮発性の半導体記憶素子を搭載した記憶装置（メモリモジュール）において、ホスト装置からのread命令によって読み出されるデータ（readデータ）にビット誤りが生じるのは既知の事実である。
【０００３】
このようなビット誤りに対する対策として、従来は、メモリモジュールに搭載されるコントローラに誤り訂正回路を設け、readデータの誤り訂正を行うようにしているが、誤り訂正には限界があるため、readデータに、ある一定以上の誤り（劣化）がある場合は、訂正不可（ＥＣＣエラー）としてホスト装置にレスポンスを返すようにしている。
【０００４】
ところで、readデータがＥＣＣエラーとなる原因としては、上記のデータ自体の劣化とは別に、ＮＡＮＤフラッシュメモリのハードウェア的な要因によりデータ出力異常が発生して誤り訂正できないビットエラー（ＥＣＣエラー）が発生することある。
【０００５】
このデータ出力異常とは、書き込み済のデータ領域をReadしているにも関わらず、オール“０”やオール“１”のデータが出力されるような状態をいう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８-１９８２３４号公報
【特許文献２】特許第４６７２７４３号公報
【特許文献３】米国特許第９１５８６２１号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来は、コントローラからホスト装置に対してＥＣＣエラーとしか通知されないため、コントローラのシステム評価の際に半導体記憶素子からのデータ出力異常がreadデータの劣化なのか半導体記憶素子のハードウェア的な要因なのかを解析するのに多くの時間を要し、解析コストが増加するという問題がある。
【０００８】
本発明が解決しようとする課題は、半導体記憶素子から読み出したデータの出力異常を早期に発見および識別することで解析コストを削減できる記憶装置およびデータ読出方法を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態の記憶装置は、データが記憶された不揮発性の半導体記憶素子から前記データを読み出す記憶装置であって、誤り訂正回路、保持回路、データ振分回路、処理回路を備える。誤り訂正回路は不揮発性の半導体記憶素子から所定の処理単位で読み出されたデータに対して誤り検出を行い必要に応じて誤り訂正を行う。保持回路はデータを処理単位毎に一時保持可能である。データ振分回路は不揮発性の半導体記憶素子から読み出した処理単位のデータを誤り訂正回路に転送するとともに、データを保持回路に退避させる。処理回路は誤り訂正回路によりデータに誤り訂正不可の誤りが検出された場合、保持回路に退避させたデータを読み出してデータ解析に関する所定の処理を行う。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態の記憶システムの構成を示す図である。
【図２】第１実施形態の記憶システムの動作を示すフローチャートである。
【図３】第２実施形態の記憶システムの構成を示す図である。
【図４】第２実施形態の記憶システムの動作を示すフローチャートである。
【図５】第３実施形態の記憶システムの構成を示す図である。
【図６】第４実施形態の記憶システムの動作を示すフローチャートである。
【図７】第５実施形態の記憶システムの構成を示す図である。
【図８】第４実施形態の記憶システムの動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態を詳細に説明する。 
［第１実施形態］
図１は第１実施形態の記憶システムの構成を示す図である。なお、図１において、データの流れを示す線（データ線）を実線、要求やコマンドなどの制御信号を送る線（制御線）を破線とする。他の図３、図５、図７についても同様である。
【００１２】
図１に示すように、第１実施形態の記憶システムは、ホスト装置１と記憶装置としてのＳＳＤモジュール２とを備える。ＳＳＤモジュール２は、不揮発性の半導体記憶素子としてのＮＡＮＤフラッシュメモリ２０（以下「ＮＡＮＤメモリ２０」と称す）と、ＮＡＮＤコントローラ２１とを備える。ＳＳＤモジュール２は、データが記憶されたＮＡＮＤメモリ２０からデータを読み出す装置である。
【００１３】
ＮＡＮＤメモリ２０は、アドレス毎に分化されたメモリブロックを有しており、データを書き込む際に、アドレスを指定することで該当メモリブロックにデータを記憶可能であり、またデータを読み出す際に、アドレスを指定することで該当メモリブロックよりデータを読み出すことができる。
【００１４】
ＮＡＮＤコントローラ２１は、ＮＡＮＤインタフェース２２（以下「ＮＡＮＤＩ／Ｆ２２」と称す）、ＦＩＦＯバッファメモリ２３（以下「ＦＩＦＯ２３」と称す）、誤り訂正回路２４、データバッファ２５、ホストインタフェース２６（以下「ホストＩ／Ｆ２６」と称す）、保持回路または記憶領域としてのRandom Access Memory領域２７（以下「ＲＡＭ領域２７」と称す）および制御回路としてのＣＰＵ２８を有する。
【００１５】
ＮＡＮＤコントローラ２１は、ＮＡＮＤメモリ２０に対してリード／ライトを行う。ＮＡＮＤＩ／Ｆ２２は、ＮＡＮＤメモリ２０とのインタフェース処理を行う。
【００１６】
ＦＩＦＯ２３は、データを読み出す際（データリード時）に、ＮＡＮＤメモリ２０よりデータを1byteずつ読み出し、データを順に保持し所定の処理単位（例えば誤り訂正サイズの１フレーム分,4kbyteまたは４フレーム分,16kbyte）蓄積されると、その単位でデータを誤り訂正回路２４およびＲＡＭ領域２７へ出力する。所定単位のデータが出力されると、次フレームのデータによって上書きが開始される。なお、処理単位は、１フレーム分、４フレーム分などには限定されず、これ以外のフレーム数であってもよい。
【００１７】
すなわち、ＮＡＮＤＩ／Ｆ２２およびＦＩＦＯ２３は、ＮＡＮＤメモリ２０から読み出した処理単位のデータを誤り訂正回路２４に転送するとともに、データをＲＡＭ領域２７に退避させるデータ振分回路である。
【００１８】
誤り訂正回路２４は、誤り訂正符号部と誤り訂正復号部とを有する。誤り訂正符号部はＮＡＮＤメモリ２０に書き込むデータに対して誤り訂正符号を生成し付与する。誤り訂正復号部は、ＮＡＮＤメモリ２０から所定の処理単位（フレーム単位）で読み出されたデータに対して誤り検出を行い必要に応じて誤り訂正を行う。
【００１９】
より詳細に説明すると、訂正復号部は、データリード時に、ＦＩＦＯ２３から出力された１フレームのデータを取り込み、誤り検出および誤り訂正を行い、誤り検出されなかったデータまたは誤り訂正されたデータをデータバッファ２５へ書き込む。データバッファ２５は、データを一時的に保持するものであり、保持されているデータは所定のタイミングで例えばホスト装置１によって読み出される。
【００２０】
ホストＩ／Ｆ２６は、ホスト装置１とのインタフェース処理を行う。インタフェース処理では、ＣＰＵ２８からの指示に従いデータバッファ２５に保持されたデータをホスト装置１へ出力する。この他、データライト時にはＣＰＵ２８からの指示に従いホスト装置１からのデータをデータバッファ２５に保持するが、ライト動作についての詳細な説明は割愛する。
【００２１】
ＲＡＭ領域２７は、ＦＩＦＯ２３から出力された所定の処理単位（例えば１フレーム分）のデータ（誤り訂正（ＥＣＣ）復号前の最新のデータ）が記憶可能なメモリ（データ一時保持用のメモリ）である。
【００２２】
誤り訂正回路２４のデータ復号結果が正常であった場合、次のフレームのデータがＲＡＭ領域２７に上書きされる。また、データ復号結果が異常であった場合は、ＲＡＭ領域２７に保持されていたデータはＣＰＵ２８によって読み出される。データを読み出した後、ＲＡＭ領域２７は次にデータで上書きされる。ＲＡＭ領域２７は、誤り訂正回路２４によりデータ復号結果が出るまで誤り訂正単位のデータを一時的に保持しておくための記憶領域である。
【００２３】
ＣＰＵ２８は、ホスト装置１からの要求に応じて上記各回路、素子を制御してＮＡＮＤメモリ２０に対してデータをリード／ライトする。ＣＰＵ２８は、誤り訂正回路２４によりデータに誤り訂正不可の誤りが検出された場合、ＲＡＭ領域２７に退避させたデータを読み出してデータ解析に関する所定の処理を行う処理回路として機能する。
【００２４】
一例で説明すると、ＣＰＵ２８は、誤り訂正回路２４による誤り検出の結果、ＥＣＣエラーが検出された場合、ＥＣＣエラーをホスト装置１へ通知した後、誤り訂正回路２４によりＥＣＣエラーが検出されたデータと同じタイミングでＦＩＦＯ２３からＲＡＭ領域２７に書き込まれたデータをＲＡＭ領域２７から読み出して処理する。
【００２５】
換言すると、ＮＡＮＤメモリ２０上の同一アドレスにあったデータを、ＲＡＭ領域２７と誤り訂正回路２４双方に送って、誤り訂正回路２４側のデータに対して誤り訂正回路２４がＥＣＣを行いＥＣＣエラーが検出されると、ＲＡＭ領域２７側のデータを用いて必要な処理を行う。ここでのデータの必要な処理の仕方として、この第１実施形態では、例えばホスト装置１からのデータ出力要求に応じてＲＡＭ領域２７に保持しておいたデータを外部の装置であるホスト装置１へ出力するようにしている。
【００２６】
続いて、図２のフローチャートを参照してこの第１実施形態の記憶システムの動作（データ読出方法）を説明する。
この記憶システムの場合、ＮＡＮＤメモリ２０に記憶されているデータをリードする際に、ホスト装置１からのデータ読み出し要求（これを「read要求」という）が発行され、その要求がＳＳＤモジュール２に受信される（図２のステップＳ１０１）。
【００２７】
すると、ＳＳＤモジュール２では、ＣＰＵ２８が、受信したread要求を基にreadコマンドを生成し、生成したreadコマンドをＮＡＮＤＩ／Ｆ２２に出力する（ステップＳ１０２）。
【００２８】
この際、ＣＰＵ２８は、受信したread要求を基にＮＡＮＤメモリ２０へのアクセスアドレスを解析し、ＮＡＮＤＩ／Ｆ２２のCMDキューに発行コマンド（readコマンド）とアクセスアドレスを設定した上でreadコマンドを出力する。
【００２９】
なお、ＮＡＮＤメモリ２０がbusy状態の場合は待機し、busy状態が解除された後、readコマンドを出力する。
【００３０】
ＮＡＮＤＩ／Ｆ２２は、readコマンドを受けると、ＮＡＮＤメモリ２０の指定アクセスアドレスからデータを１byteずつ順に読み出し、ＦＩＦＯ２３にバッファリングする（ステップＳ１０３）。
【００３１】
ＦＩＦＯ２３は、順次蓄積されるデータが所定処理単位分（例えば１フレーム分）保持されると、そのデータを誤り訂正回路２４およびＲＡＭ領域２７へ転送する（ステップＳ１０４）。
【００３２】
誤り訂正回路２４は、転送されてきたデータに対して誤り検出を行い、データに誤りが検出されると、誤り訂正を行い、誤り訂正が正常に終了すると、誤り訂正したデータをデータバッファ２５に記憶する。誤りが検出されなかったデータはそのままデータバッファ２５に記憶される。
【００３３】
また、誤り訂正回路２４は、データに誤りが検出され、誤り訂正ができなかった場合、その旨をＣＰＵ２８へ通知する。ＣＰＵ２８は、誤り訂正回路２４から誤り訂正ができなかった旨の通知を受けて、ＥＣＣエラーありと判定し（ステップＳ１０５）、判定結果「ＥＣＣエラー」をread結果としてホスト装置１へ出力する（ステップＳ１０６）。
【００３４】
read結果をホスト装置１へ通知した後、ホスト装置１から当該「ＥＣＣエラー」のフレームデータの出力要求があると（ステップＳ１０７のＹｅｓ）、ＣＰＵ２８は、出力要求されたフレームデータをＲＡＭ領域２７から読み出し、ホスト装置１へ出力する（ステップＳ１０８）。
【００３５】
ホスト装置１では、ＳＳＤモジュール２から送られてきた１フレーム分のデータを解析することで、readデータそのものが異常か否かを判定する。ここで、readデータがオール“０”やオール“１”またはそれに近い値のビット配列でビット偏りがある場合、ＮＡＮＤメモリ２０に異常動作が発生していることを検出でき、それ以外であれば、通常のデータ劣化と判定できる。
【００３６】
以上説明したように、この第１実施形態の記憶システムによれば、ＮＡＮＤメモリ２０から読み出して誤り訂正回路２４へ送ったreadデータそのものを保持（退避）しておくＲＡＭ領域２７を設け、そのＲＡＭ領域２７に誤り訂正対象サイズである１フレームのデータを保持しておき、誤り訂正回路２４でのreadデータ復号結果がＥＣＣエラーとなった場合、ホスト装置１からの要求に応じてＲＡＭ領域２７に退避させた、ＥＣＣエラーが生じたreadデータと同じreadデータをホスト装置１へ出力するので、ホスト装置１側でエラーデータの解析が早期に行えるようになり、ＮＡＮＤメモリ２０から読み出したデータの出力異常を早期に発見および識別することが可能になり、解析コストを削減することができる。
【００３７】
［第２実施形態］
図３は第２実施形態の記憶システムの構成を示す図である。なお、この第２実施形態を説明するにあたり、第１実施形態と同様の構成には同一の符号を付しその説明は省略する。
【００３８】
図３に示すように、第２実施形態の記憶システムは、ＦＩＦＯ２３からＣＰＵ２８へのデータ線２９が設けられている。データ線２９は、ＣＰＵ２８がＥＣＣエラーを通知後、ホスト装置１から要求があったデータをＮＡＮＤメモリ２０の所定領域から読み出してＣＰＵ２８自身で受け取り、誤り訂正回路２４を介さずにホスト装置１へ送信するためのデータ線である。
【００３９】
この第２実施形態においては、誤り訂正回路２４においてreadデータの復号を行った結果、readデータにＥＣＣエラーが検出された場合、ＣＰＵ２８は、ＲＡＭ領域２７に保持しておいたreadデータ（誤り訂正回路２４が復号したものと同じreadデータ）を、ＮＡＮＤメモリ２０上の通常のデータの記憶領域とは別アドレスの記憶領域（以下これを（所定領域）と称す）に再度プログラム（記憶）する。つまりＮＡＮＤメモリ２０にread実データを保持する。そして、必要に応じてread実データをＮＡＮＤメモリ２０から読み出す。
【００４０】
以下、図４のフローチャートを参照してこの第２実施形態の記憶システムの動作を説明する。なお、第２実施形態の動作を説明するにあたり第１実施形態と同じ工程には同一の符号を付しその説明は省略する。
【００４１】
この記憶システムの場合、ホスト装置１からのread要求がＳＳＤモジュール２に受信されると、ＣＰＵ２８は、readコマンドを発行し、ＮＡＮＤメモリ２０のデータがＦＩＦＯ２３に順にバッファリングされ、ＦＩＦＯ２３に１フレーム分のデータが蓄積されると、誤り訂正回路２４およびＲＡＭ領域２７にデータが転送される（図４のステップＳ１０１〜Ｓ１０４）。
【００４２】
そして、誤り訂正回路２４によるデータ復号の結果、ＥＣＣエラーが検出されると（ステップＳ１０５のＹｅｓ）、ＣＰＵ２８は、read結果としてＥＣＣエラーが検出された旨をread結果としてホスト装置１へ通知する（ステップＳ１０６）。
【００４３】
ＣＰＵ２８は、ＲＡＭ領域２７に退避させたフレーム単位のデータ（以下（フレームデータ）と称す）をプログラムし、ＮＡＮＤメモリ２０の所定領域に書き込む（ステップＳ１１０）。なお、ここで「プログラム」とは、フレームデータをＮＡＮＤメモリ２０の書き込み単位のデータ（１ページ単位のデータ）に変換することをいう。
【００４４】
read結果をホスト装置１へ通知した後、ホスト装置１から当該「ＥＣＣエラー」のフレームデータの出力要求があると（ステップＳ１１１のＹｅｓ）、ＣＰＵ２８は、出力要求されたフレームデータ（再readデータ）をＮＡＮＤメモリ２０の所定領域から読み出し、データ線２９を通じて受け取り、誤り訂正を行わずにホスト装置１へ出力する（ステップＳ１１２）。
【００４５】
ホスト装置１では、ＳＳＤモジュール２から送られてきた１フレーム分のreadデータを解析することで、データそのものが異常か否かを判定する。ここで、readデータがオール“０”やオール“１”またはそれに近い値のビット配列でビット偏りがある場合、ＮＡＮＤメモリ２０に異常動作が発生していることを検出でき、それ以外であれば、通常のデータ劣化と判定できる。ビット偏りの有無は、予め設定された閾値（ビット偏り条件）を基に判定するものとする。ビット偏りは、計数したビット数とビット配列とのアンド条件で判定してもよく、いずれか一方のみで判定してもよい。
【００４６】
以上説明したように、この第２実施形態の記憶システムによれば、readデータをＲＡＭ領域２７に記憶しておくことで、上記第１実施形態と同様の効果が得られると共に、ＥＣＣエラーが検出されたreadデータをＲＡＭ領域２７からＮＡＮＤメモリ２０に退避させることで、エラーの起こったデータを不揮発化し、記憶容量に制限されることなく残しておくことが可能になり、多くのデータからデータの出力異常の内容を解析することができる。
【００４７】
すなわち、この第２実施形態においてもＮＡＮＤメモリ２０から読み出したデータの出力異常を早期に発見し、readデータの異常がハードウェアかデータかを識別することが可能になり、解析コストを削減することができる。
【００４８】
［第３実施形態］
図５は第３実施形態の記憶システムの構成を示す図である。
図５に示すように、第３実施形態の記憶システムは、ＣＰＵ２８に、ビットカウント回路２８ａと異常判定回路２８ｂとを設けている。
【００４９】
ビットカウント回路２８ａは、ＲＡＭ領域２７に保持されている１フレーム分のデータのビットカウントを行い、“０”や“１”の数をカウントする。つまりビットカウント回路２８ａは、ＲＡＭ領域２７に退避したデータのビット数を計数する計数回路として機能する。
【００５０】
異常判定回路２８ｂは、ビットカウント回路２８ａによりビットカウントされた結果（“０”や“１”の数）と予め設定されているビット偏り条件（閾値）とを比較し、ビットカウントした結果がビット偏り条件に適合する場合（閾値以上または閾値未満の場合）、ビット偏りがあるもの、つまりＮＡＮＤメモリ２０の異常動作によるデータ異常と判定し、判定結果をread結果としてホスト装置１へ通知すると共に、判定結果に応じたフラグをreadデータに付与した異常履歴を生成してメモリモジュール２内の所定の記憶領域、例えばシステムファームウェア（以下「システムＦＷ」と称す）の格納領域などに記憶し、異常履歴を管理する。
【００５１】
判定結果に応じたフラグとしては、例えばＮＡＮＤメモリ２０の異常の場合「１」、データの劣化の場合は「０」などとする。その逆でもよい。ビット偏りの判定は、第２実施形態と同様に閾値（ビット偏り条件）との比較（条件と適合／非適合の判定）で行うものとする。
【００５２】
すなわち、この異常判定回路２８ｂは、ビットカウント回路２８ａにより計数された値および／またはビット配列が予め設定されている偏り条件に適合した場合、ＮＡＮＤメモリ２０の動作異常と判定し、偏り条件に適合しない場合は読み出しの際のデータの劣化と判定する。
【００５３】
以下、図６のフローチャートを参照してこの第３実施形態の記憶システムの動作を説明する。なお、第３実施形態の動作を説明するにあたり第１実施形態および第２実施形態と同じ工程には同一の符号を付しその説明は省略する。
【００５４】
この記憶システムの場合、ホスト装置１からのread要求がＳＳＤモジュール２に受信されると、ＣＰＵ２８は、readコマンドを発行し、ＮＡＮＤメモリ２０のデータがＦＩＦＯ２３に順にバッファリングされ、ＦＩＦＯ２３に１フレーム分のデータが蓄積されると、誤り訂正回路２４およびＲＡＭ領域２７にデータが転送される（図６のステップＳ１０１〜Ｓ１０４）。
【００５５】
そして、誤り訂正回路２４によるデータ復号の結果、ＥＣＣエラーが検出されると（ステップＳ１０５のＹｅｓ）、ＣＰＵ２８は、ＥＣＣエラーが検出された旨をread結果としてホスト装置１へ通知する（ステップＳ１０６）。
【００５６】
誤り訂正回路２４によりＥＣＣエラーが検出されると、ＣＰＵ２８では、ビットカウント回路２８ａが、ＲＡＭ領域２７に退避させたフレームデータをＲＡＭ領域２７から読み出して、フレームデータのビットカウントを行い（ステップＳ１２１）、“０”や“１”のビット数を計数する。
【００５７】
異常判定回路２８ｂは、ビットカウント回路２８ａにより計数された結果（“０”や“１”のビット数）と予め設定されている閾値とを比較し、計数した結果が閾値以上（ビット偏り条件に適合）であり、ビット偏りがある場合（ステップＳ１２２のＹｅｓ）、ＮＡＮＤメモリ２０の異常動作によるデータ異常と判定し（ステップＳ１２３）、システムＦＷの格納領域に、readデータにフラグ「１」を付与した異常履歴を記憶（保持）し（ステップＳ１２５）、異常履歴を管理する。
【００５８】
なお、計数された結果（“０”や“１”のビット数）と閾値との比較結果、ビット偏りがない場合（ステップＳ１２２のＮｏ）、通常のＥＣＣエラーと判定し（ステップＳ１２４）、readデータにフラグ「０」を付与した異常履歴をシステムＦＷの格納領域に記憶（保持）し（ステップＳ１２５）、異常履歴を管理する。この例では、ビット偏り条件を閾値以上としたが、閾値未満としてもよい。
【００５９】
read結果をホスト装置１へ通知した後、ホスト装置１から当該「ＥＣＣエラー」のフレームデータの異常履歴の出力要求があると（ステップＳ１１１のＹｅｓ）、ＣＰＵ２８は、出力要求されたフレームデータの異常履歴をシステムＦＷの格納領域から読み出しホスト装置１へ出力する（ステップＳ１２６）。
【００６０】
ホスト装置１では、ＳＳＤモジュール２から送られてきた異常履歴（当該フレームデータのフラグ「１」か「０」）から、ＮＡＮＤメモリ２０に異常動作が発生しているか、データ劣化かを即座に識別できる。
【００６１】
以上説明したように、この第３実施形態の記憶システムによれば、readデータをＲＡＭ領域２７に記憶しておくことで、上記第１実施形態と同様の効果が得られると共に、ＣＰＵ２８にビットカウント回路２８ａと異常判定回路２８ｂとを設け、ＥＣＣエラーとなったreadデータをＣＰＵ２８がＲＡＭ領域２７から読み出してビットカウントおよび異常判定を行うので、ホスト装置１でreadデータを解析するよりも迅速にＥＣＣエラーの内容（ＮＡＮＤメモリ２０の異常かデータ劣化か）を確認することができる。
【００６２】
［第４実施形態］
図７は第４実施形態の記憶システムの構成を示す図である。
図７に示すように、第４実施形態の記憶システムは、上記第１乃至第３実施形態のＲＡＭ領域２７を設けずに、ＦＩＦＯ２３から誤り訂正回路２４へのデータ線とは別に、ＦＩＦＯ２３から誤り訂正回路２４を経由せずにデータバッファ２５に接続されたデータ線３０を設けている。
【００６３】
この第４実施形態では、誤り訂正回路２４は、ＮＡＮＤメモリ２０から読み出されてＦＩＦＯ２３から所定の処理単位（１フレーム）で転送されてきたデータに対して誤り検出を行いつつ復号する。復号の際に、誤りが検出されると、データの誤り訂正を行い、誤り訂正したデータを、外部の装置であるホスト装置１へ出力するためのデータバッファ２５に記憶する。
【００６４】
一方、復号の際に、データに誤り訂正不可の誤り（ＥＣＣエラー）が検出されると、そのデータについては破棄される。そして、ＣＰＵ２８は、同じデータに対する新たなreadコマンドを発行する。readコマンドによってＮＡＮＤメモリ２０から再度読み出されたデータは誤り訂正回路２４に転送されずにデータ線３０を通じてデータバッファ２５に記憶（保持）される。
【００６５】
より具体的には、ホスト装置１からのread要求に対し、ＮＡＮＤメモリ２０から読み出されたreadデータは、誤り訂正回路２４に転送される。そして、誤り訂正回路２４においてreadデータの復号を行った結果、readデータにＥＣＣエラーが検出された場合、ＣＰＵ２８は、その旨をホスト装置１に通知した後、ＥＣＣエラーが発生したアドレスに再度readコマンドを発行する。
【００６６】
ＣＰＵ２８は、readコマンドの発行により、ＮＡＮＤメモリ２０に対するread処理を実行し、この処理によりＦＩＦＯ２３に読み出されたreadデータを、データ線３０を通じてデータバッファ２５に記憶する。
【００６７】
その後、ＣＰＵ２８は、データバッファ２５から再readしたreadデータを読み出して第３実施形態と同様に、解析に関する処理を行う。つまりビットカウント回路２８ａが再readしたreadデータのビットカウントおよび異常判定回路２８ｂが異常判定を行い、その判定結果（異常履歴）をシステムＦＷの格納領域などに記憶する。
【００６８】
以下、図８のフローチャートを参照してこの第４実施形態の記憶システムの動作を説明する。なお、第４実施形態の動作を説明するにあたり第１乃至第３実施形態と同じ工程には同一の符号を付しその説明は省略する。
【００６９】
この記憶システムの場合、ホスト装置１からのread要求がＳＳＤモジュール２に受信されると、ＣＰＵ２８は、readコマンドを発行し、ＮＡＮＤメモリ２０のデータがＦＩＦＯ２３に順にバッファリングされ、ＦＩＦＯ２３に１フレーム分のデータが蓄積されると、誤り訂正回路２４にデータが転送される（図８のステップＳ１０１〜Ｓ１０４）。
【００７０】
そして、誤り訂正回路２４によるデータ復号の結果、ＥＣＣエラーが検出されると（ステップＳ１０５のＹｅｓ）、ＣＰＵ２８は、ＥＣＣエラーが検出された旨をread結果としてホスト装置１へ通知する（ステップＳ１０６）。
【００７１】
誤り訂正回路２４において、ＥＣＣエラーが検出されると、ＣＰＵ２８は、ＥＣＣエラーが発生したアドレスに再度readコマンドを発行し、ＮＡＮＤメモリ２０に対するreadを実行し（ステップＳ１３１）、ＦＩＦＯ２３に読み出されたreadデータを、データ線３０を通じてデータバッファ２５に記憶する（ステップＳ１３２）。
【００７２】
続いて、ＣＰＵ２８では、ビットカウント回路２８ａが、再度readによってデータバッファ２５に退避させたフレームデータをデータバッファ２５から読み出して、フレームデータのビットカウントを行い（ステップＳ１３３）、“０”や“１”のビット数を計数する。その後の処理は、第３実施形態と同様である（ステップＳ１２２〜Ｓ１２６）。
【００７３】
ホスト装置１では、ＳＳＤモジュール２から送られてきた異常履歴（当該フレームデータのフラグ「１」か「０」）から、ＮＡＮＤメモリ２０に異常動作が発生しているか、データ劣化かを即座に識別できる。
【００７４】
以上説明したように、この第４実施形態の記憶システムによれば、readデータをデータバッファ２５に記憶することで、上記第１実施形態と同様の効果が得られると共に、第１乃至第３実施形態で示したような特別なＲＡＭ領域２７を設ける必要がなくなり、既存のものへの本発明の適用が容易になる。
【００７５】
また、ＣＰＵ２８にビットカウント回路２８ａと異常判定回路２８ｂとを設け、ＥＣＣエラーとなったreadデータを再度、ＮＡＮＤメモリ２０から読み出してデータバッファ２５に記憶した後、そのreadデータに対してビットカウントおよび異常判定を行うので、ホスト装置１でreadデータを解析するよりも迅速にＥＣＣエラーの内容（ＮＡＮＤメモリ２０の異常かデータ劣化か）を発見することができる。
【００７６】
このように上記第１乃至第４実施形態によれば、ＮＡＮＤメモリ２０から読み出したデータの出力異常を早期に発見および識別することで解析コストを削減することができる。
【００７７】
本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７８】
１…ホスト装置、２…ＳＳＤモジュール、２０…ＮＡＮＤフラッシュメモリ（ＮＡＮＤメモリ）、２１…ＮＡＮＤコントローラ、２２…ＮＡＮＤインタフェース２２（ＮＡＮＤＩ／Ｆ）、２３…ＦＩＦＯバッファメモリ（ＦＩＦＯ）、２４…誤り訂正回路、２５…データバッファ、２６…ホストインタフェース（ホストＩ／Ｆ）、２７…ＲＡＭ領域、２８ａ…ビットカウント回路、２８ｂ…異常判定回路、２９、３０…データ線。
【図１】
2020144554.tif 000003
【図２】
2020144554.tif 000004
【図３】
2020144554.tif 000005
【図４】
2020144554.tif 000006
【図５】
2020144554.tif 000007
【図６】
2020144554.tif 000008
【図７】
2020144554.tif 000009
【図８】
2020144554.tif 000010