JP2011044165A - システムにおける要求のスケジューリング - Google Patents

システムにおける要求のスケジューリング Download PDF

Info

Publication number
JP2011044165A
JP2011044165A JP2010224970A JP2010224970A JP2011044165A JP 2011044165 A JP2011044165 A JP 2011044165A JP 2010224970 A JP2010224970 A JP 2010224970A JP 2010224970 A JP2010224970 A JP 2010224970A JP 2011044165 A JP2011044165 A JP 2011044165A
Authority
JP
Japan
Prior art keywords
request
resource
execution
scheduler
resources
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010224970A
Other languages
English (en)
Inventor
Siamack Haghighi
ハギギ,シアマック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2011044165A publication Critical patent/JP2011044165A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

【課題】実行エンティティからの要求が、帯域幅要求及び呼び出し時間要求に従ってサービスされることをより良く保証する。
【解決手段】システムは、リソースと、このリソースに要求を出すように構成された実行エンティティと、各実行エンティティに対するスロット割当てを含むテーブル或いはテーブルセグメントとを含んでいる。スケジューラコントローラ314は、テーブル或いはテーブルセグメントにアクセスし、スロット割当てに従って実行エンティティからの要求を処理するように構成され、スケジューラ232は、スロット割当てを更新する。さらに、オペレーティングシステム220は、実行エンティティと交渉し、リソース使用要求を決定したり、テーブル或いはテーブルセグメントは、リソース使用要求に基づいて更新してもよい。
【選択図】図2A

Description

背景
本発明は、システムにおける要求(リクエスト)の決定論的なスケジューリングに関す
るものである。
システム(例えば、コンピュータ)のソフトウェアレイヤは、一般的には、オペレーテ
ィングシステム及びアプリケーションプログラムを含んでいる。アプリケーションプログ
ラムが実行される場合、1つ或いはそれ以上のプロセス、或いは、ワーク又は実行エンテ
ィティの他の基本ユニットが構築されてもよい。マイクロソフト社からのウィンドウズ(
登録商標)95或いはウィンドウズ(登録商標)NTオペレーティングシステムのような
所定のオペレーティングシステムの場合には、各プロセスは、割当てられた機能を実行す
るためにプロセスのアドレス空間に含まれたコードを実行するワークの1つ或いはそれ以
上のユニット(スレッドと呼ばれる)を含んでいてもよい。親プロセスに属するスレッド
は、異なる機能を実行するように割当てられてもよい。例えば、スプレッドシートプロセ
スの場合、スレッドは、ユーザ入力を計算し、印刷し、受信し、ヘルプ機能等を行うよう
に構築されてもよい。他のオペレーティングシステムの場合、タスク或いはプロセスは、
中央処理装置(CPU)によって実行するためにスケジューリングされるワーク或いは実
行エンティティの基本ユニットを構成してもよい。
オペレーティングシステムは、複数のアクティブスレッド或いはプロセスを管理するス
ケジューラを含んでもよい。異なる形式のオペレーティングシステムは、異なるスケジュ
ーリング方式を有してもよい。例えば、いくつかのウィンドウズ(登録商標)オペレーテ
ィングシステムの場合、タイムスロットは、対応するスレッドが実行することができるラ
ウンドロビン方式でアクティブスレッドに割当てられる。さらに、いくつかのウィンドウ
ズ(登録商標)オペレーティングシステムの場合、優先順位クラスは、スレッドに割当て
られてもよい。最高優先順位クラスのスレッドは、それらに割当てられたタイムスライス
(より低い優先順位クラスのスレッドが後に続く)において最初に実行される。従って、
いかなる特定の優先順位クラスにおいて、スケジューリングは、ラウンドロビン方法で実
行されてもよい。1つ或いはそれ以上の事象が生じるまで、スレッドは実行し続ける。タ
イムスライスは、終了するか、或いは、スレッドは、実行する用意ができているより高い
優先順位の他のスレッドによって取って代わられる。
異なるプロセス、スレッド、或いはワークの他のユニットは、システムリソースを異な
って使用してもよい。例えば、ビデオ再生及びデコードプロセスでは、データは、コンパ
クトディスク(CD)或いはディジタルビデオディスク(DVD)ドライブからシステム
メモリに転送され、CPUとシステムメモリとの間で転送され、モニタ上のグラフィック
スカードによって表示するためにシステムメモリからビデオメモリへ転送されてよい。一
般に、CD或いはDVDドライブからシステムメモリに転送されるデータは、CPUとシ
ステムメモリとの間のデータの転送よりも遅くてもよい、グラフィックスカードとシステ
ムメモリとの間に転送されるデータよりも遅い。このように、システムリソース(例えば
、システムメモリ、バス、及び他の装置を含む)は、ワーク或いは実行エンティティの異
なるユニットの要求に応じて異なって使用されてもよい。
従来のオペレーティングシステムは、一般的には異なるプロセス、スレッド或いはワー
クの他のユニットの異なるリソース要求を効率的に明らかにしない。このような従来のオ
ペレーティングシステムは、プロセス、スレッド、ワークの他のユニットを適切なレベル
でスケジュール(スケジューリング)する。すなわち、例えば、各アプリケーションに関
連するプロセス、スレッド或いはワークの他のユニットは、所定の優先順位クラスに割当
てられる。一般的には、ユニットのワークからの要求は、必要とされたシステムリソース
が利用可能であるかどうかに関係なく、予め割当てられた優先順位及びスケジューリング
プロトコルに従ってスケジュールされるようになっている。
概要
一般に、一実施形態では、システムは、リソースと、システムに要求を出すように構成
される実行エンティティと、各実行エンティティからのリソースに対する要求に関連した
スロット割当てを含む記憶ロケーション(記憶場所)とを含んでいる。コントローラは、
リソースに結合され、記憶ロケーションにアクセスし、スロット割当てに従って実行エン
ティティからリソースに対する要求を処理するように構成される。
他の機能は、下記の説明及び特許請求の範囲から明らかとなるであろう。
本発明によれば、要求されたリソースの利用可能度及び利用の状態がスケジューラによ
って決定される決定方式を利用することによって、スケジューラは、実行エンティティか
らの要求が、要求されているエンティティの帯域幅要求及び呼び出し時間要求に従ってサ
ービスされることをより良く保証できる。
本発明の実施形態に係るシステムのブロック図である。 図1のシステムのレイヤのブロック図である。 図1のシステムのレイヤのブロック図である。 実施形態によるスケジューリングサイクルを示す図である。 図1のシステムの実施形態におけるスケジューリングモジュールのフローチャートである。 図1のシステムの実施形態における基本入力/出力システム(BIOS)のフローチャートである。 図1のシステムの実施形態におけるオペレーティングシステムのフローチャートである。
詳細な説明
本発明の実施形態によるシステムは、ファームウェアレイヤのソフトウェアによって使
用されるか或いはアクセスされる。例として、システムリソースは、システムメモリ、1
つ或いはそれ以上のバスと、他の装置とを含んでもよい。システムで実行する実施形態に
係るスケジューラは、いくつかの実施形態では、所定のシステムリソースが利用可能であ
るかどうか及び要求の呼び出し時間及び帯域幅を含んでいるソフトウェアレイヤ及びハー
ドウェアレイヤによって所定の基準に従って作成されるワーク或いは実行エンティティの
基本ユニット(例えば、プロセス、タスク或いはスレッド)からの要求をスケジュールす
る。いつかの実施形態においては、スケジューラには、システムリソース利用可能度及び
利用の状態のフィードバックが提供される。要求されたリソースの利用可能度及び利用の
状態がスケジューラによって決定される決定方式を利用することによって、スケジューラ
は、実行エンティティからの要求が、要求されているエンティティの帯域幅要求及び呼び
出し時間要求に従ってサービスされることをより良く保証できる。
図1を参照すると、例えば、汎用コンピュータ又は専用コンピュータ、他のマイクロプ
ロセッサ或いはマイクロコントローラ方式システム、携帯計算装置、セットトップボック
ス、電気器具、ゲームシステム、或いは特定用途向け集積回路(ASIC)又はプログラ
マブルゲートアレイ(PGA)のような制御装置を含む他のシステムであってもよいシス
テム10のブロック図が示されている。
ここでの説明は、システム10の種々のレイヤについての特定の構成及びアーキテクチ
ャを参照しているけれども、記載された実施形態及び例示された実施形態に関して多数の
修正及び変更が可能である。
図1の実施形態では、システム10は、主メモリ(システムメモリ)104に結合され
たメモリコントローラ103及びグラフィックスカード106に結合されたグラフィック
スインタフェース105を含んでいるホストブリッジコントローラ102に結合された中
央処理装置(CPU)100を有している。グラフィックスインタフェース105は、例
えば、1998年5月に発行されたアクセレートグラフィックスポートインタフェース仕
様、改訂2.0に記載のアクセレートグラフィックスポート(A.G.P.)であってよい
。ホストブリッジコントローラ102は、第2レベル(L2)キャッシュメモリ109を
制御するためにキャッシュコントローラ107も含んでいる。ホストブリッジコントロー
ラ102は、システムバス112に結合されたバスインタフェース111を含んでいる。
なお、このバスインタフェース111は、一実施形態においては、1995年6月に発行
されたPCIローカルバス仕様、製造版、改訂2.1に記載されているように作動する周
辺構成要素相互接続(PCI)バスであってもよいし、他の実施形態においては、他の種
類のインタフェースプロトコルであってもよい。
例えば、他の構成では、ホストコントローラ及びブリッジコントローラは、リンクによ
って結合されるメモリハブ及び入出力ハブと置き換えられてもよい。このような構成では
、メモリ及びグラフィックスインタフェース回路は、メモリハブにあってもよく、ブリッ
ジコントローラはI/Oハブであってもよい。
システムバス112は、ハードディスクドライブ115或いはコンパクトディスク(C
D)又はディジタルビデオディスク(DVD)ドライブ116のような1つ或いはそれ以
上の記憶装置へのアクセスを制御する記憶装置コントローラ114に結合されている。ネ
ットワークインタフェースや、周辺装置に結合されたスロット(図示せず)のような他の
デバイスが、システムバス112に結合されてもよい。種々の他の統合レベルに従うシス
テムは、異なるブロックで実行されるコントローラを有してもよい。例えば、ハードディ
スクドライブや、CD又はDVDドライブコントローラは、システムブリッジコントロー
ラ110に含まれてもよい。
システム10は、二次バス若しくは拡張バス120を有している。システムブリッジコ
ントローラ110は、システムバス112と拡張バス120との間に結合されている。シ
ステムブリッジコントローラ110は、システムバス112に結合されたシステムバスイ
ンタフェース113及び拡張バス120に結合された拡張バスインタフェース119を含
んでいる。このシステムブリッジコントローラ110も、1996年1月に発行された汎
用バス仕様、改訂1.0に記載されているようにUSBポート118に結合された汎用直
列バス(USB)インタフェース117を含んでいる。拡張バス120は、種々の周辺装
置(入力/出力装置)122及び不揮発性メモリ124に結合されている。バス、バスそ
のもの、及びシステムメモリに結合された構成要素及び装置は、システム10内のワーク
或いは実行エンティティのユニットのからの要求によって使用或いはアクセスされるシス
テムリソースの一部を形成する。
図2A〜図2Bを参照すると、システム10の種々のソフトウェアレイヤ及びハードウ
ェアレイヤは、より詳細に示されている。例として、システム10は、オペレーティング
システム(OS)220及びプロセス222及び224を含んでもよい。次の説明では、
オペレーティングシステム220は、各プロセスが1つ或いはそれ以上のスレッドを含ん
でもよいあるウィンドウズ(登録商標)オペレーティングシステムのようなスレッドベー
スシステムであると仮定される。しかしながら、前述の実施形態による要求スケジューリ
ング方式は、異なって構成された実行エンティティ或いはワークのユニットによってオペ
レーティングシステムで実行されてもよい。
図2Aに示されるように、スレッド228及び229は、プロセス222に属し、スレ
ッド230及び231はプロセス224に属する。スレッドは、オペレーティングシステ
ムの下で規定されるアプリケーションプログラマブルインタフェース(API)のような
所定のインタフェースを介してオペレーティングシステム(OS)220と通信してもよ
い。それとは別に、「サードパーティ」APIが使用されてもよい。オペレーティングシ
ステム(OS)220は、所定のインタフェースを介してアクティブスレッドからの要求
をスケジュールするスケジューラ232を有している。一実施形態では、本発明の実施形
態に従ってスケジューリング動作を実行するために、スケジューラ232は、メモリ、I
/O、システム10の他の所定の位置にアクセスし得てハードウェア構成要素と通信する
デバイスドライバ240に関連されていてよい。これらの要素232及び240は、ひと
まとめにしてスケジューラと呼ばれる。他の実施形態では、スケジューラは、より多くの
モジュール或いはレイヤに分離されてもよい。
スレッドからの要求を受信する際に、スケジューラ232は、この要求をハードウェア
構成要素からのフィードバック通信、未だ実行されていない要求の数、要求スレッドの呼
び出し時間及び帯域幅要求に基づいてスケジュール(スケジューリング)する。
一実施形態によれば、スケジューラ232は、所定のエンティティ数を有する要求待ち
行列(キュー)204に要求を記憶する。要求待ち行列204の各エントリは、特定の要
求が処理されたかどうかを示す状態フィールド206の状態フラグに関連してもよい。
デバイスドライバ240を介してスケジューラ232によってアクセスできる、システ
ムメモリ104(或いは、ある他の適当な記憶ロケーション)に記憶されたテーブルのセ
ット或いはテーブルセグメント202は、各々がスレッド識別子(ID)を有する対応ア
クティブスレッドのためのチャネル割当てを識別する。各チャネルは、クロック発生器2
50によって発生されたクロックのような基本クロックの所定サイクル数を有するものと
して規定される。チャネル毎の基本クロック数は所望の細分性(グラニュラリティ)に基
づいて選択される。テーブル或いはテーブルセグメント202の各々は、例えば、システ
ムメモリ104、グラフィックスカード106、システムバス112、拡張バス120、
USBポート118等を含むシステム10のリソースに対応する。
実施形態においては、ブリッジコントローラ102、110は、スレッドIDによって
特定のスレッドに対するチャネル割当てを監視する各種のシステムリソースに対応するテ
ーブル或いはテーブルセグメントも記憶する。ブリッジコントローラのテーブル或いはテ
ーブルセグメントは、オペレーティングシステム(OS)220によって保有される対応
するテーブル202に基づいてロードされる。例示された実施形態では、テーブル或いは
テーブルセグメント302A、302B、及び302Cは、システムメモリ104、シス
テムバス112、及びグラフィックスカード106のそれぞれに対するチャネル割当てを
監視するためにホストブリッジコントローラ102によって記憶されてもよい。システム
ブリッジコントローラ110は、USBポート118及び拡張バス120に対するチャネ
ル割当てを監視するためにテーブル或いはテーブルセグメント302D及び302Eを記
憶してもよい。他のテーブルも他のシステムリソースのために保有されてもよい。
ブリッジコントローラ102、110に記憶されているものとして示されているけれど
も、テーブル302A〜302Eは、システムメモリ104或いは外部記憶装置のような
他の適当な位置に記憶されてもよい。それとは別に、異なるシステムリソースは、図示さ
れるようにブリッジコントローラ102、110に統合されるよりもむしろシステム中に
配設されたコントローラによって制御されてもよい。
テーブル302A〜302Eは、チャネル割当て変更としてオペレーティングシステム
(OS)220によって周期的に更新されてもよい。テーブル302A〜302Eの各々
において、スレッドは同じ或いは異なる数のチャネルを割当てられてもよい。例えば、第
1のスレッドIDに関連したスレッドは第1のチャネル数を割当てられてもよいし、第2
のスレッドIDに関連したスレッドは異なるチャネル数を割当てられてもよい。
テーブル302A〜302Eのスレッドに割当てられたチャネルは、図3に示されるよ
うに全スケジューリングサイクル400内のスレッド要求実行ウィンドウ或いはスロット
を規定する。スケジューリングサイクル400は、各々が割当てられたチャネル数を含む
複数のスレッド要求実行ウィンドウ或いはスロット4200、4021、...、402N-
1、及び402Nを含んでいる。各要求実行ウィンドウ402は、スレッドからの要求の実
行に割当てられる。
一実施形態では、第1のウィンドウ4200は、ブリッジコントローラ102、110
のOSテーブル202と対応するテーブル302との間のコヒーレンシー(coherency)
を保持するスケジューラ232に割当てられる。残りのウィンドウ4021〜402Nは、
種々の他のスレッドからの要求に割当てられてもよい。例示された実施形態では、テーブ
ル302A〜302Eは、コピーレンシー・ウィンドウズ(登録商標)4200のスケジ
ューリングサイクル400毎に1回、スケジューラ・デバイスドライバ240によって更
新される。コヒーレンシー・ウィンドウ4200の時間中、或いは、それとは別に他のウ
ィンドウ402iでは、スケジューラ・デバイスドライバ240は、また、どの要求が完
了したかを決定するためにブリッジコントローラ102、110の状態レジスタ304A
〜304Eの内容を読み出してもよい。従って、スケジューラ232は、どのシステムリ
ソースが利用可能であるか監視をすることができるようにどの要求が完了され、どの要求
が未だ実行されていないかについての情報がフィードバックされるように構成されている
。このように、スレッドからの要求がスケジューラ232によって受信される場合、スケ
ジューラ232は、十分なリソースが要求を処理するために利用可能であるかどうかを決
定できる。
再度、図2A及び図2Bを参照すると、実施形態によれば、ブリッジコントローラ10
2、110の各々は、システム10の種々のリソースに対する要求を記憶する種々の呼び
出し時間を含んでいる。例として、ホストブリッジコントローラ102は、メモリコント
ローラ103のメモリ待ち行列310を有している。CPUバスインタフェース312を
介して接続されたCPU100、及び、システムバスインタフェース111を介して接続
されたシステムバス112上の各種のデバイスをそれぞれ含むシステム10の種々のソー
スからメモリコントローラ103によって受信された要求は、実行するためにメモリ待ち
行列310に記憶される。メモリアドレス及びデータ情報に加えて、メモリ待ち行列31
0は、また、メモリ要求の関連IDを記憶するように構成されている。
本発明のいくつかの実施形態では、CPU100は関連スレッドIDとともに命令をフ
ェッチ(命令取り出し動作)する。スレッドIDは、ブリッジコントローラ102、11
0に送られ、ブリッジコントローラ102、110の待ち行列に記憶される。
ホストブリッジコントローラ102のスケジューラコントローラ314は、カウンタ3
06及びテーブル或いはテーブルセグメント302A〜302Cからの出力値を受信する
。クロック発生器250からの基本クロックによってクロックされるカウンタ306は、
スケジューリングサイクル400でチャネルを通して計数するように構成されてもよい。
カウンタ306の値に基づいて、スケジューラコントローラ314は、スケジューリング
サイクル400の範囲内で現スレッド要求実行ウィンドウ400i(i=0〜N)を決定
できる。どのウィンドウ400iがアクティブであるか、並びに、テーブル302Aのチ
ャネル割当てに基づいて、メモリ待ち行列310の対応するスレッドIDに関連した要求
がメモリコントローラ103によって処理するために選択されてもよい。
選択された要求は、現ウィンドウ400i内で実行される。要求の完了の際に、ホスト
ブリッジコントローラ102は、状態レジスタ304Aの適切なビットをプログラミング
することによって要求完了状態に戻してもよい。次のコヒーレンシー・ウィンドウ402
0では、スケジューラ・デバイスドライバ240の制御の下でCPU100は、状態レジ
スタ304A(並びに他の状態レジスタ304B〜304E)を読み出し、どの要求が完
了したかを決定する。次に、スケジューラ・デバイスドライバ240は、要求待ち行列2
04の完了要求のフラグ206を更新する。
メモリ待ち行列310に加えて、一実施形態のホストブリッジコントローラ102は、
また、システムバスインタフェース111のシステムバス待ち行列316及びグラフィッ
クスインタフェース105のグラフィックスカード要求待ち行列318を含んでいてよい
。システムバス112に対する要求は、システムバス待ち行列316に入れられるのに対
して、グラフィックスカード106に対する要求は、グラフィックスカード待ち行列31
8に入れられる。要求はスレッドIDに関連しているので、スケジューラコントローラ3
14は、現スレッド要求実行ウィンドウ402i及びテーブル302B,302Cに記憶
されたチャネル割当てに基づいて、バスインタフェース111或いはグラフィックインタ
フェース105による適切な処理を選択できる。待ち行列316及び318の要求の完了
は、状態レジスタ304B及び304Cのそれぞれによって示される。
同様に、システムブリッジコントローラ110は、拡張バス120に供給される要求を
記憶する拡張バス待ち行列320と、USBポート118に供給すう要求を記憶するUS
Bバス待ち行列322とを含んでいる。クロック発生器250からの基本クロックによっ
てクロックされるカウンタ308は、スケジューリングサイクル400のチャネルを計数
する。カウンタ308によって示されるような現スレッド要求実行ウィンドウ402i
及び、テーブル302D,302Eに記憶されたチャネル割当てに基づいて、システムブ
リッジコントローラ110のスケジューラコントローラ324は、待ち行列320及び3
22それぞれの要求の中のどれが処理されるべきであるかを決定する。要求の完了は、状
態レジスタ304D,304Eによって示される。
図4に示すように、スケジューラ232と協動するスケジューラ・デバイスドライバ2
40は、(ステップ502において)所定のイベントの受信を待つ。アプリケーション・
プログラマブル・インタフェース(API)呼び出しの形であってもよい、スレッドから
の要求が、受信された場合、スケジューラ・デバイスドライバ240は、(ステップ50
4において)要求待ち行列204及びチャネル割当てテーブル202にアクセスするので
、スケジューラ232は、リソースがスレッド要求を処理するために利用可能であるかど
うかを(ステップ506において)決定することができる。
リソースが要求を適切に処理するために利用可能でないことをスケジューラ232が決
定する場合には、要求されているスレッドが(ステップ508において)通知される。こ
の通知に応じて、スレッドは、要求を再度出す前に若干の時間だけ待つことができるか、
或いは、スレッドは、さもなければこの状態を特に適切に処理できる。要求されたリソー
スが利用可能である場合には、スレッドからの要求は、要求待ち行列204に(ステップ
510において)加えられる。
スケジュール待ち行列204の特定要求が処理され、完了される場合、待ち行列204
のフラグフィールド206の全フラグは、前述のように設定されてもよい。
スケジューラ・デバイスドライバ240そのものは、要求待ち行列及びスレッドチャネ
ル割当てテーブルに対応するメモリ位置にアクセスするような要求を出すことができるス
レッドである。(ステップ520において)要求待ち行列204に入れられたスケジュー
ル・デバイスドライバ・スレッドからの要求は、スケジュールサイクル400の第1のウ
ィンドウ4020で処理されてもよい。それに代えて、他のウィンドウ402iは、スケジ
ューラ・デバイスドライバ240に割当てられてもよい。
コヒーレンシー・ウィンドウ4020の期間中、スケジューラ・デバイスドライバ24
0の制御の下でのCPU100は、必要に応じてブリッジコントローラテーブル302A
〜302Eを(ステップ522において)更新し、チャネル割当てを変える。CPU10
0は、(ステップ524において)どの要求が完了されたかを決定するために状態レジス
タ304A〜304Eにアクセスしてもよい。それに代えて、テーブル更新動作及び状態
レジスタ読み出し動作が別々に行われてもよい。次に、デバイスドライバ240の制御の
下でのCPU100は、(ステップ526において)要求待ち行列204を更新してもよ
い。
スケジューラ232は、要求そのもの及びAPI呼出しのパラメータのような要求パラ
メータを調べることによって、何のシステムリソースが要求によって求められているかを
決定することができる。例えば、パラメータは、システムメモリ104のメモリアドレス
空間の位置へのアクセスを指定してもよい。他のパラメータは、USBポート118に結
合されたUSBバス上のグラフィックスカード106のバス112、120の中の1つに
あるI/Oアドレス空間の位置或いはシステム10の他の位置を指定してもよい。要求リ
ソース、待ち行列204に既にある要求、及びスケジューラ・デバイスドライバ240に
よって検索されるようなテーブル或いはテーブルセグメント202に指定されたチャネル
割当てに基づいて、スケジューラ・デバイスドライバ232は、要求がある程度妥当な方
法で処理されてよいかどうかを決定することができる。これは、システム10に予めプロ
グラム化され、起動ルーチン(例えば、基本入出力システム或いはBIOSルーチン)に
よってロードされる基準に従って規定されてもよい。スケジューラ232は、システムの
種々のスレッドの呼び出し時間要求及び帯域幅要求を認識している。呼び出し時間要件及
び帯域幅要件は、十分なリソースがスレッド要求を満たすために利用可能であるかどうか
を決定するためにスケジューラ232によって使用されてもよい。
一例として、スレッドは、グラフィックスカード106のビデオメモリからのビデオデ
ータのフレームをシステムメモリ104に転送する要求を出してもよい。フレームサイズ
(例えば、720×480ピクセル)及び各ピクセルに対して規定された多数のビットが
与えられると、ビデオ転送の帯域幅要求は、転送が発生しなければならない特定の時間に
基づいて決定されてもよい。さらに、転送要求の呼び出し時間は既知であってよい。帯域
幅及び呼び出し時間情報に基づいて、及び未だ実行されていないリソースに対する未実行
の要求に基づいて、スケジューラ232は、ビデオ転送要求が利用可能なリソースによっ
て処理できるかどうかを決定することができる。処理できない場合には、スレッドはスケ
ジューラ232によって知らされ、スレッドは、他の要求を出す前に或いは要求をいくつ
かの部分に分割する前に待機することを含む多数の方法の1つで応答してよい。
図5に示すように、システム初期化は、実施形態によるシステムBIOSルーチンによ
って実行される。システムリセットによりシステムハードウェアが初期状態にされた後に
、CPU100は、システム10の構成要素を既知の状態に初期設定し、使用するオペレ
ーティングシステム(OS)220のためのシステム構成情報を構成する責務を持つBI
OSの電源オン自己試験(POST)手順の命令を実行し始める。いくつかの初期化タス
クがシステム10で(ステップ602において)実行され、BIOSルーチンは、次に、
システムメモリ104或いは他の適当な記憶ロケーションを(ステップ604において)
設定し、チャネル割当てテーブル或いはテーブルセグメント202を記憶する。BIOS
ルーチンは、各チャネルに対する基本クロック数(例えば、チャネル毎に1クロック或い
は数クロック)及びスケジュールサイクル400の全幅を指定してもよい。特定のメモリ
アドレスは、テーブル或いはテーブルセグメント202を記憶するために予約されていて
もよい。さらに規準は、スレッド要求を受諾するか或いは拒否するかどうかを決定する際
に、スケジューラ232によって使用するために指定されてもよい。
次に、デフォルトチャネル割当ては、(ステップ606において)テーブルにロードさ
れてもよい。例えば、オペレーティングシステム(OS)に関連した所定のスレッド(例
えば、スケジューラ及び他のシステム管理レイヤ)は、サイクル400でウィンドウに割
当てられる。さらに、BIOSは、特定のウィンドウに割り当てられないスレッド要求を
処理するために所定数のチャネルを有するデフォルトウィンドウを設定してもよい。BI
OSは、プロセッサがマルチ処理システムである場合に利用可能なプロセッサの型式を決
定するシステムの構成空間及び他の情報をポーリングできる。この情報から、BIOSは
システムの通信処理能力を決定できる。このような決定された通信処理能力に基づいて、
BIOSは、それに応じてデフォルトウィンドウのチャネル数を割当てることができる。
次に、システム構成要素は、(ステップ608において)BIOSルーチンによって初期
化され、構成される。次に、オペレーティングシステム(OS)220は(ステップ61
0において)ブート(起動)される。
図6に示すように、オペレーティングシステム(OS)220がブートされた後に、オ
ペレーティングシステム(OS)220は、(ステップ650において)システム10に
おけるいくつかのアクティブスレッドを識別する。オペレーティングシステム(OS)2
20は、(ステップ652において)システム10のリソースに対するその帯域幅要求及
び呼び出し時間要求に対する各スレッドを照会する。いくつかのスレッドは、どのような
呼び出し時間要求及び帯域幅要求が各システムリソースに対してあるかを認識している。
例えば、マルチメディアプロセスに関連したスレッドは、データ転送に対する比較的小さ
い呼び出し時間を許容できる、高いデータ転送スループットを必要とする「実時間」要求
を有してもよい。他のスレッドは、より高い呼び出し時間、及び、より低いデータ転送帯
域幅を許容することができるものであってよい。アクティブスレッドからの異なる呼び出
し時間要求及び帯域幅要求の比較に基づいて、異なるスレッドに対応する異なる要求ウィ
ンドウ402iを割当てるいくつかのチャネルは、より低い呼び出し時間及びより高い帯
域幅を有するスレッドを促進するためにオペレーティングシステム(OS)によって(ス
テップ654において)セットされてもよい。結果として、これらの種類のスレッドは、
多数のチャネル及び多分複数のウィンドウ402iを割当てられてもよい。多数の割当て
られたウィンドウ402iは、スケジューリングサイクル400で連続してもよいし或い
は分散されてもよい。スレッドが、システムリソースに対する呼び出し時間及び帯域幅情
報を供給しない場合には、このスレッドは、テーブル或いはテーブルセグメント202の
スケジューリングサイクル400でデフォルトウィンドウ402iに割当てられてもよい
算定された数のチャネルに基づいて、テーブル或いはテーブルセグメント202は、ス
レッドIDに従ってチャネル割当てで(ステップ656において)ロードされてもよい。
従って、いくつかの実施形態によれば、スケジューリング方式は、データフロー要求が
リソースの利用可能度及びチャネル割当てに基づいて満たされてもよいかどうかを決定す
ることによって、システムのスレッドからの要求をスケジュール(スケジューリング)す
る。リソースの利用可能度は、ハードウェア要求によってシステムのスケジューラに示さ
れる。さらに、要求の種類及び要求パラメータに基づいて、スケジューラは、どのような
リソースが特定の要求によって必要とされるかを決定することができる。
他の実施形態は、上記の特許請求の範囲内にある。例えば、異なるオペレーティングシ
ステムの場合には、システムにおけるワーク或いは実行エンティティの基本ユニットは、
スレッドでなくてもよくプロセス或いは他の規定ユニットであってもよい。さらに、シス
テムのハードウェア構成要素は異なって構成されてもよい。ソフトウェア或いは図示のフ
ァームウェアモジュール或いはレイヤによって実行された動作は、変更されてもよい。
本発明は、限られた数の実施形態に関して開示されているが、当業者は、それらからの
多数の修正及び変更を理解するであろう。添付された特許請求の範囲が本発明の真の精神
及び範囲内にあるような全ての修正及び変更を含むことが意図される。

Claims (20)

  1. リソースと、
    前記リソースに要求を出すように構成される実行エンティティと、
    各実行エンティティからの前記リソースに対する要求に関連するスロット割当てを含む
    記憶ロケーションと、
    前記リソースに結合され、かつ、前記記憶ロケーションにアクセスし、前記スロット割
    当てに従って前記実行エンティティから前記リソースに対する要求を処理するように構成
    されるコントローラと
    をそれぞれ備えることを特徴するシステム。
  2. 前記記憶ロケーションのスロット割当てを更新するように構成されたスケジューラをさ
    らに含むことを特徴とする請求項1に記載のシステム。
  3. 前記スケジューラによってアクセスでき、かつ、前記実行エンティティためのスロット
    割当てを含む第2の記憶ロケーションをさらに含むことを特徴とする請求項2に記載のシ
    ステム。
  4. 前記リソースが前記第2の記憶ロケーションのスロット割当て及び未実行の要求に基づ
    いて実行エンティティによって出された要求に対して利用可能であるかどうかについて、
    前記スケジューラが決定するように構成されることを特徴とする請求項3に記載のシステ
    ム。
  5. 前記スケジューラが、各実行エンティティのリソースに対する帯域幅を認識しており、
    かつ、前記スケジューラが、前記帯域幅の情報に基づいて実行エンティティによって出さ
    れた要求に対して利用可能であるかどうかを決定するように構成されていることを特徴と
    する請求項4に記載のシステム。
  6. 前記要求が、1つ或いはそれ以上のパラメータに関連したアプリケーションプログラマ
    ブルインタフェース呼び出しを含むことを特徴とする請求項4に記載のシステム。
  7. 前記スケジューラが、要求が処理されたかどうかを決定するために前記コントローラに
    アクセスするように構成されていることを特徴とする請求項2に記載のシステム。
  8. どのスロットがアクティブであるかどうかを決定するためにコントローラによってアク
    セスできるカウンタをさらに含むことを特徴とする請求項1に記載のシステム。
  9. 各スロットが、1つ或いはそれ以上のチャネルを含み、前記カウンタが、前記チャネル
    を計数するように構成されることを特徴とする請求項8に記載のシステム。
  10. 複数のスロットが、スケジューリングサイクルで規定され、かつ、前記コントローラが
    、対応するスロットにおいて前記実行エンティティからの要求を処理するように構成され
    ることを特徴とする請求項1に記載のシステム。
  11. リソース使用要求を決定するために実行装置と協働するオペレーティングシステムと、
    前記オペレーティングシステムによって更新可能であり、その割当てられたチャネルの
    期間中にシステムリソースにアクセスできる実行装置の前記リソース使用要求に基づいて
    、チャネルを前記実行装置に割当てる記憶ロケーションと
    を含むことを特徴とする請求項1に記載のシステム。
  12. 前記実行エンティティが、前記リソースのための帯域幅の情報を前記オペレーティング
    システムに通信するように構成されていることを特徴とする請求項11に記載のシステム
  13. 前記実行エンティティが、前記リソースのための呼び出し時間の情報を前記オペレーテ
    ィングシステムにさらに通信するように構成されていることを特徴とする請求項12に記
    載のシステム。
  14. システムにおいて実行装置からの要求をスケジューリングする方法であって、
    システムリソースのための前記実行装置のデータフロー情報を決定し、
    前記データフロー情報に基づいて、前記システムリソースへのアクセスのためにタイム
    スロットを前記実行装置に割当て、
    前記割当てられたタイムスロットに基づいて、コントローラをプログラミングすること
    を含み、かつ前記コントローラが、現在どのタイムスロットがアクティブであるかという
    情報及び前記タイムスロット割当てに基づいて、前記システムリソースのための要求を処
    理する
    ことを特徴とする方法。
  15. 前記データフロー情報を決定することが、前記システムリソースへのアクセスのために
    前記実行装置によって使用される帯域幅情報を決定することを含むことを特徴とする請求
    項14に記載の方法。
  16. 前記データフロー情報を決定するステップは、前記システムリソースへのアクセスのた
    めに前記実行装置によって使用される呼び出し時間の情報を決定するステップを含むこと
    を特徴とする請求項14に記載の方法。
  17. 前記システムリソースのための前記時間スロット割当て及び前記システムリソースの使
    用可能度に基づいて、第1の実行装置からの要求が処理され得るかどうかについて決定す
    るステップをさらに含むことを特徴とする請求項14に記載の方法。
  18. 前記データフロー情報及び前記システムリソースに対する未実行の要求に基づいて、前
    記システムリソースの使用可能度を決定するステップをさらに含むことを特徴とする請求
    項17に記載の方法。
  19. 実行エンティティからの要求をスケジューリングする命令を含む記憶媒体を有する装置
    であって、
    前記命令に基づいてプロセッサが、
    システムリソースへのアクセスを含む実行エンティティから第1の要求を受信し、
    前記システムリソースのための所定の他の未実行の要求が処理されたかどうかを決定す
    るために、前記システムリソースに結合されたコントローラにアクセスし、かつ
    前記システムリソースが前記第1の要求に対して利用可能であるかどうかを決する、
    ことを特徴とする装置。
  20. 前記リソースが利用可能でないために前記要求を処理できないかどうか前記実行エンテ
    ィティをさらに通知するように前記プロセッサを作動させるための命令を含むことを特徴
    とする請求項19に記載の装置。
JP2010224970A 1998-11-09 2010-10-04 システムにおける要求のスケジューリング Pending JP2011044165A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US18861498A 1998-11-09 1998-11-09

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009237427A Division JP2010044784A (ja) 1998-11-09 2009-10-14 システムにおける要求のスケジューリング

Publications (1)

Publication Number Publication Date
JP2011044165A true JP2011044165A (ja) 2011-03-03

Family

ID=22693875

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2000581535A Pending JP2002529850A (ja) 1998-11-09 1999-08-26 システムにおける要求のスケジューリング
JP2009237427A Pending JP2010044784A (ja) 1998-11-09 2009-10-14 システムにおける要求のスケジューリング
JP2010224970A Pending JP2011044165A (ja) 1998-11-09 2010-10-04 システムにおける要求のスケジューリング

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2000581535A Pending JP2002529850A (ja) 1998-11-09 1999-08-26 システムにおける要求のスケジューリング
JP2009237427A Pending JP2010044784A (ja) 1998-11-09 2009-10-14 システムにおける要求のスケジューリング

Country Status (7)

Country Link
JP (3) JP2002529850A (ja)
AU (1) AU5902299A (ja)
DE (1) DE19983709B4 (ja)
GB (1) GB2358939B (ja)
HK (1) HK1036860A1 (ja)
TW (1) TW511034B (ja)
WO (1) WO2000028418A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW511034B (en) * 1998-11-09 2002-11-21 Intel Corp Scheduling requests in a system
US20020040381A1 (en) * 2000-10-03 2002-04-04 Steiger Dianne L. Automatic load distribution for multiple digital signal processing system
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7690003B2 (en) * 2003-08-29 2010-03-30 Fuller Jeffrey C System and method for increasing data throughput using thread scheduling
KR101014149B1 (ko) * 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
US8255615B1 (en) 2009-01-08 2012-08-28 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
DE102009016742B4 (de) 2009-04-09 2011-03-10 Technische Universität Braunschweig Carolo-Wilhelmina Mehrprozessor-Computersystem
CN101667159B (zh) * 2009-09-15 2012-06-27 威盛电子股份有限公司 传送请求区块的高速缓存***及方法
EP2656216B1 (en) 2010-12-20 2018-12-19 Marvell World Trade Ltd. Device with descriptor scheduler and corresponding method and system
DE102011013833B4 (de) 2011-03-14 2014-05-15 Continental Automotive Gmbh Anzeigevorrichtung
KR102149171B1 (ko) * 2018-05-18 2020-08-28 강원대학교산학협력단 산업용 로봇 시스템의 실시간 스케줄링 방법 및 장치

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07504071A (ja) * 1991-12-23 1995-04-27 ネットワーク・エクスプレス・インコーポレイテッド 交換デジタルネットワークを介してデータターミナル装置をインターネットワーク化するシステム
US5682484A (en) * 1995-11-20 1997-10-28 Advanced Micro Devices, Inc. System and method for transferring data streams simultaneously on multiple buses in a computer system
US5812844A (en) * 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
EP0798638B1 (en) * 1996-03-28 2008-07-16 Hitachi, Ltd. Periodic process scheduling method
JP2904483B2 (ja) * 1996-03-28 1999-06-14 株式会社日立製作所 周期的プロセスのスケジューリング方法
US5826082A (en) * 1996-07-01 1998-10-20 Sun Microsystems, Inc. Method for reserving resources
US5928327A (en) * 1996-08-08 1999-07-27 Wang; Pong-Sheng System and process for delivering digital data on demand
DE69724270T2 (de) * 1996-11-06 2004-02-19 Motorola, Inc. Verfahren und vorrichtung zur feststellung der anzahl von zugeteilten zugriffen während der latenz des schlechtesten falles
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
TW511034B (en) * 1998-11-09 2002-11-21 Intel Corp Scheduling requests in a system

Also Published As

Publication number Publication date
WO2000028418A1 (en) 2000-05-18
JP2010044784A (ja) 2010-02-25
GB0109904D0 (en) 2001-06-13
DE19983709B4 (de) 2007-02-22
GB2358939B (en) 2003-07-02
AU5902299A (en) 2000-05-29
DE19983709T1 (de) 2002-02-14
HK1036860A1 (en) 2002-01-18
JP2002529850A (ja) 2002-09-10
TW511034B (en) 2002-11-21
GB2358939A (en) 2001-08-08

Similar Documents

Publication Publication Date Title
JP2011044165A (ja) システムにおける要求のスケジューリング
EP1837762B1 (en) Scheduling method, scheduling device, and multiprocessor system
RU2530345C2 (ru) Экземпляры планировщика в процессе
US7979680B2 (en) Multi-threaded parallel processor methods and apparatus
US6591358B2 (en) Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU
KR100628492B1 (ko) 실시간 동작 수행방법 및 시스템
US20140075450A1 (en) Multi-threaded processing with reduced context switching
EP1341083A2 (en) Parallel-process execution method and multiprocessor-type computer
CN111176828A (zh) 包括多核处理器的片上***及其任务调度方法
JP2005536791A (ja) 動的多重レベルタスク管理方法及び装置
WO2003025784A2 (en) Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
WO2003019360A2 (en) System for yielding to a processor
WO2006035729A1 (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US9529625B2 (en) Method and system for providing stack memory management in real-time operating systems
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
WO2013035246A1 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
CN101131654A (zh) 用于分发分派窗内的未使用的处理器循环的方法和***
US10635497B2 (en) Method and apparatus for job pre-scheduling by distributed job manager in a digital multi-processor system
JP2003186686A (ja) リソース制御装置、方法及び記憶媒体
CN110968418A (zh) 基于信号-槽的大规模有约束并发任务的调度方法与装置
JPH10312297A (ja) マルチタスク機能を有する情報処理システムにおける資源管理方法、資源管理装置及び記録媒体
JP2003280932A (ja) 機能システム、機能システム管理方法、データ処理装置及びコンピュータプログラム
JP2007109250A (ja) Cpu能力調整方法
JP2015170270A (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
EP0683909A1 (en) Computer workstation having demand-paged virtual memory