(57)【要約】【課題】リアルタイム性を第１とするリアルタイム処理とデータの完全性を第１とする非リアルタイム処理を同時に実行した場合に、主としてシーケンシャルアクセスとなるリアルタイム処理のデータ転送効率を向上させ、リアルタイム性能を向上させる。【解決手段】リアルタイム処理用コマンドの先読み中に非リアルタイム処理用コマンドを受領した場合、非リアルタイム処理用コマンドの処理の開始を延期して先読みを継続し、一定量キャッシングした後、非リアルタイム処理を開始する。非リアルタイム処理用コマンドの開始を延期するに際しては、リアルタイム処理の周期性が乱れないように、最大で、次のリアルタイム処理用コマンドの発行予測タイムスタンプまで先読みを継続する。【選択図】  図２
2006031383.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイム処理用のデータが記録されているディスクと、時間を管理するためのタイマーと、前記ディスクから読み込んだデータ及びホストから転送されたデータを一時的に保存するキャッシュと、前記キャッシュとホスト及び前記キャッシュと前記ディスクの間のデータ転送を制御する制御部とを備えるディスク装置において、
前記制御部は、前記ディスクからリアルタイム処理用データの先読み中に非リアルタイム処理用コマンドを受領した場合、当該非リアルタイム処理用コマンドの処理の開始を延期して前記先読みを継続し、前記キャッシュに一定量キャッシングした後、前記非リアルタイム処理を開始することを特徴とするディスク装置。
【請求項２】
請求項１に記載のディスク装置において、前記先読みを継続するに際し、リアルタイム処理でホストより指定される頻度が最も大きいデータ転送サイズの倍数分キャッシングすることを特徴とするディスク装置。
【請求項３】
請求項１に記載のディスク装置において、前記先読みを継続するに際し、リアルタイム処理でホストより指定される頻度が所定割合以上のデータ転送サイズの中で最も大きいデータ転送サイズの倍数分キャッシングすることを特徴とするディスク装置。
【請求項４】
請求項１に記載のディスク装置において、前記先読みを継続するに際し、リアルタイム処理でホストより指定される頻度が所定割合以上のデータ転送サイズがない場合、全体の中で最も大きいデータ転送サイズの倍数分キャッシングすることを特徴とするディスク装置。
【請求項５】
請求項１に記載のディスク装置において、前記先読みを継続するに際し、リアルタイム処理でホストより指定される頻度が上位から所定の順位内に入るデータ転送サイズの中で最も大きいデータ転送サイズの倍数分キャッシングすることを特徴とするディスク装置。
【請求項６】
請求項１に記載のディスク装置において、リアルタイム処理用コマンドと非リアルタイム処理用コマンドの区別をコマンドの種類により行うことを特徴とするディスク装置。
【請求項７】
請求項１に記載のディスク装置において、リアルタイム処理でホストより指定される頻度が最も大きいデータ転送サイズの倍数分、前記キャッシュにリアルタイム処理用領域を設定し、最大で該領域いっぱい先読みを実行することを特徴とするディスク装置。
【請求項８】
請求項１に記載のディスク装置において、リアルタイム処理でホストより指定される頻度が所定割合以上のデータ転送サイズの中で最も大きいデータ転送サイズの倍数分、前記キャッシュにリアルタイム処理用領域を設定し、最大で該領域いっぱい先読みを実行することを特徴とするディスク装置。
【請求項９】
請求項１に記載のディスク装置において、リアルタイム処理でホストより指定される頻度が所定割合以上のデータ転送サイズがない場合、全体の中で最も大きいデータ転送サイズの倍数分、前記キャッシュにリアルタイム処理用領域を設定し、最大で該領域いっぱい先読みを実行することを特徴とするディスク装置。
【請求項１０】
請求項１に記載のディスク装置において、リアルタイム処理でホストより指定される頻度が上位から所定の順位内に入るデータ転送サイズの中で最も大きいデータ転送サイズの倍数分、前記キャッシュにリアルタイム処理用領域を設定し、最大で該領域いっぱい先読みを実行することを特徴とするディスク装置。
【請求項１１】
請求項１に記載のディスク装置において、リアルタイム処理用データの先読みにより非リアルタイム処理用コマンドの処理の開始を延期してほしくない場合には、非リアルタイム処理用コマンドにコマンド処理延期の禁止を設定可能にすることを特徴とするディスク装置。
【請求項１２】
請求項１に記載のディスク装置において、非リアルタイム処理用コマンドの処理の開始を延期してリアルタイム処理用データの先読みを継続するに際し、最大で、次のリアルタイム処理用コマンドの発行予測タイムスタンプまで先読みを継続することを特徴とするディスク装置。
【請求項１３】
請求項１２に記載のディスク装置において、リアルタイム処理用コマンドの発行履歴をとり、前記コマンド発行履歴に基づいて次のリアルタイム処理用コマンドの発行タイムスタンプを予測することを特徴とするディスク装置。
【請求項１４】
請求項１２に記載のディスク装置において、リアルタイム処理用コマンドの発行間隔に関する情報をホストから受領し、前記受領した発行間隔に関する情報に基づいて、次のリアルタイム処理用コマンド発行タイムスタンプを予測することを特徴とするディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイム処理と非リアルタイム処理を同時に実行した場合に、リアルタイム処理のリアルタイム性を向上させ、かつ非リアルタイム処理のデータ転送速度を向上させるための先読み制御を実装したディスク装置に関するものである。
【背景技術】
【０００２】
AVデータ処理などのリアルタイム処理では、ディスク装置は設定された時間制約を正確に守りデータ転送を実行することが必要となる。そのためATA/ATAPI-7（ANSI規則に沿って規格化中）では、AVデータ処理においてストリームごと、あるいは個々のコマンドごとに各コマンドの終了制限時間を設定可能なコマンドセットの導入を検討し、リアルタイム性の保証を実現しようとしている。また、ディスク装置では、ホストに対するデータ転送速度を高めるため、コマンド処理間の空き時間（主に回転待ち時間）を利用して先読みを実施している。このような先読み制御方式は、特許文献１に記載されている。
【０００３】
【特許文献１】特開平6−95810号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ATA/ATAPI-7のAVデータ処理用のコマンドでは、設定した制限時間で処理が終了しない場合、いったん開始したコマンド処理を中止する仕組みを備え、AVデータ処理のリアルタイム性を保証可能にしている。しかしそのような仕組みを備えていても、非リアルタイム処理である文書作成アプリケーションなどのPCデータ処理と同時に実行すると、PCデータ処理において時間制約の設定ができないために、AVデータ処理のリアルタイム性が保証できなくなるという問題があった。
【０００５】
上記のような場合において、PCデータ処理の影響を少なくするためには、AVデータをディスクにアクセスすることなくキャッシュから転送可能にする割合を増やすことが必要である。このようにすることで、PCデータ処理によるAVデータ処理の周期性の乱れを最小限に抑えることができる。
【０００６】
一般に、AVデータ処理は、シーケンシャルなアクセスである場合が多い。そのため、先読み処理が非常に有効に働く。シーケンシャルアクセスの場合、キャッシュ領域が十分であるならば、先読み時のキャッシュへのデータ転送量が多いほど、データ転送効率が高くなる。
【０００７】
特許文献１に記載の先読み制御方式では、コマンド間の空き時間を利用して先読みを行うために、先読み量を指定できない。そのため、シーケンシャルアクセスとなるAVデータ処理のように一定量先読みをした方がデータ転送効率のよい場合において、十分な先読みを行うことができない場合があった。
【０００８】
本発明の課題は、リアルタイム性を第１とするリアルタイム処理とデータの完全性を第１とする非リアルタイム処理を同時に実行した場合に、主としてシーケンシャルアクセスとなるリアルタイム処理のデータ転送効率を向上させ、リアルタイム性能を向上させることである。 
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明のディスク装置は、リアルタイム処理用コマンドにおいて先読みを実行中に非リアルタイム処理用コマンドを受領しても、非リアルタイム処理用コマンドの処理の開始を延期して先読みを継続し、一定量後続のデータをキャッシングした後、非リアルタイム処理用コマンドの処理を開始するようにする。また、非リアルタイム処理用コマンドの開始を延期するに際しても、リアルタイム処理の周期性が乱れないようにするために、最大で、先読み中のリアルタイム処理用コマンドの直後のリアルタイム処理用コマンドの発行予測タイムスタンプまで、先読みを継続する。
【発明の効果】
【００１０】
本発明のディスク装置によれば、リアルタイム性を第１とするリアルタイム処理とデータの完全性を第１とする非リアルタイム処理を同時に実行した場合において、リアルタイム性能を向上させることができる。また、リアルタイム処理のデータ転送効率を向上させることにより、同時に実行する非リアルタイム処理のデータ転送効率も向上させることができる。
【発明を実施するための最良の形態】
【００１１】
図１に、本発明を適用したディスク装置の構成例を示す。本発明を適用するディスク装置は、制御プログラムを実装するプログラムROM１０１、キャッシュ内部のデータ及び、主にキャッシュ領域に関するデータを管理するテーブルを記憶するRAM１０２、ディスク装置内部の時刻を管理・設定するTimer１０３、上記ROM１０１、RAM１０２、Timer１０３を内蔵し、ROM上の制御プログラムを読み込み実行する制御プロセッサ１０４、リード要求データ/ライト要求データを一時的に書き込むキャッシュ１０５、ホストとキャッシュ１０５及びキャッシュ１０５とディスク１１４の間のデータ転送を制御するハードディスク制御装置（HDC）１０６、データの読み書きをする際に指定された位置にヘッドを移動するための制御を行うサーボ制御部１０７、サーボ制御部の指示に従ってヘッドを移動するボイスコイルモータ（VCM）１０８、ディスク１１４の回転を制御するモータドライバ１０９、ヘッドから読み込んだ磁気信号から指定されたヘッドの信号だけを選択するセレクタ１１０、セレクタ１１０から送られたアナログデータをディジタルデータに変換する又はHDC１０６から送られたディジタルデータをアナログデータに変換する信号処理部１１１、リード用ゲートを開閉することにより、信号処理部１１１より送られたリードデータをキャッシュ１０５に転送し、また、ライト用ゲートを開閉することにより、キャッシュ１０５より転送されるライトデータを信号処理部１１１に転送するディスクフォーマッタ１１２、ホストとの間にコマンドやデータをやり取りするインタフェース部１１３よりなる。
【００１２】
図２に、リアルタイム処理と非リアルタイム処理同時実行時、リアルタイム処理用コマンドの先読み中に、非リアルタイム処理用コマンドを受領した場合に、非リアルタイム処理用コマンドの処理の開始を延期し、該リアルタイム処理用コマンドの先読みを継続して一定量キャッシングする先読み制御のフローを示す。
【００１３】
なお、以下ではリアルタイム処理をAVデータ処理、非リアルタイム処理を従来のワープロ処理、表計算処理を意味するPCデータ処理として記述することとする。また同様に、リアルタイム処理用コマンドをAVコマンド、非リアルタイム処理用コマンドをPCコマンドとして記述する。ただし、この表現により本発明の適用範囲が限定されるものではない。なお、図２のフローは、リードコマンドのみを扱う処理を示している。
【００１４】
なお、ATA/ATAPI-7(Draft)の仕様においてAVデータ処理用のコマンドが検討され、詳細な仕様が確定している。この仕様によれば、AVコマンドとPCコマンドは、コマンドの構成要素であるコマンドコードにより、明確に区分されている。したがってディスク装置は、コマンドを受領した時点で、受領したコマンドが、PCコマンドか、AVコマンドかを確実に識別でき、したがってコマンド受領後の先読み制御もそれぞれのコマンドの種類ごとに明確に区分して実行することができる。
【００１５】
リードコマンドを受領すると、本発明のディスク装置は、該コマンドがキャッシュヒットか判断する（ステップ２０１）。キャッシュヒットした場合は、キャッシュ１０５よりホスト要求データを転送する（ステップ２０２）。キャッシュヒットしない場合は、先読み中であるかを調べる（ステップ２０３）。先読み中でなければ、ディスク１１４のホスト要求アドレスにアクセスし、ホスト要求データを読み出し、データを転送する（ステップ２０４）。その後、先読みを開始する（ステップ２０５）。
【００１６】
ステップ２０３に戻り、先読み中であれば、受領したリードコマンドがPCコマンドであるかを調べる（ステップ２０６）。受領したコマンドがPCコマンドでなければ、最少のアクセス時間になるまで先読みを継続する（ステップ２０７）。次に受領したコマンドの処理を開始する（ステップ２１１）。また受領したリードコマンドがPCコマンドの場合、コマンド受領時にAVデータ処理用の先読みを行っているかを調べる（ステップ２０８）。その結果、AVデータ処理用の先読みを行っていなければ、最少のアクセス時間になるまで先読みを継続する（ステップ２０７）。次に受領したコマンドの処理を開始する（ステップ２１１）。また、AVデータ処理用の先読みを行っている場合は（ステップ２０８）、本発明によるディスク装置において、AVデータ処理の先読みを行う際に基本単位とする読み出しサイズ（以下、基本データ転送サイズという）の倍数分、先読みを実行できているかを調べる（ステップ２０９）。ここで、基本データ転送サイズの倍数分とは基本データ転送サイズの2倍分、3倍分、…という意味であるが、実際に基本データ転送サイズの何倍分のデータを先読みするかは、ディスク装置のスペックや再生するストリームのビットレートなどにより随時変更することが可能である。
【００１７】
以下に、基本データ転送サイズの設定方法を示す。図３はホストが指定するデータ転送サイズごとにリードコマンドの発行頻度をとった場合の例である。AVデータ処理では、ホストが指定するデータ転送サイズの大きさがある一定のサイズに集中することが多い。図３の例では、１２４セクタ（３０１）、１２６セクタ（３０２）、１２８セクタ（３０３）の３つのセクタサイズに頻度が集中している。これらの３つのセクタサイズは、すべて25％以上の発行頻度となっている。
【００１８】
本発明のディスク装置は、この中で最も頻度の高い１２６セクタ（３０２）を基本データ転送サイズとして設定することができる。
【００１９】
また、本発明のディスク装置は、発行頻度が所定割合以上のデータ転送サイズのうち、最も大きなサイズのデータ転送サイズを基本データ転送サイズとして設定することもできる。所定の割合を25％ とすると、図３の例で示した分布の例では、25％以上の頻度であるデータ転送サイズ、１２４セクタ（３０１）、１２６セクタ（３０２）、１２８セクタ（３０３）のデータサイズのうち、一番サイズの大きな１２８セクタ（３０３）が基本データ転送サイズとして設定される。
【００２０】
図４は、図３と同じくホストが指定するデータ転送サイズごとにリードコマンドの発行頻度をとった場合の別の例である。図４の例は、どのデータ転送サイズも同じような頻度であり、予め設定してあった頻度を超えるデータ転送サイズが存在しない場合の例である。このような場合は、本発明のディスク装置は、最大のデータ転送サイズ（４０１）を基本データ転送サイズとして設定することができる。
【００２１】
また、本発明のディスク装置は、発行頻度が所定の順位内のデータ転送サイズのうち最も大きなサイズのデータ転送サイズを基本データ転送サイズとして設定することもできる。例えば上位3位までを所定の順位とすると、コマンド発行の分布が図３のようになった場合、上位3位までの発行頻度のデータ転送サイズ、１２４セクタ（３０１）、１２６セクタ（３０２）、１２８セクタ（３０３）のうち、最も大きなデータ転送サイズである１２８セクタ（３０３）が基本データ転送サイズとして設定される。
【００２２】
ステップ２０９に戻り、基本データ転送サイズの倍数分の先読みを実行できていない場合は、基本データ転送サイズの倍数分になるまで先読みを実行する（ステップ２１０）。それから、受領したコマンドの処理を開始する（ステップ２１１）。また、該データ転送サイズの倍数分先読みを実行できていた場合は、すぐに先読みを停止して、受領したコマンドの処理を開始する（ステップ２１１）。
【００２３】
また図５に、AVデータ処理用の先読みを実行するに際し、前述の基本データ転送サイズの倍数分に相当するサイズだけ、キャッシュ領域にAVデータ専用領域を確保し、該AVデータ専用領域に先読みデータを書き込む先読み制御処理のフローを示す。なお、図５のフローは、AVデータ処理中にPCデータ処理が開始させられた場合に呼び出されるものとする。また図５のフローは、リードコマンドのみを扱う処理を示している。
【００２４】
本発明のディスク装置は、リードコマンドを受領すると、コマンドの種類を判断する（ステップ５０１）。AVコマンドであれば、AVデータ処理用のコマンドを最初に受領してからAVコマンドを一定数、例えば10コマンド以上受領したか判断する（ステップ５０２）。なお、本発明のディスク装置は、図５に示す処理が呼び出されてから受領したAVコマンドの発行回数をカウントする。またこのコマンドカウント数は、AVデータ処理が終了すると、0にリセットされる。本発明のディスク装置は、発行されたAVコマンドが10コマンド未満であった場合、受領したAVコマンドのホスト要求データ転送サイズがホスト要求データ転送サイズ管理テーブルに登録されているかを調べる（ステップ５０３）。
【００２５】
図６にAVデータ処理におけるホスト要求データ転送サイズ管理テーブルの構成例を示す。該ホスト要求データ転送サイズ管理テーブルには、AVデータ処理におけるホスト要求データ転送サイズと、各データ転送サイズにおける発行頻度を記録する。本発明のディスク装置は、AVデータ処理中にPCデータ処理用のコマンドを受領した直後のAVデータ処理用のコマンドから、このホスト要求データ管理テーブルにホスト要求データ転送サイズとサイズごとの発行頻度を記録し、AVデータ処理が終了すると、登録したデータをすべて０クリアする。
【００２６】
ステップ５０３に戻り、受領したAVコマンドのホスト要求データ転送サイズがホスト要求データ転送サイズ管理テーブルに登録されている場合は、該転送サイズの呼び出し頻度を＋１にする（ステップ５０４）。また、受領したAVコマンドのホスト転送データサイズが登録されていなければ、該転送サイズをホスト要求データ転送サイズ管理テーブルに登録し、該登録データ転送サイズの発行頻度を＋１する（ステップ５０５）。受領コマンドのホスト要求データ転送サイズの発行頻度を登録した後は、ホスト要求データを転送し、回転待ちが最少になるまで先読みを実行する（ステップ５０６）。その後は、次のコマンド受領待ちとなる。
【００２７】
ステップ５０２に戻り、最初のAVリードコマンド受領後、AVリードコマンドを10コマンド以上受領したら、ホスト要求データ転送サイズ管理テーブルのデータに基づき、上述の先読みの際の基本データ転送サイズの設定方法にしたがって基本データ転送サイズを設定し、該サイズの倍数分に相当するサイズの領域をAVデータ処理用の専用領域として設定する（ステップ５０７）。次に設定したAVデータ用専用領域内にライトデータがあるかを調べ（ステップ５０８）、設定した領域内にライトデータがあれば、該領域内の未書き込みのライトデータまで先読みを実行する（ステップ５０９）。また、設定したAVデータ領域内にライトデータがなければ、該設定したAVデータ専用領域サイズから前記基本データ転送サイズ（1コマンド分）を差し引いたサイズ分先読みを実行する（ステップ５１０）。なお、設定した領域いっぱい先読みを実行しないのは、領域いっぱい先読みを実行してしまうと、直後にライトコマンドを受領した場合、ライトデータにより、先読みデータが上書きされる可能性があるからである。
【００２８】
図７に、AVデータ処理専用領域設定後のキャッシュ領域の状態を示す。キャッシュ分割後、AVデータはAVデータ処理用の専用領域（７０１）にのみ書き込まれ、PCデータはPCデータ処理用の専用領域（７０２）に書き込まれる。AVデータ処理用の専用データ領域は、前記基本データ転送サイズの倍数分の大きさで設定する。なお、ラップラウンドは、それぞれの領域の境界（７０３）で行われる。
【００２９】
図５の処理は、AVデータ処理中にPCコマンドを受領した際に呼び出され、所定の処理を行ってキャッシュ領域を分割した後、終了する。なお、分割後のキャッシュ構成は、恒常的なものではなく適時構成を編成しなおすことが可能である。ただし、本発明はキャッシュ分割方法についての発明ではないので、キャッシュの編成方法の詳細についてはここでは述べない。
【００３０】
図５のフローでは、PCデータ処理が開始した時点で、先読みの基本単位となるデータ転送サイズを選択するための処理を開始するが、AVデータ処理中（ただしPCデータ処理が開始されない）にディスク装置側において、図３、図４で示したようなデータ転送サイズごとの発行頻度を予め取得しておき、先読みの基本単位となるデータ転送サイズを決めてもよい。この場合、PCコマンドを受領した時点で、該転送サイズごとの頻度分布より導かれた基本データ転送サイズに基づき、キャッシュ領域を分割することが可能である。
【００３１】
ステップ５０１に戻り、受領したコマンドがAVリードコマンドでなければ、次のコマンドの受領を待つ。
【００３２】
図８に、AVリードコマンド処理において先読みを実行中に、PCリードコマンドを受領した場合において、PCリードコマンドの処理の開始の延期を行うことなく、PCリードコマンド処理を実行する制御のフローを示す。なお、図８のフローは、リードコマンドのみを扱う処理を示している。
【００３３】
リードコマンド受領すると、本発明のディスク装置は、該コマンドがキャッシュヒットか判断する（ステップ８０１）。キャッシュヒットした場合は、キャッシュ１０５よりホスト要求データを転送する（ステップ８０２）。キャッシュヒットしない場合は、先読み中であるかを調べる（ステップ８０３）。先読み中でなければ、ディスク１１４のホスト要求アドレスにアクセスし、ホスト要求データを読み出し、データを転送する（ステップ８０４）。その後、先読みを開始する（ステップ８０５）。
【００３４】
ステップ８０３に戻り、先読み中であれば、受領したリードコマンドがPCコマンドであるかを調べる（ステップ８０６）。受領したコマンドがPCコマンドでなければ、最少のアクセス時間になるまで先読みを継続する（ステップ８０７）。次に受領したコマンドの処理を開始する（ステップ８１１）。また受領したリードコマンドがPCコマンドの場合、コマンド受領時にAVデータ処理用の先読みを行っているかを調べる（ステップ８０８）。その結果、AVデータ処理用の先読みを行っていなければ、最少のアクセス時間になるまで先読みを継続する（ステップ８０７）。次に受領したコマンドの処理を開始する（ステップ８１１）。またAVデータ処理用の先読みを行っていれば（ステップ８０８）、受領したPCリードコマンドが遅延禁止のリードコマンドであるかを調べる（ステップ８０９）。
【００３５】
図９に、ほかの処理によるPCリードコマンド処理の延期を禁止するPCデータ処理用リードコマンドの例を示す。PCデータ処理用コマンドは、Featuresレジスタ、Sector Countレジスタ、LBA Low レジスタ、LBA Midレジスタ、LBA Highレジスタ、Device レジスタ、Commandレジスタよりなる。ATA/ATAPI-6の仕様においてはFeaturesレジスタに値はセットされなかったが、本発明のディスク装置のインタフェースでは、Featuresレジスタに他のコマンドによる処理の遅延を禁止する場合、１をセットする。また、Sector Countには転送すべきデータのセクタ数をセットする。また、LBA Lowには、LBAアドレスの０から7ビットをセットする。また、LBA Lowには、LBAアドレスの８から１５ビットをセットする。また、LBA Highには、LBAアドレスの１６から２３ビットをセットする。また、Device レジスタのビット０から３にはLBAアドレスの２４ビットから２７ビットをセットする。また、Device レジスタのビット４（９０１）には、選択されたデバイスの番号（マスタであれば０、スレーブであれば１）をセットする。また、Deviceレジスタのビット６（９０２）には、LBA方式でのアドレッシングを示す１をセットする。また、Device レジスタのビット５と７は廃止されたビットとなっているので０をセットする。Commandレジスタには、コマンドのコードをセットする。
【００３６】
ステップ８０９に戻り、受領したPCリードコマンドが遅延禁止のコマンドであるかを調べ、すなわちFeaturesレジスタの値が１であるかを調べ、Featuresレジスタの値が１であれば、該受領したPCコマンドのアクセス時間が最少になるまでAVデータリード処理の先読みを継続する（ステップ８０７）。そして受領リードコマンド処理を開始する（ステップ８１１）。
【００３７】
また、ステップ８０９に戻り、遅延禁止のコマンドでなければ、すなわちFeaturesレジスタの値が１でなければ、基本データサイズの倍数分先読みを実行する（ステップ８１０）。その後受領リードコマンド処理を開始する（ステップ８１１）。
【００３８】
図１０に、AVデータリード処理の先読みにより、PCデータリード処理の開始を遅延するに際し、AVデータリード処理による先読みを最大でも当該AVリードコマンドの直後のAVリードコマンドの発行予測タイムスタンプまで延期する制御処理のフローを示す。なお、図１０のフローは、リードコマンドのみを扱う処理を示している。
【００３９】
リードコマンド受領すると、本発明のディスク装置は、該コマンドがキャッシュヒットか判断する（ステップ１００１）。キャッシュヒットした場合は、キャッシュ１０５よりデータを転送する（ステップ１００２）。キャッシュヒットしない場合は、先読み中であるかを調べる（ステップ１００３）。先読み中でなければ、ディスク１１４のホスト要求アドレスにアクセスし、ホスト要求データを読み出し、転送する（ステップ１００４）。その後、先読みを開始する（ステップ１００５）。
【００４０】
ステップ１００３に戻り、先読み中であれば、受領したリードコマンドがPCコマンドであるかを調べる（ステップ１００６）。受領したコマンドがPCコマンドでなければ、最少のアクセス時間になるまで先読みを継続する（ステップ１００７）。次に受領したコマンドの処理を開始する（ステップ１０１３）。また受領したリードコマンドがPCコマンドの場合、コマンド受領時にAVデータ処理用の先読みを行っているかを調べる（ステップ１００８）。その結果、AVデータ処理用の先読みを行っていなければ、最少のアクセス時間になるまで先読みを継続する（ステップ１００７）。次に、受領したコマンドの処理を開始する（ステップ１０１３）。
【００４１】
また、AVデータ処理用の先読みをしていれば（ステップ１００８）、最大先読み量を基本データ転送サイズの倍数分、例えば５倍分に設定する（ステップ１００９）。先読みを継続したまま、現AVリードコマンドの次のAVリードコマンドの発行予測タイムスタンプになっているかを調べ（ステップ１０１０）、タイムスタンプに達した場合は、AVデータリード処理の先読み処理を停止して（ステップ１０１１）、受領リードコマンド処理を開始する（ステップ１０１３）。
【００４２】
また、AVリードコマンドの次のAVリードコマンドのコマンド発行タイムスタンプになっているかを調べ（ステップ１０１０）、タイムスタンプに達していない場合は、該最大先読み量に達したか調べる（ステップ１０１２）。該最大先読み量に達した場合は、すぐに受領リードコマンド処理を開始する（ステップ１０１３）。また、最大先読み量に達していなかった場合は、先読み中のAVデータリードコマンドの次のAVデータリードコマンドの発行予測タイムスタンプに達しているかを調べる（ステップ１０１０）。すなわち、設定した最大先読み量又は、次のAVリードコマンドの発行予測タイムスタンプのいずれかの制限に到達するまで先読み処理を行った後、受領リードコマンドの処理を開始する（ステップ１０１３）。
【００４３】
なお、本発明では、次のAVデータリードコマンドの発行予測タイムスタンプの算出方法として、以下の２つの方法を提案する。
【００４４】
１つは、AVリードコマンドのコマンドの発行間隔をホストがディスク装置側に通知し、この通知された発行間隔と、AVリードコマンドの発行時刻により、ディスク装置が直後のAVリードコマンドのコマンド発行のタイムスタンプを予測するというものである。
【００４５】
図１１に、ストリームごとのコマンド発行間隔をホストがディスク装置に通知する処理のフローを示す。ホストは、ストリームごとに、データ転送レートを維持するために必要となるコマンド発行間隔をディスク装置に通知する（ステップ１１０１）。該コマンド発行間隔の通知には例えばATA/ATAPI-6におけるSet Featuresコマンドを使用する。 ホストよりストリームごとのコマンド発行間隔を受け取ると本発明のディスク装置は、該ストリームごとのコマンド発行間隔をRAM１０２に保存する（ステップ１１０２）。
【００４６】
図１２にストリームごとのコマンド発行間隔を通知するためのSet Features コマンドの各レジスタの値を示す。Commandレジスタには、Set Features コマンドを示すEFhコード（１２０１）を書き込む。また、Features レジスタには、コマンド発行間隔を示すSub  Commandコードとして３４ｈ（１２０２）をセットする。また、Sector Countレジスタには、ストリームID（１２０３）をセットする。また、LBA Low レジスタには、ストリームごとのコマンド発行間隔時間（１２０４）をセットする。LBA Mid 及びLBA Highのレジスタには設定する値はないので、0をセットする。また、Deviceレジスタのビット４（１２０５）には、選択されたデバイスの番号（マスタは0、スレーブは１）をセットする。また、Deviceレジスタの0から３ビット及び６ビットには値をセットしない。またDeviceレジスタの５ビットと7ビットには、０をセットする。
【００４７】
もう１つはディスク装置が、AVデータ処理（リード）のコマンド発行間隔を記録して学習し、学習したコマンド発行間隔と、AVリードコマンドの発行時刻により、次に受け取るAVリードコマンドのコマンド発行タイムスタンプを予測可能にするというものである。
【００４８】
図１３に、AVデータ処理用コマンド（リード）の発行時刻を予測するためのデータを管理するコマンド発行時刻管理テーブルの構成例を示す。該テーブルは、最新コマンドの発行時刻(ms)、最新１０コマンド分のコマンド発行間隔（ms）、平均コマンド発行間隔（ms）よりなる。最新コマンド発行時刻には、最新コマンドの発行時刻を登録する。また、最新１０コマンド分のコマンド発行間隔には、最新１０コマンドのコマンド発行間隔を登録する。また、平均コマンド発行間隔には、最新１０コマンド分のコマンド発行間隔の平均を登録する。直後のAVリードコマンドの発行予測タイムスタンプは、最新コマンドの発行時刻に、平均コマンド発行間隔を加算して算出する。
【図面の簡単な説明】
【００４９】
【図１】本発明によるディスク装置の構成例を示す図。
【図２】AVデータ処理用コマンドの先読み中に、PCデータ処理用コマンドを受領した場合に、PCデータ処理用コマンドの処理の開始を延期し、該AVデータ処理用コマンドの先読み継続し、一定量キャッシングする先読み制御のフローを示す図。
【図３】データ転送サイズごとのリードコマンド発行頻度の分布の例を示す図。
【図４】データ転送サイズごとのリードコマンド発行頻度の分布の例を示す図。
【図５】AVデータ処理用の先読みを実行するに際し、キャッシュ領域にAVデータ専用領域を確保し、先読み処理を行うフローを示す図。
【図６】AVデータ処理用ホスト要求データ転送サイズ管理テーブルの構成例を示す図。
【図７】AV データ処理用とPCデータ処理用の領域にキャッシュを分割した場合のキャッシュの構成例を示す図。
【図８】AVリードコマンド処理において先読みを実行中に、PCリードコマンドを受領した場合において、PCリードコマンドの処理の開始の延期を行うことなく、PCリードコマンド処理を実行可能な制御処理のフローを示す図。
【図９】PCリードコマンド処理開始の延期を禁止するPCデータ処理用リードコマンドの例を示す図。
【図１０】AVデータリード処理の先読みにより、PCデータリード処理の開始を遅延するに際し、AVデータリード処理による先読みを、最大で、当該AVリードコマンドの直後のAVリードコマンドの発行予測タイムスタンプまで延期する先読み制御のフローを示す図。
【図１１】ストリームごとのコマンド発行間隔をホストがディスク装置に通知する処理のフローを示す図。
【図１２】ストリームごとのコマンド発行間隔を通知するためのコマンドの例を示す図。
【図１３】AVデータ処理用コマンド（リード）の発行時刻を予測するためのデータを管理するコマンド発行時刻管理テーブルの構成例を示す図。
【符号の説明】
【００５０】
１０１：ROM
１０２：RAM
１０３：Timer
１０４：制御プロセッサ
１０５：キャッシュメモリ
１０６：ハードディスク制御装置
１０７：サーボ制御部
１０８：ボイスコイルモータ（VCM）
１０９：モータドライバ
１１０：セレクタ
１１１：信号処理部
１１２：ディスクフォーマッタ
１１３：ホストインタフェース部
１１４：ディスク
【図１】
2006031383.tif 000003
【図２】
2006031383.tif 000004
【図３】
2006031383.tif 000005
【図４】
2006031383.tif 000006
【図５】
2006031383.tif 000007
【図６】
2006031383.tif 000008
【図７】
2006031383.tif 000009
【図８】
2006031383.tif 000010
【図９】
2006031383.tif 000011
【図１０】
2006031383.tif 000012
【図１１】
2006031383.tif 000013
【図１２】
2006031383.tif 000014
【図１３】
2006031383.tif 000015
【手続補正書】
【提出日】平成16年7月15日(2004.7.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
図９に、ほかの処理によるPCリードコマンド処理の延期を禁止するPCデータ処理用リードコマンドの例を示す。PCデータ処理用コマンドは、Featuresレジスタ、Sector Countレジスタ、LBA Low レジスタ、LBA Midレジスタ、LBA Highレジスタ、Device レジスタ、Commandレジスタよりなる。ATA/ATAPI-6の仕様においてはFeaturesレジスタに値はセットされなかったが、本発明のディスク装置のインタフェースでは、Featuresレジスタに他のコマンドによる処理の遅延を禁止する場合、１をセットする。また、Sector Countには転送すべきデータのセクタ数をセットする。また、LBA Lowには、LBAアドレスの０から7ビットをセットする。また、LBA Midには、LBAアドレスの８から１５ビットをセットする。また、LBA Highには、LBAアドレスの１６から２３ビットをセットする。また、Device レジスタのビット０から３にはLBAアドレスの２４ビットから２７ビットをセットする。また、Device レジスタのビット４（９０１）には、選択されたデバイスの番号（マスタであれば０、スレーブであれば１）をセットする。また、Deviceレジスタのビット６（９０２）には、LBA方式でのアドレッシングを示す１をセットする。また、Device レジスタのビット５と７は廃止されたビットとなっているので０をセットする。Commandレジスタには、コマンドのコードをセットする。