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