(57)【特許請求の範囲】
【請求項１】
コアを有するハードウェアプロセッサと、
複数の電力ドメインであって、各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインと、
電力トランザクション・ユニットであって、
同時実行のために第１の電力トランザクションとしての第１の電力管理コマンド及び第２の電力トランザクションとしての第２の電力管理コマンドを割り当て、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがない場合、前記第１の電力トランザクション及び前記第２の電力トランザクションのコミットを実行し、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがある場合、前記第１の電力トランザクションのアボート及び前記第２の電力トランザクションのコミットを実行する電力トランザクション・ユニットと
を備える
ハードウェア装置。
【請求項２】
前記第１の電力トランザクション及び前記第２の電力トランザクションはそれぞれ、複数の命令を含む、
請求項１に記載のハードウェア装置。
【請求項３】
各ドメインに対する前記電力管理コマンドを受信する複数の電力状態レジスタ
をさらに備える
請求項１又は２に記載のハードウェア装置。
【請求項４】
前記第２の電力トランザクションに基づいて書き込まれた電力状態レジスタに、前記第１の電力トランザクションに基づいて書き込まれる場合に、前記第１の電力トランザクション及び前記第２の電力トランザクションの間に前記コンフリクトがあるとされる、
請求項３に記載のハードウェア装置。
【請求項５】
前記電力トランザクション・ユニットは、ロックを発行しない、
請求項１から４のいずれか１項に記載のハードウェア装置。
【請求項６】
前記第１の電力トランザクション及び前記第２の電力トランザクションに基づいて共有電力ドメインに対するコンフリクトする複数の電力管理コマンドが書き込まれる場合に、前記第１の電力トランザクション及び前記第２の電力トランザクションの間に前記コンフリクトがあるとされる、  請求項１から５のいずれか１項に記載のハードウェア装置。
【請求項７】
前記コンフリクトがある場合、前記第２の電力トランザクションの実行に応じた電力ドメインの移行が、前記第２の電力トランザクションの前記コミットの後にのみ、複数の他のトランザクションに対して可視である、
請求項１から６のいずれか１項に記載のハードウェア装置。
【請求項８】
メモリ・トランザクション・ユニットであって、第１のスレッド及び第２のスレッドに基づいて同一のメモリアドレスを変更する場合を除き、前記ハードウェアプロセッサの前記コア上の前記第１のスレッド及び第２のコア上の前記第２のスレッドの同時実行後に、前記第１のスレッド及び前記第２のスレッドのコミットを実行するメモリ・トランザクション・ユニット
をさらに備える
請求項１から７のいずれか１項に記載のハードウェア装置。
【請求項９】
ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインを提供する段階と、
同時実行のために第１の電力トランザクションとしての第１の電力管理コマンド及び第２の電力トランザクションとしての第２の電力管理コマンドを割り当てる段階と、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがない場合、前記第１の電力トランザクション及び前記第２の電力トランザクションのコミットを実行する段階と、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがある場合、前記第１の電力トランザクションのアボート及び前記第２の電力トランザクションのコミットを実行する段階と
を備える
方法。
【請求項１０】
前記第１の電力トランザクション及び前記第２の電力トランザクションはそれぞれ、複数の命令を含む、
請求項９に記載の方法。
【請求項１１】
電力状態レジスタにおいて各ドメインに対する前記電力管理コマンドを受信する段階
をさらに備える
請求項９又は１０に記載の方法。
【請求項１２】
前記第２の電力トランザクションに基づいて書き込まれた電力状態レジスタに、前記第１の電力トランザクションに基づいて書き込まれる場合に、前記第１の電力トランザクション及び前記第２の電力トランザクションの間に前記コンフリクトがあるとされる、
請求項１１に記載の方法。
【請求項１３】
ロックが発行されない、
請求項９から１２のいずれか１項に記載の方法。
【請求項１４】
前記第１の電力トランザクション及び前記第２の電力トランザクションに基づいて共有電力ドメインに対するコンフリクトする複数の電力管理コマンドが書き込まれる場合に、前記第１の電力トランザクション及び前記第２の電力トランザクションの間に前記コンフリクトがあるとされる、
請求項９から１３のいずれか１項に記載の方法。
【請求項１５】
前記コンフリクトがある場合、前記第２の電力トランザクションの実行に応じた電力ドメインの移行が、前記第２の電力トランザクションの前記コミットが実行された後にのみ、複数の他のトランザクションに対して可視である、
請求項９から１４のいずれか１項に記載の方法。
【請求項１６】
第１のスレッド及び第２のスレッドに基づいて同一のメモリアドレスを変更する場合を除き、前記ハードウェアプロセッサ上の前記第１のスレッド及び前記第２のスレッドの同時実行後に、前記第１のスレッド及び前記第２のスレッドのコミットを実行する段階
をさらに備える
請求項９から１５のいずれか１項に記載の方法。
【請求項１７】
ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインを提供する段階と、
同時実行のために第１の電力トランザクションとしての第１の電力管理コマンド及び第２の電力トランザクションとしての第２の電力管理コマンドを割り当てる段階と、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがない場合、前記第１の電力トランザクション及び前記第２の電力トランザクションのコミットを実行する段階と、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがある場合、前記第１の電力トランザクションのアボート及び前記第２の電力トランザクションのコミットを実行する段階と
をコンピュータに実行させるためのプログラム。
【請求項１８】
前記第１の電力トランザクション及び前記第２の電力トランザクションはそれぞれ、複数の命令を含む、
請求項１７に記載のプログラム。
【請求項１９】
電力状態レジスタにおいて各ドメインに対する前記電力管理コマンドを受信する段階をさらに前記コンピュータに実行させる
請求項１７又は１８に記載のプログラム。
【請求項２０】
前記第２の電力トランザクションに基づいて書き込まれた電力状態レジスタに、前記第１の電力トランザクションに基づいて書き込まれる場合に、前記第１の電力トランザクション及び前記第２の電力トランザクションの間に前記コンフリクトがあるとされる、
請求項１９に記載のプログラム。
【請求項２１】
前記第１の電力トランザクション及び前記第２の電力トランザクションが実行される場合に、ロックが発行されない
請求項１７から２０のいずれか１項に記載のプログラム。
【請求項２２】
前記第１の電力トランザクション及び前記第２の電力トランザクションに基づいて共有電力ドメインに対するコンフリクトする複数の電力管理コマンドが書き込まれる場合に、前記第１の電力トランザクション及び前記第２の電力トランザクションの間に前記コンフリクトがあるとされる、
請求項１７から２１のいずれか１項に記載のプログラム。
【請求項２３】
前記コンフリクトがある場合、前記第２の電力トランザクションの実行に応じた電力ドメインの移行が、前記第２の電力トランザクションの前記コミットが実行された後にのみ、複数の他のトランザクションに対して可視である、
請求項１７から２２のいずれか１項に記載のプログラム。
【請求項２４】
第１のスレッド及び第２のスレッドに基づいて同一のメモリアドレスを変更する場合を除き、前記ハードウェアプロセッサ上の前記第１のスレッド及び前記第２のスレッドの同時実行後に、前記第１のスレッド及び前記第２のスレッドのコミットを実行する段階
をさらに前記コンピュータに実行させる
請求項１７から２３のいずれか１項に記載のプログラム。
【請求項２５】
コアを有するハードウェアプロセッサと、
複数の電力ドメインであって、各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインと、
手段であって、
同時実行のために、第１の電力トランザクションとしての第１の電力管理コマンド及び第２の電力トランザクションとしての第２の電力管理コマンドを割り当て、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがない場合、前記第１の電力トランザクション及び前記第２の電力トランザクションのコミットを実行し、
前記第１の電力トランザクション及び前記第２の電力トランザクションの間にコンフリクトがある場合、前記第１の電力トランザクションのアボート及び前記第２の電力トランザクションのコミットを実行することを含む手段と
を備える
ハードウェア装置。
【請求項２６】
請求項１７から２４のいずれか１項に記載のプログラムを格納するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、エレクトロニクスに関し、より具体的には、本開示の実施形態は、トランザクショナル電力管理を実行するための電力トランザクション・ユニットを備えるハードウェアプロセッサに関する。
【背景技術】
【０００２】
プロセッサ、又はプロセッサのセットは、例えば、命令セットアーキテクチャ（ＩＳＡ）などの命令セットからの複数の命令を実行する。命令セットは、プログラミングに関するコンピュータアーキテクチャの一部であり、複数のネイティブデータタイプ、複数の命令、レジスタアーキテクチャ、複数のアドレッシングモード、メモリアーキテクチャ、割り込み及び例外処理、並びに外部入力及び出力（Ｉ／Ｏ）を一般に含む。
【図面の簡単な説明】
【０００３】
本開示は、例として図示されており、添付図面の複数の図面に限定されるものではない。図面において、複数の同様の参照符号は複数の同様の要素を示す。
【図１】本開示の複数の実施形態に係るハードウェア装置を図示する。
【図２】本開示の複数の実施形態に係る集積回路を図示する。
【図３】本開示の複数の実施形態に係る集積回路を図示する。
【図４】本開示の複数の実施形態に係る複数の電力トランザクションを有しないシステムに対する電力管理コードを図示する。
【図５】本開示の複数の実施形態に係る複数の電力トランザクションを有するシステムに対する電力管理コードを図示する。
【図６】本開示の複数の実施形態に係る複数の原子力トランザクションあり及び原子力トランザクションなしの時間概略図を図示する。
【図７】本開示の複数の実施形態に係るフローダイヤグラムを図示する。
【図８】本開示の複数の実施形態に係るフローダイヤグラムを図示する。
【図９Ａ】本開示の複数の実施形態に係る、例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行パイプラインの両方を図示するブロック図である。
【図９Ｂ】本開示の複数の実施形態に係るプロセッサに含まれる、インオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行アーキテクチャコアの両方を図示するブロック図である。
【図１０Ａ】本開示の複数の実施形態に係る、単一プロセッサコアと、そのオンダイ相互接続ネットワークとの接続と共に、そのレベル２（Ｌ２）キャッシュのローカルサブセットとのブロック図である。
【図１０Ｂ】本開示の複数の実施形態に係る、図１０Ａのプロセッサコアの一部の拡大図である。
【図１１】本開示の複数の実施形態に係る、１つより多くのコアを有してよく、統合メモリコントローラを有してよく、統合グラフィクスを有してよいプロセッサのブロック図である。
【図１２】本開示の一実施形態に係るシステムのブロック図である。
【図１３】本開示の実施形態に係る、より具体的かつ例示的なシステムのブロック図である。
【図１４】本開示の実施形態に係る、より具体的かつ例示的な第２のシステムのブロック図である。
【図１５】本開示の実施形態に係るシステムオンチップ（ＳｏＣ）のブロック図を示す。
【図１６】本開示の複数の実施形態に係る、ソース命令セットにおける複数のバイナリ命令を変換するためのソフトウェア命令コンバータの使用と、ターゲット命令セットにおける複数のバイナリ命令とを対比するブロック図である。
【発明を実施するための形態】
【０００４】
以下の説明において、様々な具体的な詳細が記述される。しかしながら、本開示の複数の実施形態は、これらの具体的な詳細なしで実施され得ることが理解される。複数の他の例において、この説明の理解を曖昧にしないために、複数の周知の回路、構造、及び技術は、詳細に示されていない。
【０００５】
本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」などの言及は、説明された実施形態が特定の特徴、構造、又は特性を含んでよいが、各実施形態が必ずしも当該特定の特徴、構造、又は特性を含まなくてよいことを示す。さらに、そのような表現は、必ずしも同一の実施形態を指しているものではない。さらに、特定の特徴、構造、又は特性が実施形態に関連して説明されている場合、明示的に説明されているか否かに拘わらず、当業者はその知識内で複数の他の実施形態に関連してそのような特徴、構造、又は特性を採用することが提示される。
【０００６】
（例えば、ハードウェア）プロセッサ、又はプロセッサのセットが、例えば、命令セットアーキテクチャ（ＩＳＡ）のような命令セットから複数の命令を実行する。命令セットは、プログラミングに関連するコンピュータアーキテクチャの一部であり、複数のネイティブデータタイプ、複数の命令、レジスタアーキテクチャ、複数のアドレッシングモード、メモリアーキテクチャ、割り込み及び例外処理、並びに外部入力及び出力（Ｉ／Ｏ）を一般に含む。本明細書における命令という用語は、例えば、実行のためにプロセッサに提供される命令などのマクロ命令、又は、例えば、プロセッサのデコードユニット（デコーダ）が複数のマクロ命令をデコーディングした結果の命令などのマイクロ命令を指し得ることが留意されるべきである。（例えば、複数の命令をデコード及び／又は実行する１つ又は複数のコアを有する）プロセッサは、例えば、算術、ロジック、又は複数の他の機能を実行する際に、データに基づいて作動し得る。
【０００７】
ハードウェアプロセッサ（例えば、コンピューティングシステムの一部として）は、例えば、アドバンスト・コンフィギュレーション・アンド・パワー・インターフェイス（ＡＣＰＩ）規格に従って、その複数のコンポーネント（例えば、複数のコア及び／又はデバイス）のうちの１つ又は複数の電力を、複数の電力状態の間で移行し得る。一実施形態において、コンポーネントは、複数の操作状態、アイドリング状態、又はオフ状態のうちの１つにおいて動き得る。例えば、第１の電力状態は、最大電力及び頻度であってよく、第２の電力状態は、（例えば、アイドリングではないが、）より低い電力及び頻度であってよい。電力状態移行は、例えば、要求に応じて、第１の状態から第２の状態への移行を実行するよう、（例えば、電力状態移行を引き起こす、実行されている複数の命令から）複数のクロックサイクルを取って良い。電力は、バッテリ又は他の電力ソースにより提供され得る。電力管理ユニットは、実行されるオペレーションがない（例えば、プロセッサのコアにより実行される命令がない）場合、プロセッサ及び／又はその複数のデバイス（例えば、ディスプレイ、入力／出力（Ｉ／Ｏ）ポートなど）を、例えば、アイドリング又はオフ状態などの様々な電力状態に置くことにより、電力を節約し得る。複数の特定の実施形態において、電力管理ユニットは、電力状態決定及び／又は移行を行うことにより、電力消費を管理し得る。追加的に又は代替的に、電力管理は、オペレーティングシステム（ＯＳ）により、例えば、ＯＳとその電力状態が移行された（例えば、変更された）デバイスとの間のドライバ通信を介して、実装され得る。
【０００８】
本開示の複数の特定の実施形態において、電力管理は、ソフトウェア（例えば、ＯＳ及び／又は複数のアプリケーション）と共存するプロセッサ（例えば、低電力マイクロコントローラ）を利用し得る。（例えば、エネルギ効率性のために）本開示の複数の特定の実施形態において、ＯＳは、例えば、各デバイスドメインにその独自の状態を制御することを任せるなど、そのドメイン内において電力制御を分散し得る。しかしながら、電力管理フロー視点からは、複数の電力管理（例えば、移行）コマンドが、例えば、電力管理ユニットにより、発行される及び／又は実行されると、これは、競合（ｃｏｎｔｅｎｔｉоｎ）及び競合状態（ｒａｃｅ  ｃｏｎｄｉｔｉоｎ）をもたらし得る。これは、別の電力移行（例えば、処理）が発生した間、例えば、１つの電力移行要求を引き延ばす又はキャンセルするよう、（例えば、複数のセマフォ又は他の手段を用いて）ロックすることにより、対処され得る。これは、例えば、ロックが（例えば、デバイスレベル制御、又はデバイスのセット、若しくはプラットフォームのためのいずれかの）一の電力移行全体で維持されている場合、エネルギの非効率を引き起こし得る。本開示の複数の特定の実施形態は、例えば、ロックを利用しないなど、拡張可能な電力管理を提供し得る。本開示の複数の特定の実施形態は、例えば、ＯＳ内、又は電力管理ユニット（例えば、プロセッサの電力管理コントローラ（ＰＭＣ）又はストレージコントローラユニット（ＳＣＵ））で、若しくは両者の組み合わせにおいて、粗粒の複数のロック又は同期を利用しない電力管理を提供し得る。本開示の複数の特定の実施形態は、一度に１つの電力移行（例えば、要求）のみがハードウェアへ送信され得るＯＳにより（例えば、高水準で粗粒度の）ロックを入れない電力管理を提供し得る。
【０００９】
本開示の複数の特定の実施形態は、トランザクショナル電力管理を実行するための複数の電力管理装置（例えば、プロセッサ及び／又はシステムオンチップ（ＳｏＣ））及び方法を含む。例えば、（例えば、デバイス、コンポーネント及び／又は電力ドメインの）各電力状態移行は、トランザクションとして表され得る。一実施形態において、電力状態移行（例えば、１つの状態から異なる状態へ）は、例えば、電力管理ユニットの制御入力へ（例えば、各電力ドメインに対する入力が）送信されるなどの電力管理コマンドの受信により要求され得る。本開示の複数の特定の実施形態は、複数の電力管理コマンドを並列化するための複数の電力管理装置及び方法を含む。本開示の複数の特定の実施形態は、トランザクショナル電力管理を実行するための複数のトランザクショナルメモリ（例えば、管理）装置及び方法を含む。本開示に係る電力管理は、電力管理ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせを含み得る。
【００１０】
一実施形態において、トランザクションは、原子性、一貫性、独立性、及び耐久性（ＡＣＩＤ）特性のうちの１つ、すべて、又はその任意の組み合わせに従って、保証される。原子性（例えば、アトミックであること）は一般に、「すべてか無し」であるトランザクションを指し得る。例えば、複数のトランザクションの一部が失敗した場合、次にそのトランザクション全体が失敗し、操作されたデータが変更されないままとなる。アトミックなシステムは、例えば、電源故障、エラー、及びクラッシュを含む、各及びすべての状況において原子性を保証し得る。トランザクションの外では、コミットされたトランザクションが不可分（「アトミック」）なように表わされ（例えば、操作されたデータ上のその複数の効果により）、アボートされた（例えば、コミットされていない）トランザクションが発生していなかったかのように表わされる。一貫性は一般に、データを、１つの有効な状態から別の状態へ動かすための任意のトランザクションを指し得る。例えば、任意の書き込みデータは、例えば、複数の制約、カスケード、トリガ、及びそれらの任意の組み合わせを含むなど、すべての定義されたルールに従って、有効となる。これは、例えば、アプリケーションレベルのコードの責任であることがあり、すべての態様においてトランザクションの正確性を保証しない場合があるが、任意のプログラミングエラーが任意の定義されたルールを違反する結果にならないことを保証し得る。独立性は一般に、例えば、次々と、複数のトランザクションが連続的に実行されるとした場合に得られた同一のシステム状態をもたらすこれらのトランザクション（例えば、複数のスレッド）の同時実行を指し得る。並行処理制御は、独立性を提供し得る。例えば、並行処理制御方法に応じて、不完全なトランザクションの複数の効果は、他のトランザクションには可視ではない場合がある。耐久性は一般に、トランザクションが一旦コミットされると、例えば、たとえ電力損失、クラッシュ、又はエラーという事件に遭っても、そのまま保持することを指し得る。例えば、電力損失から守るために、複数のトランザクション（又はそれらの効果）は、不揮発性（例えば、永続的）メモリに記録され得る。
【００１１】
本開示の複数の特定の実施形態は、トランザクションとして電力状態移行を表わすための複数の電力管理装置及び方法を含む。これは、複数のデバイス（例えば、プロセッサ、システムオンチップ（ＳｏＣ）及び／又はプラットフォーム）の複数の電力状態に対するセマンティックに正確な（例えば、マルチプロセッサ的）ビューを可能にし得る。さらに、電力トランザクションとして電力状態移行を表わすことは、電力管理移行をモデリング、指定、及び検証するためのより順序付きでセマンティックに正確な態様を可能にし得る。複数の特定の実施形態において、複数のトランザクショナルメモリシーケンスとして、複数の電力管理移行を実行することは、複数のデバイス、複数のＳｏＣ及び／又は複数のプラットフォームの複数の電力状態に対するセマンティックに正確な複数プロセッサ的ビューを可能にし得る。さらに、複数のトランザクションとして複数の電力状態移行を表わすことは、複数の電力（例えば、管理）移行をモデリング、指定、及び検証するためのより順序付きでセマンティックに正確な態様をもたらし得る。複数の特定の実施形態において、複数のトランザクションとして複数の電力移行を表わすことは、例えば、複数のデバイス、複数のＳｏＣ、及び／又は複数のプラットフォームの電力管理検証を支援するセマンティックにコヒーレントな表示などの、ハードウェア、ファームウェア、及びソフトウェアにおいて複数の電力シーケンスを指定するための有力な態様であり得る。
【００１２】
一実施形態において、複数の電力管理装置及び方法は、一の（例えば、単一の）トランザクションとして、コード（例えば、一のスレッド又は複数のスレッド）の領域を宣言し得る。トランザクションは、（例えば、トランザクションが成功した場合、）メモリのすべての結果を実行及びアトミックにコミットする、又は（例えば、トランザクションが失敗したとき、）すべての結果をアボート及びキャンセルし得る。トランザクションは、例えば、上で検討したように、原子性、一貫性、独立性、及び耐久性（ＡＣＩＤ）特性に従って実行され得る。トランザクションは、例えば、複数のロック及び複数のセマフォのような複数の技術を入れ替えるよう、安全に並列的に実行し得る。複数の特定の実施形態はまた、性能利益を含んでよく、例えば、ロックが悲観的であってよく、そのロッキングスレッドがデータへ書き込むことを想定してよく、これにより、複数の他のスレッドのプログレスがブロックされ得る。本明細書のロックなしの一実施形態において、両方とも共有リソース（例えば、同一のメモリアドレス又はレジスタ）へアクセスする２つのトランザクションが並列に進んでよく、ロールバック（例えば、トランザクションの一方又は双方のアボート）が、トランザクションのうちの１つがその共有リソースへ書き込む（例えば、コンフリクト書き込みの）場合のみ、発生し得る。
【００１３】
複数の電力管理装置及び方法は、（例えば、ハードウェア、ＯＳ、又はドライバから、）複数の電力状態移行（例えば、どのデバイス又はドメイン及び／又は新しい電力レベルへ移行するかを示すもの）のための複数の要求を受信し得る。一実施形態において、電力状態移行は、電力管理コマンド（例えば、移行を実現すべく、プロセッサ上で実行する複数の命令のスレッド）により要求され得る。一実施形態において、電力管理コマンドは、要求元（例えば、ＯＳ）から移行されるべきデバイス（例えば、制御入力）へ送信され得る。電力状態移行は、例えば、電力トランザクションとして割り当てられる電力管理コマンド（例えば、スレッド）など、トランザクションとして宣言され得る。そのように、電力状態移行（例えば、電力状態移行を引き起こすオペレーション）は、一の（例えば、単一の）電力トランザクションとして、扱われてよく、これにより、複数の電力管理装置及び方法は、電力状態移行を制御する及び／又は電力状態移行の一部である複数の（例えば、メモリ、複数のレジスタ、複数のデータ入力などに保持されている）データ構造を操作する（例えば、複数の電力状態を変更する）場合、複数のロックを発行しない。一実施形態において、電力状態トランザクションは、データ構造に対する任意の変更を試行する前に状態移行オペレーションを開始する段階と、（例えば、キャッシュ内の）複数のデータ構造のコピー（例えば、参照バージョン）へそれらの変更を行う段階と、オペレーションが終了した場合において、コンフリクトが発生しないとき、トランザクションをコミットする段階とを含む。トランザクションの間、電力トランザクション・ユニット（例えば、システム）は、これらのオペレーションが読み取り及び／又は書き込みを実行したすべてのデータ構造のトラック（例えば、ログ）を保持し得る。電力トランザクションがコミットされる前に、電力トランザクション・ユニットは、他のトランザクション（例えば、そのオペレーション）がトランザクションの用いたデータ構造に対していかなる変更も行っていないかをチェックし得る。変更がない場合、トランザクションは、コミットされ得る。変更がある場合、トランザクションは、例えば、その変更のすべてが行われないよう、アボートされ得る。一実施形態において、アボートされたトランザクション（例えば、そのオペレーション）は、例えば、異なる戦略下で（例えば、ロックを用いて）再試行される、又はキャンセルされ得る。従って、複数のデバイスのための電力状態移行の複数の試行は、複数の電力状態トランザクションとして並列に発生し得る。一実施形態において、デバイス及び／又はドメインは、電力管理レジスタを含み、そのレジスタ内への電力管理コマンドの書き込の受信次第、電力状態移行を引き起こし、例えば、電力管理コマンドは、デバイスの新しい電力状態を示すビット又は複数のビットであり得る。一実施形態において、ソフトウェア（例えば、ＯＳ）は、電力状態移行を要求し、例えば、デバイス（及び／又は電力ドメイン）が利用されていないことを検出した後に、デバイスをアイドリングする又はオフにすることを示し得る。デバイスは、例えば、プロセッサにオンダイされていないなど、プロセッサの外部にあるコンポーネント（例えば、周辺機器）を含み得る。複数のデバイスは、例えば、同一のクロックにより制御されている、又は同一の電力ドメインにある（例えば、電源の同一のパワーレールにより電力を供給されている）、これらのデバイスなど、複数の共有リソースを含み得る。ＯＳは、電力管理コマンド（例えば、スレッド）を実行するよう、どの電力ドメインが用いられるであろうかを示す又は検出し得る。例えば、（例えば、電力状態移行を要求する）電力管理コマンドがトランザクションとして扱われることを、ＯＳ又はハードウェアに示すべく、電力トランザクション示唆（例えば、以下の図５に関連する「アトミック」）が、コードに含まれ得る。
【００１４】
一例において、第１のデバイス（例えば、ＵＳＢハブ）及び第２のデバイス（例えば、ネットワークアダプタ）がそれぞれ、アクティブな電力状態にあってよく、複数の電力管理コマンドが、それぞれをアイドリング又は電源オフ状態に移行すべく、（例えば、それらのそれぞれのドライバから）送信され得る。（例えば、ＵＳＢハブに対する）第１の電力管理コマンド及び（例えば、ネットワークアダプタに対する）第２の電力管理コマンドが、例えば、ＯＳにより、送信されてよく、プロセッサ又はＳｏＣの電力トランザクション・ユニットにより、受信されてよい。電力トランザクション・ユニットは、例えば、原子性、一貫性、独立性、及び／又は耐久性（ＡＣＩＤ）特性に従って、各電力管理コマンドに対する要求された複数の電力状態移行が複数の電力トランザクションであることを検出し得る。（例えば、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせにおける）電力トランザクション・ユニットは、複数の電力状態移行の同時（例えば、並列）実行を可能にし得るが、例えば、まだそれらをコミットしない。これは、たとえこれらのデバイスが共有リソースにより電力を供給されている場合でも発生し得る。例えば、第１の電力コマンド（例えば、スレッド）及び第２の電力コマンド（例えば、スレッド）により発生する任意の読み取り及び／又は書き込み（例えば、制御入力及び／又は出力へのもの）は、トラックされ得る。一実施形態において、第１の電力トランザクション及び第２の電力トランザクションに変更（例えば、コンフリクト）がない場合、それらは次に、コミットされ得る（例えば、複数のデバイスがアイドリング又は電源オフ状態へ動かされる）。コンフリクト変更がある場合、例えば、１つのデバイスがアイドリングされ、他のデバイスがオフ状態にされ、両方のデバイスが両方に影響を与える共通電力資源（例えば、ドメイン）を共有するので、次に、一方又は双方のトランザクションは、例えば、コンフリクト解消ポリシーに従って、アボートされ得る。コンフリクト解消ポリシーの一例では、リソースへ書き込む第１のトランザクションがコミットされ、第２のトランザクションがアボートされる。コンフリクト解消ポリシーの別の例では、最高電力状態でのトランザクションがコミットされ、より低い電力状態トランザクションがアボートされる。例えば、他のトランザクションがコミットされた後に、例えば、アボートされたトランザクションを再試行する（例えば、遅延させる）などの他のコンフリクト解消ポリシーは含まれ得るが、これに限定されない。一実施形態において、（例えば、それぞれのスレッドに対する）各電力トランザクションは、同時に実行している複数のスレッドの間のコンフリクトが検出されるまで進み得る。本明細書の複数の特定の実施形態は、複数の電力移行を（例えば、コミットせずに）同時に実行することに対抗するロックがないことを可能にする。
【００１５】
本明細書の複数の図は、電源（例えば、バッテリ又は非バッテリ）、又は複数の電源接続を記載していないことが留意されたい。当業者であれば、これは複数の図面における複数の特定の詳細を曖昧にしないためであることを理解するであろう。本明細書における両矢印は、双方向の通信を必ずしも必要としなくてよく、例えば、（例えば、コンポーネント又はデバイスへの又はからの）一方向通信を示し得ることが留意されたい。複数の通信パスのうちのいずれか又はすべての組み合わせは、本明細書の複数の実施形態において利用され得る。
【００１６】
図１は、本開示の複数の実施形態に係るハードウェア装置１００を図示する。一実施形態において、ハードウェア装置１００は、ＳｏＣであってよい。示されているハードウェア装置１００は、ハードウェアプロセッサ１０２を含む。ハードウェアプロセッサの複数の特定のコンポーネントが示されているが、例えば、複数のレベルのキャッシュ及び複数のコア、他のプロセッサは、例えば、本明細書に検討されているこれらなどの本開示の趣旨から逸脱することなく、利用され得る。示されているコアＡ（１０２Ａ）は、第１レベル命令（Ｌ１Ｉ）キャッシュ１０４Ａ、第１レベルデータキャッシュ１０６Ａ、及びレベル２（Ｌ２）キャッシュ１０８Ａを含む。示されているコアＢ（１０２Ｂ）は、第１レベル命令（Ｌ１Ｉ）キャッシュ１０４Ｂ、第１レベルデータ（Ｌ１Ｄ）キャッシュ１０６Ｂ、及びレベル２（Ｌ２）キャッシュ１０８Ｂを含む。示されているコアＣ（１０２Ｃ）は、第１レベル命令（Ｌ１Ｉ）キャッシュ１０４Ｃ、第１レベルデータ（Ｌ１Ｄ）キャッシュ１０６Ｃ、及びレベル２（Ｌ２）キャッシュ１０８Ｃを含む。示されているコアＤ（１０２Ｄ）は、第１レベル命令（Ｌ１Ｉ）キャッシュ１０４Ｄ、第１レベルデータ（Ｌ１Ｄ）キャッシュ１０６Ｄ、及びレベル２（Ｌ２）キャッシュ１０８Ｄを含む。示されているハードウェアコアＡ及びＢは、共有レベル３（Ｌ３）キャッシュ１１０を含む。示されているハードウェアコアＣ及びＤは、共有レベル３（Ｌ３）キャッシュ１１２を含む。示されているプロセッサ１０２は、共有レベル４（Ｌ４）キャッシュ１１４を含む。４つのコアが示されているが、単一コア又は任意の複数のプロセッサコアが利用され得る。レベル４キャッシュが示されているが、単一レベル又は任意の複数のレベルのキャッシュが利用され得る。
【００１７】
一実施形態において、各コアはその独自の電力ドメインを有する。一実施形態において、複数のコア（例えば、コアＡ及びコアＢ）は、共有電力ドメインを有する。一実施形態において、キャッシュ全体は、その独自の電力ドメインを有し得る。例えば、Ｌ３キャッシュ１１０に対する電力移行は、特定の又は他のすべてのキャッシュに対する電力移行を引き起こし得る。
【００１８】
キャッシュ・コヒーレンシ・ユニットは、例えば、キャッシュの一部として、例えば、４つの状態である変更（ｍｏｄｉｆｉｅｄ）（Ｍ）、排他的（ｅｘｃｌｕｓｉｖｅ）（Ｅ）、共有（ｓｈａｒｅｄ）（Ｓ）、及び無効（ｉｎｖａｌｉｄ）（Ｉ）（ＭＥＳＩ）プロトコル、又は、５つの状態である変更（Ｍ）、排他的（Ｅ）、共有（Ｓ）、無効（Ｉ）、及び転送（ｆｏｒｗａｒｄ）（Ｆ）（ＭＥＳＩＦ）プロトコルなどのキャッシュコヒーレンシプロトコルに従って、利用され得る。
【００１９】
複数の通信パスのうちのいずれか又はすべての組み合わせは、本明細書の複数の実施形態において利用され得る。例えば、プロセッサ１０２、例えば、そのコアは、例えば、（リングネットワーク１１６として示されている）ネットワークを介して、複数の他のデバイスと通信し得る。
【００２０】
本開示の複数の特定の実施形態に従って、（例えば、電力）トランザクション・ユニットが含まれ得る。例えば、各コアは、それらのそれぞれのコアに、（例えば、電力）トランザクション・ユニット、（電力）トランザクション・ユニット１２０Ａ、１２０Ｂ、１２０Ｃ及び１２０Ｄを含み得る。追加的に又は代替的に、プロセッサ又はＳｏＣは、別個の（例えば、電力）トランザクション・ユニットを含み得る。示されているハードウェア装置は、例えば、本明細書における開示を実行するロジックを格納するための電力トランザクション・ユニット１２０を含む。複数の特定の他のコンポーネントが示されているが、これらは例示的なものであり、複数の他のコンポーネントは利用されてよく、及び／又は示されている複数のコンポーネントのうちの特定のものは、ハードウェア装置に存在しなくてよい。示されている複数のコンポーネントは、ディスプレイ１２６へ複数のディスプレイ信号を送信し得るグラフィクスユニット１２４（例えば、グラフィクスプロセッサであり得る）、ストレージ１２８（例えば、オンダイ又はオフダイであり得るデータ・ストレージ・デバイス）、汎用非同期送受信機（ＵＡＲＴ）１３０、ロアーパワーサブシステム（ＬＰＳＳ）１３２、及びユニバーサルシリアルバス（ＵＳＢ）１３４を含む。グラフィクスユニット１２４は、ハードウェアプロセッサ１０２の一部であってよい。
【００２１】
電力管理ユニット１２２は、例えば、複数のデバイスへの電力のフローを管理するために含まれ得る。電力トランザクション・ユニットは、電力管理ユニットに含まれ得る。一実施形態において、各デバイス（例えば、それのコンポーネント）は、その独自の電力ドメインを含み得る。一実施形態において、複数のデバイス又は一のデバイスの複数のコンポーネントは、単一の電力ドメインを共有する。
【００２２】
一例として、第１のデバイス（例えば、ＵＳＢ１３４）及び第２のデバイス（例えば、ＵＡＲＴ１３０）はそれぞれ、アクティブな電力状態にあってよく、複数の電力管理コマンドは、（例えば、それらそれぞれのドライバから）それぞれを電源オフ（又はアイドリング）状態へ移行するよう、送信されてよい。（例えば、ＵＳＢ１３４に対する）第１の電力管理コマンド及び（例えば、ＵＡＲＴ１３０に対する）第２の電力管理コマンドは、例えば、ＯＳにより送信されてよく、電力トランザクション・ユニット（例えば、トランザクション・ユニット１２０）により受信されてよい。電力トランザクション・ユニットは、（例えば、ＯＳからの指示により、）例えば、原子性、一貫性、独立性、及び／又は耐久性（ＡＣＩＤ）特性に従って、各電力管理コマンドに対する要求された複数の電力状態移行が複数の電力トランザクションであることを検出し得る。（例えば、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせにおける）電力トランザクション・ユニットは、複数の電力状態移行の同時（例えば、並列）実行を可能にし得るが、例えば、まだそれらをコミットしない。これは、たとえこれらのデバイスが共有リソースにより電力を供給された（例えば、同一の電力ドメインのメンバである）場合でも発生し得る。例えば、第１の電力コマンド（例えば、スレッド）及び第２の電力コマンド（例えば、スレッド）により発生している（例えば、制御入力及び／又は出力への）任意の読み取り及び／又は書き込みは、トラックされ得る。変更されるデータのコピーは、作成されてよく（例えば、参照バージョン）、キャッシュ（例えば、プロセッサのキャッシュ又はトランザクション・ユニット１２０の別個のキャッシュ）に格納され得る。一実施形態において、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクト（例えば、コンフリクト変更）がない場合、それらは次にコミットされ得る（例えば、ＵＳＢ１３４及びＵＡＲＴ１３０デバイスが電源オフ（又はアイドリング）状態へ動かされる）。コンフリクト（例えば、コンフリクト変更）がある場合、例えば、１つのデバイスがアイドリングされ、他のデバイスがオフ状態にされ、両方のデバイスが両方に影響を与える共通電力資源（例えば、ドメイン）を共有するので、次に、一方又は双方のトランザクションは、例えば、コンフリクト解消ポリシーに従って、アボートされ得る。
【００２３】
別の実施形態において、単一デバイスは、電力トランザクションとして宣言されたその電力移行を有し得る。例えば、（例えば、アクティブ状態からオフ又はアイドリングへの）電力状態移行の処理におけるデバイス（例えば、ＵＳＢ１３４）は、割り込み（例えば、周辺機器がＵＳＢ１３４内にプラグ接続されているなど）を受信し得る。電力トランザクション・ユニットは、これを検出して次にインフライト電力状態移行を（例えば、コミットせず）アボートしてよく、例えば、その代わりに、アクティブ状態に戻ってよい。
【００２４】
図２及び図３に戻ると、図２は、集積回路（例えば、その複数のプロセッサコア）が複数のハードウェア・メモリ・トランザクションのためのサポート（例えば、トランザクショナルメモリ）を含まない実施形態を説明するために用いられており、図３は、集積回路（例えば、その複数のプロセッサコア）がハードウェア・メモリ・トランザクションのためのサポート（例えば、トランザクショナルメモリ）を含む実施形態を説明するために用いられている。
【００２５】
図２は、本開示の複数の実施形態に係る集積回路２００を図示する。プロセッサコア０−Ｎはそれぞれ、（例えば、専用）命令キャッシュ（ＩＣ）及び（例えば、専用）データキャッシュ（ＤＣ）を含むよう示されている。さらに、集積回路は、複数の（例えば、データ）キャッシュにおいて（例えば、グローバル）キャッシュコヒーレンシを維持するキャッシュ・コヒーレンシ・コントローラ２３６を含み得る。複数の特定のデバイス及びコンポーネントが図２に示されているが、これらは任意選択的なものである。例えば、「ノース複合」電力ドメイン及び「サウス複合」電力ドメインが示されているが、任意の電力ドメインが利用され得る。バス２１６は、通信のために用いられ得る。
【００２６】
キャッシュ・コヒーレンシ・コントローラ２３６及び検討されている複数の他の変更は、トランザクショナル電力管理を可能にし得る。集積回路２００（例えば、ＳｏＣ）は、電力管理ユニット（ＰＵＮＩＴ）２４０及び電力管理コントローラ（ＰＭＣ）２４２を含み、例えば、それらのそれぞれ又は両方は、別個のプロセッサコアであってよい。ＰＭＣ２４２は、例えば、ＰＵＮＩＴ２４０からの電力管理コマンドに応じて、ドメイン（例えば、サウス複合）への電力を制御し得る。
【００２７】
ハードウェア電力トランザクションは、例えば、ハードウェア・メモリ・トランザクションをサポートしないシステム（例えば、トランザクショナルメモリ）において、以下のように実装され得る。トランザクションフィールド（例えば、ビット）は、キャッシュシステムにおいて各キャッシュエントリ（例えば、キャッシュライン）に対して含まれ得る。（例えば、ＰＵＮＩＴ及びＰＭＣのそれぞれに対する）データ構造は、トランザクション履歴及び／又は任意のコンフリクトのトラックを保持するために含まれ得る。データ構造は、要素（例えば、デバイス）がセット（例えば、共有電力ドメイン又は他の共有リソース）のメンバであるかをテスト（例えば、決定）すべく、アクセスされ得る。示されている実施形態において、データ構造は、ＰＵＮＩＴ２４０に対するブルームフィルタ２４０Ａ及びＰＭＣ２４２に対するブルームフィルタ２４２Ａである。ブルームフィルタは、要素（例えば、デバイス）がセット（例えば、共有電力ドメイン又は他の共有リソース）のメンバであるかをテストするのに用いられる（例えば、省スペースの）確率的データ構造であり得る。一実施形態において、偽陽性マッチが可能であってよいが、偽陰性は、可能ではない。例えば、「セットに存在可能な要素」又は「セットに絶対に存在しない要素」のいずれかに戻る要素に対するそのクエリがある。ＰＵＮＩＴ及びＰＭＣは、コンフリクト解消及びコミットの順序付けのためのサポートを提供すべくデータ構造（例えば、複数のブルームフィルタ）を利用し得る。データ構造（例えば、ブルームフィルタ）は、（例えば、メモリマッピングされた）レジスタ（例えば、レジスタ２４４及び２４６）として、アクセスされ得る。ＰＵＮＩＴ及びＰＭＣの複数の電力管理レジスタ（示せず）は、電力移行を引き起こすためにアクセスされ得る。データ構造（例えば、レジスタ２４４及び２４６）は、例えば、トランザクション・アプリケーション・プログラミング・インターフェイス（ＡＰＩ）を介して、トランザクション境界を定義し、如何にコンフリクト（及び任意の再試行）を処理するかを構成するなどのために、例えば、ソフトウェアにより用いられるよう、ソフトウェア内に露出され得る。本明細書の複数の特定の実施形態は、従って、（例えば、複数のトランザクションとして扱われる電力命令のシーケンスのための）トランザクショナル電力管理の拡張可能なハードウェア及びソフトウェア実装を提供し得る。複数のトランザクションとして複数の電力状態移行を表わすことは、複数の電力管理移行をモデリング、指定、及び検証するためのより順序付きでセマンティックに正確な態様をもたらし得る。
【００２８】
図３は、本開示の複数の実施形態に係る集積回路３００（例えば、ＳｏＣ）を図示する。この例において、（例えば、複数の電力管理コントローラを含む）（例えば、すべての）プロセッサコアは、複数のハードウェア・メモリ・トランザクションのためのサポート（例えば、トランザクショナルメモリ）を含み、従って、トランザクショナル電力管理を可能にし得る。集積回路の複数のコンポーネントは、すべてのコンポーネント（例えば、電力管理ユニット（ＰＵＮＩＴ）３４０及び電力管理コントローラ（ＰＭＣ）３４２を含み、すべてのプロセッサコア）をわたって（例えば、メモリ及び電力の）複数のトランザクションの（例えば、全体的に）同期されたビューを有し得る。例えば、システム（例えば、ＳｏＣ）は、メモリ・トランザクション・ユニット（例えば、エンジン）及び／又は電力トランザクション・ユニット（例えば、エンジン）を含み得る。データ構造（例えば、ブルームフィルタ）は、利用されなくてよい。コンパイラは、複数の電力状態移行を可能にすべく、トランザクションのためのサポートを含み得る。コンパイラにおける複数のメモリ・トランザクションのためのサポートは、トランザクショナル電力管理を可能にするために利用され得る。複数のデバイスドライバは、複数の電力管理トランザクションのためのそれらのコードをアノテートし得る。この枠組みは、例えば、ロック、同期などの複数のポイント解決策を提供する必要なしでＯＳ及び複数の他のコンポーネントが複数のコアＳｏＣをわたってよりポータブル及び拡張可能になることに役に立ち得る。バス３１６は、通信のために用いられ得る。図２及び３に関して、ノース複合及びサウス複合のそれぞれのために列挙されている複数のコンポーネント及びデバイスは単に例である。
【００２９】
一実施形態において、（例えば、複数のコアを有する）システムは、例えば、すべてのプロセッサコア（及びメモリ）をわたって、コードのシーケンスに対してＡＣＩＤセマンティックを保証するハードウェアを有することにより、トランザクショナルとしてマークを付けられた、そのコードのシーケンスに対するハードウェア・トランザクショナル・メモリをサポートし得る。これは一般に、すべてのコアをわたって複数のトランザクションの全体的に同期されたビューと称されてよく、例えば、これにより、１つのコアがトランザクショナルとしてマークを付けられたコードフロー（例えば、スレッド）を実行している場合において、そのコードが（例えば、メモリにおける）何らかのデータへアクセスしているとき、次には、例えば、すべてのコアをわたって、そのコードの一部分（及びメモリ）のためにトランザクショナル・セマンティックが維持されることを保証する組み込みハードウェアサポートがある。そのようなシステムの一例において、（例えば、すべての）ホストドライバが、複数のプロセッサ（例えば、ＩＡ）コア上で起動してよく（例えば、通常のアクセス及び複数のオペレーションのためにメインメモリを用いるなど）、（例えば、トランザクショナルとしてマークを付けられた複数の電力管理コマンド（コード）のための）トランザクショナル電力管理を試行する複数のホストドライバのうちの任意のセットは、例えば、これらのコマンドがコア及び／又は電力管理ユニット（例えば、メモリアクセスを有するコントローラ）により実行された場合、トランザクショナル・セマンティックを維持すべく保証される。
【００３０】
複数のメモリ・トランザクションをサポートするシステムの複数の特定の実施形態は、例えば、複数の電力管理コマンドがメモリ（例えば、レジスタ）に読み取られる及び／又は書き込まれるという複数の電力トランザクションをサポートするのに用いられ得る。例えば、ＩＳＡの電力管理命令は、それがトランザクションということを示すべく、それらのフィールドを有し得る。
【００３１】
本開示の複数の特定の実施形態は、以下の１つ又は複数を（例えば、ランタイム）サポートするハードウェア及び／又はソフトウェアを含む。例えば、モバイルデバイスにおける、複数のトランザクション（例えば、シーケンス）としての複数の特定の電力管理コマンド（例えば、シーケンス）を実装する複数のプロセッサコア、並びにＰＵＮＩＴ，  ＰＭＣのような（例えば、マイクロ）コントローラ、及び無線ポートコントローラユニット（ＲＰＣＵ）である。ソフトウェア電力トランザクションは、複数のトランザクションとしての複数の電力管理コマンドを封止するための複数の抽出を提供してよく、例えば、これは、ソフトウェアがソフトウェア（例えば、ＯＳ及び／又はドライバ）コードにおいて複数の電力管理シーケンスをアノテートすることを可能にするよう、複数のコンパイラにおける電力プラグマにより実現され得る。複数のコンパイラトランスレーションは、ソフトウェアで提供される複数の電力示唆（例えば、図５の「アトミック」）を、ハードウェア・トランザクショナル・メモリのための根本的なアーキテクチャのサポートに特定の複数のトランザクショナルメモリ命令シーケンスへ変換し得る。以上は、例えば、電力管理のために用いられる別個のコア又はプロセッサなどの、（例えば、マイクロ）コントローラサポートハードウェア・トランザクショナル・メモリも有するように拡張され得る。複数のプロセッサにおけるハードウェア（電力）トランザクションサポートは、複数のデバイス及びプラットフォーム並びに／若しくはＳｏＣの電力状態の統一のビューを提供し得る。この枠組みは、例えば、ロック、同期などのポイント解決策を提供する必要なしでＯＳ及び複数の他のコンポーネントが複数のコアデバイス（例えば、ＳｏＣ）をわたってよりポータブル及び拡張可能であることを可能にし得る。例えば、図５に示す例において、スレッドＴ１及びＴ２は、アトミックブロックの周囲の複数のスレッドを封止することにより、共有電力資源６０１における複数の共有電力状態レジスタへのアクセスを実行し得る。トランザクションが完了するよう実行してコミットされる場合、その複数の効果は、複数の他のトランザクションに対して可視であってよい。あるいは、トランザクションは、アボートされてよく、その複数の効果の１つも複数の他のトランザクションには可視ではなくてよい。
【００３２】
本明細書における複数の特定の実施形態は、例えば、アトミックに実行すべく、複数のトランザクションとして複数の共有オブジェクトへアクセスすべく、コードの複数のセクションを示す（例えば、マークを付ける）ことを含む。
【００３３】
図４は、本開示の複数の実施形態に係る、複数の電力トランザクションを有しないシステムのための電力管理コード４００を図示する。図４は、複数の電力トランザクションを有しないことで、システムが、第１の電力移行が完了するまで第２の電力移行を遅延させ得ることを図示する。複数の電力トランザクションを有しない複数の電力状態移行についての一実施形態において、カーネル又はデバイスドライバが、単一デバイス又は複数のデバイスに対して、電力管理コマンド（例えば、電力状態移行要求）を、例えば、これのためのプラットフォームサポートに基づいて発行し得る。しかしながら、複数のロック及び／又は同期プリミティブは、複数のエラー（例えば、複数のバグ）、競合状態、ロックアップ／枯渇、非ポータブルコード、及び特定プラットフォーム解決策をもたらす、ＯＳ、複数のデバイスドライバ、ファームウェア、及びハードウェアをわたってこの複合状態機械を調整するのに用いられ得る。さらに、例えば、複数の電力トランザクションなしで中断及び再開の高レイテンシに起因して、複数の電力トランザクションなしで電力状態移行を実行する時間が、複数の電力トランザクションを用いる場合の時間の量の１０倍以上かかり得る。
【００３４】
図５は、本開示の複数の実施形態に係る、複数の電力トランザクションを有するシステムのための電力管理コード５００を図示する。示されているコードは、例えば、原子性、一貫性、独立性、及び耐久性（ＡＣＩＤ）トランザクショナル特性のうちの１つ又は複数に従って、（例えば、「アトミック」により）複数の電力管理コマンド（例えば、スレッドＴ１及びＴ２の両方）が複数のトランザクションとして扱われるべきであると宣言することを含む。一実施形態において、コンピューティングシステム（例えば、コンパイラ）は、例えば、コンフリクトがある場合を除き、両方ともコミットするなど、同時に実行され得る複数のトランザクションとしてこれらのスレッドを扱ってよい。
【００３５】
図６は、本開示の複数の実施形態に係る、Ｔ１及びＴ２に対する複数の原子力トランザクションを有する場合と、Ｔ１及びＴ２に対する複数の原子力トランザクションを有しない場合との時間概略図６００を図示する。図６は、複数の原子力トランザクションに対して、それらがトランザクションではないとして、一連に（例えば、少なくともｔ１＋ｔ２）完了する複数の電力管理コマンド（例えば、非アトミックＴ１及びＴ２）とは対照的に、両方のスレッドは、例えば、時間ｔ１及びｔ２をかけてそれぞれ実行する（共有電力資源６０１の電力制御レジスタへのそれらのアクセスにより起因するコンフリクトがない場合はコミットされる）など、同時に実行し得ることを図示する。一実施形態において、各電力管理コマンド（例えば、スレッド）は、別個のコア上で実行される。一実施形態において、コアは、電力管理ユニットとして利用され得る。
【００３６】
図７は、本開示の複数の実施形態に係るフローダイヤグラム７００を図示する。示されているフローダイヤグラム７００は、ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって、各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインを提供する段階７０２と、同時実行のために第１の電力トランザクションとしての第１の電力管理コマンド及び第２の電力トランザクションとしての第２の電力管理コマンドを割り当てる段階７０４と、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがない場合において第１の電力トランザクション及び第２の電力トランザクションのコミットを実行する段階７０６と、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがある場合において第１の電力トランザクションのアボート及び第２の電力トランザクションのコミットを実行する段階７０８とを含む。
【００３７】
図８は、本開示の複数の実施形態に係るフローダイヤグラム８００を図示する。示されているフローは、例えば、ソフトウェア（例えば、ＯＳ）からファームウェア、ハードウェアまで幅広く、例示的な電力トランザクションを含む。一実施形態において、図８のフローダイヤグラムは、図１、２及び／又は３における回路を指し得る。ＰＭＩＣは、電力管理集積回路を指し得る。
【００３８】
一実施形態において、ハードウェア装置は、ハードウェアプロセッサを備え、ハードウェアプロセッサは、コアと、各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインと、同時実行のために第１の電力トランザクションとしての第１の電力管理コマンド及び第２の電力管理コマンドとしての第２の電力トランザクションを割り当て、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがない場合において第１の電力トランザクション及び第２の電力トランザクションのコミットを実行し、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがある場合において第１の電力トランザクションのアボート及び第２の電力トランザクションのコミットを実行する電力トランザクション・ユニットとを有する。第１の電力トランザクション及び第２の電力トランザクションはそれぞれ、複数の命令を含み得る。ハードウェア装置は、各ドメインに対する電力管理コマンドを受信する複数の電力状態レジスタをさらに備え得る。コンフリクトは、第２の電力トランザクションが書き込んだ電力状態レジスタに、第１の電力トランザクションが書き込もうとすることであってよい。電力トランザクション・ユニットは、ロックを発行しなくてよい。コンフリクトは、第１の電力トランザクション及び第２の電力トランザクションが共有電力ドメインに対してコンフリクトする複数の電力管理コマンドを書き込むことであってよい。コンフリクトがある場合、第２の電力トランザクションの実行に応じた電力ドメインの移行は、第２の電力トランザクションのコミットの後にのみ、複数の他のトランザクションに対して可視であってよい。ハードウェア装置は、第１のスレッド及び第２のスレッドが同一のメモリアドレスを変更する場合を除き、ハードウェアプロセッサのコア上での第１のスレッド及び第２のコア上での第２のスレッドの同時実行の後に第１のスレッド及び第２のスレッドのコミットを実行するメモリ・トランザクション・ユニットをさらに備え得る。
【００３９】
別の実施形態において、方法は、ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインを提供する段階と、同時実行のために第１の電力管理コマンドとしての第１の電力トランザクション及び第２の電力管理コマンドとしての第２の電力トランザクションを割り当てる段階と、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがない場合において第１の電力トランザクション及び第２の電力トランザクションのコミットを実行する段階と、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがある場合において第１の電力トランザクションのアボート及び第２の電力トランザクションのコミットを実行する段階とを備える。第１の電力トランザクション及び第２の電力トランザクションはそれぞれ、複数の命令を含み得る。方法は、電力状態レジスタにおいて各ドメインに対する電力管理コマンドを受信する段階をさらに備え得る。コンフリクトは、第２の電力トランザクションが書き込んだ電力状態レジスタに、第１の電力トランザクションが書き込もうとすることであり得る。方法は、ロックを発行しない段階をさらに備え得る。コンフリクトは、第１の電力トランザクション及び第２の電力トランザクションが共有電力ドメインに対してコンフリクトする複数の電力管理コマンドを書き込もうとすることであり得る。コンフリクトがある場合、第２の電力トランザクションの実行に応じた電力ドメインの移行は、第２の電力トランザクションのコミットが実行された後にのみ、複数の他のトランザクションに対して可視であってよい。方法は、第１のスレッド及び第２のスレッドが同一のメモリアドレスを変更する場合を除き、ハードウェアプロセッサ上で第１のスレッド及び第２のスレッドの同時実行の後に第１のスレッド及び第２のスレッドのコミットを実行する段階をさらに備え得る。
【００４０】
さらに別の実施形態において、非一時的機械可読記憶媒体が、機械より処理された場合、方法を実行させる格納されたプログラムコードを有し、方法は、ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインを提供する段階と、同時実行のために第１の電力管理コマンドとしての第１の電力トランザクション及び第２の電力管理コマンドとしての第２の電力トランザクションを割り当てる段階と、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがない場合において第１の電力トランザクション及び第２の電力トランザクションのコミットを実行する段階と、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがある場合において第１の電力トランザクションのアボート及び第２の電力トランザクションのコミットを実行する段階とを含む。第１の電力トランザクション及び第２の電力トランザクションはそれぞれ、複数の命令を含み得る。方法は、電力状態レジスタにおいて各ドメインに対する電力管理コマンドを受信する段階をさらに含み得る。コンフリクトは、第２の電力トランザクションが書き込んだ電力状態レジスタに、第１の電力トランザクションが書き込もうとすることであり得る。方法は、ロックを発行しない段階をさらに含み得る。コンフリクトは、第１の電力トランザクション及び第２の電力トランザクションが共有電力ドメインに対してコンフリクトする複数の電力管理コマンドを書き込もうとすることであり得る。コンフリクトがある場合、第２の電力トランザクションの実行に応じた電力ドメインの移行は、第２の電力トランザクションのコミットが実行された後にのみ、複数の他のトランザクションに対して可視であってよい。方法は、第１のスレッド及び第２のスレッドが同一のメモリアドレスを変更する場合を除き、ハードウェアプロセッサ上で第１のスレッド及び第２のスレッドの同時実行の後に第１のスレッド及び第２のスレッドのコミットを実行する段階をさらに含み得る。
【００４１】
別の実施形態において、ハードウェア装置は、ハードウェアプロセッサを備え、ハードウェアプロセッサは、コアと、複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの１つへ移行する複数の電力ドメインと、同時実行のために第１の電力トランザクションとしての第１の電力管理コマンド及び第２の電力トランザクションとしての第２の電力管理コマンドを割り当て、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがない場合において第１の電力トランザクション及び第２の電力トランザクションのコミットを実行し、第１の電力トランザクション及び第２の電力トランザクションの間にコンフリクトがある場合において第１の電力トランザクションのアボート及び第２の電力トランザクションのコミットを実行する手段を有する。
【００４２】
さらに別の実施形態において、装置は、ハードウェアプロセッサにより実行された場合、ハードウェアプロセッサに本明細書において開示されている任意の方法を実行させるコードを格納するデータ・ストレージ・デバイスを備える。装置は、詳細な説明において説明されているようであってよい。方法は、詳細な説明において説明されているようであってよい。
【００４３】
命令セットは、１つ又は複数の命令フォーマットを含み得る。所与の命令フォーマットは、実行（例えばオペコード）されるべくオペレーション及びオペレーションが実行されるオペランドを、複数の他のものの間から指定する様々なフィールド（例えば、ビットの数、ビットの位置）及び／又は他のデータフィールド（例えば、マスク）を定義し得る。いくつかの命令フォーマットは、複数の命令テンプレート（又は複数のサブフォーマット）の定義によりさらに分解される。例えば、所与の命令フォーマットの複数の命令テンプレートは、命令フォーマットの複数のフィールドの異なるサブセットを有するよう、定義されてよく（含まれるフィールドは通常、同一の順序にあるが、含まれているフィールドがより少ないため、少なくともいくつかは異なるビット位置を有する）、及び／又は異なって解釈される所与のフィールドを有するよう、定義されてよい。従って、所与の命令フォーマットを用いて（定義された場合、その命令フォーマットの複数の命令テンプレートのうちの所与の１つにおいて）、ＩＳＡの各命令が表されて、オペレーション及び複数のオペランドを指定する複数のフィールドを含む。例えば、例示的なＡＤＤ命令は、特定のオペコードと、そのオペコードを指定するオペコードフィールド及び複数のオペランドを選択するオペランドフィールド（ソース１／デスティネーション及びソース２）を含む命令フォーマットとを有し、命令ストリームにおけるこのＡＤＤ命令の発生は、複数の特定のオペランドを選択する複数のオペランドフィールドにおける特定のコンテンツを有するであろう。複数のアドバンスト・ベクトル・エクステンション（ＡＶＸ）（ＡＶＸ１及びＡＶＸ２）と称されており、ベクトル・エクステンション（ＶＥＸ）コーディングスキームを用いるＳＩＭＤ拡張のセットが、リリース及び／又は公開されていた（例えば、２０１５年４月のインテル（登録商標）６４及びＩＡ−３２アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアルを参照、及び２０１４年１０月のインテル（登録商標）アーキテクチャ・インストラクション・セット・エクステンション・プログラミング・レファレンスを参照する）。［例示的なコアアーキテクチャ、プロセッサ、及びコンピュータアーキテクチャ］
【００４４】
複数のプロセッサコアは、異なる態様において、異なる目的のために、異なるプロセッサに実装され得る。例えば、そのようなコアの複数の実装は、１）汎用コンピューティング向けの汎用インオーダコア、２）汎用コンピューティング向けの高性能の汎用アウトオブオーダコア、及び３）主にグラフィクス及び／又は科学的用途（スループット）コンピューティング向けの特定用途向けコアを含み得る。複数の異なるプロセッサの複数の実装は、１）汎用コンピューティング向けの１つ又は複数の汎用インオーダコア及び／又は汎用コンピューティング向けの１つ又は複数の汎用アウトオブオーダコアを含むＣＰＵ、及び２）主にグラフィクス及び／又は科学的用途（スループット）コンピューティング向けの１つ又は複数の特定用途向けコアを含むコプロセッサを含み得る。そのような複数の異なるプロセッサは、複数の異なるコンピュータシステムアーキテクチャをもたらし、１）ＣＰＵとは別個のチップ上のコプロセッサ、２）ＣＰＵと同じパッケージにおける別個のダイ上のコプロセッサ、３）ＣＰＵと同じダイ上のコプロセッサ（この場合、そのようなコプロセッサは、場合によっては、統合グラフィクス及び／又は科学的用途（スループット）ロジックのような特定用途向けロジック、又は特定用途向けコア等と称される）、及び４）同じダイ上の説明されたＣＰＵ（場合によっては、アプリケーションコア又はアプリケーションプロセッサと称される）、上述されたコプロセッサ、及びさらなる機能性を含み得るシステムオンチップを含み得る。例示的な複数のコアアーキテクチャが、次に説明され、次いで、例示的な複数のプロセッサ及び複数のコンピュータアーキテクチャが説明される。［複数の例示的なコアアーキテクチャ］［インオーダ及びアウトオブオーダコアブロック図］
【００４５】
図９Ａは、本開示の複数の実施形態に係る、例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行パイプラインの両方を図示するブロック図である。図９Ｂは、本開示の複数の実施形態に係るプロセッサに含まれる、インオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行アーキテクチャコアの両方を図示するブロック図である。図９Ａ−Ｂにおける複数の実線のボックスは、インオーダパイプライン及びインオーダコアを図示する一方、任意的に追加の複数の破線のボックスは、レジスタリネーミング、アウトオブオーダ発行／実行パイプライン及びコアを図示する。インオーダ態様がアウトオブオーダ態様のサブセットであるとして、アウトオブオーダ態様が説明される。
【００４６】
図９Ａにおいて、プロセッサパイプライン９００は、フェッチステージ９０２と、長さデコードステージ９０４、デコードステージ９０６、割り当てステージ９０８、リネーミングステージ９１０、スケジューリング（ディスパッチ又は発行としても既知）ステージ９１２、レジスタ読み取り／メモリ読み取りステージ９１４、実行ステージ９１６、ライトバック／メモリ書き込みステージ９１８、例外処理ステージ９２２、及びコミットステージ９２４を含む。
【００４７】
図９Ｂは、実行エンジンユニット９５０と結合されるフロントエンドユニット９３０を含むプロセッサコア９９０を示しており、実行エンジンユニット９５０及びフロントエンドユニット９３０の両方ともメモリユニット９７０と結合される。コア９９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、若しくはハイブリッド又は代替的コアタイプであり得る。さらに別のオプションとして、コア９９０は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティング・グラフィクス処理ユニット（ＧＰＧＰＵ）コア、グラフィクスコア、又は同様のものなどの特定用途向けコアであり得る。
【００４８】
フロントエンドユニット９３０は、命令キャッシュユニット９３４と結合される分岐予測ユニット９３２を含み、命令キャッシュユニット９３４は、命令トランスレーション・ルックアサイド・バッファ（ＴＬＢ）９３６と結合され、命令トランスレーション・ルックアサイド・バッファ９３６は、命令フェッチユニット９３８と結合され、命令フェッチユニット９３８は、デコードユニット９４０と結合される。デコードユニット９４０（又はデコーダ若しくはデコーダユニット）は、複数の命令（例えば、複数のマクロ命令）をデコードしてよく、元の命令からデコードされる又はそうでなければ元の命令を反映し、若しくは元の命令から導出される、１つ又は複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を出力として生成してよい。デコードユニット９４０は、様々な異なるメカニズムを用いて実装され得る。適切なメカニズムの複数の例は、複数のルックアップテーブル、複数のハードウェア実装、複数のプログラマブルロジックアレイ（ＰＬＡ）、複数のマイクロコードリードオンリメモリ（ＲＯＭ）などを含むが、これらに限定されない。一実施形態において、コア９９０は、マイクロコードＲＯＭ、又は、（例えば、デコードユニット９４０において、又はそうでなければ、フロントエンドユニット９３０内において）複数の特定のマクロ命令のためのマイクロコードを格納する他の媒体を含む。デコードユニット９４０は、実行エンジンユニット９５０におけるリネーミング／アロケータユニット９５２と結合される。
【００４９】
実行エンジンユニット９５０は、リタイアメントユニット９５４と結合されるリネーミング／アロケータユニット９５２、及び、１つ又は複数のスケジューラユニット９５６のセットを含む。スケジューラユニット９５６は、複数のリザベーションステーション、中央命令ウィンドウなどを含み、任意の数の異なるスケジューラを表す。スケジューラユニット９５６は、物理レジスタファイルユニット９５８と結合する。物理レジスタファイルユニット９５８のそれぞれは、１つ又は複数の物理レジスタファイルを表し、それらのうちの複数の異なるものは、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス（例えば、実行される次の命令のアドレスである命令ポインタ）などの１つ又は複数の異なるデータタイプを格納する。一実施形態において、物理レジスタファイルユニット９５８は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、及びスカラレジスタユニットを含む。これらのレジスタユニットは、複数のアーキテクチャベクトルレジスタ、複数のベクトルマスクレジスタ、及び複数の汎用レジスタを提供し得る。物理レジスタファイルユニット９５８は、（例えば、リオーダバッファ及びリタイアメント・レジスタ・ファイルを用いて、フューチャファイル、履歴バッファ、及びリタイアメント・レジスタ・ファイルを用いて、レジスタマッピング及びレジスタのプールを用いて、等など）レジスタリネーミング及びアウトオブオーダ実行が実装され得る様々な態様を図示すべく、リタイアメントユニット９５４により重複される。リタイアメントユニット９５４及び物理レジスタファイルユニット９５８は、実行クラスタ９６０と結合される。実行クラスタ９６０は、１つ又は複数の実行ユニット９６２のセット及び１つ又は複数のメモリアクセスユニット９６４のセットを含む。複数の実行ユニット９６２は、様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して、様々なオペレーション（例えば、複数のシフト、加算、減算、乗算）を実行し得る。いくつかの実施形態は、複数の特定の関数又は関数の複数のセットに専用の多数の実行ユニットを含み得る一方、複数の他の実施形態は、１つのみの実行ユニット又はすべての関数をすべてが実行する複数の実行ユニットを含み得る。スケジューラユニット９５６、物理レジスタファイルユニット９５８、及び実行クラスタ９６０は、複数である場合もあるものとして示されるが、その理由は、複数の特定の実施形態は、特定の複数のタイプのデータ／オペレーションに対して、複数の別個のパイプラインを生成するからである（例えば、それぞれがそれら独自のスケジューラユニット、物理的レジスタファイルユニット及び／又は実行クラスタを有する、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又はメモリアクセスパイプラインであり、別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット９６４を有する複数の特定の実施形態が実装される）。複数の別個のパイプラインが使用される場合、これらのパイプラインのうちの１つ又は複数は、アウトオブオーダ発行／実行であり、残りはインオーダであり得ることもまた理解されるべきである。
【００５０】
メモリアクセスユニット９６４のセットは、メモリユニット９７０と結合され、メモリユニット９７０は、データキャッシュユニット９７４と結合するデータＴＬＢユニット９７２を含み、データキャッシュユニット９７４は、レベル２（Ｌ２）キャッシュユニット９７６と結合される。１つの例示的実施形態において、メモリアクセスユニット９６４は、ロードユニット、格納アドレスユニット、及び格納データユニットを含んでよく、それらのそれぞれは、メモリユニット９７０におけるデータＴＬＢユニット９７２と結合される。命令キャッシュユニット９３４は、メモリユニット９７０におけるレベル２（Ｌ２）キャッシュユニット９７６とさらに結合される。Ｌ２キャッシュユニット９７６は、１つ又は複数の他のレベルのキャッシュと結合されて最終的にはメインメモリと結合される。
【００５１】
例として、例示的なレジスタリネーミング、アウトオブオーダ発行／実行コアアーキテクチャは、以下のようにパイプライン９００を実行し得る。１）命令フェッチ９３８が、フェッチ及び長さデコーディングステージ９０２及び９０４を実行する、２）デコードユニット９４０が、デコードステージ９０６を実行する、３）リネーミング／アロケータユニット９５２が、割り当てステージ９０８及びリネーミングステージ９１０を実行する、４）スケジューラユニット９５６が、スケジューリングステージ９１２を実行する、５）物理レジスタファイルユニット９５８及びメモリユニット９７０が、レジスタ読み取り／メモリ読み取りステージ９１４を実行し、実行クラスタ９６０が、実行ステージ９１６を実行する、６）メモリユニット９７０及び物理レジスタファイルユニット９５８が、ライトバック／メモリ書き込みステージ９１８を実行する、７）複数の様々なユニットが、例外処理ステージ９２２に関わり得る、及び８）リタイアメントユニット９５４及び物理レジスタファイルユニット９５８が、コミットステージ９２４を実行する。
【００５２】
コア９９０は、本明細書で説明されている命令を含む１つ又は複数の命令セット（例えば、（複数のより新しいバージョンで追加されたいくつかの拡張を有する）ｘ８６命令セット、カリフォルニア州サニーベールのＭＩＰＳテクノロジーズのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭホールディングスの（ＮＥＯＮのような任意選択的に追加の拡張を有する）ＡＲＭ命令セット）をサポートし得る。一実施形態において、コア９９０は、パックドデータ命令セット拡張（例えば、ＡＶＸ１、ＡＶＸ２）をサポートするロジックを含み、それにより、多くのマルチメディアアプリケーションにより用いられる複数のオペレーションがパックドデータを用いて実行されることを可能にする。
【００５３】
コアは、マルチスレッディング（複数のオペレーション又は複数のスレッドの２つ又はそれより多くの並列セットを実行すること）をサポートしてもよく、時分割マルチスレッディング、同時マルチスレッディング（単一の物理的コアが複数のスレッドのそれぞれに対して論理的コアを提供することにより、物理的コアが同時マルチスレッディングを実行すること）又はそれらの組み合わせ（例えば、時分割フェッチ及びデコーディング、その後、インテル（登録商標）ハイパースレッディング技術などでの同時マルチスレッディング）を含む様々な態様で、マルチスレッディングをサポートしてもよいことが理解されるべきである。
【００５４】
アウトオブオーダ実行との関連で、レジスタリネーミングを説明している一方、レジスタリネーミングは、インオーダアーキテクチャで用いられ得ることが理解されるべきである。図示されたプロセッサの実施形態はまた、別個の命令及びデータキャッシュユニット９３４／９７４及び共有Ｌ２キャッシュユニット９７６を含む一方、複数の代替の実施形態は、命令及びデータの両方のための、例えば、レベル１（Ｌ１）内部キャッシュのような単一の内部キャッシュ、又は複数のレベルの内部キャッシュを有してもよい。いくつかの実施形態において、システムは、内部キャッシュとコア及び／又はプロセッサの外部にある外部キャッシュとの組み合わせを含み得る。代替的に、キャッシュのすべては、コア及び／又はプロセッサの外部にあってよい。［具体的かつ例示的なインオーダ・コア・アーキテクチャ］
【００５５】
図１０Ａ−Ｂは、コアがチップにおけるいくつかのロジックブロック（同一のタイプ及び／又は異タイプの他のコアを含む）のうちの１つであろう、より具体的かつ例示的なインオーダ・コア・アーキテクチャのブロック図を図示する。複数のロジックブロックは、アプリケーションに応じて、高帯域幅の相互接続ネットワーク（例えば、リングネットワーク）を介して、何らかの固定関数ロジック、複数のメモリＩ／Ｏインターフェイス、及び他の必要なＩ／Ｏロジックと通信する。
【００５６】
図１０Ａは、本開示の複数の実施形態に係る、単一プロセッサコアと、そのオンダイ相互接続ネットワーク１００２への接続と共に、そのレベル２（Ｌ２）キャッシュのローカルサブセット１００４とを示すブロック図である。一実施形態において、命令デコードユニット１０００は、パックドデータ命令セット拡張を含むｘ８６命令セットをサポートする。Ｌ１キャッシュ１００６は、スカラ及びベクトルユニットに入るキャッシュメモリへの低レイテンシアクセスを可能にする。（設計を単純化にすべく）一実施形態におにおいて、スカラユニット１００８及びベクトルユニット１０１０は、複数の別個レジスタセット（それぞれ、複数のスカラレジスタ１０１２及び複数のベクトルレジスタ１０１４）を用いており、それらの間で転送されたデータがメモリへ書き込まれて次にレベル１（Ｌ１）キャッシュ１００６から再度読み取られる一方、本開示の複数の代替の実施形態は、（例えば、単一レジスタセットを用いる、又はデータが書き込まれて再度読み取られることなしで２つのレジスタファイルの間で転送されることを可能にする通信パスを含むなど）異なるアプローチを用いてよい。
【００５７】
Ｌ２キャッシュのローカルサブセット１００４は、１つのプロセッサコアあたり１つの別個のローカルサブセットに分割されるグローバルＬ２キャッシュの一部である。各プロセッサコアは、Ｌ２キャッシュのその独自のローカルサブセット１００４への直接的アクセスパスを有する。プロセッサコアにより読み取られたデータは、そのＬ２キャッシュサブセット１００４に格納されており、それらの独自のローカルなＬ２キャッシュサブセットへアクセスする複数の他のプロセッサコアと並列して迅速にアクセスされ得る。プロセッサコアにより書き込まれたデータは、その独自のＬ２キャッシュサブセット１００４に格納され、必要に応じて、複数の他のサブセットからフラッシュされる。リングネットワークは、共有データのコヒーレンシを保証する。リングネットワークは、双方向であり、複数のプロセッサコア、複数のＬ２キャッシュ、及び他の複数のロジックブロックなどの複数のエージェントがチップ内で互いに通信することを可能にする。各リングデータパスは、１つの方向につき、１０１２ビット幅である。
【００５８】
図１０Ｂは、本開示の複数の実施形態に係る、図１０Ａにおけるプロセッサコアの一部の拡大図である。図１０Ｂは、Ｌ１キャッシュ１００４の一部であるＬ１データキャッシュ１００６Ａ、並びにベクトルユニット１０１０及びベクトルレジスタ１０１４に関する更なる詳細を含む。具体的には、ベクトルユニット１０１０は、整数、単精度浮動小数、及び倍精度浮動小数命令のうちの１つ又は複数を実行する、１６幅ベクトル処理ユニット（ＶＰＵ）（１６幅ＡＬＵ  １０２８参照）である。ＶＰＵは、スウィズルユニット１０２０によるレジスタ入力のスウィズル、数値変換ユニット１０２２Ａ−Ｂによる数値変換、及び複製ユニット１０２４によるメモリ入力に対する複製をサポートする。複数の書き込みマスクレジスタ１０２６は、結果として得られるベクトル書き込みを叙述することを可能にする。
【００５９】
図１１は、本開示の複数の実施形態に係る、１つより多くのコアを有してよく、統合メモリコントローラを有してよく、統合グラフィクスを有してよいプロセッサ１１００のブロック図である。図１１における複数の実線のボックスは、単一コア１１０２Ａ、システムエージェント１１１０、１つ又は複数のバスコントローラユニット１１１６のセットを有するプロセッサ１１００を図示する一方、任意的に追加の複数の破線のボックスは、複数のコア１１０２Ａ−Ｎ、システム・エージェント・ユニット１１１０における１つ又は複数の複数の統合メモリコントローラユニット１１１４のセット、及び特定用途向けロジック１１０８を有する代替的なプロセッサ１１００を図示する。
【００６０】
従って、プロセッサ１１００の異なる複数の実装は、１）（１つ又は複数のコアを含み得る）統合グラフィクス及び／又は科学的（スループット）ロジックである特定用途向けロジック１１０８、及び１つ又は複数の汎用コア（例えば、複数の汎用インオーダコア、複数の汎用アウトオブオーダコア、その２つの組み合わせ）である複数のコア１１０２Ａ−Ｎを有するＣＰＵ、２）主にグラフィクス及び／又は科学（スループット）向けの多数の特定用途向けコアである複数のコア１１０２Ａ−Ｎを有するコプロセッサ、及び３）多数の汎用インオーダコアである複数のコア１１０２Ａ−Ｎを有するコプロセッサを含み得る。従って、プロセッサ１１００は、汎用プロセッサ、コプロセッサ、又は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ（汎用画像処理ユニット）、ハイスループット多集積コア（ＭＩＣ）コプロセッサ（３０又はそれより多くのコアを含む）、エンベデッドプロセッサ、又は同様のものなどのような特定用途向けプロセッサであり得る。プロセッサは、１つ又は複数のチップ上で実装され得る。プロセッサ１１００は、例えば、ＢｉＣＭＯＳ，ＣＭＯＳ，又はＮＭＯＳなどの多数の処理技術のうちのいずれかを用いて、１つ又は複数の基板の一部であってよく、及び／又は１つ又は複数の基板上で実装されてよい。
【００６１】
メモリ階層は、複数のコア、１つ又は複数の共有キャッシュユニット１１０６又はそのセット、及び複数の統合メモリコントローラユニット１１１４のセットと結合される外部メモリ（図示せず）内に、１つ又は複数のレベルのキャッシュを含む。複数の共有キャッシュユニット１１０６のセットは、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、又は複数の他のレベルのキャッシュなどの１つ又は複数の中間レベルキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、及び／又はそれらの複数の組み合わせを含み得る。一実施形態において、リングベースの相互接続ユニット１１１２は、統合グラフィクスロジック１１０８、複数の共有キャッシュユニット１１０６のセット、及びシステム・エージェント・ユニット１１１０／統合メモリコントローラユニット１１１４を相互接続する一方、代替の実施形態では、そのようなユニットを相互接続するための任意の数の周知技術を用いてよい。一実施形態において、コヒーレンシは、１つ又は複数のキャッシュユニット１１０４Ａ−Ｎ及び複数のコア１１０２−Ａ−Ｎの間で維持される。
【００６２】
いくつかの実施形態において、１つ又は複数のコア１１０２Ａ−Ｎは、マルチスレッディング可能である。システムエージェント１１１０は、複数のコア１１０２Ａ−Ｎを整合する及び操作するこれらのコンポーネントを含む。システム・エージェント・ユニット１１１０は、例えば、電力制御ユニット（ＰＣＵ）及びディスプレイユニットを含み得る。ＰＣＵは、複数のコア１１０２Ａ−Ｎ及び統合グラフィクスロジック１１０８の電力状態を調節するために必要とされるロジック及び複数のコンポーネントであってよく、又はそれらを含んでよい。ディスプレイユニットは、１つ又は複数の外部接続ディスプレイを駆動するためのものである。
【００６３】
複数のコア１１０２Ａ−Ｎは、アーキテクチャ命令セットに関して同種又は異種であってもよく、すなわち、複数のコア１１０２Ａ−Ｎのうちの２つ又はそれより多くは、同じ命令セットを実行可能であってよい一方、他は、その命令セット又は異なる命令セットのサブセットのみを実行可能であってよい。［例示的なコンピュータアーキテクチャ］
【００６４】
図１２−１５は、例示的なコンピュータアーキテクチャのブロック図である。複数のラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスのための当技術分野で既知の他の複数のシステム設計及び構成も、適切である。概して、本明細書において開示されるように、プロセッサ及び／又は他の実行ロジックを組み込むことが可能な多種多様なシステム又は電子デバイスが、概して適切である。
【００６５】
ここで、図１２を参照すると、本開示の一実施形態に係るシステム１２００のブロック図が示されている。システム１２００は、１つ又は複数のプロセッサ１２１０、１２１５を含んでよく、１つ又は複数のプロセッサ１２１０、１２１５は、コントローラハブ１２２０と結合される。一実施形態において、コントローラハブ１２２０は、グラフィクスメモリコントローラハブ（ＧＭＣＨ）１２９０及び入力／出力ハブ（ＩＯＨ）１２５０（別個のチップ上であり得る）を含み、ＧＭＣＨ１２９０は、メモリ１２４０及びコプロセッサ１２４５と結合されるメモリコントローラ及びグラフィクスコントローラを含み、ＩＯＨ１２５０は、複数の入力／出力（Ｉ／Ｏ）デバイス１２６０をＧＭＣＨ１２９０と結合させる。代替的に、メモリコントローラ及びグラフィクスコントローラの一方又は双方は、（本明細書で説明されているような）プロセッサ内に統合され、メモリ１２４０及びコプロセッサ１２４５は、直接にプロセッサ１２１０と結合され、ＩＯＨ１２５０を有する単一チップ内のコントローラハブ１２２０と結合される。メモリ１２４０は、例えば、実行されると、プロセッサに本開示の何れかの方法を実行させるコードを格納する、（例えば、メモリ及び／又は電力）トランザクションモジュール１２４０Ａを含み得る。
【００６６】
複数の追加のプロセッサ１２１５の任意選択的な性質が、図１２において破線で示されている。各プロセッサ１２１０、１２１５は、本明細書で説明されている１つ又は複数の処理コアを含んでよく、プロセッサ１１００の何らかのバージョンであってよい。
【００６７】
メモリ１２４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、又はその２つの組み合わせであり得る。少なくとも１つの実施形態では、コントローラハブ１２２０は、フロントサイドバス（ＦＳＢ）のようなマルチドロップバス、クイックパスインタコネクト（ＱＰＩ）のようなポイントツーポイントインターフェイス、又は同様の接続部１２９５を介して、プロセッサ１２１０、１２１５と通信する。
【００６８】
一実施形態において、コプロセッサ１２４５は、例えば、ハイスループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ、エンベデッドプロセッサ、又は同様のものなどの特定用途向けプロセッサである。一実施形態において、コントローラハブ１２２０は、統合グラフィクスアクセラレータを含み得る。
【００６９】
物理的リソース１２１０、１２１５の間には、アーキテクチャ上の、マイクロアーキテクチャ上の、熱の、複数の電力消費特性などを含む利益の基準の範囲に関して、様々な複数の違いが存在し得る。
【００７０】
一実施形態において、プロセッサ１２１０は、一般的なタイプの複数のデータ処理オペレーションを制御する複数の命令を実行する。複数のコプロセッサ命令が、複数の命令内に組み込まれ得る。プロセッサ１２１０は、これらのコプロセッサ命令を、取り付けられたコプロセッサ１２４５によって実行されるべきタイプのものであると認識する。従って、プロセッサ１２１０は、コプロセッサバス又は他の相互接続上において、これらの複数のコプロセッサ命令（又は複数のコプロセッサ命令を表す複数の制御信号）を、コプロセッサ１２４５に発行する。コプロセッサ１２４５は、受信された複数のコプロセッサ命令を受け取り、これを実行する。
【００７１】
ここで、図１３を参照すると、本開示の実施形態に係る、より具体的かつ例示的な第１のシステム１３００のブロック図が示されている。図１３に示されているように、マルチプロセッサシステム１３００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１３５０を介して結合された、第１のプロセッサ１３７０及び第２のプロセッサ１３８０を含む。プロセッサ１３７０及び１３８０のそれぞれは、プロセッサ１１００の何らかのバージョンであり得る。本開示の一実施形態において、コプロセッサ１３３８はコプロセッサ１２４５である一方、プロセッサ１３７０及び１３８０はそれぞれ、プロセッサ１２１０及び１２１５である。別の実施形態において、プロセッサ１３７０及び１３８０はそれぞれ、プロセッサ１２１０及びコプロセッサ１２４５である。
【００７２】
プロセッサ１３７０及び１３８０はそれぞれ、統合メモリコントローラ（ＩＭＣ）ユニット１３７２及び１３８２を含むものとして示されている。プロセッサ１３７０はまた、そのバスコントローラユニットの一部としてポイントツーポイント（Ｐ−Ｐ）インターフェイス１３７６及び１３７８を含み、同様に、第２のプロセッサ１３８０は、Ｐ−Ｐインターフェイス１３８６及び１３８８を含む。プロセッサ１３７０、１３８０は、ポイントツーポイント（Ｐ−Ｐ）インターフェイス１３５０を介して、Ｐ−Ｐインターフェイス回路１３７８、１３８８を用いて情報を交換し得る。図１３に示されているように、ＩＭＣ１３７２及び１３８２は、複数のプロセッサを、対応するメモリ、すなわち、メモリ１３３２及びメモリ１３３４と結合させ、メモリ１３３２及びメモリ１３３４は、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であり得る。
【００７３】
プロセッサ１３７０、１３８０はそれぞれ、個々のＰ−Ｐインターフェイス１３５２、１３５４を介して、ポイントツーポイントインターフェイス回路１３７６、１３９４、１３８６、１３９８を用いてチップセット１３９０と情報を交換し得る。チップセット１３９０は、高性能のインターフェイス１３３９を介して、コプロセッサ１３３８と任意選択的に情報を交換し得る。一実施形態において、コプロセッサ１３３８は、例えば、ハイスループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ、エンベデッドプロセッサ、又は同様のものなどの特定用途向けプロセッサであり得る。
【００７４】
共有キャッシュ（図示せず）は、いずれかのプロセッサ内に、あるいは、Ｐ−Ｐ相互接続を介して複数のプロセッサとさらに接続されて両方のプロセッサの外部に含まれてよく、これにより、プロセッサが低電力モード内に配置された場合、いずれかのプロセッサ又は両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得る。
【００７５】
チップセット１３９０は、インターフェイス１３９６を介して、第１のバス１３１６と結合され得る。一実施形態において、本開示の範囲はこれに限定されないが、第１のバス１３１６は、周辺構成要素相互接続（ＰＣＩ）バス、若しくはＰＣＩエクスプレスバス又は別の第３世代Ｉ／Ｏ相互接続バスなどのバスであり得る。
【００７６】
図１３に示されているように、様々なＩ／Ｏデバイス１３１４は、第１のバス１３１６を第２のバス１３２０と結合させるバスブリッジ１３１８と共に、第１のバス１３１６と結合され得る。一実施形態において、複数のコプロセッサ、複数のハイスループットＭＩＣプロセッサ、ＧＰＧＰＵの複数のアクセラレータ（例えば、複数のグラフィクスアクセラレータ又は複数のデジタル信号処理（ＤＳＰ）ユニットなど）、複数のフィールドプログラマブルゲートアレイ、又は複数の任意の他のプロセッサなどの、１つ又は複数の追加のプロセッサ１３１５は、第１のバス１３１６と結合される。一実施形態において、第２のバス１３２０は、ローピンカウント（ＬＰＣ）バスであってよい。様々なデバイスは、一実施形態において、例えば、キーボード及び／又はマウス１３２２、通信デバイス１３２７、及び複数の命令／コード及びデータ１３３０を含み得るディスクドライブ又は他の大容量ストレージデバイスなどのストレージユニット１３２８を含む第２のバス１３２０と結合され得る。さらに、オーディオＩ／Ｏ１３２４は、第２のバス１３２０と結合され得る。複数の他のアーキテクチャが可能であることは留意されたい。例えば、図１３のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実装し得る。
【００７７】
ここで、図１４を参照すると、本開示の実施形態に係る、より具体的かつ例示的な第２のシステム１４００のブロック図が示される。図１３及び１４における同様の複数の要素は、同様の参照番号を有し、図１３の複数の特定の態様は、図１４の他の態様を不明瞭にすることを回避するために、図１４から省略されている。
【００７８】
図１４は、プロセッサ１３７０、１３８０はそれぞれ、統合メモリ及びＩ／Ｏ制御ロジック（「ＣＬ」）１３７２及び１３８２を含み得ることを図示する。従って、ＣＬ１３７２、１３８２は、統合メモリコントローラユニットを含み、Ｉ／Ｏ制御ロジックを含む。図１４は、ＣＬ１３７２、１３８２と結合されたのがメモリ１３３２、１３３４のみでなく、Ｉ／Ｏデバイス１４１４も制御ロジック１３７２、１３８２と結合されていることも図示する。レガシＩ／Ｏデバイス１４１５は、チップセット１３９０と結合される。
【００７９】
ここで、図１５を参照すると、本開示の実施形態に係るＳｏＣ１５００のブロック図が示されている。図１１における同様の複数の要素は、同様の参照番号を有する。また、複数の破線のボックスは、複数のより高度なＳｏＣにおける複数の任意選択的な機能である。図１５において、相互接続ユニット１５０２は、１つ又は複数のコア１１０２Ａ−Ｎ及び共有キャッシュユニット１１０６のセットを含むアプリケーションプロセッサ１５１０と、システム・エージェント・ユニット１１１０と、バスコントローラユニット１１１６と、統合メモリコントローラユニット１１１４と、統合グラフィクスロジック、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサを含み得る１つ又は複数のコプロセッサ１５２０若しくはセットと、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１５３０と、ダイレクトメモリアクセス（ＤＭＡ）ユニット１５３２と、１つ又は複数の外部ディスプレイと結合するためのディスプレイユニット１５４０と結合される。一実施形態において、コプロセッサ１５２０は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、ハイスループットＭＩＣプロセッサ、エンベデッドプロセッサ、又は同様のものなどの特定用途向けプロセッサを含む。
【００８０】
本明細書で開示されている（例えば、複数のメカニズムの）複数の実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はそのような複数の実装アプローチの組み合わせに実装され得る。本開示の複数の実施形態は、少なくとも１つのプロセッサ、（揮発性及び不揮発性メモリ及び／又はストレージ要素を含む）ストレージシステム、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスを備える複数のプログラマブルシステム上で実行されるコンピュータプログラム又はプログラムコードとして実装され得る。
【００８１】
図１３に図示されているコード１３３０のようなプログラムコードは、本明細書で説明されている複数の機能を実行して出力情報を生成すべく、複数の入力命令に適用され得る。出力情報は、既知の様式において、１つ又は複数の出力デバイスに適用され得る。この用途の目的のために、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）のようなプロセッサ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、又はマイクロプロセッサを有する任意のシステムを含む。
【００８２】
プログラムコードは、処理システムと通信を行うために、高水準の手順型又はオブジェクト指向プログラミング言語で実装されてもよい。また、プログラムコードは、所望される場合、アセンブリ言語又は機械言語で実装されてもよい。実際に、本明細書で説明される複数のメカニズムは、任意の特定のプログラミング言語の範囲に限定されない。いずれの場合であっても、言語はコンパイラ型又はインタープリタ型言語であってもよい。
【００８３】
少なくとも１つの実施形態の１つ又は複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な複数の命令によって実行されてもよく、これらは、機械によって読み取られた場合に、機械にロジックを組み立てさせることにより、本明細書で説明される複数の技術を実装する。「複数のＩＰコア」として既知のような複数の表現は、有形の機械可読媒体上に格納され、様々な顧客、又は実際にロジック又はプロセッサを作成する複数の製造機械にロードする複数の製造設備に供給され得る。
【００８４】
そのような機械可読記憶媒体は、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクトディスク（ＣＤ−ＲＷ）、及び光磁気ディスクなどの任意の他のタイプのディスクを含むストレージ媒体、リードオンリメモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、及び相変化メモリ（ＰＣＭ）などの半導体デバイス、磁気もしくは光カード、又は複数の電子的命令を格納するのに適切な任意の他のタイプの媒体を含む、機械又はデバイスにより製造又は形成される、非一時的で有形の複数の構成の物品を含み得るが、これらに限定されない。
【００８５】
従って、本開示の複数の実施形態は、本明細書で説明されている複数の構造、複数の回路、複数の装置、複数のプロセッサ、及び／又はシステムの特徴を定義する、ハードウェア記述言語（ＨＤＬ）等の複数の命令を保持する又は設計データを保持する、非一時的で有形の機械可読媒体も含む。そのような複数の実施形態はまた、プログラム製品と称され得る。［（バイナリ変換、コードモーフィングなどを含む）エミュレーション］
【００８６】
いくつかの場合において、命令コンバータは、ソース命令セットからターゲット命令セットに命令を変換するために、用いられてもよい。例えば、命令コンバータは、命令を、コアにより処理されることになる１つ又は複数の他の命令にトランスレート（例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて）、モーフィング、エミュレート、又は別の変換をし得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組み合わせにおいて実装され得る。命令コンバータは、プロセッサ上にあってもよく、プロセッサ外にあってもよく、又は一部がプロセッサ上で一部がプロセッサ外にあってもよい。
【００８７】
図１６は、本開示の複数の実施形態に係る、ソース命令セットのバイナリ命令を変換するソフトウェア命令コンバータの使用と、ターゲット命令セットのバイナリ命令とを対比するブロック図を図示する。図示された実施形態において、命令コンバータは、ソフトウェア命令コンバータであるが、代替的に、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの様々な組み合わせで実装され得る。図１６は、少なくとも１つのｘ８６命令セットコアを備えるプロセッサ１６１６によってネイティブに実行され得るｘ８６バイナリコード１６０６を生成するために、高水準言語１６０２のプログラムが、ｘ８６コンパイラ１６０４を用いてコンパイルされてもよいことを示している。少なくとも１つのｘ８６命令セットコアを備えるプロセッサ１６１６は、少なくとも１つのｘ８６命令セットコアを備えるインテル（登録商標）社製プロセッサと実質的に同じ結果を達成するために、（１）インテル（登録商標）ｘ８６命令セットコアの命令セットの大部分、あるいは（２）少なくとも１つのｘ８６命令セットコアを備えるインテル（登録商標）社製プロセッサ上で動作することをターゲットとしたアプリケーション又は他のソフトウェアのオブジェクトコードバージョンを互換的に実行するか、又は別の方法で処理することによって、少なくとも１つのｘ８６命令セットコアを備えるインテル（登録商標）社製プロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表す。ｘ８６コンパイラ１６０４は、さらなる連係処理を用いて、又は用いずに、少なくとも１つのｘ８６命令セットコアを備えるプロセッサ１６１６上で実行することができるｘ８６バイナリコード１６０６（例えば、オブジェクトコード）を生成するよう動作可能なコンパイラを表す。同様に、図１６は、高水準言語１６０２におけるプログラムが、代替の命令セットコンパイラ１６０８を用いてコンパイルされて、少なくとも１つのｘ８６命令セットコア１６１４を用いないでプロセッサ（例えば、カリフォルニア州サニーベールのＭＩＰＳテクノロジーズのＭＩＰＳ命令セットを実行する、及び／又はカリフォルニア州サニーベールのＡＲＭホールディングスのＡＲＭ命令セットを実行する複数のコアを有するプロセッサ）によりネイティブに実行されてよい代替の命令セットバイナリコード１６１０を生成してよいことを示す。命令コンバータ１６１２は、ｘ８６バイナリコード１６０６を、ｘ８６命令セットコアを備えないプロセッサ１６１４によってネイティブに実行され得るコードに変換するために用いられる。この変換されたコードは、代替の命令セットバイナリコード１６１０と同じ可能性は低い。なぜなら、これが可能な命令コンバータは、製作が困難だからである。しかしながら、変換されたコードは、一般的なオペレーションを実現し、代替の命令セットからの命令で構成される。従って、命令コンバータ１６１２は、エミュレーション、シミュレーション又は任意の他の処理を通じて、ｘ８６命令セットプロセッサ又はコアを有しないプロセッサ又は他の電子デバイスがｘ８６バイナリコード１６０６を実行することを可能にする、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせを表す。
【図１】
0006272942.tif 000002
【図２】
0006272942.tif 000003
【図３】
0006272942.tif 000004
【図４】
0006272942.tif 000005
【図５】
0006272942.tif 000006
【図６】
0006272942.tif 000007
【図７】
0006272942.tif 000008
【図８】
0006272942.tif 000009
【図９Ａ】
0006272942.tif 000010
【図９Ｂ】
0006272942.tif 000011
【図１０Ａ】
0006272942.tif 000012
【図１０Ｂ】
0006272942.tif 000013
【図１１】
0006272942.tif 000014
【図１２】
0006272942.tif 000015
【図１３】
0006272942.tif 000016
【図１４】
0006272942.tif 000017
【図１５】
0006272942.tif 000018
【図１６】
0006272942.tif 000019