(57)【要約】 【課題】  フラッシュコマンド前後のデータを区別可能とし、フラッシュコマンド後他のコマンドを受け付け可能としたメモリシステムを提供する。【解決手段】  不揮発性メモリ１７は、データを記憶する。バッファ１５は、不揮発性メモリに書き込むべき少なくとも１つのデータを一時的に保持する。インターフェース部１３は、ホストデバイス１２からの要求を受ける。バッファ制御部１４は、バッファに保持された少なくとも１つのデータを不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタ２１を有し、このカウンタ２１のカウント値に基づきバッファ１５に保持された少なくとも１つのデータを不揮発性メモリ１７に転送する。インターフェース部１３は、バッファ制御部１４がフラッシュ要求を受け付けた場合、次の要求を受け付け可能である。【選択図】図１
2012234254.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性メモリと、
前記不揮発性メモリに書き込むべき少なくとも１つのデータが一時的に保持されるバッファと、
ホストデバイスからの要求を受けるインターフェース部と、
前記バッファに保持された少なくとも１つのデータを前記不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタを有し、このカウンタのカウント値に基づき前記バッファに保持された少なくとも１つのデータを前記不揮発性メモリに転送するバッファ制御部と、を具備し、
前記インターフェース部は、前記バッファ制御部がフラッシュ要求を受け付けた場合、次の要求を受け付け可能であることを特徴とするメモリシステム。
【請求項２】
データを記憶する不揮発性メモリと、
前記不揮発性メモリに書き込むべき少なくとも１つのデータが一時的に保持されるバッファと、
第１、第２のホストデバイスからの要求を受けるインターフェース部と、
前記第１、第２のホストデバイスの少なくとも一方から供給される前記バッファに保持された少なくとも１つのデータを前記不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタを有し、このカウンタのカウント値に基づき前記バッファに保持された少なくとも１つのデータを前記不揮発性メモリに転送するバッファ制御部と、を具備し、
前記インターフェース部は、前記バッファ制御部がフラッシュ要求を受け付けた場合、次の要求を受け付け可能であることを特徴とするメモリシステム。
【請求項３】
前記バッファ制御部は、前記カウント値を前記バッファのアドレスに対応して保持する記憶部を有することを特徴とする請求項１又は２記載のメモリシステム。
【請求項４】
電源が切られた場合において、前記フラッシュ要求に基づき前記バッファに保持された少なくとも１つのデータを前記不揮発性メモリに書き込むまで、電源を確保するキャパシタを具備することを特徴とする請求項１又は２記載のメモリシステム。
【請求項５】
前記電源と前記キャパシタとを切り換える切替回路をさらに具備することを特徴とする請求項４記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを用いたメモリシステム、例えばＳＳＤ（Solid-State Drive）に関する。
【背景技術】
【０００２】
例えばＮＡＮＤフラッシュメモリのような不揮発性半導体メモリを用いたＳＳＤと呼ばれるストレージ装置としてのメモリシステムは、ＮＡＮＤフラッシュメモリへ効率的にデータを書き込むため、書き込み用のバッファを備えることが一般的である。書き込み用のバッファは、ホストからのデータ書き込みに高速に応答するため、スタティックＲＡＭ（ＳＲＡＭ）などの高速な揮発性メモリにより構成される。メモリシステムは、例えば電源切断前や必要に応じてバッファ上のデータを全てＮＡＮＤフラッシュメモリに書き込むため、フラッシュ要求（以下、フラッシュコマンドと称す）を備えている。
【０００３】
フラッシュコマンドの処理中、ホストが後続する書き込み要求を出してもメモリシステムは応答せず、ＮＡＮＤフラッシュメモリへの書き込みが終わるまでホストを待たせていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−５８５１８号公報
【特許文献２】特願平０９−５０４３９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、フラッシュコマンド前後のデータを区別可能とし、フラッシュコマンド後他のコマンドを受け付け可能としたメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【０００６】
本実施形態のメモリシステムによれば、データを記憶する不揮発性メモリと、前記不揮発性メモリに書き込むべき少なくとも１つのデータが一時的に保持されるバッファと、ホストデバイスからの要求を受けるインターフェース部と、前記バッファに保持された少なくとも１つのデータを前記不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタを有し、このカウンタのカウント値に基づき前記バッファに保持された少なくとも１つのデータを前記不揮発性メモリに転送するバッファ制御部と、を具備し、前記インターフェース部は、前記バッファ制御部がフラッシュ要求を受け付けた場合、次の要求を受け付け可能であることを特徴とする。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係るメモリシステムを示す構成図。
【図２】図１の書き込みバッファ制御部を概略的に示す構成図。
【図３】第１の実施形態の動作を説明するために示す図。
【図４】書き込みバッファ制御部の動作を概略的に示す図。
【図５】図４に続く動作を概略的に示す図。
【図６】図５に続く動作を概略的に示す図。
【図７】図６に続く動作を概略的に示す図。
【図８】図７の比較例としての動作を概略的に示す図。
【図９】第２の実施形態の動作を説明するために示す図。
【図１０】第３の実施形態を示す概略構成図。
【発明を実施するための形態】
【０００８】
上述したように、ストレージ装置としてのメモリシステムは、書き込み用のバッファを備えることが一般的である。この理由は、ＮＡＮＤフラッシュメモリの書き込み時間が長いため、ＮＡＮＤフラッシュメモリにデータを書き込んでいる間に、次の書き込みデータをバッファに転送することにより、ＮＡＮＤフラッシュメモリの書き込みのスループットを上げるためである。また、ＮＡＮＤフラッシュメモリは、データの書き込み単位が、ホストで扱うデータの管理単位より大きいため、バッファ上でＮＡＮＤフラッシュメモリへの書き込み単位のデータを揃えた後、ＮＡＮＤフラッシュメモリに書き込むことにより、書き込み速度の高速化が図られている。
【０００９】
書き込み用のバッファは、スタティックＲＡＭ（ＳＲＡＭ）などの揮発性メモリにより構成される。このため、例えばメモリシステムの電源を切るとき、バッファに保持されたデータが失われないことを保証する必要がある。このため、Serial ATA (ＳＡＴＡ)やSerial Attached SCSI (ＳＡＳ)などのインターフェースは、バッファ上のデータを全てＮＡＮＤフラッシュメモリに書き込むための、フラッシュコマンドを備えている。このフラッシュコマンドは、電源を切るときに限らず、バッファ上のデータを全てＮＡＮＤフラッシュメモリに書き込む場合に用いられる。
【００１０】
フラッシュコマンドの処理中、ホストが後続する書き込み要求を出してもメモリシステムは応答せず、ＮＡＮＤフラッシュメモリへの書き込みが終わるまでホストを待たせていた。そのため、フラッシュコマンドの処理中、ホストは、デバイス間のデータ転送時間に比べると非常に長い時間（ＮＡＮＤフラッシュメモリへのデータ書き込み時間が大部分を占める）、待たされることとなる。したがって、データの書き込みと書き込みの間にフラッシュコマンドを発行した場合におけるデータの書き込み速度は、フラッシュコマンドを発行しない通常の書き込み速度に比べて低下するという問題がある。
【００１１】
また、ＳＡＳのような、複数のホストデバイスを１つのメモリシステムに接続可能なインターフェース仕様の場合、あるホストデバイスがフラッシュコマンドを発行してメモリシステムがフラッシュコマンドの処理を行っている間、別のホストデバイスが書き込みを行おうとした場合、その書き込みは、長時間待たされるという問題がある。この複数のホストデバイスを接続可能なインターフェースで起こる問題は、１つのバッファを複数のホストデバイスにより共用し、どのホストデバイスが書いたデータかを区別せずに、バッファからＮＡＮＤフラッシュメモリへ書き込でいることに起因する。つまり、ホストデバイス毎に別のバッファを持つ構成であれば、書き込みを受け付けることは可能である。しかしながら、ホストデバイス毎に書き込み量が偏る場合や、全く使われないホストデバイスがある場合もある。このため、使われるかどうか分からない数のバッファを持つ構成は、製品設計上あまり得策ではない。
【００１２】
さらに、フラッシュコマンド処理の応答遅延は、ＳＡＴＡのような、１つのストレージに１つのホストデバイスしか接続されないインターフェースでは、不可避のものであり、従来、特に対策は取られていない。フラッシュコマンド処理の途中で、後続のデータをバッファに受け取るということは、ホストデバイスに対して、フラッシュコマンドが未完了であるにも関わらず、フラッシュコマンドが完了していると通知するということに相当する。このため、ＮＡＮＤフラッシュメモリへの書き込み処理完了前に電源が切れてしまうと、ホストデバイスは、フラッシュコマンドが完了したはずであるにも拘らずデータが失われることとなる。
【００１３】
このため、本実施形態は、フラッシュコマンド前後のデータを区別可能とし、フラッシュコマンドが処理されていてもホストデバイスからのコマンドを受付可能とする。
【００１４】
以下、実施の形態について、図面を参照して説明する。
【００１５】
（第１の実施形態）
図１は、第１の実施形態に係るメモリシステムとしてのＳＳＤを概略的に示している。図１は、本実施形態に係る書き込み処理系統のみを示し、読み出し系統については省略されている。
【００１６】
図１において、ＳＳＤ１１は、ホストデバイス１２に接続される。ホストデバイス１２は、例えばパーソナルコンピュータやサーバ等である。ＳＳＤ１１は、ホストインターフェース（Ｉ／Ｆ）１３、書き込みバッファ制御部１４、書き込みバッファ１５、書き込み制御部１６、及びＮＡＮＤフラッシュメモリ１７により構成されている。
【００１７】
ホストインターフェース１３は、ホストデバイス１２とのインターフェース処理を行う。具体的には、ホストインターフェース１３は、書き込みバッファ１５の空き状況など検出し、ホストデバイス１２から書き込みコマンドを受け付けるかどうかを制御する。ホストデバイス１２からの書き込みコマンドには、論理アドレスとデータ本体、データ長などが含まれている。
【００１８】
ホストインターフェース１３は、ホストデバイス１２から受けた書き込みコマンドを書き込みバッファ制御部１４に供給するとともに、書き込むべきデータを書き込みバッファ１７に転送する。
【００１９】
書き込みバッファ制御部１４は、論理アドレスに基づき、書き込みバッファ１５に書き込まれたデータを管理する。さらに、書き込みバッファ制御部１４は、図示せぬアドレス変換回路を含むとともに、後述するカウンタ２１、記憶部２２を含んでいる。アドレス変換回路は、ホストインターフェース１３から供給されるコマンドに付加された論理アドレスをＮＡＮＤフラッシュメモリ１７の物理アドレスに変換する。
【００２０】
ＳＳＤシステムとして論理アドレスを物理アドレスに変換する単位をクラスタと呼ぶ。１つのクラスタには連続する論理アドレスを有する複数のセクタが含まれる。セクタは、データに論理アドレスが振られる単位であり、例えば５１２バイト毎に異なる論理アドレスが割り当てられる。１つのクラスタに含まれるセクタ数の数と、論理アドレスと物理アドレスを変換する変換テーブルのサイズは、トレードオフの関係にある。
【００２１】
書き込みバッファ制御部１４は、変換された物理アドレスを書き込み制御部１６に供給するとともに、書き込みバッファ１５に保持された書き込むべきデータを書き込み制御部１６に提示する。
【００２２】
カウンタ２１は、ホストデバイス１２からフラッシュコマンドが発行される毎に、カウント値がインクリメントされる。カウンタ２１のカウント値は、書き込みバッファ１５に受信したデータの管理情報として記憶部２２に保持される。記憶部２２は、クラスタ単位で、書き込みバッファ１５の連続する論理アドレスＷＢ＃０〜ＷＢ＃７に対応してカウンタ２１のカウント値を保持する。図１において、ＬＣＡ０、ＬＣＡ１〜ＬＣＡＮ／Ａは、論理クラスタアドレスを示している。
【００２３】
カウンタ２１のビット幅は、１ビットである場合、１つのフラッシュコマンドの前後を区別することができる。Ｎビットある場合、最大で２Ｎ−１個のフラッシュコマンドに対して、書き込みバッファ１５のデータがどのフラッシュコマンドの前に出されたデータであるかを区別できる。このように、書き込みバッファ制御部１４は、記憶部２２に保持されたカウント値に基づき、書き込みバッファ１５のデータがどのフラッシュコマンドの前に出されたかを区別することができる。
【００２４】
書き込みバッファ１５は、高速な動作が可能な、例えばＳＲＡＭにより構成されている。但し、ＳＲＡＭに限定されるものではなく、ダイナミックＲＡＭ（ＤＲＡＭ）やその他の揮発性メモリにより構成することも可能である。
【００２５】
図２は、書き込みバッファ１５とカウンタ２１のカウント値との関係を概略的に示している。図２に示すように、書き込みバッファ１５は、クラスタ毎に書き込みバッファ１５のアドレスＷＢ＃０〜ＷＢ＃７が設定されている。
【００２６】
書き込みバッファ制御部１４の記憶部２２は、これら書き込みバッファ１５のアドレスＷＢ＃０〜ＷＢ＃７、及び論理クラスタアドレスＬＣＡ０、ＬＣＡ１〜ＬＣＡＮ／Ａに対応して、カウンタ２１の値２１ａを管理している。
【００２７】
書き込みバッファ１５において、クラスタを構成する各セクタにデータが保持された場合、書き込みバッファ１５からクラスタのデータが書き込み制御部１６に転送され、この書き込み制御部１６において、前述した書き込みコマンド及び物理アドレスに基づき、ＮＡＮＤフラッシュメモリ１７にデータがページ単位で書き込まれる。
【００２８】
ＮＡＮＤフラッシュメモリ１７は、例えば並列動作が可能な複数のバンク群１７ａ、１７ｂ、１７ｃ、１７ｄを有し、バンク群１７ａ、１７ｂ、１７ｃ、１７ｄは、チャネルＣＨ０、ＣＨ１、ＣＨ２、ＣＨ３を介して書き込み制御部１６に接続されている。各バンク群１７ａ、１７ｂ、１７ｃ、１７ｄは、バンクインターリーブが可能な、例えば図示せぬ４つのバンクを有している。
【００２９】
第１の実施形態において、書き込みバッファ制御部１４は、フラッシュコマンドの処理中にフラッシュコマンドに後続する書き込みコマンドを受け付けても、フラッシュコマンド前後のデータを、管理情報として保持されたカウンタ値を参照して区別することができる。このため、書き込みバッファ制御部１４は、フラッシュコマンド受付前の属性を有するデータだけを、書き込み制御部１６に提示することができる。書き込み制御部１６は、この提示されたデータを書き込みバッファ１５から読み出し、ＮＡＮＤフラッシュメモリ１７に書き込むことができる。
【００３０】
上記構成において、図３乃至図８を参照して動作について説明する。
【００３１】
図３は、第１の実施形態の書き込みシーケンスの一例を示している。
【００３２】
ホストデバイス１２から例えば一般的な書き込みコマンド“WRITE”が発行された場合（Ｓ１１）、ホストインターフェース１３は、書き込みバッファ１５の空き状況など検出し、ホストデバイス１２から書き込みコマンドを受け付けるかどうかを制御する。ホストインターフェース１３は、ホストデバイス１２から書き込みコマンドを受け付けると、書き込みコマンド及び論理アドレスを書き込みバッファ制御部１４に供給し（Ｓ１２）、ホストデバイス１２から供給されるデータを書き込みバッファ１５へ転送する。
【００３３】
図４に示すように、書き込みバッファ制御部１４は、ホストインターフェース１３からデータを受信した時、カウンタ２１の値をデータの管理情報として記憶部２２に保持する。図４は、アドレスＷＢ＃０、ＷＢ＃１、ＷＢ＃２、論理クラスタアドレスＬＣＡ０、ＬＣＡ１、ＬＣＡ２に対応してカウンタの値“００”が保持されている様子を示している。
【００３４】
ＮＡＮＤフラッシュメモリの書き込み単位は、一般的に複数のクラスタで構成されるページと呼ばれる単位である。書き込みバッファ制御部１４は、書き込みバッファ１５に保持された有効なデータがページサイズに達すると、書き込みバッファ１５に書き込みコマンドを供給する（Ｓ１３）。書き込み制御部１６は、書き込みコマンドを受けると、書き込みバッファ１５からデータを読み出し、ＮＡＮＤフラッシュメモリ１７に書き込む。
【００３５】
ＮＡＮＤフラッシュメモリ１７への書き込みが完了すると、書き込みバッファ１５は再利用することができ、ホストデバイス１２から新たな書き込みデータを受け付けることが可能となる。
【００３６】
一方、ホストデバイス１２からフラッシュコマンドが発行された場合（Ｓ１４）、ホストインターフェース１３は、書き込みバッファ制御部１４にフラッシュコマンドを転送する（Ｓ１５）。
【００３７】
図５は、例えば書き込みコマンドに応じて書き込みバッファ１５に保持されたデータの量がページサイズに達し、ＮＡＮＤフラッシュメモリ１７に書き込まれる以前にフラッシュコマンドが発行された場合を示している。
【００３８】
図５に示すように、書き込みバッファ制御部１４は、フラッシュコマンド“FLUSH”を受けると、カウンタ２１の値を“００”から“０１”にインクリメントする。さらに、書き込みバッファ制御部１４は、書き込みバッファ１５内において、フラッシュコマンドの受付前におけるカウンタ２１の値が対応付けられているデータを全てＮＡＮＤフラッシュメモリ１７に書き込めるように準備する。
【００３９】
具体的には、図５のアドレスＷＢ＃２、論理カラムアドレスＬＡＣ２において、破線で示すように、クラスタサイズに満たないデータがある場合、例えばＮＡＮＤフラッシュメモリ１７から古いデータが読み出され、書き込みバッファ１５のクラスタの空き領域に書き込まれる。あるいは、未書き込みであることを示すダミーデータが生成され、このダミーデータがクラスタの空き領域に書き込まれる。このようにして、クラスタサイズのデータが生成される。
【００４０】
このように、書き込みの準備が完了した場合、書き込みバッファ制御部１４は、フラッシュコマンドの受付前の属性を有するデータだけ、書き込み制御部１６に提示するとともに、書き込み制御部１６にＮＡＮＤフラッシュメモリ１７への書き込みを指示する（Ｓ１６）。
【００４１】
書き込み制御部１６は、フラッシュコマンドの受付前の属性を有するデータの量がページサイズに達していなくても、書き込み指示に従って、書き込みバッファ１５からフラッシュコマンドの受付前の属性を有するデータを読み出し、ＮＡＮＤフラッシュメモリ１７へ書き込む（Ｓ１７）。
【００４２】
上記ＮＡＮＤフラッシュメモリ１７へ書き込み中において、ホストデバイス１２から次のコマンドが発行され、ホストインターフェース１３に供給された場合（Ｓ１８）、書き込みバッファ１５、書き込みバッファ制御部１４は、次のデータを受け取って処理することが可能である。
【００４３】
書き込みバッファ制御部１４がフラッシュコマンドの処理中に、後続するデータをホストインターフェース１３が書き込みバッファ１５に転送しても、書き込みバッファ制御部１４、書き込みバッファ１５は、前述した処理を継続して実行する。
【００４４】
すなわち、図６に示すように、書き込みバッファ１５がホストインターフェース１３からデータを受信した場合、受信したデータの管理情報として、インクリメントされたカウンタ２１の値が記憶部２２に保持される。図６に示す例の場合、アドレスＷＢ＃３、ＷＢ＃４、論理クラスタアドレスＬＡＣ２、ＬＡＣ３に対応してカウンタ２１の値“０１”が記憶部２２に保持される。
【００４５】
ホストインターフェース１３は、書き込みバッファ制御部１４にフラッシュコマンドが受け付けられた時点で、次のデータを書き込みバッファ１５に転送してもよいため、ホストデバイス１２から、フラッシュコマンド以降の書き込みコマンドを受け付けることができる。この受け付けた書き込みコマンドの処理動作（Ｓ１９，Ｓ２０）は、ステップＳ１２，Ｓ１３と同様である。
【００４６】
図７に示すように、フラッシュコマンドに続く書き込みコマンドの処理中に、フラッシュコマンド以前の書き込みコマンドに対応するデータの書き込み準備が整った場合、カウント値“００”に対応するアドレスＷＢ＃０、ＷＢ＃１、ＷＢ＃２のデータがＮＡＮＤフラッシュメモリ１７に書き込まれる。
【００４７】
また、カウント値“００”のエントリの書き込み準備が整った場合において、アドレスＷＢ＃２のデータエントリとアドレスＷＢ＃３のデータエントリは、同じ論理クラスタアドレスＬＣＡ２を有しているため、マージすることが可能である。このように、マージした場合、ＮＡＮＤフラッシュメモリ１７の記憶領域を削減することが可能である。
【００４８】
仮に、図８に示すように、カウントの値“００”に対応するアドレスＷＢ＃２のデータの書き込み準備が整う前に、アドレスＷＢ＃２のデータを同じ論理クラスタアドレスＬＣＡ２を有するアドレスＷＢ＃３のデータとマージした場合、アドレスＷＢ＃２のデータがＮＡＮＤフラッシュメモリ１７に書き込まれず、書き込みバッファ１５内に残ってしまうこととなる。
【００４９】
すなわち、フラッシュコマンド前後のデータは、ＮＡＮＤフラッシュメモリ１７に書き込む準備ができる以前にマージしてはならず、フラッシュコマンド後のデータエントリをフラッシュコマンド前のデータエントリにマージしてはならない。本実施形態の場合、カウンタ２１の値により、フラッシュコマンド前後のデータを区別することができるため、書き込み準備が完了した後、フラッシュコマンド前のデータエントリを、フラッシュコマンド後の同じ論理クラスタアドレスを有するデータエントリに確実にマージすることができる。
【００５０】
上記フラッシュコマンドに対応して、書き込みバッファ１５内のフラッシュすべきデータが全てＮＡＮＤフラッシュメモリ１７に書き込まれた場合、書き込み制御部１６からフラッシュ処理の完了通知が出力され、書き込みバッファ制御部１４に供給される（Ｓ２１）。この完了通知は、ホストインターフェース１３を介してホストデバイス１２に供給される（Ｓ２２，Ｓ２３）。
【００５１】
尚、フラッシュコマンド処理の完了通知をホストに返さなければ、ホストから新たなコマンドを受け付けることができないインターフェースの仕様である場合、書き込みバッファ１５にフラッシュコマンドが受け付けられた時点において、ホストインターフェース１３は、ホストデバイス１２にフラッシュ処理完了通知を返し、ホストデバイス１２から新たな書き込みコマンドを受け付けることになる。このような仕様のインターフェースによっても、上記第１の実施形態と同様にフラッシュコマンド処理を行うことが可能である。
【００５２】
上記第１の実施形態によれば、書き込みバッファ制御部１４に、フラッシュコマンドを受け付ける毎にインクリメントされるカウンタ２１を設け、このカウンタ２１の値を書き込みバッファ１５に保持されたデータのアドレスに対応して保持している。このため、アドレスに対応して保持されたカウンタの値に基づき、フラッシュコマンド前後のデータを判別することが可能である。したがって、長時間を要するフラッシュコマンド処理の完了を待たずに、ホストデバイス１２から次の書き込みコマンドを受け付けることができるため、通常書き込み時のデータ転送速度を維持することができる。
【００５３】
また、同じ論理クラスアドレスを有するデータエントリは、書き込みバッファ１５内においてマージしてＮＡＮＤフラッシュメモリ１７に書き込むことにより、ＮＡＮＤフラッシュメモリ１７の記憶領域を削減することが可能である。しかし、書き込み準備が完了する前に、フラッシュコマンド以前のデータエントリを、フラッシュコマンド以前のデータエントリと同じ論理クラスタアドレスを有するフラッシュコマンド以後のデータエントリにマージした場合、フラッシュコマンド以前のエントリを全て書き込み制御部１６に提示したとしても、実際には書き込みバッファ１５に残り、ＮＡＮＤフラッシュメモリ１７に書き込まれていないという場合があり得る。これを防止するため、データエントリをマージするとき、データをフラッシュコマンド以後の新しいエントリにコピーする必要がある。この際、記憶部２２に保持されたカウンタの値に基づき、フラッシュコマンド前後のデータを区別することができるため、確実にデータをマージすることができる。
【００５４】
（第２の実施形態）
次に、第２の実施形態について説明する。第１の実施形態は、ホストインターフェース１３に１つのホストデバイス１２が接続された。これに対して、第２の実施形態は、ホストインターフェース１３に複数のホストデバイスが接続される場合について説明する。
【００５５】
すなわち、図１に破線で示すように、ホストインターフェース１３には、ホストデバイス１２とホストデバイス３１が接続されている。書き込みバッファ１５、書き込みバッファ制御部１４は１つであるため、ホストインターフェース１３は、２つのホストデバイス１２、３１のうち、どちらから発行されたコマンド供給されたデータであるかを判断する。また、書き込みバッファ制御部１４は、ホストデバイス１２、３１のどちらからのデータかは区別しない。さらに、書き込みバッファ制御部１４は、第１の実施形態と同様に、カウンタ２１と記憶部２２を用いて、書き込みバッファ１５に書き込まれたデータを管理する。
【００５６】
上記構成において、図９を参照して、書き込み動作について説明する。尚、図９において、図３と同一部分には、同一符号を付している。
【００５７】
ホストインターフェース１３は、ホストデバイス１２とホストデバイス３１から発行された書き込みコマンドを受け付け（Ｓ１１、Ｓ３１）、書き込みバッファ１５には複数のホストデバイス１２、３１からの書き込みが混在した状態で、１セクタずつデータが転送される。
【００５８】
ホストデバイス３１は、ホストデバイス１２がフラッシュコマンドを発行しているかどうかを知ることができない。このため、ホストインターフェース１３は、ホストデバイス１２からの書き込み＃１、ホストデバイス３１からの書き込み＃１、ホストデバイス１２からのフラッシュコマンド、ホストデバイス３１からの書き込み＃２の順のように、フラッシュコマンドの前後において書き込みを処理しなければならない状況が起こり得る。
【００５９】
書き込みバッファ制御部１４は、第１の実施形態と同様に、ホストインターフェース１３から転送されるデータについて、クラスタ単位で管理情報としての論理クラスタアドレス、書き込みバッファアドレス、カウンタ２１の値を記憶部２２に保持する（Ｓ１２、Ｓ３２）。
【００６０】
全セクタのデータが揃い、ＮＡＮＤフラッシュメモリ１７に書き込み可能な状態になったクラスタは、書き込みバッファ制御部１４により書き込み制御部１６に提示される（Ｓ１３、Ｓ３３）。書き込み制御部１６は、書き込み可能なクラスタのサイズがページサイズと一致した時点において、ＮＡＮＤフラッシュメモリ１７にデータを書き込む。
【００６１】
一方、例えばホストデバイス１２からフラッシュコマンドが発行されると（Ｓ１４）、ホストインターフェース１３から書き込みバッファ制御部１４にフラッシュコマンドが供給される（Ｓ１５）。書き込みバッファ制御部１４は、フラッシュコマンドに応じて、カウンタ２１をインクリメントし、ホストインターフェース１３にフラッシュコマンドを受付けたことを通知する。さらに、書き込みバッファ制御部１４は、インクリメント前のカウンタ２１の値を管理情報として持つ全てのクラスタを、ＮＡＮＤフラッシュメモリ１７に書き込み可能な状態に設定し、書き込み制御部１６に提示する（Ｓ１６）。書き込み制御部１６は、書き込み指示を受けた場合、書き込みデータのサイズがページサイズに満たない場合においても、ＮＡＮＤフラッシュメモリ１７にデータを書き込む（Ｓ１７）。また、書き込み制御部１６は、書き込みバッファ１５のデータがページサイズに達している場合においても、書き込み指示が無い場合、書き込み動作を実行しない。
【００６２】
ＮＡＮＤフラッシュメモリ１７にデータが書き込まれている間、書き込みバッファ制御部１４がフラッシュコマンドを受け付けたことを知ったホストインターフェース１３は、後続するデータを書き込みバッファに転送することができる。
【００６３】
例えばホストデバイス３１から書き込みコマンドが発行された場合（Ｓ３４）、ホストインターフェース１３は、書き込みコマンドを書き込みバッファ制御部１４に供給する（Ｓ３５）。書き込みバッファ制御部１４は、ホストインターフェース１３から書き込みバッファ１５に供給されたデータを、インクリメントされたカウンタ２１の値を管理情報として記憶部２２に保持する。全セクタのデータが揃い、ＮＡＮＤフラッシュメモリ１７に書き込み可能な状態になったクラスタは、書き込みバッファ制御部１４により書き込み制御部１６に提示される（Ｓ３６）。書き込み制御部１６は、書き込み可能なクラスタのサイズがページサイズと一致した時点において、ＮＡＮＤフラッシュメモリ１７にデータを書き込む。
【００６４】
前述したように、フラッシュコマンド前に書き込みバッファ１５に存在するデータと、フラッシュコマンド後に書き込みバッファ１５に書かれたデータは、カウンタ２１の値により識別することができる。
【００６５】
仮に、カウンタ２１のない構成である場合、書き込みバッファ制御部１４がホストデバイス１２からのフラッシュコマンドの処理により、書き込みバッファ１５上の全ての有効なデータをＮＡＮＤフラッシュメモリ１７に書き込んでいる間、ホストデバイス３１からの書き込み＃２は、ホストインターフェース１３において待たされることになる。この間もホストインターフェース１３のリソースがある限り、どちらのホストデバイスからの書き込みも受け付けることができる。しかし、ホストデバイス３１からの書き込み＃２がホストインターフェース１３のリソースを消費しているため、結局ホストインターフェース１３がＮＡＮＤフラッシュメモリ１７の書き込み完了を待っている間、両方のホストデバイス１２、３１は、ホストインターフェース１３のリソースが解放されるまで待ち状態となってしまう可能性がある。
【００６６】
上記第２の実施形態によれば、ホストインターフェース１３が、複数のホストデバイス１２，３１からのコマンドを受けることが可能なシステムにおいて、フラッシュコマンドによりインクリメントされるカウンタ２２の値に基づき、書き込みバッファ１５のデータを管理することにより、フラッシュコマンド前後のデータを区別することができる。このため、フラッシュコマンドの処理が完了することを待つことなく、続くコマンドを受け付け、処理することが可能であるため、複数のホストデバイスからの書き込み処理を高速化することが可能である。
【００６７】
（第３の実施形態）
図１０は、第３の実施形態を示している。
【００６８】
第３の実施形態は、例えば単一のホストデバイスが接続されたホストインターフェースと大容量キャパシタを持つ構成を特徴としている。
【００６９】
第１の実施形態のように、フラッシュコマンド処理の完了通知をホストデバイスに返さなければ、ホストデバイスから新たなコマンドを受け付けられないインターフェースの仕様である場合、書き込みバッファ１５にフラッシュコマンド処理が受け付けられた時点において、ホストインターフェース１３は、ホストデバイス１２にフラッシュ処理完了通知を返し、ホストデバイス１２からの新たな書き込みコマンドを受け付けることになる。
【００７０】
そのため、ＮＡＮＤフラッシュメモリ１７に書き込みを行っているときに、電源が不正に切られた場合、ホストデバイス１２は、フラッシュコマンド処理の完了を受けているにも拘らず、フラッシュコマンド以前に書き込みバッファ１５に書かれていたデータを失う可能性がある。
【００７１】
そこで、第３の実施形態は、第１の実施形態の構成に、不正な電源断に備えるため、大容量キャパシタを備えている。
【００７２】
すなわち、図１０に示すように、ＳＳＤ１１には、電源切替回路４１を介して、直流電源４２と大容量のキャパシタ４３が接続されている。直流電源４２は、バッテリ又は交流電源を直流電源に変換する変換器により構成される。電源切替回路４１は、直流電源４２から電源が供給されている場合、電源をＳＳＤ１１に供給するとともに、キャパシタ４３を直流電源４２から充電する。
【００７３】
一方、直流電源４２が切断された場合、電源切替回路４１は、直流電源４２からキャパシタ４３に切り替え、キャパシタ４３からの電源をＳＳＤ１１に供給する。キャパシタ４３は、ＮＡＮＤフラッシュメモリ１７が、フラッシュコマンド処理を完了するに必要な容量を有している。
【００７４】
第３の実施形態によれば、ＳＳＤ１１は、大容量のキャパシタ４３を予備の電源として有している。このため、ＮＡＮＤフラッシュメモリ１７は、書き込み途中で電源が切断さえた場合においても、書き込みを完了することができ、フラッシュコマンド処理を完了することが可能である。したがって、したがって、ホストデバイスが、データを失うことを回避することができる。
【００７５】
尚、上記ＳＳＤ１１は、不揮発性メモリとしてＮＡＮＤフラッシュメモリを用いたが、ＮＡＮＤフラッシュメモリに限定されるものではなく、他の不揮発性メモリを適用できることは勿論である。
【００７６】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００７７】
１１…ＳＳＤ、１２、３１…ホストデバイス、１３…ホストインターフェース、１４…書き込みバッファ制御部、１５…書き込みバッファ、１６…書き込み制御部、１７…ＮＡＮＤフラッシュメモリ、２１…カウンタ、２２…記憶部、４１…電源切替回路、４２…直流電源、４３…キャパシタ。
【図１】
2012234254.tif 000003
【図２】
2012234254.tif 000004
【図３】
2012234254.tif 000005
【図４】
2012234254.tif 000006
【図５】
2012234254.tif 000007
【図６】
2012234254.tif 000008
【図７】
2012234254.tif 000009
【図８】
2012234254.tif 000010
【図９】
2012234254.tif 000011
【図１０】
2012234254.tif 000012