(57)【特許請求の範囲】
【請求項１】
マルチプロセシング環境において、それぞれが異なる速度で動作する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法であって、
前記マルチプロセシング環境が、第１の速度で動作するプロセッサ・ユニットを含む第１のグループと、前記第１の速度よりも高い第２の速度で動作するプロセッサ・ユニットを含む第２のグループと、前記第２の速度よりも高い第３の速度で動作するプロセッサ・ユニットを含む第３のグループとを含み、
新しいタスクを前記第１のグループ中のプロセッサ・ユニットに割り当てるステップと、
プロセッサ使用率を記録するために所定の期間、前記第１のグループ、前記第２のグループおよび前記第３のグループのプロセッサ・ユニット上で実行しているタスクをモニタするステップと、
前記プロセッサ使用率に基づき、前記第２のグループ中のプロセッサ・ユニットが遊休サイクルを有するか決定するステップと、
前記決定するステップが、前記第２のグループ中の前記プロセッサ・ユニットが前記遊休サイクルを有していると決定した場合に、前記第１のグループ中のプロセッサ・ユニットからタスクをプルするステップと、
前記プロセッサ使用率に基づき、前記第２のグループまたは前記第３のグループ中のプロセッサ・ユニットが過負荷であるかを決定するステップと、
前記過負荷であるかを決定するステップが、前記第２のグループ中のプロセッサ・ユニットが過負荷であると決定した場合に、前記第２のグループ中のプロセッサ・ユニットから前記第１のグループ中のプロセッサ・ユニットへタスクをプッシュするステップと、
前記過負荷であるかを決定するステップが、前記第３のグループ中のプロセッサ・ユニットが過負荷であると決定した場合に、前記第３のグループ中のプロセッサ・ユニットから前記第２のグループ中のプロセッサ・ユニットへタスクをプッシュするステップと
を含む前記方法。
【請求項２】
請求項１に記載の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は改良されたデータ処理システムおよび方法に関する。もっと具体的には、本発明はそれぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジューリングすることに関する。
【背景技術】
【０００２】
中央処理装置（ＣＰＵ）はコンピュータの演算部である。また「プロセッサ」と一般に呼ばれるＣＰＵは、コンピュータ・プログラム命令を実行するのに関連する機能を実行する命令デコーダ、スケジューラ、実行ユニット等よりなる。ＣＰＵ、クロックおよびメイン・メモリが典型的なコンピュータを構成する。完全なコンピュータ・システムは更に制御ユニット、入出力装置、ストレージ装置およびオペレーティング・システムを必要とする。
【０００３】
マルチプロセシング・アーキテクチャは同じメモリを共用しかつローカル・ストレージと呼ばれる専用メモリを有してもよい、一つのキャビネットに常駐する複数のプロセッサ・ユニット（ＰＵ）を含む。処理が増加するにつれ、その増加する処理ボリュームを吸収するために追加のＰＵを加えても良い。マルチプロセシング・アーキテクチャは２個から数千あるいはそれ以上のプロセッサに及ぶ。
【０００４】
異種マルチプロセシング・アーキテクチャは、同じでない複数のＰＵを含む。ある環境では、ＰＵが同一であるが、異なるオペレーティング・システムで実行することをこれが意味するのでもよい。しかし、ここで使用されるように、異種のマルチプロセシング・アーキテクチャは異なるアーキテクチャもしくは処理能力またはその両方を有する複数のＰＵを含む。異種マルチプロセシング・システムでは、処理能力の異なるＰＵ上での、時にはプロセスとも呼ぶタスクの最適スケジューリングが困難な問題を提供する。今日のオペレーティング・システムが提供できるものの中には、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクのスケジューリングを処理するための解決策を含まない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ここで説明している具体例は従来技術の欠点を認識し、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジューリングする機構を提供する。いろいろな速さのプロセッサ・ユニットを備えたマルチプロセッサ・ユニット・システムでは、もっとも処理能力を必要とするタスクをもっとも高い処理能力のプロセッサ・ユニット上で実行させるのが有利である。
【課題を解決するための手段】
【０００６】
図示の実施例では、全てのタスクが最低の処理能力のプロセッサ・ユニット上で最初にスケジュールされる。もっと高い処理能力のプロセッサ・ユニットが遊休時間を持つ可能性が高くなるので、これらの高い処理能力のプロセッサ・ユニットが同じかもしくはもっと低い処理能力のプロセッサ・ユニットからそれらの上に１個もしくはそれ以上のタスクをプルしてもよい。あるプロセッサ・ユニットはこれらの時間スライスの大きい割合を使用するタスクをプルしようとする。高い処理能力のプロセッサ・ユニットにその処理能力を超えるあるいはその処理能力に近いロードがかかると、その高い処理能力のプロセッサ・ユニットは同じかもっと低い処理能力のプロセッサ・ユニットにタスクをプッシュしようとする。プロセッサ・ユニットはそれらの時間スライスのうちの小さい割合を使用するタスクをプッシュしようとするであろう。タスク・プロセッサ使用率が変化するので、タスク・プロセッサのニーズが、対応する処理能力を備えたプロセッサ・ユニットに一致するようになるにつれ、システムの平衡に近い状態（ near system equilibrium ）が達成されるかもしれない。
【０００７】
一実施例では、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法が、使用率を記録するために所定の期間、第１のプロセッサ・ユニット上で実行しているタスクをモニタするステップと、前記使用率に基づき、前記第１のプロセッサ・ユニットが余分のサイクルを有するか決定するステップと、もし前記第１のプロセッサ・ユニットが前記余分のサイクルを有しているなら、第２のプロセッサ・ユニットからタスクをプルするステップとを含む。上述のように、高い処理能力のプロセッサ・ユニットは、遊休時間を持つ可能性が高く、言い換えれば、余分のサイクルないしは遊休サイクルを持つ可能性が高い。
【０００８】
一実施例では、前記第２のプロセッサ・ユニットが前記第１のプロセッサ・ユニットと同じ処理能力を有する。他の実施例では、前記第２のプロセッサ・ユニットが前記第１のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第２のプロセッサ・ユニットに記録された前記使用率に基づき、前記タスクが前記第２のプロセッサ・ユニットの処理能力のうちの大きな割合を使用する。
【０００９】
一実施例の方法では、前記使用率に基づき、前記第１のプロセッサ・ユニットが過負荷か決定するステップと、もし前記第１のプロセッサ・ユニットが過負荷であれば、前記第１のプロセッサ・ユニットから第３のプロセッサ・ユニットに軽いタスクをプッシュするステップとを更に含む。更に別の実施例では、前記第３のプロセッサ・ユニットが前記第１のプロセッサ・ユニットと同じ処理能力を有する。更に他の実施例では、前記第３のプロセッサ・ユニットが前記第１のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第３のプロセッサ・ユニットで記録される使用率に基づき、前記軽いタスクが前記第３のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
【００１０】
他の実施例では、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法が、使用率を記録するために所定の期間、第１のプロセッサ・ユニット上で実行しているタスクをモニタするステップと、前記使用率に基づき、前記第１のプロセッサ・ユニットが過負荷か決定するステップと、もし前記第１のプロセッサ・ユニットが過負荷であれば、前記第１のプロセッサ・ユニットから第２のプロセッサ・ユニットに軽いタスクをプッシュするステップとを含む。
【００１１】
他の実施例では、前記第２のプロセッサ・ユニットが前記第１のプロセッサ・ユニットと同じ処理能力を有する。更に他の実施例では、前記第２のプロセッサ・ユニットが前記第１のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第２のプロセッサ・ユニットに記録された前記使用率に基づき、前記軽いタスクが前記第２のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
【００１２】
更に他の実施例では、コンピュータ読み取り可能なコンピュータ・プログラムが以下の諸ステップをコンピュータに実行させることができる。即ちその諸ステップは、使用率を記録するために所定の期間、第１のプロセッサ・ユニット上で実行しているタスクをモニタするステップと、前記使用率に基づき、前記第１のプロセッサ・ユニットが余分のサイクルを有するか決定するステップと、もし前記第１のプロセッサ・ユニットが前記余分のサイクルを有しているなら、第２のプロセッサ・ユニットからタスクをプルするステップとを含む。
【００１３】
一実施例では、前記第２のプロセッサ・ユニットが前記第１のプロセッサ・ユニットと同じ処理能力を有する。更に他の実施例では、前記第２のプロセッサ・ユニットが前記第１のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第２のプロセッサ・ユニットに記録された前記使用率に基づき、前記タスクが前記第２のプロセッサ・ユニットの処理能力のうちの大きい割合を使用する。
【００１４】
更に他の実施例では、コンピュータ読み取り可能なコンピュータ・プログラムが更に以下の諸ステップをコンピュータに実行させることができる。即ちその諸ステップは、前記使用率に基づき、前記第１のプロセッサ・ユニットが過負荷か決定するステップと、もし前記第１のプロセッサ・ユニットが過負荷であれば、前記第１のプロセッサ・ユニットから第３のプロセッサ・ユニットに軽いタスクをプッシュするステップとを更に含む。更なる実施例では、前記第３のプロセッサ・ユニットが前記第１のプロセッサ・ユニットと同じ処理能力を有する。他の実施例では、前記第３のプロセッサ・ユニットが前記第１のプロセッサ・ユニットよりも低い処理能力を有する。更に他の実施例では、前記第３のプロセッサ・ユニットで記録される使用率に基づき、前記軽いタスクが前記第３のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
【００１５】
他の実施例では、データ処理システムが複数のプロセッサ・ユニットを含む。前記複数のプロセッサ・ユニットは、第１の処理能力を有する第１のグループのプロセッサ・ユニットおよび第２の処理能力を有する第２のグループのプロセッサ・ユニットを含む。前記データ処理システムは、更に前記複数のプロセッサ・ユニット内の第１のプロセッサ・ユニットに結合されるメモリを含む。前記メモリは命令を含み、前記命令は前記第１のプロセッサ・ユニットに、使用率を記録するために所定の期間、前記第１のプロセッサ・ユニット上で実行しているタスクをモニタすることと、前記使用率に基づき、前記第１のプロセッサ・ユニットが余分のサイクルを有するか決定することと、もし前記第１のプロセッサ・ユニットが前記余分のサイクルを有しているなら、第２のプロセッサ・ユニットからタスクをプルすることとを実行させる、メモリである
。
【００１６】
一実施例では、前記第１のプロセッサ・ユニットおよび前記第２のプロセッサ・ユニットが、プロセッサ・ユニットの前記第１のグループ内にある。他の実施例では、前記第１のプロセッサ・ユニットが前記第１のグループ内にあり、前記第２のプロセッサ・ユニットが前記第２のグループ内にあり、かつ前記第２の処理能力が前記第１の処理能力より低い。更に他の実施例では、前記第２のプロセッサ・ユニットに記録された前記使用率に基づき、前記タスクが前記第２のプロセッサ・ユニットの処理能力のうちの大きい割合を使用する。
【００１７】
一実施例では、前記使用率に基づき、前記第１のプロセッサ・ユニットが過負荷か決定し、もし前記第１のプロセッサ・ユニットが過負荷であれば、前記第１のプロセッサ・ユニットから第３のプロセッサ・ユニットに軽いタスクをプッシュする命令を更に含み、実行時に前記第１のプロセッサ・ユニットにより前記命令が実行される。他の実施例では、前記第１のプロセッサ・ユニットおよび前記第３のプロセッサ・ユニットが、プロセッサ・ユニットの前記第１のグループ内にある。更に他の実施例では、前記第１のプロセッサ・ユニットが前記第１のグループ内にあり、前記第３のプロセッサ・ユニットが前記第２のグループ内にあり、かつ前記第１の処理能力が前記第２の処理能力より高い。更に他の実施例では、前記第３のプロセッサ・ユニットで記録される使用率に基づき、前記軽いタスクが前記第３のプロセッサ・ユニットの処理能力のうちの小さい割合を使用する。
【００１８】
本発明のこれらのそしてまた他の特徴および利点は、本発明の実施例の以下の詳細な説明に示され、あるいはその説明から見て当業者には容易に理解できるようになる。
【００１９】
本発明は、その好適な使用モード、更にその目的および効果と同様に、図示の実施例についての以下の詳細な説明を添付図面とともに参照することによってもっともよく理解される。
【発明を実施するための最良の形態】
【００２０】
図面の、特に図１について、本発明の実施例が導入され得るデータ処理システムデータ処理環境の実例が提供される。図示した環境に対し多くの変形例が本発明の趣旨および範囲から逸れることなく行える。
【００２１】
ここで図１を参照すると、説明用の実施例の側面が導入され得る例示的なデータ処理システムのブロック図が示される。データ処理システム１００は本発明の説明的な実施例のためのプロセスを導入するコンピュータ使用可能コードもしくは命令が置かれ得るコンピュータの一例である。
【００２２】
図示の例では、データ処理システム１００がノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）１０２ならびにサウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）１０４を含むハブ・アーキテクチャを採用する。プロセッサ１５２、１５４および１５６がＮＢ／ＭＣＨ１０２に内部プロセッサ・バス１５０を介して接続される。メイン・メモリ１０８およびグラフィックス・プロセッサ１１０がＮＢ／ＭＣＨ１０２に接続される。グラフィックス・プロセッサ１１０は、例えばＡＧＰ（アクセラレーテッド・グラフィックス・ポート）を介してＮＢ／ＭＣＨ１０２に接続されてもよい。
【００２３】
図示の例では、ＬＡＮ（ローカル・エリア・ネットワーク）アダプタ１１２がＳＢ／ＩＣＨ１０４に接続する。オーディオ・アダプタ１１６、キイボードおよびマウス・アダプタ１２０、モデム１２２、読出し専用メモリ（ＲＯＭ）１２４、ハード・ディスク・ドライブ（ＨＤＤ）１２６、ＣＤ−ＲＯＭドライブ１３０、ＵＳＢ（ユニバーサル・シリアル・バス）ポートおよび他の通信ポート１３２、ならびにＰＣＩ／ＰＣＩｅ装置１３４がバス１３８および１４０を介してＳＢ／ＩＣＨ１０４に接続する。ＰＣＩ／ＰＣＩｅ装置１３４は例えばイーサーネット・アダプタ、アドイン・カードおよびＰＣカードを含んでもよい。ＰＣＩはカード・バス・コントローラを備えるが、ＰＣＩｅはそうではない。ＲＯＭ１２４は、例えばフラッシュ・バイナリ入出力システム（ＢＩＯＳ）であってもよい。
【００２４】
ＨＤＤ１２６およびＣＤ−ＲＯＭドライブ１３０はＳＢ／ＩＣＨ１０４にバス１４０を介して接続する。ＨＤＤ１２６およびＣＤ−ＲＯＭドライブ１３０は、例えばＩＤＥ（インテグレーテッド・ドライブ・エレクトロニクス）もしくはＳＡＴＡ（シリアル・アドバンスド。テクノロジー・アタッチメント）インターフェースを使用してもよい。スーパーＩ／Ｏ（ＳＩＯ）装置１３６がＳＢ／ＩＣＨ１０４に接続されていてもよい。
【００２５】
オペレーティング・システムはプロセッサ１５２、１５４および１５６上で実行する。オペレーティング・システムは図１のデータ処理システム１００内の種々のコンポーネントを統合し制御する。オペレーティング・システムは  Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓはマイクロソフト・コーポレーションの商標）などの市販されているオペレーティング・システムであってよい。データ処理システム１００は、例えば、ＩＢＭ  ｅＳｅｒｖｅｒ  ｐＳｅｒｉｅｓ  コンピュータ・システムで、Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ）オペレーティング・システムもしくはＬＩＮＵＸオペレーティング・システム（ｅＳｅｒｖｅｒ、  ｐＳｅｒｉｅｓ  および  ＡＩＸ  はＩＢＭ社の商標、ＬＩＮＵＸ  は  Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓ  の商標）を走らせているようなものであってよい。
【００２６】
オペレーティング・システムおよびアプリケーションもしくはプログラムのための命令はＨＤＤ１２６などのストレージ装置上に位置づけられ、プロセッサ１５２、１５４および１５６による実行のためにメイン・メモリ１０８中にロードされてもよい。本発明の実施例のプロセスはプロセッサ１５２、１５４および１５６によってコンピュータの使用可能なプログラム・コードを用いて実行されてもよい。そのプログラム・コードは、例えば１個若しくはそれ以上の周辺装置１２６および１３０中に、またはメイン・メモリ１０８、ＲＯＭ１２４などのメモリ中にあってもよい。
【００２７】
図１に示すようなバス１３８もしくはバス１４０は１個もしくはそれ以上のバスであってもよい。勿論、バス・システムは任意の型の通信ファブリックもしくはアーキテクチャを用いて実施されてもよい。このファブリックまたはアーキテクチャはそれに取り付けられた異なるコンポーネント若しくは装置相互間のデータの転送のために提供される。図１のモデム１２２もしくはネットワーク１１２などの通信ユニットがデータを送信し受信するのに使用される１個もしくは複数の装置を含んでもよい。メモリは、例えばメイン・メモリ１０８、ＲＯＭ１２４，もしくは図１のＮＢ／ＭＣＨ１０２に見られるようなキャッシュであってもよい。
【００２８】
当業者は図１のハードウエアが実施の仕方に依存して変化し得ることを理解されたい。他の内部のハードウエアもしくは周辺装置、例えばフラッシュ・メモリ、等価な不揮発性メモリ、光ディスク・ドライブ等が図１に示すハードウエアに加えてもしくはその代わりに使用されてもよい。更に、データ処理システム１００は、クライアント・コンピューティング装置、サーバー・コンピューティング装置、タブレット・コンピュータ、ラップトップ・コンピュータなどを含むいろいろなデータ処理システムのうちの任意の形式を取ることができる。基本的には、データ処理システム１００は任意の既知のもしくは後に開発された、アーキテクチャ的に制限のないデータ処理システムであってよい。
【００２９】
実施例によれば、プロセッサ１５２、１５４および１５６が異種のマルチプロセシング環境を構成していてもよい。例えば、プロセッサ１５２がもっとも低い速度もしくは処理能力を備えた８個のプロセシング・コアすなわちプロセッサ・ユニット（ＰＵ）を含んでいてもよい。プロセッサ１５４が中間的な速度もしくは処理能力を備えた４個のプロセッサ・ユニットの（ＰＵ）を含んでいてもよい。プロセッサ１５６が最も高い速度もしくは処理能力を備えた２個のＰＵを含んでいてもよい。
【００３０】
プロセッサおよびプロセシング・ユニットの構成は例示的なものであり、本発明の側面もしくは実施例が実施され得るような環境に関してアーキテクチャ的な限界を暗示することを意味するのではない。本発明の趣旨および範囲から逸れずにここに示した環境に対する多くの変形を行い得る。例えば、実施例若しくは環境次第で処理装置の数はもっと多くても少なくてもよい。もっと具体的に言うと、処理装置の数がたとえば何千であってもよい。他の例として、データ処理システム１００がＰＵ８個のプロセッサ、ＰＵ４個のプロセッサ、ＰＵ２個のプロセッサを幾つか含んでいてもよい。更に、一つのプロセッサ内のプロセッサ・ユニット同士が異種であってもよい。プロセッサはＩＢＭコーポレーションからのＣｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅのように、チップ上にあるシステムであってもよい。他の実施例は、例えば、各ＰＵは自己内蔵プロセッサであってもよい。
【００３１】
説明の実施例によれば、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための機構が提供される。異なる速度の複数のプロセッサ・ユニットを備えたマルチプル・プロセッサ・ユニット・システムでは、処理集約型のタスクを最高の処理能力のプロセッサ・ユニットで実行させることが有利である。ここで説明する実施例では、最も処理能力の低いプロセッサ・ユニット上で全てのタスクが最初はスケジュールされる。各ＰＵ上のオペレーティング・システムはそのＰＵ上で実行するタスクをモニタ（監視）する。最初にタスクは時間スライスと称する或る所定の期間、ＰＵ上で実行してもよい。一実施例では、正確なプロセッサ使用率を収集するためにそのタスクが１つよりも多くの時間スライスの間実行してもよい。各時間スライスの終わりに、各ＰＵはそのタスク・プロセッサ使用率を記録する。
【００３２】
高い処理能力を備えたプロセッサ・ユニットは遊休時間を持ちがちなので、これらの高い処理能力のプロセッサ・ユニットは同じかもしくは低い処理能力のプロセッサ・ユニットから自らの上に１個若しくはそれ以上のタスクをプルするのでもよい。プロセッサ・ユニットは大きな割合の時間スライスを使用するタスクをプルしようとする。
【００３３】
タスクがプロセッサ上で実行する際、それはその時間スライス全体にわたって実行し、あるいはその時間スライスが終わる前にプロセッサを解放する。この後、スケジューラを呼び出したオペレーティング・システムの一片が実行する。この時点でプロセッサ使用率が収集され、そのタスクの一部として保存される。スケジューラがそれから実行キューからの次のタスクを選択し、そのタスクをプロセッサ上で実行させる。実行キューはそのプロセッサで実行することができるタスクのキューである。
【００３４】
説明の実施例は、タスクが種々のプロセッサのための実行キュー相互間で移動される。従って、高い処理能力のプロセッサ・ユニットが遊休時間にあるときは、低い処理能力のプロセッサのための実行キューを調べて処理重視のタスクを「プルする」ことができる。ここでの説明はプロセッサ毎に別個の実行キューがあることを前提としているが、いつもそうとは限らない。オペレーティング・システム中の実行キューの数はオペレーティング・システム特有であってよい。
【００３５】
タスクが「プッシュされ」もしくは「プルされる」と、タスクそれ自体および所与のオペレーティング・システムで使用されるタスク構造が、異なるプロセッサ上で実行するように転送される。このことが異なる実行キューにタスク構造を転送するのを意味するか、もしくは実行すると想定されるプロセッサを参照するタスク構造中にビットをマークするのを意味するかは実施例次第、あるいはもっと具体的にいえばオペレーティング・システム次第である。
【００３６】
高い処理能力のプロセッサ・ユニットが過負荷になるか処理能力の限界近くになると、その高い処理能力のプロセッサ・ユニットは同じか、もしくは低い処理能力を備えるプロセッサ・ユニットにタスクを押し入れても良い。プロセッサ・ユニットはタスクの時間スライスのうちの小さい割合を使用するタスクを押し入れようと試みる。これは２つのレベルよりも多い階層に拡張されるかもしれない。実際、多くの中間的なプロセッサ・ユニットの処理能力のグループがあり得る。タスク・プロセッサ使用率が変化するとシステム平衡に近い状態に到達するかもしれない。タスク・プロセッサのニーズが、対応する処理能力を備えたプロセッサに合致するようになるからである。
【００３７】
図２は、ここに示した実施例に従う新しいタスクの割当てを説明するプロセッサ・ユニット構成のブロック図である。実施例では、プロセッサ２１０が８個のプロセッサ・ユニット２１１−２１８を備え、プロセッサ２２０が４個のプロセッサ・ユニット２２１−２２４を備え、プロセッサ２３０が２個のプロセッサ・ユニット２３１−２３２を備える。ここに示した例ではプロセッサ・ユニット（ＰＵ）２１１−２１８が最も低い処理能力のプロセッサ・ユニットのグループを形成し、プロセッサ・ユニット２２１−２２４が中間的な処理能力のプロセッサ・ユニットのグループを形成し、プロセッサ・ユニット２３１−２３２が最も高い処理能力のプロセッサ・ユニットのグループを形成する。
【００３８】
新しいタスク２４２などのタスクが初期に割当てられると、それは最も低い処理能力のグループ中の或るＰＵ、この場合はプロセッサ２１０中のＰＵに割当てられる。複数のＰＵのうちの一つで稼動するコントローラ・タスクがタスクを割当てる。そのオペレーティング・システムのスケジューラの一片が、例えばコントローラ・タスクであってよい。ＰＵ２１１上のオペレーティング・システムがＰＵ２１１上で稼動する際にタスク２４２の実行をモニタする。最初はタスク２４２がＰＵ２１１上で、時間スライスと呼ばれる或る所定の期間、稼動してもよい。一実施例では、正確なプロセッサ使用率を収集するために、タスク２４２が一つよりも多くの時間スライスの間、ＰＵ２１１上で稼動してもよい。各時間スライスのときに各ＰＵは他のＰＵにそのタスク・プロセッサ使用率を知らせてもよい。
【００３９】
高い処理能力を備えたプロセッサ・ユニットが遊休時間を持ちがちなので、これらの高い処理能力のプロセッサ・ユニットと同じかもっと低い処理能力のプロセッサ・ユニットから１個若しくはそれ以上のタスクをそれらの上にプルしようと試みるかもしれない。図３は図示の実施例に従い高い処理能力のプロセッサ・ユニットに、低い処理能力のプロセッサ・ユニットからタスクをプルしてくることを示す。図示の例では、ＰＵ２１１、ＰＵ２２３およびＰＵ２２４がそれらの時間スライスのうちの大きな割合を使用する「ハングリな」タスクを有し、ＰＵ２２１、ＰＵ２２２およびＰＵ２３１が処理能力を使用されていない。時間スライスのうちの大きな割合を使用しているタスクはまた「ＣＰＵ大食い」タスクもしくは「ハングリ」タスクとも呼ばれる処理集約型のタスクである。従って、処理能力を使用していないＰＵ２３１はＰＵ２２３から１個若しくはそれ以上のタスクをプルする。ＰＵ２２２は同じ能力のグループ中にあるＰＵ２２４から１個若しくはそれ以上のタスクをプルする。ＰＵ２２１はＰＵ２１１からタスクをプルする。
【００４０】
高い処理能力のプロセッサ・ユニットが過負荷になるか処理能力一杯に近づくと、その高い処理能力のプロセッサ・ユニットは同じかもしくは低い処理能力のプロセッサ・ユニットにタスクをプッシュしてもよい。プロセッサ・ユニットはそれらの時間スライスの小さい割合を使用するタスクをプルしようとする。図４は高い処理能力のプロセッサ・ユニットから低い処理能力のプロセッサ・ユニットに図示の実施例に従ってタスクをプッシュする様子を示すプロセッサ・ユニット構成のブロック図である。図示の例ではＰＵ２２３、２２４および２３２は時間スライスのうちの小さい割合を使用する「軽い」タスクを有するが、ＰＵ２１６、２２１および２２２は処理能力を使用していない。従って、過負荷もしくは処理能力一杯に近いＰＵ２３２は１個もしくはそれ以上のタスクを、処理能力を使用していないＰＵ２２２にプッシュする。ＰＵ２２４はその同じ処理能力のグループにあるＰＵ２２１に１個もしくはそれ以上のタスクをプッシュする。ＰＵ２２３は、処理能力を使用していないＰＵ２１６に１個もしくはそれ以上のタスクをプッシュする。
【００４１】
これは二つのレベルだけの階層から３つ以上のレベルの階層に敷衍してもよい。実際に、多くの中間的なプロセッサ・ユニットの処理能力のグループがあり得る。タスク・プロセッサ使用率が変化する際、システム平衡に近い状態が得られる。タスク・プロセッサのニーズが、対応する処理能力を備えたプロセッサ・ユニットに合致することになるかもしれないからである。実施例の機構が、キャッシュのo恩恵を利用するために同じプロセッサ・グループ内で、例えば分岐するタスクなど関連するタスクを保持しようとすることに留意されたい。
【００４２】
図５は図示の実施例による、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするためにもっとも低い処理能力のプロセッサ・ユニット中の機構の動作を示すフローチャートである。フローチャートの説明の各ブロックおよびフローチャートの説明中のブロックの組み合わせがコンピュータ・プログラム命令によって実施され得ることを理解されたい。これらのコンピュータ・プログラム命令がマシンを構成するためにプロセッサもしくは他のプログラム可能なデータ処理装置に提供されてもよく、その結果、そのプロセッサもしくはその他のプログラム可能なデータ処理装置上で実行する命令がフローチャートの一つ若しくは複数のブロックに特定した機能を実施するための手段を生じる。これらのコンピュータ・プログラム命令はコンピュータ読み取り可能なメモリもしくはストレージ媒体に格納されてもよく、これによってプロセッサ若しくは他のプログラム可能なデータ処理装置が特定の態様で機能するように指示することができる。そしてその結果、コンピュータ読み取り可能なメモリもしくはストレージ媒体に記憶された命令がフローチャートの１個もしくはそれ以上のブロックに特定された機能を実行する命令手段を含む製品を生じる。
【００４３】
従って、フローチャートの説明のブロックが特定の機能を実行するための手段の組み合わせと、特定の機能を実行するためのステップの組み合わせと、特定の機能を実行するためのプログラム命令手段とをサポートする。そのフローチャートの説明の各ブロックおよびブロックの組み合わせが、その特定の昨日若しくはステップを実行する特定目的のハードウエア・ベースのコンピュータ・システムであって、あるいは特定目的のハードウエアおよびコンピュータ命令の組み合わせによって実施されることができることも理解されたい。
【００４４】
更に、そのフローチャートが、説明の実施例中に実行される動作を行えるように提供される。このフローチャートは特定の動作、もしくはもっと具体的にはその動作順序に関して限定を記述したり暗示したりする意図は無い。フローチャートの動作は本発明の趣旨および範囲から逸れることなしに特定の形態に合うように修正することもできる。
【００４５】
図５によれば、その機構が新しい一つもしくは複数のタスクが割当てられるかどうかをその機構が決定することから動作が開始する（ブロック３０２）。もし１個もしくはそれ以上の新しいタスクがあれば、その機構は最も低い処理能力のＰＵグループ中のプロセッサ・ユニット（ＰＵ）でその新しく割当てられたタスクを受取る（ブロック３０４）。その後、あるいはブロック３０２で新しいタスクがないなら、その機構はＰＵ上で実行するタスクをモニタする（ブロック３０６）。それから、その機構は現在の時間スライスの終わりに達したかどうかを決定する（ブロック３０８）。もし現在の時間スライスの終わりに達していなければ、そのＰＵ上で実行するタスクをモニタするためにブロック３０６に動作が戻る。
【００４６】
もし現在の時間スライスの終わりに達すると（ブロック３０８）、その機構はそのタスクの使用率を記録する（ブロック３１０）。次に、その機構はそのＰＵが余分のサイクルを有するか決定する（ブロック３１２）。もしＰＵが余分のサイクルを有するなら、そのＰＵは追加のタスクをとってもよい。この例では、もし可能なら同じ処理能力のグループ内のＰＵから１個もしくはそれ以上のハングリなタスクをプルする（ブロック３１４）。その後、その機構は次に高い処理能力のＰＵグループ中のＰＵからプッシュするタスクがあるか決定する（ブロック３１６）。もし次に高い処理能力のＰＵグループ中のＰＵからタスクがプッシュすることがないなら、動作がブロック３０２に戻り、そのＰＵに何か新しいタスクが割当てられるかを決定する。
【００４７】
もしブロック３１６で次に高いＰＵグループ中のＰＵからそのＰＵに１個もしくはそれ以上のタスクがプッシュされるなら、その機構はその次に高い処理能力のＰＵグループ中のＰＵからプッシュされられたその１個もしくはそれ以上のタスクを受取る（ブロック３１８）。その後、動作はブロック３０２に戻り、何か新しいタスクがそのＰＵに割当てられるか決定する。
【００４８】
ブロック３１２に戻って説明すると、もしそのＰＵが余分のサイクルを持たなければ、その機構はそのＰＵが過負荷であるか処理能力一杯に近いかを決定する（ブロック３２０）。もしそのＰＵが過負荷でなければ、動作はブロック３１６に進み、その次に高い処理能力のＰＵグループ中のＰＵから何らかのタスクがプルされるかを決定する。もしそのＰＵがブロック３２０で過負荷であれば、その機構は、もし可能ならその同じ処理能力のＰＵグループ中のＰＵに１個もしくはそれ以上の軽いタスクをプッシュする（ブロック３２２）。その後、動作はブロック３０２に戻り、何か新しいタスクがそのＰＵに割当てられるか決定する。
【００４９】
図６は図示の実施例に従って、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための中間的な処理能力のプロセッサ・ユニットに於ける機構を説明するフローチャートである。動作が開始し、そのＰＵ上でタスクが実行するのをその機構がモニタする（ブロック４０２）。それから、現在の時間スライスの終わりに達するか決定する（ブロック４０４）。もし現在の時間スライスの終わりに達していなければ、動作はブロック４０２に戻り、ＰＵ上で実行されるタスクをモニタする。
【００５０】
ブロック４０４で現在の時間スライスの終わりに達していれば 、その機構はそのタスクの使用率を記録する（ブロック４０６）。次に、その機構がそのＰＵが余分のサイクルを有しているか決定する（ブロック４０８）。もしそのＰＵが余分のサイクルを有していれば、そのＰＵは追加のタスクをとるかもしれない。この例では、もし可能なら次に低い処理能力のＰＵグループもしくは同じ処理能力のＰＵグループ中のＰＵからその機構が１個もしくはそれ以上のハングリなタスクをプルする（ブロック４１０）。その後、次に高い処理能力のＰＵグループ中のＰＵから何らかのタスクがプッシュされるかをその機構が決定する（ブロック４１２）。もし次に高い処理能力のＰＵグループ中のＰＵから何のタスクもプッシュされないなら、動作はブロック４０２に戻り、そのＰＵ上で実行されるタスクをモニタする。
【００５１】
もし次に高い処理能力のＰＵグループ中のＰＵからそのＰＵに１個もしくはそれ以上のタスクがプッシュされるなら、その機構は次に高い処理能力のＰＵグループ中のＰＵからプッシュされる１個もしくはそれ以上のタスクを受取る（ブロック４１４）。その後、動作はブロック４０２の戻り、そのＰＵ上で実行されるタスクをモニタする。
【００５２】
ブロック４０８の説明に戻ると、もしそのＰＵが余分のサイクルを持たなければ、その機構はそのＰＵが過負荷もしくは処理能力一杯の近くにあるかどうかを決定する（ブロック４１６）。もしそのＰＵが過負荷でなければ、動作はブロック４１２に進み、次に高い処理能力のＰＵグループ中のＰＵから何かタスクがプッシュされるかどうか決定する。もしそのＰＵがブロック４１６で過負荷であれば、その機構は、もし可能であれば次に低い処理能力のＰＵグループもしくは同じ処理能力のＰＵグループ中のＰＵに１個もしくはそれ以上の軽いタスクをプッシュする（ブロック４１８）。その後、動作はブロック４０２に戻り、そのＰＵ上で実行するタスクをモニタする。
【００５３】
図７は、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨り、説明の実施例に従ってタスクをスケジュールするための最も高い処理能力のプロセッサ・ユニット中の機構の動作を説明するフローチャートである。動作が開始し、その機構はそのＰＵ上で実行されるタスクをモニタする（ブロック５０２）。それから、その機構は現在の時間スライスの終わりに達するかどうかを決定する（ブロック５０４）。もし現在の時間スライスの終わりに達していなければ、動作はブロック５０２に戻り、そのＰＵ上で実行するタスクをモニタする。
【００５４】
ブロック５０４で現在の時間スライスの終りに達しているなら、その機構はそのタスクの使用率を記録する（ブロック５０６）。次に、その機構はそのＰＵが余分のサイクルを有しているか決定する（ブロック５０８）。もしそのＰＵが余分のサイクルを有していれば、そのＰＵは追加のタスクを取ることもできる。この例では、その機構は、もし可能なら次に低い処理能力のＰＵグループ中もしくは同じ処理能力のＰＵグループ中のＰＵから１個もしくはそれ以上のハングリ・タスクをプルする。その後、動作はブロック５０２に戻り、そのＰＵ上で実行するタスクをモニタする。
【００５５】
ブロック５０８でもしそのＰＵが余分のサイクルを持たなければ、その機構はそのＰＵが過負荷であるかもしくは処理能力の限界の近くにあるかどうかについて決定する（ブロック５１２）。もしそのＰＵが過負荷でなければ、動作はブロック５０２に戻り、そのＰＵ上で実行するタスクをモニタする。ブロック５１２でもしそのＰＵが過負荷であれば、その機構は、もし可能なら次に低い処理能力のＰＵグループもしくは同じ処理能力のＰＵグループ中のＰＵに１個もしくはそれ以上の軽いタスクをプッシュする（ブロック５１４）。その後、動作はブロック５０２に戻り、そのＰＵ上で実行するタスクをモニタする。
【００５６】
こうして、説明の実施例はそれぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための機構を提供することによって従来技術の欠点を解決する。異なる速さを持つプロセッサ・ユニットを備えたマルチ・プロセッサ・ユニット・システムにおいては、もっとも処理集約型のタスクをもっとも高い処理能力を備えた処理装置上で実行させるのが有利である。説明の実施例では、全てのタスクが最初はもっとも低い処理能力のプロセッサ・ユニット上にスケジュールされる。なぜならば、高い処理能力を備えたプロセッサ・ユニットは遊休時間を持ちがちであり、これらの高い処理能力のプロセッサ・ユニットは同じかもしくはもっと低い処理能力のプロセッサ・ユニットから１個もしくはそれ以上のタスクをそれら自身の上にプルできるかもしれないからである。プロセッサ・ユニットはこれらの時間スライスのうちの大きな割合を使用するタスクをプルしがちである。高い処理能力のプロセッサ・ユニットが過負荷であるか処理能力の限界付近であるとき、その高い処理能力のプロセッサ・ユニットは同じかもしくはそれよりも低い処理能力のプロセッサ・ユニットにタスクをプッシュされてもよい。プロセッサ・ユニットはその時間スライスの小さい割合を使用するタスクをプッシュしようとする。これは２レベル以上の階層に敷衍することが出来る。タスク・プロセッサ使用率が変化する際、システムの均衡に近い状態が達成されてもよい。タスク・プロセッサのニーズが対応する処理能力を備えたプロセッサに適合するようになるからである。
【００５７】
説明した実施例が全体としてハードウエアの実施例、もしくはハードウエアおよびソフトウエアの両方の要素を含む実施例の携帯をとることができることを理解されたい。一実施例では、説明の実施例の機構がソフトウエアで実施される。このソフトウエアというのはファームウエア、常駐のソフトウエア、マイクロコードなどを含むがこれらに限定されるものではない。
【００５８】
更に、説明の実施例は、コンピュータもしくは任意の命令実行システムと関係してもしくはそのようなシステムにより使用されるプログラム・コードを提供するコンピュータ使用可能もしくはコンピュータ読み取り可能な媒体からアクセス可能なコンピュータ・プログラム製品の形態をとってもよい。この記述の目的から、コンピュータ使用可能若しくはコンピュータ読み取り可能な媒体は、命令実行システム、装置若しくはデバイスに関連して、もしくはそれによって使用されるプログラムを含み、格納し、通信し、伝播し、もしくは移送することができる任意の装置であってよい。
【００５９】
その媒体は電子的、時期的、光学的、電磁気的、赤外線の、もしくは半導体システム（装置もしくはデバイス）または伝送媒体であってもよい。コンピュータ読み取り可能媒体の例は、半導体もしくは固体素子のメモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット（フロッピー・ディスク）、ランダム・アクセス・メモリ（ＲＡＭ），読出し専用メモリ（ＲＯＭ）、ハード磁気ディスクおよび光ディスクである。光ディスクの今日の例はコンパクト・ディスク−読出し専用メモリ（ＣＤ−ＲＯＭ  ）、コンパクト・ディスク−読出し書き込みメモリ（ＣＤ−Ｒ／Ｗ）およびＤＶＤを含む。
【００６０】
プログラム・コードを格納しもしくは実行しあるいはその両方を行うのに適するデータ処理システムはシステム・バスを介して直接的にもしくは間接的にメモリ素子に結合される少なくとも一つのプロセッサを含む。そのメモリ素子はそのプログラム・コードを実際に実行する間に用いられるローカル・メモリ、バルク・ストレージ（大容量記憶装置）、および実行中にバルク・ストレージからコードが取り出される回数を減らすために少なくとも幾つかのプログラム・コードを一時的に格納するキャッシュ・メモリを含むことができる。
【００６１】
（キイボード、ディスプレイ、ポインティング・デバイスなどを含むがこれらに限定されない）入出力装置すなわちＩ／Ｏ装置がそのシステムに直接に、または介在するＩ／Ｏコントローラを介して結合されることができる。ネットワーク・アダプタもまたそのシステムに結合されてもよく、これによってそのデータ処理システムが他のデータ処理システムにもしくは遠隔のプリンタもしくはストレージ装置に、介在する私的なもしくは公的なネットワークを介して結合されるのを可能にしてもよい。モデム、ケーブル・モデムおよびイーサーネット・カードが現在利用できる型のネットワーク・アダプタのうちの例である。
【００６２】
本発明の記載は説明ないし記述目的で提供されたものであり、網羅する意図はなく、開示した形態の発明にのみ限定する意図もない。多くの改変例や変形例は当業者には明らかであろう。実施例は本発明の原理、実際的な応用例をもっともよく説明するように選んで記述し、また企図した特定の用法として適するような種々の変形例とともに種々の実施例について他の当業者が本発明を理解することができるように記述した。
【図面の簡単な説明】
【００６３】
【図１】図解の種々の側面の実施例が導入され得る例示のデータ処理システムのブロック図である。
【図２】図解の実施例に従って、新しいタスクの割り当てを説明するプロセッサ・ユニット構成のブロック図である。
【図３】図解の実施例に従って、低い処理能力のプロセッサ・ユニットから高い処理能力のプロセッサ・ユニットにタスクをプルする点を説明するプロセッサ・ユニット構成のブロック図である。
【図４】図解の実施例に従って、高い処理能力のプロセッサ・ユニットから低い処理能力のプロセッサ・ユニットにタスクをプッシュする点を説明するプロセッサ・ユニット構成のブロック図である。
【図５】図解の実施例に従い、それぞれ異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための低い処理能力のプロセッサ・ユニットに於ける機構の動作を説明するフローチャートである。
【図６】実施例に従い、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための中間的な処理能力のプロセッサ・ユニットに於ける機構の動作を説明するフローチャートである。
【図７】実施例に従い、それぞれが異なる処理能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールするための最高の処理能力のプロセッサ・ユニットに於ける機構の動作を説明するフローチャートである。
【符号の説明】
【００６４】
１００  データ処理システム
１０２  ＮＢ／ＭＣＨ（ノース・ブリッジおよびメモリ・コントローラ・ハブ）
１０４  ＳＢ／ＩＣＨ（サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ）
１０８  メイン・メモリ
１１０  グラフィックス・プロセッサ
１１２  ＬＡＮ（ローカル・エリア・ネットワーク）
１１６  オーディオ・アダプタ
１２０  キイボードおよびマウス・アダプタ
１２２  ＭＯＤＥＭ
１２４  ＲＯＭ
１２６  ディスク
１３０  ＣＤ−ＲＯＭ
１３２  ＵＳＢおよび他のポート
１３４  ＰＣＩ／ＰＣＩe装置
１３６  ＳＩＯ（スーパーＩ／Ｏ装置）
１３８、１４０  バス
１５０  内部プロセッサ・バス
１５２、１５４、１５６  プロセッサ
２１０、２２０、２３０  プロセッサ
２４２  新しいタスク
【図１】
0005443709.tif 000002
【図２】
0005443709.tif 000003
【図３】
0005443709.tif 000004
【図４】
0005443709.tif 000005
【図５】
0005443709.tif 000006
【図６】
0005443709.tif 000007
【図７】
0005443709.tif 000008