(57)【特許請求の範囲】
【請求項１】
ブロック単位でデータのアクセスが行われる第１の不揮発性メモリと、
ワード単位でデータのランダムアクセスが行われる第２の不揮発性メモリと、
前記第１および第２の不揮発性メモリの動作の制御を行う制御部と
を備え、
前記第２の不揮発性メモリのデータに適用されるエラー訂正コードを、前記第１の不揮発性メモリ内に保持すると共に、
前記制御部は、前記第２の不揮発性メモリのデータに適用されるエラー訂正コードを前記第１の不揮発性メモリ内から読み出して保持しておくためのバッファ領域を有する
メモリシステム。
【請求項２】
前記制御部は、
前記第２の不揮発性メモリのデータへ前記エラー訂正コードを適用する際に、そのデータに対応するエラー訂正コードが前記バッファ領域内に保持されていない場合には、
その対応するエラー訂正コードを、前記第１の不揮発性メモリから前記バッファ領域へ読み出した後に用いる
請求項１に記載のメモリシステム。
【請求項３】
前記制御部は、
前記対応するエラー訂正コードを前記バッファ領域へ読み出す際に、
前記バッファ領域内に空き領域があるのか否かを判断すると共に、
前記空き領域があると判断した場合には、その空き領域に対して読み出したエラー訂正コードを保持する一方、
前記空き領域がないと判断した場合には、使用頻度が相対的に低いと想定されるエラー訂正コードの保持領域を、前記空き領域に変更して用いる
請求項２に記載のメモリシステム。
【請求項４】
前記制御部は、
前記エラー訂正コードの保持領域を前記空き領域に変更する際に、
そのエラー訂正コードに変更が発生していた場合には、そのエラー訂正コードを前記第１の不揮発性メモリ内に事前に書き込んでおく
請求項３に記載のメモリシステム。
【請求項５】
前記制御部は、
前記第２の不揮発性メモリ内のデータへのアクセス履歴を用いて、前記第２の不揮発性メモリ内において今後アクセスが行われるデータを予想し、
その予想したデータに対応するエラー訂正コードを、前記第１の不揮発性メモリから前記バッファ領域へ予め読み出しておく
請求項２に記載のメモリシステム。
【請求項６】
前記制御部は、
前記第２の不揮発性メモリへのデータの書き込み時に、前記エラー訂正コードを付加して書込みを行うと共に、
前記第２の不揮発性メモリからのデータの読み出し時およびシステムの起動時に、前記エラー訂正コードを用いて、前記第２の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行う
請求項１に記載のメモリシステム。
【請求項７】
前記制御部は、
前記第２の不揮発性メモリに対してデータの書き込みを行う際に、そのデータに対応するエラー訂正コードを、前記バッファ領域上で更新する
請求項６に記載のメモリシステム。
【請求項８】
前記制御部は、
前記第２の不揮発性メモリ内の各データのアドレスと、各データに対応するエラー訂正コードの前記第１の不揮発性メモリ内での保持アドレスとを、対応付けて管理している
請求項１ないし請求項７のいずれか１項に記載のメモリシステム。
【請求項９】
複数のエラー訂正コードの束が、前記第１の不揮発性メモリ内において前記ブロック単位で保持されている
請求項１ないし請求項７のいずれか１項に記載のメモリシステム。
【請求項１０】
前記第１の不揮発性メモリ内に、この第１の不揮発性メモリのデータに適用される第１エラー訂正コードが、前記第２の不揮発性メモリのデータに適用されるエラー訂正コードとしての第２エラー訂正コードとともに保持されている
請求項１ないし請求項７のいずれか１項に記載のメモリシステム。
【請求項１１】
前記第１の不揮発性メモリが、前記ブロックとしてのページ単位でデータのアクセスが行われるフラッシュメモリ、または、前記ブロックとしてのセクタ単位でデータのアクセスが行われるハードディスクである
請求項１ないし請求項７のいずれか１項に記載のメモリシステム。
【請求項１２】
第１の不揮発性メモリに対して、ブロック単位でデータのアクセスを行うと共に、第２の不揮発性メモリに対して、ワード単位のデータのランダムアクセスを行い、
前記第１の不揮発性メモリ内に保持されているエラー訂正コードを用いて、前記第２の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行うと共に、
前記第２の不揮発性メモリのデータに適用されるエラー訂正コードを前記第１の不揮発性メモリ内から読み出して保持しておくためのバッファ領域を設けておく
メモリシステムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを用いたメモリシステム、およびそのようなメモリシステムの動作方法に関する。
【背景技術】
【０００２】
従来、ストレージ（補助記憶装置）として機能するメモリ上に保持されているプログラムやデータ等を、ＤＲＡＭ（Dynamic Random Access Memory）などのワークメモリ（主記憶装置）へ読み出して（ロードして）実行するメモリシステム（ストレージシステム）が用いられている。このようなメモリシステムにおいて、高速動作が要求されるストレージとしては、一般に不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）が使用されている。
【０００３】
この不揮発性メモリは、大容量でありブロック単位でのデータアクセスに対応したフラッシュメモリと、ワード単位での高速なデータアクセス（ランダムアクセス）が可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile Random Access Memory）とに大別される。フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、ＮＶＲＡＭの例としては、ＰＣＲＡＭ（Phase-Change Random Access Memory），ＭＲＡＭ（Magnetoresistive Random Access Memory），ＲｅＲＡＭ（Resistance Random Access Memory）などが挙げられる。
【０００４】
前者のフラッシュメモリは、ビットコストが低くかつ大容量であることから、高速なストレージ用途として採用されている。一方、後者のＮＶＲＡＭは、フラッシュメモリと比べてビットコストは高いものの、以下の利点を有している。すなわち、ワード単位での高速アクセス性能に優れており、また、ＣＰＵ（Central Processing Unit）から直接アクセスすることも可能であることから、ストレージに対する不揮発性キャッシュメモリとして採用することによりメモリシステムの高速化を担うことを期待されている。
【０００５】
このようなフラッシュメモリおよびＮＶＲＡＭを用いたメモリシステム（不揮発性メモリシステム）の例は、例えば特許文献１，２および非特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００４−５０６２５６号公報
【特許文献２】特開２００６−２３６３０４号公報
【非特許文献】
【０００７】
【非特許文献１】Shuhei Tanakamaru、他４名，“Post-manufacturing 17-times Acceptable Raw Bit Error Rate Enhancement，Dynamic Codeword Transition ECC scheme for Highly Reliable Solid-State Drives, SSDs”，Memory Workshop (IMW), 2010 IEEE International, ｐ．１−４
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、このようなメモリシステムでは、各不揮発性メモリにおけるデータ保持特性を向上させ、システムの信頼性を高めることが重要である。これは、不揮発性メモリは一般に、書き換え回数の増加とともにデータの保持特性が劣化する傾向にあるためである。そこで、例えば上記特許文献１では、エラー訂正コード（ＥＣＣ：Error Correcting Code）を用いてデータのビット誤り検出・訂正処理を行うことにより、ＮＡＮＤ型フラッシュメモリにおけるデータ保持特性を向上させている。
【０００９】
一方で、上記したＮＶＲＡＭを例えば不揮発性キャッシュメモリとして使用した場合、ストレージとして機能するＮＡＮＤ型フラッシュメモリ等と比べてアクセス頻度が高くなることから、ＮＶＲＡＭにおいてもデータ保持特性を向上させることが重要である。しかしながら、上記特許文献１等のメモリシステムでは、ＮＶＲＡＭのデータに対する保持特性向上のための手法（例えば、ＥＣＣを用いることなど）については、全く開示されていない。
【００１０】
そこで、フラッシュメモリとＮＶＲＡＭとを用いたメモリシステムにおいて、ＮＶＲＡＭのデータに対してＥＣＣを適用し、データの保持特性を改善する手法が考えられる。しかしながら、単純にＥＣＣを適用しただけでは、ＥＣＣコードへのアクセスが発生する分ＮＶＲＡＭにおけるアクセス速度が低下する（ＮＶＲＡＭの帯域へ悪影響を及ぼす）という副作用が生じてしまい、システム全体としても動作速度が低下してしまうことになる。
【００１１】
本発明はかかる問題点に鑑みてなされたもので、その目的は、動作速度を低下させることなくシステムの信頼性を向上させることが可能なメモリシステムおよびその動作方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明のメモリシステムは、ブロック単位でデータのアクセスが行われる第１の不揮発性メモリと、ワード単位でデータのランダムアクセスが行われる第２の不揮発性メモリと、第１および第２の不揮発性メモリの動作の制御を行う制御部とを備え、第２の不揮発性メモリのデータに適用されるエラー訂正コードを、第１の不揮発性メモリ内に保持するようにしたものである。また、上記制御部は、第２の不揮発性メモリのデータに適用されるエラー訂正コードを第１の不揮発性メモリ内から読み出して保持しておくためのバッファ領域を有している。
【００１３】
本発明のメモリシステムの動作方法は、第１の不揮発性メモリに対してブロック単位でデータのアクセスを行うと共に、第２の不揮発性メモリに対してワード単位でデータのランダムアクセスを行い、第１の不揮発性メモリ内に保持されているエラー訂正コードを用いて、第２の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行うと共に、第２の不揮発性メモリのデータに適用されるエラー訂正コードを第１の不揮発性メモリ内から読み出して保持しておくためのバッファ領域を設けておくようにしたものである。
【００１４】
本発明のメモリシステムおよびその動作方法では、第１の不揮発性メモリに対してブロック単位でデータのアクセスが行われると共に、第２の不揮発性メモリに対してワード単位でのデータのランダムアクセスが行われる。この際、第２の不揮発性メモリのデータに対してエラー訂正コードが適用され、例えばビット誤りの検出および訂正処理がなされることにより、第２の不揮発性メモリにおけるデータ保持特性が改善される。また、このエラー訂正コードは第１の不揮発性メモリ内に保持されていることにより、例えば第２の不揮発性メモリ自身内にエラー訂正コードが保持される場合とは異なり、この第２の不揮発性メモリにおけるアクセス速度の低下が回避される。
【発明の効果】
【００１５】
本発明のメモリシステムおよびその動作方法によれば、ワード単位でのデータのランダムアクセスが行われる第２の不揮発性メモリのデータに適用するエラー訂正コードを、ブロック単位でデータのアクセスが行われる第１の不揮発性メモリ内に保持するようにしたので、第２の不揮発性メモリにおけるアクセス速度の低下を回避しつつ、この第２の不揮発性メモリにおけるデータ保持特性を改善することができる。よって、動作速度を低下させることなく、システムの信頼性を向上させることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施の形態に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【図２】図１に示したＮＡＮＤ型フラッシュメモリのＥＣＣ２ブロックにおける詳細なデータ構成例を表すブロック図である。
【図３】図１に示したＮＶＭコントローラの詳細構成例を表すブロック図である。
【図４】比較例１に係るメモリシステムを備えたデータ記憶システムの構成を表すブロック図である。
【図５】比較例２に係るメモリシステムを備えたデータ記憶システムの構成を表すブロック図である。
【図６】エラー訂正コードＥＣＣ２を用いたＮＶＲＡＭからのデータ読み出し処理の一例を表す流れ図である。
【図７】エラー訂正コードＥＣＣ２を用いたＮＶＲＡＭへのデータ書き込み処理の一例を表す流れ図である。
【図８】エラー訂正コードＥＣＣ２を用いたシステム起動処理の一例を表す流れ図である。
【図９】変形例１に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【図１０】変形例２に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、説明は以下の順序で行う。
１．実施の形態（第１の不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを用いた例）
２．変形例
変形例１（ＮＡＮＤ型フラッシュメモリにＥＣＣ処理部を内蔵した例）
変形例２（第１の不揮発性メモリとしてＭＦＤを用いた例）
その他の変形例
【００１８】
＜実施の形態＞
［データ記憶システム１の構成］
図１は、本発明の一実施の形態に係るメモリシステム（不揮発性メモリシステム２）を備えたデータ記憶システム（データ記憶システム１）のブロック構成を表すものである。このデータ記憶システム１は、ＣＰＵ１０、ＤＲＡＭ１１およびＤＲＡＭコントローラ１２と、本実施の形態の不揮発性メモリシステム２とを備えている。
【００１９】
ＣＰＵ１０は、ＤＲＡＭ１１、ＤＲＡＭコントローラ１２および不揮発性メモリシステム２の動作をそれぞれ制御するものである。具体的には、後述するＮＶＭコントローラ２３を介してＮＶＲＡＭ２２およびＮＡＮＤ型フラッシュメモリ２１に保持（記憶）されている各データに対してアクセスを行い、例えばワークメモリ（主メモリ）として機能するＤＲＡＭ１１へデータをロードしたり、逆にＤＲＡＭ１１上のデータを書き込んだりする機能を有している。
【００２０】
ＤＲＡＭ１１は、上記したように、データ記憶システム１におけるワークメモリとして機能する揮発性のメモリである。ＤＲＡＭコントローラ１２は、ＣＰＵ１０から指示に従って、ＤＲＡＭ１１の動作（例えば、データの書き込み動作や読み出し動作など）を制御するものである。
【００２１】
［不揮発性メモリシステム２の構成］
不揮発性メモリシステム２は、不揮発性メモリ（ＮＶＭ）であるＮＡＮＤ型フラッシュメモリ２１（第１の不揮発性メモリ）およびＮＶＲＡＭ２２（第２の不揮発性メモリ）と、ＮＶＭコントローラ２３（制御部）とを備えている。ここでは、これらの不揮発性メモリのうち、ＮＡＮＤ型フラッシュメモリ２１がストレージとして機能すると共に、ＮＶＲＡＭ２２が、ワークメモリや不揮発性のキャッシュメモリとして機能するようになっている。これにより、この不揮発性メモリシステム２は、ＮＡＮＤ型フラッシュメモリ２１との組み合わせでＳｎＤ（Store and Download）モデルに対応すると共に、ＮＶＲＡＭ２２との組み合わせでＸＩＰ（eXecute In Plane）モデルにも対応することが可能となっている。
【００２２】
（ＮＡＮＤ型フラッシュメモリ２１）
ＮＡＮＤ型フラッシュメモリ２１は、ブロック単位（ここでは、後述するページ２１１Ｐ，２１２Ｐ単位）でデータのアクセスが行われる不揮発性メモリ（フラッシュメモリ）である。このＮＡＮＤ型フラッシュメモリ２１は、データブロック２１１およびＥＣＣ２ブロック２１２を有している。
【００２３】
データブロック２１１は、ページ２１１Ｐ単位でデータ２１Ｄが保持（記憶）されているブロック（データ領域）である。具体的には、各ページ２１１Ｐでは、データ２１Ｄがそれを保護するエラー訂正コードＥＣＣ１（第１エラー訂正コード）とともに保持されている。すなわち、このエラー訂正コードＥＣＣ１は、後述するように、ＮＡＮＤ型フラッシュメモリ２１のデータ２１Ｄに対して適用されるものであり、これによりＮＡＮＤ型フラッシュメモリ２１におけるデータの保持特性が向上するようになっている。
【００２４】
ＥＣＣ２ブロック２１２は、ＮＶＲＡＭ２２を保護するエラー訂正コードＥＣＣ２（第２エラー訂正コード）がページ２１２Ｐ単位で保持（記憶）されているブロック（データ領域）である。すなわち、本実施の形態では、ＮＶＲＡＭ２２に適用されるエラー訂正コードＥＣＣ２もが、ＮＡＮＤ型フラッシュメモリ２１内に保持されている。具体的には、各ページ２１２Ｐでは、このエラー訂正コードＥＣＣ２が、上記したエラー訂正コードＥＣＣ１とともに保持されている。詳細には、例えば図２に示したように、複数のエラー訂正コードＥＣＣ２の束（ここでは、ｎ（２以上の整数）個のエラー訂正コードＥＣＣ２（０）〜ＥＣＣ（ｎ）が纏められた束）が、各ページ２１２Ｐ単位でエラー訂正コードＥＣＣ１とともに保持されている。換言すると、各ページ２１２Ｐでは、データ領域にエラー訂正コードＥＣＣ２が保持されると共に、冗長領域にはページ２１１Ｐと同様に、エラー訂正コードＥＣＣ１が保持されている。
【００２５】
なお、一例としてＮＶＲＡＭ２２に対するアクセスが３２ビットアクセスである場合、このＮＶＲＡＭ２２のデータの保護に必要なエラー訂正コードＥＣＣ２（例えばハミング符号）は、６ビットとなる。また、ＮＡＮＤ型フラッシュメモリ２１におけるページ２１１Ｐ，２１２Ｐのサイズ（データ領域）を、一般的な値である約３２Ｋビット（約４Ｋバイト）とすると、上記の場合、ＮＶＲＡＭ２２における約５Ｋワード分のデータに対応するエラー訂正コードＥＣＣ２が、ページ２１２Ｐ内に保持されることになる。また、この場合、ＮＶＭコントローラ２３は後述するように、１回のアクセスで５Ｋワード分のエラー訂正コードＥＣＣ２をＥＣＣバッファ２３０へ読み出すことができる。このため、ＮＡＮＤ型フラッシュメモリ２１における１ページの読出しに必要となる時間は、ＯＮＦＩ２．１ ｍｏｄｅ５（２００ＭＢ／秒）に対応したＭＬＣ ＮＡＮＤ型フラッシュメモリを使用した場合で約８０μｓとなり、１つのエラー訂正コードＥＣＣ２当たりでは１６ｎｓとなる。すると、ＮＶＲＡＭ２２において連続したアドレスに対するアクセスが発生した場合であっても、ＮＶＲＡＭ２２のアクセス時間がこの１６ｎｓよりも長ければ、アクセスの継続中において、ＥＣＣバッファ２３０に対して次のページに対応するエラー訂正コードＥＣＣ２の読み出しを行うことが可能となる。なお、ＮＶＲＡＭ２２において不連続のアドレスに対するアクセスが発生した場合には、後述する先読み機能を利用することで、ＥＣＣバッファ２３０へのエラー訂正コードＥＣＣ２の読み出し時間を短縮することができる。なお、上記した１６ｎｓ程度のアクセス時間は、ＮＶＲＡＭ２２へのアクセス時間としては、一般に十分に高速な値であると言える。
【００２６】
（ＮＶＲＡＭ２２）
ＮＶＲＡＭ２２は、ワード単位でのデータ（データ２２Ｄ）のランダムアクセスが行われる不揮発性メモリであり、上記したＮＡＮＤ型フラッシュメモリ２１とは異なり、データ２２Ｄのみが保持されている。すなわち、このＮＶＲＡＭ２２内には、エラー訂正コードは保持されていない。このようなＮＶＲＡＭ２２は、例えば、ＰＣＲＡＭ，ＭＲＡＭ，ＲｅＲＡＭなどからなる。
【００２７】
（ＮＶＭコントローラ２３）
ＮＶＭコントローラ２３は、ＣＰＵ１０から指示に従って、ＮＡＮＤ型フラッシュメモリ２１およびＮＶＲＡＭ２２の動作（データの書き込み動作や読み出し動作など）をそれぞれ制御するものであり、後述するＥＣＣバッファ２３０を含んで構成されている。本実施の形態では、このＮＶＭコントローラ２３は、ＮＡＮＤ型フラッシュメモリ２１内に保持されているエラー訂正コードＥＣＣ１，ＥＣＣ２を用いて、所定のビット誤りの検出および訂正処理（ビット誤り検出・訂正処理）を行う機能を有している。具体的には、ＮＡＮＤ型フラッシュメモリ２１へのデータ２１Ｄの書き込み時に、エラー訂正コードＥＣＣ１を付加して書込みを行い、ＮＡＮＤ型フラッシュメモリ２１からのデータ２１Ｄの読み出し時またはシステムの起動時に、エラー訂正コードＥＣＣ１を用いてこのデータ２１Ｄに対するビット誤り検出・訂正処理を行う。また、エラー訂正コードＥＣＣ２を用いて、ＮＶＲＡＭ２２へのデータ２２Ｄの書き込み時に、このデータ２２Ｄに対するエラー訂正コード生成処理を行い、ＮＶＲＡＭ２２からのデータ２２Ｄの読み出し時またはシステムの起動時に、このデータ２２Ｄに対するビット誤り検出・訂正処理を行う。また、ＮＶＭコントローラ２３は、データ２２Ｄのアクセス単位であるワード単位でエラー訂正コードＥＣＣ２を計算するのと並行して、データ２１Ｄのアクセス単位であるページ２１１Ｐ単位でエラー訂正コードＥＣＣ１を計算するようになっている。なお、これらのエラー訂正コードＥＣＣ１，ＥＣＣ２を用いたビット誤り検出・訂正処理の詳細については、後述する（図６〜図８）。
【００２８】
このＮＶＭコントローラ２３はまた、上記したＮＡＮＤ型フラッシュメモリ２１内のＥＣＣ２ブロック２１２を読み出して（ロードして）一時的に保持しておくためのバッファ領域である、ＥＣＣバッファ２３０を有している。そして、詳細は後述するが、ＮＶＭコントローラ２３は、このＥＣＣバッファ２３０内に読み込まれたエラー訂正コードＥＣＣ２を利用して、ビット誤り検出・訂正処理を行うようになっている。これにより、ビット誤り検出・訂正処理を高速に実行することが可能となる。また、前述した複数のエラー訂正コードＥＣＣ２の束を読み出し単位として、ＮＡＮＤ型フラッシュメモリ２１からＥＣＣバッファ２３０へのエラー訂正コードＥＣＣ２の読み出しを行う場合には、ＮＶＲＡＭ２２上の連続したアドレスに対応させることにより、ＮＶＲＡＭ２２上の連続したアドレスへのアクセス時に高速な処理が可能となる。このようにＮＶＭコントローラ２３は、ＥＣＣバッファ２３０を利用して、エラー訂正コードＥＣＣ１，ＥＣＣ２のキャッシング機能を実現している。
【００２９】
ＮＶＭコントローラ２３は更に、ＮＶＲＡＭ２２内の各データ２２Ｄのアドレスと、各データ２２Ｄに対応するエラー訂正コードＥＣＣ２のＮＡＮＤ型フラッシュメモリ２１内での保持アドレスとを、対応付けて管理する機能（ＥＣＣページ管理機能）を有している。なお、このようなＥＣＣページ管理機能を利用したビット誤り検出・訂正処理の詳細についても、後述する（図６〜図８）。
【００３０】
ここで、図３は、ＮＶＭコントローラ２３のブロック構成を表したものである。このＮＶＭコントローラ２３は、上記したＥＣＣバッファ２３０に加え、ＥＣＣ１処理部２３１、ＥＣＣ２処理部２３２、ＣＰＵ−Ｉ／Ｆ部２３３、フラッシュメモリ−Ｉ／Ｆ部２３４、ＮＶＲＡＭ−Ｉ／Ｆ部２３５、ＥＣＣバッファ制御部２３６、フラッシュメモリ制御部２３７およびＮＶＲＡＭ制御部２３８を有している。
【００３１】
ＥＣＣ１処理部２３１は、エラー訂正コードＥＣＣ１を用いて、ＮＡＮＤ型フラッシュメモリ２１のデータ２１Ｄに対するビット誤り検出・訂正処理を行うものである。なお、ＥＣＣ２ブロック２１２のデータ２１Ｄに対するビット誤り検出・訂正処理を行った結果は、ＥＣＣバッファ２３０上に一時的に保持されるようになっている。また、それ以外のデータブロック２１１のデータ２１Ｄは、ＮＶＭコントローラ２３からＣＰＵ−Ｉ／Ｆ部２３３を介して出力される。
【００３２】
ＥＣＣ２処理部２３２は、上記のようにしてＥＣＣバッファ２３０上に一時的に保持されたエラー訂正コードＥＣＣ２を用いて、ＮＶＲＡＭ２２のデータ２２Ｄに対するビット誤り検出・訂正処理を行うものである。なお、この際のエラー訂正コードＥＣＣ２を用いたビット誤り検出・訂正処理は、例えば一般的に利用されているハミング符号方式を用いて行われる。
【００３３】
ＣＰＵ−Ｉ／Ｆ部２３３は、ＮＶＭコントローラ２３とＣＰＵ１０との間の接続を行うためのインターフェース（Ｉ／Ｆ）部分である。フラッシュメモリ−Ｉ／Ｆ部２３４は、ＮＶＭコントローラ２３とＮＡＮＤ型フラッシュメモリ２１との間の接続を行うためのインターフェース部分である。ＮＶＲＡＭ−Ｉ／Ｆ部２３５は、ＮＶＭコントローラ２３とＮＶＲＡＭ２２との間の接続を行うためのインターフェース部分である。このように、ＮＶＭコントローラ２３は、ワード単位でランダムアクセスを行うワークメモリ（ここではＮＶＲＡＭ２２）用のＩ／Ｆと、ブロック（ページ）単位でアクセスを行うストレージ（ここではＮＡＮＤ型フラッシュメモリ２１）用のＩ／Ｆとの双方を有している。
【００３４】
ＥＣＣバッファ制御部２３６は、ＥＣＣバッファ２３０の動作を制御するものである。フラッシュ制御部２３７は、ＥＣＣ１処理部２３１およびフラッシュメモリ−Ｉ／Ｆ部２３４の動作をそれぞれ制御するものである。ＮＶＲＡＭ制御部２３８は、ＥＣＣ２処理部２３２およびＮＶＲＡＭ−Ｉ／Ｆ部２３５の動作をそれぞれ制御するものである。
【００３５】
［データ記憶システム１の作用・効果］
（１．基本動作）
このデータ記憶システム１では、ＣＰＵ１０からの指示に応じたＤＲＡＭコントローラ１２およびＮＶＭコントローラ２３の制御により、ＤＲＡＭ１１およびＮＶＲＡＭ２２がワークメモリとして機能すると共に、ＮＡＮＤ型フラッシュメモリ２１がストレージとして機能する。これにより、ＣＰＵ１０からの指示に従って、所定のプログラムの実行やデータ処理が行われる。この際、不揮発性メモリシステム２では、ＮＡＮＤ型フラッシュメモリ２１に対してブロック（ページ）単位でデータ２１Ｄのアクセスが行われる一方、ＮＶＲＡＭ２２に対してワード単位でのデータ２２Ｄのランダムアクセスが行われる。
【００３６】
また、このときＮＶＭコントローラ２３は、ＮＡＮＤ型フラッシュメモリ２１内に保持されているエラー訂正コードＥＣＣ１を用いて、このＮＡＮＤ型フラッシュメモリ２１のデータ２１Ｄに対するビット誤り検出・訂正処理を行う。具体的には、ＮＶＭコントローラ２３は、ＮＡＮＤ型フラッシュメモリ２１へのデータ２１Ｄの書き込み時に生成したエラー訂正コードＥＣＣ１を使用して、ＮＡＮＤ型フラッシュメモリ２１からのデータ２１Ｄの読み出し時またはシステム（不揮発性メモリシステム２）の起動時に、そのようなビット誤り検出・訂正処理を行う。なお、この際のエラー訂正コードＥＣＣ１を用いたビット誤り検出・訂正処理は、例えば一般的に利用されているＢＣＨ符号方式を用いて行われる。これにより、ＮＡＮＤ型フラッシュメモリ２１におけるデータ２１Ｄの保持特性が向上し、不揮発性メモリシステム２の信頼性の向上が図られている。
【００３７】
（２．エラー訂正コードＥＣＣ２を用いたビット誤り検出・訂正処理）
次に、図４〜図８を参照して、本発明の特徴的部分の１つである、エラー訂正コードＥＣＣ２を用いたビット誤り検出・訂正処理等について、比較例（比較例１，２）と比較しつつ詳細に説明する。
【００３８】
（２−１．比較例１）
図４は、比較例１に係るメモリシステム（不揮発性メモリシステム１０２）を備えたデータ記憶システム（データ記憶システム１０１）のブロック構成を表したものである。この比較例１のデータ記憶システム１０１は、ＣＰＵ１０、ＤＲＡＭ１１、ＤＲＡＭコントローラ１２および不揮発性メモリシステム１０２を備えている。すなわち、本実施の形態のデータ記憶システム１において、本実施の形態の不揮発性メモリシステム２の代わりに、比較例１の不揮発性メモリシステム１０２を設けたものであり、他の構成は同様となっている。
【００３９】
不揮発性メモリシステム１０２は、本実施の形態の不揮発性メモリシステム２とは異なり、ＮＡＮＤ型フラッシュメモリ１０２−１上にエラー訂正コードＥＣＣ２を保存しないためにＥＣＣ２ブロック２１２を備えておらず、他の構成は同様となっている。
【００４０】
すなわち、この不揮発性メモリシステム１０２では、本実施の形態と同様にエラー訂正コードＥＣＣ１を用いてＮＡＮＤ型フラッシュメモリ１０２−１自身のデータ保持特性の改善を図っているものの、本実施の形態とは異なり、ＮＶＲＡＭ２２用のエラー訂正コードＥＣＣ２が設けられていない。
【００４１】
したがって、この比較例１では、エラー訂正コードＥＣＣ２を用いたＮＶＲＡＭ２２のデータ２２Ｄに対するビット誤り検出・訂正処理が行われないことになるため、ＮＶＲＡＭ２２に対する書き換え回数が増大して保持特性が劣化した場合、データエラーが発生する可能性がある。特に、ＮＶＲＡＭ２２を不揮発性のキャッシュメモリとして使用した場合、ストレージとして機能するＮＡＮＤ型フラッシュメモリ１０２−１と比べてアクセス頻度が高くなる。このため、ＮＶＲＡＭ２２は、ＮＡＮＤ型フラッシュメモリ１０２−１以上に高いデータ保持特性が必要となる。しかしながら、この比較例１では、上記したように、ＮＶＲＡＭ２２におけるデータエラーの発生を防ぐことができないため、不揮発性メモリシステム１０２全体としての信頼性も低下してしまうことになる。
【００４２】
（２−２．比較例２）
次いで、図５は、比較例２に係るメモリシステム（不揮発性メモリシステム２０２）を備えたデータ記憶システム（データ記憶システム２０１）のブロック構成を表したものである。この比較例２のデータ記憶システム２０１は、ＣＰＵ１０、ＤＲＡＭ１１、ＤＲＡＭコントローラ１２および不揮発性メモリシステム２０２を備えている。すなわち、本実施の形態のデータ記憶システム１において、本実施の形態の不揮発性メモリシステム２の代わりに、比較例２の不揮発性メモリシステム２０２を設けたものであり、他の構成は同様となっている。
【００４３】
不揮発性メモリシステム２０２は、本実施の形態の不揮発性メモリシステム２とは異なり、ＮＡＮＤ型フラッシュメモリ１０２−１上にエラー訂正コードＥＣＣ２を保存しないためにＥＣＣ２ブロック２１２を備えていない。その代わりに、この不揮発性メモリシステム２０２では、ＮＶＲＡＭ２０２−２上にエラー訂正コードＥＣＣ２を保存する領域が設けられており、他の構成は同様となっている。
【００４４】
すなわち、この比較例２では、エラー訂正コードＥＣＣ２を用いて、ＮＶＲＡＭ２０２−２のデータ２２Ｄに対するビット誤り検出・訂正処理が行われることになる。これにより、上記比較例１と比べ、ＮＶＲＡＭ２０２−２におけるデータ２２Ｄの保持特性の改善が図られ、不揮発性メモリシステム２０２全体としての信頼性も向上する。
【００４５】
ところが、この比較例２の不揮発性メモリシステム２０２では、ＮＶＲＡＭ２０２−２用のエラー訂正コードＥＣＣ２がＮＶＲＡＭ２０２−２自身の内部に保持されていることに起因して、以下のような問題が生じてしまう。
【００４６】
（アクセス速度の低下の問題）
まず、１つ目の問題として、ＮＶＲＡＭ２０２−２におけるアクセス速度が低下する（ＮＶＲＡＭ２０２−２の帯域へ悪影響を及ぼす）という副作用が生じてしまい、不揮発性メモリシステム２０２全体としても動作速度が低下してしまうというものが挙げられる。ここで、比較例２のようにＮＶＲＡＭ２０２−２内にエラー訂正コードＥＣＣ２が保持されている場合における、ＮＶＲＡＭ２０２へのアクセス手法としては、以下の２つの手法が考えられる。
【００４７】
第１の手法は、図５に示したように、ＮＶＲＡＭ２０２−２上においてデータ２２Ｄのアドレスとは異なるアドレスに、エラー訂正コードＥＣＣ２を保持するというものである。この手法では、ＮＶＲＡＭ２０２−２に対する１回のアクセスに対して、実施には最低２回（データ２２Ｄへのアクセスと、エラー訂正コードＥＣＣ２へのアクセスとの２回）のアクセスが必要となる。このため、この第１の手法では、ＮＶＲＡＭ２０２−２における高速なアクセス速度が、１／２に低下してしまうことになる。
【００４８】
第２の手法は、ＮＶＲＡＭ２０２−２上においてデータ２２Ｄの一部のビットに、エラー訂正コードＥＣＣ２を割り当てて保持するというものである。この手法では、ＮＶＲＡＭ２０２−２に対する１回のアクセスによって、データ２２Ｄとエラー訂正コードＥＣＣ２との双方にアクセスすることができるため、上記した第１の手法と比べ、ＮＶＲＡＭ２０２−２におけるアクセス速度低下の影響は小さくなる傾向にある。ただし、１回のアクセスにおいて使用されるデータ２２Ｄのビットサイズが、エラー訂正コードＥＣＣ２へ割り当てた分だけ小さくなることから、この第２の手法においても、ＮＶＲＡＭ２０２−２における高速なアクセス速度が低下してしまうことになる。なお、仮に、データ２２Ｄにおける１６ビット中の８ビット分をエラー訂正コードＥＣＣ２に割り当てた場合には、結局のところ、上記した第１の手法と同様に、アクセス速度が、１／２に低下してしまう。
【００４９】
このように、上記した２つの手法のいずれにおいても、比較例２ではＮＶＲＡＭ２０２−２におけるアクセス速度が低下してしまい、不揮発性メモリシステム２０２全体としても動作速度が低下してしまうことになる。
【００５０】
（コスト増加の問題）
また、特に２つの不揮発性メモリとして、ＮＡＮＤ型フラッシュメモリ１０２−１とＮＶＲＡＭ２０２−２とを用いた場合、比較例２の不揮発性メモリシステム２０２では、以下のようなコスト増加の問題も生じる。すなわち、一般に、ＮＶＲＡＭはＮＡＮＤ型フラッシュメモリと比べてビット単価が高いことから、比較例２のように、ＮＶＲＡＭ２０２−２用のエラー訂正コードＥＣＣ２をＮＶＲＡＭ２０２−２自身の内部に保持した場合、ＮＶＲＡＭ２０２−２の実質のデータ容量が減少する。したがって、不揮発性メモリ２０２全体として、不揮発性メモリのコストが増大してしまうことになる。
【００５１】
（２−３．本実施の形態）
これに対して、本実施の形態の不揮発性メモリシステム２では、図１〜図３に示したように、ＮＶＲＡＭ２２のデータ２２Ｄに対してエラー訂正コードＥＣＣ２が適用され、以下詳述するようにしてデータ２２Ｄに対するビット誤り検出・訂正処理が行われる。これにより、上記比較例１の不揮発性メモリシステム１０２と比べ、ＮＶＲＡＭ２２におけるデータ保持特性が改善される。
【００５２】
また、本実施の形態では、図１および図２に示したように、このエラー訂正コードＥＣＣ２がＮＡＮＤ型フラッシュメモリ２１内に保持されている。これにより、エラー訂正コードＥＣＣ２がＮＶＲＡＭ２０２−２内に保存されている上記比較例２とは異なり、ＮＶＲＡＭ２２における上述したようなアクセス速度の低下の問題が回避される。具体的には、ＮＶＲＡＭ２２上にはデータ２２Ｄのみが保持されるため、ＮＶＲＡＭ２２における容量の使用効率が維持される。また、ＮＶＲＡＭ−Ｉ／Ｆ部２３５の帯域は、全てデータ転送に使用されることになるため、エラー訂正コードＥＣＣ２を用いることによる帯域の減少も発生せず、ＮＶＲＡＭ２２におけるパフォーマンスへの影響も最小限に抑えられる。また、前述したように、複数のエラー訂正コードＥＣＣ２の束を読み出し単位として、ＮＡＮＤ型フラッシュメモリ２１からＥＣＣバッファ２３０へのエラー訂正コードＥＣＣ２の読み出しを行う場合には、以下の利点も得られる。すなわち、ＮＶＲＡＭ２２上の連続したアドレスに対応させることにより、ＮＶＲＡＭ２２上の連続したアドレスへのアクセス時に高速なビット誤り検出・訂正処理を行うことが可能となる。なお、後述するように、ＥＣＣバッファ２３０上に必要とされるエラー訂正コードＥＣＣ２が存在しなかった場合には、再度ＮＡＮＤ型フラッシュメモリ２１へのアクセスが発生することから、一時的にはパフォーマンスが低下することになる。ただし、ＥＣＣバッファ２３０上に一度読み出されたエラー訂正コードＥＣＣ２のうち、アクセス頻度の高いものが優先してＥＣＣバッファ２３０に保持されることから、全体としてはＮＶＲＡＭ２２における高速なデータアクセス性能は維持されると言える。
【００５３】
加えて、本実施の形態では、上記したように、ビット単価が相対的に低いＮＡＮＤ型フラッシュメモリ２１側にエラー訂正コードＥＣＣ２が保持されていることから、上記比較例２とは異なり、上述したコスト増加の問題も回避される（不揮発性メモリのコストが抑えられる）。
【００５４】
ここで、以下図６〜図８を参照して、このようなエラー訂正コードＥＣＣ２を用いたＮＶＲＡＭ２２のデータ２２Ｄに対するビット誤り検出・訂正処理について、詳細に説明する。換言すると、ＮＶＭコントローラ２３は以下のようにして、ＮＶＲＡＭ２２へのデータ２２Ｄの書き込み時にエラー訂正コードＥＣＣ２を書き込むと共に、ＮＶＲＡＭ２２からのデータ２２Ｄの読み出し時またはシステムの起動時に、エラー訂正コードＥＣＣ２を用いてこのデータ２２Ｄに対するビット誤り検出・訂正処理を行う。
【００５５】
（ＮＶＲＡＭ２２からのデータ読み出し処理）
図６は、エラー訂正コードＥＣＣ２を用いた、ＮＶＲＡＭ２２からＣＰＵ１０へのデータ読み出し処理の一例を流れ図で表したものである。
【００５６】
このデータ読み出し処理では、ＮＶＭコントローラ２３は、ＥＣＣバッファ２３０上に、ＮＶＲＡＭ２２から読み出すデータ２２Ｄに対応する（必要とされる）エラー訂正コードＥＣＣ２が存在する（保持されている）のか否かを判断する（ステップＳ１０２）。ここで、対応するエラー訂正コードＥＣＣ２がＥＣＣバッファ２３０上に存在する場合（ステップＳ１０２：Ｙ）には、ＮＶＭコントローラ２３は以下の処理を行う。すなわち、ＮＶＲＡＭ２２から該当する（読み出し対象とされている）データ２２Ｄを読み出す（ステップＳ１０１）のと並行して、このＥＣＣバッファ２３０から対応するエラー訂正コードＥＣＣ２を読み出す（ステップＳ１０３）。
【００５７】
一方、対応するエラー訂正コードＥＣＣ２がＥＣＣバッファ２３０上に存在しない場合（ステップＳ１０２：Ｎ）には、次にＮＶＭコントローラ２３は、このＥＣＣバッファ２３０内に空き領域（エラー訂正コードＥＣＣ２が保持されていない領域）がある（存在する）のか否かを判断する（ステップＳ１０４）。そして、ＥＣＣバッファ２３０内に空き領域があると判断した場合（ステップＳ１０４：Ｙ）には、次にＮＶＭコントローラ２３は、前述したＥＣＣページ管理機能を利用して、対応するエラー訂正コードＥＣＣ２を含むＥＣＣ２ブロック２１２のＮＡＮＤ型フラッシュメモリ２１上でのアドレスを取得する（ステップＳ１０５）。続いて、ＮＶＭコントローラ２３は、ＮＡＮＤ型フラッシュメモリ２１からＥＣＣバッファ２３０内の上記した空き領域に対して、この対応するエラー訂正コードＥＣＣ２を含むＥＣＣ２ブロック２１２のページを読み出して保持させ（ステップＳ１０６）、前述したステップＳ１０３へと進む。このようにして、ＮＶＭコントローラ２３は、対応するエラー訂正コードＥＣＣ２をＮＡＮＤ型フラッシュメモリ２１から読出した後にＮＶＲＡＭ２２へのアクセスを行うため、その間の時間は、ＣＰＵ１０に対してＮＶＲＡＭ２２へのアクセスを延長（一時停止）する必要がある。
【００５８】
ここで、ＥＣＣバッファ２３０内に空き領域がないと判断した場合（ステップＳ１０４：Ｎ）には、次にＮＶＭコントローラ２３は、ＥＣＣバッファ２３０上の空き候補領域を選択する（ステップＳ１０７）。具体的には、ＥＣＣバッファ２３０上において、使用頻度（アクセス頻度）が相対的に低い（望ましくは最も低い）と想定されるエラー訂正コードＥＣＣ２の保持領域を空き候補領域として選択し、空き領域に変更して用いる（バッファ領域の再利用をする）ようにする。
【００５９】
次いで、ＮＶＭコントローラ２３は、上記のようにしてエラー訂正コードＥＣＣ２の保持領域（空き候補領域）を空き領域に変更する際に、ＮＶＭコントローラ２３は、まず、ＮＡＮＤ型フラッシュメモリ２１内の該当するエラー訂正コードＥＣＣ２が変更済みであるのか否かを判断する（ステップＳ１０８）。ここで、該当するエラー訂正コードＥＣＣ２が既に変更済みではないと判断した場合（ステップＳ１０８：Ｎ）には、次に前述したステップＳ１０５へと進む。一方、そのエラー訂正コードＥＣＣ２が変更済みである場合には、ＮＡＮＤ型フラッシュメモリ２１内にそのエラー訂正コードＥＣＣ２を含むＥＣＣ２ブロック２１２のページにデータ２２Ｄを書き込む。具体的には、該当するエラー訂正コードＥＣＣ２が変更済みであると判断した場合（ステップＳ１０８：Ｙ）には、次にＮＶＭコントローラ２３は、前述したＥＣＣページ管理機能を利用して、エラー訂正コードＥＣＣ２の書き込み対象となるＥＣＣ２ブロック２１２のＮＡＮＤ型フラッシュメモリ２１上でのアドレスを取得する（ステップＳ１０９）。そして、ＮＶＭコントローラ２３は、ＥＣＣバッファ２３０からＥＣＣ２ブロック２１２のページに対して、該当するエラー訂正コードＥＣＣ２を書き込み（ステップＳ１１０）、前述したステップＳ１０５へと進む。
【００６０】
ここで、前述したステップＳ１０３の後には、ＮＶＭコントローラ２３は、エラー訂正コードＥＣＣ２を用いて、ＮＶＲＡＭ２２において読み出し対象となっているデータ２２Ｄに対するビット誤り検出・訂正処理を行う（ステップＳ１１１）。この際、エラー訂正コードＥＣＣ２を用いたビット誤り検出・訂正処理は、例えば、一般的に利用されているハミング符号方式を用いて行う。なお、訂正を行うのが不可能なビット誤りが検出された場合には、ＮＶＭコントローラ２３は、例えばその旨をＣＰＵ１０へ通知するようにする。そして、ＮＶＭコントローラ２３は、このようなビット誤り検出・訂正処理後の該当するデータ２２Ｄを、ＣＰＵ１０へ出力する（ステップＳ１１２）。以上により、図６に示したＮＶＲＡＭ２２からＣＰＵ１０へのデータ読み出し処理が終了となる。
【００６１】
なお、このようなデータ読み出し処理（ならびに、以下のデータ書き込み処理およびシステム起動処理）の際には、ＮＶＭコントローラ２３は、以下のようなエラー訂正コードＥＣＣ２の先読み機能を利用するのが望ましい。このエラー訂正コードＥＣＣ２の先読み機能を利用した場合、まず、ＮＶＭコントローラ２３は、ＮＶＲＡＭ２２内のデータ２２Ｄへの過去のアクセス履歴を用いて、このＮＶＲＡＭ２２内において今後アクセスが行われるデータ２２Ｄを予想する。そして、その予想したデータ２２Ｄに対応するエラー訂正コードＥＣＣ２を、ＮＶＲＡＭ２２からＥＣＣバッファ２３０へ予め読み出しておく。このようなエラー訂正コードＥＣＣ２の先読み機能を利用した場合、ＮＶＲＡＭ２２におけるアクセスの高速性能の維持が容易となる。
【００６２】
（ＮＶＲＡＭ２２へのデータ書き込み処理）
図７は、エラー訂正コードＥＣＣ２を用いた、ＣＰＵ１０からＮＶＲＡＭ２２へのデータ書き込み処理の一例を流れ図で表したものである。
【００６３】
このデータ書き込み処理では、まずＮＶＭコントローラ２３は、ＣＰＵ１０から該当する（書き込み対象となる）データ２２Ｄを取得する（ステップＳ２０１）。次いで、ＮＶＭコントローラ２３は、前述した読み出し処理の際におけるステップＳ１０２，Ｓ１０４〜Ｓ１１０と同様の処理を行い（ステップＳ２０３〜Ｓ２１０）、次に以下のステップＳ２０２へと進む。
【００６４】
次いで、ＮＶＭコントローラ２３は、例えば一般的に利用されているハミング符号方式を用いて、取得したデータ２２Ｄに対応するエラー訂正コードＥＣＣ２を、演算（計算）することにより生成する（ステップＳ２０２）。次いでステップＳ２１１では、ＮＶＭコントローラ２３は、計算して得られたエラー訂正コードＥＣＣ２を、ＥＣＣバッファ２３０へ書き込む（更新する）。このとき、ＥＣＣバッファ２３０上でエラー訂正コードＥＣＣ２を含んだページは、更新済み状態として登録される。また、それと共に、ＮＶＭコントローラ２３は、該当するデータ２２ＤをＮＶＲＡＭ２２へと書き込む（ステップＳ２１２）。以上により、図７に示したＣＰＵ１０からＮＶＲＡＭ２２へのデータ書き込み処理が終了となる。
【００６５】
（システム起動処理）
図８は、エラー訂正コードＥＣＣ２を用いた、不揮発性メモリシステム２の起動処理（システム起動処理）の一例を流れ図で表したものである。
【００６６】
このシステム起動処理では、まず、ＮＶＭコントローラ２３は、ＮＶＲＡＭ２２における先頭アドレスを設定する（ステップＳ３０１）。次いで、ＮＶＭコントローラ２３は、前述した読み出し処理の際におけるステップＳ１０１〜Ｓ１０４，Ｓ１０７，Ｓ１０５，Ｓ１０６，Ｓ１１１と同様の処理を行い（ステップＳ３０２〜Ｓ３０９）、次に以下のステップＳ３１０へと進む。
【００６７】
このステップＳ３１０では、ステップＳ３０９において実行したビット誤り検出・訂正処理において、訂正を行うのが不可能なビット誤りが検出されたのか否かを判断する。そして、訂正を行うのが不可能なビット誤りが検出された場合（ステップＳ３１０：Ｙ）には、次にＮＶＭコントローラ２３はその旨をＣＰＵ１０へ通知することにより（ステップＳ３１１）、図８に示したシステム起動処理が終了となる。
【００６８】
一方、訂正を行うのが不可能なビット誤りが検出されなかった場合（ステップＳ３１０：Ｎ）には、次にＮＶＭコントローラ２３は、ＮＶＲＡＭ２２における最終アドレスが対象となっているのか否かを判断する（ステップＳ３１２）。ここで、最終アドレスが対象となっていない場合（ステップＳ３１２：Ｎ）には、ＮＶＭコントローラ２３は、ＮＶＲＡＭ２２における対象アドレスに対して「１」を加算し（ステップＳ３１３）、前述したステップＳ３０３へと戻る。一方、最終アドレスが対象となっている場合（ステップＳ３１２：Ｙ）には、図８に示したシステム起動処理が終了となる。
【００６９】
このように、不揮発性メモリシステム２が（電源の投入がなされて）起動したときに、ＮＶＲＡＭ２２上の全てのデータ２２Ｄに対してエラー訂正コードＥＣＣ２を用いたビット誤り検出・訂正処理を行うことにより、以下の効果が得られる。すなわち、不揮発性のキャッシュメモリとして用いられるＮＶＲＡＭ２２上に、データのビット誤りが存在しないことが確認された後に不揮発性メモリシステム２が動作開始となるため、システムの信頼性を向上させることが可能となる。
【００７０】
以上のように本実施の形態では、ワード単位でのデータのランダムアクセスが行われるＮＶＲＡＭ２２のデータ２２Ｄに適用するエラー訂正コードＥＣＣ２を、ブロック（ページ）単位でデータのアクセスが行われるＮＡＮＤ型フラッシュメモリ２１内に保持するようにしたので、ＮＶＲＡＭ２２におけるアクセス速度の低下を回避しつつ、このＮＶＲＡＭ２２におけるデータ保持特性を改善（向上）することができる。よって、動作速度を低下させることなく、不揮発性メモリシステム２の信頼性を向上させることが可能となる。
【００７１】
また、特に本実施の形態では、ビット単価が相対的に低いＮＡＮＤ型フラッシュメモリ２１側にエラー訂正コードＥＣＣ２を保持するようにしたので、不揮発性メモリのコストを抑えることが可能となる。
【００７２】
＜変形例＞
続いて、上記実施の形態の変形例（変形例１，２）について説明する。なお、上記実施の形態における構成要素と同一のものには同一の符号を付し、適宜説明を省略する。
【００７３】
［変形例１］
図９は、変形例１に係るメモリシステム（不揮発性メモリシステム２Ａ）を備えたデータ記憶システム（データ記憶システム１Ａ）のブロック構成を表したものである。本変形例のデータ記憶システム１Ａは、ＣＰＵ１０、ＤＲＡＭ１１、ＤＲＡＭコントローラ１２および不揮発性メモリシステム２Ａを備えている。すなわち、上記実施の形態のデータ記憶システム１において、上記実施の形態の不揮発性メモリシステム２の代わりに、本変形例の不揮発性メモリシステム２Ａを設けたものであり、他の構成は同様となっている。
【００７４】
不揮発性メモリシステム２Ａは、ＥＣＣを内蔵したＮＡＮＤ型フラッシュメモリ２１Ａと、ＮＶＲＡＭ２２と、ＮＶＭコントローラ２３Ａとを備えている。
【００７５】
ＮＡＮＤ型フラッシュメモリ２１Ａは、前述したＥＣＣ１処理部２３１を内蔵することを特徴としている。そのため、本変形例のＮＶＭコントローラ２３Ａは、エラー訂正コードＥＣＣ１を用いてビット誤り検出・訂正処理を行ったデータを、ＮＡＮＤ型フラッシュメモリ２１Ａから受信し、ＥＣＣバッファ２３０に一時的に保存する。ＮＡＮＤ型フラッシュメモリ２１Ａに対して書込みを行う場合にも、データ２１Ｄのみを送信する。このＮＡＮＤ型フラッシュメモリ２１Ａはまた、ページ２１１Ｐ単位で構成されるデータブロック２１１と、ページ２１２Ｐ単位で構成されるＥＣＣ２ブロック２１２とを有している。なお、ページ２１１Ｐ，２１２Ｐにおけるデータ構成は、上記実施の形態におけるページ２１１Ｐ，２１２Ｐにおけるデータ構成と同様となっているが、エラー訂正コードＥＣＣ１を保存する領域にはＮＶＭコントローラ２３Ａからはアクセスすることはできない。
【００７６】
近年、ＮＡＮＤ型フラッシュメモリ２１ＡのようにＥＣＣ処理部を内蔵するようにした製品が存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。
【００７７】
［変形例２］
図１０は、変形例２に係るメモリシステム（不揮発性メモリシステム２Ｂ）を備えたデータ記憶システム（データ記憶システム１Ｂ）のブロック構成を表したものである。本変形例のデータ記憶システム１Ｂは、ＣＰＵ１０、ＤＲＡＭ１１、ＤＲＡＭコントローラ１２および不揮発性メモリシステム２Ｂを備えている。すなわち、上記実施の形態のデータ記憶システム１において、上記実施の形態の不揮発性メモリシステム２の代わりに、本変形例の不揮発性メモリシステム２Ｂを設けたものであり、他の構成は同様となっている。
【００７８】
不揮発性メモリシステム２Ｂは、ＭＦＤ（Maneged Flash Drive）２１Ｂ、ＮＶＲＡＭ２２およびＮＶＭコントローラ２３Ａを備えている。このＭＦＤ２１Ｂとしては、例えば、ＳＳＤ（Solid State Drive）、ｅＭＭＣ（Embedded MultiMedia Card）、ＳＤカード、ＵＳＢ（Universal Serial Bus）メモリなどが挙げられる。すなわち、この不揮発性メモリシステム２Ｂは、不揮発性メモリシステム２において、ＮＡＮＤ型フラッシュメモリ２１の代わりにＭＦＤ２１Ｂを設けたものであり、他の構成は同様となっている。
【００７９】
ＭＦＤ２１Ｂは、ブロック単位（ここでは、セクタ２１１Ｓ，２１２Ｓ単位）でデータのアクセスが行われるＮＡＮＤ型フラッシュを搭載したストレージデバイスである。このＭＦＤ２１Ｂは、前述したＥＣＣ１処理部２３１と同等の機能を内蔵することを特徴としている。そのため、本変形例のＮＶＭコントローラ２３Ａは、エラー訂正コードＥＣＣ１を用いてビット誤り検出・訂正処理を行ったデータをＭＦＤ２１Ｂから受信し、ＥＣＣバッファ２３０に一時的に保存する。ＭＦＤ２１Ｂに対して書込みを行う場合にも、データ２１Ｄのみを送信する。このＭＦＤ２１Ｂはまた、セクタ２１１Ｓ単位で構成されるデータブロック２１１と、セクタ２１２Ｓ単位で構成されるＥＣＣ２ブロック２１２とを有している。なお、セクタ２１１Ｓ，２１２Ｓにおけるデータ構成は、上記実施の形態におけるページ２１１Ｐ，２１２Ｐにおけるデータ構成と同様となっているが、エラー訂正コードＥＣＣ１を保存する領域にはＮＶＭコントローラ２３Ａからはアクセスすることはできない。                                                                               
【００８０】
近年、ＭＦＤ２１Ｂのようなストレージ製品が多数存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。
【００８１】
なお、本変形例では、ＮＡＮＤ型フラッシュメモリ２１の代わりにＭＦＤ２１Ｂを設けた例について説明したが、ブロック単位（複数のワード単位）で（一括して）データアクセスを行うストレージデバイスであれば、他のデバイスであってもよい。すなわち、例えば、セクタ単位でデータのアクセスが行われるハードディスクなどを用いるようにしてもよい。
【００８２】
［その他の変形例］
以上、実施の形態および変形例を挙げて本発明を説明したが、本発明はこれらの実施の形態等に限定されず、種々の変形が可能である。
【００８３】
例えば、上記実施の形態等では、データ記憶システムにおけるワークメモリの一例としてＤＲＡＭを挙げて説明したが、これには限られず、ＤＲＡＭ以外の揮発性メモリをワークメモリとして用いるようにしてもよい。
【００８４】
また、上記実施の形態等において説明したＮＶＭコントローラ２３，２３ＡやＤＲＡＭコントローラ１２における機能（の一部）を、ＣＰＵ１０側において担うようにしてもよい。
【００８５】
更に、上記実施の形態等では、データ記憶システムが、ＣＰＵ１０および不揮発性メモリシステム２に加えてＤＲＡＭ１１およびＤＲＡＭコントローラ１２を備えている場合について説明したが、場合によっては、ＤＲＡＭ１１およびＤＲＡＭコントローラ１２を設けないようにしてもよい。すなわち、ＣＰＵ１０および不揮発性メモリシステムのみによってデータ記憶システムを構成するようにしてもよい。
【符号の説明】
【００８６】
１，１Ａ，１Ｂ…データ記憶システム、１０…ＣＰＵ、１１…ＤＲＡＭ、１２…ＤＲＡＭコントローラ、２…不揮発性メモリシステム、２１，２１Ａ…ＮＡＮＤ型フラッシュメモリ、２１１…データブロック、２１２…ＥＣＣ２ブロック、２１１Ｐ，２１２Ｐ…ページ、２１Ｂ…ＭＦＤ、２１１Ｓ，２１２Ｓ…セクタ、２１Ｄ…データ、２２…ＮＶＲＡＭ、２２Ｄ…データ、２３，２３Ａ…ＮＶＭコントローラ、２３０…ＥＣＣバッファ、２３１…ＥＣＣ１処理部、２３２…ＥＣＣ２処理部、２３３…ＣＰＵ−Ｉ／Ｆ部、２３４…フラッシュメモリ−Ｉ／Ｆ部、２３５…ＮＶＲＡＭ−Ｉ／Ｆ部、２３６…ＥＣＣバッファ制御部、２３７…フラッシュメモリ制御部、２３８…ＮＶＲＡＭ制御部、ＥＣＣ１，ＥＣＣ２…エラー訂正コード。
【図１】
0005605238.tif 000002
【図２】
0005605238.tif 000003
【図３】
0005605238.tif 000004
【図４】
0005605238.tif 000005
【図５】
0005605238.tif 000006
【図６】
0005605238.tif 000007
【図７】
0005605238.tif 000008
【図８】
0005605238.tif 000009
【図９】
0005605238.tif 000010
【図１０】
0005605238.tif 000011