(57)【特許請求の範囲】
【請求項１】
ホストインターフェースと、
キャッシュメモリへのキャッシュメモリインターフェースと、
ハードディスクへのハードディスクインターフェースと、
フラッシュメモリへのフラッシュメモリインターフェースと、
前記ホストインターフェースから入力されたコマンドの内容を解析するコマンド解析部と、
前記コマンド解析部で解析されたコマンドが、ライトコマンドであったとき、書き込みデータサイズと、前記キャッシュメモリの空き容量の関係に基づいて、前記キャッシュメモリとフラッシュメモリのいずれにデータを書き込む方が速いかを判定する状態判定部と、
状態判定部の判定結果に応じてデータ書き込み先を決定するメディア選択部を有し、
前記状態判定部は、
書き込みデータのデータサイズ（ＳＺ）より前記空き容量が小さいが、前記キャッシュメモリが読み出し中であるときは前記キャッシュメモリに前記書き込みデータサイズ（ＳＺ）の空き容量ができるまで待ち、かつ
前記フラッシュメモリに前記書き込みデータを書き込む時間（Ｔ１）と、前記書き込みデータを前記キャッシュメモリに書き込む時間（Ｔ２）と、前記空き容量が生じるまでの待ち時間（ｔ１）と、の関係が（Ｔ１）＞（Ｔ２＋ｔ１）のとき前記キャッシュメモリへのデータ書き込みを指示するように構成されていることを特徴とする不揮発性フラッシュメモリを用いる記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、不揮発性フラッシュメモリを用いる記憶装置とその制御方法に関するものであり、ホスト装置からデータ書き込み指令（ライトコマンド）を受け取った後、そのコマンドを実行したことを前記ホスト装置に通知する応答速度を最速にすることができるようにしたものである。
【背景技術】
【０００２】
近年、半導体記憶媒体であるメモリカードと、磁気記憶媒体であるハードディスクを用いたハードディスク（ＨＤ）の両方を搭載できる記憶装置が開発されている（特許文献１参照）。ここでは、例えば外部より取得したメモリカードのデータを磁気記憶媒体であるハードディスク（ＨＤ）にバックアップすることができる。また、ＨＤのデータをメモリカードに転送して、取り出すことができる。
【０００３】
また携帯用の記憶装置として、フラッシュメモリを用いたものが開発されている（特許文献２）。ここでは、フラッシュメモリは、消去回数（例えば１０万回）が多くなると、エラーが多く発生するために、このような問題を解決しようとしている。例えば特定領域のみの消去回数が多くなるのを抑制するデータ管理方法を提供している。
【特許文献１】特開２００４−０５５１０２公報
【特許文献２】特許３４０７３１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記したようにタイプの異なる複数の記録メディアを利用する装置がある。しかし、ホスト装置からライトコマンドを伴うデータがきたとき、いずれの記録メディアにデータを書き込むかを決めることは、重要である。書き込み先となる記録メディアの選択方法により、全体のデータ処理速度に大きな影響が現れる。
【０００５】
この発明の一面は、ホストインターフェースと、キャッシュメモリへのキャッシュメモリインターフェースと、ハードディスクへのハードディスクインターフェースと、フラッシュメモリへのフラッシュメモリインターフェースと、前記ホストインターフェースから入力されたコマンドの内容を解析するコマンド解析部と、前記コマンド解析部で解析されたコマンドが、ライトコマンドであったとき、書き込みデータサイズと、前記キャッシュメモリの空き容量の関係に基づいて、前記キャッシュメモリとフラッシュメモリのいずれにデータを書き込む方が速いかを判定する状態判定部と、状態判定部の判定結果に応じてデータ書き込み先を決定するメディア選択部を有し、
前記状態判定部は、書き込みデータのデータサイズ（ＳＺ）より前記空き容量が小さいが、前記キャッシュメモリが読み出し中であるときは前記キャッシュメモリに前記書き込みデータサイズ（ＳＺ）の空き容量ができるまで待ち、かつ前記フラッシュメモリに前記書き込みデータを書き込む時間（Ｔ１）と、前記書き込みデータを前記キャッシュメモリに書き込む時間（Ｔ２）と、前記空き容量が生じるまでの待ち時間（ｔ１）と、の関係が（Ｔ１）＞（Ｔ２＋ｔ１）のとき前記キャッシュメモリへのデータ書き込みを指示するように構成されていることを特徴とする。
【課題を解決するための手段】
【０００６】
上記の目的を達成するためにこの発明の一面では、ホストインターフェースと、キャッシュメモリへのキャッシュメモリインターフェースと、ハードディスクへのハードディスクインターフェースと、フラッシュメモリへのフラッシュメモリインターフェースと、前記ホストインターフェースから入力されたコマンドの内容を解析するコマンド解析部と、前記コマンド解析部で解析されたコマンドが、ライトコマンドであったとき、書き込みデータサイズと、前記キャッシュメモリの空き容量の関係に基づいて、前記キャッシュメモリとフラッシュメモリのいずれにデータを書き込む方が速いかを判定する状態判定部と、状態判定部の判定結果に応じてデータ書き込み先を決定するメディア選択部と、を有する。
【発明の効果】
【０００７】
上記の手段により、ライトコマンドを伴うデータがホスト装置から来たとき、キャッシュメモリとフラッシュメモリのいずれにデータ書き込みを行なったほうが速いかを判定し、データ書き込みの高速化を実現している。
【発明を実施するための最良の形態】
【０００８】
＜全体の構成及び機能＞
まず図１において、実施形態の全体ブロックの例を説明する。１００は、ホスト装置であり、例えば、パーソナルコンピュータに於けるコントロール部である。２００は、不揮発性キャッシュメモリを用いる記憶装置である。この記憶装置２００は、バッファとして機能するＳＤＲＡＭ（キャッシュメモリと称してもよい）２０１、後述するコントローラなどが搭載された例えば１チップのＬＳＩ（大規模集積化回路）２０２、フラッシュメモリ２０３、ハードディスク（ＨＤ）２０４を有する。
【０００９】
ＬＳＩ２０２は、コントローラ３１１、ホストインターフェース３１２、ＳＤＲＡＭインターフェース（キャッシュインターフェースと称しても良い）３１３、ディスクインターフェース３１４、フラッシュメモリインターフェース３１５を有する。なお、このＬＳＩ２０２に、上記のＳＤＲＡＭ２０１が内蔵されていてもよい。またSDRAMだけでなく、FLASHメモリとSDRAM両方、またはフラッシュメモリのみをLSIに内蔵してもよい。
【００１０】
ホスト装置１００は、ホストインターフェース３１２を介して、コントローラ３１１にコマンドを与えることができる。またホスト装置１００は、ホストインターフェース３１２を介して、コントローラ３１１からのデータを受け取ることもできるし、コントローラ３１１側へデータを転送することもできる。
【００１１】
コントローラ３１１からのコマンドは、データの書き込み命令、データの読出し命令、データのサイズ指定、データの転送、メモリ、情報の読み取り命令などがある。また、コントローラ３１１は、ホスト装置１００からのコマンドを解釈し、データの書き込み処理、読出し処理、転送処理などを実行する。
【００１２】
コントローラ３１１は、ＳＤＲＡＭインターフェース３１３を介して、ＳＤＲＡＭ２０１との間でデータのやり取りを行うことができる。またコントローラ３１１は、ディスクインターフェース３１４を介して、ＨＤ２０４との間でデータのやり取りを行うことができる。さらにコントローラ３１１は、フラッシュメモリインターフェース３１５を介して、フラッシュメモリ２０３との間でデータのやり取りを行うことができる。上記したフラッシュメモリ２０３に格納されるデータは、エラー訂正コードが付加されて格納される。なおECC処理機能を内蔵するFLASHメモリの場合は、LSI側にECC回路は不要である。
【００１３】
またハードディスクに記録されるデータもエラー訂正コードが付加されて格納される。フラッシュメモリへの記録データ、ハードディスクへの記録データに対しては、再生時のエラー訂正が可能なようにＥＣＣ処理が施される。
【００１４】
上記の装置では、ＳＤＲＡＭ２０１，ＳＤＲＡＭインターフェース３１３、フラッシュメモリインターフェース３１５、フラッシュメモリ２０３の部分は、キャッシュとして使用される。
【００１５】
データの書き込み順序、データの読出し順序は、コントローラ３１１に格納されているソフトウエアに応じて決まる。例えば、ホスト装置１００からハードディスク２０４へ書き込みデータが送られるときは、以下のような系路が可能である。
【００１６】
（ａ１）ホストインターフェース３１２→コントローラ３１１→ＳＤＲＡＭインターフェース３１３→ＳＤＲＡＭ２０１→ＳＤＲＡＭインターフェース３１３→コントローラ３１１→ディスクインターフェース３１４→ハードディスク２０４の系路。
【００１７】
（ａ２）ホストインターフェース３１２→コントローラ３１１→フラッシュメモリインターフェース３１５→フラッシュメモリ２０３→フラッシュメモリインターフェース３１５→コントローラ３１１→ディスクインターフェース３１４→ハードディスク２０４の系路。
【００１８】
（ａ３）ホストインターフェース３１２→コントローラ３１１→フラッシュメモリインターフェース３１５→フラッシュメモリ２０３→フラッシュメモリインターフェース３１５→コントローラ３１１→ＳＤＲＡＭインターフェース３１３→ＳＤＲＡＭ２０１→ＳＤＲＡＭインターフェース３１３→コントローラ３１１→ディスクインターフェース３１４→ハードディスク２０４の系路。
【００１９】
（ａ４）各インターフェースを介してホスト装置→コントローラ３１１→ＳＤＲＡＭ→コントローラ３１１→フラッシュメモリ２０３→コントローラ３１１→ＨＤ２０４の系路。
【００２０】
また、ハードディスク２０４からホスト装置１００側へデータが読み出されるときは、
（１）ディスクインターフェース３１４→コントローラ３１１→ＳＤＲＡＭインターフェース３１３→ＳＤＲＡＭ２０１→ＳＤＲＡＭインターフェース３１３→コントローラ３１１→ホストインターフェース３１２→ホスト装置の系路。
【００２１】
（２）ディスクインターフェース３１４→コントローラ３１１→フラッシュメモリインターフェース３１５→フラッシュメモリ２０３→フラッシュメモリインターフェース３１５→コントローラ３１１→ホストインターフェース３１２→ホスト装置の系路。
【００２２】
（３）ディスクインターフェース３１４→コントローラ３１１→フラッシュメモリインターフェース３１５→フラッシュメモリ２０３→フラッシュメモリインターフェース３１５→コントローラ３１１→ＳＤＲＡＭインターフェース３１３→ＳＤＲＡＭ２０１→ＳＤＲＡＭインターフェース３１３→コントローラ３１１→ホストインターフェース３１２→ホスト装置の系路。
【００２３】
（４）各インターフェースを介してディスク→ＳＤＲＡＭ→フラッシュメモリ→ホスト装置の系路、
（５）ディスク→ＳＤＲＡＭ→フラッシュメモリ→ＳＤＲＡＭ→ホスト装置の系路がある。
【００２４】
＜フラッシュメモリに関する説明＞
図２は、フラッシュメモリ２０３を取り扱う上で特有の制御が行われることを説明する図である。フラッシュメモリ２０３は、不揮発性メモリでありながら、データの電気的消去が可能である。したがって、データの書き換えが可能な不揮発性メモリである。
【００２５】
このフラッシュメモリ２０３は、例えば、消去単位は、１２８Ｋバイトで規定されている。一方、読み取り単位及び書き込み単位は、例えば２Ｋバイトに規定されている。またこのフラッシュメモリ２０３は、消去回数が多くなると素子が劣化し、エラー発生が多くなる。そこで、素子の性能を保証する情報として、書き換え回数を１０万回程度に規定している。なお上記の消去単位のバイト数及び書き込み単位の数値はこれに限定されるものではない。消去単位３２Ｋバイト、読み書き単位５１２単位であってもよい。
【００２６】
＜フラッシュメモリとコントローラとホスト装置からのコマンドとの基本的な関係＞
図２に示すように、フラッシュメモリ２０３にデータが書き込まれた場合、その書き込み領域を、Ｐｉｎｎｅｄ（ピンド）領域２０３Ａと、ＵｎＰｉｎｎｅｄ（アンピンド）領域２０３Ｂという名称で分類することができる。Ｐｉｎｎｅｄ領域２０３Ａは、ホスト装置１００が送ってきたデータ書き込み先のコマンドが、あえてフラッシュメモリ２０３を指定した場合に形成された領域である。コマンドは、フラッシュメモリ２０３とその論理ブロックアドレス（ＬＢＡ）を含む。ＵｎＰｉｎｎｅｄ（アンピンド）領域２０３Ｂは、ホスト装置１００によるデータ書き込み先がコマンドにより指定されていない場合で、かつ、コントローラ３１１が独自に判断して、データを転送し、格納した領域である。
【００２７】
なおフラッシュメモリ２０３に書き込むデータとしては、ホスト装置１００から送られてくるデータ、あるいは、ハードディスク２０４から読み出したデータがある。
【００２８】
コントローラ３１１がデータ書き込み先を決めるための判断要件は、各種ある。コントローラ３１１内部の状態判定部が周囲の要件を総合的に判断し、書き込み先を決定している。
【００２９】
＜ホスト装置１００からのデータを保存する場合、フラッシュメモリ３１５又はＳＤＲＡＭ２０１に保存するケース＞
装置の電源が投入された直後であり、ＨＤ２０４のハードディスクが所定回転数に達していない場合、あるいは、ＨＤ２０４が停止状態にある場合である。このときは、フラッシュメモリ３１５又はＳＤＲＡＭ２０１に書き込む方が便利である。また、早くデータ転送を行ないたい場合には、ホスト装置１００から一旦フラッシュメモリ３１５に書き込みを行い、その後、時間的に余裕があるときにＨＤ２０４に書き写す（ライトバックと称する）と便利である。
【００３０】
＜ホスト装置１００がＨＤ２０４のデータを繰り返し使いたいようなケース＞
この場合は、ＨＤ２０４のデータを読出し、フラッシュメモリ３１５に保存しておくと便利である。フラッシュメモリ３１５に利用データを保存しておくほうが、高速でアクセスできるからである。
【００３１】
＜フラッシュメモリインターフェース３１５及びコントローラ３１１の機能と構成＞
図３には、コントローラ３１１、フラッシュメモリインターフェース３１５の構成を機能別に分類して示している。フラッシュメモリインターフェース３１５には、累積カウンタが設けられていてもよい。累積カウンタのカウント数は、例えばインターフェース内に設けられたレジスタに書き込まれ、後にフラッシュメモリ２０３に書き込まれる、あるいは直接フラッシュメモリ２０３が利用されてもよい。
【００３２】
カウンタとしては、累積ライト回数カウンタ３１５ａ，累積消去回数カウンタ３１５ｂ、累積ライトエラー回数カウンタ３１５ｃ、リードエラー数カウンタ３１５ｄが用意されている。リードエラー数カウンタ３１５ｄの代わりに、ＥＣＣ回路により検出されるエラー数カウンタ、あるいはエラー訂正数カウンタ３１５ｅが設けられてもよい。また、リードライト単位をカウントするカウンタが設けられていてもよい。これらのカウンタの内容は、エラーが多くなったときの警告、状態判定部の判定要素として利用される。
【００３３】
コントローラ３１１は、コマンド解析部４１１を有し、ホスト装置１００から送られてきたコマンドをここでデコードし解析する。コマンドの解析結果により、アーキテクチャメモリ４１４内のソフトウエアが特定され、シーケンスコントローラ４１２に動作手順が設定される。また、これらのコマンド解析及び制御は、インターフェース３１２において行われてもよい。
【００３４】
シーケンスコントローラ４１２は、インターフェース及びバスコントローラ４１３などを介して、データ及びコントロールデータの流れを制御する。例えば、データ書き込みあるいは読出しが行われるときは、メディア選択部４１５が、ＳＤＲＡＭ２０１、フラッシュメモリ２０３あるいはハードディスク（ＨＤ）を特定し、アドレス制御部４１６が書き込みアドレスあるいは読出しアドレスを特定する。そして、データ書き込み時には、書き込み処理部４１７が書き込みデータの転送処理などを行う。また、データ読出し時には、読出し処理部４１７が読出しデータの転送処理などを行う。
【００３５】
さらに消去処理部４１９が設けられている。消去処理部４１９は、ＳＤＲＡＭ２０１、フラッシュメモリ２０３のデータの消去処理を行う。またこの消去処理部４１９は、ハードディスクのデータの消去処理も行うことができる。
【００３６】
さらにアドレス管理部４２０が設けられている。アドレス管理部４２０は、ＳＤＲＡＭ２０１のアドレス、ハードディスクのアドレス及びフラッシュメモリ２０３の記録済み領域、未記録領域などのアドレスを一括して管理している。
【００３７】
ＳＤＲＡＭ２０１、フラッシュメモリ２０３は、キャッシュメモリとして利用されるので、ホスト装置側がアドレスを指定する場合は、キャッシュメモリのアドレスを意識する必要はなく、ハードディスク側のアドレスを設定すればよい。データの格納先として特別にキャッシュメモリを指定する場合に、Ｐｉｎｎｅｄのコマンドを発行すればよい。Ｐｉｎｎｅｄのコマンドがない場合には、データ格納先は、コントローラ３１１に構築されているファームウエアの判定結果に依存する。つまり、あえてフラッシュメモリ２０３にデータを書き込むためには、特別にＬＢＡが指定されてくる。このアドレスは、Ｐｉｎｎｅｄ領域を指定するもので、Ｐｉｎｎｅｄ  ＬＢＡと称される。またホスト装置が指定しなかったアドレス郡は、Ｕｎｐｉｎｎｅｄ  ＬＢＡと呼ばれる。
【００３８】
またフラッシュメモリ２０３のＰｉｎｎｅｄ領域、Ｕｎｐｉｎｎｅｄ領域などのアドレス管理及び制御は、インターフェース３１５において行われてもよい。
【００３９】
さらに状態判定部４２１が設けられている。この状態判定部４２１は、各記憶メディアの状態、残り容量の状態、ハードディスク２０４の状態を監視している。
【００４０】
なおフラッシュメモリ２０３の記憶容量がある閾値より大きくなった場合には、コントローラ３１１が状態を判定し、ハードディスクに転送して書き移す処理を行う。このときの動作は、主として読出し処理部４１８、書き込み処理部４１６、アドレス管理部４２０が組み合わせて制御される。
【００４１】
＜実施例における特有の構成と機能と動作＞
上記の記憶装置では、ホスト装置１００からライトコマンドを伴うデータが送られてきたとき、データを書き込むための論理ブロックアドレス（ＬＢＡ）が指定されていない場合、いずれの媒体に書き込むかは、コントローラ３１１の判断（ソフトウエア）に委ねられている。
【００４２】
ここで、フラッシュメモリ２０３はナンドフラッシュメモリであり、そのデータ書き込み速度よりも、ＳＤＲＡＭ２０１へのデータ書き込み速度が通常は速い。このために、ホスト装置１００からＰｉｎｎｅｄ  ＬＡＢ範囲外へのライトコマンドが発行されると、次のような処理手順となるように設計される。
【００４３】
（Ａ）キャッシュメモリ（ＳＤＲＡＭ）の空き容量が大きい場合は、ＳＤＲＡＭ２０１にまずデータが書き込まれる。したがって、データの流れは、ホスト装置１００→コントローラ３１１→ＳＤＲＡＭ２０１となり一旦キャッシュされる。その後ＳＤＲＡＭ２０１→コントローラ３１１→ＨＤ２０４とライトバックされる。
【００４４】
（Ｂ）キャッシュメモリ（ＳＤＲＡＭ）の空き容量が少ない場合は、フラッシュメモリ２０３にまずデータが書き込まれる。したがって、データの流れは、ホスト装置１００→コントローラ３１１→フラッシュメモリ２０３となり一旦キャッシュされる。その後フラッシュメモリ２０３→コントローラ３１１→ＨＤ２０４とライトバックされる。
【００４５】
（Ｃ）上記の他に、データがどこに転送されるときであっても、一旦、ＳＤＲＡＭ２０１を経由するようにしてもよい。
【００４６】
＜書き込み先の判定基準となる上記ＳＤＲＡＭ空き容量の大小判定方法＞
（１）ＳＤＲＡＭ２０１のアドレスは、アドレス管理部４２０により、書き込みデータサイズ単位、読出しデータサイズ単位で管理されている。したがって、ライトコマンドがきたときに、アドレス管理部４２０がＳＤＲＡＭ２０１の空き容量があることを示し、かつ書き込みデータサイズよりも大きい空き容量があることを示しているときは、メディア選択部４１５は、ＳＤＲＡＭ２０１をデータ書き込み先として選択する。書き込みデータサイズは、ライトコマンドとともに転送されてくる。
【００４７】
（２）ホスト装置１００からライトコマンドがきたとき、ＳＤＲＡＭ２０１の空き容量が、書き込みデータサイズよりも小さいが、ＳＤＲＡＭ２０１のデータが、ＨＤ２０４へ転送中である場合。この場合は、フラッシュメモリ２０３に書き込み先を切換えることが考えられるが、ＳＤＲＡＭ２０１に十分な空き容量が生じるのを待つほうが、有利な場合がある。つまり、フラッシュメモリ２０３にデータを書き込む時間よりも、ＳＤＲＡＭ２０１に空き容量が生じるのを待ち、ＳＤＲＡＭ２０１にデータを書き込んだほうが、処理完了までの時間は、短い場合がある。このような場合は、ＳＤＲＡＭ２０１の空き容量がライトデータサイズになるまで待ち、ＳＤＲＡＭ２０１にデータ書き込みが実行される。なお、この方法の他に、必ずしも待つ必要はなく、書き込みデータ容量、ＳＤＲＡＭからの読出しデータ容量と、書き込み読出し転送速度と、ＤＳＲＡＭの空き容量の条件に応じて、ライトコマンドが来たらすぐにＳＤＲＡＭへのデータ書き込み処理に移行しても良い。この処理方法は、あとで説明する。
【００４８】
ＳＤＲＡＭ２０１の空き容量がライトデータサイズになるまで待つ場合、このときの書き込み先の決定は、書き込みデータサイズに応じて決定されている。即ち、
（２−１）フラッシュメモリのクロック周波数と、書き込みデータサイズＳＺが分かれば、フラッシュメモリ２０３へ当該データを書き込む時間（Ｔ１）が分かる、
（２−２）ＳＤＲＡＭのクロック周波数と、書き込みデータサイズＳＺが分かれば、ＳＤＲＡＭ２０２へ当該データを書き込む時間（Ｔ２）が分かる、
（２−３）ＳＤＲＡＭ２０２にデータサイズＳＺ分の空き容量を作る時間（ｔ１）は、現在のＳＤＲＡＭ空き容量をｓｚ１として、（ＳＺ−ｓｚ１）分のデータを読み出す時間に相当する。空き容量ｓｚ１は常にアドレス管理部４２０で把握されている。
【００４９】
（２−４）したがって、ＳＤＲＡＭ２０２にサイズＳＺの書き込みデータを書き込み終えるまでの時間は、（Ｔ２＋ｔ１）である。
【００５０】
（２−５）ここで、（Ｔ１）＞（Ｔ２＋ｔ１）の場合には、ＳＤＲＡＭ２０２にデータを書き込んだほうが有利であることが判明する。
【００５１】
（２−６）そこで、予めパラメータＳＺの複数の値あるいは複数の範囲に対して、ぞれぞれ、ｓｚ１を可変値として、（Ｔ２＋ｔ１）の変化を計算することができる。これにより、（Ｔ１）＞（Ｔ２＋ｔ１）となるＳＺ，ｓｚ１の組を見つけることができる。このＳＺ，ｓｚ１の組がテーブルに格納される。
【００５２】
（２−７）上記のテーブルを利用し、書き込みデータサイズＳＺと、残り容量ｓｚ１に応じて、即座に、書き込み先をＳＤＲＭ２０２に決定することができる。この場合（Ｔ２＋ｔ１）には、さらにテーブル参照時間ｔ２が加算されている。
【００５３】
（３）ホスト装置１００からライトコマンドがきたとき、ＳＤＲＡＭ２０１の空き容量が、書き込みデータサイズよりも小さいが、ＳＤＲＡＭ２０１のデータが、ＨＤ２０４へ転送中である場合。この場合は、フラッシュメモリ２０３に書き込み先を切換えることが考えられるが、ＳＤＲＡＭ２０１に生じた空き領域に順次書き込みを行なうこともできる。即ち、
（３−１）ＳＤＲＡＭ２０１において、書き込みアドレスと、読出しアドレスが十分離れており、ＳＤＲＡＭ２０１の空き領域が書き込みデータサイズに近いような場合である。或いは、書き込みデータサイズが小さい場合である。このような場合は、ＳＤＲＡＭ２０１の読出し書き込みが時分割で行なわれたとしても、書き込みアドレスが読出しアドレスに追いつくまでにデータ書き込みが完了することもある。このときの書き込み先の決定も、（２−１）〜（２−７）で説明したように、予め計算されたＳＺ，ｓｚ１の組のテーブルを参照して行なわれる。
【００５４】
上記した（１）、（２）、（３）の説明は、「不揮発性のフラッシュメモリ２０３にデータを書き込むよりもキャッシュメモリ（ＳＤＲＡＭ）２０１にデータを書き込むほうが速いと判定される」場合である。
【００５５】
上記（１）、（２）、（３）が成立しない場合には、状態判定部４２１、メディア選択部４１５は、フラッシュメモリ２０３にデータ書き込みを実行するように設定を行なう。
【００５６】
上記したようにこの装置及び方法によると、ライトコマンドを伴うデータがホスト装置１００から来たとき、ＳＤＲＡＭ２０１とフラッシュメモリ３１５のいずれにデータ書き込みを行なったほうが速いかを判定している。そして、データ書き込みが速く実現できるようにし、書き込みが完了したときにホスト装置１００へ書き込み完了の応答を行なっている。この結果、全体としてのデータ処理時間の高速化が図れる。
【００５７】
図４は、上記した動作の説明をまとめてフローチャートで示している。即ち、ライトコマンドが認識されると（ステップＳＡ１）、書き込みデータサイズＳＺは、ＳＤＲＡＭ２０１の空き容量に収まるかどうかの判定が行なわれる（ステップＳＡ２）。ＳＤＲＡＭ２０１の空き容量が十分であれば、ＳＤＲＡＭ２０１へのデータ書き込みが実行される（ステップＳＡ３）。ＳＤＲＡＭ２０１の空き容量が不十分であれば、先ほど説明したテーブルサーチが行なわれる（ステップＳＡ４）。そしてＳＤＲＡＭ２０１にデータを書き込む方が、フラッシュメモリ２０３にデータを書き込むよりも速いことが判明したら、ＳＤＲＡＭへのデータ書き込みが実行される。それ以外の場合には、フラッシュメモリへのデータ書き込みが実行される（ステップＳＡ６）。
【００５８】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００５９】
【図１】この発明に係る一実施の形態の全体構成を示すブロック図である。
【図２】図１におけるフラッシュメモリの特徴を説明するために示した図である。
【図３】図１におけるフラッシュメモリインターフェースの機能及びコントローラ３１１の機能を説明するために示した図である。
【図４】図１の装置の一動作例を説明するために示したフローチャートである。
【符号の説明】
【００６０】
１００…ホスト装置、２００…記憶装置、２０１…ＳＤＲＡＭ、２０２…ＬＳＩ、２０３…フラッシュメモリ、２０４…ハードディスク、３１１…コントローラ、３１２…ホストインターフェース、３１３…ＳＤＲＡＭインターフェース、３１４…ディスクインターフェース、３１５…フラッシュメモリインターフェース。
【図１】
0004768504.tif 000002
【図２】
0004768504.tif 000003
【図３】
0004768504.tif 000004
【図４】
0004768504.tif 000005