(57)【要約】【課題】高優先順位リクエストの実行の遅延を低減しつつパフォーマンスを向上できるスケジューリング装置の提供【解決手段】  ソースデバイス１１０に対するリクエストをスケジューリングする装置１０は、ソースデバイス１１０に対する複数の高優先順位リクエストを格納するための高優先順位リクエストキュー１２と、ソースデバイス１１０に対する低優先順位リクエストを格納するための低優先順位リクエストキュー１４と、を有する。高優先順位リクエストのうちひとつの優先順位は低優先順位リクエストの優先順位よりも高い。更に装置１０は、二つの隣り合う前記高優先順位リクエスト間の要求インターバルの一つに少なくとも関連する情報を格納するための履歴カウンタと１６と、この情報に基づいて前記高優先順位リクエストと前記低優先順位リクエストとをスケジューリングするスケジューリングモジュール１８と、を有する。  【選択図】  図１
2006202244.tif 000002
【特許請求の範囲】
【請求項１】
ソースデバイスに対するリクエストをスケジューリングする装置であって、
前記ソースデバイスに対する複数の高優先順位リクエストを格納する高優先順位リクエストキューと、
前記ソースデバイスに対する低優先順位リクエストを格納し、前記高優先順位リクエストのうちひとつの優先順位が該低優先順位リクエストの優先順位よりも高い低優先順位リクエストキューと、
二つの隣り合う前記高優先順位リクエスト間の少なくとも一つの要求インターバルに関連する情報を格納するための履歴カウンタと、
前記情報に基づいて前記高優先順位リクエストと前記低優先順位リクエストとをスケジューリングするスケジューリングモジュールと、
を有することを特徴とする装置。
【請求項２】
前記ソースデバイスが、ダイナミックランダムアクセスメモリを有する請求項１に記載の装置。
【請求項３】
前記情報が前記低優先順位リクエストの第一の部分を実行するために十分な時間があると指示したときに、前記低優先順位リクエストを前記第一の部分と少なくとも一つの他の部分とに分割し、前記優先順位リクエストの前記第一の部分に前記ソースデバイスに対する要求を許可する請求項１又は２に記載の装置。
【請求項４】
前記履歴カウンタが、複数の要求インターバルの平均値を更に前記情報として供給する請求項１乃至３のいずれか１項に記載の装置。
【請求項５】
前記平均値を、前記複数の要求インターバルのそれぞれに重み付けを行い、該重み付けされた要求インターバルを共に合算して取得する請求項４に記載の装置。
【請求項６】
ソースデバイスに対するリクエストをスケジューリングするためのスケジューリング方法であって、
複数の高優先順位リクエストと該複数の高優先順位リクエストのそれぞれの優先順位が低優先順位リクエストの優先順位より高いという関係を有する低優先順位リクエストとを受け取り、
二つの隣り合う前記高優先順位リクエスト間の少なくとも一つの要求インターバルに関連する情報を格納し、
前記高優先順位リクエストと前記低優先順位リクエストとを前記情報に基づいてスケジューリングすることを特徴とするスケジューリング方法。
【請求項７】
前記情報が前記低優先順位リクエストの第一の部分の実行に十分な時間があると指示したときに、前記優先順位リクエストを前記第一の部分と少なくとも一つの他の部分とに分割し、前記優先順位リクエストの前記第一の部分に前記ソースデバイスに対する要求を許可する請求項６に記載のスケジューリング方法。
【請求項８】
前記情報が、複数の要求インターバルの平均値を有する請求項６又は７に記載のスケジューリング方法。
【請求項９】
前記平均値を、前記複数の要求インターバルのそれぞれに重み付けをすることと該重み付けされた要求インターバルを共に合算することとによって取得する請求項８に記載のスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソースデバイスに対するリクエストをスケジューリングする装置及び方法に関する。特に、本発明はソースデバイスに対するリクエストを、要求された履歴に基づきスケジューリングする装置及び方法に関する。
【背景技術】
【０００２】
ひとつのチップ上に構築されるシステムでは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）サブシステムにアクセスする複数の独立したイニシエータ（例えばマイクロプロセッサ、シグナルプロセッサなど）が存在することは稀である。このようなシステムは、各イニシエータに対して提供される複数の異なるサービスの品質（qualities of service: QOS）を必要とすることがある。第二に、イニシエータに提供されるメモリオーダリングモデルが重要である。理想的には、イニシエータは、可能な限り強く順序付けされたメモリモデルを望むものである。その一方で、DRAMサブシステムに与えるDRAMリクエストの順序はDRAM性能に劇的な影響を与える可能性がある。それにも関わらず、スレッドQOSに対するリクエストの再度の順序付け又はDRAM能力の理由によって、強く順序付けされたメモリモデルが損なわれる可能性がある。強く順序付けられたメモリモデルを提供でき、異なるイニシエータに異なるサービスの品質を与えることができ、且つDRAM能力を可能な限り高く保つことができる、統合されたDRAMスケジューリング機構が望まれている。
【０００３】
それぞれ異なるイニシエータから流れ出るリクエストは、スレッドとして表現される。もしDRAMスケジューラが同じスレッドからのリクエストを再度順序付けしなければ、スレッド内のリクエストの順序は維持され、そして総てのDRAMリクエストの順序は単に連続して起こるスレッド毎のリクエストの流れのインターリーブとなる。実在するシステムは、（もし何れかが終了していれば）DRAM能率向上スケジューリングを生じるポイントとは異なるシステム内の別のポイントでリクエストを順序付けし、且つ／又はこのシステムは処理中のスレッド内部のリクエストを再度順序付けする。例えば、リクエストは、イニシエータから標準的なコンピュータバスを介してDRAMコントローラに送られることがある。（スレッド間、およびスレッド内部の）リクエストの順序はコンピュータバスにアクセスしたときに確立され、そしてこのリクエストの順序はDRAMコントローラによる変更が許容されていない。他の一例として、高いDRAM能率およびQOS保証を達成するためのDRAMスケジューラが米国特許公報によって提供されている（例えば、特許文献１参照。）。この特許では、スレッドサービス品質スケジューラは、スレッドスケジューリングの履歴を記憶しておくため且つ次に何れのスレッドが実行されるべきかの決定に役立てるため、スレッドの状態を保持し且つ使用する。例えば、このスケジューラは、DRAMページのヒットを取得する可能性を増やすため、同じDRAMページにアクセスするリクエストを互いに近くなるようにスケジューリングすることを試みることがある。
【０００４】
更に進んだアプリケーションでは、リクエストを格納するためにキューが用いられ、そして各キューは他のキューと異なる優先順位、すなわち高優先順位キュー内のリクエストがまず最初に実行されそして低優先順位キュー内のリクエストはより高い優先順位を備える総てのリクエストが終了するまで実行され得ない優先順位が割り当てられる。この優先順位に基づくスケジューリングは広く採用されているが、これは、より重要なリクエストが最初に処理され且つ通常のスケジューリング方法と比べより良い性能（パフォーマンス）を実現できることがあるからである。
【０００５】
しかしながら、この優先順位に基づくスケジューリングは依然としていくつかの欠点を有している。その欠点の一つは、低優先順位リクエストが高優先順位リクエストをブロックしてしまうことがあることである。多数のイニシエータが無作為にリクエストを提出するため総ての高優先順位リクエストが完了することがあり、この結果低優先順位リクエストの実行が開始される。しかしながら、低優先順位リクエストが実行されている最中にいったん新しい高優先順位リクエストが到着しても、その高優先順位リクエストは実行されている低優先順位リクエストが終了するまで待機しなければならない。このような状況では、高優先順位リクエストは遅延しパフォーマンスは低下する。
【特許文献１】米国特許第６５７８１１７号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題の一つは、高優先順位リクエストが低優先順位リクエストによってブロックされてしまう可能性を低減することである。
【課題を解決するための手段】
【０００７】
一つの特徴として、本発明は、ソースデバイスに対するリクエストをスケジューリングする装置を提供する。この装置は、前記ソースデバイスに対する複数の高優先順位リクエストを格納する高優先順位リクエストキューと、前記ソースデバイスに対する低優先順位リクエストを格納し、前記高優先順位リクエストのうちひとつの優先順位が該低優先順位リクエストの優先順位よりも高い低優先順位リクエストを格納する低優先順位リクエストキューと、二つの隣接する高優先順位リクエスト間の少なくとも一つの要求インターバル（requesting interval：要求の時間間隔）に関連する情報を格納する履歴カウンタと、前記情報に基づいて前記高優先順位リクエストと前記低優先順位リクエストとをスケジューリングするスケジューリングモジュールと、を有する。
【０００８】
他の一つの特徴として、本発明はソースデバイスに対するリクエストをスケジューリングするためのスケジューリング方法を提供し、そしてこのスケジューリング方法は、複数の高優先順位リクエストと該複数の高優先順位リクエストのそれぞれの優先順位が低優先順位リクエストの優先順位より高いという関係を有する低優先順位リクエストとを受け取り、二つの隣り合う前記高優先順位リクエスト間の少なくとも一つの要求インターバルに関連する情報を格納し、前記高優先順位リクエストと前記低優先順位リクエストとを前記情報に基づいてスケジューリングすることを含んでいる。
【０００９】
本発明のひとつの実施形態では、前記情報が前記低優先順位リクエストの第一の部分を実行するために十分な時間があると意味するときに、前記低優先順位リクエストを前記第一の部分と少なくとも一つの他の部分とに分割し、そして前記優先順位リクエストの前記第一の部分に前記ソースデバイスに対する要求を許可する。
【００１０】
本発明のひとつの実施形態では、前記情報が複数の要求インターバルの平均値を有し、そしてこの平均値は前記複数の要求インターバルのそれぞれに重み付けをすることと該重み付けされた要求インターバルを共に合算することとによって取得される。
【発明の効果】
【００１１】
本発明の一つの効果は、高優先順位キュー内で生じた要求インターバルを加味し高優先順位リクエストの要求インターバルの間で低優先順位リクエストを許可するため、高優先順位リクエストが低優先順位リクエストによってブロックされてしまう可能性を低減することができることである。
【発明を実施するための最良の形態】
【００１２】
上述の総論及び後述の詳細な説明は模範的なものであり、これらは特許請求の範囲に記載された発明に関し更なる説明を提供することを目的としている。
【実施例】
【００１３】
これより本発明の実施形態に関し詳細に言及し、これらの実施例を添付図面に図示する。同様の又は類似の部位に言及するため、可能な限り図面及び発明の詳細な説明において同じ符号を用いる。
【００１４】
図１を参照すると、本発明の一実施形態に係る装置のブロック線図が示されている。この実施形態では、装置１０は、高優先順位キュー１２と低優先順位キュー１４と履歴カウンタ１６とスケジューリングモジュール１８とを有している。エージェント１００−１０６は、装置１０にリクエストを発行することによりソースデバイス１１０（例えばダイナミックランダムアクセスメモリなど）のリソースを共有する。装置１０はリクエストを受け取り、これらのエージェント１００−１０６をソースデバイスにアクセスさせるため受け取ったリクエストをスケジューリングする。
【００１５】
本実施形態では、エージェント１００及び１０２から発行されたリクエストは高優先順位キュー１２内に集められ、エージェント１０４及び１０６から発行されたリクエストは低優先順位キュー１４内に集められる。高優先順位キュー１２内のリクエストは、低優先順位キュー１４内のリクエストよりも高い優先順位を有する。更に、低優先順位キュー１４内のリクエストは、高優先順位キュー１２が空になるまで許可を得ることができない。ゆえに、エージェント１０４及び１０６は、ソースデバイス１１０へアクセスする際により低い優先順位を有している。ソースデバイス１１０がエージェント１０４又は１０６のリクエストによってアクセスされる期間の長さ（以下、「期間長さ」と言う）は適当に決定されるべきである。不適当な期間長さは、高優先順位エージェントのリクエストの予期しない停滞又は低優先順位エージェントの非効率なデータアクセスを引き起こす。
【００１６】
適当な期間長さを決定するために、履歴カウンタ１６は、二つの隣接した高優先順位リクエスト（例えば、高優先順位キュー１２内に収集されたリクエスト）間のひとつの要求インターバルに関する情報を格納する。より詳しくは、履歴カウンタ１６は、前回の高優先順位リクエストが到着してからいくつのクロックが経過したかを数える。履歴カウンタ１６は、数えた結果を要求インターバルとして格納し、そして新しい高優先順位リクエストが到着した時は別の計数を開始する。
【００１７】
しかしながら、履歴カウンタ１６は、要求インターバル以外の情報を更に格納してもよい。例えば、複数の要求インターバル、又は複数の要求インターバルの平均値を情報として格納しても良い。更に、この要求インターバルに重み付けを適用することができ、そして要求インターバルの平均値を取得するためこの重み付けされた要求インターバルを共に加算することができる。本発明では、前記情報に含まれているデータを使用可能な時間として参照することができる。
【００１８】
スケジューリングモジュール１８は、履歴カウンタ１６に格納された情報に基づいて高優先順位リクエスト及び低優先順位リクエストのスケジューリングを行う。スケジューリングモジュール１８は、まず初めに高優先順位キュー１２内のリクエストの実行を許可する。高優先順位キューが空になった後、スケジューリングモジュール１８は低優先順位キュー１４内のスケジューリングを開始する。
【００１９】
特に、履歴カウンタ１６内に格納された情報がある一つの低優先順位リクエストの実行に十分な時間があると指示したときは、その低優先順位リクエストは許可される。しかしながら、もし前記情報がある一つの低優先順位リクエスト全体の実行に十分な時間がないと指示した場合は、スケジューリングモジュール１８はその低優先順位リクエストの第一の部分が許可されるべきか否かを判定する。もし低優先順位リクエストの第一の部分の実行に十分な時間がある場合には、その低優先順位リクエストを前記第一の部分と少なくともひとつの他の部分とに分割し、そしてこの低優先順位リクエストの第一の部分にソースデバイス１０へ要求することを許可する。
【００２０】
図２を参照すると、本発明の一実施形態に係るスケジューリング方法のフローチャートが示されている。このスケジューリング方法は、ソースデバイスに対するリクエストのスケジューリングに用いることができる。第一に、高優先順位リクエスト及び／又は低優先順位リクエストを含むいくつかのリクエストを受け取る（ステップS200）。その後に、前述したような二つの隣接した高優先順位リクエスト間の要求インターバルに関する情報を格納し（ステップS202）、そして受け取ったリクエストをこの情報に基づきスケジューリングする（ステップS204）。
【００２１】
より詳細なスケジューリングプロセスのため、本発明の一実施形態に係る図２のステップS204における詳細な流れのフローチャートを示す図３を参照する。
【００２２】
本実施形態では、高優先順位リクエストを格納する高優先順位キューが空となっているか最初に判定する（ステップS300）。高優先順位キューが空でないときは、適当な順序で高優先順位リクエストを許可する（ステップS302）。しかしながら、もし高優先順位キューが空であれば、上述の情報を取得し（ステップS304）、そしてその結果低優先順位リクエストのスケジューリングを開始する。
【００２３】
上述の情報を取得した後、この情報が保持している使用可能な時間が低優先順位リクエストの実行に十分に長いか判定するためこの情報をチェックする（ステップS306）。この使用可能な時間がもし低優先順位リクエスト全体の実行に十分に長いものであれば、その低優先順位リクエストを許可する（ステップS308）。
【００２４】
しかしながら、この使用可能な時間がもし低優先順位リクエスト全体の実行に十分に長いものでなければ、その低優先順位リクエストを複数の部分に分割するか判定する。例えばステップS310に示されるように、低優先順位リクエストをチェックして、使用可能な時間内に終了可能な低優先順位リクエストの第一の部分を決定する。もし前記使用可能な時間が前記低優先順位リクエストのいずれの部分の実行も完了できない場合は、このフローをステップS300に戻す。しかしながら、もし前記使用可能な時間が低優先順位リクエストの第一の部分の実行に十分に長いものであれば、この低優先順位リクエストを二つの部分に分割し、これらの部分のひとつが第一の部分となる（ステップS312）。低優先順位リクエストを分割した後、低優先順位リクエストの第一の部分にソースデバイスへのアクセスを許可し、そして低優先順位リクエストの他の部分を低優先順位キュー内で次の許可を待ち続けさせる。
【００２５】
従って、本発明によれば、低優先順位エージェントがソースデバイスにアクセスする適当な時間の長さを、最後の高優先順位リクエストと来つつある高優先順位リクエストとの間の要求インターバルの推定によって決定できる。これによって低優先順位エージェントのデータアクセス効率を最適化でき、そして高優先順位リクエストの停滞を最小限にすることができる。
【００２６】
本発明の範囲又は思想を逸脱せずに発明の構成に様々な修正や変更を加えることが可能なことは本分野の当業者にとって明らかである。前述の記載を考慮すると、本願の特許請求の範囲又はその均等の範囲に含まれる場合には本発明はその修正及び変更したものを包含することを意図していることがわかる。
【００２７】
添付図面は、発明をより深く理解するために提供され、そして本明細書に組み入れられて明細書の一部を構成する。図面は発明の実施形態を図示し、その記述と共に発明の原理を説明する役目をする。
【図面の簡単な説明】
【００２８】
【図１】本発明のひとつの実施形態に係る装置を示すブロック図である。
【図２】スケジューリング方法を示すブロック図である。
【図３】本発明のひとつの実施形態に係る図２のステップS204における詳しいフローを示すフローチャートである。
【符号の説明】
【００２９】
１０  装置
１２  高優先順位キュー
１４  低優先順位キュー
１６  履歴カウンタ
１８  スケジューリングモジュール
１１０  ソースデバイス
【図１】
2006202244.tif 000003
【図２】
2006202244.tif 000004
【図３】
2006202244.tif 000005