(57)【要約】【課題】  コンピュータ記憶媒体に対するＩ／Ｏアクセスを、予測可能かつ効率的な形で支援するシステムおよび方法を提供すること。【解決手段】  様々なレベルのデータアクセス要件に鑑みて、ディスクＩ／Ｏについて様々なレベルの性能保証を提供するという問題を軽減するスケジューリングシステムおよび方法が提供される。一態様において、本スケジューリングシステムは、高性能Ｉ／Ｏ更新を提供し、一方、限定された、または決定された形でディスクに対する高スループットを維持するアルゴリズムまたはコンポーネントを含む。これは、Ｉ／Ｏアクセス時間および待ち時間という考慮すべき点を、データスケジューリング要件という考慮すべき点と動的に釣り合わせることによって達成される。また、本システムは、マルチメディアアプリケーションについて待ち時間境界を設け、他のアプリケーションについてアクセスを管理する。【選択図】  図１
2005071353.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体に向けて送られる入力／出力要求の部分集合を保持する少なくとも１つのキューと、
予め定められた数の前記要求を１ラウンド内で使用して、記憶媒体更新に関連して所定の待ち時間のレベルを有し、所定のスループットレベルを維持するスケジューリングコンポーネントと
を備えたことを特徴とするディスクスケジューリングシステム。
【請求項２】
前記スケジューリングコンポーネントは、自動的に前記要求をキューの１つまたは複数のクラスに向けて送るカテゴライザに結びつけられることを特徴とする請求項１に記載のシステム。
【請求項３】
前記スケジューリングコンポーネントは、前記要求を前記カテゴライザから受信する予め定められたサイズのキューを含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記記憶媒体は、コンピュータからアクセスされるようにスケジューリングされるハードディスク、フロッピー（登録商標）ディスク、メモリースティック、コンパクトディスク、メモリのうち少なくとも１つを含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記スケジューリングコンポーネントは、選択されたタスクについてＩ／Ｏスケジューリングを実行するため、抑制された待ち時間の定められた量を動的に計算することを特徴とする請求項１に記載のシステム。
【請求項６】
周期的キューおよび非周期的キューのうち少なくとも１つをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項７】
前記周期的キューは、期限の早い（ＥＤＦ）順で構成されることを特徴とする請求項６に記載のシステム。
【請求項８】
前記周期的キューは、重要度のクラスに従って構成されることを特徴とする請求項６に記載のシステム。
【請求項９】
前記重要度のクラスは、最重要、高優先順位、対話型、通常、バックグラウンド、低優先順位、アイドルのうち少なくとも１つを含むことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記非周期的キューは、先入れ先出し（ＦＩＦＯ）順に従って構成されることを特徴とする請求項８に記載のシステム。
【請求項１１】
前記周期的キューおよび前記非周期的キューを処理し、および前記記憶媒体にアクセスする掃引キューをさらに備えたことを特徴とする請求項６に記載のシステム。
【請求項１２】
前記掃引キューは、Ｃ−ＬＯＯＫコンポーネントに従って管理され、Ｃ−ＬＯＯＫ順で構成されることを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記周期的キューは、マルチメディアアプリケーションに関連する周期的Ｉ／Ｏに結び付けられることを特徴とする請求項６に記載のシステム。
【請求項１４】
システムリソースを鑑みて検査される性能パラメータを有する周期的Ｉ／Ｏストリームを処理するコンポーネントをさらに備えたことを特徴とする請求項６に記載のシステム。
【請求項１５】
システム能力を鑑みて周期的Ｉ／Ｏストリームを分析し、および前記能力を超えた場合、要求を打ち切るコンポーネントをさらに備えたことを特徴とする請求項６に記載のシステム。
【請求項１６】
前記コンポーネントは、前記周期的Ｉ／Ｏのそれぞれのパラメータを超えないことを強制する許可コントローラであることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記許可コントローラは、要求に、前記要求を完了すべき期限または時間枠を割り当てる期限コンポーネントを含むことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記記憶媒体に対するアクセス時間は、以下の式によって、
【数１】
2005071353.tif 000004
決定することを特徴とする請求項１に記載のシステム。
【請求項１９】
請求項１に記載のスケジューリングコンポーネントおよびキューを実施するためのコンピュータ読取可能命令を記憶していることを特徴とするコンピュータ読取可能な媒体。
【請求項２０】
記憶媒体に対する要求をスケジューリングする方法であって、
１組の要求について予め定められた数の要求を決定するステップと、
前記１組の要求に関連付けられた待ち時間パラメータを決定するステップと、
前記１組の要求について前記待ち時間パラメータおよび所望のスループットに基づいて、記憶媒体を更新するステップと
を備えたことを特徴とする方法。
【請求項２１】
前記１組の要求に関連する入力／出力ストリームを、周期的ストリームおよび非周期的ストリームのうち少なくとも１つに自動的に分離するステップをさらに備えたことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記周期的ストリームを期限の早い順で構成するステップと、
前記非周期的ストリームを先入れ先出し順で構成するステップと
をさらに備えたことを特徴とする請求項２１に記載の方法。
【請求項２３】
Ｃ−ＬＯＯＫアルゴリズムを前記周期的ストリームおよび前記非周期的ストリームに適用して、記憶媒体にアクセスするステップをさらに備えたことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記記憶媒体にアクセスするために、命令
while 周期的キュー≠0 and 周期的スロット≠0 and
DEADLINE(周期的キュー)<ROUND_TIME do
INSERT_LBA_ORDER(掃引キュー,
REMOVE_EDF_ORDER(周期的キュー))
周期的スロット=周期的スロット-1
end
for 優先順位=High downto Idle do
while 優先順位リスト[優先順位].スロット≠0
INSERT_LBA_ORDER(掃引キュー,
REMOVE_FIFO_ORDER(優先順位キュー[優先順位]))
優先順位リスト[優先順位].スロット=優先順位リスト[優先順位].スロット-1
end
end
while 掃引キュー≠0 do
SCHEDULE(REMOVE_MINMUM_LBA(掃引キュー))
end
に関連する関数を適用するステップをさらに備えたことを特徴とする請求項２０に記載の方法。
【請求項２５】
ディスク更新を実行する方法であって、
１ラウンドの要求について、待ち時間要件を自動的に決定するステップと、
前記１ラウンドの要求について、サイズを自動的に調整するステップと、
前記１ラウンドの要求で記憶媒体を更新するステップと
を備えたことを特徴とする方法。
【請求項２６】
前記１ラウンドの要求について、帯域幅要件を決定するステップと、
前記決定された帯域幅要件に基づいて、前記１ラウンドの要求を自動的に優先順位付けするステップと
をさらに備えたことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記帯域幅要件および前記待ち時間要件を動的に監視するステップをさらに備えたことを特徴とする請求項２６に記載の方法。
【請求項２８】
ディスク更新を容易にするシステムであって、
１組の要求を分類する手段と、
固定されたサイズを有する前記１組の要件をキューイングする手段と、
待ち時間要件およびスループット要件のうち少なくとも１つに基づいて、記憶媒体と対話する手段と
を備えたことを特徴とするシステム。
【請求項２９】
１ラウンドの要求に関連するキューのためのサイズパラメータに関する第１のデータフィールドと、
前記１ラウンドの要求に関連する待ち時間パラメータに関する第２のデータフィールドと
を備えたデータ構造を記憶していることを特徴とするコンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムに関し、より詳細には、効率的かつ限定された形でデータ要求をスケジューリングすることを容易にするシステムおよび方法に関する。
【背景技術】
【０００２】
ドライブヘッドを探索することで生じる性能の損失を低減するために、オペレーティングシステムソフトウェア（およびドライブファームウェア）は従来、Ｉ／Ｏパケットを再順序付けし、探索（ｓｅｅｋ）時間を最小限に抑えている。長い探索時間に対処しつつ、ディスクドライブに対するかなりのアクセスを維持するため、多くの研究が行われている。一般に、従来のディスクスケジューリングアルゴリズムは、ディスク宛の要求を再順序付けし、データスループットを最大化する。多数のオペレーティングシステムによって実施されている共通アルゴリズムの１つは、しばしばＣ−ＳＣＡＮアルゴリズムと呼ばれる、正式にはＣ−ＬＯＯＫアルゴリズムである。Ｃ−ＬＯＯＫアルゴリズムは、任意の数の要求を再順序付けし、考えられる最高のデバイスに対するスループットを達成する。しかし、この種の再順序付けにおいては、Ｃ−ＬＯＯＫアルゴリズムにより、要求が開始された時間から、要求が最終的に完了するまでの間に大きな待ち時間が生じる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記で指摘されるように、実施されているほとんどの共通アルゴリズムはＣ−ＬＯＯＫアルゴリズムであり、Ｃ−ＬＯＯＫアルゴリズムは、要求の順序付けを行って、ディスクヘッドが入力／出力動作（Ｉ／Ｏ）を実行するディスクを端から端まで１方向で掃引し、次いで、追加のＩ／Ｏを実行するためにディスクの他方の側に戻るようにする。これはしばしば、論理ブロックアドレス順序付けまたはＬＢＡ順序付けと呼ばれる。残念なことに、従来のディスクスケジューリングアルゴリズムにおいては、ディスクに対するより高いスループットのため、アクセス時間（または待ち時間）は単純な先入れ先出し（ＦＩＦＯ）キューイングを超える、より長いものとなる。これはより良好なスループットを提供するが、Ｉ／Ｏ要求については潜在的に、および劇的に長い待ち時間となる。従来のオペレーティングシステムの場合、この兼ね合いは、十分そのコストに見合う。一例としてはオーディオ・ビジュアルストリーミングをサポートすることが必要な、より新しいシステムの場合、単に待ち時間をスループットの高さで対処しようとしても、しばしばこれは受け入れられない。
【０００４】
多くのこれに替わるディスクスケジューリングアルゴリズムが実施されている。具体的には、到着順（ｆｉｒｓｔ−ｃｏｍｅ−ｆｉｒｓｔ−ｓｅｒｖｅ／ＦＣＦＳ、またＦＩＦＯとも呼ばれることがある）アルゴリズムと期限の早い順（ｅａｒｌｉｅｓｔ−ｄｅａｄｌｉｎｅ−ｆｉｒｓｔ／ＥＤＦ）アルゴリズムが、それぞれマルチメディアアプリケーションにおけるスケジューリングのために提案されている。ＦＣＦＳアルゴリズムは、Ｉ／Ｏを実行するための時間を、現在のキューの長さに応じて限定し、ＥＤＦアルゴリズムは、期限のより早い要求が、期限のより遅い要求の前に実行されることを保証する。
【０００５】
残念なことに、ＦＣＦＳアルゴリズムもＥＤＦアルゴリズムも共に、Ｉ／Ｏスループットが不十分である。専用オペレーティングシステムやリアルタイムオペレーティングシステムでは、このようにディスクが十分に利用されないことは欠点とはならないかもしれないが、たとえばマルチメディアアプリケーションをも処理する（ｈｏｓｔ）汎用オペレーティングシステムでは、Ｉ／Ｏ要求を実行するための待ち時間を限定するためにスループットが著しく低下することは、通常受け入れられない。
【課題を解決するための手段】
【０００６】
以下に、本発明のいくつかの態様の基本的理解のため、本発明の簡単な概要を説明する。この概要は、本発明の広範な全体像ではない。本発明の重要な要素を識別すること、あるいは本発明の範囲を述べることは意図されていない。後述されるより詳しい説明に対する序文として、本発明のいくつかの概念を簡単な形態で提供することだけが目的である。
【０００７】
本発明は、記憶媒体に対するデータ要求の動的スケジューリングを効率的かつ適時に支援するシステムおよび方法に関する。データ要求は、ディスクドライブまたは他のタイプの媒体など記憶媒体に対する、入力／出力（Ｉ／Ｏ）読出しおよび書込みとして処理される。スケジューリングは、ディスクドライブの１走査当たり固定された数の要求を再順序付けし、したがって、要求の待ち時間に対して固定された上限を設けるアーキテクチャにおいて達成される。ここで、ディスクドライブの各走査は、ラウンドと呼ばれる。ディスクドライブが実行するのに効率的なパターンに要求が再順序付けされるため、ディスクドライブに対する高いスループットもまた達成される。したがって、少なくとも１つのスケジューリングコンポーネントを含むディスクスケジューリングシステムが提供される。このスケジューリングコンポーネントは、１ラウンド内で予め定められた数の要求を使用して所定の待ち時間保証を提供し、一方、ディスク更新に関連して高いスループットレベルを維持する。
【０００８】
一態様において、Ｉ／Ｏの決定されたカテゴリに従ってＩ／Ｏ要求を類別する許可コントローラが提供される。たとえば、マルチメディアアプリケーションに関連付けられたＩ／Ｏは周期的Ｉ／Ｏとして類別することができ、一方、他のＩ／Ｏは非周期的として特徴付けることができるであろう。非周期的Ｉ／Ｏは、優先順位によってさらに特徴付けられ、任意の固定された数の優先順位が存在する。一実施例において、優先順位の数を３２に限定することができる。しかし、これは、他の実施例において、より大きい値、またはより小さい値に容易に変更することができる。
【０００９】
周期的Ｉ／Ｏ要求は、周期的Ｉ／Ｏキューに入れて、望むなら、期限の早い（ＥＤＦ）順で維持することができる。非周期的Ｉ／Ｏ要求は、要求の優先順位に基づいて別々の非周期的Ｉ／Ｏキューに入れることができ、非周期的キューは、たとえばＦＣＦＳ順で維持することができる。アルゴリズムの各ラウンド中に、周期的キューおよび非周期的キューからの固定された数の要求が取り出され、掃引キューに配置される。掃引キューは、Ｃ−ＬＯＯＫ順で維持される。要求は、掃引キューからＣ−ＬＯＯＫ順で取り出され、ディスクにスケジューリングされる。諸要素がＣ−ＬＯＯＫ順で物理ドライブにスケジューリングされるため、ドライブに対して高い性能が維持される。
【００１０】
前述の、および関連の目的を達成するため、以下の説明および添付の図面と関連して、本発明のある例示的な諸態様が本明細書に述べられている。これらの態様は、本発明を実施することができる様々な方法を示すものであり、そのすべてを本発明に包含しようとするものである。本発明の他の利点および新規な特徴は、図面と共に考察すると、以下の本発明の詳細な説明から明らかになる可能性がある。
【発明を実施するための最良の形態】
【００１１】
本発明は、コンピュータ記憶媒体に対するＩ／Ｏアクセスを、予測可能かつ効率的な形で支援するシステムおよび方法に関する。様々なレベルのデータアクセス要件に鑑みて、ディスクＩ／Ｏについて様々なレベルの性能保証を提供するという問題を軽減するスケジューリングシステムおよび方法が提供される。一態様においては、本スケジューリングシステムは、より時間に最重要なアプリケーションについて高性能Ｉ／Ｏ更新を促進し、一方、限定された、または決定された形でディスクに対する高スループットを維持するアルゴリズムまたはコンポーネントを含む。これは、Ｉ／Ｏアクセス時間および待ち時間という考慮すべき点（たとえば、Ｉ／Ｏアクセスの範囲に対して限定を設けること）を、他のデータスケジューリングタスクという考慮すべき点（たとえば、Ｉ／Ｏアクセスデータタスクのレベルを重要度によって分類すること）と動的に釣り合わせることによって達成される。また、本システムは、マルチメディアアプリケーション（たとえば、オーディオ／ビジュアルストリームなど周期的データを有し、時間に左右されるアプリケーション）について待ち時間境界を設け、他のアプリケーション（たとえば、周期的でないデータに関連する優先順位の低いＩ／Ｏタスク）についてデータアクセスを管理する。
【００１２】
本願では、「コンポーネント」「スケジューラ」「システム」などの用語は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアであるコンピュータ関連のエンティティを指すものとする。たとえば、コンポーネントは、それだけには限らないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータとすることができる。例示のために、サーバ上で動作するアプリケーションもサーバも共にコンポーネントとすることができる。プロセスおよび／または実行のスレッド内に１つまたは複数のコンポーネントが常駐することができ、コンポーネントは、１つのコンピュータに局所化し、および／または２つ以上のコンピュータ間で分散することができる。
【００１３】
まず図１を参照すると、本発明の一態様によるスケジューリングシステム１００が示されている。記憶媒体１２０宛の／記憶媒体１２０からの１つまたは複数の入力／出力（Ｉ／Ｏ）データ要求１１０は、カテゴライザ１３０によって処理され、自動的に１つまたは複数のクラスのキュー１４０内に整理される。そのようなキュー１４０は、マルチメディアストリームなど周期的Ｉ／Ｏデータ用の周期的キューと、非周期的データなど他の種類のデータ用の１つまたは複数のキューとを含むことができる。周期的Ｉ／Ｏストリームは、マルチメディアタイプのアプリケーション用など、一定の間隔で生成されるストリームである。他のＩ／Ｏストリームは、非周期的Ｉ／Ｏストリームと見なされる。周期的Ｉ／Ｏと異なり、非周期的Ｉ／Ｏの到着率は、時間の経過につれて急に変化する可能性がある。さらに、非周期的Ｉ／Ｏは、やはりキュー１４０に関連付けられた様々なＩ／Ｏクラスに分類することができる。
【００１４】
カテゴライザ１３０は、スケジューラ１６０によって処理されるキュー１４０内に要求を転送するが、スケジューラ１６０は、固定された、または予め定められたサイズのキュー１７０を有する。スケジューラ１６０は、１つまたは複数のデータラウンド１５０の形態で記憶媒体１２０に対してデータを読み出し、および／または書き込むため、キュー１７０へ／キュー１７０からデータを転送する。データラウンド１５０は、システムの全体的な待ち時間およびスループットを抑制する定められた時間スロットに従って媒体に向けて送られる。１ラウンド当たりの要求数の点で予め定められたサイズを有するデータ要求のラウンド１５０を転送することにより、本発明は、媒体に対する／媒体からの所望のデータスループットに鑑みて、記憶媒体１２０にアクセスするための全体的な待ち時間を動的に釣り合わせる。
【００１５】
上記で指摘したように、ディスクドライブ（たとえば、ハードディスク、フロッピー（登録商標）ディスク）または他のタイプの媒体（たとえば、ＣＤ、コンピュータからアクセスされるようにスケジューリングされる任意のタイプのメモリ）を示すことができる記憶媒体１２０に対するＩ／Ｏ読出し／書込みとして、データ要求１１０が処理される。一般に、スケジューリングは、記憶媒体１２０に対する所望のスループットを維持している間に、１ラウンド当たり予め定められた数、部分集合、集合の要求１５０をサービスすることによってＩ／Ｏ要求の待ち時間を限定する多層アーキテクチャにおいて実現される。また、選択されたタスクにＩ／Ｏスケジューリングを割り振るために、カテゴライザ１３０および／またはスケジューラ１６０によって、決定された量のＩ／Ｏ帯域幅を動的に予約することができる。システム１００に示されているコンポーネントは、分離し、ローカルおよび／または遠隔コンピュータシステム上で通信することができること、および／または、本明細書に述べられている機能を実行するために様々な形態で組み合わせることができる（たとえば、スケジューリング機能を形成するために組み合わせられたプリカテゴライザとスケジューラ）ことに留意されたい。
【００１６】
次に図２を参照すると、本発明の一態様による多層スケジューリングシステム２００が示されている。システム２００についてアルゴリズムの点で述べることができるが、このシステムは、１つのコンポーネント、複数のコンポーネント、ハードウェア、ソフトウェア、および／またはそれらの組合せとして実施することができることを理解されたい。システム２００は、ユーザまたはアプリケーションからの複数のデータ要求２１０を処理する。これらの要求２１０は、１つの周期的キュー２２０（または複数のキュー）、および１つまたは複数の他のキュー２３０内で整理される。次いで、キュー２２０および２３０からの要求は、固定されたサイズを有する掃引キュー２４０内に転送されてから、ディスク２５０に書き込まれ、またはディスク２５０から読み出される。上記で指摘したように、本発明は、１組の要求の待ち時間を限定しつつ、許容できるスループットを維持するものである。したがって、システム２００は、これらの考慮すべき点を自動的に、かつ動的に釣り合わせるアルゴリズムとして提供することができる。
【００１７】
一般に、システム２００は、２つの別個のタイプのＩ／Ｏストリームを区別する。周期的Ｉ／Ｏストリームは、マルチメディアアプリケーション用に一定の間隔で到来するストリームである。したがって、周期的Ｉ／Ｏストリームは、システムリソースに対して検査することができる所定の性能パラメータと共に開かれる。システムの能力を超える周期的Ｉ／Ｏストリームを開こうとする場合、望むならその要求を打ち切ることができる。許可制御機構（図示せず）は、その周期的Ｉ／Ｏのそれぞれのパラメータを超えないことを強制する。他のＩ／Ｏストリームは、非周期的Ｉ／Ｏストリームと見なされる。周期的Ｉ／Ｏと異なり、非周期的Ｉ／Ｏの到着率は、時間の経過につれて急に変化する可能性がある。
【００１８】
さらに、非周期的Ｉ／Ｏは、様々なＩ／Ｏ優先順位クラスに分類することができる。これらの様々な優先順位は、コンピュータシステムなど、システム内の様々なコンポーネントの様々なＩ／Ｏニーズを表す。たとえば、オペレーティングシステムのメモリマネージャがページングされたメモリを使い果たしたとき、一般に、アプリケーションが確実に引き続き実行することができるように、可能な限り迅速にメモリを解放することが重要である。この状況では、メモリマネージャのＩ／Ｏ要求が、ユーザアプリケーションからのあまり重要でないＩ／Ｏ要求の後方で遮断されないことが望ましい。従来、バックグラウンドタスクは、しばしば、その機能を達成するためにＩ／Ｏを実行することを必要とする。これらのバックグラウンドタスクが大量のＩ／Ｏを生成する場合、より少ないＩ／Ｏを生成するフォアグラウンドタスクの性能に容易に影響を及ぼす可能性がある。一般に、システム２００は、最重要、高優先順位、対話型、通常、バックグラウンド、低優先順位、アイドルという７つの優先順位クラスをサポートする（７つより多い、または少ない優先順位クラスを使用することができる）。一般に、より高い優先順位クラスからのＩ／Ｏが、より低い優先順位クラスからのＩ／Ｏの前に処理されることが望ましい。
【００１９】
一般に、システム２００は、上述の目標を達成するために、（より多く、または少なくすることができる）４つの技法を適用する。たとえば、様々な要求キュー内で様々な種類の要求を保持する２レベルのキューイング機構を提供することができる。クラス特有の要求キュー２３０は、様々な要求クラスについてクラスレベルのスケジューリングを実行する。一実施形態において、たとえば、８つのクラス特有のキューを持たせることができる。周期的要求は、周期的キュー２２０内で保持され、一般にＥＤＦ順で維持される一方、非周期的要求は、一般にＦＩＦＯ順で維持される。これらの順序付けは、周期的要求が大量の非周期的要求の後方で詰まることを軽減し、また低優先順位要求の前に高優先順位要求をスケジューリングすることを可能にする。
【００２０】
掃引キュー２４０は、物理ディスク２５０に対してスケジューリングされることになる要求をキューに入れるために使用される。クラス特有のキューからの要求は、掃引キューが空になったとき掃引キューに移動される。掃引キュー内の要素は、論理ブロックアドレス（ＬＢＡ）順序付け（他の順序付けも可能）で順序付けられ、掃引キューは、要求をドライブ２５０に対してスケジューリングするときＣ−ＬＯＯＫアルゴリズム（または他の同様なタイプ）を実行する。さらに、システム２００は、掃引キュー全体をスケジューリングするのに必要とされる時間の長さを演繹的に計算するために、掃引キュー２４０のサイズを固定する。さらに、システム２００は、必要なときＩ／Ｏ帯域幅の可用性を支援するために、掃引キュー２４０内のエントリを予約することができる。
【００２１】
図３は、上述のコンポーネントおよびプロセスを実施するために使用することができるシステム４００を示す。Ｉ／Ｏディスクアクセスのための１つまたは複数の要求４０４が許可コントローラ４１０によって受信され、この要求は、一般に、コンピュータシステム上で実行可能なコンポーネントまたはアプリケーションから受け取られる。要求が周期的要求である場合、許可コントローラ４１０に関連付けられた期限コンポーネント４２０は、要求を完了すべき期限または時間枠を割り当てる。周期的でない要求など他の種類の要求は、許可コントローラ４１０から、クラス指定（ｃｌａｓｓ−ｓｐｅｃｉｆｉｅｒ）コンポーネントに関連付けられた非周期的キュー４４０に渡される。期限指定がタグ付けされた周期的要求は、クラス指定コンポーネント内の周期的キュー４３０内で処理される。クラス指定コンポーネントは、選択された要求クラスに関連付けられた所望のポリシーに基づいて、要求をソートする。上記で指摘したように、周期的キュー４３０は、ＥＤＦ順序付けに従って構成することができ、一方非周期的キュー４４０は、ＦＩＦＯ順序付けに従って構成することができる。現在の掃引ラウンドが完了したとき、掃引キュー（図示せず）は、キュー４３０および４４０から充填される。次いで、掃引キューは、Ｃ−ＬＯＯＫコンポーネント４５０を介して、Ｃ−ＬＯＯＫ順で１枚のディスク４６０（または複数のディスク）に対してスケジューリングされる。
【００２２】
図４および図５は、本発明の一態様によるディスクスケジューリングプロセスを示す図である。説明を簡単にするため、方法は一連の動作として示し、また記述するが、本発明によるいくつかの動作は、本明細書に示され、また述べられているものと異なる順序とすることもでき、または他の動作と同時に行うこともできることから、本発明は動作の順序によって制限されないことを理解されたい。たとえば、方法は、これに代えて状態図など一連の相互に関係のある状態または事象として表すことができることを、当業者なら理解できるであろう。さらに、本発明による方法を実施するのに図の動作すべてが必要とされるわけではない。
【００２３】
図４は、本発明によるディスクスケジューリングプロセスの特定の一実施形態のためのプロセス５００を示す。プロセス５１０に進むと、許可コントローラは、コンピュータシステムの上位レベルからの１つの要求（または複数の要求）を受信／処理する。要求が周期的要求である場合、許可コントローラは、そのＩ／Ｏ要求について期限を設け、そうでない場合には、許可コントローラからクラス特有のキューに要求が無修正で渡される。プロセス５２０で、許可コントローラからの要求が、適正なクラス特有のキューに配置される。クラス特有のキューは、要求のそのクラスにとって望ましい、または適切なポリシーに基づいて要求をソートし、周期的要求は、ＥＤＦ順序付けでソートされ、非周期的要求は、ＦＩＦＯ順序付けでソートされる。プロセス５３０で、現在の掃引ラウンドが完了したとき、掃引キューは、クラス特有のキューからの要求で充填される。プロセス５４０で、掃引キューは、たとえば、Ｃ−ＬＯＯＫ順でディスクに対してスケジューリングされる。以下は、本明細書に述べられているシステムおよび方法と共に使用することができる、本発明によるアルゴリズムの擬似コード例である。
【００２４】
（例）
while 周期的キュー≠0 and 周期的スロット≠0 and
DEADLINE(周期的キュー)<ROUND_TIME do
INSERT_LBA_ORDER(掃引キュー,REMOVE_EDF_ORDER(周期的キュー))
周期的スロット=周期的スロット-1
end
for 優先順位=High downto Idle do
while 優先順位リスト[優先順位].スロット≠0
INSERT_LBA_ORDER(掃引キュー,
REMOVE_FIFO_ORDER(優先順位キュー[優先順位]))
優先順位リスト[優先順位].スロット=優先順位リスト[優先順位].スロット-1
end
end
while 掃引キュー≠0 do
SCHEDULE(REMOVE_MINMUM_LBA(掃引キュー))
end
【００２５】
上記のアルゴリズムは、指定された数の要求を完了するため、待ち時間に対して明確な上限を有することに留意されたい。ｎが整数であるｎ個の要求の場合、待ち時間に対する上限は、以下の通りである。
【００２６】
【数１】
2005071353.tif 000003
【００２７】
したがって、上記のアルゴリズムでは、最大Ｉ／Ｏサービス時間が、掃引深度（ｓｗｅｅｐ−ｄｅｐｔｈ）変数（ｎ）によってパラメータ化される。特定のディスクドライブについて掃引深度とパラメータ群が与えられた場合、所与の掃引深度について最悪の場合の待ち時間値を計算することができる。
【００２８】
本発明に従って使用することができるいくつかのコンポーネントについて述べる際に、Ｃ−ＬＯＯＫそれ自体は、一般に、いずれの待ち時間も保証することなく、要求すべてを等しく扱うことに留意されたい。しかし、Ｃ−ＬＯＯＫは、ディスクスループットが最大化される点でディスクの最適なスケジューリングを実現する。ＥＤＦアルゴリズムは、最も早い期限を有する要求を最初に処理することができるが、長いシーク遅延を受ける可能性がある。ＥＤＦ走査は、概してこの２者間の兼ね合いである。したがって、各々のＩ／Ｏが、走査に陥るゼロの期限と共に送られる可能性があるため、ＥＤＦ走査において保証することは困難である。本発明および関連アルゴリズムでは、最悪の場合の待ち時間を保証すること、より厳しい許可制御を提供すること、および限定された待ち時間を保証することと、ローカルで最適化されたディスクのスケジューリングおよび一定のＩ／Ｏのための優先順位方式との兼ね合いをはかって動作が行なわれる。
【００２９】
図５は、本発明の一態様によるディスクスケジューリング方法のためのプロセス６００を示す。プロセス６１０に進むと、Ｉ／Ｏ要求のための待ち時間要件（たとえば、アプリケーションが適切に機能するための最悪の場合のスケジューリング時間は何か）が決定される。プロセス６２０で、プロセス６１０で決定された待ち時間要件に基づいてラウンドサイズが調整される。プロセス６４０で、決定された待ち時間要件に基づいて、要求が１ラウンド内で順序付けられる。プロセス６５０で、プロセス６１０およびプロセス６２０での決定に基づいて固定されたサイズを有する１ラウンドに従ってディスクが更新される。プロセス６６０で、そのラウンドのサイズを変える、または交換するかどうかについて決定がなされる（たとえば、変更されたシステム環境に基づいて動的な処理がなされる）。変えない場合、プロセスはプロセス６２０に戻り、Ｉ／Ｏ要求の後続のラウンドを処理する。プロセス６６０でラウンドサイズを調整しようとする場合、プロセスはプロセス６１０に戻り、待ち時間要件が決定され、次いで、プロセス６２０でラウンドサイズが調整される。
【００３０】
図６を参照すると、本発明の様々な態様を実施するための例示的な環境は、コンピュータ７１２を備える。コンピュータ７１２は、処理装置７１４、システムメモリ７１６、システムバス７１８を備える。システムバス７１８は、それだけには限らないが、システムメモリ７１６を含むシステムコンポーネントを処理装置７１４に結合する。処理装置７１４は、様々な使用可能なプロセッサのいずれかとすることができる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャもまた、処理装置７１４として使用することができる。
【００３１】
システムバス７１８は、メモリバスもしくはメモリコントローラ、周辺機器バスもしくは外部バス、および／または任意の様々な使用可能なバスアーキテクチャを使用するローカルバスを含め、いくつかの種類のバス構造のいずれかとすることができる。バスアーキテクチャには、それだけには限らないが、１６ビットバス、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｃｓ）、ＶＥＳＡローカルバス（ＶＬＢ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ユニバーサルシリアルバス（ＵＳＢ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）バス、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）が含まれる。
【００３２】
システムメモリ７１６には、揮発性メモリ７２０および不揮発性メモリ７２２がある。起動中などにコンピュータ７１２内の要素間で情報を転送する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ７２２内に記憶されている。限定ではなく例を挙げると、不揮発性メモリ７２２には、読出し専用メモリ（ＲＯＭ）、プログラム可能なＲＯＭ（ＰＲＯＭ）、電気的プログラム可能なＲＯＭ（ＥＰＲＯＭ）、電気的消去可能なＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリが含まれる。揮発性メモリ７２０には、外部キャッシュメモリとして動作するランダムアクセスメモリ（ＲＡＭ）が含まれる。限定ではなく例を挙げると、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、ＥＳＤＲＡＭ（ｅｎｈａｎｃｅｄ  ＳＤＲＡＭ）、ＳＬＤＲＡＭ（Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ）、ダイレクトラムバスＲＡＭ（ＤＲＲＡＭ）など、多数の形態で使用可能である。
【００３３】
コンピュータ７１２はまた、取外し式／固定式、揮発性／不揮発性コンピュータ記憶媒体を含む。図６は、たとえば、ディスク記憶装置７２４を示す。ディスク記憶装置７２４には、それだけには限らないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、メモリースティックのようなデバイスが含まれる。さらに、ディスク記憶装置７２４には、それだけには限らないが、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、記録可能なＣＤドライブ（ＣＤ−Ｒドライブ）、再書込み可能なＣＤドライブ（ＣＤ−ＲＷドライブ）、またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）など光ディスクドライブを含めて、記憶媒体が別個に、または他の記憶媒体との組合せで含まれる可能性がある。ディスク記憶装置７２４のシステムバス７１８に対する接続を容易にするために、インターフェース７２６など取外し式または固定式インターフェースが一般に使用される。
【００３４】
図６は、ユーザと、好適な動作環境に述べられている基本的なコンピュータ資源との間の媒介物として動作するソフトウェアについて説明していることを理解されたい。そのようなソフトウェアには、オペレーティングシステム７２８が含まれる。オペレーティングシステム７２８は、ディスク記憶装置７２４に記憶することができ、コンピュータシステム７１２の資源を制御し、割り振るように動作する。システムアプリケーション７３０は、システムメモリ７１６内またはディスク記憶装置７２４に記憶されたプログラムモジュール７３２およびプログラムデータ７３４を介して、オペレーティングシステム７２８による資源の管理を利用する。本発明は様々なオペレーティングシステムまたはオペレーティングシステムの組合せと共に実施することができることを理解されたい。
【００３５】
ユーザは、入力デバイス７３６を介してコンピュータ７１２にコマンドまたは情報を入力する。入力デバイス７３６には、それだけには限らないが、マウスなどポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、ＴＶ同調器カード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどが含まれる。これら、および他の入力デバイスは、インターフェースポート７３８を介して、システムバス７１８を通じて処理装置７１４に接続する。インターフェースポート７３８には、たとえば、シリアルポート、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）が含まれる。出力デバイス７４０は、入力デバイス７３６と同じタイプのポートのいくつかを使用する。したがって、たとえばＵＳＢポートは、コンピュータ７１２に入力を提供するために、また、コンピュータ７１２から出力デバイス７４０に情報を出力するために使用することができる。出力アダプタ７４２は、出力デバイス７４０の中でも、特別なアダプタを必要とするモニタ、スピーカ、プリンタのようないくつかの出力デバイス７４０があることを示すために提供されている。限定ではなく例を挙げると、出力アダプタ７４２には、出力デバイス７４０とシステムバス７１８の間で接続手段を提供するビデオカードおよびサウンドカードが含まれる。他のデバイスおよび／またはデバイスのシステムは、遠隔コンピュータ７４４など、入力機能と出力機能を共に提供することに留意されたい。
【００３６】
コンピュータ７１２は、遠隔コンピュータ７４４など、１つまたは複数の遠隔コンピュータに対する論理接続を使用してネットワーク環境内で動作することができる。遠隔コンピュータ７４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサをベースとする家電、ピアデバイスまたは他の共通ネットワークノードなどとすることができ、一般に、コンピュータ７１２に関して上述した要素の多数または全部を含む。簡潔にするために、メモリ記憶装置７４６だけが遠隔コンピュータ７４４と共に示されている。遠隔コンピュータ７４４は、ネットワークインターフェース７４８を介してコンピュータ７１２に論理的に接続され、次いで、通信接続７５０を介して物理的に接続される。ネットワークインターフェース７４８は、ローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）など、通信ネットワークを含む。ＬＡＮ技術には、光ファイバ分散データインターフェース（ＦＤＤＩ）、銅分散データインターフェース（ＣＤＤＩ）、イーサネット（登録商標）／ＩＥＥＥ１１０２．３、トークンリング／ＩＥＥＥ１１０２．５などが含まれる。ＷＡＮ技術には、それだけには限らないが、ポイント・トゥ・ポイント・リンク、総合デジタル通信網（ＩＳＤＮ）のような回路交換ネットワークとその変形形態、パケット交換ネットワーク、およびデジタル加入者回線（ＤＳＬ）が含まれる。
【００３７】
通信ネットワーク７５０は、ネットワークインターフェース７４８をバス７１８に接続するために使用されるハードウェア／ソフトウェアを指す。通信接続７５０は、図が見やすいようにコンピュータ７１２の内側で示されているが、コンピュータ７１２の外側とすることもできる。例示する目的にすぎないが、ネットワークインターフェース７４８に対する接続に必要なハードウェア／ソフトウェアには、通常の電話級モデム、ケーブルモデムおよびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、ならびにイーサネット（登録商標）カードなど、内部技術および外部技術が含まれる。
【００３８】
図７は、本発明が相互作用することができるコンピューティング環境例８００の概略ブロック図である。システム８００は、１つまたは複数のクライアント８１０を含む。クライアント８１０は、ハードウェアおよび／またはソフトウェアとすることができる（たとえば、スレッド、プロセス、コンピューティングデバイス）。また、システム８００は、１つまたは複数のサーバ８３０を含む。サーバ８３０は、ハードウェアおよび／またはソフトウェアとすることができる（たとえば、スレッド、プロセス、コンピューティングデバイス）。サーバ８３０は、たとえば、本発明を使用することによって変換を実行するためのスレッドを収容することができる。クライアント８１０とサーバ８３０の間の１つの可能な通信は、２つ以上のコンピュータプロセス間で伝送されるように適合されたデータパケットの形態にあるものとすることができる。システム８００は、クライアント８１０とサーバ８３０の間の通信を容易にするために使用することができる通信フレームワーク８５０を含む。クライアント８１０は、クライアント８１０にとってローカルで情報を記憶するために使用することができる１つまたは複数のクライアントデータストア８６０に動作可能に接続される。同様に、サーバ８３０は、サーバ８３０にとってローカルで情報を記憶するために使用することができる１つまたは複数のサーバデータストア８４０に動作可能に接続される。
【００３９】
上述したものには、本発明の諸例が含まれる。当然ながら、本発明について述べるためにコンポーネントまたは方法の考えられるあらゆる組合せについて述べることは不可能であり、本発明の多数の他の組合せおよび変形が可能であることを、当業者なら理解することができる。したがって、本発明は、特許請求の範囲の精神および範囲内に入るそのような変更、修正、および変形形態をすべて包含するものとする。さらに「ｉｎｃｌｕｄｅｓ（含む）」という用語が詳細な説明または特許請求の範囲で使用されている限り、そのような用語は、「ｃｏｍｐｒｉｓｉｎｇ（含む、備える）」が特許請求の範囲内で転換句として使用されたとき解釈されるように「ｃｏｍｐｒｉｓｉｎｇ」という用語と同様に包括的であるものとする。
【図面の簡単な説明】
【００４０】
【図１】本発明の一態様によるスケジューリングシステムの概略ブロック図である。
【図２】本発明の一態様による多層スケジューリングシステムの図である。
【図３】本発明の一態様によるディスクスケジューリングシステムを示す概略ブロック図である。
【図４】本発明の一態様によるディスクスケジューリングプロセスを示す流れ図である。
【図５】本発明の一態様によるディスクスケジューリングプロセスを示す流れ図である。
【図６】本発明の一態様による好適な動作環境を示す概略ブロック図である。
【図７】本発明が対話することができるコンピューティング環境例の概略ブロック図である。
【符号の説明】
【００４１】
１００  スケジューリングシステム
１１０  要求
１２０  記憶媒体
１３０  カテゴライザ
１４０  キューのクラス
１５０  ラウンド
１６０  スケジューラ
１７０  固定されたサイズのキュー
２００  多層スケジューリングシステム
２１０  ユーザからの要求
２２０  周期的キュー（ＥＤＦ）
２３０  他のキュー
２４０  掃引キュー
２５０  ドライブ
４００  システム
４０４  要求
４１０  管理コントローラ
４２０  期限コンポーネント
４３０  周期的キュー
４４０  非周期的キュー
４５０  Ｃ−ＬＯＯＫ
４６０  ディスク
７１２  コンピュータ
７１４  処理装置
７１６  システムメモリ
７２０  揮発性
７２２  不揮発性
７２４  ディスク記憶装置
７２６  インターフェース
７２８  オペレーティングシステム
７３０  アプリケーション
７３２  モジュール
７３４  データ
７３６  入力デバイス
７３８  インターフェースポート
７４０  出力デバイス
７４２  出力アダプタ
７４４  リモートコンピュータ
７４６  メモリ記憶装置
７４８  ネットワークインターフェース
７５０  通信接続
８００  コンピューティング環境
８１０  クライアント
８３０  サーバ
８４０  サーバデータストア
８５０  通信フレームワーク
８６０  クライアントデータストア
【図１】
2005071353.tif 000005
【図２】
2005071353.tif 000006
【図３】
2005071353.tif 000007
【図４】
2005071353.tif 000008
【図５】
2005071353.tif 000009
【図６】
2005071353.tif 000010
【図７】
2005071353.tif 000011
【外国語明細書】
2005071353000001.pdf