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