(57)【要約】【課題】エラー検出訂正能力が高いメモリシステムを提供することを課題とする。【解決手段】メモリシステムは、複数ビットのデータと前記データに対応する第１のエラー検出訂正コードと前記データに対応する第２のエラー検出訂正コードとを記憶するメモリ（３１１）と、前記メモリに記憶されている前記データ及び前記第１のエラー検出訂正コードを基に、前記データに対してエラー検出訂正を行い、前記データのエラーを訂正できない場合には第１のエラー検出フラグを有効にする第１のエラー検出訂正回路（３１２）と、前記第１のエラー検出フラグが有効である場合には、前記メモリに記憶されている前記データ及び前記第２のエラー検出訂正コードを基に、前記データに対してエラー検出訂正を行う第２のエラー検出訂正回路（１０２）とを有する。【選択図】図３
2016099838.tif 000002
【特許請求の範囲】
【請求項１】
複数ビットのデータと前記データに対応する第１のエラー検出訂正コードと前記データに対応する第２のエラー検出訂正コードとを記憶するメモリと、
前記メモリに記憶されている前記データ及び前記第１のエラー検出訂正コードを基に、前記データに対してエラー検出訂正を行い、前記データのエラーを訂正できない場合には第１のエラー検出フラグを有効にする第１のエラー検出訂正回路と、
前記第１のエラー検出フラグが有効である場合には、前記メモリに記憶されている前記データ及び前記第２のエラー検出訂正コードを基に、前記データに対してエラー検出訂正を行う第２のエラー検出訂正回路と
を有することを特徴とするメモリシステム。
【請求項２】
前記第１のエラー検出訂正コードは、前記複数ビットのデータのうちの第１のビット数のデータ毎のエラー検出訂正コードであり、
前記第２のエラー検出訂正コードは、前記複数ビットのデータのうちの第２のビット数のデータ毎のエラー検出訂正コードであり、
前記第１のエラー検出訂正回路は、前記メモリに記憶されている前記第１のビット数のデータ及び前記第１のエラー検出訂正コードを基に、前記第１のビット数のデータに対してエラー検出訂正を行い、
前記第２のエラー検出訂正回路は、前記メモリに記憶されている前記第２のビット数のデータ及び前記第２のエラー検出訂正コードを基に、前記第２のビット数のデータに対してエラー検出訂正を行い、
前記第１のビット数は、前記第２のビット数より少ないことを特徴とする請求項１記載のメモリシステム。
【請求項３】
さらに、前記第１のエラー検出フラグが有効でない場合には、前記第１のエラー検出訂正回路が出力するデータを選択して出力し、前記第１のエラー検出フラグが有効である場合には、前記第２のエラー検出訂正回路が出力するデータを選択して出力するスイッチを有することを特徴とする請求項１又は２記載のメモリシステム。
【請求項４】
メモリモジュール及び中央処理ユニットを有し、
前記メモリモジュールは、前記メモリ及び前記第１のエラー検出訂正回路を有し、
前記中央処理ユニットは、前記第２のエラー検出訂正回路及び中央処理ユニットコアを有することを特徴とする請求項１〜３のいずれか１項に記載のメモリシステム。
【請求項５】
メモリモジュール及び中央処理ユニットを有し、
前記メモリモジュールは、前記メモリを有し、
前記中央処理ユニットは、前記第１のエラー検出訂正回路、前記第２のエラー検出訂正回路及び中央処理ユニットコアを有することを特徴とする請求項１〜３のいずれか１項に記載のメモリシステム。
【請求項６】
さらに、前記メモリに対する読み出し要求を出力し、前記第１のエラー検出訂正回路が出力するデータ又は前記第２のエラー検出訂正回路が出力するデータを入力するメモリコントローラを有し、
前記メモリコントローラは、
前記第１のエラー検出フラグが有効でない場合には、前記読み出し要求の出力から第１の待機期間後に、前記第１のエラー検出訂正回路が出力するデータを取得し、
前記第１のエラー検出フラグが有効である場合には、前記読み出し要求の出力から第２の待機期間後に、前記第２のエラー検出訂正回路が出力するデータを取得し、
前記第２の待機期間は、前記第１の待機期間より長いことを特徴とする請求項２記載のメモリシステム。
【請求項７】
さらに、前記メモリに対する読み出し要求を出力し、前記第１のエラー検出訂正回路が出力するデータ又は前記第２のエラー検出訂正回路が出力するデータを入力するメモリコントローラと、
前記第１のエラー検出フラグが有効である場合には、前記読み出し要求に対応する前記データ及び前記第２のエラー検出訂正コードを前記メモリから前記第２のエラー検出訂正回路に出力させるコントローラと
を有することを特徴とする請求項１〜５のいずれか１項に記載のメモリシステム。
【請求項８】
メモリモジュール及び中央処理ユニットを有し、
前記メモリモジュールは、前記メモリ及び前記第２のエラー検出訂正回路を有し、
前記中央処理ユニットは、前記第１のエラー検出訂正回路、コントローラ及び中央処理ユニットコアを有し、
前記コントローラは、前記第１のエラー検出フラグが有効である場合には、前記データ及び前記第２のエラー検出訂正コードを前記メモリから前記第２のエラー検出訂正回路に出力させることを特徴とする請求項１又は２記載のメモリシステム。
【請求項９】
さらに、前記第１のエラー検出フラグが有効である場合には、前記コントローラの前記出力を指示するオペレーティングシステムを有することを特徴とする請求項８記載のメモリシステム。
【請求項１０】
メモリモジュール及び中央処理ユニットを有し、
前記メモリモジュールは、前記メモリ、前記第２のエラー検出訂正回路及びコントローラを有し、
前記中央処理ユニットは、前記第１のエラー検出訂正回路、メモリコントローラ及び中央処理ユニットコアを有し、
前記メモリコントローラは、前記メモリに対する読み出し要求を出力し、前記第１のエラー検出フラグが有効である場合には、再び、前記読み出し要求と同じデータの読み出し要求を出力し、
前記コントローラは、一定時間内に同じデータの読み出し要求を前記メモリコントローラから２回入力した場合には、前記データ及び前記第２のエラー検出訂正コードを前記メモリから前記第２のエラー検出訂正回路に出力させることを特徴とする請求項１又は２記載のメモリシステム。
【請求項１１】
メモリモジュール及び中央処理ユニットを有し、
前記メモリモジュールは、前記メモリを有し、
前記中央処理ユニットは、前記第１のエラー検出訂正回路、第２のエラー検出訂正回路、コントローラ及び中央処理ユニットコアを有し、
前記コントローラは、前記第１のエラー検出フラグが有効である場合には、前記データ及び前記第２のエラー検出訂正コードを前記メモリから前記第２のエラー検出訂正回路に出力させることを特徴とする請求項１又は２記載のメモリシステム。
【請求項１２】
前記メモリは、ストレージクラスメモリであることを特徴とする請求項１〜１１のいずれか１項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関する。
【背景技術】
【０００２】
データを記憶する不揮発性メモリと、不揮発性メモリに対するデータの書き込み、読み出しの制御を行うコントローラとを備える不揮発性記憶装置が知られている（特許文献１参照）。不揮発性メモリは、不揮発性メモリに対するデータの書き込み、読み出しの制御方法を指定する制御情報を格納する。コントローラは、不揮発性メモリの種類を判別し、不揮発性メモリの種類に応じた取得手順で不揮発性メモリから制御情報を取得して格納する。
【０００３】
また、ユーザデータ及びユーザデータをファイルシステム上で管理するための管理情報を記憶する不揮発性メモリ手段を備える不揮発性記憶装置が知られている（特許文献２参照）。メディアコントローラは、ホスト装置から入力されるユーザデータ及び管理情報に対する処理内容を記述したコマンドがいずれに対するものであるかを判別し、判別結果に応じて不揮発性メモリ手段に対する制御方式を切り換える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００６／１０１１２３号
【特許文献２】特開２０１０−１５２７０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
メモリは、種類により、書き込み可能回数が異なる。書き込み回数が増えると、メモリの記憶能力が低下し、メモリが記憶するデータのエラーが発生し易くなる。メモリが記憶するデータのエラーを検出訂正するために、エラー検出訂正回路が用いられる。
【０００６】
本発明の目的は、エラー検出訂正能力が高いメモリシステムを提供することである。
【課題を解決するための手段】
【０００７】
メモリシステムは、複数ビットのデータと前記データに対する第１のエラー検出訂正コードと前記データに対する第２のエラー検出訂正コードとを記憶するメモリと、前記メモリに記憶されている前記データ及び前記第１のエラー検出訂正コードを基に、前記データに対してエラー検出訂正を行い、前記データのエラーを訂正できない場合には第１のエラー検出フラグを有効にする第１のエラー検出訂正回路と、前記第１のエラー検出フラグが有効である場合には、前記メモリに記憶されている前記データ及び前記第２のエラー検出訂正コードを基に、前記データに対してエラー検出訂正を行う第２のエラー検出訂正回路とを有する。
【発明の効果】
【０００８】
第１及び第２のエラー検出訂正回路を用いることにより、高いエラー検出訂正能力を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、メモリシステムの構成例を示す図である。
【図２】図２は、データ、第１のエラー検出訂正コード及び第２のエラー検出訂正コードを示す図である。
【図３】図３は、第１の実施形態によるメモリシステムの構成例を示す図である。
【図４】図４は、図３のメモリシステムの処理方法を示すフローチャートである。
【図５】図５は、第２の実施形態によるメモリシステムの構成例を示す図である。
【図６】図６は、第３の実施形態によるメモリシステムの構成例を示す図である。
【図７】図７は、第４の実施形態によるメモリシステムの構成例を示す図である。
【図８】図８は、図７のメモリシステムの処理方法を示すフローチャートである。
【図９】図９は、第５の実施形態によるメモリシステムの構成例を示す図である。
【図１０】図１０は、図９のメモリシステムの処理方法を示すフローチャートである。
【図１１】図１１は、第６の実施形態によるメモリシステムの構成例を示す図である。
【図１２】図１２は、図１１のメモリシステムの処理方法を示すフローチャートである。
【図１３】図１３は、第７の実施形態によるメモリシステムの構成例を示す図である。
【図１４】図１４は、第８の実施形態によるメモリシステムの構成例を示す図である。
【図１５】図１５は、第９の実施形態によるメモリシステムの構成例を示す図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１は、メモリシステムの構成例を示す図である。メモリシステムは、不揮発性メモリ１０１と、エラー検出訂正（ＥＣＣ：Error Check and Correct）回路１０２と、中央処理ユニット（ＣＰＵ：Central Processing Unit）１０３とを有する。
【００１１】
不揮発性メモリ１０１は、例えばストレージクラスメモリ（ＳＣＭ：Storage Class Memory）である。ストレージクラスメモリは、動作速度が高速である次世代不揮発メモリであり、近年、実用レベルにまで達してきている。ストレージクラスメモリは、動作速度が揮発性メモリであるＤＲＡＭ（Dynamic Random Access Memory）に近く、記憶容量当たりのコストが低いことから、ＤＲＡＭの代替品としてメインメモリに使用することで、コンピュータの性能向上やコスト削減が期待されている。しかし、ストレージクラスメモリは、ＮＡＮＤ型フラッシュメモリと同様に、データの書き込みを多く行うと、記憶素子が劣化し、データを正しく保存できなくなるという性質がある。そのため、ストレージクラスメモリは、ＤＲＡＭとは異なり、エラー検出訂正能力が高いエラー検出訂正回路１０２を使用する必要がある。
【００１２】
エラー検出訂正回路１０２は、例えば、ＢＣＨ（Bose Chaudhum Hocquenghem）符号方式エラー検出訂正回路であり、エラー検出訂正コード（ＥＣＣコード）を基に、データに対してエラー検出訂正を行う。不揮発性メモリ１０１は、図２に示すように、複数ビットのデータ２０１と、エラー検出訂正コード２０２とを記憶する。エラー検出訂正コード２０２は、エラー検出訂正回路により、データ２０１に対してエラー検出訂正するためのコードである。ＢＣＨ符号方式の場合、１Ｋバイトのデータ２０１毎に、６４バイトのエラー検出訂正コード２０２が設けられる。エラー検出訂正回路１０２は、１Ｋバイトのデータ２０１と、それに対応する６４バイトのエラー検出訂正コード２０２とを入力し、１Ｋバイトのデータ２０１に対してエラー検出訂正を行う。
【００１３】
不揮発性メモリ１０１のデータの読み出し単位は、６４ビットである。エラー検出訂正単位の１Ｋバイトのデータ２０１は、６４ビットの読み出し単位に対して非常に大きな単位である。エラー検出訂正回路１０２は、１Ｋバイトのデータ２０１及び６４バイトのエラー検出訂正コード２０２の単位をひとまとまりとして、エラー検出訂正を行う。
【００１４】
中央処理ユニット１０３は、例えば６４ビットのデータ７の読み出し要求を出力する。すると、不揮発性メモリ１０１は、読み出し要求の６４ビットのデータ７を含む１Ｋバイトのデータ２０１と、それに対応する６４バイトのエラー検出訂正コード２０２とをエラー検出訂正回路１０２に出力する。
【００１５】
エラー検出訂正回路１０２は、シンドローム演算部１１１と、エラー判定部１１２と、バッファ１１３と、エラー訂正部１１４とを有する。シンドローム演算部１１１は、１Ｋバイトのデータ２０１及び６４バイトのエラー検出訂正コード２０２に対して排他的論理和演算を行うことにより、シンドローム値をエラー判定部１１２に出力する。エラー判定部１１２は、シンドローム値を基にエラー判定を行い、エラー判定値をエラー訂正部１１４に出力する。例えば、シンドローム値が０である場合には、１Ｋバイトのデータ２０１にエラーがないことを表し、シンドローム値が０でない場合には、１Ｋバイトのデータ２０１にエラーがあることを表す。バッファ１１３は、１Ｋバイトのデータ２０１をバッファリングし、そのバッファリングした１Ｋバイトのデータ２０１をエラー訂正部１１４に出力する。エラー訂正部１１４は、エラー判定部１１２が出力するエラー判定値に応じて、バッファ１１３が出力する１Ｋバイトのデータ２０１に対してエラー訂正を行う。
【００１６】
エラー判定値がエラーなしを表す場合には、エラー検出訂正回路１０２は、バッファ１１３が出力する１Ｋバイトのデータ２０１のうちの上記の読み出し要求があった６４ビットのデータ７を選択し、その選択した６４ビットのデータ７を中央処理ユニット１０３に出力する。
【００１７】
エラー判定値がエラーありを表す場合には、エラー訂正部１１４は、エラー判定値に応じて、バッファ１１３が出力する１Ｋバイトのデータ２０１をエラー訂正する。そして、エラー検出訂正回路１０２は、エラー訂正部１１４によりエラー訂正された１Ｋバイトのデータ２０１のうちの上記の読み出し要求があった６４ビットのデータ７を選択し、その選択した６４ビットのデータ７を中央処理ユニット１０３に出力する。
【００１８】
以上のように、中央処理ユニット１０３が６４ビットのデータ７の読み出し要求を出力した場合であっても、エラー検出訂正回路１０２は、その６４ビットのデータ７を含む１Ｋバイトのデータ２０１及びそれに対応する６４バイトのエラー検出訂正コード２０２を不揮発性メモリ１０１から入力する必要がある。
【００１９】
メモリシステムのクロック周波数が１ＧＨｚの場合、シンドローム演算部１１１、エラー判定部１１２及びエラー訂正部１１４の処理には６００ｎｓ程度の時間がかかる。不揮発性メモリ（ストレージクラスメモリ）１０１からエラー検出訂正回路１０２に１Ｋバイトのデータ２０１及び６４バイトのエラー検出訂正コード２０２が読み出されるまでに５０〜１００ｎｓ程度かかる。その結果、中央処理ユニット１０３が読み出し要求を出力してから６４ビットのデータ７を入力するまでの時間（レイテンシ）は約７００ｎｓとなる。
【００２０】
ＤＲＡＭの場合、読み出し要求のレイテンシは、数１０ｎｓ程度である。したがって、不揮発性メモリ（ストレージクラスメモリ）１０１の読み出し要求のレイテンシ（約７００ｎｓ）は、ＤＲＡＭの読み出し要求のレイテンシ（数１０ｎｓ）に比べ、一桁以上も時間がかかることになる。不揮発性メモリ（ストレージクラスメモリ）１０１は、ＤＲＡＭと同程度の速度を有しておきながら、エラー検出訂正回路１０２によって、メモリシステムの読み出し要求のレイテンシが大幅に劣化してしまう。以下、エラー検出訂正能力が高く、かつエラー検出訂正速度が速いメモリシステムの実施形態を説明する。
【００２１】
図３は、第１の実施形態によるメモリシステムの構成例を示す図である。メモリシステムは、メモリモジュール３０１及び中央処理ユニット３０２を有する。メモリモジュール３０１は、不揮発性メモリ３１１、第１のエラー検出訂正回路３１２、第１のスイッチ３１３、第２のスイッチ３１４、コントローラ３１５、及び第２のエラー検出訂正回路１０２を有する。第２のエラー検出訂正回路１０２は、シンドローム演算部１１１、エラー判定部１１２、バッファ１１３及びエラー訂正部１１４を有する。中央処理ユニット３０２は、メモリコントローラ３２１及び中央処理ユニットコア３２２を有する。メモリシステムは、例えば、サーバ、パソコン、データベース、携帯端末、又は携帯電話等に使用することができる。
【００２２】
不揮発性メモリ３１１は、例えばストレージクラスメモリである。なお、不揮発性メモリ３１１の代わりに、揮発性メモリを設けてもよく、メモリ３１１であればよい。以下、不揮発性メモリ３１１の例を示す。第１のエラー検出訂正回路３１２は、エラー検出訂正能力が低くかつエラー検出訂正速度が速いエラー検出訂正回路である。第２のエラー検出訂正回路１０２は、エラー検出訂正能力が高くかつエラー検出訂正速度が遅いエラー検出訂正回路である。
【００２３】
第１のエラー検出訂正回路３１２は、例えば、拡大ハミング符号方式エラー検出訂正回路であり、図２に示すように、６４ビットのデータ２０３及びそれに対応する８ビットの第１のエラー検出訂正コード２１２を入力し、エラー検出訂正を行う。第１のエラー検出訂正回路３１２は、入力する６４ビットのデータ２０３に対して、最大エラー検出可能ビット数が２ビットであり、最大エラー訂正可能ビット数が１ビットである。
【００２４】
第２のエラー検出訂正回路１０２は、例えば、ＢＣＨ符号方式エラー検出訂正回路であり、図２に示すように、１Ｋバイトのデータ２０１及びそれに対応する６４バイトの第２のエラー検出訂正コード２０２を入力し、エラー検出訂正を行う。第２のエラー検出訂正回路１０２は、入力する１Ｋバイトのデータ２０１に対して、最大エラー訂正可能ビット数が例えば４０ビットである。
【００２５】
不揮発性メモリ３１１は、図２に示すように、データ２０１と、第１のエラー検出訂正コード群２１１と、第２のエラー検出訂正コード２０２との組みを複数記憶する。１Ｋバイトのデータ２０１は、複数の６４ビットのデータ２０３に分割される。第１のエラー検出訂正コード群２１１は、複数の８ビットの第１のエラー検出訂正コード２１２に分割される。
【００２６】
６４ビットのデータ２０３毎に、８ビットの第１のエラー検出訂正コード２１２が設けられる。第１のエラー検出訂正コード２１２は、第１のエラー検出訂正回路３１２が、６４ビットのデータ２０３に対してエラー検出訂正を行うためのコードである。第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３及びそれに対応する８ビットの第１のエラー検出訂正コード２１２を不揮発性メモリ３１１から入力し、エラー検出訂正を行う。
【００２７】
また、１Ｋバイトのデータ２０１毎に、６４バイトの第２のエラー検出訂正コード２０２が設けられる。第２のエラー検出訂正コード２０２は、第２のエラー検出訂正回路１０２が、１Ｋバイトのデータ２０１に対してエラー検出訂正を行うためのコードである。第２のエラー検出訂正回路１０２は、１Ｋバイトのデータ２０１及びそれに対応する６４バイトの第２のエラー検出訂正コード２０２を不揮発性メモリ３１１から入力し、エラー検出訂正を行う。
【００２８】
第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３及び８ビットの第１のエラー検出訂正コード２１２を処理するので、第２のエラー検出訂正回路１０２に対して、処理データ量が少ないので、エラー検出訂正速度が速い。逆に、第２のエラー検出訂正回路１０２は、１Ｋバイトのデータ２０１及び６４バイトの第２のエラー検出訂正コード２０２を処理するので、第１のエラー検出訂正回路３１２に対して、処理データ量が多いので、エラー検出訂正速度が遅い。
【００２９】
図４は、図３のメモリシステムの処理方法を示すフローチャートである。ステップＳ４０１では、中央処理ユニットコア３２２は、メモリコントローラ３２１に読み出し要求を出力する。次に、ステップＳ４０２では、メモリコントローラ３２１は、中央処理ユニットコア３２２の制御により、６４ビットデータの読み出し要求ＲＱ及びアドレスＡＤをメモリモジュール３０１に出力する。
【００３０】
次に、ステップＳ４０３では、コントローラ３１５は、不揮発性メモリ３１１のアドレスＡＤに記憶されている６４ビットのデータ２０３と、それに対応する８ビットの第１のエラー検出訂正コード２１２の読み出しを指示する。すると、不揮発性メモリ３１１は、アドレスＡＤに記憶されている６４ビットのデータ２０３と、それに対応する８ビットの第１のエラー検出訂正コード２１２とを、第１のエラー検出訂正回路３１２に出力する。
【００３１】
次に、ステップＳ４０４では、第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３及びそれに対応する８ビットの第１のエラー検出訂正コード２１２を基にエラー判定を行う。第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３に対して、最大エラー訂正可能ビット数が１ビットである。第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３のうちのエラービット数が０ビットである場合には、不揮発性メモリ３１１から入力した６４ビットのデータ２０３をそのまま６４ビットのデータＤＴとして第１のスイッチ３１３に出力する。また、第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３のうちのエラービット数が１ビットである場合には、不揮発性メモリ３１１から入力した６４ビットのデータ２０３に対してエラー訂正を行い、そのエラー訂正したデータを６４ビットのデータＤＴとして第１のスイッチ３１３に出力する。
【００３２】
また、第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３のうちのエラービット数が２ビット以上である場合には、第１のエラー検出フラグＥＦを有効にし、６４ビットのデータ２０３のうちのエラービット数が１ビット以下である場合には、第１のエラー検出フラグＥＦを無効にする。
【００３３】
次に、ステップＳ４０５では、メモリシステムは、第１のエラー検出フラグＥＦが無効である（有効でない）場合には、エラーなし又はエラービット数が最大エラー訂正可能ビット数以下であるので、ステップＳ４０８に進む。その場合、ステップＳ４０８では、第１のスイッチ３１３は、第１のエラー検出フラグＥＦが無効であるので、６４ビットのデータＤＴを第２のスイッチ３１４に出力する。第２のスイッチ３１４は、第１のエラー検出フラグＥＦが無効であるので、第１のスイッチ３１３から入力した６４ビットのデータＤＴを、メモリコントローラ３２１を介して中央処理ユニットコア３２２に出力する。この場合、第２のエラー検出訂正回路１０２を使用せず、第１のエラー検出訂正回路３１２のみを用いてエラー検出訂正を行う。第１のエラー検出訂正回路３１２は、第２のエラー検出訂正回路１０２に比べて、エラー検出訂正速度が速い。その結果、中央処理ユニット３０２は、図１の場合に比べ、読み出し要求ＲＱを出力してから短時間でデータを受け取ることができ、読み出し速度を速くすることができる。
【００３４】
また、ステップＳ４０５では、メモリシステムは、第１のエラー検出フラグＥＦが有効である場合には、エラービット数が最大エラー訂正可能ビット数より多いので、ステップＳ４０６に進む。ステップＳ４０６では、コントローラ３１５は、第１のエラー検出フラグＥＦが有効であるので、不揮発性メモリ３１１に対して、アドレスＡＤの６４ビットデータ２０３を含む１Ｋバイトのデータ２０１と、それに対応する６４バイトの第２のエラー検出訂正コード２０２の読み出しを指示する。すると、不揮発性メモリ３１１は、１Ｋバイトのデータ２０１と、それに対応する６４バイトの第２のエラー検出訂正コード２０２とを、データＤＴとして、第１のスイッチ３１３に出力する。第１のスイッチ３１３は、第１のエラー検出フラグＥＦが有効であるので、１Ｋバイトのデータ２０１と６４バイトの第２のエラー検出訂正コード２０２とをシンドローム演算部１１１に出力し、１Ｋバイトのデータ２０１をバッファ１１３に出力する。
【００３５】
次に、ステップＳ４０７では、第２のエラー検出訂正回路１０２は、下記のエラー検出訂正を行う。シンドローム演算部１１１は、１Ｋバイトのデータ２０１及び６４バイトの第２のエラー検出訂正コード２０２に対して排他的論理和演算を行うことにより、シンドローム値をエラー判定部１１２に出力する。エラー判定部１１２は、シンドローム値を基にエラー判定を行い、エラー判定値をエラー訂正部１１４に出力する。例えば、シンドローム値が０である場合には、１Ｋバイトのデータ２０１にエラーがないことを表し、シンドローム値が０でない場合には、１Ｋバイトのデータ２０１にエラーがあることを表す。バッファ１１３は、１Ｋバイトのデータ２０１をバッファリングし、そのバッファリングした１Ｋバイトのデータ２０１をエラー訂正部１１４に出力する。エラー訂正部１１４は、エラー判定部１１２が出力するエラー判定値に応じて、バッファ１１３が出力する１Ｋバイトのデータ２０１に対してエラー訂正を行う。
【００３６】
次に、ステップＳ４０８では、エラー判定値がエラーなしを表す場合には、第２のエラー検出訂正回路１０２は、バッファ１１３が出力する１Ｋバイトのデータ２０１のうちの上記の読み出し要求ＲＱがあったアドレスＡＤの６４ビットのデータを選択し、その選択した６４ビットのデータをメモリコントローラ３２１を介して中央処理ユニットコア３２２に出力する。
【００３７】
エラー判定値がエラーありを表す場合には、エラー訂正部１１４は、エラー判定値に応じて、バッファ１１３が出力する１Ｋバイトのデータ２０１をエラー訂正する。そして、第２のエラー検出訂正回路１０２は、エラー訂正部１１４によりエラー訂正された１Ｋバイトのデータ２０１のうちの上記の読み出し要求ＲＱがあったアドレスＡＤの６４ビットのデータを選択し、その選択した６４ビットのデータをメモリコントローラ３２１を介して中央処理ユニットコア３２２に出力する。
【００３８】
上記のように、第１のエラー検出訂正回路３１２がエラー訂正できない場合、第１のエラー検出フラグＥＦが有効になり、第２のエラー検出訂正回路１０２がエラー訂正を行う。これにより、エラー検出訂正能力を高くすることができる。
【００３９】
以上のように、第１のエラー検出訂正回路３１２は、不揮発性メモリ３１１に記憶されているデータ２０３及び第１のエラー検出訂正コード２１２を基に、データ２０３に対してエラー検出訂正を行い、データ２０３のエラーを訂正できない場合には第１のエラー検出フラグＥＦを有効にする。第２のエラー検出訂正回路１０２は、第１のエラー検出フラグＥＦが有効である場合には、不揮発性メモリ３１１に記憶されているデータ２０１及び第２のエラー検出訂正コード２０２を基に、データ２０１に対してエラー検出訂正を行う。
【００４０】
第１のエラー検出訂正コード２１２は、第１のビット数（６４ビット）のデータ２０３毎のエラー検出訂正コードである。第２のエラー検出訂正コード２０２は、第２のビット数（１Ｋバイト）のデータ２０１毎のエラー検出訂正コードである。第１のビット数（６４ビット）は、第２のビット数（１Ｋバイト）より少ない。
【００４１】
第１のエラー検出訂正回路３１２は、不揮発性メモリ３１１に記憶されている第１のビット数（６４ビット）のデータ２０３及び第１のエラー検出訂正コード２１２を基に、第１のビット数（６４ビット）のデータ２０３に対してエラー検出訂正を行う。第２のエラー検出訂正回路１０２は、不揮発性メモリ３１１に記憶されている第２のビット数（１Ｋバイト）のデータ２０１及び第２のエラー検出訂正コード２０２を基に、第２のビット数（１Ｋバイト）のデータ２０１に対してエラー検出訂正を行う。
【００４２】
スイッチ３１３及び３１４は、第１のエラー検出フラグＥＦが有効でない場合には、第１のエラー検出訂正回路３１２が出力するデータを選択して中央処理ユニット３０２に出力し、第１のエラー検出フラグＥＦが有効である場合には、第２のエラー検出訂正回路１０２が出力するデータを選択して中央処理ユニット３０２に出力する。
【００４３】
（第２の実施形態）
図５は、第２の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図５）が第１の実施形態（図３）と異なる点を説明する。メモリシステムは、メモリモジュール３０１及び中央処理ユニット３０２を有する。メモリモジュール３０１は、不揮発性メモリ３１１と、第１のエラー検出訂正回路３１２と、コントローラ３１５とを有する。中央処理ユニット３０２は、メモリコントローラ３２１及び中央処理ユニットコア３２２を有する。メモリコントローラ３２１は、第１のスイッチ３１３と、第２のエラー検出訂正回路１０２と、第２のスイッチ３１４とを有する。メモリコントローラ３２１は、メモリモジュール３０１に対して、読み出し要求ＲＱ及びアドレスＡＤを出力し、データＤＴ及び第１のエラー検出フラグＥＦを入力する。
【００４４】
（第３の実施形態）
図６は、第３の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図６）が第１の実施形態（図３）と異なる点を説明する。メモリシステムは、メモリモジュール３０１及び中央処理ユニット３０２を有する。メモリモジュール３０１は、不揮発性メモリ３１１を有する。中央処理ユニット３０２は、メモリコントローラ３２１及び中央処理ユニットコア３２２を有する。メモリコントローラ３２１は、第１のエラー検出訂正回路３１２と、第１のスイッチ３１３と、第２のエラー検出訂正回路１０２と、第２のスイッチ３１４と、コントローラ３１５とを有する。メモリコントローラ３２１は、メモリモジュール３０１に対して、読み出し要求ＲＱ及びアドレスＡＤを出力する。
【００４５】
（第４の実施形態）
図７は、第４の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図７）が第１の実施形態（図３）と異なる点を説明する。第１のエラー検出訂正回路３１２は、第１のエラー検出フラグＥＦをメモリコントローラ３２１にも出力する。メモリコントローラ３２１は、不揮発性メモリ３１１に対する読み出し要求ＲＱ及びアドレスＡＤを出力する。
【００４６】
メモリコントローラ３２１がＪＥＤＥＣ（Joint Electron Device Engineering Council）規格に準拠している場合、メモリモジュール３０１は、読み出し要求ＲＱ及びアドレスＡＤを入力後の一定時間内に、メモリコントローラ３２１にデータを出力することが規定されている。第１のエラー検出フラグＥＦが無効である場合には、エラー検出訂正速度が速い第１のエラー検出訂正回路３１２の出力データがメモリコントローラ３２１に出力されるので、メモリモジュール３０１は、上記の一定時間内にデータをメモリコントローラ３２１に出力することができる。しかし、第１のエラー検出フラグＥＦが有効である場合には、エラー検出訂正速度が遅い第２のエラー検出訂正回路１０２の出力データがメモリコントローラ３２１に出力されるので、メモリモジュール３０１は、上記の一定時間内にデータをメモリコントローラ３２１に出力することができない。そこで、メモリコントローラ３２１は、第１のエラー検出フラグＥＦが有効である場合には、第２のエラー検出訂正回路１０２がエラー検出訂正を終了するまで待機状態にし、第２のエラー検出訂正回路１０２がエラー検出訂正を終了した後に待機状態を終了し、通常動作状態に戻す。
【００４７】
図８は、図７のメモリシステムの処理方法を示すフローチャートである。以下、図８が図４と異なる点を説明する。まず、第１のエラー検出フラグＥＦが無効である場合を説明する。その場合、ステップＳ４０５からステップＳ４０８に進む。ステップＳ４０８では、メモリコントローラ３２１は、第１のエラー検出フラグＥＦが無効であるので、読み出し要求ＲＱ及びアドレスＡＤの出力から第１の待機期間後に、第１のエラー検出訂正回路３１２が出力するデータを取得する。
【００４８】
次に、第１のエラー検出フラグＥＦが有効である場合を説明する。その場合、ステップＳ４０５からステップＳ４０６に進む。ステップＳ４０６では、メモリコントローラ３２１は、第１のエラー検出フラグＥＦが有効であるので、待機状態になる。次に、ステップＳ４０７では、図４と同様に、第２のエラー検出訂正回路１０２がエラー検出訂正を行う。次に、ステップＳ４０８では、メモリコントローラ３２１は、第１のエラー検出フラグＥＦが有効であるので、読み出し要求ＲＱ及びアドレスＡＤの出力から第２の待機期間後に、第２のエラー検出訂正回路１０２が出力するデータを取得する。第２の待機期間は、第１の待機期間より長い。第１のエラー検出フラグＥＦが有効である場合、メモリコントローラ３２１が第２の待機期間後に第２のエラー検出訂正回路１０２が出力するデータを取得することにより、第２のエラー検出訂正回路１０２がエラー検出訂正処理を終了した後の正しいデータを取得することができる。
【００４９】
（第５の実施形態）
図９は、第５の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図９）が第１の実施形態（図３）と異なる点を説明する。メモリモジュール３０１は、不揮発性メモリ３１１と、第１のスイッチ９０１と、第２のスイッチ９０２と、第３のスイッチ９０３と、第１のエラー検出訂正回路３１２と、第２のエラー検出訂正回路１０２と、コントローラ９０４とを有する。
【００５０】
図１０は、図９のメモリシステムの処理方法を示すフローチャートである。ステップＳ１００１では、中央処理ユニットコア３２２は、メモリコントローラ３２１に読み出し要求を出力する。次に、ステップＳ１００２では、メモリコントローラ３２１は、中央処理ユニットコア３２２の制御により、６４ビットデータの読み出し要求ＲＱ及びアドレスＡＤをメモリモジュール３０１に出力する。
【００５１】
次に、ステップＳ１００３では、コントローラ９０４は、アドレスＡＤを保持する。次に、ステップＳ１００４では、第３のスイッチ９０３は、初期時の第１のエラー検出フラグＥＦが無効であるので、メモリコントローラ３２１が出力する読み出し要求ＲＱ及びアドレスＡＤを不揮発性メモリ３１１に出力する。すると、不揮発性メモリ３１１は、アドレスＡＤに記憶されている６４ビットのデータ２０３と、それに対応する８ビットの第１のエラー検出訂正コード２１２とを、第１のスイッチ９０１に出力する。
【００５２】
次に、ステップＳ１００５では、第１のスイッチ９０１は、初期時の第１のエラー検出フラグＥＦが無効であるので、不揮発性メモリ３１１が出力する６４ビットのデータ２０３と８ビットの第１のエラー検出訂正コード２１２とを第２のスイッチ９０２に出力する。第２のスイッチ９０２は、初期時の第１のエラー検出フラグＥＦが無効であるので、第１のスイッチ９０１が出力する６４ビットのデータ２０３と８ビットの第１のエラー検出訂正コード２１２とを第１のエラー検出訂正回路３１２に出力する。
【００５３】
第１のエラー検出訂正回路３１２は、第１の実施形態と同様に、６４ビットのデータ２０３及びそれに対応する８ビットの第１のエラー検出訂正コード２１２を基にエラー検出訂正を行う。また、第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３のうちのエラービット数が２ビット以上である場合には、第１のエラー検出フラグＥＦを有効にし、６４ビットのデータ２０３のうちのエラービット数が１ビット以下である場合には、第１のエラー検出フラグＥＦを無効にする。
【００５４】
次に、ステップＳ１００６では、メモリシステムは、第１のエラー検出フラグＥＦが無効である場合には、エラーなし又はエラービット数が最大エラー訂正可能ビット数以下であるので、ステップＳ１０１０に進む。その場合、ステップＳ１０１０では、第１のエラー検出訂正回路３１２は、エラー訂正後の６４ビットのデータをデータＤＴとしてメモリコントローラ３２１を介して中央処理ユニットコア３２２に出力する。この場合、第２のエラー検出訂正回路１０２を使用せず、第１のエラー検出訂正回路３１２のみを用いてエラー検出訂正を行う。第１のエラー検出訂正回路３１２は、第２のエラー検出訂正回路１０２に比べて、エラー検出訂正速度が速いので、中央処理ユニット３０２は、図１の場合に比べ、読み出し要求ＲＱを出力してから短時間でデータを受け取ることができ、読み出し速度を速くすることができる。
【００５５】
また、ステップＳ１００６では、メモリシステムは、第１のエラー検出フラグＥＦが有効である場合には、エラービット数が最大エラー訂正可能ビット数より多いので、ステップＳ１００７に進む。ステップＳ１００７では、コントローラ９０４は、第１のエラー検出フラグＥＦが有効であるので、保持しているアドレスＡＤの６４ビットデータ２０３を含む１Ｋバイトのデータ２０１と、それに対応する６４バイトの第２のエラー検出訂正コード２０２の読み出し要求ＲＱ１及びアドレスＡＤ１を第３のスイッチ９０３に出力する。第３のスイッチ９０３は、第１のエラー検出フラグＥＦが有効であるので、コントローラ９０４が出力する読み出し要求ＲＱ１及びアドレスＡＤ１を不揮発性メモリ３１１に出力する。
【００５６】
次に、ステップＳ１００８では、不揮発性メモリ３１１は、１Ｋバイトのデータ２０１と、それに対応する６４バイトの第２のエラー検出訂正コード２０２とを第１のスイッチ９０１に出力する。
【００５７】
次に、ステップＳ１００９では、第１のスイッチ９０１は、第１のエラー検出フラグＥＦが有効であるので、不揮発性メモリ３１１が出力する１Ｋバイトのデータ２０１と６４バイトの第２のエラー検出訂正コード２０２とを第２のエラー検出訂正回路１０２に出力する。
【００５８】
第２のエラー検出訂正回路１０２は、第１の実施形態と同様に、１Ｋバイトのデータ２０１と６４バイトの第２のエラー検出訂正コード２０２に対してエラー検出訂正を行い、エラー訂正後の１Ｋバイトのデータのうちの読み出し要求ＲＱがあったアドレスＡＤの６４ビットのデータを第２のスイッチ９０２に出力する。
【００５９】
次に、ステップＳ１０１０では、第２のスイッチ９０２は、第１のエラー検出フラグＥＦが有効であるので、第２のエラー検出訂正回路１０２が出力する６４ビットのデータを、データＤＴとして、メモリコントローラ３２１を介して中央処理ユニットコア３２２に出力する。
【００６０】
第１のエラー検出訂正回路３１２がエラー訂正できない場合、第１のエラー検出フラグＥＦが有効になり、第２のエラー検出訂正回路１０２がエラー訂正を行うので、エラー検出訂正能力を高くすることができる。
【００６１】
以上のように、メモリコントローラ３２１は、不揮発性メモリ３１１に対する読み出し要求ＲＱ及びアドレスＡＤを出力する。コントローラ９０４は、第１のエラー検出フラグＥＦが有効である場合には、読み出し要求ＲＱ１及びアドレスＡＤ１により、読み出し要求ＲＱに対応する６４ビットデータを含む１Ｋバイトデータ２０１及び第２のエラー検出訂正コード２０２を不揮発性メモリ３１１から第２のエラー検出訂正回路１０２に出力させる。
【００６２】
（第６の実施形態）
図１１は、第６の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図１１）が第５の実施形態（図９）と異なる点を説明する。メモリシステムは、メモリモジュール３０１及び中央処理ユニット３０２を有する。メモリモジュール３０１は、不揮発性メモリ３１１と、第１のスイッチ９０１と、第２のスイッチ９０２と、第２のエラー検出訂正回路１０２と、センサ１１０１とを有する。中央処理ユニット３０２は、メモリコントローラ３２１及び中央処理ユニットコア３２２を有する。メモリコントローラ３２１は、第１のエラー検出訂正回路３１２及びコントローラ３１５を有する。
【００６３】
図１２は、図１１のメモリシステムの処理方法を示すフローチャートである。ステップＳ１２０１では、中央処理ユニットコア３２２は、メモリコントローラ３２１に読み出し要求を出力する。次に、ステップＳ１２０２では、メモリコントローラ３２１は、中央処理ユニットコア３２２の制御により、６４ビットデータの読み出し要求ＲＱ及びアドレスＡＤを不揮発性メモリ３１１に出力する。
【００６４】
次に、ステップＳ１２０３では、不揮発性メモリ３１１は、アドレスＡＤに記憶されている６４ビットのデータ２０３と、それに対応する８ビットの第１のエラー検出訂正コード２１２とを、第１のスイッチ９０１に出力する。第１のスイッチ９０１は、初期時の第２のエラー検出フラグＥＦ１が無効であるので、不揮発性メモリ３１１が出力する６４ビットのデータ２０３と８ビットの第１のエラー検出訂正コード２１２とを第２のスイッチ９０２に出力する。第２のスイッチ９０２は、初期時の第２のエラー検出フラグＥＦ１が無効であるので、第１のスイッチ９０１が出力する６４ビットのデータ２０３と８ビットの第１のエラー検出訂正コード２１２とを第１のエラー検出訂正回路３１２に出力する。
【００６５】
次に、ステップＳ１２０４では、第１のエラー検出訂正回路３１２は、第１の実施形態と同様に、６４ビットのデータ２０３及びそれに対応する８ビットの第１のエラー検出訂正コード２１２を基にエラー検出訂正を行う。また、第１のエラー検出訂正回路３１２は、６４ビットのデータ２０３のうちのエラービット数が２ビット以上である場合には、第１のエラー検出フラグＥＦを有効にし、６４ビットのデータ２０３のうちのエラービット数が１ビット以下である場合には、第１のエラー検出フラグＥＦを無効にする。
【００６６】
次に、ステップＳ１２０５では、メモリシステムは、第１のエラー検出フラグＥＦが無効である場合には、エラーなし又はエラービット数が最大エラー訂正可能ビット数以下であるので、ステップＳ１２１０に進む。その場合、ステップＳ１２１０では、第１のエラー検出訂正回路３１２は、エラー訂正後の６４ビットのデータをデータＤＴとして中央処理ユニットコア３２２に出力する。この場合、第２のエラー検出訂正回路１０２を使用せず、第１のエラー検出訂正回路３１２のみを用いてエラー検出訂正を行う。第１のエラー検出訂正回路３１２は、第２のエラー検出訂正回路１０２に比べて、エラー検出訂正速度が速いので、中央処理ユニット３０２は、図１の場合に比べ、読み出し要求ＲＱを出力してから短時間でデータを受け取ることができ、読み出し速度を速くすることができる。
【００６７】
また、ステップＳ１２０５では、メモリシステムは、第１のエラー検出フラグＥＦが有効である場合には、エラービット数が最大エラー訂正可能ビット数より多いので、ステップＳ１２０６に進む。ステップＳ１２０６では、コントローラ３１５は、第１のエラー検出フラグＥＦが有効であるので、上記のアドレスＡＤの６４ビットデータ２０３を含む１Ｋバイトのデータ２０１と、それに対応する６４バイトの第２のエラー検出訂正コード２０２の読み出し要求ＲＱ及びアドレスＡＤを不揮発性メモリ３１１及びセンサ１１０１に再出力する。
【００６８】
次に、ステップＳ１２０７では、センサ１１０１は、上記の読み出し要求ＲＱ及びアドレスＡＤの再出力を検知すると、第２のエラー検出フラグＥＦ１を有効にする。
【００６９】
次に、ステップＳ１２０８では、不揮発性メモリ３１１は、１Ｋバイトのデータ２０１と、それに対応する６４バイトの第２のエラー検出訂正コード２０２とを第１のスイッチ９０１に出力する。
【００７０】
次に、ステップＳ１２０９では、第１のスイッチ９０１は、第２のエラー検出フラグＥＦ１が有効であるので、不揮発性メモリ３１１が出力する１Ｋバイトのデータ２０１と６４バイトの第２のエラー検出訂正コード２０２とを第２のエラー検出訂正回路１０２に出力する。第２のエラー検出訂正回路１０２は、第１の実施形態と同様に、１Ｋバイトのデータ２０１と６４バイトの第２のエラー検出訂正コード２０２に対してエラー検出訂正を行い、エラー訂正後の１Ｋバイトのデータのうちの初回の読み出し要求ＲＱがあったアドレスＡＤの６４ビットのデータを第２のスイッチ９０２に出力する。
【００７１】
次に、ステップＳ１２１０では、第２のスイッチ９０２は、第２のエラー検出フラグＥＦ１が有効であるので、第２のエラー検出訂正回路１０２が出力する６４ビットのデータを、メモリコントローラ３２１を介して中央処理ユニットコア３２２に出力する。
【００７２】
上記のように、第１のエラー検出訂正回路３１２がエラー訂正できない場合、第１のエラー検出フラグＥＦ及び第２のエラー検出フラグＥＦ１が有効になり、第２のエラー検出訂正回路１０２がエラー訂正を行うので、エラー検出訂正能力を高くすることができる。
【００７３】
以上のように、コントローラ３１５及びセンサ１１０１は、第１のエラー検出フラグＥＦが有効である場合には、１Ｋバイトのデータ２０１及び第２のエラー検出訂正コード２０２を不揮発性メモリ３１１から第２のエラー検出訂正回路１０２に出力させる。
【００７４】
（第７の実施形態）
図１３は、第７の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図１３）が第６の実施形態（図１１）と異なる点を説明する。メモリシステムは、メモリモジュール３０１及び中央処理ユニット３０２の他に、オペレーティングシステム（ＯＳ）１３０１を有する。
【００７５】
本実施形態のメモリシステムは、図１２のフローチャートと同様の処理を行う。以下、本実施形態が第６の実施形態と異なる点を説明する。ステップＳ１２０１では、オペレーティングシステム１３０１は、所望のアドレスの６４ビットデータの読み出し要求Ａ１を中央処理ユニットコア３２２に出力する。すると、中央処理ユニットコア３２２は、第６の実施形態と同様に、メモリコントローラ３２１に読み出し要求を出力する。
【００７６】
ステップＳ１２０６では、コントローラ３１５は、第１のエラー検出フラグＥＦが有効であるので、第３のエラー検出フラグＥＦ２を有効にする。オペレーティングシステム１３０１は、第３のエラー検出フラグＥＦ２が有効になると、上記と同じアドレスの６４ビットデータの読み出し要求Ａ１を中央処理ユニットコア３２２に再出力する。すると、中央処理ユニットコア３２２の制御の下、コントローラ３１５は、前回のアドレスＡＤの６４ビットデータ２０３を含む１Ｋバイトのデータ２０１と、それに対応する６４バイトの第２のエラー検出訂正コード２０２の読み出し要求ＲＱ及びアドレスＡＤを不揮発性メモリ３１１及びセンサ１１０１に再出力する。
【００７７】
以上のように、オペレーティングシステム１３０１は、第１のエラー検出フラグＥＦ及び第３のエラー検出フラグＥＦ２が有効である場合には、コントローラ３１５の読み出し要求ＲＱ及びアドレスＡＤの再出力を指示する。
【００７８】
（第８の実施形態）
図１４は、第８の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図１４）が第６の実施形態（図１１）と異なる点を説明する。図１４のメモリシステムは、図１１のメモリシステムに対して、センサ１１０１の代わりにコントローラ１４０１を設けたものである。メモリモジュール３０１は、不揮発性メモリ３１１と、第１のスイッチ９０１と、第２のスイッチ９０２と、第２のエラー検出訂正回路１０２と、コントローラ１４０１とを有する。コントローラ１４０１は、アドレスレジスタ及びタイマを有する。
【００７９】
本実施形態のメモリシステムは、図１２のフローチャートと同様の処理を行う。以下、本実施形態が第６の実施形態と異なる点を説明する。ステップＳ１２０２では、コントローラ１４０１は、メモリコントローラ３２１から読み出し要求ＲＱ及びアドレスＡＤを入力し、アドレスＡＤをアドレスレジスタに格納し、タイマのカウント値のカウントを開始する。その後、ステップＳ１２０６では、コントローラ１４０１は、コントローラ３１５から読み出し要求ＲＱ及びアドレスＡＤを入力する。コントローラ１４０１は、タイマのカウント開始から一定時間以内の同じデータに対する読み出し要求ＲＱを入力するので、第２のエラー検出フラグＥＦ１を有効にする。具体的には、コントローラ１４０１は、タイマのカウント値が一定時間以内であり、入力したアドレスＡＤとアドレスレジスタに格納されているアドレスが同じデータに対する読み出し要求のためのものであるので、第２のエラー検出フラグＥＦ１を有効にする。その後、第６の実施形態と同様に、第１のスイッチ９０１は、不揮発性メモリ３１１が出力する１Ｋバイトのデータ２０１及び６４バイトの第２のエラー検出訂正コード２０２を第２のエラー検出訂正回路１０２に出力する。第２のスイッチ９０２は、第２のエラー検出訂正回路１０２が出力する６４ビットのデータを、メモリコントローラ３２１を介して中央処理ユニットコア３２２に出力する。
【００８０】
以上のように、第１のエラー検出訂正回路３１２及びコントローラ３１５を含むメモリコントローラ３２１は、ステップＳ１２０２で不揮発性メモリ３１１に対する読み出し要求ＲＱ及びアドレスＡＤを出力し、第１のエラー検出フラグＥＦが有効である場合には、ステップＳ１２０６で、再び、上記の読み出し要求と同じデータの読み出し要求を出力する。コントローラ１４０１は、一定時間内に同じデータの読み出し要求をメモリコントローラ３２１から２回入力した場合には、データ２０１及び第２のエラー検出訂正コード２０２を不揮発性メモリ３１１から第２のエラー検出訂正回路１０２に出力させる。
【００８１】
（第９の実施形態）
図１５は、第９の実施形態によるメモリシステムの構成例を示す図である。以下、本実施形態（図１５）が第６の実施形態（図１１）と異なる点を説明する。メモリシステムは、メモリモジュール３０１及び中央処理ユニット３０２を有する。メモリモジュール３０１は、不揮発性メモリ３１１を有する。中央処理ユニット３０２は、メモリコントローラ３２１及び中央処理ユニットコア３２２を有する。メモリコントローラ３２１は、第１のスイッチ９０１と、第２のスイッチ９０２と、第１のエラー検出訂正回路３１２と、第２のエラー検出訂正回路１０２と、コントローラ３１５とを有する。
【００８２】
まず、メモリコントローラ３２１は、第１のエラー検出訂正回路３１２のための読み出し要求ＲＱ及びアドレスＡＤを不揮発性メモリ３１１に出力する。不揮発性メモリ３１１は、６４ビットのデータ２０３及び第１のエラー検出訂正コード２１２を、第１のスイッチ９０１及び第２のスイッチ９０２を介して、第１のエラー検出訂正回路３１２に出力する。
【００８３】
第１のエラー検出訂正回路３１２が出力する第１のエラー検出フラグＥＦが有効である場合には、メモリコントローラ３２１は、第２のエラー検出訂正回路１０２のための読み出し要求ＲＱ及びアドレスＡＤを不揮発性メモリ３１１に出力する。不揮発性メモリ３１１は、１Ｋバイトのデータ２０１及び第２のエラー検出訂正コード２０２を、第１のスイッチ９０１を介して、第２のエラー検出訂正回路１０２に出力する。具体的には、コントローラ３１５は、第１のエラー検出フラグＥＦが有効である場合には、データ２０１及び第２のエラー検出訂正コード２０２を不揮発性メモリ３１１から第２のエラー検出訂正回路１０２に出力させる。第２のエラー検出訂正回路１０２によりエラー訂正された６４ビットのデータは、中央処理ユニットコア３２２に出力される。
【００８４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００８５】
１０２  第２のエラー検出訂正回路
１１１  シンドローム演算部
１１２  エラー判定部
１１３  バッファ
１１４  エラー訂正部
３０１  メモリモジュール
３０２  中央処理ユニット
３１１  不揮発性メモリ
３１２  第１のエラー検出訂正回路
３１３  第１のスイッチ
３１４  第２のスイッチ
３１５  コントローラ
３２１  メモリコントローラ
３２２  中央処理ユニットコア
【図１】
2016099838.tif 000003
【図２】
2016099838.tif 000004
【図３】
2016099838.tif 000005
【図４】
2016099838.tif 000006
【図５】
2016099838.tif 000007
【図６】
2016099838.tif 000008
【図７】
2016099838.tif 000009
【図８】
2016099838.tif 000010
【図９】
2016099838.tif 000011
【図１０】
2016099838.tif 000012
【図１１】
2016099838.tif 000013
【図１２】
2016099838.tif 000014
【図１３】
2016099838.tif 000015
【図１４】
2016099838.tif 000016
【図１５】
2016099838.tif 000017