【手続補正書】
【提出日】平成25年3月12日(2013.3.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
スレッドを複数の異種のプロセッサコアのうちの少なくとも１つに割り当てる方法であって、
第１の時において、プロセッサによって、前記スレッドを第１の実行特性と関連付けることと、
前記プロセッサによって、前記第１の実行特性に少なくとも一部基づいて、前記スレッドを第１の異種のプロセッサコアに割り当てることと、
前記第１の異種のプロセッサコアによって前記スレッドを実行することと、
前記プロセッサによって、前記第１の異種のプロセッサコアによる前記スレッドの前記実行に関する情報を収集することと、
第２の時において、前記プロセッサによってかつ前記情報に基づいて、前記スレッドが前記第１の実行特性とは異なる第２の実行特性を有することを決定することと、
前記決定に応じて、前記プロセッサによって、前記スレッドを前記第１の異種のプロセッサコアとは異なる第２の異種のプロセッサコアに割り当てることと、
を含む方法。
【請求項２】
メタデータを前記スレッドと関連付けることをさらに含み、前記メタデータが、前記スレッドに関連するソフトウェアアプリケーションが動作に関してどのように構成されるかを識別する、請求項１に記載の方法。
【請求項３】
前記スレッドに関連する前記メタデータが、前記スレッド内に埋め込まれているか、または前記スレッドから分離されている、請求項２に記載の方法。
【請求項４】
前記スレッドが、前記スレッドに関連するソフトウェアアプリケーションが動作に関してどのように構成されるかを識別するメタデータを含む、請求項１に記載の方法。
【請求項５】
スレッドマッピングソフトウェアツールに前記メタデータを送信することをさらに含み、前記スレッドマッピングソフトウェアツールが、前記スレッドを前記第１の異種のプロセッサコアに割り当てるように構成されている、
請求項２に記載の方法。
【請求項６】
前記メタデータが、前記スレッドを実行できる前記異種のプロセッサコアのうちの１つまたは複数を識別する、請求項２に記載の方法。
【請求項７】
前記スレッドを割り当てることが、前記メタデータに少なくとも一部基づいて、前記スレッドを前記第１の異種のプロセッサコアに割り当てることを含む、請求項２に記載の方法。
【請求項８】
前記ソフトウェアアプリケーションが２つ以上の異なる段階において動作し、それぞれの段階が前記それぞれの段階に関する特定のそれぞれのタスクの動作要件と関連付けられており、
前記スレッドが、前記異なる段階のうちの１つまたは複数を少なくとも一部識別する、事前に定義された実行特性を含む、
請求項２に記載の方法。
【請求項９】
パフォーマンスカウントを生成するパフォーマンスカウンタを使用して、前記情報を収集することをさらに含み、
前記スレッドを前記第１の異種のプロセッサコアに割り当てることが、前記パフォーマンスカウント、および前記異種のプロセッサコアのうちの１つまたは複数に関連する前記パフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、前記第１の異種のプロセッサコアを識別することを含む、
請求項１に記載の方法。
【請求項１０】
ソフトウェアアプリケーションに関連するプロセスを１つまたは複数の異種のプロセッサコアに割り当てる方法であって、
プロセッサによって、前記プロセスを第１の実行特性と関連付けることであって、それぞれの実行特性が、前記ソフトウェアアプリケーションの段階に対応する、関連付けることと、
前記プロセッサによって、前記ソフトウェアアプリケーションの第１の段階を識別することであって、前記第１の段階が、前記第１の段階に関する特定のタスクの動作要件に関連している、識別することと、
前記プロセッサによって、前記ソフトウェアアプリケーションの前記第１の段階に少なくとも一部基づいて、前記プロセスを第１の異種のプロセッサコアに割り当てることと、
前記第１の異種のプロセッサコアによって前記プロセスを実行することと、
前記プロセッサによって、前記第１の異種のプロセッサコアによる前記プロセスの前記実行に関する情報を収集することと、
前記プロセッサによってかつ前記情報に基づいて、前記ソフトウェアプリケーションの第２の段階を識別することであって、前記第２の段階が、前記第１の実行特性とは異なる第２の実行特性に関連する、識別することと、
前記第２の段階を識別することに応じて、前記プロセッサによって、前記ソフトウェアアプリケーションを前記第１の異種のプロセッサコアとは異なる第２の異種のプロセッサコアに割り当てることと、
を含む方法。
【請求項１１】
前記ソフトウェアアプリケーションのそれぞれの段階が、前記ソフトウェアアプリケーション内の所定のブレークポイントのうちの１つ若しくは複数によって、または前記ソフトウェアアプリケーションが第１のタスクから第２のタスクに切り替わる所定のポイントによって識別される、請求項１０に記載の方法。
【請求項１２】
パフォーマンスカウンタからのパフォーマンスカウントを前記プロセスと関連付けることをさらに含み、
前記プロセスを前記第１の異種のプロセッサコアに割り当てることが、前記事前に定義された実行特性のうちの１つまたは複数、前記パフォーマンスカウント、または前記パフォーマンスカウンタを使用して収集された情報に少なくとも一部基づく、
請求項１０に記載の方法。
【請求項１３】
前記異種のプロセッサコアのうちの１つまたは複数による前記ソフトウェアアプリケーションの過去の実行に関する履歴メタデータに関連する実行ベースの最適化プロファイルを利用して、前記ソフトウェアアプリケーションを管理すること
をさらに含む、請求項１０に記載の方法。
【請求項１４】
１つまたは複数の処理ユニットによって実行されたとき、コンピューティングプラットフォームが、
第１の時において、スレッドを第１の実行特性と関連付け、
前記スレッドを、前記第１の実行特性に少なくとも一部基づいて、第１の異種のプロセッサコアに割り当て、
前記スレッドを前記第１の異種のプロセッサコア上で実行し、
前記第１の異種のプロセッサコアによる前記スレッドの前記実行に関する情報を収集し、
第２の時において、前記情報に基づいて、前記スレッドが前記第１の実行特性とは異なる第２の実行特性を有することを決定し、
前記決定に応じて、前記スレッドを前記第１の異種のプロセッサコアとは異なる第２の異種のプロセッサコアに割り当てることを動作可能にする機械可読命令を格納した記憶媒体を含む物品。
【請求項１５】
前記スレッドが、前記スレッドに関連するパフォーマンスカウントを含み、
前記機械可読命令は、前記プラットフォームが、前記第１の実行特性、パフォーマンスカウンタからの前記パフォーマンスカウント、および前記異種のプロセッサコアのうちの少なくとも１つに関連する前記パフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、前記スレッドを前記第１の異種のプロセッサコアに割り当てることを可能にする、請求項１４に記載の物品。
【請求項１６】
第１のプロセッサコアと、
第２のプロセッサコアと
を含むマルチコアプロセッサであって、
第１の時において、スレッドを第１の実行特性と関連付け、
前記第１の実行特性に少なくとも一部基づいて、前記スレッドを前記第１のプロセッサコアに割り当て、
前記第１のコアによって前記スレッドを実行し、
前記第１のプロセッサコアによって前記スレッドの前記実行に関する情報を収集し、
第２の時において、前記情報に基づいて、前記スレッドが前記第１の実行特性とは異なる第２の実行特性を有することを決定し、
前記決定に応じて、前記スレッドを前記第２のコアに割り当てるように構成されたマルチコアプロセッサ。
【請求項１７】
前記マルチコアプロセッサが異種のハードウェアを含むように、前記第１のプロセッサコアが第１の機能を有し、前記第２のプロセッサコアが、前記第１の機能とは異なる第２の機能を有する、請求項１６に記載のマルチコアプロセッサ。
【請求項１８】
前記第１の機能および前記第２の機能のそれぞれが、グラフィックスリソース、数学的計算リソース、命令セット、アクセラレータ、ストリーミング単一命令マルチプルデータ拡張、キャッシュサイズ、および分岐予測装置のうちの少なくとも１つに対応する、請求項１７に記載のマルチコアプロセッサ。
【請求項１９】
前記第１の異種のプロセッサコアによる実行時の前記スレッドのキャッシュ使用に関する情報を収集することと、
前記キャッシュ使用に基づいて前記スレッドが前記第２の実行特性を有することを決定することと、
をさらに含む、請求項１に記載の方法。
【請求項２０】
前記第１の異種のプロセッサコアによる実行時の前記スレッドのライン排除に関する情報を収集することと、
前記ライン排除に基づいて前記スレッドが前記第２の実行特性を有することを決定することと、
をさらに含む、請求項１に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
図１の例示的な実施形態では、スレッドマッピングシステム１１２は、スレッドを適切なコアにマッピングすることが可能である。詳細には、スレッドマッピングシステム１１２は、第１のスレッド（スレッド＃１）１１４をコア１０２にマッピングすることが可能であり、第２のスレッド（スレッド＃２）１１６をコア１０４にマッピングすることが可能であり、第３のスレッド（スレッド＃３）１１８をコア１０６にマッピングすることが可能である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
いくつかの例示的な実施形態では、コアのハードウェア機能に少なくとも一部基づいて、（例えば、スレッドマッピングシステム１１２を利用して）スレッドを個々のコアにマッピングすることが可能である。例えば、大きなＬ１（キャッシュメモリ）需要に関連するスレッドは、大きなＬ１ハードウェアを含むコアにマッピング可能である。同様に、大きなＳＳＥ（命令セット）需要に関連するスレッドは、固有のＳＳＥハードウェア実装形態を含むコアにマッピング可能である。これらの例は、非限定的であり、コアおよび／もしくはスレッドの任意のハードウェア特性、命令セット、ならびに／またはその他の特性に少なくとも一部基づいて、スレッドをマッピングすることが可能である点を理解されよう。さらに、本開示は、スレッドがハードウェア機能に基づいてコアにマッピングされない場合、代わりに、ソフトウェアエミュレーションを使用してそのスレッドを処理できることが企図され、これは、そのスレッドに関する処理時間を増大し得る。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
いくつかの例示的な実施形態では、プロセッサおよび／またはキャッシュは、プログラムが実行するにつれて情報を収集するように構成可能である。例えば、かかる情報は、プログラムがどのキャッシュラインを参照するかを含むことが可能である。いくつかの例示的な実施形態では、どのスレッドを置換すべきかを決定するために、（例えば、残っているスレッドプロセスのラインの数を計数することによって）キャッシュ使用に関するデータを評価することが可能である。１つの例示的な実施形態では、パフォーマンスカウンタは、実行しているスレッドのライン排除（ｌｉｎｅ  ｅｖｉｃｔｉｏｎｓ）を追跡するように構成可能であり、かつ／またはより優先順位の高いタスクを開始するために、どのタスクをフラッシュアウトできるかを決定するためにその情報を使用することが可能である。パフォーマンスカウンタは、タスクが開始してからのライン排除を追跡するように構成することも可能である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
処理は、スレッドを１つまたは複数の事前に定義された実行特性と関連付けることを含み得る動作２０２から始めることができる。処理は、動作２０２から動作２０４に流れることができる。動作２０４は、１つまたは複数の事前に定義された実行特性に少なくとも一部基づいて、スレッドを異種のプロセッサコアのうちの少なくとも１つに割り当てることを含むことが可能である。