ドライブユニットにおける非データ伝送のための時間バジェティング
【課題】イニシエータユニットのストリームバッファを利用することによるイニシエータユニットとロジカルユニットとの間のデータ伝送を効果的に管理すること。
【解決手段】イニシエータによってリクエストされる記憶媒体へのデータアクセス間において、ロジカルユニットは自律的処理を実行する必要があるかもしれない。ロジカルユニットは、イニシエータのストリームバッファが臨界レベルに達しているかロジカルユニットが判断することを可能にするため、イニシエータから情報を受け取る。この推定に基づき、ロジカルユニットは、エラーリカバリ、ドライブ機構又は記憶媒体の物理的メンテナンス、又はドライブ機構と記憶媒体との間の相対的ポジショニングなどの自律的処理を実行又は継続するか否か決定することが可能である。当該推定はまた、固定されたものよりフレキシブルなタイムアウトを可能にする。
【解決手段】イニシエータによってリクエストされる記憶媒体へのデータアクセス間において、ロジカルユニットは自律的処理を実行する必要があるかもしれない。ロジカルユニットは、イニシエータのストリームバッファが臨界レベルに達しているかロジカルユニットが判断することを可能にするため、イニシエータから情報を受け取る。この推定に基づき、ロジカルユニットは、エラーリカバリ、ドライブ機構又は記憶媒体の物理的メンテナンス、又はドライブ機構と記憶媒体との間の相対的ポジショニングなどの自律的処理を実行又は継続するか否か決定することが可能である。当該推定はまた、固定されたものよりフレキシブルなタイムアウトを可能にする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特にイニシエータユニット(initiator unit)のストリームバッファを利用することによるイニシエータユニットとロジカルユニット(logical unit)との間のデータ伝送を管理する分野に関する。
【背景技術】
【0002】
ある処理状態では、データを提供又は利用する1以上のアプリケーションを実行する少なくとも1つのホスト(イニシエータとしても知られる)が存在する。ホストプロセッサは、典型的には、ドライブユニット(ロジカルユニットとしても知られる)などの周辺装置とインタフェースをとる。ドライブユニットは、一般には、論理処理機能と、データ読み出し先又はデータ書き込み先となる少なくとも1つの媒体とを有する。媒体には、光、磁気、電子などの多数のタイプが存在する。
【0003】
媒体とインタフェースをとるため、アプリケーションプログラムは、しばしば大きなバッファを有する。アプリケーションがデータを利用している場合、バッファ充填量(buffer fullness)がある閾値レベル未満であるときには、アプリケーションプログラムは、該当するドライブユニットからさらなるデータをリクエストする1以上のリードコマンドを発信する。アプリケーションプログラムがデータを生成している場合、バッファ空き量(buffer emptiness)がある閾値レベル未満であるときには、アプリケーションプログラムは、該当するドライブユニットに少なくとも1つのライトコマンドを発信する。
【0004】
様々なタイプの媒体に対する読み書きの際のデータをバッファリングする多数の例が存在する。このようなバッファリングの例は、参照することによりここに含まれる、ドライブユニットが、アプリケーション伝送レートにマッチしようとするため、それが媒体からデータ抽出する伝送レートをどのようにして採用するかを記載するPCTアプリケーションIB2004/0506(NL030617)に見つけることができる。当該出願は、読み出ししか適用されず、ドライブユニット自身のバッファの充填量を考慮できる(する)。ドライブユニットは、アプリケーションのバッファについては何も知らない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明者によって見つけられた1つの問題は、データアクセスに関するタイミングがアプリケーションプログラムを充足することだけに関するものではないということである。ときには、ドライブユニット自体が、自律的な非データ伝送処理を実行する必要がある。このような処理は、エラーリカバリ、ドライブユニット又は記憶媒体の物理的メンテナンス及びドライブ機構と記憶媒体との間の相対的なポジショニングを含む。一般に、そのような処理は、記憶媒体へのデータアクセスと同じリソースを利用し、このため、そのようなアクセスと同時に実行することはできない。この結果、ドライブユニットは、それがアプリケーションプログラムを充足することが可能であるか知ることに加えて、このような自律的処理のための時間を有しているか知っている必要がある。
【課題を解決するための手段】
【0006】
ドライブユニットがストリーミングのロスの前にどれくらいの時間が残っているか決定することを可能にするため、アプリケーションプログラムを実行しているホストプロセッサにドライブユニットを供給させることが望ましい。ドライブユニットは、この上方を利用して、例えば、フレキシブルなタイムアウトを実現することによって、又はそれがそのような処理を開始する前に自律的な非データ伝送処理を良好に実行することが可能であるか決定することによって、それの内部処理を調整することが可能である。自律的処理は、例えば、エラーリカバリ、ドライブ機構又はデータ記憶媒体の物理的メンテナンス又はドライブ機構と記憶媒体との間の相対的ポジショニングのカテゴリなどにおいて、様々なタイプのものがあるかもしれない。
【発明の効果】
【0007】
本発明によると、イニシエータユニットのストリームバッファを利用することによるイニシエータユニットとロジカルユニットとの間のデータ伝送を効果的に管理することができる。
【図面の簡単な説明】
【0008】
【図1】図1は、リード処理中の本発明による装置の概略を示す。
【図2】図2は、ライト処理中の本発明による装置の概略を示す。
【図3A】図3Aは、時間の関数としてのバッファの充填のグラフである。
【図3B】図3Bは、時間の関数としてのタイマー値のグラフである。
【図4A】図4Aは、本発明によるリード処理に関するフローチャートの第1部分である。
【図4B】図4Bは、本発明によるリード処理に関するフローチャートの第2部分である。
【図5A】図5Aは、本発明によるライト処理に関するフローチャートの第1部分である。
【図5B】図5Bは、本発明によるライト処理に関するフローチャートの第2部分である。
【図6】図6は、図4A及び4Bのフローチャートに関するタイミング図を示す。
【図7】図7は、リード処理のためのフォアグラウンドプロセスのフローチャートを示す。
【図8】図8は、リード処理のための第2フォアグラウンドプロセスのフローチャートを示す。
【図9】図9は、ライト処理のためのバックグラウンドプロセスのフローチャートを示す。
【発明を実施するための形態】
【0009】
図1は、本発明が利用可能な装置の一例の概略図を示す。この概略図は、ストリーミングによるリード処理を示すよう構成される。当該装置は、ロジカルユニット104と媒体107とを含むデータソース101を有する。ここで、「ドライブユニット」及び「ロジカルユニット」という用語は、互換的に利用される。媒体107は、CD(Compact Disc)、DVD(Digital Video Disc)、HD−DVD(High Definition Digital Video Disc)、BD(Blu−らy Disc)などの光学的なものであるかもしれない。媒体107はまた、磁気又は電子などの他のタイプのものであるかもしれない。
【0010】
当該装置はまた、ソース101からのデータを利用するホスト106を含む。ここで、「ホスト」と「イニシエータ」という用語は、互換的に使用される。ホスト106は、PC、デジタル信号プロセッサ、セットトップボックスなどの何れかのタイプのものであるかもしれない。ホスト106は、ロジカルユニット104による同一のハウジング又は異なるハウジングにあるかもしれない。イニシエータユニット106の内部には、ソース101内のロジカルユニット104からデータストリーム3を収集するコレクタモジュール(collector module)102が存在する。ストリームバッファ105は、コレクタからデータ2を受け付け、ストリーミングされたデータ1をコンシューマ(consumer)103に提供する。ストリームバッファは、好ましくは、大規模バッファ105である。データフロー3は、インタフェース(図示せず)を介し行われる。コンシューマモジュール103は、ストリーミングされたデータ1を利用するアプリケーションプログラムの一部である。
【0011】
コンシューマ103は、それがストリームバッファ105からデータを削除することが可能な既知の最大データレートを有する。当該レートは、利用レートを呼ばれる。インタフェースは、既知の最小データ伝送レートを有する。当該レートは、インタフェースレートと呼ばれる。ソース101は、ロジカルユニットのキャッシュ又はバッファ108への媒体からの既知の最小ストリーミングデータレートを有する。この最小ストリーミングレートは、ソースレートと呼ばれる。一般に、利用レートはソースレートより小さく、ソースレートはインタフェースレートより小さい。
【0012】
ロジカルユニットバッファ108は任意的なものである。当業者は、それを有しないドライブユニットを設計することが可能である。
【0013】
一般に、リードコマンドは多数のタイプが存在するかもしれない。一部は、ストリーミングの実行を要求し、一部は要求しない。本発明は、特にストリーミングの実行を必要とする状況において有用である。例えば、MMCコマンドセットは、
・Read(10)
・Read(12)
を含む複数のリードコマンドを有する。上記数字(10又は12)は、コマンド記述子ブロックが何バイトから構成されるかを示している。これら2つのコマンドの相違は、
・Read(10)コマンドは伝送されるべきセクタ数を指定するため2バイトのパラメータを有し、Read(12)コマンドは4バイトのパラメータを有する。
・Read(12)コマンドのみが、ホストが「ストリーミング」伝送を所望することを示すパラメータを有する。ドライブにとって、これは、正しいデータを送信するためリトライを実行するより(おそらく遅延して)、時間内にデータ(不具合のある、又は生成されるものであるかもしれない)を送信することがより重要であることを意味する。本発明が特に有用であるのはこのストリーミング状態である。
【0014】
アプリケーションがデータをコンシューマに送信開始すると、真のリアルタイム制約は存在しない。従って、「ストリーミング」パラメータがスイッチオフされることによるRead(12)コマンド又はRead(10)コマンドによるバッファの初期的な充填を実行することが可能である。コンシューマへのデータフローの開始後、Read(12)コマンドは、ロジカルユニットへのストリーミング伝送リクエストを示すのに利用可能なものである。
【0015】
図3aは、データ利用処理中における時間に対する垂直軸上のバッファ充填量のグラフを示す。バッファ充填量は、それが閾値又はトリガーレベルに達するまで、データ利用中は低下する。当該ポイントにおいて、新たなデータ伝送処理がドライブユニットを用いてアプリケーションにより開始され、これにより、バッファ充填量は再び増加する。典型的には、アプリケーションがさらなる伝送を要求することを停止するのに十分充填された第2閾値にバッファが達するまで、データが伝送される。ホストの観点から、これは、時間があるが、ドライブが当該時点を知っていない場合に、自律的処理を開始するための好適なポイントであり、このため、それは自律的処理を実行することが可能となるのに十分な情報を受信し、依然としてホストの要求を充足する必要がある。
【0016】
図2は、図1と同様に、ライト処理中の本発明による装置の一例の概略を示す。このケースでは、データ生成モジュール203は、生成レートと呼ばれるレートによりデータ211をストリームバッファ205に提供する。ストリームバッファ205は、データ212を合成モジュール202に提供し、合成モジュール202は、インタフェースレートと呼ばれるレートにより送信先201にインタフェース(図示せず)を介しデータ213を提供する。その後、送信先モジュール201は、ここには図示されていないが、図1に示されるそれのローカル媒体に、送信先ライトレートと呼ばれるレートにより書き込みを行う。図2のモジュールは、アプリケーションに応じて図1における同様のモジュールと同一であり、すなわち、それらの参照番号の同一の最後の2桁を有するモジュールと同一のものとすることが可能である。あるいは、それらは異なるモジュールであるかもしれない。アプリケーションが生成するすべてのデータが記録可能であることを確認するため、ドライブユニットが書き込み可能なレートは、生成レートより大きなものとなる必要がある。これは、小さすぎるインタフェース伝送レートによって阻害されてはならない。
【0017】
再び、MMC−4 Write(12)コマンドなどの書き込み状態においてストリーミング伝送の実行が必要とされることをロジカルユニットに通知するのに利用可能な各種コマンドが多数存在する。
【0018】
図3aはまた、ライト処理中における時間の関数としてバッファ空き量の表示として利用することが可能である。すなわち、書き込み中、バッファ空き量は、データ伝送がドライブユニットを用いてアプリケーションにより開始される閾値又はトリガー値に達するまで低下する。データ伝送は、第2閾値に達するまでバッファ空き量を徐々に増大させる。アプリケーションプログラムは、第2閾値到達後、データ伝送を要求することを停止する。これは、ドライブユニットが自律的処理を開始することが可能となるポイントである。それは、リカバリ又はキャリブレーションが取得するタイマーの値と時間量から、それが息つく時間(time to breath)を有していることしか知らない。
【0019】
通常、自律的な非データ伝送処理に利用可能な時間に関する情報は、コマンドを用いてホスト106/206からドライブユニット101/201に通信されるべきである。好ましくは、このようなコマンドは、
・初期的なストリームタイミング値(ISTV)
・伝送ユニットサイズ(TUS)
・伝送ユニットインクリメント(TUI)
・リード又はライト処理が所望されるか示すライトフラグ
の4つのパラメータを含むであろう。
【0020】
これらは、どのようにパラメータが設定されるかの単なる具体例である。当業者は、他のパラメータを創出するかもしれない。例えば、タイミング値を送信するのでなく、アプリケーションは、ストリーミングバッファにすでにあるデータ量の数量とデータ利用レートを送信するかもしれない。これらの値から、ドライブユニットは、残りの時間を計算することが可能である。利用レートは、TUS/TUIとみなすことが可能である。
【0021】
図7は、データ伝送のためドライブユニットにおいて動作するフォアグラウンドプロセスの一例を示す。まず701において、ドライブユニットは、ホストユニットから上記列挙されたようなタイムアウトパラメータを受け取る。その後702において、ドライブユニットはこれらのパラメータを格納する。その後703において、ドライブユニットは、タイムアウトカウンタをスタートする。
【0022】
タイマーは、連続的にカウントダウンする。ドライブがライトフラグにより決定される方向にサイズTUSのデータ量を伝送する毎に、ドライブはTUIを実際のカウンタ値に加えるようにしてもよい。このことは、時間の関数としてタイマーの値をグラフ化した図3bに示される。この場合、カウンタ値の増加は、ジグザグのラインに従う。TUIの追加は、伝送ユニットの伝送の終わりまでタイマー値を増加させるが、この同じ伝送中にタイマー値を低下させる。従って、タイマー値は、ストリーミングバッファの値のジグザグの近似又は推定となる。
【0023】
図8は、ドライブユニットにおいてリードリクエストが動作する第2のフォアグラウンドプロセスを示す。801において、ドライブユニットはリードリクエストを受け取る。802においてリードコマンドが、Read(10)などストリーミングを要求しない場合、当該コマンドは、803におけるストリーミング要求なしに処理される。802においてリードコマンドが、Read(12)などのストリーミングを要求する場合、当該プロセスは、タイマーが経過したか806においてテストする。そうである場合、当該コマンドは、805においてエラーにより終了する。そうでない場合、当該プロセスは、807においてすべてのデータが伝送されたかテストする。そうである場合、当該コマンドは、809において良好に終了する。そうでない場合、808において、バックグラウンドプロセスからのデータを待機することが可能である。810において、利用可能なデータが伝送され、その後811において、タイマーが更新される。その後、コントロールは806に戻る。
【0024】
バックグラウンドプロセスファンクション808からのデータ待機は、データがバックグラウンドプロセスによってディスクからすでにフェッチされている場合には、極めて迅速にリターンするかもしれない。そうでない場合、フォアグラウンドプロセスは、データが利用可能になるとすぐに、バックグラウンドプロセスによってトリガーされる。もちろん、致命的なエラーが発生する可能性があるが、これはフローチャートには示されていない。
【0025】
ストリーミング要求なしにコマンドを処理する間、タイマーは依然としてカウントダウンする。なぜなら、コンシューマはアプリケーションのストリームバッファからのデータを依然として利用しているためである。
【0026】
また、ドライブユニットがリード処理中に媒体に不具合を検出し、リカバリ及び/又はキャリブレーションを実行する実用があると仮定する。この質問は、「コンシューマに対するリアルタイム要求を危険にさらすことなく、このリカバリ処理にドライブがどのくらいの時間費やすことが許されるか」というものである。その回答は、実際には、アプリケーションバッファの充填量に依存する。当該バッファがデータにより充填されている限り、ドライブはそれのリカバリを継続することが可能である。しかしながら、バッファ占有がゼロに接近しているとき、ドライブのリカバリは停止される必要がある。
【0027】
一般に、インタフェースがこれをサポートしないため、アプリケーションはリカバリを停止することができない。この結果、ドライブユニットは、それのローカルタイマーのタイムアウト値がある閾値に到達すると、自らリカバリを停止しなければならない。しばしば、ドライブユニットは、自律的処理を実行している間にホストに提供可能なキャッシュ108と呼ばれるバッファ自体を有するであろう。これは、自律的処理に対するビットにより多くの時間を与えるかもしれないが、ドライブユニットのバッファはストリーミングバッファと比較して一般に小さいものであるため、この余分な時間は重要ではないかもしれない。
【0028】
図9は、ボックス808により利用されるバックグラウンドリードプロセスの一例を示す。当該プロセスは、キャリブレーションと呼ばれる非データ伝送処理を実行しようとするものである。読み込みの際、ドライブはプリフェッチ処理と呼ばれるタスクを実行する。このことは、バックグラウンドプロセスが、さらに(連続するデータ)アプリケーションからの以降のリクエストを予想することができるように、ドライバのバッファがフルになるまで、ディスクからのデータの読み込みを継続することを意味する。これは、ループにおいて行われているものであり、フォアグラウンドプロセスをトリガーした後、バックグラウンドプロセスがデータを読み込み、又は非データ伝送処理を実行し続ける(ドライブユニットにより内部的に要求される場合)ことが可能であり、これにより、そのような処理は、好ましくはバックグラウンドプロセスにおいて実行される。
【0029】
901において、バックグラウンドは、データをドライブユニットのバッファにプリフェッチする。その後902において、それはデータが利用可能であるかチェックする。
【0030】
そうである場合、907において、それはフォアグラウンドプロセスをトリガーする。そうでない場合、当該プロセスは、キャリブレーションが903において保留中であるか判断する。そうでない場合、906において、データはドライブからバッファに伝送され、フォアグラウンドプロセスが907においてトリガーされる。
【0031】
キャリブレーションが保留中である場合、バックグラウンドプロセスは、904においてタイムアウトカウンタが非データ伝送処理に対して十分であるかテストする。そうである場合、非データ伝送処理、この場合にはキャリブレーションリクエストが、905において実行され、コントロールが906にわたされる。非データ伝送処理の時間がない場合、コントロールは、905を通過して906に直接わたされる。
【0032】
図7〜9のフローチャートは、パラレルに実行されるべきである。
【0033】
図4a及び4bは、エラーの場合における本発明による自律的処理を要求するリード処理のためのフローチャートの一例を示す。
【0034】
401において、ホストは、ISTV、TUS、TUI及びWRITEパラメータを計算し、その最後はフラグである。その後402において、ホストは、後述されるようなセットストリーミングコマンドの「ストリームタイミング記述子」を介しこれらのパラメータを送信する。ドライブは、セットストリーミングコマンドを受け取り、403においてストリームタイミング記述子からこれらのパラメータを取得する。その後404において、ドライブは、ISTVによるダウンカウンタをプログラムし、その他のパラメータを格納する。ここで、ホストは、405においてRead(12)などの少なくとも1つのリードコマンドを送信し、ドライブは、406においてリードコマンドを受け取る。フローチャートコネクタXは、図4aと4bとの間の実行のフローを接続するのに利用される。410において、ドライブはディスクから1以上のセクタを読み取る。ドライブユニットがまたバッファを有する場合、データはすでに利用可能であるかもしれない。
【0035】
その読み込み中、411において、ドライブユニットによっていくつかのエラーが検出されるかもしれない。そうである場合、ドライブは、418において自律的リードリカバリ処理を実行しなければならない。まず、ドライブは、423において自律的処理を実行するのに十分な時間があるかテストする。十分な時間がない場合、ドライブは、421においてコネクタWを介しエラーメッセージを生成する。十分な時間がある場合、コントロールはボックス418にわたされる。これらの処理の実行中、ドライブはまた、カウントダウンカウンタ/タイマーをモニタする必要がある。419において、カウントダウンがゼロに達する場合、422において当該リードはタイムアウトとなる。420において、カウントダウンがゼロに到達しないが、リードリカバリが成功しない場合、当該リードは、421においてリカバリ不可能なエラーにより終了する必要がある。
【0036】
420において、リードリカバリが成功した場合、ドライブは、412において利用可能なデータを示し、それはまた、411においてエラーがない場合には、その結果となる。その後、図3bに示されるように、ホストは412においてドライブからホストにデータを伝送することが可能であり、ドライブは414においてダウンカウンタを更新する。ダウンカウンタのこの更新は、フレキシブルなタイムアウトを実現する。ドライブのダウンカウンタが415においてゼロに到達する場合、リードタイムアウトがまた実行され、422においてリードの終了が不成功となる。ドライブのダウンカウンタが415においてゼロに到達しない場合、ドライブは、要求されたすべてのデータが416において伝送されたかテストする。そうでない場合、コントロールはボックス410に戻る。そうである場合、ドライブは、伝送コマンドが417において成功したことを通知する。
【0037】
図5a及び5bは、本発明による自律的処理を要求するライト処理のためのフローチャートの一例を示す。
【0038】
501において、ホストは、ISTV、TUS、TUI及びWRITEパラメータを計算し、その最後がフラグとなる。その後502において、ホストは、セットストリーミングコマンドにおいて「ストリームタイミング記述子」を介しパラメータを送信する。ドライブは、503において、セットストリーミングコマンドを受け取り、ストリームタイミング記述子からパラメータを取得する。その後504において、ドライブは、ISTVによりダウンカウンタをプログラムし、その他のパラメータを格納する。ホストは、505において少なくとも1つのライトコマンドを送信し、ドライブは、506においてライトコマンドを受け取る。507において、ドライブは、ホストからデータをリクエストする。その後、ホストは、508において1以上のデータブロックをドライブに送信し、509において、ドライブはそれを受け付ける。コネクタY及びZが、図5a及び5bのフローチャート部分を接続するのに利用される。510において、ドライブは、ダウンカウンタ、すなわち、タイマーを更新し、これにより、フレキシブルなタイムアウトを実現する。
【0039】
ダウンカウンタが511においてゼロに到達した場合、ライトコマンドは、520において、タイムアウト状態により終了する。そうでない場合、ドライブは512において、ディスクに書き込みを行う。513において、この書き込みによるエラーが検出されると、ドライブは、516において自律的なライトリカバリを実行しなければならない。まず、ドライブは522において、自律的処理を実行するための時間があるかテストする必要がある。時間がない場合には、519において、コネクタVを介しリカバリ不可能なエラーが生ずる。時間がある場合には、コントロールはボックス516にわたされる。ライトリカバリ期間中、ドライブはまた、517においてカウントダウンをモニタしなければならない。ドライブのカウントダウンが517においてゼロに到達すると、ライトコマンドは、520においてタイムアウト状態により終了しなければならない。そうでない場合には、ドライブは、ライトリカバリが518において成功したかテストする。不成功であった場合、ライトコマンドは、519においてリカバリ不可能なエラーにより終了される。ライトリカバリが成功した場合、コントロールはボックス514にわたされ、それはまた、513においてエラーが検出されていなければ、コントロールがわたされたであろう場合である。
【0040】
514において、ドライブは、関連するすべてのデータが伝送されたかテストする。そうでない場合、コントロールはブロック507に戻る。そうである場合、ドライブは、伝送コマンドが521において成功したと判断する。
【0041】
処理519、520、521、417、421及び422のすべては、ドライブがデータ伝送処理の結果に関する通知をホストに提供することを要求する。
【0042】
図4a、4b、5a及び5bのフローチャートは、シーケンシャルタイプフォーマットにより書かれているが、それらはまた、図7〜9と同様に、パラレルタイプフォーマットにより設定することが可能である。
【0043】
ドライブユニットは、レイヤジャンプ、熱管理動作又はリトライなどの他の自律的処理を実行するかもしれない。一般に、自律的処理は、例えば、ドライブ機構又はデータ記憶媒体の物理的メンテナンス又はドライブ機構と記憶媒体との間の相対的ポジショニングのカテゴリなど、各種タイプを有するかもしれない。
【0044】
何れのケースでも、当該タイプの自律的処理は、ホストに透過であるべきである。コマンドを処理しているフォアグラウンドプロセスは、ドライブユニットのキャッシュにデータが到着することを待機するだけである。それは、データが到着することを待機している理由は知らず、知る必要もない。
【0045】
当業者は、図4a及びb並びに図5a及びbと同様又は図7〜9と同様の他の実現形態を、特にボックス410、411、418、512、513及び516に対する若干の修正により上記及び他のタイプの自律的処理のため創出することが可能である。
【0046】
レイヤジャンプの場合、リード中において、それはボックス410の一部として実行することが可能である。レイヤジャンプは、記憶媒体に対する動きの一例である。ディスクからセクタを読み取ることは、光学ヘッドは適切な位置に移動されることを要求する。これは、他のレイヤ上にあるかもしれず、そのためレイヤジャンプと呼ばれる。
【0047】
フローチャートは、ストリーミングバッファ上のタイムアウトの場合に、永続的に終了する自律的処理を示す。しかしながら、いくつかの自律的処理は十分重要であるため、タイムアウトがあったとしても、それらが進行すべきである。例えば、熱管理処理は、記憶媒体への損害を回避するのに十分な時間がなくても必要であるかもしれない。このような場合、タイムアウトエラーメッセージは、熱管理動作の後に又はそれとパラレルに発行することが可能である。
【0048】
ボックス522及び423は、ストリーミングのロスまでの時間が自律的処理を実行するのに必要な時間より大きいか判断する必要がある。以下のテーブルにおいて、ストリーミングのロスまでの時間に関する計算例が示される。
【0049】
【表1】
ただし、
・Cは、K秒より少なくない期間に試用されるバイトグループ数であり、
・Nは、好適なリード又はライトサイズを生成するためCと乗算可能な乗数であり、
・Xは、予め決定されたストリームバッファ充填ポイントである。
【0050】
一般に、本発明による及びロジカルユニットにおける自律的処理は、コマンド実行中又はコマンド間において実行されるかもしれない。
【0051】
「コマンド実行中」とは、フローチャートに記載された状況であり。本発明は、MMC4からの固定されたタイムアウトに関する基本的問題を解決する。アプリケーションはタイムアウトが指定されることを可能にする。しかしながら、このタイムアウトは、宅コマンドの実行に適用され、従って、これは各コマンドの到着において再開される固定されたタイムアウトである。この定義による問題は、複数のコマンドのタイムアウトを加えることができないということである。本発明のタイムアウトは、実際にはプロセスのタイムアウトであり、単一のコマンドのものではなく、すなわち、フレキシブル又はランニングタイムアウトである。
【0052】
他の実施例では、コマンド実行中、ドライブは自律的処理がどれくらい重要であるかテストすることが可能であり、その後、データ伝送コマンドの終了前に当該処理が実際にすぐに必要とされる場合には、自律的処理のみをスタートする。他の実施例では、ドライブユニットは、自律的処理に費やすことが可能な時間に関する制限を確立することが可能である。
【0053】
本発明はまた、コマンド間において利用可能である。これらの状況では、ドライブは、データ伝送以外の動作を自律的かつ安全に実行することが可能である。本発明のタイマー値は、単一のコマンドでなくプロセスに対するランニングタイマーである。従って、バックグラウンドで非データ伝送処理を実行しながら、ドライブは依然として、ストリーミング要求に関する新たな情報を受け取ることが可能であり、コマンド処理はフォアグラウンドタスクとなる。
【0054】
本発明により維持されるタイムアウト値は、コンシューマへの実際の伝送レートが可変である場合(圧縮により)、不正確なものとなるかもしれない。従って、アプリケーションは、タイマー値を定期的に更新する必要がある。
【0055】
イニシエータは、かなり多数のセクタが伝送される必要がある1つのコマンドを発行するかもしれないが、少数のセクタにより多数のコマンドを発行するかもしれない。前者のケースでは、非データ伝送処理はコマンドの実行中に行うことが可能であり、後者のケースでは、非データ伝送処理はまた、適切なタイマー値がドライブユニットに伝送し続けられる限り、コマンド間で行われるかもしれない。ドライブユニットがまたキャッシュを有するため、それは、非データ伝送処理をパラレルに実行しながら(リトライ、エラーリカバリ、キャリブレーションなどと同様に)、キャッシュからのこれら多数のコマンドのいくつかに対するセクタを伝送することが可能であるかもしれない。
【0056】
しかしながら、「コマンド実行中」とは、ドライブが記憶媒体に対するデータの読み書きとパラレルに非データ処理を必然的に実行可能であることを意味するものでないということに留意すべきである。ドライブは単に、本発明のタイミング計算を利用して、記憶媒体への実際のデータアクセスが不要となる時間を活用する。
【0057】
図6は、リード処理中の経過時間の関数としてのバッファ充填量のグラフを示す。同様のグラフが、ライト処理に適用されるであろう。601において、バッファ充填量は、ジャンプバックレベル603に到達する。これは、リード処理に対するトリガーとして利用される。第1期間604の期間中、データ伝送が実際に開始されるまで、充填量は低下し続ける。参照番号605は、データ伝送が行われない場合のタイムアウトまでの期間を示す。参照番号606は、フローチャートの422において示される状態Cのバッファ充填量が続く、すなわち、自律的処理が長くかかりすぎた場合を示す。参照番号607及び608は、タイミング図のブランチA及びBに対する期間を参照する。これらのブランチは共に、ブロック417毎に成功した読み込みに関するが、ブランチAでは、バッファ充填量はジャンプバックレベル以下には低下せず、ブランチBでは、バッファ充填量はタイムアウトを生じさせることなく、ジャンプバックレベル以下に低下する。
【0058】
ホストユニットとドライブとの間で送信されるコマンドは、MMC−4規格に見つけられるものなどのフォーマットによるものであってもよく、その草案は、http://www.t10.org/ftp/t10/drafts/mmc4/mmc4r03.pdfに存在する。好適な実施例は、“SET STREAMING”コマンドを利用して、本発明に関するパラメータをわたす。当業者は、例えば、既存のコマンド又は新しいコマンドを含む他のMMCタイプコマンドを利用することによって、他の通信技術を創出することが可能である。
【0059】
以下において、本発明を実現するためのMMCタイプ状況における利用に適したコマンドフォーマットが記載される。これらは単なる具体例である。当業者は、本発明が機能する他のフォーマット又はコマンドの利用を創出するかもしれない。
【0060】
イニシエータは、プロファイル及びフィーチャに関するドライブユニットのすべての機能を取得するため、“GET CONFIGURATION”コマンドを発行する。搭載されている媒体に依存して、一部のプロファイル及びフィーチャは現在のものとされる。
【0061】
プロファイルの現在性は、ドライブユニットによりサポートされるフィーチャのベースセットを規定する。さらに、あるフィーチャは、ドライブユニットの機能及び動作を指定するコマンド及びモードページセットを記述する。
【0062】
テーブル2において、イニシエータに返されるべきリアルタイムストリーミングフィーチャに対するフィーチャ記述子レスポンスデータが規定される。
【0063】
【表2】
これの大部分は、“Streamed Timing(ST)”ビットが追加されることを除いて、MMC−4規格に従っている。当該ビットが1である場合、それは、当該ロジカルユニットが“SET STREAMING”コマンドの“Streamed Timing”記述子をサポートしていることを示す。
【0064】
このフィーチャをサポートするロジカルユニットは、テーブル3に列挙されるコマンドを実現する。
【0065】
【表3】
[SET STREAMINGコマンド]
ステップ402及び502は、“SET STREAMING”コマンドを利用して、“Stream Timing”記述子をドライブユニットに送信することに関する。
【0066】
“SET STREAMING”コマンドは、イニシエータにデータレートに対する要求を通信する方法を提供する。実行設定は永続的なものであり、新たな記述子が送信されるまで残る。
【0067】
“SET STREAMING”コマンドが実行設定に利用される場合、ロジカルユニットは、実行基準を満たすため、指定された領域におけるリード及びライト再割当てを不可とするかもしれない。
【0068】
テーブル4は、“SET STREAMING”コマンドに係るフィーチャを示す。
【0069】
【表4】
[CDB及びそれのパラメータ]
テーブル5において、“SET STREAMING CDB”が示される。
【0070】
【表5】
[タイプ]
タイプフィールド(テーブル6)は、何れのタイプのデータが伝送されるか示している。
【0071】
【表6】
このテーブルは、パフォーマンス記述子(MMC−4に存在する)、ストリームタイミング記述子及びDBIキャッシュゾーン記述子(MMC−4に存在する)のおそらく送信可能な3つの記述子を記載している。
[コマンド実行]
“SET STREAMING”コマンドは、アプリケーションがロジカルユニットの実行の対する具体的リクエスト又は要求を有していることをイニシエータがロジカルユニットに示す方法を提供する。
[ストリームタイミング記述子]
以下のテーブル7の特にバイト4〜15のストリームタイミング記述子は、イニシエータ及びロジカルユニットがストリームの連続性を維持するためにタイミング情報を共有することを可能にする。
【0072】
ロジカルユニットは、ストリームメンテナンスに利用可能な時間を表す利用可能タイマーを維持する。利用可能タイマーは、カウントダウンタイマーである。ストリームタイミングがイネーブルとされ、利用可能タイマーがゼロに達すると、ストリーミング“UNIT ATTENTION”状態のロスが存在する。
【0073】
【表7】
[イネーブル]
イネーブルがゼロに設定されると、ストリームタイミング記述子に基づく現在アクティブなすべてのストリームタイミングファンクションが不可とされる。イネーブルが1に設定されると、ストリームタイミングは、含んでいる記述子のパラメータに従ってイネーブルとされる。
[ライト]
イネーブルが1に設定され、ライトがゼロに設定されると、読み出しのためのストリーミングタイミングファンクションがイネーブルとされ、リードのためのストリーミングタイミングが、当該記述子のパラメータに従って初期化される。
【0074】
イネーブルが1に設定され、ライトが1に設定されると、書き込みのためのストリームタイミングファンクションはイネーブルとされ、ライトのためのストリームタイミングは、当該記述子のパラメータに従って初期化される。
【0075】
イネーブルがゼロに設定されるときは常に、ライトビットは規定されない。
[ストリームタイミング初期値]
ストリームタイミング初期値は、ストリーミング“UNIT ATTENTION”状態のロスが存在するまでのミリ秒数を表す。
【0076】
イネーブルが1に設定されると、ロジカルユニットは、それの利用可能時間タイマーをストリームタイミング初期値に初期化し、利用可能タイマーをスタートする。
【0077】
イネーブルがゼロに設定されているときは常に、当該パラメータは規定されない。
[伝送ユニットサイズ]
伝送ユニットサイズは、伝送毎の好適なセクタ数である。
[伝送ユニットインクリメント]
伝送ユニットインクリメントは、伝送ユニットサイズセクタが伝送された後、利用可能時間タイマーに加えられるミリ秒数である。
【0078】
本開示を参照することから、当業者には他の改良が明らかになるであろう。このような改良は、イニシエータとロジカルユニットの間のデータ伝送のための装置の設計、製造及び利用についてすでに知られ、ここですでに記載された特徴の代わりに、又はそれに加えて利用可能な他の特徴に関するものであるかもしれない。本出願では、特定の特徴の組み合わせにタイする請求項が記載されているが、本出願の開示の範囲はまた、本発明と同一の技術的問題の何れか又はすべてを軽減するか否に関係なく、明示的又は非明示的にここで開示されている新規な特徴又は新規な特徴の組み合わせ又はそれの何れかの一般化を含む。本出願人は、本出願又はそれから派生するさらなる出願の手続において、新たな請求項がそのような特徴に規定されるということを通知する。
【0079】
ここで使用される「有する」という用語は、さらなる要素を排除するものとしてみなされるものではない。ここで使用される単数形の冠詞「ある」は、複数の要素を排除するものとしてみなされるものではない。
【符号の説明】
【0080】
101 データソース
104 ロジカルユニット
106 ホスト
107 媒体
【技術分野】
【0001】
本発明は、特にイニシエータユニット(initiator unit)のストリームバッファを利用することによるイニシエータユニットとロジカルユニット(logical unit)との間のデータ伝送を管理する分野に関する。
【背景技術】
【0002】
ある処理状態では、データを提供又は利用する1以上のアプリケーションを実行する少なくとも1つのホスト(イニシエータとしても知られる)が存在する。ホストプロセッサは、典型的には、ドライブユニット(ロジカルユニットとしても知られる)などの周辺装置とインタフェースをとる。ドライブユニットは、一般には、論理処理機能と、データ読み出し先又はデータ書き込み先となる少なくとも1つの媒体とを有する。媒体には、光、磁気、電子などの多数のタイプが存在する。
【0003】
媒体とインタフェースをとるため、アプリケーションプログラムは、しばしば大きなバッファを有する。アプリケーションがデータを利用している場合、バッファ充填量(buffer fullness)がある閾値レベル未満であるときには、アプリケーションプログラムは、該当するドライブユニットからさらなるデータをリクエストする1以上のリードコマンドを発信する。アプリケーションプログラムがデータを生成している場合、バッファ空き量(buffer emptiness)がある閾値レベル未満であるときには、アプリケーションプログラムは、該当するドライブユニットに少なくとも1つのライトコマンドを発信する。
【0004】
様々なタイプの媒体に対する読み書きの際のデータをバッファリングする多数の例が存在する。このようなバッファリングの例は、参照することによりここに含まれる、ドライブユニットが、アプリケーション伝送レートにマッチしようとするため、それが媒体からデータ抽出する伝送レートをどのようにして採用するかを記載するPCTアプリケーションIB2004/0506(NL030617)に見つけることができる。当該出願は、読み出ししか適用されず、ドライブユニット自身のバッファの充填量を考慮できる(する)。ドライブユニットは、アプリケーションのバッファについては何も知らない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明者によって見つけられた1つの問題は、データアクセスに関するタイミングがアプリケーションプログラムを充足することだけに関するものではないということである。ときには、ドライブユニット自体が、自律的な非データ伝送処理を実行する必要がある。このような処理は、エラーリカバリ、ドライブユニット又は記憶媒体の物理的メンテナンス及びドライブ機構と記憶媒体との間の相対的なポジショニングを含む。一般に、そのような処理は、記憶媒体へのデータアクセスと同じリソースを利用し、このため、そのようなアクセスと同時に実行することはできない。この結果、ドライブユニットは、それがアプリケーションプログラムを充足することが可能であるか知ることに加えて、このような自律的処理のための時間を有しているか知っている必要がある。
【課題を解決するための手段】
【0006】
ドライブユニットがストリーミングのロスの前にどれくらいの時間が残っているか決定することを可能にするため、アプリケーションプログラムを実行しているホストプロセッサにドライブユニットを供給させることが望ましい。ドライブユニットは、この上方を利用して、例えば、フレキシブルなタイムアウトを実現することによって、又はそれがそのような処理を開始する前に自律的な非データ伝送処理を良好に実行することが可能であるか決定することによって、それの内部処理を調整することが可能である。自律的処理は、例えば、エラーリカバリ、ドライブ機構又はデータ記憶媒体の物理的メンテナンス又はドライブ機構と記憶媒体との間の相対的ポジショニングのカテゴリなどにおいて、様々なタイプのものがあるかもしれない。
【発明の効果】
【0007】
本発明によると、イニシエータユニットのストリームバッファを利用することによるイニシエータユニットとロジカルユニットとの間のデータ伝送を効果的に管理することができる。
【図面の簡単な説明】
【0008】
【図1】図1は、リード処理中の本発明による装置の概略を示す。
【図2】図2は、ライト処理中の本発明による装置の概略を示す。
【図3A】図3Aは、時間の関数としてのバッファの充填のグラフである。
【図3B】図3Bは、時間の関数としてのタイマー値のグラフである。
【図4A】図4Aは、本発明によるリード処理に関するフローチャートの第1部分である。
【図4B】図4Bは、本発明によるリード処理に関するフローチャートの第2部分である。
【図5A】図5Aは、本発明によるライト処理に関するフローチャートの第1部分である。
【図5B】図5Bは、本発明によるライト処理に関するフローチャートの第2部分である。
【図6】図6は、図4A及び4Bのフローチャートに関するタイミング図を示す。
【図7】図7は、リード処理のためのフォアグラウンドプロセスのフローチャートを示す。
【図8】図8は、リード処理のための第2フォアグラウンドプロセスのフローチャートを示す。
【図9】図9は、ライト処理のためのバックグラウンドプロセスのフローチャートを示す。
【発明を実施するための形態】
【0009】
図1は、本発明が利用可能な装置の一例の概略図を示す。この概略図は、ストリーミングによるリード処理を示すよう構成される。当該装置は、ロジカルユニット104と媒体107とを含むデータソース101を有する。ここで、「ドライブユニット」及び「ロジカルユニット」という用語は、互換的に利用される。媒体107は、CD(Compact Disc)、DVD(Digital Video Disc)、HD−DVD(High Definition Digital Video Disc)、BD(Blu−らy Disc)などの光学的なものであるかもしれない。媒体107はまた、磁気又は電子などの他のタイプのものであるかもしれない。
【0010】
当該装置はまた、ソース101からのデータを利用するホスト106を含む。ここで、「ホスト」と「イニシエータ」という用語は、互換的に使用される。ホスト106は、PC、デジタル信号プロセッサ、セットトップボックスなどの何れかのタイプのものであるかもしれない。ホスト106は、ロジカルユニット104による同一のハウジング又は異なるハウジングにあるかもしれない。イニシエータユニット106の内部には、ソース101内のロジカルユニット104からデータストリーム3を収集するコレクタモジュール(collector module)102が存在する。ストリームバッファ105は、コレクタからデータ2を受け付け、ストリーミングされたデータ1をコンシューマ(consumer)103に提供する。ストリームバッファは、好ましくは、大規模バッファ105である。データフロー3は、インタフェース(図示せず)を介し行われる。コンシューマモジュール103は、ストリーミングされたデータ1を利用するアプリケーションプログラムの一部である。
【0011】
コンシューマ103は、それがストリームバッファ105からデータを削除することが可能な既知の最大データレートを有する。当該レートは、利用レートを呼ばれる。インタフェースは、既知の最小データ伝送レートを有する。当該レートは、インタフェースレートと呼ばれる。ソース101は、ロジカルユニットのキャッシュ又はバッファ108への媒体からの既知の最小ストリーミングデータレートを有する。この最小ストリーミングレートは、ソースレートと呼ばれる。一般に、利用レートはソースレートより小さく、ソースレートはインタフェースレートより小さい。
【0012】
ロジカルユニットバッファ108は任意的なものである。当業者は、それを有しないドライブユニットを設計することが可能である。
【0013】
一般に、リードコマンドは多数のタイプが存在するかもしれない。一部は、ストリーミングの実行を要求し、一部は要求しない。本発明は、特にストリーミングの実行を必要とする状況において有用である。例えば、MMCコマンドセットは、
・Read(10)
・Read(12)
を含む複数のリードコマンドを有する。上記数字(10又は12)は、コマンド記述子ブロックが何バイトから構成されるかを示している。これら2つのコマンドの相違は、
・Read(10)コマンドは伝送されるべきセクタ数を指定するため2バイトのパラメータを有し、Read(12)コマンドは4バイトのパラメータを有する。
・Read(12)コマンドのみが、ホストが「ストリーミング」伝送を所望することを示すパラメータを有する。ドライブにとって、これは、正しいデータを送信するためリトライを実行するより(おそらく遅延して)、時間内にデータ(不具合のある、又は生成されるものであるかもしれない)を送信することがより重要であることを意味する。本発明が特に有用であるのはこのストリーミング状態である。
【0014】
アプリケーションがデータをコンシューマに送信開始すると、真のリアルタイム制約は存在しない。従って、「ストリーミング」パラメータがスイッチオフされることによるRead(12)コマンド又はRead(10)コマンドによるバッファの初期的な充填を実行することが可能である。コンシューマへのデータフローの開始後、Read(12)コマンドは、ロジカルユニットへのストリーミング伝送リクエストを示すのに利用可能なものである。
【0015】
図3aは、データ利用処理中における時間に対する垂直軸上のバッファ充填量のグラフを示す。バッファ充填量は、それが閾値又はトリガーレベルに達するまで、データ利用中は低下する。当該ポイントにおいて、新たなデータ伝送処理がドライブユニットを用いてアプリケーションにより開始され、これにより、バッファ充填量は再び増加する。典型的には、アプリケーションがさらなる伝送を要求することを停止するのに十分充填された第2閾値にバッファが達するまで、データが伝送される。ホストの観点から、これは、時間があるが、ドライブが当該時点を知っていない場合に、自律的処理を開始するための好適なポイントであり、このため、それは自律的処理を実行することが可能となるのに十分な情報を受信し、依然としてホストの要求を充足する必要がある。
【0016】
図2は、図1と同様に、ライト処理中の本発明による装置の一例の概略を示す。このケースでは、データ生成モジュール203は、生成レートと呼ばれるレートによりデータ211をストリームバッファ205に提供する。ストリームバッファ205は、データ212を合成モジュール202に提供し、合成モジュール202は、インタフェースレートと呼ばれるレートにより送信先201にインタフェース(図示せず)を介しデータ213を提供する。その後、送信先モジュール201は、ここには図示されていないが、図1に示されるそれのローカル媒体に、送信先ライトレートと呼ばれるレートにより書き込みを行う。図2のモジュールは、アプリケーションに応じて図1における同様のモジュールと同一であり、すなわち、それらの参照番号の同一の最後の2桁を有するモジュールと同一のものとすることが可能である。あるいは、それらは異なるモジュールであるかもしれない。アプリケーションが生成するすべてのデータが記録可能であることを確認するため、ドライブユニットが書き込み可能なレートは、生成レートより大きなものとなる必要がある。これは、小さすぎるインタフェース伝送レートによって阻害されてはならない。
【0017】
再び、MMC−4 Write(12)コマンドなどの書き込み状態においてストリーミング伝送の実行が必要とされることをロジカルユニットに通知するのに利用可能な各種コマンドが多数存在する。
【0018】
図3aはまた、ライト処理中における時間の関数としてバッファ空き量の表示として利用することが可能である。すなわち、書き込み中、バッファ空き量は、データ伝送がドライブユニットを用いてアプリケーションにより開始される閾値又はトリガー値に達するまで低下する。データ伝送は、第2閾値に達するまでバッファ空き量を徐々に増大させる。アプリケーションプログラムは、第2閾値到達後、データ伝送を要求することを停止する。これは、ドライブユニットが自律的処理を開始することが可能となるポイントである。それは、リカバリ又はキャリブレーションが取得するタイマーの値と時間量から、それが息つく時間(time to breath)を有していることしか知らない。
【0019】
通常、自律的な非データ伝送処理に利用可能な時間に関する情報は、コマンドを用いてホスト106/206からドライブユニット101/201に通信されるべきである。好ましくは、このようなコマンドは、
・初期的なストリームタイミング値(ISTV)
・伝送ユニットサイズ(TUS)
・伝送ユニットインクリメント(TUI)
・リード又はライト処理が所望されるか示すライトフラグ
の4つのパラメータを含むであろう。
【0020】
これらは、どのようにパラメータが設定されるかの単なる具体例である。当業者は、他のパラメータを創出するかもしれない。例えば、タイミング値を送信するのでなく、アプリケーションは、ストリーミングバッファにすでにあるデータ量の数量とデータ利用レートを送信するかもしれない。これらの値から、ドライブユニットは、残りの時間を計算することが可能である。利用レートは、TUS/TUIとみなすことが可能である。
【0021】
図7は、データ伝送のためドライブユニットにおいて動作するフォアグラウンドプロセスの一例を示す。まず701において、ドライブユニットは、ホストユニットから上記列挙されたようなタイムアウトパラメータを受け取る。その後702において、ドライブユニットはこれらのパラメータを格納する。その後703において、ドライブユニットは、タイムアウトカウンタをスタートする。
【0022】
タイマーは、連続的にカウントダウンする。ドライブがライトフラグにより決定される方向にサイズTUSのデータ量を伝送する毎に、ドライブはTUIを実際のカウンタ値に加えるようにしてもよい。このことは、時間の関数としてタイマーの値をグラフ化した図3bに示される。この場合、カウンタ値の増加は、ジグザグのラインに従う。TUIの追加は、伝送ユニットの伝送の終わりまでタイマー値を増加させるが、この同じ伝送中にタイマー値を低下させる。従って、タイマー値は、ストリーミングバッファの値のジグザグの近似又は推定となる。
【0023】
図8は、ドライブユニットにおいてリードリクエストが動作する第2のフォアグラウンドプロセスを示す。801において、ドライブユニットはリードリクエストを受け取る。802においてリードコマンドが、Read(10)などストリーミングを要求しない場合、当該コマンドは、803におけるストリーミング要求なしに処理される。802においてリードコマンドが、Read(12)などのストリーミングを要求する場合、当該プロセスは、タイマーが経過したか806においてテストする。そうである場合、当該コマンドは、805においてエラーにより終了する。そうでない場合、当該プロセスは、807においてすべてのデータが伝送されたかテストする。そうである場合、当該コマンドは、809において良好に終了する。そうでない場合、808において、バックグラウンドプロセスからのデータを待機することが可能である。810において、利用可能なデータが伝送され、その後811において、タイマーが更新される。その後、コントロールは806に戻る。
【0024】
バックグラウンドプロセスファンクション808からのデータ待機は、データがバックグラウンドプロセスによってディスクからすでにフェッチされている場合には、極めて迅速にリターンするかもしれない。そうでない場合、フォアグラウンドプロセスは、データが利用可能になるとすぐに、バックグラウンドプロセスによってトリガーされる。もちろん、致命的なエラーが発生する可能性があるが、これはフローチャートには示されていない。
【0025】
ストリーミング要求なしにコマンドを処理する間、タイマーは依然としてカウントダウンする。なぜなら、コンシューマはアプリケーションのストリームバッファからのデータを依然として利用しているためである。
【0026】
また、ドライブユニットがリード処理中に媒体に不具合を検出し、リカバリ及び/又はキャリブレーションを実行する実用があると仮定する。この質問は、「コンシューマに対するリアルタイム要求を危険にさらすことなく、このリカバリ処理にドライブがどのくらいの時間費やすことが許されるか」というものである。その回答は、実際には、アプリケーションバッファの充填量に依存する。当該バッファがデータにより充填されている限り、ドライブはそれのリカバリを継続することが可能である。しかしながら、バッファ占有がゼロに接近しているとき、ドライブのリカバリは停止される必要がある。
【0027】
一般に、インタフェースがこれをサポートしないため、アプリケーションはリカバリを停止することができない。この結果、ドライブユニットは、それのローカルタイマーのタイムアウト値がある閾値に到達すると、自らリカバリを停止しなければならない。しばしば、ドライブユニットは、自律的処理を実行している間にホストに提供可能なキャッシュ108と呼ばれるバッファ自体を有するであろう。これは、自律的処理に対するビットにより多くの時間を与えるかもしれないが、ドライブユニットのバッファはストリーミングバッファと比較して一般に小さいものであるため、この余分な時間は重要ではないかもしれない。
【0028】
図9は、ボックス808により利用されるバックグラウンドリードプロセスの一例を示す。当該プロセスは、キャリブレーションと呼ばれる非データ伝送処理を実行しようとするものである。読み込みの際、ドライブはプリフェッチ処理と呼ばれるタスクを実行する。このことは、バックグラウンドプロセスが、さらに(連続するデータ)アプリケーションからの以降のリクエストを予想することができるように、ドライバのバッファがフルになるまで、ディスクからのデータの読み込みを継続することを意味する。これは、ループにおいて行われているものであり、フォアグラウンドプロセスをトリガーした後、バックグラウンドプロセスがデータを読み込み、又は非データ伝送処理を実行し続ける(ドライブユニットにより内部的に要求される場合)ことが可能であり、これにより、そのような処理は、好ましくはバックグラウンドプロセスにおいて実行される。
【0029】
901において、バックグラウンドは、データをドライブユニットのバッファにプリフェッチする。その後902において、それはデータが利用可能であるかチェックする。
【0030】
そうである場合、907において、それはフォアグラウンドプロセスをトリガーする。そうでない場合、当該プロセスは、キャリブレーションが903において保留中であるか判断する。そうでない場合、906において、データはドライブからバッファに伝送され、フォアグラウンドプロセスが907においてトリガーされる。
【0031】
キャリブレーションが保留中である場合、バックグラウンドプロセスは、904においてタイムアウトカウンタが非データ伝送処理に対して十分であるかテストする。そうである場合、非データ伝送処理、この場合にはキャリブレーションリクエストが、905において実行され、コントロールが906にわたされる。非データ伝送処理の時間がない場合、コントロールは、905を通過して906に直接わたされる。
【0032】
図7〜9のフローチャートは、パラレルに実行されるべきである。
【0033】
図4a及び4bは、エラーの場合における本発明による自律的処理を要求するリード処理のためのフローチャートの一例を示す。
【0034】
401において、ホストは、ISTV、TUS、TUI及びWRITEパラメータを計算し、その最後はフラグである。その後402において、ホストは、後述されるようなセットストリーミングコマンドの「ストリームタイミング記述子」を介しこれらのパラメータを送信する。ドライブは、セットストリーミングコマンドを受け取り、403においてストリームタイミング記述子からこれらのパラメータを取得する。その後404において、ドライブは、ISTVによるダウンカウンタをプログラムし、その他のパラメータを格納する。ここで、ホストは、405においてRead(12)などの少なくとも1つのリードコマンドを送信し、ドライブは、406においてリードコマンドを受け取る。フローチャートコネクタXは、図4aと4bとの間の実行のフローを接続するのに利用される。410において、ドライブはディスクから1以上のセクタを読み取る。ドライブユニットがまたバッファを有する場合、データはすでに利用可能であるかもしれない。
【0035】
その読み込み中、411において、ドライブユニットによっていくつかのエラーが検出されるかもしれない。そうである場合、ドライブは、418において自律的リードリカバリ処理を実行しなければならない。まず、ドライブは、423において自律的処理を実行するのに十分な時間があるかテストする。十分な時間がない場合、ドライブは、421においてコネクタWを介しエラーメッセージを生成する。十分な時間がある場合、コントロールはボックス418にわたされる。これらの処理の実行中、ドライブはまた、カウントダウンカウンタ/タイマーをモニタする必要がある。419において、カウントダウンがゼロに達する場合、422において当該リードはタイムアウトとなる。420において、カウントダウンがゼロに到達しないが、リードリカバリが成功しない場合、当該リードは、421においてリカバリ不可能なエラーにより終了する必要がある。
【0036】
420において、リードリカバリが成功した場合、ドライブは、412において利用可能なデータを示し、それはまた、411においてエラーがない場合には、その結果となる。その後、図3bに示されるように、ホストは412においてドライブからホストにデータを伝送することが可能であり、ドライブは414においてダウンカウンタを更新する。ダウンカウンタのこの更新は、フレキシブルなタイムアウトを実現する。ドライブのダウンカウンタが415においてゼロに到達する場合、リードタイムアウトがまた実行され、422においてリードの終了が不成功となる。ドライブのダウンカウンタが415においてゼロに到達しない場合、ドライブは、要求されたすべてのデータが416において伝送されたかテストする。そうでない場合、コントロールはボックス410に戻る。そうである場合、ドライブは、伝送コマンドが417において成功したことを通知する。
【0037】
図5a及び5bは、本発明による自律的処理を要求するライト処理のためのフローチャートの一例を示す。
【0038】
501において、ホストは、ISTV、TUS、TUI及びWRITEパラメータを計算し、その最後がフラグとなる。その後502において、ホストは、セットストリーミングコマンドにおいて「ストリームタイミング記述子」を介しパラメータを送信する。ドライブは、503において、セットストリーミングコマンドを受け取り、ストリームタイミング記述子からパラメータを取得する。その後504において、ドライブは、ISTVによりダウンカウンタをプログラムし、その他のパラメータを格納する。ホストは、505において少なくとも1つのライトコマンドを送信し、ドライブは、506においてライトコマンドを受け取る。507において、ドライブは、ホストからデータをリクエストする。その後、ホストは、508において1以上のデータブロックをドライブに送信し、509において、ドライブはそれを受け付ける。コネクタY及びZが、図5a及び5bのフローチャート部分を接続するのに利用される。510において、ドライブは、ダウンカウンタ、すなわち、タイマーを更新し、これにより、フレキシブルなタイムアウトを実現する。
【0039】
ダウンカウンタが511においてゼロに到達した場合、ライトコマンドは、520において、タイムアウト状態により終了する。そうでない場合、ドライブは512において、ディスクに書き込みを行う。513において、この書き込みによるエラーが検出されると、ドライブは、516において自律的なライトリカバリを実行しなければならない。まず、ドライブは522において、自律的処理を実行するための時間があるかテストする必要がある。時間がない場合には、519において、コネクタVを介しリカバリ不可能なエラーが生ずる。時間がある場合には、コントロールはボックス516にわたされる。ライトリカバリ期間中、ドライブはまた、517においてカウントダウンをモニタしなければならない。ドライブのカウントダウンが517においてゼロに到達すると、ライトコマンドは、520においてタイムアウト状態により終了しなければならない。そうでない場合には、ドライブは、ライトリカバリが518において成功したかテストする。不成功であった場合、ライトコマンドは、519においてリカバリ不可能なエラーにより終了される。ライトリカバリが成功した場合、コントロールはボックス514にわたされ、それはまた、513においてエラーが検出されていなければ、コントロールがわたされたであろう場合である。
【0040】
514において、ドライブは、関連するすべてのデータが伝送されたかテストする。そうでない場合、コントロールはブロック507に戻る。そうである場合、ドライブは、伝送コマンドが521において成功したと判断する。
【0041】
処理519、520、521、417、421及び422のすべては、ドライブがデータ伝送処理の結果に関する通知をホストに提供することを要求する。
【0042】
図4a、4b、5a及び5bのフローチャートは、シーケンシャルタイプフォーマットにより書かれているが、それらはまた、図7〜9と同様に、パラレルタイプフォーマットにより設定することが可能である。
【0043】
ドライブユニットは、レイヤジャンプ、熱管理動作又はリトライなどの他の自律的処理を実行するかもしれない。一般に、自律的処理は、例えば、ドライブ機構又はデータ記憶媒体の物理的メンテナンス又はドライブ機構と記憶媒体との間の相対的ポジショニングのカテゴリなど、各種タイプを有するかもしれない。
【0044】
何れのケースでも、当該タイプの自律的処理は、ホストに透過であるべきである。コマンドを処理しているフォアグラウンドプロセスは、ドライブユニットのキャッシュにデータが到着することを待機するだけである。それは、データが到着することを待機している理由は知らず、知る必要もない。
【0045】
当業者は、図4a及びb並びに図5a及びbと同様又は図7〜9と同様の他の実現形態を、特にボックス410、411、418、512、513及び516に対する若干の修正により上記及び他のタイプの自律的処理のため創出することが可能である。
【0046】
レイヤジャンプの場合、リード中において、それはボックス410の一部として実行することが可能である。レイヤジャンプは、記憶媒体に対する動きの一例である。ディスクからセクタを読み取ることは、光学ヘッドは適切な位置に移動されることを要求する。これは、他のレイヤ上にあるかもしれず、そのためレイヤジャンプと呼ばれる。
【0047】
フローチャートは、ストリーミングバッファ上のタイムアウトの場合に、永続的に終了する自律的処理を示す。しかしながら、いくつかの自律的処理は十分重要であるため、タイムアウトがあったとしても、それらが進行すべきである。例えば、熱管理処理は、記憶媒体への損害を回避するのに十分な時間がなくても必要であるかもしれない。このような場合、タイムアウトエラーメッセージは、熱管理動作の後に又はそれとパラレルに発行することが可能である。
【0048】
ボックス522及び423は、ストリーミングのロスまでの時間が自律的処理を実行するのに必要な時間より大きいか判断する必要がある。以下のテーブルにおいて、ストリーミングのロスまでの時間に関する計算例が示される。
【0049】
【表1】
ただし、
・Cは、K秒より少なくない期間に試用されるバイトグループ数であり、
・Nは、好適なリード又はライトサイズを生成するためCと乗算可能な乗数であり、
・Xは、予め決定されたストリームバッファ充填ポイントである。
【0050】
一般に、本発明による及びロジカルユニットにおける自律的処理は、コマンド実行中又はコマンド間において実行されるかもしれない。
【0051】
「コマンド実行中」とは、フローチャートに記載された状況であり。本発明は、MMC4からの固定されたタイムアウトに関する基本的問題を解決する。アプリケーションはタイムアウトが指定されることを可能にする。しかしながら、このタイムアウトは、宅コマンドの実行に適用され、従って、これは各コマンドの到着において再開される固定されたタイムアウトである。この定義による問題は、複数のコマンドのタイムアウトを加えることができないということである。本発明のタイムアウトは、実際にはプロセスのタイムアウトであり、単一のコマンドのものではなく、すなわち、フレキシブル又はランニングタイムアウトである。
【0052】
他の実施例では、コマンド実行中、ドライブは自律的処理がどれくらい重要であるかテストすることが可能であり、その後、データ伝送コマンドの終了前に当該処理が実際にすぐに必要とされる場合には、自律的処理のみをスタートする。他の実施例では、ドライブユニットは、自律的処理に費やすことが可能な時間に関する制限を確立することが可能である。
【0053】
本発明はまた、コマンド間において利用可能である。これらの状況では、ドライブは、データ伝送以外の動作を自律的かつ安全に実行することが可能である。本発明のタイマー値は、単一のコマンドでなくプロセスに対するランニングタイマーである。従って、バックグラウンドで非データ伝送処理を実行しながら、ドライブは依然として、ストリーミング要求に関する新たな情報を受け取ることが可能であり、コマンド処理はフォアグラウンドタスクとなる。
【0054】
本発明により維持されるタイムアウト値は、コンシューマへの実際の伝送レートが可変である場合(圧縮により)、不正確なものとなるかもしれない。従って、アプリケーションは、タイマー値を定期的に更新する必要がある。
【0055】
イニシエータは、かなり多数のセクタが伝送される必要がある1つのコマンドを発行するかもしれないが、少数のセクタにより多数のコマンドを発行するかもしれない。前者のケースでは、非データ伝送処理はコマンドの実行中に行うことが可能であり、後者のケースでは、非データ伝送処理はまた、適切なタイマー値がドライブユニットに伝送し続けられる限り、コマンド間で行われるかもしれない。ドライブユニットがまたキャッシュを有するため、それは、非データ伝送処理をパラレルに実行しながら(リトライ、エラーリカバリ、キャリブレーションなどと同様に)、キャッシュからのこれら多数のコマンドのいくつかに対するセクタを伝送することが可能であるかもしれない。
【0056】
しかしながら、「コマンド実行中」とは、ドライブが記憶媒体に対するデータの読み書きとパラレルに非データ処理を必然的に実行可能であることを意味するものでないということに留意すべきである。ドライブは単に、本発明のタイミング計算を利用して、記憶媒体への実際のデータアクセスが不要となる時間を活用する。
【0057】
図6は、リード処理中の経過時間の関数としてのバッファ充填量のグラフを示す。同様のグラフが、ライト処理に適用されるであろう。601において、バッファ充填量は、ジャンプバックレベル603に到達する。これは、リード処理に対するトリガーとして利用される。第1期間604の期間中、データ伝送が実際に開始されるまで、充填量は低下し続ける。参照番号605は、データ伝送が行われない場合のタイムアウトまでの期間を示す。参照番号606は、フローチャートの422において示される状態Cのバッファ充填量が続く、すなわち、自律的処理が長くかかりすぎた場合を示す。参照番号607及び608は、タイミング図のブランチA及びBに対する期間を参照する。これらのブランチは共に、ブロック417毎に成功した読み込みに関するが、ブランチAでは、バッファ充填量はジャンプバックレベル以下には低下せず、ブランチBでは、バッファ充填量はタイムアウトを生じさせることなく、ジャンプバックレベル以下に低下する。
【0058】
ホストユニットとドライブとの間で送信されるコマンドは、MMC−4規格に見つけられるものなどのフォーマットによるものであってもよく、その草案は、http://www.t10.org/ftp/t10/drafts/mmc4/mmc4r03.pdfに存在する。好適な実施例は、“SET STREAMING”コマンドを利用して、本発明に関するパラメータをわたす。当業者は、例えば、既存のコマンド又は新しいコマンドを含む他のMMCタイプコマンドを利用することによって、他の通信技術を創出することが可能である。
【0059】
以下において、本発明を実現するためのMMCタイプ状況における利用に適したコマンドフォーマットが記載される。これらは単なる具体例である。当業者は、本発明が機能する他のフォーマット又はコマンドの利用を創出するかもしれない。
【0060】
イニシエータは、プロファイル及びフィーチャに関するドライブユニットのすべての機能を取得するため、“GET CONFIGURATION”コマンドを発行する。搭載されている媒体に依存して、一部のプロファイル及びフィーチャは現在のものとされる。
【0061】
プロファイルの現在性は、ドライブユニットによりサポートされるフィーチャのベースセットを規定する。さらに、あるフィーチャは、ドライブユニットの機能及び動作を指定するコマンド及びモードページセットを記述する。
【0062】
テーブル2において、イニシエータに返されるべきリアルタイムストリーミングフィーチャに対するフィーチャ記述子レスポンスデータが規定される。
【0063】
【表2】
これの大部分は、“Streamed Timing(ST)”ビットが追加されることを除いて、MMC−4規格に従っている。当該ビットが1である場合、それは、当該ロジカルユニットが“SET STREAMING”コマンドの“Streamed Timing”記述子をサポートしていることを示す。
【0064】
このフィーチャをサポートするロジカルユニットは、テーブル3に列挙されるコマンドを実現する。
【0065】
【表3】
[SET STREAMINGコマンド]
ステップ402及び502は、“SET STREAMING”コマンドを利用して、“Stream Timing”記述子をドライブユニットに送信することに関する。
【0066】
“SET STREAMING”コマンドは、イニシエータにデータレートに対する要求を通信する方法を提供する。実行設定は永続的なものであり、新たな記述子が送信されるまで残る。
【0067】
“SET STREAMING”コマンドが実行設定に利用される場合、ロジカルユニットは、実行基準を満たすため、指定された領域におけるリード及びライト再割当てを不可とするかもしれない。
【0068】
テーブル4は、“SET STREAMING”コマンドに係るフィーチャを示す。
【0069】
【表4】
[CDB及びそれのパラメータ]
テーブル5において、“SET STREAMING CDB”が示される。
【0070】
【表5】
[タイプ]
タイプフィールド(テーブル6)は、何れのタイプのデータが伝送されるか示している。
【0071】
【表6】
このテーブルは、パフォーマンス記述子(MMC−4に存在する)、ストリームタイミング記述子及びDBIキャッシュゾーン記述子(MMC−4に存在する)のおそらく送信可能な3つの記述子を記載している。
[コマンド実行]
“SET STREAMING”コマンドは、アプリケーションがロジカルユニットの実行の対する具体的リクエスト又は要求を有していることをイニシエータがロジカルユニットに示す方法を提供する。
[ストリームタイミング記述子]
以下のテーブル7の特にバイト4〜15のストリームタイミング記述子は、イニシエータ及びロジカルユニットがストリームの連続性を維持するためにタイミング情報を共有することを可能にする。
【0072】
ロジカルユニットは、ストリームメンテナンスに利用可能な時間を表す利用可能タイマーを維持する。利用可能タイマーは、カウントダウンタイマーである。ストリームタイミングがイネーブルとされ、利用可能タイマーがゼロに達すると、ストリーミング“UNIT ATTENTION”状態のロスが存在する。
【0073】
【表7】
[イネーブル]
イネーブルがゼロに設定されると、ストリームタイミング記述子に基づく現在アクティブなすべてのストリームタイミングファンクションが不可とされる。イネーブルが1に設定されると、ストリームタイミングは、含んでいる記述子のパラメータに従ってイネーブルとされる。
[ライト]
イネーブルが1に設定され、ライトがゼロに設定されると、読み出しのためのストリーミングタイミングファンクションがイネーブルとされ、リードのためのストリーミングタイミングが、当該記述子のパラメータに従って初期化される。
【0074】
イネーブルが1に設定され、ライトが1に設定されると、書き込みのためのストリームタイミングファンクションはイネーブルとされ、ライトのためのストリームタイミングは、当該記述子のパラメータに従って初期化される。
【0075】
イネーブルがゼロに設定されるときは常に、ライトビットは規定されない。
[ストリームタイミング初期値]
ストリームタイミング初期値は、ストリーミング“UNIT ATTENTION”状態のロスが存在するまでのミリ秒数を表す。
【0076】
イネーブルが1に設定されると、ロジカルユニットは、それの利用可能時間タイマーをストリームタイミング初期値に初期化し、利用可能タイマーをスタートする。
【0077】
イネーブルがゼロに設定されているときは常に、当該パラメータは規定されない。
[伝送ユニットサイズ]
伝送ユニットサイズは、伝送毎の好適なセクタ数である。
[伝送ユニットインクリメント]
伝送ユニットインクリメントは、伝送ユニットサイズセクタが伝送された後、利用可能時間タイマーに加えられるミリ秒数である。
【0078】
本開示を参照することから、当業者には他の改良が明らかになるであろう。このような改良は、イニシエータとロジカルユニットの間のデータ伝送のための装置の設計、製造及び利用についてすでに知られ、ここですでに記載された特徴の代わりに、又はそれに加えて利用可能な他の特徴に関するものであるかもしれない。本出願では、特定の特徴の組み合わせにタイする請求項が記載されているが、本出願の開示の範囲はまた、本発明と同一の技術的問題の何れか又はすべてを軽減するか否に関係なく、明示的又は非明示的にここで開示されている新規な特徴又は新規な特徴の組み合わせ又はそれの何れかの一般化を含む。本出願人は、本出願又はそれから派生するさらなる出願の手続において、新たな請求項がそのような特徴に規定されるということを通知する。
【0079】
ここで使用される「有する」という用語は、さらなる要素を排除するものとしてみなされるものではない。ここで使用される単数形の冠詞「ある」は、複数の要素を排除するものとしてみなされるものではない。
【符号の説明】
【0080】
101 データソース
104 ロジカルユニット
106 ホスト
107 媒体
【特許請求の範囲】
【請求項1】
ストリーミングのロス前の時間に関するデータアイテムを含む情報をドライブユニットに伝送するよう構成されるコマンドを含むコマンドセットを利用するよう構成される少なくとも1つのホストユニットと、
前記コマンドを受け付け、前記データアイテムからストリーミングのロス前の利用可能な時間を求め、前記ストリーミングのロス前の利用可能な時間に基づき、フレキシブルなタイムアウトに従って自己の処理を調整するよう構成される少なくとも1つのドライブユニットと、
を有することを特徴とするデータプロセッシングシステム。
【請求項2】
少なくとも1つのホストユニットからデータ伝送リクエストを受け付ける手段と、
少なくとも1つの記憶媒体にアクセスする手段と、
データ伝送リクエストに関するコマンドパラメータを受付及び格納し、ストリーミングの実行の要求を識別し、ストリーミングのロス前に残された時間を決定し、前記残された時間に従って自律的非データ伝送処理を調整するよう構成されるローカルプロセッシング機能と、
を有することを特徴とするドライブユニット。
【請求項1】
ストリーミングのロス前の時間に関するデータアイテムを含む情報をドライブユニットに伝送するよう構成されるコマンドを含むコマンドセットを利用するよう構成される少なくとも1つのホストユニットと、
前記コマンドを受け付け、前記データアイテムからストリーミングのロス前の利用可能な時間を求め、前記ストリーミングのロス前の利用可能な時間に基づき、フレキシブルなタイムアウトに従って自己の処理を調整するよう構成される少なくとも1つのドライブユニットと、
を有することを特徴とするデータプロセッシングシステム。
【請求項2】
少なくとも1つのホストユニットからデータ伝送リクエストを受け付ける手段と、
少なくとも1つの記憶媒体にアクセスする手段と、
データ伝送リクエストに関するコマンドパラメータを受付及び格納し、ストリーミングの実行の要求を識別し、ストリーミングのロス前に残された時間を決定し、前記残された時間に従って自律的非データ伝送処理を調整するよう構成されるローカルプロセッシング機能と、
を有することを特徴とするドライブユニット。
【図1】
【図2】
【図3A】
【図3B】
【図4A】
【図4B】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3A】
【図3B】
【図4A】
【図4B】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2011−216102(P2011−216102A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2011−128073(P2011−128073)
【出願日】平成23年6月8日(2011.6.8)
【分割の表示】特願2007−522100(P2007−522100)の分割
【原出願日】平成17年7月18日(2005.7.18)
【出願人】(590000248)コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ (12,071)
【Fターム(参考)】
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願日】平成23年6月8日(2011.6.8)
【分割の表示】特願2007−522100(P2007−522100)の分割
【原出願日】平成17年7月18日(2005.7.18)
【出願人】(590000248)コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ (12,071)
【Fターム(参考)】
[ Back to top ]