(57)【要約】【課題】ホスト機器から見て、ＨＤＤへの常に安定した転送速度を保証することのできるディスク記憶装置を提供する。【解決手段】制御部１４は、ＨＤＤ１７のディスク記憶領域に割り当てられた外部ＬＢＡ空間の先頭ＬＢＡから所定単位の各ブロックを複数のゾーンに均等に割り振った内部ＬＢＡ空間を予め定義しておき、ホスト装置２０より受領した書き込みコマンド毎に、この書き込みコマンドに含まれる、データの書き込み場所を指定する外部ＬＢＡ空間のＬＢＡを、内部ＬＢＡ空間のＬＢＡに置き換える処理を行う。制御部１４は、書き込み先のゾーンを巡回的に切り替えて選択し、現在選択されているゾーンに対する１以上の書き込みコマンドの間で優先順位を設定し、この優先順位に従ってゾーン単位の書き込み処理をＨＤＤ１７に実行されるように制御を行う。【選択図】図２
2010009653.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックからなる第1のアドレス空間が割り当てられ転送速度が空間的に異なる記憶領域を有する記憶媒体に対する書き込みを制御するディスク記憶装置であって、
ホスト装置から発行された、前記第1のアドレス空間のアドレスを含む書き込み命令を受領するコマンド受領部と、
前記記憶領域を複数のゾーンに区分し、前記複数のブロックについて、前記第１のアドレス空間の先頭アドレス側のブロックから前記複数のゾーンに順次割り振った第2のアドレス空間を予め定義しておき、前記コマンド受領部にて受領した前記書き込み命令毎に、この書き込み命令に含まれる前記第1のアドレス空間のアドレスを前記第2のアドレス空間のアドレスにそれぞれ置き換え、書き込み先の前記ゾーンを巡回的に切り替えて選択し、選択された前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御する制御部と
を具備するディスク記憶装置。
【請求項２】
請求項１に記載のディスク記憶装置であって、
前記制御部は、書き込み用データのサイズが大きい書き込み命令の順に高い優先順位を設定し、この優先順位に従って前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御する
ディスク記憶装置。
【請求項３】
請求項２に記載のディスク記憶装置であって、
前記制御部は、データの書き込み先の前記第2のアドレス空間のアドレスが連続する複数の書き込み命令を判断し、これらの書き込み命令をこれらと等価な１つの書き込み命令として前記優先順位の設定を行うとともに、この書き込み命令に基づく書き込み処理を行うように制御を行う
ディスク記憶装置。
【請求項４】
請求項３に記載のディスク記憶装置であって、
前記制御部は、1つの前記ゾーンに対する書き込み命令に基づく書き込み処理の回数が予め決められた上限値に達したとき、当該ゾーンに対する未処理の書き込み命令が残っていても、この未処理の書き込み命令による書き込み処理を見送って次の前記ゾーンに対する書き込み処理に移行するように制御を行う
ディスク記憶装置。
【請求項５】
請求項４に記載のディスク記憶装置であって、
前記制御部は、前記書き込み処理を見送った未処理の書き込み命令について、次にこの未処理の書き込み命令に対応する前記ゾーンが書き込み先として再び巡ってきたとき、前記優先順位の設定において前記未処理の書き込み命令を優遇する
ディスク記憶装置。
【請求項６】
請求項１に記載のディスク記憶装置であって、
前記制御部は、同種または異種の複数の記憶媒体の記憶領域を一の記憶領域としてこれに割り当てられた前記第1のアドレス空間の先頭アドレス側の前記ブロックから前記複数のゾーンに順次割り振った第2のアドレス空間を予め定義しておき、前記コマンド受領部にて受領した前記書き込み命令毎に、この書き込み命令に含まれる前記第1のアドレス空間のアドレスを前記第2のアドレス空間のアドレスにそれぞれ置き換え、書き込み先の前記ゾーンを巡回的に切り替えて選択し、選択された前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御する
ディスク記憶装置。
【請求項７】
第1のアドレス空間が割り当てられ転送速度が空間的に異なる記憶領域を有する記憶媒体に対する書き込みを制御するプログラムであって、
ホスト装置から発行された、前記第1のアドレス空間のアドレスを含む書き込み命令を受領するコマンド受領部と、
前記記憶領域を複数のゾーンに区分し、前記複数のブロックについて、前記第１のアドレス空間の先頭アドレス側のブロックから前記複数のゾーンに順次割り振った第2のアドレス空間を予め定義しておき、前記コマンド受領部にて受領した前記書き込み命令毎に、この書き込み命令に含まれる前記第1のアドレス空間のアドレスを前記第2のアドレス空間のアドレスにそれぞれ置き換え、書き込み先の前記ゾーンを巡回的に切り替えて選択し、選択された前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御する制御部
として、ディスク記憶装置が内蔵するコンピュータに対して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＨＤＤ（Ｈａｒｄ ｄｉｓｋ ｄｒｉｖｅ）などのディスク状記憶媒体を用いてデータを記憶するディスク記憶装置およびこのディスク記憶装置に用いられるプログラムに関する。
【背景技術】
【０００２】
通常、ホスト装置は、ハードディスク装置などのディスク記憶装置内のディスク上のデータの配置を意識しない。このため、ディスクに対して書き込みおよび読み出しが繰り返されるに連れて、１つのファイルのデータがディスク上の複数の離れた場所に記録されるフラグメンテーションの程度が高くなり、結果的にホスト装置から見たアクセス速度が低下する。
【０００３】
一方、ハードディスク装置などのディスク記憶装置では、前後のアクセスの場所を考慮することなく、単にＩ／Ｏ要求が発生した順に処理を行うので、無駄なシーク動作が多発するのが実情である。これはホスト装置がマルチタスクに対応するＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）下で動作するパーソナルコンピュータなどの情報処理装置である場合には止むを得ない。タスク全体を見て記憶媒体上のデータの配置やアクセスの順番を制御することは極めて複雑であるし、その管理のために多くのリソースが消費されるためである。
【０００４】
しかしながら、例えば撮像部と録画部を備えるビデオカメラ（カムコーダ）などの民生機器では状況が異なる。民生機器の動作は概して定型的である。すなわち、民生機器では、ユーザの個々の操作に対して、どれだけ高速に、かつ確実に対応できるかという性能面が特に問われる。この要求に応えるための技術としてディスクスケジューリングがある。ディスクスケジューリングは、多くのコマンドがキューイングされた状況で、その実行順序を変えることで無駄なシーク動作を削減し、システムの性能を上げる（例えば、非特許文献１参照）。
【０００５】
ディスクスケジューリングのアルゴリズムの一つとしてＳＣＡＮと呼ばれるものがある。これはヘッドを一方向に動かして、Ｉ／Ｏ要求をディスクの半径方向に従って処理する手法である。よく知られているように、ハードディスク装置では、ゾーンビット記録を採用しているために、ディスク外周の転送速度がディスク内周の転送速度より早い。それゆえファイルシステムがディスク全面を均等に使うようにした上で、ディスク記憶装置がＳＣＡＮアルゴリズムに基づいてディスクスケジューリングを行うことにより、安定した転送速度を保証できる（例えば、非特許文献２参照）。
【０００６】
なお、ディスクスケジューリングと組み合わせてデータをディスク上にどのように配置するかについては多くの特許文献（例えば、特許文献１参照）がある。
【非特許文献１】岩波講座ソフトウェア科学，オペレーティングシステム（ｐ３４３）
【非特許文献２】Ｒｅｄｄｙ，Ｎ，Ｗｙｌｌｉｅ，Ｊ．"Ｄｉｓｋ Ｓｃｈｅｄｕｌｉｎｇ ｉｎ Ｍｕｌｔｉｍｅｄｉａ Ｉ／Ｏ Ｓｙｓｔｅｍ"，Ｐｒｏｃ，ＡＣＭ Ｍｕｌｔｉｍｅｄｉａ ９３
【特許文献１】特開平９−１８５８６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、カムコーダのような民生機器は、映像ストリームデータなどの比較的容量の大きいデータを書き込み用のデータとするとき、ＬＢＡ（Ｌｏｇｉｃａｌ Ｂｌｏｃｋ Ａｄｄｒｅｓｓ）の値が小さい領域（ディスク外周）から順次使用するように書き込みコマンドを発行する。このような場合、ＳＣＡＮ方式のディスクスケジューリングによると、ディスクの空き容量が十分残っている場合はよいが、ディスクの空き容量が少なくなってくると、転送速度か低いディスク内周部に未使用の記憶領域が集中することから、ホスト装置から見たアクセス速度が低下する。
【０００８】
以上のような事情に鑑み、本発明の目的は、ホスト機器から見て、常に安定した転送速度を保証することのできるディスク記憶装置およびプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明の第１の観点に基づくディスク記憶装置は、複数のブロックからなる第1のアドレス空間が割り当てられ転送速度が空間的に異なる記憶領域を有する記憶媒体に対する書き込みを制御するディスク記憶装置であって、ホスト装置から発行された、前記第1のアドレス空間のアドレスを含む書き込み命令を受領するコマンド受領部と、前記記憶領域を複数のゾーンに区分し、前記複数のブロックについて、前記第１のアドレス空間の先頭アドレス側のブロックから前記複数のゾーンに順次割り振った第2のアドレス空間を予め定義しておき、前記コマンド受領部にて受領した前記書き込み命令毎に、この書き込み命令に含まれる前記第1のアドレス空間のアドレスを前記第2のアドレス空間のアドレスにそれぞれ置き換え、書き込み先の前記ゾーンを巡回的に切り替えて選択し、選択された前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御する制御部とを具備する。
【００１０】
本発明によれば、ホスト装置より転送された書き込み用のデータを、所定容量のブロックの単位で、記憶媒体の記憶領域に割り当てられた第1のアドレス空間を区分する複数のゾーンに振り分けるとともに、書き込み先のゾーンを巡回的に切り替えて選択し、選択されたゾーンの単位で記憶媒体への書き込み処理を行うことによって、ホスト装置から見て、常に安定したデータ転送速度が保証される。
【００１１】
前記制御部は、書き込み用データのサイズが大きい書き込み命令の順に高い優先順位を設定し、この優先順位に従って前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御するようにしてもよい。これにより、ホスト装置から比較的サイズの大きい映像データが書き込み用データとして転送されてきた場合、これを優先して記憶媒体に書き込むことによって、ホスト装置から見たデータ転送速度が向上する。また、書き込み命令の順位が調整されることで、小さいデータの書き込み処理に伴う細かいシーク動作を減らすことができ、この点からも安定したデータ転送速度が保証される。
【００１２】
前記制御部は、データの書き込み先の前記第2のアドレス空間のアドレスが連続する複数の書き込み命令を判断し、これらの書き込み命令をこれらと等価な１つの書き込み命令として前記優先順位の設定を行うとともに、この書き込み命令に基づく書き込み処理を行うように制御を行うこととしてもよい。これにより、ホスト装置から見たデータ転送速度をより向上させることができる。
【００１３】
前記制御部は、1つの前記ゾーンに対する書き込み命令に基づく書き込み処理の回数が予め決められた上限値に達したとき、当該ゾーンに対する未処理の書き込み命令が残っていても、この未処理の書き込み命令による書き込み処理を見送って次の前記ゾーンに対する書き込み処理に移行するように制御を行うようにしてもよい。これにより、比較的サイズの大きいデータを記憶媒体に書き込んでいるときに、サイズの小さいデータの書き込み処理に伴う細かいシーク動作を減らすことができ、ホスト装置から見たデータ転送速度を向上させることができる。
【００１４】
前記制御部は、前記書き込み処理を見送った未処理の書き込み命令について、次にこの未処理の書き込み命令に対応する前記ゾーンが書き込み先として再び巡ってきたとき、前記優先順位の設定において前記未処理の書き込み命令を優遇することとしてもよい。これにより、サイズの小さいデータの書き込み処理がいつまでも実行されないことを回避できる。
【００１５】
前記制御部は、同種または異種の複数の記憶媒体の記憶領域を一の記憶領域としてこれに割り当てられた前記第1のアドレス空間の先頭アドレス側の前記ブロックから前記複数のゾーンに順次割り振った第2のアドレス空間を予め定義しておき、前記コマンド受領部にて受領した前記書き込み命令毎に、この書き込み命令に含まれる前記第1のアドレス空間のアドレスを前記第2のアドレス空間のアドレスにそれぞれ置き換え、書き込み先の前記ゾーンを巡回的に切り替えて選択し、選択された前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御することとしてもよい。
【００１６】
本発明の別の観点に基づくプログラムは、第1のアドレス空間が割り当てられ転送速度が空間的に異なる記憶領域を有する記憶媒体に対する書き込みを制御するプログラムであって、ホスト装置から発行された、前記第1のアドレス空間のアドレスを含む書き込み命令を受領するコマンド受領部と、前記記憶領域を複数のゾーンに区分し、前記複数のブロックについて、前記第１のアドレス空間の先頭アドレス側のブロックから前記複数のゾーンに順次割り振った第2のアドレス空間を予め定義しておき、前記コマンド受領部にて受領した前記書き込み命令毎に、この書き込み命令に含まれる前記第1のアドレス空間のアドレスを前記第2のアドレス空間のアドレスにそれぞれ置き換え、書き込み先の前記ゾーンを巡回的に切り替えて選択し、選択された前記ゾーンの単位で前記記憶媒体への書き込み処理を行うように制御する制御部として、ディスク記憶装置が内蔵するコンピュータに対して機能させるものである。
【発明の効果】
【００１７】
以上のように、本発明のディスク記憶装置およびプログラムによれば、ホスト機器から見て、常に安定したデータ転送速度を保証することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を図面に基づき説明する。
図１は本発明の一実施形態に係るディスク記憶装置の構成を示すブロック図である。
【００１９】
同図に示すように、本実施形態のディスク記憶装置１０は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ Ｂｕｓ）インタフェース制御部１１、内部バス１２、インタフェース制御部１３、制御部１４、メモリ制御部１５、バッファメモリ１６、ＨＤＤ（ハードディスクドライブ）１７、メモリ１８、およびＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）１９を有する。
【００２０】
ＵＳＢインタフェース制御部１１は、ホスト装置２０のＵＳＢインタフェース制御部２１との間でのインタフェースを制御するモジュールである。ホスト装置２０は、例えばビデオカメラ、カムコーダ等の電子機器であり、ＣＰＵ２２、メモリ２３、撮像部２４、録画部２５などを備える。ＵＳＢインタフェース制御部１１は、ホスト装置２０のＵＳＢインタフェース制御部１１より送られてきた書き込みコマンドを内部バス１２を通じて制御部１４に供給したり、ホスト装置２０より転送された書き込み用のデータを、ＵＳＢインタフェース制御部１１内のＥＰ（Ｅｎｄ ｐｏｉｎｔ ＦＩＦＯ）１１１に一杯になるまで保存し、一杯になったところで内部バス１２を通じてメモリ制御部１５に転送する。なお、ディスク記憶装置１０とホスト装置２０との間のインタフェースはＵＳＢ方式に限らず、その他、ＩＥＥＥ １３９４など、ＵＳＢと同等もしくはそれ以上の転送速度のインタフェースに変更してもよい。
【００２１】
内部バス１２は、ディスク記憶装置１０内の各モジュール間でコマンドおよびデータを伝送する伝送路である。
【００２２】
メモリ制御部１５は、内部バス１２を通じてＵＳＢインタフェース制御部１１より取得した書き込み用データをバッファメモリ１６に設けられたライトバッファに書き込む。
【００２３】
バッファメモリ１６は、ＨＤＤ１７に転送される書き込み用データが一時的に保持されるライトバッファのほかに、ＨＤＤ１７から転送された読み出しデータがホスト装置２０へ転送される前に一時的に保持するリードバッファを有する。
【００２４】
インタフェース制御部１３は、ＨＤＤ１７との間のインタフェースを制御するモジュールである。
【００２５】
制御部１４は、ホスト装置２０より発行された書き込みコマンド（例えばＳＣＳＩ Ｗｒｉｔｅ（１０）コマンドなど）を、ＨＤＤ１７で解釈可能な形式の書き込みコマンド（例えばＡＴＡコマンドなど）に変換してインタフェース制御部１３を通じてＨＤＤ１７に与える。
【００２６】
また、制御部１４は、ＨＤＤ１７の転送速度が空間的に異なるディスク記憶領域に割り当てられた外部ＬＢＡ空間の先頭ＬＢＡから所定単位の各ブロックを、ディスク記憶領域を区分する複数のゾーンに順次均等に割り振った内部ＬＢＡ空間を予め定義しておき、ホスト装置２０より受領した書き込みコマンド毎に、この書き込みコマンドに含まれる、データの書き込み場所を指定する外部ＬＢＡ空間のＬＢＡを、内部ＬＢＡ空間のＬＢＡに置き換える処理を行う。ここで、外部ＬＢＡ空間とは、ホスト装置２０が使用する、ディスク記憶領域に割り当てられたＬＢＡ空間のＬＢＡである。さらに、制御部１４は、書き込み先のゾーンを巡回的に切り替えて選択し、現在選択されているゾーンに対する１以上の書き込みコマンドの間で優先順位を設定し、この優先順位に従ってゾーン単位の書き込み処理をＨＤＤ１７に実行させるように制御を行う。
【００２７】
なお、ここで、ＨＤＤ１７のディスク記憶領域に割り当てられた外部ＬＢＡ空間の先頭ＬＢＡから所定単位の各ブロックを複数のゾーンに均等に割り振った内部ＬＢＡ空間を予め定義しておく、としたが、ゾーンのサイズや数、ブロックの容量などによっては、必ずしも、各ゾーンに均等に各ブロックが割り振れるとは限らない。
【００２８】
ＣＰＵ１９は、上記内部バス１２を通じた各モジュール間でのコマンドやデータのやりとりなど、ディスク記憶装置１０全体の総括的な制御を行う。メモリ１８は、制御部１５、ＣＰＵ１９の作業領域などとして利用される。
【００２９】
次に、図２を参照して外部ＬＢＡ空間と内部ＬＢＡ空間との関係を詳しく説明する。
【００３０】
同図の例では、ディスク記憶領域を転送速度が最大であるディスク最外周（ＬＢＡ先頭）から所定サイズ例えば８Ｇ（ギガ）バイト毎に４つのゾーン０，１，２，３に区分し、これらのゾーン０，１，２，３に、外部ＬＢＡ空間の先頭ＬＢＡから所定単位例えば２Ｍ（メガ）バイト毎のブロック（アドレスブロック）を割り振ったものが内部ＬＢＡ空間として定義されている。
【００３１】
なお、この例は、ＦＡＴ３２のファイルシステムを用いた場合を前提とするが、他のファイルシステムの場合でも同様に、ディスク記憶領域の外部アドレス空間に対応する内部アドレス空間を定義することが可能である。この例では、ＨＤＤ１７の全体容量は３２Ｇバイトである。３２Ｇバイトの内部ＬＢＡ空間の最小ＬＢＡは０ｘ０００００００、最大ＬＢＡは０ｘ３ＦＦＦＦＦＦとなる。ここで、書き込み用データが映像データの場合、２Ｍバイトは数１００ｍｓｅｃ−１ｓｅｃ程度の再生時間分に相当する。
【００３２】
図３はブロックのサイズを２Ｍバイト、ゾーンのサイズを８Ｇバイトとした場合の外部ＬＢＡと内部ＬＢＡとの関係を示す表である。制御部１４は、具体的には、外部ＬＢＡの値から次の式（１）により内部ＬＢＡの値を得ることができる。
内部ＬＢＡ=ＺＮｍ＊（０ｘ１００００００）＋Ｚｏｆ＊（０ｘ１０００）＋Ｂｏｆ      ・・・（１）
ここで、ＺＮｍは、外部ＬＢＡの値を"１０００"で割った商をゾーン数である"４"で割ったときの余り、Ｚｏｆは外部ＬＢＡの値を"１０００"で割った商をゾーン数である"４"で割って得た商、Ｂｏｆは外部ＬＢＡの値を"１０００"で割ったときの余りである。この計算により、図３に示したように外部ＬＢＡの値に対応する内部ＬＢＡの値が得られる。また、内部ＬＢＡが得られることによって、この内部ＬＢＡを包含するゾーンの番号も得られる。
【００３３】
なお、本発明において、ＨＤＤ１７の全体容量、ゾーンのサイズ、ゾーンの数、ブロックのサイズとも、上記の値に限定されない。
【００３４】
次に、このディスク記憶装置１０においてホスト装置２０からの書き込みコマンドを受領したときの動作を説明する。
【００３５】
ホスト装置２０からディスク記憶装置１０に書き込み命令（ＳＣＳＩ Ｗｒｉｔｅ（１０）コマンド）が送達されると、ディスク記憶装置１０は書き込みを許可するＡＣＫをホスト装置２０に返す。ホスト装置２０はＡＣＫが返ってきたことを確認して書き込み用データをディスク記憶装置１０に転送する。
【００３６】
ディスク記憶装置１０は、ホスト装置２０より転送されてきた書き込み用データをＵＳＢインタフェース制御部１１に置かれるＥＰ１１１に一旦書き込み、ＥＰ１１１が満杯になった時点で、ＥＰ１１１に蓄えられ書き込み用データを内部バス１２を通じてメモリ制御部１５に転送し、バッファメモリ１６（ライトバッファ）に保持させる。
【００３７】
また、ディスク記憶装置１０のＵＳＢインタフェース制御部１１は、ホスト装置２０から送達された書き込みコマンドを内部バス１２を通じて制御部１４に送る。制御部１４は、この書き込みコマンドを次のように処理する。
【００３８】
図４は制御部１４による書き込みコマンドに対する処理手順を示すフローチャートである。制御部１４は、書き込みコマンドを受領すると（ステップＳ１０１）、前の書き込みコマンドによる書き込み処理が実行中であるかどうかを判定する（ステップＳ１０２）。前の書き込みコマンドによる書き込み処理が実行中でなければ（ステップＳ１０２のＮＯ）、制御部１４は、メモリ１８に格納されたコマンド管理テーブルが現在空であるかどうかを調べる（ステップＳ１０３）。コマンド管理テーブルとは、ホスト装置２０より送達された書き込みコマンドを管理するための情報が登録されるテーブルであり、その詳細は後で説明する。
【００３９】
コマンド管理テーブルが空ならば（ステップＳ１０３のＹＥＳ）、制御部１４はその書き込みコマンドをＡＴＡコマンドに変換し、インタフェース制御部１３によりＨＤＤ１７に送ってＨＤＤ１７に書き込み処理を実行させる（ステップＳ１０４）。このように、ホスト装置２０からの書き込みコマンドの発行頻度があまり高くなく、ＨＤＤ１７での書き込み処理が現在実行されていない時に新たに受領した書き込みコマンドについては、これを即座にＡＴＡコマンドに変換してＨＤＤ１７に送って書き込み処理を実行させる。
【００４０】
また、制御部１４は、ホスト装置２０より複数の書き込みコマンドを連続して受領した場合など、前の書き込みコマンドの処理が完了する前に新たな書き込みコマンドを受領した場合には次のように制御を行う（ステップＳ１０２のＹＥＳ）。制御部１４は、コマンド管理テーブルに新しいエントリを作成し（ステップＳ１０５）、そこへ、今回ホスト装置２０より受領した書き込みコマンドをもとに得た各情報を登録する（ステップＳ１０６）。すなわち、制御部１４は、まず書き込みコマンドに含まれる外部ＬＢＡに対応する内部ＬＢＡを上記の式（１）により求めて、この内部ＬＢＡとこの内部ＬＢＡが属するゾーンの番号、さらには当該書き込みコマンドの書き込み対象である書き込み用データが保持されているライトバッファ上のアドレスを、コマンド管理テーブルに新規に作成したエントリに登録する。なお、ホスト装置２０からの書き込みコマンドに含まれるＬＢＡはスタートＬＢＡとエンドＬＢＡからなるので、内部ＬＢＡについてもスタートＬＢＡとエンドＬＢＡが得られ、これらがコマンド管理テーブルに登録される。
【００４１】
図５はこの時点でのコマンド管理テーブルを示す図である。
同図に示すように、コマンド管理テーブルは、エントリ毎の、エントリ番号、スタートＬＢＡ、エンドＬＢＡ、ゾーン番号、メモリアドレス、および連結フラグなどで構成される。ここで、スタートＬＢＡとは、書き込みコマンドに含まれるスタートＬＢＡに対応する内部ＬＢＡである。エンドＬＢＡは書き込みコマンドに含まれるエンドＬＢＡに対応する内部ＬＢＡである。ゾーン番号はスタートＬＢＡおよびエンドＬＢＡが属するゾーンの番号である。メモリアドレスは書き込み用データが保持されているライトバッファ上のアドレスである。そして連結フラグは、コマンド管理テーブルに登録されたエントリ間で内部ＬＢＡが連続する場合にこれらの連結の親子関係を示す情報である。なお、図５はコマンド管理テーブルに、まだ１つのエントリしか登録されていないので、連結フラグには連結が無いことを示す値（ＮＣ）が書き込まれている。
【００４２】
図４のフローチャートの説明に戻る。
制御部１４は、ステップ１０７で、コマンド管理テーブルの全てのエントリにおけるＬＢＡの連結関係を調査し、連結関係を有する各エントリに連結の親子関係を示す連結フラグを書き込む。この連結フラグの設定方法について、コマンド管理テーブルへ更なるエントリが追加された状況において説明する。
【００４３】
図６は図５に示したコマンド管理テーブルに更に３つのエントリ（２番目から４番目のエントリ）が追加された時点でのコマンド管理テーブルの例を示している。４番目のエントリにスタートＬＢＡ、エンドＬＢＡ、ゾーン番号、メモリアドレスの登録が完了したところで、制御部１４は、今回新たに生成した４番目のエントリの内部ＬＢＡ（スタートＬＢＡ、エンドＬＢＡ）と他のエントリの内部ＬＢＡ（スタートＬＢＡ、エンドＬＢＡ）との連結関係を調査した結果、４番目のエントリと１番目のエントリとの間で内部ＬＢＡの連結関係があることを判定する。
【００４４】
ここで内部ＬＢＡの連結関係の調査とは、新たに生成したエントリのスタートＬＢＡが他のエントリのエンドＬＢＡと連続しているかどうか、さらには、新たに生成したエントリのエンドＬＢＡが他のエントリのスタートＬＢＡと連続しているかどうかを調べることによって行われる。なお、異なるゾーンを跨るＬＢＡの連続は対象外とする。図６の例では、エントリ番号４のスタートＬＢＡがエントリ番号１のエンドＬＢＡと連続している。制御部１４はこのような連続を発見した場合、該当する各エントリに親子関係を示す連結フラグを書き込む。すなわち、制御部１４は、エントリ番号４のエントリに、当該エントリの親がエントリ番号１のエントリであることを示す連結フラグ"１"を書き込む。この"１"はエントリ番号１のエントリを示す。さらに、制御部１４は、エントリ番号１のエントリに、当該エントリの子がエントリ番号４のエントリであることを示す連結フラグ"４"を書き込む。この"４"はエントリ番号４のエントリを示す。このようにして連結フラグが設定される。
【００４５】
図７は図６に示したコマンド管理テーブルに更に２つのエントリ（５番目と６番目のエントリ）が追加された時点でのコマンド管理テーブルの例を示している。６番目のエントリにスタートＬＢＡ、エンドＬＢＡ、ゾーン番号、メモリアドレスの書き込みが完了したところで、制御部１４は、今回新たに生成した６番目のエントリの内部ＬＢＡ（スタートＬＢＡ、エンドＬＢＡ）と他のエントリの内部ＬＢＡ（スタートＬＢＡ、エンドＬＢＡ）の連結関係を調査した結果、４番目のエントリのエンドＬＢＡが６番目のエントリのスタートＬＢＡと連続していることを判定する。そこで制御部１４は、エントリ番号４のエントリに、当該エントリの子がエントリ番号６のエントリであることを示す連結フラグ"６"を書き込む。この"６"はエントリ番号６のエントリを示す。さらに、制御部１４は、エントリ番号６のエントリに、当該エントリの親がエントリ番号４のエントリであることを示す連結フラグ"４"を書き込む。この"４"はエントリ番号４のエントリを示す。このようにして連結フラグが再度設定される。
【００４６】
ホスト装置２０からの連続的な書き込みコマンドの発行が途絶える、あるいは、ライトバッファが一杯になるなどの、所定の事象が発生すると、制御部１４は、現在選択されているゾーンに対する１以上の書き込みコマンドの間で優先順位を設定し、この優先順位に従って書き込みコマンドに基づくゾーン単位の書き込み処理をＨＤＤ１７に実行されるように制御を行う。
【００４７】
次に、ＨＤＤ１７へのゾーン単位での書き込み処理の制御について図８を参照して説明する。
【００４８】
図８はこのＨＤＤ１７へのゾーン単位での書き込み処理のフローチャートである。
まず、書き込み先のゾーンが制御部１４によって選択される。制御部１４は、例えばゾーン０→１→２→３→０→・・・のようにＨＤＤ１７のディスク記憶領域上で連続するゾーンのうちの１つを巡回的に切り替えて選択する。いま、あるゾーン（仮にゾーン０とする。）が書き込み先として選択されているものとする。
【００４９】
まず、制御部１４は、コマンド管理テーブルから、ゾーン０に属するＬＢＡを書き込み先とする書き込みコマンドに対応するエントリを検索する（ステップＳ２０１）。
【００５０】
次に、制御部１４は、検索された各エントリに対して、スタートＬＢＡとエンドＬＢＡにより求められる書き込み用データのサイズが大きいものから順に高い優先順位を与える（ステップＳ２０２）。ここで、連結フラグによって親子関係があることが示された複数のエントリについては、制御部１４は、これらを優先順位を決定するための１つのエントリとしてみなすこととする。図７のコマンド管理テーブルを例にとると、このコマンド管理テーブルにはゾーン０に属するエントリとしてエントリ番号"１"と"４"と"６"が存在し、しかもこれらのエントリは連結フラグによって親子関係を有している。したがって、これらのエントリに対応する書き込み用データのサイズの合計が、優先順位を決定するための条件となる。なお、図７のコマンド管理テーブルを例では、ゾーン０に属する他のエントリが不在であるので、エントリ番号"１"と"４"と"６"の優先順位が最も高く設定されることになる。
【００５１】
以上のようにして、ゾーン０を書き込み先とする１以上の書き込みコマンド間での優先順位が決定したところで、制御部１４は、ＨＤＤ１７への書き込み処理が完了した数（処理数）を示す変数を初期化し（ステップＳ２０３）、優先順位に従って、ゾーン０を書き込み先とする書き込みコマンド（ＡＴＡコマンド）をインタフェース制御部１３を通じてＨＤＤ１７に発行し、ＨＤＤ１７に書き込み処理を実行させる（ステップＳ２０４）。その際、エントリ番号"１"と"４"と"６"の各エントリのように親子関係を有する各エントリについては、これらの書き込みコマンドをこれらと等価な１つの書き込みコマンド（ＡＴＡコマンド）に変換してインタフェース制御部１３を通じてＨＤＤ１７に発行するようにする。
【００５２】
この後、制御部１４は、インタフェース制御部１３を通じてＨＤＤ１７より、書き込み処理の完了通知を受けて、コマンド管理テーブルからその書き込み処理が完了した書き込みコマンドに対応するエントリを削除し、処理数をインクリメントする（ステップＳ２０５）。
【００５３】
次に、制御部１４は、コマンド管理テーブルに、当該ゾーンを書き込み先とする未処理のエントリが残っているかどうかを判定する（ステップＳ２０６）。未処理のエントリが残っているなら（ステップＳ２０６のＹＥＳ）、制御部１４は、処理数が予め決められた上限値に達したかどうかを調べる（ステップＳ２０７）。制御部１４は、処理数が予め決められた上限値を達したことを判断すると（ステップＳ２０７のＮＯ）、現在書き込み先として選択されているゾーンを書き込み先とする未処理の書き込みコマンドに対応するエントリがコマンド管理テーブルに残っていても、この未処理のエントリに対応する書き込みコマンドによる書き込み処理を見送って、書き込み先の選択ゾーンを次のゾーンに切り替える（ステップＳ２０９）。以降、切り替え先の新しいゾーン（例えばゾーン１）に対する書き込み処理のための制御が同様に行われる。
【００５４】
また、制御部１４は、処理数が上限値に達していない場合でも、今回のゾーンを書き込み先とするすべてのエントリに対応する書き込み処理が完了したならば（ステップＳ２０６のＮＯ）、書き込み先の選択ゾーンを次のゾーンに切り替える（ステップＳ２０９）。
【００５５】
なお、コマンド管理テーブル上の未処理のエントリに対しては、未処理であることを示す遅延フラグがセットされ（ステップＳ２０８）、例えば、次にこの未処理のエントリに対応するゾーンが書き込み先として再び巡ってきたとき、あるいはそれ以後に書き込み処理が行われる。
【００５６】
本実施形態によれば、次のような効果が得られる。
【００５７】
ホスト装置２０が映像ストリームデータなどの比較的容量の大きいデータを書き込み用のデータとするとき、外部ＬＢＡの値が小さい領域（ディスク外周）から順次使用するように、また外部ＬＢＡ空間を（ランダム若しくは規則的に）分散して使用するように書き込みコマンドを発行する。本実施形態によれば、このような場合、ホスト装置２０より転送された書き込み用のデータが、所定容量のブロックの単位で、外部ＬＢＡ空間を区分する複数のゾーンに振り分けられるとともに、書き込み先のゾーンを巡回的に切り替えて選択し、選択されたゾーンの単位で記憶媒体への書き込み処理を行うことによって、ホスト装置から見て、常に安定したデータ転送速度が保証される。
【００５８】
さらに、ゾーン単位の書き込み処理において、制御部１４は、書き込み用データのサイズが大きい書き込みコマンドの実行を優先し、メタデータのようにサイズの小さいデータを書き込む書き込みコマンドの実行を後回しにする。これにより、ゾーン単位の書き込み処理において、サイズの小さいデータの書き込み処理に伴う細かいシーク動作を減らすことができ、この点からも安定したデータ転送速度が保証される。
【００５９】
さらに、本実施形態のディスク記憶装置１０による書き込み制御は、ホスト装置２０側の変更を要することがない。このため、様々な種類のホスト装置と接続して用いることができる。
【００６０】
次に、本実施形態の変形例を示す。
各ゾーンの容量は必ずしも同じである必要はない。例えば、ディスク外周側のゾーンよりゾーン単位の書き込み処理が開始される場合にはディスク外周側のゾーンよりディスク内周側のゾーンの容量を若干（１〜数ブロックサイズ程度）小さくしても問題はない。但し、ある程度各ゾーンの容量を同等にしないと、使用済みの容量がある程度大きくなってきたところで、フラグメンテーションなどによる影響と合わせて、安定したデータ転送速度が保証されなくなるおそれがある。
【００６１】
上記実施形態では、ゾーン単位での書き込み処理において、優先順位の低いエントリに対応する書き込みコマンドによる書き込み処理の実行は、次回以降に対応するゾーンが再び巡ってきたときまで見送られることがあるとした。見送られた未処理のエントリはそのままコマンド管理テーブルに残っており、そのエントリに対応する書き込みコマンドを、いつどのように処理するかについては様々な方法が考えられる。例えば、過去に見送られたことを示す履歴情報（遅延フラグ）をコマンド管理テーブル上で管理しておき、次に書き込み先として対応するゾーンが再び巡ってきたときに、再び他のエントリとの間での優先順位を決定して処理する方法の他に、優先順位の設定において、その見送られた未処理のエントリを優遇するために、例えば、見送られた回数に応じて優先順位を上げるようにしてもよい。
【００６２】
また、上記の実施形態では、記憶媒体としてＨＤＤ１７を用いたが、本発明は複数のＨＤＤを用いた場合にも適用可能である。この場合、複数のＨＤＤの記憶領域を一の記憶領域として、この一の記憶領域に割り当てられた外部ＬＢＡ空間に対応する内部ＬＢＡ空間を制御部１４において予め定義しておけばよい。また、ＨＤＤと他の種類の記憶媒体、例えば光学系のディスクドライブなどとを組み合わせ、これらの記憶領域を一の記憶領域とし、この一の記憶領域に外部ＬＢＡ空間を割り当て、さらにその外部ＬＢＡ空間に対応する内部ＬＢＡ空間を制御部１４において予め定義しておくことによって、異種媒体を用いたディスク記憶装置としても構成することが可能である。
【００６３】
本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々更新を加え得ることは勿論である。
【図面の簡単な説明】
【００６４】
【図１】本発明の一実施形態に係るディスク記憶装置の構成を示すブロック図である。
【図２】外部ＬＢＡ空間と内部ＬＢＡ空間との関係を説明するための図である。
【図３】外部ＬＢＡと内部ＬＢＡとの関係の表を示す図である。
【図４】書き込みコマンド受領時の処理手順を示すフローチャートである。
【図５】コマンド管理テーブルを示す図である。
【図６】図５のコマンド管理テーブルに更に３つのエントリが追加された時点でのコマンド管理テーブルの例を示す図である。
【図７】図６のコマンド管理テーブルに更に２つのエントリが追加された時点でのコマンド管理テーブルの例を示す図である。
【図８】ゾーン単位の書き込み時の処理手順を示すフローチャートである。
【符号の説明】
【００６５】
１０…ディスク記憶装置
１１…ＵＳＢインタフェース制御部
１２…内部バス
１３…インタフェース制御部
１４…制御部
１５…メモリ制御部
１６…バッファメモリ
１７…ＨＤＤ
１８…メモリ
１９…ＣＰＵ
２０…ホスト装置
【図１】
2010009653.tif 000003
【図２】
2010009653.tif 000004
【図３】
2010009653.tif 000005
【図４】
2010009653.tif 000006
【図５】
2010009653.tif 000007
【図６】
2010009653.tif 000008
【図７】
2010009653.tif 000009
【図８】
2010009653.tif 000010