(57)【要約】  異種マルチプロセッサコンピューティングプラットフォームにおけるアプリケーションをスケジューリングする方法および装置について開示される。一つの実施例においては、プロセッサに係る複数のプロセッサコアのパフォーマンス（例えば、実行パフォーマンス及び／又は電力消費パフォーマンス）に関する情報が、カウンター及び／又はテーブルに保管（そして記録）される。プロセッサにおけるロジックは、保管された情報に基づいてアプリケーションを実行すべきプロセッサを決定する。他の実施例も同様に、請求され開示される。
2013537346.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって：
前記プロセッサに係る複数のプロセッサコアのパフォーマンスに応じて情報を保管するためのストレージユニットと；
前記保管された情報に基づいて、アプリケーションを実行する前記複数のプロセッサコアの第１のプロセッサコアを決定し、かつ、前記第１のプロセッサコア上で前記アプリケーションを実行するスケジュールをさせるロジックと、を含み
前記ロジックは、前記第１のプロセッサコア上で前記アプリケーションのスケジュールをさせるために、オペレーティングシステムに対してデータを伝送する、
ことを特徴とするプロセッサ。
【請求項２】
前記ロジックは、コンテキストスイッチの検知に応じて、前記第１のプロセッサコア上で前記アプリケーションのスケジュールをさせるために、オペレーティングシステムに対してデータを伝送する、
請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサに係る前記複数のプロセッサのパフォーマンスに応じて前記保管された情報は、実行パフォーマンスデータまたは電力消費パフォーマンスデータを含む、
請求項１に記載のプロセッサ。
【請求項４】
前記ロジックは、収集された情報に基づいて、前記保管された情報を更新する、
請求項１に記載のプロセッサ。
【請求項５】
前記ロジックは、少なくともいくつかの前記複数のプロセッサコア上における前記アプリケーションの実行パフォーマンスまたは電力消費パフォーマンスを予測する、
請求項１に記載のプロセッサ。
【請求項６】
前記複数のプロセッサコアは、異種のものである、
請求項１に記載のプロセッサ。
【請求項７】
前記ストレージユニットは：
共有メモリー、プライベートキャッシュ、共有キャッシュ、または、専用メモリー、を含む、
請求項１に記載のプロセッサ。
【請求項８】
前記保管された情報は、前記アプリケーションのプロセスコントロールブロックに保管されている、
請求項１に記載のプロセッサ。
【請求項９】
前記ストレージユニットは、パフォーマンス履歴テーブル（ＰＨＴ）を保管する、
請求項１に記載のプロセッサ。
【請求項１０】
前記ＰＨＴにおけるそれぞれのエントリーは、前記複数のプロセッサコアに応じて、少なくとも、プロセス識別子および命令毎の複数のサイクルを保管する、
請求項９に記載のプロセッサ。
【請求項１１】
前記ストレージユニットは、一つまたはそれ以上のパフォーマンスカウンターを保管する、
請求項１に記載のプロセッサ。
【請求項１２】
前記一つまたはそれ以上のパフォーマンスカウンターは：
コアクロックサイクル、リタイアされた命令、レベル２キャッシュミス、スケジューラーストール、リソースストール、またはブランチストール、を含む、
請求項１１に記載のプロセッサ。
【請求項１３】
方法であって：
プロセッサに係る複数の異種プロセッサコアのパフォーマンスに応じて情報を保管するステップと；
前記保管された情報に基づいて、アプリケーションを実行する前記複数のプロセッサコアの第１のプロセッサコアを決定するステップと；
前記第１のプロセッサコアに関するデータのオペレーティングシステムに対する伝送に応じて、前記第１のプロセッサコア上で前記アプリケーションを実行するスケジュールをするステップと、を含む
ことを特徴とする方法。
【請求項１４】
前記データの伝送は、コンテキストスイッチの検知に応じたものである、
請求項１３に記載の方法。
【請求項１５】
前記プロセッサに係る前記複数のプロセッサのパフォーマンスに応じて前記保管された情報は、実行パフォーマンスデータまたは電力消費パフォーマンスデータを含む、
請求項１３に記載の方法。
【請求項１６】
前記方法は、さらに、
収集された情報に基づいて、前記保管された情報を更新するステップ、を含む
請求項１３に記載の方法。
【請求項１７】
前記方法は、さらに、
少なくともいくつかの前記複数のプロセッサコア上における前記アプリケーションの実行パフォーマンスまたは電力消費パフォーマンスを予測するステップ、を含む
請求項１３に記載の方法。
【請求項１８】
前記情報を保管するステップは、前記情報を前記アプリケーションのプロセスコントロールブロックに保管する、
請求項１３に記載の方法。
【請求項１９】
前記保管された情報は：
保管されたパフォーマンス履歴テーブル（ＰＨＴ）であって、
前記ＰＨＴにおけるそれぞれのエントリーは、前記複数のプロセッサコアに応じて、少なくとも、プロセス識別子および命令毎の複数のサイクルであり；もしくは
保管された一つまたはそれ以上のパフォーマンスカウンターであって、
前記一つまたはそれ以上のパフォーマンスカウンターは：
コアクロックサイクル、リタイアされた命令、レベル２キャッシュミス、スケジューラーストール、リソースストール、またはブランチストール、を含んでいる、
請求項１３に記載の方法。
【請求項２０】
コンピューティングシステムであって：
複数のプロセッサコアを含むプロセッサと；
前記プロセッサに係る複数のプロセッサコアのパフォーマンスに応じて情報を保管するためのストレージユニットと；を含み、
少なくとも一つの前記複数のプロセッサコアは、前記保管された情報に基づいて、アプリケーションを実行する前記複数のプロセッサコアの第１のプロセッサコアを決定し、かつ、前記第１のプロセッサコア上で前記アプリケーションを実行するスケジュールをさせるためのロジックを含んでおり、
前記ロジックは、前記第１のプロセッサコア上で前記アプリケーションのスケジュールをさせるために、コンテキストスイッチの検知に応じて、オペレーティングシステムに対してデータを伝送する、
ことを特徴とするコンピューティングシステム。
【請求項２１】
前記プロセッサに係る前記複数のプロセッサのパフォーマンスに応じて前記保管された情報は、実行パフォーマンスデータまたは電力消費パフォーマンスデータを含む、
請求項２０に記載のコンピューティングシステム。
【請求項２２】
前記ロジックは、少なくともいくつかの前記複数のプロセッサコア上における前記アプリケーションの実行パフォーマンスまたは電力消費パフォーマンスを予測する、
請求項２０に記載のコンピューティングシステム。
【請求項２３】
前記複数のプロセッサコアは、異種のものである、
請求項２０に記載のコンピューティングシステム。
【請求項２４】
前記ストレージユニットは、パフォーマンス履歴テーブル（ＰＨＴ）を保管し、
前記ＰＨＴにおけるそれぞれのエントリーは、前記複数のプロセッサコアに応じて、少なくとも、プロセス識別子および命令毎の複数のサイクルを保管する、
請求項２０に記載のコンピューティングシステム。
【請求項２５】
前記ストレージユニットは、一つまたはそれ以上のパフォーマンスカウンターを保管し、
前記一つまたはそれ以上のパフォーマンスカウンターは：
コアクロックサイクル、リタイアされた命令、レベル２キャッシュミス、スケジューラーストール、リソースストール、またはブランチストール、を含む、
請求項２０に記載のコンピューティングシステム。
【請求項２６】
前記コンピューティングシステムは、さらに、
前記プロセッサコアに接続されたオーディオデバイスを含む、
請求項２０に記載のコンピューティングシステム。
【請求項２７】
命令を保管するためのコンピューターで読取り可能なメディアであって、前記命令がプロセッサで実行されると：
プロセッサに係る複数の異種プロセッサコアのパフォーマンスに応じて情報を保管し；
前記保管された情報に基づいて、アプリケーションを実行する前記複数のプロセッサコアの第１のプロセッサコアを決定し；かつ
前記第１のプロセッサコアに関するデータのオペレーティングシステムに対する伝送に応じて、前記第１のプロセッサコア上で前記アプリケーションを実行するスケジュールをする、
ことを特徴とするコンピューターで読取り可能なメディア。
【請求項２８】
前記命令は、コンテキストスイッチの検知に応じて、前記プロセッサに前記データの伝送をさせる、
請求項２７に記載のコンピューターで読取り可能なメディア。
【請求項２９】
前記プロセッサに係る前記複数のプロセッサのパフォーマンスに応じて前記保管された情報は、実行パフォーマンスデータまたは電力消費パフォーマンスデータを含む、
請求項２７に記載のコンピューターで読取り可能なメディア。
【請求項３０】
前記命令は、前記プロセッサに、少なくともいくつかの前記複数のプロセッサコア上における前記アプリケーションの実行パフォーマンスまたは電力消費パフォーマンスを予測させる、
請求項２７に記載のコンピューターで読取り可能なメディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係る開示は、一般的に電子機器の分野に関する。より特定的には、本発明の実施例は、異種マルチプロセッサコンピューティングプラットフォームにおいてアプリケーションをスケジューリングするための技術に関する。
【背景技術】
【０００２】
パフォーマンス（ｐｅｒｆｏｒｍａｎｃｅ）を改善するために、いくつかのコンピューティングシステムはマルチ（ｍｕｌｔｉｐｌｅ）なプロセッサを含んでいる。しかしながら、マルチプロセッサコンピューティングシステムの規模は、電力の制約によって制限されてしまう。すなわち、より多くのプロセッサがシステムに追加されるにつれて、電力消費が増加するのである。同様に、追加的な電力消費は、より多くの熱を発生する。それゆえ、熱と電力消費は、マルチプロセッサコンピューティングシステムの規模を制限し得るものである。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
マルチプロセッサコンピューティングシステムの規模は、電力の制約によって制限されてしまう。すなわち、より多くのプロセッサがシステムに追加されるにつれて、電力消費が増加する。
【課題を解決するための手段】
【０００４】
プロセッサに係る複数のプロセッサコアのパフォーマンス（例えば、実行パフォーマンス及び／又は電力消費パフォーマンス）に関する情報が、カウンター及び／又はテーブルに保管（そして記録）される。プロセッサにおけるロジックは、保管された情報に基づいてアプリケーションを実行すべきプロセッサを決定する
【図面の簡単な説明】
【０００５】
添付の図面を参照して詳細な説明が提供される。図における、参照番号の一番左の数字は、その参照番号が最初に登場する図を示している。異なる図における同一の参照番号の使用は、類似または同一のアイテムであることを示している。
【図１】図１は、ここにおいて述べられる種々の実施例を実行するために使用される、コンピューティングシステムに係る実施例のブロックダイヤグラムを示している。
【図２】図２は、実施例に従って、プロセッサコア部分またはコンピューティングシステムの他のコンポーネント部分のブロックダイヤグラムを示している。
【図３】図３は、いくつかの実施例に従ったフローチャートを示している。
【図４】図４は、いくつかの実施例に従ったフローチャートを示している。
【図５】図５は、ここにおいて述べられる種々の実施例を実行するために使用される、コンピューティングシステムに係る実施例のブロックダイヤグラムを示している。
【図６】図６は、ここにおいて述べられる種々の実施例を実行するために使用される、コンピューティングシステムに係る実施例のブロックダイヤグラムを示している。
【発明を実施するための形態】
【０００６】
以降の記載においては、種々の実施例に係る完全な理解を提供するために、数多くの具体的な詳細部分が明らかにされる。しかしながら、本発明の種々の実施例は、具体的な詳細部分が無くても実施し得るものである。他の例においては、よく知られた方法、工程、コンポーネント、そして回路は、詳細には記載されない。本発明の特定の実施例を不明瞭にしないためである。さらに、本発明の実施例に係る種々の態様が、種々の手段を使用して実行され得る。半導体集積回路（「ハードウェア」）、一つまたはそれ以上のプログラムに編成されたコンピューターで読み取り可能な命令（「ソフトウェア」）、または、ハードウェアとソフトウェアとのいくつかの組み合わせ、といったものである。この発明開示の目的のために、「ロジック（ｌｏｇｉｃ）」に対する参照は、ハードウェア、ソフトウェア、または、それらのいくつかの組み合わせ、のいずれかを意味するものである。同様に、「命令」と「マクロオペレーション（ｕｏｐ）」は、ここにおいて述べるように交換可能である。
【０００７】
チップ−マルチプロセッサ（ＣＭＰ）システムが、例えば、サーバーやクライアントプラットフォームにとって、広まるにつれて、異種ＣＭＰが勢いを付け始めている。例えば、より小さなプロセッサコアは、より良いパフォーマンス／ワットについてのアドバンテージを提供し得る。そこで、より大きなプロセッサと一緒により小さなプロセッサを加えることは、魅力的であり得る。ここにおいて述べるように、異種ＣＭＰは、性能、エリア（ａｒｅａ）、及び／又は、電力消費が異なる一式のコアを含んでいる。そうしたプラットフォームは、いくつかの実施例においてパフォーマンスと電力効率の両方が達成できるように、種々のアプリケーションに対するより良いコンピューターリソースのマッピングを可能にする。
【０００８】
しかしながら、異種ＣＭＰプラットフォームデザインにおける主なチャレンジの一つは、アプリケーションのスケジューリングである。例えば、複数のプロセッサコアに対する、パフォーマンス、及び／又は、電力効率を最適化するマッピングのアプリケーションである。この目的のために、一つの実施例は、異種のコア（例えば、単一の集積回路（ＩＣ）のチップ／ダイ上）における動的なスケジューリングのアプリケーションに関するものである。一つの実施例においては、２つのコンポーネントが、アプリケーションをスケジュールするために使用され得る。第１には、プロセッサコアモデル化予想方法が提供される。第２には、コアモデル化予想方法に基づいて異種プロセッサコアのためにアプリケーションをスケジュールするようにスケジューリングロジックが使用される。
【０００９】
ここにおいて述べられる技術は、図１と図５，６を参照して述べられるプロセッサといった、パフォーマンス状態設定を伴うあらゆるタイプのプロセッサにおいて使用され得る。より特定的には、図１は、本発明の実施例に従って、コンピューティングシステム１００のブロックダイヤグラムを示している。システム１００は、一つまたはそれ以上のプロセッサである１０２−１から１０２−Ｎ（ここにおいては、一般的に「プロセッサ１０２」として参照される）を含み得る。プロセッサ１０２は、相互接続ネットワークまたはバス１０４を介して通信できる。それぞれのプロセッサは、種々のコンポーネントを含んでおり、明確化のために、そのうちのいくつかがプロセッサ１０２−１に関して述べられているだけである。従って、残されたプロセッサ１０２−２から１０２−Ｎのそれぞれは、プロセッサ１０２−１に関して述べられたものと同一または類似のコンポーネントを含み得る。
【００１０】
一つの実施例においては、プロセッサ１０２−１は、一つまたはそれ以上のプロセッサコア１０６−１から１０６−Ｍ（ここにおいては、一般的に「コア１０６」として参照される）、共有キャッシュ１０８、及び／又は、ルーター１１０を含み得る。プロセッサコア１０６は、単一の集積回路（ＩＣ）チップ上で実施され得る。さらに、チップは、一つまたはそれ以上の共有の、及び／又は、プライベートキャッシュ（キャッシュ１０８といったもの）、バスまたは相互接続（バスまたは相互接続ネットワーク１１２といったもの）、メモリーコントローラー（図５と図６に関して述べたようなものといったもの）、または、他のコンポーネントを含み得る。同様に、コア１０６は、異種のものであり得る（例えば、異なるサイズ、パフォーマンス特性、電力消費特性、等のここにおいて述べられたもの）。
【００１１】
一つの実施例においては、プロセッサ１０２−１、及び／又は、システム１００の種々のコンポーネントとの間で通信するために、ルーター１１０が使用される。さらに、プロセッサ１０２−１は、一つ以上のルーター１１０を含み得る。さらには、プロセッサ１０２−１の内部または外部にある種々のコンポーネント間でデータルーティン（ｒｏｕｔｉｎｇ）を可能にするように、数多くのルーター１１０が通信状態であり得る。
【００１２】
共有キャッシュ１０８は、コア１０６といった、プロセッサ１０２−１の一つまたはそれ以上のコンポーネントによって利用されるデータ（例えば、命令を含む）を保管する。例えば、共有キャッシュは、プロセッサ１０２のコンポーネントによるアクセスをより速くするために、メモリー１１４の保管されたデータをローカルにキャッシュすることができる。一つの実施例においては、キャッシュ１０８は、中間レベルキャッシュ（レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、またはキャッシュの他のレベル、といったもの）、最終レベルキャッシュ（ＬＬＣ）、及び／又は、これらの組み合わせを含み得る。さらに、プロセッサ１０２−１の種々のコンポーネントは、バス（例えば、バス１１２）、及び／又は、メモリーコントローラーまたはハブを通じて、直接的に共有キャッシュ１０８と通信し得る。図１に示すように、いくつかの実施例において、一つまたはそれ以上のコア１０６は、レベル１（Ｌ１）、及び／又はレベル２（Ｌ２）のキャッシュ（１１６−１）（ここにおいては、一般的に「Ｌ１／Ｌ２キャッシュ１１６」として参照される）を含み得る。
【００１３】
一つの実施例においては、さらに図２から４に関して以下に述べるように、それぞれのコアは、アプリケーションをシステムにおける種々のプロセッサコアに割り当てることを手助けするためのロジック１２０を含み得る。例えば、アプリケーションは、カウンター１２２（システムにおける一つまたはそれ以上の他のコアのパフォーマンスを示すパフォーマンスカウンターといったもの）に保管された情報に基づいて、割り当てられる（例えば、オペレーティングシステム（ＯＳ）によって）。アプリケーションは、また、テーブル（パフォーマンス履歴テーブル（ＰＨＴ）１２４−１といったもの）の中にインデックスするために使用されるプロセス識別子（ＩＤ）に基づいて割り当てされ得る（例えば、ＯＳによって）。テーブルは、共有メモリー（メモリー１１４、及び／又は、共有キャッシュ１０８といったもの）もしくは、プライベートキャッシュ（例えば、Ｌ１／Ｌ２キャッシュ１１６）といった、プロセッサ１０２またはコア１０６（例えば、ＰＨＴ１２４−１）の専用ストレージデバイスの中に保管される。テーブルは、例えば、さらに図２から４に関して以下に述べるように、アプリケーションをスケジューリングするときに、オペレーティングシステム（ＯＳ）に対して情報/ヒント（ｈｉｎｔ）を提供する。いくつかの実施例においては、ＯＳとアプリケーションは、メモリー１１４（または図５のメモリー５１２および図６のメモリー６１０／６１２）に保管され得る。
【００１４】
図２は、本発明の実施例に従って、プロセッサコア１０６とコンピューティングシステムの他のコンポーネントの部分を示すブロックダイヤグラムである。一つの実施例においては、図２に示された矢印は、コア１０６を通した命令の流れ方向を示している。一つまたはそれ以上のプロセッサコア（プロセッサコア１０６といったもの）は、図１に関して述べたような、単一の集積回路チップ（またはダイ）上で実施され得る。さらに、チップは、一つまたはそれ以上の共有キャッシュ及び／又はプライベートキャッシュ（例えば、図１のキャッシュ１０６と１０８）、相互接続（例えば、図１の相互接続１０４及び／又は１１２）、ロジック１２０、カウンター１２２、メモリーコントローラー、もしくは他のコンポーネント、を含み得る。
【００１５】
図２に示すように、プロセッサコア１０６は、コア１０６による実行のために、命令（条件分岐を伴う命令を含む）をフェッチするためのフェッチユニット２０２を含み得る。命令は、メモリー１１４及び／又は図４と図５に関して述べられたメモリーデバイスといった、あらゆるストレージデバイスからフェッチされ得る。コア１０６は、また、フェッチされた命令をデコードするためのデコードユニット２０４を含み得る。例えば、デコードユニット２０４は、フェッチされた命令を複数のｕｏｐ（マクロオペレーション：ｍａｃｒｏ−ｏｐｅｒａｔｉｏｎ）へとデコードする。加えて、コア１０６は、スケジュールユニット２０６を含み得る。スケジュールユニット２０６は、命令がディスパッチ（ｄｉｓｐａｔｃｈ）の用意ができるまで、デコードされた命令（例えば、デコードユニット２０４から受け取ったもの）の保管に関して種々のオペレーションを実行する。例えば、デコードされた命令の全てのソース値が使用可能となるまで、である。一つの実施例においては、スケジュールユニット２０６は、実行のために、実行ユニット２０８に対して、デコードされた命令をスケジュールし、及び／又は、発行（またはディスパッチ）することができる。実行ユニット２０８は、命令がデコード（例えば、デコードユニット２０４によって）され、そしてディスパッチ（例えば、スケジュールユニット２０６によって）された後で、ディスパッチされた命令を実行する。一つの実施例においては、実行ユニット２０８は、一つまたはそれ以上の実行ユニットを含み得る。実行ユニットは、また、足し算、引き算、掛け算、及び／又は割り算といった、種々の計算オペレーションを実行することができ、一つまたはそれ以上の計算ロジックユニット（ＡＬＵ）を含み得る。一つの実施例において、コプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）（図示なし）は、実行ユニット２０８と協同して、種々の計算オペレーションを実行し得る。
【００１６】
さらに、実行ユニット２０８は、順番を変えてアウトオブオーダー（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）の命令を実行することができる。従って、プロセッサコア１０６は、一つの実施例においては、アウトオブオーダープロセッサであり得る。リタイアメント（ｒｅｔｉｒｅｍｅｎｔ）ユニット２１０は、命令がコミット（ｃｏｍｍｉｔ）された後で、実行された命令をリタイアさせる。一つの実施例においては、実行された命令がリタイアされると、命令の実行からコミットされているプロセッサの状態を結果として生じ、命令によって使用される物理的なレジスターは割り当てが解除、等される。
【００１７】
コア１０６は、また、一つまたはそれ以上のバス（例えば、バス１０４及び／又は１１２）を介して、プロセッサコア１０６と他のコンポーネント（図１に関して述べられたコンポーネントといったもの）との間での通信を可能にするバスユニット２１４を含み得る。コア１０６は、また、ロジック１２０を含む、コア１０６の種々のコンポーネントによってアクセスされたデータを保管するための一つまたはそれ以上のカウンター１２２を含み得る。図１および図３と図４に関して述べたようにである。
【００１８】
さらに、いくつかの実施例においては、ロジック１２０は、アプリケーションのパフォーマンスに絶えず注意するだけではなく、仮にシステムにおける別のコア上で実行されるとした場合の、アプリケーション実行、及び／又は、電力消費パフォーマンスを予測する（例えば、カウンター１２２に保管された値に基づいて）。この情報は、電力、パフォーマンス、エネルギー、これらの組み合わせ、等といった、種々の閾値に基づいてスケジューリングを実行するＯＳに対して、提供される。例えば、ＯＳ及び／又はロジック１２０は、考慮されているプロセッサの、種々の実行または電力消費のパフォーマンスを比較して、どのコアがより良い実行または電力消費のパフォーマンスを提供するかについて決断を下す（ここにおいて述べられた種々の閾値に基づいて）。
【００１９】
一つの実施例に従って、シグネチャー（ｓｉｇｎａｔｕｒｅ）ベースのアプローチが使用される。例えば、それぞれのアプリケーションは、システムにおける一つまたはそれ以上のコア上で実行され、アプリケーションのパフォーマンス統計は、パフォーマンス履歴テーブル（ＰＨＴ）の中に保管され得る。パフォーマンス統計は、ＣＰＩ（Ｃｙｃｌｅｓ  Ｐｅｒ  Ｉｎｓｔｒｕｃｔｉｏｎ）、ＭＰＩ（Ｍｉｓｓｅｓ  Ｐｅｒ  Ｉｎｓｔｒｕｃｔｉｏｎ）、等を含み得る。例えば、サンプルの表１に示すように、それぞれの表は、３つまたはそれ以上のフィールドを有している。第１のフィールドは、プロセスＩＤを示し、第２のフィールドは、大コア上で実行される間のアプリケーションのＣＰＩを保管するためのものであり、最後のフィールドは、小コア上で実行される間のアプリケーションのＣＰＩを保管する。アプリケーションが他のコアに対してコンテキストスイッチ（ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈ）されるときはいつでも、ロジック１２０は新しい情報を得て、ＰＨＴ１２４を更新する。
【表１】
2013537346.tif 000003
【００２０】
ＰＨＴ１２４のサイズは非常に小さい。例えば、ＣＰＩだけが使用される場合は、エントリー毎に１２バイトのメモリーが、履歴情報を保管するために必要である。ＰＨＴ１２４は、また、アプリケーションのプロセスコントロールブロック（Ｐｅｏｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ：ＰＣＢ）に保管され、及び／又は、アプリケーションが実行されるようにスケジュールされたときはいつでも、他のメモリー（例えば、ＰＨＴ１２４、キャッシュ１０６、メモリー１１４、キャッシュ１０８、等）にロードされ得る。この方法論は、プロセスを越えて拡張され、プロセスの中の種々のホットスポット（ｈｏｔｓｐｏｔ）のために使用され得る。
【００２１】
一旦ＰＨＴが設定されると、アプリケーションが実行するようにスケジュールされるときはいつも、ロジック１２０はＰＨＴから情報を読み出し、図３に示すような既定のマトリクス（電力／パフォーマンス、等といったもの）に基づいた最適なスケジューリング方針のために、ＯＳに対してヒントを提供する。
【００２２】
図３を参照すると、実施例に従って、シグネチャーベースのコアモデル化予想方法アプローチのフローチャートが示されている。いくつかの実施例においては、図１と２および図５と６に関して述べた種々のコンポーネントが、図３に関して述べた一つまたはそれ以上のオペレーションを実行するために利用され得る。
【００２３】
図１から図３を参照すると、オペレーション３０２で、コンテキストスイッチにおいて、アプリケーションがロードされる（例えば、プロセス制御ブロック、または、ここにおいて述べられる別のロケーションからである）。オペレーション３０４では、ロジック１２０がＰＨＴから情報を読み出す。オペレーション３０６では、ＰＨＴ情報に基づいて、大または小プロセッサコアにとって、プロセスが最適（例えば、パフォーマンスまたは電力消費目的のために）であるかどうかを決定する。次に、この情報は、オペレーション３０８で、ＯＳに対して送付される（実施例においては、例えば、ロジック１２０によって決定された電力消費、及び／又は、パフォーマンスの考慮に基づくものである）。オペレーション３１０では、ロジック１２０は、さらなる履歴情報を収集し（例えば、オペレーション３０６における最新の決定に基づいて）、ＰＨＴ情報を更新する。
【００２４】
図４を参照すると、実施例に従って、パフォーマンスベースのコアモデル化予想方法アプローチのフローチャートが示されている。いくつかの実施例においては、図１と２および図５と６に関して述べた種々のコンポーネントが、図４に関して述べた一つまたはそれ以上のオペレーションを実行するために利用され得る。
【００２５】
図１と図２および図４を参照すると、オペレーション４０２で、コンテキストスイッチにおいて、アプリケーションがロードされる（例えば、プロセス制御ブロック、または、ここにおいて述べられる別のロケーションからである）。オペレーション４０４では、ロジック１２０がパフォーマンスカウンター（例えば、カウンター１２２）に保管された値を読み出す。オペレーション４０６では、パフォーマンスカウンター情報に基づいて、大または小プロセッサコアにとって、プロセスが最適（例えば、パフォーマンスまたは電力消費目的のために）であるかどうかを決定する。次に、この情報は、オペレーション４０８で、ＯＳに対して送付される（実施例においては、例えば、ロジック１２０によって決定された電力消費、及び／又は、パフォーマンスの考慮に基づくものである）。オペレーション４１０では、ロジック１２０は、さらなる履歴情報を収集し（例えば、オペレーション４０６における最新の決定に基づいて）、パフォーマンスカウンター（例えば、カウンター１２２）を更新する。
【００２６】
パフォーマンスカウンターベースのアプローチにおいては、いくつかの実施例に従って、大コア上でアプリケーションが実行されている間の小コア上でのアプリケーションのパフォーマンスを効果的に予想する動的モデルが使用される。その逆もまた同様である。このアプローチは、パフォーマンスカウンター（例えば、カウンター１２２）を使用し、以下の式に基づいてパフォーマンスを予想する。
小コアにおけるサイクル＝（（大コアにおけるサイクル  −  大コアにおけるストールサイクル）  ＊  小コアのイシュー幅  ／  大コアのイシュー幅  ＊  増倍係数）  ＋  （大コアにおけるＬ１ミス  ＊  小コアにおけるＬ１ミスペナルティ）  ＋  （大コアにおけるＬ２ミス  ＊  小コアにおけるＬ２ミスペナルティ）
【００２７】
一つの実施例においては、増倍係数は、Ｌ２ミスと読込／保管命令の数に基づいて経験的に引き出され得る。いくつかの実施例においては、大コアは、小コアに比べて２倍の読込／保管ユニット数を有している。さらに、いくつかの実施例において、かなりのＬ２ミスアプリケーションは、いくつかのワークロードにおいて観察されるようにメモリーレベルの並行処理を欠くために、大コアのアウトオブオーダー性による利益を受けられない。
大コアにおけるサイクル＝（（小コアにおけるサイクル  −  小コアにおけるストールサイクル）  ＊  大コアのイシュー幅  ／  小コアのイシュー幅）／（１−ストール係数）
【００２８】
ストール係数は、一度アプリケーションを大コア上で実行し、ストールサイクルと全体サイクルのパフォーマンスデータを収集することによって引き出され得る。また、いくつかのプラットフォームは、キャッシュミス、浮動点ストール、等といった、長いレイテンシー（ｌａｔｅｎｃｙ）オペレーションによるストールを特定するために、種々のパフォーマンスカウンターを含んでいる。これらのストールは、ロジック１２０で使用されるときに、リタイアされた読込／保管命令、Ｌ２ミス、等といった、他のカウンターと組合わされて、アプリケーションが別のコア上で実行されるとした場合に、そのアプリケーションのパフォーマンスの予測を手助けする。たとえ、プラットフォームに特定のメモリーストールカウンターが無い場合でも、プラットフォームにおける他のストールカウンターを使用して、ストールが見積もられる。
【００２９】
スケジュールに関して、以下のロジック１２０によって提供されたパフォーマンス情報に基づいて、いくつかの実施例は、種々のアプリケーションを大コアと小コアに対してマップする。（１）単一のアプリケーションに対して、大コアの小コアに対するパフォーマンス比率がプログラム可能な値よりも大きい場合は、大コア上でアプリケーションをスケジュールし、そうでない場合は、小コア上でスケジュールする。このプログラム可能な値は、コアの中に存在しており、種々の電力／性能マトリクスに基づいて、ＭＳＲ（Ｍａｃｈｉｎｅ  Ｓｔａｔｅ  Ｒｅｇｉｓｔｅｒ）を使用して書き込まれる。（２）マルチアプリケーションに対して、例えば、Ｎ個のアプリケーションがスケジュールされる必要があるときは、大コアの小コアに対するパフォーマンス比率に基づいて、アプリケーションを配列する。トップのＮ／２アプリケーション（例えば、最大のゲインを有するアプリケーション）は、大コア上でスケジュールされ、ボトムのＮ／２アプリケーションは、小コア上でスケジュールされる。
【００３０】
いくつかの実施例においては、一つまたはそれ以上の以下に示すカウンターが使用され得る（例えば、カウンター１２２）：
（１）コアクロックサイクル：このカウンターは、コアが命令を実行してアクティブ（ａｃｔｉｖｅ）なときのサイクル数をカウントする
（２）リタイアされた命令：このカウンターは、与えられたサンプル時間の間にコアがリタイアした命令の数をカウントする
（３）Ｌ２ミス：このカウンターは、Ｌ２をミスしたメモリーリファレンスの数をカウントする
（４）スケジューラーストール：このカウンターは、小コアが命令をスケジュールすることができなかったサイクルの数をカウントする（このカウントは、また、小コアにおけるＬ２ミスとＬ２ミスレイテンシーとの積に基づいても引き出され得る）
（５）リソースストール：このカウンターは、予約ステーション、長いレイテンシーミス、等といった、リソースが使用できないために大コアがストールしたサイクルの数をカウントする
（６）ブランチストール：このカウンターは、ブランチの予測ミスのために失われたサイクルの全体数をカウントする
【００３１】
図５は、  本発明の一つの実施例に従って、コンピューティングシステム５００のブロックダイヤグラムを示している。コンピューティングシステム５００は、相互接続ネットワーク（またはバス）５０４を介して通信する一つまたはそれ以上の中央処理装置（ＣＰＵ）またはプロセッサを含んでいる。プロセッサ５０２は、一般用途プロセッサ、ネットワークプロセッサ（コンピューターネットワーク５０３上で通信されたデータを処理するもの）、または他のタイプのプロセッサ（縮小命令セットコンピューター（ＲＩＳＣ）プロセッサ、または複合命令セットコンピューター（ＣＩＳＣ）プロセッサを含む）を含み得る。さらに、プロセッサ５０２は、単一またはマルチコアデザインであり得る。マルチコアデザインのプロセッサ５０２は、同一の集積回路（ＩＣ）ダイ上で異なるタイプのプロセッサコアを統合し得る。マルチコアデザインのプロセッサ５０２は、また、対称もしくは非対称のマルチプロセッサとして実施され得る。一つの実施例において、一つまたはそれ以上のプロセッサ５０２は、図１のプロセッサと同一か類似のものであり得る。例えば、一つまたはそれ以上のプロセッサ５０２は、図１から図４に関して述べられたコア１０６を含み得る。また、図１から図４に関して述べられたオペレーションは、システム５００の一つまたはそれ以上のコンポーネントによって実行され得る。
【００３２】
チップセット５０６も、また、相互接続ネットワーク５０４と通信し得る。チップセット５０６は、メモリコントロールハブ（ＭＣＨ）５０８を含む。ＭＣＨ５０８は、メモリー５１２（図１におけるメモリー１１４と同一または類似のもの）と通信するメモリーコントローラー５１０を含み得る。メモリー５１２は、ＣＰＵ５０２、またはコンピューティングシステム５００に含まれる他のあらゆるデバイスによって実行され得る命令シーケンスを含むデータを保管し得る。本発明の一つの実施例においては、メモリー５１２は、ランダムアクセスメモリー（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、または、他のタイプのストレージデバイスといった、一つまたはそれ以上の揮発性ストレージ（もしくはメモリー）デバイスを含み得る。ハードディスク装置といった不揮発性のメモリーも、また、使用することができる。マルチＣＰＵ、及び／又は、マルチシステムメモリーといった追加的なデバイスは、相互接続ネットワーク５０４を介して通信し得る。
【００３３】
ＭＣＨ５０８は、また、ディスプレイデバイス５１６と通信するグラフィックインターフェイス５１４を含み得る。本発明の一つの実施例においては、グラフィックインターフェイス５１４は、アクセラレーテッドグラフィックスポート（ＡＧＰ）を介してディスプレイデバイス５１６と通信し得る。本発明の実施例において、ディスプレイ５１６（平面パネルディスプレイといったもの）は、例えば、ビデオメモリーまたはシステムメモリーといったストレージデバイスに保管された画像のデジタル表現を、ディスプレイ１６によって解釈されて表示されるディスプレイ信号に翻訳する信号変換器を通して、グラフィックインターフェイス５１４と通信し得る。ディスプレイデバイスによって生成されたディスプレイ信号は、解釈される以前に種々のコントロールデバイスを通過し、後にディスプレイ５１６上に表示される。
【００３４】
ハブインターフェイス５１８によって、ＭＣＨ５０８と入力／出力コントロールハブ（ＩＣＨ）５２０とは通信できる。ＩＣＨ５２０は、コンピューティングシステム５００と通信する入力／出力デバイスに対するインターフェイスを提供する。ＩＣＨ５２０は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラー、または他のタイプのペリフェラルブリッジもしくはコントローラーといった、ペリフェラルブリッジ（またはコントローラー）５２４を通じてバス５２２と通信し得る。ブリッジ５２４は、ＣＰＵ５０２とペリフェラルデバイスとの間のデータパス（ｄａｔａ  ｐａｔｈ）を提供し得る。他のタイプのトポロジー（ｔｏｐｏｌｏｇｙ）も使用され得る。マルチバスは、また、例えば、マルチブリッジまたはコントローラーを通じて、ＩＣＨ５２０と通信し得る。さらに、ＩＣＨ５２０と通信する他の周辺機器が含まれ得る。本発明の種々の実施例における、インテグレーテッドドライブエレクトロニクス（ＩＤＥ）もしくはスモールコンピューターシステムインターフェイス（ＳＣＳＩ）のハードディスクドライブ、ＵＳＢポート、キーボード、マウス、パラレルポーオ、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインターフェイス（ＤＶＩ））、または他のデバイスといったものである。
【００３５】
バス５２２は、オーディオデバイス５２６、一つまたはそれ以上のディスクドライブ、そしてネットワークインターフェイスデバイス５３０（コンピューターネットワーク５０３と通信するもの）と通信し得る。他のデバイスも、バス５２２を介して通信し得る。本発明のいくつかの実施例においては、種々のコンポーネント（ネットワークインターフェイスデバイス５３０といったもの）も、また、ＭＣＨ５０８と通信することができる。加えて、プロセッサ５０２とＭＣＨ５０８とは、単一のチップを形成するように結合され得る。さらに、本発明の他の実施例においては、グラフィックアクセラレーター５１６が、ＭＣＨ５０８の中に含まれ得る。
【００３６】
さらには、コンピューティングシステム５００は、揮発性、及び／又は不揮発性のメモリー（またはストレージ）を含み得る。例えば、不揮発性のメモリーは、以下のうち一つまたはそれ以上を含む。リードオンリーメモリー（ＲＯＭ）、プログラム可能なＲＯＭ（ＰＲＯＭ）、消去可能なＰＲＯＭ（ＥＰＲＯＭ）、電気的なＥＰＲＯＭ（ＥＥＰＲＯＭ）、ハードディスクドライブ（例えば、５２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、フラッシュメモリー、光磁気ディスク、または、電子的データ（例えば、命令を含む）を保管することができる他のタイプの不揮発性で機械読取可能なメディア、である。
【００３７】
図６は、本発明の実施例に従って、ポイント−ツー−ポイント（ＰｔＰ）構成において配置されたコンピューティングシステム６００を示している。特には、図６は、プロセッサ、メモリー、そして、入力／出力デバイスが、数多くのポイント−ツー−ポイントインターフェイスによって相互接続されているシステムを示している。図１から図５に関して述べられたオペレーションが、システム６００の一つまたはそれ以上のコンポーネントによって実行され得る。
【００３８】
図６に示すように、システム６００は、数個のプロセッサを含み得るが、明確化のために、そのうち２つのプロセッサ６０２と６０４だけが表されている。それぞれのプロセッサ６０２と６０４は、メモリー６１０および６１２と通信できるように、ローカルなメモリコントロールハブ（ＭＣＨ）６０６および６０８を含み得る。メモリー６１０及び／又は６１２は、図５のメモリー５１２について述べたような種々のデータを保管し得る。
【００３９】
一つの実施例においては、プロセッサ６０２および６０４は、図５に関して述べたプロセッサ５０２のうちの一つであり得る。プロセッサ６０２と６０４は、ＰｔＰインターフェイス回路６１６と６１８をそれぞれに使用して、ポイント−ツー−ポイント（ＰｔＰ）インターフェイス６１４を介してデータを交換し得る。プロセッサ６０２と６０４は、また、ＰｔＰインターフェイス回路６２６，６２８，６３０、そして６３２を使用して、個別のＰｔＰインターフェイス６２２と６２４を介してチップセット６２０とデータ交換することもできる。チップセット６２０は、さらに、例えば、ＰｔＰインターフェイス回路６３７を使用して、グラフィックインターフェイス６３６を介して、グラフィック回路６３４とデータ交換し得る。
【００４０】
本発明の少なくとも一つの実施例が、プロセッサ６０２および６０４の中に備えられ得る。例えば、図１から図５に係るコア１０６が、プロセッサ６０２および６０４の中に配置される。しかしながら、本発明の他の実施例は、図６に係るシステム６００中の他の回路、ロジックユニット、またはデバイスの中に存在し得る。さらに、本発明の他の実施例は、図６に示されたいくつかの回路、ロジックユニット、またはデバイスを通じて配布され得る。
【００４１】
チップセット６２０は、ＰｔＰインターフェイス回路６４１を使用してバス６４０と通信することができる。バス６４０は、バスブリッジ６４２と入力／出力デバイス６４３といった、一つまたはそれ以上のデバイスと通信し得る。バス６４４を介して、バスブリッジ６４２は、キーボード／マウス６４５、通信デバイス６４６（モデム、ネットワークインターフェイスデバイス、コンピューターネットワーク５０３と通信し得る他の通信デバイス、といったもの）、オーディオ入力／出力デバイス、及び／又は、データ保管デバイス６４８といった、他のデバイスと通信できる。データ保管デバイス６４８は、プロセッサ６０２及び／又は６０４によって実行され得るコード６４９を保管する。
【００４２】
本発明の種々の実施例において、例えば、図１から図６に関して、ここにおいて述べたオペレーションは、ハードウェア（例えば、ロジック回路）、ソフトウェア、ファームウェア、またはそれらの組合せとして実行され得る。それらは、例えば、ここにおいて述べたプロセスを実行するようコンピューターをプログラムするために使用される命令が保管された（例えば、一時的でない）機械で読取り可能、または、コンピューターで読取り可能なメディアを含む、コンピュータープログラム製品として提供され得る。機械で読取り可能なメディアは、図１から図６に関して述べたようなストレージデバイスを含み得る。
【００４３】
加えて、こうしたコンピューターで読取り可能なメディアは、コンピュータープログラム製品としてダウンロードし得る。プログラムは、通信リンク（例えば、バス、モデム、またはネットワーク接続）を介してキャリアーウェーブ（ｃａｒｒｉｅｒ  ｗａｖｅ）または他のプロパゲーション（ｐｒｏｐａｇａｔｉｏｎ）メディアにエンベットされたデータ信号として、離れたコンピューター（例えば、サーバー）から、要求元のコンピューター（例えば、クライアント）に対して転送され得る。
【００４４】
明細書における「一つの実施例（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ、ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」または「いくつかの実施例（ｓｏｍｅ  ｅｍｂｏｄｉｍｅｎｔｓ）」に対する参照は、実施例に関して述べられた所定の特徴、構成、または特性が、少なくとも実施において含まれ得ることを意味する。いろいろな場所で登場する「一つの実施例において（ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」というフレーズは、全て同一の実施例を参照しているか、または必ずしもそうではない。
【００４５】
同様に、明細書と特許請求の範囲において、用語「結合された（ｃｏｕｐｌｅｄ）」および「接続された（ｃｏｎｎｅｃｔｅｄ）」が、その派生語と一緒に使用されている。いくつかの実施例において、「接続された（ｃｏｎｎｅｃｔｅｄ）」は、２つまたはそれ以上のエレメントが、物理的または電気的に直接お互いに接触していることを示すために使用され得る。「結合された（ｃｏｕｐｌｅｄ）」は、２つまたはそれ以上のエレメントが、物理的または電気的に直接接触していることを意味している。しかしながら、「結合された（ｃｏｕｐｌｅｄ）」は、また、２つまたはそれ以上のエレメントが、物理的または電気的に直接お互いに接触しているのではないが、それでもお互いに協働または相互作用し得ることをも意味している。
【００４６】
従って、本発明の実施例は、構成上の特徴、及び／又は、方法論的な行為に特有な言葉で述べられてきたが、請求される重要事項は、述べられた特定の特徴または行為に限定されるものではないことが理解されるべきである。むしろ、特定の特徴と行為は、請求された重要事項の実施に係る形態の例として開示されたものである。
【図１】
2013537346.tif 000004
【図２】
2013537346.tif 000005
【図３】
2013537346.tif 000006
【図４】
2013537346.tif 000007
【図５】
2013537346.tif 000008
【図６】
2013537346.tif 000009
【国際調査報告】
2013537346.tif 000010
2013537346.tif 000011