(57)【要約】      （修正有）【課題】複数のコマンドをキューイングする際にシーク時間及び回転待ち時間を短くすると共に、それらの時間を有効活用することでコマンド処理性能を向上することができるメディア・ドライブ及びそのコマンド処理方法を提供する。【解決手段】ＨＤＤは、複数のコマンドを格納可能なキュー２３１と、その実行の際のメディアへのアクセスの要否に基づき前記複数のコマンドの実行順序を最適化するキュー・マネージャ２２３とを有する。キュー・マネージャ２２３は、ディスク１２１にアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記実行順序を決定する。例えば、キャッシュ２３２にデータが存在しないリード・コマンドのディスク１２１からキャッシュ２３２への読み出し処理と、キャッシュ２３２にデータが存在するリード・コマンドのホストへの転送処理を並列して実行させる。【選択図】図２
2006139548.tif 000002
【特許請求の範囲】
【請求項１】
ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、
複数のコマンドを格納可能なキューと、
前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部とを有し、
前記コマンド管理部は、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記実行順序を最適化する
ことを特徴とするメディア・ドライブ。
【請求項２】
前記コマンド管理部は、前記コマンドの処理を、前記メディア・アクセス処理を行うメディア・アクセス処理と、前記データ転送処理を行うデータ転送処理とに分類し、前記分類結果に基づき前記実行順序を最適化する
ことを特徴とする請求項１記載のメディア・ドライブ。
【請求項３】
前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、
前記コマンド管理部は、リード・コマンドを、前記一時記憶部に前記リード・データの全部が記憶されたアクセス不要リード・コマンドと、前記メディアにのみ前記リード・データの一部又は全部が記憶されたアクセス要リード・コマンドとに分類し、前記分類結果に基づき前記実行順序を最適化する
ことを特徴とする請求項１記載のメディア・ドライブ。
【請求項４】
前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、
前記コマンド管理部は、前記リード・コマンドの処理のうち、前記メディアにのみ記憶された一部又は全部のリード・データを前記一時記憶部へ読み出す処理を前記メディア・アクセス処理とし、前記一時記憶部に記憶されたリード・データを前記ホストへ転送する処理及び前記ホストからのライト・データを前記一時記憶部へ記憶するライト・コマンドの処理を前記データ転送処理として分類する
ことを特徴とする請求項２記載のメディア・ドライブ。
【請求項５】
前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記コマンド管理部は、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、当該リード・データの前記一時記憶部に記憶されている前記残りを前記ホストに転送する前記データ転送処理とを並列して実行させる
ことを特徴とする請求項３記載のメディア・ドライブ。
【請求項６】
前記コマンド管理部は、前記メディアにのみ一部又は全部が記憶された前記リード・データを前記一時記憶部に読み出す前記メディア・アクセス処理と、他のリード・コマンド又はライト・コマンドの前記データ転送処理とを並列して実行させる
ことを特徴とする請求項３記載のメディア・ドライブ。
【請求項７】
前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、前記一時記憶部に記憶された前記リード・データの前記残りを前記ホストへ転送するデータ転送処理、又は前記アクセス不要リード・コマンド若しくはライト・コマンドの処理とを並列して実行させる
ことを特徴とする請求項４記載のメディア・ドライブ。
【請求項８】
前記コマンド管理部は、前記分類結果に基づきリード・コマンドの先読みデータ範囲を決定する先読み範囲決定部を更に有し、
前記先読み範囲決定部は、一の前記アクセス要リード・コマンドの前記メディアにのみ記憶されたデータが他の前記アクセス要リード・コマンドの前記先読みデータに含まれるよう前記先読み範囲を決定する
ことを特徴とする請求項３記載のメディア・ドライブ。
【請求項９】
前記先読み範囲決定部は、各前記アクセス要リード・コマンドにおける前記メディアから読み出すリード・データのアドレスを比較し、一のアドレスの一端と他のアドレスの一端とが所定の関係を満たす場合に、前記他のアドレスが含まれるよう前記一のアドレスの前記先読み範囲を設定する
ことを特徴とする請求項８記載のメディア・ドライブ。
【請求項１０】
前記先読み範囲決定部は、複数の前記アクセス要リード・コマンドにおける前記メディアにのみ記憶されたリード・データを個別に読み出す時間の総和と、連続して読み出す時間の総和とを比較し、当該比較結果に基づき先読み範囲を決定する
ことを特徴とする請求項８記載のメディア・ドライブ。
【請求項１１】
前記コマンド管理部は、前記先読み範囲決定部により決定された先読み範囲にリード・データが含まれるアクセス要リード・コマンドを、アクセス不要リード・コマンドとして再分類する
ことを特徴とする請求項８記載のメディア・ドライブ。
【請求項１２】
前記コマンド管理部は、前記コマンド又はコマンドの処理の実行優先度に基づき前記実行順序を決定する
ことを特徴とする請求項１記載のメディア・ドライブ。
【請求項１３】
前記コマンド管理部は、前記ライト・コマンドより前記リード・コマンドの実行を優先させる
ことを特徴とする請求項１２記載のメディア・ドライブ。
【請求項１４】
前記コマンド管理部は、前記キューに格納された順序が早いコマンドの実行を優先させる
ことを特徴とする請求項１２又は１３記載のメディア・ドライブ。
【請求項１５】
前記コマンド管理部は、前記アクセス要リード・コマンドより前記アクセス不要リード・コマンドの実行を優先させる
ことを特徴とする請求項１２乃至１４のいずれか１項記載のメディア・ドライブ。
【請求項１６】
前記コマンド管理部は、前記メディア・アクセス処理より前記データ転送処理の実行を優先させる
ことを特徴とする請求項１２乃至１５のいずれか１項記載のメディア・ドライブ。
【請求項１７】
ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、
複数のコマンドを格納可能なキューと、
前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部と、
前記分類結果に基づきリード・コマンドの先読み範囲を決定する先読み範囲決定部とを有し、
前記先読み範囲決定部は、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるよう決定する
ことを特徴とするメディア・ドライブ。
【請求項１８】
複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、
前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、
前記分類結果に基づき、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記複数のコマンドの実行順序を最適化する
ことを特徴とするメディア・ドライブのコマンド処理方法。
【請求項１９】
複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、
前記複数のコマンドのうち、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるようリード・コマンドの先読み範囲を決定し、
前記コマンドを処理する際のメディアへのアクセスの要否に基づき、前記複数のコマンドの実行順序を最適化する
ことを特徴とするメディア・ドライブのコマンド処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンドに従ってライト・データ又はリード・データをホストとの間にて転送するメディア・ドライブ及びそのコマンド処理方法に関し、特に、複数のコマンドをキューに格納してホストとの間の転送を効率よく実行するメディア・ドライブ及びそのコマンド処理方法に関する。
【背景技術】
【０００２】
情報記録再生装置として、光ディスクや磁気テープなどの様々な態様のメディアを使用する装置が知られている。その中で、ハード・ディスク・ドライブ（以下、ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、またはデジタル・カメラなどで使用されるリムーバブルメモリなど、ＨＤＤの用途は、その優れた特性により益々拡大している。
【０００３】
パーソナル・コンピュータ（ＰＣ）の内蔵ＨＤＤには、サーバ及び一部のワークステーションを除き、そのほぼすべてにＡＴＡ（AT Attachment）（ＩＤＥ（Integrated Drive Electronics））インターフェースが採用されている。また、ＡＴＡインターフェースの性能向上及び容量増大に伴い、ＳＣＳＩ（small computer system interface）に比べてドライブとコントローラ両方のコストが安価なことから、近年ではエントリ・サーバにおいても、ハードディスク・インターフェースとしてＡＴＡが採用されている。高価なＳＣＳＩインターフェースに対し、コストが非常に安いというＡＴＡの特質を維持しつつ更なる性能向上が望まれる。
【０００４】
この性能向上の一手法としてホストとの間のデータのやり取りを高速化する、すなわちインターフェースを高速化することが考えられる。インターフェースの高速化には、信号線の数を増やして1回のサイクルで転送できるデータ量を増やす方法と、データを転送するサイクルを短くして、単位時間内により多くのデータを転送できるようにするという２つの方法がある。
【０００５】
パラレルＡＴＡにおいては、上述の２つの方法のうち、転送サイクルを短縮して高速化を図ってきたが、更なる高速化を実現するために、データ幅を拡張したり、ストローブ信号の周波数を高める必要がある。しかし、更なる高速化を図る場合、信号線間のデータの同期を取ることが難しくなる。また、信号の周波数が上がると、信号線間の干渉やノイズも無視できなくなるという問題が生じる。信号線間にグラウンド線を配置することで、各信号線間の干渉を防ぎ、安定して転送できるよう工夫されているものの、これらの問題を解決するためには、ケーブルやコネクタの大幅な変更や、信号を送受信する回路の仕様変更、たとえば、信号の電圧を下げた差動信号化などの導入が避けられなくなり、ＡＴＡインターフェースのメリットである低コスト性を阻害してしまう。
【０００６】
そこで、パラレルＡＴＡとほぼ同じ製造コストを保ったまま高速化するため、シリアル伝送方式が提案されている。シリアル伝送は、パラレル伝送と比較して信号線が劇的に減少し、したがって信号線間の干渉がパラレル方式に比べ発生しにくいなど、高速化に有利な特性を有する。このシリアルＡＴＡの規格策定は、ＡＴＡの物理インターフェースを、従来のパラレル・インターフェース（パラレルＡＴＡ）から、高速なシリアル・インターフェースに置き換えることを目的として主要なハードディスク・ベンダなどからなるSerial ATA Working Groupによって行われている。
【０００７】
ところで、ＨＤＤからデータを読み書きするときに最も時間がかかる操作は、ヘッドの移動時間やディスクの回転待ち時間といったＨＤＤ内部の機械的な動作である。したがって、転送速度を向上すると共に、この読み出し、書き込みに必要な時間を短縮することが必要となる。
【０００８】
コマンド送受信、デコード、メモリアクセスなどの電気的な処理がマイクロ秒（μｓ)オーダーであるのに対し、ＨＤＤ内部の機械的な動作はミリ秒（ｍｓ）のオーダーと長い時間が必要となる。内部の機械的な動作には、ヘッドの移動時間と回転待ち時間とがある。ヘッドの移動時間は、ＨＤＤが読み書きの指令を出してからディスク上の希望のトラックにヘッドを位置付けるまでの時間（シーク時間）を示す。このシーク時間は、トラック間の移動距離によって大きく左右されるため、通常は最内周から最外周のトラックまでのシーク時間を２で割った平均シーク時間が性能指標に用いられる。
【０００９】
回転待ち時間は、ヘッドをトラックへ移動させた後に、ディスクの回転によってトラック上の希望のセクタにヘッドが到達するまで待つ時間を示す。なお、直前のセクタ位置によってディスクを回転させる量は大きく異なるものの、回転待ち時間の最大値はディスクの回転速度によって一意に決定される。その最大値は、例えば、５４００ｒｐｍで１１．１ｍｓ、７２００ｒｐｍで８．３ｍｓ、１００００ｒｐｍで６ｍｓ、１５０００ｒｐｍで４ｍｓとなる。
【００１０】
こうした機械的動作によるオーバーヘッドを極力回避するためにCommand Queuingがある。Command Queuingは、コマンドの実行完了を待たずに複数のコマンドを連続して発行し、そのままキュー(待ち行列)に格納していく。これにより、長い時間を要するＨＤＤの機械的動作の完了をコマンドごとに待つことなく、次々とＨＤＤにコマンドを送ることができる。
【００１１】
Command Queuingではキューに格納されたコマンドを、受信した順番(インオーダ)ではなくキューに格納された複数のコマンドを効率のよい順番に並べ替えてから実行するいわゆるアウトオブオーダにより実行する。効率のよい順番とは、できる限りヘッドの移動を短縮できるトラック間又は回転待ち時間の少ないセクタ間を近づけて処理させる順番、すなわちシーク時間＋回転待ち時間の合計が短くＨＤＤの機械的動作を短縮できるような順番であり、いわゆるRotational Positioning Ordering（以下、ＲＰＯという。)と呼ばれる手法である。
【００１２】
近時は、トラック間の位置関係に着目してシーク時間を可能な限り短縮することの他、セクタの位置関係によっては回転待ち時間を逆に増やしてしまうことを防止すべく、セクタの位置関係や直近のヘッド位置に着目し、他のコマンドとの間で効率がよいコマンド実行順序とし、シーク時間と回転待ち時間との合計時間を総合的に短縮できるようにコマンドを並べ替えていく方法が採用されている。
【００１３】
また、データのライト・コマンド、リード・コマンドの実行を迅速に行うため、例えばハード・ディスクからのリード・データの論理ブロックアドレス（Logical Block Address：ＬＢＡ）の先端と後端とが一致又は重複するリード・コマンドがある場合には、それらのコマンドを統合して一度に処理するなどにより、より効率よくコマンドを処理する工夫がなされている（例えば特許文献１参照）
【００１４】
ところで、既にリリースされている" Serial ATA II: Extensions to Serial ATA 1.0a（以下、シリアルＡＴＡ  ＩＩという。）においても、ＮＣＱ（Native Command Queuing）と呼ばれるコマンド・キューイングの技術が採用されている。ＮＣＱは、ＨＤＤ自身が、キューされているコマンドの実行順序を内部的に決定することを可能としている。これによって、ＨＤＤの機械的内部動作に起因するシーク時間＋回転待ち時間の合計を効果的に低減することが可能となる。
【００１５】
ＮＣＱは、ＳＣＳＩが持つTagged Command Queuingの考え方を継承して設計された機能であり、
１．Race-free Status Return Mechanism
２．Interrupt Aggregation
３．First Party DMA(FPDMA)
という３つの機能を有する。
【００１６】
Race-free Status Return Mechanismは、どのようなコマンドが実行されているときでも、またどのようなタイミングであっても、ドライブ（通常はＨＤＤ）から例えばＰＣなどのホストコントローラに対してステータスを自由に返せる仕組みである。また、ステータスの応答に対して、ホストとのハンドシェークは一切発生しない。従って、ドライブは複数のコマンドの実行完了ステータスを連続的にホストコントローラに対して伝えられるようになる。
【００１７】
Interrupt Aggregationは、複数のコマンドで発生する割り込みを１つにまとめることにより、割り込みの発生を抑える機能を示す。また、First Party DMAは、ホストコントローラ側のドライバソフトウェアの介入なしにドライブがデータ転送のためのＤＭＡ（Direct Memory Access）操作をセットアップできる機能である。シリアルＡＴＡでは、ドライブがホストコントローラ側のＤＭＡコンテキストを選ぶためのDMA Setup FISと呼ばれるＦＩＳを用意している。ＦＩＳ（Frame Information Structure）は、シリアルＡＴＡの基本的な転送単位となるフレームの構造を指す。
【００１８】
DMA Setup FISには、ＤＭＡセットアップが行なわれるコマンドに対応付けられたタグ番号（０〜３１)、ホストコントローラへ送信されるデータ量（DMA Transfer Count）などの情報が格納される。ホストコントローラは、ドライブから受信したDMA Setup FISをもとにＤＭＡ転送の処理を行う。
【特許文献１】特開２００１−２０９５００号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上述のように、ＳＣＳＩはコストが高いため、ＡＴＡのように安価なインターフェースを使用し、低コストを維持したまま、通信速度等の性能を向上したハード・ディスクが望まれている。
【００２０】
また、シリアルＡＴＡにおいては、Command Queuingの機能そのものは、シリアルＡＴＡ  ＩＩより以前から存在（ATA/ATAPI-4 Command Queuing）していたが、これをサポートするＨＤＤベンダが少ないこと、及び上述のRace-free Status Return Mechanism、Interrupt Aggregation、First Party DMAといった機能を持たないため、キューイングを行なっても、それに対するオーバーヘッドが大きくキューイングによるパフォーマンス向上が相殺されてしまうなどの理由により現実的ではなかった。
【００２１】
これは、従来のシリアルＡＴＡ  Ｉで定義されていたCommand Queuingプロトコル（ATA/ATAPI-4 Command Queuing）では、リード・コマンドを含む並べ替えは可能ではあったが、データ転送の開始は、先ずＨＤＤからホストに準備ができた旨を通知し、次にホストがそれに対して了解のコマンドを返してくるのを待って、その後実際のデータ転送を開始していたためである。
【００２２】
すなわち、従来のシリアルＡＴＡにおけるCommand Queuingは、上述のRace-free Status Return Mechanismを持っておらず、このため、ホストコントローラ側のドライバソフトウェア等が、次のコマンドのステータスを受け入れられるようにServiceコマンドを発行しなければ、ドライブはもう一つのコマンドのステータスを返せない。従って、コマンド完了フェーズではアクセス遅延とＣＰＵのオーバーヘッドとが生じてしまう。
【００２３】
また、ＡＴＡインターフェースでは、コマンドの実行に際して基本的に、コマンド発行（Command）、待機（Wait）、情報又はデータ転送（Transfer）、割り込み（Interrupt）の順序で処理がなされる、したがって、従来のシリアルＡＴＡにおけるCommand Queuingでは、割り込みがコマンド毎に発生するため、多数のコマンドがキューに格納されるようなケースでは、これらのコマンドによる割り込みが大きなオーバーヘッドを生んでしまう。
【００２４】
更に、従来のシリアルＡＴＡにおけるCommand Queuing は、First Party DMAをサポートしていないため、データ転送を行う際にホストコントローラに対する割り込みが発生する。ホストコントローラ側のドライバソフトウェアは、この割り込みをトリガーとしていくつかの手順を実行する必要がある。すなわち、ＤＭＡ転送のセットアップに対して、ホストコントローラ側のドライバソフトウェアが何度も介入するため、大きなオーバーヘッドが発生してしまう。
【００２５】
このように、従来のシリアルＡＴＡにおけるCommand Queuingを使用するＨＤＤでは、データ転送開始のタイミングを決定することができず、割り込みコマンドによるオーバーヘッド等が大きい等の問題点があった。そこで、シリアルＡＴＡ  ＩＩにおいて規定されたＮＣＱによってこれらの問題点を解決することができれば、安価で機械的内部動作に起因するシーク時間及び回転待ち時間を効果的に低減することが可能なＨＤＤを提供することができる。
【００２６】
本発明は、このような事情に鑑みなされたものであって、複数のコマンドをキューイングする際にシーク時間及び回転待ち時間を短くすると共に、それらの時間を有効活用することでコマンド処理性能を向上することができるメディア・ドライブ及びそのコマンド処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２７】
上述した目的を達成するために、本発明にかかるメディア・ドライブは、ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、複数のコマンドを格納可能なキューと、前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部とを有し、前記コマンド管理部は、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記実行順序を最適化することを特徴とする。
【００２８】
本発明においては、メディアへのアクセスの要否に基づき、メディア・アクセス処理とデータ転送処理とが並列処理されるようコマンド順序を最適化することで、例えば２つのコマンドを並列して実行する等することにより、複数のコマンド処理の処理効率を高めることができる。
【００２９】
また、前記コマンド管理部は、前記コマンドの処理を、前記メディア・アクセス処理を行うメディア・アクセス処理と、前記データ転送処理を行うデータ転送処理とに分類し、前記分類結果に基づき前記実行順序を最適化することができ、コマンドの種類毎に分類すると共に、一のコマンドにおける処理であってもメディア・アクセス処理とデータ転送処理とに分類することによりコマンド実行処理を高効率化する。
【００３０】
更に、前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、前記コマンド管理部は、リード・コマンドを、前記一時記憶部に前記リード・データの全部が記憶されたアクセス不要リード・コマンドと、前記メディアにのみ前記リード・データの一部又は全部が記憶されたアクセス要リード・コマンドとに分類し、前記分類結果に基づき前記実行順序を最適化することができ、リード・コマンドをメディアへのアクセス要否に基づき分類することができる。
【００３１】
また、前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、前記コマンド管理部は、前記リード・コマンドの処理のうち、前記メディアにのみ記憶された一部又は全部のリード・データを前記一時記憶部へ読み出す処理を前記メディア・アクセス処理とし、前記一時記憶部に記憶されたリード・データを前記ホストへ転送する処理及び前記ホストからのライト・データを前記一時記憶部へ記憶するライト・コマンドの処理を前記データ転送処理として分類することができる。すなわち、リード・コマンドの処理のうち、メディアと一時記憶部との間のメディア・アクセス処理と、一時記憶部とホストとの間の伝送路（バス）を占有するデータ転送処理とに分類し、両者を並列処理することができる。
【００３２】
更に、前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記コマンド管理部は、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、当該リード・データの前記一時記憶部に記憶されている前記残りを前記ホストに転送する前記データ転送処理とを並列して実行させることができ、これにより、一のコマンドの処理時間を短縮化することができる。
【００３３】
更にまた、前記コマンド管理部は、前記メディアにのみ一部又は全部が記憶された前記リード・データを前記一時記憶部に読み出す前記メディア・アクセス処理と、他のリード・コマンド又はライト・コマンドの前記データ転送処理とを並列して実行させることができ、同時に２つのコマンドの処理を並行して行なうことができる。
【００３４】
また、前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、前記一時記憶部に記憶された前記リード・データの前記残りを前記ホストへ転送するデータ転送処理、又は前記アクセス不要リード・コマンド若しくはライト・コマンドの処理とを並列して実行させることができ、コマンド処理を短縮化することができる。
【００３５】
更に、前記コマンド管理部は、前記分類結果に基づきリード・コマンドの先読みデータ範囲を決定する先読み範囲決定部を更に有し、前記先読み範囲決定部は、一の前記アクセス要リード・コマンドの前記メディアにのみ記憶されたデータが他の前記アクセス要リード・コマンドの前記先読みデータに含まれるよう前記先読み範囲を決定することができ、一のアクセス要コマンドの先読み処理により他のアクセス要コマンドをアクセス不要コマンドとすることができる。
【００３６】
更にまた、前記先読み範囲決定部は、各前記アクセス要リード・コマンドにおける前記メディアから読み出すリード・データのアドレスを比較し、一のアドレスの一端と他のアドレスの一端とが所定の関係を満たす場合に、前記他のアドレスが含まれるよう前記一のアドレスの前記先読み範囲を設定することができ、所定の条件を満たす場合にのみ先読み範囲を決定することができる。
【００３７】
また、前記先読み範囲決定部は、複数の前記アクセス要リード・コマンドにおける前記メディアにのみ記憶されたリード・データを個別に読み出す時間の総和と、連続して読み出す時間の総和とを比較し、当該比較結果に基づき先読み範囲を決定することができ、処理時間に応じて個別に処理するか又は先読みにより処理するかを決定することができる。
【００３８】
更に、前記コマンド管理部は、前記先読み範囲決定部により決定された先読み範囲にリード・データが含まれるアクセス要リード・コマンドを、アクセス不要リード・コマンドとして再分類することができ、コマンド処理順序を最適化して処理効率を高めることができる。
【００３９】
更にまた、前記コマンド管理部は、前記コマンド又はコマンドの処理の実行優先度に基づき前記実行順序を決定することができ、例えば、前記ライト・コマンドより前記リード・コマンドの実行を優先させたり、前記キューに格納された順序が早いコマンドの実行を優先させたり、前記アクセス要リード・コマンドより前記アクセス不要リード・コマンドの実行を優先させたり、又は前記メディア・アクセス処理より前記データ転送処理の実行を優先させたりすることができる。
【００４０】
本発明にかかるメディア・ドライブは、ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、複数のコマンドを格納可能なキューと、前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部と、前記分類結果に基づきリード・コマンドの先読み範囲を決定する先読み範囲決定部とを有し、前記先読み範囲決定部は、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるよう決定することを特徴とする。
【００４１】
本発明においては、リード・コマンドを処理する際、できるだけメディアへのアクセスが不要となるよう先読み範囲を決定しておき、メディアへのアクセスが不要で短時間で処理可能なコマンドを増やし、これらの実行順序を最適化することで、コマンド処理能力を向上させることができる。
【００４２】
本発明にかかるメディア・ドライブのコマンド処理方法は、複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、前記分類結果に基づき、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記複数のコマンドの実行順序を最適化することを特徴とする。
【００４３】
本発明にかかるメディア・ドライブのコマンド処理方法は、複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、前記複数のコマンドのうち、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるようリード・コマンドの先読み範囲を決定し、前記コマンドを処理する際のメディアへのアクセスの要否に基づき、前記複数のコマンドの実行順序を最適化することを特徴とする。
【発明の効果】
【００４４】
本発明によれば、複数のコマンドをキューイングする際にシーク時間及び回転待ち時間を短くすると共に、これらの時間を有効活用するようコマンド実行順序を最適化することでコマンド処理性能を向上することができる。
【発明を実施するための最良の形態】
【００４５】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。上述したように、シリアルＡＴＡ  ＩＩにおいては、新たにNative Command Queuing（ＮＣＱ）プロトコルが定義された。ＮＣＱにおいては、データ転送開始タイミングをＨＤＤ側で決めること、及び複数のコマンドのデータ転送を同時に行うことが可能である。本実施の形態は、これら、データ転送開始タイミングをＨＤＤ側で決定する機能、及び複数のコマンドのデータ転送が同時に行うことが可能な機能を最大限に活用してコマンド・キューイングを高効率に実行することができるＨＤＤ及びそのコマンド処理方法に本発明を適用したものである。
【００４６】
本実施の形態においては、複数のコマンドをキューイングする機能を有するＨＤＤにおいて、キューに保持されるコマンド及びその処理を磁気ディスクにアクセスが必要か否か、すなわちコマンド実行中のバスの占有率に基づき分類し、この分類結果に基づき複数のコマンド又はコマンドの処理を並列処理することで、コマンド実行効率を向上させるものである。
【００４７】
すなわち、リード・コマンドにおいてキャッシュにデータがない場合は、磁気ディスクにアクセスして先ずデータをキャッシュに読み出す必要があり、この処理の間は、ホストとの間の伝送路（バス）は空いた状態となる。そこで、この処理時間に実行可能な処理、すなわちホストとのデータ転送のやりとりを行わせることで磁気ディスクにアクセスが必要なリード・コマンドのメディア・アクセス処理と磁気ディスクにアクセスが不要なコマンドのデータ転送処理とを並列処理するものである。
【００４８】
なお、本実施の形態においては、シリアルＡＴＡ  ＩＩのNative Command Queuing（ＮＣＱ）プロトコルを利用した例について説明するが、本発明は、シリアル伝送、又はシリアルＡＴＡ  ＩＩプロトコルに限定されるものではなく、複数のコマンドをキューイングする機能、並びにデータ転送開始タイミングをドライブ側で決めること及び複数のコマンドのデータ転送を同時に行う機能を有するメディア・ドライブにおけるコマンド処理に適用可能であることは言うまでもない。
【００４９】
先ず、本実施の形態にかかるＨＤＤ及びホストを含むデータ処理システムについて説明する。図１は、本実施の形態におけるデータ処理システム１００の概略構成を示す構成図である。データ処理システム１００は、コンピュータやデジタル・カメラなど、データ処理を行う上位の機器（ホスト）１１０と、ホスト１１０から伝送されたデータを記憶する記憶装置であるＨＤＤ１２０を有している。ＨＤＤ１２０は、フレーム内に、メディアの一例として１又は複数の磁気ディスク１２１と、各磁気ディスクの記録面に対応する磁気ヘッド１２２を備えたヘッド・スタック・アセンブリ１２３と、磁気ディスク１２１へのデータの書き込み及び磁気ディスク１２１からのデータ読み出しのために、これらの要素を制御するコントローラ１２４とを備えている。
【００５０】
ホスト１１０から伝送されたホスト・ユーザ・データは、コントローラ１２４によって必要な処理がなされ、ライト信号に変換されたあと、ヘッド・スタック・アセンブリ１２３に送られる。磁気ヘッド１２２は、取得したライト信号に応じて、磁気ディスク１２１の記録面にデータを書き込む。一方、磁気ヘッド１２２によって磁気ディスクから読み出されたリード信号は、コントローラ１２４によってデジタル信号に変換され、必要な処理がなされたあと、ホスト１１０に伝送される。
【００５１】
磁気ディスク１２１は、磁性層が磁化されることによってデータを記録する不揮発性の記録媒体であり、ＨＤＤ１２０が動作しているときに、スピンドル・モータ１２５のスピンドル軸を中心として所定の一定速度で回転駆動される。ＨＤＤ１２０の非動作時には、磁気ディスク１２１は静止している。磁気ディスク１２１の表面には、データを格納するための区画として同心円状に複数のトラックが形成され、さらに、各トラックは円周方向に区分された複数のセクタを備えている。
【００５２】
磁気ディスク１２１の表面にはサーボ・データ記憶領域が形成されており、典型的には、磁気ディスク１２１は半径方向に沿って形成された複数のサーボ・データ記憶領域を有している。また、各セクタにおいてサーボ・データ記憶領域とユーザ・データ記憶領域とが形成されている。サーボ・データを磁気ヘッド１２２が読み取ることによって、磁気ヘッド１２２の位置に関する情報を取得することができる。サーボ・データは、トラック番号情報を備えるトラック・データ、セクタ番号情報を備えるセクタ・データ、及びバースト・パターンを有している。
【００５３】
ヘッド・スタック・アセンブリ１２３はフレーム内に取り付けられており、磁気ディスク１２１の表面に沿って揺動可能となっており、ボイス・コイル・モータ（ＶＣＭ）１２６によって駆動される。ヘッド・スタック・アセンブリ１２３の先端部にはスライダと磁性薄膜素子とを有する磁気ヘッド１２２が設けられている。ヘッド・スタック・アセンブリ１２３が揺動することによって、磁気ヘッド１２２が磁気ディスク１２１の表面の半径方向に沿って移動する。これによって、磁気ヘッド１２２が所望のトラックにアクセスすることができる。
【００５４】
ヘッド・スタック・アセンブリ１２３は、一の磁気ディスク１２１に対して２つの磁気ヘッド１２２を有しており、磁気ヘッドそれぞれが磁気ディスク１２１の各表裏面に対応する。磁気ヘッド１２２は、データ書き込み／読み出し処理を行わない場合、典型的には、磁気ディスク１２１の外側に配置されたランプ機構（不図示）に退避する、もしくは、ＣＳＳ（Contact Start and Stop）方式においては、内周に配置されているＣＳＳゾーンに退避する。磁気ヘッド１２２は、磁気ディスク１２１へのデータの書き込み、あるいは、磁気ディスク１２１からのサーボ・データ及びユーザ・データの読み出しを行う。
【００５５】
図１に示すように、コントローラ１２４は、リード／ライト・チャネル（Ｒ／Ｗチャネル）１２７、ハードディスク・コントローラ（ＨＤＣ）１２８、マイクロプロセッサ・ユニット（ＭＰＵ）１２９、メモリ１３０、サーボ・コントローラ１３３、モータ・ドライバ・ユニット１３４を有している。モータ・ドライバ・ユニット１３４は、ボイス・コイル・モータ・ドライバ（ＶＣＭドライバ）１３５及びスピンドル・モータ・ドライバ（ＳＰＭドライバ）１３６を有している。
【００５６】
Ｒ／Ｗチャネル１２７は、ホスト１１０から取得したデータについて、ライト処理を実行する。ライト処理において、Ｒ／Ｗチャネル１２７はＨＤＣ１２８から供給されたライト・データをコード変調し、さらにコード変調されたライト・データをライト信号（電流）に変換して磁気ヘッド１２２に供給する。磁気ヘッド１２２は、取得した信号に応じてコイルに電流を流すことによって磁気ディスク１２１にデータを書き込む。また、ホスト１１０にデータを供給する際にはリード処理を行う。リード処理において、Ｒ／Ｗチャネル１２７は磁気ヘッド１２２から供給されたリード信号からデータを抽出し、デコード処理を行う。デコード処理されたリード・データは、ＨＤＣ１２８に供給される。
【００５７】
ＭＰＵ１２９は、メモリ１３０にロードされたマイクロ・コードに従って動作し、磁気ヘッド１２２のポジショニング制御、インターフェース制御、ディフェクト管理などのＨＤＤ１２０の全体の制御のほか、データ処理に関する必要な処理を実行する。ＨＤＤ１２０の起動に伴い、メモリ１３０には、ＭＰＵ１２９上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１２１あるいはＲＯＭ（不図示）からロードされる。
【００５８】
Ｒ／Ｗチャネル１２７によって読み出されるデジタル・データは、ホスト１１０からのユーザ・データの他に、サーボ・データを含んでいる。サーボ・コントローラ１３３はＲ／Ｗチャネル１２７から取得したリード・データからサーボ・データを抽出する。サーボ・データは、トラック・データ、セクタ・データ、及びバースト・パターンを有している。抽出されたサーボ・データは、サーボ・コントローラ１３３からＭＰＵ１２９に転送される。
【００５９】
ＭＰＵ１２９は、マイクロ・コードに従って、サーボ・データを使用した磁気ヘッド１２２の位置決め制御処理を行う。ＭＰＵ１２９からの制御データはＶＣＭドライバ１３４に出力される。ＶＣＭドライバ１３４は制御信号に応じて駆動電流をＶＣＭ１２６に供給する。また、ＭＰＵ１２９は、マイクロ・コードに従って、スピンドル・モータ１２５の回転制御のために、モータ・ドライバ・ユニット１３４のレジスタにＳＰＭ制御データをセットする。ＳＰＭドライバ１３６は、セットされたＳＰＭ制御データに応じて、スピンドル・モータ１２５の回転制御を実行する。
【００６０】
ＨＤＣ１２８は、ホスト１１０との間のインターフェース機能を備えており、ホスト１１０から伝送されるユーザ・データ、及びリード・コマンドやライト・コマンドを含む制御データなどを受信する。受信したユーザ・データは、Ｒ／Ｗチャネル１２７に転送される。また、Ｒ／Ｗチャネル１２７から取得した磁気ディスクからのリード・データ、又はデータ転送のための制御データをホスト１１０に送信する。ＨＤＣ１２８は、この他、ユーザ・データについての誤り訂正処理などを実行する。
【００６１】
ＨＤＣ１２８とホスト１１０との間における制御データ及びユーザ・データ伝送は、ハードディスク・コントローラ１２８及びＭＰＵ１２９上で動作するマイクロ・コードによって制御される。特に、本実施の形態におけるＨＤＤ１２０は、ホスト１１０からの所定コマンドについて、コマンド・キューイングの機能を有している。ＨＤＣ１２８内におけるコマンド実行順序、あるいは、ホスト−デバイス間の制御データ及びユーザ・データ伝送順序は、ＨＤＤ１２０のパフォーマンス向上の観点から制御、管理される。
【００６２】
次に、コマンド・キューイング、及びＨＤＤ１２０とホスト１１０との間におけるホスト−デバイス間のコマンド処理方法について説明する。本実施の形態におけるホスト−デバイス間インターフェースにおいては、ＨＤＤ１２０が内部的に所定処理の実行順序を制御することができ、ＨＤＤ１２０のパフォーマンス向上を図ることができる。特に、本実施の形態におけるホスト−デバイス間データ通信においては、ホスト１１０へのデータ転送タイミングをＨＤＤ１２０側で決めることができ、また複数のコマンドのデータ転送処理を合わせて行なうことができるため、キューに格納される複数のコマンドの実行パフォーマンスを向上させることができる。
【００６３】
図２は、本実施の形態のホスト−デバイス間インターフェースにおいて、ホスト−デバイス間のデータ転送処理を実行する要部を示すブロック図である。ＨＤＣ１２８は、ホスト・インターフェース２１１、ドライブ・インターフェース２１２及びメモリ・マネージャ２１３を備えている。マイクロ・コードがＭＰＵ１２９上で動作することによって、ＭＰＵ１２９は、ホスト・インターフェース・マネージャ２２１、コマンド実行マネージャ２２２、キュー・マネージャ２２３及びドライブ・マネージャ２２４として機能することができる。メモリ１３０はコマンド及びデータを一時的に記憶し、コマンド・キュー２３１及び一時記憶部としてのキャッシュ２３２として機能することができる。キャッシュ２３２には、一時的に記憶されている転送データ（リード・データ又はライト・データ）の他、この転送データのＬＢＡ及びその長さなどの情報が記憶される。
【００６４】
ホスト・インターフェース２１１は、ホスト１１０との間における実際のデータ転送処理を実行する。ドライブ・インターフェース２１２は、メディアの一例である磁気ディスク１２１との間（又はリード・ライト・チャネル１２７との間）における実際のデータ入出力処理を行う。メモリ・マネージャ２１３はメモリ１３０のデータ記憶を制御し、ハードディスク・コントローラ１２８内の他の機能ブロックとメモリ１３０との間におけるコマンド及びユーザ・データの仲介処理を行う。
【００６５】
ホスト・インターフェース・マネージャ２２１はホスト・インターフェース２１１を管理し、ホスト・インターフェース２１１との間において所定の通知あるいは命令の授受を行う。また、ホスト・インターフェース・マネージャ２２１は、ＭＰＵ１２９で機能する他の論理ブロックとハードディスク・コントローラ１２８との間のインターフェースとして機能する。ホスト・インターフェース・マネージャ２２１は、他の機能ブロックから取得した通知や要求などのデータに基づいて、ホスト・インターフェース２１１とホスト１１０との間においてやり取りされる例えばコマンド終了通知の発行タイミングなどを制御する。
【００６６】
キュー・マネージャ２２３は、コマンド・キュー２３１にキューされているコマンドを分類し、この分類結果に基づき再スケジューリングを実行し、パフォーマンス最適化の観点から適切なコマンド実行順序を決定するコマンド管理部として機能する。コマンド実行マネージャ２２２は、キュー・マネージャ２２３によって分類された分類結果及び決定されたコマンド実行順序に従って、コマンドの実行を制御する。ドライブ・マネージャ２２４はドライブ・インターフェース２１２を制御することによって、磁気ディスク１２１との間のデータ書き込み及びデータ読み出しを制御する。ドライブ・マネージャ２２４は、コマンド実行マネージャ２２２からの要求に応じて、ドライブ・インターフェース２１２を制御する。
【００６７】
次に、本実施の形態におけるコマンド・キューイングの基本的動作を説明する。尚、ホスト１１０から伝送されるコマンドは、キューされるコマンドの他、キューされないコマンドを含むことができる。例えば、ＳＡＴＡ  ＩＩにおいては、ＮＣＱの他、ＤＭＡ（Direct Memory Access）やＰＩＯ（Programmed I/O）などのプロトコルを同時にサポートすることができる。キューすべきコマンドは、例えば、コマンドに付される識別子を参照することによって決定することができる。ここでは、キューされるコマンド及びそれに伴うデータ伝送について説明する。また、キューされるコマンドとして、リード・コマンド及びライト・コマンドを例にとって説明する。
【００６８】
図３は、本形態におけるコマンドのデータ・フォーマットの一例を示している。図のデータ・フォーマットは、リード・コマンド又はライト・コマンドに適用することができる。本実施の形態において、キューイングされるコマンドは、タグ・フィールドを含むタグ付きのリード又はライト・コマンドである。キューイングされる各コマンドは、各コマンドに対応するタグによって識別される。タグによって識別可能な未終了コマンドの数は、キューの深さに応じて決定される。ＮＣＱにおいては３２のコマンドのそれぞれが、０〜３１を表すタグによって識別される。
【００６９】
図３における開始セクタは、転送要求されているデータの開始セクタを表している。セクタ数はその開始セクタからのセクタ数を表している。セクタは、例えば、ＬＢＡによって特定することができる。コマンドには、さらに、リード・コマンドとライト・コマンドとを識別するためのコマンドＩＤが付されている。この他、コマンドは、キャッシュ制御のためのデータなど、他の制御データ等を含むことができる。ＮＣＱにおいては、「Read FPDMA (First Party DMA) Queued」又は「Write FPDMA Queued」などである。
【００７０】
ホスト１１０から伝送されたコマンドは、ホスト・インターフェース２１１によって受信され、メモリ・マネージャ２１３を介してコマンド・キュー２３１に記憶される。ホスト・インターフェース２１１は、コマンドが入力されたことをホスト・インターフェース・マネージャ２２１に通知する。ホスト・インターフェース・マネージャ２２１は、ホスト・インターフェース２１１からの通知を受けると、ホスト・インターフェース２１１に、ビジーをクリアすることを要求する。コマンドを受信し、新たなコマンド受領が可能である段階で、ユーザ・データ転送前にビジーはクリアされる。さらに、ホスト・インターフェース・マネージャ２２１は、キュー・マネージャ２２３にコマンドの分類及びコマンド実行順序の再スケジューリングを要求する。コマンド・キュー２３１には、複数の未終了コマンドがキューされうる。
【００７１】
キュー・マネージャ２２３は、コマンド・キュー２３１に格納されているコマンドのコマンドＩＤにより、リード・コマンドであるか、ライト・コマンドであるかを識別する。また、リード・コマンドの場合、そのデータのＬＢＡがキャッシュ２３２に存在するか否かをチェックする。ここで、リード・コマンドにおいては、キャッシュ２３２にリード・データが存在する場合は、キャッシュ２３２から読み出したリード・データをホストへ転送するデータ転送処理となる。また、ライト・コマンドは、ホストから転送されるライト・データを受け取りキャッシュ２３２に書き込むデータ転送処理となる。これに対し、リード・コマンドにおいてキャッシュ２３２にデータが存在しない場合は、磁気ディスクへアクセスしてデータを読み出す処理（以下、メディア・アクセス処理という。）が必要となり、この場合のリード・コマンドの処理は、このメディア・アクセス処理と上述のデータ転送処理とからなる。キュー・マネージャ２２３は、これらのコマンド及びその処理を、メディア・アクセスの要否及びメディア・アクセス処理かデータ転送処理かに基づき分類する。そして、この分類結果に基づきパフォーマンスの点から最適な順序でコマンドが実行されるように、コマンド・キュー２３１内の未終了コマンドの実行順序を決定し、コマンド順序を再スケジューリングする。コマンド実行順序は、特に、シーク時間及び回転待ち時間の合計の最短化が行われるように決定される。ここで、本明細書においては、シーク時間及び回転待ち時間の合計（以下、レイテンシともいう。）とデータの読み出し時間との合計をメディア・アクセス処理時間ということとする。
【００７２】
再スケジューリングにおいて、キュー・マネージャ２２３は、所定アルゴリズムに従って、様々なパラメータを考慮して実行順序を決定する。例えば、シーク長、アクセス開始位置、アクチュエータ動作プロファイル、回転方向における位置決め、キャッシュ状態など、多くのパラメータが参照される。ここで、本実施の形態においては、後述するように、リード・コマンドにおいてはリード・データのＬＢＡから先読みの長さが決定され、この先読み分も考慮した実行順序が決定される。また、コマンド・キュー２３１に格納される順序を最適な実行順序に再スケジューリングするタイミングは、例えば、新たなコマンドがコマンド・キュー２３１に格納される毎としたり、所定の時間経過毎としたり、ホスト・インターフェース・マネージャ２２１の指示タイミングとしたりすることができる。
【００７３】
コマンド実行マネージャ２２２は、キュー・マネージャ２２３によって決定された順序に従ってコマンド実行を管理する。上記のように、本形態においては、ホスト−デバイス間のユーザ・データ転送は、ハード・ディスク・ドライブ１２０が内部的に制御することができる。ホスト１１０へのデータ転送あるいはホスト１１０からのデータ転送について、ハード・ディスク・ドライブ１２０が、内部処理におけるレイテンシ低減の観点から、最適なタイミングを決定することができる。
【００７４】
また、各コマンドに対応するデータ転送順序を順不同に決定することができることに加えて、一つのコマンドに対応するデータを、分割し、各部分データを順不同で転送することができることが処理効率化の観点から好ましい。また、一つのコマンドに対応する部分データと部分データの転送の間に、他のコマンドの部分データを転送することができることが更に好ましい。例えば、ＮＣＱにおいて、オプションとしてこれらの転送方法がサポートされている。ＮＣＱにおいて、"non-zero buffer offsets"が"Enable"、つまり、部分データを特定するオフセットの設定が可能であり、"guaranteed in-order delivery"が"Disable"である、つまり、順不同転送が可能である場合、部分データを上述のような転送方法によって転送することが可能である。なお、以下の説明においては、この条件が満たされているものとして説明する。
【００７５】
キャッシュ２３２にデータの一部又は全部が存在しないリード・データの転送を指示するリード・コマンドの処理は、キャッシュ２３２に存在するデータをホストへ転送するデータ転送処理に加えて、磁気ディスクにのみ存在するリード・データをキャッシュ２３２に一旦読み出すメディア・アクセス処理が必要になる。そこで、本実施の形態においては、一のリード・コマンドの処理をメディア・アクセス処理とデータ転送処理とに分類し、メディア・アクセス処理時間に、自己又は他のコマンドのデータ転送処理を実行することで、コマンドの処理効率を向上するものである。
【００７６】
更に、ユーザ・データ転送をハード・ディスク・ドライブ１２０が制御するため、ハード・ディスク・ドライブ１２０は、ホスト１１０に対してデータ転送のためのセットアップ・フレームを発行する。図４は、本実施の形態におけるセットアップ・フレームのデータ・フォーマットの一例を示している。ＮＣＱの"DMA Setup FIS(Frame Information Structure)"は、セットアップ・フレームの一例である。セットアップ・フレームは、リードもしくはライトのデータ転送方向を特定する転送方向を特定するフィールドを含む。タグ・フィールドは、データ転送が対応するキューされている未終了コマンドを特定する。上記のように、例えば、３２のコマンドのそれぞれが、０〜３１を表すタグによって識別される。
【００７７】
オフセット・フィールドは、一つのコマンドに対する部分データの転送を可能とするため、転送データのオフセットを特定する。ＮＣＱの"non-zero buffer offsets"は、オフセット・フィールドの一例である。転送データ・バイト・フィールドは、転送されるデータのバイト数を特定し、オフセットと共に一つのコマンドに対する部分データの転送を可能とする。セットアップ・フレームは、この他、フレーム・タイプや制御データ転送に関する情報などを含む制御データ・フィールドを含むことができる。
【００７８】
ユーザ・データ転送の終了に伴い、コマンド終了通知がハード・ディスク・ドライブ１２０からホスト１１０に送信される。このコマンド終了通知の転送はホスト・インターフェース・マネージャ２２１によって制御することができ、各コマンドに対応するコマンド終了通知のタイミングは、コマンド終了のタイミングの直後に限らず、パフォーマンス向上の観点から適切なタイミングにおいてコマンド終了通知をホスト１１０に出力することができる。
【００７９】
図５は、本実施の形態におけるコマンド終了通知のデータ・フォーマットの一例を示している。コマンド終了通知は、フレーム・タイプなどの情報を含む制御データ・フィールドの他に、コマンド・ステータス・フィールドを含む。コマンド・ステータス・フィールドは、各タグによって特定される各コマンドのステータスを表す。好ましくは、コマンド・ステータス・フィールドは、キューされうるコマンド数と同一の数のビットから構成される。つまり、３２のコマンドがキュー可能であれば、コマンド・ステータス・フィールドは、３２ビット・データとなる。各ビットが、各タグに対応付けられたコマンドのステータスを表すことができる。
【００８０】
例えば、所定のビットがセットされている場合、そのビットに対応するタグのコマンドが成功裏に終了したことを示すことができる。また、上述したように、複数のコマンドの終了をホスト１１０に知らせる場合は、コマンド・ステータス・フィールドにおける複数のビットをセットする。反対に、ビットがクリアされている場合、対応するタグのコマンドが未終了であることを示すことができる。ＮＣＱにおいては、"Set Device Bits FIS"がコマンド終了通知の一例であり、"SActive"フィールドがコマンド・ステータス・フィールドの一例である。
【００８１】
次に、本実施の形態におけるコマンドの処理方法について説明する。先ず、ライト・コマンド処理の基本的な動作について説明する。図６は、ライト・コマンド処理方法を示すフローチャートである。キュー・マネージャ２２３からライト・コマンドを取得すると（ステップＳ６０１）、コマンド実行マネージャ２２２は、ホスト・インターフェース・マネージャ２２１にホスト１１０からのデータ転送を開始することを要求する。ホスト・インターフェース・マネージャ２２１は、所定のアルゴリズムに従ってホスト１１０との間のデータ伝送（データはユーザ・データの他、コマンド終了通知などの制御データを含む）順序を決定する（ステップＳ６０２）。本例において、要求に応じてライト・データの転送開始をホスト・インターフェース２１１に要求する。ホスト・インターフェース２１１は、要求に応答して、セットアップ・フレームを発行する（ステップＳ６０３）。
【００８２】
ホスト１１０は、セットアップ・フレームに応答して、ライト・データを転送する（ステップＳ６０４）。転送されたライト・データは、ホスト・インターフェース２１１から、メモリ・マネージャ２１３を介して、キャッシュ２３２に記憶される（ステップＳ６０５）。その後、ホスト・インターフェース２１１が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知をホスト１１０に送信する（ステップＳ６０６）。
【００８３】
なお、キャッシュ２３２がDisableである場合には、データ転送終了の通知を受けたホスト・インターフェース・マネージャ２２１は、転送完了をコマンド実行マネージャ２２２に通知し、コマンド実行マネージャ２２２は、ドライブ・マネージャ２２４にデータ書き込みの要求を行う。そして、ドライブ・インターフェース２１２は、ドライブ・マネージャ２２４の管理下において、メモリ・マネージャ２１３を介して、メモリ１３０から取得したライト・データを磁気ディスク１２１に出力し、磁気ディスク１２１へのライト・データ書き込みの終了後に、ホスト・インターフェース２１１がホスト１１０にコマンド終了通知を送信する。
【００８４】
次に、リード・コマンド処理の基本的な動作について説明する。図７は、リード・コマンド処理方法を示すフローチャートである。コマンド実行マネージャ２２２は、リード・コマンドが、磁気ディスクにアクセスが必要か否かに応じて処理が異なる。すなわち、磁気ディスクにアクセス必要なリード・コマンドである場合には磁気ディスクへのアクセスとデータ転送とを並列的に処理することも可能である。
【００８５】
通常、メディア・アクセスが必要、すなわちキャッシュ２３２にリード・データの一部又は全部が存在しない、アクセス要リード・コマンドとしてのリード・コマンドを処理する場合は、コマンド実行マネージャ２２２は、ドライブ・マネージャ２２４に磁気ディスク１２１からのリード・コマンドが指定するリード・データの読み出しを要求する。磁気ディスク１２１からのリード・データは、ドライブ・マネージャ２２４の制御の下、ドライブ・インターフェース２１２、メモリ・マネージャ２１３を介してメモリ１３０のキャッシュ２３２に記憶される（ステップＳ７０１）。
【００８６】
さらに、コマンド実行マネージャ２２２は、ホスト・インターフェース・マネージャ２２１にリード・データの転送要求を渡す。ホスト・インターフェース・マネージャ２２１は、コマンド実行マネージャ２２２からの要求に応答して、ホスト・インターフェース２１１にホスト１１０へのデータ転送を開始することを要求する。ホスト・インターフェース２１１は、要求に応答して、セットアップ・フレームを発行する（ステップＳ７０２）。ホスト・インターフェース２１１は、メモリ・マネージャ２１３からキャッシュ２３２に記憶されているリード・データを取得し、リード・データをホスト１１０に転送する（ステップＳ７０３）。転送処理が終了すると、リード・データの転送が終了したことがホスト・インターフェース２１１からホスト・インターフェース・マネージャ２２１に通知される。
【００８７】
ホスト・インターフェース・マネージャ２２１は、ホスト・インターフェース２１１にコマンド終了通知の送信を要求する。そして、ホスト・インターフェース２１１が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト１１０に送信する（ステップＳ７０４）。
【００８８】
磁気ディスクにアクセスが不要、すなわち、キャッシュ２３２にリード・データの全部が存在する、アクセス不要リード・コマンドとしてのリード・コマンドを処理する場合は、ホスト・インターフェース・マネージャ２２１にリード・データの転送要求を渡し、ホスト・インターフェース・マネージャ２２１がホスト・インターフェース２１１にホスト１１０へのデータ転送開始を要求し、ホスト・インターフェース２１１が要求に応答して、セットアップ・フレームを発行する上述のステップＳ７０２からの処理を実行する。
【００８９】
なお、リード・コマンド、ライト・コマンドのコマンド終了通知の送信タイミングは、他のコマンド又は他のコマンド終了通知などを考慮し、内部処理効率の点から決定することが好ましい。
【００９０】
以下、本発明の実施の形態について更に詳細に説明する。上述のように、ＨＤＤは、ホストからライト・コマンド又はリード・コマンドを受け取り、これらのコマンドに従ってディスクからユーザデータ（転送データ）を読み出し、ホストへ転送したり、ホストから受け取った転送データをディスクへ書き込む処理を実行する。この際、ライト・キャッシュがオン（able）であれば、ホストからの転送データをキャッシュ２３２が受け取った時点でライト・コマンドは終了となる。この場合、ライト・キャッシュから磁気ディスクへの書き込みはＨＤＤ自身がそのタイミングを決定して実行することができる。
【００９１】
このように、ライト・コマンドは、ホストから転送されたデータがＨＤＤのキャッシュ２３２に格納された時点で、ホストとの間のバスの占有が終了し、ライト・コマンドの終了とみなすことができる。すなわち、ライト・コマンドは、ＨＤＤがディスクにアクセスすることなく終了することができる。
【００９２】
一方、ホストへ転送する転送データは、一旦キャッシュ２３２に読み出した後、ホストへ転送される。この際、読み出すべき転送データのアドレスより先のアドレスまでユーザ・データを読み出しておきキャッシュ２３２に記憶しておくことで、他のリード・コマンドを効率よく実行するようないわゆる先読み（look-ahead）を必要に応じて行うことができる。
【００９３】
ここで、リード・コマンドの場合には、目的の転送データがキャッシュ２３２にない場合、ＨＤＤはディスクにアクセスして目的のデータを読み込みにいく必要がある。すなわち、キャッシュ２３２にコマンドが示すデータのＬＢＡが存在していれば磁気ディスクにアクセスすることなくリード・コマンドを終了することができ、キャッシュ２３２にＬＢＡが存在しなければメディア・アクセスが終了するまでコマンドを終了させることができない。この場合、一部のＬＢＡがキャッシュ２３２に存在したとしても、全部のＬＢＡがキャッシュ２３２に存在しない限り、当該リード・コマンドを終了させるためには磁気ディスクへのアクセスが必要となる。
【００９４】
すなわち、ライト・コマンドと、リード・コマンドであってキャッシュ２３２に全てのデータが存在する場合は、コマンドの実行は、データ転送処理となるが、リード・コマンドであってキャッシュ２３２に一部又は全部のデータが存在しない場合には、磁気ディスクにアクセスして、一旦キャッシュ２３２にデータを読み出し、それを転送するメディア・アクセス処理が必要となる。磁気ディスクへのアクセス処理は、機械的内部動作を伴うため、その処理に時間がかかる。また、メディア・アクセス処理の間はデータを転送しないためバスが空いた状態になる。
【００９５】
そこで、リード・コマンドであってキャッシュ２３２にリード・データの一部又は全部が存在しない場合、磁気ディスクにアクセスしてデータを読み出す間（メディア・アクセス時間）において、自己又は他のコマンドのデータ転送処理、すなわち、メディア・アクセス中のリード・コマンドのうちキャッシュ２３２に存在するリード・データのホストへの転送若しくは他のリード・コマンドであってキャッシュ２３２にデータが存在するもののホストへの転送、又はホストからキャッシュへのライト・データの転送（ライト・コマンド）のいずれかを実行する。このことにより、リード・コマンドのメディア・アクセス時間において、ホストとの間にてデータ転送する処理を並列処理することができ、コマンドの処理時間を短縮化することができる。
【００９６】
本実施の形態においては、キュー・マネージャ２２３が、キューされる各コマンド及びコマンドの処理を分類するが、本実施の形態におけるキュー・マネージャ２２３は、リード・コマンドを、キャッシュ２３２にデータ全部が存在するもの、一部存在するもの、全く存在しないもの、の３種類に分類する。ここで、本明細書においては、リード・コマンドにおいて、リード・データがキャッシュ２３２に全部存在する場合をオールヒット、キャッシュ２３２にリード・データの一部が存在する場合をハーフヒット、キャッシュ２３２にリード・データが存在せず、磁気ディスクにのみ存在する場合をノーヒットということとする。
【００９７】
すなわち、キュー・マネージャ２２３は、ライト・コマンド及びオールヒットのリード・コマンドを磁気ディスクへのアクセスが不要なコマンド（以下、アクセス不要コマンドともいう。）とし、ハーフヒット、ノー・ヒットのリード・コマンドを磁気ディスクへのアクセスが必要なコマンド（以下、アクセス要コマンドともいう。）として分類する。
【００９８】
コマンド実行の際に磁気ディスクにアクセスが必要なハーフヒット、ノーヒットは、上述したように、コマンド実行のためにはキャッシュ２３２に存在しないデータを磁気ディスクにアクセスして読み出す処理（ステップＳ７０１）が必要となる。このメディア・アクセスは上述の機械的内部動作であり、ホストとの間の伝送路であるバスを使用しない。一方、メディア・アクセスが不要なライト・コマンド及びオールヒットのリード・コマンドは、コマンド実行に際してバスを占有する。本実施の形態は、このように、一のコマンドのメディア・アクセス時間に、バスを占有する他のコマンドを並列処理することで、コマンドを効率よく処理するものである。そこで、キュー・マネージャ２２３は、各コマンドの処理を、バスの占有を伴わないメディア・アクセス処理と、バスの占有を伴うデータ転送処理とに分類し、コマンドの種類及びメディア・アクセスの要否（バスの占有の要否）に基づきコマンドの最適な実行順序を決定する。
【００９９】
すなわち、キュー・マネージャ２２３は、コマンド・キュー２３１にキューイングされている複数のコマンドの再スケジューリングを行う際、コマンドがライト・コマンドかリード・コマンドか、また、リード・コマンドがオールヒット、ハーフヒット又はノーヒットかを識別し、各コマンドをメディア・アクセスが必要か否かの分類を行う。そして、メディア・アクセスが必要なコマンドを実行する際のメディア・アクセス時間において、実行可能なメディア・アクセス不要なコマンドを検索し、並列処理可能か否かをも考慮してスケジューリングを実行する。
【０１００】
ここで、メディア・アクセス時間は、目的のＬＢＡにヘッドをアクセスする際のシーク時間、回転待ち時間、及び目的のデータを読み出す読み出し時間からなる。このメディア・アクセス時間は、現在のヘッドの位置又は直前に実行したコマンドの最後のポイントのシリンダ、ヘッド、サーボセクタナンバと、ターゲットとなるコマンドの先頭のシリンダ、ヘッド、サーボセクタナンバとからＭＰＵ１２９にて算出することができる。シーク時間は、シリンダの差から、回転待ち時間は、サーボセクタナンバの差から、ディスクからキャッシュ２３２への転送時間（読み出し時間）は、キャッシュ２３２への転送速度及び読み出すデータ量から算出することができる。なお、ディスクからキャッシュ２３２への転送時間は、読み出すリード・データのＬＢＡがディスクのどのゾーンに存在するに応じて変化する値である。
【０１０１】
リード・コマンドの処理は、オールヒット、ノーヒット、ハーフヒットとで異なり、上述したように、オールヒットの場合はデータ転送処理のみであるが、ノーヒット、ハーフヒットのリード・コマンドは、いずれの場合であっても、メディア・アクセス処理が必要となる。従って、この間にメディア・アクセスが不要なデータ転送処理を行うことができる。更に、ハーフヒットのリード・コマンドは、リード・データの一部がディスクにのみ記憶され残りがキャッシュ２３２に記憶されている。したがって、上記ディスクにのみ記憶されたリード・データの一部をキャッシュ２３２へ読み出すメディア・アクセス処理の間に、キャッシュ２３２にすでに記憶されている上記残りのリード・データをホストへ転送するデータ転送処理を行ってもよいし、また、例えばライト・コマンド等の他のコマンドに従ってデータ転送処理を行ってもよい。
【０１０２】
この再スケジューリングの際の一例について説明する。図８は、並列処理するコマンドを示す模式図である。図８に示すように、アクセス要コマンドＡの例えばノーヒットのリード・コマンドの実行時間Ｔ、磁気ディスクにアクセスしてデータをキャッシュに読み出すメディア・アクセス処理ａ１（処理時間Ｔ１）、キャッシュからホストへデータを転送するデータ転送処理ａ２（処理時間Ｔ２）とし、実行時間ＴをＴ１＋Ｔ２とすると、メディア・アクセス処理ａ１はバスの占有がないため、アクセス不要コマンド、すなわちバスの占有を伴うコマンドの処理が可能である。そこで、このメディア・アクセス処理の時間Ｔ１内に処理可能なアクセス不要コマンドを並列処理することができる。この場合、コマンド・キュー２３１からアクセス不要コマンドを選択することもでき、また、自身のコマンドの一部、すなわちデータ転送処理ａ２を実行することもできる。
【０１０３】
いずれの場合であってもバスを占有しない処理時間Ｔ１を効率よく使用することが好ましい。コマンド・キュー２３１からアクセス不要コマンドを選択する場合、図８に示す例では、アクセス不要コマンドＢ、Ｅを処理すると処理時間Ｔ１をオーバするため処理可能なコマンドは、コマンドＢのみとなる。この場合、再度残りの時間で処理できるコマンドを検索してもよい。例えば図８に示すように、コマンドＥが処理不可であっても、コマンドＣを処理することができる。
【０１０４】
更に、処理時間Ｔ１にて処理可能なアクセス不要コマンドであればいずれも選択可能とすることができるが、例えばコマンド・キュー２３１にキューイングされているコマンドに優先度がある場合はそれを参照する。コマンドの優先度としては、例えば、ライト・コマンドよりリード・コマンドを優先することができる。リード・データはホストが必要なデータであり、可能な限り早く転送する必要があるからである。また、コマンド・キュー２３１にキューイングされた順（キューイング順序が古い順）を優先したり、これらを組み合せることが考えられる。
【０１０５】
なお、コマンド・キュー２３１においては、コマンドがエンキューされる際にコマンドのキューイング順のリンクが生成され、またコマンドＩＤのリードフラグ、グライトフラグによりにより、コマンドの種類を容易に判定することができる。
【０１０６】
図９は、アクセス不要コマンドを含むコマンド順序の決定方法の一例を示すフローチャートである。キュー・マネージャ２２３は、アクセス要コマンドを処理する際に並列処理するコマンドを選択しておくことができる。ここでは、アクセス要コマンドをノーヒットのリード・コマンドを例にとって説明する。先ず、キュー・マネージャ２２３は、ノーヒットのリード・コマンドのメディア・アクセス時間を算出しておく。そして、図９に示すように、コマンド・キュー２３１にキューイングされているコマンドを検索する。ここで、コマンド・キュー２３１において予めキューイングされた順序でのコマンド検索が可能であるものとする。
【０１０７】
コマンド・キュー２３１において、まず、アクセス不要コマンドのうちリード・コマンド、すなわちオールヒットのリード・コマンドを検索する（ステップＳ１）。オールヒットのリード・コマンドがない場合には、ライト・コマンドを検索する（ステップＳ２）。オールヒットのリード・コマンドが存在する場合（ステップＳ１：ＹＥＳ）又はライト・コマンドが存在する場合、これらのコマンドが、メディア・アクセス時間内に処理可能か否か、すなわちこれらのコマンド処理時間がメディア・アクセス時間より短ければそのコマンドを並列処理するコマンドとして選択する（ステップＳ３）。そして、次のコマンドを選択するか否かを判定する（ステップＳ４）。この判定は、例えば残りのメディア・アクセス時間が所定の時間より短い場合は次のコマンドを選択しないなどとすることができ、その場合は処理を終了する。また、選択したオールヒットのリード・コマンド又はライト・コマンドの処理時間が処理時間Ｔ１より長い場合はステップＳ１又はステップＳ２にて選択したコマンドは並列処理できないと判断する。この場合も次のコマンドを選択するか否かを判定する（ステップＳ４）。次のコマンドを選択すると判断された場合には、ステップＳ１からの処理を繰り返す。
【０１０８】
図１０は、２つのコマンドを並列処理する場合のリード・コマンドの処理方法を示すフローチャートである。ここでは、コマンド実行マネージャ２２２が、リード・コマンドが、磁気ディスクにアクセスが必要なコマンド、すなわちノーヒット又はハーフヒットのリード・コマンドであって、これを処理する間に上述の方法にて並列処理する他のコマンドを選択している場合について説明する。また、本例では、磁気ディスクにアクセスが必要なノーヒットのリード・コマンドＰ２の処理中、磁気ディスクにアクセスが不要であるオールヒットのリード・コマンドＰ１を並列的に実行する場合について説明する。
【０１０９】
この場合、コマンド実行マネージャ２２２は、ホスト・インターフェース・マネージャ２２１にオールヒットのリード・コマンドＰ１が指定するリード・データの転送要求を渡す。ホスト・インターフェース・マネージャ２２１は、コマンド実行マネージャ２２２からの要求に応答して、ホスト・インターフェース２１１にホスト１１０へのデータ転送を開始することを要求する。ホスト・インターフェース２１１は、要求に応答して、セットアップ・フレームを発行する（ステップＳ１１）。ホスト・インターフェース２１１は、メモリ・マネージャ２１３からキャッシュ２３２に記憶されているリード・データを取得し、リード・データをホスト１１０に転送する（ステップＳ１２）。
【０１１０】
この間、コマンド実行マネージャ２２２は、ドライブ・マネージャ２２４に磁気ディスク１２１からのノーヒットのリード・コマンドにかかるデータの読み出しを要求する。磁気ディスク１２１から読み出されたリード・データは、ドライブ・マネージャ２２４の制御の下、ドライブ・インターフェース２１２、メモリ・マネージャ２１３を介してメモリ１３０のキャッシュ２３２に記憶される（ステップＳ１３）。ここで、図９に示したように、リード・コマンドＰ２の磁気ディスクからのリード・データのキャッシュ２３２への読み出し処理時間（メディア・アクセス時間）内に終了可能なコマンドとしてリード・コマンドＰ１が選択されているため、磁気ディスクからの読み出し時間内にリード・コマンドＰ１のデータ転送は終了する。
【０１１１】
こうして、オールヒットのリード・コマンドＰ１の転送処理が終了すると、ホスト・インターフェース２１１は、リード・データの転送が終了したことをホスト・インターフェース・マネージャ２２１に通知する。ホスト・インターフェース・マネージャ２２１は、ホスト・インターフェース２１１にコマンド終了通知の送信を要求する。そして、ホスト・インターフェース２１１が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト１１０に送信する（ステップＳ１４）。
【０１１２】
その後、コマンド実行マネージャ２２２は、ステップＳ１３の処理によりノーヒットがオールヒットとなったリード・コマンドＰ２の転送要求をホスト・インターフェース・マネージャ２２１に渡す。ホスト・インターフェース・マネージャ２２１は、コマンド実行マネージャ２２２からの要求に応答して、ホスト・インターフェース２１１にホスト１１０へのデータ転送を開始することを要求する。ホスト・インターフェース２１１は、要求に応答して、セットアップ・フレームを発行する（ステップＳ１５）。ホスト・インターフェース２１１は、メモリ・マネージャ２１３からキャッシュ２３２に記憶されているリード・データを取得し、リード・データをホスト１１０に転送する（ステップＳ１６）。ホスト・インターフェース２１１は、リード・データの転送が終了したことをホスト・インターフェース・マネージャ２２１に通知し、ホスト・インターフェース・マネージャ２２１は、ホスト・インターフェース２１１にコマンド終了通知の送信を要求する。そして、ホスト・インターフェース２１１が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト１１０に送信する（ステップＳ１７）。
【０１１３】
なお、磁気ディスクにアクセスが必要なリード・コマンドはハーフヒットのリード・コマンドでもよく、また磁気ディスクにアクセスが不要なコマンドはライト・コマンドであってもよい。また、ハーフヒットのリード・コマンドを処理する場合は、他のオールヒットのリード・コマンド又はライト・コマンドを並列処理してもよいが、図８にて説明した如く、ハーフヒットのリード・コマンドの場合は、メディア・アクセスが必要な処理、すなわちキャッシュ２３２に読み出されていないデータを磁気ディスクにアクセスして読み出す処理と、メディア・アクセスが不要な処理、すなわちキャッシュ２３２に読み出されているデータをホストへ転送する処理とに分け、メディア・アクセスが必要な処理期間において、アクセスが不要な処理を行うようにしてもよい。更に、このようにハーフヒットのリード・コマンドのうち、メディア・アクセスがなくても実行可能な処理のみを、他のコマンドのメディア・アクセス時間に並列処理するようにしてもよい。更にまた、ステップＳ１５以降の処理は、データ転送処理である。したがって、他のアクセス要リード・コマンドのメディア・アクセス処理と並行して処理するようにしてもよい。
【０１１４】
ところで、上述したように、リード・コマンドは、ディスクからリード・データを読み出す際、データの先読み（look-ahead）も合わせて行なうことができる。データの先読みは、リード・コマンドを処理する際、対象のＬＢＡのみならず、更に先のＬＢＡのデータも共に読み出す処理である。先読みにより、キャッシュ２３２に読み出した先読みデータを格納しておくことができ、通常、リード・コマンドのシーケンシャルアクセスが多いこと等からオールヒットのヒット率を向上させ、コマンドの処理時間の短縮化を図ることができる。また、オールヒットが多いと上述のステップＳ１にて選択可能なコマンドが増え、メディア・アクセス時間をより効率的に使用することが可能となる。
【０１１５】
先読みの長さは、例えば次に実行するべきコマンドがある場合、キャッシュ２３２の容量等によって適宜設定される。すなわち、次に実行すべきコマンドがある場合には、コマンド実行を優先するため先読みを止めたり、キャッシュ２３２の空き容量が少ない場合には先読みの長さを短くする等、適宜設定される。
【０１１６】
ここで、オールヒットのリード・コマンドが多いと、メディア・アクセス処理の間に選択できるコマンドが多くなり、より効率のよい処理の実行が期待できる。そこで、本発明においては、オールヒットのリード・コマンド率を向上するべく先読みの長さを決定する。すなわち、キューされたリード・コマンドであって、ハーフヒット、ノーヒットの、ディスクから読み出すべきリード・データのアドレスを比較し、一のアドレスの後端と他のアドレスの先端とが所定の関係を満たす場合に前記一のアドレスのデータを読み出すリード・コマンドの先読み範囲に他のアドレスが含まれるよう設定する。
【０１１７】
具体的には、先ず、キューされたリード・コマンドの読み出すべき先端及び後端のＬＢＡを比較する。そして一のリード・コマンドにおける読み出すべきデータのＬＢＡの後端と、他のリード・コマンドにおける読み出すべきデータのＬＢＡの先端とを比較し、再度磁気ディスクにアクセスするよりも一のリード・コマンドから他のリード・コマンドまで連続して読み出した方が速い場合には、一のリード・コマンドの先読みの範囲に他のリード・コマンドにおける読み出すべきデータを含める。これにより、１つのリード・コマンドのメディア・アクセス処理によって他のリード・コマンドをオールヒットにすることができる。
【０１１８】
オールヒットのリード・コマンド及びライト・コマンドの処理時間は、データを転送する時間（バス占有時間）と略同じで処理時間が極めて短く、リオーダリングしやすい。また、リード・コマンドにおいて、ハーフヒット、ノーヒットの場合、メディア・アクセスを必要とするがこのメディア・アクセス処理の間に並列処理するデータ転送処理を行うコマンドの選択が広がり、コマンド処理効率が向上される。
【０１１９】
図１１は、先読み範囲を決定する方法の一例を示すフローチャートである。ここでは、キュー・マネージャ２２３が、コマンド・キュー２３１に格納されるアクセス要コマンド（以下、コマンドαとする。）の先読み範囲を決定する方法について説明する。先ず、キュー・マネージャ２２３は、コマンド・キュー２３１にコマンドαが格納されると、コマンド・キュー２３１に格納されている複数のコマンドからアクセス要コマンド（以下、コマンドβとする。）を選択する（ステップＳ２１）。なお、ここでは、コマンドα、コマンドβはいずれもノーヒットのリード・コマンドとする。
【０１２０】
次に、両者のＬＢＡを比較する。ノーヒットのリード・コマンドαのデータのＬＢＡがαＬＢＡ＿Ｓ〜αＬＢＡ＿Ｅであり、ノーヒットのリード・コマンドβのデータのＬＢＡがβＬＢＡ＿Ｓ〜βＬＢＡ＿Ｅであるとき、これらの始端と終端とを比較する。すなわち、αＬＢＡ＿ＥとβＬＢＡ＿Ｓとを比較し、βＬＢＡ＿ＥとαＬＢＡ＿Ｓとを比較し、この結果から先読みが可能か否かを判断する（ステップＳ２３）。すなわち、コマンドαの読み込みの後コマンドβを続けて読むか、コマンドβの読み込みの後にコマンドαを続けて読み込みする処理時間が、コマンドα及びコマンドβを個別に読み込み処理する時間の合計より短い場合は、先読み可能と判断する。先読み可能ではない場合は、他のアクセス要コマンドを検索し（ステップＳ２５）、他のアクセス要コマンドγがあればステップＳ２２からの処理を繰り返す。先読み可能な場合は、処理を終了するか否かを判断し（ステップＳ２４）、続ける場合は再びアクセス要コマンドを選択して先読み可能か否かを判断するステップＳ２１からの処理を繰り返す。
【０１２１】
なお、ステップＳ２４の終了判定は、例えば、処理時間の合計が所定の時間以上になる場合、又は処理データの読み出し量が所定の大きさ以上になった場合には処理を終了するなどの判断をすることができる。処理を終了する場合、又はアクセス要リード・コマンドが存在しなくなった場合には処理を終了し、決定した先読みするアドレスを更新する（ステップＳ２６）。
【０１２２】
ここで、例えば、コマンド・キュー２３１に新たなコマンドがキューイングされる際、当該コマンドがアクセス要コマンドである場合には、コマンド・キュー２３１に既に格納されているアクセス要コマンドの先読み範囲に含められるか否かをこのようにして判断しておけばよい。
【０１２３】
次に、本実施の形態の具体例について説明する。図１２は、先読みによりリード・コマンドの処理の向上効果を説明する図である。図１２に示すように、リード・コマンドＣ１、Ｃ２、Ｃ３があって、リード・コマンドＣ１はノーヒット、リード・コマンドＣ２はノーヒットとし、リード・コマンドＣ１のリード・データの一部のアドレスとリード・コマンドＣ３のリード・データの一部のアドレスとが重複するものとする（リード・コマンドＣ３はリード・コマンドＣ１にハーフヒット）。また、リード・コマンドＣ１の後端アドレスからリード・コマンドＣ２へのアクセス時間（シーク時間＋回転待ち時間）を６ｍｓｅｃ、リード・コマンドＣ１の後端アドレスからリード・コマンドＣ３へのアクセス時間（シーク時間＋回転待ち時間）を８ｍｓｅｃ、リード・コマンドＣ２の後端アドレスからリード・コマンドＣ３へのアクセス時間（シーク時間＋回転待ち時間）を７ｍｓｅｃ、アクセス後の磁気ディスクからの読み出し時間は、リード・コマンドＣ２、Ｃ３のいずれも１ｍｓｅｃとする。
【０１２４】
リード・コマンドＣ１を最初に処理するとして、これら３つのリード・コマンドＣ１〜Ｃ３を処理する場合、従来のように、アクセス時間のみを考慮して処理順序を決定すると、
リード・コマンドＣ１→リード・コマンドＣ２→リード・コマンドＣ３
となる。この場合、リード・コマンドＣ１の後端からリード・コマンドＣ２、Ｃ３にアクセスしてこれらのデータを磁気ディスクから読み出す時間は、リード・コマンドＣ１の後端アドレスからリード・コマンドＣ２へのアクセス時間＝６ｍｓｅｃと、リード・コマンドＣ２のデータを読み出す時間＝１ｍｓｅｃと、リード・コマンドＣ２の後端アドレスからリード・コマンドＣ３へのアクセス時間＝７ｍｓｅｃと、リード・コマンドＣ３のデータを読み出す時間＝１ｍｓｅｃの合計、すなわち、６＋１＋７＋１＝１５ｍｓｅｃとなる。なお、以上の処理は、リード・コマンドＣ１〜Ｃ３のリード・データを磁気ディスクからキャッシュ２３２に読み出すメディア・アクセス処理に必要な時間である。
【０１２５】
一方、上述したように、メディア・アクセス時間を考慮して先読み範囲を決定する場合、リード・コマンドＣ３のリード・データと、リード・コマンドＣ１のリード・データとは一部のアドレスが重複しており、したがってリード・コマンドＣ３は、リード・コマンドＣ１に連続して読むことができる。すなわち、リード・コマンドＣ３のリード・データをリード・コマンドＣ１の先読み範囲とすることで、リード・コマンドＣ３をオールヒットのリード・コマンドとして扱うことができる。このように、他のコマンドがなるべくオールヒットとなるよう３つのリード・コマンドの処理順序を決定すると、
リード・コマンドＣ１→リード・コマンドＣ３（＝リード・コマンドＣ１の先読み）→リード・コマンドＣ２
となる。この場合、リード・コマンドＣ１の後端からリード・コマンドＣ３、Ｃ２にアクセスしてこれらのデータを磁気ディスクから読み出す時間は、リード・コマンドＣ１の先読み範囲としてリード・コマンドＣ３を読み出す時間＝１ｍｓｅｃと、リード・コマンドＣ３の後端アドレスからリード・コマンドＣ２へのアクセス時間＝７ｍｓｅｃと、リード・コマンドＣ２のデータを読み出す時間＝１ｍｓｅｃの合計、すなわち、この場合のメディア・アクセス処理時間は、１＋７＋１＝９ｍｓｅｃとなる。
【０１２６】
以上のように、リード・コマンドのリード・データのアドレスを考慮して先読み範囲を決定することで、無駄なアクセス動作を削減してコマンドの処理時間を短縮化することができる。
【０１２７】
本実施の形態においては、コマンドがコマンド・キュー２３１にエンキューされる際、キュー・マネージャ２２３がコマンド及びその処理の分類を行い、先読み範囲を決定する。そして、リード・コマンドについてリード・データがキャッシュ２３２に全部入っているものをオールヒット、一部入っているものをハーフヒット、全く入っていないものをノーヒットとし、ハーフヒット、ノーヒットの場合は磁気ディスクにアクセスしてリード・データを読み出す処理を実行するメディア・アクセス時間を算出し、磁気ディスクにアクセスする処理とデータ転送処理とを分け、メディア・アクセス時間にデータ転送処理を実行させることで、１つのリード・コマンドの処理においてもメディア・アクセスとデータ転送とを並列実行させ、処理時間を短縮化することができる。
【０１２８】
すなわち、データ転送開始タイミングをＨＤＤ側で決定する機能、及び複数のコマンドのデータ転送が同時に行う機能を使用することで、コマンド毎の処理ではなく、メディアにアクセスが必要か否か、バスの占有が必要か否かの処理に分類し、メディア・アクセス処理の間にバスの占有を伴うデータ転送処理を並列実行させることで、１つのコマンドの処理を必要に応じて分割して処理することで、コマンド処理性能を向上することができる。
【０１２９】
また、コマンドとしての処理時間を更に短縮化し、またメディア・アクセス時間に処理するデータ転送処理のコマンドを増やしてコマンド処理の高効率化を図るべく、メディア・アクセスする際の先読み範囲を決定する。すなわち、メディア・アクセスが必要なリード・データの各アドレスに基づき、個別に読むより連続して読み出した方が処理時間が短くなる場合は、一方のリード・データの先読み範囲に他方のリード・データを含ませるようにすることで当該他方のリード・データのコマンドをオールヒットとみなすことができる。
【０１３０】
これらを総合してエンキューされたコマンドの再スケジューリングを行うことで、アクセス要リード・コマンドと並列処理する他のコマンドがある場合はそれらのセットとみなしたり、アクセス要リード・コマンドのメディア・アクセス処理とデータ転送処理とを並行して実行して処理時間を短縮したりして、効率のよいコマンドの処理を実行することができる。
【０１３１】
こうして、本実施の形態においては、メディア・アクセスとデータ転送の並列処理及びオールヒットを増やすための先読み範囲の設定により、コマンド・キューに格納するコマンド数及びコマンド・キューの個数が少なくてもシーク時間及び回転待ち時間をできるだけ短くし、かつシーク時間＋回転待ち時間の間を有効活用することができ、コマンド処理性能を向上することができる。また、本実施の形態においては、ＬＢＡの比較のみで先読み範囲を決定し、再スケジューリングを行うため、例えばＲＰＳ（rotational position sensing）情報等を使用してヘッドの位置を監視する等の機能がない場合であっても、極めて簡単に処理効率を向上することができる
【０１３２】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、また、各処理と論理構成との関係は上記例に限定されるものではない。設計者は、効率的な機能及び回路構成によって、記憶装置を設計することができる。本実施形態において、磁気ヘッド１２２は、書き込み及び読み出し処理を行うことができる記録再生ヘッドであるが、再生のみを行う再生専用装置に本発明を適用することも可能である。尚、本発明は磁気ディスク記憶装置に特に有用であるが、光ディスク記憶装置など、記憶媒体としてのメディアを駆動する他の態様の記憶装置に適用することが可能である。
【図面の簡単な説明】
【０１３３】
【図１】本発明の実施の形態におけるデータ処理システム１００の概略構成を示す構成図である。
【図２】本発明の実施の形態のホスト−デバイス間インターフェースにおいて、ホスト−デバイス間のデータ転送処理を実行する要部を示すブロック図である。
【図３】本発明の実施の形態におけるコマンドのデータ・フォーマットの一例を示す図である。
【図４】本発明の形態におけるセットアップ・フレームのデータ・フォーマットの一例を示す図である。
【図５】本発明の実施の形態におけるコマンド終了通知のデータ・フォーマットの一例を示す図である。
【図６】本発明の実施の形態にかかるＨＤＤにおけるライト・コマンド処理方法を示すフローチャートである。
【図７】本発明の実施の形態にかかるＨＤＤにおけるリード・コマンド処理方法を示すフローチャートである。
【図８】本発明の実施の形態にかかるＨＤＤにおけるリード・コマンドの並列処理を説明する模式図である。
【図９】本発明の実施の形態にかかるＨＤＤにおけるアクセス不要コマンドを含むコマンド順序の決定方法の一例を示すフローチャートである。
【図１０】本発明の実施の形態にかかるＨＤＤにおける２つのコマンドを並列処理する場合のリード・コマンドの処理方法を示すフローチャートである。
【図１１】本発明の実施の形態にかかるＨＤＤにおける先読み範囲を決定する方法の一例を示すフローチャートである。
【図１２】本発明の実施の形態にかかるＨＤＤにおける先読みによりリード・コマンドの処理の向上効果を説明する図である。
【符号の説明】
【０１３４】
１２０  ハード・ディスク・ドライブ、１２１  磁気ディスク
１２１  磁気ディスク、１２２  磁気ヘッド
１２３  ヘッド・スタック・アセンブリ
１２４  コントローラ、１２５  スピンドル・モータ
１２７  チャネル、１２７  リード・ライト・チャネル
１２８  ハードディスク・コントローラ、１３０  メモリ
１３３  サーボ・コントローラ、１３４  ドライバ
１３４  モータ・ドライバ・ユニット、１３６  ドライバ
２１１  ホスト・インターフェース、２１２  ドライブ・インターフェース
２１３  メモリ・マネージャ、２２１  ホスト・インターフェース・マネージャ
２２２  コマンド実行マネージャ、２２３  キュー・マネージャ
２２４  ドライブ・マネージャ、２３１  コマンド・キュー
【図１】
2006139548.tif 000003
【図２】
2006139548.tif 000004
【図３】
2006139548.tif 000005
【図４】
2006139548.tif 000006
【図５】
2006139548.tif 000007
【図６】
2006139548.tif 000008
【図７】
2006139548.tif 000009
【図８】
2006139548.tif 000010
【図９】
2006139548.tif 000011
【図１０】
2006139548.tif 000012
【図１１】
2006139548.tif 000013
【図１２】
2006139548.tif 000014