説明

メモリシステム

【課題】 フラッシュコマンド前後のデータを区別可能とし、フラッシュコマンド後他のコマンドを受け付け可能としたメモリシステムを提供する。
【解決手段】 不揮発性メモリ17は、データを記憶する。バッファ15は、不揮発性メモリに書き込むべき少なくとも1つのデータを一時的に保持する。インターフェース部13は、ホストデバイス12からの要求を受ける。バッファ制御部14は、バッファに保持された少なくとも1つのデータを不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタ21を有し、このカウンタ21のカウント値に基づきバッファ15に保持された少なくとも1つのデータを不揮発性メモリ17に転送する。インターフェース部13は、バッファ制御部14がフラッシュ要求を受け付けた場合、次の要求を受け付け可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性半導体メモリを用いたメモリシステム、例えばSSD(Solid-State Drive)に関する。
【背景技術】
【0002】
例えばNANDフラッシュメモリのような不揮発性半導体メモリを用いたSSDと呼ばれるストレージ装置としてのメモリシステムは、NANDフラッシュメモリへ効率的にデータを書き込むため、書き込み用のバッファを備えることが一般的である。書き込み用のバッファは、ホストからのデータ書き込みに高速に応答するため、スタティックRAM(SRAM)などの高速な揮発性メモリにより構成される。メモリシステムは、例えば電源切断前や必要に応じてバッファ上のデータを全てNANDフラッシュメモリに書き込むため、フラッシュ要求(以下、フラッシュコマンドと称す)を備えている。
【0003】
フラッシュコマンドの処理中、ホストが後続する書き込み要求を出してもメモリシステムは応答せず、NANDフラッシュメモリへの書き込みが終わるまでホストを待たせていた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−58518号公報
【特許文献2】特願平09−504392号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本実施形態は、フラッシュコマンド前後のデータを区別可能とし、フラッシュコマンド後他のコマンドを受け付け可能としたメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【0006】
本実施形態のメモリシステムによれば、データを記憶する不揮発性メモリと、前記不揮発性メモリに書き込むべき少なくとも1つのデータが一時的に保持されるバッファと、ホストデバイスからの要求を受けるインターフェース部と、前記バッファに保持された少なくとも1つのデータを前記不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタを有し、このカウンタのカウント値に基づき前記バッファに保持された少なくとも1つのデータを前記不揮発性メモリに転送するバッファ制御部と、を具備し、前記インターフェース部は、前記バッファ制御部がフラッシュ要求を受け付けた場合、次の要求を受け付け可能であることを特徴とする。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態に係るメモリシステムを示す構成図。
【図2】図1の書き込みバッファ制御部を概略的に示す構成図。
【図3】第1の実施形態の動作を説明するために示す図。
【図4】書き込みバッファ制御部の動作を概略的に示す図。
【図5】図4に続く動作を概略的に示す図。
【図6】図5に続く動作を概略的に示す図。
【図7】図6に続く動作を概略的に示す図。
【図8】図7の比較例としての動作を概略的に示す図。
【図9】第2の実施形態の動作を説明するために示す図。
【図10】第3の実施形態を示す概略構成図。
【発明を実施するための形態】
【0008】
上述したように、ストレージ装置としてのメモリシステムは、書き込み用のバッファを備えることが一般的である。この理由は、NANDフラッシュメモリの書き込み時間が長いため、NANDフラッシュメモリにデータを書き込んでいる間に、次の書き込みデータをバッファに転送することにより、NANDフラッシュメモリの書き込みのスループットを上げるためである。また、NANDフラッシュメモリは、データの書き込み単位が、ホストで扱うデータの管理単位より大きいため、バッファ上でNANDフラッシュメモリへの書き込み単位のデータを揃えた後、NANDフラッシュメモリに書き込むことにより、書き込み速度の高速化が図られている。
【0009】
書き込み用のバッファは、スタティックRAM(SRAM)などの揮発性メモリにより構成される。このため、例えばメモリシステムの電源を切るとき、バッファに保持されたデータが失われないことを保証する必要がある。このため、Serial ATA (SATA)やSerial Attached SCSI (SAS)などのインターフェースは、バッファ上のデータを全てNANDフラッシュメモリに書き込むための、フラッシュコマンドを備えている。このフラッシュコマンドは、電源を切るときに限らず、バッファ上のデータを全てNANDフラッシュメモリに書き込む場合に用いられる。
【0010】
フラッシュコマンドの処理中、ホストが後続する書き込み要求を出してもメモリシステムは応答せず、NANDフラッシュメモリへの書き込みが終わるまでホストを待たせていた。そのため、フラッシュコマンドの処理中、ホストは、デバイス間のデータ転送時間に比べると非常に長い時間(NANDフラッシュメモリへのデータ書き込み時間が大部分を占める)、待たされることとなる。したがって、データの書き込みと書き込みの間にフラッシュコマンドを発行した場合におけるデータの書き込み速度は、フラッシュコマンドを発行しない通常の書き込み速度に比べて低下するという問題がある。
【0011】
また、SASのような、複数のホストデバイスを1つのメモリシステムに接続可能なインターフェース仕様の場合、あるホストデバイスがフラッシュコマンドを発行してメモリシステムがフラッシュコマンドの処理を行っている間、別のホストデバイスが書き込みを行おうとした場合、その書き込みは、長時間待たされるという問題がある。この複数のホストデバイスを接続可能なインターフェースで起こる問題は、1つのバッファを複数のホストデバイスにより共用し、どのホストデバイスが書いたデータかを区別せずに、バッファからNANDフラッシュメモリへ書き込でいることに起因する。つまり、ホストデバイス毎に別のバッファを持つ構成であれば、書き込みを受け付けることは可能である。しかしながら、ホストデバイス毎に書き込み量が偏る場合や、全く使われないホストデバイスがある場合もある。このため、使われるかどうか分からない数のバッファを持つ構成は、製品設計上あまり得策ではない。
【0012】
さらに、フラッシュコマンド処理の応答遅延は、SATAのような、1つのストレージに1つのホストデバイスしか接続されないインターフェースでは、不可避のものであり、従来、特に対策は取られていない。フラッシュコマンド処理の途中で、後続のデータをバッファに受け取るということは、ホストデバイスに対して、フラッシュコマンドが未完了であるにも関わらず、フラッシュコマンドが完了していると通知するということに相当する。このため、NANDフラッシュメモリへの書き込み処理完了前に電源が切れてしまうと、ホストデバイスは、フラッシュコマンドが完了したはずであるにも拘らずデータが失われることとなる。
【0013】
このため、本実施形態は、フラッシュコマンド前後のデータを区別可能とし、フラッシュコマンドが処理されていてもホストデバイスからのコマンドを受付可能とする。
【0014】
以下、実施の形態について、図面を参照して説明する。
【0015】
(第1の実施形態)
図1は、第1の実施形態に係るメモリシステムとしてのSSDを概略的に示している。図1は、本実施形態に係る書き込み処理系統のみを示し、読み出し系統については省略されている。
【0016】
図1において、SSD11は、ホストデバイス12に接続される。ホストデバイス12は、例えばパーソナルコンピュータやサーバ等である。SSD11は、ホストインターフェース(I/F)13、書き込みバッファ制御部14、書き込みバッファ15、書き込み制御部16、及びNANDフラッシュメモリ17により構成されている。
【0017】
ホストインターフェース13は、ホストデバイス12とのインターフェース処理を行う。具体的には、ホストインターフェース13は、書き込みバッファ15の空き状況など検出し、ホストデバイス12から書き込みコマンドを受け付けるかどうかを制御する。ホストデバイス12からの書き込みコマンドには、論理アドレスとデータ本体、データ長などが含まれている。
【0018】
ホストインターフェース13は、ホストデバイス12から受けた書き込みコマンドを書き込みバッファ制御部14に供給するとともに、書き込むべきデータを書き込みバッファ17に転送する。
【0019】
書き込みバッファ制御部14は、論理アドレスに基づき、書き込みバッファ15に書き込まれたデータを管理する。さらに、書き込みバッファ制御部14は、図示せぬアドレス変換回路を含むとともに、後述するカウンタ21、記憶部22を含んでいる。アドレス変換回路は、ホストインターフェース13から供給されるコマンドに付加された論理アドレスをNANDフラッシュメモリ17の物理アドレスに変換する。
【0020】
SSDシステムとして論理アドレスを物理アドレスに変換する単位をクラスタと呼ぶ。1つのクラスタには連続する論理アドレスを有する複数のセクタが含まれる。セクタは、データに論理アドレスが振られる単位であり、例えば512バイト毎に異なる論理アドレスが割り当てられる。1つのクラスタに含まれるセクタ数の数と、論理アドレスと物理アドレスを変換する変換テーブルのサイズは、トレードオフの関係にある。
【0021】
書き込みバッファ制御部14は、変換された物理アドレスを書き込み制御部16に供給するとともに、書き込みバッファ15に保持された書き込むべきデータを書き込み制御部16に提示する。
【0022】
カウンタ21は、ホストデバイス12からフラッシュコマンドが発行される毎に、カウント値がインクリメントされる。カウンタ21のカウント値は、書き込みバッファ15に受信したデータの管理情報として記憶部22に保持される。記憶部22は、クラスタ単位で、書き込みバッファ15の連続する論理アドレスWB#0〜WB#7に対応してカウンタ21のカウント値を保持する。図1において、LCA0、LCA1〜LCAN/Aは、論理クラスタアドレスを示している。
【0023】
カウンタ21のビット幅は、1ビットである場合、1つのフラッシュコマンドの前後を区別することができる。Nビットある場合、最大で2−1個のフラッシュコマンドに対して、書き込みバッファ15のデータがどのフラッシュコマンドの前に出されたデータであるかを区別できる。このように、書き込みバッファ制御部14は、記憶部22に保持されたカウント値に基づき、書き込みバッファ15のデータがどのフラッシュコマンドの前に出されたかを区別することができる。
【0024】
書き込みバッファ15は、高速な動作が可能な、例えばSRAMにより構成されている。但し、SRAMに限定されるものではなく、ダイナミックRAM(DRAM)やその他の揮発性メモリにより構成することも可能である。
【0025】
図2は、書き込みバッファ15とカウンタ21のカウント値との関係を概略的に示している。図2に示すように、書き込みバッファ15は、クラスタ毎に書き込みバッファ15のアドレスWB#0〜WB#7が設定されている。
【0026】
書き込みバッファ制御部14の記憶部22は、これら書き込みバッファ15のアドレスWB#0〜WB#7、及び論理クラスタアドレスLCA0、LCA1〜LCAN/Aに対応して、カウンタ21の値21aを管理している。
【0027】
書き込みバッファ15において、クラスタを構成する各セクタにデータが保持された場合、書き込みバッファ15からクラスタのデータが書き込み制御部16に転送され、この書き込み制御部16において、前述した書き込みコマンド及び物理アドレスに基づき、NANDフラッシュメモリ17にデータがページ単位で書き込まれる。
【0028】
NANDフラッシュメモリ17は、例えば並列動作が可能な複数のバンク群17a、17b、17c、17dを有し、バンク群17a、17b、17c、17dは、チャネルCH0、CH1、CH2、CH3を介して書き込み制御部16に接続されている。各バンク群17a、17b、17c、17dは、バンクインターリーブが可能な、例えば図示せぬ4つのバンクを有している。
【0029】
第1の実施形態において、書き込みバッファ制御部14は、フラッシュコマンドの処理中にフラッシュコマンドに後続する書き込みコマンドを受け付けても、フラッシュコマンド前後のデータを、管理情報として保持されたカウンタ値を参照して区別することができる。このため、書き込みバッファ制御部14は、フラッシュコマンド受付前の属性を有するデータだけを、書き込み制御部16に提示することができる。書き込み制御部16は、この提示されたデータを書き込みバッファ15から読み出し、NANDフラッシュメモリ17に書き込むことができる。
【0030】
上記構成において、図3乃至図8を参照して動作について説明する。
【0031】
図3は、第1の実施形態の書き込みシーケンスの一例を示している。
【0032】
ホストデバイス12から例えば一般的な書き込みコマンド“WRITE”が発行された場合(S11)、ホストインターフェース13は、書き込みバッファ15の空き状況など検出し、ホストデバイス12から書き込みコマンドを受け付けるかどうかを制御する。ホストインターフェース13は、ホストデバイス12から書き込みコマンドを受け付けると、書き込みコマンド及び論理アドレスを書き込みバッファ制御部14に供給し(S12)、ホストデバイス12から供給されるデータを書き込みバッファ15へ転送する。
【0033】
図4に示すように、書き込みバッファ制御部14は、ホストインターフェース13からデータを受信した時、カウンタ21の値をデータの管理情報として記憶部22に保持する。図4は、アドレスWB#0、WB#1、WB#2、論理クラスタアドレスLCA0、LCA1、LCA2に対応してカウンタの値“00”が保持されている様子を示している。
【0034】
NANDフラッシュメモリの書き込み単位は、一般的に複数のクラスタで構成されるページと呼ばれる単位である。書き込みバッファ制御部14は、書き込みバッファ15に保持された有効なデータがページサイズに達すると、書き込みバッファ15に書き込みコマンドを供給する(S13)。書き込み制御部16は、書き込みコマンドを受けると、書き込みバッファ15からデータを読み出し、NANDフラッシュメモリ17に書き込む。
【0035】
NANDフラッシュメモリ17への書き込みが完了すると、書き込みバッファ15は再利用することができ、ホストデバイス12から新たな書き込みデータを受け付けることが可能となる。
【0036】
一方、ホストデバイス12からフラッシュコマンドが発行された場合(S14)、ホストインターフェース13は、書き込みバッファ制御部14にフラッシュコマンドを転送する(S15)。
【0037】
図5は、例えば書き込みコマンドに応じて書き込みバッファ15に保持されたデータの量がページサイズに達し、NANDフラッシュメモリ17に書き込まれる以前にフラッシュコマンドが発行された場合を示している。
【0038】
図5に示すように、書き込みバッファ制御部14は、フラッシュコマンド“FLUSH”を受けると、カウンタ21の値を“00”から“01”にインクリメントする。さらに、書き込みバッファ制御部14は、書き込みバッファ15内において、フラッシュコマンドの受付前におけるカウンタ21の値が対応付けられているデータを全てNANDフラッシュメモリ17に書き込めるように準備する。
【0039】
具体的には、図5のアドレスWB#2、論理カラムアドレスLAC2において、破線で示すように、クラスタサイズに満たないデータがある場合、例えばNANDフラッシュメモリ17から古いデータが読み出され、書き込みバッファ15のクラスタの空き領域に書き込まれる。あるいは、未書き込みであることを示すダミーデータが生成され、このダミーデータがクラスタの空き領域に書き込まれる。このようにして、クラスタサイズのデータが生成される。
【0040】
このように、書き込みの準備が完了した場合、書き込みバッファ制御部14は、フラッシュコマンドの受付前の属性を有するデータだけ、書き込み制御部16に提示するとともに、書き込み制御部16にNANDフラッシュメモリ17への書き込みを指示する(S16)。
【0041】
書き込み制御部16は、フラッシュコマンドの受付前の属性を有するデータの量がページサイズに達していなくても、書き込み指示に従って、書き込みバッファ15からフラッシュコマンドの受付前の属性を有するデータを読み出し、NANDフラッシュメモリ17へ書き込む(S17)。
【0042】
上記NANDフラッシュメモリ17へ書き込み中において、ホストデバイス12から次のコマンドが発行され、ホストインターフェース13に供給された場合(S18)、書き込みバッファ15、書き込みバッファ制御部14は、次のデータを受け取って処理することが可能である。
【0043】
書き込みバッファ制御部14がフラッシュコマンドの処理中に、後続するデータをホストインターフェース13が書き込みバッファ15に転送しても、書き込みバッファ制御部14、書き込みバッファ15は、前述した処理を継続して実行する。
【0044】
すなわち、図6に示すように、書き込みバッファ15がホストインターフェース13からデータを受信した場合、受信したデータの管理情報として、インクリメントされたカウンタ21の値が記憶部22に保持される。図6に示す例の場合、アドレスWB#3、WB#4、論理クラスタアドレスLAC2、LAC3に対応してカウンタ21の値“01”が記憶部22に保持される。
【0045】
ホストインターフェース13は、書き込みバッファ制御部14にフラッシュコマンドが受け付けられた時点で、次のデータを書き込みバッファ15に転送してもよいため、ホストデバイス12から、フラッシュコマンド以降の書き込みコマンドを受け付けることができる。この受け付けた書き込みコマンドの処理動作(S19,S20)は、ステップS12,S13と同様である。
【0046】
図7に示すように、フラッシュコマンドに続く書き込みコマンドの処理中に、フラッシュコマンド以前の書き込みコマンドに対応するデータの書き込み準備が整った場合、カウント値“00”に対応するアドレスWB#0、WB#1、WB#2のデータがNANDフラッシュメモリ17に書き込まれる。
【0047】
また、カウント値“00”のエントリの書き込み準備が整った場合において、アドレスWB#2のデータエントリとアドレスWB#3のデータエントリは、同じ論理クラスタアドレスLCA2を有しているため、マージすることが可能である。このように、マージした場合、NANDフラッシュメモリ17の記憶領域を削減することが可能である。
【0048】
仮に、図8に示すように、カウントの値“00”に対応するアドレスWB#2のデータの書き込み準備が整う前に、アドレスWB#2のデータを同じ論理クラスタアドレスLCA2を有するアドレスWB#3のデータとマージした場合、アドレスWB#2のデータがNANDフラッシュメモリ17に書き込まれず、書き込みバッファ15内に残ってしまうこととなる。
【0049】
すなわち、フラッシュコマンド前後のデータは、NANDフラッシュメモリ17に書き込む準備ができる以前にマージしてはならず、フラッシュコマンド後のデータエントリをフラッシュコマンド前のデータエントリにマージしてはならない。本実施形態の場合、カウンタ21の値により、フラッシュコマンド前後のデータを区別することができるため、書き込み準備が完了した後、フラッシュコマンド前のデータエントリを、フラッシュコマンド後の同じ論理クラスタアドレスを有するデータエントリに確実にマージすることができる。
【0050】
上記フラッシュコマンドに対応して、書き込みバッファ15内のフラッシュすべきデータが全てNANDフラッシュメモリ17に書き込まれた場合、書き込み制御部16からフラッシュ処理の完了通知が出力され、書き込みバッファ制御部14に供給される(S21)。この完了通知は、ホストインターフェース13を介してホストデバイス12に供給される(S22,S23)。
【0051】
尚、フラッシュコマンド処理の完了通知をホストに返さなければ、ホストから新たなコマンドを受け付けることができないインターフェースの仕様である場合、書き込みバッファ15にフラッシュコマンドが受け付けられた時点において、ホストインターフェース13は、ホストデバイス12にフラッシュ処理完了通知を返し、ホストデバイス12から新たな書き込みコマンドを受け付けることになる。このような仕様のインターフェースによっても、上記第1の実施形態と同様にフラッシュコマンド処理を行うことが可能である。
【0052】
上記第1の実施形態によれば、書き込みバッファ制御部14に、フラッシュコマンドを受け付ける毎にインクリメントされるカウンタ21を設け、このカウンタ21の値を書き込みバッファ15に保持されたデータのアドレスに対応して保持している。このため、アドレスに対応して保持されたカウンタの値に基づき、フラッシュコマンド前後のデータを判別することが可能である。したがって、長時間を要するフラッシュコマンド処理の完了を待たずに、ホストデバイス12から次の書き込みコマンドを受け付けることができるため、通常書き込み時のデータ転送速度を維持することができる。
【0053】
また、同じ論理クラスアドレスを有するデータエントリは、書き込みバッファ15内においてマージしてNANDフラッシュメモリ17に書き込むことにより、NANDフラッシュメモリ17の記憶領域を削減することが可能である。しかし、書き込み準備が完了する前に、フラッシュコマンド以前のデータエントリを、フラッシュコマンド以前のデータエントリと同じ論理クラスタアドレスを有するフラッシュコマンド以後のデータエントリにマージした場合、フラッシュコマンド以前のエントリを全て書き込み制御部16に提示したとしても、実際には書き込みバッファ15に残り、NANDフラッシュメモリ17に書き込まれていないという場合があり得る。これを防止するため、データエントリをマージするとき、データをフラッシュコマンド以後の新しいエントリにコピーする必要がある。この際、記憶部22に保持されたカウンタの値に基づき、フラッシュコマンド前後のデータを区別することができるため、確実にデータをマージすることができる。
【0054】
(第2の実施形態)
次に、第2の実施形態について説明する。第1の実施形態は、ホストインターフェース13に1つのホストデバイス12が接続された。これに対して、第2の実施形態は、ホストインターフェース13に複数のホストデバイスが接続される場合について説明する。
【0055】
すなわち、図1に破線で示すように、ホストインターフェース13には、ホストデバイス12とホストデバイス31が接続されている。書き込みバッファ15、書き込みバッファ制御部14は1つであるため、ホストインターフェース13は、2つのホストデバイス12、31のうち、どちらから発行されたコマンド供給されたデータであるかを判断する。また、書き込みバッファ制御部14は、ホストデバイス12、31のどちらからのデータかは区別しない。さらに、書き込みバッファ制御部14は、第1の実施形態と同様に、カウンタ21と記憶部22を用いて、書き込みバッファ15に書き込まれたデータを管理する。
【0056】
上記構成において、図9を参照して、書き込み動作について説明する。尚、図9において、図3と同一部分には、同一符号を付している。
【0057】
ホストインターフェース13は、ホストデバイス12とホストデバイス31から発行された書き込みコマンドを受け付け(S11、S31)、書き込みバッファ15には複数のホストデバイス12、31からの書き込みが混在した状態で、1セクタずつデータが転送される。
【0058】
ホストデバイス31は、ホストデバイス12がフラッシュコマンドを発行しているかどうかを知ることができない。このため、ホストインターフェース13は、ホストデバイス12からの書き込み#1、ホストデバイス31からの書き込み#1、ホストデバイス12からのフラッシュコマンド、ホストデバイス31からの書き込み#2の順のように、フラッシュコマンドの前後において書き込みを処理しなければならない状況が起こり得る。
【0059】
書き込みバッファ制御部14は、第1の実施形態と同様に、ホストインターフェース13から転送されるデータについて、クラスタ単位で管理情報としての論理クラスタアドレス、書き込みバッファアドレス、カウンタ21の値を記憶部22に保持する(S12、S32)。
【0060】
全セクタのデータが揃い、NANDフラッシュメモリ17に書き込み可能な状態になったクラスタは、書き込みバッファ制御部14により書き込み制御部16に提示される(S13、S33)。書き込み制御部16は、書き込み可能なクラスタのサイズがページサイズと一致した時点において、NANDフラッシュメモリ17にデータを書き込む。
【0061】
一方、例えばホストデバイス12からフラッシュコマンドが発行されると(S14)、ホストインターフェース13から書き込みバッファ制御部14にフラッシュコマンドが供給される(S15)。書き込みバッファ制御部14は、フラッシュコマンドに応じて、カウンタ21をインクリメントし、ホストインターフェース13にフラッシュコマンドを受付けたことを通知する。さらに、書き込みバッファ制御部14は、インクリメント前のカウンタ21の値を管理情報として持つ全てのクラスタを、NANDフラッシュメモリ17に書き込み可能な状態に設定し、書き込み制御部16に提示する(S16)。書き込み制御部16は、書き込み指示を受けた場合、書き込みデータのサイズがページサイズに満たない場合においても、NANDフラッシュメモリ17にデータを書き込む(S17)。また、書き込み制御部16は、書き込みバッファ15のデータがページサイズに達している場合においても、書き込み指示が無い場合、書き込み動作を実行しない。
【0062】
NANDフラッシュメモリ17にデータが書き込まれている間、書き込みバッファ制御部14がフラッシュコマンドを受け付けたことを知ったホストインターフェース13は、後続するデータを書き込みバッファに転送することができる。
【0063】
例えばホストデバイス31から書き込みコマンドが発行された場合(S34)、ホストインターフェース13は、書き込みコマンドを書き込みバッファ制御部14に供給する(S35)。書き込みバッファ制御部14は、ホストインターフェース13から書き込みバッファ15に供給されたデータを、インクリメントされたカウンタ21の値を管理情報として記憶部22に保持する。全セクタのデータが揃い、NANDフラッシュメモリ17に書き込み可能な状態になったクラスタは、書き込みバッファ制御部14により書き込み制御部16に提示される(S36)。書き込み制御部16は、書き込み可能なクラスタのサイズがページサイズと一致した時点において、NANDフラッシュメモリ17にデータを書き込む。
【0064】
前述したように、フラッシュコマンド前に書き込みバッファ15に存在するデータと、フラッシュコマンド後に書き込みバッファ15に書かれたデータは、カウンタ21の値により識別することができる。
【0065】
仮に、カウンタ21のない構成である場合、書き込みバッファ制御部14がホストデバイス12からのフラッシュコマンドの処理により、書き込みバッファ15上の全ての有効なデータをNANDフラッシュメモリ17に書き込んでいる間、ホストデバイス31からの書き込み#2は、ホストインターフェース13において待たされることになる。この間もホストインターフェース13のリソースがある限り、どちらのホストデバイスからの書き込みも受け付けることができる。しかし、ホストデバイス31からの書き込み#2がホストインターフェース13のリソースを消費しているため、結局ホストインターフェース13がNANDフラッシュメモリ17の書き込み完了を待っている間、両方のホストデバイス12、31は、ホストインターフェース13のリソースが解放されるまで待ち状態となってしまう可能性がある。
【0066】
上記第2の実施形態によれば、ホストインターフェース13が、複数のホストデバイス12,31からのコマンドを受けることが可能なシステムにおいて、フラッシュコマンドによりインクリメントされるカウンタ22の値に基づき、書き込みバッファ15のデータを管理することにより、フラッシュコマンド前後のデータを区別することができる。このため、フラッシュコマンドの処理が完了することを待つことなく、続くコマンドを受け付け、処理することが可能であるため、複数のホストデバイスからの書き込み処理を高速化することが可能である。
【0067】
(第3の実施形態)
図10は、第3の実施形態を示している。
【0068】
第3の実施形態は、例えば単一のホストデバイスが接続されたホストインターフェースと大容量キャパシタを持つ構成を特徴としている。
【0069】
第1の実施形態のように、フラッシュコマンド処理の完了通知をホストデバイスに返さなければ、ホストデバイスから新たなコマンドを受け付けられないインターフェースの仕様である場合、書き込みバッファ15にフラッシュコマンド処理が受け付けられた時点において、ホストインターフェース13は、ホストデバイス12にフラッシュ処理完了通知を返し、ホストデバイス12からの新たな書き込みコマンドを受け付けることになる。
【0070】
そのため、NANDフラッシュメモリ17に書き込みを行っているときに、電源が不正に切られた場合、ホストデバイス12は、フラッシュコマンド処理の完了を受けているにも拘らず、フラッシュコマンド以前に書き込みバッファ15に書かれていたデータを失う可能性がある。
【0071】
そこで、第3の実施形態は、第1の実施形態の構成に、不正な電源断に備えるため、大容量キャパシタを備えている。
【0072】
すなわち、図10に示すように、SSD11には、電源切替回路41を介して、直流電源42と大容量のキャパシタ43が接続されている。直流電源42は、バッテリ又は交流電源を直流電源に変換する変換器により構成される。電源切替回路41は、直流電源42から電源が供給されている場合、電源をSSD11に供給するとともに、キャパシタ43を直流電源42から充電する。
【0073】
一方、直流電源42が切断された場合、電源切替回路41は、直流電源42からキャパシタ43に切り替え、キャパシタ43からの電源をSSD11に供給する。キャパシタ43は、NANDフラッシュメモリ17が、フラッシュコマンド処理を完了するに必要な容量を有している。
【0074】
第3の実施形態によれば、SSD11は、大容量のキャパシタ43を予備の電源として有している。このため、NANDフラッシュメモリ17は、書き込み途中で電源が切断さえた場合においても、書き込みを完了することができ、フラッシュコマンド処理を完了することが可能である。したがって、したがって、ホストデバイスが、データを失うことを回避することができる。
【0075】
尚、上記SSD11は、不揮発性メモリとしてNANDフラッシュメモリを用いたが、NANDフラッシュメモリに限定されるものではなく、他の不揮発性メモリを適用できることは勿論である。
【0076】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0077】
11…SSD、12、31…ホストデバイス、13…ホストインターフェース、14…書き込みバッファ制御部、15…書き込みバッファ、16…書き込み制御部、17…NANDフラッシュメモリ、21…カウンタ、22…記憶部、41…電源切替回路、42…直流電源、43…キャパシタ。

【特許請求の範囲】
【請求項1】
データを記憶する不揮発性メモリと、
前記不揮発性メモリに書き込むべき少なくとも1つのデータが一時的に保持されるバッファと、
ホストデバイスからの要求を受けるインターフェース部と、
前記バッファに保持された少なくとも1つのデータを前記不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタを有し、このカウンタのカウント値に基づき前記バッファに保持された少なくとも1つのデータを前記不揮発性メモリに転送するバッファ制御部と、を具備し、
前記インターフェース部は、前記バッファ制御部がフラッシュ要求を受け付けた場合、次の要求を受け付け可能であることを特徴とするメモリシステム。
【請求項2】
データを記憶する不揮発性メモリと、
前記不揮発性メモリに書き込むべき少なくとも1つのデータが一時的に保持されるバッファと、
第1、第2のホストデバイスからの要求を受けるインターフェース部と、
前記第1、第2のホストデバイスの少なくとも一方から供給される前記バッファに保持された少なくとも1つのデータを前記不揮発性メモリに一括して書き込むフラッシュ要求を受ける毎にインクリメントされるカウンタを有し、このカウンタのカウント値に基づき前記バッファに保持された少なくとも1つのデータを前記不揮発性メモリに転送するバッファ制御部と、を具備し、
前記インターフェース部は、前記バッファ制御部がフラッシュ要求を受け付けた場合、次の要求を受け付け可能であることを特徴とするメモリシステム。
【請求項3】
前記バッファ制御部は、前記カウント値を前記バッファのアドレスに対応して保持する記憶部を有することを特徴とする請求項1又は2記載のメモリシステム。
【請求項4】
電源が切られた場合において、前記フラッシュ要求に基づき前記バッファに保持された少なくとも1つのデータを前記不揮発性メモリに書き込むまで、電源を確保するキャパシタを具備することを特徴とする請求項1又は2記載のメモリシステム。
【請求項5】
前記電源と前記キャパシタとを切り換える切替回路をさらに具備することを特徴とする請求項4記載のメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate