以下の説明において、様々な具体的な詳細が記述される。しかしながら、本開示の複数の実施形態は、これらの具体的な詳細なしで実施され得ることが理解される。複数の他の例において、この説明の理解を曖昧にしないために、複数の周知の回路、構造、及び技術は、詳細に示されていない。
本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」などの言及は、説明された実施形態が特定の特徴、構造、又は特性を含んでよいが、各実施形態が必ずしも当該特定の特徴、構造、又は特性を含まなくてよいことを示す。さらに、そのような表現は、必ずしも同一の実施形態を指しているものではない。さらに、特定の特徴、構造、又は特性が実施形態に関連して説明されている場合、明示的に説明されているか否かに拘わらず、当業者はその知識内で複数の他の実施形態に関連してそのような特徴、構造、又は特性を採用することが提示される。
(例えば、ハードウェア)プロセッサ、又はプロセッサのセットが、例えば、命令セットアーキテクチャ(ISA)のような命令セットから複数の命令を実行する。命令セットは、プログラミングに関連するコンピュータアーキテクチャの一部であり、複数のネイティブデータタイプ、複数の命令、レジスタアーキテクチャ、複数のアドレッシングモード、メモリアーキテクチャ、割り込み及び例外処理、並びに外部入力及び出力(I/O)を一般に含む。本明細書における命令という用語は、例えば、実行のためにプロセッサに提供される命令などのマクロ命令、又は、例えば、プロセッサのデコードユニット(デコーダ)が複数のマクロ命令をデコーディングした結果の命令などのマイクロ命令を指し得ることが留意されるべきである。(例えば、複数の命令をデコード及び/又は実行する1つ又は複数のコアを有する)プロセッサは、例えば、算術、ロジック、又は複数の他の機能を実行する際に、データに基づいて作動し得る。
ハードウェアプロセッサ(例えば、コンピューティングシステムの一部として)は、例えば、アドバンスト・コンフィギュレーション・アンド・パワー・インターフェイス(ACPI)規格に従って、その複数のコンポーネント(例えば、複数のコア及び/又はデバイス)のうちの1つ又は複数の電力を、複数の電力状態の間で移行し得る。一実施形態において、コンポーネントは、複数の操作状態、アイドリング状態、又はオフ状態のうちの1つにおいて動き得る。例えば、第1の電力状態は、最大電力及び頻度であってよく、第2の電力状態は、(例えば、アイドリングではないが、)より低い電力及び頻度であってよい。電力状態移行は、例えば、要求に応じて、第1の状態から第2の状態への移行を実行するよう、(例えば、電力状態移行を引き起こす、実行されている複数の命令から)複数のクロックサイクルを取って良い。電力は、バッテリ又は他の電力ソースにより提供され得る。電力管理ユニットは、実行されるオペレーションがない(例えば、プロセッサのコアにより実行される命令がない)場合、プロセッサ及び/又はその複数のデバイス(例えば、ディスプレイ、入力/出力(I/O)ポートなど)を、例えば、アイドリング又はオフ状態などの様々な電力状態に置くことにより、電力を節約し得る。複数の特定の実施形態において、電力管理ユニットは、電力状態決定及び/又は移行を行うことにより、電力消費を管理し得る。追加的に又は代替的に、電力管理は、オペレーティングシステム(OS)により、例えば、OSとその電力状態が移行された(例えば、変更された)デバイスとの間のドライバ通信を介して、実装され得る。
本開示の複数の特定の実施形態において、電力管理は、ソフトウェア(例えば、OS及び/又は複数のアプリケーション)と共存するプロセッサ(例えば、低電力マイクロコントローラ)を利用し得る。(例えば、エネルギ効率性のために)本開示の複数の特定の実施形態において、OSは、例えば、各デバイスドメインにその独自の状態を制御することを任せるなど、そのドメイン内において電力制御を分散し得る。しかしながら、電力管理フロー視点からは、複数の電力管理(例えば、移行)コマンドが、例えば、電力管理ユニットにより、発行される及び/又は実行されると、これは、競合(contentiоn)及び競合状態(race conditiоn)をもたらし得る。これは、別の電力移行(例えば、処理)が発生した間、例えば、1つの電力移行要求を引き延ばす又はキャンセルするよう、(例えば、複数のセマフォ又は他の手段を用いて)ロックすることにより、対処され得る。これは、例えば、ロックが(例えば、デバイスレベル制御、又はデバイスのセット、若しくはプラットフォームのためのいずれかの)一の電力移行全体で維持されている場合、エネルギの非効率を引き起こし得る。本開示の複数の特定の実施形態は、例えば、ロックを利用しないなど、拡張可能な電力管理を提供し得る。本開示の複数の特定の実施形態は、例えば、OS内、又は電力管理ユニット(例えば、プロセッサの電力管理コントローラ(PMC)又はストレージコントローラユニット(SCU))で、若しくは両者の組み合わせにおいて、粗粒の複数のロック又は同期を利用しない電力管理を提供し得る。本開示の複数の特定の実施形態は、一度に1つの電力移行(例えば、要求)のみがハードウェアへ送信され得るOSにより(例えば、高水準で粗粒度の)ロックを入れない電力管理を提供し得る。
本開示の複数の特定の実施形態は、トランザクショナル電力管理を実行するための複数の電力管理装置(例えば、プロセッサ及び/又はシステムオンチップ(SoC))及び方法を含む。例えば、(例えば、デバイス、コンポーネント及び/又は電力ドメインの)各電力状態移行は、トランザクションとして表され得る。一実施形態において、電力状態移行(例えば、1つの状態から異なる状態へ)は、例えば、電力管理ユニットの制御入力へ(例えば、各電力ドメインに対する入力が)送信されるなどの電力管理コマンドの受信により要求され得る。本開示の複数の特定の実施形態は、複数の電力管理コマンドを並列化するための複数の電力管理装置及び方法を含む。本開示の複数の特定の実施形態は、トランザクショナル電力管理を実行するための複数のトランザクショナルメモリ(例えば、管理)装置及び方法を含む。本開示に係る電力管理は、電力管理ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせを含み得る。
一実施形態において、トランザクションは、原子性、一貫性、独立性、及び耐久性(ACID)特性のうちの1つ、すべて、又はその任意の組み合わせに従って、保証される。原子性(例えば、アトミックであること)は一般に、「すべてか無し」であるトランザクションを指し得る。例えば、複数のトランザクションの一部が失敗した場合、次にそのトランザクション全体が失敗し、操作されたデータが変更されないままとなる。アトミックなシステムは、例えば、電源故障、エラー、及びクラッシュを含む、各及びすべての状況において原子性を保証し得る。トランザクションの外では、コミットされたトランザクションが不可分(「アトミック」)なように表わされ(例えば、操作されたデータ上のその複数の効果により)、アボートされた(例えば、コミットされていない)トランザクションが発生していなかったかのように表わされる。一貫性は一般に、データを、1つの有効な状態から別の状態へ動かすための任意のトランザクションを指し得る。例えば、任意の書き込みデータは、例えば、複数の制約、カスケード、トリガ、及びそれらの任意の組み合わせを含むなど、すべての定義されたルールに従って、有効となる。これは、例えば、アプリケーションレベルのコードの責任であることがあり、すべての態様においてトランザクションの正確性を保証しない場合があるが、任意のプログラミングエラーが任意の定義されたルールを違反する結果にならないことを保証し得る。独立性は一般に、例えば、次々と、複数のトランザクションが連続的に実行されるとした場合に得られた同一のシステム状態をもたらすこれらのトランザクション(例えば、複数のスレッド)の同時実行を指し得る。並行処理制御は、独立性を提供し得る。例えば、並行処理制御方法に応じて、不完全なトランザクションの複数の効果は、他のトランザクションには可視ではない場合がある。耐久性は一般に、トランザクションが一旦コミットされると、例えば、たとえ電力損失、クラッシュ、又はエラーという事件に遭っても、そのまま保持することを指し得る。例えば、電力損失から守るために、複数のトランザクション(又はそれらの効果)は、不揮発性(例えば、永続的)メモリに記録され得る。
本開示の複数の特定の実施形態は、トランザクションとして電力状態移行を表わすための複数の電力管理装置及び方法を含む。これは、複数のデバイス(例えば、プロセッサ、システムオンチップ(SoC)及び/又はプラットフォーム)の複数の電力状態に対するセマンティックに正確な(例えば、マルチプロセッサ的)ビューを可能にし得る。さらに、電力トランザクションとして電力状態移行を表わすことは、電力管理移行をモデリング、指定、及び検証するためのより順序付きでセマンティックに正確な態様を可能にし得る。複数の特定の実施形態において、複数のトランザクショナルメモリシーケンスとして、複数の電力管理移行を実行することは、複数のデバイス、複数のSoC及び/又は複数のプラットフォームの複数の電力状態に対するセマンティックに正確な複数プロセッサ的ビューを可能にし得る。さらに、複数のトランザクションとして複数の電力状態移行を表わすことは、複数の電力(例えば、管理)移行をモデリング、指定、及び検証するためのより順序付きでセマンティックに正確な態様をもたらし得る。複数の特定の実施形態において、複数のトランザクションとして複数の電力移行を表わすことは、例えば、複数のデバイス、複数のSoC、及び/又は複数のプラットフォームの電力管理検証を支援するセマンティックにコヒーレントな表示などの、ハードウェア、ファームウェア、及びソフトウェアにおいて複数の電力シーケンスを指定するための有力な態様であり得る。
一実施形態において、複数の電力管理装置及び方法は、一の(例えば、単一の)トランザクションとして、コード(例えば、一のスレッド又は複数のスレッド)の領域を宣言し得る。トランザクションは、(例えば、トランザクションが成功した場合、)メモリのすべての結果を実行及びアトミックにコミットする、又は(例えば、トランザクションが失敗したとき、)すべての結果をアボート及びキャンセルし得る。トランザクションは、例えば、上で検討したように、原子性、一貫性、独立性、及び耐久性(ACID)特性に従って実行され得る。トランザクションは、例えば、複数のロック及び複数のセマフォのような複数の技術を入れ替えるよう、安全に並列的に実行し得る。複数の特定の実施形態はまた、性能利益を含んでよく、例えば、ロックが悲観的であってよく、そのロッキングスレッドがデータへ書き込むことを想定してよく、これにより、複数の他のスレッドのプログレスがブロックされ得る。本明細書のロックなしの一実施形態において、両方とも共有リソース(例えば、同一のメモリアドレス又はレジスタ)へアクセスする2つのトランザクションが並列に進んでよく、ロールバック(例えば、トランザクションの一方又は双方のアボート)が、トランザクションのうちの1つがその共有リソースへ書き込む(例えば、コンフリクト書き込みの)場合のみ、発生し得る。
複数の電力管理装置及び方法は、(例えば、ハードウェア、OS、又はドライバから、)複数の電力状態移行(例えば、どのデバイス又はドメイン及び/又は新しい電力レベルへ移行するかを示すもの)のための複数の要求を受信し得る。一実施形態において、電力状態移行は、電力管理コマンド(例えば、移行を実現すべく、プロセッサ上で実行する複数の命令のスレッド)により要求され得る。一実施形態において、電力管理コマンドは、要求元(例えば、OS)から移行されるべきデバイス(例えば、制御入力)へ送信され得る。電力状態移行は、例えば、電力トランザクションとして割り当てられる電力管理コマンド(例えば、スレッド)など、トランザクションとして宣言され得る。そのように、電力状態移行(例えば、電力状態移行を引き起こすオペレーション)は、一の(例えば、単一の)電力トランザクションとして、扱われてよく、これにより、複数の電力管理装置及び方法は、電力状態移行を制御する及び/又は電力状態移行の一部である複数の(例えば、メモリ、複数のレジスタ、複数のデータ入力などに保持されている)データ構造を操作する(例えば、複数の電力状態を変更する)場合、複数のロックを発行しない。一実施形態において、電力状態トランザクションは、データ構造に対する任意の変更を試行する前に状態移行オペレーションを開始する段階と、(例えば、キャッシュ内の)複数のデータ構造のコピー(例えば、参照バージョン)へそれらの変更を行う段階と、オペレーションが終了した場合において、コンフリクトが発生しないとき、トランザクションをコミットする段階とを含む。トランザクションの間、電力トランザクション・ユニット(例えば、システム)は、これらのオペレーションが読み取り及び/又は書き込みを実行したすべてのデータ構造のトラック(例えば、ログ)を保持し得る。電力トランザクションがコミットされる前に、電力トランザクション・ユニットは、他のトランザクション(例えば、そのオペレーション)がトランザクションの用いたデータ構造に対していかなる変更も行っていないかをチェックし得る。変更がない場合、トランザクションは、コミットされ得る。変更がある場合、トランザクションは、例えば、その変更のすべてが行われないよう、アボートされ得る。一実施形態において、アボートされたトランザクション(例えば、そのオペレーション)は、例えば、異なる戦略下で(例えば、ロックを用いて)再試行される、又はキャンセルされ得る。従って、複数のデバイスのための電力状態移行の複数の試行は、複数の電力状態トランザクションとして並列に発生し得る。一実施形態において、デバイス及び/又はドメインは、電力管理レジスタを含み、そのレジスタ内への電力管理コマンドの書き込の受信次第、電力状態移行を引き起こし、例えば、電力管理コマンドは、デバイスの新しい電力状態を示すビット又は複数のビットであり得る。一実施形態において、ソフトウェア(例えば、OS)は、電力状態移行を要求し、例えば、デバイス(及び/又は電力ドメイン)が利用されていないことを検出した後に、デバイスをアイドリングする又はオフにすることを示し得る。デバイスは、例えば、プロセッサにオンダイされていないなど、プロセッサの外部にあるコンポーネント(例えば、周辺機器)を含み得る。複数のデバイスは、例えば、同一のクロックにより制御されている、又は同一の電力ドメインにある(例えば、電源の同一のパワーレールにより電力を供給されている)、これらのデバイスなど、複数の共有リソースを含み得る。OSは、電力管理コマンド(例えば、スレッド)を実行するよう、どの電力ドメインが用いられるであろうかを示す又は検出し得る。例えば、(例えば、電力状態移行を要求する)電力管理コマンドがトランザクションとして扱われることを、OS又はハードウェアに示すべく、電力トランザクション示唆(例えば、以下の図5に関連する「アトミック」)が、コードに含まれ得る。
一例において、第1のデバイス(例えば、USBハブ)及び第2のデバイス(例えば、ネットワークアダプタ)がそれぞれ、アクティブな電力状態にあってよく、複数の電力管理コマンドが、それぞれをアイドリング又は電源オフ状態に移行すべく、(例えば、それらのそれぞれのドライバから)送信され得る。(例えば、USBハブに対する)第1の電力管理コマンド及び(例えば、ネットワークアダプタに対する)第2の電力管理コマンドが、例えば、OSにより、送信されてよく、プロセッサ又はSoCの電力トランザクション・ユニットにより、受信されてよい。電力トランザクション・ユニットは、例えば、原子性、一貫性、独立性、及び/又は耐久性(ACID)特性に従って、各電力管理コマンドに対する要求された複数の電力状態移行が複数の電力トランザクションであることを検出し得る。(例えば、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせにおける)電力トランザクション・ユニットは、複数の電力状態移行の同時(例えば、並列)実行を可能にし得るが、例えば、まだそれらをコミットしない。これは、たとえこれらのデバイスが共有リソースにより電力を供給されている場合でも発生し得る。例えば、第1の電力コマンド(例えば、スレッド)及び第2の電力コマンド(例えば、スレッド)により発生する任意の読み取り及び/又は書き込み(例えば、制御入力及び/又は出力へのもの)は、トラックされ得る。一実施形態において、第1の電力トランザクション及び第2の電力トランザクションに変更(例えば、コンフリクト)がない場合、それらは次に、コミットされ得る(例えば、複数のデバイスがアイドリング又は電源オフ状態へ動かされる)。コンフリクト変更がある場合、例えば、1つのデバイスがアイドリングされ、他のデバイスがオフ状態にされ、両方のデバイスが両方に影響を与える共通電力資源(例えば、ドメイン)を共有するので、次に、一方又は双方のトランザクションは、例えば、コンフリクト解消ポリシーに従って、アボートされ得る。コンフリクト解消ポリシーの一例では、リソースへ書き込む第1のトランザクションがコミットされ、第2のトランザクションがアボートされる。コンフリクト解消ポリシーの別の例では、最高電力状態でのトランザクションがコミットされ、より低い電力状態トランザクションがアボートされる。例えば、他のトランザクションがコミットされた後に、例えば、アボートされたトランザクションを再試行する(例えば、遅延させる)などの他のコンフリクト解消ポリシーは含まれ得るが、これに限定されない。一実施形態において、(例えば、それぞれのスレッドに対する)各電力トランザクションは、同時に実行している複数のスレッドの間のコンフリクトが検出されるまで進み得る。本明細書の複数の特定の実施形態は、複数の電力移行を(例えば、コミットせずに)同時に実行することに対抗するロックがないことを可能にする。
本明細書の複数の図は、電源(例えば、バッテリ又は非バッテリ)、又は複数の電源接続を記載していないことが留意されたい。当業者であれば、これは複数の図面における複数の特定の詳細を曖昧にしないためであることを理解するであろう。本明細書における両矢印は、双方向の通信を必ずしも必要としなくてよく、例えば、(例えば、コンポーネント又はデバイスへの又はからの)一方向通信を示し得ることが留意されたい。複数の通信パスのうちのいずれか又はすべての組み合わせは、本明細書の複数の実施形態において利用され得る。
図1は、本開示の複数の実施形態に係るハードウェア装置100を図示する。一実施形態において、ハードウェア装置100は、SoCであってよい。示されているハードウェア装置100は、ハードウェアプロセッサ102を含む。ハードウェアプロセッサの複数の特定のコンポーネントが示されているが、例えば、複数のレベルのキャッシュ及び複数のコア、他のプロセッサは、例えば、本明細書に検討されているこれらなどの本開示の趣旨から逸脱することなく、利用され得る。示されているコアA(102A)は、第1レベル命令(L1I)キャッシュ104A、第1レベルデータキャッシュ106A、及びレベル2(L2)キャッシュ108Aを含む。示されているコアB(102B)は、第1レベル命令(L1I)キャッシュ104B、第1レベルデータ(L1D)キャッシュ106B、及びレベル2(L2)キャッシュ108Bを含む。示されているコアC(102C)は、第1レベル命令(L1I)キャッシュ104C、第1レベルデータ(L1D)キャッシュ106C、及びレベル2(L2)キャッシュ108Cを含む。示されているコアD(102D)は、第1レベル命令(L1I)キャッシュ104D、第1レベルデータ(L1D)キャッシュ106D、及びレベル2(L2)キャッシュ108Dを含む。示されているハードウェアコアA及びBは、共有レベル3(L3)キャッシュ110を含む。示されているハードウェアコアC及びDは、共有レベル3(L3)キャッシュ112を含む。示されているプロセッサ102は、共有レベル4(L4)キャッシュ114を含む。4つのコアが示されているが、単一コア又は任意の複数のプロセッサコアが利用され得る。レベル4キャッシュが示されているが、単一レベル又は任意の複数のレベルのキャッシュが利用され得る。
一実施形態において、各コアはその独自の電力ドメインを有する。一実施形態において、複数のコア(例えば、コアA及びコアB)は、共有電力ドメインを有する。一実施形態において、キャッシュ全体は、その独自の電力ドメインを有し得る。例えば、L3キャッシュ110に対する電力移行は、特定の又は他のすべてのキャッシュに対する電力移行を引き起こし得る。
キャッシュ・コヒーレンシ・ユニットは、例えば、キャッシュの一部として、例えば、4つの状態である変更(modified)(M)、排他的(exclusive)(E)、共有(shared)(S)、及び無効(invalid)(I)(MESI)プロトコル、又は、5つの状態である変更(M)、排他的(E)、共有(S)、無効(I)、及び転送(forward)(F)(MESIF)プロトコルなどのキャッシュコヒーレンシプロトコルに従って、利用され得る。
複数の通信パスのうちのいずれか又はすべての組み合わせは、本明細書の複数の実施形態において利用され得る。例えば、プロセッサ102、例えば、そのコアは、例えば、(リングネットワーク116として示されている)ネットワークを介して、複数の他のデバイスと通信し得る。
本開示の複数の特定の実施形態に従って、(例えば、電力)トランザクション・ユニットが含まれ得る。例えば、各コアは、それらのそれぞれのコアに、(例えば、電力)トランザクション・ユニット、(電力)トランザクション・ユニット120A、120B、120C及び120Dを含み得る。追加的に又は代替的に、プロセッサ又はSoCは、別個の(例えば、電力)トランザクション・ユニットを含み得る。示されているハードウェア装置は、例えば、本明細書における開示を実行するロジックを格納するための電力トランザクション・ユニット120を含む。複数の特定の他のコンポーネントが示されているが、これらは例示的なものであり、複数の他のコンポーネントは利用されてよく、及び/又は示されている複数のコンポーネントのうちの特定のものは、ハードウェア装置に存在しなくてよい。示されている複数のコンポーネントは、ディスプレイ126へ複数のディスプレイ信号を送信し得るグラフィクスユニット124(例えば、グラフィクスプロセッサであり得る)、ストレージ128(例えば、オンダイ又はオフダイであり得るデータ・ストレージ・デバイス)、汎用非同期送受信機(UART)130、ロアーパワーサブシステム(LPSS)132、及びユニバーサルシリアルバス(USB)134を含む。グラフィクスユニット124は、ハードウェアプロセッサ102の一部であってよい。
電力管理ユニット122は、例えば、複数のデバイスへの電力のフローを管理するために含まれ得る。電力トランザクション・ユニットは、電力管理ユニットに含まれ得る。一実施形態において、各デバイス(例えば、それのコンポーネント)は、その独自の電力ドメインを含み得る。一実施形態において、複数のデバイス又は一のデバイスの複数のコンポーネントは、単一の電力ドメインを共有する。
一例として、第1のデバイス(例えば、USB134)及び第2のデバイス(例えば、UART130)はそれぞれ、アクティブな電力状態にあってよく、複数の電力管理コマンドは、(例えば、それらそれぞれのドライバから)それぞれを電源オフ(又はアイドリング)状態へ移行するよう、送信されてよい。(例えば、USB134に対する)第1の電力管理コマンド及び(例えば、UART130に対する)第2の電力管理コマンドは、例えば、OSにより送信されてよく、電力トランザクション・ユニット(例えば、トランザクション・ユニット120)により受信されてよい。電力トランザクション・ユニットは、(例えば、OSからの指示により、)例えば、原子性、一貫性、独立性、及び/又は耐久性(ACID)特性に従って、各電力管理コマンドに対する要求された複数の電力状態移行が複数の電力トランザクションであることを検出し得る。(例えば、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせにおける)電力トランザクション・ユニットは、複数の電力状態移行の同時(例えば、並列)実行を可能にし得るが、例えば、まだそれらをコミットしない。これは、たとえこれらのデバイスが共有リソースにより電力を供給された(例えば、同一の電力ドメインのメンバである)場合でも発生し得る。例えば、第1の電力コマンド(例えば、スレッド)及び第2の電力コマンド(例えば、スレッド)により発生している(例えば、制御入力及び/又は出力への)任意の読み取り及び/又は書き込みは、トラックされ得る。変更されるデータのコピーは、作成されてよく(例えば、参照バージョン)、キャッシュ(例えば、プロセッサのキャッシュ又はトランザクション・ユニット120の別個のキャッシュ)に格納され得る。一実施形態において、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクト(例えば、コンフリクト変更)がない場合、それらは次にコミットされ得る(例えば、USB134及びUART130デバイスが電源オフ(又はアイドリング)状態へ動かされる)。コンフリクト(例えば、コンフリクト変更)がある場合、例えば、1つのデバイスがアイドリングされ、他のデバイスがオフ状態にされ、両方のデバイスが両方に影響を与える共通電力資源(例えば、ドメイン)を共有するので、次に、一方又は双方のトランザクションは、例えば、コンフリクト解消ポリシーに従って、アボートされ得る。
別の実施形態において、単一デバイスは、電力トランザクションとして宣言されたその電力移行を有し得る。例えば、(例えば、アクティブ状態からオフ又はアイドリングへの)電力状態移行の処理におけるデバイス(例えば、USB134)は、割り込み(例えば、周辺機器がUSB134内にプラグ接続されているなど)を受信し得る。電力トランザクション・ユニットは、これを検出して次にインフライト電力状態移行を(例えば、コミットせず)アボートしてよく、例えば、その代わりに、アクティブ状態に戻ってよい。
図2及び図3に戻ると、図2は、集積回路(例えば、その複数のプロセッサコア)が複数のハードウェア・メモリ・トランザクションのためのサポート(例えば、トランザクショナルメモリ)を含まない実施形態を説明するために用いられており、図3は、集積回路(例えば、その複数のプロセッサコア)がハードウェア・メモリ・トランザクションのためのサポート(例えば、トランザクショナルメモリ)を含む実施形態を説明するために用いられている。
図2は、本開示の複数の実施形態に係る集積回路200を図示する。プロセッサコア0−Nはそれぞれ、(例えば、専用)命令キャッシュ(IC)及び(例えば、専用)データキャッシュ(DC)を含むよう示されている。さらに、集積回路は、複数の(例えば、データ)キャッシュにおいて(例えば、グローバル)キャッシュコヒーレンシを維持するキャッシュ・コヒーレンシ・コントローラ236を含み得る。複数の特定のデバイス及びコンポーネントが図2に示されているが、これらは任意選択的なものである。例えば、「ノース複合」電力ドメイン及び「サウス複合」電力ドメインが示されているが、任意の電力ドメインが利用され得る。バス216は、通信のために用いられ得る。
キャッシュ・コヒーレンシ・コントローラ236及び検討されている複数の他の変更は、トランザクショナル電力管理を可能にし得る。集積回路200(例えば、SoC)は、電力管理ユニット(PUNIT)240及び電力管理コントローラ(PMC)242を含み、例えば、それらのそれぞれ又は両方は、別個のプロセッサコアであってよい。PMC242は、例えば、PUNIT240からの電力管理コマンドに応じて、ドメイン(例えば、サウス複合)への電力を制御し得る。
ハードウェア電力トランザクションは、例えば、ハードウェア・メモリ・トランザクションをサポートしないシステム(例えば、トランザクショナルメモリ)において、以下のように実装され得る。トランザクションフィールド(例えば、ビット)は、キャッシュシステムにおいて各キャッシュエントリ(例えば、キャッシュライン)に対して含まれ得る。(例えば、PUNIT及びPMCのそれぞれに対する)データ構造は、トランザクション履歴及び/又は任意のコンフリクトのトラックを保持するために含まれ得る。データ構造は、要素(例えば、デバイス)がセット(例えば、共有電力ドメイン又は他の共有リソース)のメンバであるかをテスト(例えば、決定)すべく、アクセスされ得る。示されている実施形態において、データ構造は、PUNIT240に対するブルームフィルタ240A及びPMC242に対するブルームフィルタ242Aである。ブルームフィルタは、要素(例えば、デバイス)がセット(例えば、共有電力ドメイン又は他の共有リソース)のメンバであるかをテストするのに用いられる(例えば、省スペースの)確率的データ構造であり得る。一実施形態において、偽陽性マッチが可能であってよいが、偽陰性は、可能ではない。例えば、「セットに存在可能な要素」又は「セットに絶対に存在しない要素」のいずれかに戻る要素に対するそのクエリがある。PUNIT及びPMCは、コンフリクト解消及びコミットの順序付けのためのサポートを提供すべくデータ構造(例えば、複数のブルームフィルタ)を利用し得る。データ構造(例えば、ブルームフィルタ)は、(例えば、メモリマッピングされた)レジスタ(例えば、レジスタ244及び246)として、アクセスされ得る。PUNIT及びPMCの複数の電力管理レジスタ(示せず)は、電力移行を引き起こすためにアクセスされ得る。データ構造(例えば、レジスタ244及び246)は、例えば、トランザクション・アプリケーション・プログラミング・インターフェイス(API)を介して、トランザクション境界を定義し、如何にコンフリクト(及び任意の再試行)を処理するかを構成するなどのために、例えば、ソフトウェアにより用いられるよう、ソフトウェア内に露出され得る。本明細書の複数の特定の実施形態は、従って、(例えば、複数のトランザクションとして扱われる電力命令のシーケンスのための)トランザクショナル電力管理の拡張可能なハードウェア及びソフトウェア実装を提供し得る。複数のトランザクションとして複数の電力状態移行を表わすことは、複数の電力管理移行をモデリング、指定、及び検証するためのより順序付きでセマンティックに正確な態様をもたらし得る。
図3は、本開示の複数の実施形態に係る集積回路300(例えば、SoC)を図示する。この例において、(例えば、複数の電力管理コントローラを含む)(例えば、すべての)プロセッサコアは、複数のハードウェア・メモリ・トランザクションのためのサポート(例えば、トランザクショナルメモリ)を含み、従って、トランザクショナル電力管理を可能にし得る。集積回路の複数のコンポーネントは、すべてのコンポーネント(例えば、電力管理ユニット(PUNIT)340及び電力管理コントローラ(PMC)342を含み、すべてのプロセッサコア)をわたって(例えば、メモリ及び電力の)複数のトランザクションの(例えば、全体的に)同期されたビューを有し得る。例えば、システム(例えば、SoC)は、メモリ・トランザクション・ユニット(例えば、エンジン)及び/又は電力トランザクション・ユニット(例えば、エンジン)を含み得る。データ構造(例えば、ブルームフィルタ)は、利用されなくてよい。コンパイラは、複数の電力状態移行を可能にすべく、トランザクションのためのサポートを含み得る。コンパイラにおける複数のメモリ・トランザクションのためのサポートは、トランザクショナル電力管理を可能にするために利用され得る。複数のデバイスドライバは、複数の電力管理トランザクションのためのそれらのコードをアノテートし得る。この枠組みは、例えば、ロック、同期などの複数のポイント解決策を提供する必要なしでOS及び複数の他のコンポーネントが複数のコアSoCをわたってよりポータブル及び拡張可能になることに役に立ち得る。バス316は、通信のために用いられ得る。図2及び3に関して、ノース複合及びサウス複合のそれぞれのために列挙されている複数のコンポーネント及びデバイスは単に例である。
一実施形態において、(例えば、複数のコアを有する)システムは、例えば、すべてのプロセッサコア(及びメモリ)をわたって、コードのシーケンスに対してACIDセマンティックを保証するハードウェアを有することにより、トランザクショナルとしてマークを付けられた、そのコードのシーケンスに対するハードウェア・トランザクショナル・メモリをサポートし得る。これは一般に、すべてのコアをわたって複数のトランザクションの全体的に同期されたビューと称されてよく、例えば、これにより、1つのコアがトランザクショナルとしてマークを付けられたコードフロー(例えば、スレッド)を実行している場合において、そのコードが(例えば、メモリにおける)何らかのデータへアクセスしているとき、次には、例えば、すべてのコアをわたって、そのコードの一部分(及びメモリ)のためにトランザクショナル・セマンティックが維持されることを保証する組み込みハードウェアサポートがある。そのようなシステムの一例において、(例えば、すべての)ホストドライバが、複数のプロセッサ(例えば、IA)コア上で起動してよく(例えば、通常のアクセス及び複数のオペレーションのためにメインメモリを用いるなど)、(例えば、トランザクショナルとしてマークを付けられた複数の電力管理コマンド(コード)のための)トランザクショナル電力管理を試行する複数のホストドライバのうちの任意のセットは、例えば、これらのコマンドがコア及び/又は電力管理ユニット(例えば、メモリアクセスを有するコントローラ)により実行された場合、トランザクショナル・セマンティックを維持すべく保証される。
複数のメモリ・トランザクションをサポートするシステムの複数の特定の実施形態は、例えば、複数の電力管理コマンドがメモリ(例えば、レジスタ)に読み取られる及び/又は書き込まれるという複数の電力トランザクションをサポートするのに用いられ得る。例えば、ISAの電力管理命令は、それがトランザクションということを示すべく、それらのフィールドを有し得る。
本開示の複数の特定の実施形態は、以下の1つ又は複数を(例えば、ランタイム)サポートするハードウェア及び/又はソフトウェアを含む。例えば、モバイルデバイスにおける、複数のトランザクション(例えば、シーケンス)としての複数の特定の電力管理コマンド(例えば、シーケンス)を実装する複数のプロセッサコア、並びにPUNIT, PMCのような(例えば、マイクロ)コントローラ、及び無線ポートコントローラユニット(RPCU)である。ソフトウェア電力トランザクションは、複数のトランザクションとしての複数の電力管理コマンドを封止するための複数の抽出を提供してよく、例えば、これは、ソフトウェアがソフトウェア(例えば、OS及び/又はドライバ)コードにおいて複数の電力管理シーケンスをアノテートすることを可能にするよう、複数のコンパイラにおける電力プラグマにより実現され得る。複数のコンパイラトランスレーションは、ソフトウェアで提供される複数の電力示唆(例えば、図5の「アトミック」)を、ハードウェア・トランザクショナル・メモリのための根本的なアーキテクチャのサポートに特定の複数のトランザクショナルメモリ命令シーケンスへ変換し得る。以上は、例えば、電力管理のために用いられる別個のコア又はプロセッサなどの、(例えば、マイクロ)コントローラサポートハードウェア・トランザクショナル・メモリも有するように拡張され得る。複数のプロセッサにおけるハードウェア(電力)トランザクションサポートは、複数のデバイス及びプラットフォーム並びに/若しくはSoCの電力状態の統一のビューを提供し得る。この枠組みは、例えば、ロック、同期などのポイント解決策を提供する必要なしでOS及び複数の他のコンポーネントが複数のコアデバイス(例えば、SoC)をわたってよりポータブル及び拡張可能であることを可能にし得る。例えば、図5に示す例において、スレッドT1及びT2は、アトミックブロックの周囲の複数のスレッドを封止することにより、共有電力資源601における複数の共有電力状態レジスタへのアクセスを実行し得る。トランザクションが完了するよう実行してコミットされる場合、その複数の効果は、複数の他のトランザクションに対して可視であってよい。あるいは、トランザクションは、アボートされてよく、その複数の効果の1つも複数の他のトランザクションには可視ではなくてよい。
本明細書における複数の特定の実施形態は、例えば、アトミックに実行すべく、複数のトランザクションとして複数の共有オブジェクトへアクセスすべく、コードの複数のセクションを示す(例えば、マークを付ける)ことを含む。
図4は、本開示の複数の実施形態に係る、複数の電力トランザクションを有しないシステムのための電力管理コード400を図示する。図4は、複数の電力トランザクションを有しないことで、システムが、第1の電力移行が完了するまで第2の電力移行を遅延させ得ることを図示する。複数の電力トランザクションを有しない複数の電力状態移行についての一実施形態において、カーネル又はデバイスドライバが、単一デバイス又は複数のデバイスに対して、電力管理コマンド(例えば、電力状態移行要求)を、例えば、これのためのプラットフォームサポートに基づいて発行し得る。しかしながら、複数のロック及び/又は同期プリミティブは、複数のエラー(例えば、複数のバグ)、競合状態、ロックアップ/枯渇、非ポータブルコード、及び特定プラットフォーム解決策をもたらす、OS、複数のデバイスドライバ、ファームウェア、及びハードウェアをわたってこの複合状態機械を調整するのに用いられ得る。さらに、例えば、複数の電力トランザクションなしで中断及び再開の高レイテンシに起因して、複数の電力トランザクションなしで電力状態移行を実行する時間が、複数の電力トランザクションを用いる場合の時間の量の10倍以上かかり得る。
図5は、本開示の複数の実施形態に係る、複数の電力トランザクションを有するシステムのための電力管理コード500を図示する。示されているコードは、例えば、原子性、一貫性、独立性、及び耐久性(ACID)トランザクショナル特性のうちの1つ又は複数に従って、(例えば、「アトミック」により)複数の電力管理コマンド(例えば、スレッドT1及びT2の両方)が複数のトランザクションとして扱われるべきであると宣言することを含む。一実施形態において、コンピューティングシステム(例えば、コンパイラ)は、例えば、コンフリクトがある場合を除き、両方ともコミットするなど、同時に実行され得る複数のトランザクションとしてこれらのスレッドを扱ってよい。
図6は、本開示の複数の実施形態に係る、T1及びT2に対する複数の原子力トランザクションを有する場合と、T1及びT2に対する複数の原子力トランザクションを有しない場合との時間概略図600を図示する。図6は、複数の原子力トランザクションに対して、それらがトランザクションではないとして、一連に(例えば、少なくともt1+t2)完了する複数の電力管理コマンド(例えば、非アトミックT1及びT2)とは対照的に、両方のスレッドは、例えば、時間t1及びt2をかけてそれぞれ実行する(共有電力資源601の電力制御レジスタへのそれらのアクセスにより起因するコンフリクトがない場合はコミットされる)など、同時に実行し得ることを図示する。一実施形態において、各電力管理コマンド(例えば、スレッド)は、別個のコア上で実行される。一実施形態において、コアは、電力管理ユニットとして利用され得る。
図7は、本開示の複数の実施形態に係るフローダイヤグラム700を図示する。示されているフローダイヤグラム700は、ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって、各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの1つへ移行する複数の電力ドメインを提供する段階702と、同時実行のために第1の電力トランザクションとしての第1の電力管理コマンド及び第2の電力トランザクションとしての第2の電力管理コマンドを割り当てる段階704と、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがない場合において第1の電力トランザクション及び第2の電力トランザクションのコミットを実行する段階706と、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがある場合において第1の電力トランザクションのアボート及び第2の電力トランザクションのコミットを実行する段階708とを含む。
図8は、本開示の複数の実施形態に係るフローダイヤグラム800を図示する。示されているフローは、例えば、ソフトウェア(例えば、OS)からファームウェア、ハードウェアまで幅広く、例示的な電力トランザクションを含む。一実施形態において、図8のフローダイヤグラムは、図1、2及び/又は3における回路を指し得る。PMICは、電力管理集積回路を指し得る。
一実施形態において、ハードウェア装置は、ハードウェアプロセッサを備え、ハードウェアプロセッサは、コアと、各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの1つへ移行する複数の電力ドメインと、同時実行のために第1の電力トランザクションとしての第1の電力管理コマンド及び第2の電力管理コマンドとしての第2の電力トランザクションを割り当て、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがない場合において第1の電力トランザクション及び第2の電力トランザクションのコミットを実行し、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがある場合において第1の電力トランザクションのアボート及び第2の電力トランザクションのコミットを実行する電力トランザクション・ユニットとを有する。第1の電力トランザクション及び第2の電力トランザクションはそれぞれ、複数の命令を含み得る。ハードウェア装置は、各ドメインに対する電力管理コマンドを受信する複数の電力状態レジスタをさらに備え得る。コンフリクトは、第2の電力トランザクションが書き込んだ電力状態レジスタに、第1の電力トランザクションが書き込もうとすることであってよい。電力トランザクション・ユニットは、ロックを発行しなくてよい。コンフリクトは、第1の電力トランザクション及び第2の電力トランザクションが共有電力ドメインに対してコンフリクトする複数の電力管理コマンドを書き込むことであってよい。コンフリクトがある場合、第2の電力トランザクションの実行に応じた電力ドメインの移行は、第2の電力トランザクションのコミットの後にのみ、複数の他のトランザクションに対して可視であってよい。ハードウェア装置は、第1のスレッド及び第2のスレッドが同一のメモリアドレスを変更する場合を除き、ハードウェアプロセッサのコア上での第1のスレッド及び第2のコア上での第2のスレッドの同時実行の後に第1のスレッド及び第2のスレッドのコミットを実行するメモリ・トランザクション・ユニットをさらに備え得る。
別の実施形態において、方法は、ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの1つへ移行する複数の電力ドメインを提供する段階と、同時実行のために第1の電力管理コマンドとしての第1の電力トランザクション及び第2の電力管理コマンドとしての第2の電力トランザクションを割り当てる段階と、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがない場合において第1の電力トランザクション及び第2の電力トランザクションのコミットを実行する段階と、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがある場合において第1の電力トランザクションのアボート及び第2の電力トランザクションのコミットを実行する段階とを備える。第1の電力トランザクション及び第2の電力トランザクションはそれぞれ、複数の命令を含み得る。方法は、電力状態レジスタにおいて各ドメインに対する電力管理コマンドを受信する段階をさらに備え得る。コンフリクトは、第2の電力トランザクションが書き込んだ電力状態レジスタに、第1の電力トランザクションが書き込もうとすることであり得る。方法は、ロックを発行しない段階をさらに備え得る。コンフリクトは、第1の電力トランザクション及び第2の電力トランザクションが共有電力ドメインに対してコンフリクトする複数の電力管理コマンドを書き込もうとすることであり得る。コンフリクトがある場合、第2の電力トランザクションの実行に応じた電力ドメインの移行は、第2の電力トランザクションのコミットが実行された後にのみ、複数の他のトランザクションに対して可視であってよい。方法は、第1のスレッド及び第2のスレッドが同一のメモリアドレスを変更する場合を除き、ハードウェアプロセッサ上で第1のスレッド及び第2のスレッドの同時実行の後に第1のスレッド及び第2のスレッドのコミットを実行する段階をさらに備え得る。
さらに別の実施形態において、非一時的機械可読記憶媒体が、機械より処理された場合、方法を実行させる格納されたプログラムコードを有し、方法は、ハードウェアプロセッサを含むハードウェア装置の複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの1つへ移行する複数の電力ドメインを提供する段階と、同時実行のために第1の電力管理コマンドとしての第1の電力トランザクション及び第2の電力管理コマンドとしての第2の電力トランザクションを割り当てる段階と、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがない場合において第1の電力トランザクション及び第2の電力トランザクションのコミットを実行する段階と、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがある場合において第1の電力トランザクションのアボート及び第2の電力トランザクションのコミットを実行する段階とを含む。第1の電力トランザクション及び第2の電力トランザクションはそれぞれ、複数の命令を含み得る。方法は、電力状態レジスタにおいて各ドメインに対する電力管理コマンドを受信する段階をさらに含み得る。コンフリクトは、第2の電力トランザクションが書き込んだ電力状態レジスタに、第1の電力トランザクションが書き込もうとすることであり得る。方法は、ロックを発行しない段階をさらに含み得る。コンフリクトは、第1の電力トランザクション及び第2の電力トランザクションが共有電力ドメインに対してコンフリクトする複数の電力管理コマンドを書き込もうとすることであり得る。コンフリクトがある場合、第2の電力トランザクションの実行に応じた電力ドメインの移行は、第2の電力トランザクションのコミットが実行された後にのみ、複数の他のトランザクションに対して可視であってよい。方法は、第1のスレッド及び第2のスレッドが同一のメモリアドレスを変更する場合を除き、ハードウェアプロセッサ上で第1のスレッド及び第2のスレッドの同時実行の後に第1のスレッド及び第2のスレッドのコミットを実行する段階をさらに含み得る。
別の実施形態において、ハードウェア装置は、ハードウェアプロセッサを備え、ハードウェアプロセッサは、コアと、複数の電力ドメインであって各電力ドメインに対する電力管理コマンドに応じて複数の電力状態のうちの1つへ移行する複数の電力ドメインと、同時実行のために第1の電力トランザクションとしての第1の電力管理コマンド及び第2の電力トランザクションとしての第2の電力管理コマンドを割り当て、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがない場合において第1の電力トランザクション及び第2の電力トランザクションのコミットを実行し、第1の電力トランザクション及び第2の電力トランザクションの間にコンフリクトがある場合において第1の電力トランザクションのアボート及び第2の電力トランザクションのコミットを実行する手段を有する。
さらに別の実施形態において、装置は、ハードウェアプロセッサにより実行された場合、ハードウェアプロセッサに本明細書において開示されている任意の方法を実行させるコードを格納するデータ・ストレージ・デバイスを備える。装置は、詳細な説明において説明されているようであってよい。方法は、詳細な説明において説明されているようであってよい。
命令セットは、1つ又は複数の命令フォーマットを含み得る。所与の命令フォーマットは、実行(例えばオペコード)されるべくオペレーション及びオペレーションが実行されるオペランドを、複数の他のものの間から指定する様々なフィールド(例えば、ビットの数、ビットの位置)及び/又は他のデータフィールド(例えば、マスク)を定義し得る。いくつかの命令フォーマットは、複数の命令テンプレート(又は複数のサブフォーマット)の定義によりさらに分解される。例えば、所与の命令フォーマットの複数の命令テンプレートは、命令フォーマットの複数のフィールドの異なるサブセットを有するよう、定義されてよく(含まれるフィールドは通常、同一の順序にあるが、含まれているフィールドがより少ないため、少なくともいくつかは異なるビット位置を有する)、及び/又は異なって解釈される所与のフィールドを有するよう、定義されてよい。従って、所与の命令フォーマットを用いて(定義された場合、その命令フォーマットの複数の命令テンプレートのうちの所与の1つにおいて)、ISAの各命令が表されて、オペレーション及び複数のオペランドを指定する複数のフィールドを含む。例えば、例示的なADD命令は、特定のオペコードと、そのオペコードを指定するオペコードフィールド及び複数のオペランドを選択するオペランドフィールド(ソース1/デスティネーション及びソース2)を含む命令フォーマットとを有し、命令ストリームにおけるこのADD命令の発生は、複数の特定のオペランドを選択する複数のオペランドフィールドにおける特定のコンテンツを有するであろう。複数のアドバンスト・ベクトル・エクステンション(AVX)(AVX1及びAVX2)と称されており、ベクトル・エクステンション(VEX)コーディングスキームを用いるSIMD拡張のセットが、リリース及び/又は公開されていた(例えば、2015年4月のインテル(登録商標)64及びIA−32アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアルを参照、及び2014年10月のインテル(登録商標)アーキテクチャ・インストラクション・セット・エクステンション・プログラミング・レファレンスを参照する)。[例示的なコアアーキテクチャ、プロセッサ、及びコンピュータアーキテクチャ]
複数のプロセッサコアは、異なる態様において、異なる目的のために、異なるプロセッサに実装され得る。例えば、そのようなコアの複数の実装は、1)汎用コンピューティング向けの汎用インオーダコア、2)汎用コンピューティング向けの高性能の汎用アウトオブオーダコア、及び3)主にグラフィクス及び/又は科学的用途(スループット)コンピューティング向けの特定用途向けコアを含み得る。複数の異なるプロセッサの複数の実装は、1)汎用コンピューティング向けの1つ又は複数の汎用インオーダコア及び/又は汎用コンピューティング向けの1つ又は複数の汎用アウトオブオーダコアを含むCPU、及び2)主にグラフィクス及び/又は科学的用途(スループット)コンピューティング向けの1つ又は複数の特定用途向けコアを含むコプロセッサを含み得る。そのような複数の異なるプロセッサは、複数の異なるコンピュータシステムアーキテクチャをもたらし、1)CPUとは別個のチップ上のコプロセッサ、2)CPUと同じパッケージにおける別個のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、場合によっては、統合グラフィクス及び/又は科学的用途(スループット)ロジックのような特定用途向けロジック、又は特定用途向けコア等と称される)、及び4)同じダイ上の説明されたCPU(場合によっては、アプリケーションコア又はアプリケーションプロセッサと称される)、上述されたコプロセッサ、及びさらなる機能性を含み得るシステムオンチップを含み得る。例示的な複数のコアアーキテクチャが、次に説明され、次いで、例示的な複数のプロセッサ及び複数のコンピュータアーキテクチャが説明される。[複数の例示的なコアアーキテクチャ][インオーダ及びアウトオブオーダコアブロック図]
図9Aは、本開示の複数の実施形態に係る、例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を図示するブロック図である。図9Bは、本開示の複数の実施形態に係るプロセッサに含まれる、インオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を図示するブロック図である。図9A−Bにおける複数の実線のボックスは、インオーダパイプライン及びインオーダコアを図示する一方、任意的に追加の複数の破線のボックスは、レジスタリネーミング、アウトオブオーダ発行/実行パイプライン及びコアを図示する。インオーダ態様がアウトオブオーダ態様のサブセットであるとして、アウトオブオーダ態様が説明される。
図9Aにおいて、プロセッサパイプライン900は、フェッチステージ902と、長さデコードステージ904、デコードステージ906、割り当てステージ908、リネーミングステージ910、スケジューリング(ディスパッチ又は発行としても既知)ステージ912、レジスタ読み取り/メモリ読み取りステージ914、実行ステージ916、ライトバック/メモリ書き込みステージ918、例外処理ステージ922、及びコミットステージ924を含む。
図9Bは、実行エンジンユニット950と結合されるフロントエンドユニット930を含むプロセッサコア990を示しており、実行エンジンユニット950及びフロントエンドユニット930の両方ともメモリユニット970と結合される。コア990は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、若しくはハイブリッド又は代替的コアタイプであり得る。さらに別のオプションとして、コア990は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティング・グラフィクス処理ユニット(GPGPU)コア、グラフィクスコア、又は同様のものなどの特定用途向けコアであり得る。
フロントエンドユニット930は、命令キャッシュユニット934と結合される分岐予測ユニット932を含み、命令キャッシュユニット934は、命令トランスレーション・ルックアサイド・バッファ(TLB)936と結合され、命令トランスレーション・ルックアサイド・バッファ936は、命令フェッチユニット938と結合され、命令フェッチユニット938は、デコードユニット940と結合される。デコードユニット940(又はデコーダ若しくはデコーダユニット)は、複数の命令(例えば、複数のマクロ命令)をデコードしてよく、元の命令からデコードされる又はそうでなければ元の命令を反映し、若しくは元の命令から導出される、1つ又は複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を出力として生成してよい。デコードユニット940は、様々な異なるメカニズムを用いて実装され得る。適切なメカニズムの複数の例は、複数のルックアップテーブル、複数のハードウェア実装、複数のプログラマブルロジックアレイ(PLA)、複数のマイクロコードリードオンリメモリ(ROM)などを含むが、これらに限定されない。一実施形態において、コア990は、マイクロコードROM、又は、(例えば、デコードユニット940において、又はそうでなければ、フロントエンドユニット930内において)複数の特定のマクロ命令のためのマイクロコードを格納する他の媒体を含む。デコードユニット940は、実行エンジンユニット950におけるリネーミング/アロケータユニット952と結合される。
実行エンジンユニット950は、リタイアメントユニット954と結合されるリネーミング/アロケータユニット952、及び、1つ又は複数のスケジューラユニット956のセットを含む。スケジューラユニット956は、複数のリザベーションステーション、中央命令ウィンドウなどを含み、任意の数の異なるスケジューラを表す。スケジューラユニット956は、物理レジスタファイルユニット958と結合する。物理レジスタファイルユニット958のそれぞれは、1つ又は複数の物理レジスタファイルを表し、それらのうちの複数の異なるものは、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行される次の命令のアドレスである命令ポインタ)などの1つ又は複数の異なるデータタイプを格納する。一実施形態において、物理レジスタファイルユニット958は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、及びスカラレジスタユニットを含む。これらのレジスタユニットは、複数のアーキテクチャベクトルレジスタ、複数のベクトルマスクレジスタ、及び複数の汎用レジスタを提供し得る。物理レジスタファイルユニット958は、(例えば、リオーダバッファ及びリタイアメント・レジスタ・ファイルを用いて、フューチャファイル、履歴バッファ、及びリタイアメント・レジスタ・ファイルを用いて、レジスタマッピング及びレジスタのプールを用いて、等など)レジスタリネーミング及びアウトオブオーダ実行が実装され得る様々な態様を図示すべく、リタイアメントユニット954により重複される。リタイアメントユニット954及び物理レジスタファイルユニット958は、実行クラスタ960と結合される。実行クラスタ960は、1つ又は複数の実行ユニット962のセット及び1つ又は複数のメモリアクセスユニット964のセットを含む。複数の実行ユニット962は、様々なタイプのデータ(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して、様々なオペレーション(例えば、複数のシフト、加算、減算、乗算)を実行し得る。いくつかの実施形態は、複数の特定の関数又は関数の複数のセットに専用の多数の実行ユニットを含み得る一方、複数の他の実施形態は、1つのみの実行ユニット又はすべての関数をすべてが実行する複数の実行ユニットを含み得る。スケジューラユニット956、物理レジスタファイルユニット958、及び実行クラスタ960は、複数である場合もあるものとして示されるが、その理由は、複数の特定の実施形態は、特定の複数のタイプのデータ/オペレーションに対して、複数の別個のパイプラインを生成するからである(例えば、それぞれがそれら独自のスケジューラユニット、物理的レジスタファイルユニット及び/又は実行クラスタを有する、スカラ整数パイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリアクセスパイプラインであり、別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット964を有する複数の特定の実施形態が実装される)。複数の別個のパイプラインが使用される場合、これらのパイプラインのうちの1つ又は複数は、アウトオブオーダ発行/実行であり、残りはインオーダであり得ることもまた理解されるべきである。
メモリアクセスユニット964のセットは、メモリユニット970と結合され、メモリユニット970は、データキャッシュユニット974と結合するデータTLBユニット972を含み、データキャッシュユニット974は、レベル2(L2)キャッシュユニット976と結合される。1つの例示的実施形態において、メモリアクセスユニット964は、ロードユニット、格納アドレスユニット、及び格納データユニットを含んでよく、それらのそれぞれは、メモリユニット970におけるデータTLBユニット972と結合される。命令キャッシュユニット934は、メモリユニット970におけるレベル2(L2)キャッシュユニット976とさらに結合される。L2キャッシュユニット976は、1つ又は複数の他のレベルのキャッシュと結合されて最終的にはメインメモリと結合される。
例として、例示的なレジスタリネーミング、アウトオブオーダ発行/実行コアアーキテクチャは、以下のようにパイプライン900を実行し得る。1)命令フェッチ938が、フェッチ及び長さデコーディングステージ902及び904を実行する、2)デコードユニット940が、デコードステージ906を実行する、3)リネーミング/アロケータユニット952が、割り当てステージ908及びリネーミングステージ910を実行する、4)スケジューラユニット956が、スケジューリングステージ912を実行する、5)物理レジスタファイルユニット958及びメモリユニット970が、レジスタ読み取り/メモリ読み取りステージ914を実行し、実行クラスタ960が、実行ステージ916を実行する、6)メモリユニット970及び物理レジスタファイルユニット958が、ライトバック/メモリ書き込みステージ918を実行する、7)複数の様々なユニットが、例外処理ステージ922に関わり得る、及び8)リタイアメントユニット954及び物理レジスタファイルユニット958が、コミットステージ924を実行する。
コア990は、本明細書で説明されている命令を含む1つ又は複数の命令セット(例えば、(複数のより新しいバージョンで追加されたいくつかの拡張を有する)x86命令セット、カリフォルニア州サニーベールのMIPSテクノロジーズのMIPS命令セット、カリフォルニア州サニーベールのARMホールディングスの(NEONのような任意選択的に追加の拡張を有する)ARM命令セット)をサポートし得る。一実施形態において、コア990は、パックドデータ命令セット拡張(例えば、AVX1、AVX2)をサポートするロジックを含み、それにより、多くのマルチメディアアプリケーションにより用いられる複数のオペレーションがパックドデータを用いて実行されることを可能にする。
コアは、マルチスレッディング(複数のオペレーション又は複数のスレッドの2つ又はそれより多くの並列セットを実行すること)をサポートしてもよく、時分割マルチスレッディング、同時マルチスレッディング(単一の物理的コアが複数のスレッドのそれぞれに対して論理的コアを提供することにより、物理的コアが同時マルチスレッディングを実行すること)又はそれらの組み合わせ(例えば、時分割フェッチ及びデコーディング、その後、インテル(登録商標)ハイパースレッディング技術などでの同時マルチスレッディング)を含む様々な態様で、マルチスレッディングをサポートしてもよいことが理解されるべきである。
アウトオブオーダ実行との関連で、レジスタリネーミングを説明している一方、レジスタリネーミングは、インオーダアーキテクチャで用いられ得ることが理解されるべきである。図示されたプロセッサの実施形態はまた、別個の命令及びデータキャッシュユニット934/974及び共有L2キャッシュユニット976を含む一方、複数の代替の実施形態は、命令及びデータの両方のための、例えば、レベル1(L1)内部キャッシュのような単一の内部キャッシュ、又は複数のレベルの内部キャッシュを有してもよい。いくつかの実施形態において、システムは、内部キャッシュとコア及び/又はプロセッサの外部にある外部キャッシュとの組み合わせを含み得る。代替的に、キャッシュのすべては、コア及び/又はプロセッサの外部にあってよい。[具体的かつ例示的なインオーダ・コア・アーキテクチャ]
図10A−Bは、コアがチップにおけるいくつかのロジックブロック(同一のタイプ及び/又は異タイプの他のコアを含む)のうちの1つであろう、より具体的かつ例示的なインオーダ・コア・アーキテクチャのブロック図を図示する。複数のロジックブロックは、アプリケーションに応じて、高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を介して、何らかの固定関数ロジック、複数のメモリI/Oインターフェイス、及び他の必要なI/Oロジックと通信する。
図10Aは、本開示の複数の実施形態に係る、単一プロセッサコアと、そのオンダイ相互接続ネットワーク1002への接続と共に、そのレベル2(L2)キャッシュのローカルサブセット1004とを示すブロック図である。一実施形態において、命令デコードユニット1000は、パックドデータ命令セット拡張を含むx86命令セットをサポートする。L1キャッシュ1006は、スカラ及びベクトルユニットに入るキャッシュメモリへの低レイテンシアクセスを可能にする。(設計を単純化にすべく)一実施形態におにおいて、スカラユニット1008及びベクトルユニット1010は、複数の別個レジスタセット(それぞれ、複数のスカラレジスタ1012及び複数のベクトルレジスタ1014)を用いており、それらの間で転送されたデータがメモリへ書き込まれて次にレベル1(L1)キャッシュ1006から再度読み取られる一方、本開示の複数の代替の実施形態は、(例えば、単一レジスタセットを用いる、又はデータが書き込まれて再度読み取られることなしで2つのレジスタファイルの間で転送されることを可能にする通信パスを含むなど)異なるアプローチを用いてよい。
L2キャッシュのローカルサブセット1004は、1つのプロセッサコアあたり1つの別個のローカルサブセットに分割されるグローバルL2キャッシュの一部である。各プロセッサコアは、L2キャッシュのその独自のローカルサブセット1004への直接的アクセスパスを有する。プロセッサコアにより読み取られたデータは、そのL2キャッシュサブセット1004に格納されており、それらの独自のローカルなL2キャッシュサブセットへアクセスする複数の他のプロセッサコアと並列して迅速にアクセスされ得る。プロセッサコアにより書き込まれたデータは、その独自のL2キャッシュサブセット1004に格納され、必要に応じて、複数の他のサブセットからフラッシュされる。リングネットワークは、共有データのコヒーレンシを保証する。リングネットワークは、双方向であり、複数のプロセッサコア、複数のL2キャッシュ、及び他の複数のロジックブロックなどの複数のエージェントがチップ内で互いに通信することを可能にする。各リングデータパスは、1つの方向につき、1012ビット幅である。
図10Bは、本開示の複数の実施形態に係る、図10Aにおけるプロセッサコアの一部の拡大図である。図10Bは、L1キャッシュ1004の一部であるL1データキャッシュ1006A、並びにベクトルユニット1010及びベクトルレジスタ1014に関する更なる詳細を含む。具体的には、ベクトルユニット1010は、整数、単精度浮動小数、及び倍精度浮動小数命令のうちの1つ又は複数を実行する、16幅ベクトル処理ユニット(VPU)(16幅ALU 1028参照)である。VPUは、スウィズルユニット1020によるレジスタ入力のスウィズル、数値変換ユニット1022A−Bによる数値変換、及び複製ユニット1024によるメモリ入力に対する複製をサポートする。複数の書き込みマスクレジスタ1026は、結果として得られるベクトル書き込みを叙述することを可能にする。
図11は、本開示の複数の実施形態に係る、1つより多くのコアを有してよく、統合メモリコントローラを有してよく、統合グラフィクスを有してよいプロセッサ1100のブロック図である。図11における複数の実線のボックスは、単一コア1102A、システムエージェント1110、1つ又は複数のバスコントローラユニット1116のセットを有するプロセッサ1100を図示する一方、任意的に追加の複数の破線のボックスは、複数のコア1102A−N、システム・エージェント・ユニット1110における1つ又は複数の複数の統合メモリコントローラユニット1114のセット、及び特定用途向けロジック1108を有する代替的なプロセッサ1100を図示する。
従って、プロセッサ1100の異なる複数の実装は、1)(1つ又は複数のコアを含み得る)統合グラフィクス及び/又は科学的(スループット)ロジックである特定用途向けロジック1108、及び1つ又は複数の汎用コア(例えば、複数の汎用インオーダコア、複数の汎用アウトオブオーダコア、その2つの組み合わせ)である複数のコア1102A−Nを有するCPU、2)主にグラフィクス及び/又は科学(スループット)向けの多数の特定用途向けコアである複数のコア1102A−Nを有するコプロセッサ、及び3)多数の汎用インオーダコアである複数のコア1102A−Nを有するコプロセッサを含み得る。従って、プロセッサ1100は、汎用プロセッサ、コプロセッサ、又は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU(汎用画像処理ユニット)、ハイスループット多集積コア(MIC)コプロセッサ(30又はそれより多くのコアを含む)、エンベデッドプロセッサ、又は同様のものなどのような特定用途向けプロセッサであり得る。プロセッサは、1つ又は複数のチップ上で実装され得る。プロセッサ1100は、例えば、BiCMOS,CMOS,又はNMOSなどの多数の処理技術のうちのいずれかを用いて、1つ又は複数の基板の一部であってよく、及び/又は1つ又は複数の基板上で実装されてよい。
メモリ階層は、複数のコア、1つ又は複数の共有キャッシュユニット1106又はそのセット、及び複数の統合メモリコントローラユニット1114のセットと結合される外部メモリ(図示せず)内に、1つ又は複数のレベルのキャッシュを含む。複数の共有キャッシュユニット1106のセットは、レベル2(L2)、レベル3(L3)、レベル4(L4)、又は複数の他のレベルのキャッシュなどの1つ又は複数の中間レベルキャッシュ、ラストレベルキャッシュ(LLC)、及び/又はそれらの複数の組み合わせを含み得る。一実施形態において、リングベースの相互接続ユニット1112は、統合グラフィクスロジック1108、複数の共有キャッシュユニット1106のセット、及びシステム・エージェント・ユニット1110/統合メモリコントローラユニット1114を相互接続する一方、代替の実施形態では、そのようなユニットを相互接続するための任意の数の周知技術を用いてよい。一実施形態において、コヒーレンシは、1つ又は複数のキャッシュユニット1104A−N及び複数のコア1102−A−Nの間で維持される。
いくつかの実施形態において、1つ又は複数のコア1102A−Nは、マルチスレッディング可能である。システムエージェント1110は、複数のコア1102A−Nを整合する及び操作するこれらのコンポーネントを含む。システム・エージェント・ユニット1110は、例えば、電力制御ユニット(PCU)及びディスプレイユニットを含み得る。PCUは、複数のコア1102A−N及び統合グラフィクスロジック1108の電力状態を調節するために必要とされるロジック及び複数のコンポーネントであってよく、又はそれらを含んでよい。ディスプレイユニットは、1つ又は複数の外部接続ディスプレイを駆動するためのものである。
複数のコア1102A−Nは、アーキテクチャ命令セットに関して同種又は異種であってもよく、すなわち、複数のコア1102A−Nのうちの2つ又はそれより多くは、同じ命令セットを実行可能であってよい一方、他は、その命令セット又は異なる命令セットのサブセットのみを実行可能であってよい。[例示的なコンピュータアーキテクチャ]
図12−15は、例示的なコンピュータアーキテクチャのブロック図である。複数のラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ(DSP)、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスのための当技術分野で既知の他の複数のシステム設計及び構成も、適切である。概して、本明細書において開示されるように、プロセッサ及び/又は他の実行ロジックを組み込むことが可能な多種多様なシステム又は電子デバイスが、概して適切である。
ここで、図12を参照すると、本開示の一実施形態に係るシステム1200のブロック図が示されている。システム1200は、1つ又は複数のプロセッサ1210、1215を含んでよく、1つ又は複数のプロセッサ1210、1215は、コントローラハブ1220と結合される。一実施形態において、コントローラハブ1220は、グラフィクスメモリコントローラハブ(GMCH)1290及び入力/出力ハブ(IOH)1250(別個のチップ上であり得る)を含み、GMCH1290は、メモリ1240及びコプロセッサ1245と結合されるメモリコントローラ及びグラフィクスコントローラを含み、IOH1250は、複数の入力/出力(I/O)デバイス1260をGMCH1290と結合させる。代替的に、メモリコントローラ及びグラフィクスコントローラの一方又は双方は、(本明細書で説明されているような)プロセッサ内に統合され、メモリ1240及びコプロセッサ1245は、直接にプロセッサ1210と結合され、IOH1250を有する単一チップ内のコントローラハブ1220と結合される。メモリ1240は、例えば、実行されると、プロセッサに本開示の何れかの方法を実行させるコードを格納する、(例えば、メモリ及び/又は電力)トランザクションモジュール1240Aを含み得る。
複数の追加のプロセッサ1215の任意選択的な性質が、図12において破線で示されている。各プロセッサ1210、1215は、本明細書で説明されている1つ又は複数の処理コアを含んでよく、プロセッサ1100の何らかのバージョンであってよい。
メモリ1240は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、又はその2つの組み合わせであり得る。少なくとも1つの実施形態では、コントローラハブ1220は、フロントサイドバス(FSB)のようなマルチドロップバス、クイックパスインタコネクト(QPI)のようなポイントツーポイントインターフェイス、又は同様の接続部1295を介して、プロセッサ1210、1215と通信する。
一実施形態において、コプロセッサ1245は、例えば、ハイスループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、エンベデッドプロセッサ、又は同様のものなどの特定用途向けプロセッサである。一実施形態において、コントローラハブ1220は、統合グラフィクスアクセラレータを含み得る。
物理的リソース1210、1215の間には、アーキテクチャ上の、マイクロアーキテクチャ上の、熱の、複数の電力消費特性などを含む利益の基準の範囲に関して、様々な複数の違いが存在し得る。
一実施形態において、プロセッサ1210は、一般的なタイプの複数のデータ処理オペレーションを制御する複数の命令を実行する。複数のコプロセッサ命令が、複数の命令内に組み込まれ得る。プロセッサ1210は、これらのコプロセッサ命令を、取り付けられたコプロセッサ1245によって実行されるべきタイプのものであると認識する。従って、プロセッサ1210は、コプロセッサバス又は他の相互接続上において、これらの複数のコプロセッサ命令(又は複数のコプロセッサ命令を表す複数の制御信号)を、コプロセッサ1245に発行する。コプロセッサ1245は、受信された複数のコプロセッサ命令を受け取り、これを実行する。
ここで、図13を参照すると、本開示の実施形態に係る、より具体的かつ例示的な第1のシステム1300のブロック図が示されている。図13に示されているように、マルチプロセッサシステム1300は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1350を介して結合された、第1のプロセッサ1370及び第2のプロセッサ1380を含む。プロセッサ1370及び1380のそれぞれは、プロセッサ1100の何らかのバージョンであり得る。本開示の一実施形態において、コプロセッサ1338はコプロセッサ1245である一方、プロセッサ1370及び1380はそれぞれ、プロセッサ1210及び1215である。別の実施形態において、プロセッサ1370及び1380はそれぞれ、プロセッサ1210及びコプロセッサ1245である。
プロセッサ1370及び1380はそれぞれ、統合メモリコントローラ(IMC)ユニット1372及び1382を含むものとして示されている。プロセッサ1370はまた、そのバスコントローラユニットの一部としてポイントツーポイント(P−P)インターフェイス1376及び1378を含み、同様に、第2のプロセッサ1380は、P−Pインターフェイス1386及び1388を含む。プロセッサ1370、1380は、ポイントツーポイント(P−P)インターフェイス1350を介して、P−Pインターフェイス回路1378、1388を用いて情報を交換し得る。図13に示されているように、IMC1372及び1382は、複数のプロセッサを、対応するメモリ、すなわち、メモリ1332及びメモリ1334と結合させ、メモリ1332及びメモリ1334は、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であり得る。
プロセッサ1370、1380はそれぞれ、個々のP−Pインターフェイス1352、1354を介して、ポイントツーポイントインターフェイス回路1376、1394、1386、1398を用いてチップセット1390と情報を交換し得る。チップセット1390は、高性能のインターフェイス1339を介して、コプロセッサ1338と任意選択的に情報を交換し得る。一実施形態において、コプロセッサ1338は、例えば、ハイスループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、エンベデッドプロセッサ、又は同様のものなどの特定用途向けプロセッサであり得る。
共有キャッシュ(図示せず)は、いずれかのプロセッサ内に、あるいは、P−P相互接続を介して複数のプロセッサとさらに接続されて両方のプロセッサの外部に含まれてよく、これにより、プロセッサが低電力モード内に配置された場合、いずれかのプロセッサ又は両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得る。
チップセット1390は、インターフェイス1396を介して、第1のバス1316と結合され得る。一実施形態において、本開示の範囲はこれに限定されないが、第1のバス1316は、周辺構成要素相互接続(PCI)バス、若しくはPCIエクスプレスバス又は別の第3世代I/O相互接続バスなどのバスであり得る。
図13に示されているように、様々なI/Oデバイス1314は、第1のバス1316を第2のバス1320と結合させるバスブリッジ1318と共に、第1のバス1316と結合され得る。一実施形態において、複数のコプロセッサ、複数のハイスループットMICプロセッサ、GPGPUの複数のアクセラレータ(例えば、複数のグラフィクスアクセラレータ又は複数のデジタル信号処理(DSP)ユニットなど)、複数のフィールドプログラマブルゲートアレイ、又は複数の任意の他のプロセッサなどの、1つ又は複数の追加のプロセッサ1315は、第1のバス1316と結合される。一実施形態において、第2のバス1320は、ローピンカウント(LPC)バスであってよい。様々なデバイスは、一実施形態において、例えば、キーボード及び/又はマウス1322、通信デバイス1327、及び複数の命令/コード及びデータ1330を含み得るディスクドライブ又は他の大容量ストレージデバイスなどのストレージユニット1328を含む第2のバス1320と結合され得る。さらに、オーディオI/O1324は、第2のバス1320と結合され得る。複数の他のアーキテクチャが可能であることは留意されたい。例えば、図13のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実装し得る。
ここで、図14を参照すると、本開示の実施形態に係る、より具体的かつ例示的な第2のシステム1400のブロック図が示される。図13及び14における同様の複数の要素は、同様の参照番号を有し、図13の複数の特定の態様は、図14の他の態様を不明瞭にすることを回避するために、図14から省略されている。
図14は、プロセッサ1370、1380はそれぞれ、統合メモリ及びI/O制御ロジック(「CL」)1372及び1382を含み得ることを図示する。従って、CL1372、1382は、統合メモリコントローラユニットを含み、I/O制御ロジックを含む。図14は、CL1372、1382と結合されたのがメモリ1332、1334のみでなく、I/Oデバイス1414も制御ロジック1372、1382と結合されていることも図示する。レガシI/Oデバイス1415は、チップセット1390と結合される。
ここで、図15を参照すると、本開示の実施形態に係るSoC1500のブロック図が示されている。図11における同様の複数の要素は、同様の参照番号を有する。また、複数の破線のボックスは、複数のより高度なSoCにおける複数の任意選択的な機能である。図15において、相互接続ユニット1502は、1つ又は複数のコア1102A−N及び共有キャッシュユニット1106のセットを含むアプリケーションプロセッサ1510と、システム・エージェント・ユニット1110と、バスコントローラユニット1116と、統合メモリコントローラユニット1114と、統合グラフィクスロジック、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサを含み得る1つ又は複数のコプロセッサ1520若しくはセットと、スタティックランダムアクセスメモリ(SRAM)ユニット1530と、ダイレクトメモリアクセス(DMA)ユニット1532と、1つ又は複数の外部ディスプレイと結合するためのディスプレイユニット1540と結合される。一実施形態において、コプロセッサ1520は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、GPGPU、ハイスループットMICプロセッサ、エンベデッドプロセッサ、又は同様のものなどの特定用途向けプロセッサを含む。
本明細書で開示されている(例えば、複数のメカニズムの)複数の実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はそのような複数の実装アプローチの組み合わせに実装され得る。本開示の複数の実施形態は、少なくとも1つのプロセッサ、(揮発性及び不揮発性メモリ及び/又はストレージ要素を含む)ストレージシステム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを備える複数のプログラマブルシステム上で実行されるコンピュータプログラム又はプログラムコードとして実装され得る。
図13に図示されているコード1330のようなプログラムコードは、本明細書で説明されている複数の機能を実行して出力情報を生成すべく、複数の入力命令に適用され得る。出力情報は、既知の様式において、1つ又は複数の出力デバイスに適用され得る。この用途の目的のために、処理システムは、例えば、デジタル信号プロセッサ(DSP)のようなプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、又はマイクロプロセッサを有する任意のシステムを含む。
プログラムコードは、処理システムと通信を行うために、高水準の手順型又はオブジェクト指向プログラミング言語で実装されてもよい。また、プログラムコードは、所望される場合、アセンブリ言語又は機械言語で実装されてもよい。実際に、本明細書で説明される複数のメカニズムは、任意の特定のプログラミング言語の範囲に限定されない。いずれの場合であっても、言語はコンパイラ型又はインタープリタ型言語であってもよい。
少なくとも1つの実施形態の1つ又は複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な複数の命令によって実行されてもよく、これらは、機械によって読み取られた場合に、機械にロジックを組み立てさせることにより、本明細書で説明される複数の技術を実装する。「複数のIPコア」として既知のような複数の表現は、有形の機械可読媒体上に格納され、様々な顧客、又は実際にロジック又はプロセッサを作成する複数の製造機械にロードする複数の製造設備に供給され得る。
そのような機械可読記憶媒体は、ハードディスク、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD−ROM)、書き換え可能コンパクトディスク(CD−RW)、及び光磁気ディスクなどの任意の他のタイプのディスクを含むストレージ媒体、リードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、及び相変化メモリ(PCM)などの半導体デバイス、磁気もしくは光カード、又は複数の電子的命令を格納するのに適切な任意の他のタイプの媒体を含む、機械又はデバイスにより製造又は形成される、非一時的で有形の複数の構成の物品を含み得るが、これらに限定されない。
従って、本開示の複数の実施形態は、本明細書で説明されている複数の構造、複数の回路、複数の装置、複数のプロセッサ、及び/又はシステムの特徴を定義する、ハードウェア記述言語(HDL)等の複数の命令を保持する又は設計データを保持する、非一時的で有形の機械可読媒体も含む。そのような複数の実施形態はまた、プログラム製品と称され得る。[(バイナリ変換、コードモーフィングなどを含む)エミュレーション]
いくつかの場合において、命令コンバータは、ソース命令セットからターゲット命令セットに命令を変換するために、用いられてもよい。例えば、命令コンバータは、命令を、コアにより処理されることになる1つ又は複数の他の命令にトランスレート(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて)、モーフィング、エミュレート、又は別の変換をし得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組み合わせにおいて実装され得る。命令コンバータは、プロセッサ上にあってもよく、プロセッサ外にあってもよく、又は一部がプロセッサ上で一部がプロセッサ外にあってもよい。
図16は、本開示の複数の実施形態に係る、ソース命令セットのバイナリ命令を変換するソフトウェア命令コンバータの使用と、ターゲット命令セットのバイナリ命令とを対比するブロック図を図示する。図示された実施形態において、命令コンバータは、ソフトウェア命令コンバータであるが、代替的に、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの様々な組み合わせで実装され得る。図16は、少なくとも1つのx86命令セットコアを備えるプロセッサ1616によってネイティブに実行され得るx86バイナリコード1606を生成するために、高水準言語1602のプログラムが、x86コンパイラ1604を用いてコンパイルされてもよいことを示している。少なくとも1つのx86命令セットコアを備えるプロセッサ1616は、少なくとも1つのx86命令セットコアを備えるインテル(登録商標)社製プロセッサと実質的に同じ結果を達成するために、(1)インテル(登録商標)x86命令セットコアの命令セットの大部分、あるいは(2)少なくとも1つのx86命令セットコアを備えるインテル(登録商標)社製プロセッサ上で動作することをターゲットとしたアプリケーション又は他のソフトウェアのオブジェクトコードバージョンを互換的に実行するか、又は別の方法で処理することによって、少なくとも1つのx86命令セットコアを備えるインテル(登録商標)社製プロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表す。x86コンパイラ1604は、さらなる連係処理を用いて、又は用いずに、少なくとも1つのx86命令セットコアを備えるプロセッサ1616上で実行することができるx86バイナリコード1606(例えば、オブジェクトコード)を生成するよう動作可能なコンパイラを表す。同様に、図16は、高水準言語1602におけるプログラムが、代替の命令セットコンパイラ1608を用いてコンパイルされて、少なくとも1つのx86命令セットコア1614を用いないでプロセッサ(例えば、カリフォルニア州サニーベールのMIPSテクノロジーズのMIPS命令セットを実行する、及び/又はカリフォルニア州サニーベールのARMホールディングスのARM命令セットを実行する複数のコアを有するプロセッサ)によりネイティブに実行されてよい代替の命令セットバイナリコード1610を生成してよいことを示す。命令コンバータ1612は、x86バイナリコード1606を、x86命令セットコアを備えないプロセッサ1614によってネイティブに実行され得るコードに変換するために用いられる。この変換されたコードは、代替の命令セットバイナリコード1610と同じ可能性は低い。なぜなら、これが可能な命令コンバータは、製作が困難だからである。しかしながら、変換されたコードは、一般的なオペレーションを実現し、代替の命令セットからの命令で構成される。従って、命令コンバータ1612は、エミュレーション、シミュレーション又は任意の他の処理を通じて、x86命令セットプロセッサ又はコアを有しないプロセッサ又は他の電子デバイスがx86バイナリコード1606を実行することを可能にする、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせを表す。