プログラムコードをプログラム順でない順番で実行するアウトオブオーダOOOプロセッサコアと、プログラム順で前記プログラムコードのホット部分を実行するインオーダプロセッサコアとを有する集積回路を備える装置。前記集積回路は更に、前記プログラムコードの前記ホット部分を特定する監視ハードウェアを更に有する請求項1に記載の装置。プログラムコードの前記ホット部分を特定する前記監視ハードウェアは、前記OOOプロセッサコアでの前記プログラムコードの実行を監視し、前記OOOプロセッサコアでの前記プログラムコードの実行の監視に基づいて、前記プログラムコードの前記ホット部分の再現パターンを判断し、前記再現パターンに基づいて、前記プログラムコードの前記ホット部分を特定する前記監視ハードウェアを含む請求項2に記載の装置。前記OOOプロセッサコアでの前記プログラムコードの実行の監視に基づいて前記プログラムコードの前記ホット部分の再現パターンを判断する前記監視ハードウェアは、前記プログラムコードの前記ホット部分が一定期間に実行された回数を判断する前記監視ハードウェアを含み、前記再現パターンに基づいて前記プログラムコードの前記ホット部分を特定する前記監視ハードウェアは、前記回数がホットコード閾値を超えたことに応答して、前記プログラムコードの前記ホット部分を特定する前記監視ハードウェアを含む請求項3に記載の装置。前記監視ハードウェアは、前記OOOプロセッサコア及び前記インオーダプロセッサコアからなる一群から選択される前記集積回路の部分、及び、前記OOOプロセッサコア又は前記インオーダプロセッサコアの何れかに含まれない前記集積回路の関連付けられていない部分に含まれる請求項3に記載の装置。プログラムコードの前記ホット部分を特定する前記監視ハードウェアは、前記OOOプロセッサコアでの実行の間に前記プログラムコードの前記ホット部分についての性能測定値を測定し、前記OOOプロセッサコアでの前記性能測定値が閾値を下回ったことに応答して、プログラムコードの前記ホット部分を特定する前記監視ハードウェアを含む請求項2に記載の装置。前記監視ハードウェアは、前記インオーダプロセッサコアでの実行の間に前記プログラムコードの前記ホット部分についての性能測定値を測定し、前記インオーダプロセッサコアでの実行の間の前記プログラムコードの前記ホット部分についての前記性能測定値が、前記OOOプロセッサコアでの実行の間の前記プログラムコードの前記ホット部分についての前記性能測定値を下回ったことに応答して、プログラムコードの前記ホット部分がもはやプログラムコードのホット部分と見なされないことを示す請求項6に記載の装置。前記集積回路は、入力値を、前記OOOプロセッサコアから前記インオーダプロセッサコアへと供給する協働ハードウェアを更に有する請求項1に記載の装置。入力値を前記OOOプロセッサコアから前記インオーダプロセッサコアへと供給する前記協働ハードウェアは、前記OOOプロセッサコアから前記インオーダプロセッサコアへの少なくとも部分的なコンテキストの切り替えを実行するコンテキストスイッチロジックを含み、前記少なくとも部分的なコンテキストは、少なくとも前記入力値を含む請求項8に記載の装置。入力値を前記OOOプロセッサコアから前記インオーダプロセッサコアへと供給する前記協働ハードウェアは、前記入力値を前記OOOプロセッサコア内のレジスタから読み出し、前記インオーダプロセッサコア内の入力レジスタへ前記入力値を書き込むダイレクトアクセスハードウェアを含む請求項8に記載の装置。前記集積回路は、実行されると、前記インオーダプロセッサコアでの実行のために前記プログラムコードの前記ホット部分を最適化する最適化コードを保持するコード記憶ロジックを更に有し、前記監視ハードウェアが前記プログラムコードの前記ホット部分を特定したことに応答して、前記プログラムコードの前記ホット部分を最適化するべく、前記最適化コードが実行される請求項2に記載の装置。前記最適化コードは、最適化マイクロコードを含み、実行されると前記インオーダプロセッサコアでの実行のために前記プログラムコードの前記ホット部分を最適化する前記最適化マイクロコードは、実行されると前記プログラムコードの前記ホット部分を、前記OOOプロセッサコアのデコーダによって認識される第1命令セットアーキテクチャISAから前記インオーダプロセッサコアのデコーダによって認識される第2ISAへと変換する前記最適化マイクロコードを含む請求項11に記載の装置。前記インオーダプロセッサコアは、コードキャッシュと関連付けられ、前記コードキャッシュは、前記プログラムコードの前記ホット部分を前記第1ISAから前記第2ISAへと変換した後の前記プログラムコードの第2部分の最適化バージョンを保持する請求項12に記載の装置。前記集積回路は更に、トリガハードウェアを有し、前記トリガハードウェアは、前記監視ハードウェアが前記プログラムコードの前記ホット部分を特定したことに応答して、前記プログラムコードの前記ホット部分がホットコードであると示し、前記OOOプロセッサコアが前記プログラムコードの前記ホット部分に遭遇し、前記トリガハードウェアが前記プログラムコードの前記ホット部分がホットコードであると示したことに応答して、プログラムコードの前記ホット部分の前記インオーダプロセッサコアでの実行をトリガする請求項2に記載の装置。前記プログラムコードの前記ホット部分がホットコードであると示す前記トリガハードウェアは、前記インオーダプロセッサコアでの実行のために最適化された前記プログラムコードの前記ホット部分の最適化バージョンのリファレンスと関連付けられた前記プログラムコードの前記ホット部分のリファレンスを保持する前記トリガハードウェアを含む請求項14に記載の装置。プロセッサを備える装置であって、前記プロセッサは、プログラムコードを実行するアウトオブオーダコアと、協調設計コアと、前記プログラムコードのホット部分を特定し、最適化されたホットコードを取得するべく、前記協調設計コアに対して前記プログラムコードの前記ホット部分を最適化するコード分配モジュールとを有し、前記コード分配モジュールが前記プログラムコードの前記ホット部分を特定し、前記アウトオブオーダコアが前記プログラムコードの前記ホット部分の実行に遭遇したことに応答して、前記協調設計コアは、前記最適化されたホットコードを実行する装置。前記プログラムコードの前記ホット部分を特定する前記コード分配モジュールは、前記プログラムコードの前記ホット部分を特定するべく、前記プログラムコードからホットコード特定命令をデコードするデコードロジックを含む請求項16に記載の装置。前記プログラムコードの前記ホット部分を特定する前記コード分配モジュールは、前記アウトオブオーダコアでの前記プログラムコードの実行を監視し、前記アウトオブオーダコアでの前記プログラムコードの実行の前記監視から前記プログラムコードの前記ホット部分を特定する監視モジュールを含む請求項16に記載の装置。前記監視モジュールは、前記協調設計コア内に、監視コードを実行する実行ロジックを含み、前記監視コードは、前記協調設計コア内の前記実行ロジックによって実行されると、前記アウトオブオーダコアでの前記プログラムコードの実行を監視し、前記プログラムコードの前記ホット部分を特定する請求項18に記載の装置。前記最適化されたホットコードを取得するべく、前記協調設計コアに対して前記プログラムコードの前記ホット部分を最適化する前記コード分配モジュールは、変換コードを実行する実行ロジックを含み、前記変換コードは、実行されると、前記最適化されたホットコードを取得するべく前記プログラムコードの前記ホット部分を変換し、前記プログラムコードの前記ホット部分は、前記アウトオブオーダコアのデコーダが認識可能な第1命令セットアーキテクチャISAの一部である命令を含み、前記最適化されたホットコードは、前記協調設計コアのデコーダが認識可能な第2ISAの一部である命令を含む請求項16に記載の装置。前記コード分配モジュールが前記プログラムコードの前記ホット部分を特定し、前記アウトオブオーダコアが前記プログラムコードの前記ホット部分の実行に遭遇したことに応答して、前記最適化されたホットコードを実行する前記協調設計コアは、前記アウトオブオーダコアと関連付けられたプログラムカウンタが、前記プログラムコードの前記ホット部分と関連付けられた命令アドレスを参照し、マッピングテーブルが、前記プログラムコードの前記ホット部分がホットコードであることを示すべく、前記プログラムコードの前記ホット部分と前記最適化されたホットコードとを関連付けたことに応答して、前記最適化されたホットコードを実行する前記協調設計コアを含む請求項16に記載の装置。前記協調設計コアと関連付けられるコードキャッシュを更に備え、前記プログラムコードの前記ホット部分がホットコードであることを示すべく、前記プログラムコードの前記ホット部分と前記最適化されたホットコードとを関連付ける前記マッピングテーブルは、前記プログラムコードの前記ホット部分のリファレンス及び前記最適化されたホットコードのリファレンスを保持する前記マッピングテーブルのエントリを含み、前記最適化されたホットコードの前記リファレンスは、前記コードキャッシュ内の前記最適化されたホットコードのロケーションのリファレンスを含む請求項21に記載の装置。前記プロセッサは、ランダムアクセスメモリRAM、ダブルデータレートDDRRAM及びバッファRAMからなる一群から選択されるシステムメモリに接続され、前記システムメモリは、前記プログラムコードを保持する請求項16に記載の装置。第1命令セットアーキテクチャISA型を認識するデコードロジックと関連付けられる第1コアと、第2命令セットアーキテクチャISA型を認識するデコードロジックと関連付けられる第2コアと、前記第1ISA型のプログラムコードの前記第1コアでの実行を監視し、前記プログラムコードのホット領域を特定する監視モジュールと、前記プログラムコードの変換されたホット領域を取得するべく、前記プログラムコードの前記ホット領域を前記第1ISA型から前記第2ISA型へと変換する変換モジュールとを備え、前記第1コアが前記プログラムコードの前記ホット領域に遭遇し、前記監視モジュールが前記プログラムコードの前記ホット領域を特定したことに応答して、前記第2コアが前記プログラムコードの前記変換されたホット領域を実行するプロセッサ。前記監視モジュールは、実行されると、前記第1コアでのプログラムコードの実行を監視し、前記プログラムコードのホット領域を特定する監視コードを有し、前記変換モジュールは、実行されると、前記プログラムコードの前記変換されたホット領域を取得するべく、前記第1コアでの前記プログラムコードの実行と少なくとも部分的に平行して、前記プログラムコードの前記ホット領域を変換する変換コードを有する請求項24に記載の装置。前記監視モジュールは、前記第1コアでのプログラムコードの実行を監視し、前記プログラムコードのホット領域を特定する監視ハードウェアを含む請求項24に記載の装置。前記監視モジュールが、前記第1コアでの前記プログラムコードの実行を監視し、前記プログラムコードの前記ホット領域を特定する間は、前記第2コアは低電力状態におかれ、前記第2コアが、前記プログラムコードの前記変換されたホット領域を実行する間は、前記第1コアは低電力状態におかれる請求項24に記載の装置。前記第2コアが前記プログラムコードの前記変換されたホット領域を実行するのと平行して、前記第1コアは、前記プログラムコードのコールド領域を実行する請求項24に記載の装置。前記第1コア及び前記第2コアは、同時に最大電力状態で動作しない請求項24に記載の装置。コードを備える機械可読媒体であって、前記コードは機械によって実行されると、前記機械のプロセッサ内のアウトオブオーダプロセッサコアでのプログラムコードの実行を監視する段階と、前記プログラムコードのホット部分を特定する段階と、前記プログラムコードの最適化されたホット部分を取得するべく、前記機械内の協調設計プロセッサコアでの実行のために、前記プログラムコードの前記ホット部分を最適化する段階と、前記プログラムコードの前記最適化されたホット部分を前記協調設計プロセッサコアに分配する段階と、前記協調設計プロセッサコアで、前記プログラムコードの前記最適化されたホット部分を実行する段階とを前記機械に実行させる機械可読媒体。前記アウトオブオーダプロセッサコアでのプログラムコードの実行を監視する段階は、前記プログラムコードの部分と関連付けられた性能測定値を決定する段階を含む請求項35に記載の機械可読媒体。前記プログラムコードのホット部分を特定する段階は、前記性能測定値と性能閾値との比較に基づいて、前記プログラムコードの前記部分を前記プログラムコードのホット部分であると判断する段階を含む請求項31に記載の機械可読媒体。前記協調設計プロセッサコアでの実行のために、前記プログラムコードの前記ホット部分を最適化する段階は、前記プログラムコードの前記ホット部分を、前記アウトオブオーダプロセッサコアと関連付けられたデコードロジックが認識可能なネイティブ命令から、前記協調設計プロセッサコアと関連付けられたデコードロジックが認識可能な協調設計命令へと変換する段階を含む請求項35に記載の機械可読媒体。前記プログラムコードの前記最適化されたホット部分を前記協調設計プロセッサコアに分配する段階は、前記プログラムコードの前記最適化されたホット部分を、前記協調設計プロセッサコアと関連付けられたコードキャッシュに書き込む段階を含む請求項35に記載の機械可読媒体。コードを備える機械可読媒体であって、前記コードは機械によって実行されると、前記機械の第1プロセッサコアに対して最適化された第1コード型を含むプログラムコードの領域がホットコードとして特定されたことに応答して、プログラムコードの前記領域を変換されたホット領域と関連付ける段階と、前記プログラムコードの前記第1プロセッサコアでの実行の間に前記プログラムコードの前記領域に遭遇した場合に、前記プログラムコードの前記領域が前記変換されたホット領域と関連付けられていることに応答して、前記変換されたホット領域を第2プロセッサコアで実行する段階とを前記機械に実行させ、前記変換されたホット領域は、前記第1コード型から、前記機械の前記第2プロセッサコアに対して最適化される第2コード型へと変換されたプログラムコードの前記領域を含む機械可読媒体。前記第1プロセッサコアは、アウトオブオーダプロセッサコアを含み、前記第1コード型は、前記アウトオブオーダプロセッサコアに対して最適化されたアウトオブオーダコード型を含み、前記第2プロセッサコアは、インオーダプロセッサコアを含み、前記第2コード型は、前記インオーダプロセッサコアに対して最適化されたインオーダ型を含む請求項35に記載の機械可読媒体。前記アウトオブオーダプロセッサコアは、第1命令セットアーキテクチャISAを認識するデコードロジックと関連付けられ、前記第1コード型は更に、前記第1ISAに対して最適化され、前記インオーダプロセッサコアは、第2ISAを認識するデコードロジックと関連付けられ、前記第2コード型は更に、前記第2ISAに対して最適化される請求項36に記載の機械可読媒体。前記プログラムコードの前記領域がホットコードとして特定されることは、前記第1プロセッサコアと関連付けられたデコードロジックが、前記プログラムコードから少なくとも1つの命令をデコードして、プログラムコードの前記領域をホットコードであると示すことを含む請求項35に記載の機械可読媒体。前記プログラムコードの前記領域がホットコードとして特定されることは、前記機械内のハードウェアが、前記第1プロセッサコアでの前記プログラムコードの前記領域の実行を監視し、前記ハードウェアによる前記第1プロセッサコアでの前記プログラムコードの前記領域の実行の監視に基づいて、プログラムコードの前記領域がホットコードであると特定することを含む請求項35に記載の機械可読媒体。前記プログラムコードの前記領域を変換されたホット領域と関連付ける段階は、前記変換されたホット領域のリファレンスと関連付けられた前記プログラムコードの前記領域のリファレンスで、データ構造内のエントリを更新する段階を含み、前記プログラムコードの前記領域の前記リファレンス及び前記変換されたホット領域の前記リファレンスはそれぞれ独立して、アドレス、命令アドレス、キャッシュメモリ内のロケーション、プログラムカウンタ値及び命令オペコードからなる一群から選択される請求項35に記載の機械可読媒体。前記プログラムコードの前記第1プロセッサコアでの実行の間に、プログラムコードの前記領域に遭遇し、プログラムコードの前記領域が前記変換されたホット領域と関連付けられていることに応答して、前記第2プロセッサコアが前記変換されたホット領域を実行している間は、前記第1プロセッサコアを低電力状態に遷移させる請求項35に記載の機械可読媒体。プログラムコードのホット部分を特定する段階と、前記プログラムコードの最適化されたホット部分を取得するべく、インオーダプロセッサコアでの実行のために前記プログラムコードの前記ホット部分を最適化する段階と、プロセッサのアウトオブオーダプロセッサコアで前記プログラムコードを実行する段階と、前記アウトオブオーダプロセッサコアでの前記プログラムコードの実行の間に前記アウトオブオーダプロセッサコアが前記プログラムコードの前記ホット部分に遭遇し、プログラムコードの前記ホット部分が特定されたことに応答して、前記プログラムコードの前記ホット部分を前記アウトオブオーダプロセッサコアで実行するのではなく、前記プログラムコードの前記最適化されたホット部分を前記インオーダプロセッサコアで実行する段階とを備える方法。前記プログラムコードの前記ホット部分と、前記プログラムコードの前記最適化されたホット部分とを関連付ける段階を更に備える請求項42に記載の方法。前記プログラムコードの前記ホット部分と、前記プログラムコードの前記最適化されたホット部分とを関連付ける段階は、前記プログラムコードの前記ホット部分のリファレンス及び前記最適化されたホット部分のリファレンスを、コードマッピングテーブルのエントリに格納する段階を含む請求項43に記載の方法。前記プログラムコードのホット部分を特定する段階は、前記プログラムコードの部分を前記アウトオブオーダプロセッサコアで実行する間に、性能測定値を監視する段階と、前記性能測定値と性能閾値との比較に基づいて、前記プログラムコードの前記部分をプログラムコードの前記ホット部分として特定する段階とを含む請求項42に記載の方法。前記プログラムコードの前記最適化されたホット部分を前記インオーダプロセッサコアで実行する間に前記性能測定値を監視する段階と、前記プログラムコードの前記最適化されたホット部分の前記インオーダプロセッサコアでの実行の間の前記性能測定値が、前記アウトオブオーダプロセッサコアでの前記プログラムコードの部分の実行の間の前記性能測定値を下回る性能を示したことに応答して、前記プログラムコードの前記最適化されたホット部分を前記インオーダプロセッサコアで実行するのではなく、プログラムコードの前記ホット部分を前記アウトオブオーダプロセッサコアで実行することを示す段階とを更に備える請求項45に記載の方法。前記プログラムコードの最適化されたホット部分を取得するべく、前記プログラムコードの前記ホット部分を、インオーダプロセッサコアでの実行のために最適化する段階は、前記プログラムコードを前記プログラムコードの前記最適化されたホット部分へと変換するべく、バイナリ変換コードを実行する段階を含む請求項42に記載の方法。前記機械によって実行されると、前記機械に請求項42に記載の段階を実行させるコードを備える機械可読媒体。以下、特定の種類のプロセッサコア、特定のプロセッサ構成、特定のホットコード領域特定アルゴリズム、変換済/最適化済コードを格納する特定の構造、ハードウェア/ソフトウェア間の特定のタスク分配、特定のプロセッサユニット/ロジック等の例を含め特定の詳細事項が記載されるが、これらは、本発明の深い理解を提供するためのものである。しかしながら、これらの特定の詳細事項を採用しなくとも、本発明を実行可能であることは、当業者にとって明らかである。また、特定の及び代替のプロセッサアーキテクチャ、説明するアルゴリズムに対する特定の論理回路/コード、特定のコード実装、特定のバイナリ変換詳細、及び、その他のマイクロプロセッサの特定のオペレーションの詳細等、よく知られている要素又は方法については、本発明を不明瞭にすることを防ぐため、記載を省略する。本明細書に記載する方法及び装置は、最大の性能及び省電力を達成するべく、ソフトウェア管理コアを有するネイティブコアを実装する。特に、コア間の協動について、アウトオブオーダコア及びインオーダ協調設計コアを参照して説明する。しかしながら、本明細書に記載される装置及び方法はこれに限定されることなく、非対称コア間のコードの任意の分布に実装することが可能である。例えば、以下に説明されるコード分配方法及び装置は、固有の命令セットアーキテクチャISAを実装する2つのアウトオブオーダコアを利用してもよい。更に、このようなコア間の協動について、ハードウェアメカニズム及びコード/ソフトウェアに分けて説明がなされる。しかしながら、ハードウェア、ソフトウェア、及び/又はファームウェアを混合して又は専用として利用して、以下に説明する方法及び装置を実装してもよい。図1は、フクスウノコアを含むプロセッサの一実施形態を示したものである。プロセッサ100は、どのようなプロセッサであってもよく、例えば、マイクロプロセッサ、組み込みプロセッサ、デジタルシグナルプロセッサDSP、ネットワークプロセッサ、又は、コードを実行する他のデバイスであってもよい。一実施形態において、プロセッサ100は、少なくとも2つのコア、異なる種類のコア101及びコア102を含む。しかしながら、プロセッサ100は、任意の数の処理要素を含んでもよい。一実施形態において、処理要素とは、スレッドユニット、スレッドスロット、プロセスユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び/又は、実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持可能なその他の要素のことを指す。すなわち、一実施形態では、処理要素は、ソフトウェアスレッドのようなコード、OS、アプリケーション又はその他のコードに独立して関連付け可能なあらゆるハードウェアを指す。物理的プロセッサとは、典型的には、コア又はハードウェアスレッド等の他の処理要素を1以上含む集積回路ICのことを指す。コアとは、多くの場合、少なくとも幾つかの専用実行リソースと関連付けられたアーキテクチャの状態がそれぞれ独立して保持される独立アーキテクチャ状態を保持可能なICに位置する論理を指す。一方、ハードウェアスレッドとは、コアとは異なり、典型的には、独立して保持されている複数のアーキテクチャ状態が実行リソースへのアクセスを共有する独立アーキテクチャ状態を保持可能であってICに位置する論理を指す。このように、あるリソースは共有され、他のリソースは1つのアーキテクチャ状態に占有されている場合には、ハードウェアスレッド及びコアという命名の境界線が重複することとなる。しかしながら、やはりコアとハードウェアとは、OSから見れば個々の論理プロセッサであり、OSは、各論理プロセッサに対して独立してオペレーションをスケジュールすることができる。図1に示すように、物理プロセッサ100は、2つのコア、コア101及びコア102を含む。ここで、コア101及び102は、非対称コアであると見なされる、すなわち、異なる構成、機能ユニット及び/又はロジックを有する。一実施形態において、コア101は、アウトオブオーダプロセッサコアを含み、コア102は、インオーダプロセッサコアを含む。しかしながら、コア101及び102は、任意の種類のコアから独立して選択可能であり、例えば、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャISA、変換命令セットアーキテクチャISAを実行するのに適用されるコア、協調設計コア、又は、その他の周知のコアから選択可能である。以下に、図1に示された機能ユニットについて更に説明する。図に示すように、コア101は、2つのハードウェアスレッド101a及び101bを含み、これらは、スレッドスロット101a及び101bとも称される。これに対して、コア102は、1つのハードウェアスレッド102aを含む。したがって、OSのようなソフトウェア実体は、一実施形態において、プロセッサ100を3つの別個のプロセッサとして見なすこともできる、すなわち、3つのソフトウェアスレッドを並列に実行可能な3つの論理プロセッサ又は処理要素として見なすことができる。これに替えて、ソフトウェア実体は、プロセッサ100が2つの別個のプロセッサを有する、すなわち、スレッドスロット101a及び101bを有し、以下に説明するコード分配メカニズムが、コア102上でのコードの実行を管理すると見なしてもよい。第1のスレッドは、複数のアーキテクチャ状態レジスタ101aと関連付けられており、第2のスレッドは、複数のアーキテクチャ状態レジスタ101bと関連付けられており、第3のスレッドは、複数のアーキテクチャ状態レジスタ102aと関連付けられている。図に示すように、複数のアーキテクチャ状態レジスタ101aは、複数のアーキテクチャ状態101bに複製されており、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ101a及び論理プロセッサ101bに記憶可能である。アーキテクチャ状態レジスタ102aは、レジスタ101a、101bと同じであってもよい。又は、レジスタ102aは、コア102のアーキテクチャに固有のものであってもよい。コア101において、命令ポインタ及びリネーム割り当てロジック130におけるリネームロジックのようなその他の小さなリソースも、スレッド101a及びスレッド101bについて複製されていてもよい。並べ替えre‐order/リタイアメントユニット135における並び換えバッファ、ILTB120、読み出し/記憶バッファ及びキューのようなリソースは、領域割り当てを通じて共有されていてもよい。汎用内部レジスタ、ページ‐テーブルベースレジスタ、下位層データキャッシュ及びデータ‐TLB115、1以上の実行ユニット140、及びアウトオブオーダーユニット135の部分のような他のリソースについては、完全に共有されていてもよい。プロセッサ100は、多くの場合、完全に共有されている、領域割り当てを通じて共有されている、若しくは、処理要素について占有の又は占有されている複数の他のリソースを含む。図1には、1つのプロセッサの複数の論理ユニット/リソースを持つプロセッサの一例が示されている。プロセッサは、例示されている複数の機能ユニットのうち、幾つかを含んでもよいし、又は省略してもよく、図示しない他の既知の機能ユニット、論理又はファームウェアを含んでもよい。図に示すように、コア101は、単純化されたアウトオブオーダOOOプロセッサコアとして例示されている。OOOコアは、実行される/選択される分岐先を予測する分岐先バッファBranchTargetBuffer:BTB120、及び、命令についてのアドレス変換エントリを記憶する命令変換バッファI‐TLB120を含む。コア101は、フェッチユニット120に接続され、フェッチした要素をデコードするデコードモジュール125を更に含む。一実施形態において、フェッチロジックは、それぞれスレッド101a、101bと関連付けられた個別のシーケンサを含む。通常、コア101は、プロセッサ100で実行可能な命令を規定/特定する第1の命令セットアーキテクチャISAと関連付けられている。ここで、第1のISAの一部分である機械コード命令は、一般的に、実行すべき命令又はオペレーションを参照する/特定する命令opcodeと称されるの一部分を含む。デコードロジック125は、opcodeから命令を認識する回路を含み、デコードされた命令をパイプラインで受け渡して、第1のISAで規定されるように処理する。一例として、割り当て及びリネームブロック130は、命令処理結果を記憶するレジスタファイルのようなリソースをリザーブする割り当て部を含む。しかしながら、スレッド101a及び101bは、アウトオブオーダ実行を行う能力を備え、割り当て及びリネームブロック130は、命令結果を追跡する並び替えバッファのような他のリソースをリザーブする。ユニット130は、プログラム/命令参照レジスタを、プロセッサ100の他の内部レジスタにリネームするレジスタリネーマーを含んでもよい。並べ替え/リタイアメントユニット135は、アウトオブオーダ実行及びアウトオブオーダで実行される順番が最後の方の命令のリタイアメントをサポートするために、上述のような並び換えバッファ、ロードバッファ、及び、記憶バッファのような要素を含んでもよい。ある実施形態では、スケジューラ及び実行ユニットブロック140は、実行ユニットに対して命令/オペレーションをスケジューリングするスケジューラユニットを含んでもよい。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを持つ実行ユニットのポートにスケジュールされる。また、情報命令処理結果を記憶するために、実行ユニットに関連付けられたレジスタファイルが含まれている。実行ユニットの例としては、浮動少数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及びその他の既知の実行ユニットが挙げられる。下位層データキャッシュ及びデータ変換バッファD‐TLB150は、実行ユニット140に接続されている。データキャッシュは、メモリコヒーレンシ状態で保持されているデータオペランドのような最近利用/処理されたものを、要素に記憶する。D‐TLBは、最近の仮想/線形アドレス-物理アドレス間の変換を記憶する。特別な例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を持つとしてよい。上記したように、一実施形態では、コア102は、インオーダ協調設計コアを含む。その結果、図1には、インオーダコアの簡単なパイプラインが示されている。このパイプラインは、フェッチユニット121、デコードユニット126、実行ユニット141、及び、下層データキャッシュ151を含む。これらのユニットは、コア101における対応するユニットと同様に動作してもよい。しかしながら、インオーダコアでは、命令/オペレーションは、コア101のようにアウトオブオーダ実行で実行されるのではなく、プログラムのオーダーで実行される。一例として、アウトオブオーダコア101は、ネイティブコアと称され、インオーダコア102は、協調設計コアと称される。これに替えて、インオーダコア102がネイティブコアで、アウトオブオーダコア101が協調設計コアであってもよい。ここで、コア101及びコア102は、上位層に位置する又はより離れたところに位置し、最近フェッチされた要素をキャッシュするキャッシュ110へのアクセスを共有する。ここで、上位層又はより離れた位置とは、キャッシュレベルがより高い又は実行ユニットからより離れていることを指す。一実施形態では、上位層キャッシュ110は、L2又はL3データキャッシュのような、プロセッサ100におけるメモリ階層構造において最も下層に位置するキャッシュ、すなわちラストレベルデータキャッシュである。しかしながら、上位層キャッシュ110は、これに限定されることなく、命令キャッシュに関連付けられていても、命令キャッシュを含んでもよい。替わりに、命令キャッシュの一種であるトレースキャッシュを、デコーダ125の後に連結して、最近デコードされたトレースを記憶してもよい。図示されている構成では、プロセッサ100は、プロセッサ100外部のデバイス、例えば、システムメモリ175、チップセット、ノースブリッジ、又は、その他のICとの間で通信を行うためのバスインターフェースモジュール105を含む。メモリ175は、プロセッサ100専用としてもよいし、システム内の他のデバイスと共有するとしてもよい。メモリ175の種類の一般的な例としては、ダイナミックランダムアクセスメモリDRAM、スタティックRAMSRAM、不揮発性メモリNVメモリ、及び、その他の周知の記憶デバイスが挙げられる。一実施形態において、性能を最大にし、省電力を最高にするべく、コードが、コア101及びコア102の間で分配される。例えば、コード領域は、2つのコア101、コア102のうちの一方で良好に実行されるように特定される。その結果、このようなコード領域のうちの1つに遭遇/検出されると、そのコード部分が、適切なコアに分配される。このような領域の特定は、静的にプログラムプロファイル解析のようなコードの実行の前に又は動的にコードの実行の間にハードウェア、ソフトウェア又はこれらの組み合わせによって行われてもよい。動的に行う方法の一例として、コア101のような1つのプロセッサコアを初期設定コアとして選択して、性能、省電力、ネイティブISA、その他の周知の処理条件又はこれらの組み合わせに基づいて、コードを実行する。そして、コア101上で実行が望ましくなかった初期設定コードの領域、又は、コア102上で良好に実行される初期設定コードの領域が特定される。特定されたコード部分に順次遭遇すると、これらが実行のためにコア102に割り当てられる。これらの領域のコア102上での実行は、コア101をウォームアップするための投機的な先行実行、これらの領域からの結果に依存するコア101のその他の領域の実行とシリアルなコア102上でのこれら領域の実行、又は、コア102上でのその他のコードの実行と平行及び並列なこれらの領域の実行を含んでもよい。静的に行う方法の一例として、コンパイラ又はユーザは、一のコア又は他のコアにおいて良好に実行される命令又は境界線demarcationのような、コード部分を特定してもよい。ここで、コア101は、このような命令に遭遇するまでコードを実行する。コア102からの監視に応答して、又は、コア102単独のイニシアチブトリガにより、遭遇した命令に基づいて、特定されたコード部分がコア102上で実行される。コード部分の特定が動的に実行される又は静的に実行されるかに関わらず、ある実施形態では、一のコア又は別のコアで良好に実行させるべく、ネイティブコードは、別のコアで実行されるように変換及び/又は最適化される。例えば、コア101が第1のISA型を認識するデコードロジック125を含むと仮定すると、コア102は、第2のISA型を認識するデコードロジック126を含む。この場合、第1のISA型のコード領域がコア102で実行されるとすると、このコード領域は、コア102で実行されるべく第2のISA型に変換される。ここで、ISA型間の変換は、一例に過ぎない。これに替えて、コア101で実行されるアウトオブオーダ最適化コードを、インオーダコア102の実行のために再最適化してもよい。このシナリオの場合、コア102は、コア101と同じISA又はそのサブセットを含んでもよい。単純であり幅の広いインオーダコアでより効率的に実行されるようにコードに対して最適化が行われる。コードを効率よく分配するためのコア101とコア102との間の協働は、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせに実装されてもよい。協働collaborationメカニズムの実施形態を例示するべく、コード領域を特定する動的な方法に関しての上記の例について、更に以下に説明する。上記の例では、ネイティブフォーマットのプログラムコードは、アウトオブオーダコア101で実行されるように最適化される。コード領域又はプログラムコードの実行の間に、コア101及び/又はコア102と関連付けられた監視ハードウェアを利用して、コア101によるコア領域の実行に関する性能を判断してもよい。これに替えて、ソフトウェア、OSコード、マイクロコード、又は、その他のコードのようなコードをコア102で実行して、コード領域を実行する際のコア101の性能を判断/監視してもよい。コード領域がコア102上で実行した方が良好であると判断された場合には、ハードウェア、ソフトウェア、ファームウェア、又は、これらの組み合わせを使用して、コア102上で実行するべきコード領域を変換及び/又は最適化してもよい。その結果、コア101が再びそのコード領域に遭遇した場合、命令ポインタはそのコード領域を参照し、そのコード領域を特定する特定命令がフェッチ又はデコードされて、又は、別のコード領域を特定する別の方法が検出されて、コード領域の変換された/最適化されたバージョンが、コア102上で実行される。一実施形態において、コア102がコード領域を実行する間、コア101は、全体のプログラム実行性能を向上させるべく、並行してその他のコード領域を実行してもよい。並行又は平行実行は、コア101、102上で別個のソフトウェアスレッドを複数実行することを含んでもよい。反対に、複数のスレッドが、コア101、102上でパイプライン処理されてもよい。このシナリオの一例として、2つのソフトウェアスレッドの各々が、コードの複数のステージホット、コールド等を有すると仮定する。第1スレッドからのコールドコードがコア101で実行されて、ホット領域が発生した場合には、変換されたホット領域がコア102で実行される。変換されたホット領域のコードがコア102で実行される間、第2スレッドからのコールドコードが、コア101で実行されてもよい。コア102では、第1の変換されたホットコードの実行が完了した時に、第2ソフトウェアスレッドからの別のホット領域が実行されてもよい。この例から分かるように、コードの複数のステージは、各コアに対してインターリーブされてもよく、それにより、パイプライン型の実行となる。別の実施形態では、2つのコアについて、コードが順次実行されてもよい。例えば、コア101上のコード領域を実行し、特定されたコード領域をコア102で実行し、次に、コア101上の別の領域を実行するといったように実行してもよい。また、最初に、コア102で実行されるコード領域が特定された場合であっても、その実行の性能が監視されてもよい。両方のコアにおける性能を考慮して、最大の性能及び省電力を達成するのに、どちらのコアがコード領域を実行するのに適しているか判断する。例えば、コア102上の変換済みコードとして実行されるべきコード領域が特定されたが、コア102の性能がコア101の性能を下回っている場合又は、コア102の性能ゲインがコア201上での実行の省電力の効果を上回っていない場合には、次の遭遇時に、コードがコア101に再割り当てされてもよい。図1には、異なるモジュール、ユニット及び/又ロジックに代表されるプロセッサの例を論理的に大まかに示したものである。本明細書に記載される方法及び装置を利用するプロセッサは、ここに例示されたユニットを全て含む必要はない。また、プロセッサは、図示されたユニットの幾つか又は全てを省略してもよい。更に、上記の説明の大部分は、アウトオブオーダプロセッサコア及びインオーダプロセッサコアを参照してなされた。しかしながら、上記したように、2つのプロセッサコアは、非対称コアの任意のバージョンであってもよく、例えば、ネイティブコアとソフトウェア管理コアであってもよい。加えて、図1には2つのコアのみが描かれているが、プロセッサは任意の数のコアを含んでもよく、例えば、同じ種類の複数のコア、及び、異なる種類の3つ以上のコアを含んでもよい。また、図1では、外部メモリコントローラコントローラハブ170のインターフェースとポイントツーポイントの態様で接続されているプロセッサの実施形態が示されている。しかしながら、現在の多くのプロセッサは、複数のコア、並びに、共有キャッシュ及びその他のインターフェースと接続するべく環状配置を有するオンプロセッサメモリインターフェースモジュール、オンチップモジュールを含む。また、図示されていないが、一実施形態において、プロセッサ100は、リング相互接続結合コア、キャッシュ、及び、メモリコントローラ構成要素を含む。キャッシングエージェントは、物理的に分配されたキャッシュのスライスを管理する。一例として、キャッシュ要素はそれぞれ、並べて配置されたコアに対するキャッシュのスライス、すなわち分配されたキャッシュのスライスを管理するためにキャッシュエージェントと関連付けられているコアに対するキャッシュのスライスを管理する。キャッシュエージェントが、リング接続のトラフィック及びキャッシュスライスとのインターフェースを取り扱うのと同様、コアエージェント/要素は、トラフィック及びコアとのインターフェースを取り扱う。また、メモリ及び/又はグラフィックスプロセッサのようなその他のモジュールとインターフェースするべく、リング接続は、メモリコントローラインターフェースロジックMCIL及び/又はその他のコントローラと接続を行ってもよい。図2には、2つのコア間でコードを分配するコード分配モジュールの一実施形態が示されている。一実施形態において、コア201、202は、非対称コアである。例えば、コア201は、元のプログラム順番に従わないアウトオブオーダOOOコアであり、コア202は、プログラムの順番でコードを実行するインオーダコア又はシリアルコアである。その他のコアの種類として、全て列挙されているわけではないが、ネイティブコア、非ネイティブコア、ソフトウェア管理コア、ネイティブISAコア、変換ISAコア、協調設計コア、投機実行コア及び非投機実行コアが挙げられる。一実施形態において、コア分配モジュール210は、性能及び省電力を最大化するように、コア201とコア202とにコードを分配する。本明細書で使用されるモジュールという言葉は、ハードウェア、ファームウェア、又は、これらの組み合わせを意味する。また、モジュール、ユニット又はロジックは、コア又はプロセッサの中央に配置されてもよいし、全体に分配されていてもよい。例えば、コード分配モジュール210は、マイクロコード又はソフトウェアのような分配コードを、コア201、コア202、プロセッサ200、又は、プロセッサ200を含むシステムと関連付けられた記憶装置に有してもよい。ここで、分配コードは実行されると、コード分配を実行する。これとは異なり、コード分配プロセスを、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせによって管理してもよい。一実施形態において、コード分配モジュール210は、プログラムコードのホット部分hotportionを特定する。プログラムコードについては、以下で図面4を参照して詳細に説明する。この章の説明のための一例として、プログラムコードは、バイナリコード又は機械コードのような処理要素によって実行される任意のコードを含んでもよい。電力、性能、熱、その他の処理メトリクス又はこれらの組み合わせのような考慮すべき事項を基準として、コードのホット部分とは、一のコアよりも他のコアで実行されるのに適しているコード部分を意味してもよい。ここで、コア201が、プログラムコードのネイティブ実行を行う既定のコアであり、プログラムコードのホット部分の特定は、コア202での実行により適したコード部分の特定も含む。コア201がOOOコアであり、コア202がインオーダコアである実施形態の場合、コードのホット部分とは、再現性の高い部分の実行に利用可能なリソースを多く有していると考えられるシリアルコア202での実行により適したプログラムコードのホットスポットであることを意味してもよい。一例として、コードのホット部分は、コードの一部、又は、命令カウント又はサイクルカウントのようなその他の周知のメトリックの反復再現パターンによって特定される。再現性の高いパターンを有するコード部分は、インオーダコアでより効率的に実行されるように最適化されてもよい。この例では、基本的に、コールドコード再現性が低いは、ネイティブコア、OOOコア101に割り当てられ、ホットコード再現性が高いは、ソフトウェア管理コア、インオーダコア102に割り当てられる。コードのホット部分は、静的に、動的に又はこれらの組み合わせで特定されてもよい。静的に特定される場合、コンパイラ又はユーザが、プログラムコードの一部分をホットコードであると判断してもよい。ここで、ホットコード特定命令は、ホットコードとしてのコード部分の境界を定めてもよい、すなわち、コア101ではなくコア202で実行されるべき部分を定めてもよい。一実施形態において、コア201のデコードロジックは、プラグラムコードのホット部分を特定する、ホットコード特定命令を、プログラムコードからデコードする。このような命令のフェッチ又はデコードは、コア202上でコードのホット部分の変換及び/又は実行をトリガしてもよい。この例では、コード分配モジュール210は、ホットコード検出命令を検出するデコードロジックを含む。また、モジュール210は、コア202におけるホットコードの変換最適化及び実行を実行するその他のハードウェア及び/又はソフトウェアを含んでもよい。これに替えて、ホットコード部分は、コア202で実行するために、予め最適化/変換されていてもよい。別の例では、コード分配モジュール210は、動的に実行の間にプログラムコードにおけるホットスポット/領域を特定する。一実施形態において、コア201及び/又はコア202に含まれるハードウェアを利用して、コア201のようなコアでのプログラム実行をプロファイルする。実行に関連するプロファイルされた電力及び/又は性能メトリクスの特性に基づいて、プログラムコードの一領域をホットコードとして特定してもよい。ハードウェアのオペレーションと同様に、監視コードをコア202のような一のコアで実行して、コア201のような別のコアで実行されるプログラムコードの監視/プロファイリングを実行してもよい。このような監視コードは、コア内、プロセッサ200内の記憶構造、又は、プロセッサ200を含むシステム内に保持されるコードであってもよい。例えば、監視コードは、コア201、コア202又はプロセッサ200の記憶構造に保持されるマイクロコード又はその他のコードであってもよい。そして、監視コードは、典型的な実行ユニット及びその他のファームウェア又はプロセッサ200上のロジックによって実行されてもよい。更なる別の例として、ホットコードの静的IDが、ヒントとして生成される。プログラムコード実行の動的プロファイリングは、ホットコード領域の静的特定を無視することができ、この種の静的特定はしばしば、コンパイラヒント又はユーザヒントと称されて、コード分配にどのコアが適しているかを判断するのにダイナミックプロファイルが考慮すべきヒントである。更に、ダイナミックプロファイルの性質として、ホットコード領域の特定は、そのコード部分が常にホットであると特定されるように制限するわけではない。例えば、プログラムコードが、アウトオブオーダコア201で実行されるとする。コア202で実行される監視コードは、そのプログラムコードの一部分を実行するコア201の性能レベルを監視する。実装に基づいて、コア201の性能がコア202で実行されるよりも十分低いと判断された場合、及び/又は、コア201のコード部分の再現パターンの再現性が高く、コア遷移のオーバーヘッドを隠すのに予測可能である場合、そのコード部分はホットであると特定される。変換及び/又は最適化の後、コード部分の変換されたバージョンが、コア202で実行される。コア201での実行の監視と同様に、変換されたバージョンのコードの実行がコア202で監視されてもよく、例えば、性能監視コードの実行を介して監視されてもよい。コア202での性能がコア201での性能よりも低い場合、コード部分のホットとしての特定を、動的に取り消してもよいホットコードとされた部分を、コールドコードと特定し直してもよい。コードの部分、スポット又は領域がホットとして特定されると、一実施形態において、コード分配モジュール210は、コードのホット部分を最適化及び/又は変換して、最適化された/変換されたホットコードを得る。一実施形態において、バイナリ変換コードのような、変換及び/又は最適化コードは、コア202の記録ロジックに保持されている。一例として、バイナリ変換コードは、コア202に保持されるマイクロコードの一部分であってもよい。変換/最適化コードは、実行されると、コア202での実行のためにコード部分を変換/最適化する。一実施形態において、コア201、202は、変換/最適化が、同じISA又はこれらのサブセットを認識してもよく、この部分は、コア202上でより効率的に実行を行うべく、変換/最適化が単なる変換/最適化コードとなる。別の実施形態では、コア201、202は、異なるISAを特定し、この場合、変換は、コア201によって認識可能な一のISAからのコード領域を、コア202によって認識可能な他のISAへと変換することを含む。上記では、変換/最適化が、変換/最適化コードの実行を参照して説明されたが、変換/最適化コードに対する任意の周知のメカニズム、ひいては、専用ハードウェアを使用してもよい。一実施形態において、コア201でホットコード部分の特定が発生すると、ホットコードその変換されたバージョンがコア202で実行される。ホットコード領域が発生したか否かを判断する周知の任意のトリガを利用してもよい。高レベルの幾つかの例として、コード領域と関連付けられた命令アドレスの発生/参照、ホットコードとして特定されたコード部分を特定する命令をフェッチ/デコード/スケジュール/実行する、別のコアで実行されるホットコードの変換バージョンを示す命令をフェッチ/デコード/スケジュール/実行する、ホットコード領域が発生したことを示す監視部からの外部トリガ等が挙げられる。一例として、コード分配モジュール210は、ハードウェア、ソフトウェア又はこれらの組み合わせに実装される監視モジュールを含む。監視モジュールが、コードのホット領域を特定すると、又は、ホット領域を変換領域へと変換すると、監視モジュールは、このコードのホット領域と関連付けられた命令アドレスを記録する。記録は、命令アドレスとコードの変換領域のロケーションとの関連付けを含んでもよい。そして、命令ポインタプログラムカウンタが次に命令アドレスを参照すると、記録された命令アドレスから、コードのホット領域が発生したと判断される。ここで、任意の形態の検出を利用してもよく、例えば、エンカウンタイベントを扱う同期型又は非同期型の割り込みのような形態を利用してもよい。さらに、ハードウェア、マイクロコード及び/又はファームウェアは、ホットコード部分の発生を割り込みのように扱わず、直接扱ってもよい、すなわち、ハンドラによってトリガイベントが提供されなくてもよい。コア101及び102は、マッピング構造のような特定のハードウェア構造を共有して、ホットコードとして記録されているアドレスを特定する。コア201でホットコード部分が発生したことに応答して、ホットコード部分の変換及び/又は最適化バージョンがコア202で実行される。ホットコード部分がコア201上でどのように特定され発生したかに関係なく、別のコアでコードの実行を可能とする任意の方法を利用してもよい。一実施形態において、このような実行を可能とするべく、協働モジュールが使用される。例えば、コア201、202は、特定のハードウェア構造を共有してもよい、及び/又は、情報を共有する通信チャネルを備えてもよい。一例として、コア101、102は、データキャッシュを共有してもよく、この場合、実行がコア201から202に移った場合に、データは物理的に移動せず、共有されたキャッシュに既に存在することになる。同様に、一実施形態では、シャドウレジスタファイルのようなレジスタファイルが、コア201とコア202との間で共有され、この場合、レジスタのステートコンテキストを一のコアから他のコアへと移動させる必要はない。これに替えて、レジスタファイルを共有する替わりに、高速接続を使用して、物理的に、コンテキスト又はその一部分を、一のコアから別のコアへと移動させてもよい。更に、頻繁に発生しない移動の場合には、ソフトウェアを使用してこのような移動を実行してもよい。一例として、ホットコード部分への入力値が、コア201からコア202へと移動されて、コア202でのホットコード部分の実行がサポートされる。実行の後、出力値が、コア201に戻される。一実施形態では、コード部分からの特定された入力/出力値のみが転送される、すなわち、部分コンテキストスイッチとなる。このような入力値は、ユーザソフトウェア/コンパイラ及び/又はハードウェア/ファームウェアアルゴリズムによって特定されてもよい。ここで、ダイレクトアクセスハードウェアを適用して、コア201内のレジスタ、バッファ又はその他の構造からの入力値を読み取り、これらをコア202に書き込んでもよい。反対に、同じ又は異なるハードウェアを利用して、コア202から値を読み出し、コア201へと書き込んでもよい。このような値の特定が煩雑となる場合には、コンテキストスイッチ全体、複製又は共有を実行して、コア201とコア202との間の値を提供してもよい。図3には、最大性能及び省電力を達成するためのコア間でのコードの分配を行うプロセッサの一実施形態が示されている。上記のように、プロセッサ300は、異なる種類のコアである2つのプロセッサコアを備える。一例として、コア301は、ネイティブプロセッサコア、アウトオブオーダOOOプロセッサコアであり、コア302は、ソフトウェア管理プロセッサコア、インオーダプロセッサコアである。コア301及びコア302は、必須ではないが、異なるISA型を認識してもよい。コア302は、コア301のISAのサブセットを認識してもよい。または、コア302は、コア301のISAと部分的に重複する別のISAを含んでもよい。上記したように、コア又はプロセッサは、コア又はプロセッサ内で、デコードハードウェア/ソフトウェアによって、ISA、すなわち、認識される命令の定義と関連付けられる。一実施形態において、監視モジュール305は、ネイティブOOOコア301上でのネイティブプログラムコード325の実行を監視し、この監視によって、モジュール305は、プログラムコード325のホット部分/領域327を特定する。監視モジュールは、ハードウェア、ソフトウェア又はこれらの組み合わせから構成されていてもよい。一実施形態において、監視モジュール305は、実行を監視するハードウェアを備える。一例として、ハードウェアは、リタイアメントプッシュアウトを測定するリタイアメントプッシュアウトタグ/カウンタ、命令の数を数える命令カウンタ、実行の全体の長さ及び/又は時間を測定する全体トレース実行測定ロジック、コード部分が実行された階数をカウントする再現性recurrenceカウンタ等の、マイクロアーキテクチャ及び/又はアーキテクチャフックを備え、コード325の実行の間の性能及び電力測定値を測定する。この種のハードウェアは、アウトオブオーダコア301、インオーダコア302のようなIC/プロセッサの任意の部分、及び、OOOプロセッサコア301又はインオーダプロセッサコア302内に含まれないICの関連付けられていない部分に位置してもよい。別の実施形態では、監視モジュール305は、実行されるとプログラムコード325の実行を監視し、プログラムコード325のホット領域327を特定する監視コードのようなソフトウェアを含む。一例として、プロセッサ300は、リードオンリーメモリROM構造、プログラム可能ロジック等のような記憶構造を備え、実行されると監視を開始するコード、マイクロコード又は機械コードを保持してもよい。しかしながら、監視コードは、コア301、302と関連付けられた任意の機械可読媒体に格納されてもよい。期間実行の利用は、典型的な実行ユニットによる実行に限定されず、ファームウェアを使用したマイクロコードの実行のように、プロセッサ300と関連付けられたその他のハードウェア又はプログラム可能ロジックによる実行を指してもよい。ここで、実行された監視コードは、ハードウェアが測定可能な、再現性、電力及び性能基準の監視を同様に実行してもよい。一例として、監視ハードウェア及び/又はコードは、プログラムコードのコード部分の再発生パターンを追跡/判断する。単純な例として、データ構造は、命令アドレスのようなコード部分コード領域327の参照を、コア301上で命令アドレス/コード部分が実行された回数のカウントと関連付ける。カウントは、絶対数全カウント値、又は、一時的なカウント一定時間でのカウントと関連付けられてもよい。一実施形態において、監視モジュール305は、プログラムコード325のホット部分327を特定/検出するのに適応化される。一例では、監視モジュール305は、OOOプロセッサコア301上での実行の間、プログラムコード325のホット部分327に対する1以上の性能測定値を測定する。そして、モジュール305は、OOOプロセッサコアでの性能測定値が閾値を下回ったことに応答して、プログラムコード325のホット部分327を特定する。性能測定値の例として、全て列挙するわけではないが、例えば、命令リタイアメントプッシュアウト、実行された命令の数、コード領域を実行するのにかかる時間、コード領域が発生した/実行された回数、コード領域の実行の間に消費された電力量、コード領域の実行の間に異なる電力状態で費やされた時間、コードセグメントの実行の間の熱密度等が挙げられる。上記の例のうちの一つを使用して、OOOコア301がプログラムコード325を実行すると仮定する。そして、監視コードが実行され、プログラムコード325の領域がコア301上で実行された回数が判断される。一実施形態では、回数が閾値以上となった場合、監視モジュール305は、その領域327がホットコードであると特定/判断する。閾値が3である場合、コア302で実行される監視コードがコア301上でホット領域327が3度実行されたことを検出すると、領域327は、コードのホット領域として特定される。再現パターンを判断する具体的な例を外挿して、カウントを行って閾値と比較して特定するという同様なプロセスが、任意の性能測定値に適用できるかを判断してもよい。さらに、性能測定値の決定は単純なカウントに限定されず、コア、プロセッサ又はコンピュータシステムにおける実行又は省電力性能を判断する周知のアルゴリズムを含んでもよい。しかしながら、プログラムコード325内のホット領域327を特定することは、動的性能監視に限定されない。コンパイラ又は静的プログラム分析を利用して、インオーダコア302上での実行に適していると考えられるコード部分を判断してもよい。例えば、プログラム分析により、ホット領域327が複数回、再実行される可能性があると明らかになったとする。この発見に応答して、コンパイラ又はユーザは、コード部分をホットコードとして特定する命令又は境界線demarcationを挿入してもよい。したがって、コア301のデコーダがこのような命令に遭遇すると、デコーダは、領域327は、コア302上で実行される予定のホットコードであると認識する。ある実施形態では、ユーザは、深いプログラム分析を行うことなく、プログラムの知識に基づいて、コードのこのような領域を特定してもよい。一実施形態では、領域327がホット領域であると特定されたことに応答して、最適化されたホットコード304を取得するべく、コード327は、最適化/変換モジュール310によって最適化又は変換される。監視モジュール305のオペレーションと同様に、最適化モジュール310は、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせに実装されてもよい。例えば、変換及び/又は最適化コードは、コア302、コア301又はプロセッサ300と関連付けられた構造に格納されてもよい。一例として、バイナリ変換コードが、コア302に関連付けられたファームウェアに格納される。そして、バイナリ変換コードが実行されて、ホット領域327が、コア301のネイティブフォーマットからコア302のフォーマットへと変換される。変換は、ISA又はその他のフォーマット間の変換であってもよく、最適化は、コードをOOOコア301での平行実行からコア302でのシリアル実行、又は、その逆へと最適化する周知の技術のように、実行のためにコードを最適化する任意の方法を含んでもよい。しかしながら、ファームウェアでのバイナリ変換コードの使用は単なる例であって、任意の変換コード又は最適化コードは、マイクロコードとしてコア302内に、又は、通常プログラムコードとしてシステムメモリ内に保持されるといったように、コンピュータシステム内の任意の場所に保持されてもよい。そして、最適化コードが、任意の態様で実行されて、ホット領域327が変換又は最適化され、最適化されたホットコード304が取得される。具体的には、現在知られているソフトウェア管理プロセッサにおけるコード変換のための方法及び装置のように、任意の方法及び装置を用いて、コアに対してコードを変換又は最適化してもよい。ソフトウェア、ファームウェア、ハードウェア又はこれらの組み合わせを使用して、変換が静的又は動的に実行されてもよい。監視がランタイムの間に動的に行われる、又は、実行の前に静的に行われるといったように、変換及び最適化も同様に実行されてもよい。コンパイラ又はユーザがホット領域327を特定する例では、最適化又は変換は、その時点実行の前で実行されてもよい。ここで、ホットコード特定命令を利用して、ホットコード領域327の特定、及び、最適化された/変換されたコード304のロケーションを特定してもよい。しかしながら、ホットコードとして部分327が特定されたのが実行の前又は実行の間であるかに関わらず、ある実施形態において、最適化及び変換は、動的にランタイムの間に行われる。一実施形態において、ホット領域327は、その他の実行と平行して最適化/変換される。一例として、コア302は、コア301の領域327の実行と平行して、最適化コードの実行を開始する。ここで、監視モジュール305は、コア301上でのホットコード領域327の実行を検出して、コア302上で最適化が開始される。ホット領域327からの更なる命令が301上で実行されている間に、コア302が最適化を開始する。その結果、コア301上でのホットコード327の実行と平行して、コア302は基本的にホットコード327を最適化する。別の例では、コア302のホットコード327の最適化と平行して、コア301は、プログラムコード325のその他の部分又は相互排他的なコードを実行する。別の実施形態では、ホット領域327の最適化がシリアルに行われる。例えば、コア301は、ホット領域327を実行し、次にコア301又はコア302がホットコード領域327を最適化する。一実施形態において、コード327は、元のメモリロケーションに格納されて、オンザフライでコア302によって変換される。しかしながら、ほとんどの場合、実行の前に、コード部分全体を変換/最適化する方が効率が良い。したがって、最適化/変換モジュール310が、コア302のようなコアに対してコードを最適化した後、最適化されたホットコード304がその他の場所に格納される。最適化されたホットコード304のその他の場所とは、ホーム、システムメモリロケーションのようなメモリ内の別のロケーションであってもよい。ホットコード327は、しばしば頻度の高い実行と関連付けられることから、最適化バージョン304をコア302の近くに保持することが有益であると考えられる。したがって、例示の実施形態では、コア303は、最適化されたホットコード304を保持するためのコードキャッシュ302を備える。コードキャッシュ303は、コア302内の別個のキャッシュ構造であってもよく、例えば、コア302内の共有命令又はデータキャッシュのような共有キャッシュ構造、又は、コア302と関連付けられたその他の一般的な記憶構造であってもよい。監視モジュール305の説明に戻り、ホットコード領域327の遭遇の一実施形態は、コア部分と関連付けられている命令アドレスを参照するプログラムカウンタを含む。図に示すように、マッピングモジュール315は、最適化ホットコードリファレンス317と関連付けられた、命令アドレスのような、コード領域リファレンスを保持する。基本的に、マッピングモジュール315のエントリは、ホットコード領域327とその最適化バージョン最適化ホットコード304とを関連付ける。一例として、リファレンス316は、命令アドレスのような、ホット領域327と関連付けられたアドレスを含む。このシナリオでは、コア301が、マッピングモジュール315のフィールド316に保持される命令アドレスに遭遇するプログラムカウンタが指すと、監視モジュール305はホット領域327に遭遇し、コア302で実行されることを示す。上記で簡単に説明した協働モジュール320以下に詳細に説明するは、コア302へのデータ及び/又はコンテキストの移動を実行のために容易にする。ホット領域327に遭遇し、コア302がそれを実行するとの判断は、上記の例において、リファレンス316上でのみ行われる。フィールド317とフィールド316との関連付けを利用して、領域327の最適化されたホットコードバージョン304がどこに位置しているかを素早く判断してもよい。この場合、フィールド317は、最適化されたホットコード304のロケーションに対する任意のリファレンスを含んでもよい。このようなリファレンスの幾つかの単純な例としては、最適化コード304を保持するコードキャッシュ303におけるエントリのアドレス、コードキャッシュ303の開始から最適化ホットコードを保持するエントリ304までのオフセット、及び、エントリ304に関連付けられた物理的アドレス又は線形アドレスが挙げられる。マッピングモジュール315が単純なテーブル構造として例示されており、これは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせに実装及び/又は維持されてもよい。一のロケーションと他のロケーションとを関連付けるための任意の周知の方法を使用して、ホットコード327とその最適化バージョンとを関連付けてもよい。特に例示していないが、監視モジュール305の一部分がマッピングモジュール315と共に、コア301上のネイティブコード327の替わりに、最適化されたホットコード304がコア302上で実行されることを示すトリガモジュールを構成してもよい。一例として、コア301のプログラムカウンタが次の命令アドレスに移る時に、トリガハードウェアが、マッピングハードウェアテーブル315に格納されているリファレンスとアドレスとを確認する。ここで、プログラムカウンタが、フィールド316に保持されるコード領域327を参照する命令アドレスを指すと仮定する。この場合、トリガハードウェアは、マッピングテーブル315のエントリに基づいて、コード領域327に対する最適化されたコード領域304が存在することを示す。最適化されたバージョンが既に存在し、コア302上で実行される予定であることから、コア301上でのコード領域327の実行を省略してもよい。一実施形態において、コア302が最適化コードの実行を完了するまで、コア301は、実行を中断する停止する又は低電力状態への遷移。しかしながら、これは、プロセッサ300の処理能力を最大限に活かしていない。したがって、別の実施形態では、最適化されたホットコード304がコア302上で実行されている間に、コア301は、別のソフトウェアスレッドプログラムコード325以外のコードの実行をインターリーブする。別の例として、コア301は、投機的にプログラムコード325のその他の部分を実行してもよく、この場合、基本的に、実行のランアヘッドヘルパrunaheadhelperスレッドを実行する、又は、コード領域327とは独立したコード325の別の部分をアウトオブオーダで実行する。一実施形態において、協働モジュール320は、コア301とコア302間の協働を提供する。単純な例として、協働モジュール320は、情報を転送するコア301及びコア302間の相互接続を含む。別の実施形態では、協働モジュールは、個々のコア専用であっても、複数のコア間で共有されてもよいその他のハードウェアを含み、上記の協働を簡易にしてもよい。例えば、コア302は、コア301のシャドウレジスタファイルを共有して、最適化されたホットコード304がコア302上で実行される時に、コア301からコア302へのレジスタステートのコンテキストスイッチを全て行う必要がないようにしてもよい。これに替えて、コア302は、このシナリオにおいてシャドウレジスタファイルに直接アクセス可能であってもよい。協働モジュールは、共有される構造及び/又は相互接続に限定されない。協働モジュール320は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせを含み、両方のコア301、302におけるレジスタ、記憶構造及びバッファへの直接読み出し及び/又は書き込みアクセスを提供してもよい。そして、一実施形態において、協働モジュール320は、コア301からコア302へと、最適化ホットコードの実行に必要なデータ/レジスタ値を転送可能である。また、コア301で次に適切な実行を可能とするべく、コア302からコア301へと結果を戻すことができる。上記では、監視モジュール305がネイティブコア301上での実行の監視を参照して説明されたが、一実施形態では、監視モジュール305は、コア302上での最適化されたコードの実行を関しする。この場合、監視モジュール305は、コア301上でのコード部分327の性能と、コア302上での最適化バージョン304の性能との比較を行うことが可能である。更に、コア302上での性能がコア301上での性能よりも低い場合、又は、電力消費の増加と比較して性能ゲインがコア302上で小さい場合には、領域327をホットコードとして特定する判断は、取り消されてもよい。一例として、このような決定を示すマッピングモジュール315のエントリは、割り当て解除され又は無効とされて、次にコア301がホットコード327に遭遇する時に、監視モジュール305がリファレンス316を検出しない、及び、領域327の最適化されたホットコードバージョンがコア302上で実行されるべきであることを示さない。基本的に、判断の取り消しによって、前に特定されていた領域327は、アウトオブオーダコア301に戻される。性能比較について更に説明する例として、高い再現性を有するパターン及び命令実行カウント値が高いことに基づいて、コード領域327がホットコードとして特定されたと仮定する。この場合、コード327は、コア302に存在するバイナリ変換コードによって最適化されて、最適化されたコード304が取得される。最適化コード304がコードキャッシュ303に格納されると、マッピングテーブル315におけるエントリが生成されて、コード領域327と最適化されたバージョン304とが関連付けられる。コア301が次に、フィールド316におけるリファレンスに一致するリファレンスに遭遇すると、コード領域327がコア301で実行されるのではなく、最適化コード304の実行がコア302でトリガされる。協働モジュールは、転送、共有又はコンテキストスイッチングにより、コア301からコア302へと適切な値を提供する。最適化されたホットコード304をコア302が実行する間、監視モジュール305によって、同じ性能測定値実行カウントが追跡される。命令実行カウントが、コード領域327がコア301で実行された場合よりも少ない場合には、領域327がホットコードとして特定された状態が、その後も継続する。命令実行カウントがコア302上で、長期の又は大幅な電力増加が検出された場合には、領域327のホットコードとしての特定が上記のように取り消される。コア301とコア302の間の通信を提供するのに加えて、協働モジュール320は、異なる種類の複数のコアを管理するその他の機能を有してもよい。第1の例として、電力管理部は、電力アルゴリズムを実装して、コア301及びコア302が、同時に最大電力で動作しないようにする。これは、単なる例である。その他の電力アルゴリズムでは、このような最大電力オペレーションを可能としてもよい。別の電力に関する例として、コア302は、コア301上での実行の監視の間、最大電力を下回る電力状態低電力状態であってもよい。例えば、コア301が、自身の監視を実行するメカニズムと関連付けられている場合、実行されるコードの最適化バージョンが存在するまで、コア302に完全に電力を供給する必要はない。この場合、実行が必要となるまでコア302をオフとすることにより、節電することができる。反対に、コア302が最適化ホットコードを実行している間は、コア301の例えば、ACPI低電力状態のような最大電力を超える電力状態電力を落としてもよい。図4には、最大性能及び省電力を達成するべく、アウトオブオーダコア及びインオーダコア間でコードを分配する方法を示したフローチャートの一実施形態が示されている。図4のフローは、ほぼシリアルな形態で描かれているが、フローは、異なる順番で実行されてもよいし、平行に実行されてもよい。例えば、フロー405においてプログラムがアウトオブオーダコア実行される前に、フロー410及び415は、プログラムコードのコンパイルの間に実行されてもよい。更に、フローのそれぞれは、ハードウェア、ファームウェア又はプログラムコードの実行を介して実行されてもよい。フロー405において、プロセッサ内のアウトオブオーダOOOプロセッサコアでのプログラムコードの実行が監視される。一実施形態において、プログラムコードの参照とは、1その他のプログラムコードをコンパイルするべく、動的に又は静的にコンパイラプログラムを実行すること、2オペレーティングシステム、ハイパーバイザ、アプリケーションコード又はその他のソフトウェアプログラムのようなメインプログラムを実行すること、3メインプログラムコードと関連付けられた、ライブラリのようなその他のプログラムコードを実行すること、4直接メインプログラムと関連付けられていない場合があるヘルパスレッド又はその他のタスク又はその他のプログラムコード、5これらの組み合わせ、を実行することを指す。コンパイラは多くの場合、ソーステキスト/コードをターゲットテキスト/コードへと変換するプログラム又はプログラムのセットを含む。通常、コンパイラを使用したプログラム/アプリケーションコードのコンパイルは、複数のフェーズ及びパスで実行され、高レベルプログラミング言語コードを低レベル機械又はアセンブリ言語コードへと変換する。単純なコンパイルには、シングルパスコンパイラを使用してもよい。コンパイラは、周知の任意のコンパイル技術を利用して、字句解析、前処理、構文解析、意味解析、コード生成、コード変換及びコード最適化のような周知の任意のコンパイラオペレーションを実行してもよい。大きなコンパイラは複数のフェーズを有し、これらのフェーズは、2つの一般的なフェーズ内に分類される、1フロントエンド、すなわち、構文処理、意味処理及びその他の変換/最適化が実行されるフェーズ、2バックエンド、すなわち、分析、変換、最適化及びコード生成が実行されるフェーズ、である。コンパイルの中には、コンパイラのフロントエンドとバックエンドとの間の線引きをぼかすミドルエンドを参照するものもある。この場合、挿入、関連付け、生成又はコンパイラのその他のオペレーションへの参照は、上記のフェーズ又はパスの何れかで実行されてもよいし、コンパイラのその他の周知のフェーズ又はパスで実行されてもよい。一実施形態において、プログラムコードの実行の監視は、プログラムコード内のコードセグメント/領域が実行される回数を追跡することを含む。コード領域は、任意の周知の命令/コードのグループ化の態様で決定されてもよい。一例として、一のコード部分と関連付けられた命令アドレスが、OOOコアのプログラムカウンタによって参照される都度、再現カウントがインクリメントされる。一実施形態では、そのコード部分に対する再現カウントが閾値を超えると、フロー410において、コード部分がホットコードとして特定される。再現パターンの決定と共に、又は、別に、プログラムコードの実行の監視は、コード部分と関連付けられている性能測定値の決定/追跡を含んでもよい。先に開示したように、性能測定値の例として、命令リタイアメントプッシュアウト、実行された命令の数、コード領域を実行するのにかかる時間、コード領域が発生した/実行された回数、コード領域の実行の間に消費された電力量、コード領域の実行の間に異なる電力状態で費やされた時間、コードセグメントの実行の間の熱密度等が挙げられる。しかしながら、プロセッサの実行と関連付けられた周知の任意の測定値又は測定値の組み合わせを、プログラムコードの実行の間に監視してもよい。フロー410において、プログラムコードのホット部分が、再現パターン、性能測定値又はこれらの組み合わせに基づいて特定される。再現カウントを閾値と比較した上記の例と同様に、性能測定値が閾値と比較される。例えば、監視部は、プッシュアウト回数閾値を超えるリタイアメントプッシュアウトの階数をカウントしてもよい。プッシュアウトが、カウント閾値を超える場合には、コード部分がコードのホット部分として特定される。本例では、1つの性能測定値のみを考慮するとして開示されたが、コードのホットコードの部分の特定は、複数の性能測定値及び/又は再現パターンの任意の組み合わせに基づいてもよい。例えば、複数の性能測定値、電力条件及び再現パターンを評価するアルゴリズムを開発して、コード部分のホットコード部分としての特定を行ってもよい。アルゴリズムは、実装形態に固有のものであってもよく、その組み合わせの数は多大なものとなり、本発明の説明を不必要に曖昧にするのを避けるために、組み合わせアルゴリズムの詳細については詳細に説明しない。上記したように、コード部分のホットコードとしての特定は、プログラムコードの実行の前に実行されてもよく、例えば、プログラムコードのコンパイルの間にコンパイラによって、又は、ランタイムの間にランタイムコンパイラ、ハードウェア、ファームウェア、その他のソフトウェア又はこれらの組み合わせによって実行されてもよい。ホットコード領域が特定されると、プログラムコードのホット部分が、協調設計プロセッサコアで実行されるように最適化されて、フロー415においてプログラムコードの最適化されたホット部分が得られる。一実施形態において、このような最適化は、プログラムコードのホット部分を、アウトオブオーダプロセッサコアと関連付けられたデコードロジックが認識可能なネイティブ命令から、協調設計コアと関連付けられたデコードロジックが認識可能な協調設計命令へと変換することを含む。しかしながら、変換は必須ではない。ある実施形態では、協調設計コアは、アウトオブオーダコア又はこれらのサブセットのような同じISAを実行可能なシリアルコアであってもよい。このシナリオでは、コードは、一のISAから他のISAへと変換されず、アウトオブオーダ実行のフォーマットからシリアル実行のフォーマットへと変換/最適化されてもよい。コードを変換及び/又は最適化する周知の任意の方法、例えば、コードを分析、変換、変形及び/又は最適する周知のコンパイル方法を使用してもよい。具体的な例として、バイナリ変換コードが、協調設計コアに存在し、プログラムコードを、プログラムコードの最適化されたホット部分へと変換/最適化してもよい。フロー420において、プログラムコードの最適化されたホット部分は、協調設計プロセッサコアへと分配される。一実施形態では、分配は、プログラムコードの最適化されたホット部分を、協調設計コアに関連付けられたコードキャッシュに書き込むことを含む。しかしながら、分配は、任意の記憶構造から任意のタイミングで実行されてもよい。例えば、最適化されたホット部分は、システムメモリ内に格納されてもよく、実行の直前に協調設計コアに分配されてもよい。フロー425において、プログラムコードの特定されたホット部分は、プログラムコードの最適化されたホット部分と関連付けられる。例えば、プログラムコードのホット部分のリファレンス及び最適化されたホット部分のリファレンスは、コードマッピングテーブルのエントリに格納されてもよい。コードキャッシュの例として、最適化されたホット部分のリファレンスは、コードキャッシュ内の最適化されたホットコードのロケーションの任意のリファレンス、例えば、アドレス又はオフセットを含む。しかしながら、周知の任意のデータ構造及び/又は方法を使用して、ホットコード部分と、当該ホットコード部分の最適化されたバージョンのロケーションとを関連付けてもよい。そして、アウトオブオーダコアでの実行の間にコード部分に遭遇すると、そのプログラムコードの最適化されたホット部分が、フロー430において、協調プロセッサコアを使用して実行される。上記したように、コードの最適化されたホット部分の実行は、設計実装に基づいて、アウトオブオーダコアでのその他のコードの実行と平行して、又は、アウトオブオーダコアでのその他のコードと平行して行われてもよい。平行実装では、アウトオブオーダコアは、同じスレッドからの別のコードを最適化ホットコードとして及びその他のスレッドからインターリーブされたコードとして実行可能であってもよい。フロー435において、最適化されたホット部分の協調設計プロセッサコアでの実行は、フロー405のアウトオブオーダプロセッサコアでの実行の監視と同様な態様で監視される。例えば、プログラムコードの最適化ホット部分のインオーダ協調設計プロセッサコアで実行する間に、フロー405で監視されたのと同じ性能測定値を監視してもよい。そして、性能測定値からアウトオブオーダコアとインオーダコアとを比較した場合に、アウトオブオーダコアでの性能が低いことが分かった場合、プログラムコードの最適化ホット部分をインオーダコアで実行する替わりに、アウトオブオーダコアを使用してプログラムコードのホット部分を実行することを示してもよい。図5には、最大性能及び省電力を達成するべく、アウトオブオーダコア及びインオーダコアの間でコードを分配する方法を示したフローチャートの別の実施形態が示されている。フロー505において、第1プロセッサコアに対して最適化された第1コード型を含むプログラムコード領域をホットコードとして認識することに応答して、当該プログラムコード領域を、第1コード型から第2プロセッサコアに対して最適化された第2型へと変換されたプログラムコード領域を含む変換ホット領域と関連付ける。一実施形態において、第1プロセッサコアはアウトオブオーダプロセッサコアを含み、第1コード型はアウトオブオーダプロセッサコアに対して最適化されたアウトオブオーダコア型を含み、第2コード型はインオーダプロセッサコアに対して最適化されたインオーダコード型を含む。一例として、アウトオブオーダプロセッサコアは、第1命令セットアーキテクチャISAを認識するデコードロジックと関連付けられ、インオーダプロセッサコアは、第2ISAを認識するデコードロジックと関連付けられる。ここで、第2コード型は更に、第2ISAに対して最適化される。一実施形態において、第1プロセッサコアと関連付けられたデコードロジックは、プログラムコードから少なくとも1つの命令をデコードして、プログラムコードの領域をホットコードであると示す。ここで、ユーザは、ホット領域を特定するべく、プログラムコードに命令を含めてもよい。または、プログラムコードをコンパイルする時に、プログラムコードの分析に応答して、コンパイラは命令を挿入してもよい。別の実施形態では、ハードウェアは、第1コアでのプログラムコードの領域の実行を監視し、ハードウェアの監視に基づいて、プログラムコードの領域をホットコードとして特定する。更に、変換されたホット領域のリファレンスと関連付けられたプログラムコードの領域のリファレンスで、データ構造内のエントリを更新することにより、プログラムコードの領域が変換されたホット領域と関連付けられてもよい。例えば、変換されたホット領域に対するリファレンスとしては、アドレス、命令アドレス、キャッシュメモリ内のロケーション、プログラムカウンタ値及び命令オペコードが含まれてもよい。フロー510において、第1プロセッサコアでプログラムコードを実行する間にプログラムコードのホット領域に遭遇すると、第2プロセッサコアで変換されたホット領域が実行される。一例として、第1プロセッサコアの命令ポインタがコードのホット領域を参照すると、変換された領域が第2プロセッサで実行される。しかしながら、命令に遭遇する都度、命令が第2コアでの実行をトリガしてもよい。例えば、実行をトリガする替わりに、特定のアドレスのフェッチ、又は、特定の命令のデコードを行ってもよい。一実施形態において、コードの特定及び複数のコア間でのコードの分配を行う際に、電力条件を考慮してもよい。一例として、第2プロセッサコアが変換されたホット領域を実行する時、第1プロセさコアは、節電のために低電力状態へと移る。更に、一実施形態では、特定の電力条件により、両方のコアが同時に最大電力で動作することがないように制限してもよい。ネイティブコアと異なる協調設計コアとを結合する結果、電力及び実行の最良の利点を1つのアプリケーション内で得ることが可能である。例えば、アウトオブオーダコア及びソフトウェア管理インオーダコアを使用することにより、ソフトウェア管理コアでは効率的でないコードが、アウトオブオーダコアに移動させる。そして、アウトオブオーダコアで効率的でないコードは、ソフトウェア管理コアへと移動させる。ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせにより、ネイティブコードの平行実行、ホットコード検出及びホットコード最適化が効率的に管理されてもよく、複数のスレッドの個々の部分は、パイプライン様にアウトオブオーダコアとインオーダ協調設計コアとの間で効率的にインターリーブされてもよい。その結果、ある実装形態において、インオーダコアで実行が行われている間はアウトオブオーダコアを低電力状態にするといったように、異なる電力効率技術を使用して良好な電力性能を達成できると同時に、最大性能を達成できると考えられる。本明細書で用いられたモジュールという言葉は、任意のハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを意味する。別個のものとして図示されているモジュールの境界は、通常変わることが多く、重複する可能性もある。例えば、第1のモジュール及び第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを共有しているとしてもよいし、独立したハードウェア、ソフトウェア又はファームウェアを持つとしてもよい。一実施形態では、ロジックという用語は、例えば、トランジスタ、レジスタのようなタスクを実行するべく組み合わせられる及び/又は構成されるハードウェアを含む。別の実施形態では、ロジックという用語は、プログラム可能な論理デバイス又はプログラム可能なロジックアレイのようなその他のデバイスを含む。また、本明細書で使用されている値という言葉は、数、状態、論理状態又は2値論理状態のあらゆる既知の表現を含む。また、明細書で使用されている論理レベル、論理値、又は論理的値は、1又は0といった単純に2値論理状態を意味している場合もある。例えば、1は高い論理レベルを指し、0は低い論理レベルを指す。一実施形態では、トランジスタ又はフラッシュセルのような記憶セルは、1つの論理値又は複数の論理値を保持可能であってもよい。しかしながら、コンピュータシステムにおける値の他の表現が使用されてもいる。例えば、10進数の10は、2進値表示では、1010と表され、16進数表示ではAと表される。したがって、ある1つの値は、コンピュータシステムに保持される情報のあらゆる表示形式を含む。さらに、状態ステートは、値又は値の一部によって表されていてもよい。例えば、論理値の1のような第1の値が、デフォルト状態又は最初の状態を表していてもよく、論理値の0のような第2の値が、非デフォルト状態を表していてもよい。加えて、リセット及びセットという言葉はそれぞれ、ある実施形態では、デフォルト値又は状態及び更新された値又は状態を指す。例えば、デフォルト値は、高い論理値、すなわち、リセットを含んでもよく、更新値は、低い論理値、すなわち、セットを含んでもよい。値のどのような組み合わせを、あらゆる数の状態を表すのに利用してもよい。上記の方法、ハードウェア、ソフトウェア、ファームウェア、コードの実施形態を、機械アクセス可能な又は機械可読な媒体に記憶され、プロセッシング素子によって実効可能な命令又はコードを使用して実装してもよい。機械アクセス可能/機械可読な媒体としては、コンピュータ又は電子システムのような機械によって読み出し可能な形式の情報を提供するすなわち、記憶及び/又は送信するあらゆるメカニズムを含む。例えば、有形機械アクセス可能媒体には、スタティックRAMSRAM若しくはダイナミックRAMDRAMのようなランダムアクセスメモリRAM、ROM、磁気的又は光学的記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光学記憶デバイス、音響的記憶デバイス、又は他の形態の伝播信号例えば、搬送波、赤外線信号、デジタル信号記憶デバイス等が含まれる。また、本明細書における一実施形態又はある実施形態という言葉は、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている一実施形態において又はある実施形態においてという表現は、必ずしも同一の実施形態を示していない。また、1以上の実施形態において、特定の構成、構造又は特徴を、適切な形で組み合わせてもよい。明細書の上記において、特定の例示された実施形態を参照して、詳細な説明がなされた。しかしながら、添付の特許請求の範囲に記載される本発明の範囲内において、様々な変形及び変更を加えることが可能であることは、明らかである。したがって、明細書及び添付の図面は、発明を制限するものではなく、発明を例示するものであると見なされるべきである。また、上記の実施形態及び他の例で使用された言葉は、同じ実施形態又は同じ例を必ずしも指している必要はなく、異なる及び別の実施形態を指している場合もあるし、同じ実施形態を指している場合もある。