(57)【要約】【課題】データパスにおけるデータの誤りを検出することができる記憶装置を提供する。【解決手段】  実施形態の記憶装置は、データを記憶する不揮発性記憶媒体と、コントローラと、を具備する。コントローラは、第１データについての誤り検出が可能な第１誤り検出符号を生成し、複数の第１データを含む第２データついて、第２データに含まれる複数の第１データのうちの少なくとも１つの第１データから、第１誤り検出符号に基づいて誤りを検出したかどうかを示す第１フラグを生成し、第２データと第１フラグとを含むデータについての誤り訂正が可能な第１誤り訂正符号を生成し、第２データと、第１フラグと、第１誤り訂正符号とを不揮発性記憶媒体に記憶させる。【選択図】図１２
2019028952.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性記憶媒体と、
第１データについての誤り検出が可能な第１誤り検出符号を生成し、
複数の前記第１データを含む第２データついて、
前記第２データに含まれる前記複数の第１データのうちの少なくとも１つの前記第１デー
タから、前記第１誤り検出符号に基づいて誤りを検出したかどうかを示す第１フラグを生
成し、
前記第２データと前記第１フラグとを含むデータについての誤り訂正が可能な第１誤り訂
正符号を生成し、
前記第２データと、前記第１フラグと、前記第１誤り訂正符号とを前記不揮発性記憶媒体
に記憶させる
コントローラと、
を具備する記憶装置。
【請求項２】
前記コントローラは、
誤り訂正符号に基づいてデータに含まれる誤りの位置を特定することが可能な第１誤り訂
正回路を含み、
前記コントローラは、
前記不揮発性記憶媒体から読み出された前記第２データに対応する第３データと、
前記第１フラグに対応し、固定値を有する固定フラグと、
前記不揮発性記憶媒体から読み出された前記第１誤り訂正符号に対応する第２誤り訂正
符号と、
を前記第１誤り訂正回路に入力する
請求項１に記載の記憶装置。
【請求項３】
前記コントローラは、
前記第３データを複数の第４データに分割し、
前記第１誤り訂正回路が、前記第３データに対応する前記固定フラグに誤りを検出した場
合、
前記第３データに対応する少なくとも１つの前記第４データについて、前記第４データが
誤っていることを示す第２誤り検出符号を生成する、
請求項２に記載の記憶装置。
【請求項４】
前記コントローラは、
ホストからの要求に基づいて前記不揮発性記憶媒体からデータを読み出し、
前記第２誤り検出符号に基づいて前記第４データについて誤りを検出した場合、
前記第４データを前記ホストに送信しない
請求項３に記載の記憶装置。
【請求項５】
前記コントローラは、
前記第１データを構成する各ビットに対して排他的論理和演算をすることによって前記第
１誤り検出符号を生成する
請求項１乃至４のいずれか１項に記載の記憶装置。
【請求項６】
前記コントローラは、
前記第１データに対するハミング符号を前記第１誤り検出符号として生成する
請求項１乃至４のいずれか１項に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置に関する。
【背景技術】
【０００２】
記憶装置を制御するコントローラにはＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）な
どの半導体集積回路が用いられることが多い。近年、半導体集積回路を製造する半導体プ
ロセスは微細化が進んでおり、外部環境（例えば環境中のα線などの放射線）の影響を受
けやすくなっている。このため、半導体集積回路中のデータパスにおいてデータの誤りが
発生する可能性が高まっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１３７７０８号公報
【特許文献２】特開２０１１−１８７０３９号公報
【特許文献３】特表２０１１−５０８３４９号公報
【特許文献４】特表２０１０−５１５１７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、データパスにおけるデータの誤りを検出することが
できる記憶装置を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を達成するために、実施形態の記憶装置は、データを記憶する不揮発性記憶媒
体と、コントローラと、を具備する。コントローラは、第１データについての誤り検出が
可能な第１誤り検出符号を生成し、複数の第１データを含む第２データついて、第２デー
タに含まれる複数の第１データのうちの少なくとも１つの第１データから、第１誤り検出
符号に基づいて誤りを検出したかどうかを示す第１フラグを生成し、第２データと第１フ
ラグとを含むデータについての誤り訂正が可能な第１誤り訂正符号を生成し、第２データ
と、第１フラグと、第１誤り訂正符号とを不揮発性記憶媒体に記憶させる。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態の記憶装置の構成を説明するブロック図である。
【図２】第１の実施形態に係るファームウェアの実行により実現される各種機能部を説明する図である。
【図３】第１の実施形態に係るライトデータパスを説明する図である。
【図４】第１の実施形態に係るライトデータパス中のデータ形式を説明する図である。
【図５】第１の実施形態に係るＥ２Ｅ生成回路の構成を説明する図である。
【図６】第１の実施形態に係るＥ２Ｅ検査回路、及び、圧縮パリティ生成回路の構成を説明する図である。
【図７】第１の実施形態に係るＥＣＣ生成回路の構成を説明する図である。
【図８】第１の実施形態に係るリードデータパスを説明する図である。
【図９】第１の実施形態に係るリードデータパス中のデータ形式を説明する図である。
【図１０】第１の実施形態に係る圧縮パリティ固定回路の構成を説明する図である。
【図１１】第１の実施形態に係るＥＣＣ訂正回路の構成を説明する図である。
【図１２】第１の実施形態に係るデータの誤り検出を説明する図である。
【図１３】第１の実施形態に係るＥ２Ｅ生成回路の構成を説明する図である。
【図１４】第１の実施形態に係るＥ２Ｅ検査回路の構成を説明する図である。
【図１５】第１の実施形態に係る変形例を説明する図である。
【図１６】第２の実施形態に係るライトデータパス中のデータ形式を説明する図である。
【図１７】第２の実施形態に係るＥ２Ｅ生成回路の構成を説明する図である。
【図１８】第２の実施形態に係るＥ２Ｅ検査回路、及び、圧縮パリティ生成回路の構成を説明する図である。
【図１９】第２の実施形態に係るリードデータパス中のデータ形式を説明する図である。
【図２０】第２の実施形態に係るＥ２Ｅ生成回路の構成を説明する図である。
【図２１】第２の実施形態に係るＥ２Ｅ検査回路の構成を説明する図である。
【発明を実施するための形態】
【０００７】
以下、実施形態の記憶装置を、図面を参照して説明する。なお、以下の説明において、
同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
【０００８】
[第１の実施形態]
図１は、第１の実施形態の記憶装置の構成を説明するブロック図である。
【０００９】
記憶装置１は、ホスト２と通信可能である。記憶装置１は、コントローラ１０と、不揮
発性記憶媒体２０と、バッファ３０と、を含む。
【００１０】
コントローラ１０は、ホスト２と通信し、記憶装置１全体の動作を制御する。コントロ
ーラ１０は、例えばＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）として構成される半導
体集積回路である。
【００１１】
本実施形態の説明では、ホスト２はＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）規格のインタフ
ェースをサポートするコンピュータであるが、その他の規格、例えばＳＡＳ（Ｓｅｒｉａ
ｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）規格やＮＶＭｅ（ＮＶＭ  Ｅｘｐｒｅｓｓ）（登録商
標）規格のインタフェースをサポートするコンピュータであってもよい。
【００１２】
不揮発性記憶媒体２０は、データを不揮発的に（永続的に）記憶する。本実施形態の不
揮発性記憶媒体２０はＮＡＮＤ型フラッシュメモリであるが、これに限定されるものでは
ない。例えば、３次元構造フラッシュメモリ、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Ｍ
ａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの
半導体メモリや、磁気ディスク、光ディスクなどのディスク媒体であってもよい。以下の
説明においては、不揮発性記憶媒体２０をＮＡＮＤメモリ２０と表記することがある。
【００１３】
バッファ３０は、データを揮発的に（一時的に）に記憶する。バッファ３０に記憶され
るデータには、（１）ホスト２から受信したユーザデータ、（２）ＮＡＮＤメモリ２０か
ら読み出したユーザデータ、（３）コントローラ１０が記憶装置１を制御するにあたり必
要な情報、などがある。本実施形態のバッファ３０はＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎ
ｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であるが、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏ
ｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など他の種類の揮発性半導体メモリでもよい。バッフ
ァ３０は、コントローラ１０に内蔵されていてもよい。
【００１４】
コントローラ１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４
０と、ホストインタフェース（ＩＦ）制御部５０と、バッファ制御部６０と、メモリイン
タフェース（ＩＦ）制御部７０と、を含む。
【００１５】
ＣＰＵ４０は、ＦＷ（Ｆｉｒｍｗａｒｅ）に基づき記憶装置１全体の制御を行う。図２
は、ＣＰＵ４０がＦＷを実行することによって実現する各種機能部を示す図である。ＣＰ
Ｕ４０は、記憶装置１全体を制御する処理部４２として機能する。処理部４２は、ホスト
処理部４４と、バッファ処理部４６と、メモリ処理部４８と、を含む。ホスト処理部４４
は、ホストＩＦ制御部５０を主に制御する。バッファ処理部４６は、バッファ制御部６０
を主に制御する。メモリ処理部４８は、メモリＩＦ制御部７０を主に制御する。ＣＰＵ４
０は、コントローラ１０に内蔵せず、別個の半導体集積回路としてもよい。また、以下の
説明においてＦＷにより実行される機能の一部、又は、全部は専用のＨＷ（Ｈａｒｄｗａ
ｒｅ）によっても実行可能であり、ＨＷにより実行される機能の一部、又は、全部をＦＷ
によって実行することも可能である。
【００１６】
図１に戻って説明を続ける。
【００１７】
ホストＩＦ制御部５０は、ホスト２から受信したコマンドの解釈や実行などを行う。
【００１８】
バッファ制御部６０は、バッファ３０へのデータの書き込み、読み出しの制御、及び、
バッファ３０の空き領域の管理などを行う。
【００１９】
メモリＩＦ制御部７０は、ＮＡＮＤ制御部８０を含む。ＮＡＮＤ制御部８０は、ＮＡＮ
Ｄメモリ２０へのデータの書き込み、読み出し、消去等の動作を制御する。
【００２０】
ＮＡＮＤ制御部８０は、ＥＣＣ制御部１００を含む。ＥＣＣ制御部１００は、ＮＡＮＤ
メモリ２０へ書き込まれるデータに対して、誤り訂正符号を付加する。また、ＥＣＣ制御
部１００は、ＮＡＮＤメモリ２０から読み出されたデータに対して、誤り訂正符号に基づ
いたエラー訂正処理を行う。誤り訂正符号としては、エラー訂正時に、データ中のエラー
位置が特定できるものであれば任意の符号を採用可能である。例えば、ＲＳ（Ｒｅｅｄ  
Ｓｏｌｏｍｏｎ）符号、ＢＣＨ（Ｂｏｓｅ  Ｃｈａｕｄｈｕｒｉ  Ｈｏｃｑｕｅｎｇｈｅ
ｍ）符号を用いることができる。ＬＤＰＣ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃ
ｈｅｃｋ）符号を用いる場合には、エラー訂正前のデータとエラー訂正後のデータとを比
較することにより、データ中のエラー位置を特定することができるようにＥＣＣ制御部１
００を構成すれば、本実施形態に採用可能である。
【００２１】
［ライトデータパス］
以下、図３〜図７を参照して、本実施形態におけるライトデータパスについて説明する
。
【００２２】
図３は、コントローラ１０内のライトデータパスを説明する図である。
【００２３】
ホストＩＦ制御部５０は、ＣＲＣ検査回路５２と、Ｅ２Ｅ生成回路５４と、を含む。
【００２４】
ホスト２から受信するユーザデータには、インタフェース規格に基づき、所定のデータ
量（例えば４ｋＢ）ごとに誤り検出符号が付加されている。誤り検出符号は例えばＣＲＣ
（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である。ＣＲＣ検査回路５２は、
誤り検出符号を検査し、ユーザデータの正当性を検証する。ＣＲＣ検査回路５２の出力は
、例えば６４ビット（すなわち８Ｂ）のデータ幅を有する。ＣＲＣ検査回路５２は、１サ
イクルあたり８Ｂのユーザデータ（図４Ａに示すデータＤ１）を出力する。
【００２５】
データＤ１は、図３に示すように、Ｅ２Ｅ生成回路５４に入力される。Ｅ２Ｅ生成回路
５４は、データＤ１に対し、Ｅｎｄ−ｔｏ−Ｅｎｄデータ保護パリティ（以下、Ｅ２Ｅ＿
Ｐと称する）を生成する。Ｅ２Ｅ生成回路５４は、データＤ１に対しＥ２Ｅ＿Ｐを付加し
、図４Ｂに示すようなデータＤ２を生成する。Ｅ２Ｅ生成回路５４は、図５に示すように
、データＤ１に対して例えば排他的論理和（ＸＯＲ）演算を行うことにより、Ｅ２Ｅ＿Ｐ
を生成する。図３に示すように、Ｅ２Ｅ生成回路５４は、データＤ２を出力する。Ｅ２Ｅ
生成回路５４の出力は、例えば６５ビットのデータ幅を有する。Ｅ２Ｅ生成回路は、１サ
イクルあたり１ビット＋８ＢのデータＤ２を出力する。
【００２６】
バッファ制御部６０は、データＤ２をバッファ３０に格納する。バッファ制御部６０は
、データＤ２をバッファ３０から読み出し、ＮＡＮＤ制御部８０に入力する。なお、バッ
ファ制御部６０は、データＤ２をバッファ３０に格納する際に、より強力な誤り検出符号
（例えばＣＲＣ）を付加してもよい。
【００２７】
ＮＡＮＤ制御部８０は、Ｅ２Ｅ検査回路８１と、圧縮パリティ生成回路８２と、を含む
。
【００２８】
Ｅ２Ｅ検査回路８１は、バッファ制御部６０から入力されたデータＤ２に対して、Ｅ２
Ｅ＿Ｐを検査することにより、データＤ２の正当性を検証する。Ｅ２Ｅ＿Ｐの検査結果、
及び、データＤ２中のユーザデータは、圧縮パリティ生成回路８２に入力される。
【００２９】
図６は、Ｅ２Ｅ検査回路８１によるＥ２Ｅ＿Ｐの検査、及び、圧縮パリティ生成回路８
２による圧縮パリティの生成を説明する図である。Ｅ２Ｅ検査回路８１は、データＤ２（
１ビット＋８Ｂ）に対して例えばＸＯＲ演算（以下、Ｅ２Ｅ検査と称する）を行うことに
より、データＤ２の正当性を検査する。データＤ２にエラーが無ければ、Ｅ２Ｅ検査の結
果（以下、Ｅ２Ｅ検査結果と称する）は０となる。データＤ２にエラーが有れば、Ｅ２Ｅ
検査結果は１となる。
【００３０】
圧縮パリティ生成回路８２は、データラッチ８３と、データラッチ８４と、論理和回路
８５と、を含む。データラッチ８３とデータラッチ８４はそれぞれ、複数（例えば６４）
のデータＤ２に対するＥ２Ｅ検査結果と、対応するユーザデータとを保持する。データラ
ッチ８３が保持したＥ２Ｅ検査結果は、６４個分ごとに論理和回路８５に入力され、論理
和（ＯＲ）演算される。ＯＲ演算の結果は、圧縮パリティＣＭＰ＿Ｐとなる。前述したよ
うに、データＤ２にエラーが無ければ、Ｅ２Ｅ検査結果は０である。従って、６４個分の
データＤ２のすべてにエラーが無ければＣＭＰ＿Ｐも０になる。一方、６４個分のデータ
Ｄ２のどれか一つにでもエラーが有る場合は、ＣＭＰ＿Ｐは１となる。圧縮パリティ生成
回路８２は、ＣＭＰ＿Ｐ及びデータラッチ８４が保持した６４個分のデータＤ２に対応す
るユーザデータを、データＤ３として出力する。データＤ３は、図４Ｃに示すように、１
ビット＋５１２Ｂの大きさを有する。
【００３１】
図３に示すように、圧縮パリティ生成回路８２から出力されたデータＤ３は、ＥＣＣ制
御部１００に入力される。
【００３２】
ＥＣＣ制御部１００は、ＥＣＣ生成回路１０１を含む。ＥＣＣ生成回路１０１は、図７
に示すように、データラッチ１０２と、符号生成回路１０３と、を含む。データラッチ１
０２は、複数個(例えば８個)のデータＤ３を保持する。データラッチ１０２が保持した８
個のデータＤ３は、符号生成回路１０３に入力される。符号生成回路１０３は、例えば３
１２Ｂの誤り訂正符号ＥＣＣを生成する。ＥＣＣ生成回路１０１は、ＥＣＣ及びデータラ
ッチ１０２が保持した８個のデータＤ３を、データＤ４として出力する。データＤ４は、
図４Ｄに示すように、例えば３１２Ｂ＋８ビット＋４ｋＢの大きさを有する。
【００３３】
データＤ４は、図３に示すように、ＮＡＮＤメモリ２０に記憶される。
【００３４】
［リードデータパス］
以下、図８〜図１４を参照して、本実施形態におけるリードデータパスについて説明す
る。
【００３５】
図８は、コントローラ１０内のリードデータパスを説明する図である。
【００３６】
ＮＡＮＤ制御部８０は、圧縮パリティ固定回路８６と、Ｅ２Ｅ生成回路８７と、を含む
。
【００３７】
ＮＡＮＤ制御部８０は、ＮＡＮＤメモリ２０からデータＤ５を読み出す。データＤ５は
、圧縮パリティ固定回路８６に入力される。データＤ５は、図９Ａに示すように、例えば
３１２Ｂ＋８ビット＋４ｋＢの大きさを有する。データＤ５は、ライトデータパスにおけ
るデータＤ４と同等であるが、エラーを含む場合がある。
【００３８】
圧縮パリティ固定回路８６は、図１０に示すように、データＤ５中の圧縮パリティＣＭ
Ｐ＿Ｐを、固定パリティＦＩＸ＿Ｐに変換する。ＦＩＸ＿Ｐは、例えば０に固定された値
である。圧縮パリティ固定回路８６は、データＤ５中のＥＣＣと、ＦＩＸ＿Ｐと、データ
Ｄ５中のユーザデータとをあわせ、データＤ６として出力する。データＤ６は、図９Ｂに
示すように、例えば３１２Ｂ＋８ビット＋４ｋＢの大きさを有する。データＤ６は、図８
に示すように、ＥＣＣ制御部１００に入力される。
【００３９】
ＥＣＣ制御部１００は、ＥＣＣ訂正回路１０４を含む。ＥＣＣ訂正回路１０４は、図１
１に示すように、誤り訂正回路１０５と、データラッチ１０６と、を含む。誤り訂正回路
１０５は、データＤ６中の誤り訂正符号ＥＣＣに基づき、データＤ６のエラー訂正を行う
。誤り訂正回路１０５は、前述のとおり、データＤ６中のエラー位置を特定することがで
きる。誤り訂正回路１０５は特に、データＤ６中のＦＩＸ＿Ｐのどこからエラーが検出さ
れたかを特定することができる。
【００４０】
図１２に示すように、データＤ３中の圧縮パリティＣＭＰ＿Ｐは、データＤ３に対応す
るすべてのデータＤ２についてエラーが無かった場合は０である。また、データＤ３中の
圧縮パリティＣＭＰ＿Ｐは、データＤ３に対応する少なくとも一つのデータＤ２について
エラーが有った場合は１である。
【００４１】
一方でデータＤ６中のＦＩＸ＿Ｐは、前述のとおり０に固定されている。従って、誤り
訂正回路１０５は、データＤ４中の圧縮パリティＣＭＰ＿Ｐが０だった場合、これに対応
するデータＤ６のＦＩＸ＿Ｐにエラーを検出しない。また、誤り訂正回路１０５は、デー
タＤ４中の圧縮パリティＣＭＰ＿Ｐが１だった場合、これに対応するデータＤ６のＦＩＸ
＿Ｐに必ずエラーを検出する。
【００４２】
従って、Ｅ２Ｅ検査においてエラーが検出されたデータＤ２を少なくとも一つ含むデー
タＤ３に対応するデータＤ６のＦＩＸ＿Ｐからはエラーが検出される。Ｅ２Ｅ検査におい
てエラーが検出されたデータＤ２を一つも含まないデータＤ３に対応するデータＤ６のＦ
ＩＸ＿Ｐからはエラーが検出されない。
【００４３】
図１１に示すように、データラッチ１０６は、エラー訂正がされたユーザデータを５１
２Ｂずつ保持する。また、データラッチ１０６は、当該５１２Ｂのユーザデータに対応す
るＦＩＸ＿Ｐにエラーが検出されたかどうかのフラグ（以下、誤りフラグと称する）を保
持する。誤りフラグは、ＦＩＸ＿Ｐにエラーが検出された時は１である。誤りフラグは、
ＦＩＸ＿Ｐにエラーが検出されなかった時は０である。
【００４４】
ＥＣＣ訂正回路１０４は、データラッチ１０６が保持するエラー訂正がされたユーザデ
ータを５１２Ｂごとに、これに対応する誤りフラグとともに、データＤ７として出力する
。データＤ７は、図９Ｃに示すように、１ビット＋５１２Ｂの大きさを有する。
【００４５】
図８に示すように、データＤ７は、Ｅ２Ｅ生成回路８７に入力される。
【００４６】
Ｅ２Ｅ生成回路８７は、図１３に示すように、データラッチ８８と、排他的論理和回路
８９と、論理反転回路９０と、選択回路９１と、を含む。
【００４７】
データラッチ８８は、入力されたデータＤ７を保持する。排他的論理和回路８９は、デ
ータラッチ８８が保持するデータＤ７中のユーザデータを８Ｂずつ、排他的論理和（ＸＯ
Ｒ）演算をする。論理反転回路９０は、排他的論理和回路８９の出力に対して、論理反転
演算を行う。
【００４８】
選択回路９１は、排他的論理和回路８９の出力と、論理反転回路９０との出力を、デー
タラッチ８８が保持するデータＤ７中の誤りフラグに基づいて選択し、出力する。具体的
には、誤りフラグが０の時は、排他的論理和回路８９の出力を選択する。誤りフラグが１
の時は、論理反転回路９０の出力を選択する。選択回路９１の出力は、後述するデータＤ
８に付加されるＥｎｄ−ｔｏ−Ｅｎｄデータ保護パリティ（Ｅ２Ｅ＿Ｐ）となる。
【００４９】
Ｅ２Ｅ生成回路８７は、選択回路９１の出力（すなわちＥ２Ｅ＿Ｐ）、及び、データラ
ッチ８８が保持するユーザデータを８Ｂずつ、データＤ８として出力する。Ｅ２Ｅ生成回
路８７の出力は、例えば６５ビットのデータ幅を有する。Ｅ２Ｅ生成回路８７は、１つの
データＤ７に対応する６４個のデータＤ８を、６４サイクルかけて出力する。データＤ８
は、図９Ｄに示すように、１ビット＋８Ｂの大きさを有する。
【００５０】
バッファ制御部６０は、図８に示すように、データＤ８をバッファ３０に格納する。バ
ッファ制御部６０は、バッファ３０からデータＤ８を読み出し、ホストＩＦ制御部５０に
入力する。なお、バッファ制御部６０は、データＤ８をバッファ３０に格納する際に、よ
り強力な誤り検出符号（例えばＣＲＣ）を付加してもよい。
【００５１】
ホストＩＦ制御部５０は、Ｅ２Ｅ検査回路５６と、ＣＲＣ生成回路５８と、を含む。
【００５２】
Ｅ２Ｅ検査回路５６は、図１４に示すように、データＤ８（１ビット＋８Ｂ）に対して
例えばＸＯＲ演算（以下、Ｅ２Ｅ検査と称する）を行うことにより、データＤ８の正当性
を検査する。データＤ８にエラーが無ければ、Ｅ２Ｅ検査の結果（以下、Ｅ２Ｅ検査結果
と称する）は０となる。データＤ８にエラーが有れば、Ｅ２Ｅ検査結果は１となる。
【００５３】
前述したように、データＤ７中の誤りフラグが０の時は、データＤ８に付加されるＥ２
Ｅ＿Ｐは、排他的論理和回路８９の出力である。従って、データＤ７中の誤りフラグが０
の時は、当該データＤ７に含まれるすべてのユーザデータに対応するデータＤ８に対する
Ｅ２Ｅ検査からは、エラーが検出されない。
【００５４】
また、データＤ７中の誤りフラグが１の時は、データＤ８に付加されるＥ２Ｅ＿Ｐは、
論理反転回路９０の出力である。従って、データＤ７中の誤りフラグが１の時は、当該デ
ータＤ７に含まれるすべてのユーザデータに対応するデータＤ８に対するＥ２Ｅ検査から
は、エラーが検出される。なお、データＤ７中の誤りフラグが１の時、当該データＤ７に
含まれるユーザデータに対応する少なくとも一つのデータＤ８に対するＥ２Ｅ検査からエ
ラーが検出されるように選択回路９１が構成されていてもよい。
【００５５】
Ｅ２Ｅ検査結果が１の場合（すなわちエラーが検出された場合）、ホストＩＦ制御回路
５０は、当該データＤ８をホスト２へ送信せずに、破棄する。これにより、ライトデータ
パス、リードデータパスのいずれかで誤りが発生したユーザデータがホスト２に送信され
ることが防止できる。
【００５６】
Ｅ２Ｅ検査結果が０の場合（すなわちエラーが検出されなかった場合）、ホストＩＦ制
御回路５０は、当該データＤ８のＥ２Ｅ＿Ｐを除去し、データＤ９を生成する。
【００５７】
データＤ９は、図８に示すように、ＣＲＣ生成回路５８に入力される。ＣＲＣ生成回路
５８は、インタフェース規格に基づき、データＤ９に対し、所定のデータ量（例えば４ｋ
Ｂ）ごとに誤り検出符号（例えばＣＲＣ）を付加し、ホスト２に送信する。
【００５８】
なお、Ｅ２Ｅ検査結果が１の場合、データＤ８を破棄する代わりに、当該データＤ８に
対応するデータＤ９から誤り検出符号を生成する際に、エラーが検出されるように誤り検
出符号を生成してもよい。
【００５９】
以上では、ユーザデータの保護について説明したが、本実施形態の記憶装置１によって
保護可能なデータはこれに限られない。例えば、管理データなどのシステムデータを、上
述したユーザデータの保護と同じように保護することができる。
【００６０】
また、以上の説明では、図１５Ａに示すように、データＤ２に対するＥ２Ｅ検査でエラ
ーが検出されなかった場合に、これに対応するデータＤ３中のＣＭＰ＿Ｐを０にし、デー
タＤ２に対するＥ２Ｅ検査でエラーが検出された場合に、これに対応するデータＤ３中の
ＣＭＰ＿Ｐを１にした。また、データＤ６中のＦＩＸ＿Ｐは０に固定された。本実施形態
の記憶装置１は、以下に説明するような構成にしてもよい。
【００６１】
［第１の変形例］
第１の変形例の記憶装置１では、図１５Ｂに示すように、データＤ２に対するＥ２Ｅ検
査でエラーが検出されなかった場合に、これに対応するデータＤ３中のＣＭＰ＿Ｐを０に
し、データＤ２に対するＥ２Ｅ検査でエラーが検出された場合に、これに対応するデータ
Ｄ３中のＣＭＰ＿Ｐを１にする。また、データＤ６中のＦＩＸ＿Ｐは１に固定される。こ
の場合、データＤ２に対するＥ２Ｅ検査でエラーが検出されなかったユーザデータに対応
するデータＤ７中の誤りフラグは１になる。また、データＤ２に対するＥ２Ｅ検査でエラ
ーが検出されたユーザデータに対応するデータＤ７中の誤りフラグは０になる。
【００６２】
第１の変形例の記憶装置１における選択回路９１は、誤りフラグが１の時は、排他的論
理和回路８９の出力を選択し、誤りフラグが０の時は、論理反転回路９０の出力を選択す
る。
【００６３】
［第２の変形例］
第２の変形例の記憶装置１では、図１５Ｃに示すように、データＤ２に対するＥ２Ｅ検
査でエラーが検出されなかった場合に、これに対応するデータＤ３中のＣＭＰ＿Ｐを１に
し、データＤ２に対するＥ２Ｅ検査でエラーが検出された場合に、これに対応するデータ
Ｄ３中のＣＭＰ＿Ｐを０にする。これは、例えば、論理和回路８５の出力を論理反転演算
した結果をＣＭＰ＿Ｐとすることにより実現される。また、データＤ６中のＦＩＸ＿Ｐは
０に固定される。この場合、データＤ２に対するＥ２Ｅ検査でエラーが検出されなかった
ユーザデータに対応するデータＤ７中の誤りフラグは１になる。また、データＤ２に対す
るＥ２Ｅ検査でエラーが検出されたユーザデータに対応するデータＤ７中の誤りフラグは
０になる。
【００６４】
第２の変形例の記憶装置１における選択回路９１は、誤りフラグが１の時は、排他的論
理和回路８９の出力を選択し、誤りフラグが０の時は、論理反転回路９０の出力を選択す
る。
【００６５】
［第３の変形例］
第３の変形例の記憶装置１では、図１５Ｄに示すように、データＤ２に対するＥ２Ｅ検
査でエラーが検出されなかった場合に、これに対応するデータＤ３中のＣＭＰ＿Ｐを１に
し、データＤ２に対するＥ２Ｅ検査でエラーが検出された場合に、これに対応するデータ
Ｄ３中のＣＭＰ＿Ｐを０にする。これは、例えば、論理和回路８５の出力を論理反転演算
した結果をＣＭＰ＿Ｐとすることにより実現される。また、データＤ６中のＦＩＸ＿Ｐは
１に固定される。この場合、データＤ２に対するＥ２Ｅ検査でエラーが検出されなかった
ユーザデータに対応するデータＤ７中の誤りフラグは０になる。また、データＤ２に対す
るＥ２Ｅ検査でエラーが検出されたユーザデータに対応するデータＤ７中の誤りフラグは
１になる。
【００６６】
第３の変形例の記憶装置１における選択回路９１は、誤りフラグが０の時は、排他的論
理和回路８９の出力を選択し、誤りフラグが１の時は、論理反転回路９０の出力を選択す
る。
【００６７】
以上説明した第１の実施形態によれば、記憶装置はＥｎｄ−ｔｏ−Ｅｎｄデータ保護パ
リティから圧縮パリティを生成し、ユーザデータ及び誤り訂正符号とともに不揮発性記憶
媒体に記憶させる。また、記憶装置は不揮発性記憶媒体から読み出した圧縮パリティ部分
を固定値にしてから誤り訂正を行うことにより、圧縮パリティにエラーが有ったかを検出
できる。これにより、記憶装置はデータパス中のデータの誤りを検出することができる。
【００６８】
[第２の実施形態]  
第１の実施形態の記憶装置では、Ｅｎｄ−ｔｏ−Ｅｎｄデータ保護パリティ（Ｅ２Ｅ＿
Ｐ）として、８Ｂあたり１ビットのエラーが検出可能な１ビットパリティを用いた。これ
に対し本実施形態の記憶装置では、Ｅ２Ｅ＿Ｐとして、例えば８Ｂあたり１ビットのエラ
ーが訂正可能かつ２ビットのエラーが検出可能な誤り検出符号（例えば８ビットのハミン
グ符号）を用いる。以下の説明に置いては、第１の実施形態と異なる箇所のみを説明する
。
【００６９】
［ライトデータパス］
以下、図１６〜図１８を参照して、本実施形態におけるライトデータパスについて説明
する。
【００７０】
図１６Ａ〜図１６Ｄは、ライトデータパス中の各データの形式を説明する図である。図
１６Ａ〜図１６Ｄは、第１の実施形態の図４Ａ〜図４Ｄにそれぞれ対応する。図１６Ｂに
示すデータＤ２のみが、図４Ｂに示すデータＤ２と異なる。すなわち、データＤ２に含ま
れるＥ２Ｅ＿Ｐは、８ビットのハミング符号（ＨＭ符号）であり、データＤ２は８ビット
＋８Ｂの大きさを有する。
【００７１】
図１７は、本実施形態のＥ２Ｅ生成回路５４Ａの構成を説明する図である。図１７は、
第１の実施形態の図５に対応する。本実施形態のＥ２Ｅ生成回路５４Ａは、ＨＭ符号生成
回路５５を含む。ＨＭ符号生成回路５５の構成は当業者に周知であるので詳細な説明は省
略する。ＨＭ符号生成回路５５は、８ＢのデータＤ１に対して１ビットのエラーが訂正可
能かつ２ビットのエラーが検出可能な、８ビットのＨＭ符号を生成する。ＨＭ符号生成回
路５５は、データＤ１に対し、Ｅ２Ｅ＿ＰとしてＨＭ符号を付加し、データＤ２を出力す
る。
【００７２】
図１８は、本実施形態のＥ２Ｅ検査回路８１Ａの構成を説明する図である。図１８は、
第１の実施形態の図６に対応する。本実施形態のＥ２Ｅ検査回路８１Ａは、ＨＭ符号検査
回路９２を含む。ＨＭ符号検査回路９２の構成は当業者に周知であるので詳細な説明は省
略する。ＨＭ符号検査回路９２は、データＤ２に対して、Ｅ２Ｅ＿Ｐすなわち８ビットの
ＨＭ符号を検査することにより、データＤ２の正当性を検証する。データＤ２から２ビッ
トのエラーが検出された場合、Ｅ２Ｅ検査回路８１Ａは、Ｅ２Ｅ検査結果として１を出力
する。データＤ２からエラーが検出されなかった場合、または、１ビットのエラーを訂正
した場合、Ｅ２Ｅ検査回路８１Ａは、Ｅ２Ｅ検査結果として０を出力する。Ｅ２Ｅ検査結
果は、第１の実施形態と同様に、１ビットの圧縮パリティＣＭＰ＿Ｐにまとめられる。デ
ータＤ２中のユーザデータは、ＨＭ符号検査回路９２によりエラーが訂正された後、デー
タラッチ８４によって保持される。
【００７３】
［リードデータパス］
次に、図１９〜図２１を参照して、本実施形態におけるリードデータパスについて説明
する。
【００７４】
図１９Ａ〜図１９Ｄは、リードデータパス中の各データの形式を説明する図である。図
１９Ａ〜図１９Ｄは、第１の実施形態の図９Ａ〜図９Ｄにそれぞれ対応する。図１９Ｄに
示すデータＤ８のみが、図９Ｄに示すデータＤ８と異なる。すなわち、データＤ８に含ま
れるＥ２Ｅ＿Ｐは、８ビットのハミング符号（ＨＭ符号）であり、データＤ８は８ビット
＋８Ｂの大きさを有する。
【００７５】
図２０は、本実施形態のＥ２Ｅ生成回路８７Ａの構成を説明する図である。図２０は、
第１の実施形態の図１３に対応する。本実施形態のＥ２Ｅ生成回路８７Ａは、ＨＭ符号生
成回路９３を含む。ＨＭ符号生成回路９３の構成は当業者に周知であるので詳細な説明は
省略する。ＨＭ符号生成回路９３は、データラッチ８８が保持するデータＤ７中の８Ｂの
ユーザデータに対して１ビットのエラーが訂正可能かつ２ビットのエラーが検出可能な、
８ビットのＨＭ符号を生成する。論理反転回路９０は、ＨＭ符号生成回路９３の出力の少
なくとも２ビット、すなわちＨＭ符号によるエラー検出能力以上のビット数に対して、論
理反転演算を行う。
【００７６】
図２１は、本実施形態のＥ２Ｅ検査回路５６Ａの構成を説明する図である。図２１は、
第１の実施形態の図１４に対応する。本実施形態のＥ２Ｅ検査回路５６Ａは、ＨＭ符号検
査回路５７を含む。ＨＭ符号検査回路５７の構成は当業者に周知であるので詳細な説明は
省略する。ＨＭ符号検査回路５７は、データＤ８に対して、Ｅ２Ｅ＿Ｐすなわち８ビット
のＨＭ符号を検査することにより、データＤ８の正当性を検証する。データＤ８から２ビ
ットのエラーが検出された場合、Ｅ２Ｅ検査回路５６Ａは、当該データＤ８を破棄する。
データＤ８からエラーが検出されなかった場合、または、１ビットのエラーを訂正した場
合、Ｅ２Ｅ検査回路５６Ａは、当該データＤ８のＥ２Ｅ＿Ｐを除去し、データＤ９を生成
する。データＤ８中のユーザデータは、ＨＭ符号検査回路５７によりエラーが訂正された
後、データＤ９として出力される。
【００７７】
以上説明した第２の実施形態の記憶装置によれば、Ｅｎｄ−ｔｏ−Ｅｎｄデータ保護パ
リティとして、複数ビットのエラーを検出可能な誤り検出符号を用いるので、データの保
護をより強力にすることができる。
【００７８】
以上説明した少なくとも１つの実施形態によれば、記憶装置はＥｎｄ−ｔｏ−Ｅｎｄデ
ータ保護パリティから圧縮パリティを生成し、ユーザデータ及び誤り訂正符号とともに不
揮発性記憶媒体に記憶させる。また、記憶装置は不揮発性記憶媒体から読み出した圧縮パ
リティ部分を固定値にしてから誤り訂正を行うことにより、圧縮パリティにエラーが有っ
たかを検出できる。これにより、記憶装置はデータパス中のデータの誤りを検出すること
ができる。
【００７９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したも
のであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その
他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の
省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や
要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる
。
【符号の説明】
【００８０】
１…記憶装置、２…ホスト、１０…コントローラ、２０…不揮発性記憶媒体、３０…バ
ッファ、４０…ＣＰＵ、４２…処理部、４４…ホスト処理部、４６…バッファ処理部、４
８…メモリ処理部、５０…ホストインタフェース制御部、５２…ＣＲＣ検査回路、５４…
Ｅ２Ｅ生成回路、５５…ＨＭ符号生成回路、５６…Ｅ２Ｅ検査回路、５７…ＨＭ符号検査
回路、５８…ＣＲＣ生成回路、６０…バッファ制御部、７０…メモリインタフェース制御
部、８０…ＮＡＮＤ制御部、８１…Ｅ２Ｅ検査回路、８２…圧縮パリティ生成回路、８３
…データラッチ、８４…データラッチ、８５…論理和回路、８６…圧縮パリティ固定回路
、８７…Ｅ２Ｅ生成回路、８８…データラッチ、８９…排他的論理和回路、９０…論理反
転回路、９１…選択回路、９２…ＨＭ符号検査回路、９３…ＨＭ符号生成回路、１００…
ＥＣＣ制御部、１０１…ＥＣＣ生成回路、１０２…データラッチ、１０３…符号生成回路
、１０４…ＥＣＣ訂正回路、１０５…誤り訂正回路、１０６…データラッチ
【図１】
2019028952.tif 000003
【図２】
2019028952.tif 000004
【図３】
2019028952.tif 000005
【図４】
2019028952.tif 000006
【図５】
2019028952.tif 000007
【図６】
2019028952.tif 000008
【図７】
2019028952.tif 000009
【図８】
2019028952.tif 000010
【図９】
2019028952.tif 000011
【図１０】
2019028952.tif 000012
【図１１】
2019028952.tif 000013
【図１２】
2019028952.tif 000014
【図１３】
2019028952.tif 000015
【図１４】
2019028952.tif 000016
【図１５】
2019028952.tif 000017
【図１６】
2019028952.tif 000018
【図１７】
2019028952.tif 000019
【図１８】
2019028952.tif 000020
【図１９】
2019028952.tif 000021
【図２０】
2019028952.tif 000022
【図２１】
2019028952.tif 000023