(57)【要約】【課題】データが入力されてからホストに出力されるまでの全経路について誤り検出を可能とするメモリコントローラを得ること。【解決手段】メモリコントローラであって、ホストから受信したデータに対する第１の誤り検出符号を生成する第１の誤り検出符号生成部と、データと第１の誤り検出符号とをメモリへ書き込むよう制御し、読み出し要求があった場合にメモリからデータと第１の誤り検出符号を読み出す制御部と、メモリから読み出されたデータと第１の誤り検出符号に基づいて誤り検出処理を行う誤り検出部と、メモリから読み出したデータに基づいて第２の誤り検出符号を生成する第２の誤り検出符号生成部と、データに誤りがあることを示す不整合符号を生成する不整合符号生成部と、ホストへ送信するデータに対して、第２の誤り検出符号と不整合符号とのうちいずれか一方を誤り検出処理によるエラー検出結果に基づいて選択して付加する。【選択図】図４
2013137708.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリを制御するメモリコントローラであって、
ホストから受信したデータに対する第１の誤り検出符号を生成する第１の誤り検出符号生成部と、
前記データと該データに対応する前記第１の誤り検出符号とを前記メモリへ書き込むよう制御し、前記ホストからデータの読み出し要求があった場合に前記メモリからデータと該データに対応する前記第１の誤り検出符号とを読み出す制御部と、
前記メモリから読み出されたデータと該データに対応する前記第１の誤り検出符号とに基づいて誤り検出処理を行う誤り検出部と、
前記メモリから読み出したデータに基づいて第２の誤り検出符号を生成する第２の誤り検出符号生成部と、
前記メモリから読み出したデータに誤りがあることを示す不整合符号を生成する不整合符号生成部と、
を備え、
前記ホストへ送信する前記メモリから読み出したデータに対して、前記第２の誤り検出符号と前記不整合符号とのうちいずれか一方を前記誤り検出処理によるエラー検出結果に基づいて選択して付加することを特徴とするメモリコントローラ。
【請求項２】
前記ホストへ送信するデータに対応する前記誤り検出処理によるエラー検出結果が、誤りの無いことを示す結果であった場合に前記第２の誤り検出符号を選択して付加し、前記ホストへ送信するデータに対応する前記誤り検出処理によるエラー検出結果が、誤りの有ることを示す結果であった場合に前記不整合符号を選択して付加することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記ホストへデータを送信した後に、該データに付加した前記第２の誤り検出符号または前記不整合符号を前記ホストへ送信することを特徴とする請求項１または２に記載のメモリコントローラ。
【請求項４】
前記ホストとの間でシリアルＡＴＡ規格に準拠した転送を行い、前記第２の誤り検出符号または前記不整合符号をＦＩＳにおけるＣＲＣとして前記ホストへ送信することを特徴とする請求項１、２または３に記載のメモリコントローラ。
【請求項５】
前記不整合符号生成部は、前記第２の誤り検出符号をビット反転させることにより前記不整合符号を生成することを特徴とする請求項１乃至４のいずれか一項に記載のメモリコントローラ。
【請求項６】
不揮発性メモリと、
ホストから受信したデータに対する第１の誤り検出符号を生成する第１の誤り検出符号生成部と、
前記データと該データに対応する前記第１の誤り検出符号とを前記メモリへ書き込むよう制御し、前記ホストからデータの読み出し要求があった場合に前記メモリからデータと該データに対応する前記第１の誤り検出符号とを読み出す制御部と、
前記メモリから読み出されたデータと該データに対応する前記第１の誤り検出符号とに基づいて誤り検出処理を行う誤り検出部と、
前記メモリから読み出したデータに基づいて第２の誤り検出符号を生成する第２の誤り検出符号生成部と、
前記メモリから読み出したデータに誤りがあることを示す不整合符号を生成する不整合符号生成部と、
を備え、
前記ホストへ送信する前記メモリから読み出したデータに対して、前記第２の誤り検出符号と前記不整合符号とのうちいずれか一方を前記誤り検出処理によるエラー検出結果に基づいて選択して付加することを特徴とするデータ記憶装置。
【請求項７】
不揮発性メモリを制御するメモリ制御方法であって、
ホストから受信したデータに対する第１の誤り検出符号を生成するステップと、
前記データと該データに対応する前記第１の誤り検出符号とを前記メモリへ書き込むよう制御するステップと、
前記ホストからデータの読み出し要求があった場合に前記メモリからデータと該データに対応する前記第１の誤り検出符号とを読み出すステップと、
前記メモリから読み出されたデータと該データに対応する前記第１の誤り検出符号とに基づいて誤り検出処理を行うステップと、
前記メモリから読み出したデータに基づいて第２の誤り検出符号を生成するステップと、
前記メモリから読み出したデータに誤りがあることを示す不整合符号を生成するステップと、
前記ホストへ送信する前記メモリから読み出したデータに対して、前記第２の誤り検出符号と前記不整合符号とのうちいずれか一方を前記誤り検出処理によるエラー検出結果に基づいて選択して付加するステップと、
を含むことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリコントローラ、データ記憶装置およびメモリ制御方法に関する。
【背景技術】
【０００２】
近年の半導体プロセスは微細化が進み、宇宙線などの影響によるソフトエラーが顕在
化しつつあり、不揮発性半導体メモリを用いたＳＳＤ（Solid  State  Drive）などのコンシューマー向けデータ記憶装置においてもエラーに対する対策が求められている。
【０００３】
ＮＡＮＤフラッシュメモリなどのメディア部に対しては従来からＥＣＣ（Error  Check  and  Correct）によるデータ保護は一般的に行われてきた。しかし、データがホストから入力されてからＥＣＣによる誤り訂正符号を生成するまでの経路は、上述のＥＣＣでは保護されない。このため、保護されていない区間でエラーが発生した場合、エラーを検出することができず、データ記憶装置は、実際には不正なデータをエラーのないデータとしてホストに送信してしまうことになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１５９１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、ホストからデータ記憶装置にデータが入力されてから、メディア部への書き込みおよび読み出しの後にホストに出力されるまでの全経路についてエラーを検出することが可能なメモリコントローラ、データ記憶装置およびメモリ制御方法を提供する。
【課題を解決するための手段】
【０００６】
本願発明の一態様によれば、データを不揮発に記憶するメモリを制御するメモリコントローラであって、ホストから受信したデータに対する第１の誤り検出符号を生成する第１の誤り検出符号生成部と、データと第１の誤り検出符号とを前記メモリへ書き込むよう制御する。また、ホストからデータの読み出し要求があった場合にメモリからデータと第１の誤り検出符号とを読み出し、メモリから読み出されたデータと第１の誤り検出符号とに基づいて誤り検出処理を行う誤り検出部と、メモリから読み出したデータに基づいて第２の誤り検出符号を生成する第２の誤り検出符号生成部と、メモリから読み出したデータに誤りがあることを示す不整合符号を生成する不整合符号生成部と、を備え、ホストへ送信するデータに対して、第２の誤り検出符号と不整合符号とのうちいずれか一方を誤り検出処理によるエラー検出結果に基づいて選択して付加する。
【図面の簡単な説明】
【０００７】
【図１】図１は、データ記憶装置の構成例を示すブロック図である。
【図２】図２は、書き込み動作に関するホスト制御部の詳細構成例を示す図である。
【図３】図３は、ＮＡＮＤメモリへのデータ格納フォーマットの一例を示す図である。
【図４】図４は、読み出し動作に関するホスト制御部の詳細構成例を示す図である。
【図５】図５は、読み出し動作の一例を示すフローチャートである。
【図６】図６は、データパスのエラーに対する比較例の保護方法を示す図である。
【図７】図７は、データパスのエラーに対する本実施の形態の保護方法を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、データ記憶装置およびメモリ制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００９】
図１は、実施の形態にかかるデータ記憶装置の構成例を示すブロック図である。図１に示すように、本実施の形態のデータ記憶装置１は、メモリコントローラ２とＮＡＮＤメモリ（メモリ）３を備える。データ記憶装置１は、ホスト４とホストバス５を介して接続されている。ホスト４は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。図１において、太線と細線の組み合わせで示した接続線はデータバスを示し、細線だけで示した接続線は制御バスを示す。
【００１０】
メモリコントローラ２は、ＭＰＵ（Micro  Processing  Unit）（制御部）２１、ホスト制御部２２、ＲＡＭ（Random  Access  Memory）制御部（ＲＡＭＣ）２３、ＮＡＮＤ制御部（ＮＡＮＤＣ）２４およびＲＡＭ２５を備える。ホスト制御部２２とＲＡＭＣ２３、ＲＡＭＣ２３とＮＡＮＤＣ２４、ＲＡＭＣ２３とＲＡＭ２５は、それぞれデータバスである内部バス２６で接続されている。
【００１１】
ホスト制御部２２は、ホスト４との間のインタフェース規格に従った処理を実施し、ホストバス５経由でホスト４から受信した命令、データなどを内部バス２６に出力する。また、ホスト制御部２２は、内部バス２６経由で入力されたデータ、ＭＰＵ２１からの応答などをホストバス５経由でホスト４へ送信する。
【００１２】
ホスト４とデータ記憶装置１との間のインタフェース規格としては、例えば、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）を用いることができる。ＳＡＴＡでは、ＦＩＳ（Frame  Information  Structure）と呼ばれる転送単位でデータの転送を行う。ＦＩＳには、転送対象のデータの後に当該データに対するＣＲＣ（Cyclic  Redundancy  Check）が格納される。このＣＲＣにより、ホストバス５におけるエラーを検出することができる。なお、ここでは、ホスト４とデータ記憶装置１との間のインタフェース規格としてＳＡＴＡを用いる例を説明するが、ホスト４とデータ記憶装置１との間のインタフェース規格は、これに限定されない。例えば、ＰＣＩ（Peripheral  Component  Interconnect）  Expressを用いる場合には、ＴＬＰ（Transaction  Layer  Packet）と呼ばれる転送単位でデータの転送を行う。ＴＬＰ内には、転送対象のデータの後に当該データに対するＥＣＲＣ（Transaction  Layer  end−to−end  32bit  ＣＲＣ）を格納する機能が用意されている。このＥＣＲＣにより、ホストバス５におけるエラーを検出することができる。
【００１３】
ＭＰＵ２１は、データ記憶装置１の各構成要素を統括的に制御する制御部である。ここでは、制御部としてＭＰＵを用いる例を説明するが、制御部はＭＰＵに限定されず演算機能を有するユニットであればよい。ＭＰＵ２１は、ホスト４からホスト制御部２２経由で命令を受けた場合に、その命令に従った制御を行う。例えば、ＭＰＵ２１は、ホスト４からの命令に従って、ＮＡＮＤメモリ３へのデータの書き込み、ＮＡＮＤメモリ３からのデータの読み出しなどを、ＮＡＮＤＣ２４へ指示する。
【００１４】
ＲＡＭ２５は、メモリコントローラ２がホスト４から受信したデータをＮＡＮＤメモリ３へ記憶するまでに一時格納したり、ＮＡＮＤメモリ３から読み出したデータをホスト４へ送信するまでに一時格納したりするために使用されるメモリである。データ記憶装置１において、データに対して誤り検出符号や誤り訂正符号が付加される場合に、これらの符号もＲＡＭ２５に格納されることもある。ＲＡＭＣ２３は、ＭＰＵ２１からの指示に従って、ＲＡＭ２５へのデータ格納およびデータ読み出しを制御する。
【００１５】
なお、図１に示したデータ記憶装置１の構成は一例であり、図１の構成に限定されない。また、ＮＡＮＤメモリ３の代わりに磁気ディスク等の他の記憶手段を用いてもよい。
【００１６】
次に、本実施の形態のＮＡＮＤメモリ３への書き込み動作について説明する。図２は、書き込み動作に関するホスト制御部２２の詳細構成例を示す図である。書き込み処理部２２１は、ホスト制御部２２において、ＮＡＮＤメモリ３への書き込み時の処理を行うブロックである。書き込み処理部２２１は、ＦＩＳ  ＣＲＣエラー検出部（ＦＩＳ  ＣＲＣ  Ｃｈｅｃｋｅｒ）２２２とＥＥ  ＣＲＣ生成部（ＥＥ  ＣＲＣ  ｇｅｎｅｒａｔｏｒ）２２３を備える。なお、図２では、データの流れをわかりやすくするために、図１に記載したブロックのうちの一部の図示を省略している。また、接続関係は簡略化して示している。
【００１７】
ホスト４は、ＦＩＳ内にデータと当該データに対応するＣＲＣ（以下、ＦＩＳ  ＣＲＣという）とを格納してデータ記憶装置１へ送信する。なお、ＦＩＳ内には、データとＦＩＳ  ＣＲＣ以外に格納される情報もあり、これらの情報についても送受信されるが、これらの送受信動作は従来と同様であるため説明は省略する。
【００１８】
本実施の形態では、データ記憶装置１がホスト４からデータを受信してから、メディア部への書き込みおよび読み出しの後にホストに送信されるまでの全経路について、エラーを検出可能とするためにEnd−to−Endでの誤り検出符号を生成する。この誤り検出符号を本実施の形態では、ＥＥ  ＣＲＣ（第１の誤り検出符号）とよび、ＦＩＳ  ＣＲＣ（第２の誤り検出符号）と区別する。
【００１９】
ホスト制御部２２は、ホスト４からデータの書き込みを指示する書き込みコマンドを受信すると、書き込みコマンドをＭＰＵ２１へ通知する。ホスト制御部２２のＦＩＳ  ＣＲＣエラー検出部２２２は、ホスト４から書き込みデータを受信すると、書き込みデータと当該書き込みデータに対応するＦＩＳ  ＣＲＣとを用いてエラー検出を行う。エラーが検出されなかったデータは、ＲＡＭ２５に格納される。ＦＩＳ  ＣＲＣエラー検出部２２２によりエラーが検出された場合は、ホスト４へエラーを通知するなどインタフェース規格に従ったエラー処理を実施する。
【００２０】
また、ホスト制御部２２のＥＥ  ＣＲＣ生成部２２３は、ＦＩＳ  ＣＲＣエラー検出部２２２のチェックと並行して、ホスト４から受信した書き込みデータに基づいてＥＥ  ＣＲＣを生成し、生成したＥＥ  ＣＲＣをＲＡＭ２５へ格納する。ここでは、ＥＥ  ＣＲＣとしてＣＲＣ３２を用いる例を説明するが、ＥＥ  ＣＲＣとしては誤り検出符号であればどのような符号を用いてもよい。
【００２１】
ＭＰＵ２１は、ＲＡＭＣ２３に対して、ＲＡＭ２５に格納された書き込みデータと当該書き込みデータに対応するＥＥ  ＣＲＣとをＲＡＭ２５から読み出してＮＡＮＤＣ２４へ転送するよう指示する。また、ＭＰＵ２１は、ＮＡＮＤＣ２４に対して転送されたデータのＮＡＮＤメモリ３への書き込みを指示する。ＭＰＵ２１は、ホストから受け取った書き込みデータの論理アドレスとＮＡＮＤメモリ３上のアドレス（物理アドレス）との対応を管理する。
【００２２】
図３は、ＮＡＮＤメモリ３へのデータ格納フォーマットの一例を示す図である。ここでは、ＥＥ  ＣＲＣを１データブロック（５１２Ｂｙｔｅ）のデータに対して生成することとし、図３に示すように、１データブロックごとにＥＥ  ＣＲＣが付加される。なお、ここでは、１データブロックは５１２Ｂｙｔｅとしているが、１データブロックは２０４８Ｂｙｔｅや３２Ｂｙｔｅなどでもよく、５１２Ｂｙｔｅに限定されない。また、ＥＥ  ＣＲＣを生成するデータは、１データブロックに限定されず、複数データブロックであってもよいし、１データブロックより少ないデータであってもよい。
【００２３】
このように、ＥＥ  ＣＲＣはデータとともにＮＡＮＤメモリ３へ書き込まれるため、ＥＥ  ＣＲＣの生成からＮＡＮＤメモリ３までの経路がＥＥ  ＣＲＣにより保護される。すなわち、ＥＥ  ＣＲＣの生成からＮＡＮＤメモリ３までの経路上で生じたエラーを検出可能となる。また、通常と同様に、ホスト４からＦＩＳ  ＣＲＣエラー検出部２２２までは、ＦＩＳ  ＣＲＣにより保護されている。このため、本実施の形態では、書き込み動作において、図２に示すように、ホスト４からＮＡＮＤメモリ３までの全経路が保護されることになる。
【００２４】
次に、本実施の形態のＮＡＮＤメモリ３からの読み出し動作について説明する。図４は、読み出し動作に関するホスト制御部２２の詳細構成例を示す図である。読み出し処理部２２４は、ホスト制御部２２において、ＮＡＮＤメモリ３からの読み出し時の処理を行うブロックである。読み出し処理部２２４は、ＦＩＳ  ＣＲＣ生成部（ＦＩＳ  ＣＲＣ  ｇｅｎｅｒａｔｏｒ）２２５（第２の誤り符号生成部）とＥＥ  ＣＲＣ生成部（ＥＥ  ＣＲＣ  ｇｅｎｅｒａｔｏｒ）２２６と比較器２２７とビット反転部（不整合符号生成部）２２８とセレクタ（Ｓｅｌ）２２９とを備える。ＥＥ  ＣＲＣ生成部２２６としては、書き込み処理部２２１のＥＥ  ＣＲＣ生成部２２３を用いてもよい。なお、図４では、データの流れをわかりやすくするために、図１に記載したブロックのうちの一部の図示を省略している。また、接続関係は簡略化して示している。
【００２５】
図５は、本実施の形態のメモリコントローラ２における読み出し動作の一例を示すフローチャートである。まず、メモリコントローラ２のホスト制御部２２は、ホスト４からデータの読み出しを指示する読み出しコマンドを受信したか否かを判断する（ステップＳ１）。なお、読み出しコマンドでは、読み出し対象のアドレスが指定されている。
【００２６】
データの読み出しコマンドを受信した場合（ステップＳ１  Ｙｅｓ）、ホスト制御部２２は、読み出しコマンドをＭＰＵ２１へ通知し、ＭＰＵ２１は、ホスト４から指示された読み出し対象データと対応するＥＥ  ＣＲＣとをＮＡＮＤメモリ３から読み出すようＮＡＮＤＣ２４へ指示する（ステップＳ２）。ＮＡＮＤＣ２４は、ＮＡＮＤメモリ３から読み出したデータとＥＥ  ＣＲＣとをＲＡＭ２５へ格納する。
【００２７】
ホスト制御部２２は、ＲＡＭ２５に格納されたデータ（ＮＡＮＤメモリ３から読み出されたデータ）に基づいてＦＩＳ  ＣＲＣを生成するとともに、ＲＡＭ２５に格納されたデータおよびＥＥ  ＣＲＣ（ＮＡＮＤメモリ３から読み出されたデータおよびＥＥ  ＣＲＣ）に基づいてエラー検出（ＥＥ  ＣＲＣ  チェック）を行う（ステップＳ３）。
【００２８】
具体的には、ＲＡＭ２５から読み出されたデータは、ホスト制御部２２のＦＩＳ  ＣＲＣ生成部２２５およびＥＥ  ＣＲＣ生成部２２６に入力されるとともにホスト４へ出力される。これと並行して、ホスト制御部２２のＦＩＳ  ＣＲＣ生成部２２５は、ＲＡＭ２５から読み出されたデータに対するＦＩＳ  ＣＲＣを生成してセレクタ２２９へ出力する。ホスト制御部２２のＥＥ  ＣＲＣ生成部２２６は、ＲＡＭ２５に格納されたデータに基づいてＥＥ  ＣＲＣを生成して比較器２２７へ入力する。ＲＡＭ２５から読み出されたＥＥ  ＣＲＣは、比較器２２７に入力される。比較器２２７は、ＥＥ  ＣＲＣ生成部２２６が生成したＥＥ  ＣＲＣとＲＡＭ２５から読み出されたＥＥ  ＣＲＣとを比較し一致するか否かを判定して、判定結果をセレクタ２２９に出力する。ＥＥ  ＣＲＣ生成部２２６に入力されたデータにエラーが無い場合は、比較器２２７の判定結果は、「一致」という結果になり、ＥＥ  ＣＲＣ生成部２２６に入力されたデータにエラーがある場合には、比較器２２７の判定結果は、「一致しない」という結果になる。従って、比較器２２７の判定結果が、「一致しない」という結果であった場合、ＥＥ  ＣＲＣ生成部２２６に入力されたデータ、すなわち、書き込み時にＥＥ  ＣＲＣ生成部２２３に入力されてから、読み出し時にＥＥ  ＣＲＣ生成部２２６に入力されるまでの経路のどこかでエラーが生じたことになる。このように、ＥＥ  ＣＲＣ生成部２２６および比較器２２７が、ＥＥ  ＣＲＣによるエラー検出を行うＥＥ  ＣＲＣ  Ｃｈｅｃｋｅｒ（誤り検出部）を構成する。
【００２９】
比較器２２７による判定結果によりエラーの有無が判定され（ステップＳ４）、エラー無し（比較器２２７の比較結果が「一致」）であった場合（ステップＳ４  Ｎｏ）、ＦＩＳ  ＣＲＣとデータをホストへ送信する（ステップＳ５）。具体的には、セレクタ２２９は、比較器２２７の判定結果に応じて、ＦＩＳ  ＣＲＣ生成部２２５から入力されるＦＩＳ  ＣＲＣと、ビット反転部２２８から出力されるビット反転後のＦＩＳ  ＣＲＣと、のうちのいずれか一方を選択して出力する。比較器２２７の判定結果が「一致」の場合、セレクタ２２９は、ＦＩＳ  ＣＲＣ生成部２２５から入力されるＦＩＳ  ＣＲＣを選択して出力する。なお、データは、上述のとおり、ＦＩＳのフォーマットに従ってホスト４へ送信されている。
【００３０】
そして、ホスト制御部２２は、ホスト４からの応答に基づいて転送したデータにエラーが有るか否かを判定する（ステップＳ６）。エラーが無かった場合（ステップＳ６  Ｎｏ）、ＭＰＵ２１またはホスト制御部２２は、全読み出し対象のデータのホスト４への送信が終了したか否かを判定し（ステップＳ７）、終了した場合（ステップＳ７  Ｙｅｓ）は読み出し処理を終了する。全読み出し対象のデータのホスト４への送信が終了していない場合（ステップＳ７  Ｎｏ）、ステップＳ２へ戻る。なお、ここでは、ステップＳ６では、ホスト４が、受信したデータおよびＦＩＳ  ＣＲＣに基づいて誤りがあるか否かを判定し、ホスト制御部２２は、この判定結果を受信することにより誤りがあるか否かを判定しているが、ステップＳ６でのエラーの判定は、これに限定されない。例えば、ステップＳ４の判定結果や再度ホスト制御部２２が再度転送したデータについて誤り検出をした結果等を用いてもよいし、これらの判定結果の組み合わせを用いてもよい。
【００３１】
一方、ステップＳ４でエラー有り（比較器２２７の比較結果が「一致しない」）であった場合（ステップＳ４  Ｙｅｓ）、ホスト制御部２２は、ＦＩＳ  ＣＲＣ生成部２２５が生成したＦＩＳ  ＣＲＣの値を、対応するデータにエラーがあることを示す値に変更して（ステップＳ８）、ステップＳ５へ進む。具体的には、ビット反転部２２８が、ＦＩＳ  ＣＲＣ生成部２２５が生成したＦＩＳ  ＣＲＣのビットを反転させてセレクタ２２９へ出力する。セレクタ２２９は、比較器２２７の判定結果が「一致しない」であった場合はビット反転部２２８から出力されるビット反転後のＦＩＳ  ＣＲＣを選択して出力する。
【００３２】
また、ステップＳ６でエラー有り（ステップＳ６  Ｙｅｓ）の場合、ホスト制御部２２は、エラーステータスと割り込みをホスト４へ送信し（ステップＳ９）、処理を終了する。具体的には、ＳＡＴＡの場合、エラーステータスと割り込みをRegister  ＦＩＳ  Device  to  Host（RegD2H  ＦＩＳ）とよばれるＦＩＳにより送信する。ここでは、エラーが発生した場合、読み出し対象データが残っていてもその後のデータを送信しないようにしているが、エラー発生時にその後の読み出し対象データをホスト４へ送信するか否か等のエラー発生時の処理の内容はこれに限定されない。
【００３３】
また、ステップＳ６でエラー無し（ステップＳ６  Ｎｏ）であった場合にも、ステータス（エラーの無いことを示す）と割り込みをホストへ送信してもよい。
【００３４】
なお、ホスト制御部２２は、ＲＡＭ２５から読み出されたデータ、セレクタ２２９から出力されるＦＩＳ  ＣＲＣ（またはビット反転後のＦＩＳ  ＣＲＣ）をＦＩＳのフォーマットに従ってホスト４へ転送するよう制御する。ビット反転させたＦＩＳ  ＣＲＣは、エラーが検出されたデータに対応するＦＩＳ  ＣＲＣとしてホスト４へ送信される。
【００３５】
このように、本実施の形態では、比較器２２７の判定結果が「一致しない」であった場合、すなわちデータにエラーが生じている場合には、ＦＩＳ  ＣＲＣを、ビット反転することによりデータと整合しない符号に変更してホスト４へ送信する。これにより、ホスト４は、データ記憶装置１から受信したデータにエラーがあることを認識することができる。
【００３６】
ＮＡＮＤメモリ３からＥＥ  ＣＲＣ生成部２２６までの経路は、ＥＥ  ＣＲＣにより保護され、ＦＩＳ  ＣＲＣ生成部２２５からホスト４までは、ＦＩＳ  ＣＲＣにより保護されている。このため、読み出し動作において、図４に示すように、ＮＡＮＤメモリ３からホスト４までの全経路が保護されることになる。また、上述のように、書き込み動作で説明したとおり、ホスト４からＮＡＮＤメモリ３までの全経路も保護されており、ＮＡＮＤメモリ３にデータが格納されている間も含めて、ホスト４からデータを受信してＮＡＮＤメモリ３に格納しＮＡＮＤメモリ３から読み出してホスト４へ送信するまでの全経路を保護することができる。
【００３７】
また、本実施の形態では、ホスト４へデータを送信しつつ、データに対応するＥＥ  ＣＲＣをチェックして、エラーが検出された場合に、ＦＩＳ  ＣＲＣを、ビット反転するようにしている。従って、ＥＥ  ＣＲＣを用いたチェックを行わない場合と同等のホスト４への転送速度を維持しつつ、ホスト４へ送信する間際までのエラーの検出を行うことができる。なお、本実施の形態では、ＦＩＳ  ＣＲＣを反転することにより、ホスト４へエラーを通知したが、比較器２２７の判定結果によるエラー検出結果を、別の方法でホスト４へ通知するようにしてもよい。
【００３８】
また、本実施の形態では、ＮＡＮＤメモリ３へのデータが格納されている間に生じるエラーを訂正する誤り訂正処理（以下、ＮＡＮＤメモリ３に対する誤り訂正処理という）については述べていないが、ＮＡＮＤメモリ３に対する誤り訂正処理を追加してもよい。このＮＡＮＤメモリ３に対する誤り訂正処理を行う場合には、ＥＥ  ＣＲＣを付加したデータに対して誤り訂正符号を生成し、ＥＥ  ＣＲＣを付加したデータと誤り訂正符号とをＮＡＮＤメモリ３へ格納する。そして、読み出し時には、誤り訂正符号に基づく誤り訂正処理を行った後のＥＥ  ＣＲＣおよびデータをホスト制御部２２への入力とすればよい。
【００３９】
図６、７は、本実施の形態の効果を説明するための図である。図６は、データパスのエラーに対する比較例の保護方法を示し、図７は、本実施の形態のデータパスのエラーに対する保護方法を示している。図６、７では、ＮＡＮＤメモリ３に対する誤り訂正処理を行う場合の例を示している。
【００４０】
図６に示すように、比較例は、書き込み時に、ホストからＦＩＳ  ＣＲＣが付加されたデータを受信して、ＦＩＳ  ＣＲＣを用いたエラー検出（ＦＩＳ  ＣＲＣ−Ｃｈｅｃｋ）を行い、その後、内部データパス保護機構により誤り訂正符号（ＥＣＣ）が生成され、データとＥＣＣがＮＡＮＤメモリに格納される。読み出し時には、ＮＡＮＤメモリからデータとＥＣＣが読み出され、ＥＣＣを用いた誤り訂正処理後に、データに対してＦＩＳ  ＣＲＣが生成され（ＦＩＳ  ＣＲＣ−Ｇｅｎ）、データとＦＩＳ  ＣＲＣがホストへ送信される。このため、内部データパス保護機構による誤り訂正処理を行ったとしても、図６に示すように、ＦＩＳ  ＣＲＣを用いたエラー検出と内部データパス保護機構による誤り訂正符号の生成までの間と、内部データパス保護機構により誤り訂正処理がされてからＦＩＳ  ＣＲＣが生成されるまでの間と、が非保護区間となる。ＮＡＮＤメモリ３に対する誤り訂正処理を行わない場合は、さらに、内部データパス保護機構とＮＡＮＤメモリ３の間も非保護区間となる。
【００４１】
これに対し、本実施の形態では、図７に示すように、ＦＩＳ  ＣＲＣを用いたエラー検出と並行してホストから入力されたデータに対してＥＥ  ＣＲＣを生成し（ＥＥ  ＣＲＣ−Ｇｅｎ）、ＥＥ  ＣＲＣはデータとともにＮＡＮＤメモリに格納される。そして、読み出し時には、ＥＣＣを用いた誤り訂正処理後のＥＥ  ＣＲＣとデータに基づいて、ＥＥ  ＣＲＣを用いたエラー検出（ＥＥ  ＣＲＣ−Ｃｈｅｃｋ）が実施される。これにより、Ｅｎｄ−ｔｏ−Ｅｎｄのデータ保護を実現することができる。
【００４２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４３】
１  データ記憶装置、２  メモリコントローラ、３  ＮＡＮＤメモリ、４  ホスト、２１  ＭＰＵ、２２  ホスト制御部、２４  ＮＡＮＤＣ、２２２  ＦＩＳ  ＣＲＣ  Ｃｈｅｃｋｅｒ、２２３，２２６  ＥＥ  ＣＲＣ  ｇｅｎｅｒａｔｏｒ、２２５  ＦＩＳ  ＣＲＣ  ｇｅｎｅｒａｔｏｒ、２２７  比較器、２２８  ビット反転部。
【図１】
2013137708.tif 000003
【図２】
2013137708.tif 000004
【図３】
2013137708.tif 000005
【図４】
2013137708.tif 000006
【図５】
2013137708.tif 000007
【図６】
2013137708.tif 000008
【図７】
2013137708.tif 000009