(57)【要約】  ある態様の装置は、複数のコアと、複数のコアの各々と連結される共有コア拡張ロジックとを含む。共有コア拡張ロジックは、複数のコアの各々に共有される共有データ処理ロジックを有する。複数のコアの各々に対する命令実行ロジックは、共有コア拡張呼び出し命令に応答して、共有コア拡張ロジックを呼び出す。呼び出しは、対応するコアの代わりに、共有データ処理ロジックにデータ処理を実行させる。他の装置、複数の方法及び複数のシステムも開示される。
2015532990.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと、
前記複数のコアの各々と連結される共有コア拡張ロジックであって、前記複数のコアの各々に共有される共有データ処理ロジックを有する共有コア拡張ロジックと、
対応するコアの代わりに、前記共有データ処理ロジックにデータ処理を実行させるために、共有コア拡張呼び出し命令に応答して前記共有コア拡張ロジックを呼び出す、前記複数のコアの各々に対する命令実行ロジックとを備える、装置。
【請求項２】
前記共有コア拡張呼び出し命令は、前記複数のコアの命令セットのマクロ命令を備える、請求項１に記載の装置。
【請求項３】
前記命令実行ロジック及び前記共有コア拡張ロジックと連結される複数の共有コア拡張コマンドレジスタをさらに備え、前記共有コア拡張呼び出し命令は、前記複数の共有コア拡張コマンドレジスタの中の１つの共有コア拡張コマンドレジスタ及び複数のパラメータを示す、請求項１または２に記載の装置。
【請求項４】
前記命令実行ロジックは、前記共有コア拡張呼び出し命令に応答して、示された前記複数のパラメータに基づいて、示された前記１つの共有コア拡張コマンドレジスタにデータを格納する、請求項３に記載の装置。
【請求項５】
前記命令実行ロジックは、前記共有コア拡張呼び出し命令に応答して、示された前記１つの共有コア拡張コマンドレジスタに、
呼び出し属性情報を指す呼び出し属性ポインタフィールドのポインタと、
入力データオペランドを指す入力データオペランドポインタフィールドのポインタと、
出力データオペランドを指す出力データオペランドポインタフィールドのポインタとを格納する、請求項４に記載の装置。
【請求項６】
前記共有コア拡張ロジックは、前記呼び出しに関連付けられたデータ処理に基づいて、示された前記１つの共有コア拡張コマンドレジスタに、
前記呼び出しのステータスを提供するステータスフィールドと、
前記呼び出しの進捗度を提供する進捗度フィールドとを格納する、請求項４または５に記載の装置。
【請求項７】
前記共有データ処理ロジックは、少なくとも１つのベクトル実行ユニットを備える、請求項１から６のいずれか１項に記載の装置。
【請求項８】
前記共有データ処理ロジックは、前記複数のコア内に見られないデータ処理ロジックを備える、請求項１から７のいずれか１項に記載の装置。
【請求項９】
前記命令実行ロジックは、メモリにおいて少なくとも１つの出力データ構造を生成するルーチンに従って、前記共有コア拡張呼び出し命令に応答して、メモリにおける少なくとも１つの入力データ構造に対してデータ処理を実行させるために、前記共有コア拡張ロジックを呼び出す、請求項１から８のいずれか１項に記載の装置。
【請求項１０】
前記複数のコアの第１のコアのメモリ管理ユニット（ＭＭＵ）と、
前記共有コア拡張ロジックの共有コア拡張ＭＭＵと、
前記第１のコアの前記ＭＭＵと前記共有コア拡張ＭＭＵとを同期するために、ハードウェアにおいて複数の同期信号を交換する前記第１のコアの前記ＭＭＵと前記共有コア拡張ＭＭＵとの間のハードウェアインターフェースとをさらに備える、請求項１から９のいずれか１項に記載の装置。
【請求項１１】
前記複数のコアの第１のコアのメモリ管理ユニット（ＭＭＵ）と、
前記共有コア拡張ロジックの共有コア拡張ＭＭＵと、
前記第１のコアからの呼び出しに対応するページフォルトを、前記共有コア拡張ＭＭＵから前記第１のコアの前記ＭＭＵにルーティングする、前記第１のコアの前記ＭＭＵと前記共有コア拡張ＭＭＵとの間のインターフェースとをさらに備える、請求項１から９のいずれか１項に記載の装置。
【請求項１２】
ダイ上に前記共有コア拡張ロジックと共に前記複数のコアから前記共有データ処理ロジックに対する複数の呼び出しをスケジューリングするハードウェアスケジューリングロジックをさらに備える、請求項１から１１のいずれか１項に記載の装置。
【請求項１３】
複数のコアを有するプロセッサのコア内で、共有コア拡張呼び出し命令を受信する段階であって、前記共有コア拡張呼び出し命令は、データ処理を実行させるために、前記コアに、複数のコアにより共有される共有コア拡張ロジックを呼び出させ、前記共有コア拡張呼び出し命令は、共有コア拡張コマンドレジスタを示し、かつ、実行されるべき前記データ処理を指定する複数のパラメータを示す、段階と、
前記共有コア拡張呼び出し命令に応答して、前記データ処理を実行させるために前記共有コア拡張ロジックを呼び出す段階であって、前記命令によって示された前記複数のパラメータに基づいて、前記命令によって示された前記共有コア拡張コマンドレジスタにデータを格納する段階を含む、前記共有コア拡張ロジックを呼び出す段階とを備える、方法。
【請求項１４】
前記共有コア拡張呼び出し命令は、前記コアの命令セットのマクロ命令を備え、前記共有コア拡張コマンドレジスタは、アーキテクチャレジスタを備える、請求項１３に記載の方法。
【請求項１５】
前記複数のパラメータに基づいて、示された前記共有コア拡張コマンドレジスタに前記データを格納する段階は、
呼び出し属性情報を指す呼び出し属性ポインタフィールドにポインタを格納する段階と、
入力データオペランドを指す入力データオペランドポインタフィールドにポインタを格納する段階と、
出力データオペランドを指す出力データオペランドポインタフィールドにポインタを格納する段階とを備える、請求項１３または１４に記載の方法。
【請求項１６】
前記呼び出しに関連付けられたデータ処理に基づいて、示された前記共有コア拡張コマンドレジスタにデータを格納する前記共有コア拡張ロジックをさらに備え、前記データを格納する前記段階は、
前記呼び出しのステータスを提供するために、示された前記レジスタのステータスフィールドにステータスを格納する段階と、
前記呼び出しの進捗度を提供するために、示された前記レジスタの進捗度フィールドに進捗度を格納する段階とを含む、請求項１３から１５のいずれか１項に記載の方法。
【請求項１７】
前記命令を受信する段階は、非ブロック共有コア拡張呼び出し命令を受信する段階を備え、前記共有コア拡張ロジックが実行されるべき前記データ処理を受け入れた後、前記コアにおいて、前記非ブロック共有コア拡張呼び出し命令をリタイアさせる段階をさらに備える、請求項１３から１６のいずれか１項に記載の方法。
【請求項１８】
前記命令を受信する段階は、ブロック共有コア拡張呼び出し命令を受信する段階を備え、前記共有コア拡張ロジックが前記データ処理を完了した後、前記コアにおいて、前記ブロック共有コア拡張呼び出し命令をリタイアさせる段階をさらに備える、請求項１３から１７のいずれか１項に記載の方法。
【請求項１９】
前記命令を受信する段階は、ブロック共有コア拡張呼び出し命令を受信する段階を備え、前記ブロック共有コア拡張呼び出し命令は、示された前記共有コア拡張コマンドレジスタを解放するタイムアウト値を示す、請求項１３から１７のいずれか１項に記載の方法。
【請求項２０】
呼び出す段階は、メモリにおいて少なくとも１つの出力データ構造を生成するルーチンに従って、メモリにおいて、少なくとも１つの入力データ構造に対してデータ処理を実行させる前記共有コア拡張ロジックを呼び出す段階を備える、請求項１３から１９のいずれか１項に記載の方法。
【請求項２１】
前記コアのメモリ管理ユニット（ＭＭＵ）と前記共有コア拡張ロジックの共有コア拡張ＭＭＵとの間でハードウェアにおいて同期信号を交換することにより、前記ＭＭＵと前記共有コア拡張ＭＭＵとを同期する段階をさらに備える、請求項１３から２０のいずれか１項に記載の方法。
【請求項２２】
前記呼び出しに対応するページフォルトを、共有コア拡張メモリ管理ユニット（ＭＭＵ）から前記コアのＭＭＵへルーティングする段階をさらに備える、請求項１３から２１のいずれか１項に記載の方法。
【請求項２３】
前記共有コア拡張呼び出し命令を受信する前に、
前記共有コア拡張コマンドレジスタを示す供給コア拡張停止命令を受信する段階と、
前記供給コア拡張停止命令に応答して、前記供給コア拡張停止命令によって示された前記共有コア拡張コマンドレジスタに対応するデータ処理を中止し、前記共有コア拡張コマンドレジスタを解放する段階とをさらに備える、請求項１３から２２のいずれか１項に記載の方法。
【請求項２４】
前記共有コア拡張呼び出し命令を受信した後に、
前記共有コア拡張コマンドレジスタを示す共有コア拡張読み出し命令を受信する段階と、
前記共有コア拡張読み出し命令に応答して、前記共有コア拡張読み出し命令によって示された前記共有コア拡張コマンドレジスタから、データ処理完了ステータスを読み出す段階とをさらに備える、請求項１３から２３のいずれか１項に記載の方法。
【請求項２５】
プロセッサを備えるシステムであって、前記プロセッサは、
複数のコアと、
前記複数のコアの各々と連結される共有コア拡張ロジックであって、前記複数のコアの各々に共有される共有データ処理ロジックを有する共有コア拡張ロジックと、
対応するコアの代わりに、前記共有データ処理ロジックにデータ処理を実行させるために、共有コア拡張呼び出し命令に応答して前記共有コア拡張ロジックを呼び出す、前記複数のコアの各々に対する命令実行ロジックと、
前記プロセッサと連結されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）とを備える、システム。
【請求項２６】
前記共有コア拡張呼び出し命令は、前記複数のコアの命令セットのマクロ命令を備える、請求項２５に記載のシステム。
【請求項２７】
前記命令実行ロジック及び前記共有コア拡張ロジックと連結される複数のアーキテクチャ上の共有コア拡張コマンドレジスタをさらに備え、前記共有コア拡張呼び出し命令は、複数の前記共有コア拡張コマンドレジスタの１つ及び複数のパラメータを示す、請求項２５または２６に記載のシステム。
【請求項２８】
コアと前記共有コア拡張ロジックとの間で複数のコンテキストスイッチを生じさせる、オペレーティングシステムのプレエンプション及びコアの複数の例外条件をルーティングするハードウェアインターフェースをさらに備える、請求項１から１２のいずれか１項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
複数の実施形態は、複数のプロセッサに関する。特に、複数の実施形態は、複数のコアを有する複数のプロセッサに関する。
【背景技術】
【０００２】
図１は、従来技術のプロセッサ１００のブロック図である。プロセッサは、複数のコア１０１を有する。特に、図示されたプロセッサは、コア０  １０１−０、コア１  １０１−１からコアＭ  １０１−Ｍを有する。例として、２個、４個、７個、１０個、１６個または任意の他の適切な数のコアがあってもよい。複数のコアの各々は、対応する単一命令複数データ（ＳＩＭＤ）実行ロジック１０２を含む。特に、コア０は、ＳＩＭＤ実行ロジック１０２−０を含み、コア１は、ＳＩＭＤ実行ロジック１０２−１を含み、コアＭは、ＳＩＭＤ実行ロジック１０２−Ｍを含む。すなわち、ＳＩＭＤ実行ロジックは、コア毎に複製される。各ＳＩＭＤ実行ロジックは、ＳＩＭＤ、ベクトルまたはパックドデータオペランドを処理するように動作可能である。複数のオペランドの各々は、複数のオペランド内にパックされ、ＳＩＭＤ実行ロジックによって並列に処理される８ビット、１６ビット、３２ビットまたは６４ビットのデータ要素のような、より小さい複数のデータ要素を有してもよい。
【０００３】
いくつかのプロセッサでは、各ＳＩＭＤ実行ロジックは、比較的大量のロジックを表してもよい。例えば、これは、各ＳＩＭＤ実行ロジックが、複数の広いＳＩＭＤオペランドを処理する場合であってもよい。いくつかのプロセッサは、例えば、１２８ビットの複数のオペランド、２５６ビットの複数のオペランド、５１２ビットの複数のオペランド、１０２４ビットの複数のオペランド等のような、比較的幅の広いベクトルまたはパックドデータオペランドを処理することができる。一般に、かかる広い複数のオペランドを処理するために必要とされるＳＩＭＤ実行ロジックは、比較的大きい傾向があり、比較的大量のダイ領域を消費するため、プロセッサの製造コストを増大させ、使用時に比較的大量の電力を消費する。各コアについて比較的大きいＳＩＭＤ実行ロジックを複製することは、かかる複数の問題を悪化させる傾向がある。さらに、多くの用途または動作負荷のシナリオでは、コア毎に複製されたＳＩＭＤ実行ロジックは、少なくともいくらかの時間、十分に利用されていない傾向がある。今後、コアの数が増え続けると、かかる複数の問題がさらに深刻化する可能性がある。
【０００４】
さらに、図１の従来技術によるプロセッサでは、複数のコアの各々も、従来のフロー制御ロジックを有する。特に、コア０は、フロー制御ロジック１０３−０を有し、コア１は、フロー制御ロジック１０３−１を有し、コアＭは、フロー制御ロジック１０３−Ｍを有する。一般に、フロー制御ロジックは、広範な複数の利用モデル、例えば、投機実行の導入をカバーするように、設計または最適化されてもよい。しかしながら、これは、概して、ＳＩＭＤ及び様々な他の複数のハイスループット演算にとっては、利益が比較的小さい傾向があるものの、比較的高い電力消費を伴う傾向がある。
【図面の簡単な説明】
【０００５】
本発明は、本発明の複数の実施形態を示すために用いられる以下の説明及び複数の添付図面を参照することにより、最もよく理解され得る。複数の図面は、以下のとおりである。
【０００６】
【図１】従来技術によるプロセッサのブロック図である。
【０００７】
【図２】プロセッサの実施形態及びメモリの実施形態を有するシステムの実施形態のブロック図である。
【０００８】
【図３】共有コア拡張インターフェースロジックの実施形態を含み、コアインターフェースロジックの実施形態を含む共有コア拡張ロジックの実施形態を有するコア０を有するプロセッサの実施形態のブロック図である。
【０００９】
【図４】共有コア拡張呼び出し命令の実施形態を処理する方法の実施形態のブロックフロー図である。
【００１０】
【図５】共有コア拡張コマンドレジスタの実施形態の例のブロック図である。
【００１１】
【図６】共有コア拡張読み出し命令の実施形態を処理する方法の実施形態のブロックフロー図である。
【００１２】
【図７】供給コア拡張停止命令の実施形態を処理する方法の実施形態のブロックフロー図である。
【００１３】
【図８Ａ】本発明の複数の実施形態に係る例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行パイプラインの両方を示すブロック図である。
【００１４】
【図８Ｂ】本発明の複数の実施形態に係るプロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行アーキテクチャコアの両方を示すブロック図である。
【００１５】
【図９Ａ】本発明の複数の実施形態に係る単一のプロセッサコアのブロック図であり、そのオンダイインターコネクトネットワークとの接続、及びその二次（Ｌ２）キャッシュ９０４のローカルサブセットと共に示される。
【００１６】
【図９Ｂ】本発明の複数の実施形態に係る図９Ａのプロセッサコアの一部の拡大図である。
【００１７】
【図１０】１つより多くのコアを有してもよく、集積メモリコントローラを有してもよく、集中画像表示を有してもよい、本発明の複数の実施形態に係るプロセッサのブロック図である。
【００１８】
【図１１】本発明の一実施形態に係るシステムのブロック図を示す。
【００１９】
【図１２】本発明の実施形態に係る第１のより具体的な、例示的なシステムのブロック図を示す。
【００２０】
【図１３】本発明の実施形態に係る第２のより具体的な、例示的なシステムのブロック図を示す。
【００２１】
【図１４】本発明の実施形態に係るＳｏＣのブロック図を示す。
【００２２】
【図１５】ソース命令セットの複数のバイナリ命令をターゲット命令セットの複数のバイナリ命令に変換するための本発明の複数の実施形態に係るソフトウェア命令変換器の使用を対比したブロック図である。
【発明を実施するための形態】
【００２３】
複数のコア及び複数のコアによって共有される（例えば、複数のコアの各々に対してデータ処理を実行するように動作可能な）共有コア拡張ロジックを有する複数のプロセッサの複数の実施形態が、本明細書で開示される。複数の共有コア拡張使用命令、複数の共有コア拡張使用命令を実行する複数のプロセッサ、複数の共有コア拡張使用命令を処理または実行する場合に複数のプロセッサによって実行される複数の方法、及び複数の共有コア拡張使用命令を処理又は実行するための１つまたは複数のプロセッサを組み込んだ複数のシステムも、本明細書で開示される。
【００２４】
以下の説明では、特定のマイクロアーキテクチャの複数の詳細、特定のコマンドレジスタの複数のフォーマット、特定の共有コア拡張使用命令の複数の機能性、複数の共有コア拡張使用命令の特定の複数のグループ、特定の複数のタイプ及び複数の相互関係の複数のシステムコンポーネント、及び特定のロジック区画化／統合の複数の詳細のような、数々の具体的な複数の詳細が示される。しかしながら、本発明の複数の実施形態は、これらの具体的な複数の詳細がなくても実施され得ることが理解される。他の複数の例では、周知の複数の回路、複数の構造及び複数の技術は、この説明に対する理解の妨げとならないよう、詳細に示されてはいない。
【００２５】
図２は、プロセッサ２１０の実施形態及びメモリ２１８の実施形態を有するシステム２０９の実施形態のブロック図である。プロセッサ及びメモリは、連結され、もしくは、１つまたは複数のバスまたは他の複数のインターコネクト２１９を介して互いに通信を行う。様々な複数の実施形態において、システム２０９は、デスクトップコンピュータシステム、ラップトップコンピュータシステム、サーバコンピュータシステム、ネットワーク要素、携帯電話またはマルチコアプロセッサ及びメモリを有する他のタイプの電子デバイスを表してもよい。
【００２６】
プロセッサ２１０は、複数のコア２１１を有する。図示されたプロセッサは、コア０  ２１１−０からコアＭ  ２１１−Ｍを有する。例として、２個、４個、７個、１０個、１６個、３２個、６４個、１２８個またはそれより多くのコアまたは特定の実装に望ましい任意の他の合理的で適切な数のコアがあってもよい。いくつかの実施形態では、複数のコアの各々は、他の複数のコアから実質的に独立して動作可能であってもよい。複数のコアの各々は、少なくとも１つのスレッドを処理可能である。図示されるように、コア０は、スレッド０  ２１２−０を有し、選択的にスレッドＰ  ２１２−Ｐまで含んでもよい。同様に、コアＭは、スレッド０  ２１２−０を有し、選択的にスレッドＰ  ２１２−Ｐまで含んでもよい。複数のスレッドＰの数は、任意の合理的で適切な数のスレッドであってもよい。本発明の範囲は、任意の公知の数のコア、またはこのような複数のコアが処理可能な任意の公知の数のスレッドに限定されない。
【００２７】
プロセッサは、様々な複合命令セットコンピュータ（ＣＩＳＣ）の複数のプロセッサ、様々な縮小命令セットコンピュータ（ＲＩＳＣ）の複数のプロセッサ、様々な超長命令語（ＶＬＩＷ）の複数のプロセッサ、様々なこれらの複数のハイブリッド、または完全に他の複数のタイプの複数のプロセッサのいずれであってもよい。いくつかの実施形態では、複数のコアは、デスクトップ、ラップトップ、サーバ及び同様の複数のコンピュータシステムで用いられるタイプの汎用プロセッサの複数の汎用コアであってもよい。いくつかの実施形態では、複数のコアは、複数の特別用途コアであってもよい。適した複数の特別用途コアの複数の例は、限定的ではないが、わずかな例を挙げれば、複数のグラフィクスプロセッサコア、複数のデジタルシグナルプロセッサ（ＤＳＰ）コア及び複数のネットワークプロセッサコアを含む。いくつかの実施形態では、プロセッサは、複数の汎用または特別用途コアと、グラフィクスユニット、メディアブロック、複数のコアと共にチップ上に集積されたシステムメモリの中の１つまたは複数とを有するシステムオンチップ（ＳｏＣ）であってもよい。
【００２８】
プロセッサは、共有コア拡張ロジック２１４の実施形態をさらに含む。共有コア拡張ロジックは、複数のコア２１１の各々によって共有される（例えば、複数のコアの各々に対してデータ処理を実行するように動作可能である）。共有コア拡張ロジックは、複数のコアの各々に対してデータ処理を実行するように動作可能な共有データ処理ロジック２１６を含む。共有コア拡張ロジック及び複数のコアは、プロセッサの１つまたは複数のバスまたは他の複数のインターコネクト２１７によって、互いに連結される。複数のコア及び共有コア拡張ロジックは、対応するインターフェースロジック２１３、２１５を含むことにより、複数のコアの各々における１つまたは複数の物理的スレッド及び共有コア拡張ロジックは、互いにインターフェースまたは連携する（例えば、複数のコアの複数のスレッドに対し、データ処理を実行させるために共有コア拡張ロジックを呼び出す、データ処理のステータスをチェックする、データ処理を停止する、複数のコンテキストスイッチに対する複数の仮想メモリ属性を同期させる、データ処理中に発生した複数のページフォルトをルーティングする等）ことができる。共有コア拡張ロジックによって実行される複数のコンピュータタスクは、各物理的スレッドの代わりに、その具体的な物理的スレッドの論理的プロセス下で実行されてもよい。さらに後述されるように、インターフェースに用いられるコンテキストは、物理的スレッド毎に提供されてもよい。
【００２９】
特に、コア０は、コア０のスレッド０に固有の少なくともいくつかのロジック及びコア０のスレッドＰに固有の少なくともいくつかのロジックを含む共有コア拡張インターフェースロジック２１３−０の実施形態を含む。同様に、コアＭは、コアＭのスレッド０に固有の少なくともいくつかのロジック及びコアＭのスレッドＰに固有の少なくともいくつかのロジックを含む共有コア拡張インターフェースロジック２１３−Ｍの実施形態を含む。他の複数のコアの各々（もしあれば）は、同様に、かかる共有コア拡張インターフェースロジックを含む。共有コア拡張ロジック２１４は、対応するコアインターフェースロジック２１５の実施形態を含む。各コア２１１は、その対応する共有コア拡張インターフェースロジック２１３を介して、共有コア拡張ロジック２１４のコアインターフェースロジック２１５とインターフェースまたは連携してもよい。いくつかの実施形態では、共有コア拡張インターフェースロジック２１３及びコアインターフェースロジック２１５は、複数のコアが共有コア拡張ロジックを共有する（例えば、共有データ処理ロジック２１６によってデータ処理を共有する）ことができるように、アーキテクチャインターフェース（例えば、新たな複数のアーキテクチャマクロ命令及び新たな複数のアーキテクチャレジスタ）、マイクロアーキテクチャインターフェースまたはハードウェアメカニズム（例えば、データ処理スケジューリングロジック、メモリ管理ユニット（ＭＭＵ）同期ロジック、ページフォルトルーティングロジック等）を提供してもよい。共有コア拡張インターフェースロジック２１３及びコアインターフェースロジック２１５の詳細な複数の例示的な実施形態は、さらに後述される。
【００３０】
共有データ処理ロジック２１６は、様々な異なる複数の実施形態において、複数の異なるタイプのデータ処理ロジックを表してもよい。背景技術の部分で前述されたように、特定の複数のタイプのデータ処理ロジック（例えば、特定の複数のワイドＳＩＭＤ実行ユニット）は、従来、コア毎に複製されてきた。前述したように、しばしば、この複製されたロジックは、比較的大きくなる傾向がある。さらに、しばしば、この複製されたロジックは、多くの共通する動作負荷のシナリオでは、少なくともいくらかの時間、十分に利用されていない。かかるロジックの複製は、概して、比較的大量のダイ領域を消費する傾向があることにより、製造コストを増大させ、比較的大量の電力を消費する。いくつかの実施形態では、かかる比較的大きい及び／または一般に十分に利用されていない、従来はコア毎に複製されるデータ処理ロジックは、データ処理ロジックの単一の共有コピーとして、複数のコアから共有コア拡張ロジックに抽出されてもよい。さらに、図１の複数のコアの従来のフロー制御ロジックの場合のように、広範な複数の利用モデル、例えば、投機実行の導入をカバーするように設計または最適化されることとは対照的に、共有コア拡張ロジック２１４は、所望のまたはハイスループットのために最適化されるフロー制御ロジックを採用してもよい。これは概して、スループット志向のアルゴリズムに対して、よりハイレベルな電力性能の効率性を提供する傾向がある。
【００３１】
様々な複数の実施形態において、共有データ処理ロジックは、スループット志向のハードウェア計算機能ロジック、ハイスループット計算エンジン、行列乗算ロジック、行列転置ロジック、有限フィルタロジック、合計絶対差ロジック、ヒストグラム計算ロジック、ギャザースキャッタ命令実装ロジック、超越ベクトル実行ロジック等を表してもよい。いくつかの実施形態では、共有データ処理ロジックは、例えば、複数のＳＩＭＤ実行ユニット（例えば、潜在的には、比較的広い複数のＳＩＭＤ実行ユニット）などの複数の実行ユニットを含んでもよい。いくつかの実施形態では、共有コア拡張ロジックは、例えばメモリ２１８内の複数の共有コア拡張データ構造２０８（例えば、複数の行列、複数のテーブル等）と連携してもよい。
【００３２】
有利には、ロジックの複製と比較して、共有コア拡張ロジックは、ロジック実行のために必要なダイ領域全体、ロジック製造コスト及び／またはロジックの消費電力の中で１つまたは複数を低減させる助けとなり得る。すなわち、共有コア拡張ロジックによれば、複数のコアは、かかる複数のリソースをコア毎に複製するために概して高い統合コストをかけることなく、一般的なデータ処理機能評価ハードウェアの複数のリソースを共有し得る。明確性のために、特定の共有データ処理ロジックが大きいことは必要とされないが、サイズ、コスト及び電力削減の利益の最大化は、比較的大きいロジックが、コア毎に複製される代わりに、複数のコアによって共有される場合に実現されることが多い。さらに、共有ロジックは、コア毎に複製されたとしたら、さもなければ比較的十分に利用されていなかった場合に、共有はロジックの活用を増大させる傾向があり得ることから、十分に利用されていないまたは不要なロジックが統合されることによりダイ領域及び製造コストを低減させ得るため、利益の最大化が実現されることが多い。さらなる利点として、共有コア拡張ロジックは、潜在的には、複数のコアが１つのタイプの処理に対して（例えば、スカラ動作負荷性能、電力及びエリアに対して）カスタマイズまたは最適化され、共有コア拡張ロジックが他のタイプの処理に対して（例えば、スループット志向の動作負荷性能、電力及びエリアに対して）カスタマイズまたは最適化されるために、さらに用いられてもよい。
【００３３】
図３は、共有コア拡張インターフェースロジック３１３の実施形態の例を含むコア０  ３１１−０と、コアインターフェースロジック３１５の実施形態の例を含む共有コア拡張ロジック３１４の実施形態とを有するプロセッサ３１０の実施形態のブロック図である。前述したように、プロセッサは、コアＭ（不図示）までの１つまたは複数の他のコアをさらに含んでもよい。共有コア拡張インターフェースロジック３１３に加えて、コア０は、複数のコアに従来見られたタイプの従来のロジック３３４（例えば、１つまたは複数の実行ユニット、複数のアーキテクチャレジスタ、１つまたは複数のキャッシュ、マイクロアーキテクチャロジック等）をさらに有する。本発明の範囲は、あらゆる公知のかかる従来のロジックに限定されない。コアインターフェースロジック３１５に加えて、共有コア拡張ロジック３１４は、共有データ処理ロジック３１６、及び複数のコアからのデータ処理または複数のタスクを共有データ処理ロジックに対してスケジューリングするスケジューラ３４４をさらに有する。
【００３４】
コア０  ３１１−０上で実行する１つまたは複数の物理的スレッドの各々は、共有コア拡張ロジック３１４とのインターフェースをとるために、共有コア拡張インターフェースロジック３１３を用いてもよい。共有コア拡張インターフェースロジック３１３は、コア０の命令セット３２２の複数の共有コア拡張使用命令３２３を含む。命令セットは、コアの命令セットアーキテクチャ（ＩＳＡ）の一部である。ＩＳＡは、プログラミングに関するコアのアーキテクチャの一部を表す。ＩＳＡは、一般には、プロセッサの複数のネイティブ命令、複数のアーキテクチャレジスタ、複数のデータ型、複数のアドレッシングモード、メモリアーキテクチャ、割り込み及び例外処理等を含む。ＩＳＡは、概して、ＩＳＡを実装するために選択された特定の複数の設計技術を表すマイクロアーキテクチャとは区別される。異なる複数のマイクロアーキテクチャによる複数のプロセッサまたは複数のコアは、共通ＩＳＡを共有してもよい。共有コア拡張使用命令３２３を含む命令セットの複数の命令は、複数のマイクロ命令、マイクロｏｐ、またはより低レベルの複数の命令（例えば、復号ロジックが複数の機械命令または複数のマクロ命令を復号した結果のもの）とは対照的に、複数の機械命令、複数のマクロ命令またはより高レベルの複数の命令（例えば、実行のためにコアに与えられる複数の命令）を表す。
【００３５】
共有コア拡張インターフェースロジック３１３は、複数の共有コア拡張コマンドレジスタ（ＳＣＥＲＣＲ）３２８のコア０、スレッド０セットをさらに含む。各物理的スレッドは、他の複数のスレッドの進捗度と無関係に保存及び復元されるべき当該コンテキストの一部としてこれと関連付けられた複数のＳＣＥＲＣＲレジスタのセットを有してもよい。いくつかの実施形態では、コア０の場合、コア０上で実行する１つまたは複数の物理的スレッドの各々に対して、スレッド毎に与えられる複数のＳＣＥＲＣＲの複数のセットがあってもよい。例えば、図示された実施形態では、コア０、スレッド０の複数のＳＣＥＲＣＲは、スレッド０に属してもよい。同様に、コア０上で実行する各物理的スレッドは、共有コア拡張ロジック３１４とのインターフェースをとるために、コア０、スレッド固有の複数のＳＣＥＲＣＲのセットを有してもよい。代替的に、コア０に対し、コア０の複数のＳＣＥＲＣＲの単一のセットがあってもよい。かかる場合には、ハードウェアレベルにおいて、複数の物理的スレッド間で、複数のＳＣＥＲＣＲを共有する時間があってもよい。コンテキストは、複数のコンテキストスイッチにおいてコア０の複数のＳＣＥＲＣＲからスワップされ、保存及び復元されてもよい。
【００３６】
図では、ＳＣＥＲＣＲ０  ３２８−０からＳＣＥＲＣＲＮ  ３２８−Ｎが示される。すなわち、Ｎ＋１本のレジスタが存在する。Ｎ＋１という数は、２、４、８、１６、３２、６４、またはいくつかの他の数などの任意の所望の数であってもよい。Ｎ＋１という数が２のべき乗である必要はないが、これは概して、効率的なレジスタアドレッシングを提供する傾向がある。これらの複数のレジスタの中で所与の１つが、本明細書ではＳＣＥＣＲｘとして一般的に表され、ここで、ｘは、レジスタＳＣＥＲＣＲ０からＳＣＥＲＣＲＮのいずれか１つを表してもよい。
【００３７】
いくつかの実施形態では、複数の共有コア拡張コマンドレジスタは、アーキテクチャ的に可視なコア及び／またはプロセッサのＩＳＡの複数のレジスタであってもよい。複数のアーキテクチャレジスタは、概して、オンダイプロセッサの複数の格納位置を表す。複数のアーキテクチャレジスタは、本明細書では単に複数のレジスタとさらに称されてもよい。他に指定されまたは明らかでない限り、複数のアーキテクチャレジスタ及び複数のレジスタという表現は、本明細書では、ソフトウェアに可視の複数のレジスタ及び／またはプログラマ（例えば、ソフトウェアに可視の）及び／または複数のマクロ命令によって指定される複数のレジスタを指すために用いられる。これらの複数のレジスタは、所与のマイクロアーキテクチャ（例えば、複数の命令に用いられる複数の一時レジスタ、複数のリオーダバッファ、複数のリタイアメントレジスタ等）において、他の非アーキテクチャ的な、またはアーキテクチャ的に可視ではない複数のレジスタと対比される。
【００３８】
共有コア拡張使用命令３２３は、データ処理が実行されるよう、共有コア拡張ロジック３１４への複数の呼び出しを送信、モニタリング及び停止するために用いられる。例として、複数の共有コア拡張使用命令は、並列プログラミングのために用いられてもよく、並列プログラミング動作負荷の効率性及び／またはスループットを向上させるために、命令セット（例えば、命令セットの拡張として）に含まれてもよい。複数の共有コア拡張使用命令は、コア０の複数の共有コア拡張コマンドレジスタ３２８の共有コア拡張コマンドレジスタ（ＳＣＥＣＲｘ）を（例えば、複数のビットまたは１つまたは複数のフィールドを介して）明示的に指定してもよく、または示し（例えば、暗示的に示し）てもよい。複数の共有コア拡張レジスタは、プロセッサのアーキテクチャハードウェアインターフェースを共有コア拡張ロジックに提供してもよい。
【００３９】
図示された実施形態では、共有コア拡張使用命令３２３は、フォーマットＳＣＥ呼び出し（ＳＣＥＣＲｘ、複数のパラメータ）を有する共有コア拡張（ＳＣＥ）呼び出し命令３２４を含む。ＳＣＥＣＲｘは、コア０の複数の共有コア拡張コマンドレジスタ３２８の１つを示し、複数のパラメータは、さらに後述される呼び出しと関連付けられる１つまたは複数のパラメータを示す。図示された複数の共有コア拡張使用命令は、フォーマットＳＣＥ読み出し（ＳＣＥＣＲｘ）を有するＳＣＥ読み出し命令３２５をさらに含む。他の複数の共有コア拡張使用命令は、フォーマットＳＣＥ停止（ＳＣＥＣＲｘ）を有するＳＣＥ停止命令３２６である。さらに他の複数の共有コア拡張使用命令は、フォーマットＳＣＥ待機（ＳＣＥＣＲｘ）を有するＳＣＥ待ち命令３２７である。これらの複数の命令の各々は、実行されるべき命令及び／またはオペレーションを特定するように動作可能なオペレーションコードまたはオペコード（例えば、複数のビットまたは１つまたは複数のフィールド）を含んでもよい。これらの例示的な複数の共有コア拡張使用命令の各々の機能性は、さらに後述される。
【００４０】
これは、複数の共有コア拡張使用命令の適したセットの１つの例示に過ぎないことが理解されよう。例えば、他の複数の実施形態では、図示された複数の命令のいくつかは、選択的に省略されてもよく、及び／またはさらなる複数の命令が、複数の共有コア拡張使用命令に選択的に追加されてもよい。さらに、他の複数の共有コア拡張使用命令及びこれらの複数のセットは、考慮され、当業者に明らかであり、本開示の利益を有する。
【００４１】
コア０  ３１１−０上で実行する複数の物理的スレッドの１つは、共有コア拡張使用命令３２３の１つを発行してもよい。当該スレッドによって発行された共有コア拡張使用命令は、適切なコア０の複数の共有コア拡張コマンドレジスタ３２８を示してもよい。適切なコア０の複数の共有コア拡張コマンドレジスタは、スレッド（例えば、スレッド０）に対応し、スレッド毎にコンテキストを提供してもよい。
【００４２】
再び図３を参照すると、コア０は、復号ロジック３４８を含む。復号ロジックは、デコーダまたは復号ユニットとさらに称されてもよい。復号ロジックは、より高レベルの複数の機械命令または複数のマクロ命令を受信及び復号し、１つまたは複数のより低レベルのマイクロオペレーション、複数のマイクロコードエントリポイント、複数のマイクロ命令または他のより低レベルの複数の命令、もしくは元のより高レベルの命令を反映し、及び／またはこれから導出される複数の制御信号を出力してもよい。１つまたは複数のより低レベルの複数の制御信号は、１つまたは複数のより低レベルの（例えば、回路レベルまたはハードウェアレベルの）オペレーションを介して、より高レベルの命令のオペレーションを実装してもよい。デコーダは、限定的ではないが、複数のマイクロコード読み出し専用メモリ（ＲＯＭ）、複数のルックアップテーブル、複数のハードウェア実装、複数のプログラマブルロジックアレイ（ＰＬＡ）、及び命令の復号を実行するために用いられる、当技術分野で公知の他の複数のメカニズムを含む、様々な複数の異なるメカニズムを用いて実装されてもよい。さらに、いくつかの実施形態では、命令エミュレータ、トランスレータ、モーファ、インタプリタまたは他の命令変換ロジックは、復号ロジックの代わりに、及び／またはこれに加えて、用いられてもよい。
【００４３】
ＳＣＥ命令実行ロジック３３０は、復号ロジック３４８及びコア０の複数の共有コア拡張コマンドレジスタ３２８と連結される。共有コア拡張命令実行ロジックは、１つまたは複数のマイクロオペレーション、複数のマイクロコードエントリポイント、複数のマイクロ命令、他の複数の命令、もしくは複数の共有コア拡張使用命令を反映し、またはこれから導出される他の複数の制御信号を、デコーダから受信してもよい。共有コア拡張命令実行ロジックは、複数の共有コア拡張使用命令に応答して及び／またはこれに指定されたように（例えば、デコーダからの複数の制御信号に応答して）、複数の動作を実行するように動作可能である。いくつかの実施形態では、共有コア拡張命令実行ロジック及び／またはプロセッサは、複数の共有コア拡張使用命令を実行及び／または処理し、複数の共有コア拡張使用命令に応答して及び／またはこれに指定されたように複数の動作を実行するように動作可能な、具体的なまたは特定のロジック（例えば、回路またはソフトウェア及び／またはファームウェアと潜在的に組み合わせられる他のハードウェア）を含んでもよい。
【００４４】
図示された実施形態では、共有コア拡張命令実行ロジックは、共有コア拡張制御ロジック３２９内に含まれる。共有コア拡張制御ロジックは、複数の共有コア拡張コマンドレジスタ３２８、復号ロジック３４８、及びさらに後述されるメモリ管理ユニット３３１と連結される。共有コア拡張制御ロジックは、共有コア拡張インターフェースロジック３１３の様々な制御、管理、調整、タイミング及び関連する複数の実装態様を支援してもよい。
【００４５】
上述したように、コア０の命令セットは、ＳＣＥ呼び出し命令３２４を含む。ＳＣＥ呼び出し命令は、コアの代わりに（例えば、コア上でスレッドを実行する代わりに）データ処理を実行させるべく、共有コア拡張ロジック３１４に呼び出しを送信するために用いられてもよい。例として、コア０上で実行する物理的または論理的スレッドは、データ処理が実行されるよう、共有コア拡張ロジックに呼び出しまたはコマンドを送信するために、ＳＣＥ呼び出し命令を発行してもよい。いくつかの実施形態では、呼び出しまたはコマンドは、複数の共有コア拡張コマンドレジスタ３２８の１つまたは複数を介して、共有コア拡張ロジックに渡されてもよい。例えば、実施形態の共有コア拡張呼び出し命令は、コア０の複数の共有コア拡張コマンドレジスタ３２８（例えば、ＳＣＥＣＲｘ）の１つを指定または示してもよい。すなわち、複数の共有コア拡張コマンドレジスタは、新たなＳＣＥ呼び出しマクロ命令を用いて、複数のコア上のスレッドからアクセス可能であってもよい。いくつかの実施形態では、ＳＣＥ呼び出し命令は、実行されるべきデータ処理をさらに指定、認定または定義するために、より多くのパラメータの１つをさらに指定または示してもよい。データは、ＳＣＥ呼び出し命令に基づいて（例えば、ＳＣＥ呼び出し命令の１つまたは複数のパラメータに基づいて）、示された共有コア拡張コマンドレジスタ（例えば、ＳＣＥＣＲｘ）に書き込まれまたは格納されてもよい。現在のＳＣＥ呼び出しが、既に前のＳＣＥ呼び出しの専用であるまたはこれに占められている共有コア拡張コマンドレジスタに対してなされる場合、現在のＳＣＥ呼び出しは、占められた共有コア拡張コマンドレジスタが解放される（例えば、関連する呼び出しが完了するまたは停止されるとき）まで、ブロックされてもよい。次に、共有コア拡張ロジックは、書き込まれまたは格納されたデータを含む、示された共有コア拡張コマンドレジスタ（例えば、ＳＣＥＣＲｘ）にアクセスしてもよく、（例えば、要求されたデータ処理を実行する）呼び出しまたはコマンドを実装してもよい。
【００４６】
図４は、ＳＣＥ呼び出し命令の実施形態を処理する方法４５０の実施形態のブロックフロー図である。複数の実施形態では、方法は、プロセッサ、コアまたは他のタイプの命令処理装置によって実行されてもよい。いくつかの実施形態では、方法４５０は、図２のプロセッサ２１０または図３のコア０  ３１１−０、もしくは同様のプロセッサまたはコアによって実行されてもよい。代替的に、方法４５０は、完全に異なるプロセッサ、コアまたは命令処理装置によって実行されてもよい。さらに、プロセッサ２１０及びコア３１１−０は、方法４５０と同じ、同様の、または異なる、複数のオペレーション及び複数の方法の複数の実施形態を実行してもよい。
【００４７】
ブロック４５１において、ＳＣＥ呼び出し命令は、複数のコアを有するプロセッサのコア内で受信される。様々な複数の態様では、ＳＣＥ呼び出し命令は、オフコアソースから（例えば、メインメモリ、ディスク、もしくはバスまたはインターコネクトから）コアで受信されてもよく、または、コア内の他のロジック（例えば、命令キャッシュ、キュー、スケジューリングロジック等）からコアの一部で（例えば、復号ロジック、スケジューリングロジック等で）受信されてもよい。ＳＣＥ呼び出し命令は、データ処理を実行させるために、コアにより、共有コア拡張ロジックを呼び出させるものである。共有コア拡張ロジックは、複数のコアにより共有される。ＳＣＥ呼び出し命令は、共有コア拡張コマンドレジスタを示し、１つまたは複数のパラメータをさらに示す。１つまたは複数のパラメータは、共有コア拡張ロジックによって実行されるべきデータ処理を指定する。
【００４８】
いくつかの実施形態では、１つまたは複数のパラメータは、ポインタの１つまたは複数（例えば、複数の明示的な仮想メモリポインタ）を、呼び出しに関連付けられた複数のコマンド属性を有するメモリにおけるコマンド属性データ構造に、１つまたは複数のポインタ（例えば、１つまたは複数の明示的な仮想メモリポインタ）を、データ処理が実行されるべきメモリにおける１つまたは複数の入力データオペランドに、１つまたは複数のポインタ（例えば、１つまたは複数の明示的な仮想メモリポインタ）を、データ処理の複数の結果が格納されるべきメモリにおける１つまたは複数の出力データオペランドに、提供してもよい。例えば、いくつかの実施形態では、１つまたは複数のパラメータは、さらに後述される図５の複数のフィールドに格納されるべき、及び／またはこれを抽出するために用いられるべき情報を提供してもよい。代替的に、他の複数の実施形態では、１つまたは複数のフィールドは、複数のメモリポインタの代わりに、複数のオペコード及び複数の引数の直接符号化を有してもよい。
【００４９】
ブロック４５２において、共有コア拡張ロジックは、データ処理が実行されるように、ＳＣＥ呼び出し命令に応答して呼び出される。いくつかの実施形態では、共有コア拡張ロジックの呼び出しは、命令によって示される１つまたは複数のパラメータに基づいて、命令によって示される共有コア拡張コマンドレジスタにデータを書き込むまたは格納することを含んでもよい。
【００５０】
図５は、共有コア拡張コマンドレジスタ５２８の実施形態の例のブロック図である。共有コア拡張コマンドレジスタは、多数のフィールドを有する。図示された実施形態では、これらの複数のフィールドは、左から右に向かって、ステータスフィールド５５３、進捗度フィールド５５４、コマンドポインタフィールド５５５、入力データオペランドポインタフィールド５５６及び出力データオペランドポインタフィールド５５７を含む。これらの複数のフィールドの各々は、特定の実装に対して所望の情報を伝えるために十分な多数のビットを含んでもよい。
【００５１】
ステータスフィールド５５３は、共有コア拡張コマンドレジスタに対応する呼び出しのステータスを提供するために用いられてもよい。かかるステータスの複数の例は、限定的ではないが、呼び出しが有効（例えば、進行中）、呼び出し完了、呼び出しエラー等を含む。例として、２つのビットは、前述した３つのステータス条件のいずれかを指定するために用いられてもよい。他の例では、単一のビットは、有効及び無効のような２つのステータス条件のいずれかを符号化するために用いられてもよい。有効は、呼び出しが現在進行中であることを表してもよい。無効は、エラーが発生したことを示してもよい。
【００５２】
進捗度フィールド５５４は、共有コア拡張コマンドレジスタに対応する呼び出しの進捗度を提供するために用いられてもよい。進捗度は、完了進捗度のレベルまたは呼び出しまたはコマンドが完了に向けて進捗した程度を表してもよい。進捗度フィールドは、呼び出しの実行において、これまでに完了した作業量をカウントする種類のカウンタを有効に実装してもよい。いくつかの実施形態では、進捗度は、複数のアトミックなコミット点によって表されてもよい。例えば、アトミックなサブオペレーションがＳＣＥロジックによって完了した場合はいつでも、カウンタは、インクリメントされてもよい。アトミックなサブオペレーションは、１つのタイプのデータ処理から他のタイプまで（例えば、１つの例では、特定の数のデータのキャッシュラインが処理された場合）、異なってもよい。いくつかの実施形態では、進捗度フィールドは、共有コア拡張ロジックのデータ処理に関する進捗度のアトミック性、及び共有コア拡張ロジック上におけるコマンドの実行をプレエンプション及びリスケジューリングする能力を提供するために用いられてもよい。呼び出しの実行が割り込まれた場合（例えば、１つのスレッドから他へのコンテキストスイッチで、またはフォールトで）、進捗度フィールドは、保存されてもよい。その後、進捗度フィールドは復元されてもよく、呼び出しに関連付けられたデータ処理が再開した（例えば、スレッドが再送信する場合）。進捗度フィールドの復元により、データ処理は、中断したところで再開可能であってもよい。これは、ＳＣＥロジックにより実行されるべきデータ処理量が比較的大きい及び／または完了するために比較的大量の時間がかかる場合に、特に有用である。
【００５３】
コマンドポインタフィールド５５５は、呼び出しまたは共有コア拡張コマンドレジスタに対応する呼び出しのコマンド属性情報５５８を指すポインタを提供するために用いられてもよい。いくつかの実施形態では、呼び出し属性情報は、呼び出し属性データ構造に含まれてもよい。いくつかの実施形態では、呼び出し属性情報は、メモリ５１８における１つまたは複数のメモリ位置に格納されてもよい。いくつかの実施形態では、ポインタは、明示的な仮想メモリポインタであってもよい。呼び出し属性情報は、呼び出しの複数の属性をさらに指定、認定、定義または特徴付けしてもよい。例えば、呼び出し属性情報は、共有コア拡張ロジックによって実行されるべき正確なタイプのデータ処理をさらに指定、認定、定義または特徴付けしてもよい。いくつかの実施形態では、複数のコマンド属性は、例えば、行列を転置する複数のオペレーション、ヒストグラムを生成する複数のオペレーション、フィルタリングを実行する複数のオペレーション等のような比較的簡単なまたは短い複数の処理ルーチンまたは複数の機能を表す処理を説明してもよい。複数のコマンド属性は、１つまたは複数の出力データオペランド（例えば、１つまたは複数の出力データ構造）を生成するために、１つまたは複数の入力データオペランド（例えば、１つまたは複数の入力データ構造）に対して実行する複数のオペレーションのシーケンスを説明してもよい。いくつかの実施形態では、これらは、様々なかかる比較的簡単なアルゴリズムもしくは典型的には複数のハードウェアアクセラレータまたは複数のグラフィクス処理ユニット等で実行される複数のルーチンのいずれかであってもよい。
【００５４】
入力データオペランドポインタフィールド５５６は、１つまたは複数の入力データオペランドを指す１つまたは複数のポインタを提供するために用いられてもよい。複数の入力データオペランドは、データ処理が共有コア拡張ロジックによって実行されるべきものである。いくつかの実施形態では、１つまたは複数の入力データオペランドは、例えば、複数の行列、複数のテーブル等のような１つまたは複数のデータ構造を表してもよい。示されるように、いくつかの実施形態では、ポインタは、メモリ５１８のメモリ位置における入力データオペランドを指してもよい。いくつかの実施形態では、ポインタは、明示的な仮想メモリポインタであってもよい。他の複数の実施形態では、複数のポインタは、１つまたは複数のレジスタまたは他の複数の格納位置における１つまたは複数の入力データオペランドを指してもよい。
【００５５】
出力データオペランドポインタフィールド５５７は、１つまたは複数の出力データオペランドを指す１つまたは複数のポインタを提供するために用いられてもよい。複数の出力データオペランドは、呼び出し完了時に、共有コア拡張ロジックによって実行されたデータ処理の複数の結果を伝達するためのものである。いくつかの実施形態では、１つまたは複数の出力データオペランドは、例えば、複数の行列、複数のテーブル等のような１つまたは複数のデータ構造を表してもよい。示されるように、いくつかの実施形態では、ポインタは、メモリのメモリ位置における出力データオペランドを指してもよい。いくつかの実施形態では、ポインタは、明示的な仮想メモリポインタであってもよい。他の複数の実施形態では、複数のポインタは、１つまたは複数のレジスタまたは他の複数の格納位置における１つまたは複数の出力データオペランドを指してもよい。
【００５６】
これは、共有コア拡張コマンドレジスタに適したフォーマットの実施形態の一例に過ぎないことが理解されよう。別の複数の実施形態は、図示された複数のフィールドのいくつかを省略してもよく、またはさらなる複数のフィールドを追加してもよい。例えば、複数のフィールドの１つまたは複数は、共有コア拡張コマンドレジスタにおいて明示的に指定される必要のない暗示的な位置を介して提供されてもよい。他の例として、入力データオペランド格納位置は、これが二度指定される必要がないように、出力データオペランド格納位置として再使用されてもよいが、複数の仕様の１つは暗示的であってもよい。さらに他の例として、１つまたは複数のフィールドは、複数のメモリポインタの代わりに、複数のオペコード及び複数の引数の直接符号化を有してもよい。さらに、複数のフィールドの図示された順序／構成は、必要ではなく、むしろ、複数のフィールドは、再構成されてもよい。さらに、複数のフィールドは、複数のビットの連続的な複数のシーケンスを（図中で示唆されるように）含む必要がなく、むしろ、不連続または分離された複数のビットからなってもよい。
【００５７】
再び図３を参照すると、ＳＣＥ呼び出し命令の実行後、ＳＣＥ呼び出し命令（例えば、ＳＣＥＣＲｘ）によって示される共有コア拡張コマンドレジスタは、ＳＣＥ呼び出し命令に対応するデータを格納してもよい。スレッドまたはコアがタスクまたは呼び出しを送信した後、スレッドまたはコアは、先に送信された複数の呼び出しまたは複数のタスクが完了する前に、さらなる複数の呼び出しまたは複数のタスクの準備及び共有コア拡張ロジックへの送信に進んでもよい。さらに、スレッドまたはコアは、前に送信された複数の呼び出しまたは複数のタスクが完了する間に、他の処理の実行に進んでもよい。複数の共有コア拡張コマンドレジスタは、スケジューラ（さらに後述される）と共に、共有コア拡張ロジックに対する複数のタスクまたは複数の呼び出し完了までの間、及びこれらが完了するまで、複数のスレッド及び／または複数のコアが複数のタスクまたは複数の呼び出しを送信し、次に他の複数のタスクまたは複数の呼び出しの送信または他の処理の実行に進むことを可能とする、きめ細かい制御フローの提供を助けてもよい。
【００５８】
共有コア拡張ロジック３１４は、複数のコア０共有コア拡張コマンドレジスタ３２８にアクセスするコアインターフェースロジック３１５を含む。コアインターフェースロジックは、コアＭ及び任意の他の複数のコア（もしあれば）の複数の共有コア拡張コマンドレジスタ３４０にアクセスするためにさらに用いられてもよい。すなわち、いくつかの実施形態では、共有コア拡張ロジック及び／またはコアインターフェースロジックは、複数のコアの各々に対する複数の共有コア拡張コマンドレジスタの個別のセットにアクセスしてもよい。
【００５９】
共有コア拡張ロジックは、複数の共有コア拡張コマンドレジスタ３２８を用いてもよい。例えば、共有コア拡張ロジックは、コマンドフィールド（例えば、フィールド５５５）に指されるコマンド属性情報にアクセスしてもよく、複数の入力データオペランドフィールド（例えば、フィールド５５６）に指される複数の入力データオペランドにアクセスしてもよく、進捗度フィールド（例えば、フィールド５５４）におけるデータ処理の結果として進捗度を更新してもよく、オペレーションが行われ、またはエラーに直面した場合は、完了またはエラーを反映するためにステータスフィールド（例えば、フィールド５５３）を更新してもよく、エラーなしで完了した場合は、複数の出力データオペランドフィールド（例えば、フィールド５５７）のポインタを介して、複数の出力データオペランドにアクセスしてもよい。
【００６０】
説明を容易にするために、共有コア拡張ロジックは、コア０、スレッド０の複数の共有コア拡張コマンドレジスタのコピーを有するものとして示される。しかしながら、共有コア拡張ロジックの複数の共有コア拡張コマンドレジスタは、実際にはコア０、スレッド０の複数の共有コア拡張コマンドレジスタの２つのセットがない場合があることを示すために、複数の破線で示される。むしろ、コア０及び共有コア拡張ロジックの両方は、論理的に、コア０、スレッド０の複数の共有コア拡張コマンドレジスタの同じセットを見てもよい。同様に、共有コア拡張ロジックは、潜在的には、コアＭ、スレッドＰのセット３４０を介して、他の複数のプロセッサの他の複数のスレッドの対応する複数の共有コア拡張コマンドレジスタを見てもよい。さらに明確性のために、物理的コア０、スレッド０の複数の共有コア拡張コマンドレジスタは、コア０に、共有コア拡張ロジックに、コア０の外側かつ共有コア拡張ロジックの外側の位置に、または複数の異なる位置の組み合わせに位置してもよい。
【００６１】
共有コア拡張ロジック３１４は、スケジューラ３４４の実施形態を含む。スケジューラは、ハードウェア、ソフトウェア、ファームウェアまたはいくつかの組み合わせで実装されてもよい。一態様では、スケジューラは、ハードウェアスケジューラであってもよい。スケジューラは、コアＭの複数の共有コア拡張コマンドレジスタ３４０を介してコア０の共有コア拡張コマンドレジスタ３２８にアクセスし、共有データ処理ロジック３１６上でこれらの複数のレジスタを介して伝達される複数の呼び出しに関連付けられたデータ処理をスケジューリングするように動作可能であってもよい。いくつかの実施形態では、スケジューラは、プログラマブルスケジューリングアルゴリズムまたは目的に従って複数のコアに対してデータ処理をスケジューリングする、プログラマブルハードウェアスケジューラまたはプログラマブルハードウェアスケジューリングロジックを表してもよい。いくつかの実施形態では、ハードウェアスケジューラは、コマンド複数のレジスタ間及び複数の物理的スレッド間で循環するように動作可能な状態機械として実装されてもよい。複数のアービトレーションポリシは、潜在的には、複数の機械固有レジスタ（ＭＳＲ）のセットを介して、ソフトウェアにさらされてもよい。他の複数の実施形態では、ハードウェアスケジューラは、例えば、固定の読み出し専用メモリ（ＲＯＭ）及びパッチ可能なランダムアクセスメモリ（ＲＡＭ）のドメインの両方を組み込んだファームウェアブロックとして実装されてもよい。これにより、潜在的には、ハードウェアスケジューラは、オペレーティングシステムの複数の指示、複数のアプリケーションプログラミングインターフェース（ＡＰＩ）、ランタイムコンパイラの複数の指示、複数のリアルタイムハードウェアシグナルまたはかかる複数の制御の組み合わせに依存し得るより複雑なスケジューリングアルゴリズムを用いることができる。例として、スケジューリングは、公平なスケジューリングアルゴリズム、複数のコアのいくつかに対して他よりも重みづけされたスケジューリングアルゴリズム（例えば、コア負荷、処理されているスレッドまたはデータの臨界時間、スレッド優先度に基づいて、または他の複数の目的に従って）であってもよい。当技術分野で公知の多くの異なるタイプのスケジューリングアルゴリズムは、それらの複数の実装の特定の複数の目的に応じた異なる複数の実装に適している。スケジューラは、共有データ処理ロジックに対してスケジューリングされた複数の呼び出しまたは複数のタスクの完了をさらにモニタリングしてもよい。
【００６２】
共有コア拡張ロジック３１４は、ステータス及び／または進捗度更新ロジック３４９をさらに含む。ステータス及び／または進捗度更新ロジックは、共有データ処理ロジック３１６によって処理されている複数の呼び出しのステータス及び／または進捗度をモニタリングしてもよい。ステータス及び／または進捗度更新ロジックは、モニタリングされたステータス及び／または進捗度に基づいて複数の呼び出しに対応する複数の共有コア拡張コマンドレジスタをさらに更新してもよい。例えば、図５のステータスフィールド５５３及び進捗度フィールド５５４は、更新されてもよい。例として、共有コア拡張ロジックに対する呼び出しが完了した場合、ステータスは、完了されたことを反映するために更新されてもよく、または共有コア拡張ロジックに対する呼び出し処理がエラーに直面した場合、ステータスは、エラー状態を反映するために更新されてもよい。他の例として、呼び出しに関連付けられたデータ処理にわたって、ステータス及び／または進捗度更新ロジックは、呼び出し完了の進捗度を更新してもよい（例えば、進捗度フィールド５５４において、アトミックな複数のコミット点を更新してもよい）。
【００６３】
いくつかの実施形態では、オペレーティングシステムは、複数のコンテキストスイッチにおける共有コア拡張コマンドレジスタの状態を管理するために、状態保存／状態復元機能性（例えば、インテルアーキテクチャではｘｓａｖｅ／ｘｒｅｓｔｏｒｅ）を用いてもよい。共有コア拡張ロジックによってまだ完了していない複数の呼び出しまたは複数のコマンドは、コンテキストスイッチにおいて、物理的スレッドによって保存され、次に復元及び再開されてもよい。いくつかの実施形態では、コンテキストスイッチ及びオペレーティングシステムのプレエンプションをサポートするために、複数の共有コア拡張コマンドレジスタは、上述の進捗度フィールドを有することにより、共有コア拡張ロジックによって処理されているデータ処理タスク（の例えばアトミックな進捗度）を記録してもよい。進捗度フィールドは、コンテキストスイッチにおいて、スレッドコンテキストの一部として保存され、オペレーティングシステムがスレッドをリスケジュールした場合にタスクを再開するために用いられてもよい。
【００６４】
共有コア拡張ロジック３１５は、共有コア拡張制御ロジック３４３をさらに含む。
【００６５】
共有コア拡張制御ロジックは、スケジューラ３４４、共有データ処理ロジック３１６、ステータス/進捗度更新ロジック３４９、コア０−Ｍの複数の共有コア拡張コマンドレジスタ３２８、３４０、さらに後述される共有コア拡張メモリ管理ユニット（ＭＭＵ）３４１と連結される。共有コア拡張制御ロジックは、様々な制御、管理、調整、タイミング及び共有コア拡張ロジック３１４が関連する複数の実装態様を支援してもよい。
【００６６】
再び図３のＳＣＥ呼び出し命令３２４及び／または図４の方法のＳＣＥ呼び出し命令を参照すると、いくつかの実施形態では、ＳＣＥ呼び出し命令は、非ブロックＳＣＥ呼び出し命令であってもよい。いくつかの実施形態では、非ブロックＳＣＥ呼び出し命令は、スレッド（例えば、物理的スレッド）から非投機的に送信されてもよく、非ブロックＳＣＥ呼び出し命令が共有コア拡張ロジックにおいて実行のために受け入れられた後で、発行スレッドが実行しているコアにおいてリタイアしてもよい（例えば、ＳＣＥコマンドレジスタに格納される）。
【００６７】
他の複数の実施形態では、ＳＣＥ呼び出し命令は、ブロックＳＣＥ呼び出し命令であってもよい。
【００６８】
いくつかの実施形態では、ブロックＳＣＥ呼び出し命令は、スレッド（例えば、物理的スレッド）から非投機的に送信されてもよく、呼び出しまたはタスクの実行が共有コア拡張ロジックにおいて完了した後で（例えば、共有コア拡張コマンドレジスタのステータスフィールドが、完了されたことを反映するために更新された場合）、発行スレッドが実行しているコアにおいてリタイアしてもよい。いくつかの実施形態では、複数のＳＣＥ呼び出し命令の非ブロック及びブロックの違いの両方は、命令セットに含まれてもよい。
【００６９】
いくつかの実施形態では、ブロックＳＣＥ呼び出し命令は、共有コア拡張コマンドレジスタの解放を待つためのタイムアウト値（例えば、サイクル数）を指定または示してもよい。例えば、このサイクル数または他のタイムアウト値は、ＳＣＥ呼び出し命令の複数のパラメータの１つに指定されてもよい。いくつかの実施形態では、フェール、フォールト、エラー等は、共有コア拡張コマンドレジスタが解放されることなくタイムアウト値に達した場合には、呼び出しに応答して戻されてもよい。
【００７０】
ＳＣＥ呼び出し命令のリタイアを受けて、共有コア拡張ロジックは、割り当てられたタスクまたは呼び出しに従って、メモリ状態を修正してもよい。マルチスレッディング環境では、共有コア拡張を用い、複数の共有オペランドを有し得る複数の論理スレッド間でキャッシュのコヒーレンシ及びメモリの順序を維持するためにソフトウェアの同期が実行されてもよい。代替的に、ハードウェアの同期も、選択的に実行されてもよい。
【００７１】
図６は、ＳＣＥ読み出し命令の実施形態を処理する方法６６２の実施形態のブロックフロー図である。複数の実施形態では、方法は、プロセッサ、コアまたは他のタイプの命令処理装置によって実行されてもよい。いくつかの実施形態では、方法６６２は、図２のプロセッサ２１０または図３のコア０  ３１１−０、または同様のプロセッサまたはコアによって実行されてもよい。代替的に、方法６６２は、完全に異なるプロセッサ、コアまたは命令処理装置によって実行されてもよい。さらに、プロセッサ２１０及びコア３１１−０は、方法６６２と同じ、同様の、または異なる、複数のオペレーション及び複数の方法の複数の実施形態を実行してもよい。
【００７２】
共有コア拡張（ＳＣＥ）読み出し命令は、ブロック６６３において、複数のコアを有するプロセッサのコア内で受信される。様々な複数の態様では、ＳＣＥ読み出し命令は、オフコアソースから（例えば、メインメモリ、ディスク、もしくはバスまたはインターコネクトから）コアで受信されてもよく、または、コア内の他のロジック（例えば、命令キャッシュ、キュー、スケジューリングロジック等）からコアの一部で（例えば、復号ロジック、スケジューリングロジック等で）受信されてもよい。ＳＣＥ読み出し命令は、コアに、共有コア拡張ロジックに対して前になされた呼び出しのステータスの読み出しを実行させる。共有コア拡張ロジックは、複数のコアにより共有される。ＳＣＥ読み出し命令は、共有コア拡張コマンドレジスタを示す。
【００７３】
共有コア拡張ロジックに対して前になされた呼び出しのステータスは、ブロック６６４において、ＳＣＥ読み出し命令に応答して読み出される。いくつかの実施形態では、ステータスの読み出しは、命令によって示される共有コア拡張コマンドレジスタからのデータの読み出しを含んでもよい。いくつかの実施形態では、ステータスは、完了ステータスを含んでもよい。例えば、ステータスフィールド（例えば、図５のステータスフィールド５５３）は、読み出されてもよい。いくつかの実施形態では、読み出しステータスは、完了、エラー、有効から選択されてもよいが、本発明の範囲は、このように限定されない。
【００７４】
他の複数の実施形態では、ＳＣＥ読み出し命令は、示された共有コア拡張コマンドレジスタからの他の情報を読み出してもよい。かかる情報の複数の例は、限定的ではないが、（例えば、図５の進捗度フィールド５５４からの）進捗度、（例えば、フィールド５５７によって示されたように）出力データオペランドまたその一部及び（例えば、フィールド５５５によって示されたように）コマンド属性情報を含む。いくつかの実施形態では、コアがＳＣＥ読み出し命令を受信する代わりにデータ処理が実行されるよう、共有コア拡張コマンドレジスタは、共有コア拡張ロジックに対する前の呼び出しに対応する。
【００７５】
図７は、ＳＣＥ停止命令の実施形態を処理する方法７６６の実施形態のブロックフロー図である。複数の実施形態では、方法は、プロセッサ、コアまたは他のタイプの命令処理装置によって実行されてもよい。いくつかの実施形態では、方法７６６は、図２のプロセッサ２１０または図３のコア０  ３１１−０、または同様のプロセッサまたはコアによって実行されてもよい。代替的に、方法７６６は、完全に異なるプロセッサ、コアまたは命令処理装置によって実行されてもよい。さらに、プロセッサ２１０及びコア３１１−０は、方法７６６と同じ、同様の、または異なる、複数のオペレーション及び複数の方法の複数の実施形態を実行してもよい。
【００７６】
共有コア拡張（ＳＣＥ）停止命令は、ブロック７６７において、複数のコアを有するプロセッサのコア内で受信される。様々な複数の態様では、ＳＣＥ停止命令は、オフコアソースから（例えば、メインメモリ、ディスク、もしくはバスまたはインターコネクトから）コアで受信されてもよく、または、コア内の他のロジック（例えば、命令キャッシュ、キュー、スケジューリングロジック等）からコアの一部で（例えば、復号ロジック、スケジューリングロジック等で）受信されてもよい。ＳＣＥ停止命令は、コアに、共有コア拡張ロジックに対して前になされた呼び出しを停止させるためのものである。共有コア拡張ロジックは、複数のコアにより共有される。ＳＣＥ停止命令は、共有コア拡張コマンドレジスタを示す。
【００７７】
ブロック７６８において、ＳＣＥ停止命令に応答して、共有コア拡張ロジックに対して前になされた呼び出しは、停止される。いくつかの実施形態では、呼び出しの停止は、前になされた呼び出しに対応する、及び／または示された共有コア拡張コマンドレジスタに対応する共有コア拡張ロジックによるデータ処理の中止を含んでもよい。いくつかの実施形態では、呼び出しの停止は、ＳＣＥ停止命令によって示された、占められた共有コア拡張コマンドレジスタの解放をさらに含んでもよい。
【００７８】
いくつかの実施形態では、ブロックＳＣＥ呼び出し命令は、ＳＣＥＲＣＲの解放を待つためのタイムアウト値（例えば、サイクル数）を指定または示してもよく、呼び出しは、タイムアウトが経過した場合、フェールを戻してもよい  フェールは、解放なくタイムアウトに達した場合、及び／またはタイムアウト経過前に完了していないコマンド実行の進行中にタイムアウトに達した場合のいずれかに発生し得る。非ブロック呼び出しでは、ＳＣＥ待ち命令は、共有コア拡張実行に対してブロックするために用いられてもよい。ＳＣＥ待ち命令は、同様に、共有コア拡張コマンドレジスタの解放を待つためのタイムアウト値（例えば、サイクル数）を含んでもよい。共有コア拡張コマンドレジスタの解放なしでタイムアウトが経過した場合、フェール、エラー等は、戻されてもよい。いくつかの実施形態では、ブロックＳＣＥ呼び出し命令及び／またはＳＣＥ待ち命令のタイムアウト値は、命令が指定し得る可変パラメータとして符号化されてもよい。他の複数の実施形態では、タイムアウトは、固定された暗示的な値であってもよい。いくつかの実施形態では、ＳＣＥ待ち命令は、電力消費を削減するために、非ブロックＳＣＥ呼び出し命令と共に用いられてもよい。例えば、ブロックＳＣＥ呼び出し命令がブロックした場合、及び／またはＳＣＥ待ち命令がブロックした場合、物理的スレッドは、（行われることが望ましい他の作業がないと仮定して）選択的に中断され、関連するＳＣＥ呼び出しの完了時に共有コア拡張ロジックがこれを起こすまで、スリープ状態にされてもよい。しかしながら、これは選択的であり、必要ではない。さらに、ブロックＳＣＥ呼び出し命令及び／またはＳＣＥ待ち命令を介してタイムアウト値を示す上述のアプローチの他に、予期されないまたは望ましくない長期間にわたり実行する呼び出しまたはコマンドを停止するための他の複数の方法も、考慮される。
【００７９】
いくつかの実施形態では、ＳＣＥロジックは、コア０と同じ仮想メモリ上で動作してもよい。再び図３を参照すると、コア０  ３１１−０は、メモリ管理ユニット（ＭＭＵ）３３１を有する。ＭＭＵは、共有コア拡張ＭＭＵインターフェースロジック３３２を含む。ＭＭＵ３３１は、共有コア拡張ＭＭＵインターフェースロジック３３２を除き、実質的に従来のものであってもよい。共有コア拡張ロジック３１４は、共有コア拡張ＭＭＵ３４１を有する。ＳＣＥ  ＭＭＵは、コア０のページマッピングを、維持してもよい（例えば、仮想のまたはリニアなメモリから、コア０によってキャッシュまたは保持されるシステムメモリへの複数の変換をキャッシュまたは保持する）。コア０のＴＬＢのものに対応する複数のＴＬＢエントリの維持に加えて、ＳＣＥ  ＭＭＵは、複数のｏコアの各々に対する複数のＴＬＢエントリをさらに維持してもよい。共有コア拡張ＭＭＵは、コアＭＭＵインターフェースロジック３４２を有する。共有コア拡張ＭＭＵインターフェースロジック３３２及びコアＭＭＵインターフェースロジック３４２は、ＭＭＵ３３１及び共有コア拡張ＭＭＵ３４１の間で同期３４６を実行するために、互いにインターフェースをとる。いくつかの実施形態では、共有コア拡張ＭＭＵインターフェースロジック３３２及びコアＭＭＵインターフェースロジック３４２は、ハードウェアメカニズム、またはＭＭＵ３３１及び共有コア拡張ＭＭＵ３４１の同期に対するハードウェアサポートを表してもよい。
【００８０】
いくつかの実施形態では、ＭＭＵ及びＳＣＥ  ＭＭＵ間の同期は、このページマッピングにおける整合を維持するために、実行されてもよい。例えば、ページがコア０によって無効化された場合、コア０は、コア０  ＭＭＵの対応するＴＬＢエントリを無効化してもよい。いくつかの実施形態では、同期は、ＳＣＥロジックのＳＣＥ  ＭＭＵに対する対応するＴＬＢエントリも対応して無効化され得るコア０及びＳＣＥロジックの間でも実行されてもよい。例として、コア０上で実行する物理的スレッドは、ＳＣＥロジックにシグナルを送るために共有コア拡張ＭＭＵインターフェースロジック３３２及びコアＭＭＵインターフェースロジック３４２によって提供されるハードウェアインターフェースを用いることにより、プロセッサ上の複数のバスサイクルを介して対応するＳＣＥ  ＭＭＵのＴＬＢを無効化してもよい。すなわち、いくつかの実施形態では、共有コア拡張ＭＭＵ３４１の同期は、コア０上で実行する物理的スレッド内からのハードウェアによって実行されてもよい。他の例として、スレッドがオペレーティングシステムによってスワップされた場合（例えば、コンテキストスイッチ）、ＳＣＥロジックは、スレッドと関連付けられたコンテキストが後で復元可能なように保存され得るように、コンテキストスイッチのシグナル及び／または通知を受けてもよい。いくつかの実施形態では、かかる同期シグナリングは、ハードウェアレベルで（例えば、ハードウェアメカニズムを介した複数のバスサイクルまたは複数のバストランザクションを介して）あってもよい。すなわち、同期は、ソフトウェアの関与を介して（例えば、オペレーティングシステムの関与なしで）ではなく、ハードウェアレベルで（例えば、ＭＭＵ及びＳＣＥ  ＭＭＵのハードウェア、ならびに複数のバストランザクションを介して）実行されてもよい。
【００８１】
いくつかの実施形態では、ＭＭＵ３３１及び共有コア拡張ＭＭＵ３４１は、共有コア拡張ロジックがコア０に対する複数の呼び出しを処理する場合に発生する複数のページフォルトに対してルーティングまたは通信を行うために、インターフェースロジック３３２、３４２を介してさらに連携してもよい。いくつかの実施形態では、共有コア拡張ＭＭＵは、コア０からの呼び出しを処理している間に発生したページフォルトをオペレーティングシステムに通知するために、コア０を用いてもよい。同様に、共有コア拡張ＭＭＵは、他の複数のコアからの複数の呼び出しを処理している間に発生した複数のページフォルトを、これらの他の複数のコアに通知してもよい。複数のコアは、複数のページフォルトをオペレーティングシステムに通知してもよい。オペレーティングシステムは、ページフォルトが、ページフォルトを与えたコアにおいてではなく、実際にＳＣＥロジックにおいて発生したことを知る根拠を何ら有さない場合がある。いくつかの実施形態では、非ブロックＳＣＥ呼び出し命令に対して、コアに対してフォールトを指定する命令ポインタは、任意であってもよい。いくつかの実施形態では、ブロックＳＣＥ呼び出し命令に対して、フォールトした共有コア拡張ロジックのための命令ポインタは、呼び出したスレッドに対してフォールトされた呼び出しに対応するＳＣＥ呼び出し命令を指してもよい。
【００８２】
共有コア拡張ロジックは、処理をオフロードする当技術分野で公知の他の複数のアプローチよりも多数の利点を提供する。従来、複数のハードウェアアクセラレータ（例えば、複数のグラフィクス処理ユニット）等により、ソフトウェアベースのパラダイムが、複数のハードウェアアクセラレータと連携するために用いられる。複数のハードウェアアクセラレータは、一般に、複数のソフトウェアデバイスドライバにより管理される。システム複数の呼び出しは、複数のハードウェアアクセラレータの処理を用いるために、複数のアプリケーションが用いられる。ソフトウェア（例えば、オペレーティングシステム）の介在は、複数のコア上で実行する複数の異なるスレッドによるハードウェアアクセラレータの公平な利用を提供するために必要とされることが多い。かかる複数のハードウェアアクセラレータと比較して、共有コア拡張ロジックによれば、ドライバベースのハードウェアアクセラレータアクセスというソフトウェアパラダイムにシフトすることなく、共有コア拡張ロジック（例えば、複数の汎用コア）を用いる複数のコアの従来的なプログラミングパラダイムが可能となり得る。さらに、関連付けられた複数の物理的スレッドとしてＳＣＥロジックが同じ仮想メモリ上で動作する複数の実施形態では、データコピー及び／またはデータマーシャリングに伴うオーバヘッドなしで、これが用いられることができる。さらに、ハードウェアアクセラレータと比較して、共有コア拡張ロジックは、概して、進捗度を進めるために、少量のオープンページを伴う。さらに、ハードウェアアクセラレータと比較して、共有コア拡張ロジックは、概して、コマンドをおおよそ非投機的なコアバスサイクルのレイテンシに実質的に送信するレイテンシオーバヘッドを低減する傾向がある。また、ＳＣＥロジックは、ソフトウェア（例えば、オペレーティングシステム）の介在によってではなく、複数のコアで実行する複数の異なるスレッド間で公平かつ分散された利用を提供するために、ハードウェアまたは他のオンプロセッサのロジックにおけるスケジューリングユニットを用いてもよい。
【００８３】
上述の説明では、図及び説明の単純さのために、複数の実施形態は、共有コア拡張ロジックの単一の例（例えば、ロジック２１４、ロジック３１４等）を示し、説明した。しかしながら、いくつかの実施形態では、１つより多くの共有コア拡張ロジックがあってもよい。各共有コア拡張ロジックか、同じ複数のコアまたは異なる複数のコアのいずれかであり得るとともに、複数のコアの全てまたは複数のコアのいくつかのいずれかであり得る複数のコアに共有されてもよい。
【００８４】
いくつかの実施形態では、複数の異なるタイプの共有コア拡張ロジック（例えば、複数の異なるタイプのデータ処理を実行する）は、複数のコアに含まれ、これらの間で共有されてもよい。他の複数の場合、同じ汎用的なタイプの共有コア拡張ロジックの複数の例は、複数のコアの全て（例えば、これらの複数のスレッド）に含まれ、その間で共有されてもよく、または各共有コア拡張ロジックは、複数のコアの合計数のサブセット（例えば、異なるサブセット）に共有されてもよい。当業者及び本開示の利益を有する者によれば理解されるように、様々な複数の構成が考慮される。
【００８５】
図５について説明された複数のコンポーネント、複数の特徴及び具体的な複数の詳細は、図３、４または６のものとともに用いられ得る。本明細書で説明された装置の複数の特徴及び／または複数の詳細も、装置により、及び／またはこれと共に実行される本明細書で説明された複数の方法に選択的に適用される。図３について説明された、例えば、複数のコンポーネント、複数の特徴及び具体的な複数の詳細は、図４または６のものと共に、選択的に用いられ得る。
【００８６】
［例示的な複数のコアアーキテクチャ、複数のプロセッサ及び複数のコンピュータアーキテクチャ］
【００８７】
複数のプロセッサコアは、異なる複数の態様で、異なる複数の目的で、及び複数の異なるプロセッサで、実装されてもよい。例えば、かかる複数のコアの複数の実装は、１）汎用コンピューティング向け汎用インオーダコア、２）汎用コンピューティング向け高性能汎用アウトオブオーダコア、３）主にグラフィクス及び／または科学的（スループット）コンピューティング向け特別用途コアを含んでもよい。複数の異なるプロセッサの複数の実装は、１）汎用コンピューティング向けの１つまたは複数の汎用インオーダコア及び／または汎用コンピューティング向けの１つまたは複数の汎用アウトオブオーダコアを含むＣＰＵ、ならびに２）主にグラフィクス及び／または科学的（スループット）用の１つまたは複数の特別用途コアを含むコプロセッサを含んでもよい。かかる複数の異なるプロセッサにより、１）ＣＰＵからの個別のチップ上のコプロセッサ、２）ＣＰＵと同じパッケージ内の個別のダイ上のコプロセッサ、３）ＣＰＵと同じダイ上のコプロセッサ（この場合、かかるコプロセッサは、場合により、集中画像表示及び／または科学的（スループット）ロジックのような特別用途ロジック、または特別用途コアと称される）、及び４）説明されたＣＰＵ（場合によりアプリケーションコアまたはアプリケーションプロセッサと称される）、上述のコプロセッサ及びさらなる機能性を同じダイ上に含み得るチップ上のシステムを含み得る、異なる複数のコンピュータシステムアーキテクチャが構成される。次に、例示的な複数のコアアーキテクチャが説明され、続いて、例示的な複数のプロセッサ及び複数のコンピュータアーキテクチャが説明される。
【００８８】
［例示的な複数のコアアーキテクチャ］
［インオーダ及びアウトオブオーダコアのブロック図］  図８Ａは、本発明の複数の実施形態に係る例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行パイプラインの両方を示すブロック図である。図８Ｂは、本発明の複数の実施形態に係るプロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行アーキテクチャコアの両方を示すブロック図である。図面８Ａ−Ｂの複数の実線のボックスは、インオーダパイプライン及びインオーダコアを示し、選択的に追加された複数の破線のボックスは、レジスタリネーミング、アウトオブオーダ発行／実行パイプライン及びコアを示す。インオーダ態様がアウトオブオーダ態様のサブセットであるため、アウトオブオーダ態様について説明する。
【００８９】
図８Ａでは、プロセッサパイプライン８００は、フェッチステージ８０２、長さ復号ステージ８０４、復号ステージ８０６、アロケーションステージ８０８、リネームステージ８１０、スケジューリング（ディスパッチまたは発行としても知られる）ステージ８１２、レジスタ読み出し／メモリ読み出しステージ８１４、実行ステージ８１６、ライトバック／メモリ書き込みステージ８１８、例外ハンドリングステージ８２２及びコミットステージ８２４を含む。
【００９０】
図８Ｂは、実行エンジンユニット８５０に連結されるフロントエンドユニット８３０を含むプロセッサコア８９０を示し、両方ともメモリユニット８７０に連結される。コア８９０は、縮小命令セットコンピュータ（ＲＩＳＣ）コア、複合命令セットコンピュータ（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コアもしくはハイブリッドまたは代替的なコアタイプであってもよい。さらに他のオプションとして、コア８９０は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用演算グラフィクス処理ユニット（ＧＰＧＰＵ）コア、グラフィクスコアなどのような特別用途コアであってもよい。
【００９１】
フロントエンドユニット８３０は、命令キャッシュユニット８３４に連結された分岐予測ユニット８３２を含み、命令キャッシュユニット８３４は、命令トランスレーションルックアサイドバッファ（ＴＬＢ）８３６に連結され、ＴＬＢ８３６は、命令フェッチユニット８３８に連結され、命令フェッチユニット８３８は、復号ユニット８４０に連結される。復号ユニット８４０（またはデコーダ）は、複数の命令を復号化し、出力として、１つまたは複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令もしくは元の複数の命令から復号化された、またはこれらを他の方法で反映する、またはこれらから導出された他の制御信号を生成してもよい。復号ユニット８４０は、複数の様々な異なるメカニズムを用いて実装されてもよい。適した複数のメカニズムの例は、限定されるものではないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコード読み出し専用メモリ（ＲＯＭ）等を含む。一実施形態では、コア８９０は、マイクロコードＲＯＭまたは（例えば、復号ユニット８４０で、またはフロントエンドユニット８３０内で）特定の複数のマクロ命令に対するマイクロコードを格納する他のメディアを含む。復号ユニット８４０は、実行エンジンユニット８５０内のリネーム／アロケータユニット８５２に連結される。
【００９２】
実行エンジンユニット８５０は、リタイアメントユニット８５４及び１つまたは複数のスケジューラユニット８５６のセットに連結されたリネーム／アロケータユニット８５２を含む。スケジューラユニット８５６は、複数の予約ステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表す。スケジューラユニット８５６は、物理レジスタファイルユニット８５８に連結される。各物理レジスタファイルユニット８５８は、１つまたは複数の物理レジスタファイルを表し、異なる物理レジスタファイルが、スカラ整数、スカラ浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス（例えば、次に実行されるべき命令のアドレスである命令ポインタ）等の、１つまたは複数の異なるデータ型を格納する。一実施形態では、物理レジスタファイルユニット８５８は、ベクトルレジスタユニット、書き込みマスクレジスタユニット及びスカラレジスタユニットを備える。これらの複数のレジスタユニットは、複数のアーキテクチャベクトルレジスタ、複数のベクトルマスクレジスタ及び複数の汎用レジスタを提供してもよい。物理レジスタファイルユニット８５８は、リタイアメントユニット８５４にオーバラップされることにより、レジスタリネーミング及びアウトオブオーダ実行が実装され得る様々な複数の態様（例えば、リオーダバッファ及びリタイアメントレジスタファイルを用いて、フューチャファイル、ヒストリバッファ及びリタイアメントレジスタファイルを用いて、レジスタマップ及び複数のレジスタのプールを用いて、等）を示す。リタイアメントユニット８５４及び物理レジスタファイルユニット８５８は、実行クラスタ８６０に連結される。実行クラスタ８６０は、１つまたは複数の実行ユニット８６２のセット及び１つまたは複数のメモリアクセスユニット８６４のセットを含む。複数の実行ユニット８６２は、複数の様々な型のデータ（例えば、スカラ浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して、様々な複数のオペレーション（例えば、複数のシフト、加算、減算、乗算）を実行してもよい。いくつかの実施形態は、特定の複数の機能または複数の機能の複数のセット専用の多数の実行ユニットを含んでもよく、複数の他の実施形態は、１つだけの実行ユニットを、または、全ての機能を全てが実行する複数の実行ユニットを含んでもよい。スケジューラユニット８５６、物理レジスタファイルユニット８５８及び実行クラスタ８６０は、場合によっては複数として示されるが、その理由は、特定の複数の実施形態は、特定の複数のデータ型／複数のオペレーション（例えば、各々が自己のスケジューラユニット、物理レジスタファイルユニット及び／または実行クラスタを有するスカラ整数パイプライン、スカラ浮動小数点／パック型整数／パック型浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン及び／またはメモリアクセスパイプライン、及び、個別のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット８６４を有する特定の複数の実施形態が実装される）に対して個別の複数のパイプラインを形成するからである。個別の複数のパイプラインが用いられる場合、これらのパイプラインのうちの１つまたは複数がアウトオブオーダ発行／実行であり、残りがインオーダであってもよいことも理解されたい。
【００９３】
メモリアクセスユニット８６４のセットは、データＴＬＢユニット８７２を含むメモリユニット８７０に連結され、データＴＬＢユニット８７２は、データキャッシュユニット８７４に連結され、データキャッシュユニット８７４は、二次（Ｌ２）キャッシュユニット８７６に連結される。例示的な一実施形態では、メモリアクセスユニット８６４は、ロードユニット、ストアアドレスユニット及びストアデータユニットを含んでもよく、これらのそれぞれは、メモリユニット８７０内のデータＴＬＢユニット８７２に連結される。命令キャッシュユニット８３４は、メモリユニット８７０内の二次（Ｌ２）キャッシュユニット８７６にさらに連結される。Ｌ２キャッシュユニット８７６は、１つまたは複数の他のレベルのキャッシュ、及び最終的にはメインメモリに連結される。
【００９４】
例として、例示的なレジスタリネーミング、アウトオブオーダ発行／実行コアアーキテクチャは、パイプライン８００を以下のとおり実装してもよい。１）命令フェッチ８３８が、フェッチステージ８０２及び長さ復号ステージ８０４を実行し、２）復号ユニット８４０が、復号ステージ８０６を実行し、３）リネーム／アロケータユニット８５２が、アロケーションステージ８０８及びリネームステージ８１０を実行し、４）スケジューラユニット８５６が、スケジューリングステージ８１２を実行し、５）物理レジスタファイルユニット８５８及びメモリユニット８７０が、レジスタ読み出し／メモリ読み出しステージ８１４を実行し、実行クラスタ８６０が、実行ステージ８１６を実行し、６）メモリユニット８７０及び物理レジスタファイルユニット８５８が、ライトバック／メモリ書き込みステージ８１８を実行し、７）様々な複数のユニットが、例外ハンドリングステージ８２２に関与してもよく、かつ８）リタイアメントユニット８５４及び物理レジスタファイルユニット８５８が、コミットステージ８２４を実行する。
【００９５】
コア８９０は、本明細書で説明された命令を含む１つまたは複数の命令セット（例えば、ｘ８６命令セット（複数のより新しいバージョンに追加されたいくつかの拡張を有する）、カリフォルニア州サニーベールのＭＩＰＳテクノロジーズのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭホールディングスのＡＲＭ命令セット（ＮＥＯＮなどの複数の選択的なさらなる拡張を有する））をサポートしてもよい。一実施形態では、コア８９０は、パックドデータ命令セット拡張（例えば、ＡＶＸ１、ＡＶＸ２）をサポートするロジックを含むことによって、多くのマルチメディアアプリケーションによって用いられる複数のオペレーションが、パックドデータを用いて実行される。
【００９６】
理解されるべきことは、コアは、マルチスレッディング（複数のオペレーションまたは複数のスレッドの２つまたはそれより多くの並列セットを実行すること）をサポートしてもよく、時分割マルチスレッディング、同時マルチスレッディング（単一の物理的コアが複数のスレッドのそれぞれに対して論理的コアを提供することにより、物理的コアが同時マルチスレッディングを実行すること）またはこれらの組み合わせ（例えば、時分割フェッチ及び復号化、その後、インテル（登録商標）ハイパースレッディング・テクノロジーなどでの同時マルチスレッディング）を含む様々な態様で、マルチスレッディングを実行してもよい。
【００９７】
レジスタリネーミングは、アウトオブオーダ実行のコンテキストで説明されるが、理解されるべきことは、レジスタリネーミングは、インオーダアーキテクチャで用いられてもよい。プロセッサの例示された実施形態は、個別の命令キャッシュユニット８３４及びデータキャッシュユニット８７４と共有のＬ２キャッシュユニット８７６とをさらに含むが、代替的な複数の実施形態は、例えば、一次（Ｌ１）内部キャッシュまたは複数のレベルの内部キャッシュのような、複数の命令及びデータの両方のための単一の内部キャッシュを有してもよい。いくつかの実施形態では、システムは、内部キャッシュとコア及び／またはプロセッサの外部にある外部キャッシュとの組み合わせを含んでもよい。代替的に、全てのキャッシュは、コア及び／またはプロセッサの外部にあってもよい。
【００９８】
［具体的な、例示的なインオーダコアアーキテクチャ］
図９Ａ−Ｂは、より具体的な、例示的なインオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかのロジックブロック（同じタイプ及び／または複数の異なるタイプの他の複数のコアを含む）の中の１つであってもよい。複数のロジックブロックは、用途に応じて、高帯域幅インターコネクトネットワーク（例えば、リングネットワーク）を介して、いくつかの固定機能ロジック、メモリＩ／Ｏインターフェース及び他の必要なＩ／Ｏロジックと通信を行う。
【００９９】
図９Ａは、本発明の複数の実施形態に係る単一のプロセッサコアのブロック図であり、オンダイインターコネクトネットワーク９０２との接続及び二次（Ｌ２）キャッシュローカルサブセット９０４と共に示される。一実施形態では、命令デコーダ９００は、パックドデータ命令セット拡張を有するｘ８６命令セットをサポートする。Ｌ１キャッシュ９０６によれば、スカラ及びベクトルユニットに対して、キャッシュメモリへの低レイテンシアクセスが可能である。一実施形態では（設計の単純化のために）、スカラユニット９０８及びベクトルユニット９１０は、個別のレジスタセット（それぞれ、複数のスカラレジスタ９１２及び複数のベクトルレジスタ９１４）を用い、これらの間で転送されるデータは、一次（Ｌ１）キャッシュ９０６のメモリに書き込まれてから再読み出しされるが、本発明の代替的な複数の実施形態は、異なるアプローチ（例えば、単一のレジスタセットを用いる、または書き込み及び再読み出しを行うことなく、２つのレジスタファイル間でデータを転送させる通信パスを含む）を用いてもよい。
【０１００】
Ｌ２キャッシュローカルサブセット９０４は、プロセッサコアあたり１つの個別のローカルサブセットに分割されるグローバルＬ２キャッシュの一部である。各プロセッサコアは、自己のＬ２キャッシュローカルサブセット９０４に対するダイレクトアクセスパスを有する。プロセッサコアに読み出されたデータは、自己のＬ２キャッシュサブセット９０４に格納され、迅速かつ、自己の複数のローカルＬ２キャッシュサブセットにアクセスする他の複数のプロセッサコアと並列に、アクセスされることができる。プロセッサコアに書き込まれたデータは、自己のＬ２キャッシュサブセット９０４に格納され、必要な場合には、他の複数のサブセットからフラッシュされる。リングネットワークは、共有のデータに対するコヒーレンシを保証する。リングネットワークが双方向であることにより、複数のプロセッサコア、複数のＬ２キャッシュ及び他の複数のロジックブロックなどの複数のエージェントは、チップ内で互いに通信を行うことができる。各リングデータパスは、１方向あたり１０１２ビット幅である。
【０１０１】
図９Ｂは、本発明の複数の実施形態に係る図９Ａのプロセッサコアの一部の拡大図である。図９Ｂは、Ｌ１キャッシュ９０６の一部であるＬ１データキャッシュ９０６Ａと、併せて、ベクトルユニット９１０及び複数のベクトルレジスタ９１４に関するさらなる詳細とを含む。具体的には、ベクトルユニット９１０は、整数、単精度浮動及び倍精度浮動命令のうちの１つまたは複数を実行する１６幅ベクトル処理ユニット（ＶＰＵ）（１６幅ＡＬＵ９２８を参照）である。ＶＰＵは、再構成ユニット９２０による複数のレジスタ入力の再構成、数字変換ユニット９２２Ａ−Ｂによる数字変換、及び複製ユニット９２４によるメモリ入力に対する複製をサポートする。複数の書き込みマスクレジスタ９２６によれば、結果の複数のベクトル書き込みを記述することができる。
【０１０２】
［集積メモリコントローラ及びグラフィクスを有するプロセッサ］
図１０は、本発明の複数の実施形態に係るプロセッサ１０００のブロック図である。１つより多くのコアを有してもよく、集積メモリコントローラを有してもよく、集中画像表示を有してもよい。図１０の複数の実線のボックスは、単一のコア１００２Ａ、システムエージェント１０１０、１つまたは複数のバスコントローラユニット１０１６のセットを有するプロセッサ１０００を示し、選択的に追加された複数の破線のボックスは、複数のコア１００２Ａ−Ｎを有する代替的なプロセッサ１０００、システムエージェントユニット１０１０内の１つまたは複数の集積メモリコントローラユニット１０１４のセット及び特別用途ロジック１００８を示す。
【０１０３】
したがって、プロセッサ１０００の異なる複数の実装は、１）集中画像表示及び／または科学的（スループット）ロジック（１つまたは複数のコアを含んでもよい）である特別用途ロジック１００８を有するＣＰＵ、及び１つまたは複数の汎用コア（例えば、汎用インオーダコア、汎用アウトオブオーダコア、この２つの組み合わせ）であるコア１００２Ａ−Ｎ、２）主にグラフィクス及び／または科学的（スループット）用として意図された多数の特別用途コアであるコア１００２Ａ−Ｎを有するコプロセッサ、及び３）多数の汎用インオーダコアであるコア１００２Ａ−Ｎを有するコプロセッサを含んでもよい。したがって、プロセッサ１０００は、汎用プロセッサ、コプロセッサまたは、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ（汎用グラフィクス処理ユニット）、ハイスループット多集積コア（ＭＩＣ）コプロセッサ（３０またはそれより多くのコアを含む）、組み込みプロセッサ等のような特別用途プロセッサであってもよい。プロセッサは、１つまたは複数のチップ上に実装されてもよい。プロセッサ１０００は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳまたはＮＭＯＳなどの多数の処理技術のいずれかを用いて、１つまたは複数の基板の一部であってもよく、及び／またはその上に実装されてもよい。
【０１０４】
メモリ階層は、複数のコア、１つまたは複数の共有キャッシュユニット１００６またはそのセット、及び複数の集積メモリコントローラユニット１０１４のセットに連結される外部メモリ（不図示）内に、１つまたは複数のレベルのキャッシュを含む。複数の共有キャッシュユニット１００６のセットは、二次（Ｌ２）、三次（Ｌ３）、四次（Ｌ４）または他の複数のレベルのキャッシュなどの１つまたは複数の中レベルキャッシュ、ラストレベルキャッシュ（ＬＬＣ）及び／またはこれらの組み合わせを含んでもよい。一実施形態では、リングベースのインターコネクトユニット１０１２が、集中画像表示ロジック１００８、複数の共有キャッシュユニット１００６のセット及びシステムエージェントユニット１０１０／集積メモリコントローラユニット１０１４をインターコネクトするが、代替的な複数の実施形態は、かかる複数のユニットをインターコネクトするための任意の数の周知技術を用いてもよい。一実施形態では、１つまたは複数のキャッシュユニット１００６と複数のコア１００２Ａ−Ｎとの間で、コヒーレンシが維持される。
【０１０５】
いくつかの実施形態では、複数のコア１００２Ａ−Ｎのうちの１つまたは複数は、マルチスレッディングが可能である。システムエージェント１０１０は、複数のコア１００２Ａ−Ｎの調整及び操作を行うこれらの複数のコンポーネントを含む。システムエージェントユニット１０１０は、例えば、電力制御ユニット（ＰＣＵ）及びディスプレイユニットを含んでもよい。ＰＣＵは、複数のコア１００２Ａ−Ｎ及び集中画像表示ロジック１００８の電力状態を調整するために必要なロジック及び複数のコンポーネントであってもよく、またはこれらを含んでもよい。ディスプレイユニットは、１つまたは複数の外部接続ディスプレイを駆動するためのものである。
【０１０６】
複数のコア１００２Ａ−Ｎは、アーキテクチャ命令セットに関してホモジニアスまたはヘテロジニアスであってもよく、すなわち、複数のコア１００２Ａ−Ｎのうちの２つまたはそれより多くは、同じ命令セットを実行可能であってもよいが、他は、その命令セットまたは異なる命令セットのサブセットのみを実行可能であってもよい。
【０１０７】
［例示的な複数のコンピュータアーキテクチャ］
図１１−１４は、例示的な複数のコンピュータアーキテクチャのブロック図である。複数のラップトップ、複数のデスクトップ、複数のハンドヘルド型ＰＣ、複数の携帯情報端末、複数のエンジニアリングワークステーション、複数のサーバ、複数のネットワークデバイス、複数のネットワークハブ、複数のスイッチ、複数の組み込みプロセッサ、複数のデジタルシグナルプロセッサ（ＤＳＰ）、複数のグラフィクスデバイス、複数のビデオゲームデバイス、複数のセットトップボックス、複数のマイクロコントローラ、複数の携帯電話、複数のポータブルメディアプレイヤ、複数のハンドヘルドデバイス及び様々な他の複数の電子デバイス用の当技術分野で公知の他の複数のシステム設計及び複数の構成も、適している。概して、本明細書で開示されるように、プロセッサ及び／または他の実行ロジックを組み込み可能な多様な複数のシステムまたは複数の電子デバイスが、概して適している。
【０１０８】
ここで、図１１を参照すると、本発明の一実施形態に係るシステム１１００のブロック図が示される。システム１１００は、コントローラハブ１１２０に連結される１つまたは複数のプロセッサ１１１０、１１１５を含んでもよい。一実施形態では、コントローラハブ１１２０は、（個別のチップ上にあってもよい）グラフィクスメモリコントローラハブ（ＧＭＣＨ）１１９０及び入出力ハブ（ＩＯＨ）１１５０を含み、ＧＭＣＨ１１９０は、メモリ１１４０及びコプロセッサ１１４５が連結されるメモリ及び複数のグラフィクスコントローラを含み、ＩＯＨ１１５０は、複数の入出力（Ｉ／Ｏ）デバイス１１６０をＧＭＣＨ１１９０に連結する。代替的に、メモリ及び複数のグラフィクスコントローラの一方または両方は、プロセッサ内に集積され（本明細書で説明されたように）、メモリ１１４０及びコプロセッサ１１４５は、プロセッサ１１１０に直接連結され、コントローラハブ１１２０は、単一のチップにＩＯＨ１１５０を有する。
【０１０９】
追加のプロセッサ１１１５の選択的な性質が、図１１に複数の破線で示される。各プロセッサ１１１０、１１１５は、本明細書で説明された複数のプロセッサコアのうちの１つまたは複数を含んでもよく、いくつかのバージョンのプロセッサ１０００であってもよい。
【０１１０】
メモリ１１４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、位相変化メモリ（ＰＣＭ）またはこれら２つの組み合わせであってもよい。少なくとも１つの実施形態について、コントローラハブ１１２０は、フロントサイドバス（ＦＳＢ）のようなマルチドロップバス、クイックパスインターコネクト（ＱＰＩ）のようなポイントツーポイントインターフェースまたは同様の接続１１９５を介して、プロセッサ１１１０、１１１５と通信を行う。
【０１１１】
一実施形態では、コプロセッサ１１４５は、例えば、ハイスループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ、組み込みプロセッサ等のような特別用途プロセッサである。一実施形態では、コントローラハブ１１２０は、集中画像表示アクセラレータを含んでもよい。
【０１１２】
物理的リソース１１１０、１１１５の間には、アーキテクチャ、マイクロアーキテクチャ、温度、電力消費の特性等を含む様々な利益の基準に関して、様々な違いが存在しうる。
【０１１３】
一実施形態では、プロセッサ１１１０は、一般的なタイプの複数のデータ処理オペレーションを制御する複数の命令を実行する。複数の命令内に、複数のコプロセッサ命令が組み込まれていてもよい。プロセッサ１１１０は、これらの複数のコプロセッサ命令を、取り付けられたコプロセッサ１１４５によって実行されるべきタイプのものと認識する。従って、プロセッサ１１１０は、これらの複数のコプロセッサ命令（または複数のコプロセッサ命令を表す複数の制御信号）を、コプロセッサバスまたは他のインターコネクト上で、コプロセッサ１１４５に対して発行する。コプロセッサ１１４５は、受信された複数のコプロセッサ命令を受け付けて実行する。
【０１１４】
ここで、図１２を参照すると、本発明の実施形態に係る第１のより具体的な、例示的なシステム１２００のブロック図が示される。図１２に示されるように、マルチプロセッサシステム１２００は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト１２５０を介して連結される第１のプロセッサ１２７０及び第２のプロセッサ１２８０を含む。
【０１１５】
プロセッサ１２７０および１２８０の各々は、いくつかのバージョンのプロセッサ１０００であってもよい。本発明の一実施形態では、プロセッサ１２７０および１２８０は、それぞれプロセッサ１１１０および１１１５であり、コプロセッサ１２３８は、コプロセッサ１１４５である。他の実施形態では、プロセッサ１２７０および１２８０は、それぞれプロセッサ１１１０、コプロセッサ１１４５である。
【０１１６】
プロセッサ１２７０および１２８０は、集積メモリコントローラ（ＩＭＣ）ユニット１２７２および１２８２をそれぞれ含むものとして示される。プロセッサ１２７０は、自己の複数のバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インターフェース１２７６および１２７８をさらに含み、同様に、第２のプロセッサ１２８０は、Ｐ−Ｐインターフェース１２８６および１２８８を含む。プロセッサ１２７０、１２８０は、Ｐ−Ｐインターフェース回路１２７８、１２８８を用いたポイントツーポイント（Ｐ−Ｐ）インターフェース１２５０を介して、情報を交換してもよい。図１２に示されるように、ＩＭＣ１２７２および１２８２は、複数のプロセッサを個別のメモリ、すなわち、個別のプロセッサにローカルに取り付けられたメインメモリの一部となり得るメモリ１２３２及びメモリ１２３４に連結する。
【０１１７】
複数のプロセッサ１２７０、１２８０の各々は、複数のポイントツーポイントインターフェース回路１２７６、１２９４、１２８６、１２９８を用いる個々のＰ−Ｐインターフェース１２５２、１２５４を介して、チップセット１２９０と情報を交換してもよい。チップセット１２９０は、高性能インターフェース１２３９を介して、コプロセッサ１２３８と選択的に情報を交換してもよい。一実施形態では、コプロセッサ１２３８は、例えば、ハイスループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ、組み込みプロセッサ等のような特別用途プロセッサである。
【０１１８】
共有キャッシュ（不図示）は、いずれかのプロセッサの内部に含まれ、または両方のプロセッサの外部にあってもよいが、プロセッサが低電力モードであっても、いずれかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るように、Ｐ−Ｐインターコネクトを介して複数のプロセッサに接続される。
【０１１９】
チップセット１２９０は、インターフェース１２９６を介して、第１のバス１２１６に連結されてもよい。一実施形態では、第１のバス１２１６は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスもしくはＰＣＩ  Ｅｘｐｒｅｓｓバスまたは他の第３世代Ｉ／Ｏインターコネクトバスなどのバスであってもよいが、本発明の範囲はこれに限定されない。
【０１２０】
図１２に示されるように、様々なＩ／Ｏデバイス１２１４が、第１のバス１２１６を第２のバス１２２０に連結するバスブリッジ１２１８と共に、第１のバス１２１６に連結されてもよい。一実施形態では、複数のコプロセッサ、複数のハイスループットＭＩＣプロセッサ、ＧＰＧＰＵの複数のアクセラレータ（例えば、複数のグラフィクスアクセラレータまたは複数のデジタル信号処理（ＤＳＰ）ユニットなど）、複数のフィールドプログラマブルゲートアレイもしくは任意の他のプロセッサなどの１つまたは複数の追加のプロセッサ１２１５が、第１のバス１２１６に連結される。一実施形態では、第２のバス１２２０は、ローピンカウント（ＬＰＣ）バスであってもよい。例えば、キーボード及び／またはマウス１２２２、複数の通信デバイス１２２７、及びディスクドライブ、または複数の命令／コード及びデータ１２３０を含みうる他の大容量ストレージデバイスなどの記憶ユニット１２２８を含む様々な複数のデバイスが、一実施形態では、第２のバス１２２０に連結されてもよい。さらに、オーディオＩ／Ｏ１２２４が、第２のバス１２２０に連結されてもよい。なお、他の複数のアーキテクチャが、適用可能である。例えば、図１２のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは他のかかるアーキテクチャを実装してもよい。
【０１２１】
ここで、図１３を参照すると、本発明の実施形態に係る第２のより具体的な、例示的なシステム１３００のブロック図が示される。図１２及び１３における同様の複数の要素には、同様の参照番号が付され、図１２の複数の特定の態様は、図１３の他の複数の態様への妨げとならないよう、図１３では省略されている。
【０１２２】
図１３は、プロセッサ１２７０、１２８０が、それぞれ集積メモリ及びＩ／Ｏ制御ロジック（「ＣＬ」）１２７２及び１２８２を含んでもよいことを示す。したがって、ＣＬ１２７２、１２８２は、複数の集積メモリコントローラユニットを含み、かつ、Ｉ／Ｏ制御ロジックを含む。図１３は、メモリ１２３２、１２３４のみがＣＬ１２７２、１２８２に連結されるのではなく、複数のＩ／Ｏデバイス１３１４も、複数の制御ロジック１２７２、１２８２に連結されることを示す。複数のレガシーＩ／Ｏデバイス１３１５は、チップセット１２９０に連結される。
【０１２３】
ここで、図１４を参照すると、本発明の実施形態に係るＳｏＣ１４００のブロック図が示される。図１０における同様の複数の要素には、同様の参照番号が付される。また、複数の破線のボックスは、より進化した複数のＳｏＣ上の選択的な機能である。図１４では、インターコネクトユニット１４０２は、１つまたは複数のコア２０２Ａ−Ｎ及び共有キャッシュユニット１００６のセットを含むアプリケーションプロセッサ１４１０、システムエージェントユニット１０１０、バスコントローラユニット１０１６、集積メモリコントローラユニット１０１４、集中画像表示ロジック、画像プロセッサ、オーディオプロセッサ及びビデオプロセッサを含み得る１つまたは複数のコプロセッサ１４２０またはそのセット、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１４３０、ダイレクトメモリアクセス（ＤＭＡ）ユニット１４３２及び１つまたは複数の外部ディスプレイに連結するためのディスプレイユニット１４４０に連結される。一実施形態では、コプロセッサ１４２０は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、ハイスループットＭＩＣプロセッサ、組み込みプロセッサ等のような特別用途プロセッサを含む。
【０１２４】
本明細書に開示される複数のメカニズムの複数の実施形態は、ハードウェア、ソフトウェア、ファームウェアまたはそのかかる複数の実装アプローチの組み合わせで実装されてもよい。本発明の複数の実施形態は、少なくとも１つのプロセッサ、ストレージシステム（揮発性及び不揮発性メモリ及び／または複数のストレージ要素を含む）、少なくとも１つの入力デバイスおよび少なくとも１つの出力デバイスを備える複数のプログラマブルシステム上で実行する複数のコンピュータプログラムまたはプログラムコードとして実装されてもよい。
【０１２５】
図１２に示すコード１２３０などのプログラムコードは、本明細書で説明された複数の機能を実行し、出力情報を生成するために、複数の入力命令に適用されてもよい。出力情報は、１つまたは複数の出力デバイスに、公知の態様で適用されてもよい。この適用のために、処理システムは、例えば、デジタルシグナルプロセッサ（ＤＳＰ）、マイクロコントローラ、特別用途集積回路（ＡＳＩＣ）またはマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
【０１２６】
プログラムコードは、処理システムと通信を行うために、高水準の手順型またはオブジェクト指向プログラミング言語で実装されてもよい。プログラムコードは、望ましい場合は、アセンブリ言語または機械言語でさらに実装されてもよい。実際には、本明細書で説明された複数のメカニズムは、その範囲において、任意の特定のプログラム言語に限定されるものではない。いずれの場合であっても、言語は、コンパイル言語またはインタプリタ型言語であってもよい。
【０１２７】
少なくとも１つの実施形態のうち１つまたは複数の態様は、機械可読媒体に格納された、プロセッサ内の様々なロジックを表す複数の表現命令によって実装されてもよく、このような命令は、機械に読み出された場合に、本明細書で説明される複数の技術を実行するべく、機械にロジックを組み立てさせる。「ＩＰコア」として知られるかかる複数の表現は、有形の機械可読媒体上に格納され、様々な複数の顧客または製造工場に供給されて、実際にロジックまたはプロセッサを作り出す複数の製造機械に読み込まれてもよい。
【０１２８】
かかる機械可読記憶媒体は、限定的ではないが、複数のハードディスク、複数のフロッピー（登録商標）ディスク、複数の光ディスク、複数のコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、複数の書き換え可能コンパクトディスク（ＣＤ−ＲＷ）及び複数の磁気光ディスクを含む任意の他のタイプのディスク、複数の読み出し専用メモリ（ＲＯＭ）などの複数の半導体デバイス、複数のダイナミックランダムアクセスメモリ（ＤＲＡＭ）、複数のスタティックランダムアクセスメモリ（ＳＲＡＭ）、複数の消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、複数のフラッシュメモリ、複数の消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、位相変化メモリ（ＰＣＭ）、複数の磁気または光カードなどの複数のランダムアクセスメモリ（ＲＡＭ）、もしくは複数の電子的命令を格納するために適した任意の他のタイプのメディアなどの記憶媒体を含む、機械またはデバイスによって製造または形成される複数の物品の非一時的かつ有形の複数の構成を含んでもよい。
【０１２９】
従って、本発明の複数の実施形態は、複数の命令を含む、または本明細書で説明される複数の構造、複数の回路、複数の装置、複数のプロセッサ及び／または複数のシステム機能を定義するハードウェア記述言語（ＨＤＬ）などの設計データを含む非一時的かつ有形の機械可読媒体をさらに含む。かかる複数の実施形態は、複数のプログラム製品と称されてもよい。
【０１３０】
［エミュレーション（バイナリ変換、コードモーフィング等を含む）］
場合によっては、命令変換器は、ソース命令セットからターゲット命令セットへと命令を変換するために用いられてもよい。例えば、命令変換器は、命令をコアによって処理されるべき１つまたは複数の他の命令に、（例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて）変換、モーフィング、エミュレートまたは他の方法で変換してもよい。命令変換器は、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組み合わせで実装されてもよい。命令変換器は、プロセッサ上にあってもよく、プロセッサ外にあってもよく、または一部がプロセッサ上かつ一部がプロセッサ外にあってもよい。
【０１３１】
図１５は、ソース命令セットの複数のバイナリ命令をターゲット命令セットの複数のバイナリ命令に変換する、本発明の複数の実施形態に係るソフトウェア命令変換器の利用を対比したブロック図である。図示された実施形態では、命令変換器は、ソフトウェア命令変換器であるが、代替的に、命令変換器は、ソフトウェア、ファームウェア、ハードウェアまたはこれらの様々な複数の組み合わせで実装されてもよい。図１５は、少なくとも１つのｘ８６命令セットコア１５１６を有するプロセッサによって本来的に実行され得るｘ８６バイナリコード１５０６を生成するために、ｘ８６コンパイラ１５０４を用いてコンパイルされ得る高水準言語１５０２のプログラムを示す。少なくとも１つのｘ８６命令セットコア１５１６を有するプロセッサは、少なくとも１つのｘ８６命令セットコアを有するインテル社製プロセッサと実質的に同じ結果を出すために、（１）インテル社製ｘ８６命令セットコアの命令セットの大部分、もしくは（２）複数のアプリケーションの複数のオブジェクトコードバージョンまたは少なくとも１つのｘ８６命令セットコアを有するインテル社製プロセッサ上で実行することが想定された他のソフトウェアを互換可能に実行または他の方法で処理することにより、少なくとも１つのｘ８６命令セットコアを有するインテル社製プロセッサと実質的に同じ複数の機能を実行可能な任意のプロセッサを表す。ｘ８６コンパイラ１５０４は、さらなるリンク処理の有無に関わらず、少なくとも１つのｘ８６命令セットコアを有するプロセッサ１５１６上で実行可能なｘ８６バイナリコード１５０６（例えば、オブジェクトコード）を生成するように動作可能なコンパイラを表す。同様に、図１５は、少なくとも１つのｘ８６命令セットコアを有さないプロセッサ１５１４（例えば、カリフォルニア州サニーベールのＭＩＰＳテクノロジーズ（ＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ）のＭＩＰＳ命令セットを実行する、及び／またはカリフォルニア州サニーベールのＡＲＭホールディングス（ＡＲＭ  Ｈｏｌｄｉｎｇｓ）のＡＲＭ命令セットを実行する複数のコアを有するプロセッサ）によって本来的に実行され得る、代替的な命令セットバイナリコード１５１０を生成するべく、代替的な命令セットコンパイラ１５０８を用いてコンパイルされ得る高水準言語１５０２のプログラムを示す。命令変換器１５１２は、ｘ８６バイナリコード１５０６を、ｘ８６命令セットコアを有さないプロセッサ１５１４によって本来的に実行され得るコードに変換するために用いられる。この変換されたコードは、これが可能な命令変換器の製造が難しいため、代替的な命令セットバイナリコード１５１０と同じとなる可能性は低いが、しかしながら、変換されたコードは、全般的なオペレーションを達成し、代替的な命令セットからの複数の命令により補完される。したがって、命令変換器１５１２は、エミュレーション、シミュレーションまたは任意の他の処理を介して、プロセッサもしくはｘ８６命令セットプロセッサまたはコアを有さない他の電子デバイスにｘ８６バイナリコード１５０６を実行させるソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表す。
【０１３２】
説明及び特許請求の範囲では、「連結」及び／または「接続」という複数の用語が、これらの複数の派生語と共に用いられている。理解されるべきことは、これらの複数の用語は、互いの類義語として意図されるものではない。むしろ、複数の特定の実施形態では、「接続」は、２つまたはそれより多くの要素が、互いに直接物理的にまたは電気的に接触することを示すために用いられてもよい。「連結」は、２つまたはそれより多くの要素が、直接物理的にまたは電気的に接触することを意味してもよい。しかしながら、「連結」は、２つまたはそれより多くの要素が、互いに直接接触しないものの、互いに連動または連携することをさらに意味してもよい。例えば、実行ユニットは、１つまたは複数の介在コンポーネントを介して、レジスタまたはデコーダと連結されてもよい。複数の図において、複数の矢印は、複数の連結及び／または複数の接続を示すために用いられる。
【０１３３】
説明及び特許請求の範囲では、「ロジック」という用語が用いられてもよい。本明細書で用いられる場合において、ロジックという用語は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの様々な複数の組み合わせを含んでもよい。ロジックの複数の例は、集積回路、複数の特別用途集積回路、複数のアナログ回路、複数のデジタル回路、複数のプログラムされたロジックデバイス、複数の命令を含む複数のメモリデバイス等を含む。いくつかの実施形態では、ロジックは、複数のトランジスタ及び／または複数のゲートを、潜在的には（例えば、複数の半導体材料に組み込まれた）他の複数の回路コンポーネントと共に含んでもよい。
【０１３４】
上述の説明では、複数の実施形態への十分な理解を提供するために、具体的な複数の詳細が示された。しかしながら、他の複数の実施形態は、これらの具体的な複数の詳細のいくつかによらずに実施可能である。本発明の範囲は、上述された具体的な複数の例によって決定されるものではなく、以下の特許請求の範囲によってのみ決定される。複数の図面に示され、明細書で説明されたものへの全ての等しい関係は、複数の実施形態内に包含される。他の複数の例では、周知の複数の回路、複数の構造、複数のデバイス及び複数のオペレーションが、ブロック図の形で、または説明に対する理解の妨げとならないよう、詳細は省略して示されている。複数のコンポーネントが示されているいくつかの場合では、これらは、単一のコンポーネントに集積されてもよい。単一のコンポーネントが示され、説明されているいくつかの場合では、この単一のコンポーネントは、２つまたはそれより多くのコンポーネントに分離されてもよい。
【０１３５】
本明細書で開示された特定の複数の方法は、基本的な形で示され、説明されているが、複数のオペレーションは、選択的に複数の方法に追加され、及び／またはこれらから取り除かれてもよい。さらに、複数のオペレーションの特定の順序が示され、及び／または説明された可能性があるが、別の複数の実施形態は、特定の複数のオペレーションを異なる順序で実行する、特定の複数のオペレーションを組み合わせる、特定の複数のオペレーションをオーバラップさせる等が可能である。
【０１３６】
特定の複数のオペレーションは、複数のハードウェア要素によって実行されてもよく、及び／または複数のオペレーションを実行する命令によりプログラムされたハードウェア要素（例えば、プロセッサ、プロセッサの一部等）を生じ、及び／またはもたらすために用いられ得る機械により実行可能な命令で具現されてもよい。ハードウェア要素は、汎用または特別用途向けのハードウェア要素を含んでもよい。複数のオペレーションは、ハードウェア、ソフトウェア及び／またはファームウェアの組み合わせによって実行されてもよい。ハードウェア要素は、命令を実行及び／または処理し、命令に応答して（例えば、１つまたは複数のマイクロ命令または命令から導出された他の複数の制御信号に応答して）動作を実行するように動作可能な、具体的なまたは特定のロジック（例えば、潜在的には、ソフトウェア及び／またはファームウェアと組み合わせられた回路）を含んでもよい。
【０１３７】
本明細書を通して、「一実施形態」、「実施形態」、「１つまたは複数の実施形態」、「いくつかの実施形態」という言及は、例えば、特定の機能が、本発明の実施に含まれてもよいが、必ずしも含まれていなくてもよいことを示す。同様に、説明において、様々な複数の特徴は、場合により、開示を簡素化し、様々な進歩的な複数の態様に対する理解を助けることを目的として、単一の実施形態、図またはその説明の中でグループ化される。この開示方法は、しかしながら、本発明が、各請求項で明確に規定されるよりも多くの機能を必要とするという意図を反映すると解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、進歩的な複数の態様は単一の開示された実施形態の一部の機能にある。したがって、詳細な説明に続く、各請求項が実施形態として独立する特許請求の範囲は、これにより、この詳細な説明に明確に組み込まれている。
【０１３８】
以下の複数の節及び／または複数の例は、さらなる複数の実施形態に関する。複数の節の複数の詳細及び／または複数の例は、１つまたは複数の実施形態のいずれの部分において用いられてもよい。
【０１３９】
一実施形態では、第１の装置は、複数のコアと、複数のコアの各々と連結される共有コア拡張ロジックとを含む。共有コア拡張ロジックは、複数のコアの各々に共有される共有データ処理ロジックを有する。第１の装置は、共有コア拡張呼び出し命令に応答して共有コア拡張ロジックを呼び出す、複数のコアの各々に対する命令実行ロジックをさらに含む。呼び出しは、対応するコアの代わりに、共有データ処理ロジックデータ処理を実行させる。
【０１４０】
複数の実施形態は、命令実行ロジック及び共有コア拡張ロジックと連結される複数の共有コア拡張コマンドレジスタをさらに含む第１の装置を含み、共有コア拡張呼び出し命令は、複数の共有コア拡張コマンドレジスタの１つ及び複数のパラメータを示す。
【０１４１】
複数の実施形態は、上述した第１の装置のいずれかを含み、命令実行ロジックは、共有コア拡張呼び出し命令に応答して、示された複数のパラメータに基づいて、示された共有コア拡張コマンドレジスタにデータを格納する。
【０１４２】
複数の実施形態は、上述した第１の装置のいずれかを含み、命令実行ロジックは、共有コア拡張呼び出し命令に応答して、示された共有コア拡張コマンドレジスタに、呼び出し属性情報を指す呼び出し属性ポインタフィールドのポインタ、入力データオペランドを指す入力データオペランドポインタフィールドのポインタ、及び出力データオペランドを指す出力データオペランドポインタフィールドのポインタを格納する。
【０１４３】
複数の実施形態は、上述した第１の装置のいずれかを含み、共有コア拡張ロジックは、呼び出しに関連付けられたデータ処理に基づいて、示された共有コア拡張コマンドレジスタに、呼び出しのステータスを提供するステータスフィールド、及び呼び出しの進捗度を提供する進捗度フィールドを格納する。
【０１４４】
複数の実施形態は、上述した第１の装置のいずれかを含み、共有コア拡張呼び出し命令は、複数のコアの命令セットのマクロ命令を含む。
【０１４５】
複数の実施形態は、上述した第１の装置のいずれかを含み、共有データ処理ロジックは、少なくとも１つのベクトル実行ユニットを含む。
【０１４６】
複数の実施形態は、上述した第１の装置のいずれかを含み、共有データ処理ロジックは、複数のコア内に見られないデータ処理ロジックを含む。
【０１４７】
複数の実施形態は、上述した第１の装置のいずれかを含み、命令実行ロジックは、共有コア拡張呼び出し命令に応答して、メモリにおいて少なくとも１つの出力データ構造を生成するルーチンに従って、メモリにおける少なくとも１つの入力データ構造に対してデータ処理を実行させるために、共有コア拡張ロジックを呼び出す。
【０１４８】
複数の実施形態は、複数のコアの第１のコアのメモリ管理ユニット（ＭＭＵ）と、共有コア拡張ロジックの共有コア拡張ＭＭＵと、第１のコアのＭＭＵと共有コア拡張ＭＭＵとを同期するために、ハードウェアにおいて複数の同期信号を交換する、第１のコアのＭＭＵと共有コア拡張ＭＭＵとの間のハードウェアインターフェースとをさらに含む、上述した第１の装置のいずれかを含む。
【０１４９】
複数の実施形態は、複数のコアの第１のコアのメモリ管理ユニット（ＭＭＵ）と、共有コア拡張ロジックの共有コア拡張ＭＭＵと、第１のコアからの呼び出しに対応するページフォルトを、共有コア拡張ＭＭＵから第１のコアのＭＭＵにルーティングする、第１のコアのＭＭＵと共有コア拡張ＭＭＵとの間のインターフェースとをさらに含む、上述した第１の装置のいずれかを含む。
【０１５０】
複数の実施形態は、ダイ上に共有コア拡張ロジックと共に、複数のコアから共有データ処理ロジックに対する複数の呼び出しをスケジューリングするハードウェアスケジューリングロジックをさらに含む、上述した第１の装置のいずれかを含む。
【０１５１】
一実施形態では、第１の方法は、複数のコアを有するプロセッサのコア内で、共有コア拡張呼び出し命令を受信する段階を含む。共有コア拡張呼び出し命令は、コアに、複数のコアにより共有される共有コア拡張ロジックを呼び出させる。呼び出しは、データ処理を実行させる。共有コア拡張呼び出し命令は、共有コア拡張コマンドレジスタを示し、実行されるべきデータ処理を指定する複数のパラメータを示す。共有コア拡張ロジックは、データ処理が実行されるように、共有コア拡張呼び出し命令に応答して呼び出される。共有コア拡張ロジックを呼び出す段階は、命令によって示される複数のパラメータに基づいて、命令によって示される共有コア拡張コマンドレジスタにデータを格納する段階を含む。
【０１５２】
複数の実施形態は、命令を受信する段階が、非ブロック共有コア拡張呼び出し命令を受信する段階を含み、共有コア拡張ロジックが実行されるべきデータ処理を受け入れた後、コアで非ブロック共有コア拡張呼び出し命令をリタイアさせる段階をさらに含む、第１の方法を含む。
【０１５３】
複数の実施形態は、命令を受信する段階が、ブロック共有コア拡張呼び出し命令を受信する段階を含み、共有コア拡張ロジックがデータ処理を完了した後、コアでブロック共有コア拡張呼び出し命令をリタイアさせる段階をさらに含む、第１の方法を含む。
【０１５４】
複数の実施形態は、命令を受信する段階が、ブロック共有コア拡張呼び出し命令を受信する段階を含み、ブロック共有コア拡張呼び出し命令が、示された共有コア拡張コマンドレジスタを解放するタイムアウト値を示す、第１の方法を含む。
【０１５５】
複数の実施形態は、共有コア拡張呼び出し命令は、コアの命令セットのマクロ命令を含み、共有コア拡張コマンドレジスタは、アーキテクチャレジスタを備える、上述した複数の第１の方法のいずれかを含む。
【０１５６】
複数の実施形態は、複数のパラメータに基づいて、示された共有コア拡張コマンドレジスタにデータを格納する段階は、呼び出し属性情報を指す呼び出し属性ポインタフィールドにポインタを格納する段階と、入力データオペランドを指す入力データオペランドポインタフィールドにポインタを格納する段階と、出力データオペランドを指す出力データオペランドポインタフィールドにポインタを格納する段階とを含む、上述した複数の第１の方法のいずれかを含む。
【０１５７】
複数の実施形態は、呼び出しに関連付けられたデータ処理に基づいて、示された共有コア拡張レジスタにデータを格納する共有コア拡張ロジックをさらに含み、データを格納する段階は、呼び出しのステータスを提供するために、示されたレジスタのステータスフィールドにステータスを格納する段階と、呼び出しの進捗度を提供するために、示されたレジスタの進捗度フィールドに進捗度を格納する段階とを含む、上述した複数の第１の方法のいずれかを含む。
【０１５８】
複数の実施形態は、上述した複数の第１の方法のいずれかを含む。呼び出す段階は、メモリにおいて少なくとも１つの出力データ構造を生成するルーチンに従って、メモリにおける少なくとも１つの入力データ構造に対してデータ処理を実行させる共有コア拡張ロジックを呼び出す段階を含む。
【０１５９】
複数の実施形態は、ＭＭＵと共有コア拡張ＭＭＵとの間でハードウェアにおいて同期信号を交換することにより、コアのメモリ管理ユニット（ＭＭＵ）と共有コア拡張ロジックの共有コア拡張ＭＭＵとを同期させる段階をさらに含む、上述した複数の第１の方法のいずれかを含む。
【０１６０】
複数の実施形態は、呼び出しに対応するページフォルトを、共有コア拡張メモリ管理ユニット（ＭＭＵ）からコアのＭＭＵにルーティングする段階をさらに含む、上述した複数の第１の方法のいずれかを含む。
【０１６１】
複数の実施形態は、共有コア拡張呼び出し命令を受信する前に、共有コア拡張コマンドレジスタを示す供給コア拡張停止命令を受信する段階と、供給コア拡張停止命令に応答して、供給コア拡張停止命令によって示される共有コア拡張コマンドレジスタに対応するデータ処理を中止し、共有コア拡張コマンドレジスタを解放する段階とをさらに含む、上述した複数の第１の方法のいずれかを含む。
【０１６２】
複数の実施形態は、共有コア拡張呼び出し命令を受信した後に、共有コア拡張コマンドレジスタを示す共有コア拡張読み出し命令を受信する段階と、共有コア拡張読み出し命令に応答して、共有コア拡張読み出し命令によって示される共有コア拡張コマンドレジスタからデータ処理完了ステータスを読み出す段階とをさらに含む、上述した複数の第１の方法のいずれかを含む。
【０１６３】
一実施形態では、機械可読記憶媒体は、機械によって実行された場合に、上述した複数の第１の方法のいずれかを機械に実行させる１つまたは複数の命令を格納する。
【０１６４】
一実施形態では、装置は、上述した複数の第１の方法のいずれかを実行するように構成され、または動作可能である。
【０１６５】
複数の実施形態は、プロセッサと、プロセッサと連結されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）とを含む第１のシステムを含む。プロセッサは、複数のコアと、複数のコアの各々と連結される共有コア拡張ロジックとを含む。共有コア拡張ロジックは、複数のコアの各々に共有される共有データ処理ロジックを有する。プロセッサは、共有コア拡張呼び出し命令に応答して共有コア拡張ロジックを呼び出す、複数のコアの各々に対する命令実行ロジックをさらに含む。呼び出しは、対応するコアの代わりに、共有データ処理ロジックにデータ処理を実行させる。
【０１６６】
複数の実施形態は、共有コア拡張呼び出し命令が、複数のコアの命令セットのマクロ命令を含む第１のシステムを含む。
【０１６７】
複数の実施形態は、命令実行ロジック及び共有コア拡張ロジックと連結される複数のアーキテクチャ上の共有コア拡張コマンドレジスタをさらに含み、共有コア拡張呼び出し命令が、複数の共有コア拡張コマンドレジスタの１つ及び複数のパラメータを示す、上述した複数の第１のシステムのいずれかを含む。
【図１】
2015532990.tif 000003
【図２】
2015532990.tif 000004
【図３】
2015532990.tif 000005
【図４】
2015532990.tif 000006
【図５】
2015532990.tif 000007
【図６】
2015532990.tif 000008
【図７】
2015532990.tif 000009
【図８Ａ】
2015532990.tif 000010
【図８Ｂ】
2015532990.tif 000011
【図９Ａ】
2015532990.tif 000012
【図９Ｂ】
2015532990.tif 000013
【図１０】
2015532990.tif 000014
【図１１】
2015532990.tif 000015
【図１２】
2015532990.tif 000016
【図１３】
2015532990.tif 000017
【図１４】
2015532990.tif 000018
【図１５】
2015532990.tif 000019
【国際調査報告】
2015532990.tif 000020
2015532990.tif 000021