メモリシステムおよびその動作方法
【課題】動作速度を低下させることなくシステムの信頼性を向上させることが可能なメモリシステムおよびその動作方法を提供する。
【解決手段】不揮発性メモリシステム2は、ブロック(ページ)単位でデータのアクセスが行われるNAND型フラッシュメモリ21(第1の不揮発性メモリ)と、ワード単位でデータのランダムアクセスが行われるNVRAM22(第2の不揮発性メモリ)と、NAND型フラッシュメモリ21およびNVRAM22の動作の制御を行うNVMコントローラ23(制御部)とを備えている。NVRAM22のデータに適用されるエラー訂正コードECC2が、NAND型フラッシュメモリ21内に保持されている。NVRAM22に対するアクセス速度の低下が回避されつつ、このNVRAM22におけるデータ保持特性が改善される。
【解決手段】不揮発性メモリシステム2は、ブロック(ページ)単位でデータのアクセスが行われるNAND型フラッシュメモリ21(第1の不揮発性メモリ)と、ワード単位でデータのランダムアクセスが行われるNVRAM22(第2の不揮発性メモリ)と、NAND型フラッシュメモリ21およびNVRAM22の動作の制御を行うNVMコントローラ23(制御部)とを備えている。NVRAM22のデータに適用されるエラー訂正コードECC2が、NAND型フラッシュメモリ21内に保持されている。NVRAM22に対するアクセス速度の低下が回避されつつ、このNVRAM22におけるデータ保持特性が改善される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリを用いたメモリシステム、およびそのようなメモリシステムの動作方法に関する。
【背景技術】
【0002】
従来、ストレージ(補助記憶装置)として機能するメモリ上に保持されているプログラムやデータ等を、DRAM(Dynamic Random Access Memory)などのワークメモリ(主記憶装置)へ読み出して(ロードして)実行するメモリシステム(ストレージシステム)が用いられている。このようなメモリシステムにおいて、高速動作が要求されるストレージとしては、一般に不揮発性メモリ(NVM:Non-Volatile Memory)が使用されている。
【0003】
この不揮発性メモリは、大容量でありブロック単位でのデータアクセスに対応したフラッシュメモリと、ワード単位での高速なデータアクセス(ランダムアクセス)が可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile Random Access Memory)とに大別される。フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、NVRAMの例としては、PCRAM(Phase-Change Random Access Memory),MRAM(Magnetoresistive Random Access Memory),ReRAM(Resistance Random Access Memory)などが挙げられる。
【0004】
前者のフラッシュメモリは、ビットコストが低くかつ大容量であることから、高速なストレージ用途として採用されている。一方、後者のNVRAMは、フラッシュメモリと比べてビットコストは高いものの、以下の利点を有している。すなわち、ワード単位での高速アクセス性能に優れており、また、CPU(Central Processing Unit)から直接アクセスすることも可能であることから、ストレージに対する不揮発性キャッシュメモリとして採用することによりメモリシステムの高速化を担うことを期待されている。
【0005】
このようなフラッシュメモリおよびNVRAMを用いたメモリシステム(不揮発性メモリシステム)の例は、例えば特許文献1,2および非特許文献1に開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2004−506256号公報
【特許文献2】特開2006−236304号公報
【非特許文献】
【0007】
【非特許文献1】Shuhei Tanakamaru、他4名,“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, p.1−4
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、このようなメモリシステムでは、各不揮発性メモリにおけるデータ保持特性を向上させ、システムの信頼性を高めることが重要である。これは、不揮発性メモリは一般に、書き換え回数の増加とともにデータの保持特性が劣化する傾向にあるためである。そこで、例えば上記特許文献1では、エラー訂正コード(ECC:Error Correcting Code)を用いてデータのビット誤り検出・訂正処理を行うことにより、NAND型フラッシュメモリにおけるデータ保持特性を向上させている。
【0009】
一方で、上記したNVRAMを例えば不揮発性キャッシュメモリとして使用した場合、ストレージとして機能するNAND型フラッシュメモリ等と比べてアクセス頻度が高くなることから、NVRAMにおいてもデータ保持特性を向上させることが重要である。しかしながら、上記特許文献1等のメモリシステムでは、NVRAMのデータに対する保持特性向上のための手法(例えば、ECCを用いることなど)については、全く開示されていない。
【0010】
そこで、フラッシュメモリとNVRAMとを用いたメモリシステムにおいて、NVRAMのデータに対してECCを適用し、データの保持特性を改善する手法が考えられる。しかしながら、単純にECCを適用しただけでは、ECCコードへのアクセスが発生する分NVRAMにおけるアクセス速度が低下する(NVRAMの帯域へ悪影響を及ぼす)という副作用が生じてしまい、システム全体としても動作速度が低下してしまうことになる。
【0011】
本発明はかかる問題点に鑑みてなされたもので、その目的は、動作速度を低下させることなくシステムの信頼性を向上させることが可能なメモリシステムおよびその動作方法を提供することにある。
【課題を解決するための手段】
【0012】
本発明のメモリシステムは、ブロック単位でデータのアクセスが行われる第1の不揮発性メモリと、ワード単位でデータのランダムアクセスが行われる第2の不揮発性メモリと、第1および第2の不揮発性メモリの動作の制御を行う制御部とを備え、第2の不揮発性メモリのデータに適用されるエラー訂正コードを、第1の不揮発性メモリ内に保持するようにしたものである。
【0013】
本発明のメモリシステムの動作方法は、第1の不揮発性メモリに対してブロック単位でデータのアクセスを行うと共に、第2の不揮発性メモリに対してワード単位でデータのランダムアクセスを行い、第1の不揮発性メモリ内に保持されているエラー訂正コードを用いて、第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行うようにしたものである。
【0014】
本発明のメモリシステムおよびその動作方法では、第1の不揮発性メモリに対してブロック単位でデータのアクセスが行われると共に、第2の不揮発性メモリに対してワード単位でのデータのランダムアクセスが行われる。この際、第2の不揮発性メモリのデータに対してエラー訂正コードが適用され、例えばビット誤りの検出および訂正処理がなされることにより、第2の不揮発性メモリにおけるデータ保持特性が改善される。また、このエラー訂正コードは第1の不揮発性メモリ内に保持されていることにより、例えば第2の不揮発性メモリ自身内にエラー訂正コードが保持される場合とは異なり、この第2の不揮発性メモリにおけるアクセス速度の低下が回避される。
【発明の効果】
【0015】
本発明のメモリシステムおよびその動作方法によれば、ワード単位でのデータのランダムアクセスが行われる第2の不揮発性メモリのデータに適用するエラー訂正コードを、ブロック単位でデータのアクセスが行われる第1の不揮発性メモリ内に保持するようにしたので、第2の不揮発性メモリにおけるアクセス速度の低下を回避しつつ、この第2の不揮発性メモリにおけるデータ保持特性を改善することができる。よって、動作速度を低下させることなく、システムの信頼性を向上させることが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施の形態に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【図2】図1に示したNAND型フラッシュメモリのECC2ブロックにおける詳細なデータ構成例を表すブロック図である。
【図3】図1に示したNVMコントローラの詳細構成例を表すブロック図である。
【図4】比較例1に係るメモリシステムを備えたデータ記憶システムの構成を表すブロック図である。
【図5】比較例2に係るメモリシステムを備えたデータ記憶システムの構成を表すブロック図である。
【図6】エラー訂正コードECC2を用いたNVRAMからのデータ読み出し処理の一例を表す流れ図である。
【図7】エラー訂正コードECC2を用いたNVRAMへのデータ書き込み処理の一例を表す流れ図である。
【図8】エラー訂正コードECC2を用いたシステム起動処理の一例を表す流れ図である。
【図9】変形例1に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【図10】変形例2に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、説明は以下の順序で行う。
1.実施の形態(第1の不揮発性メモリとしてNAND型フラッシュメモリを用いた例)
2.変形例
変形例1(NAND型フラッシュメモリにECC処理部を内蔵した例)
変形例2(第1の不揮発性メモリとしてMFDを用いた例)
その他の変形例
【0018】
<実施の形態>
[データ記憶システム1の構成]
図1は、本発明の一実施の形態に係るメモリシステム(不揮発性メモリシステム2)を備えたデータ記憶システム(データ記憶システム1)のブロック構成を表すものである。このデータ記憶システム1は、CPU10、DRAM11およびDRAMコントローラ12と、本実施の形態の不揮発性メモリシステム2とを備えている。
【0019】
CPU10は、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2の動作をそれぞれ制御するものである。具体的には、後述するNVMコントローラ23を介してNVRAM22およびNAND型フラッシュメモリ21に保持(記憶)されている各データに対してアクセスを行い、例えばワークメモリ(主メモリ)として機能するDRAM11へデータをロードしたり、逆にDRAM11上のデータを書き込んだりする機能を有している。
【0020】
DRAM11は、上記したように、データ記憶システム1におけるワークメモリとして機能する揮発性のメモリである。DRAMコントローラ12は、CPU10から指示に従って、DRAM11の動作(例えば、データの書き込み動作や読み出し動作など)を制御するものである。
【0021】
[不揮発性メモリシステム2の構成]
不揮発性メモリシステム2は、不揮発性メモリ(NVM)であるNAND型フラッシュメモリ21(第1の不揮発性メモリ)およびNVRAM22(第2の不揮発性メモリ)と、NVMコントローラ23(制御部)とを備えている。ここでは、これらの不揮発性メモリのうち、NAND型フラッシュメモリ21がストレージとして機能すると共に、NVRAM22が、ワークメモリや不揮発性のキャッシュメモリとして機能するようになっている。これにより、この不揮発性メモリシステム2は、NAND型フラッシュメモリ21との組み合わせでSnD(Store and Download)モデルに対応すると共に、NVRAM22との組み合わせでXIP(eXecute In Plane)モデルにも対応することが可能となっている。
【0022】
(NAND型フラッシュメモリ21)
NAND型フラッシュメモリ21は、ブロック単位(ここでは、後述するページ211P,212P単位)でデータのアクセスが行われる不揮発性メモリ(フラッシュメモリ)である。このNAND型フラッシュメモリ21は、データブロック211およびECC2ブロック212を有している。
【0023】
データブロック211は、ページ211P単位でデータ21Dが保持(記憶)されているブロック(データ領域)である。具体的には、各ページ211Pでは、データ21Dがそれを保護するエラー訂正コードECC1(第1エラー訂正コード)とともに保持されている。すなわち、このエラー訂正コードECC1は、後述するように、NAND型フラッシュメモリ21のデータ21Dに対して適用されるものであり、これによりNAND型フラッシュメモリ21におけるデータの保持特性が向上するようになっている。
【0024】
ECC2ブロック212は、NVRAM22を保護するエラー訂正コードECC2(第2エラー訂正コード)がページ212P単位で保持(記憶)されているブロック(データ領域)である。すなわち、本実施の形態では、NVRAM22に適用されるエラー訂正コードECC2もが、NAND型フラッシュメモリ21内に保持されている。具体的には、各ページ212Pでは、このエラー訂正コードECC2が、上記したエラー訂正コードECC1とともに保持されている。詳細には、例えば図2に示したように、複数のエラー訂正コードECC2の束(ここでは、n(2以上の整数)個のエラー訂正コードECC2(0)〜ECC(n)が纏められた束)が、各ページ212P単位でエラー訂正コードECC1とともに保持されている。換言すると、各ページ212Pでは、データ領域にエラー訂正コードECC2が保持されると共に、冗長領域にはページ211Pと同様に、エラー訂正コードECC1が保持されている。
【0025】
なお、一例として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.1 mode5(200MB/秒)に対応したMLC NAND型フラッシュメモリを使用した場合で約80μsとなり、1つのエラー訂正コードECC2当たりでは16nsとなる。すると、NVRAM22において連続したアドレスに対するアクセスが発生した場合であっても、NVRAM22のアクセス時間がこの16nsよりも長ければ、アクセスの継続中において、ECCバッファ230に対して次のページに対応するエラー訂正コードECC2の読み出しを行うことが可能となる。なお、NVRAM22において不連続のアドレスに対するアクセスが発生した場合には、後述する先読み機能を利用することで、ECCバッファ230へのエラー訂正コードECC2の読み出し時間を短縮することができる。なお、上記した16ns程度のアクセス時間は、NVRAM22へのアクセス時間としては、一般に十分に高速な値であると言える。
【0026】
(NVRAM22)
NVRAM22は、ワード単位でのデータ(データ22D)のランダムアクセスが行われる不揮発性メモリであり、上記したNAND型フラッシュメモリ21とは異なり、データ22Dのみが保持されている。すなわち、このNVRAM22内には、エラー訂正コードは保持されていない。このようなNVRAM22は、例えば、PCRAM,MRAM,ReRAMなどからなる。
【0027】
(NVMコントローラ23)
NVMコントローラ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)。
【0028】
この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のキャッシング機能を実現している。
【0029】
NVMコントローラ23は更に、NVRAM22内の各データ22Dのアドレスと、各データ22Dに対応するエラー訂正コードECC2のNAND型フラッシュメモリ21内での保持アドレスとを、対応付けて管理する機能(ECCページ管理機能)を有している。なお、このようなECCページ管理機能を利用したビット誤り検出・訂正処理の詳細についても、後述する(図6〜図8)。
【0030】
ここで、図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を有している。
【0031】
ECC1処理部231は、エラー訂正コードECC1を用いて、NAND型フラッシュメモリ21のデータ21Dに対するビット誤り検出・訂正処理を行うものである。なお、ECC2ブロック212のデータ21Dに対するビット誤り検出・訂正処理を行った結果は、ECCバッファ230上に一時的に保持されるようになっている。また、それ以外のデータブロック211のデータ21Dは、NVMコントローラ23からCPU−I/F部233を介して出力される。
【0032】
ECC2処理部232は、上記のようにしてECC2バッファ230上に一時的に保持されたエラー訂正コードECC2を用いて、NVRAM22のデータ22Dに対するビット誤り検出・訂正処理を行うものである。なお、この際のエラー訂正コードECC2を用いたビット誤り検出・訂正処理は、例えば一般的に利用されているハミング符号方式を用いて行われる。
【0033】
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との双方を有している。
【0034】
ECCバッファ制御部236は、ECCバッファ230の動作を制御するものである。フラッシュ制御部237は、ECC1処理部231およびフラッシュメモリ−I/F部234の動作をそれぞれ制御するものである。NVRAM制御部238は、ECC2処理部232およびNVRAM−I/F部235の動作をそれぞれ制御するものである。
【0035】
[データ記憶システム1の作用・効果]
(1.基本動作)
このデータ記憶システム1では、CPU10からの指示に応じたDRAMコントローラ12およびNVMコントローラ23の制御により、DRAM11およびNVRAM22がワークメモリとして機能すると共に、NAND型フラッシュメモリ21がストレージとして機能する。これにより、CPU10からの指示に従って、所定のプログラムの実行やデータ処理が行われる。この際、不揮発性メモリシステム2では、NAND型フラッシュメモリ21に対してブロック(ページ)単位でデータ21Dのアクセスが行われる一方、NVRAM22に対してワード単位でのデータ22Dのランダムアクセスが行われる。
【0036】
また、このときNVMコントローラ23は、NAND型フラッシュメモリ21内に保持されているエラー訂正コードECC1を用いて、このNAND型フラッシュメモリ21のデータ21Dに対するビット誤り検出・訂正処理を行う。具体的には、NVMコントローラ23は、NAND型フラッシュメモリ21へのデータ21Dの書き込み時に生成したエラー訂正コードECC1を使用して、NAND型フラッシュメモリ21からのデータ21Dの読み出し時またはシステム(不揮発性メモリシステム2)の起動時に、そのようなビット誤り検出・訂正処理を行う。なお、この際のエラー訂正コードECC1を用いたビット誤り検出・訂正処理は、例えば一般的に利用されているBCH符号方式を用いて行われる。これにより、NAND型フラッシュメモリ21におけるデータ21Dの保持特性が向上し、不揮発性メモリシステム2の信頼性の向上が図られている。
【0037】
(2.エラー訂正コードECC2を用いたビット誤り検出・訂正処理)
次に、図4〜図8を参照して、本発明の特徴的部分の1つである、エラー訂正コードECC2を用いたビット誤り検出・訂正処理等について、比較例(比較例1,2)と比較しつつ詳細に説明する。
【0038】
(2−1.比較例1)
図4は、比較例1に係るメモリシステム(不揮発性メモリシステム102)を備えたデータ記憶システム(データ記憶システム101)のブロック構成を表したものである。この比較例1のデータ記憶システム101は、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム102を備えている。すなわち、本実施の形態のデータ記憶システム1において、本実施の形態の不揮発性メモリシステム2の代わりに、比較例1の不揮発性メモリシステム102を設けたものであり、他の構成は同様となっている。
【0039】
不揮発性メモリシステム102は、本実施の形態の不揮発性メモリシステム2とは異なり、NAND型フラッシュメモリ102−1上にエラー訂正コードECC2を保存しないためにECC2ブロック212を備えておらず、他の構成は同様となっている。
【0040】
すなわち、この不揮発性メモリシステム102では、本実施の形態と同様にエラー訂正コードECC1を用いてNAND型フラッシュメモリ102−1自身のデータ保持特性の改善を図っているものの、本実施の形態とは異なり、NVRAM22用のエラー訂正コードECC2が設けられていない。
【0041】
したがって、この比較例1では、エラー訂正コードECC2を用いたNVRAM22のデータ22Dに対するビット誤り検出・訂正処理が行われないことになるため、NVRAM22に対する書き換え回数が増大して保持特性が劣化した場合、データエラーが発生する可能性がある。特に、NVRAM22を不揮発性のキャッシュメモリとして使用した場合、ストレージとして機能するNAND型フラッシュメモリ102−1と比べてアクセス頻度が高くなる。このため、NVRAM22は、NAND型フラッシュメモリ102−1以上に高いデータ保持特性が必要となる。しかしながら、この比較例1では、上記したように、NVRAM22におけるデータエラーの発生を防ぐことができないため、不揮発性メモリシステム102全体としての信頼性も低下してしまうことになる。
【0042】
(2−2.比較例2)
次いで、図5は、比較例2に係るメモリシステム(不揮発性メモリシステム202)を備えたデータ記憶システム(データ記憶システム201)のブロック構成を表したものである。この比較例2のデータ記憶システム101は、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム202を備えている。すなわち、本実施の形態のデータ記憶システム1において、本実施の形態の不揮発性メモリシステム2の代わりに、比較例2の不揮発性メモリシステム202を設けたものであり、他の構成は同様となっている。
【0043】
不揮発性メモリシステム202は、本実施の形態の不揮発性メモリシステム2とは異なり、NAND型フラッシュメモリ102−1上にエラー訂正コードECC2を保存しないためにECC2ブロック212を備えていない。その代わりに、この不揮発性メモリシステム202では、NVRAM202−2上にエラー訂正コードECC2を保存する領域が設けられており、他の構成は同様となっている。
【0044】
すなわち、この比較例2では、エラー訂正コードECC2を用いて、NVRAM202−2のデータ22Dに対するビット誤り検出・訂正処理が行われることになる。これにより、上記比較例1と比べ、NVRAM202−2におけるデータ22Dの保持特性の改善が図られ、不揮発性メモリシステム202全体としての信頼性も向上する。
【0045】
ところが、この比較例2の不揮発性メモリシステム202では、NVRAM202−2用のエラー訂正コードECC2がNVRAM202−2自身の内部に保持されていることに起因して、以下のような問題が生じてしまう。
【0046】
(アクセス速度の低下の問題)
まず、1つ目の問題として、NVRAM202−2におけるアクセス速度が低下する(NVRAM202−2の帯域へ悪影響を及ぼす)という副作用が生じてしまい、不揮発性メモリシステム202全体としても動作速度が低下してしまうというものが挙げられる。ここで、比較例2のようにNVRAM202−2内にエラー訂正コードECC2が保持されている場合における、NVRAM202へのアクセス手法としては、以下の2つの手法が考えられる。
【0047】
第1の手法は、図5に示したように、NVRAM202−2上においてデータ22Dのアドレスとは異なるアドレスに、エラー訂正コードECC2を保持するというものである。この手法では、NVRAM202−2に対する1回のアクセスに対して、実施には最低2回(データ22Dへのアクセスと、エラー訂正コードECC2へのアクセスとの2回)のアクセスが必要となる。このため、この第1の手法では、NVRAM202−2における高速なアクセス速度が、1/2に低下してしまうことになる。
【0048】
第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に低下してしまう。
【0049】
このように、上記した2つの手法のいずれにおいても、比較例2ではNVRAM202−2におけるアクセス速度が低下してしまい、不揮発性メモリシステム202全体としても動作速度が低下してしまうことになる。
【0050】
(コスト増加の問題)
また、特に2つの不揮発性メモリとして、NAND型フラッシュメモリ102−1とNVRAM202−2とを用いた場合、比較例2の不揮発性メモリシステム202では、以下のようなコスト増加の問題も生じる。すなわち、一般に、NVRAMはNAND型フラッシュメモリと比べてビット単価が高いことから、比較例2のように、NVRAM202−2用のエラー訂正コードECC2をNVRAM202−2自身の内部に保持した場合、NVRAM202−2の実質のデータ容量が減少する。したがって、不揮発性メモリ202全体として、不揮発性メモリのコストが増大してしまうことになる。
【0051】
(2−3.本実施の形態)
これに対して、本実施の形態の不揮発性メモリシステム2では、図1〜図3に示したように、NVRAM22のデータ22Dに対してエラー訂正コードECC2が適用され、以下詳述するようにしてデータ22Dに対するビット誤り検出・訂正処理が行われる。これにより、上記比較例1の不揮発性メモリシステム102と比べ、NVRAM22におけるデータ保持特性が改善される。
【0052】
また、本実施の形態では、図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における高速なデータアクセス性能は維持されると言える。
【0053】
加えて、本実施の形態では、上記したように、ビット単価が相対的に低いNAND型フラッシュメモリ21側にエラー訂正コードECC2が保持されていることから、上記比較例2とは異なり、上述したコスト増加の問題も回避される(不揮発性メモリのコストが抑えられる)。
【0054】
ここで、以下図6〜図8を参照して、このようなエラー訂正コードECC2を用いたNVRAM22のデータ22Dに対するビット誤り検出・訂正処理について、詳細に説明する。換言すると、NVMコントローラ23は以下のようにして、NVRAM22へのデータ22Dの書き込み時にエラー訂正コードECC2を書き込むと共に、NVRAM22からのデータ22Dの読み出し時またはシステムの起動時に、エラー訂正コードECC2を用いてこのデータ22Dに対するビット誤り検出・訂正処理を行う。
【0055】
(NVRAM22からのデータ読み出し処理)
図6は、エラー訂正コードECC2を用いた、NVRAM22からCPU10へのデータ読み出し処理の一例を流れ図で表したものである。
【0056】
このデータ読み出し処理では、NVMコントローラ23は、ECCバッファ230上に、NVRAM22から読み出すデータ22Dに対応する(必要とされる)エラー訂正コードECC2が存在する(保持されている)のか否かを判断する(ステップS102)。ここで、対応するエラー訂正コードECC2がECCバッファ230上に存在する場合(ステップS102:Y)には、NVMコントローラ23は以下の処理を行う。すなわち、NVRAM22から該当する(読み出し対象とされている)データ22Dを読み出す(ステップS101)のと並行して、このECCバッファ230から対応するエラー訂正コードECC2を読み出す(ステップS103)。
【0057】
一方、対応するエラー訂正コード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へのアクセスを延長(一時停止)する必要がある。
【0058】
ここで、ECCバッファ230内に空き領域がないと判断した場合(ステップS104:N)には、次にNVMコントローラ23は、ECCバッファ230上の空き候補領域を選択する(ステップS107)。具体的には、ECCバッファ230上において、使用頻度(アクセス頻度)が相対的に低い(望ましくは最も低い)と想定されるエラー訂正コードECC2の保持領域を空き候補領域として選択し、空き領域に変更して用いる(バッファ領域の再利用をする)ようにする。
【0059】
次いで、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へと進む。
【0060】
ここで、前述したステップS103の後には、NVMコントローラ23は、エラー訂正コードECC2を用いて、NVRAM22において読み出し対象となっているデータ22Dに対するビット誤り検出・訂正処理を行う(ステップS111)。この際、エラー訂正コードECC2を用いたビット誤り検出・訂正処理は、例えば、一般的に利用されているハミング符号方式を用いて行う。なお、訂正を行うのが不可能なビット誤りが検出された場合には、NVMコントローラ23は、例えばその旨をCPU10へ通知するようにする。そして、NVMコントローラ23は、このようなビット誤り検出・訂正処理後の該当するデータ22Dを、CPU10へ出力する。以上により、図6に示したNVRAM22からCPU10へのデータ読み出し処理が終了となる。
【0061】
なお、このようなデータ読み出し処理(ならびに、以下のデータ書き込み処理およびシステム起動処理)の際には、NVMコントローラ23は、以下のようなエラー訂正コードECC2の先読み機能を利用するのが望ましい。このエラー訂正コードECC2の先読み機能を利用した場合、まず、NVMコントローラ23は、NVRAM22内のデータ22Dへの過去のアクセス履歴を用いて、このNVRAM22内において今後アクセスが行われるデータ22Dを予想する。そして、その予想したデータ22Dに対応するエラー訂正コードECC2を、NVRAM22からECCバッファ230へ予め読み出しておく。このようなエラー訂正コードECC2の先読み機能を利用した場合、NVRAM22におけるアクセスの高速性能の維持が容易となる。
【0062】
(NVRAM22へのデータ書き込み処理)
図7は、エラー訂正コードECC2を用いた、CPU10からNVRAM22へのデータ書き込み処理の一例を流れ図で表したものである。
【0063】
このデータ書き込み処理では、まずNVMコントローラ23は、CPU10から該当する(書き込み対象となる)データ22Dを取得する(ステップS201)。次いで、NVMコントローラ23は、前述した読み出し処理の際におけるステップS102,S104〜S110と同様の処理を行い(ステップS203〜S210)、次に以下のステップS202へと進む。
【0064】
次いで、NVMコントローラ23は、例えば一般的に利用されているハミング符号方式を用いて、取得したデータ22Dに対応するエラー訂正コードECC2を、演算(計算)することにより生成する(ステップS202)。次いでステップS211では、NVMコントローラ23は、計算して得られたエラー訂正コードECC2を、ECCバッファ230へ書き込む(更新する)。このとき、ECCバッファ230上でエラー訂正コードECC2を含んだページは、更新済み状態として登録される。また、それと共に、NVMコントローラ23は、該当するデータ22DをNVRAM22へと書き込む(ステップS212)。以上により、図7に示したCPU10からNVRAM22へのデータ書き込み処理が終了となる。
【0065】
(システム起動処理)
図8は、エラー訂正コードECC2を用いた、不揮発性メモリシステム2の起動処理(システム起動処理)の一例を流れ図で表したものである。
【0066】
このシステム起動処理では、まず、NVMコントローラ23は、NVRAM22における先頭アドレスを設定する(ステップS301)。次いで、NVMコントローラ23は、前述した読み出し処理の際におけるステップS101〜S104,S107,S105,S106,S111と同様の処理を行い(ステップS302〜S309)、次に以下のステップS310へと進む。
【0067】
このステップS310では、ステップS309において実行したビット誤り検出・訂正処理において、訂正を行うのが不可能なビット誤りが検出されたのか否かを判断する。そして、訂正を行うのが不可能なビット誤りが検出された場合(ステップS310:Y)には、次にNVMコントローラ23はその旨をCPU10へ通知することにより(ステップS311)、図8に示したシステム起動処理が終了となる。
【0068】
一方、訂正を行うのが不可能なビット誤りが検出されなかった場合(ステップS310:N)には、次にNVMコントローラ23は、NVRAM22における最終アドレスが対象となっているのか否かを判断する(ステップS312)。ここで、最終アドレスが対象となっていない場合(ステップS312:N)には、NVMコントローラ23は、NVRAM22における対象アドレスに対して「1」を加算し(ステップS313)、前述したステップS303へと戻る。一方、最終アドレスが対象となっている場合(ステップS312:Y)には、図8に示したシステム起動処理が終了となる。
【0069】
このように、不揮発性メモリシステム2が(電源の投入がなされて)起動したときに、NVRAM22上の全てのデータ22Dに対してエラー訂正コードECC2を用いたビット誤り検出・訂正処理を行うことにより、以下の効果が得られる。すなわち、不揮発性のキャッシュメモリとして用いられるNVRAM22上に、データのビット誤りが存在しないことが確認された後に不揮発性メモリシステム2が動作開始となるため、システムの信頼性を向上させることが可能となる。
【0070】
以上のように本実施の形態では、ワード単位でのデータのランダムアクセスが行われるNVRAM22のデータ22Dに適用するエラー訂正コードECC2を、ブロック(ページ)単位でデータのアクセスが行われるNAND型フラッシュメモリ21内に保持するようにしたので、NVRAM22におけるアクセス速度の低下を回避しつつ、このNVRAM22におけるデータ保持特性を改善(向上)することができる。よって、動作速度を低下させることなく、不揮発性メモリシステム2の信頼性を向上させることが可能となる。
【0071】
また、特に本実施の形態では、ビット単価が相対的に低いNAND型フラッシュメモリ21側にエラー訂正コードECC2を保持するようにしたので、不揮発性メモリのコストを抑えることが可能となる。
【0072】
<変形例>
続いて、上記実施の形態の変形例(変形例1,2)について説明する。なお、上記実施の形態における構成要素と同一のものには同一の符号を付し、適宜説明を省略する。
【0073】
[変形例1]
図9は、変形例1に係るメモリシステム(不揮発性メモリシステム2A)を備えたデータ記憶システム(データ記憶システム1A)のブロック構成を表したものである。本変形例のデータ記憶システム1Aは、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2Aを備えている。すなわち、上記実施の形態のデータ記憶システム1において、上記実施の形態の不揮発性メモリシステム2の代わりに、本変形例の不揮発性メモリシステム2Aを設けたものであり、他の構成は同様となっている。
【0074】
不揮発性メモリシステム2Aは、ECCを内蔵したNAND型フラッシュメモリ21と、NVRAM22と、NVMコントローラ23Aとを備えている。
【0075】
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からはアクセスすることはできない。
【0076】
近年、NAND型フラッシュメモリ21AのようにECC処理部を内蔵するようにした製品が存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。
【0077】
[変形例2]
図10は、変形例2に係るメモリシステム(不揮発性メモリシステム2B)を備えたデータ記憶システム(データ記憶システム1B)のブロック構成を表したものである。本変形例のデータ記憶システム1Bは、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2Bを備えている。すなわち、上記実施の形態のデータ記憶システム1において、上記実施の形態の不揮発性メモリシステム2の代わりに、本変形例の不揮発性メモリシステム2Bを設けたものであり、他の構成は同様となっている。
【0078】
不揮発性メモリシステム2Bは、MFD(Maneged Flash Drive)21B、NVRAM22およびNVMコントローラ23Aを備えている。このMFD21Bとしては、例えば、SSD(Solid State Drive)、eMMC(Embedded MultiMedia Card)、SDカード、USB(Universal Serial Bus)メモリなどが挙げられる。すなわち、この不揮発性メモリシステム2Bは、不揮発性メモリシステム2において、NAND型フラッシュメモリ21の代わりにMFD21Bを設けたものであり、他の構成は同様となっている。
【0079】
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からはアクセスすることはできない。
【0080】
近年、MFD21Bのようなストレージ製品が多数存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。
【0081】
なお、本変形例では、NAND型フラッシュメモリ21の代わりにMFD21Bを設けた例について説明したが、ブロック単位(複数のワード単位)で(一括して)データアクセスを行うストレージデバイスであれば、他のデバイスであってもよい。すなわち、例えば、セクタ単位でデータのアクセスが行われるハードディスクなどを用いるようにしてもよい。
【0082】
[その他の変形例]
以上、実施の形態および変形例を挙げて本発明を説明したが、本発明はこれらの実施の形態等に限定されず、種々の変形が可能である。
【0083】
例えば、上記実施の形態等では、データ記憶システムにおけるワークメモリの一例としてDRAMを挙げて説明したが、これには限られず、DRAM以外の揮発性メモリをワークメモリとして用いるようにしてもよい。
【0084】
また、上記実施の形態等において説明したNVMコントローラ23,23AやDRAMコントローラ12における機能(の一部)を、CPU10側において担うようにしてもよい。
【0085】
更に、上記実施の形態等では、データ記憶システムが、CPU10および不揮発性メモリシステム2に加えてDRAM11およびDRAMコントローラ12を備えている場合について説明したが、場合によっては、DRAM11およびDRAMコントローラ12を設けないようにしてもよい。すなわち、CPU10および不揮発性メモリシステムのみによってデータ記憶システムを構成するようにしてもよい。
【符号の説明】
【0086】
1,1A,1B…データ記憶システム、10…CPU、11…DRAM、12…DRAMコントローラ、2…不揮発性メモリシステム、21,21A…NAND型フラッシュメモリ、211…データブロック、212…ECC2ブロック、211P,212P…ページ、21B…MFD、211S,212S…セクタ、21D…データ、22…NVRAM、22D…データ、23,23A…NVMコントローラ、230…ECCバッファ、231…ECC1処理部、232…ECC2処理部、233…CPU−I/F部、234…フラッシュメモリ−I/F部、235…NVRAM−I/F部、236…ECCバッファ制御部、237…フラッシュメモリ制御部、238…NVRAM制御部、ECC1,ECC2…エラー訂正コード。
【技術分野】
【0001】
本発明は、不揮発性メモリを用いたメモリシステム、およびそのようなメモリシステムの動作方法に関する。
【背景技術】
【0002】
従来、ストレージ(補助記憶装置)として機能するメモリ上に保持されているプログラムやデータ等を、DRAM(Dynamic Random Access Memory)などのワークメモリ(主記憶装置)へ読み出して(ロードして)実行するメモリシステム(ストレージシステム)が用いられている。このようなメモリシステムにおいて、高速動作が要求されるストレージとしては、一般に不揮発性メモリ(NVM:Non-Volatile Memory)が使用されている。
【0003】
この不揮発性メモリは、大容量でありブロック単位でのデータアクセスに対応したフラッシュメモリと、ワード単位での高速なデータアクセス(ランダムアクセス)が可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile Random Access Memory)とに大別される。フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、NVRAMの例としては、PCRAM(Phase-Change Random Access Memory),MRAM(Magnetoresistive Random Access Memory),ReRAM(Resistance Random Access Memory)などが挙げられる。
【0004】
前者のフラッシュメモリは、ビットコストが低くかつ大容量であることから、高速なストレージ用途として採用されている。一方、後者のNVRAMは、フラッシュメモリと比べてビットコストは高いものの、以下の利点を有している。すなわち、ワード単位での高速アクセス性能に優れており、また、CPU(Central Processing Unit)から直接アクセスすることも可能であることから、ストレージに対する不揮発性キャッシュメモリとして採用することによりメモリシステムの高速化を担うことを期待されている。
【0005】
このようなフラッシュメモリおよびNVRAMを用いたメモリシステム(不揮発性メモリシステム)の例は、例えば特許文献1,2および非特許文献1に開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2004−506256号公報
【特許文献2】特開2006−236304号公報
【非特許文献】
【0007】
【非特許文献1】Shuhei Tanakamaru、他4名,“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, p.1−4
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、このようなメモリシステムでは、各不揮発性メモリにおけるデータ保持特性を向上させ、システムの信頼性を高めることが重要である。これは、不揮発性メモリは一般に、書き換え回数の増加とともにデータの保持特性が劣化する傾向にあるためである。そこで、例えば上記特許文献1では、エラー訂正コード(ECC:Error Correcting Code)を用いてデータのビット誤り検出・訂正処理を行うことにより、NAND型フラッシュメモリにおけるデータ保持特性を向上させている。
【0009】
一方で、上記したNVRAMを例えば不揮発性キャッシュメモリとして使用した場合、ストレージとして機能するNAND型フラッシュメモリ等と比べてアクセス頻度が高くなることから、NVRAMにおいてもデータ保持特性を向上させることが重要である。しかしながら、上記特許文献1等のメモリシステムでは、NVRAMのデータに対する保持特性向上のための手法(例えば、ECCを用いることなど)については、全く開示されていない。
【0010】
そこで、フラッシュメモリとNVRAMとを用いたメモリシステムにおいて、NVRAMのデータに対してECCを適用し、データの保持特性を改善する手法が考えられる。しかしながら、単純にECCを適用しただけでは、ECCコードへのアクセスが発生する分NVRAMにおけるアクセス速度が低下する(NVRAMの帯域へ悪影響を及ぼす)という副作用が生じてしまい、システム全体としても動作速度が低下してしまうことになる。
【0011】
本発明はかかる問題点に鑑みてなされたもので、その目的は、動作速度を低下させることなくシステムの信頼性を向上させることが可能なメモリシステムおよびその動作方法を提供することにある。
【課題を解決するための手段】
【0012】
本発明のメモリシステムは、ブロック単位でデータのアクセスが行われる第1の不揮発性メモリと、ワード単位でデータのランダムアクセスが行われる第2の不揮発性メモリと、第1および第2の不揮発性メモリの動作の制御を行う制御部とを備え、第2の不揮発性メモリのデータに適用されるエラー訂正コードを、第1の不揮発性メモリ内に保持するようにしたものである。
【0013】
本発明のメモリシステムの動作方法は、第1の不揮発性メモリに対してブロック単位でデータのアクセスを行うと共に、第2の不揮発性メモリに対してワード単位でデータのランダムアクセスを行い、第1の不揮発性メモリ内に保持されているエラー訂正コードを用いて、第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行うようにしたものである。
【0014】
本発明のメモリシステムおよびその動作方法では、第1の不揮発性メモリに対してブロック単位でデータのアクセスが行われると共に、第2の不揮発性メモリに対してワード単位でのデータのランダムアクセスが行われる。この際、第2の不揮発性メモリのデータに対してエラー訂正コードが適用され、例えばビット誤りの検出および訂正処理がなされることにより、第2の不揮発性メモリにおけるデータ保持特性が改善される。また、このエラー訂正コードは第1の不揮発性メモリ内に保持されていることにより、例えば第2の不揮発性メモリ自身内にエラー訂正コードが保持される場合とは異なり、この第2の不揮発性メモリにおけるアクセス速度の低下が回避される。
【発明の効果】
【0015】
本発明のメモリシステムおよびその動作方法によれば、ワード単位でのデータのランダムアクセスが行われる第2の不揮発性メモリのデータに適用するエラー訂正コードを、ブロック単位でデータのアクセスが行われる第1の不揮発性メモリ内に保持するようにしたので、第2の不揮発性メモリにおけるアクセス速度の低下を回避しつつ、この第2の不揮発性メモリにおけるデータ保持特性を改善することができる。よって、動作速度を低下させることなく、システムの信頼性を向上させることが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施の形態に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【図2】図1に示したNAND型フラッシュメモリのECC2ブロックにおける詳細なデータ構成例を表すブロック図である。
【図3】図1に示したNVMコントローラの詳細構成例を表すブロック図である。
【図4】比較例1に係るメモリシステムを備えたデータ記憶システムの構成を表すブロック図である。
【図5】比較例2に係るメモリシステムを備えたデータ記憶システムの構成を表すブロック図である。
【図6】エラー訂正コードECC2を用いたNVRAMからのデータ読み出し処理の一例を表す流れ図である。
【図7】エラー訂正コードECC2を用いたNVRAMへのデータ書き込み処理の一例を表す流れ図である。
【図8】エラー訂正コードECC2を用いたシステム起動処理の一例を表す流れ図である。
【図9】変形例1に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【図10】変形例2に係るメモリシステムを備えたデータ記憶システムの構成例を表すブロック図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、説明は以下の順序で行う。
1.実施の形態(第1の不揮発性メモリとしてNAND型フラッシュメモリを用いた例)
2.変形例
変形例1(NAND型フラッシュメモリにECC処理部を内蔵した例)
変形例2(第1の不揮発性メモリとしてMFDを用いた例)
その他の変形例
【0018】
<実施の形態>
[データ記憶システム1の構成]
図1は、本発明の一実施の形態に係るメモリシステム(不揮発性メモリシステム2)を備えたデータ記憶システム(データ記憶システム1)のブロック構成を表すものである。このデータ記憶システム1は、CPU10、DRAM11およびDRAMコントローラ12と、本実施の形態の不揮発性メモリシステム2とを備えている。
【0019】
CPU10は、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2の動作をそれぞれ制御するものである。具体的には、後述するNVMコントローラ23を介してNVRAM22およびNAND型フラッシュメモリ21に保持(記憶)されている各データに対してアクセスを行い、例えばワークメモリ(主メモリ)として機能するDRAM11へデータをロードしたり、逆にDRAM11上のデータを書き込んだりする機能を有している。
【0020】
DRAM11は、上記したように、データ記憶システム1におけるワークメモリとして機能する揮発性のメモリである。DRAMコントローラ12は、CPU10から指示に従って、DRAM11の動作(例えば、データの書き込み動作や読み出し動作など)を制御するものである。
【0021】
[不揮発性メモリシステム2の構成]
不揮発性メモリシステム2は、不揮発性メモリ(NVM)であるNAND型フラッシュメモリ21(第1の不揮発性メモリ)およびNVRAM22(第2の不揮発性メモリ)と、NVMコントローラ23(制御部)とを備えている。ここでは、これらの不揮発性メモリのうち、NAND型フラッシュメモリ21がストレージとして機能すると共に、NVRAM22が、ワークメモリや不揮発性のキャッシュメモリとして機能するようになっている。これにより、この不揮発性メモリシステム2は、NAND型フラッシュメモリ21との組み合わせでSnD(Store and Download)モデルに対応すると共に、NVRAM22との組み合わせでXIP(eXecute In Plane)モデルにも対応することが可能となっている。
【0022】
(NAND型フラッシュメモリ21)
NAND型フラッシュメモリ21は、ブロック単位(ここでは、後述するページ211P,212P単位)でデータのアクセスが行われる不揮発性メモリ(フラッシュメモリ)である。このNAND型フラッシュメモリ21は、データブロック211およびECC2ブロック212を有している。
【0023】
データブロック211は、ページ211P単位でデータ21Dが保持(記憶)されているブロック(データ領域)である。具体的には、各ページ211Pでは、データ21Dがそれを保護するエラー訂正コードECC1(第1エラー訂正コード)とともに保持されている。すなわち、このエラー訂正コードECC1は、後述するように、NAND型フラッシュメモリ21のデータ21Dに対して適用されるものであり、これによりNAND型フラッシュメモリ21におけるデータの保持特性が向上するようになっている。
【0024】
ECC2ブロック212は、NVRAM22を保護するエラー訂正コードECC2(第2エラー訂正コード)がページ212P単位で保持(記憶)されているブロック(データ領域)である。すなわち、本実施の形態では、NVRAM22に適用されるエラー訂正コードECC2もが、NAND型フラッシュメモリ21内に保持されている。具体的には、各ページ212Pでは、このエラー訂正コードECC2が、上記したエラー訂正コードECC1とともに保持されている。詳細には、例えば図2に示したように、複数のエラー訂正コードECC2の束(ここでは、n(2以上の整数)個のエラー訂正コードECC2(0)〜ECC(n)が纏められた束)が、各ページ212P単位でエラー訂正コードECC1とともに保持されている。換言すると、各ページ212Pでは、データ領域にエラー訂正コードECC2が保持されると共に、冗長領域にはページ211Pと同様に、エラー訂正コードECC1が保持されている。
【0025】
なお、一例として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.1 mode5(200MB/秒)に対応したMLC NAND型フラッシュメモリを使用した場合で約80μsとなり、1つのエラー訂正コードECC2当たりでは16nsとなる。すると、NVRAM22において連続したアドレスに対するアクセスが発生した場合であっても、NVRAM22のアクセス時間がこの16nsよりも長ければ、アクセスの継続中において、ECCバッファ230に対して次のページに対応するエラー訂正コードECC2の読み出しを行うことが可能となる。なお、NVRAM22において不連続のアドレスに対するアクセスが発生した場合には、後述する先読み機能を利用することで、ECCバッファ230へのエラー訂正コードECC2の読み出し時間を短縮することができる。なお、上記した16ns程度のアクセス時間は、NVRAM22へのアクセス時間としては、一般に十分に高速な値であると言える。
【0026】
(NVRAM22)
NVRAM22は、ワード単位でのデータ(データ22D)のランダムアクセスが行われる不揮発性メモリであり、上記したNAND型フラッシュメモリ21とは異なり、データ22Dのみが保持されている。すなわち、このNVRAM22内には、エラー訂正コードは保持されていない。このようなNVRAM22は、例えば、PCRAM,MRAM,ReRAMなどからなる。
【0027】
(NVMコントローラ23)
NVMコントローラ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)。
【0028】
この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のキャッシング機能を実現している。
【0029】
NVMコントローラ23は更に、NVRAM22内の各データ22Dのアドレスと、各データ22Dに対応するエラー訂正コードECC2のNAND型フラッシュメモリ21内での保持アドレスとを、対応付けて管理する機能(ECCページ管理機能)を有している。なお、このようなECCページ管理機能を利用したビット誤り検出・訂正処理の詳細についても、後述する(図6〜図8)。
【0030】
ここで、図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を有している。
【0031】
ECC1処理部231は、エラー訂正コードECC1を用いて、NAND型フラッシュメモリ21のデータ21Dに対するビット誤り検出・訂正処理を行うものである。なお、ECC2ブロック212のデータ21Dに対するビット誤り検出・訂正処理を行った結果は、ECCバッファ230上に一時的に保持されるようになっている。また、それ以外のデータブロック211のデータ21Dは、NVMコントローラ23からCPU−I/F部233を介して出力される。
【0032】
ECC2処理部232は、上記のようにしてECC2バッファ230上に一時的に保持されたエラー訂正コードECC2を用いて、NVRAM22のデータ22Dに対するビット誤り検出・訂正処理を行うものである。なお、この際のエラー訂正コードECC2を用いたビット誤り検出・訂正処理は、例えば一般的に利用されているハミング符号方式を用いて行われる。
【0033】
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との双方を有している。
【0034】
ECCバッファ制御部236は、ECCバッファ230の動作を制御するものである。フラッシュ制御部237は、ECC1処理部231およびフラッシュメモリ−I/F部234の動作をそれぞれ制御するものである。NVRAM制御部238は、ECC2処理部232およびNVRAM−I/F部235の動作をそれぞれ制御するものである。
【0035】
[データ記憶システム1の作用・効果]
(1.基本動作)
このデータ記憶システム1では、CPU10からの指示に応じたDRAMコントローラ12およびNVMコントローラ23の制御により、DRAM11およびNVRAM22がワークメモリとして機能すると共に、NAND型フラッシュメモリ21がストレージとして機能する。これにより、CPU10からの指示に従って、所定のプログラムの実行やデータ処理が行われる。この際、不揮発性メモリシステム2では、NAND型フラッシュメモリ21に対してブロック(ページ)単位でデータ21Dのアクセスが行われる一方、NVRAM22に対してワード単位でのデータ22Dのランダムアクセスが行われる。
【0036】
また、このときNVMコントローラ23は、NAND型フラッシュメモリ21内に保持されているエラー訂正コードECC1を用いて、このNAND型フラッシュメモリ21のデータ21Dに対するビット誤り検出・訂正処理を行う。具体的には、NVMコントローラ23は、NAND型フラッシュメモリ21へのデータ21Dの書き込み時に生成したエラー訂正コードECC1を使用して、NAND型フラッシュメモリ21からのデータ21Dの読み出し時またはシステム(不揮発性メモリシステム2)の起動時に、そのようなビット誤り検出・訂正処理を行う。なお、この際のエラー訂正コードECC1を用いたビット誤り検出・訂正処理は、例えば一般的に利用されているBCH符号方式を用いて行われる。これにより、NAND型フラッシュメモリ21におけるデータ21Dの保持特性が向上し、不揮発性メモリシステム2の信頼性の向上が図られている。
【0037】
(2.エラー訂正コードECC2を用いたビット誤り検出・訂正処理)
次に、図4〜図8を参照して、本発明の特徴的部分の1つである、エラー訂正コードECC2を用いたビット誤り検出・訂正処理等について、比較例(比較例1,2)と比較しつつ詳細に説明する。
【0038】
(2−1.比較例1)
図4は、比較例1に係るメモリシステム(不揮発性メモリシステム102)を備えたデータ記憶システム(データ記憶システム101)のブロック構成を表したものである。この比較例1のデータ記憶システム101は、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム102を備えている。すなわち、本実施の形態のデータ記憶システム1において、本実施の形態の不揮発性メモリシステム2の代わりに、比較例1の不揮発性メモリシステム102を設けたものであり、他の構成は同様となっている。
【0039】
不揮発性メモリシステム102は、本実施の形態の不揮発性メモリシステム2とは異なり、NAND型フラッシュメモリ102−1上にエラー訂正コードECC2を保存しないためにECC2ブロック212を備えておらず、他の構成は同様となっている。
【0040】
すなわち、この不揮発性メモリシステム102では、本実施の形態と同様にエラー訂正コードECC1を用いてNAND型フラッシュメモリ102−1自身のデータ保持特性の改善を図っているものの、本実施の形態とは異なり、NVRAM22用のエラー訂正コードECC2が設けられていない。
【0041】
したがって、この比較例1では、エラー訂正コードECC2を用いたNVRAM22のデータ22Dに対するビット誤り検出・訂正処理が行われないことになるため、NVRAM22に対する書き換え回数が増大して保持特性が劣化した場合、データエラーが発生する可能性がある。特に、NVRAM22を不揮発性のキャッシュメモリとして使用した場合、ストレージとして機能するNAND型フラッシュメモリ102−1と比べてアクセス頻度が高くなる。このため、NVRAM22は、NAND型フラッシュメモリ102−1以上に高いデータ保持特性が必要となる。しかしながら、この比較例1では、上記したように、NVRAM22におけるデータエラーの発生を防ぐことができないため、不揮発性メモリシステム102全体としての信頼性も低下してしまうことになる。
【0042】
(2−2.比較例2)
次いで、図5は、比較例2に係るメモリシステム(不揮発性メモリシステム202)を備えたデータ記憶システム(データ記憶システム201)のブロック構成を表したものである。この比較例2のデータ記憶システム101は、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム202を備えている。すなわち、本実施の形態のデータ記憶システム1において、本実施の形態の不揮発性メモリシステム2の代わりに、比較例2の不揮発性メモリシステム202を設けたものであり、他の構成は同様となっている。
【0043】
不揮発性メモリシステム202は、本実施の形態の不揮発性メモリシステム2とは異なり、NAND型フラッシュメモリ102−1上にエラー訂正コードECC2を保存しないためにECC2ブロック212を備えていない。その代わりに、この不揮発性メモリシステム202では、NVRAM202−2上にエラー訂正コードECC2を保存する領域が設けられており、他の構成は同様となっている。
【0044】
すなわち、この比較例2では、エラー訂正コードECC2を用いて、NVRAM202−2のデータ22Dに対するビット誤り検出・訂正処理が行われることになる。これにより、上記比較例1と比べ、NVRAM202−2におけるデータ22Dの保持特性の改善が図られ、不揮発性メモリシステム202全体としての信頼性も向上する。
【0045】
ところが、この比較例2の不揮発性メモリシステム202では、NVRAM202−2用のエラー訂正コードECC2がNVRAM202−2自身の内部に保持されていることに起因して、以下のような問題が生じてしまう。
【0046】
(アクセス速度の低下の問題)
まず、1つ目の問題として、NVRAM202−2におけるアクセス速度が低下する(NVRAM202−2の帯域へ悪影響を及ぼす)という副作用が生じてしまい、不揮発性メモリシステム202全体としても動作速度が低下してしまうというものが挙げられる。ここで、比較例2のようにNVRAM202−2内にエラー訂正コードECC2が保持されている場合における、NVRAM202へのアクセス手法としては、以下の2つの手法が考えられる。
【0047】
第1の手法は、図5に示したように、NVRAM202−2上においてデータ22Dのアドレスとは異なるアドレスに、エラー訂正コードECC2を保持するというものである。この手法では、NVRAM202−2に対する1回のアクセスに対して、実施には最低2回(データ22Dへのアクセスと、エラー訂正コードECC2へのアクセスとの2回)のアクセスが必要となる。このため、この第1の手法では、NVRAM202−2における高速なアクセス速度が、1/2に低下してしまうことになる。
【0048】
第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に低下してしまう。
【0049】
このように、上記した2つの手法のいずれにおいても、比較例2ではNVRAM202−2におけるアクセス速度が低下してしまい、不揮発性メモリシステム202全体としても動作速度が低下してしまうことになる。
【0050】
(コスト増加の問題)
また、特に2つの不揮発性メモリとして、NAND型フラッシュメモリ102−1とNVRAM202−2とを用いた場合、比較例2の不揮発性メモリシステム202では、以下のようなコスト増加の問題も生じる。すなわち、一般に、NVRAMはNAND型フラッシュメモリと比べてビット単価が高いことから、比較例2のように、NVRAM202−2用のエラー訂正コードECC2をNVRAM202−2自身の内部に保持した場合、NVRAM202−2の実質のデータ容量が減少する。したがって、不揮発性メモリ202全体として、不揮発性メモリのコストが増大してしまうことになる。
【0051】
(2−3.本実施の形態)
これに対して、本実施の形態の不揮発性メモリシステム2では、図1〜図3に示したように、NVRAM22のデータ22Dに対してエラー訂正コードECC2が適用され、以下詳述するようにしてデータ22Dに対するビット誤り検出・訂正処理が行われる。これにより、上記比較例1の不揮発性メモリシステム102と比べ、NVRAM22におけるデータ保持特性が改善される。
【0052】
また、本実施の形態では、図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における高速なデータアクセス性能は維持されると言える。
【0053】
加えて、本実施の形態では、上記したように、ビット単価が相対的に低いNAND型フラッシュメモリ21側にエラー訂正コードECC2が保持されていることから、上記比較例2とは異なり、上述したコスト増加の問題も回避される(不揮発性メモリのコストが抑えられる)。
【0054】
ここで、以下図6〜図8を参照して、このようなエラー訂正コードECC2を用いたNVRAM22のデータ22Dに対するビット誤り検出・訂正処理について、詳細に説明する。換言すると、NVMコントローラ23は以下のようにして、NVRAM22へのデータ22Dの書き込み時にエラー訂正コードECC2を書き込むと共に、NVRAM22からのデータ22Dの読み出し時またはシステムの起動時に、エラー訂正コードECC2を用いてこのデータ22Dに対するビット誤り検出・訂正処理を行う。
【0055】
(NVRAM22からのデータ読み出し処理)
図6は、エラー訂正コードECC2を用いた、NVRAM22からCPU10へのデータ読み出し処理の一例を流れ図で表したものである。
【0056】
このデータ読み出し処理では、NVMコントローラ23は、ECCバッファ230上に、NVRAM22から読み出すデータ22Dに対応する(必要とされる)エラー訂正コードECC2が存在する(保持されている)のか否かを判断する(ステップS102)。ここで、対応するエラー訂正コードECC2がECCバッファ230上に存在する場合(ステップS102:Y)には、NVMコントローラ23は以下の処理を行う。すなわち、NVRAM22から該当する(読み出し対象とされている)データ22Dを読み出す(ステップS101)のと並行して、このECCバッファ230から対応するエラー訂正コードECC2を読み出す(ステップS103)。
【0057】
一方、対応するエラー訂正コード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へのアクセスを延長(一時停止)する必要がある。
【0058】
ここで、ECCバッファ230内に空き領域がないと判断した場合(ステップS104:N)には、次にNVMコントローラ23は、ECCバッファ230上の空き候補領域を選択する(ステップS107)。具体的には、ECCバッファ230上において、使用頻度(アクセス頻度)が相対的に低い(望ましくは最も低い)と想定されるエラー訂正コードECC2の保持領域を空き候補領域として選択し、空き領域に変更して用いる(バッファ領域の再利用をする)ようにする。
【0059】
次いで、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へと進む。
【0060】
ここで、前述したステップS103の後には、NVMコントローラ23は、エラー訂正コードECC2を用いて、NVRAM22において読み出し対象となっているデータ22Dに対するビット誤り検出・訂正処理を行う(ステップS111)。この際、エラー訂正コードECC2を用いたビット誤り検出・訂正処理は、例えば、一般的に利用されているハミング符号方式を用いて行う。なお、訂正を行うのが不可能なビット誤りが検出された場合には、NVMコントローラ23は、例えばその旨をCPU10へ通知するようにする。そして、NVMコントローラ23は、このようなビット誤り検出・訂正処理後の該当するデータ22Dを、CPU10へ出力する。以上により、図6に示したNVRAM22からCPU10へのデータ読み出し処理が終了となる。
【0061】
なお、このようなデータ読み出し処理(ならびに、以下のデータ書き込み処理およびシステム起動処理)の際には、NVMコントローラ23は、以下のようなエラー訂正コードECC2の先読み機能を利用するのが望ましい。このエラー訂正コードECC2の先読み機能を利用した場合、まず、NVMコントローラ23は、NVRAM22内のデータ22Dへの過去のアクセス履歴を用いて、このNVRAM22内において今後アクセスが行われるデータ22Dを予想する。そして、その予想したデータ22Dに対応するエラー訂正コードECC2を、NVRAM22からECCバッファ230へ予め読み出しておく。このようなエラー訂正コードECC2の先読み機能を利用した場合、NVRAM22におけるアクセスの高速性能の維持が容易となる。
【0062】
(NVRAM22へのデータ書き込み処理)
図7は、エラー訂正コードECC2を用いた、CPU10からNVRAM22へのデータ書き込み処理の一例を流れ図で表したものである。
【0063】
このデータ書き込み処理では、まずNVMコントローラ23は、CPU10から該当する(書き込み対象となる)データ22Dを取得する(ステップS201)。次いで、NVMコントローラ23は、前述した読み出し処理の際におけるステップS102,S104〜S110と同様の処理を行い(ステップS203〜S210)、次に以下のステップS202へと進む。
【0064】
次いで、NVMコントローラ23は、例えば一般的に利用されているハミング符号方式を用いて、取得したデータ22Dに対応するエラー訂正コードECC2を、演算(計算)することにより生成する(ステップS202)。次いでステップS211では、NVMコントローラ23は、計算して得られたエラー訂正コードECC2を、ECCバッファ230へ書き込む(更新する)。このとき、ECCバッファ230上でエラー訂正コードECC2を含んだページは、更新済み状態として登録される。また、それと共に、NVMコントローラ23は、該当するデータ22DをNVRAM22へと書き込む(ステップS212)。以上により、図7に示したCPU10からNVRAM22へのデータ書き込み処理が終了となる。
【0065】
(システム起動処理)
図8は、エラー訂正コードECC2を用いた、不揮発性メモリシステム2の起動処理(システム起動処理)の一例を流れ図で表したものである。
【0066】
このシステム起動処理では、まず、NVMコントローラ23は、NVRAM22における先頭アドレスを設定する(ステップS301)。次いで、NVMコントローラ23は、前述した読み出し処理の際におけるステップS101〜S104,S107,S105,S106,S111と同様の処理を行い(ステップS302〜S309)、次に以下のステップS310へと進む。
【0067】
このステップS310では、ステップS309において実行したビット誤り検出・訂正処理において、訂正を行うのが不可能なビット誤りが検出されたのか否かを判断する。そして、訂正を行うのが不可能なビット誤りが検出された場合(ステップS310:Y)には、次にNVMコントローラ23はその旨をCPU10へ通知することにより(ステップS311)、図8に示したシステム起動処理が終了となる。
【0068】
一方、訂正を行うのが不可能なビット誤りが検出されなかった場合(ステップS310:N)には、次にNVMコントローラ23は、NVRAM22における最終アドレスが対象となっているのか否かを判断する(ステップS312)。ここで、最終アドレスが対象となっていない場合(ステップS312:N)には、NVMコントローラ23は、NVRAM22における対象アドレスに対して「1」を加算し(ステップS313)、前述したステップS303へと戻る。一方、最終アドレスが対象となっている場合(ステップS312:Y)には、図8に示したシステム起動処理が終了となる。
【0069】
このように、不揮発性メモリシステム2が(電源の投入がなされて)起動したときに、NVRAM22上の全てのデータ22Dに対してエラー訂正コードECC2を用いたビット誤り検出・訂正処理を行うことにより、以下の効果が得られる。すなわち、不揮発性のキャッシュメモリとして用いられるNVRAM22上に、データのビット誤りが存在しないことが確認された後に不揮発性メモリシステム2が動作開始となるため、システムの信頼性を向上させることが可能となる。
【0070】
以上のように本実施の形態では、ワード単位でのデータのランダムアクセスが行われるNVRAM22のデータ22Dに適用するエラー訂正コードECC2を、ブロック(ページ)単位でデータのアクセスが行われるNAND型フラッシュメモリ21内に保持するようにしたので、NVRAM22におけるアクセス速度の低下を回避しつつ、このNVRAM22におけるデータ保持特性を改善(向上)することができる。よって、動作速度を低下させることなく、不揮発性メモリシステム2の信頼性を向上させることが可能となる。
【0071】
また、特に本実施の形態では、ビット単価が相対的に低いNAND型フラッシュメモリ21側にエラー訂正コードECC2を保持するようにしたので、不揮発性メモリのコストを抑えることが可能となる。
【0072】
<変形例>
続いて、上記実施の形態の変形例(変形例1,2)について説明する。なお、上記実施の形態における構成要素と同一のものには同一の符号を付し、適宜説明を省略する。
【0073】
[変形例1]
図9は、変形例1に係るメモリシステム(不揮発性メモリシステム2A)を備えたデータ記憶システム(データ記憶システム1A)のブロック構成を表したものである。本変形例のデータ記憶システム1Aは、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2Aを備えている。すなわち、上記実施の形態のデータ記憶システム1において、上記実施の形態の不揮発性メモリシステム2の代わりに、本変形例の不揮発性メモリシステム2Aを設けたものであり、他の構成は同様となっている。
【0074】
不揮発性メモリシステム2Aは、ECCを内蔵したNAND型フラッシュメモリ21と、NVRAM22と、NVMコントローラ23Aとを備えている。
【0075】
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からはアクセスすることはできない。
【0076】
近年、NAND型フラッシュメモリ21AのようにECC処理部を内蔵するようにした製品が存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。
【0077】
[変形例2]
図10は、変形例2に係るメモリシステム(不揮発性メモリシステム2B)を備えたデータ記憶システム(データ記憶システム1B)のブロック構成を表したものである。本変形例のデータ記憶システム1Bは、CPU10、DRAM11、DRAMコントローラ12および不揮発性メモリシステム2Bを備えている。すなわち、上記実施の形態のデータ記憶システム1において、上記実施の形態の不揮発性メモリシステム2の代わりに、本変形例の不揮発性メモリシステム2Bを設けたものであり、他の構成は同様となっている。
【0078】
不揮発性メモリシステム2Bは、MFD(Maneged Flash Drive)21B、NVRAM22およびNVMコントローラ23Aを備えている。このMFD21Bとしては、例えば、SSD(Solid State Drive)、eMMC(Embedded MultiMedia Card)、SDカード、USB(Universal Serial Bus)メモリなどが挙げられる。すなわち、この不揮発性メモリシステム2Bは、不揮発性メモリシステム2において、NAND型フラッシュメモリ21の代わりにMFD21Bを設けたものであり、他の構成は同様となっている。
【0079】
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からはアクセスすることはできない。
【0080】
近年、MFD21Bのようなストレージ製品が多数存在するが、本変形例ではそのような製品を搭載した不揮発性メモリシステムにおいても、上記実施の形態と同様の作用により同様の効果を得ることが可能である。
【0081】
なお、本変形例では、NAND型フラッシュメモリ21の代わりにMFD21Bを設けた例について説明したが、ブロック単位(複数のワード単位)で(一括して)データアクセスを行うストレージデバイスであれば、他のデバイスであってもよい。すなわち、例えば、セクタ単位でデータのアクセスが行われるハードディスクなどを用いるようにしてもよい。
【0082】
[その他の変形例]
以上、実施の形態および変形例を挙げて本発明を説明したが、本発明はこれらの実施の形態等に限定されず、種々の変形が可能である。
【0083】
例えば、上記実施の形態等では、データ記憶システムにおけるワークメモリの一例としてDRAMを挙げて説明したが、これには限られず、DRAM以外の揮発性メモリをワークメモリとして用いるようにしてもよい。
【0084】
また、上記実施の形態等において説明したNVMコントローラ23,23AやDRAMコントローラ12における機能(の一部)を、CPU10側において担うようにしてもよい。
【0085】
更に、上記実施の形態等では、データ記憶システムが、CPU10および不揮発性メモリシステム2に加えてDRAM11およびDRAMコントローラ12を備えている場合について説明したが、場合によっては、DRAM11およびDRAMコントローラ12を設けないようにしてもよい。すなわち、CPU10および不揮発性メモリシステムのみによってデータ記憶システムを構成するようにしてもよい。
【符号の説明】
【0086】
1,1A,1B…データ記憶システム、10…CPU、11…DRAM、12…DRAMコントローラ、2…不揮発性メモリシステム、21,21A…NAND型フラッシュメモリ、211…データブロック、212…ECC2ブロック、211P,212P…ページ、21B…MFD、211S,212S…セクタ、21D…データ、22…NVRAM、22D…データ、23,23A…NVMコントローラ、230…ECCバッファ、231…ECC1処理部、232…ECC2処理部、233…CPU−I/F部、234…フラッシュメモリ−I/F部、235…NVRAM−I/F部、236…ECCバッファ制御部、237…フラッシュメモリ制御部、238…NVRAM制御部、ECC1,ECC2…エラー訂正コード。
【特許請求の範囲】
【請求項1】
ブロック単位でデータのアクセスが行われる第1の不揮発性メモリと、
ワード単位でデータのランダムアクセスが行われる第2の不揮発性メモリと、
前記第1および第2の不揮発性メモリの動作の制御を行う制御部と
を備え、
前記第2の不揮発性メモリのデータに適用されるエラー訂正コードを、前記第1の不揮発性メモリ内に保持する
メモリシステム。
【請求項2】
前記制御部は、前記第2の不揮発性メモリのデータに適用されるエラー訂正コードを前記第1の不揮発性メモリ内から読み出して保持しておくためのバッファ領域を有する
請求項1に記載のメモリシステム。
【請求項3】
前記制御部は、
前記第2の不揮発性メモリのデータへ前記エラー訂正コードを適用する際に、そのデータに対応するエラー訂正コードが前記バッファ領域内に保持されていない場合には、
その対応するエラー訂正コードを、前記第1の不揮発性メモリから前記バッファ領域へ読み出した後に用いる
請求項2に記載のメモリシステム。
【請求項4】
前記制御部は、
前記対応するエラー訂正コードを前記バッファ領域へ読み出す際に、
前記バッファ領域内に空き領域があるのか否かを判断すると共に、
前記空き領域があると判断した場合には、その空き領域に対して読み出したエラー訂正コードを保持する一方、
前記空き領域がないと判断した場合には、使用頻度が相対的に低いと想定されるエラー訂正コードの保持領域を、前記空き領域に変更して用いる
請求項3に記載のメモリシステム。
【請求項5】
前記制御部は、
前記エラー訂正コードの保持領域を前記空き領域に変更する際に、
そのエラー訂正コードに変更が発生していた場合には、そのエラー訂正コードを前記第1の不揮発性メモリ内に事前に書き込んでおく
請求項4に記載のメモリシステム。
【請求項6】
前記制御部は、
前記第2の不揮発性メモリ内のデータへのアクセス履歴を用いて、前記第2の不揮発性メモリ内において今後アクセスが行われるデータを予想し、
その予想したデータに対応するエラー訂正コードを、前記第1の不揮発性メモリから前記バッファ領域へ予め読み出しておく
請求項3に記載のメモリシステム。
【請求項7】
前記制御部は、
前記第2の不揮発性メモリへのデータの書き込み時に、前記エラー訂正コードを付加して書込みを行うと共に、
前記第2の不揮発性メモリからのデータの読み出し時およびシステムの起動時に、前記エラー訂正コードを用いて、前記第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行う
請求項2に記載のメモリシステム。
【請求項8】
前記制御部は、
前記第2の不揮発性メモリに対してデータの書き込みを行う際に、そのデータに対応するエラー訂正コードを、前記バッファ領域上で更新する
請求項7に記載のメモリシステム。
【請求項9】
前記制御部は、
前記第2の不揮発性メモリ内の各データのアドレスと、各データに対応するエラー訂正コードの前記第1の不揮発性メモリ内での保持アドレスとを、対応付けて管理している
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項10】
複数のエラー訂正コードの束が、前記第1の不揮発性メモリ内において前記ブロック単位で保持されている
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項11】
前記第1の不揮発性メモリ内に、この第1の不揮発性メモリのデータに適用される第1エラー訂正コードが、前記第2の不揮発性メモリのデータに適用されるエラー訂正コードとしての第2エラー訂正コードとともに保持されている
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項12】
前記第1の不揮発性メモリが、前記ブロックとしてのページ単位でデータのアクセスが行われるフラッシュメモリ、または、前記ブロックとしてのセクタ単位でデータのアクセスが行われるハードディスクである
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項13】
第1の不揮発性メモリに対して、ブロック単位でデータのアクセスを行うと共に、第2の不揮発性メモリに対して、ワード単位のデータのランダムアクセスを行い、
前記第1の不揮発性メモリ内に保持されているエラー訂正コードを用いて、前記第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行う
メモリシステムの動作方法。
【請求項1】
ブロック単位でデータのアクセスが行われる第1の不揮発性メモリと、
ワード単位でデータのランダムアクセスが行われる第2の不揮発性メモリと、
前記第1および第2の不揮発性メモリの動作の制御を行う制御部と
を備え、
前記第2の不揮発性メモリのデータに適用されるエラー訂正コードを、前記第1の不揮発性メモリ内に保持する
メモリシステム。
【請求項2】
前記制御部は、前記第2の不揮発性メモリのデータに適用されるエラー訂正コードを前記第1の不揮発性メモリ内から読み出して保持しておくためのバッファ領域を有する
請求項1に記載のメモリシステム。
【請求項3】
前記制御部は、
前記第2の不揮発性メモリのデータへ前記エラー訂正コードを適用する際に、そのデータに対応するエラー訂正コードが前記バッファ領域内に保持されていない場合には、
その対応するエラー訂正コードを、前記第1の不揮発性メモリから前記バッファ領域へ読み出した後に用いる
請求項2に記載のメモリシステム。
【請求項4】
前記制御部は、
前記対応するエラー訂正コードを前記バッファ領域へ読み出す際に、
前記バッファ領域内に空き領域があるのか否かを判断すると共に、
前記空き領域があると判断した場合には、その空き領域に対して読み出したエラー訂正コードを保持する一方、
前記空き領域がないと判断した場合には、使用頻度が相対的に低いと想定されるエラー訂正コードの保持領域を、前記空き領域に変更して用いる
請求項3に記載のメモリシステム。
【請求項5】
前記制御部は、
前記エラー訂正コードの保持領域を前記空き領域に変更する際に、
そのエラー訂正コードに変更が発生していた場合には、そのエラー訂正コードを前記第1の不揮発性メモリ内に事前に書き込んでおく
請求項4に記載のメモリシステム。
【請求項6】
前記制御部は、
前記第2の不揮発性メモリ内のデータへのアクセス履歴を用いて、前記第2の不揮発性メモリ内において今後アクセスが行われるデータを予想し、
その予想したデータに対応するエラー訂正コードを、前記第1の不揮発性メモリから前記バッファ領域へ予め読み出しておく
請求項3に記載のメモリシステム。
【請求項7】
前記制御部は、
前記第2の不揮発性メモリへのデータの書き込み時に、前記エラー訂正コードを付加して書込みを行うと共に、
前記第2の不揮発性メモリからのデータの読み出し時およびシステムの起動時に、前記エラー訂正コードを用いて、前記第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行う
請求項2に記載のメモリシステム。
【請求項8】
前記制御部は、
前記第2の不揮発性メモリに対してデータの書き込みを行う際に、そのデータに対応するエラー訂正コードを、前記バッファ領域上で更新する
請求項7に記載のメモリシステム。
【請求項9】
前記制御部は、
前記第2の不揮発性メモリ内の各データのアドレスと、各データに対応するエラー訂正コードの前記第1の不揮発性メモリ内での保持アドレスとを、対応付けて管理している
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項10】
複数のエラー訂正コードの束が、前記第1の不揮発性メモリ内において前記ブロック単位で保持されている
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項11】
前記第1の不揮発性メモリ内に、この第1の不揮発性メモリのデータに適用される第1エラー訂正コードが、前記第2の不揮発性メモリのデータに適用されるエラー訂正コードとしての第2エラー訂正コードとともに保持されている
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項12】
前記第1の不揮発性メモリが、前記ブロックとしてのページ単位でデータのアクセスが行われるフラッシュメモリ、または、前記ブロックとしてのセクタ単位でデータのアクセスが行われるハードディスクである
請求項1ないし請求項8のいずれか1項に記載のメモリシステム。
【請求項13】
第1の不揮発性メモリに対して、ブロック単位でデータのアクセスを行うと共に、第2の不揮発性メモリに対して、ワード単位のデータのランダムアクセスを行い、
前記第1の不揮発性メモリ内に保持されているエラー訂正コードを用いて、前記第2の不揮発性メモリのデータに対するビット誤りの検出および訂正処理を行う
メモリシステムの動作方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2012−155430(P2012−155430A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−12544(P2011−12544)
【出願日】平成23年1月25日(2011.1.25)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願日】平成23年1月25日(2011.1.25)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]