(57)【要約】【課題】自動ワークロード分配を含むマルチプロセッサ・システムを提供する。【解決手段】スレッドがマルチプロセッサ・システムで実行される場合、オペレーティング・システムまたはハイパーバイザは、スレッドの実行特徴を連続して習得し、スレッド特有の制御ブロック内に情報を保存する。この実行特徴は、スレッド性能データを生成するために使用される。スレッドが実行される場合、オペレーティング・システムは性能データを連続して使用し、ワークロードを最も効率良く実行することになるコアにスレッドを操向する。【選択図】  図１
2009151774.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・システム内での自動ワークロード分配のための方法であって、
前記マルチプロセッサ・システムのプロセッサ上で実行中のアプリケーションの性能を測定するステップと、
前記マルチプロセッサ・システムの前記プロセッサ上での前記アプリケーションの性能に関するデータを格納するステップと、
前記アプリケーションの処理消費属性に対応する特徴を有するプロセッサにアプリケーションの実行を割り当てるステップと、
を含む、方法。
【請求項２】
前記格納が、対応するアプリケーションの制御データ構造内である、請求項１に記載の方法。
【請求項３】
前記アプリケーションの前記制御データ構造内に格納されたハードウェア利用統計を、前記システム上のプロセッサに関する特徴と比較するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記アプリケーションが前記マルチプロセッサ・システムにかけるリソース・ロードを習得するステップと、
前記リソース・ロードに基づいて前記アプリケーションの実行を割り当てる場合に、前記リソース・ロードを考慮するステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記リソース・ロードが、単一または２重の浮動小数点演算、メモリ使用量、および、単一または複数のサイクルを使用する命令のうちの、少なくとも１つを決定するステップを含む、請求項３に記載の方法。
【請求項６】
前記マルチプロセッサ・システムが性能モニタを備え、
前記測定するステップが、前記マルチプロセッサ・システムの前記性能モニタによって実行される、
請求項１に記載の方法。
【請求項７】
前記マルチプロセッサ・システムの前記プロセッサのうちの少なくとも１つのプロセッサが、複数のコアを備え、
前記測定するステップが、前記少なくとも１つのプロセッサの前記複数のコア上で実行する間に、アプリケーションの性能を測定するステップを含み、
前記測定に基づいて前記複数のコアの性能を特徴付けるステップと、
前記少なくとも１つのプロセッサの前記複数のコアの性能に関する特徴付け情報を格納するステップと、
をさらに含む、請求項１に記載の方法。
【請求項８】
マルチプロセッサ・システム内での自動ワークロード分配のための装置であって、
前記マルチプロセッサ・システムのプロセッサ上で実行中のアプリケーションの性能を測定するための手段と、
前記マルチプロセッサ・システムの前記プロセッサ上での前記アプリケーションの性能に関するデータを格納するための手段と、
前記アプリケーションの処理消費属性に対応する特徴を有するプロセッサにアプリケーションの実行を割り当てるための手段と、
を備える、装置。
【請求項９】
前記格納が、対応するアプリケーションの制御データ構造内である、請求項８に記載の装置。
【請求項１０】
前記アプリケーションの前記制御データ構造内に格納されたハードウェア利用統計を、前記システム上のプロセッサに関する特徴と比較するための手段をさらに備える、請求項９に記載の装置。
【請求項１１】
前記アプリケーションが前記マルチプロセッサ・システムにかけるリソース・ロードを習得するための手段と、
前記リソース・ロードに基づいて前記アプリケーションの実行を割り当てる場合に、前記リソース・ロードを考慮するための手段と、
をさらに備える、請求項８に記載の装置。
【請求項１２】
前記リソース・ロードが、単一または２重の浮動小数点演算、メモリ使用量、および、単一または複数のサイクルを使用する命令のうちの、少なくとも１つを決定することを含む、請求項１１に記載の装置。
【請求項１３】
前記マルチプロセッサ・システムが性能モニタを備え、
前記測定することが、前記マルチプロセッサ・システムの前記性能モニタによって実行される、
請求項８に記載の装置。
【請求項１４】
複数のプロセッサ・コアと、
自動ワークロード分配システムを格納するメモリであって、前記自動ワークロード分配システムが、前記マルチコア・プロセッサによって実行可能な、
マルチプロセッサ・システムのプロセッサ上で実行中のアプリケーションの性能を測定するための命令と、
前記マルチプロセッサ・システムのプロセッサ上での前記アプリケーションの性能に関するデータを格納するための命令と、
前記アプリケーションの処理消費属性に対応する特徴を有するプロセッサにアプリケーションの実行を割り当てるための命令と
を備える、メモリと、
を備える、マルチコア・プロセッサ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコア・プロセッサ上での自律型ワークロード分配のための方法に関し、とりわけ、マルチコア・プロセッサ上での自動ワークロード分配に関する。
【背景技術】
【０００２】
マルチコア・コンピュータ・システムでは、様々なシステム・リソース（ＣＰＵ、メモリ、Ｉ／Ｏ帯域幅、ディスク・ストレージなど）が、複数の命令スレッド上で動作するためにそれぞれ使用される。これらのマルチコア・コンピュータ・システムを効率的に動作させることに関連した課題点は、マルチプロセッサ・コンピュータ内のコアの数および複雑さが増加する場合にのみ増加する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
マルチコア集積回路の使用に関する問題の１つは、複数のコアを利用するためのソフトウェアを作成することが、しばしば困難なことである。マルチコア・プロセッサを利用するためには、しばしばタスクをスレッドに分割する必要があり、しばしばスレッドを使用可能なコア上に分配する必要がある。スレッドの分配に関する問題は、スレッドをいかに効率良く操向するかである。既知のシステムでは、ワークロードは可用性および親和性に基づいてコアに送られる。他のシステムでは、特定のタスクが特定タイプのコア上で実行するようにソフトウェアが作成される。コアの数およびタイプが増えると、より知的にワークロードを分配する機会ができることになる。
【課題を解決するための手段】
【０００４】
本発明に従った、自動ワークロード分配を含むマルチコア・システムが示される。より具体的に言えば、スレッドがマルチコア・システムで実行される場合、オペレーティング・システム／ハイパーバイザは、スレッドの実行特徴を連続して習得し、スレッド特有の制御ブロック内に情報を保存する。この実行特徴は、スレッド性能データを生成するために使用される。スレッドが実行される場合、オペレーティング・システム／ハイパーバイザは性能データを連続して使用し、ワークロードを最も効率良く実行することになるコアにスレッドを操向する。
【０００５】
より具体的に言えば、一実施形態では、本発明はマルチプロセッサ・システム内での自動ワークロード分配のための方法に関する。この方法は、マルチプロセッサ・システムのプロセッサ上で実行中のアプリケーションの性能を測定すること、マルチプロセッサ・システムのプロセッサ上でのアプリケーションの性能に関するデータを格納すること、および、アプリケーションの処理消費属性に対応する特徴を有するプロセッサにアプリケーションの実行を割り当てることを含む。
【０００６】
他の実施形態では、本発明は、マルチコア・プロセッサ内での自動ワークロード分配のための装置に関する。この装置は、マルチプロセッサ・システムのプロセッサ上で実行中のアプリケーションの性能を測定するための手段と、マルチプロセッサ・システムのプロセッサ上でのアプリケーションの性能に関するデータを格納するための手段と、アプリケーションの処理消費属性に対応する特徴を有するプロセッサにアプリケーションの実行を割り当てるための手段とを含む。
【０００７】
他の実施形態では、本発明は、複数のプロセッサ・コアとメモリとを備えるマルチコア・プロセッサ・システムに関する。メモリは、自動ワークロード分配システムを格納する。自動ワークロード分配システムは、マルチプロセッサ・システムのプロセッサ上で実行中のアプリケーションの性能を測定するため、マルチプロセッサ・システムのプロセッサ上でのアプリケーションの性能に関するデータを格納するため、および、アプリケーションの処理消費属性に対応する特徴を有するプロセッサにアプリケーションの実行を割り当てるための、マルチコア・プロセッサによって実行可能な命令を含む。
【０００８】
本発明は、添付の図面を参照することによってより良く理解され、その多数の目的、特徴、および利点を当業者に対して明らかにすることができる。いくつかの図面を通じて、同じかまたは同様の要素を指定するために同じ参照番号を使用している。
【発明を実施するための最良の形態】
【０００９】
次に図１を参照すると、本発明の選択された諸実施形態に従った単一スレッド・プログラムの改良型実行を提供する、マルチプロセッサ（ＭＰ）データ処理システム１００の高水準ブロック図が示されている。このデータ処理システム１００は、１つまたは複数のプロセッサ・グループに配置構成された１つまたは複数の処理ユニットを有し、図に示されるように、プロセッサ・グループ１１０内に４つの処理ユニット１１１、１２１、１３１、１４１を含む。対称型マルチプロセッサ（ＳＭＰ）の実施形態では、処理ユニット１１１、１２１、１３１、１４１のすべてが通常は同一であり、すなわちそれらはすべて、命令およびプロトコルの共通のセットまたはサブセットを使用して動作し、一般に同じアーキテクチャを有する。処理ユニット１１１で示されるように、各処理ユニットは、コンピュータを動作させるためにプログラム命令を実施する、１つまたは複数のプロセッサ・コア１１６ａ、１１６ｂを含むことができる。例示的処理ユニットは、すべてが集積回路によって形成された、様々な実行ユニット、レジスタ、バッファ、メモリ、および他の機能ユニットを有する、単一集積回路スーパースカラ・マイクロプロセッサを備える、インターナショナル・ビジネス・マシンズ・コーポレーションによって市販されているＰＯＷＥＲ５（ＴＭ）プロセッサとなる。プロセッサ・コアは、縮小命令セット・コンピューティング（ＲＩＳＣ）技法に従って動作し、スーパースカラ・アーキテクチャの性能をさらに向上させるために、命令のパイプライン方式およびｏｕｔ−ｏｆ−ｏｒｄｅｒ実行の両方を採用することができる。
【００１０】
さらに図１に示されるように、各プロセッサ・コア１１６ａ、１１６ｂは、高速メモリ・デバイスから構成される、オンボード（Ｌ１）キャッシュ・メモリ１１９ａ、１１９ｂ（典型的には、別々の命令およびデータ・キャッシュ）を含む。キャッシュは、一般に、システム・メモリ１６１からの値をロードするステップが長くなるのを避けることによって処理速度を上げるために、プロセッサによって繰り返しアクセスされる可能性がある値を一時的に格納するために使用される。処理ユニットは、キャッシュ・メモリ・コントローラ（図示せず）と共に、それぞれがコア１１６ａおよび１１６ｂの一部であるＬ１キャッシュ１１９ａ、１１９ｂの両方をサポートする、第２レベル（Ｌ２）キャッシュ１１２などの他のキャッシュを含むことができる。ファブリック・バス１５０を介してアクセス可能なＬ３キャッシュ１６６などの、追加のキャッシュ・レベルを提供することができる。最高（Ｌ１）から最低（Ｌ３）までの各キャッシュ・レベルは、より多くの情報を連続して格納することができるが、アクセスが長くなるというペナルティがある。たとえば、プロセッサ・コア（たとえば１１６ａ）内のオンボードＬ１キャッシュ（たとえば１１９ａ）は、１２８キロバイトの記憶容量のメモリを有することが可能であり、Ｌ２キャッシュ１１２は４メガバイトの記憶容量、Ｌ３キャッシュ１６６は１３２メガバイトの記憶容量を有することができる。欠陥のある処理ユニット構成要素の修理／交換を容易にするために、各処理ユニット１１１、１２１、１３１、１４１は、モジュラ様式で、システム１００へのスワップ、インストール、またはシステム１００からのスワップ・アウトが容易に実行可能な、交換可能回路ボード、プラグ可能モジュール、または同様のフィールド交換可能ユニット（ＦＲＵ）の形で、構築することができる。
【００１１】
処理ユニットは、システム相互接続またはファブリック・バス１５０を介して、システム１００の他の構成要素と通信する。ファブリック・バス１５０は、１つまたは複数のサービス・プロセッサ１６０、システム・メモリ・デバイス１６１、メモリ・コントローラ１６２、共有またはＬ３システム・キャッシュ１６６、あるいは、様々な周辺デバイス１６９、またはそれらすべてに接続される。プロセッサ・ブリッジ１７０は、追加のプロセッサ・グループを相互接続するために、オプションで使用可能である。図には示されていないが、データ処理システム１００は、システムの基本入力／出力論理を格納し、コンピュータ・システムの電源が最初に投入された（ブートされた）場合に必ず、周辺装置のうちの１つからオペレーティング・システムを探し出してロードする、ファームウェアも含むことが可能であることを理解されよう。
【００１２】
図１に示されるように、データ処理システム１００は、複数のスレッド間で共有される複数のシステム・リソース（たとえばキャッシュ・メモリ、メモリ・コントローラ、相互接続、Ｉ／Ｏコントローラなど）を含む。
【００１３】
システム・メモリ・デバイス１６１（ランダム・アクセス・メモリすなわちＲＡＭ）は、オペレーティング・システム１６１Ａおよびアプリケーション・プログラム１６１Ｂを含む、処理ユニットによって使用されるプログラム命令およびオペランド・データを、揮発性（一時）状態で格納する。自動ワークロード分配モジュール１６１Ｃは、オペレーティング・システム・モジュール、ハイパーバイザ構成要素などの任意の所望の形でシステム・メモリ内に格納することが可能であり、プロセッサ・ユニットの複数のコアにまたがる単一スレッド・プログラムの実行を最適化するために使用される。システム・メモリ内の機構として示されているが、当業者であれば、別の方法として、自動ワークロード分配モジュール１６１Ｃがデータ処理システム１００の他の構成要素内に実装可能であること、または、自動ワークロード分配ユニットがスタンド・アロン型ユニット（プロセッサ内またはプロセッサ外のいずれかに配置された）として存在可能であることを理解されよう。自動ワークロード分配モジュール１６１Ｃは、以下でより詳細に説明するように、命令によって優先度の値がシステム１００全体にわたって分配されるように、所定のポリシーを使用して優先度の値をコードに割り当てるため、および、その割り当てられた優先度の値を使用して各命令にタグを付けるために、システム１００上で実行中のコードに関する性能モニタ情報をチェックするように動作可能なプログラム可能レジスタを含む、実行可能命令、コード、あるいは制御論理、またはそれらすべてとして実装される。
【００１４】
システム１００は、性能モニタ１８０も含む。性能モニタ１８０は、自動ワークロード分配機能を実行する自動ワークロード分配モジュール１６１Ｃによって使用される、性能情報を提供することができる。より具体的に言えば、スレッドがマルチコア・システム内で動作する場合、オペレーティング・システム／ハイパーバイザ（hypervisor）は、スレッドの実行特徴を連続して習得し、スレッド特有の制御ブロック内に情報を保存する。この実行特徴は、スレッド性能データを生成するために使用される。スレッドが実行される場合、オペレーティング・システム／ハイパーバイザは性能データを連続して使用し、ワークロードを最も効率良く実行することになるコアにスレッドを操向する。
【００１５】
図２を参照すると、マルチコア・プロセッサ上での自動ワークロード分配の動作を示す流れ図が示されている。自動ワークロード分配機能は、ワークロードがマルチコア・システム内でどのように実行し、最適なコアにワークロードを操向するかを習得する。より具体的に言えば、自動ワークロード分配プロセスは、マルチコア・プロセッサの性能のテストを開始する。マルチコア・プロセッサは、同機種または異機種のコアを含むことができる。同機種コアを含むプロセッサの場合、各プロセッサは、半導体プロセスの変化によって異なるように実行することになる。たとえば同じ電圧レベルで、１つのコアがそのコアの他のインスタンスよりも高速で実行する可能性がある。異なるコアは異なる周波数で実行することが可能な場合がある。性能の相違は、ステップ２１０で、モジュールまたはカード・テストで（たとえば性能モニタ１８０を介して）測定される。この測定は、ステップ２２０で、設定されたターゲット・アプリケーションを実行することによって実行される。性能データは、チップ、モジュール、またはカードＲＯＭ上に格納される。異機種のコアを含むプロセッサの場合、測定値は、例として浮動小数点またはベクトル性能で構成することができる。性能の割り当ては、プロセッサの設計の知識から構成することもできる。
【００１６】
システム内でアプリケーションが最初に実行された際に、コア上の性能モニタがシステム使用の特徴を測定する。モニタは、たとえば、単一または２重の浮動小数点演算、メモリ使用量（Ｌ１、Ｌ２、または主メモリのアクセス）、単一または複数のサイクルを使用する命令、および他のアイテムを分析する。性能モニタは、ステップ２３０で、アプリケーションがシステムにかけるリソース・ロードを習得する。ステップ２４０で、アプリケーションあるいはサブルーチンまたはスレッドにタグが付けられ、性能データは格納される。性能モニタ・データは性能モニタ１８０から抽出される。ハードウェア性能データは、オペレーティング・システム／ハイパーバイザ／クラスタ・スケジューラによって使用するために、スレッドのコア・データ構造内に格納される。（ハードウェア性能データは、プロセッサのコアの性能を特徴付けるためにも使用可能であり、特徴付け情報はプロセッサ上に格納することができる。）スケジューラは、ステップ２５０で、スレッドの制御データ構造内に格納されたハードウェア利用統計と、システム上のプロセッサに関する特徴とを比較する。オペレーティング・システムまたはハイパーバイザは、ステップ２６０で、ハードウェア機能をソフトウェア測定の処理消費属性のワークロードに最も良く合致させる、適切なコアに、スレッドを割り当てる。
【００１７】
データは、プロセッサまたはコア上のワークロードを知的に組み合わせるためにスケジューラによって使用されることもできる。たとえば、自動ワークロード分配は、メモリに頻繁にアクセスするスレッドと共に、同じコアまたはプロセッサ上のキャッシュからのデータにアクセスするスレッドを実行することが、より効率的であるものと決定する場合がある。データは、キャッシュ待ち時間性能を、様々な待ち時間およびサイズを備えたキャッシュに合致させるために使用することもできる。
【００１８】
すべてが単一のシステム、クラスタ、またはハイパーバイザ実行複合システムの一部である異なる処理特徴を備えたプロセッサと、低レベルの非侵入型（non-intrusive）プロセッサまたはコアの性能監視機能と、適切なプロセッサまたはコアへと作業をルーティングするために測定されたユニット利用特徴に基づいてディスパッチを決定するスケジューリング・アルゴリズムとを組み合わせることで、有利な自動ワークロード分配システムが提供される。加えて、このプロセスは連続的であり、性能利用データはあらゆる時間スライス中に集められるため、スレッドまたはワークロードがワークロード変化を含む場合、スレッドまたはワークロードは経時的に複合システム内のプロセッサ間を自律的に移動することができる。
【００１９】
当業者であれば、データ処理システム１００が、Ｉ／Ｏアダプタ、相互接続ブリッジ、不揮発性ストレージ、ネットワークまたは取り付けられたデバイスへの接続のためのポートなどの、多くの追加の構成要素またはより少ない構成要素を含むことができることを理解されよう。こうした構成要素は本発明を理解するために必要でないため、図１に図示すること、または本明細書でさらに論じることはない。しかしながら、本発明によって提供される拡張機能は、任意のアーキテクチャのマルチスレッド型データ処理システムに適用可能であり、図１に示された汎用ＭＰアーキテクチャに決して限定されるものではないことも理解されたい。
【００２０】
したがって本発明は、すべての点で等価物に対する完全な認識を与える、添付の特許請求の範囲の趣旨および範囲によってのみ制限されることが意図される。
【図面の簡単な説明】
【００２１】
【図１】本発明の選択された諸実施形態が実装可能な、マルチプロセッサ・コンピュータ・アーキテクチャを示す図である。
【図２】マルチコア・プロセッサ上での自動ワークロード分配システムの動作を示す流れ図である。
【符号の説明】
【００２２】
１００    マルチプロセッサ・データ処理システム
１１０    プロセッサ・グループ
１１１    プロセッサ
１１２    Ｌ２キャッシュ
１１６ａ    コア１
１１６ｂ    コア２
１１９ａ    Ｌ１
１１９ｂ    Ｌ１
１２１    プロセッサ
１３１    プロセッサ
１４１    プロセッサ
１４２    Ｌ２キャッシュ
１４６ａ    コア
１４６ｂ    コア
１４９ａ    Ｌ１
１４９ｂ    Ｌ１
１５０    相互接続
１６０    サービス・プロセッサ
１６１    システム・メモリ
１６１Ａ    ＯＳ
１６１Ｂ    アプリケーション
１６１Ｃ    性能最適化
１６２    メモリ・コントローラ
１６６    Ｌ３キャッシュ
１６９    周辺デバイス
１７０    ブリッジ
１８０    性能モニタ
【図１】
2009151774.tif 000003
【図２】
2009151774.tif 000004