(57)【要約】【課題】キャッシュの１ページ単位毎に設定される有効フラグに基づいて低速・大容量のフラッシュメモリの読み出し処理を効率よく実行する半導体メモリ装置を提供。【解決手段】実施形態の半導体メモリ装置は、ＣＰＵと、低速で大容量のフラッシュメモリと、フラッシュメモリに記憶される一部のデータを記憶するキャッシュメモリと、キャッシュメモリのアクセスを制御するホストインターフェイスと、ホストからのデータ、または前記フラッシュメモリからのデータが書き込まれた場合は有効ビットを、それ以外は非有効ビットを示すフラグがＣＰＵによって設定されるフラグレジスタを有し、フラッシュメモリからキャッシュメモリに各ページのデータをコピーする際に、フラグレジストの内容が非有効ビットを示すセクタのみにキャッシュメモリの内容を書き換える制御手段と、を具備し、コピーが終了した後のキャッシュメモリの複数ページの書換え済みデータをフラッシュメモリに書き戻すことを特徴とする。【選択図】図４
2014197265.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
低速で大容量のフラッシュメモリと、
前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、
外部のホストからのライトコマンドにより転送されるデータを保持すると共に、前記キャッシュメモリのアクセスを制御するホストインターフェイスと、
前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記ホストからの前記データ、または前記フラッシュメモリからのデータが書き込まれた場合は有効ビットを、それらのデータがない場合は非有効ビットを示すフラグが前記ＣＰＵによって設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに各ページのデータをコピーする際に、前記フラグレジストの内容が前記非有効ビットを示すセクタのみに前記キャッシュメモリの内容を書き換える制御手段と、
を具備し、
前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする半導体メモリ装置。
【請求項２】
ＣＰＵと、
低速で大容量のフラッシュメモリと、
前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、
前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記ＣＰＵがガーベージコレクションを実行すると判断した時に、非有効ビットを示すフラグが設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに有効なページのデータをコピーする際に、前記フラグレジストの前記非有効ビットに基づき前記キャッシュメモリの割り当てられた領域に書き込む制御手段と、
を具備し、
前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする半導体メモリ装置。
【請求項３】
前記フラグレジスタは、１セクタ転送する毎に１ビットシフトするシフトレジスタであって、その出力端は前記フラッシュメモリを構成するＲＡＭのライトプロテクションの信号端子に接続されていることを特徴とする請求項１又は請求項２に記載の半導体メモリ装置。
【請求項４】
前記フラグレジスタから前記有効ビットを示すフラグが出力された場合、前記ＲＡＭはライトプロテクションとなることを特徴とする請求項１に記載の半導体メモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、低速で大容量のフラッシュメモリを使用した半導体メモリ装置に関する。
【背景技術】
【０００２】
現在、一般的に販売されているＳＳＤ（半導体ディスク）は、記憶媒体としてそのほとんどがＮＡＮＤフラッシュメモリを使用している。また、その構造は、基板上にＮＡＮＤフラッシュメモリチップとＮＡＮＤフラッシュコントローラ（ＬＳＩ）を実装している。こうした一般市場向けのＳＳＤ製品は大量生産され、メモリチップもチップメーカーから大量に購入することによりチップ単価を安く抑えることができ、製品一台当たりの価格も低く抑えることができる。また、メモリチップを直接制御することにより性能（スピード）を最大限に伸ばすことも可能となる。
【０００３】
しかし、特定用途または特定顧客向けの特殊仕様で少量生産品のような場合には、メモリチップの購入数も少量となり価格が割高になってしまう。また、メモリチップもたびたび新しい仕様（デザインルール）の製品に生まれ変わっていくため、そのたびに装置（＝製品自体）も新しくしなければならなくなり、製品単価にしめる開発費の割合が大きくなり、さらに価格が高くなってしまうという欠点がある。
【０００４】
このような少量生産とならざるを得ないような製品の場合には、コンパクトフラッシュ（登録商標）メモリ（以下、ＣＦメモリと略す）を代表とするフラッシュメモリカードが有効となる。フラッシュメモリカードのインターフェイスは、それぞれの規格で決まっており、内部で使用しているＮＡＮＤフラッシュチップのメーカや容量等に関係しないので、容量が大きくなる場合もあるかもしれないが、それを除けば、ほぼ同じコンパチブル品として使用し続けることができる。カードメーカは、ＮＡＮＤメモリチップを大量に購入し生産するため、ＣＦメモリカードを使用すればＳＳＤに負けないくらいの低コストで半導体メモリ装置を作ることができる可能性がある。
【０００５】
ＣＦメモリは、電力が遮断されても記憶した内容が保持される不揮発性であること、また繰り返しデータの書込みや消去ができること、振動や騒音がなく、消費電力が少ない等の特長を有することから、記憶装置として幅広く利用されている。そして、一般的にＣＦメモリやＳＤ（Secure Digital）メモリには、ＮＡＮＤフラッシュメモリが使用されている。
【０００６】
ＮＡＮＤフラッシュメモリにおけるデータの書込み又は消去は、フラッシュメモリを構成しているブロック単位で行われている。また、フラッシュメモリに書込まれたデータを書換える場合は、前のデータをブロック単位で消去し、新しいデータを書込むという処理が行われる。しかし、ＮＡＮＤフラッシュメモリは特性上寿命があり、その書込み回数には上限がある。したがって、効率の悪い無駄な書込み又は消去は、フラッシュメモリの寿命を短くする一因となる。
【０００７】
また、フラッシュメモリカードはＮＡＮＤコントローラを内蔵しており、ＮＡＮＤコントローラはＮＡＮＤの制御をすべて行っている。一般的に、ＮＡＮＤコントローラは性能が遅く、フラッシュメモリカードを使用して記憶装置を構成した場合に、ＳＳＤ並の性能を出すことは、よほどの工夫をしない限りほとんど不可能に近い。
【０００８】
例えばＣＦメモリを単体で使用するシステム、またはＣＦメモリを使用したフラッシュメモリ装置（ＳＳＤ）では、図９に示すように、ホストまたはＳＳＤシステム（ＳＳＤ内でのＣＦメモリ制御部）ＡとＣＦメモリＢはＰＡＴＡインターフェイスＣを介して接続されている。そして、ＣＦメモリＢはＮＡＮＤコントローラＢ１とＮＡＮＤチップＢ２から構成されている。このような構成において、ホストＡからＮＡＮＤチップＢ２に格納したデータをアクセスする場合、ホストＡからＮＡＮＤコントローラＢ１にアクセス指令を出し、ＮＡＮＤコントローラＢ１がＮＡＮＤチップＢ２をアクセスして、その結果をホストＡに出力する動作となる。このような構成では、ＮＡＮＤコントローラＢ１の処理速度がホストＡに比べて極端に遅いという課題がある。
【０００９】
それは、単純にＣＦメモリＢを必要な容量分だけ並べて、論理アドレスを固定してＣＦメモリＢに割り当てた様なシステムでは、性能低下が顕著に現れる。特に、ホストＡからＣＦメモリＢに保存されたデータを書換える場合は、ＣＦメモリＢの内部でＮＡＮＤチップＢ２からデータを一度読み出し、書換えデータがあるセクタのみを上書きし、消去済みのＮＡＮＤチップＢ２に書き戻すという処理が行われる。この動作は、１セクタのみ書き換える場合でも、ＮＡＮＤチップＢ２の特性上１ブロック全体を書き換えなければならない。これにより、処理が遅いというだけではなく、ブロック消去が大量に発生することによるＮＡＮＤチップＢ２の寿命低下という致命的な欠点にもつながっていた。
【００１０】
一方、キャッシュメモリの技術分野においては、１バイト単位でのデータの書換えを行う場合には、物理ブロック単位に消去を行ってから書換えるようにしていることから、書換えの必要のない部分まで書換えを行い、書換え回数が増えてしまう欠点がある。その技術的課題に着目して、書換えデータを書込む際、その書換えデータと１番目エリアの書換え対象位置のデータとの排他的論理和をとり、さらに、この排他的論理和のデータと２番目エリアの前記位置のデータとの排他的論理和をとる処理を順次繰り返し、その過程で当該エリアの前記位置のデータが初期値であったとき、そのエリアの前記位置にそれまでに求めた排他的論理和のデータを書き込む方法がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−３８５１８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明が解決しようとする課題は、低速で大容量のフラッシュメモリを用いるシステムで、キャッシュメモリの１セクタ単位毎に設定されるフラグの内容を用いてフラッシュメモリに対するライトバックの処理およびガーベージコレクションの処理を効率よく実行することのできる半導体メモリ装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
実施形態に係る半導体メモリ装置は、ＣＰＵと、低速で大容量のフラッシュメモリと、前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、外部のホストからのライトコマンドにより転送されるデータを保持すると共に、前記キャッシュメモリのアクセスを制御するホストインターフェイスと、前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記ホストからの前記データ、または前記フラッシュメモリからのデータが書き込まれた場合は有効ビットを、それらのデータがない場合は非有効ビットを示すフラグが前記ＣＰＵによって設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに各ページのデータをコピーする際に、前記フラグレジストの内容が前記非有効ビットを示すセクタのみに前記キャッシュメモリの内容を書き換える制御手段と、を具備し、前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする。
【００１４】
また、実施形態に係る半導体メモリ装置は、ＣＰＵと、低速で大容量のフラッシュメモリと、前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記ＣＰＵがガーベージコレクションを実行すると判断した時に、非有効ビットを示すフラグが設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに有効なページのデータをコピーする際に、前記フラグレジストの前記非有効ビットに基づき前記キャッシュメモリの割り当てられた領域に書き込む制御手段と、を具備し、前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ライトコマンド時、フラッシュメモリの内容を一部分書き換える際に発生するフラッシュメモリのリード動作をできるだけ減らすことができる。また、有効なデータだけが一個所にまとめられ、ガーベージ（ゴミ）しか含まない再生可能なセクタの領域が生成できるガーベージコレクションの動作を効率的に行うことができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態に係る半導体メモリ装置並びにシステムブロックを示す図である。
【図２】実施形態に係るセクタ単位にＤフラグを持つキャッシュメモリの構成を示す図である。
【図３】キャッシュメモリの各ページの情報を示す図である。
【図４】実施形態に係るＤフラグによるＣＦメモリからのデータをキャッシュメモリに書き換える機構を示す図である。
【図５】図４の動作を示すフローチャート。
【図６】ガーベージコレクション処理を示す図である。
【図７】実施形態に係るＤフラグによるガーベージコレクション処理で、ＣＦメモリからのデータをキャッシュメモリにコピーする機構を示す図である。
【図８】図７の動作を示すフローチャート。
【図９】従来のホストとＣＦメモリの接続構成を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態に係る半導体メモリ装置を、図面を参照して説明する。
まず、ライトコマンド時、フラッシュメモリの内容を一部分書き換える際に発生する、フラッシュメモリのリード動作をできるだけ減らすことについて説明する。
【００１８】
図１は、実施形態に係る半導体メモリ装置並びに同装置を用いたシステムブロックを示す図である。図２において、半導体メモリ装置１００は、ＣＰＵ１１０、ＣＰＵバス１２０、フラッシュメモリ（ここでは、ＣＦメモリを用いているので、以下ではＣＦメモリと称する）１３０、ＣＦコントローラ１４０、キャッシュメモリ（ＤＲＡＭ）１５０、キャッシュコントローラ１６０、ホストインターフェイス１７０、ローカルバス１８０、ＲＡＭ１９０、ＲＯＭ１９５を有している。半導体メモリ装置１００のホストインターフェイス１７０は、外部のホスト２００のホストバス２１０と接続されている。ＣＦメモリ１３０は、メインメモリを構成するもので、低速・大容量のメモリである。キャッシュメモリ１５０は、ＣＦメモリ１３０に格納されるデータの一部のデータの写しを記憶する高速・小容量のメモリである。
【００１９】
そして、半導体メモリ装置１００のＣＰＵバス１２０には、ＣＰＵ１１０、ＣＦコントローラ１４０、ＲＡＭ１９０、ＲＯＭ１９５などが接続されている。また、ローカルバス１８０には、キャッシュコントローラ１６０、ホストインターフェイス１７０、ＣＦコントローラ１４０などが接続されている。ＣＰＵバス１２０とローカルバス１８０は、直接およびＣＦコントローラ１４０を経由して接続されている。ＣＰＵ１１０は、ＣＦコントローラ１４０を介してＣＦメモリ１３０をアクセスすることができる。また、ＣＰＵ１１０は、キャッシュコントローラ１６０又はＣＦコントローラ１４０−キャッシュコントローラ１６０を介してキャッシュメモリ１５０をアクセスすることができる。ＲＡＭ１９０、ＲＯＭ１９５は、ＯＳ、ファームウェア、及びアプリケーション等のプログラムの格納領域、並びに実行時の作業領域となるメモリである。
【００２０】
ホスト２００と半導体メモリ装置１００のホストインターフェイス１７０とを接続するホストバス２１０は、例えばＳＣＳＩバスやＳＡＴＡバスである。ホストインターフェイス１７０は、ホストバス２１０を介してホスト２００との間のコマンド、データの転送を制御する。ホスト２００からライトするデータ又はホスト２００へのリードするデータは、一時的にキャッシュメモリ１５０に蓄えられる。つまり、ホスト２００から半導体メモリ装置１００に対するリード／ライトコマンド実行時には、ホストインターフェイス１７０、キャッシュコントローラ１６０を介してキャッシュメモリ１５０との間でデータがやりとりされる。
【００２１】
ホスト２００からのライトコマンド実行時は、ホスト２００から送られてきたライトデータをホストインターフェイス１７０で保持した後、キャッシュメモリ１５０に転送する。キャッシュメモリ１５０は、ページ単位で管理されている。例えば、１ページ＝６４セクタのサイズとする。その後、キャッシュメモリ１５０のライトデータは、ＣＦメモリ１３０に転送される。キャッシュメモリ１５０とＣＦメモリ１３０との間の転送の最小サイズは、例えば１ページである。
【００２２】
ホスト２００からのリードコマンド実行時は、キャッシュメモリ１５０がヒットしているかミスしているかによって、それ以前のライトキャッシュに対して実行されたライトコマンドによるライトデータか、またはＣＦメモリ１３０からキャッシュメモリ１５０に転送されたデータが、ホスト２００に転送される。ＣＦメモリ１３０の制御は、ＣＦコントローラ１４０が行う。これらＣＦコントローラ１４０、ホストインターフェイス１７０、及びキャッシュコントローラ１６０等の全体を制御するのがＣＰＵ１１０である。
【００２３】
（キャッシュメモリの構造）
次に、キャッシュメモリ１５０の構造について説明する。キャッシュメモリ１５０は、一般的に数ＭＢ（メガバイト）〜数十ＭＢの容量がある。ここでは、図２に示すように、キャッシュメモリ１５０の容量を、例えば６４ＭＢとし、例えば１ページ＝６４セクタ＝３２ＫＢ（キロバイト）単位で管理することにする。したがって、キャッシュメモリ１５０は、６４ＭＢ÷３２ＫＢ＝２０４８ページで構成される。
キャッシュメモリ１５０の各ページ情報として、図３に示すように、
（１）論理アドレス
（２）ヴァリッドフラグ「Ｖ」（１ビット）
（３）Ｄフラグ（６４ビット）
（４）ＬＲＵ情報
という４種類の値を有する。これら４つの値を格納する場所は、どこでも構わないが、例えばＣＰＵ空間にあるＲＡＭ１９０上でも構わない。これら４つの値を１セット（１ページ分）として、２０４８ページ分保有しておく。
【００２４】
（１）論理アドレスは、ページに対応する論理アドレスであり、ホスト２００からのリード／ライトコマンドで指定されるアドレスと同じ意味である。値としては、各６４セクタの先頭のアドレス、例えば0x000000,0x000040,0x000080,‥‥という値を持つ。
（２）ヴァリッドフラグ「Ｖ」は、そのページが有効か否かを示すフラグである。有効ならばＶ＝“１”、無効ならばＶ＝“０”となる。
（３）Ｄフラグは、ページ内の各セクタに有効なデータが存在するかどうかを示すフラグであり、ここの例では１ページ＝６４セクタなので、Ｄフラグは６４ビットである。
（４）ＬＲＵ−Ｕ／ＬＲＵ−Ｄは、キャッシュメモリ１５０の空きページがなくなって、ページの追い出しの必要性が発生したときに、２０４８ページの内のどのページから追い出していくかを決めるための情報である。ＬＲＵとは、Least Recently Usedアルゴリズムである。このアルゴリズムは、「最も昔に使用された」ページから追い出しを行うという、追い出しの順番を決める方法の一つである。値としては０〜２０４７までの値、２つで１セットを構成している。例えば、あるページ（ページ番号Ｍ）について、現在Ｎ番目にアクセスされたページだとする。ＬＲＵ情報はポインタ値となっていて、ＬＲＵ−Ｕは、自分よりひとつ上（より新しくアクセスされた）ページのページ番号を示す。ＬＲＵ−Ｄは、自分よりひとつ下のページを指す。このように各ページは上下２方向の数珠つなぎになっている。
【００２５】
ここで、キャッシュメモリ１５０のページ番号Ｍがアクセスされたとすると、このエントリは最も最近使用されたということで、最上位に移動される。最上位への移動処理は、現在つながっている数珠の位置から切り離して、一番上位の端に繋ぎ変える。切られたＮ−１番目とＮ＋１番目をつなぎ直さなければならないが、それらが何ページ目かは２つのポインタ（ＬＲＵ−Ｕ／ＬＲＵ−Ｄ）を見ればわかる。
【００２６】
キャッシュメモリ１５０がヒットしているかミスしているかは、リード／ライトコマンドで指定されたアドレスと同じアドレスで、かつ、ヴァリッドフラグ「Ｖ」が“１”のページが存在するかどうかを調べればよい。
【００２７】
次に、ホスト２００から半導体メモリ装置１００へ書き込み動作について説明する。
ホスト２００からライトコマンドが半導体メモリ装置１００のホストインターフェイス１７０に発行されると、ホストインターフェイス１７０は、ＣＰＵ１１０に割込みを掛けてライトコマンドが受信したこと、およびコマンド内容を知らせる。ＣＰＵ１１０は、書き込みアドレスがキャッシュメモリ１５０でヒットしているかどうかを調べ、ヒットしていたならば該当するキャッシュメモリ１５０のアドレス位置にライトデータを転送するようホストインターフェイス１７０を設定して、ライトデータの書き込み動作を実行する。
【００２８】
もしも、キャッシュメモリ１５０に対するライトキャッシュがミス（キャッシュミス）であったならば、キャッシュメモリ１５０に１ページ分の新しい領域を割り当てて、このキャッシュメモリ１５０の新しい領域のアドレス位置にヒットするライトデータを転送するようホストインターフェイス１７０を設定して、ライトデータの書き込み動作を実行する。もしも、キャッシュメモリ１５０に空きページが無い場合には、キャッシュ追い出しアルゴリズム（こここでは、ＬＲＵアルゴリズム）により、最も過去にアクセスされたページをＣＦメモリ１３０に書き戻し（＝ライトバック）、空きページを確保する。
【００２９】
（ライトバック）
ＣＰＵ１１０は、キャッシュメモリ１５０からＣＦメモリ１３０へのライトバックをページ単位で行う。まず、ＣＰＵ１１０は、図２に示すキャッシュメモリ１５０の各ページのＤフラグレジスタに“０”となっているビット（セクタ）が存在するかどうかを調べる。もしも“０”のセクタがあったならば、ＣＦメモリ１３０の対応するセクタからのデータをキャッシュメモリ１５０の当該セクタに読み込まなければならない。
【００３０】
（Ｄフラグを使用したＣＦメモリ／キャッシュメモリの動作）
ＣＰＵ１１０は、ＣＦメモリ１３０からデータを読み込む際に、キャッシュメモリ１５０のＤフラグが“１”となっているセクタを避けてデータを転送しなければならない。つまり、キャッシュメモリ１５０のＤフラグが“０”（有効なセクタ）のセクタに対してのみリード動作を実行する。しかし、ヒットしているページならばライトデータがまばらに存在する、言い換えればＤフラグに“１”と“０”がランダムに混在した状態となっている可能性は十分考えられる。そのような場合、いちいち“０”のセクタだけ選び出して、それに対応するＣＦメモリ１３０にリード動作を行うことは処理的に煩雑すぎるし、実際に動作を行った場合にＣＦメモリ１３０のオーバヘッドが大きすぎて実用的な性能を出すことができない。
【００３１】
そこで実施形態では、Ｄフラグが“０”のセクタのみに対してのみデータの読み出しを行ったかのように動作する機構をキャッシュメモリ１５０に設けた。ここでは、一例としてキャッシュメモリ１５０を一般的なＤＲＡＭとして説明するが、より高速なＳＤＲＡＭ、ＤＤＲ等でも同じ原理である。
【００３２】
図４は、ＤフラグレジスタによるＣＦメモリ１３０からのデータをキャッシュメモリ１５０に書き換える機構を示す図である。この機構は、キャッシュコントローラ１６０にＤフラグレジスタ（６４ビットのシフトレジスタ）３００を設ける。Ｄフラグレジスタ３００は、ＣＦメモリ１３０からキャッシュメモリ１５０への１セクタ毎のデータ転送に応じて１ビットずつシフト動作する。キャッシュコントローラ１６０は、キャッシュメモリ１５０を構成するＤＲＡＭ３３０を制御するために、ＤＲＡＭ３３０に対しアドレス、Ｒ／Ｗの制御信号等のＤＲＡＭ制御信号を出力する。ＤＲＡＭ３３０のデータ信号は、ＣＦメモリ１３０又はホストインターフェイス１７０から入出力される。ＤＲＡＭ３３０は、メーカ毎にいろいろな種類のものが販売されているが、どのＤＲＡＭにもライトプロテクトの信号端であるＤＭ（Input data mask）信号端子が存在する。ただし、各メーカやメモリの種類によって信号名が違ったり、形態が異なっていたりするが、原理は同じである。
【００３３】
そこで実施形態では、Ｄフラグレジスタ３００の出力端とＤＲＡＭ３３０のＤＭ端子とを接続する構成とする。ＤＲＡＭ３３０は、このＤＭ信号「Ｈ」＝“１”が入力されると、ライトプロテクト（書き込み禁止）を掛けることができる。実施形態ではこの原理を利用して、Ｄフラグレジスタ３００の値が“０”の有効なセクタのみに対してデータの書き換えが行える仕組みを実現する。一方、Ｄフラグレジスタ３００の値が“１”のセクタに対しては、ライトプロテクトが掛かり、ＤＲＡＭ３３０の内容がそのまま保持される。
【００３４】
次に、図５のフローチャートを用いて、図４の動作について説明する。先ず、ＣＰＵ１１０は、ＣＦメモリ１３０から１ページ（６４セクタ）分のデータをリードするよう、ＣＦコントローラ１４０に対して指令を出す（Ｓ１００）。即ち、キャッシュメモリ側の状態（有効ではないセクタ）により、ＣＦメモリ１３０に対してセクタ単位に頻繁にリード要求を行う必要がない。一方、ＣＰＵ１１０は、キャッシュコントローラ１６０のＤフラグレジスタ３００に、ＣＦメモリ１３０から読み込もうとしているキャッシュの１ページに対応するＤフラグの値（６４ビット）をセットする（Ｓ１１０）。
【００３５】
キャッシュコントローラ１６０は、ＣＦメモリ１３０から１セクタずつリードデータが送られてくる度にキャッシュメモリ１５０のＤＲＡＭ３３０に対してライト動作を行うが、同時に転送先のアドレスに連動してＤフラグレジスタ３００の値をＤＲＡＭ３３０のＤＭ端子に出力する。Ｄフラグレジスタ３００は、１セクタ転送毎に１ビットずつシフトする。これにより、Ｄフラグレジスタ３００の値が“１”の場合には、ＣＦメモリ１３０から１セクタ分データが転送されているのにかかわらず、ＤＲＡＭ３３０は書き換えられずに元のデータを維持することができる。一方、Ｄフラグレジスタ３００の値が“０”の場合には、ＣＦメモリ１３０から転送される１セクタ分データがＤＲＡＭ３３０に書き込まれる（Ｓ１２０）。そして、ＣＦメモリ１３０からの１ページ分の書き換えが終了したかをチェックし（Ｓ１３０）、終了していなければ、Ｓ１２０を繰り返し実行する。６４セクタ分のデータをＣＦメモリ１３０からキャッシュメモリ１５０のＤＲＡＭ３３０に転送し終わった後は、ＣＰＵ１１０は、キャッシュメモリ１５０の当該書き込み対象ページ（６４セクタ）のＤフラグにすべて“１”をセットし、処理を終了する（Ｓ１４０）。
【００３６】
（ライトバック）
キャッシュメモリ１５０からＣＦメモリ１３０へのライトバックは、ページ単位で行うが、一般的にＣＦメモリ１３０は物理ブロック単位でイレーズ／ライトを行うため、物理ブロック分をまとめてライトバックを行わなければならない。もしも、物理ブロックのサイズと異なるサイズでＣＦメモリ１３０に対してライトしたとすると、ＣＦメモリ１３０の内部では書き換えないデータが発生するためリード・モディファイ・ライトを行わなければならなくなる。すると、ＣＦメモリ１３０を構成するＮＡＮＤメモリ間でのデータ読み出し／書き戻しが大量に発生し、オーバヘッドでＣＦメモリ１３０は大幅な性能低下に陥ってしまう。
【００３７】
また、キャッシュメモリ１５０の１ページも物理ブロックと同じサイズにすれば話が単純になるが、キャッシュメモリ１５０のページサイズを大きくしすぎると総ページ数が減り、ミスする確率が上がってしまう。これにより、逆に性能が低下してしまうため、サイズは十分検討して決める必要がある。
【００３８】
従って、ライトバック動作では、１物理ブロック（例えば、２０４８セクタ＝３２ページ）で行うために、ＣＦメモリ１３０上で常に連続した１物理ブロック（ここでは、２０４８セクタ）分の領域を確保しなければならない。このため、ＣＦメモリ１３０上のアドレスとライトバックされたキャッシュメモリ１５０に対応する以下の３種類のアドレス変換テーブルを用意する。
（ａ）論理−物理アドレス変換テーブル
（ｂ）物理−論理アドレス変換テーブル
（ｃ）ヴァリッドページフラグテーブル
【００３９】
（ａ）論理−物理アドレス変換テーブルは、通常のライトバックで必要となるテーブルで、ホスト２００からリード／ライトコマンドが出力された際に、要求されたデータがＣＦメモリ１３０のどこに格納されているかを調べるためのテーブルである。リード／ライトコマンドで指定されたアドレスが論理アドレスであり、このテーブルによって対応する物理アドレスが求められる。
（ｂ）物理−論理アドレス変換テーブルは、逆にＣＦメモリ１３０上のアドレス（物理アドレス）を入力すると論理アドレスが求まるテーブルである。これは、ガーベージコレクションと呼ばれる動作の時に必要となる。
（ｃ）ヴァリッドページフラグテーブルは、ＣＦメモリ１３０の６４セクタ毎に１ビット、４バイト当たりＣＦメモリの２０４８セクタ分に相当する。
【００４０】
（ガーベージコレクション）
次に、ガーベージコレクションの効率的な動作について説明する。
１物理ブロック（例えば、３２ページ（２０４８セクタ単位））でライトバックする場合、ＣＦメモリ１３０に一度ライトしたデータは当然ながらいつかは書き換えられる。すると、ＣＦメモリ１３０上でキャッシュメモリ１５０のページ（６４セクタ）単位で古いデータ（ガーベージ：ゴミ）が残ることになる。この古いデータをそのままにしておくと、ＣＦメモリ１３０全体にガーベージが散乱して、連続した３２ページ（２０４８セクタ）が確保できなくなり、ライトバックができなくなる。
【００４１】
図６は、ＣＦメモリ１３０上のガーベージ発生の一例を示す図である。図中、１つの升目はページ単位のデータを示し、各行が１物理ブロック単位のデータを示すものとする。また、網掛け部の四角は、ガーベージが発生したページ（無効なデータ）を示している。その結果、図６（ａ）の例では、下から１行目のブロックと下から４つ目のブロックのみにしか、１物理ブロック（例えば、２０４８セクタ）のデータが確保できなくなっている。
【００４２】
そこで、そのような状況を判断したＣＰＵ１１０は、ＣＦメモリ１３０中の各物理ブロックで、ガーベージの発生が多い物理ブロック（図６（ａ）の例では、１行目、３行目、６行目）を抽出し、ＣＦコントローラ１４０に対し、それらの各物理ブロックの中で有効なページ（図６の例では、符号（ａ），（ｂ）‥‥（ｈ））を読み出し、１物理ブロック分のデータをキャッシュメモリ１５０に集めるリード動作を実行する。その後、ＣＰＵ１１０はＣＦコントローラ１４０に対し、キャッシュメモリ１５０に書き込んだ１物理ブロック分のデータをＣＦメモリ１３０にライトバックする指令を出す。これにより、ＣＦメモリ１３０は図６（ｂ）に示すように、最下位のブロックに有効なページが寄せ集められた１物理ブロックのデータが格納されると共に、１行目、３行目、６行目のブロックにはゴミしか含まない再生可能な１物理ブロック（例えば、２０４８セクタ）の領域が生成される。このゴミしか含まないブロックには、次回のライトバック時に新しいブロックデータを上書きすることができる。この動作により、ガーベージコレクションが完了する。
【００４３】
（Ｄフラグを使用したガーベージコレクション動作）
図７は、上述したガーベージコレクションを行うときに、図５に示したＤフラグレジスタを用いて、ＣＦメモリ１３０の有効なページ（図６の符号（ａ），（ｂ）‥‥（ｈ））を読み出して、キャッシュメモリ１５０に書き込を行う回路を示している。
【００４４】
図８は、ガーベージコレクションにおける、ＣＰＵ１１０又はＣＦコントローラ１４０又はキャッシュコントローラ１６０の動作を示すフローチャートである。ＣＰＵ１１０は、ガーベージコレクションが必要と判断したとき、上述したヴァリッドページフラグテーブルを検索して、４バイト毎（＝３２ページ分）に“１”のビット数（有効なページ数）を数える動作を６４回（２０４８セクタ）行い、ガーベージ（ゴミ）をたくさん含んでいる個所を調べる。即ち、４バイト中の値が“１”のビットを数え、その数が少ない個所を調べる。４バイト中にひとつでも“１”のビットがあると言うことは、その他の“０”のビットは全てゴミということである。そこで、“１”のビット数が少ない４バイトを見つけたら、その中で“１”のビットに対応するＣＦメモリ１３０の例えば６４セクタの論理アドレスを物理−論理アドレス変換テーブルから求める。論理アドレスが求まったらそれらをすべて一旦キャッシュメモリ１５０に読み出す（Ｓ２００）。
【００４５】
この読み出し動作時、ＣＰＵ１１０は、図７に示すＤフラグレジスタ３００（６４ビット）にオール“０”の値をセットする。そして、例えば図６（ａ）に示したＣＦメモリ１３０のページ（ａ）の６４セクタをキャッシュメモリ１５０に割り当てると共に、ヴァリッドフラグを“１”に設定して、ＣＦコントローラ１４０に指令する（Ｓ２１０）。すると、ＣＦコントローラ１４０は、ライトバック動作の要領にて、ＣＦメモリ１３０から読み出した各セクタのデータをキャッシュメモリ１５０を構成するＤＲＡＭ３３０の割り当てた領域に書き込む（Ｓ２２０）。この時、キャッシュコントローラ１６０のＤフラグレジスタ３００の値はオール“０”であるため、ＤＲＡＭ３３０に対するライトプロテクションはディセーブルされている。つまり、通常の書込み動作が行われる。ＣＦコントローラ１４０は、このようなＣＦメモリ１３０からの読み出しと、キャッシュメモリ１５０への書込み動作をページ（ａ）の６４セクタ分を実行して（Ｓ２３０）、１ページ分の移動動作を実行する。ＣＦコントローラ１４０は、他の有効ページ（図６（ａ）のページ（ｂ）、（ｃ）‥‥（ｇ））についても同様の動作を行う（Ｓ２４０，Ｓ２５０）。これにより、キャッシュメモリ１５０の割り当てられた領域には、１物理ブロック分のデータの移動が完了する。
【００４６】
その後、ＣＰＵ１1０は、ＣＦコントローラ１４０に対しライトバック指令を出すと、ＣＦコントローラ１４０は、キャッシュメモリ１５０の当該１物理ブロックのデータをＣＦメモリ１３０へ書き戻す（Ｓ２６０）。これにより、ＣＦメモリ１３０は、図６（ｂ）の状態に遷移する。つまり、ＣＦメモリ１３０は図６（ｂ）に示すように、最下位のブロックに有効なページが寄せ集められた１物理ブロックのデータが格納されると共に、１行目、３行目、６行目のブロックにはゴミしか含まない再生可能な１物理ブロック（例えば、２０４８セクタ）の領域が生成される。よって、図７に示した回路を用いることによって、ホスト２００からライトデータ無しのライトコマンドが送られたのと同じ動作になり、すべての処理を単純化することができる。
【００４７】
ここで期待できる効果は、上記したガーベージコレクションを行うべき領域、例えば２０４８セクタは現在ゴミがどんどん増えている個所であって、その付近に対してホスト２００からライトコマンドにより書き換えが多数発生していると考えられる。すると、残った有効なページ（６４セクタ）も近々書き換えられる可能性が高い。Ｄフラグレジスタ３００を使用せずにガーベージコレクションを単独で行うと、その現時点でのゴミはすべて取り除くことができるが、本実施形態のようにＤフラグレジスタ３００を使用してガーベージコレクションを行えば、今回割り当てた１ページも後々ライトコマンドにより埋められて、ＣＦメモリ１３０から読み出す必要がなくなる可能性が大きくなる。これによりガーベージコレクションのスピードも向上する。したがって、Ｄフラグレジスタ３００を使用することにより、ライトコマンド実行時の効率化、高速化することができる。また、ガーベージコレクションを単純化、効率化することができる。
【００４８】
以上、本実施形態によれば、ライトコマンド時のフラッシュメモリのリード動作では、キャッシュメモリのセクタ単位にＤフラグを持たせ、ライトデータを転送したキャッシュメモリのセクタ、またはＣＦメモリから読み出したデータを転送したキャッシュメモリのセクタに対してＤフラグを“１”として有効なデータが存在することを判断できるようにしておく。ライトコマンド実行時には、そのＤフラグに基づき、“１”の場合はライトプロテクトを掛け、“０”のセクタにのみにＣＦメモリからのデータを書き込むとこで、キャッシュメモリ上には書き換えられたデータ、又は過去にあったデータしか存在しないようにする。そして、ページすべてにデータが揃った時点でＣＦメモリに書き戻す。これにより、キャッシュメモリを構成するＤＲＡＭのライト動作を削減することができる。
【００４９】
また、ガーベージコレクションでは、ＣＦメモリの有効なページのデータをキャッシュメモリに移動した後、ライトバックする動作にあっても、キャッシュメモリのＤＲＡＭに対しＤフラグをオール“０”に設定してＣＦメモリの有効ページの内容をキャッシュメモリにコピーすることができるため、ホストからライトデータ無しのライトコマンドが送られたのと同じ動作になり、すべての処理を単純化することができる。
【００５０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５１】
１００‥半導体メモリ装置、１１０‥ＣＰＵ、１２０‥ＣＰＵバス、１３０‥ＣＦメモリ、１４０‥ＣＦコントローラ、１５０‥キャッシュメモリ、１６０‥キャッシュコントローラ、１７０‥ホストインターフェイス、１８０‥ローカルバス、２００‥ホスト、２１０‥ホストバス、３００‥Ｄフラグレジスタ、３３０‥キャッシュメモリのＤＲＡＭ、
【図１】
2014197265.tif 000003
【図２】
2014197265.tif 000004
【図３】
2014197265.tif 000005
【図４】
2014197265.tif 000006
【図５】
2014197265.tif 000007
【図６】
2014197265.tif 000008
【図７】
2014197265.tif 000009
【図８】
2014197265.tif 000010
【図９】
2014197265.tif 000011