(57)【要約】【課題】  コマンド終了通知のタイミングを制御してＨＤＤのパフォーマンスを向上する。【解決手段】  コマンド終了通知のホスト１１０への送信は、ホスト・インターフェース・マネージャ２２１によって管理される。キューされている２つのライト・コマンドに対するライト・データの各アドレスが連続する場合、又は、各アドレスが近傍であって周回待ちなく磁気ディスクへアクセスすることができる場合、ホスト・インターフェース・マネージャ２２１は、最初のライト・コマンド（Ｘ）に対するコマンド終了通知（Ｘ）の送信を延期する。次のコマンドのライト・データ（Ｙ）の転送及びメディアへの書き出しが終了した後、２つのコマンドの終了通知（Ｘ）、（Ｙ）を同時に行う。【選択図】  図８
2005215729.tif 000002
【特許請求の範囲】
【請求項１】
ホストと記憶装置との間におけるデータの伝送を制御するデータ伝送制御方法であって、
キューされている第１コマンドを取得するステップと、
前記第１コマンドに対する第１データのアドレス情報を取得するステップと、
前記第１データを、ホストと記憶装置との間において伝送するステップと、
キューされている第２コマンドを取得するステップと、
前記第２コマンドに対する第２データのアドレス情報を取得するステップと、
前記第１及び第２データのアドレス情報に基づいて、前記第１コマンドの終了通知の伝送を前記記憶装置から前記ホストに行う前に前記ホストと前記記憶装置の間において前記第２データの伝送を行うかを決定するステップと、
前記決定するステップにおける決定に従って、前記第２データを前記ホストと前記記憶装置の間において伝送するステップと、
前記第１コマンドのコマンド処理が終了し、前記第２データの伝送の後に、前記第１コマンドの終了通知を前記ホストに伝送するステップと、
を有するデータ伝送制御方法。
【請求項２】
前記決定するステップにおいて、前記第１データのアドレスと前記第２データのアドレスの差が所定値以下である場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定される、請求項１に記載のデータ伝送制御方法。
【請求項３】
前記第１及び第２のコマンドは、回転するメディアへのメディア・アクセスを行うものであり、
前記決定するステップにおいて、前記第１及び第２データのアドレス情報に基づいて、前記第１データのメディア・アクセス後に、周回待ちすることなく前記第２データのメディア・アクセスが可能な場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定される、
請求項１に記載のデータ伝送制御方法。
【請求項４】
前記第１及び第２のコマンドはメディアへのデータのライト・コマンドである、請求項１に記載のデータ伝送制御方法。
【請求項５】
前記第１及び第２コマンドは、回転するメディアへのデータ・ライトを行うコマンドであり、
前記第２コマンドは前記第１コマンドの次にキューされており、
前記決定するステップにおいて、前記第１及び第２データのアドレス情報に基づいて、前記第１データのメディアへのライト後に周回待ちすることなく前記第２データのメディアへのライトが可能な場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定される、
請求項１に記載のデータ伝送制御方法。
【請求項６】
前記第１及び第２コマンドは、回転するメディアへのデータ・ライトを行うコマンドであり、
前記第２コマンドは前記第１コマンドの次にキューされており、
前記決定するステップにおいて、前記第２データのアドレスが前記第１データのアドレスに連続する場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定される、
請求項１に記載のデータ伝送制御方法。
【請求項７】
ホストと記憶装置との間におけるデータの伝送を制御するデータ伝送制御方法であって、
キューされている第１コマンドを取得するステップと、
前記第１コマンドを実行するステップと、
キューされているコマンドの情報を取得するステップと、
前記第１コマンドの実行時間と前記キューされているコマンドの再スケジューリング時間に基づき、前記第１コマンドのコマンド終了通知のタイミングを決定するステップと、
を有するデータ伝送制御方法。
【請求項８】
前記第１コマンドの実行時間は、前記第１コマンドに対するデータのセクタ長によって決定される、請求項７に記載のデータ伝送制御方法。
【請求項９】
前記第１コマンドの実行時間は、前記第１コマンドに対するデータのメディア・アクセス時間によって決定される、請求項７に記載のデータ伝送制御方法。
【請求項１０】
前記キューされているコマンドの再スケジューリング時間は、前記キューされているコマンドのコマンド数によって決定される、請求項７に記載のデータ伝送制御方法。
【請求項１１】
前記第１コマンドに対するデータのセクタ長が所定値以下であり、前記キューされているコマンドのコマンド数が所定数以上である場合、前記第１のコマンドに対するコマンド終了通知が延期される、請求項７に記載のデータ伝送制御方法。
【請求項１２】
前記第１コマンドに対するデータのメディア・アクセス時間が所定値以下であり、前記キューされているコマンドのコマンド数が所定数以上である場合、前記第１のコマンドに対するコマンド終了通知が延期される、請求項７に記載のデータ伝送制御方法。
【請求項１３】
前記第１のコマンドに対するコマンド終了通知は、前記キューされているコマンドの再スケジューリング終了後に伝送される、請求項７に記載のデータ伝送制御方法。
【請求項１４】
ホストと記憶装置との間におけるデータの伝送を制御するデータ伝送制御方法であって、
メディアへのアクセスを行うコマンドをコマンド・キューから取得するステップと、
前記コマンドを実行するステップと、
前記コマンドの実行時間が所定時間以上である場合に、前記ホストへの未送信のコマンド終了通知を前記ホストに伝送するステップと、
を有するデータ伝送制御方法。
【請求項１５】
ホストから伝送された複数のコマンドを記憶するコマンド・キューと、
前記コマンド・キューに記憶されている第１のコマンドの次に第２のコマンドを実行することを決定するコマンド順序決定部と、
前記第１コマンドに対する第１データのアドレス情報と、前記第２コマンドに対する第２データのアドレス情報とに基づき、前記第１コマンドの終了通知の前記ホストへの伝送タイミングを、前記第２データの前記ホストとの間の伝送後に延期することを決定する、データ伝送制御部と、
前記データ伝送制御部の制御によって、前記第１データを前記ホストとの間において伝送し、前記第１コマンドのコマンド処理の終了及び前記第２データの伝送後に前記第１コマンドの終了通知を前記ホストに伝送する、データ伝送部と、
を有する記憶装置。
【請求項１６】
前記記憶装置はデータを記憶する回転するメディアを備え、
前記第１及び第２コマンドは、前記メディアへのデータ・ライトを行うコマンドであり、
前記データ伝送制御部は、前記第１データのアドレスと前記第２データのアドレスの差が所定値以下である場合に、前記第１コマンドの終了通知の前記ホストへの伝送タイミングを、前記第２データの前記ホストからの伝送後に延期することを決定する、
請求項１５に記載の記憶装置。
【請求項１７】
前記記憶装置はデータを記憶する回転するメディアを備え、
前記第１及び第２コマンドは、前記メディアへのデータ・ライトを行うコマンドであり、
前記データ伝送制御部は、前記第２データのアドレスが前記第１データのアドレスに連続する場合に、前記第１コマンドの終了通知の前記ホストへの伝送タイミングを、前記第２データの前記ホストからの伝送後に延期することを決定する、
請求項１５に記載の記憶装置。
【請求項１８】
データを記憶し回転するメディアと、
ホストから伝送された複数のコマンドを記憶するコマンド・キューと、
前記コマンド・キューに記憶されているコマンドの実行順序を決定する、コマンド順序決定部と、
前記コマンド順序決定部によって決定され、前記メディアへのアクセスを行う実行コマンドのデータ長と、前記コマンド・キューに記憶されているコマンド数とに基づき、前記実行コマンドの終了通知を前記ホストへ伝送するタイミングを決定する、データ伝送制御部と、
前記データ伝送制御部からの要求に応じて、前記コマンド終了通知を前記ホストに伝送するデータ伝送部と、
を有する記憶装置。
【請求項１９】
前記データ伝送部は、前記コマンド・キューに記憶されているコマンドの再スケジューリングが終了した後に前記コマンド終了通知を前記ホストに伝送する、請求項１８に記載の記憶装置。
【請求項２０】
データを記憶し回転するメディアと、
ホストから伝送された複数のコマンドを記憶するコマンド・キューと、
前記コマンド・キューに記憶されているコマンドの実行順序を決定する、コマンド順序決定部と、
前記コマンド順序決定部によって決定され、前記メディアへのアクセスを行う実行コマンドのアクセス時間と、前記コマンド・キューに記憶されているコマンド数とに基づき、前記実行コマンドの終了通知を前記ホストへ伝送するタイミングを決定する、データ伝送制御部と、
前記データ伝送制御部からの要求に応じて、前記コマンド終了通知を前記ホストに伝送するデータ伝送部と、
を有する記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ伝送制御方法及び記憶装置に関し、特に、コマンド終了通知のタイミング制御に関する。
【背景技術】
【０００２】
情報記録再生装置として、光ディスクや磁気テープなどの様々な態様のメディアを使用する装置が知られている。その中で、ハード・ディスク・ドライブは、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、ハード・ディスク・ドライブの用途は、その優れた特性により益々拡大している。
【０００３】
ハード・ディスク・ドライブで使用される磁気ディスクは、同心円状に形成された複数のトラックを有しており、各トラックは複数のセクタに区分されている。各セクタにはセクタのアドレス情報と、ユーザ・データが記憶される。ヘッドがセクタのアドレス情報に従って所望のセクタにアクセスすることによって、セクタへのデータ書き込みあるいはセクタからのデータ読み出しを行うことができる。データ読み出し処理において、ヘッドが磁気ディスクから読み出した信号は、信号処理回路によって波形整形や復号処理などの所定の信号処理が施され、ホストに送信される。ホストからの転送データは、信号処理回路によって同様に所定処理された後に、磁気ディスクに書き込まれる。
【０００４】
ホストとハード・ディスク・ドライブとの間のデータ伝送のためのインターフェースは、ＳＣＳＩインターフェースやＡＴＡインターフェースなどのプロトコルが一般に使用されている。特に、ＡＴＡインターフェースは、インターフェース機能の向上と低コストの点から、多くのコンピュータにおいて利用され、また、光ディスク記憶装置などの他のタイプに記憶装置のインターフェースとしても広く利用されている。記憶媒体の記録密度の向上及びパフォーマンス向上への要求から、ＡＴＡインターフェースのデータ転送速度に対する要求は、益々厳しいものになっている。このため、従来のパラレル伝送による伝送方式に代えて、シリアル転送によるＡＴＡインターフェースが提案されている。
【０００５】
シリアルＡＴＡの規格は、"Serial ATA Working Group"によって策定が進められている。既にリリースされている"Serial ATA II：Extensions to Serial ATA 1.0 Specification"において、従来のパラレルＡＴＡにないいくつかの技術が採用されている。その中の一つとして、ＮＣＱ（Native Command Queuing）と呼ばれるコマンド・キューイングの技術が採用されている。ＮＣＱは、ハード・ディスク・ドライブ自身が、キューされているコマンドの実行順序を内部的に決定することを可能としている。これによって、ハード・ディスク・ドライブの機械的内部動作に起因するレイテンシを効果的に低減することが可能となる。
【０００６】
ＮＣＱの特徴的な技術の一つは、コマンド終了通知の発行に関する。キューされるコマンドのステータスは、ホストのSActiveレジスタによって管理される。SActiveレジスタの対応ビットをクリアすることによって、キューされていたコマンドのステータスを、未終了から終了に変更することができる。SActiveレジスタのビット・クリアは、ハード・ディスク・ドライブからの"Set Device Bits FIS"とよばれるデータ・フレームによって実行される。このコマンド終了通知の送信タイミングは、いつに行うこともできる。例えば、ハード・ディスク・ドライブは、複数のコマンドに対応する"Set Device Bits FIS"を連続してホストに送信する、あるいは、一つの"Set Device Bits FIS"において２つのコマンドの終了をホストに通知することができる。
【０００７】
ＮＣＱに関わらず、コマンド終了通知の制御に関する技術として、例えば、特許文献１は、新規コマンドを受け入れによるセクタ・バッファのデータ上書き防止のため、コマンドコンプリート信号の発行タイミングを制御する技術を開示している。既保持の書き込みコマンドが実行待ち状態にあるとき、新たな書き込みコマンドを受け取り、既保持コマンドのＬＢＡとの位置関係を表すヒット・ステータスをチェックし、記録媒体への書き込み順序を再配列し、再配列された書き込み順序に従って媒体に書き込みデータを記録する処理を行う。このとき、セクタ・バッファの空き領域が規定の基準値以下であり、かつヒット・ステータスがＮＯＨＩＴであるときには受け入れたコマンドに対するコマンドコンプリート信号を発行せず、媒体への記録処理を優先する。
【０００８】
【特許文献１】特開２００１−３１２３７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１は、セクタ・バッファのデータ上書き防止の観点からコマンド終了通知の送信タイミングを制御するものであるため、例えば、シーク時間や回転待ち時間などメディア・アクセスの観点、あるいは、キューされているコマンドの再スケジューリングの観点から、適切なパフォーマンス向上を図ることができない。本発明は上記のような事情を背景としてなされたものであって、本発明の目的は、コマンド終了通知の発行を制御することによって、記憶装置のパフォーマンスを向上することである。
【課題を解決するための手段】
【００１０】
本発明の第１の態様はデータ伝送制御方法であって、ホストと記憶装置との間におけるデータの伝送を制御するデータ伝送制御方法であって、キューされている第１コマンドを取得するステップと、前記第１コマンドに対する第１データのアドレス情報を取得するステップと、前記第１データを、ホストと記憶装置との間において伝送するステップと、キューされている第２コマンドを取得するステップと、前記第２コマンドに対する第２データのアドレス情報を取得するステップと、前記第１及び第２データのアドレス情報に基づいて、前記第１コマンドの終了通知の伝送を前記記憶装置から前記ホストに行う前に前記ホストと前記記憶装置の間において前記第２データの伝送を行うかを決定するステップと、前記決定するステップにおける決定に従って、前記第２データを前記ホストと前記記憶装置の間において伝送するステップと、前記第１コマンドのコマンド処理が終了し、前記第２データの伝送の後に、前記第１コマンドの終了通知を前記ホストに伝送するステップと、を有する。第１及び第２データのアドレス情報に基づいて、第１コマンドの終了通知の伝送と前記第２データの伝送の順序を制御するので、記憶装置のパフォーマンスを向上することができる。
【００１１】
前記決定するステップにおいて、前記第１データのアドレスと前記第２データのアドレスの差が所定値以下である場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定されることが好ましい。
【００１２】
前記第１及び第２のコマンドは、回転するメディアへのメディア・アクセスを行うものであり、前記決定するステップにおいて、前記第１及び第２データのアドレス情報に基づいて、前記第１データのメディア・アクセス後に、周回待ちすることなく前記第２データのメディア・アクセスが可能な場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定されることが好ましい。
【００１３】
前記第１及び第２のコマンドはメディアへのデータのライト・コマンドである場合に、本発明は特に有用である。あるいは、前記第１及び第２コマンドは、回転するメディアへのデータ・ライトを行うコマンドであり、前記第２コマンドは前記第１コマンドの次にキューされており、前記決定するステップにおいて、前記第１及び第２データのアドレス情報に基づいて、前記第１データのメディアへのライト後に周回待ちすることなく前記第２データのメディアへのライトが可能な場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定されることが好ましい。
【００１４】
前記第１及び第２コマンドは、回転するメディアへのデータ・ライトを行うコマンドであり、前記第２コマンドは前記第１コマンドの次にキューされており、前記決定するステップにおいて、前記第２データのアドレスが前記第１データのアドレスに連続する場合に、前記第１コマンドのコマンド終了通知の伝送前に、前記第２データの伝送を行うと決定されることが好ましい。
【００１５】
本発明の第２の態様はデータ伝送制御方法であって、ホストと記憶装置との間におけるデータの伝送を制御するデータ伝送制御方法であって、キューされている第１コマンドを取得するステップと、前記第１コマンドを実行するステップと、キューされているコマンドの情報を取得するステップと、前記第１コマンドの実行時間と前記キューされているコマンドの再スケジューリング時間に基づき、前記第１コマンドのコマンド終了通知のタイミングを決定するステップと、を有する。これによって、適切な再スケジューリングを可能とする。
【００１６】
前記第１コマンドの実行時間は、前記第１コマンドに対するデータのセクタ長によって決定されることが好ましい。あるいは、前記第１コマンドの実行時間は、前記第１コマンドに対するデータのメディア・アクセス時間によって決定されることが好ましい。または、前記キューされているコマンドの再スケジューリング時間は、前記キューされているコマンドのコマンド数によって決定されることが好ましい。もしくは、前記第１コマンドに対するデータのセクタ長が所定値以下であり、前記キューされているコマンドのコマンド数が所定数以上である場合、前記第１のコマンドに対するコマンド終了通知が延期されることが好ましい。
【００１７】
前記第１コマンドに対するデータのメディア・アクセス時間が所定値以下であり、前記キューされているコマンドのコマンド数が所定数以上である場合、前記第１のコマンドに対するコマンド終了通知が延期されることが好ましい。前記第１のコマンドに対するコマンド終了通知は、前記キューされているコマンドの再スケジューリング終了後に伝送されることができる。
【００１８】
本発明の第３の態様はデータ伝送制御方法であって、ホストと記憶装置との間におけるデータの伝送を制御するデータ伝送制御方法であって、メディアへのアクセスを行うコマンドをコマンド・キューから取得するステップと、前記コマンドを実行するステップと、前記コマンドの実行時間が所定時間以上である場合に、前記ホストへの未送信のコマンド終了通知を前記ホストに伝送するステップと、を有する。これによって、未送信のコマンド終了通知を減らし、新たなコマンドの発行を可能とする。
【００１９】
本発明の第４の態様は記憶装置であって、ホストから伝送された複数のコマンドを記憶するコマンド・キューと、前記コマンド・キューに記憶されている第１のコマンドの次に第２のコマンドを実行することを決定するコマンド順序決定部と、前記第１コマンドに対する第１データのアドレス情報と、前記第２コマンドに対する第２データのアドレス情報とに基づき、前記第１コマンドの終了通知の前記ホストへの伝送タイミングを、前記第２データの前記ホストとの間の伝送後に延期することを決定する、データ伝送制御部と、前記データ伝送制御部の制御によって、前記第１データを前記ホストとの間において伝送し、前記第１コマンドのコマンド処理の終了及び前記第２データの伝送後に前記第１コマンドの終了通知を前記ホストに伝送する、データ伝送部と、を有する。第１及び第２データのアドレス情報に基づいて、第１コマンドの終了通知の伝送と前記第２データの伝送の順序を制御するので、記憶装置のパフォーマンスを向上することができる。
【００２０】
前記記憶装置はデータを記憶する回転するメディアを備え、前記第１及び第２コマンドは、前記メディアへのデータ・ライトを行うコマンドであり、前記データ伝送制御部は、前記第１データのアドレスと前記第２データのアドレスの差が所定値以下である場合に、前記第１コマンドの終了通知の前記ホストへの伝送タイミングを、前記第２データの前記ホストからの伝送後に延期することを決定することが好ましい。
【００２１】
前記記憶装置はデータを記憶する回転するメディアを備え、前記第１及び第２コマンドは、前記メディアへのデータ・ライトを行うコマンドであり、前記データ伝送制御部は、前記第２データのアドレスが前記第１データのアドレスに連続する場合に、前記第１コマンドの終了通知の前記ホストへの伝送タイミングを、前記第２データの前記ホストからの伝送後に延期することを決定することが好ましい。
【００２２】
本発明の第５の態様は記憶装置であって、データを記憶し回転するメディアと、ホストから伝送された複数のコマンドを記憶するコマンド・キューと、前記コマンド・キューに記憶されているコマンドの実行順序を決定する、コマンド順序決定部と、前記コマンド順序決定部によって決定され、前記メディアへのアクセスを行う実行コマンドのデータ長と、前記コマンド・キューに記憶されているコマンド数とに基づき、前記実行コマンドの終了通知を前記ホストへ伝送するタイミングを決定する、データ伝送制御部と、前記データ伝送制御部からの要求に応じて、前記コマンド終了通知を前記ホストに伝送するデータ伝送部と、を有する。実行コマンドのデータ長と、コマンド・キューに記憶されているコマンド数とに基づき、実行コマンドの終了通知を伝送するタイミングを決定することによって、コマンドの再スケジューリングを適切に行うことができる。
【００２３】
本発明の第６の態様は記憶装置であって、データを記憶し回転するメディアと、ホストから伝送された複数のコマンドを記憶するコマンド・キューと、前記コマンド・キューに記憶されているコマンドの実行順序を決定する、コマンド順序決定部と、前記コマンド順序決定部によって決定され、前記メディアへのアクセスを行う実行コマンドのアクセス時間と、前記コマンド・キューに記憶されているコマンド数とに基づき、前記実行コマンドの終了通知を前記ホストへ伝送するタイミングを決定する、データ伝送制御部と、前記データ伝送制御部からの要求に応じて、前記コマンド終了通知を前記ホストに伝送するデータ伝送部と、を有する。実行コマンドのアクセス時間と、コマンド・キューに記憶されているコマンド数とに基づき、実行コマンドの終了通知を伝送するタイミングを決定することによって、コマンドの再スケジューリングを適切に行うことができる。
【発明の効果】
【００２４】
本発明によれば、コマンド終了通知の発行を制御することによって、記憶装置のパフォーマンスを向上することができる。
【発明を実施するための最良の形態】
【００２５】
以下に、本発明を適用可能な実施の形態が説明される。以下の説明は、本発明の実施形態を説明するものであり、本発明が以下の実施形態に限定されるものではない。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、当業者であれば、以下の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。尚、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。
【００２６】
図１は、本実施形態におけるデータ処理システム１００の概略構成を示す構成図である。データ処理システム１００は、コンピュータやデジタル・カメラなど、データ処理を行うホスト１１０と、ホスト１１０から伝送されたデータを記憶する記憶装置であるハード・ディスク・ドライブ１２０を有している。ハード・ディスク・ドライブ１２０は、フレーム内に、メディアの一例として１もしくは複数の磁気ディスク１２１と、各磁気ディスクの記録面に対応する磁気ヘッド１２２を備えたヘッド・スタック・アセンブリ１２３と、磁気ディスク１２１へのデータの書き込み及び磁気ディスク１２１からのデータ読み出しのために、これらの要素を制御するコントローラ１２４とを備えている。
【００２７】
ホスト１１０から伝送されたホスト・ユーザ・データは、コントローラ１２４によって必要な処理がなされ、ライト信号に変換されたあと、ヘッド・スタック・アセンブリ１２３に送られる。磁気ヘッド１２２は、取得したライト信号に応じて、磁気ディスク１２１の記録面にデータを書き込む。一方、磁気ヘッド１２２によって磁気ディスクから読み出されたリード信号は、コントローラ１２４によってデジタル信号に変換され、必要な処理がなされたあと、ホスト１１０に伝送される。
【００２８】
磁気ディスク１２１は、磁性層が磁化されることによってデータを記録する不揮発性の記録媒体であり、ハード・ディスク・ドライブ１２０が動作しているときに、スピンドル・モータ１２５のスピンドル軸を中心として所定の一定速度で回転駆動される。ハード・ディスク・ドライブ１２０の非動作時には、磁気ディスク１２１は静止している。磁気ディスク１２１の表面には、データを格納するための区画として同心円状に複数のトラックが形成され、さらに、各トラックは円周方向に区分された複数のセクタを備えている。
【００２９】
磁気ディスク１２１の表面にはサーボ・データ記憶領域が形成されており、典型的には、磁気ディスク１２１は半径方向に沿って形成された複数のサーボ・データ記憶領域を有している。また、各セクタにおいてサーボ・データ記憶領域とユーザ・データ記憶領域とが形成されている。サーボ・データを磁気ヘッド１２２が読み取ることによって、磁気ヘッド１２２の位置に関する情報を取得することができる。サーボ・データは、トラック番号情報を備えるトラック・データ、セクタ番号情報を備えるセクタ・データ、及びバースト・パターンを有している。
【００３０】
ヘッド・スタック・アセンブリ１２３は、磁気ディスク１２１の表面に沿って揺動可能にフレーム内に取り付けられており、ボイス・コイル・モータ（ＶＣＭ）１２６によって駆動される。ヘッド・スタック・アセンブリ１２３の先端部にはスライダと磁性薄膜素子とを有する磁気ヘッド１２２が設けられている。ヘッド・スタック・アセンブリ１２３が揺動することによって、磁気ヘッド１２２が磁気ディスク１２１の表面の半径方向に沿って移動する。これによって、磁気ヘッド１２２が所望のトラックにアクセスすることができる。
【００３１】
ヘッド・スタック・アセンブリ１２３は、一つの磁気ディスク１２１に対して２つの磁気ヘッド１２２を有しており、磁気ヘッドそれぞれが磁気ディスク１２１の各表裏面に対応する。磁気ヘッド１２２は、データ書き込み／読み出し処理を行わない場合、典型的には、磁気ディスク１２１の外側に配置されたランプ機構（不図示）に退避する、もしくは、ＣＳＳ（Contact Start and Stop）方式においては、内周に配置されているＣＳＳゾーンに退避する。磁気ヘッド１２２は、磁気ディスク１２１へのデータの書き込み、あるいは、磁気ディスク１２１からのサーボ・データ及びユーザ・データの読み出しを行う。
【００３２】
図１に示すように、コントローラ１２４は、リード／ライト・チャネル１２７、ハードディスク・コントローラ（ＨＤＣ）１２８、マイクロプロセッサ・ユニット（ＭＰＵ）１２９、メモリ１３０、サーボ・コントローラ１３３、モータ・ドライバ・ユニット１３４を有している。モータ・ドライバ・ユニット１３４は、ボイス・コイル・モータ・ドライバ（ＶＣＭドライバ）１３５及びスピンドル・モータ・ドライバ（ＳＰＭドライバ）１３６を有している。
【００３３】
リード／ライト・チャネル１２７は、ホスト１１０から取得したデータについて、ライト処理を実行する。ライト処理において、リード／ライト・チャネル１２７はＨＤＣ１２８から供給された書き込みデータをコード変調し、さらにコード変調された書き込みデータをライト信号（電流）に変換して磁気ヘッド１２２に供給する。磁気ヘッド１２２は、取得した信号に応じてコイルに電流を流すことによって磁気ディスク１２１にデータを書き込む。また、ホスト１１０にデータを供給する際にはリード処理を行う。リード処理において、リード／ライト・チャネル１２７は磁気ヘッド１２２から供給されたリード信号からデータを抽出し、デコード処理を行う。デコード処理された読み出しデータは、ハードディスク・コントローラ１２８に供給される。
【００３４】
ＭＰＵ１２９は、メモリ１３０にロードされたマイクロ・コードに従って動作し、磁気ヘッド１２２のポジショニング制御、インターフェース制御、ディフェクト管理などのハード・ディスク・ドライブ１２０の全体の制御のほか、データ処理に関する必要な処理を実行する。ハード・ディスク・ドライブ１２０の起動に伴い、メモリ１３０には、ＭＰＵ１２９上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１２１あるいはＲＯＭ（不図示）からロードされる。
【００３５】
リード／ライト・チャネル１２７によって読み出されるデジタル・データは、ホスト１１０からのユーザ・データの他に、サーボ・データを含んでいる。サーボ・コントローラ１３３はリード／ライト・チャネル１２７から取得した読み出しデータからサーボ・データを抽出する。サーボ・データは、トラック・データ、セクタ・データ、及びバースト・パターンを有している。抽出されたサーボ・データは、サーボ・コントローラ１３３からＭＰＵ１２９に転送される。
【００３６】
ＭＰＵ１２９は、マイクロ・コードに従って、サーボ・データを使用した磁気ヘッド１２２の位置決め制御処理を行う。ＭＰＵ１２９からの制御データはＶＣＭドライバ１３４に出力される。ＶＣＭドライバ１３４は制御信号に応じて駆動電流をＶＣＭ１２６に供給する。また、ＭＰＵ１２９は、マイクロ・コードに従って、スピンドル・モータ１２５の回転制御のために、モータ・ドライバ・ユニット１３４のレジスタにＳＰＭ制御データをセットする。ＳＰＭドライバ１３６は、セットされたＳＰＭ制御データに応じて、スピンドル・モータ１２５の回転制御を実行する。
【００３７】
ＨＤＣ１２８は、ホスト１１０との間のインターフェース機能を備えており、ホスト１１０から伝送されるユーザ・データ及び、リード・コマンドやライト・コマンドを含む制御データなどを受信する。受信したユーザ・データは、リード／ライト・チャネル１２７に転送される。また、リード／ライト・チャネル１２７から取得した磁気ディスクからの読み出しデータ、あるいは、データ転送のための制御データをホスト１１０に送信する。ＨＤＣ１２８は、この他、ユーザ・データについての誤り訂正処理などを実行する。
【００３８】
ＨＤＣ１２８とホスト１１０との間における制御データ及びユーザ・データ伝送は、ハードディスク・コントローラ１２８及びＭＰＵ１２９上で動作するマイクロ・コードによって制御される。特に、本形態のハード・ディスク・ドライブ１２０は、ホスト１１０からの所定コマンドについて、コマンド・キューイングの機能を有している。ハードディスク・コントローラ１２８内におけるコマンド実行順序、あるいは、ホスト−デバイス間の制御データ及びユーザ・データ伝送順序は、ハード・ディスク・ドライブ１２０のパフォーマンス向上の観点から制御、管理される。
【００３９】
以下において、コマンド・キューイング、及び、ハード・ディスク・ドライブ１２０とホスト１１０との間におけるホスト−デバイス間のデータ伝送制御について説明される。本形態のホスト−デバイス間インターフェースにおいて、ハード・ディスク・ドライブ１２０が内部的に所定処理の実行順序を制御することができ、ハード・ディスク・ドライブ１２０のパフォーマンス向上を図ることができる。特に、本形態のホスト−デバイス間データ通信において、ハード・ディスク・ドライブ１２０からホスト１１０に対するコマンド終了通知の伝送タイミングが、パフォーマンス向上に寄与することができるように効果的に制御される。本形態のデータ伝送制御は、例えば、ＮＣＱ（Native Command Queuing）をサポートするSATAII（Serial ATA II）仕様に適用することによって、ドライブのパフォーマンス向上に寄与することが可能である。以下の説明においては、必要に応じてＮＣＱに言及して本実施形態が説明されるが、本発明の適用範囲がＮＣＱに限定されるものではない。
【００４０】
図２は、本形態のホスト−デバイス間インターフェースにおいて、ホスト−デバイス間の所定のデータ伝送を制御する論理構成を示すブロック図である。ＨＤＣ１２８は、ホスト・インターフェース２１１、ドライブ・インターフェース２１２及びメモリ・マネージャ２１３を備えている。マイクロ・コードがＭＰＵ１２９上で動作することによって、ＭＰＵ１２９は、ホスト・インターフェース・マネージャ２２１、コマンド実行マネージャ２２２、キュー・マネージャ２２３及びドライブ・マネージャ２２４として機能することができる。メモリ１３０はコマンド及びデータを一時的に記憶し、コマンド・キュー２３１及びデータ・バッファ２３２として機能することができる。
【００４１】
ホスト・インターフェース２１１は、ホスト１１０との間における実際のデータ伝送処理を実行し、データ伝送部として機能する。ドライブ・インターフェース２１２は、メディアの一例である磁気ディスク１２１との間（あるいはリード・ライト・チャネル１２７との間）における実際のデータ入出力処理を行う。メモリ・マネージャ２１３はメモリ１３０のデータ記憶を制御し、ハードディスク・コントローラ１２８内の他の機能ブロックとメモリ１３０との間におけるコマンド及びユーザ・データの仲介処理を行う。
【００４２】
ホスト・インターフェース・マネージャ２２１はホスト・インターフェース２１１を管理するデータ伝送制御部として機能し、ホスト・インターフェース２１１との間において所定の通知あるいは命令の授受を行う。また、ホスト・インターフェース・マネージャ２２１は、ＭＰＵ１２９で機能する他の論理ブロックとハードディスク・コントローラ１２８との間のインターフェースとして機能する。ホスト・インターフェース・マネージャ２２１は、他の機能ブロックから取得した通知や要求などのデータに基づいて、ホスト・インターフェース２１１とホスト１１０との間のデータ転送順序を制御する。特に、ホスト１１０へのコマンド終了通知の発行タイミングを制御し、パフォーマンス向上に寄与する。
【００４３】
キュー・マネージャ２２３は、コマンド・キュー２３１にキューされているコマンドの再スケジューリングを実行し、パフォーマンス最適化の観点から適切なコマンド実行順序を決定するコマンド順序決定部として機能する。コマンド実行マネージャ２２２は、キュー・マネージャ２２３によって決定された順序に従って、コマンドの実行を制御する。ドライブ・マネージャ２２４はドライブ・インターフェース２１２を制御することによって、磁気ディスク１２１との間のデータ書き込み及びデータ読み出しを制御する。ドライブ・マネージャ２２４は、コマンド実行マネージャ２２２からの要求に応じて、ドライブ・インターフェース２１２を制御する。
【００４４】
本形態におけるコマンド・キューイングの基本的動作を説明する。尚、ホスト１１０から伝送されるコマンドは、キューされるコマンドの他、キューされないコマンドを含むことができる。例えば、SATAII仕様を例とすれば、ＮＣＱの他、ＤＭＡ（Direct Memory Access）やＰＩＯ（Programmed I/O）などのプロトコルを同時にサポートすることができる。キューすべきコマンドは、例えば、コマンドに付される識別子を参照することによって、決定することができる。以下においては、キューされるコマンド及びそれに伴うデータ伝送について説明される。又、以下においては、キューされるコマンドとして、リード・コマンドとライト・コマンドが示される。
【００４５】
図３は、本形態におけるコマンドのデータ・フォーマットの一例を示している。図のデータ・フォーマットは、リード・コマンドあるいはライト・コマンドに適用することができる。本形態において、キューイングされるコマンドは、タグ・フィールドを含む。キューイングされる各コマンドは、各コマンドに対応するタグによって識別される。タグによって識別可能な未終了コマンドの数は、キューの深さに応じて決定される。ＮＣＱを例とすれば、３２のコマンドのそれぞれが、０〜３１を表すタグによって識別される。
【００４６】
図３における開始セクタは、転送要求されているデータの開始セクタを表している。セクタ数はその開始セクタからのセクタ数を表している。セクタは、例えば、ＬＢＡ（Logical Block Addressing）によって特定することができる。コマンドには、さらに、リード・コマンドとライト・コマンドを識別するためのコマンドＩＤが付されている。この他、コマンドは、キャッシュ制御のためのデータなど、他の制御データ等を含むことができる。ＮＣＱを例として説明すれば、「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である場合を例として説明する。キュー・マネージャ２２３からライト・コマンドを取得すると（Ｓ６０１）、コマンド実行マネージャ２２２は、ホスト・インターフェース・マネージャ２２１にホスト１１０からのデータ転送を開始することを要求する。ホスト・インターフェース・マネージャ２２１は、所定のアルゴリズムに従ってホスト１１０との間のデータ伝送（データはユーザ・データの他、コマンド終了通知などの制御データを含む）順序を決定する（Ｓ６０２）。本例において、要求に応じてライト・データの転送開始をホスト・インターフェース２１１に要求する。ホスト・インターフェース２１１は、要求に応答して、セットアップ・フレームを発行する（Ｓ６０３）。
【００５８】
ホスト１１０は、セットアップ・フレームに応答して、ライト・データを転送する（Ｓ６０４）。転送されたライト・データは、ホスト・インターフェース２１１から、メモリ・マネージャ２１３を介して、メモリ１３０に記憶される。ホスト・インターフェース２１１からデータ転送終了の通知を受けたホスト・インターフェース・マネージャ２２１は、転送完了をコマンド実行マネージャ２２２に通知する。コマンド実行マネージャ２２２は、ドライブ・マネージャ２２４にデータ書き込みの要求を行う。ドライブ・インターフェース２１２は、ドライブ・マネージャ２２４の管理下において、メモリ・マネージャ２１３を介して、メモリ１３０から取得したライト・データを磁気ディスク１２１に出力する（Ｓ６０５）。
【００５９】
ライト・キャッシュがDisableである場合、コマンド終了の通知は、磁気ディスク１２１へのライト・データ書き込みの終了に応答して行われる。ホスト・インターフェース・マネージャ２２１は、ＨＤＣ１２８からコマンド実行マネージャ２２２を介して磁気ディスク１２１へのライト・データ書き込みの終了の通知を取得すると、ホスト１１０にコマンド終了通知を送信するかを決定する（Ｓ６０６）。コマンド終了通知の送信タイミングは、他のコマンドあるいはコマンド終了通知などを考慮し、内部処理効率の点から決定される。コマンド終了通知の送信が決定されると、ホスト・インターフェース・マネージャ２２１は、終了コマンドのタグを特定したコマンド終了通知を送信するようにホスト・インターフェース２１１に要求する。ホスト・インターフェース２１１が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト１１０に送信する（Ｓ６０７）。
【００６０】
一方、リード処理の基本的動作において、図７を参照して、コマンド実行マネージャ２２２は、ドライブ・マネージャ２２４に磁気ディスク１２１からのデータ読み出しを要求する。磁気ディスク１２１からのリード・データは、ドライブ・マネージャ２２４の制御の下、ドライブ・インターフェース２１２、メモリ・マネージャ２１３を介してメモリ１３０に記憶される（Ｓ７０１）。さらに、コマンド実行マネージャ２２２は、ホスト・インターフェース・マネージャ２２１にリード・データの転送要求を渡す。
【００６１】
ホスト・インターフェース・マネージャ２２１は、コマンド実行マネージャ２２２からの要求に応答して、ホスト・インターフェース２１１にホスト１１０へのデータ転送を開始することを要求する。ホスト・インターフェース２１１は、要求に応答して、セットアップ・フレームを発行する（Ｓ７０２）。ホスト・インターフェース２１１は、メモリ・マネージャ２１３からメモリ１３０に記憶されているリード・データを取得し、リード・データをホスト１１０に転送する（Ｓ７０３）。転送処理が終了すると、リード・データの転送が終了したことがホスト・インターフェース２１１からホスト・インターフェース・マネージャ２２１に通知される。
【００６２】
ホスト・インターフェース・マネージャ２２１は、他のコマンドあるいはコマンド終了通知などを考慮し、コマンド終了通知をホスト１１０に送信するタイミングを決定する（Ｓ７０４）。例えば、リード処理終了後すぐのタイミング、あるいは、パフォーマンスの観点から好ましい後のタイミングで送信することができる。送信する場合、ホスト・インターフェース２１１にコマンド終了通知の送信を要求する。ホスト・インターフェース２１１が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト１１０に送信する（Ｓ７０５）。
【００６３】
コマンド終了通知の発行タイミング制御について、いくつかの好ましい態様を以下に説明する。上記のように、コマンド終了通知のホスト１１０への送信は、ホスト・インターフェース・マネージャ２２１によって管理される。一つの好ましい態様は、コマンド・キュー２３１にキューされている２つのライト・コマンドを連続して処理する場合における、コマンド終了通知の発行タイミング制御に関する。２つのライト・コマンドに対するライト・データの各アドレスの差異が所定値以下である場合、ホスト・インターフェース・マネージャ２２１は、最初のライト・コマンドに対するコマンド終了通知の送信を延期する。もしくは、各アドレスが連続する場合、又は、各アドレスが近傍であって周回待ちなく磁気ディスクへアクセスすることができる場合、ホスト・インターフェース・マネージャ２２１は、最初のライト・コマンドに対するコマンド終了通知の送信を延期する。
【００６４】
一つのライト・コマンドのホスト１１０からの転送後、コマンド終了通知を送信することなく、もう一方のライト・コマンドのライト・データ転送が実行される。後のライト・データの転送を早め、２つのライト・データを連続的に転送することによって、周回待ちによるパフォーマンスの低下防ぐことができる。尚、以下において、２つのライト・コマンドについて説明されるが、３以上の複数のライト・コマンドに関しても同様の処理を行うことによって、レイテンシを低減することが可能である。
【００６５】
図８及び９を参照して、具体的処理について説明する。図８は、ホスト１１０とハード・ディスク・ドライブ１２０との間のデータ伝送を示すシーケンス図、図９はそのフロー・チャートである。コマンド・キュー２３１には、タグＸで特定されるライト・コマンド（Ｘ）と、タグＹで特定されるライト・コマンド（Ｙ）がキューされている。また、上記と同様に、ライト・キャッシュはDisableとする。コマンド実行マネージャ２２２は、キュー・マネージャ２２３からの要求に応答して、ホスト・インターフェース・マネージャ２２１に、ライト・コマンド（Ｘ）のライト・データ転送を要求する（Ｓ９０１）。
【００６６】
ホスト・インターフェース・マネージャ２２１の制御によって、ホスト・インターフェース２１１は、ライト・データ転送ためにセットアップ・フレーム（Ｘ）をホスト１１０に送信する（Ｓ９０２）。ホスト１１０は、セットアップ・フレーム（Ｘ）に応じて、ライト・データ（Ｘ）をハード・ディスク・ドライブ１２０に送信する（Ｓ９０３）。ライト・データ（Ｘ）は、ＨＤＣ１２８を介して、データ・バッファ２３２に記憶される。ライト・データ（Ｘ）の送信開始後、あるいは、前の磁気ディスク・アクセスが終了次第、ライト・データ（Ｘ）の書き出しのためのシーク及び磁気ディスクへの書き出しが開始される（Ｓ９０４）。上記のように、ライト・データ（Ｘ）の書き出し処理は、コマンド実行マネージャ２２２からの要求を受けたドライブ・マネージャ２２４の管理下において、ドライブ・インターフェース２１２が実行する。
【００６７】
ライト・データ（Ｘ）の転送もしくは書き出し処理の間に、コマンド実行マネージャ２２２からホスト・インターフェース・マネージャ２２１に、ライト・コマンド（Ｙ）のライト・データ転送が要求される（Ｓ９０５）。ホスト・インターフェース・マネージャ２２１は、取得しているライト・データ（Ｘ）とライト・データ（Ｙ）のアドレス情報を参照し、アドレス情報に基づいてライト・データ（Ｙ）の転送とライト・データ（Ｘ）のコマンド終了通知（Ｘ）の送信順序を決定する（Ｓ９０６）。好ましくは、ライト・データ（Ｙ）のアドレスが、ライト・データ（Ｘ）のアドレスと連続、もしくは近傍にあり、コマンド終了通知（Ｘ）を遅らせることによってパフォーマンスを上げることができる場合、コマンド終了通知（Ｘ）の送信前に、ライト・データ（Ｙ）の転送が実行されことが決定される。特に、周回待ちなしで磁気ディスクにデータを書くことができる場合、ライト・データ（Ｙ）の転送が先に実行される。上記条件にない場合、コマンド終了通知（Ｘ）を先にホストに伝送する。
【００６８】
ライト・データ（Ｙ）の転送が先に実行すると決定すると、ホスト・インターフェース・マネージャ２２１の制御によって、ホスト・インターフェース２１１は、ライト・データ（Ｙ）転送ためにセットアップ・フレーム（Ｙ）をホスト１１０に送信する（Ｓ９０７）。ホスト１１０は、セットアップ・フレーム（Ｙ）に応じて、ライト・データ（Ｙ）をハード・ディスク・ドライブ１２０に送信する（Ｓ９０８）。ライト・データ（Ｙ）は、ＨＤＣ１２８を介して、データ・バッファ２３２に記憶される。
【００６９】
ライト・データ（Ｙ）の書き出しが終了すると、ＨＤＣ１２８からの終了の通知が、コマンド実行マネージャ２２２を介して、ホスト・インターフェース・マネージャ２２１に送られる。ホスト・インターフェース・マネージャ２２１は、ライト・データ（Ｘ）及びライト・データ（Ｙ）のためのコマンド終了通知を送信することを決定する。ホスト・インターフェース２１１は、コマンド・ステータス・フィールドの対応ビットをセットし、一つのコマンド終了通知を送信することによって、ライト・データ（Ｘ）及び（Ｙ）の終了を同時にホスト１１０に知らせる（Ｓ９０９）。尚、２つのコマンド終了通知（Ｘ）、（Ｙ）を連続して、あるいは、さらに後の所定タイミングでホスト１１０に送信することも可能である。尚、上記のコマンド終了通知制御は、データ・ライト処理に限定されない。
【００７０】
コマンド終了通知の発行タイミング制御について、他の好ましい態様を説明する。本態様において、例えば、キューされているコマンドの再スケジューリングのための要求されている時間を確保するために、コマンド終了通知の発行タイミングを延期する。特に、コマンド実行時間と再スケジューリング時間との関係に基づいて、コマンドの終了通知を延期することによって、再スケジューリングのための適切な時間を確保することができる。このように、コマンド終了通知の発行タイミングを遅らせることによって、コマンド実行順序の適切な再配列を可能とする。
【００７１】
再スケジューリングのために要求される時間を確保することができないことがある場合の一つは、一つのコマンドに対するリード・データもしくはライト・データのセクタ長が小さい場合である。セクタ長（データ長）が小さい場合、コマンド実行順序の再配列のための時間が短い。このため、キューされているコマンド数が所定数以上である場合に、適切な再スケジューリングを行うための時間を確保することができない場合が存在する。本態様においては、ホスト・インターフェース・マネージャ２２１は、キューに記憶されているコマンドと実行コマンドのデータ長に基づいて、コマンド終了通知の発行タイミングを制御する。
【００７２】
一つのリード・コマンドに対するリード・データ転送処理、あるいは、ライト・コマンドに対するライト・データの磁気ディスクへの書き出し処理が終了すると、ホスト・インターフェース・マネージャ２２１は、コマンド終了通知をホスト１１０に送信することができる。ホスト・インターフェース・マネージャ２２１はコマンド終了通知の送信を決定し、それをホスト・インターフェース２１１に要求する前に、実行コマンドのセクタ長とコマンド・キュー２３１にキューされているコマンド数とに基づいて、終了コマンドのコマンド終了通知を送信するか否かを決定する。
【００７３】
再スケジューリング処理が不要な場合（Ｓ１００１）、ホスト・インターフェース・マネージャ２２１はコマンド終了通知の送信を決定し、それをホスト・インターフェース２１１に要求する（Ｓ１００２）。複数のコマンド終了通知が未送信の場合、同時に複数のコマンドに対応するコマンド終了通知を発行することが好ましい。この点は、以下の説明において同様である。再スケジューリング処理が必要な場合（Ｓ１００１）、ホスト・インターフェース・マネージャ２２１は、キュー・マネージャ２２３から、キューされているコマンド数の情報を取得する。また、キュー・マネージャ２２３から、実行コマンドに対するデータのセクタ長の情報を取得する。これらの情報は、適切なタイミングで取得される。ホスト・インターフェース・マネージャ２２１は、コマンド数とセクタ長を比較する。
【００７４】
ホスト・インターフェース・マネージャ２２１は、キューされているコマンド数に対する再スケジューリングのための必要な時間が、実行コマンド・データのセクタ長に対する処理時間によって確保できるかを決定する。好ましい例として、ホスト・インターフェース・マネージャ２２１は、実行コマンドのデータ・セクタ長が所定数以下であり、かつ、キューされているコマンド数が所定数以上である場合（Ｓ１００３）、コマンド終了通知の送信を遅らせることを決定する。セクタ長あるいはコマンド数の数は、コマンドの種類、処理内容によって適切な値が予め設定される。
【００７５】
ホスト・インターフェース・マネージャ２２１は、上記条件を満たさない場合、つまり、セクタ長が所定数よりも多い、もしくは、コマンド数が所定数未満である場合、キューされているコマンド数に対する再スケジューリングのための必要な時間が確保できると判断し、コマンド終了通知を遅らせることなくホストに送信することを決定する（Ｓ１００４）。上記条件が満たされ、再スケジューリングのための必要な時間が確保できないと判断すると、ホスト・インターフェース・マネージャ２２１は、コマンド終了通知をすぐには送信せず、後のタイミングで送信することを決定する（Ｓ１００５）。
【００７６】
キュー・マネージャ２２３は、再スケジューリングが終了すると、それをホスト・インターフェース・マネージャ２２１に知らせる（Ｓ１００６）。ホスト・インターフェース・マネージャ２２１は、キュー・マネージャ２２３からの通知に応答して、延期していたコマンド終了通知の発行を決定し、ホスト・インターフェース２１１にコマンド終了通知送信を要求する（Ｓ１００７）。尚、ホスト・インターフェース・マネージャ２２１は、再スケジューリング終了後、さらにコマンド終了通知の発行を延期することも可能である。
【００７７】
一方、セクタ長が大きいためにコマンド実行時間が所定時間以上である場合において、未送信のコマンド終了通知がある場合、ホスト・インターフェース・マネージャ２２１は、コマンド実行時のタイミングにおいて未送信のコマンド終了通知を積極的にホスト１１０に返すことが好ましい。コマンド実行時間が再スケジューリングに要する時間よりも長い場合、未送信のコマンド終了通知が積極的に送信される。例えば、セクタ長が所定数以上であり、キュー・コマンド数が所定数よりも以下である場合、未送信のコマンド終了通知の送信を決定することができる。一度に使用することができるタグ・ナンバは通常限られていることから、コマンド終了通知をホスト１１０に返すことによって、ホスト１１０が新しいコマンドを発行することができる。コマンド数が増えることによって、ハード・ディスク・ドライブ１２０において、より適切なキュー・コマンドの再スケジューリングを行うことができる。
【００７８】
上記態様において、セクタ長とキュー・コマンド数の関係からコマンド終了通知の延期が決定されているが、実行コマンドのメディア・アクセス時間とキュー・コマンド数の関係からコマンド終了通知の延期を決定することは、好ましい他の態様の一つである。一つのコマンドに対するリード・データもしくはライト・データについて、シーク時間及び回転待ち時間を含むメディア・アクセス時間が短い場合、コマンド実行順序の再配列のための時間が短い。このため、キューされているコマンド数が所定数以上である場合に、適切な再スケジューリングを行うための時間を確保することができない場合が存在する。このため、ホスト・インターフェース・マネージャ２２１は、キューに記憶されているコマンドと実行コマンドのメディア・アクセス時間の情報に基づいて、コマンド終了通知の発行タイミングを制御する。
【００７９】
上記と同様に、コマンド終了通知をホスト１１０に送信することができる状態において、ホスト・インターフェース・マネージャ２２１は、ホスト・インターフェース２１１にコマンド終了通知の送信を要求する前に、実行コマンドのメディア・アクセス時間とコマンド・キュー２３１にキューされているコマンド数とに基づいて、終了コマンドのコマンド終了通知を送信するか否かを決定する。
【００８０】
キュー・コマンドの再スケジューリング処理が不要な場合（Ｓ１１０１）、ホスト・インターフェース・マネージャ２２１はコマンド終了通知の送信を決定し、ホスト・インターフェース２１１にそれを要求する（Ｓ１１０２）。再スケジューリング処理が必要な場合（Ｓ１１０１）、ホスト・インターフェース・マネージャ２２１は、キュー・マネージャ２２３から、キューされているコマンド数の情報を取得する。また、キュー・マネージャ２２３から、実行コマンドのメディア・アクセス時間の情報を取得する。これらの情報は、適切なタイミングで取得される。ホスト・インターフェース・マネージャ２２１は、コマンド数とメディア・アクセス時間を比較する。
【００８１】
ホスト・インターフェース・マネージャ２２１は、キューされているコマンド数に対する再スケジューリングのための必要な時間が、実行コマンドのメディア・アクセス時間によって確保できるかを決定する。好ましい例として、ホスト・インターフェース・マネージャ２２１は、実行コマンドのメディア・アクセス時間が所定時間以下であり、かつ、キューされているコマンド数が所定数以上である場合、コマンド終了通知の送信を遅らせることを決定する（Ｓ１１０３）。所定時間あるいは所定数は、コマンドの種類、処理内容によって適切な値が予め設定される。
【００８２】
ホスト・インターフェース・マネージャ２２１は、上記条件を満たさない場合、つまり、メディア・アクセス時間が所定時間よりも多い、もしくは、コマンド数が所定数未満である場合、キューされているコマンド数に対する再スケジューリングのための必要な時間が確保できると判断し、コマンド終了通知を遅らせることなくホスト１１０に送信することを決定する（Ｓ１１０４）。上記条件が満たされ、再スケジューリングのための必要な時間が確保できないと判断すると、ホスト・インターフェース・マネージャ２２１は、コマンド終了通知をすぐには送信せず、後のタイミングで送信することを決定する（Ｓ１１０５）。キュー・マネージャ２２３は、再スケジューリングが終了すると、それをホスト・インターフェース・マネージャ２２１に知らせる。
【００８３】
以下の処理は、上記態様と同様である。また、上記と同様に、メディア・アクセス時間が長く、コマンド実行時間が長い場合において、未送信のコマンド終了通知がある場合、ホスト・インターフェース・マネージャ２２１は、そのタイミングにおいてコマンド終了通知を積極的にホスト１１０に返すことが好ましい。コマンド実行時間が再スケジューリングに要する時間よりも長い場合、未送信のコマンド終了通知が積極的に送信される。例えば、メディア・アクセス時間が所定時間以上であり、キュー・コマンド数が所定数よりも以下である場合、未送信のコマンド終了通知の送信を決定することができる。
【００８４】
尚、本発明は、シリアル伝送、あるいはシリアルＡＴＡプロトコルに限定されるものではない。また、各処理と論理構成との関係は上記例に限定されるものではない。設計者は、効率的な機能及び回路構成によって、記憶装置を設計することができる。本実施形態において、磁気ヘッド１２２は、書き込み及び読み出し処理を行うことができる記録再生ヘッドであるが、再生のみを行う再生専用装置に本発明を適用することも可能である。尚、本発明は磁気ディスク記憶装置に特に有用であるが、光ディスク記憶装置など、記憶媒体としてのメディアを駆動する他の態様の記憶装置に適用することが可能である。
【図面の簡単な説明】
【００８５】
【図１】本実施形態における、ハード・ディスク・ドライブの概略構成を示すブロック図である。
【図２】本形態のホスト−デバイス間インターフェースにおいて、ホスト−デバイス間の所定のデータ伝送を制御する論理構成を示すブロック図である
【図３】本形態におけるコマンドのデータ・フォーマットの一例を示している。
【図４】本形態におけるセットアップ・フレームのデータ・フォーマットの一例を示している。
【図５】本形態におけるコマンド終了通知のデータ・フォーマットの一例を示している。
【図６】本形態のデータ伝送を制御における、ライト・コマンド処理の基本的な動作を示すフロー・チャートである。
【図７】本形態のデータ伝送を制御における、リード・コマンド処理の基本的な動作を示すフロー・チャートである。
【図８】本形態において、キューされている２つのライト・コマンドを連続して処理する場合における、ホスト−デバイス間のデータ伝送を示すシーケンス図である。
【図９】本形態において、キューされている２つのライト・コマンドを連続して処理する場合における、ホスト−デバイス間のデータ伝送を示すフロー・チャートである。
【図１０】本形態において、一つのコマンド・データのセクタ長が小さく、キュー・コマンド数が多い場合のコマンド終了通知の発行タイミング制御を示すフロー・チャートである。
【図１１】本形態において、一つのコマンド・データのメディア・アクセス時間が小さく、キュー・コマンド数が多い場合のコマンド終了通知の発行タイミング制御を示すフロー・チャートである。
【符号の説明】
【００８６】
１００  データ処理システム、１１０  ホスト、１２０  ハード・ディスク・ドライブ、
１２１  磁気ディスク、１２２  磁気ヘッド、１２３  ヘッド・スタック・アセンブリ、
１２４  コントローラ、１２５  スピンドル・モータ、
１２６  ボイス・コイル・モータ（ＶＣＭ）、１２７  リード／ライト・チャネル、
１２８  ハードディスク・コントローラ（ＨＤＣ）、
１２９  マイクロプロセッサ・ユニット（ＭＰＵ）、１３０  メモリ、
１３３  サーボ・コントローラ、１３４  ボイス・コイル・モータ・ドライバ、
１３５  ＤＡコンバータ（ＤＡＣ）、
２１３  コマンド・キュー、２１３  メモリ・マネージャ、
２２１  ホスト・インターフェース・マネージャ、２２２  コマンド実行マネージャ、
２２３  キュー・マネージャ、２２４  ドライブ・マネージャ、
２３１  コマンド・キュー、２３２  データ・バッファ
【図１】
2005215729.tif 000003
【図２】
2005215729.tif 000004
【図３】
2005215729.tif 000005
【図４】
2005215729.tif 000006
【図５】
2005215729.tif 000007
【図６】
2005215729.tif 000008
【図７】
2005215729.tif 000009
【図８】
2005215729.tif 000010
【図９】
2005215729.tif 000011
【図１０】
2005215729.tif 000012
【図１１】
2005215729.tif 000013