"ブロック単位でデータのアクセスが行われる第1の不揮発性メモリと、ワード単位でデータのランダムアクセスが行われる第2の不揮発性メモリと、前記第1および第2の不揮発性メモリの動作の制御を行う制御部とを備え、前記第2の不揮発性メモリのデータに適用されるエラー訂正コードを、前記第1の不揮発性メモリ内に保持するメモリシステム。前記制御部は、前記第2の不揮発性メモリのデータに適用されるエラー訂正コードを前記第1の不揮発性メモリ内から読み出して保持しておくためのバッファ領域を有する請求項1に記載のメモリシステム。前記制御部は、前記第2の不揮発性メモリのデータへ前記エラー訂正コードを適用する際に、そのデータに対応するエラー訂正コードが前記バッファ領域内に保持されていない場合には、その対応するエラー訂正コードを、前記第1の不揮発性メモリから前記バッファ領域へ読み出した後に用いる請求項2に記載のメモリシステム。前記制御部は、前記対応するエラー訂正コードを前記バッファ領域へ読み出す際に、前記バッファ領域内に空き領域があるのか否かを判断すると共に、前記空き領域があると判断した場合には、その空き領域に対して読み出したエラー訂正コードを保持する一方、前記空き領域がないと判断した場合には、使用頻度が相対的に低いと想定されるエラー訂正コードの保持領域を、前記空き領域に変更して用いる請求項3に記載のメモリシステム。前記制御部は、前記エラー訂正コードの保持領域を前記空き領域に変更する際に、そのエラー訂正コードに変更が発生していた場合には、そのエラー訂正コードを前記第1の不揮発性メモリ内に事前に書き込んでおく請求項4に記載のメモリシステム。前記制御部は、前記第2の不揮発性メモリ内のデータへのアクセス履歴を用いて、前記第2の不揮発性メモリ内において今後アクセスが行われるデータを予想し、その予想したデータに対応するエラー訂正コードを、前記第1の不揮発性メモリから前記バッファ領域へ予め読み出しておく請求項3に記載のメモリシステム。前記制御部は、前記第2の不揮発性メモリへのデータの書き込み時に、前記エラー訂正コードを付加して書込みを行うと共に、前記第2の不揮発性メモリからのデータの読み出し時およびシステムの起動時に、前記エラー訂正コードを用いて、前記第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行う請求項2に記載のメモリシステム。前記制御部は、前記第2の不揮発性メモリに対してデータの書き込みを行う際に、そのデータに対応するエラー訂正コードを、前記バッファ領域上で更新する請求項7に記載のメモリシステム。前記制御部は、前記第2の不揮発性メモリ内の各データのアドレスと、各データに対応するエラー訂正コードの前記第1の不揮発性メモリ内での保持アドレスとを、対応付けて管理している請求項1ないし請求項8のいずれか1項に記載のメモリシステム。複数のエラー訂正コードの束が、前記第1の不揮発性メモリ内において前記ブロック単位で保持されている請求項1ないし請求項8のいずれか1項に記載のメモリシステム。前記第1の不揮発性メモリ内に、この第1の不揮発性メモリのデータに適用される第1エラー訂正コードが、前記第2の不揮発性メモリのデータに適用されるエラー訂正コードとしての第2エラー訂正コードとともに保持されている請求項1ないし請求項8のいずれか1項に記載のメモリシステム。前記第1の不揮発性メモリが、前記ブロックとしてのページ単位でデータのアクセスが行われるフラッシュメモリ、または、前記ブロックとしてのセクタ単位でデータのアクセスが行われるハードディスクである請求項1ないし請求項8のいずれか1項に記載のメモリシステム。第1の不揮発性メモリに対して、ブロック単位でデータのアクセスを行うと共に、第2の不揮発性メモリに対して、ワード単位のデータのランダムアクセスを行い、前記第1の不揮発性メモリ内に保持されているエラー訂正コードを用いて、前記第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行うメモリシステムの動作方法。ところで、このようなメモリシステムでは、各不揮発性メモリにおけるデータ保持特性を向上させ、システムの信頼性を高めることが重要である。これは、不揮発性メモリは一般に、書き換え回数の増加とともにデータの保持特性が劣化する傾向にあるためである。そこで、例えば上記特許文献1では、エラー訂正コードECC:ErrorCorrectingCodeを用いてデータのビット誤り検出訂正処理を行うことにより、NAND型フラッシュメモリにおけるデータ保持特性を向上させている。一方で、上記したNVRAMを例えば不揮発性キャッシュメモリとして使用した場合、ストレージとして機能するNAND型フラッシュメモリ等と比べてアクセス頻度が高くなることから、NVRAMにおいてもデータ保持特性を向上させることが重要である。しかしながら、上記特許文献1等のメモリシステムでは、NVRAMのデータに対する保持特性向上のための手法例えば、ECCを用いることなどについては、全く開示されていない。そこで、フラッシュメモリとNVRAMとを用いたメモリシステムにおいて、NVRAMのデータに対してECCを適用し、データの保持特性を改善する手法が考えられる。しかしながら、単純にECCを適用しただけでは、ECCコードへのアクセスが発生する分NVRAMにおけるアクセス速度が低下するNVRAMの帯域へ悪影響を及ぼすという副作用が生じてしまい、システム全体としても動作速度が低下してしまうことになる。本発明はかかる問題点に鑑みてなされたもので、その目的は、動作速度を低下させることなくシステムの信頼性を向上させることが可能なメモリシステムおよびその動作方法を提供することにある。本発明のメモリシステムは、ブロック単位でデータのアクセスが行われる第1の不揮発性メモリと、ワード単位でデータのランダムアクセスが行われる第2の不揮発性メモリと、第1および第2の不揮発性メモリの動作の制御を行う制御部とを備え、第2の不揮発性メモリのデータに適用されるエラー訂正コードを、第1の不揮発性メモリ内に保持するようにしたものである。本発明のメモリシステムの動作方法は、第1の不揮発性メモリに対してブロック単位でデータのアクセスを行うと共に、第2の不揮発性メモリに対してワード単位でデータのランダムアクセスを行い、第1の不揮発性メモリ内に保持されているエラー訂正コードを用いて、第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行うようにしたものである。本発明のメモリシステムおよびその動作方法では、第1の不揮発性メモリに対してブロック単位でデータのアクセスが行われると共に、第2の不揮発性メモリに対してワード単位でのデータのランダムアクセスが行われる。この際、第2の不揮発性メモリのデータに対してエラー訂正コードが適用され、例えばビット誤りの検出および訂正処理がなされることにより、第2の不揮発性メモリにおけるデータ保持特性が改善される。また、このエラー訂正コードは第1の不揮発性メモリ内に保持されていることにより、例えば第2の不揮発性メモリ自身内にエラー訂正コードが保持される場合とは異なり、この第2の不揮発性メモリにおけるアクセス速度の低下が回避される。本発明のメモリシステムおよびその動作方法によれば、ワード単位でのデータのランダムアクセスが行われる第2の不揮発性メモリのデータに適用するエラー訂正コードを、ブロック単位でデータのアクセスが行われる第1の不揮発性メモリ内に保持するようにしたので、第2の不揮発性メモリにおけるアクセス速度の低下を回避しつつ、この第2の不揮発性メモリにおけるデータ保持特性を改善することができる。よって、動作速度を低下させることなく、システムの信頼性を向上させることが可能となる。以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、説明は以下の順序で行う。1.実施の形態第1の不揮発性メモリとしてNAND型フラッシュメモリを用いた例2.変形例変形例1NAND型フラッシュメモリにECC処理部を内蔵した例変形例2第1の不揮発性メモリとしてMFDを用いた例その他の変形例<実施の形態>[データ記憶システム1の構成]図1は、本発明の一実施の形態に係るメモリシステム不揮発性メモリシステム2を備えたデータ記憶システムデータ記憶システム1のブロック構成を表すものである。このデータ記憶システム1は、CPU10、DRAM11およびDRAMコントローラ12と、本実施の形態の不揮発性メモリシステム2とを備えている。CPU10は、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2の動作をそれぞれ制御するものである。具体的には、後述するNVMコントローラ23を介してNVRAM22およびNAND型フラッシュメモリ21に保持記憶されている各データに対してアクセスを行い、例えばワークメモリ主メモリとして機能するDRAM11へデータをロードしたり、逆にDRAM11上のデータを書き込んだりする機能を有している。DRAM11は、上記したように、データ記憶システム1におけるワークメモリとして機能する揮発性のメモリである。DRAMコントローラ12は、CPU10から指示に従って、DRAM11の動作例えば、データの書き込み動作や読み出し動作などを制御するものである。[不揮発性メモリシステム2の構成]不揮発性メモリシステム2は、不揮発性メモリNVMであるNAND型フラッシュメモリ21第1の不揮発性メモリおよびNVRAM22第2の不揮発性メモリと、NVMコントローラ23制御部とを備えている。ここでは、これらの不揮発性メモリのうち、NAND型フラッシュメモリ21がストレージとして機能すると共に、NVRAM22が、ワークメモリや不揮発性のキャッシュメモリとして機能するようになっている。これにより、この不揮発性メモリシステム2は、NAND型フラッシュメモリ21との組み合わせでSnDStoreandDownloadモデルに対応すると共に、NVRAM22との組み合わせでXIPeXecuteInPlaneモデルにも対応することが可能となっている。NAND型フラッシュメモリ21NAND型フラッシュメモリ21は、ブロック単位ここでは、後述するページ211P,212P単位でデータのアクセスが行われる不揮発性メモリフラッシュメモリである。このNAND型フラッシュメモリ21は、データブロック211およびECC2ブロック212を有している。データブロック211は、ページ211P単位でデータ21Dが保持記憶されているブロックデータ領域である。具体的には、各ページ211Pでは、データ21Dがそれを保護するエラー訂正コードECC1第1エラー訂正コードとともに保持されている。すなわち、このエラー訂正コードECC1は、後述するように、NAND型フラッシュメモリ21のデータ21Dに対して適用されるものであり、これによりNAND型フラッシュメモリ21におけるデータの保持特性が向上するようになっている。ECC2ブロック212は、NVRAM22を保護するエラー訂正コードECC2第2エラー訂正コードがページ212P単位で保持記憶されているブロックデータ領域である。すなわち、本実施の形態では、NVRAM22に適用されるエラー訂正コードECC2もが、NAND型フラッシュメモリ21内に保持されている。具体的には、各ページ212Pでは、このエラー訂正コードECC2が、上記したエラー訂正コードECC1とともに保持されている。詳細には、例えば図2に示したように、複数のエラー訂正コードECC2の束ここでは、n2以上の整数個のエラー訂正コードECC20~ECCnが纏められた束が、各ページ212P単位でエラー訂正コードECC1とともに保持されている。換言すると、各ページ212Pでは、データ領域にエラー訂正コードECC2が保持されると共に、冗長領域にはページ211Pと同様に、エラー訂正コードECC1が保持されている。なお、一例としてNVRAM22に対するアクセスが32ビットアクセスである場合、このNVRAM22のデータの保護に必要なエラー訂正コードECC2例えばハミング符号は、6ビットとなる。また、NAND型フラッシュメモリ21におけるページ211P,212Pのサイズデータ領域を、一般的な値である約32Kビット約4Kバイトとすると、上記の場合、NVRAM22における約5Kワード分のデータに対応するエラー訂正コードECC2が、ページ212P内に保持されることになる。また、この場合、NVMコントローラ23は後述するように、1回のアクセスで5Kワード分のエラー訂正コードECC2をECCバッファ230へ読み出すことができる。このため、NAND型フラッシュメモリ21における1ページの読出しに必要となる時間は、ONFI2.1mode5200MB/秒に対応したMLCNAND型フラッシュメモリを使用した場合で約80μsとなり、1つのエラー訂正コードECC2当たりでは16nsとなる。すると、NVRAM22において連続したアドレスに対するアクセスが発生した場合であっても、NVRAM22のアクセス時間がこの16nsよりも長ければ、アクセスの継続中において、ECCバッファ230に対して次のページに対応するエラー訂正コードECC2の読み出しを行うことが可能となる。なお、NVRAM22において不連続のアドレスに対するアクセスが発生した場合には、後述する先読み機能を利用することで、ECCバッファ230へのエラー訂正コードECC2の読み出し時間を短縮することができる。なお、上記した16ns程度のアクセス時間は、NVRAM22へのアクセス時間としては、一般に十分に高速な値であると言える。NVRAM22NVRAM22は、ワード単位でのデータデータ22Dのランダムアクセスが行われる不揮発性メモリであり、上記したNAND型フラッシュメモリ21とは異なり、データ22Dのみが保持されている。すなわち、このNVRAM22内には、エラー訂正コードは保持されていない。このようなNVRAM22は、例えば、PCRAM,MRAM,ReRAMなどからなる。NVMコントローラ23NVMコントローラ23は、CPU10から指示に従って、NAND型フラッシュメモリ21およびNVRAM22の動作データの書き込み動作や読み出し動作などをそれぞれ制御するものであり、後述するECCバッファ230を含んで構成されている。本実施の形態では、このNVMコントローラ23は、NAND型フラッシュメモリ21内に保持されているエラー訂正コードECC1,ECC2を用いて、所定のビット誤りの検出および訂正処理ビット誤り検出訂正処理を行う機能を有している。具体的には、NAND型フラッシュメモリ21へのデータ21Dの書き込み時に、エラー訂正コードECC1を付加して書込みを行い、NAND型フラッシュメモリ21からのデータ21Dの読み出し時またはシステムの起動時に、エラー訂正コードECC1を用いてこのデータ21Dに対するビット誤り検出訂正処理を行う。また、エラー訂正コードECC2を用いて、NVRAM22へのデータ22Dの書き込み時に、このデータ22Dに対するエラー訂正コード生成処理を行い、NVRAM22からのデータ22Dの読み出し時またはシステムの起動時に、このデータ22Dに対するビット誤り検出訂正処理を行う。また、NVMコントローラ23は、データ22Dのアクセス単位であるワード単位でエラー訂正コードECC2を計算するのと並行して、データ21Dのアクセス単位であるページ211P単位でエラー訂正コードECC1を計算するようになっている。なお、これらのエラー訂正コードECC1,ECC2を用いたビット誤り検出訂正処理の詳細については、後述する図6~図8。このNVMコントローラ23はまた、上記したNAND型フラッシュメモリ21内のECC2ブロック212を読み出してロードして一時的に保持しておくためのバッファ領域である、ECCバッファ230を有している。そして、詳細は後述するが、NVMコントローラ23は、このECCバッファ230内に読み込まれたエラー訂正コードECC2を利用して、ビット誤り検出訂正処理を行うようになっている。これにより、ビット誤り検出訂正処理を高速に実行することが可能となる。また、前述した複数のエラー訂正コードECC2の束を読み出し単位として、NAND型フラッシュメモリ21からECCバッファ230へのエラー訂正コードECC2の読み出しを行う場合には、NVRAM22上の連続したアドレスに対応させることにより、NVRAM22上の連続したアドレスへのアクセス時に高速な処理が可能となる。このようにNVMコントローラ23は、ECCバッファ230を利用して、エラー訂正コードECC1,ECC2のキャッシング機能を実現している。NVMコントローラ23は更に、NVRAM22内の各データ22Dのアドレスと、各データ22Dに対応するエラー訂正コードECC2のNAND型フラッシュメモリ21内での保持アドレスとを、対応付けて管理する機能ECCページ管理機能を有している。なお、このようなECCページ管理機能を利用したビット誤り検出訂正処理の詳細についても、後述する図6~図8。ここで、図3は、NVMコントローラ23のブロック構成を表したものである。このNVMコントローラ23は、上記したECCバッファ230に加え、ECC1処理部231、ECC2処理部232、CPU-I/F部233、フラッシュメモリ-I/F部234、NVRAM-I/F部235、ECCバッファ制御部236、フラッシュメモリ制御部237およびNVRAM制御部238を有している。ECC1処理部231は、エラー訂正コードECC1を用いて、NAND型フラッシュメモリ21のデータ21Dに対するビット誤り検出訂正処理を行うものである。なお、ECC2ブロック212のデータ21Dに対するビット誤り検出訂正処理を行った結果は、ECCバッファ230上に一時的に保持されるようになっている。また、それ以外のデータブロック211のデータ21Dは、NVMコントローラ23からCPU-I/F部233を介して出力される。ECC2処理部232は、上記のようにしてECC2バッファ230上に一時的に保持されたエラー訂正コードECC2を用いて、NVRAM22のデータ22Dに対するビット誤り検出訂正処理を行うものである。なお、この際のエラー訂正コードECC2を用いたビット誤り検出訂正処理は、例えば一般的に利用されているハミング符号方式を用いて行われる。CPU-I/F部233は、NVMコントローラ23とCPU10との間の接続を行うためのインターフェースI/F部分である。フラッシュメモリ-I/F部234は、NVMコントローラ23とNAND型フラッシュメモリ21との間の接続を行うためのインターフェース部分である。NVRAM-I/F部235は、NVMコントローラ23とNVRAM22との間の接続を行うためのインターフェース部分である。このように、NVMコントローラ23は、ワード単位でランダムアクセスを行うワークメモリここではNVRAM22用のI/Fと、ブロックページ単位でアクセスを行うストレージここではNAND型フラッシュメモリ21用のI/Fとの双方を有している。ECCバッファ制御部236は、ECCバッファ230の動作を制御するものである。フラッシュ制御部237は、ECC1処理部231およびフラッシュメモリ-I/F部234の動作をそれぞれ制御するものである。NVRAM制御部238は、ECC2処理部232およびNVRAM-I/F部235の動作をそれぞれ制御するものである。[データ記憶システム1の作用効果]1.基本動作このデータ記憶システム1では、CPU10からの指示に応じたDRAMコントローラ12およびNVMコントローラ23の制御により、DRAM11およびNVRAM22がワークメモリとして機能すると共に、NAND型フラッシュメモリ21がストレージとして機能する。これにより、CPU10からの指示に従って、所定のプログラムの実行やデータ処理が行われる。この際、不揮発性メモリシステム2では、NAND型フラッシュメモリ21に対してブロックページ単位でデータ21Dのアクセスが行われる一方、NVRAM22に対してワード単位でのデータ22Dのランダムアクセスが行われる。また、このときNVMコントローラ23は、NAND型フラッシュメモリ21内に保持されているエラー訂正コードECC1を用いて、このNAND型フラッシュメモリ21のデータ21Dに対するビット誤り検出訂正処理を行う。具体的には、NVMコントローラ23は、NAND型フラッシュメモリ21へのデータ21Dの書き込み時に生成したエラー訂正コードECC1を使用して、NAND型フラッシュメモリ21からのデータ21Dの読み出し時またはシステム不揮発性メモリシステム2の起動時に、そのようなビット誤り検出訂正処理を行う。なお、この際のエラー訂正コードECC1を用いたビット誤り検出訂正処理は、例えば一般的に利用されているBCH符号方式を用いて行われる。これにより、NAND型フラッシュメモリ21におけるデータ21Dの保持特性が向上し、不揮発性メモリシステム2の信頼性の向上が図られている。2.エラー訂正コードECC2を用いたビット誤り検出訂正処理次に、図4~図8を参照して、本発明の特徴的部分の1つである、エラー訂正コードECC2を用いたビット誤り検出訂正処理等について、比較例比較例1,2と比較しつつ詳細に説明する。2-1.比較例1図4は、比較例1に係るメモリシステム不揮発性メモリシステム102を備えたデータ記憶システムデータ記憶システム101のブロック構成を表したものである。この比較例1のデータ記憶システム101は、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム102を備えている。すなわち、本実施の形態のデータ記憶システム1において、本実施の形態の不揮発性メモリシステム2の代わりに、比較例1の不揮発性メモリシステム102を設けたものであり、他の構成は同様となっている。不揮発性メモリシステム102は、本実施の形態の不揮発性メモリシステム2とは異なり、NAND型フラッシュメモリ102-1上にエラー訂正コードECC2を保存しないためにECC2ブロック212を備えておらず、他の構成は同様となっている。すなわち、この不揮発性メモリシステム102では、本実施の形態と同様にエラー訂正コードECC1を用いてNAND型フラッシュメモリ102-1自身のデータ保持特性の改善を図っているものの、本実施の形態とは異なり、NVRAM22用のエラー訂正コードECC2が設けられていない。したがって、この比較例1では、エラー訂正コードECC2を用いたNVRAM22のデータ22Dに対するビット誤り検出訂正処理が行われないことになるため、NVRAM22に対する書き換え回数が増大して保持特性が劣化した場合、データエラーが発生する可能性がある。特に、NVRAM22を不揮発性のキャッシュメモリとして使用した場合、ストレージとして機能するNAND型フラッシュメモリ102-1と比べてアクセス頻度が高くなる。このため、NVRAM22は、NAND型フラッシュメモリ102-1以上に高いデータ保持特性が必要となる。しかしながら、この比較例1では、上記したように、NVRAM22におけるデータエラーの発生を防ぐことができないため、不揮発性メモリシステム102全体としての信頼性も低下してしまうことになる。2-2.比較例2次いで、図5は、比較例2に係るメモリシステム不揮発性メモリシステム202を備えたデータ記憶システムデータ記憶システム201のブロック構成を表したものである。この比較例2のデータ記憶システム101は、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム202を備えている。すなわち、本実施の形態のデータ記憶システム1において、本実施の形態の不揮発性メモリシステム2の代わりに、比較例2の不揮発性メモリシステム202を設けたものであり、他の構成は同様となっている。不揮発性メモリシステム202は、本実施の形態の不揮発性メモリシステム2とは異なり、NAND型フラッシュメモリ102-1上にエラー訂正コードECC2を保存しないためにECC2ブロック212を備えていない。その代わりに、この不揮発性メモリシステム202では、NVRAM202-2上にエラー訂正コードECC2を保存する領域が設けられており、他の構成は同様となっている。すなわち、この比較例2では、エラー訂正コードECC2を用いて、NVRAM202-2のデータ22Dに対するビット誤り検出訂正処理が行われることになる。これにより、上記比較例1と比べ、NVRAM202-2におけるデータ22Dの保持特性の改善が図られ、不揮発性メモリシステム202全体としての信頼性も向上する。ところが、この比較例2の不揮発性メモリシステム202では、NVRAM202-2用のエラー訂正コードECC2がNVRAM202-2自身の内部に保持されていることに起因して、以下のような問題が生じてしまう。アクセス速度の低下の問題まず、1つ目の問題として、NVRAM202-2におけるアクセス速度が低下するNVRAM202-2の帯域へ悪影響を及ぼすという副作用が生じてしまい、不揮発性メモリシステム202全体としても動作速度が低下してしまうというものが挙げられる。ここで、比較例2のようにNVRAM202-2内にエラー訂正コードECC2が保持されている場合における、NVRAM202へのアクセス手法としては、以下の2つの手法が考えられる。第1の手法は、図5に示したように、NVRAM202-2上においてデータ22Dのアドレスとは異なるアドレスに、エラー訂正コードECC2を保持するというものである。この手法では、NVRAM202-2に対する1回のアクセスに対して、実施には最低2回データ22Dへのアクセスと、エラー訂正コードECC2へのアクセスとの2回のアクセスが必要となる。このため、この第1の手法では、NVRAM202-2における高速なアクセス速度が、1/2に低下してしまうことになる。第2の手法は、NVRAM202-2上においてデータ22Dの一部のビットに、エラー訂正コードECC2を割り当てて保持するというものである。この手法では、NVRAM202-2に対する1回のアクセスによって、データ22Dとエラー訂正コードECC2との双方にアクセスすることができるため、上記した第1の手法と比べ、NVRAM202-2におけるアクセス速度低下の影響は小さくなる傾向にある。ただし、1回のアクセスにおいて使用されるデータ22Dのビットサイズが、エラー訂正コードECC2へ割り当てた分だけ小さくなることから、この第2の手法においても、NVRAM202-2における高速なアクセス速度が低下してしまうことになる。なお、仮に、データ22Dにおける16ビット中の8ビット分をエラー訂正コードECC2に割り当てた場合には、結局のところ、上記した第1の手法と同様に、アクセス速度が、1/2に低下してしまう。このように、上記した2つの手法のいずれにおいても、比較例2ではNVRAM202-2におけるアクセス速度が低下してしまい、不揮発性メモリシステム202全体としても動作速度が低下してしまうことになる。コスト増加の問題また、特に2つの不揮発性メモリとして、NAND型フラッシュメモリ102-1とNVRAM202-2とを用いた場合、比較例2の不揮発性メモリシステム202では、以下のようなコスト増加の問題も生じる。すなわち、一般に、NVRAMはNAND型フラッシュメモリと比べてビット単価が高いことから、比較例2のように、NVRAM202-2用のエラー訂正コードECC2をNVRAM202-2自身の内部に保持した場合、NVRAM202-2の実質のデータ容量が減少する。したがって、不揮発性メモリ202全体として、不揮発性メモリのコストが増大してしまうことになる。2-3.本実施の形態これに対して、本実施の形態の不揮発性メモリシステム2では、図1~図3に示したように、NVRAM22のデータ22Dに対してエラー訂正コードECC2が適用され、以下詳述するようにしてデータ22Dに対するビット誤り検出訂正処理が行われる。これにより、上記比較例1の不揮発性メモリシステム102と比べ、NVRAM22におけるデータ保持特性が改善される。また、本実施の形態では、図1および図2に示したように、このエラー訂正コードECC2がNAND型フラッシュメモリ21内に保持されている。これにより、エラー訂正コードECC2がNVRAM202-2内に保存されている上記比較例2とは異なり、NVRAM22における上述したようなアクセス速度の低下の問題が回避される。具体的には、NVRAM22上にはデータ22Dのみが保持されるため、NVRAM22における容量の使用効率が維持される。また、NVRAM-I/F部235の帯域は、全てデータ転送に使用されることになるため、エラー訂正コードECC2を用いることによる帯域の減少も発生せず、NVRAM22におけるパフォーマンスへの影響も最小限に抑えられる。また、前述したように、複数のエラー訂正コードECC2の束を読み出し単位として、NAND型フラッシュメモリ21からECCバッファ230へのエラー訂正コードECC2の読み出しを行う場合には、以下の利点も得られる。すなわち、NVRAM22上の連続したアドレスに対応させることにより、NVRAM22上の連続したアドレスへのアクセス時に高速なビット誤り検出訂正処理を行うことが可能となる。なお、後述するように、ECCバッファ230上に必要とされるエラー訂正コードECC2が存在しなかった場合には、再度NAND型フラッシュメモリ21へのアクセスが発生することから、一時的にはパフォーマンスが低下することになる。ただし、ECCバッファ230上に一度読み出されたエラー訂正コードECC2のうち、アクセス頻度の高いものが優先してECCバッファ230に保持されることから、全体としてはNVRAM22における高速なデータアクセス性能は維持されると言える。加えて、本実施の形態では、上記したように、ビット単価が相対的に低いNAND型フラッシュメモリ21側にエラー訂正コードECC2が保持されていることから、上記比較例2とは異なり、上述したコスト増加の問題も回避される不揮発性メモリのコストが抑えられる。ここで、以下図6~図8を参照して、このようなエラー訂正コードECC2を用いたNVRAM22のデータ22Dに対するビット誤り検出訂正処理について、詳細に説明する。換言すると、NVMコントローラ23は以下のようにして、NVRAM22へのデータ22Dの書き込み時にエラー訂正コードECC2を書き込むと共に、NVRAM22からのデータ22Dの読み出し時またはシステムの起動時に、エラー訂正コードECC2を用いてこのデータ22Dに対するビット誤り検出訂正処理を行う。NVRAM22からのデータ読み出し処理図6は、エラー訂正コードECC2を用いた、NVRAM22からCPU10へのデータ読み出し処理の一例を流れ図で表したものである。このデータ読み出し処理では、NVMコントローラ23は、ECCバッファ230上に、NVRAM22から読み出すデータ22Dに対応する必要とされるエラー訂正コードECC2が存在する保持されているのか否かを判断するステップS102。ここで、対応するエラー訂正コードECC2がECCバッファ230上に存在する場合ステップS102:Yには、NVMコントローラ23は以下の処理を行う。すなわち、NVRAM22から該当する読み出し対象とされているデータ22Dを読み出すステップS101のと並行して、このECCバッファ230から対応するエラー訂正コードECC2を読み出すステップS103。一方、対応するエラー訂正コードECC2がECCバッファ230上に存在しない場合ステップS102:Nには、次にNVMコントローラ23は、このECCバッファ230内に空き領域エラー訂正コードECC2が保持されていない領域がある存在するのか否かを判断するステップS104。そして、ECCバッファ230内に空き領域があると判断した場合ステップS104:Yには、次にNVMコントローラ23は、前述したECCページ管理機能を利用して、対応するエラー訂正コードECC2を含むECC2ブロック212のNAND型フラッシュメモリ21上でのアドレスを取得するステップS105。続いて、NVMコントローラ23は、NAND型フラッシュメモリ21からECCバッファ230内の上記した空き領域に対して、この対応するエラー訂正コードECC2を含むECC2ブロック212のページを読み出して保持させステップS106、前述したステップS103へと進む。このようにして、NVMコントローラ23は、対応するエラー訂正コードECC2をNAND型フラッシュメモリ21から読出した後にNVRAM22へのアクセスを行うため、その間の時間は、CPU10に対してNVRAM22へのアクセスを延長一時停止する必要がある。ここで、ECCバッファ230内に空き領域がないと判断した場合ステップS104:Nには、次にNVMコントローラ23は、ECCバッファ230上の空き候補領域を選択するステップS107。具体的には、ECCバッファ230上において、使用頻度アクセス頻度が相対的に低い望ましくは最も低いと想定されるエラー訂正コードECC2の保持領域を空き候補領域として選択し、空き領域に変更して用いるバッファ領域の再利用をするようにする。次いで、NVMコントローラ23は、上記のようにしてエラー訂正コードECC2の保持領域空き候補領域を空き領域に変更する際に、NVMコントローラ23は、まず、NAND型フラッシュメモリ21内の該当するエラー訂正コードECC2が変更済みであるのか否かを判断するステップS108。ここで、該当するエラー訂正コードECC2が既に変更済みではないと判断した場合ステップS108:Nには、次に前述したステップS105へと進む。一方、そのエラー訂正コードECC2が変更済みである場合には、NAND型フラッシュメモリ21内にそのエラー訂正コードECC2を含むECC2ブロック212のページにデータ22Dを書き込む。具体的には、該当するエラー訂正コードECC2が変更済みであると判断した場合ステップS108:Yには、次にNVMコントローラ23は、前述したECCページ管理機能を利用して、エラー訂正コードECC2の書き込み対象となるECC2ブロック212のNAND型フラッシュメモリ21上でのアドレスを取得するステップS109。そして、NVMコントローラ23は、ECCバッファ230からECC2ブロック212のページに対して、該当するエラー訂正コードECC2を書き込みステップS110、前述したステップS105へと進む。ここで、前述したステップS103の後には、NVMコントローラ23は、エラー訂正コードECC2を用いて、NVRAM22において読み出し対象となっているデータ22Dに対するビット誤り検出訂正処理を行うステップS111。この際、エラー訂正コードECC2を用いたビット誤り検出訂正処理は、例えば、一般的に利用されているハミング符号方式を用いて行う。なお、訂正を行うのが不可能なビット誤りが検出された場合には、NVMコントローラ23は、例えばその旨をCPU10へ通知するようにする。そして、NVMコントローラ23は、このようなビット誤り検出訂正処理後の該当するデータ22Dを、CPU10へ出力する。以上により、図6に示したNVRAM22からCPU10へのデータ読み出し処理が終了となる。なお、このようなデータ読み出し処理ならびに、以下のデータ書き込み処理およびシステム起動処理の際には、NVMコントローラ23は、以下のようなエラー訂正コードECC2の先読み機能を利用するのが望ましい。このエラー訂正コードECC2の先読み機能を利用した場合、まず、NVMコントローラ23は、NVRAM22内のデータ22Dへの過去のアクセス履歴を用いて、このNVRAM22内において今後アクセスが行われるデータ22Dを予想する。そして、その予想したデータ22Dに対応するエラー訂正コードECC2を、NVRAM22からECCバッファ230へ予め読み出しておく。このようなエラー訂正コードECC2の先読み機能を利用した場合、NVRAM22におけるアクセスの高速性能の維持が容易となる。NVRAM22へのデータ書き込み処理図7は、エラー訂正コードECC2を用いた、CPU10からNVRAM22へのデータ書き込み処理の一例を流れ図で表したものである。このデータ書き込み処理では、まずNVMコントローラ23は、CPU10から該当する書き込み対象となるデータ22Dを取得するステップS201。次いで、NVMコントローラ23は、前述した読み出し処理の際におけるステップS102,S104~S110と同様の処理を行いステップS203~S210、次に以下のステップS202へと進む。次いで、NVMコントローラ23は、例えば一般的に利用されているハミング符号方式を用いて、取得したデータ22Dに対応するエラー訂正コードECC2を、演算計算することにより生成するステップS202。次いでステップS211では、NVMコントローラ23は、計算して得られたエラー訂正コードECC2を、ECCバッファ230へ書き込む更新する。このとき、ECCバッファ230上でエラー訂正コードECC2を含んだページは、更新済み状態として登録される。また、それと共に、NVMコントローラ23は、該当するデータ22DをNVRAM22へと書き込むステップS212。以上により、図7に示したCPU10からNVRAM22へのデータ書き込み処理が終了となる。システム起動処理図8は、エラー訂正コードECC2を用いた、不揮発性メモリシステム2の起動処理システム起動処理の一例を流れ図で表したものである。このシステム起動処理では、まず、NVMコントローラ23は、NVRAM22における先頭アドレスを設定するステップS301。次いで、NVMコントローラ23は、前述した読み出し処理の際におけるステップS101~S104,S107,S105,S106,S111と同様の処理を行いステップS302~S309、次に以下のステップS310へと進む。このステップS310では、ステップS309において実行したビット誤り検出訂正処理において、訂正を行うのが不可能なビット誤りが検出されたのか否かを判断する。そして、訂正を行うのが不可能なビット誤りが検出された場合ステップS310:Yには、次にNVMコントローラ23はその旨をCPU10へ通知することによりステップS311、図8に示したシステム起動処理が終了となる。一方、訂正を行うのが不可能なビット誤りが検出されなかった場合ステップS310:Nには、次にNVMコントローラ23は、NVRAM22における最終アドレスが対象となっているのか否かを判断するステップS312。ここで、最終アドレスが対象となっていない場合ステップS312:Nには、NVMコントローラ23は、NVRAM22における対象アドレスに対して1を加算しステップS313、前述したステップS303へと戻る。一方、最終アドレスが対象となっている場合ステップS312:Yには、図8に示したシステム起動処理が終了となる。このように、不揮発性メモリシステム2が電源の投入がなされて起動したときに、NVRAM22上の全てのデータ22Dに対してエラー訂正コードECC2を用いたビット誤り検出訂正処理を行うことにより、以下の効果が得られる。すなわち、不揮発性のキャッシュメモリとして用いられるNVRAM22上に、データのビット誤りが存在しないことが確認された後に不揮発性メモリシステム2が動作開始となるため、システムの信頼性を向上させることが可能となる。以上のように本実施の形態では、ワード単位でのデータのランダムアクセスが行われるNVRAM22のデータ22Dに適用するエラー訂正コードECC2を、ブロックページ単位でデータのアクセスが行われるNAND型フラッシュメモリ21内に保持するようにしたので、NVRAM22におけるアクセス速度の低下を回避しつつ、このNVRAM22におけるデータ保持特性を改善向上することができる。よって、動作速度を低下させることなく、不揮発性メモリシステム2の信頼性を向上させることが可能となる。また、特に本実施の形態では、ビット単価が相対的に低いNAND型フラッシュメモリ21側にエラー訂正コードECC2を保持するようにしたので、不揮発性メモリのコストを抑えることが可能となる。<変形例>続いて、上記実施の形態の変形例変形例1,2について説明する。なお、上記実施の形態における構成要素と同一のものには同一の符号を付し、適宜説明を省略する。[変形例1]図9は、変形例1に係るメモリシステム不揮発性メモリシステム2Aを備えたデータ記憶システムデータ記憶システム1Aのブロック構成を表したものである。本変形例のデータ記憶システム1Aは、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2Aを備えている。すなわち、上記実施の形態のデータ記憶システム1において、上記実施の形態の不揮発性メモリシステム2の代わりに、本変形例の不揮発性メモリシステム2Aを設けたものであり、他の構成は同様となっている。不揮発性メモリシステム2Aは、ECCを内蔵したNAND型フラッシュメモリ21と、NVRAM22と、NVMコントローラ23Aとを備えている。NAND型フラッシュメモリ21Aは、前述したECC1処理部231を内蔵することを特徴としている。そのため、本変形例のNVMコントローラ23Aは、エラー訂正コードECC1を用いてビット誤り検出訂正処理を行ったデータを、NAND型フラッシュメモリ21Aから受信し、ECCバッファ230に一時的に保存する。NAND型フラッシュメモリ21Aに対して書込みを行う場合にも、データ21Dのみを送信する。このNAND型フラッシュメモリ21Aはまた、ページ211P単位で構成されるデータブロック211と、ページ212P単位で構成されるECC2ブロック212とを有している。なお、ページ211P,212Pにおけるデータ構成は、上記実施の形態におけるページ211P,212Pにおけるデータ構成と同様となっているが、エラー訂正コードECC1を保存する領域にはNVMコントローラ23からはアクセスすることはできない。近年、NAND型フラッシュメモリ21AのようにECC処理部を内蔵するようにした製品が存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。[変形例2]図10は、変形例2に係るメモリシステム不揮発性メモリシステム2Bを備えたデータ記憶システムデータ記憶システム1Bのブロック構成を表したものである。本変形例のデータ記憶システム1Bは、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2Bを備えている。すなわち、上記実施の形態のデータ記憶システム1において、上記実施の形態の不揮発性メモリシステム2の代わりに、本変形例の不揮発性メモリシステム2Bを設けたものであり、他の構成は同様となっている。不揮発性メモリシステム2Bは、MFDManegedFlashDrive21B、NVRAM22およびNVMコントローラ23Aを備えている。このMFD21Bとしては、例えば、SSDSolidStateDrive、eMMCEmbeddedMultiMediaCard、SDカード、USBUniversalSerialBusメモリなどが挙げられる。すなわち、この不揮発性メモリシステム2Bは、不揮発性メモリシステム2において、NAND型フラッシュメモリ21の代わりにMFD21Bを設けたものであり、他の構成は同様となっている。MFD21Bは、ブロック単位ここでは、セクタ211S,212S単位でデータのアクセスが行われるNAND型フラッシュを搭載したストレージデバイスである。このMFD21Bは、前述したECC1処理部231と同等の機能を内蔵することを特徴としている。そのため、本変形例のNVMコントローラ23Aは、エラー訂正コードECC1を用いてビット誤り検出訂正処理を行ったデータをMFD21Bから受信し、ECCバッファ230に一時的に保存する。MFD21Bに対して書込みを行う場合にも、データ21Dのみを送信する。このMFD21Bはまた、セクタ211S単位で構成されるデータブロック211と、セクタ212S単位で構成されるECC2ブロック212とを有している。なお、セクタ211S,212Sにおけるデータ構成は、上記実施の形態におけるページ211P,212Pにおけるデータ構成と同様となっているが、エラー訂正コードECC1を保存する領域にはNVMコントローラ23からはアクセスすることはできない。近年、MFD21Bのようなストレージ製品が多数存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。なお、本変形例では、NAND型フラッシュメモリ21の代わりにMFD21Bを設けた例について説明したが、ブロック単位複数のワード単位で一括してデータアクセスを行うストレージデバイスであれば、他のデバイスであってもよい。すなわち、例えば、セクタ単位でデータのアクセスが行われるハードディスクなどを用いるようにしてもよい。[その他の変形例]以上、実施の形態および変形例を挙げて本発明を説明したが、本発明はこれらの実施の形態等に限定されず、種々の変形が可能である。例えば、上記実施の形態等では、データ記憶システムにおけるワークメモリの一例としてDRAMを挙げて説明したが、これには限られず、DRAM以外の揮発性メモリをワークメモリとして用いるようにしてもよい。また、上記実施の形態等において説明したNVMコントローラ23,23AやDRAMコントローラ12における機能の一部を、CPU10側において担うようにしてもよい。更に、上記実施の形態等では、データ記憶システムが、CPU10および不揮発性メモリシステム2に加えてDRAM11およびDRAMコントローラ12を備えている場合について説明したが、場合によっては、DRAM11およびDRAMコントローラ12を設けないようにしてもよい。すなわち、CPU10および不揮発性メモリシステムのみによってデータ記憶システムを構成するようにしてもよい。"