(57)【要約】  プロセッサは、拡張レジスタセットの複数のバンクを用いて、複数のユーザレベルスレッドの複数のコンテキストを格納する。現在のバンクレジスタは、現在アクティブであるバンクを指し示すポインタを提供する。第１スレッドは自身のコンテキスト（第１コンテキスト）を、拡張レジスタセットの第１バンクに保存し、第２スレッドは自身のコンテキスト（第２コンテキスト）を、拡張レジスタセットの第２バンクに保存する。プロセッサが、第１スレッドと第２スレッドとの間で複数のコンテキストを交換するための命令を受信した場合、プロセッサは、第１バンクから第２バンクへポインタを変更させ、第２バンクに格納されている第２コンテキストを用いて第２スレッドを実行する。
2015534188.tif 000002
【特許請求の範囲】
【請求項１】
装置であり、
前記装置は、
複数のバンクに区分けされた拡張レジスタセットと、
前記複数のバンクのうち現在アクティブであるバンクを指し示すポインタを提供する現在のバンクレジスタと、
前記拡張レジスタセットおよび前記現在のバンクレジスタに結合されている実行回路と
を備え、
前記実行回路は、第１スレッドと第２スレッドとを含む２つのユーザレベルスレッドの複数のコンテキストを交換するための命令を受信し、
前記第１スレッドは、前記複数のバンクのうち第１バンクに保存された第１コンテキストを有し、
前記第２スレッドは、前記複数のバンクのうち第２バンクに保存された第２コンテキストを有し、
前記実行回路は、
前記命令に応答して前記第１バンクから前記第２バンクへ前記ポインタを変更し、
前記第２バンクに格納された前記第２コンテキストを用いて前記第２スレッドを実行する、
装置。
【請求項２】
前記複数のコンテキストのコピーは、前記拡張レジスタセットの前記複数のバンクに対応する複数のメモリ領域に格納される、請求項１に記載の装置。
【請求項３】
前記複数のメモリ領域へのアクセスをトラッキングするスヌープ回路であり、前記アクセスが検出された場合に、前記複数のメモリ領域の一のエリアと前記拡張レジスタセットの対応するバンクとの間で前記複数のコンテキストを同期させるためのイベントをトリガする前記スヌープ回路をさらに備える、請求項２に記載の装置。
【請求項４】
複数のパーティションに分割された複数のベクトルレジスタをさらに備え、
前記複数のコンテキストのコピーは、前記拡張レジスタセットの前記複数のバンクに対応する前記複数のパーティションに格納される、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記複数のベクトルレジスタのそれぞれは、所与のコンテキストの最新のコピーが前記複数のベクトルレジスタまたは前記拡張レジスタセットに格納されているかを示す、自身に関連付けられた１または複数の状態ビットを有する、請求項４に記載の装置。
【請求項６】
所与のユーザレベルスレッドにより参照されるレジスタを前記拡張レジスタセットの対応するバンクにマッピングする前記実行回路に結合されたデコーダ回路をさらに備える、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記実行回路は、前記命令に応答して、無条件に前記第２コンテキストに切り替える、請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記第２コンテキストに切り替えるための条件が満たされたかを決定する、前記実行回路に結合されたフロントエンド回路をさらに備える、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記命令は、複数の命令を含む命令ブロックの境界をマーク付けする命令ペアのうち一方であり、
前記命令ブロック内の各命令は、コンテキスト切り替えの候補である、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記実行回路に結合されたマスクレジスタをさらに備え、
前記マスクレジスタは複数のマスクビットを有し、
各マスクビットは、前記複数のバンクのうち１つに関連付けられ、前記複数のバンクのうち前記１つがコンテキスト切り替えを非アクティブ化されたかを示す、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
プロセッサにより、拡張レジスタセットの複数のバンクのうち、第１バンクに格納される第１コンテキストを用いて、ユーザレベルスレッドである第１スレッドを実行する段階と、
前記プロセッサにより、前記第１スレッド、および、前記拡張レジスタセットの前記複数のバンクのうち第２バンクに保存された第２コンテキストを有する他のユーザレベルスレッドである第２スレッドの複数のコンテキストを交換するための命令を受信する段階と、
前記命令に応答して、現在アクティブなバンクとして前記第１バンクを指し示すレジスタポインタを、前記第２バンクへ変更する段階と、
前記プロセッサにより、前記第２バンクに格納された前記第２コンテキストを用いて、前記第２スレッドを実行する段階と
を備える、方法。
【請求項１２】
前記複数のコンテキストのコピーは、前記拡張レジスタセットの前記複数のバンクに対応する複数のメモリ領域に格納される、請求項１１に記載の方法。
【請求項１３】
前記複数のメモリ領域へのアクセスをトラッキングする段階と、
前記アクセスが検出された場合に、前記複数のメモリ領域の一のエリアと、前記拡張レジスタセットの対応するバンクとの間で前記複数のコンテキストを同期させるためのイベントをトリガする段階と
をさらに備える、請求項１２に記載の方法。
【請求項１４】
前記複数のコンテキストのコピーは、前記拡張レジスタセットの前記複数のバンクに対応する複数のベクトルレジスタの複数のパーティションに格納される、請求項１１から１３のいずれか一項に記載の方法。
【請求項１５】
前記複数のベクトルレジスタのそれぞれは、所与のコンテキストの最新のコピーが前記複数のベクトルレジスタまたは前記拡張レジスタセットに格納されているかを示す、自身に関連付けられた１または複数の状態ビットを有する、請求項１４に記載の方法。
【請求項１６】
前記命令を実行する段階は、前記第２コンテキストへの切り替えを無条件に引き起こす、請求項１１から１５のいずれか一項に記載の方法。
【請求項１７】
前記命令の実行は、前記第２コンテキストに切り替えるための条件が満たされたかの決定を引き起こす、請求項１１から１６のいずれか一項に記載の方法。
【請求項１８】
前記命令は、複数の命令を含む命令ブロックの境界をマーク付けする命令ペアのうち一方であり、
前記命令ブロック内の各命令は、コンテキスト切り替えの候補である、請求項１１から１７のいずれか一項に記載の方法。
【請求項１９】
オペレーティングシステムの関与なしで前記命令を実行する段階をさらに備える、請求項１１から１８のいずれか一項に記載の方法。
【請求項２０】
システムであり、
前記システムは、
メモリと、
前記メモリに結合されたプロセッサと
を備え、
前記プロセッサは、
複数のバンクに区分けされた拡張レジスタセットと、
前記複数のバンクのうち現在アクティブであるバンクを指し示すポインタを提供する現在のバンクレジスタと、
前記拡張レジスタセットおよび前記現在のバンクレジスタに結合された実行回路と
を有し、
前記実行回路は、
第１スレッドと第２スレッドとを含む２つのユーザレベルスレッドの複数のコンテキストを交換するための命令を受信し、
前記第１スレッドは、前記複数のバンクのうち第１バンクに保存された第１コンテキストを有し、
前記第２スレッドは、前記複数のバンクのうち第２バンクに保存された第２コンテキストを有し、
前記実行回路は、
前記命令に応答して前記第１バンクから前記第２バンクへ前記ポインタを変更し、
前記第２バンクに格納された前記第２コンテキストを用いて前記第２スレッドを実行する、
システム。
【請求項２１】
前記複数のコンテキストのコピーは、前記拡張レジスタセットの前記複数のバンクに対応する前記メモリの複数のメモリ領域に格納される、請求項２０に記載のシステム。
【請求項２２】
複数のパーティションに分割された複数のベクトルレジスタをさらに備え、
前記複数のコンテキストのコピーは、前記拡張レジスタセットの前記複数のバンクに対応する前記複数のパーティションに格納される、請求項２０または２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プロセッサまたは他の処理ロジックにより実行された場合に、複数の論理、数学、または他の関数演算を実行する処理ロジック、複数のマイクロプロセッサ、および関連する命令セットアーキテクチャの分野に関する。
【背景技術】
【０００２】
命令セット、または命令セットアーキテクチャ（ＩＳＡ）は、プログラミングに関するコンピュータアーキテクチャの一部であり、複数のネイティブデータタイプ、複数の命令、複数のレジスタアーキテクチャ、複数のアドレッシングモード、メモリアーキテクチャ、割込みおよび例外処理、および外部入力および出力（Ｉ／Ｏ）を含み得る。本明細書において、命令という用語は概して、プロセッサのデコーダが複数のマクロ命令をデコードした結果である複数のマイクロ命令または複数のマイクロオペレーション（マイクロオプ）とは対照的に、実行のためにプロセッサ（または、命令を、プロセッサにより処理されることになる１または複数の他の命令にトランスレート（例えば、スタティックバイナリトランスレーション、ダイナミックコンパイルを含むダイナミックバイナリトランスレーションを用いて）、モーフィング、エミュレート、または変換する命令コンバータ）へ提供される複数の命令である複数のマクロ命令を指す。
【０００３】
ＩＳＡは、命令セットを実装するプロセッサの内部設計であるマイクロアーキテクチャとは区別される。複数の異なるマイクロアーキテクチャを有する複数のプロセッサは、共通の命令セットを共有し得る。例えばＩｎｔｅｌ（登録商標）Ｃｏｒｅ（商標）プロセッサおよびカリフォルニア州サニーベールのＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ．が製造する複数のプロセッサは、ｘ８６命令セットのほぼ同一である複数のバージョン（より新しいバージョンにおいてはいくつかの拡張が追加された）を実装するが、複数の異なる内部設計を有する。例えば、ＩＳＡの同じレジスタアーキテクチャは、複数の専用の物理レジスタ、レジスタリネーミングメカニズムを用いる１または複数の動的に割り当てられた物理レジスタ、その他を含む複数の周知の技術を用いて複数の異なるやり方で複数の異なるマイクロアーキテクチャにおいて実装され得る。
【０００４】
現代の複数のプロセッサコアは概して、それらの性能の効率性を向上させるべくマルチスレッディングをサポートしている。例えば、複数のＩｎｔｅｌ（登録商標）Ｘｅｏｎ（商標））コアは現在、２ウェイ同時マルチスレッディング（ＳＭＴ）を提供している。１つのコア当たりのスレッドの数を増やすことにより、複数のキーサーバアプリケーションに対してより高い性能をもたらすことが出来る。しかし、ＳＭＴスレッドの数を増やす（２から４以上へ）のは、非常に複雑で、コストがかかり、誤りが起こりがちである。
【０００５】
代替的なマルチスレッディングアプローチは、アプリケーションソフトウェアにより管理されるユーザレベルスレッドを実装することである。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）システムは、ファイバと呼ばれるユーザレベルスレッドを管理するのに複数のソフトウェアメカニズムを用いる。ファイバまたは同様のアプローチを用いれば、アプリケーションは、第１のファイバが長いレイテンシーのイベント（例えば、Ｉ／Ｏ、ノンユーザイベント、セマフォ待機、その他）に出くわした場合に、第１のファイバから第２のファイバへ切り替えることが出来る。複数のファイバの管理および実行は、アプリケーションにより完全に処理され得、注意深く調整され得る。しかし、複数のファイバ（例えば、保存、復元、分岐処理）間での切り替えのペナルティのコストが高いので、並びに、短い、および長いレイテンシーのハードウェア機能停止イベントの両方にいつ切り替えるべきかを効率的にソフトウェアで決定するのには限界があるので、ファイバによるアプローチで得られる性能の向上は、かなり制限されている。
【図面の簡単な説明】
【０００６】
添付の複数の図面のうち複数の図面において、限定ではなく例として複数の実施形態が示されている。
【図１Ａ】一実施形態に係る、拡張レジスタセットを有する命令処理装置のブロック図である。
【図１Ｂ】一実施形態に係る、拡張レジスタセットを有するレジスタアーキテクチャのブロック図である。
【図２Ａ】一実施形態に係る、複数のハイバコンテキストを格納するための複数のメモリ領域の一例を図示する。
【図２Ｂ】一実施形態に係る、複数のハイバコンテキストを格納するための複数のバンクを含む拡張レジスタセットの一例を図示する。
【図２Ｃ】一実施形態に係る複数のハイバコンテキストを格納するための複数のバンクを含む拡張レジスタセットの他の例を図示する。
【図３】一実施形態に係る、複数のハイバコンテキストを格納するための複数のパーティションに分割された複数のベクトルレジスタの一例を図示する。
【図４Ａ】複数のキャッシュミスを引き起こす可能性が高い命令を含むプログラムの一例を図示する。
【図４Ｂ】複数のハイバを実行するための複数の状態交換命令を用いる一例を図示する。
【図５】一実施形態に従って実行される複数の処理を図示するフロー図である。
【図６】一実施形態に係る、ソース命令セットに含まれる複数のバイナリ命令をターゲット命令セット内の複数のバイナリ命令に変換するソフトウェア命令コンバータの利用を図示するブロック図である。
【図７Ａ】一実施形態に係る、インオーダおよびアウトオブオーダパイプラインのブロック図である。
【図７Ｂ】一実施形態に係る、インオーダおよびアウトオブオーダコアのブロック図である。
【図８Ａ】一実施形態に係る、より特定的かつ例示的なインオーダコアアーキテクチャのブロック図である。
【図８Ｂ】一実施形態に係る、より特定的かつ例示的なインオーダコアアーキテクチャのブロック図である。
【図９】一実施形態に係るプロセッサのブロック図である。
【図１０】一実施形態係るシステムのブロック図である。
【図１１】一実施形態に係る、第２のシステムのブロック図である。
【図１２】本願発明の実施形態に係る第３のシステムのブロック図である。
【図１３】一実施形態に係るシステムオンチップ（ＳｏＣ）のブロック図である。
【発明を実施するための形態】
【０００７】
以下の説明において、数多くの特定的な詳細が示される。しかし、本願発明の複数の実施形態は、これらの特定的な詳細なしで実施され得ることが理解される。複数の他の例において、本説明の理解を曖昧にすることがないよう、周知の複数の回路、複数の構造、および複数の技術が詳細に示されていない。
【０００８】
本明細書に説明される複数の実施形態は、プロセッサに、適切なマイクロアーキテクチャに関するサポートにより、複数のユーザレベルスレッド間での即時の（サイクルペナルティが殆どない）切り替えを実行させる状態交換命令セット（例えば、ＳＸＣＨＧ、ＳＸＣＨＧＬ、およびそれらの複数の変形例）を提供する。ＩＳＡに対する追加の変更は必要ない。これらのユーザレベルのスレッドは、以後「ハイバ」と呼ばれ、これらはハードウェアによりサポートされたファイバである。同命令セットによりソフトウェアは、複数のユーザモードの（リング−３）のレジスタのＮ個のバンクにレジスタコンテンツ（「レジスタ状態」とも呼ばれる）を保存および復元することにより即座にＮ個のハイバ間で切り替えることが可能となる。この切り替えは、オペレーティングシステムの関与なしで複数のアプリケーションにより制御され得る。複数のユーザモードのレジスタのこれらのＮ個のバンクは本明細書において、拡張レジスタセットと呼ばれる。Ｎという数は、マイクロアーキテクチャによりサポートされる、２、４、８、または何らかの数であり得る。
【０００９】
図１Ａは、複数の命令を実行するよう動作可能な実行ユニット１４０を有する命令処理装置１１５の実施形態のブロック図である。いくつかの実施形態において、命令処理装置１１５は、プロセッサ、マルチコアプロセッサのプロセッサコア、または電子システムにおける処理要素であり得る。
【００１０】
デコーダ１３０は、より上位の複数のマシン命令または複数のマクロ命令の形態の入ってくる複数の命令を受信し、それらをデコードして、元の複数のより上位の命令を反映し、および／またはそれらから導出されるより下位の複数のマイクロオペレーション、複数のマイクロコードエントリーポイント、複数のマイクロ命令、または他のより下位の複数の命令若しくは複数の制御信号を生成する。より下位の複数の命令または複数の制御信号は、複数のより下位の（例えば、回路レベル、またはハードウェアレベルの）処理を介して、より上位の命令の処理を実装し得る。デコーダ１３０は、様々な異なるメカニズムを用いて実装され得る。複数の適したメカニズムの複数の例には、マイクロコード、複数のルックアップテーブル、複数のハードウェア実装、複数のプログラマブルロジックアレイ（ＰＬＡ）、当技術分野で公知である複数のデコーダを実装するよう用いられる複数の他のメカニズム、その他が含まれるが、これらに限定されない。
【００１１】
実行ユニット１４０は、デコーダ１３０に結合されている。実行ユニット１４０は、１または複数のマイクロオペレーション、マイクロコードエントリーポイント、マイクロ命令、他の命令、または受信した複数の命令を反映する、若しくはそれらから導出される他の制御信号をデコーダ１３０から受信し得る。また実行ユニット１４０は、レジスタファイル１７０またはメモリ１２０から入力を受信し、それらへの出力を生成する。
【００１２】
説明を曖昧にすることを避けるべく、比較的シンプルな命令処理装置１１５が示され、説明されている。複数の他の実施形態が１より多くの実行ユニットを有し得ることは理解されよう。例えば、装置１１５は、例えば複数の演算ユニット、複数の演算ロジックユニット（ＡＬＵ）、整数ユニット、浮動小数点ユニット、その他など複数の異なるタイプの実行ユニットを含み得る。複数の命令処理装置または複数のプロセッサのさらに複数の他の実施形態は、複数のコア、複数の論理プロセッサ、または複数の実行エンジンを有し得る。命令処理装置１１５の複数の実施形態は後に、図７Ａ〜図１３に関連して提供される。
【００１３】
一実施形態によると、メモリ１２０は、複数のハイバの複数のコンテキストを格納する。格納されている複数のハイバコンテキストは、複数のハイバのレジスタ状態を含む。アプリケーションの特定の命令が複数のハイバのうち１つの機能停止を引き起こし得ることをコンピュータシステム（例えば、コンパイラコードまたは他の最適化コードを実行しているプロセッサ、予測回路または最適化回路、その他）またはプログラマが予測した場合、実行ユニット１４０に、１つのハイバから他のハイバへ実行を切り替えさせるべく命令がアプリケーションに挿入される。
【００１４】
処理性能を向上させるべく、ハイバ切り替えがあった場合には、ハイバコンテキストは必ずしもメモリ１２０に格納されず、メモリ１２０から復元されない。一実施形態において、命令処理装置１１５は、メモリアクセスの頻度を減らすべくハイバコンテキストを一時的に格納するための「書き戻しキャッシュ」として拡張レジスタセット１７５を用い得る。ハイバコンテキストへの拡張レジスタセット１７５からのアクセスは、メモリ１２０からのアクセスよりもかなり速い。したがって、複数のハイバ間のコンテキスト切り替えの速度は、大幅に高められ得る。
【００１５】
しかし、複数のハイバコンテキストをメモリ１２０に常には格納せず復元しないことにより、メモリ１２０は最新のハイバコンテキストを有しないかもしれない。何らかの複数のアプリケーションまたは複数のスレッド（命令処理装置１１５の複数のコアまたは複数のプロセッサで同時に実行されている）によりメモリ１２０の古い情報がアクセスされるのを避けるべく、命令処理装置１１５は、ハイバコンテキストが格納されている複数のメモリ領域へのアクセスをトラッキングすべくスヌープ回路１８０を用いる。これらのメモリ領域のうちいずれかのメモリ領域のコンテンツが現在のレジスタコンテンツと一貫していない（つまり、異なる）場合はいつでも、複数の対応するメモリアドレスがマーク付けされたエリアとしてスヌープ回路１８０にマーク付けされる。マーク付けされたエリアと拡張レジスタセット１７５との間で格納された複数のコンテキストを同期させるために、マーク付けされたエリアから読み取られる、またはマーク付けされたエリアに書き込まれる場合、書き戻しイベント（例えば、マイクロコードトラップ）がトリガされる。このマイクロコードトラップにより現在のレジスタ状態（つまり、更新されたハイバコンテキスト）は、マーク付けされたエリアに書き込まれるようになり（何らかのアプリケーションまたはスレッドがエリアから読み取ろうとしている場合）、または、マーク付けされたエリアから複数のレジスタがリロードされるようになる（他のアプリケーションまたはスレッドがエリアに書き込みを行った場合）。
【００１６】
一実施形態において、命令処理装置１１５は、Ｓｔａｔｅ  Ｅｘｃｈａｎｇｅ（ＳＸＣＨＧ）命令、およびその変形例などハイバ切り替え命令セットをサポートする。ハイバ切り替え命令セットは、ハイバ［Ｉ］のコンテキストがメモリ１２０に保存され、ハイバ［Ｊ］のコンテキストがメモリ１２０から復元されクリアされる基本的なＳＸＣＨＧ（Ｉ，Ｊ）を含む。ハイバ切り替え命令セットは、ＳＸＣＨＧ（オペランドなし）、ＳＸＣＨＧＬ（ＳＸＣＨＧの簡易版）、ＳＸＣＨＧ．ｕ（無条件のＳＸＣＨＧ）、ＳＸＣＨＧ．ｃ（条件付きのＳＸＣＨＧ）、および＜ＳＸＣＨＧ．ｓｔａｒｔ−ＳＸＣＨＧ．ｅｎｄ＞（ブロックＳＸＣＨＧ）、およびその他も含む。これらの命令は以下に詳細に説明される。
【００１７】
複数のハイバ切り替え命令について説明する前に、これらの命令をサポートする基礎となるレジスタアーキテクチャの実施形態を示すことは有用である。図１Ｂを参照して説明されるレジスタアーキテクチャは、ｘ８６、ＭＭＸ（商標）、Ｓｔｒｅａｍｉｎｇ  ＳＩＭＤ  Ｅｘｔｅｎｓｉｏｎｓ（ＳＳＥ）、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４．１、およびＳＳＥ４．２命令、並びに、Ａｄｖａｎｃｅｄ  Ｖｅｃｔｏｒ  Ｅｘｔｅｎｓｉｏｎｓ（ＡＶＸ）（ＡＶＸ１およびＡＶＸ２）と呼ばれる追加のＳＩＭＤ拡張セットを含む命令セットを実装する複数のＩｎｔｅｌ（登録商標）Ｃｏｒｅ（商標）プロセッサに基づく。しかし、異なる複数のレジスタ長さ、異なる複数のレジスタタイプ、および／または異なる数のレジスタをサポートする異なるレジスタアーキテクチャも用いられ得ることが理解される。
【００１８】
図１Ｂは、本願発明の一実施形態に係るレジスタアーキテクチャ１００のブロック図である。示される実施形態において、５１２ビット幅の３２個のベクトルレジスタ１１０があり、これらのレジスタはｚｍｍ０〜ｚｍｍ３１として参照される。より下位の１６個のｚｍｍレジスタの下側の２５６ビットは、レジスタｙｍｍ０〜１６に重ねられている。下側の１６個のｚｍｍレジスタのより下位の１２８ビット（ｙｍｍレジスタのより下位の１２８ビット）は、レジスタｘｍｍ０〜１５に重ねられている。示される実施形態において、それぞれ６４ビットのサイズを有する８個の書き込みマスクレジスタ１１２（ｋ０〜ｋ７）がある。代替的な実施形態において、書き込みマスクレジスタ１１２は１６ビットのサイズを有する。
【００１９】
示される実施形態において、拡張レジスタセット１７５は、本明細書において複数の拡張ＧＰレジスタ１２５と呼ばれる１６個の６４ビットの汎用（ＧＰ）レジスタからなる４個のバンクを含む。実施形態において、これらは複数のメモリオペランドをアドレッシングする既存の複数のｘ８６アドレッシングモードと共に用いられる。（各バンク内の）これらのレジスタは、ＲＡＸ、ＲＢＸ、ＲＣＸ、ＲＤＸ、ＲＢＰ、ＲＳＩ、ＲＤＩ、ＲＳＰ、および、Ｒ８〜Ｒ１５という名称で参照される。また実施形態は、拡張レジスタセット１７５が複数の拡張ＲＦＬＡＧＳレジスタ１２６、複数の拡張ＲＩＰレジスタ１２７、および複数の拡張ＭＸＣＳＲレジスタ１２８を含むことを示しており、これらの全ては４つのバンクを含む。
【００２０】
また実施形態は、ＭＭＸパックド整数フラットレジスタファイル１５０がエイリアシングされるスカラ浮動小数点（ＦＰ）スタックレジスタファイル（ｘ８７スタック）１４５を示している。示される実施形態において、ｘ８７スタックは、ｘ８７命令セット拡張を用いて３２／６４／８０ビットの浮動小数点データに対して複数のスカラ浮動小数点演算を実行するために用いられる８つの要素のスタックであり、ＭＭＸレジスタは、６４ビットのパックド整数データに対して演算を実行し、ＭＭＸレジスタとＸＭＭレジスタとの間で実行されるいくつかの演算のために複数のオペランドを保持するために用いられる。
【００２１】
一実施形態において、拡張レジスタセット１７５は加えて、ＦＰスタックレジスタファイル１４５の４つのバンク、および／または、ベクトルレジスタ１１０の４つのバンクを含み、それらのＦＰレジスタ状態および／またはベクトルレジスタ状態に対して最大４つまでのハイバの一時的な格納場所を提供し得る。
【００２２】
本願発明の代替的な実施形態は、幅のより広い、またはより狭い複数のレジスタ、および／またはより多くの、またはより少ないレジスタバンクを用い得る。加えて、本願発明の複数の代替的な実施形態は、より多くの、より少ない、または複数の異なるレジスタファイルおよびレジスタを用い得る。
【００２３】
図２Ａは、一実施形態に係る、複数の基本的なＳＸＣＨＧ（Ｉ，Ｊ）命令に応答してプロセッサ（例えば、命令処理装置１１５）により実行される処理を示す図である。本実施形態において、メモリ１２０は、４つの領域を含むよう構成され、ここで、異なる複数の領域は、異なる複数のハイバの複数のコンテキストを格納するよう指定されている。基本的なＳＸＣＨＧ（Ｉ，Ｊ）は、どのハイバコンテキストが保存されることになるのかを示すソース（Ｉ）、および、どのハイバコンテキストが復元されることになるのかを示すデスティネーション（Ｊ）の２つのオペランドを有する。この命令に応答して、プロセッサは、レジスタの現在のコンテンツをメモリ１２０に保存する。一実施形態において、これらのレジスタは、複数のＧＰレジスタ（例えば、ＲＡＸ、ＲＢＸ、...、Ｒ１５）、複数のベクトルレジスタ（例えば、ｚｍｍ０〜３１）、複数のフラグレジスタ（例えば、ＲＦＬＡＧＳ）、命令ポインタ（例えば、ＲＩＰ）、ＭＸＣＳＲ、およびこれらの何らかの組み合わせのうち１または複数を含む。これらのレジスタの現在のコンテンツは、メモリポインタレジスタ２１０（ＳＭＥＭ［Ｉ］により指し示される指定されたメモリ領域（領域［Ｉ］に保存される。現在のレジスタコンテンツを保存した後に、プロセッサは、上記の複数のレジスタを他のメモリ領域（メモリポインタレジスタＳＭＥＭ［Ｊ］により指し示される領域［Ｊ］）からロードし、このメモリ領域（領域［Ｊ］）をクリア（つまりゼロ設定）する。この処理の結果として、プロセッサは、１つの命令フローハイバ［Ｉ］から切り替えて、他の命令フローハイバ［Ｊ］を実行する。
【００２４】
１つのシナリオにおいて、ハイバ［Ｊ］は、プロセッサに、メモリ領域に格納されたレジスタコンテンツを用いて前の命令フロー（つまり、ハイバ［Ｉ］）を実行するよう切り替え戻させる命令ＳＸＣＨＧ（Ｊ，Ｉ）を含み得る。ＳＸＣＨＧ（Ｊ，Ｉ）に応答して、プロセッサはＳＭＥＭ［Ｊ］により指し示されるメモリ領域（領域［Ｊ］）のレジスタ状態を保存し、ＳＭＥＭ［Ｉ］により指し示されるメモリ領域（領域［Ｉ］）からレジスタをロードし、このメモリ領域（領域［Ｉ］）をクリア（ゼロ設定）する。
【００２５】
図２Ａの例は、メモリ領域［０］、領域［１］、領域［２］、および領域［３］を示す。ＳＸＣＨＧ（０，２）を実行することにより、（ＳＭＥＭ［０］により指し示される）領領域［０］にレジスタコンテンツが保存され、（ＳＭＥＭ［２］により指し示される）領域［２］からレジスタコンテンツが復元されることになる。
【００２６】
ユーザレベルのコンテキスト切り替えの速度を向上させるべく、レジスタ状態は、メモリの代わりに拡張レジスタセット（例えば、図１Ａおよび１Ｂの拡張レジスタセット１７５）に保存され、拡張レジスタセットから復元され得る。メモリロケーションの物理レジスタへのマッピングは、メモリリネームと呼ばれることもある。
【００２７】
図２Ｂは、拡張レジスタセット１７５の実施形態を示す。本実施形態において、セット１７５内の各レジスタは、バンク０、バンク１、バンク２、およびバンク３の４つのバンクを有する。向上した性能でＳＸＣＨＧ命令をサポートするマイクロアーキテクチャは、例えば、各バンク内のＧＰレジスタが６４ビット幅である４つのバンクなど、複数のバンクを有し得る。図２Ｂの実施形態において、所与のバンク内のレジスタは、例えば、ＲＡＸ．０、ＲＡＸ．１、ＲＡＸ．２、ＲＡＸ．３、など、元の名称にバンクインデックスが付されてリネームされている。プロセッサが２つのハイバコンテキスト間で切り替えを行う場合、長い一連のメモリ保存処理およびメモリ復元処理の代わりに、プロセッサは、ポインタ（例えば、現在のバンク（ＣＢ）レジスタ２２０のコンテンツ）を１つのレジスタバンクから他のレジスタバンクへ変更しさえすればよい。一実施形態において、デコーダは、コンテキスト切り替えに応じて複数の命令により参照されるレジスタの名称を変更し得る（例えば、ＲＡＸ．０からＲＡＸ．３）。レジスタリネーミングを実行する進化したアウトオブオーダプロセッサは、容易にリネームポインタを切り替え得る。結果として、プロセッサのフロントエンドがＳＸＣＨＧを予測する場合、ハイバ切り替えは、ほぼゼロサイクルで迅速に実行され得る。
【００２８】
ＳＸＣＨＧ命令の一実施形態は、オペランドを何ら有さない。ソースインデックス（例えば、インデックスＩ）を供給する代わりに、命令は、プロセッサが実行している現在アクティブなハイバのバンクを識別するＣＢレジスタ２２０を用いる。ＳＸＣＨＧ命令に続いて（例えば、書き戻しイベントが生じた場合）、プロセッサは、ＳＭＥＭ［ＣＢ］により指し示されるメモリ領域に現在のレジスタ状態を保存する。図２Ｂの例において、ＣＢ＝０であり、このことは、プロセッサがレジスタ状態をＳＭＥＭ［０］に保存することを意味している。拡張レジスタセット１７５のバンク０のレジスタ状態は、例えば実行がハイバ［０］に切り替え戻された場合など将来的な使用のためにバンク０に留まっていなければならない。
【００２９】
さらにＳＸＣＨＧ命令はデスティネーションインデックスを必要としない。代わりに、プロセッサは複数のハイバのそれぞれのためのマスクビットを含むマスクレジスタ２３０を用いる。図２Ｂの例において、各ハイバは、関連するマスクビットを有する。関連するマスクビットが所定の値（例えば、ゼロ）を有する場合、対応するハイバは非アクティブ化され、このハイバには切り替えが行われない。さもなくば（例えば、マスクビット値が１の場合）、対応するハイバは、アクティブである（現在実行されている）か、またはスリープ状態である（実行されるのを待っている）。ＳＸＣＨＧの実行に応じて、プロセッサはラウンドロビンまたは同様のポリシーを用いて、スリープ状態にある次のハイバに切り替え、同ハイバをアクティブ化する。図２Ｂの例において、ハイバ［１］のマスクビットがゼロであるので、プロセッサはＣＢ＝０からＣＢ＝２へ切り替える。
【００３０】
図２Ｃは、拡張レジスタセット１７５の実施形態をさらに詳細に示す。本実施形態において、拡張レジスタセット１７５は、４つのバンクを含み、各バンクは、ｚｍｍ０〜３１、複数のＧＰレジスタ、ＲＦＬＡＧＳ、およびＲＩＰを含む。上記にて説明したように、マスクレジスタ２３０は、対応するものが非アクティブ化されているかを示す各バンクのマスクビットを含み、ＣＢレジスタ２２０は、現在アクティブなバンクを指し示す。同じバンク内の複数のレジスタの幅は図２Ｃにおいて同じに見えるが、同じバンク内の複数の異なるレジスタは、同じ幅を有していても有していなくてもよいことが理解される。複数の代替的な実施形態において、拡張レジスタセット１７５は、より多くの、若しくはより少ないレジスタ、および／または、より多くの、若しくはより少ない数のバンクを含み得る。
【００３１】
一実施形態において、ＳＸＣＨＧ命令は複数の変形例を有する。ＳＸＣＨＧ．ｕは、次のハイバへの無条件の切り替えを引き起こす命令である。ＳＸＣＨＧ．ｃは、マイクロアーキテクチャのランタイムの決定に基づき、次のハイバへの切り替えを引き起こす命令である。一実施形態において、決定を行うマイクロアーキテクチャは、頻繁に見逃される複数のロードに関して命令ポインタをトラッキングするフロントエンド回路（例えば、分岐予測ユニット）であり得る。複数のハードウェアパラメータに基づき、マイクロアーキテクチャは、切り替えを実行するための条件が満たされたか、および、切り替えが実行されるのであれば、切り替えを実施する実行時点を決定し得る。例えば、マイクロアーキテクチャはプリフェッチキャッシュミスまたは複数の他の長いレイテンシーのイベントに応じて切り替えを行うことを決定し得る。ＳＸＣＨＧ．ｓｔａｒｔおよびＳＸＣＨＧ．ｅｎｄは、あらゆる命令がＳＸＣＨＧコンテキスト切り替えを有する候補となり得る、命令からなるブロックの境界をマーク付けする命令ペアである。これは、同命令ブロック内のあらゆる命令の前にＳＸＣＨＧ．ｃを有することと同じ作用を有する。ＳＸＣＨＧ．ｓｔａｒｔおよびＳＸＣＨＧ．ｅｎｄはそれぞれ、命令ブロックの始まりと終わりとをマーク付けする。そのようなマーク付けを用いて、マイクロアーキテクチャは自由に、異なる複数のハイバを実行する複数の命令から選択し得る。
【００３２】
一実施形態において、ＳＸＣＨＧ命令およびその複数の変形例は、ＳＸＣＨＧＬと呼ばれる「簡易」バージョンを有する。ＳＸＣＨＧＬ命令に応答して、プロセッサは、メモリにハイバコンテキストを保存せず、復元しない。代わりに、プロセッサは、複数のベクトルレジスタおよび／または複数の浮動小数点レジスタなどオンダイの利用されていないレジスタにハイバコンテキストを保存し復元する。一実施形態において、これらの利用されていないレジスタは、複数のベクトルレジスタ（例えば、ｚｍｍ０〜３１、ｚｍｍ１６〜３１、または複数のｚｍｍレジスタの何らかの利用されていない部分）である。一実施形態において、複数のｚｍｍレジスタの一部はさらに、ベクトルを格納するために用いられ得（例えば、ｘｍｍ０〜１５）、複数のｚｍｍレジスタの残りは、ハイバコンテキストを格納するために用いられ得る。これらの利用されていないレジスタ（または一部）は、複数のハイバのコンテキストを格納するために、複数のパーティション（例えば、ＳＸＣＨＧの４つのメモリ領域に対応する４つのパーティション）に分割され得る。加えて、ＳＸＣＨＧと同様に、ＳＸＣＨＧＬ命令も、ＳＸＣＨＧＬ．ｕ、ＳＸＣＨＧＬ．ｃ、ＳＸＣＨＧＬ．ｓｔａｒｔ、およびＳＸＣＨＧＬ．ｅｎｄなど複数の変形例を有し、これらの使用はＳＸＣＨＧの複数の対応するものと類似している。
【００３３】
一実施形態において、複数のＳＸＣＨＧ命令に応答して保存されるコンテキストは、ｚｍｍレジスタ状態を含み、複数のＳＸＣＨＧＬ命令に応答して保存されるコンテキストは、ｘｍｍレジスタ状態を含む（しかし、ｚｍｍレジスタ状態を含まない）。したがって、複数のＳＸＣＨＧＬ命令に関して、ｚｍｍ０〜１５が４つのハイバのｘｍｍ状態を格納するために用いられ得、ｚｍｍ１６〜３１は、同じ４つのハイバの他のレジスタの状態（例えば、複数のＧＰレジスタ、複数のフラグレジスタ、命令ポインタ、その他）を格納するために用いられ得る。図３は、４つのハイバの複数のコンテキストを格納するために４つのパーティションに分割されたベクトルレジスタ（ｚｍｍ１６〜３１）の一部３１０の実施形態を示しており、各パーティションは、拡張レジスタセット１７５のバンクに対応する。ＣＢレジスタ２２０は、拡張レジスタセット１７５の現在アクティブなバンク、および、複数のベクトルレジスタの一部３１０の対応するパーティションを指し示すポインタを提供する。
【００３４】
複数のｚｍｍレジスタから／への複数のレジスタの直接的な保存／復元によるＳＸＣＨＧＬ命令の実行は遅くなり得る。効率的な実施を可能とすべく、複数のｚｍｍレジスタから／へレジスタを保存および復元する代わりに、複数のバンクを含む拡張レジスタセット（例えば、図１Ａおよび１Ｂの拡張レジスタセット１７５）は、ＳＸＣＨＧと同様のやり方で「書き戻しキャッシュ」として用いられ得る。ＳＸＣＨＧと同様に、ＣＢレジスタは、現在アクティブなバンクを指し示すべくＳＸＣＨＧＬによって用いられ得、複数のマスクビットを含むマスクレジスタは、対応するバンクがもはや用いられていない（つまり、非アクティブ化された）かを示すために用いられ得る。複数のハイバの全てがマスキングされている（例えば、複数のゼロの対応するマスクビットを有する）場合、ＳＸＣＨＧＬは、ノーオペレーション処理となる。
【００３５】
結果として、プロセッサは複数のハイバから効率的にコード実行し得る。フロントエンドが正確にＳＸＣＨＧＬを予測した場合、プロセッサは、複数のハイバ間をパイプラインのフラッシュなしで非常に速く切り替え得る。
【００３６】
一実施形態において、図１Ａのスヌープ回路１８０と同様のスヌープメカニズムが、複数のハイバコンテキストが格納された複数のｚｍｍレジスタへのアクセスをトラッキングするために用いられ得る。ｚｍｍレジスタに格納されたハイバコンテキストが拡張レジスタセット１７５の対応するコンテンツと一貫していない（つまり、異なる）場合はいつでも、ｚｍｍレジスタはマーク付けされる。一実施形態において、このスヌープメカニズムは、ｚｍｍレジスタのそれぞれのグローバルな状態と関連付けられた状態ビットとして実装され得る。状態ビットは、最新の更新されたハイバコンテキストがどこにあるのかを示す。最新の更新が複数のｚｍｍレジスタで行われたのであれば（例えば、ＸＲＥＳＴＯＲＥ処理の後）、第１ＳＸＣＨＧＬ命令の実行が、マイクロコードシーケンスの実行を引き起こす書き戻しイベントをトリガする。マイクロコードシーケンスは、最新の更新を、ｚｍｍ空間から拡張レジスタセット１７５へコピーする。最新の更新が拡張レジスタセット１７５において行われ、プロセッサがベクトル命令の実行を開始するのであれば（例えば、ＸＳＡＶＥ処理の後）、マイクロコードは、最新の更新を拡張レジスタセット１７５からｚｍｍ空間へコピーする。
【００３７】
以下の説明において、ＳＸＣＨＧまたは「状態交換命令」について言及された場合、その説明は、ＳＸＣＨＧおよびＳＸＣＨＧＬの両方に当てはまるものと理解される。
【００３８】
図４Ａは、上記にて説明されたＳＸＣＨＧ命令を用い得るコードセグメント４１０の一例、またはその複数の変形例のうち１つを図示する。コードセグメント４１０は、バイナリサーチ（「Ｂｓｅａｒｃｈ」と呼ばれる）を実施し得る。バイナリサーチの間、多数のキャッシュミスが命令４２０において生じることが予期される（ｔｅｍｐ＝Ａ［ｍｉｄ］）。図４Ｂは、それぞれがハイバを表す２つのコードセグメントｆｏｏ０およびｆｏｏ１により同じバイナリサーチを実行する一例を図示する。コードセグメントのそれぞれは、多くのキャッシュミスが生じることが予期される（ｔｅｍｐ＝Ａ［ｍｉｄ］）命令（４３０または４３１）の後にＳＸＣＨＧ．ｕ命令を含む。したがって、プロセッサがｆｏｏ０において命令４３０を実行した直後に、プロセッサは、予期されるキャッシュミスイベントの間にｆｏｏ１への無条件の切り替えを実行する。命令４３０に実際にキャッシュミスが生じた場合、コンテキスト切り替えによりプロセッサは、ｆｏｏ１において他の有用な作業に関わることが可能となる。同様に、命令４３１に実際にキャッシュミスが生じた場合、コンテキスト切り替えによりプロセッサは、ｆｏｏ０において他の有用な作業に関わることが可能となる。キャッシュミスが生じない場合、コンテキスト切り替えによるペナルティは最小である。これは、ｆｏｏ０およびｆｏｏ１のコンテキストが両方とも、拡張レジスタセットに格納され、迅速に保存および復元され得るからである。
【００３９】
一実施形態において、ＳＸＣＨＧ命令（例えば、図４ＢのＳＸＣＨＧ．ｕ命令）が、プログラマにより追加され得る。代替的な実施形態において、ＳＸＣＨＧ命令がコンパイラにより追加され得る。コンパイラはスタティックコンパイラまたはジャストインタイムコンパイラであり得る。コンパイラは、ＳＸＣＨＧ命令を実行しているプロセッサと同じハードウェアプラットフォームに、または異なるハードウェアプラットフォームに位置し得る。なお、ＳＸＣＨＧの配置およびＳＸＣＨＧの実行には、オペレーティングシステムは関与しない。
【００４０】
図５は、一実施形態に係る２つのハイバコンテキストを交換するための方法５００のブロックフロー図である。方法５００は、プロセッサ（例えば、図１Ａの命令処理装置１１５）が、拡張レジスタセットの第１バンクに格納された第１コンテキストを用いて、第１ユーザレベルスレッド（例えば、ハイバ）を実行することにより開始する（ブロック５１０）。第１スレッドの実行の間、プロセッサは、第１スレッドおよび第２スレッドの複数のコンテキストを交換するための命令を受信する（ブロック５２０）。ここで、第２スレッドは他のユーザレベルスレッド（例えば、ハイバ）であり、拡張レジスタセットの第２バンクに保存された第２コンテキストを有する。命令に応答して、プロセッサは、現在アクティブなバンクとして第１バンクを現在指し示すレジスタポインタを第２バンクに変更する（ブロック５３０）。プロセッサはその後、第２バンクに格納された第２コンテキストを用いて第２スレッドを実行する（ブロック５４０）。
【００４１】
様々な複数の実施形態において、図５の方法は、汎用プロセッサ、特定用途向けプロセッサ（例えば、グラフィックプロセッサまたはデジタル信号プロセッサ）、または、他のタイプのデジタルロジックデバイス若しくは命令処理装置により実行され得る。いくつかの実施形態において、図５の方法は、図７Ａ〜図１３の命令処理装置により実行され得る。さらに、図１Ａの命令処理装置１１５、および、図７Ａ〜図１３に示されるプロセッサ、装置、またはシステムが、図５の方法のものと同じ、同様、または異なる複数の処理および複数の方法の複数の実施形態を実施し得る。
【００４２】
いくつかの実施形態において、図１Ａの命令処理装置１１５は、ソース命令セットからターゲット命令セットに命令を変換する命令コンバータと協働して動作し得る。例えば、命令コンバータは、命令を、コアにより処理されることになる他の１または複数の命令にトランスレート（例えば、スタティックバイナリトランスレーション、ダイナミックコンパイルを含むダイナミックバイナリトランスレーション）、モーフィング、エミュレート、または変換し得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせにおいて実装され得る。命令コンバータは、プロセッサ上、プロセッサ上ではない、または一部がプロセッサ上で一部がプロセッサ上ではないかもしれない。
【００４３】
図６は、本願発明の複数の実施形態に係るソフトウェア命令コンバータの利用を対比するブロック図である。示される実施形態において、命令コンバータはソフトウェア命令コンバータであるが、代替的に、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、またはこれらの様々な組み合わせで実装されてもよい。図６は、少なくとも１つのｘ８６命令セットコアを有するプロセッサ６１６によりネイティブに実行され得るｘ８６バイナリコード６０６を生成するｘ８６コンパイラ６０４を用いてコンパイルされ得る高水準言語６０２のプログラムを示す。少なくとも１つのｘ８６命令セットコアを有するプロセッサ６１６は、少なくとも１つのｘ８６命令セットコアを備えるＩｎｔｅｌプロセッサと実質的に同じ結果を得るべく、（１）Ｉｎｔｅｌ  ｘ８６命令セットコアの命令セットのかなりの部分、または、（２）少なくとも１つのｘ８６命令セットコアを備えるＩｎｔｅｌプロセッサで実行されることを目的とする複数のアプリケーションの複数のオブジェクトコードバージョンまたは他のソフトウェアを互換性を有した状態で実行する、または処理することにより、少なくとも１つのｘ８６命令セットコアを備えるＩｎｔｅｌプロセッサと実質的に同じである複数の機能を実行出来る何らかのプロセッサを表す。ｘ８６コンパイラ６０４は、少なくとも１つのｘ８６命令セットコアを有するプロセッサ６１６で追加のリンケージ処理あり、またはなしで実行され得るｘ８６バイナリコード６０６（例えばオブジェクトコード）を生成するよう動作可能なコンパイラを表す。同様に、図６は、少なくとも１つのｘ８６命令セットコアを有さないプロセッサ６１４（例えば、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セットを実行する、および／またはカリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セットを実行する複数のコアを有するプロセッサ）によってネイティブに実行され得る、代替的な命令セットバイナリコード６１０を生成する代替的な命令セットコンパイラ６０８を用いてコンパイルされ得る高水準言語６０２のプログラムを示す。命令コンバータ６１２は、ｘ８６バイナリコード６０６を、ｘ８６命令セットコアを有さないプロセッサ６１４によってネイティブに実行され得るコードに変換するために用いられる。この変換されたコードは、このような変換が可能な命令コンバータの製造は難しいため、代替的な命令セットバイナリコード６１０と同じとなる可能性は低いが、しかし、変換されたコードは、一般的な演算を達成し、代替的な命令セットからの複数の命令からなる。したがって、命令コンバータ６１２は、エミュレート、シミュレーションまたは任意の他の処理を介して、プロセッサ若しくはｘ８６命令セットプロセッサまたはコアを有さない他の電子デバイスにｘ８６バイナリコード６０６を実行させるソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表す。
【００４４】
例示的な複数のコアアーキテクチャ  インオーダおよびアウトオブオーダコアのブロック図  図７Ａは、本願発明の複数の実施形態に係る、例示的なインオーダパイプラインと、例示的なレジスタリネーミング・アウトオブオーダ発行／実行パイプラインとの両方を示すブロック図である。図７Ｂは、本願発明の複数の実施形態に係るプロセッサに含められる、インオーダアーキテクチャコアの例示的な実施形態と、例示的なレジスタリネーミング・アウトオブオーダ発行／実行アーキテクチャコアとの両方を示すブロック図である。図７Ａおよび７Ｂの実線で示される四角は、インオーダパイプラインおよびインオーダコアを示し、破線で示される四角の任意選択的な追加は、レジスタリネーミング・アウトオブオーダ発行／実行パイプラインおよびコアを示す。インオーダの態様は、アウトオブオーダの態様のサブセットであるので、アウトオブオーダの態様について説明する。
【００４５】
図７Ａにおいて、プロセッサパイプライン７００は、フェッチステージ７０２、長さデコードステージ７０４、デコードステージ７０６、割り当てステージ７０８、リネームステージ７１０、スケジューリング（配布または発行としても知られる）ステージ７１２、レジスタ読み取り／メモリ読み取りステージ７１４、実行ステージ７１６、書き戻し／メモリ書き込みステージ７１８、例外処理ステージ７２２、およびコミットステージ７２４を含む。
【００４６】
図７Ｂは、実行エンジンユニット７５０に結合されたフロントエンドユニット７３０を含み、フロントエンドユニット７３０と実行エンジンユニット７５０との両方がメモリユニット７７０に結合されたプロセッサコア７９０を示す。コア７９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、または、ハイブリッドまたは代替的なコアタイプであり得る。さらに他のオプションとして、コア７９０は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィック処理ユニット（ＧＰＧＰＵ）コア、グラフィックコアなど特定用途向けコアであり得る。
【００４７】
フロントエンドユニット７３０は、分岐予測ユニット７３２を含み、分岐予測ユニット７３２は、命令キャッシュユニット７３４に結合され、命令キャッシュユニット７３４は、命令トランスレーションルックアサイドバッファ（ＴＬＢ）７３６に結合され、ＴＬＢ７３６は、命令フェッチユニット７３８に結合され、命令フェッチユニット７３８は、デコードユニット７４０に結合されている。複数のデコードユニット７４０（またはデコーダ）は、命令をデコードし得、元の命令からデコードされ、または、元の命令を反映し、または、元の命令から導出される１または複数のマイクロオペレーション、マイクロコードエントリーポイント、マイクロ命令、他の命令、または他の制御信号を出力として生成し得る。デコードユニット７４０は、様々な異なるメカニズムを用いて実装され得る。複数の適したメカニズムの例としては、複数のルックアップテーブル、複数のハードウェア実装、複数のプログラマブルロジックアレイ（ＰＬＡ）、複数のマイクロコード読み取り専用メモリ（ＲＯＭ）、その他などが含まれるがこれらに限定されない。一実施形態において、コア７９０は、複数の特定のマクロ命令のためのマイクロコードを（例えば、デコードユニット７４０内に、または、フロントエンドユニット７３０内に）格納するマイクロコードＲＯＭまたは他の媒体を含む。デコードユニット７４０は、実行エンジンユニット７５０内のリネーム／割り当てユニット７５２に結合されている。
【００４８】
実行エンジンユニット７５０は、リタイヤユニット７５４と１または複数のスケジューラユニット７５６からなるセットとに結合されたリネーム／割り当てユニット７５２を含む。スケジューラユニット７５６は、複数の予約ステーション、中央命令ウィンドウ、その他などを含む、任意の数の複数の異なるスケジューラを表す。スケジューラユニット７５６は、物理レジスタファイルユニット７５８に結合されている。複数の物理レジスタファイルユニット７５８のそれぞれは、互いに異なるもの同士が互いに異なる１または複数のデータタイプを格納する１または複数の物理レジスタファイルを表す。そのようなデータタイプには、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、状態（例えば、次に実行される命令のアドレスである命令ポインタ）、その他などが含まれる。一実施形態において、物理レジスタファイルユニット７５８は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、およびスカラレジスタユニットを備える。これらのレジスタユニットは、複数のアーキテクチャベクトルレジスタ、複数のベクトルマスクレジスタ、および複数の汎用レジスタを提供し得る。レジスタリネーミングおよびアウトオブオーダ実行が実装され得る様々なやり方（例えば、リオーダバッファおよびリタイヤレジスタファイルを用いて、未来のファイル（ｆｕｔｕｒｅ  ｆｉｌｅ）、履歴バッファ（ｈｉｓｔｏｒｙ  ｂｕｆｆｅｒ）、およびリタイヤレジスタファイルを用いて、複数のレジスタマップおよび複数のレジスタのプールを用いて、その他）を示すべく、物理レジスタファイルユニット７５８にはリタイヤユニット７５４が重ねられている。リタイヤユニット７５４および物理レジスタファイルユニット７５８は、実行クラスタ７６０が結合されている。実行クラスタ７６０は、１または複数の実行ユニット７６２からなるセット、および１または複数のメモリアクセスユニット７６４からなるセットを含む。複数の実行ユニット７６２は様々な処理（例えば、シフト、加算、減算、乗算）を、様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して実行し得る。いくつかの実施形態には、複数の特定の機能、または複数の機能からなる複数のセットのための専用の複数の実行ユニットが含まれ得るが、複数の他の実施形態において、全ての機能を全てが実行する１つだけの実行ユニット、または複数の実行ユニットが含まれ得る。特定の実施形態において、複数の特定のタイプのデータ／複数の処理に対して複数の別個のパイプライン（例えば、それぞれが自身のスケジューラユニット、物理レジスタファイルユニット、および／または実行クラスタを有する、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、および／または、メモリアクセスパイプライン、並びに、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタのみがメモリアクセスユニット７６４を有する複数の特定の実施形態が実施される）が生成されるので、スケジューラユニッ��７５６、物理レジスタファイルユニット７５８、および実行クラスタ７６０は、複数あり得るものとして示されている。また、複数の別個のパイプラインが用いられる場合、これらのパイプラインのうち１または複数は、アウトオブオーダ発行／実行であり得、残りがインオーダであり得ることを理解されたい。
【００４９】
複数のメモリアクセスユニット７６４からなるセットは、メモリユニット７７０に結合され、メモリユニット７７０は、データキャッシュユニット７７４に結合されたデータＴＬＢユニット７７２を含む。データキャッシュユニット７７４は、レベル２（Ｌ２）キャッシュユニット７７６に結合されている。例示的な一実施形態において、複数のメモリアクセスユニット７６４は、ロードユニット、格納アドレスユニット、および、格納データユニットを含み得る。これらはそれぞれ、メモリユニット７７０内のデータＴＬＢユニット７７２に結合されている。命令キャッシュユニット７３４はさらに、メモリユニット７７０内のレベル２（Ｌ２）キャッシュユニット７７６に結合されている。Ｌ２キャッシュユニット７７６は、１または複数の他のレベルのキャッシュに、および、さらにはメインメモリに結合されている。
【００５０】
例として、例示的なレジスタリネーミング・アウトオブオーダ発行／実行コアアーキテクチャは、以下のようにパイプライン７００を実装し得る。１）命令フェッチ７３８が、フェッチおよび長さデコードステージ７０２、７０４を実行する。２）デコードユニット７４０が、デコードステージ７０６を実行する。３）リネーム／割り当てユニット７５２が、割り当てステージ７０８およびリネームステージ７１０を実行する。４）スケジューラユニット７５６がスケジュールステージ７１２を実行する。５）物理レジスタファイルユニット７５８およびメモリユニット７７０が、レジスタ読み取り／メモリ読み取りステージ７１４を実行する。実行クラスタ７６０が実行ステージ７１６を実行する。６）メモリユニット７７０および物理レジスタファイルユニット７５８が、書き戻し／メモリ書き込みステージ７１８を実行する。７）様々なユニットが例外処理ステージ７２２に関わり得る。８）リタイヤユニット７５４および物理レジスタファイルユニット７５８が、コミットステージ７２４を実行する。
【００５１】
コア７９０は、本明細書に説明される命令を含む１または複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンではいくつかの拡張が追加された）、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セット（ＮＥＯＮなど任意選択的な追加の拡張を含む）をサポートし得る。一実施形態において、コア７９０は、パックドデータ命令セットの拡張（例えば、ＳＳＥ、ＡＶＸ１、ＡＶＸ２、その他）をサポートするロジックを含み、これにより、多くのマルチメディアアプリケーションにより用いられる処理を、パックドデータを用いて実行することが可能になる。
【００５２】
コアは、マルチスレッディング（複数の処理または複数のスレッドからなる２またはそれより多くの並列セットを実行）をサポートし得、このことを様々なやり方で行い得ることを理解されたい。それら様々なやり方には、タイムスライスドマルチスレッディング、同時のマルチスレッディング（単一の物理コアは、同物理コアが同時にマルチスレッディングを行っている複数のスレッドのそれぞれに対して論理コアを提供する）、または、これらの組み合わせ（例えば、Ｉｎｔｅｌ（登録商標）Ｈｙｐｅｒｔｈｒｅａｄｉｎｇ技術のように、タイムスライスドフェッチおよびデコード、並びにその後の同時のマルチスレッディング）が含まれる。
【００５３】
アウトオブオーダ実行に関して、レジスタリネーミングを説明するが、レジスタリネーミングは、インオーダアーキテクチャで用いられ得ることを理解されたい。また、プロセッサの示される実施形態は、別個の命令およびデータキャッシュユニット７３４／７７４、並びに共有されるＬ２キャッシュユニット７７６も含むが、代替的な実施形態において、例えば、レベル１（Ｌ１）内部キャッシュ、または複数レベルの内部キャッシュなど複数の命令およびデータの両方に関して単一の内部キャッシュが用いられ得る。いくつかの実施形態において、システムは、内部キャッシュと、コアおよび／またはプロセッサの外部にある外部キャッシュとの組み合わせを含み得る。代替的に、キャッシュの全てが、コアおよび／またはプロセッサの外部にあり得る。
【００５４】
特定の例示的なインオーダコアアーキテクチャ  図８Ａ〜図８Ｂは、コアがチップ内の（同じタイプおよび／または複数の異なるタイプの複数の他のコアを含む）いくつかのロジックブロックのうちの１つであり得る、より特定的かつ例示的なインオーダコアアーキテクチャのブロック図を示す。複数のロジックブロックは、アプリケーションに応じて、何らかの一定の機能ロジック、複数のメモリＩ／Ｏインタフェース、および他の必要なＩ／Ｏロジックを有する高帯域幅相互接続ネットワーク（例えば、リングネットワーク）を介して通信を行う。
【００５５】
図８Ａは、本願発明の複数の実施形態に係る、シングルプロセッサコアと、そのオンダイ相互接続ネットワーク８０２への接続と、そのレベル２（Ｌ２）キャッシュのローカルなサブセット８０４とを示すブロック図である。一実施形態において、命令デコーダ８００は、パックドデータ命令セットの拡張を含むｘ８６命令セットをサポートする。Ｌ１キャッシュ８０６は、キャッシュメモリ、並びに複数のスカラおよびベクトルユニットへの低レイテンシーの複数のアクセスを可能とする。（設計を単純化すべく）一実施形態において、スカラユニット８０８およびベクトルユニット８１０は複数の別個のレジスタセット（それぞれ、複数のスカラレジスタ８１２および複数のベクトルレジスタ８１４）を用い、それらの間で転送されるデータはメモリに書き込まれ、その後、レベル１（Ｌ１）キャッシュ８０６から再度読み取られるが、本願発明の複数の代替的な実施形態において、異なるアプローチが用いられ得る（例えば、単一のレジスタセットが用いられる、または、書き込まれ再度読み取られることなくデータが２つのレジスタファイル間で転送されることを可能とする通信パスが含まれる）。
【００５６】
Ｌ２キャッシュのローカルなサブセット８０４は、１つのプロセッサコアあたり１つである複数の別個のローカルなサブセットへ分割されるグローバルなＬ２キャッシュの一部である。各プロセッサコアは、自身のＬ２キャッシュのローカルなサブセット８０４への直接的なアクセスパスを有する。プロセッサコアにより読み取られるデータは、自身のＬ２キャッシュサブセット８０４に格納され、それぞれ自身のローカルなＬ２キャッシュサブセットにアクセスしている複数の他のプロセッサコアと並行して迅速にアクセスされ得る。プロセッサコアにより書き込まれるデータは、自身のＬ２キャッシュサブセット８０４に格納され、必要であれば複数の他のサブセットからフラッシュされる。リングネットワークは、共有されるデータの一貫性を確保する。リングネットワークは、複数のプロセッサコア、複数のＬ２キャッシュ、および複数の他のロジックブロックなどのエージェントがチップ内で互いに通信を行えるよう双方向性である。各リングデータパスは、１方向あたり、１０１２ビット幅である。
【００５７】
図８Ｂは、本願発明の複数の実施形態に係る、図８Ａのプロセッサコアの一部の拡大図である。図８Ｂは、Ｌ１キャッシュ８０４のＬ１データキャッシュ８０６Ａ部分、並びに、ベクトルユニット８１０および複数のベクトルレジスタ８１４に関するより細かな詳細を含む。詳細には、ベクトルユニット８１０は、整数、単精度浮動、および倍精度浮動命令のうち１または複数を実行する１６幅のベクトル処理ユニット（ＶＰＵ）である（１６幅ＡＬＵ８２８を参照されたい）。ＶＰＵはスウィズルユニット８２０により複数のレジスタ入力のスウィズルをサポートし、数値変換ユニット８２２Ａ〜Ｂにより数値変換をサポートし、複製ユニット８２４によりメモリ入力の複製をサポートする。書き込みマスクレジスタ８２６は、結果として得られるベクトル書き込みの予測を可能とする。
【００５８】
集積メモリコントローラおよびグラフィックを有するプロセッサ  図９は、本願発明の複数の実施形態に係る、１より多くのコアを有し得、集積メモリコントローラを有し得、および、集積グラフィックロジックを有し得るプロセッサ９００のブロック図である。図９の実線で示される四角は、単一のコア９０２Ａ、システムエージェント９１０、１または複数のバスコントローラユニット９１６からなるセットを含むプロセッサ９００を示す。破線で示される四角は任意選択的に追加されるものを含む、つまり、複数のコア９０２Ａ〜Ｎ、システムエージェントユニット９１０内の１または複数の集積メモリコントローラユニット９１４からなるセット、および特定用途向けロジック９０８を含む代替的なプロセッサ９００を示す。
【００５９】
したがって、プロセッサ９００の複数の異なる実装には、１）特定用途向けロジック９０８が（１または複数のコアを含み得る）集積グラフィックおよび／または科学用途向け（スループット）ロジックであり、コア９０２Ａ〜Ｎが１または複数の汎用コア（例えば、複数の汎用インオーダコア、複数の汎用アウトオブオーダコア、これら２つの組み合わせ）であるＣＰＵ、２）コア９０２Ａ〜Ｎがグラフィックおよび／または科学用途（スループット）を主な目的とする多数の特定用途向けコアであるコプロセッサ、および３）コア９０２Ａ〜Ｎが多数の汎用インオーダコアであるコプロセッサが含まれ得る。したがって、プロセッサ９００は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ（汎用グラフィック処理ユニット）、高スループットのメニーインテグレーテッドコア（ＭＩＣ）コプロセッサ（３０またはそれより多くのコアを含む）、組み込みプロセッサなど、汎用プロセッサ、コプロセッサ、または特定用途向けプロセッサであり得る。プロセッサは、１または複数のチップ上で実装され得る。プロセッサ９００は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、若しくはＮＭＯＳなどの複数の処理技術のうちいずれかを用いて１または複数の基板の一部であり得、および／またはそれら基板上で実装され得る。
【００６０】
メモリ階層は、複数のコア内の１または複数のレベルのキャッシュ、１または複数の共有キャッシュユニット９０６からなるセット、および、複数の集積メモリコントローラユニット９１４からなるセットに結合された外部メモリ（図示せず）を含む。複数の共有キャッシュユニット９０６からなるセットは、レベル２（Ｌ２）、レベル３（Ｌ３），レベル４（Ｌ４），または他のレベルのキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、および／またはこれらの組み合わせなどの１または複数の中間レベルのキャッシュを含み得る。一実施形態において、リングベースの相互接続ユニット９１２が集積グラフィックロジック９０８、複数の共有キャッシュユニット９０６からなるセット、およびシステムエージェントユニット９１０／集積メモリコントローラユニット９１４を相互接続するが、代替的な実施形態において、そのような複数のユニットを相互接続するための任意の数の複数の周知の技術が用いられ得る。一実施形態において、１または複数のキャッシュユニット９０６とコア９０２Ａ〜Ｎとの間で一貫性が維持される。
【００６１】
いくつかの実施形態において、コア９０２Ａ〜Ｎのうち１または複数は、マルチスレッディングを行うことが出来る。システムエージェント９１０は、コア９０２Ａ〜Ｎを調整し、動作させる複数のコンポーネントを含む。システムエージェントユニット９１０は、例えば、電力制御ユニット（ＰＣＵ）およびディスプレイユニットを含み得る。ＰＣＵは、コア９０２Ａ〜Ｎおよび集積グラフィックロジック９０８の電力状態を管理するために必要なロジックまたは複数のコンポーネントであり得、または、それらを含み得る。ディスプレイユニットは、１または複数の外部接続されたディスプレイを駆動するためのものである。
【００６２】
コア９０２Ａ〜Ｎは、アーキテクチャ命令セットに関して同種または異種であってもよい。つまり、コア９０２Ａ〜Ｎのうち２またはそれより多くは同じ命令セットを実行可能であり、その他は、同命令セットのサブセット、または異なる命令セットのみを実行可能であり得る。
【００６３】
例示的なコンピュータアーキテクチャ  図１０〜１３は、複数の例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドＰＣ、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックデバイス、ビデオゲーム機器、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスに関して当技術分野で公知の複数の他のシステム設計および構成も適している。一般的に、本明細書において開示されるプロセッサおよび／または他の実行ロジックを組み込み可能な、非常に多種多様なシステムまたは電子デバイスが概して適している。
【００６４】
図１０は、本願発明の一実施形態に係るシステム１０００のブロック図を示す。システム１０００は、コントローラハブ１０２０に結合された１または複数のプロセッサ１０１０、１０１５を含み得る。一実施形態において、コントローラハブ１０２０は、グラフィックメモリコントローラハブ（ＧＭＣＨ）１０９０および入出力ハブ（ＩＯＨ）１０５０（複数の別個のチップ上にあり得る）を含む。ＧＭＣＨ１０９０は、複数のメモリ１０４０およびコプロセッサ１０４５が結合されたメモリおよびグラフィックコントローラを含む。ＩＯＨ１０５０は、入出力（Ｉ／Ｏ）デバイス１０６０をＧＭＣＨ１０９０に結合する。代替的に、メモリおよびグラフィックコントローラのうち一方または両方は、（本明細書で説明されるように）プロセッサ内で集積され、メモリ１０４０およびコプロセッサ１０４５は、プロセッサ１０１０、および、ＩＯＨ１０５０を備える単一のチップ内のコントローラハブ１０２０へ直接結合されている。
【００６５】
追加のプロセッサ１０１５は任意選択的に用いられるので、図１０において破線で示されている。各プロセッサ１０１０、１０１５は、本明細書において説明されるプロセッサコアのうち１または複数を含み得、プロセッサ９００の何らかのバージョンであり得る。
【００６６】
メモリ１０４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、またはこれら２つの組み合わせであり得る。少なくとも１つの実施形態において、コントローラハブ１０２０は、フロントサイドバス（ＦＳＢ）などのマルチドロップバス、ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）などのポイントツーポイントインタフェース、または同様の接続１０９５を介してプロセッサ１０１０、１０１５と通信を行う。
【００６７】
一実施形態において、コプロセッサ１０４５は、例えば、高スループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ、組み込みプロセッサなど特定用途向けプロセッサである。一実施形態において、コントローラハブ１０２０は、集積グラフィックアクセラレータを含み得る。
【００６８】
アーキテクチャ的特性、マイクロアーキテクチャ的特性、熱的特性、電力消費特性などを含む様々な利点に関して、物理リソース１０１０、１０１５間では様々な差があり得る。
【００６９】
一実施形態において、プロセッサ１０１０は、一般的なタイプの複数のデータ処理動作を制御する複数の命令を実行する。複数の命令には複数のコプロセッサ命令が組み込まれ得る。プロセッサ１０１０は、取り付けられたコプロセッサ１０４５により実行されるべきタイプのものとしてこれらのコプロセッサ命令を認識する。したがって、プロセッサ１０１０は、コプロセッサバスまたは他の相互接続上でこれらのコプロセッサ命令（または複数のコプロセッサ命令を表す複数の制御信号）をコプロセッサ１０４５へ発行する。コプロセッサ１０４５は受信した複数のコプロセッサ命令を受け付け、実行する。
【００７０】
図１１は、本願発明の実施形態に係る、より特定的かつ例示的な第１のシステム１１００のブロック図である。図１１に示すようにマルチプロセッサシステム１１００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１１５０を介して結合された第１プロセッサ１１７０および第２プロセッサ１１８０を含む。プロセッサ１１７０、１１８０のそれぞれは、プロセッサ９００の何らかのバージョンであり得る。本願発明の一実施形態において、プロセッサ１１７０、１１８０はそれぞれ、プロセッサ１０１０、１０１５であり、コプロセッサ１１３８は、コプロセッサ１０４５である。他の実施形態において、プロセッサ１１７０、１１８０はそれぞれ、プロセッサ１０１０、および、コプロセッサ１０４５である。
【００７１】
プロセッサ１１７０、１１８０はそれぞれ、集積メモリコントローラ（ＩＭＣ）ユニット１１７２、１１８２を含むものとして示されている。また、プロセッサ１１７０は自身のバスコントローラユニットの一部としてポイントツーポイント（Ｐ−Ｐ）インタフェース１１７６、１１７８を含み、同様に、第２プロセッサ１１８０は、Ｐ−Ｐインタフェース１１８６、１１８８を含む。プロセッサ１１７０、１１８０は、Ｐ−Ｐインタフェース回路１１７８、１１８８を用いてポイントツーポイント（Ｐ−Ｐ）インタフェース１１５０を介して情報を交換し得る。図１１に示されるように、ＩＭＣ１１７２、１１８２は、複数のプロセッサを、複数のそれぞれのプロセッサにローカルに取り付けられたメインメモリの一部であり得る複数のそれぞれのメモリ、つまり、メモリ１１３２およびメモリ１１３４に結合する。
【００７２】
プロセッサ１１７０、１１８０はそれぞれ、ポイントツーポイントインタフェース回路１１７６、１１９４、１１８６、１１９８を用いて個別のＰ−Ｐインタフェース１１５２、１１５４を介してチップセット１１９０と情報を交換し得る。チップセット１１９０は任意選択的に、高性能インタフェース１１３９を介してコプロセッサ１１３８と情報を交換し得る。一実施形態において、コプロセッサ１１３８は、例えば、高スループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ、組み込みプロセッサなど特定用途向けプロセッサである。
【００７３】
共有キャッシュ（図示せず）は、プロセッサが低電力モードに入った場合に、片方または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るよう、いずれかのプロセッサに含まれる、または、両方のプロセッサの外ではあるが、Ｐ−Ｐ相互接続を介してプロセッサと接続される。
【００７４】
チップセット１１９０は、インタフェース１１９６を介して第１バス１１１６と結合され得る。一実施形態において、第１バス１１１６はＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、若しくはＰＣＩ  Ｅｘｐｒｅｓｓバスなどのバス、または他の第３世代のＩ／Ｏ相互接続バスであり得る。ただし、本願発明の範囲はそのように限定されない。
【００７５】
図１１に示されるように、第１バス１１１６を第２バス１１２０へ結合するバスブリッジ１１１８と併せて、様々なＩ／Ｏデバイス１１１４が第１バス１１１６へ結合され得る。一実施形態において、複数のコプロセッサ、複数の高スループットＭＩＣプロセッサ、複数のＧＰＧＰＵ、複数のアクセラレータ（例えば、複数のグラフィックアクセラレータ、または、複数のデジタル信号処理（ＤＳＰ）ユニットなど）、複数のフィールドプログラマブルゲートアレイ、または何らかの他のプロセッサなど１または複数の追加のプロセッサ１１１５が第１バス１１１６に結合されている。一実施形態において、第２バス１１２０は、ｌｏｗ  ｐｉｎ  ｃｏｕｎｔ（ＬＰＣ）バスであり得る。一実施形態において、例えば、キーボードおよび／またはマウス１１２２、複数の通信デバイス１１２７、および、命令／コードおよびデータ１１３０を含み得るディスクドライブまたは他の大容量記憶デバイスなどの記憶ユニット１１２８を含む様々なデバイスが第２バス１１２０に結合され得る。さらに、オーディオＩ／Ｏ１１２４が、第２バス１１２０に結合され得る。なお、複数の他のアーキテクチャを用いることも可能である。例えば、図１１のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバス、または他のそのようなアーキテクチャを実装し得る。
【００７６】
図１２は、本願発明の実施形態に係る、より特定的かつ例示的な第２のシステム１２００のブロック図である。図１１および１２において同様の要素には同様の参照番号が付与され、図１２の他の態様を曖昧にしないよう図１１の特定の態様は図１２において省略されている。
【００７７】
図１２は、プロセッサ１１７０、１１８０がそれぞれ、集積メモリおよびＩ／Ｏ制御ロジック（「ＣＬ」）１１７２、１１８２を含み得ることを示す。したがって、ＣＬ１１７２、１１８２は、集積メモリコントローラユニットを含み、Ｉ／Ｏ制御ロジックを含む。図１２は、メモリ１１３２、１１３４がＣＬ１１７２、１１８２に結合されていることだけでなく、複数のＩ／Ｏデバイス１２１４が制御ロジック１１７２、１１８２に結合されていることも示す。複数のレガシーＩ／Ｏデバイス１２１５は、チップセット１１９０に結合されている。
【００７８】
図１３は、本願発明の実施形態に係るＳｏＣ１３００のブロック図を示す。図９と同様の要素には同様の参照番号が付与される。また、破線で示される四角は、より進化したＳｏＣにおける任意選択的な特徴である。図１３において、相互接続ユニット１３０２は、１または複数のコア２０２Ａ〜Ｎからなるセットおよび共有キャッシュユニット９０６を含むアプリケーションプロセッサ１３１０と、システムエージェントユニット９１０と、バスコントローラユニット９１６と、集積メモリコントローラユニット９１４と、集積グラフィックロジック、画像プロセッサ、オーディオプロセッサ、およびビデオプロセッサを含み得る１または複数のコプロセッサ１３２０からなるセットと、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１３３０と、ダイレクトメモリアクセス（ＤＭＡ）ユニット１３３２と、１または複数の外部ディスプレイに結合するためディスプレイユニット１３４０とに結合されている。一実施形態において、コプロセッサ１３２０は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高スループットＭＩＣプロセッサ、組み込みプロセッサなどの特定用途向けプロセッサを含む。
【００７９】
本明細書で開示する複数のメカニズムの複数の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような複数の実装アプローチの組み合わせにより実施されてもよい。本願発明の複数の実施形態は、少なくとも１つのプロセッサ、記憶システム（揮発性、若しくは不揮発性のメモリ、および／または複数の記憶素子を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを備える複数のプログラム可能なシステムで実行される複数のコンピュータプログラムまたはプログラムコードとして実施されてもよい。
【００８０】
図１１に示されるコード１１３０などのプログラムコードは、本明細書で説明される複数の機能を実行し、出力情報を生成する複数の入力命令に適用されてもよい。出力情報は、公知の方式で、１または複数の出力デバイスに適用されてもよい。本明細書の目的において、プロセッシングシステムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、またはマイクロプロセッサなどのプロセッサを有する何らかのシステムを含む。
【００８１】
プログラムコードは、プロセッシングシステムと通信を行う高水準の手続き型プログラミング言語またはオブジェクト指向のプログラミング言語で実施されてもよい。またプログラムコードは、所望される場合、アセンブリ言語またはマシン言語で実施されてもよい。事実、本明細書で説明される複数のメカニズムは、何らかの特定のプログラミング言語に限定されない。いずれの場合であっても、言語はコンパイラ型言語またはインタープリタ型言語であってもよい。
【００８２】
少なくとも１つの実施形態の１または複数の態様は、マシンによって読み取られると当該マシンに本明細書で説明される複数の技術を実施するロジックを作成させる、プロセッサ内の様々なロジックを表すマシン可読媒体に格納された複数の代表的な命令によって実装されてもよい。「ＩＰコア」として知られるそのような表現は、有形のマシン可読媒体に格納され、ロジックまたはプロセッサを実際に作成する製造マシンにロードされるべく様々な顧客または製造施設に提供されてもよい。
【００８３】
そのようなマシン可読記憶媒体には、これらに限定されるわけではないが、マシンまたはデバイスによって製造または形成される、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、および光磁気ディスクなどを含む他の何らかのタイプのディスク、読み取り専用メモリ（ＲＯＭ）などの半導体デバイス、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）、磁気または光学式カード、または、複数の電子命令を格納するのに適した他の何らかのタイプの媒体などの記憶媒体を含む複数の物品の非一時的な有形構造を含み得る。
【００８４】
したがって、本願発明の複数の実施形態は、本明細書で説明される複数の構造、複数の回路、複数の装置、複数のプロセッサ、および／または複数のシステム機能を定める、Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ（ＨＤＬ）などの複数の命令を保持する、または設計データを保持する非一時的な有形のマシン可読媒体も含む。そのような複数の実施形態は、プログラム製品とも呼ばれ得る。
【００８５】
特定の例示的な複数の実施形態が説明され、添付の複数の図面において示されてきたが、そのような複数の実施形態は単に例示的であり、幅広い本願発明を限定するものではないこと、および本開示の検討により当業者は様々な他の修正例を思い付くので、本願発明は、示され説明された特定の複数の構造および複数の構成に限定されないことが理解されるべきである。成長が速く、更なる進歩が容易には予知出来ない本技術分野のような技術領域において、開示された複数の実施形態は容易に、本開示の複数の原理、または添付の複数の請求項の態様から逸脱することなく、技術進歩を可能とすることにより促されるように構成および詳細において修正可能であり得る。
【図１Ａ】
2015534188.tif 000003
【図１Ｂ】
2015534188.tif 000004
【図２Ａ】
2015534188.tif 000005
【図２Ｂ】
2015534188.tif 000006
【図２Ｃ】
2015534188.tif 000007
【図３】
2015534188.tif 000008
【図４Ａ】
2015534188.tif 000009
【図４Ｂ】
2015534188.tif 000010
【図５】
2015534188.tif 000011
【図６】
2015534188.tif 000012
【図７Ａ】
2015534188.tif 000013
【図７Ｂ】
2015534188.tif 000014
【図８Ａ】
2015534188.tif 000015
【図８Ｂ】
2015534188.tif 000016
【図９】
2015534188.tif 000017
【図１０】
2015534188.tif 000018
【図１１】
2015534188.tif 000019
【図１２】
2015534188.tif 000020
【図１３】
2015534188.tif 000021
【国際調査報告】
2015534188.tif 000022
2015534188.tif 000023