(57)【特許請求の範囲】
【請求項１】
プロセッサであって、
レベル‐２（Ｌ２）キャッシュと、
複数の実行ユニットの第１のクラスタと、
複数の実行ユニットの第２のクラスタと、
複数の実行ユニットの前記第１のクラスタおよび前記Ｌ２キャッシュに通信可能に結合された第１のデータキャッシュユニット（ＤＣＵ）と、
複数の実行ユニットの前記第２のクラスタおよび前記Ｌ２キャッシュに通信可能に結合された第２のＤＣＵと、
を備え、
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、
データキャッシュと、
実行ユニットからメモリオペレーションを受信するロジックと、
前記データキャッシュにおいて情報が利用可能であるときに前記データキャッシュからの前記情報を用いて前記メモリオペレーションに応答するロジックと、
前記データキャッシュにおいて前記情報が利用不可能であるときに前記Ｌ２キャッシュから前記情報を取得するロジックと、
を有し、
当該プロセッサは、
当該プロセッサのオペレーションのすべてのクロックサイクルで、前記第１のＤＣＵの前記データキャッシュの全てのコンテンツを、前記第２のＤＣＵの前記データキャッシュの全てのコンテンツに等しいように維持するロジックをさらに備えるプロセッサ。
【請求項２】
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれさらにライトバックバッファを有し、
当該プロセッサは、
当該プロセッサのオペレーションの同じクロックサイクルにおいて、前記第１のＤＣＵの前記ライトバックバッファにおける第１のエントリと、前記第２のＤＣＵの前記ライトバックバッファにおける第２のエントリとの割り当てを実行するロジックと、
当該プロセッサのオペレーションの同じクロックサイクルにおいて、前記第１のＤＣＵの前記ライトバックバッファにおける第３のエントリの割り当て解除と、前記第２のＤＣＵの前記ライトバックバッファにおける第４のエントリの割り当てとを実行するロジックと、
をさらに備え、
前記第１のエントリおよび前記第２のエントリは互いに等しく、
前記第３のエントリおよび前記第４のエントリは互いに等しい、請求項１に記載のプロセッサ。
【請求項３】
当該プロセッサは、
前記第１のＤＣＵと複数の実行ユニットの前記第１のクラスタとの間、および、前記第２のＤＣＵと複数の実行ユニットの前記第２のクラスタとの間に通信可能に結合される１または複数のクラスタインターフェースをさらに備え、
前記１または複数のクラスタインターフェースは、
複数の実行ユニットの前記第１のクラスタおよび複数の実行ユニットの前記第２のクラスタの組み合わせからストアオペレーションを収集するロジックと、
前記第１のＤＣＵおよび前記第２のＤＣＵに前記ストアオペレーションを発行するロジックと、
を有する、請求項１または２に記載のプロセッサ。
【請求項４】
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、
前記データキャッシュからの複数の排除を同期的に処理するロジックと、
前記データキャッシュへの複数のフィルを同期的に処理するロジックと、
をさらに有する、請求項１〜３の何れか１項に記載のプロセッサ。
【請求項５】
当該プロセッサは、
前記第１のＤＣＵおよび複数の実行ユニットの前記第１のクラスタの間に通信可能に結合されたクラスタインターフェースをさらに備え、
前記クラスタインターフェースは、
複数の実行ユニットの前記第１のクラスタからのロードオペレーションを収集するロジックと、
前記第１のＤＣＵに前記ロードオペレーションを発行するロジックと、
を有し、
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、フィルバッファをさらに有し、
前記第１のＤＣＵおよび前記第２のＤＣＵは、バスに通信可能に結合され、
前記第１のＤＣＵは、
前記データキャッシュ上での前記ロードオペレーションのミスを識別するロジックと、
前記ミスに基づいて前記フィルバッファに前記ロードオペレーションを書き込むロジックと、
前記バスを介して前記第２のＤＣＵに前記ロードオペレーションを発行するロジックと、
をさらに有する、請求項１〜４の何れか１項に記載のプロセッサ。
【請求項６】
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、スヌープバッファをさらに有し、
当該プロセッサは、当該プロセッサのオペレーションのすべてのクロックサイクルにおいて前記第１のＤＣＵの前記スヌープバッファの複数のコンテンツを、前記第２のＤＣＵの前記スヌープバッファの複数のコンテンツに等しいように維持するロジックをさらに備える、請求項１〜５の何れか１項に記載のプロセッサ。
【請求項７】
当該プロセッサは、前記第１のＤＣＵと前記Ｌ２キャッシュとの間、および、前記第２のＤＣＵおよび前記Ｌ２キャッシュの間に通信可能に結合された１または複数のキャッシュインターフェースをさらに備え、
前記１または複数のクラスタインターフェースは、前記Ｌ２キャッシュからのスヌープ要求を前記第１のＤＣＵおよび前記第２のＤＣＵに同時に発行するロジックを有する、請求項１〜６の何れか１項に記載のプロセッサ。
【請求項８】
プロセッサ内で、
第１のデータキャッシュユニット（ＤＣＵ）において複数の実行ユニットの第１のクラスタから複数のメモリオペレーションを受信する段階と、
第２のＤＣＵにおいて複数の実行ユニットの第２のクラスタから複数のメモリオペレーションを受信する段階と、
前記第１のＤＣＵにおける第１のデータキャッシュにおいて情報が利用可能であるときに、前記第１のデータキャッシュからの前記情報を用いて、前記第１のＤＣＵにおいて受信された複数のメモリオペレーションに応答する段階と、
前記第２のＤＣＵにおける第２のデータキャッシュにおいて前記情報が利用可能であるときに、前記第２のデータキャッシュからの情報を用いて、前記第２のＤＣＵにおいて受信された複数のメモリオペレーションに応答する段階と、
前記第１のデータキャッシュおよび前記第２のデータキャッシュにおいて前記情報が利用不可能であるときに、前記第１のＤＣＵおよび前記第２のＤＣＵに通信可能に結合されたＬ２キャッシュから前記情報を取得する段階と、
前記プロセッサのオペレーションのすべてのクロックサイクルにおいて前記第１のＤＣＵの前記第１のデータキャッシュの全てのコンテンツを、前記第２のＤＣＵの前記第２のデータキャッシュの全てのコンテンツに等しいように維持する段階と、
を備える方法。
【請求項９】
前記プロセッサのオペレーションの同じクロックサイクルにおいて、前記第１のＤＣＵのライトバックバッファにおける第１のエントリと、前記第２のＤＣＵの前記ライトバックバッファにおける第２のエントリとの割り当てを実行する段階と、
前記プロセッサのオペレーションの同じクロックサイクルにおいて、前記第１のＤＣＵの前記ライトバックバッファにおける第３のエントリの割り当て解除と、前記第２のＤＣＵの前記ライトバックバッファにおける第４のエントリの割り当てとを実行する段階と、
をさらに備え、
前記第１のエントリおよび前記第２のエントリは互いに等しく、
前記第３のエントリおよび前記第４のエントリは互いに等しい、請求項８に記載の方法。
【請求項１０】
複数の実行ユニットの前記第１のクラスタおよび複数の実行ユニットの前記第２のクラスタの組み合わせからストアオペレーションを収集する段階と、
前記第１のＤＣＵおよび前記第２のＤＣＵに前記ストアオペレーションを発行する段階と、
をさらに備える、請求項８または９に記載の方法。
【請求項１１】
前記第１のデータキャッシュおよび前記第２のデータキャッシュからの同等の複数の排除を同期的に処理する段階と、
前記第１のデータキャッシュおよび前記第２のデータキャッシュへの同等の複数のフィルを同期的に処理する段階と、
をさらに備える請求項８〜１０の何れか１項に記載の方法。
【請求項１２】
複数の実行ユニットの前記第１のクラスタからロードオペレーションを収集する段階と、
前記第１のＤＣＵに前記ロードオペレーションを発行する段階と、
前記第１のデータキャッシュ上で前記ロードオペレーションのミスを識別する段階と、
前記ミスに基づいて、前記第１のＤＣＵにおける第１フィルバッファに前記ロードオペレーションを書き込む段階と、
前記第１フィルバッファからの前記ロードオペレーションを、バスを介して前記第２のＤＣＵの第２フィルバッファに発行する段階と、
をさらに備える請求項８〜１１の何れか１項に記載の方法。
【請求項１３】
前記プロセッサのオペレーションのすべてのクロックサイクルにおいて、前記第１のＤＣＵの第１スヌープバッファの複数のコンテンツを、前記第２のＤＣＵの第２スヌープバッファの複数のコンテンツに等しいように維持する段階をさらに備える、請求項８〜１２の何れか１項に記載の方法。
【請求項１４】
命令ストリームと、
前記命令ストリームに通信可能に結合されたプロセッサと、
を備え、
前記プロセッサは、
前記命令ストリームを実行するロジックと、
レベル‐２（Ｌ２）キャッシュと、
複数の実行ユニットの第１のクラスタと、
複数の実行ユニットの第２のクラスタと、
複数の実行ユニットの前記第１のクラスタおよび前記Ｌ２キャッシュに通信可能に結合された第１のデータキャッシュユニット（ＤＣＵ）と、
複数の実行ユニットの前記第２のクラスタおよび前記Ｌ２キャッシュに通信可能に結合された第２のＤＣＵと、
を有し、
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、
データキャッシュと、
実行ユニットからメモリオペレーションを受信するロジックと、
前記データキャッシュにおいて情報が利用可能であるときに、前記データキャッシュからの前記情報を用いて、前記メモリオペレーションに応答するロジックと、
前記データキャッシュにおいて前記情報が利用不可能であるときに、前記Ｌ２キャッシュから前記情報を取得するロジックと、
を含み、
前記プロセッサは、
前記プロセッサのオペレーションのすべてのクロックサイクルにおいて、前記第１のＤＣＵの前記データキャッシュの全てのコンテンツを、前記第２のＤＣＵの前記データキャッシュの全てのコンテンツに等しいように維持するロジックをさらに有するシステム。
【請求項１５】
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、ライトバックバッファをさらに含み、
前記プロセッサは、
前記プロセッサのオペレーションの同じクロックサイクルにおいて、前記第１のＤＣＵの前記ライトバックバッファにおける第１のエントリと、前記第２のＤＣＵの前記ライトバックバッファにおける第２のエントリとの割り当てを実行するロジックと、
前記プロセッサのオペレーションの同じクロックサイクルにおいて、前記第１のＤＣＵの前記ライトバックバッファにおける第３のエントリの割り当て解除と、前記第２のＤＣＵの前記ライトバックバッファにおける第４のエントリの割り当てとを実行するロジックと、
をさらに有し、
前記第１のエントリおよび前記第２のエントリは互いに等しく、
前記第３のエントリおよび前記第４のエントリは互いに等しい、請求項１４に記載のシステム。
【請求項１６】
前記プロセッサは、前記第１のＤＣＵと複数の実行ユニットの前記第１のクラスタとの間、および、前記第２のＤＣＵと複数の実行ユニットの前記第２のクラスタとの間に通信可能に結合された１または複数のクラスタインターフェースをさらに有し、
前記１または複数のクラスタインターフェースは、
複数の実行ユニットの前記第１のクラスタおよび複数の実行ユニットの前記第２のクラスタの組み合わせからストアオペレーションを収集するロジックと、
前記第１のＤＣＵおよび前記第２のＤＣＵに前記ストアオペレーションを発行するロジックと、
を含む、請求項１４または１５に記載のシステム。
【請求項１７】
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、
前記データキャッシュからの複数の排除を同期的に処理するロジックと、
前記データキャッシュへの複数のフィルを同期的に処理するロジックと、
をさらに有する、請求項１４〜１６の何れか１項に記載のシステム。
【請求項１８】
前記プロセッサは、前記第１のＤＣＵおよび複数の実行ユニットの前記第１のクラスタの間に通信可能に結合されたクラスタインターフェースをさらに有し、
前記クラスタインターフェースは、
複数の実行ユニットの前記第１のクラスタからロードオペレーションを収集するロジックと、
前記第１のＤＣＵに前記ロードオペレーションを発行するロジックと、
を含み、
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、フィルバッファをさらに有し、
前記第１のＤＣＵおよび前記第２のＤＣＵは、バスに通信可能に結合され、
前記第１のＤＣＵは、
前記データキャッシュ上で前記ロードオペレーションのミスを識別するロジックと、
前記ミスに基づいて前記ロードオペレーションを前記フィルバッファに書き込むロジックと、
前記バスを介して前記ロードオペレーションを前記第２のＤＣＵに発行するロジックと、
をさらに含む、請求項１４〜１７の何れか１項に記載のシステム。
【請求項１９】
前記第１のＤＣＵおよび前記第２のＤＣＵはそれぞれ、スヌープバッファをさらに含み、
前記プロセッサは、前記プロセッサのオペレーションのすべてのクロックサイクルにおいて、前記第１のＤＣＵの前記スヌープバッファの複数のコンテンツを、前記第２のＤＣＵの前記スヌープバッファの複数のコンテンツに等しいように維持するロジックをさらに有する、請求項１４〜１８の何れか１項に記載のシステム。
【請求項２０】
前記プロセッサは、前記第１のＤＣＵと前記Ｌ２キャッシュとの間、および、前記第２のＤＣＵおよび前記Ｌ２キャッシュの間に通信可能に結合された１または複数のキャッシュインターフェースをさらに有し、
前記１または複数のクラスタインターフェースは、前記Ｌ２キャッシュからのスヌープ要求を、前記第１のＤＣＵおよび前記第２のＤＣＵに同時に発行するロジックを含む、請求項１４〜１９の何れか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、処理ロジック、マイクロプロセッサ、および、プロセッサまたは他の処理ロジックにより実行されたときに、論理的、数学的、または他の機能的なオペレーションを実行する、関連する命令セットアーキテクチャの分野に関する。
【背景技術】
【０００２】
マルチプロセッサシステムは、ますます普通のものになっている。マルチプロセッサシステムの用途は、デスクトップコンピューティングまでも動的にドメイン分割することを含む。マルチプロセッサシステムを利用するべく、実行されるべきスレッドのコードは複数のスケジューラによりアウトオブオーダ実行のための様々な処理エンティティに分離されてよい。アウトオブオーダ実行は、複数の命令を、そのような複数の命令に対する入力が利用可能になると、実行されうる。従って、コードシーケンス内に後で現れる命令は、コードシーケンス内で先に現れる命令の前に実行されてよい。
【図面の簡単な説明】
【０００３】
複数の実施形態が、添付図面の図において限定ではなく例として示されている。
【図１Ａ】命令を実行する複数の実行ユニットを含みうるプロセッサを用いて形成された、本開示における複数の実施形態に係る例示的なコンピュータシステムのブロック図である。
【図１Ｂ】本開示における複数の実施形態に係るデータ処理システムを示す図である。
【図１Ｃ】文字列比較オペレーションを実行するデータ処理システムの他の実施形態を示す図である。
【図２】本開示における複数の実施形態に係る、複数の命令を実行する複数のロジック回路を含みうるプロセッサのためのマイクロアーキテクチャのブロック図である。
【図３Ａ】本開示における複数の実施形態に係る、マルチメディアレジスタ内の様々なパックドデータタイプの表現を示す図である。
【図３Ｂ】本開示における複数の実施形態に係る、レジスタ内の考えうる複数のデータ格納フォーマットを示す図である。
【図３Ｃ】本開示における複数の実施形態に係る、マルチメディアレジスタにおける様々な符号付きおよび符号なしのパックドデータタイプの表現を示す図である。
【図３Ｄ】オペレーションエンコーディングフォーマットの実施形態を示す図である。
【図３Ｅ】本開示における複数の実施形態に係る、４０またはより多くのビットを持つ他の可能なオペレーションエンコーディングフォーマットを示す図である。
【図３Ｆ】本開示における複数の実施形態に係る、さらに他の可能なオペレーションエンコーディングフォーマットを示す図である。
【図４Ａ】本開示における複数の実施形態に係る、インオーダパイプライン、および、レジスタリネームステージ、アウトオブオーダ発行／実行パイプラインを示すブロック図である。
【図４Ｂ】本開示における複数の実施形態に係る、プロセッサに含まれるインオーダアーキテクチャコアおよびレジスタリネーミングロジック、アウトオブオーダ発行／実行ロジックを示すブロック図である。
【図５Ａ】本開示における複数の実施形態に係るプロセッサのブロック図である。
【図５Ｂ】本開示における複数の実施形態に係る、コアの実装例のブロック図である。
【図６】本開示における複数の実施形態に係るシステムのブロック図である。
【図７】本開示における複数の実施形態に係る第２のシステムのブロック図である。
【図８】本開示における複数の実施形態に係る第３のシステムのブロック図である。
【図９】本開示における複数の実施形態に係るシステムオンチップのブロック図である。
【図１０】本開示における複数の実施形態に係る、最小命令を実行しうる中央処理ユニットおよびグラフィックス処理ユニットを含むプロセッサを示す図である。
【図１１】本開示における複数の実施形態に係る複数のＩＰコアの開発を説明するブロック図である。
【図１２】本開示における複数の実施形態に従い、異なるタイプのプロセッサにより第１のタイプの命令がどのようにエミュレーションされうるかを示す図である。
【図１３】本開示における複数の実施形態に従い、ソース命令セットにおける複数のバイナリ命令を、ターゲット命令セットにおける複数のバイナリ命令に変換するソフトウェア命令変換器の使用を対比したブロック図を示す。
【図１４】本開示における複数の実施形態に係る、プロセッサの命令セットアーキテクチャのブロック図である。
【図１５】本開示における複数の実施形態に係る、プロセッサの命令セットアーキテクチャのより詳細なブロック図である。
【図１６】本開示における複数の実施形態に係る、プロセッサの命令セットアーキテクチャのための実行パイプラインのブロック図である。
【図１７】本開示における複数の実施形態に係る、プロセッサを利用する電子デバイスのブロック図である。
【図１８】クラスタ化された複数の実行ユニットを有する機械内にメモリアクセス用の命令およびロジックを実装するためのシステムの機能ブロック図である。
【図１９Ａ】本開示における複数の実施形態に係る複数のデータキャッシュユニットの機能ブロック図である。
【図１９Ｂ】本開示における複数の実施形態に係る複数のデータキャッシュユニットの機能ブロック図である。
【図２０Ａ】本開示における複数の実施形態に係る、クラスタ化された機械内のメモリアクセスのための方法の図である。
【図２０Ｂ】本開示における複数の実施形態に係る、クラスタ化された機械内のメモリアクセスのための方法の図である。
【発明を実施するための形態】
【０００４】
以下の記述は、プロセッサ、仮想プロセッサ、パッケージ、コンピュータシステム、または他の処理装置におけるメモリアクセス用の命令および処理ロジックを説明する。一実施形態において、そのような処理装置は、クラスタ化された機械における処理装置を含んでよく、複数の実行ユニットはまとめてクラスタ化されてよい。別の実施形態において、そのような処理装置は、クラスタ化されたワイド実行機械を含んでよい。以下の説明では、本開示の実施形態のより完全な理解を提供するために、処理ロジック、プロセッサタイプ、マイクロアーキテクチャ条件、イベント、有効化（enablement）メカニズム等の多数の具体的な詳細が述べられる。しかしながら、本実施形態はそのような具体的な詳細がなくても実施されうることが当業者によって認識されるであろう。加えて、幾つかのよく知られた構造、回路等は、本開示の実施形態を不必要に分かりにくくしないようにするために詳細には示されていない。
【０００５】
以下の複数の実施形態はプロセッサを参照しながら説明されるが、複数の他の実施形態は、複数の他のタイプの集積回路およびロジックデバイスに適用可能である。本開示の実施形態の同様の技法及び教示内容は、より高いパイプラインスループット及び改善された性能から利益を受けうる他のタイプの回路又は半導体デバイスに適用されてよい。本開示の実施形態の教示内容は、データ操作を実行する任意のプロセッサ又は機械に適用可能である。しかしながら、本実施形態は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビット、又は１６ビットのデータオペレーションを実行するプロセッサ又は機械に限定されるものではなく、データの操作又は管理が実行されうる任意のプロセッサ及び機械に適用されてよい。加えて、以下の説明は、複数の例を提供し、複数の添付図面は、例示を目的として様々な例を示す。しかしながら、これらの例は、本開示の実施形態の全ての可能な実施態様を網羅的に列挙したものを提供するものではなく、単に本開示の実施形態の例を提供することを意図したものにすぎないので、限定する意味に解釈されるべきではない。
【０００６】
以下の例は、実行ユニット及びロジック回路に関する命令のハンドリング及び分散を説明しているが、本開示の他の実施形態は、機械によって実行されると、当該機械に、本開示の少なくとも一実施形態と一致した機能を実行させる機械可読有形媒体上にストアされたデータ又は命令として達成されうる。一実施形態においては、本開示の実施形態に関連付けられた機能が、機械実行可能命令に具現化される。これらの命令は、命令を用いてプログラムされうる汎用プロセッサ又は専用プロセッサに本開示の複数の段階を実行させるのに用いられうる。本開示の実施形態は、本開示の実施形態による１または複数のオペレーションを実行するようにコンピュータ（又は他の電子デバイス）をプログラムするのに用いられうる命令をストアしている機械又はコンピュータ可読媒体を含むことができるコンピュータプログラム製品又はソフトウェアとして提供されてよい。さらに、本開示の実施形態の複数の段階は、複数の段階を実行するための固定機能ロジックを含む特定のハードウェア構成要素によって、又はプログラムされたコンピュータ構成要素及び固定機能ハードウェア構成要素の任意の組み合わせによって実行されてよい。
【０００７】
本開示の実施形態を実行するようにロジックをプログラムするのに用いられる命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又は他のストレージ等の、システムのメモリ内にストアされてよい。さらに、命令は、ネットワークを介して又は他のコンピュータ可読媒体によって配布することもできる。従って、機械可読媒体は、機械（例えば、コンピュータ）により可読な形態で情報を格納または送信するための任意のメカニズム、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク、リードオンリーメモリ（ＣＤ−ＲＯＭ）、光磁気ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリーメモリ（ＥＰＲＯＭ）、電子的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、または、電気、光、音響、または他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）を介したインターネット上での情報の送信に用いられる有形の機械可読ストレージを含み得るが、これらに限定されない。従って、コンピュータ可読媒体は、機械（例えば、コンピュータ）によって可読な形態で電子的な命令又は情報をストア又は伝送するのに好適な任意のタイプの有形の機械可読媒体を含んでよい。
【０００８】
設計は、作成からシミュレーション、製造に至る様々な段階を経てよい。設計を表わすデータは当該設計を多数の態様で表してよい。まず、シミュレーションにおいて役立ち得るように、ハードウェアは、ハードウェア記述言語又は別の機能記述言語を用いて表されてよい。さらに、ロジックおよび／または複数のトランジスタゲートを備える回路レベルモデルが、設計処理のいくつかの段階で生成されてよい。さらに、或るステージにおける複数の設計は、ハードウェアモデルにおける様々なデバイスの物理的配置を表すデータのレベルに達しうる。いくつかの半導体製造技法が用いられる場合、ハードウェアモデルを表すデータは、集積回路を作製するのに用いられるマスク用の種々のマスク層上の様々な特徴部の存否を指定するデータであってよい。設計のいずれの表現においても、データは、任意の形態の機械可読媒体にストアされてよい。メモリ、又はディスク等の磁気ストレージ若しくは光ストレージは、そのような情報を伝送するために変調又は別の方法で生成された光波又は電波を介して伝送される情報をストアする機械可読媒体であってよい。コード又は設計を示すか又は搬送する電気搬送波が伝送されるとき、この電気信号のコピー、バッファリング、又は再送が実行される範囲において、新たなコピーが作成されうる。従って、通信プロバイダまたはネットワークプロバイダは有形な機械可読媒体上に少なくとも一時的に、搬送波にエンコードされた情報のようなアーティクルを格納してよく、本開示の複数の実施形態に係る複数の技術を具現する。
【０００９】
現代のプロセッサでは、複数の異なる実行ユニットが、様々なコード及び命令を処理及び実行するのに用いられうる。命令には、即座に完了するものもあれば、完了するのに複数のクロックサイクルを要しうるものもある。命令のスループットが速ければ速いほど、プロセッサの全体的な性能はより良好である。従って、出来るだけ多くの命令を出来るだけ速く実行するのが有利であろう。しかし、浮動小数点命令、ロード／ストアオペレーション、データ移動などのような、より高い複合性を有し、実行時間およびプロセッサリソースの点でより多くを必要とする特定の複数の命令がありうる。
【００１０】
より多くのコンピュータシステムがインターネット、テキスト、およびマルチメディアアプリケーションにおいて用いられるにつれ、追加のプロセッサのサポートが時の経過と共に導入されてきた。一実施形態において、命令セットは、データタイプ、命令、レジスタアーキテクチャ、アドレッシングモード、メモリアーキテクチャ、割り込みおよび例外処理、外部入力および出力（Ｉ／Ｏ）を含む１または複数のコンピュータアーキテクチャに関連付けられ得る。
【００１１】
一実施形態においては、命令セットアーキテクチャ（ＩＳＡ）は、１または複数の命令セットを実装するのに用いられるプロセッサロジック及び回路を備えうる１または複数のマイクロアーキテクチャによって実装されうる。従って、異なるマイクロアーキテクチャを有するプロセッサが共通命令セットの少なくとも一部分を共有しうる。例えば、Ｉｎｔｅｌ（登録商標）  Ｐｅｎｔｉｕｍ（登録商標）  ４プロセッサ、Ｉｎｔｅｌ（登録商標）  Ｃｏｒｅ（商標）プロセッサ、及び、カリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．社からのプロセッサは、略同一のバージョンのｘ８６命令セット（相対的に新しいバージョンに伴って追加された、いくつかの拡張を有するもの）を実装しているが、異なる内部設計を有する。同様に、ＡＲＭ  Ｈｏｌｄｉｎｇｓ  Ｌｔｄ．、ＭＩＰＳなどの他の複数のプロセッサ開発会社、またはそれらのライセンシー若しくはアダプタにより設計された複数のプロセッサは、共通命令セットの少なくとも一部を共有し得るが、異なるプロセッサ設計を含み得る。例えば、ＩＳＡの同じレジスタアーキテクチャが、専用の物理的レジスタ、レジスタリネーミングメカニズムを用いる（例えば、Ｒｅｇｉｓｔｅｒ  Ａｌｉａｓ  Ｔａｂｌｅ（ＲＡＴ）、リオーダバッファ（ＲＯＢ）、およびリタイアレジスタファイルの使用）１または複数の動的に割り当てられた物理的レジスタを含む、新たな、または周知の技術を用いる異なる複数のマイクロアーキテクチャで異なる複数のやり方で実装され得る。一実施形態において、レジスタは、ソフトウェアプログラマによりアドレッシング可能であってもなくてもよい１または複数のレジスタ、レジスタアーキテクチャ、レジスタファイル、または他のレジスタセットを含み得る。
【００１２】
命令は、１または複数の命令フォーマットを含んでよい。一実施形態においては、命令フォーマットは、特に、実行されるオペレーションと、そのオペレーションが実行される対象の複数のオペランドとを指定する様々なフィールド（ビット数、ビットのロケーション等）を示してよい。さらなる実施形態において、幾つかの命令フォーマットは、命令テンプレート（又はサブフォーマット）によってさらに定義されてよい。例えば、特定の命令フォーマットの複数の命令テンプレートは、命令フォーマットの複数のフィールドの異なる複数のサブセットを有するよう定義され得、および／または、異なるように翻訳される特定のフィールドを有するよう定義され得る。一実施形態においては、命令は、命令フォーマットを用いて（および、定義される場合には、その命令フォーマットの複数の命令テンプレートのうちの特定の１つで）表され、オペレーションと、そのオペレーションが行われる対象のオペランドとを指定又は指示してよい。
【００１３】
科学の、財務の、自動ベクトル化された汎用の、ＲＭＳ（認識、マイニング、および合成）の、並びにビジュアルおよびマルチメディアのアプリケーション（例えば、２Ｄ／３Ｄグラフィックス、画像処理、ビデオ圧縮／解凍、音声認識アルゴリズムおよびオーディオ操作）は、多数のデータ項目に対して同じオペレーションが実行されることを必要とし得る。一実施形態において、単一命令多重データ処理（ＳＩＭＤ）は、プロセッサに、複数のデータ要素に対してオペレーションを実行させるタイプの命令を指す。ＳＩＭＤ技術は、レジスタ内のビットを複数の固定サイズ又は可変サイズのデータ要素に論理的に分割しうるプロセッサにおいて用いられうる。分割されたデータ要素のそれぞれは、別々の値を表す。例えば、一実施形態において、６４ビットレジスタにおける複数のビットは、別個の１６ビット値をそれぞれが表す４つの別個の１６ビットのデータ要素を含むソースオペランドとして編成され得る。このタイプのデータは、「パック型」データタイプ又は「ベクトル」データタイプと呼んでもよく、且つ、このデータタイプのオペランドは、パックドデータオペランド又はベクトルオペランドと呼ばれてよい。一実施形態において、パックドデータ項目またはベクトルは、単一のレジスタ内に格納されたパックドデータ要素のシーケンスであり得、パックドデータオペランドまたはベクトルオペランドは、ＳＩＭＤ命令（または、「パックドデータ命令」または「ベクトル命令」）のソースまたはデスティネーションオペランドであり得る。一実施形態において、ＳＩＭＤ命令は、２つのソースベクトルオペランドに対して実行される単一のベクトルオペレーションを指定して、同じまたは異なるサイズで、同じまたは異なる数のデータ要素を有し、かつ、データ要素の順序が同じまたは異なるデスティネーションベクトルオペランド（結果ベクトルオペランドとも呼ばれる）を生成する。
【００１４】
ｘ８６、ＭＭＸ（商標）、Ｓｔｒｅａｍｉｎｇ  ＳＩＭＤ拡張（ＳＳＥ）、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４．１、およびＳＳＥ４．２命令を含む命令セットを有するＩｎｔｅｌ（登録商標）Ｃｏｒｅ（商標）プロセッサ、ベクトル浮動小数点（ＶＦＰ）および／またはＮＥＯＮ命令を含む命令セットを有するＡＲＭ  Ｃｏｒｔｅｘ（登録商標）プロセッサファミリなどのＡＲＭプロセッサ、並びに、Ｃｈｉｎｅｓｅ  Ａｃａｄｅｍｙ  ｏｆ  ＳｃｉｅｎｃｅｓのＩｎｓｔｉｔｕｔｅ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ  Ｔｅｃｈｎｏｌｏｇｙ（ＩＣＴ）により開発されるＬｏｏｎｇｓｏｎプロセッサファミリなどのＭＩＰＳプロセッサにより用いられるものなどのＳＩＭＤ技術は、アプリケーション性能の著しい改善を可能とした（Ｃｏｒｅ（商標）およびＭＭＸ（商標）は、カリフォルニア州サンタクララ市のＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標または商標である。）
【００１５】
一実施形態においては、デスティネーションレジスタ／データ及びソースレジスタ／データは、対応するデータ又はオペレーションのソース及びデスティネーションを表す一般的な用語でありうる。いくつかの実施形態において、それらは、レジスタ、メモリ、または描写されているもの以外の名前または機能を有する他の複数の記憶領域により実装され得る。例えば、一実施形態において、「ＤＥＳＴ１」は、一時的な記憶レジスタまたは他の記憶領域であり得、他方、「ＳＲＣ１」および「ＳＲＣ２」は、第１および第２ソース記憶レジスタまたは他の記憶領域であり得る、などである。他の複数の実施形態において、ＳＲＣおよびＤＥＳＴ記憶領域の２またはそれより多くは、同じ記憶領域（例えば、ＳＩＭＤレジスタ）内の異なるデータ記憶素子に対応し得る。一実施形態においては、ソースレジスタのうちの１つは、例えば、第１のソースデータ及び第２のソースデータに対して実行されるオペレーションの結果を、これらの２つのソースレジスタうち、デスティネーションレジスタとしての機能を果たす一方のものにライトバックすることによって、デスティネーションレジスタとしても機能してよい。
【００１６】
図１Ａは、命令を実行する複数の実行ユニットを含みうるプロセッサを用いて形成された、本開示における複数の実施形態に係る例示的なコンピュータシステムのブロック図である。システム１００は、本明細書で説明する実施形態におけるように、本開示に従ってデータを処理するためのアルゴリズムを実行するロジックを有する実行ユニットを用いて、プロセッサ１０２等の構成要素を備えてよい。システム１００は、カリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社から入手可能なＰＥＮＴＩＵＭ（登録商標）  ＩＩＩ、ＰＥＮＴＩＵＭ（登録商標）  ４、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ（登録商標）、ＸＳｃａｌｅ（商標）、および／またはＳｔｒｏｎｇＡＲＭ（商標）マイクロプロセッサに基づいた処理システムを表しうるが、その他のシステム（その他のマイクロプロセッサを有するＰＣ、エンジニアリングワークステーション、セットトップボックス、及びこれらに類似したものを含む）を使用してもよい。一実施形態においては、サンプルのシステム１００は、ワシントン州レドモンドのマイクロソフト社から入手可能なＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムのバージョンを実行してよいが、複数の他のオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）およびＬｉｎｕｘ（登録商標））、埋め込みソフトウェア、および／または複数のグラフィカルユーザインターフェースも使用されてよい。従って、本開示の実施形態は、ハードウェア回路部及びソフトウェアのどの特定の組み合わせにも限定されるものではない。
【００１７】
複数の実施形態は、コンピュータシステムに限定されない。本開示の実施形態は、ハンドヘルドデバイス及び組み込みアプリケーション等の他のデバイスにおいて用いられてよい。複数のハンドヘルドデバイスのいくつかの例は、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）、およびハンドヘルドＰＣを含む。組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ＷＡＮ）スイッチ、又は少なくとも一実施形態による１つ若しくは複数の命令を実行しうる他の任意のシステムを含んでよい。
【００１８】
コンピュータシステム１００は、本開示の一実施形態に従って少なくとも１つの命令を実行するアルゴリズムを実行する１または複数の実行ユニット１０８を含みうるプロセッサ１０２を含んでよい。一実施形態は、単一プロセッサのデスクトップシステム又はサーバーシステムに関して説明されうるが、他の実施形態はマルチプロセッサシステムに含められてよい。システム１００は、「ハブ」システムアーキテクチャの一例であってよい。システム１００はデータ信号を処理するためのプロセッサ１０２を含んでよい。プロセッサ１０２は、複合命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、命令セットの組み合わせを実装するプロセッサ、又は例えばデジタル信号プロセッサ等の他の任意のプロセッサデバイスを含んでよい。一実施形態において、プロセッサ１０２は、プロセッサ１０２とシステム１００内の複数の他の構成要素との間でデータ信号を伝送しうるプロセッサバス１１０に結合されてよい。システム１００の複数の要素は、当該技術に精通している者によく知られている通常の複数の機能を実行してよい。
【００１９】
一実施形態においては、プロセッサ１０２は、レベル１（Ｌ１）内部キャッシュメモリ１０４を有してよい。アーキテクチャに応じて、プロセッサ１０２は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してよい。別の実施形態においては、キャッシュメモリは、プロセッサ１０２の外部に存在してよい。他の実施形態は、特定の実施態様及びニーズに応じて内部キャッシュ及び外部キャッシュの両方の組み合わせも備えてよい。レジスタファイル１０６は、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、及び命令ポインタレジスタを含む様々なレジスタに異なるタイプのデータをストアしてよい。
【００２０】
整数オペレーション及び浮動小数点オペレーションを実行するロジックを有する実行ユニット１０８も、プロセッサ１０２に存在する。プロセッサ１０２は、特定のマクロ命令用のマイクロコード（μコード）をストアするマイクロコードＲＯＭも有してよい。一実施形態において、実行ユニット１０８は、パックド命令セット１０９を処理するロジックを含んでよい。汎用プロセッサ１０２の命令セットに、それら命令を実行する関連付けられた回路と共にパックド命令セット１０９を含めることにより、多くのマルチメディアアプリケーションにより用いられる複数のオペレーションが、パックドデータを用いて汎用プロセッサ１０２内で実行され得る。従って、パックドデータに対してオペレーションを実行するためにプロセッサのデータバスの全幅を用いることによって、多くのマルチメディアアプリケーションが高速化されうるとともに、より効率的に実行されうる。これによって、プロセッサのデータバスにわたってより小さなデータの単位を転送する必要性をなくし、１つのデータ要素に対して一時に１または複数のオペレーションを実行してよい。
【００２１】
実行ユニット１０８の複数の実施形態は、マイクロコントローラ、組み込みプロセッサ、グラフィックスデバイス、ＤＳＰ、及び他のタイプのロジック回路において用いられうる。システム１００はメモリ１２０を備えてよい。メモリ１２０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリデバイス、又は他のメモリデバイスとして実装されてよい。メモリ１２０は、プロセッサ１０２が実行しうる、データ信号によって表された命令および／またはデータをストアしてよい。
【００２２】
システムロジックチップ１１６は、プロセッサバス１１０及びメモリ１２０に結合されてよい。システムロジックチップ１１６は、メモリコントローラハブ（ＭＣＨ）を含んでよい。プロセッサ１０２は、プロセッサバス１１０を介してＭＣＨ１１６と通信してよい。ＭＣＨ１１６は、命令及びデータの格納、並びにグラフィックスコマンド、データ及びテクスチャの格納のためのメモリ１２０への高帯域幅メモリパス１１８を提供してよい。ＭＣＨ１１６は、システム１００内のプロセッサ１０２、メモリ１２０、及び他の構成要素の間でデータ信号を誘導するとともに、プロセッサバス１１０、メモリ１２０、及びシステムＩ／Ｏ１２２の間でデータ信号をブリッジしてよい。幾つかの実施形態においては、システムロジックチップ１１６は、グラフィックスコントローラ１１２に結合するためのグラフィックスポートを提供してよい。ＭＣＨ１１６は、メモリインターフェース１１８を通じてメモリ１２０に結合されてよい。グラフィックスカード１１２は、アクセラレーテッドグラフィックスポート（ＡＧＰ）インターコネクト１１４を通じてＭＣＨ１１６に結合されてよい。
【００２３】
システム１００は、独自のハブインターフェースバス１２２を用いて、ＭＣＨ１１６をＩ／Ｏコントローラハブ（ＩＣＨ）１３０に結合してよい。一実施形態において、ＩＣＨ１３０は、ローカルＩ／Ｏバスを介して幾つかのＩ／Ｏデバイスに直接接続を提供してよい。このローカルＩ／Ｏバスは、周辺装置をメモリ１２０、チップセット、及びプロセッサ１０２に接続するための高速Ｉ／Ｏバスを有してよい。複数の例は、オーディオコントローラ、ファームウェアハブ（フラッシュＢＩＯＳ）１２８、無線送受信機１２６、データストレージ１２４、ユーザー入力インターフェース及びキーボードインターフェースを含むレガシＩ／Ｏコントローラ、ユニバーサルシリアルバス（ＵＳＢ）等のシリアル拡張ポート、並びにネットワークコントローラ１３４を含んでよい。データストレージデバイス１２４は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス、又は他のマスストレージデバイスを含んでよい。
【００２４】
システムの別の実施形態については、一実施形態による命令は、システムオンチップとともに用いてよい。システムオンチップの一実施形態は、プロセッサとメモリとを有する。１つのそのようなシステム用のメモリはフラッシュメモリを含んでよい。フラッシュメモリは、プロセッサ及び他のシステム構成要素と同じダイ上に配置されてよい。加えて、メモリコントローラ又はグラフィックスコントローラ等の他のロジックブロックも、システムオンチップ上に配置されてよい。
【００２５】
図１Ｂは、本開示における複数の実施形態の原理を実装するデータ処理システム１４０を示す図である。本明細書において説明する実施形態が本開示の実施形態の範囲から逸脱することなく代替の処理システムとともに動作し得ることが当業者によって容易に認識されるであろう。
【００２６】
コンピュータシステム１４０は、一実施形態による少なくとも１つの命令を実行する処理コア１５９を備える。一実施形態において、処理コア１５９は、任意のタイプのアーキテクチャの処理ユニットを表す。この任意のタイプのアーキテクチャには、ＣＩＳＣタイプ、ＲＩＳＣタイプ、又はＶＬＩＷタイプのアーキテクチャが含まれるが、これらに限定されるものではない。処理コア１５９は、１または複数のプロセス技術における製造に好適であってよく、機械可読媒体上で十分詳細に表現されることによって上記製造を容易にするのに好適であってよい。
【００２７】
処理コア１５９は、実行ユニット１４２、一組のレジスタファイル１４５、及びデコーダー１４４を有する。処理コア１５９は、本開示の実施形態の理解には不要でありうる追加の回路部（図示せず）も有してよい。実行ユニット１４２は、処理コア１５９によって受信された命令を実行してよい。実行ユニット１４２は、通常のプロセッサ命令を実行することに加えて、パックドデータフォーマットに対してオペレーションを実行するためのパックド命令セット１４３内の命令を実行してよい。パックド命令セット１４３は、本開示の実施形態を実行するための命令と、他のパックド命令とを含んでよい。実行ユニット１４２は、内部バスによってレジスタファイル１４５に結合されてよい。レジスタファイル１４５は、データを含む情報をストアするための処理コア１５９上の記憶エリアを表してよい。前述したように、パックドデータをストアしうる記憶エリアは重要ではないかも知れないことが理解される。実行ユニット１４２は、デコーダ１４４に結合されてよい。デコーダ１４４は、処理コア１５９によって受信された命令を制御信号および／またはマイクロコードエントリポイントにデコードしてよい。これらの制御信号および／またはマイクロコードエントリポイントに応答して、実行ユニット１４２は適当な複数のオペレーションを実行する。一実施形態においては、デコーダは、命令のオペコードを解釈してよい。このオペコードは、命令内に示された対応するデータに対してどのようなオペレーションを実行すべきかを示す。
【００２８】
処理コア１５９は、様々な他のシステムデバイスと通信するためのバス１４１と結合されてよい。これらの様々な他のシステムデバイスは、例えば、同期式ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）コントローラ１４６、スタティックランダムアクセスメモリ（ＳＲＡＭ）コントローラ１４７、バーストフラッシュメモリインターフェース１４８、パーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ）／コンパクトフラッシュ（登録商標）（ＣＦ）カードコントローラ１４９、液晶ディスプレイ（ＬＣＤ）コントローラ１５０、ダイレクトメモリアクセス（ＤＭＡ）コントローラ１５１、及び代替のバスマスターインターフェース１５２を含んでよいが、これらに限定されるものではない。一実施形態において、データプロセッシングシステム１４０は、Ｉ／Ｏバス１５３を介して様々なＩ／Ｏデバイスと通信を行うためのＩ／Ｏブリッジ１５４も備え得る。そのような複数のＩ／Ｏデバイスは、例えば、ユニバーサルアシンクロナスレシーバ／トランスミッタ（ＵＡＲＴ）１５５、ユニバーサルシリアルバス（ＵＳＢ）１５６、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線ＵＡＲＴ１５７、およびＩ／Ｏ拡張インターフェース１５８を含み得るがこれらに限定されない。
【００２９】
データ処理システム１４０の一実施形態は、モバイル通信、ネットワーク通信および／または無線通信と、テキスト文字列比較オペレーションを含むＳＩＭＤオペレーションを実行しうる処理コア１５９とを提供する。処理コア１５９は、ウォルシュ−アダマール変換、高速フーリエ変換（ＦＦＴ）、離散コサイン変換（ＤＣＴ）、およびそれらのそれぞれの逆変換などの離散変換、色空間変換、ビデオエンコード動き推定またはビデオデコード動き補償などの圧縮／解凍技術、並びに、パルス符号変調（ＰＣＭ）などの変調／復調（ＭＯＤＥＭ）機能を含む、様々なオーディオ、ビデオ、イメージング、および通信アルゴリズムを用いてプログラミングされ得る。
【００３０】
図１Ｃは、ＳＩＭＤ文字列比較オペレーションを実行するデータ処理システムの他の実施形態を示す図である。一実施形態において、データ処理システム１６０は、メインプロセッサ１６６、ＳＩＭＤコプロセッサ１６１、キャッシュメモリ１６７、及び入力／出力システム１６８を備えてよい。入力／出力システム１６８は、任意選択で無線インターフェース１６９に結合してよい。ＳＩＭＤコプロセッサ１６１は、一実施形態による命令を含むオペレーションを実行してよい。一実施形態において、処理コア１７０は、１または複数のプロセス技術における製造に好適であってよく、機械可読媒体上で十分詳細に表現されることによって、処理コア１７０を備えるデータ処理システム１６０の全て又は一部の製造を容易にするのに好適であってよい。
【００３１】
一実施形態において、ＳＩＭＤコプロセッサ１６１は、実行ユニット１６２及び一組のレジスタファイル１６４を有する。メインプロセッサ１６５の一実施形態は、実行ユニット１６２による実行のための一実施形態に係る複数の命令を含む命令セット１６３の複数の命令を認識するデコーダ１６５を含む。他の実施形態において、ＳＩＭＤコプロセッサ１６１は、命令セット１６３の命令をデコードするデコーダの少なくとも一部１６５も含む。処理コア１７０は、本開示の実施形態の理解に不要であってよい追加の回路（図示せず）も有してよい。
【００３２】
オペレーション中、メインプロセッサ１６６は、キャッシュメモリ１６７及び入力／出力システム１６８とのインタラクションを含む一般的なタイプのデータ処理オペレーションを制御するデータ処理命令のストリームを実行する。このデータ処理命令のストリーム内には、ＳＩＭＤコプロセッサ命令が組み込まれてよい。メインプロセッサ１６６のデコーダ１６５は、これらのＳＩＭＤコプロセッサ命令を、取り付けられたＳＩＭＤコプロセッサ１６１によって実行されるべきタイプであるとして認識する。従って、メインプロセッサ１６６は、これらのＳＩＭＤコプロセッサ命令（又はＳＩＭＤコプロセッサ命令を表す制御信号）をコプロセッサバス１６６上に発行する。コプロセッサバス１６６から、これらの命令は、取り付けられた任意のＳＩＭＤコプロセッサにより受信されてよい。この場合、ＳＩＭＤコプロセッサ１６１は、当該ＳＩＭＤコプロセッサを意図した、任意の受信されたＳＩＭＤコプロセッサ命令を受け取って実行してよい。
【００３３】
データが、複数のＳＩＭＤコプロセッサ命令による処理のために、無線インターフェース１６９を介して受信され得る。一例に関して、デジタル信号の形態で音声通信が受信され得、そのデジタル信号は、複数のＳＩＭＤコプロセッサ命令により処理されて、それら音声通信を表す複数のデジタルオーディオサンプルが再生成され得る。他の例に関して、圧縮されたオーディオおよび／またはビデオがデジタルビットストリームの形態で受信され得、そのデジタルビットストリームは複数のＳＩＭＤコプロセッサ命令により処理されて、複数のデジタルオーディオサンプルおよび／またはモーションビデオフレームが再生成され得る。処理コア１７０の一実施形態において、メインプロセッサ１６６及びＳＩＭＤコプロセッサ１６１は、実行ユニット１６２と、一組のレジスタファイル１６４と、一実施形態による命令を含む命令セット１６３の命令を認識するデコーダ１６５とを有する単一の処理コア１７０内に統合されてよい。
【００３４】
図２は、本開示における複数の実施形態に係る、複数の命令を実行する複数のロジック回路を含みうるプロセッサ２００のためのマイクロアーキテクチャのブロック図である。幾つかの実施形態においては、一実施形態による命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズと、単精度及び倍精度の整数及び浮動小数点のデータタイプ等のデータタイプとを有するデータ要素に対して動作するように実装されてよい。一実施形態において、インオーダフロントエンド２０１は、実行される複数の命令をフェッチして、それらの命令をプロセッサパイプラインにおいて後で用いられるように準備しうるプロセッサ２００の一部を実装してよい。フロントエンド２０１は、幾つかのユニットを有してよい。一実施形態においては、命令プリフェッチャ２２６がメモリから命令をフェッチし、これらの命令を命令デコーダ２２８に供給し、次に、この命令デコーダが、これらの命令をデコード又は解釈する。例えば、一実施形態においては、デコーダは、受信された命令を、機械が実行しうる「マイクロ命令」又は「マイクロオペレーション」（マイクロｏｐ又はμｏｐとも呼ばれる）と呼ばれる１または複数のオペレーションにデコードする。他の実施形態においては、デコーダは、命令を、一実施形態によるオペレーションを実行するマイクロアーキテクチャによって用いられうるオペコード及び対応するデータと、制御フィールドとにパースする。一実施形態において、トレースキャッシュ２３０は、デコードされた複数のμｏｐを、実行のためのμｏｐキュー２３４内で複数のプログラム順序付きシーケンス又はトレースにアセンブルしてよい。トレースキャッシュ２３０が複合命令に遭遇すると、マイクロコードＲＯＭ２３２は、オペレーションを完了するのに必要とされるμｏｐを提供する。
【００３５】
命令の中には、単一のマイクロｏｐに変換されうるものもあれば、全オペレーションを完了するのに数個のマイクロｏｐを必要とするものもある。一実施形態においては、命令を完了するのに４より多くのマイクロｏｐが必要とされる場合、デコーダ２２８は、マイクロコードＲＯＭ２３２にアクセスして命令を実行してよい。一実施形態において、命令は、命令デコーダ２２８における処理のために少数のマイクロｏｐにデコードされてよい。別の実施形態においては、複数のマイクロｏｐがオペレーションを達成するのに必要とされる場合、命令はマイクロコードＲＯＭ２３２内にストアされてよい。トレースキャッシュ２３０は、エントリーポイントプログラマブルロジックアレイ（ＰＬＡ）を参照して、一実施形態による１または複数の命令を完了するマイクロコードシーケンスをマイクロコードＲＯＭ２３２から読み出すための正しいマイクロ命令ポインタを決定する。マイクロコードＲＯＭ２３２が命令のためのマイクロｏｐのシーケンス化を終了した後、機械のフロントエンド２０１は、トレースキャッシュ２３０からのマイクロｏｐのフェッチを再開してよい。
【００３６】
アウトオブオーダ実行エンジン２０３は、実行のために複数の命令を用意してよい。アウトオブオーダ実行ロジックは、複数の命令がパイプラインを下って実行のためにスケジューリングされるときに、それらのフローを円滑にし、再び順序付けて性能を最適化する複数のバッファを有する。アロケータロジックは、各μｏｐが実行のために必要とする複数のマシンバッファおよびリソースを割り当てる。レジスタリネーミングロジックは、複数のロジックレジスタをレジスタファイルにおける複数のエントリーへとリネームする。またアロケータは複数の命令スケジューラ（メモリスケジューラ、高速スケジューラ２０２、低速／一般的浮動小数点スケジューラ２０４、および単純浮動小数点スケジューラ２０６）の前に、２つのμｏｐキュー（１つはメモリオペレーションに関するものであり、１つは非メモリオペレーションに関するものである）の１つにおけるμｏｐ毎にエントリを割り当てる。μｏｐスケジューラ２０２、２０４、２０６は、μｏｐがいつ実行準備を整えたかを、それらの従属する入力レジスタオペランドソースの準備ができていることと、μｏｐがそれらのオペレーションを完了するのに必要とする実行リソースが利用可能であることとに基づいて判断する。一実施形態の高速スケジューラ２０２は、メインクロックサイクルの２分の１毎にスケジューリングしうる一方、他のスケジューラは、メインプロセッサクロックサイクルごとに１回のみスケジューリングしてよい。複数のスケジューラは、実行のために複数のμｏｐのスケジューリングを行う複数のディスパッチポートに対し仲裁を行う。
【００３７】
レジスタファイル２０８、２１０は、スケジューラ２０２、２０４、２０６と、実行ブロック２１１内の実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４との間に配置されてよい。複数のレジスタファイル２０８、２１０のそれぞれは、整数および浮動小数点オペレーションをそれぞれ実行する。各レジスタファイル２０８、２１０は、レジスタファイル内にまだ書き込まれていない完了したばかりの結果を、従属する新たなμｏｐにバイパス又は転送しうるバイパスネットワークを含んでよい。整数レジスタファイル２０８および浮動小数点レジスタファイル２１０は、互いとデータを通信してよい。一実施形態において、整数レジスタファイル２０８は、下位３２ビットのデータ用の１つのレジスタファイルと、上位３２ビットのデータ用の第２のレジスタファイルとの２つの別々のレジスタファイルに分割されてよい。浮動小数点レジスタファイル２１０は、１２８ビット幅エントリを有してよい。なぜならば、浮動小数点命令は、通常、幅が６４ビット〜１２８ビットのオペランドを有するからである。
【００３８】
実行ブロック２１１は複数の実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４を含んでよい。複数の実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４は、複数の命令を実行してよい。実行ブロック２１１は、実行のためにマイクロ命令が必要とする整数及び浮動小数点データオペランド値を保存するレジスタファイル２０８、２１０を含んでよい。一実施形態において、プロセッサ２００は、アドレス生成ユニット（ＡＧＵ）２１２、ＡＧＵ２１４、高速ＡＬＵ２１６、高速ＡＬＵ２１８、低速ＡＬＵ２２０、浮動小数点ＡＬＵ２２２、浮動小数点ムーブユニット２２４の複数の実行ユニットを備えてよい。別の実施形態において、浮動小数点実行ブロック２２２、２２４は、浮動小数点オペレーション、ＭＭＸオペレーション、ＳＩＭＤオペレーション、ＳＳＥオペレーション、又は他のオペレーションを実行してよい。さらに他の実施形態において、浮動小数点ＡＬＵ２２２は、除算マイクロｏｐ、平方根マイクロｏｐ、及び剰余マイクロｏｐを実行する６４ビット対６４ビットの浮動小数点除算器を含んでよい。様々な実施形態において、浮動小数点値を伴う命令は、浮動小数点ハードウェアを用いて処理されてよい。一実施形態においては、ＡＬＵオペレーションは、高速ＡＬＵ実行ユニット２１６、２１８に渡されてよい。高速ＡＬＵ２１６、２１８は、クロックサイクルの２分の１の実効レイテンシを有する高速オペレーションを実行してよい。一実施形態において、ほとんどの複雑な整数オペレーションは、低速ＡＬＵ２２０に進む。なぜならば、低速ＡＬＵ２２０は、乗算器、シフト、フラグロジック、及び分岐処理等の長いレイテンシタイプのオペレーション用の整数実行ハードウェアを備えうるためである。メモリロード／ストアオペレーションは、ＡＧＵ２１２、２１４によって実行されてよい。一実施形態において、複数の整数ＡＬＵ２１６、２１８、２２０は、複数の６４ビットデータオペランドに対して複数の整数オペレーションを実行してよい。他の実施形態において、複数のＡＬＵ２１６、２１８、２２０は、１６、３２、１２８、２５６などを含む様々なデータビットサイズをサポートするべく実装されてよい。同様に、複数の浮動小数点ユニット２２２、２２４は、様々な幅のビットを有するオペランドの範囲をサポートするべく実装されてよい。一実施形態において、浮動小数点ユニット２２２、２２４は、ＳＩＭＤ命令及びマルチメディア命令とともに１２８ビット幅のパックドデータオペランドに対して動作してよい。
【００３９】
一実施形態においては、μｏｐスケジューラ２０２、２０４、２０６は、親ロードが実行を終了する前に従属オペレーションをディスパッチする。μｏｐは、プロセッサ２００において投機的にスケジューリングされて実行されてよいので、プロセッサ２００は、メモリミスを処理するロジックも備えてよい。データロードがデータキャッシュ内でミスした場合、一時的に正しくないデータをスケジューラに残した、稼働中の複数の従属オペレーションがパイプライン内に存在しうる。再生メカニズムは、不正確なデータを用いる複数の命令をトラッキングし、再実行する。従属オペレーションのみがリプレイされる必要があり、独立オペレーションは完了することが可能である。プロセッサの一実施形態の複数のスケジューラおよびリプレイメカニズムは、文字列比較オペレーションのための複数の命令シーケンスを捉えるようにも設計されてよい。
【００４０】
「レジスタ」という用語は、オペランドを識別すべく命令の一部として用いられうるオンボードプロセッサ記憶ロケーションを指してよい。換言すれば、レジスタは、プロセッサの外部から（プログラマの視点から）使用可能なものであってよい。しかしながら、いくつかの実施形態において、複数のレジスタは、特定のタイプの回路に限定されなくてよい。逆に、レジスタはデータをストアし、データを提供し、本明細書で説明される複数の機能を実行してよい。本明細書において説明するレジスタは、専用の物理的レジスタ、レジスタリネーミングを用いて動的に割り当てされる物理的レジスタ、専用の物理的レジスタ及び動的に割り当てされる物理的レジスタの組み合わせ等の任意の数の異なる技法を用いてプロセッサ内の回路によって実装されてよい。一実施形態においては、整数レジスタは、３２ビット整数データをストアする。一実施形態のレジスタファイルはまた、パックドデータのための８つのマルチメディアＳＩＭＤレジスタを含む。以下の説明においては、レジスタは、カリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社のＭＭＸ技術に対応したマイクロプロセッサ内の６４ビット幅のＭＭＸ（商標）レジスタ（いくつかの例においては、「ｍｍ」レジスタとも呼ばれる）などのパックドデータを保持するように設計されたデータレジスタであるものとして理解されてよい。整数及び浮動小数点の両方の形で利用可能なこれらのＭＭＸレジスタは、ＳＩＭＤ命令及びＳＳＥ命令に付随するパックドデータ要素を用いて動作してよい。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、又はこれ以降の技術（「ＳＳＥｘ」と総称される）に関係した１２８ビット幅ＸＭＭレジスタは、そのようなパックドデータオペランドを保持してよい。一実施形態において、パックドデータおよび整数データの格納において、複数のレジスタは、２つのデータタイプの間を区別する必要はない。一実施形態においては、整数及び浮動小数点は、同じレジスタファイル又は異なるレジスタファイルに含まれてよい。さらに、一実施形態において、浮動小数点および整数データは、異なるレジスタ、または同じレジスタに格納され得る。
【００４１】
次の図の例では、複数のデータオペランドが説明されうる。図３Ａは、本開示における複数の実施形態に係る、マルチメディアレジスタ内の様々なパックドデータタイプ表現を示す図である。図３Ａは、１２８ビット幅オペランド用のパックドバイト３１０、パックドワード３２０、及びパックドダブルワード（ｄｗｏｒｄ）３３０のデータタイプを示している。この例のパックドバイトフォーマット３１０は、１２８ビット長であってよく、１６個のパックドバイトデータ要素を含む。バイトは、例えばのデータの８ビットとして定義されてよい。各バイトデータ要素の情報は、バイト０用のビット７〜ビット０、バイト１用のビット１５〜ビット８、バイト２用のビット２３〜ビット１６、及び最後にバイト１５用のビット１２０〜ビット１２７にストアされてよい。従って、利用可能な全てのビットがレジスタ内で用いられてよい。この格納配置は、プロセッサの格納効率を高める。その上、１６個のデータ要素がアクセスされる場合、１つのオペレーションは今や１６個のデータ要素に対して並列に実行されてよい。
【００４２】
一般に、データ要素は、同じ長さの他のデータ要素とともに単一のレジスタ又はメモリロケーションにストアされる個々のデータ片を含んでよい。ＳＳＥｘ技術に関係したパックドデータシーケンスでは、ＸＭＭレジスタにストアされるデータ要素の数は、１２８ビットを個々のデータ要素のビット長によって除算したものであってよい。同様に、ＭＭＸ及びＳＳＥ技術に関係したパックドデータシーケンスでは、ＭＭＸレジスタにストアされるデータ要素の数は、６４ビットを個々のデータ要素のビット長によって除算したものであってよい。図３Ａに示すデータタイプは、１２８ビット長であってよいが、本開示の実施形態は、６４ビット幅、又は他のサイズのオペランドを用いて動作してもよい。この例のパックドードフォーマット３２０は、１２８ビット長であってよく、８つのパックドワードデータ要素を含む。各パックドワードは、１６ビットの情報を含む。図３Ａのパックドダブルワードフォーマット３３０は、１２８ビット長であってよく、４つのパックドダブルワードデータ要素を含む。各パックドダブルワードデータ要素は、３２ビットの情報を含む。パックドクワッドワードは、１２８ビット長であり、２つのパックドクワッドワードデータ要素を含んでよい。
【００４３】
図３Ｂは、本開示における複数の実施形態に係る、レジスタ内の考えうる複数のデータ格納フォーマットを示す図である。各パックドデータは、１より多い独立データ要素を含んでよい。３つのパックドデータフォーマット（パックドハーフ３４１、パックドシングル３４２、およびパックドダブル３４３）が示されている。パックドハーフ３４１、パックドシングル３４２、およびパックドダブル３４３の一実施形態は、複数の固定小数点データ要素を含む。他の実施形態について、パックドハーフ３４１、パックドシングル３４２、及びパックドダブル３４３のうちの１または複数は、浮動小数点データ要素を含んでよい。パックドハーフ３４１の一実施形態は、８つの１６ビットデータ要素を含む１２８ビット長であってよい。パックドシングル３４２の一実施形態は、１２８ビット長であってよく、４つの３２ビットデータ要素を含む。パックドダブル３４３の一実施形態は、１２８ビット長であってよく、２つの６４ビットデータ要素を含む。そのようなパックドデータフォーマットは、他のレジスタ長、例えば、９６ビット、１６０ビット、１９２ビット、２２４ビット、２５６ビット、又はそれよりも長いビットにさらに拡張されうることが認識されるであろう。
【００４４】
図３Ｃは、本開示における複数の実施形態に係る、マルチメディアレジスタにおける様々な符号付きおよび符号なしのパックドデータタイプの表現を示す図である。符号なしパックドバイト表現３４４は、ＳＩＭＤレジスタにおける符号なしパックドバイトの格納を示す。各バイトデータ要素の情報は、バイト０用のビット７〜ビット０、バイト１用のビット１５〜ビット８、バイト２用のビット２３〜ビット１６、及び最後にバイト１５用のビット１２０〜ビット１２７にストアされてよい。従って、利用可能な全てのビットがレジスタ内で用いられてよい。この記憶配置は、プロセッサの記憶効率を高めてよい。その上、１６個のデータ要素がアクセスされる場合、１つのオペレーションは今や１６個のデータ要素に対して並列方式で実行されてよい。符号付きパックドバイト表現３４５は、符号付きパックドバイトの格納を示す。各バイトのデータ要素の第８ビットが符号指示子でありうることに留意されたい。符号なしパックドワード表現３４６は、ワード７〜ワード０がＳＩＭＤレジスタにどのようにストアされうるのかを示している。符号付きパックドワード表現３４７は、符号なしパックドワードレジスタ内表現３４６と類似してよい。各ワードのデータ要素の第１６ビットが符号指示子でありうることに留意されたい。符号なしパックドダブルワード表現３４８は、ダブルワードのデータ要素がどのように格納されるかを示す。符号付きパックドダブルワード表現３４９は、符号なしパックドダブルワードレジスタ内表現３４８と類似してよい。必要な符号ビットは、各ダブルワードデータ要素の第３２ビットでありうることに留意されたい。
【００４５】
図３Ｄは、オペレーションエンコーディング（オペコード）の実施形態を示す図である。さらに、フォーマット３６０は、ワールドワイドウェブ（ｗｗｗ）のｉｎｔｅｌ．ｃｏｍ／ｄｅｓｉｇｎ／ｌｉｔｃｅｎｔｒにおいてカリフォルニア州サンタクララのIntel社から入手可能な「ＩＡ−３２  Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ'ｓ  Ｍａｎｕａｌ  Ｖｏｌｕｍｅ  ２：  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｒｅｆｅｒｅｎｃｅ」で説明されるオペコードフォーマットのタイプに対応する複数のレジスタ／メモリオペランドアドレッシングモードを含んでよい。一実施形態において、命令は、フィールド３６１および３６２の１または複数によりエンコードされ得る。命令毎に、最大２つのソースオペランド識別子３６４および３６５を含む最大２つのオペランド位置が識別され得る。一実施形態において、デスティネーションオペランド識別子３６６は、ソースオペランド識別子３６４と同じでありうるのに対して、他の実施形態では、それらは異なってよい。別の実施形態において、デスティネーションオペランド識別子３６６は、ソースオペランド識別子３６５と同じでありうるのに対して、他の実施形態では、それらは異なってよい。一実施形態においては、ソースオペランド識別子３６４及び３６５によって識別されるソースオペランドのうちの一方は、文字列比較オペレーションの結果によって上書きされうるのに対して、他の実施形態では、識別子３６４は、ソースレジスタ要素に対応し、識別子３６５は、デスティネーションレジスタ要素に対応する。一実施形態において、オペランド識別子３６４及び３６５は、３２ビット又は６４ビットのソースオペランド及びデスティネーションオペランドを識別してよい。
【００４６】
図３Ｅは、本開示における複数の実施形態に係る、４０またはそれより多くのビットを持つ他の可能なオペレーションエンコーディング（オペコード）フォーマット３７０を示す図である。オペコードフォーマット３７０はオペコードフォーマット３６０に対応し、オプションのプレフィックスバイト３７８を備える。一実施形態に係る命令は、フィールド３７８、３７１および３７２の１または複数によりエンコードされ得る。命令毎に、ソースオペランド識別子３７４および３７５により、およびプレフィックスバイト３７８により最大２つのオペランド位置が識別され得る。一実施形態において、プレフィックスバイト３７８は、３２ビット又は６４ビットのソースオペランド及びデスティネーションオペランドを識別するのに用いられてよい。一実施形態において、デスティネーションオペランド識別子３７６は、ソースオペランド識別子３７４と同じでありうるのに対して、他の実施形態では、それらは異なってよい。別の実施形態について、デスティネーションオペランド識別子３７６は、ソースオペランド識別子３７５と同じでありうるのに対して、他の実施形態では、それらは異なってよい。一実施形態においては、命令は、オペランド識別子３７４及び３７５によって識別されるオペランドのうちの１または複数に対して動作し、オペランド識別子３７４及び３７５によって識別される１または複数のオペランドが、命令の結果によって上書きされうるのに対して、他の実施形態では、識別子３７４及び３７５によって識別されるオペランドは、別のレジスタ内の別のデータ要素に書き込まれてよい。オペコードフォーマット３６０および３７０は、部分的にＭＯＤフィールド３６３および３７３により、およびオプションのスケール−インデックス−ベースおよび変位バイトにより指定されるレジスタからレジスタへの、メモリからレジスタへの、メモリによるレジスタの、レジスタによるレジスタの、即値によるレジスタの、レジスタからメモリへのアドレッシングを可能とする。
【００４７】
図３Ｆは、本開示における複数の実施形態に係る、さらに他の可能なオペレーションエンコーディング（オペコード）フォーマットを示す図である。６４ビットの単一命令複数データ（ＳＩＭＤ）算術オペレーションは、コプロセッサデータ処理（ＣＤＰ）命令を通じて実行されてよい。オペレーションエンコーディング（オペコード）フォーマット３８０は、ＣＤＰオペコードフィールド３８２及び３８９を有する１つのそのようなＣＤＰ命令を示している。他の実施形態について、このタイプのＣＤＰ命令、オペレーションは、フィールド３８３、３８４、３８７、及び３８８のうちの１または複数によってエンコードされてよい。命令毎に、最大２つのソースオペランド識別子３８５および３９０並びに１つのデスティネーションオペランド識別子３８６を含む最大３つのオペランド位置が識別され得る。コプロセッサの一実施形態は、８、１６、３２および６４ビット値で動作してよい。一実施形態において、命令は、整数データ要素に対して実行されてよい。いくつかの実施形態において、命令は、条件フィールド３８１を用い、条件的に実行され得る。いくつかの実施形態に関して、複数のソースデータサイズは、フィールド３８３によりエンコードされ得る。いくつかの実施形態では、ゼロ（Ｚ）、負（Ｎ）、キャリー（Ｃ）、及びオーバーフロー（Ｖ）の検出は、ＳＩＭＤフィールド上で行われてよい。いくつかの命令に関して、飽和のタイプはフィールド３８４によりエンコードされてよい。
【００４８】
図４Ａは、本開示における複数の実施形態に係る、インオーダパイプライン、および、レジスタリネームステージ、アウトオブオーダ発行／実行パイプラインを示すブロック図である。図４Ｂは、本開示における複数の実施形態に係る、プロセッサに含まれるインオーダアーキテクチャコアおよびレジスタリネーミングロジック、アウトオブオーダ発行／実行ロジックを示すブロック図である。図４Ａにおける実線の複数のボックスはインオーダパイプラインを示し、他方、破線の複数のボックスは、レジスタリネーミング、アウトオブオーダ発行／実行パイプラインを示す。同様に、図４Ｂにおける実線の複数のボックスはインオーダアーキテクチャロジックを示し、他方、破線の複数のボックスは、レジスタリネーミングロジック、およびアウトオブオーダ発行／実行ロジックを示す。
【００４９】
図４Ａにおいて、プロセッサパイプライン４００は、フェッチステージ４０２、レングスデコードステージ４０４、デコードステージ４０６、アロケーションステージ４０８、リネーミングステージ４１０、スケジューリング（ディスパッチ又は発行としても知られている）ステージ４１２、レジスタ読み出し／メモリ読み出しステージ４１４、実行ステージ４１６、ライトバック／メモリ書き込みステージ４１８、例外処理ステージ４２２、及びコミットステージ４２４を含んでよい。
【００５０】
図４Ｂにおいて、複数の矢印は、２またはそれより多くのユニット間の結合を示し、矢印の方向は、それらユニット間のデータフローの方向を示す。図４Ｂは、実行エンジンユニット４５０に結合されたフロントエンドユニット４３０を備えるプロセッサコア４９０を示し、これらのフロントエンドユニット及び実行エンジンユニットの両方は、メモリユニット４７０に結合されてよい。
【００５１】
コア４９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、又はハイブリッド若しくは代替のコアタイプであってよい。一実施形態において、コア４９０は、例えば、ネットワークコア若しくは通信コア、圧縮エンジン、グラフィックスコア等の専用コアであってよい。
【００５２】
フロントエンドユニット４３０は、命令キャッシュユニット４３４に結合された分岐予測ユニット４３２を有してよい。命令キャッシュユニット４３４は、命令変換ルックアサイドバッファ（ＴＬＢ）４３６に結合されてよい。ＴＬＢ４３６は、デコードユニット４４０に結合された命令フェッチユニット４３８に結合されてよい。デコードユニット４４０は、命令をデコードし、出力として１または複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を生成してよい。これらは、オリジナルの命令からデコードされうるか、又はオリジナルの命令を別の方法で反映しているか、又はオリジナルの命令から導出されうる。デコーダは、様々な異なるメカニズムを用いて実装され得る。好適なメカニズムの例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコード読み出し専用メモリ（ＲＯＭ）等が含まれるが、これらに限定されるものではない。一実施形態において、命令キャッシュユニット４３４は、メモリユニット４７０内のレベル２（Ｌ２）キャッシュユニット４７６にさらに結合されてよい。デコードユニット４４０は、実行エンジンユニット４５０内のリネーム／アロケータユニット４５２に結合されてよい。
【００５３】
実行エンジンユニット４５０は、リタイアメントユニット４５４に結合されたリネーム／アロケータユニット４５２と、一組の１または複数のスケジューラユニット４５６を含んでよい。複数のスケジューラユニット４５６は、予約ステーションや中央命令ウィンドウなどを含む任意の数の異なるスケジューラを表している。複数のスケジューラユニット４５６は、複数の物理的レジスタファイルユニット４５８に結合されてよい。複数の物理的レジスタファイルユニット４５８のそれぞれは、１または複数の物理的レジスタファイルを表しており、これらのうちの異なるものは、スカラ整数、スカラ浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点などのような１または複数の異なるデータタイプや状態（例えば、実行されるべき次の命令のアドレスである命令ポインタ）などを保存する。複数の物理的レジスタファイルユニット４５８は、レジスタリネーム及びアウトオブオーダ実行が実装されうる様々な方法（例えば、１または複数のリオーダバッファ及び１または複数のリタイアメントレジスタファイルを使用するもの、１または複数の将来ファイル、１または複数の履歴バッファ、及び１または複数のリタイアメントレジスタファイルを使用するもの、レジスタマップ及びレジスタのプールを使用するものなど）を示すために、リタイアメントユニット１５４によってオーバーラップされてよい。一般に、アーキテクチャレジスタは、プロセッサの外部又はプログラマの視点から可視であってよい。複数のレジスタは、任意の既知の特定のタイプの回路に限定されるものでなくてよい。様々な異なるタイプのレジスタは、本明細書において説明するようにデータをストア及び提供する限り、好適であってよい。好適なレジスタの例には、専用の物理的レジスタ、レジスタリネーミングを用いて動的に割り当てされる物理的レジスタ、専用の物理的レジスタ及び動的に割り当てされる物理的レジスタの組み合わせ等が含まれるが、これらに限定されるものでなくてよい。リタイアメントユニット４５４及び複数の物理的レジスタファイルユニット４５８は、複数の実行クラスタ４６０に結合されてよい。複数の実行クラスタ４６０は、一組の１または複数の実行ユニット１６２及び一組の１または複数のメモリアクセスユニット４６４を含んでよい。実行ユニット４６２は、様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して様々なオペレーション（例えば、シフト、加算、減算、乗算）を実行してよい。一部の実施形態では、特定の複数の関数または複数の関数セット専用の多数の実行ユニットを含んでよい一方で、他の複数の実施形態は１つのみの実行ユニットまたは、ユニットのすべてが全部の関数を実行する複数の実行ユニットを含んでよい。複数のスケジューラユニット４５６、複数の物理的レジスタファイルユニット４５８、及び複数の実行クラスタ４６０は、場合によっては複数のものとして示される。なぜならば、或る実施形態は、或るタイプのデータ／オペレーション用に別々のパイプライン（例えば、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、および／またはそれぞれがそれ自身のスケジューラユニット、物理的レジスタファイルユニット、および／または実行クラスタを有するメモリアクセスパイプライン、並びに別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタのみが複数のメモリアクセスユニット４６４を有する或る実施形態が実施されうる）を作製するからである。複数の個別のパイプラインが使用される場合、これらのパイプラインの１または複数がアウトオブオーダ発行／実行で、残りがインオーダであってよいことも理解されたい。
【００５４】
一組のメモリアクセスユニット４６４は、メモリユニット４７０に結合されてよい。このメモリユニットは、レベル２（Ｌ２）キャッシュユニット４７６に結合されたデータキャッシュユニット４７４に結合されたデータＴＬＢユニット４７２を含んでよい。１つの例示の実施形態では、メモリアクセスユニット４６４は、ロードユニット、ストアアドレスユニット、及びストアデータユニットを含んでよく、これらのそれぞれは、メモリユニット４７０内のデータＴＬＢユニット４７２に結合されてよい。Ｌ２キャッシュユニット４７６は、１または複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合されてよい。
【００５５】
例として、例示のレジスタリネーミング、アウトオブオーダ発行／実行コアアーキテクチャは、次のようにパイプライン４００を実施してよい。１）命令フェッチ４３８が、フェッチステージ４０２及びレングスデコードステージ４０４を実行してよく、２）デコードユニット４４０がデコードステージ４０６を実行してよく、３）リネーム／アロケータユニット４５２がアロケーションステージ４０８及びリネーミングステージ４１０を実行してよく、４）複数のスケジューラユニット４５６がスケジュールステージ４１２を実行してよく、５）複数の物理的レジスタファイルユニット４５８及びメモリユニット４７０がレジスタ読み出し／メモリ読み出しステージ４１４を実行してよく、実行クラスタ４６０が実行ステージ４１６を実行してよく、６）メモリユニット４７０及び複数の物理的レジスタファイルユニット４５８がライトバック／メモリ書き込みステージ４１８を実行してよく、７）様々なユニットが例外処理ステージ４２２の性能に関与してよく、８）リタイアメントユニット４５４及び複数の物理的レジスタファイルユニット４５８がコミットステージ４２４を実行してよい。
【００５６】
コア４９０は、１または複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンとともに追加された幾つかの拡張を有する）、カリフォルニア州サニーベールのMIPS Technologies社のＭＩＰＳ命令セット、カリフォルニア州サニーベールのARM Holdings社のＡＲＭ命令セット（ＮＥＯＮ等のオプションの追加拡張を有する）をサポートしてよい。
【００５７】
コアが様々な態様でマルチスレッド化（複数のオペレーションまたはスレッドの２またはそれよりも多い並列なセットを実行すること）をサポートしてよいことは理解されるべきである。マルチスレッド化のサポートは、例えば、タイムスライスマルチスレッド化、（単一の物理コアが同時にマルチスレッド化している複数のスレッドのそれぞれに対して当該物理コアが論理コアを提供する）同時マルチスレッド化またはそれらの組み合わせを含めることにより実行されてよい。そのような組み合わせは、Ｉｎｔｅｌ（登録商標）ハイパースレッディング技術におけるような、例えばタイムスライスされたフェッチおよびデコード、ならびにその後の同時マルチスレッド化を含んでよい。
【００５８】
レジスタリネーミングは、アウトオブオーダ実行に関して説明されうるが、レジスタリネーミングは、インオーダアーキテクチャにおいて用いられうることが理解されるべきである。プロセッサの図示した実施形態は、別々の命令キャッシュユニット４３４／データキャッシュユニット４７４及び共有されたＬ２キャッシュユニット４７６も含んでよいが、他の実施形態は、例えば、レベル１（Ｌ１）内部キャッシュ、又は複数レベルの内部キャッシュ等の、命令及びデータの両方に対する単一の内部キャッシュを有してよい。幾つかの実施形態では、システムは、内部キャッシュと、コアおよび／またはプロセッサの外部にある外部キャッシュとの組み合わせを含んでよい。他の実施形態において、キャッシュのすべてはコアおよび／またはプロセッサの外部であってよい。
【００５９】
図５Ａは、本開示における複数の実施形態に係るプロセッサ５００のブロック図である。一実施形態において、プロセッサ５００はマルチコアプロセッサを含んでよい。プロセッサ５００は、１または複数のコア５０２に通信可能に結合されたシステムエージェント５１０を含んでよい。さらに、複数のコア５０２およびシステムエージェント５１０は、１または複数のキャッシュ５０６に通信可能に結合されてよい。複数のコア５０２、システムエージェント５１０および複数のキャッシュ５０６は、１または複数のメモリコントロールユニット５５２を介して通信可能に結合されてよい。さらに、複数のコア５０２、システムエージェント５１０および複数のキャッシュ５０６は、複数のメモリコントロールユニット５５２を介してグラフィックスモジュール５６０に通信可能に結合されてよい。
【００６０】
プロセッサ５００は、複数のコア５０２、システムエージェント５１０および複数のキャッシュ５０６、ならびにグラフィックスモジュール５６０をインターコネクトする任意の適切なメカニズムを含んでよい。一実施形態において、プロセッサ５００は、複数のコア５０２、システムエージェント５１０および複数のキャッシュ５０６、ならびにグラフィックスモジュール５６０をインターコネクトするリングベースのインターコネクトユニット５０８を含んでよい。他の実施形態において、プロセッサ５００は、そのような複数のユニットをインターコネクトする任意の数の周知の技術を含んでよい。リングベースのインターコネクトユニット５０８は、複数のメモリコントロールユニット５５２を利用して複数のインターコネクトを容易化してよい。
【００６１】
プロセッサ５００は、複数のコア内の１または複数のレベルのキャッシュ、複数のキャッシュ５０６などの１または複数の共有キャッシュユニット、または、複数の統合メモリコントローラユニット５５２のセットに結合された外部メモリ（図示せず）を有するメモリ階層を含んでよい。複数のキャッシュ５０６は任意の適切なキャッシュを含んでよい。一実施形態において、複数のキャッシュ５０６は、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、又は他のレベルのキャッシュ等の１または複数の中間レベルキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、および／またはそれらの組み合わせを含んでよい。
【００６２】
様々な実施形態において、複数のコア５０２の１または複数は、マルチスレッド化を実行してよい。システムエージェント５１０は、複数のコア５０２を調整および動作させる複数のコンポーネントを含んでよい。システムエージェントユニット５１０は、例えば、電力制御ユニット（ＰＣＵ）を含んでよい。ＰＣＵは、複数のコア５０２の電力状態の調整に必要なロジックおよび複数のコンポーネントであってもよいし、これらを有してもよい。システムエージェント５１０は、１または複数の外部接続されたディスプレイまたはグラフィックスモジュール５６０を駆動するディスプレイエンジン５１２を含んでよい。システムエージェント５１０は、グラフィックス用の複数の通信バスのためのインターフェース５１４を含んでよい。一実施形態において、インターフェース５１４は、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）により実装されてよい。さらなる実施形態において、インターフェース５１４は、ＰＣＩ  Ｅｘｐｒｅｓｓグラフィックス（ＰＥＧ）により実装されてよい。システムエージェント５１０は、ダイレクトメディアインターフェース（ＤＭＩ）５１６を含んでよい。ＤＭＩ５１６は、マザーボード上の種々のブリッジ、またはコンピュータシステムの他の部分の間のリンクを提供してよい。システムエージェント５１０は、コンピューティングシステムの他の要素へのＰＣＩｅリンクを提供するＰＣＩｅブリッジ５１８を含んでよい。ＰＣＩｅブリッジ５１８は、メモリコントローラ５２０およびコヒーレンシロジック５２２を用いて実装されてよい。
【００６３】
複数のコア５０２は、任意の適切な態様で実装されてよい。コア５０２は、アーキテクチャおよび／または命令セットの点で同種でも異種でもよい。一実施形態において、複数のコア５０２のいくつかはインオーダであってよいのに対し、他の複数のはアウトオブオーダであってよい。別の実施形態において、複数のコア５０２のうちの２またはそれよりも多くは、同じ命令セットを実行してよいのに対し、他のものは、その命令セットのサブセットのみ又は異なる命令セットを実行してよい。
【００６４】
プロセッサ５００は、カリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社から入手可能でありうるＣｏｒｅ（商標）  ｉ３、ｉ５、ｉ７、２Ｄｕｏ、及びＱｕａｄ、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ（商標）、ＸＳｃａｌｅ（商標）、又はＳｔｒｏｎｇＡＲＭ（商標）プロセッサなどの汎用プロセッサを含んでよい。プロセッサ５００は、ＡＲＭ  Ｈｏｌｄｉｎｇ社、ＭＩＰ等、別の会社から提供されてよい。プロセッサ５００は、例えば、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、コプロセッサ、組み込みプロセッサ等の専用プロセッサであってよい。プロセッサ５００は、１または複数のチップ上に実装されてよい。プロセッサ５００は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、又はＮＭＯＳ等の複数のプロセス技術のうちの任意のものを用いた１または複数の基板のうちの一部であってよく、および／またはそれらの１または複数の基板上に実装されてよい。
【００６５】
一実施形態において、複数のキャッシュ５０６のうち特定の１つは、複数のコア５０２のうちのいくつか複数により共有されてよい。別の実施形態において、複数のキャッシュ５０６のうち特定の１つは、複数のコア５０２のうち１つに専用であってよい。複数のキャッシュ５０６の複数のコア５０２への割り当ては、キャッシュコントローラまたは他の適したメカニズムにより処理されてよい。複数のキャッシュ５０６のうち特定の１つは、特定のキャッシュ５０６のタイムスライスを実施することで、２またはそれよりも多いコア５０２により共有されてよい。
【００６６】
グラフィックスモジュール５６０は、統合グラフィックス処理サブシステムを実装してよい。一実施形態において、グラフィックスモジュール５６０は、グラフィックスプロセッサを含んでよい。さらに、グラフィックスモジュール５６０は、媒体エンジン５６５を含んでよい。媒体エンジン５６５は、媒体エンコーディングおよびビデオデコーディングを提供してよい。
【００６７】
図５Ｂは、本開示における複数の実施形態に係る、コア５０２の実装例のブロック図である。コア５０２は、アウトオブオーダエンジン５８０に通信可能に結合されたフロントエンド５７０を備えてよい。コア５０２は、キャッシュ階層５０３を介してプロセッサ５００の複数の他の部分に通信可能に結合されてよい。
【００６８】
フロントエンド５７０は、上述のように、フロントエンド２０１により完全にまたは部分的になど、任意の適切な態様で実装されてよい。一実施形態において、フロントエンド５７０は、キャッシュ階層５０３を介してプロセッサ５００の複数の他の部分と通信してよい。さらなる実施形態において、フロントエンド５７０は、プロセッサ５００の複数の部分から複数の命令をフェッチし、それらの命令がアウトオブオーダ実行エンジン５８０に渡されるにつれてプロセッサパイプライン内で後に用いられるようにそれらの命令を用意してよい。
【００６９】
アウトオブオーダ実行エンジン５８０は、上述したように、アウトオブオーダ実行エンジン２０３により完全にまたは部分的になど、任意の適切な態様で実装されてよい。アウトオブオーダ実行エンジン５８０は、フロントエンド５７０から受信した複数の命令を実行のために用意してよい。アウトオブオーダ実行エンジン５８０は、割り当てモジュール５８２を含んでよい。一実施形態において、割り当てモジュール５８２は、プロセッサ５００の複数のリソースまたは複数の他のリソース、例えば複数のレジスタまたは複数のバッファを、特定の命令を実行するべく割り当ててよい。割り当てモジュール５８２は、メモリスケジューラ、高速スケジューラまたは浮動小数点スケジューラなどの複数のスケジューラ内で割り当てを行ってよい。そのような複数のスケジューラが図５Ｂにおいて複数のリソーススケジューラ５８４により表されてよい。割り当てモジュール５８２は、図２と合わせて説明された割り当てロジックにより完全にまたは部分的に実装されてよい。複数のリソーススケジューラ５８４は、特定のリソースの複数のソースの準備状態と、命令の実行に必要とされる複数の実行リソースの利用可能性とに基づいて、命令が実行準備を整えたときを判断してよい。複数のリソーススケジューラ５８４は、上述されたように、例えばスケジューラ２０２、２０４、２０６により実装されてよい。複数のリソーススケジューラ５８４は、１または複数のリソースに対して、複数の命令の実行をスケジューリングしてよい。一実施形態において、そのような複数のリソースはコア５０２の内部であってよく、また、例えば複数のリソース５８６として図示されてよい。別の実施形態において、そのような複数のリソースはコア５０２の外部であってよく、また、例えばキャッシュ階層５０３によりアクセス可能であってよい。複数のリソースは、例えば、メモリ、複数のキャッシュ、複数のレジスタファイル、または複数のレジスタを含んでよい。コア５０２の内部の複数のリソースは、図５Ｂにおいて複数のリソース５８６により表されてよい。必要に応じて、複数のリソース５８６に書き込まれた、または、複数のリソース５８６から読み取られた複数の値は、例えばキャッシュ階層５０３を介してプロセッサ５００の複数の他の部分と調整されてよい。複数の命令に複数のリソースが割り当てられるに従い、それらはリオーダバッファ５８８に配置されてよい。リオーダバッファ５８８は、複数の命令を、それらが実行されるにつれて追跡してよく、また、プロセッサ５００の任意の適切な基準に基づいて、それらの実行を選択的にリオーダしてよい。一実施形態において、リオーダバッファ５８８は、別々に実行されてよい複数の命令または一連の命令を識別してよい。そのような複数の命令または一連の命令は、他のそのような複数の命令と並列に実行されてよい。コア５０２における並列実行は、任意の適切な数の別個の実行ブロックまたは仮想プロセッサにより実行されてよい。一実施形態において、複数の共有リソース（例えばメモリ、複数のレジスタおよび複数のキャッシュ）は、特定のコア５０２内の複数の仮想プロセッサに対してアクセス可能であってよい。他の実施形態において、複数の共有リソースは、プロセッサ５００内の複数の処理エンティティに対してアクセス可能であってよい。
【００７０】
キャッシュ階層５０３は、任意の適切な態様で実装されてよい。例えば、キャッシュ階層５０３は、キャッシュ５７２、５７４などの、１または複数の下位の、または中間のレベルの複数のキャッシュを含んでよい。一実施形態において、キャッシュ階層５０３は、キャッシュ５７２、５７４に通信可能に結合されたＬＬＣ５９５を含んでよい。別の実施形態において、ＬＬＣ５９５は、プロセッサ５００のすべての処理エンティティにアクセス可能なモジュール５９０内に実装されてよい。さらなる実施形態において、モジュール５９０は、インテル（登録商標）株式会社からの複数のプロセッサのアンコアモジュール内に実装されてよい。モジュール５９０は、コア５０２の実行に必要だがコア５０２内には実装されなくてよいプロセッサ５００の複数のサブシステムまたは複数の部分を含んでよい。ＬＬＣ５９５に加え、モジュール５９０は、例えば、複数のハードウェアインターフェース、複数のメモリコヒーレンシコーディネータ、複数のインタープロセッサインターコネクト、複数の命令パイプライン、または複数のメモリコントローラを含んでよい。プロセッサ５００に利用可能なＲＡＭ５９９へのアクセスは、モジュール５９０を介して、より具体的には、ＬＬＣ５９５を介して行われてよい。さらに、コア５０２の複数の他のインスタンスは、モジュール５９０に同様にアクセスしてよい。コア５０２の複数のインスタンスの調整は、モジュール５９０を介して部分的に容易化されてよい。
【００７１】
図６−８は、プロセッサ５００を含むのに好適な例示的システムを図示してよく、一方、図９は、１または複数のコア５０２を含んでよい例示的なシステムオンチップ（ＳｏＣ）を図示してよい。ラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスの技術分野において知られている他のシステム設計及び実装も好適であってよい。一般的に、本明細書において開示するようなプロセッサおよび／または他の実行ロジックを組み込む膨大な様々のシステム又は電子デバイスが一般に好適であってよい。
【００７２】
図６は、本開示における複数の実施形態に係るシステム６００のブロック図を示す。システム６００は、グラフィックスメモリコントローラハブ（ＧＭＣＨ）６２０に結合されうる１または複数のプロセッサ６１０、６１５を備えてよい。追加のプロセッサ６１５がオプションであることは、図６において、破線によって示されている。
【００７３】
各プロセッサ６１０、６１５は、プロセッサ５００のいくつかのバージョンであってよい。しかしながら、統合グラフィックスロジック及び統合メモリ制御ユニットがプロセッサ６１０、６１５に存在しないかも知れないことに留意すべきである。図６は、ＧＭＣＨ６２０が、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）でありうるメモリ６４０に結合されてよいことを示している。少なくとも一実施形態に関して、ＤＲＡＭは不揮発性キャッシュに関連付けられ得る。
【００７４】
ＧＭＣＨ６２０は、チップセット、又はチップセットの一部であってよい。ＧＭＣＨ６２０は、複数のプロセッサ６１０、６１５と通信してよく、複数のプロセッサ６１０、６１５とメモリ６４０との間のインタラクションを制御してよい。ＧＭＣＨ６２０は、複数のプロセッサ６１０、６１５とシステム６００の他の要素との間の高速バスインターフェースとしても機能してよい。一実施形態において、ＧＭＣＨ６２０は、フロントサイドバス（ＦＳＢ）６９５等のマルチドロップバスを介して複数のプロセッサ６１０、６１５と通信する。
【００７５】
さらに、ＧＭＣＨ６２０は、ディスプレイ６４５（フラットパネルディスプレイ等）に結合されてよい。一実施形態において、ＧＭＣＨ６２０は、統合グラフィックスアクセラレータを有してよい。ＧＭＣＨ６２０は、様々な周辺デバイスをシステム６００に結合するのに用いられうる入力／出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）６５０にさらに結合されてよい。外部のグラフィックスデバイス６６０は、別の周辺デバイス６７０とともにＩＣＨ６５０に結合される別個のグラフィックスデバイスを含んでよい。
【００７６】
他の実施形態において、追加の又は異なるプロセッサも、システム６００に存在してよい。例えば、複数の追加のプロセッサ６１０、６１５は、プロセッサ６１０と同一でありうる複数の追加のプロセッサ、プロセッサ６１０に対して異種または非対称でありうる複数の追加のプロセッサ、複数のアクセラレータ（例えばグラフィックスアクセラレータまたはデジタル信号処理（ＤＳＰ）ユニットなど）、複数のフィールドプログラマブルゲートアレイ、または、任意の他のプロセッサを含んでよい。物理リソース６１０、６１５間には、アーキテクチャ上の特性、マイクロアーキテクチャ上の特性、熱的特性、電力消費特性等を含む、或るメトリクスの範囲の利点という観点から、様々な相違が存在してよい。これらの相違は、プロセッサ６１０、６１５間でそれらが非対称性及び異種性であると効果的に表しうる。少なくとも一実施形態について、様々なプロセッサ６１０、６１５は、同じダイパッケージに存在してよい。
【００７７】
図７は、本開示における複数の実施形態に係る第２のシステム７００のブロック図を示す。図７に示すように、マルチプロセッサシステム７００は、ポイントツーポイントインターコネクトシステムを含んでよく、ポイントツーポイントインターコネクト７５０を介して結合された第１のプロセッサ７７０及び第２のプロセッサ７８０を含んでよい。プロセッサ７７０及び７８０のそれぞれは、プロセッサ６１０、６１５のうちの１または複数として、プロセッサ５００の或るバージョンであってよい。
【００７８】
図７は２つのプロセッサ７７０、７８０を図示しうるが、本開示の範囲はそのように限定されないことを理解されたい。他の複数の実施形態において、１または複数の追加のプロセッサが特定のプロセッサに存在し得る。
【００７９】
プロセッサ７７０、７８０は、集積メモリコントローラユニット７７２、７８２をそれぞれ含むものとして示されている。プロセッサ７７０は、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インターフェース７７６及び７７８も含んでよい。同様に、第２のプロセッサ７８０は、Ｐ−Ｐインターフェース７８６及び７８８を含んでよい。プロセッサ７７０、７８０は、Ｐ−Ｐインターフェース回路７７８、７８８を用いてポイントツーポイント（Ｐ−Ｐ）インターフェース７５０を介して情報を交換してよい。図７に示すように、ＩＭＣ７７２及び７８２は、プロセッサをそれぞれのメモリ、すなわち、メモリ７３２及びメモリ７３４に結合してよい。これらのメモリは、一実施形態において、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。
【００８０】
プロセッサ７７０、７８０はそれぞれ、ポイントツーポイントインターフェース回路７７６、７９４、７８６、７９８を用い、個々のＰ−Ｐインターフェース７５２、７５４を介し、チップセット７９０と情報を交換してよい。一実施形態において、チップセット７９０は、高性能グラフィックスインターフェース７３９を介して高性能グラフィックス回路７３８と情報を交換してもよい。
【００８１】
プロセッサが低電力モードに配置された場合に、いずれかの又は両方のプロセッサのローカルキャッシュ情報が共有キャッシュ内に保存されうるように、共有キャッシュ（図示されてはいない）がいずれかのプロセッサ内に、又は両方のプロセッサの外部に、但し、Ｐ−Ｐインターコネクトを介してプロセッサと接続された状態において、含まれてもよい。
【００８２】
チップセット７９０は、インターフェース７９６を介して第１のバス７１６に結合され得る。一実施形態においては、第１のバス７１６は、周辺機器インターコネクト（ＰＣI）バス、又はＰＣＩエクスプレスバス若しくは別の第３世代Ｉ／Ｏインターコネクトバス等のバスであってよいが、本開示の範囲はそのように限定されるものではない。
【００８３】
図７に示されるように、様々なＩ／Ｏデバイス７１４が、第１のバス７１６を第２のバス７２０に結合するバスブリッジ７１８と共に、第１のバス７１６に結合され得る。一実施形態において、第２のバス７２０はローピンカウント（ＬＰＣ）バスであり得る。一実施形態において、例えば、キーボードおよび／またはマウス７２２、複数の通信デバイス７２７、および、命令／コードおよびデータ７３０を含み得るディスクドライブまたは他のマスストレージデバイスなどのストレージユニット７２８を含む様々なデバイスが第２のバス７２０に結合され得る。さらに、オーディオＩ／Ｏ７２４が、第２のバス７２０に結合され得る。他のアーキテクチャが可能でありうることに留意されたい。例えば、図７のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバスまたは他の同様のアーキテクチャを実装してよい。
【００８４】
図８は、本開示における複数の実施形態に係る第３のシステム８００のブロック図を示す。図７及び図８における複数の同様の要素は、同様の参照番号を有し、図７の複数の特定の態様は、図８の他の態様を不明瞭にすることを回避するために、図８から省かれている。
【００８５】
図８は、プロセッサ８７０、８８０が統合型のメモリおよびＩ／Ｏ制御ロジック（「Ｃｏｎｔｒｏｌ  Ｌｏｇｉｃ：ＣＬ」）８７２及び８８２をそれぞれ有してもよいことを示している。少なくとも一実施形態について、ＣＬ８７２、８８２は、図５Ａ、図５Ｂ及び図７に関して上述したような統合メモリコントローラユニットを含んでよい。加えて、ＣＬ８７２、８８２はまた、Ｉ／Ｏ制御ロジックを含んでよい。図８は、ＣＬ８７２、８８２に結合されうるのはメモリ８３２、８３４だけでなく、Ｉ／Ｏデバイス８１４も制御ロジック８７２、８８２に結合されうることを示している。レガシＩ／Ｏデバイス８１５は、チップセット８９０に結合されてよい。
【００８６】
図９は、本開示における複数の実施形態に係るＳｏＣ９００のブロック図を示す。図５Ａおよび図５Ｂと同様の複数の要素には、同様の複数の参照番号が付されている。また、破線のボックスは、さらに高度化したＳｏＣ上のオプションの機能部を表してよい。複数のインターコネクトユニット９０２は、一組の１または複数のコア９０２Ａ〜９０２Ｎ及び複数の共有キャッシュユニット９０６を備えるアプリケーションプロセッサ９１０と、システムエージェントユニット９１０と、複数のバスコントローラユニット９１６と、複数の統合メモリコントローラユニット９１４と、一組のまたは１若しくは複数のメディアプロセッサ９２０と、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット９３０と、ダイレクトメモリアクセス（ＤＭＡ）ユニット９３２と、１または複数の外部ディスプレイに結合するためのディスプレイユニット９４０とに結合されてよい。メディアプロセッサ９２０は、統合グラフィックスロジック９０８と、スチルカメラ機能および／またはビデオカメラ機能を提供するための画像プロセッサ９２４と、ハードウェアオーディオアクセラレーションを提供するためのオーディオプロセッサ９２６と、ビデオエンコード／デコードアクセラレーションを提供するためのビデオプロセッサ９２８とを含んでよい。
【００８７】
図１０は、本開示における複数の実施形態に係る、最小命令を実行しうる中央処理ユニット（ＣＰＵ）およびグラフィックス処理ユニット（ＧＰＵ）を含むプロセッサを示す図である。一実施形態において、少なくとも一実施形態に係る複数のオペレーションを実行するための命令は、ＣＰＵにより実行されてよい。他の実施形態において、命令はＧＰＵにより実行されてよい。さらに他の実施形態において、命令は、ＧＰＵとＣＰＵとにより実行される複数のオペレーションの組み合わせを通じて実行されてよい。例えば、一実施形態において、一実施形態に係る命令はＧＰＵ上での実行のために受信され、デコードされてよい。しかし、デコードされた命令内の１または複数のオペレーションはＣＰＵにより実行されてよく、結果は、命令の最終的なリタイアのためにＧＰＵに戻されてよい。逆に、いくつかの実施形態において、ＣＰＵはプライメアリプロセッサとして動作してよく、ＧＰＵはコプロセッサとして動作してよい。
【００８８】
いくつかの実施形態において、高度に並列であるスループットプロセッサから恩恵を受ける複数の命令は、ＧＰＵにより実行され得、他方、深くパイプライン化されたアーキテクチャから恩恵を受ける複数のプロセッサの性能から恩恵を受ける複数の命令は、ＣＰＵにより実行され得る。例えば、グラフィックス、科学アプリケーション、財務アプリケーション、および他の並列ワークロードは、ＧＰＵの性能から恩恵を受け得、それに従って実行され得、他方、オペレーティングシステムカーネルまたはアプリケーションコードなどのよりシーケンシャルなアプリケーションは、ＣＰＵに良好に適しているかもしれない。
【００８９】
図１０においては、プロセッサ１０００は、ＣＰＵ１００５と、ＧＰＵ１０１０と、画像プロセッサ１０１５と、ビデオプロセッサ１０２０と、ＵＳＢコントローラ１０２５と、ＵＡＲＴコントローラ１０３０と、ＳＰＩ／ＳＤＩＯコントローラ１０３５と、ディスプレイ装置１０４０と、メモリインターフェースコントローラ１０４５と、ＭＩＰＩコントローラ１０５０と、フラッシュメモリコントローラ１０５５と、ＤＤＲ（Ｄｕａｌ  Ｄａｔａ  Ｒａｔｅ）コントローラ１０６０と、セキュリティエンジン１０６５と、Ｉ２Ｓ／Ｉ２Ｃコントローラ１０７０と、を含む。より多くのＣＰＵまたはＧＰＵ、および他の複数の周辺インターフェースコントローラを含む他のロジックおよび複数の回路が、図１０のプロセッサに含まれ得る。
【００９０】
少なくとも一実施形態の１または複数の態様は、機械に読み取られた場合に、当該機械に本明細書において説明される技術を実行するためのロジックを組み立てさせる、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な複数のデータにより実装され得る。「ＩＰコア」として知られているそのような表現は、有形の機械可読媒体（「テープ」）上にストアされてよく、様々な顧客又は製造設備に供給されて、ロジック又はプロセッサを実際に作製する製造機械にロードすることができる。例えば、ARM Holdings社によって開発されたＣｏｒｔｅｘ（商標）ファミリのプロセッサ及び中国科学アカデミーのコンピューティング技術協会（ＩＣＴ）によって開発されたＬｏｏｎｇｓｏｎ  ＩＰコア等のＩＰコアは、Texas Instruments社、Qualcomm社、Apple社、又はSamsung社等の様々な顧客又はライセンシーに対して、ライセンス供与又は販売することができ、これらの顧客又はライセンシーが作製するプロセッサに実装することができる。
【００９１】
図１１は、本開示における複数の実施形態に係る複数のＩＰコアの開発を説明するブロック図を示す。ストレージ１１３０は、シミュレーションソフトウェア１１２０および／またはハードウェア又はソフトウェアモデル１１１０を含んでよい。一実施形態においては、ＩＰコア設計を表すデータは、メモリ１１４０（例えば、ハードディスク）、有線接続（例えば、インターネット）１１５０、又は無線接続１１６０を介してストレージ１１３０に提供されてよい。シミュレーションツール及びモデルによって生成されたＩＰコア情報は、その後、製造設備に送信されてよく、この製造設備において、サードパーティが、少なくとも一実施形態による少なくとも１つの命令を実行するようにＩＰコアを製造してよい。
【００９２】
いくつかの実施形態において、１または複数の命令は、第１のタイプのアーキテクチャ（例えば、ｘ８６）に対応し、異なるタイプまたはアーキテクチャ（例えば、ＡＲＭ）のプロセッサ上で変換またはエミュレートされてよい。従って一実施形態によると、命令は、ＡＲＭ、ｘ８６、ＭＩＰＳ、ＧＰＵ、または他のプロセッサタイプまたはアーキテクチャを含む任意のプロセッサまたはプロセッサタイプ上で実行され得る。
【００９３】
図１２は、本開示における複数の実施形態に従い、異なるタイプのプロセッサにより第１のタイプの命令がどのようにエミュレーションされうるかを示す。図１２において、プログラム１２０５は、一実施形態に係る命令と同じまたは実質的に同じ機能を実行し得るいくつかの命令を含む。しかしながら、プログラム１２０５の命令は、プロセッサ１２１５と異なるか又は互換性のないタイプおよび／またはフォーマットのものであってよく、このことは、プログラム１２０５内のタイプの命令がプロセッサ１２１５によってネイティブで実行することができない場合があることを意味する。しかしながら、エミュレーションロジック１２１０の援助によって、プログラム１２０５の命令は、プロセッサ１２１５によりネイティブに実行されうる命令に変換されてよい。一実施形態においては、エミュレーションロジックは、ハードウェアに具現化されてよい。別の実施形態では、エミュレーションロジックは、プログラム１２０５内のタイプの命令をプロセッサ１２１５がネイティブに実行可能なタイプに変換するソフトウェアを含む有形の機械可読媒体に具現化されてよい。他の実施形態では、エミュレーションロジックは、固定機能又はプログラマブルハードウェアと、有形の機械可読媒体上にストアされたプログラムとの組み合わせであってよい。一実施形態においては、プロセッサがエミュレーションロジックを含むのに対して、他の実施形態では、エミュレーションロジックは、プロセッサの外部に存在し、サードパーティによって提供されてよい。一実施形態においては、プロセッサは、当該プロセッサ内に含まれるか又は当該プロセッサに関連付けられたマイクロコード又はファームウェアを実行することによって、ソフトウェアを含む有形の機械可読媒体に具現化されたエミュレーションロジックをロードしてよい。
【００９４】
図１３は、本開示における複数の実施形態に従い、ソース命令セットにおける複数のバイナリ命令を、ターゲット命令セットにおける複数のバイナリ命令に変換するソフトウェア命令変換器の使用を対比したブロック図を示す。図示した実施形態では、命令変換器は、ソフトウェア命令変換器であってよいが、命令変換器は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの様々な組み合わせで実装されてよい。図１３は、高水準言語１３０２のプログラムが、少なくとも１つのｘ８６命令セットコアを有するプロセッサ１３１６によりネイティブに実行され得るｘ８６バイナリコード１３０６を生成するｘ８６コンパイラ１３０４を用いてコンパイルされ得ることを示す。少なくとも１つのｘ８６命令セットコアを有するプロセッサ１３１６は、少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサと実質的に同じ結果を達成するために、（１）Ｉｎｔｅｌ  ｘ８６命令セットコアの命令セットの大部分、又は（２）少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサ上で実行されることを目的としたアプリケーション又は他のソフトウェアのオブジェクトコードバージョン、を矛盾なく実行又は別の方法で処理することによって、少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサと実質的に同じ機能を実行しうる任意のプロセッサを表す。ｘ８６コンパイラ１３０４は、追加のリンケージ処理を伴って又は伴うことなしに、少なくとも１つのｘ８６命令セットコアを有するプロセッサ１３１６上において実行可能なｘ８６バイナリコード１３０６（例えば、オブジェクトコード）を生成するように動作されうるコンパイラを表している。同様に、図１３は、代替命令セットコンパイラ１３０８を使用することにより、高級言語１３０２のプログラムがコンパイルされ、少なくとも１つのｘ８６命令セットコアを有していないプロセッサ１３１４（例えば、カリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＭＩＰＳ  Ｔｅｃｈｎｏｌｉｇｅｓ社のＭＩＰＳ命令セットを実行する且つ／又はカリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＡＲＭホールディングス社のＡＲＭ命令セットを実行する複数のコアを有するプロセッサ）によってネイティブで実行されうる代替命令セットバイナリコード１３１０を生成してもよいことを示している。命令コンバータ１３１２は、ｘ８６バイナリコード１３０６を、ｘ８６命令セットコアを有していないプロセッサ１３１４によってネイティブで実行されうるコードに変換するために使用されてよい。この変換されたコードは代替命令セットバイナリコード１３１０と同一でなくてよいが、変換されたコードは、全般的なオペレーションを実現することになり、且つ、代替命令セットからの命令から構成されることになる。従って、命令コンバータ１３１２は、エミュレーション、シミュレーション、又は任意のその他のプロセスを通じて、ｘ８６命令セットプロセッサ又はコアを有していないプロセッサ又はその他の電子装置がｘ８６バイナリコード１３０６を実行できるようにするソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せを表している。
【００９５】
図１４は、本開示における複数の実施形態に係る、プロセッサの命令セットアーキテクチャ１４００のブロック図である。命令セットアーキテクチャ１４００は、任意の適切な数または種類のコンポーネントを含んでよい。
【００９６】
例えば、命令セットアーキテクチャ１４００は、１または複数のコア１４０６、１４０７およびグラフィックス処理ユニット１４１５などの処理エンティティを含んでよい。コア１４０６、１４０７は、バスまたはキャッシュを介するなど、任意の適切なメカニズムを介して命令セットアーキテクチャ１４００の残りのものに通信可能に結合されてよい。一実施形態において、コア１４０６、１４０７は、バスインターフェースユニット１４０９およびＬ２キャッシュ１４１０を含んでよいＬ２キャッシュコントローラ１４０８を介して通信可能に結合されてよい。コア１４０６、１４０７およびグラフィックス処理ユニット１４１５は、インターコネクト１４１０を介して互いに、および、命令セットアーキテクチャ１４００の残りのものに対し、通信可能に結合されてよい。一実施形態において、グラフィックス処理ユニット１４１５は、特定のビデオ信号が出力のためにエンコードおよびデコードされる態様を規定するビデオコード部１４２０を用いてよい。
【００９７】
命令セットアーキテクチャ１４００はまた、任意の数または種類のインターフェース、コントローラ、または、電子デバイス若しくはシステムの他の部分とインターフェース若しくは通信する他のメカニズムを備えてよい。そのような複数のメカニズムは、例えば複数の周辺機器、複数の通信デバイス、複数の他のプロセッサまたはメモリとのインタラクションを容易にしてよい。図１４の例において、命令セットアーキテクチャ１４００は、液晶ディスプレイ（ＬＣＤ）ビデオインターフェース１４２５、加入者インターフェースモジュール（ＳＩＭ）インターフェース１４３０、ブートＲＯＭインターフェース１４３５、同期式ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）コントローラ１４４０、フラッシュコントローラ１４４５、および、シリアル周辺機器インターフェース（ＳＰＩ）マスターユニット１４５０を備えてよい。ＬＣＤビデオインターフェース１４２５は、例えばＧＰＵ１４１５からの、また例えばモバイルインダストリプロセッサインターフェース（ＭＩＰＩ）１４９０または高精細マルチメディアインターフェースＨＤＭＩ（登録商標）１４９５を介した、ディスプレイへのビデオ信号の出力を提供してよい。そのようなディスプレイは、例えばＬＣＤを含んでよい。ＳＩＭインターフェース１４３０は、ＳＩＭカードまたはデバイスへの／からのアクセスを提供してよい。ＳＤＲＡＭコントローラ１４４０は、ＳＤＲＡＭチップまたはモジュールなどのメモリへの／からのアクセスを提供してよい。フラッシュコントローラ１４４５は、フラッシュメモリまたはＲＡＭの他のインスタンスなどのメモリへの／からのアクセスを提供してよい。ＳＰＩマスターユニット１４５０は、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール１４７０、高速３Ｇモデム１４７５、グローバルポジショニングシステムモジュール１４８０、または、８０２．１１などの通信規格を実装した無線モジュール１４８５のような通信モジュールへの／からのアクセスを提供してよい。
【００９８】
図１５は、本開示における複数の実施形態に係る、プロセッサの命令セットアーキテクチャ１５００のより詳細なブロック図である。命令アーキテクチャ１５００は、命令セットアーキテクチャ１４００の１または複数の態様を実装してよい。さらに、命令セットアーキテクチャ１５００は、プロセッサ内で複数の命令を実行する複数のモジュールおよび複数のメカニズムを説明しうる。
【００９９】
命令アーキテクチャ１５００は、１または複数の実行エンティティ１５６５に通信可能に結合されたメモリシステム１５４０を備えてよい。さらに、命令アーキテクチャ１５００は、複数の実行エンティティ１５６５およびメモリシステム１５４０に通信可能に結合されたユニット１５１０などのキャッシュ・バスインターフェースユニットを備えてよい。一実施形態において、複数の実行エンティティ１５６５への複数の命令のロードは、１または複数の実行ステージで実行されてよい。そのような複数のステージは、例えば、命令プリフェッチステージ１５３０、デュアル命令デコードステージ１５５０、レジスタリネームステージ１５５５、発行ステージ１５６０およびライトバックステージ１５７０を含んでよい。
【０１００】
一実施形態において、メモリシステム１５４０は実行済み命令ポインタ１５８０を含んでよい。実行済み命令ポインタ１５８０は、複数の命令のバッチ内で最も古い、ディスパッチされていない命令を特定する値をストアしてよい。この命令は、アウトオブオーダ発行ステージ１５６０における複数の命令のバッチ内にストアされてよい。複数の命令のバッチは、複数のストランドにより表されるスレッド内であってよい。最も古い命令は、最も低いＰＯ（プログラム順序）値に対応してよい。ＰＯは、命令の一意の数を含んでよい。ＰＯは、複数の命令を順序付けしてコードの正確な実行セマンティクスを保証するのに用いられてよい。ＰＯは、絶対値ではなく、命令内のエンコードされたＰＯに対するインクリメントを評価するなどの複数のメカニズムにより再構成されてよい。そのような再構成されたＰＯは、ＲＰＯとして知られうる。本明細書ではＰＯが言及されうるが、そのようなＰＯは、ＲＰＯと互換可能に用いられてよい。ストランドは、互いにデータ依存性である複数の命令のシーケンスを含んでよい。ストランドは、コンパイルのときにバイナリ変換器により配列されてよい。ストランドを実行するハードウェアは、様々な命令のＰＯに従って順序通りに特定のストランドの複数の命令を実行してよい。スレッドは、異なるストランドの複数の命令が互いに依存しうるように、複数のストランドを含んでよい。特定のストランドのＰＯは、発行ステージから実行に向けてまだディスパッチされていないストランド内の最も古い命令のＰＯであってよい。従って、各ストランドがＰＯにより順序付けされる複数の命令を含む複数のストランドのスレッドが付与されると、実行済み命令ポインタ１５８０は、アウトオブオーダ発行ステージ１５６０におけるスレッドの複数のストランドのなかで、最も古い（最も低い値で示される）ＰＯをストアしてよい。
【０１０１】
別の実施形態において、メモリシステム１５４０はリタイアメントポインタ１５８２を含んでよい。リタイアメントポインタ１５８２は、最新のリタイア済み命令のＰＯを特定する値をストアしてよい。リタイアメントポインタ１５８２は、例えばリタイアメントユニット４５４によりセットされてよい。まだ命令がリタイアされていない場合には、リタイアメントポインタ１５８２は、ヌル値を含んでよい。
【０１０２】
複数の実行エンティティ１５６５は、プロセッサが命令を実行しうる任意の適切な数および種類のメカニズムを含んでよい。図１５の例において、複数の実行エンティティ１５６５は、複数のＡＬＵ／乗算ユニット（ＭＵＬ）１５６６、複数のＡＬＵ１５６７、複数の浮動小数点ユニット（ＦＰＵ）１５６８を含んでよい。一実施形態において、そのような複数のエンティティは、与えられるアドレス１５６９に含まれる情報を利用してよい。複数の実行エンティティ１５６５は、ステージ１５３０、１５５０、１５５５、１５６０、１５７０と組み合わせられて、集合的に実行ユニットを形成してよい。
【０１０３】
ユニット１５１０は、任意の適切な態様で実装されてよい。一実施形態において、ユニット１５１０はキャッシュ制御を実行してよい。このような実施形態において、ユニット１５１０は従って、キャッシュ１５２５を含んでよい。さらなる実施形態において、キャッシュ１５２５は、ゼロ、１２８ｋ、２５６ｋ、５１２ｋ、１Ｍまたは２Ｍバイトのメモリなど、任意の適切なサイズのＬ２ユニファイドキャッシュとして実装されてよい。他のさらなる実施形態において、キャッシュ１５２５は、エラー訂正コードメモリ内で実装されてよい。別の実施形態において、ユニット１５１０は、プロセッサまたは電子デバイスの複数の他の部分に対してバスインターフェーシングを実行してよい。このような実施形態において、ユニット１５１０は従って、インターコネクト、イントラプロセッサバス、インタープロセッサバス、または他の通信バス、ポート若しくはラインを介した通信用のバスインターフェースユニット１５２０を有してよい。バスインターフェースユニット１５２０は、例えば複数の実行エンティティ１５６５と、命令アーキテクチャ１５００の外部システムの一部との間のデータ転送のための記憶および入力／出力のアドレスの生成を実行するべく、インターフェースを提供してよい。
【０１０４】
その複数の機能をさらに容易化すべく、バスインターフェースユニット１５２０は、プロセッサまたは電子デバイスの他の部分に対して複数の割り込みおよび複数の他の通信を生成する割り込み制御および分散ユニット１５１１を含んでよい。一実施形態において、バスインターフェースユニット１５２０は、複数の処理コアについてのキャッシュアクセスおよびコヒーレンシを処理するスヌープコントロールユニット１５１２を含んでよい。さらなる実施形態において、そのような機能を提供すべく、スヌープコントロールユニット１５１２は、異なるキャッシュの間での情報交換を処理するキャッシュ対キャッシュ転送ユニットを含んでよい。他のさらなる実施形態において、スヌープコントロールユニット１５１２は、他のキャッシュ（図示せず）のコヒーレンシを監視する１または複数のスヌープフィルタ１５１４を含んでよく、その結果、ユニット１５１０などのキャッシュコントローラは、そのような監視を直接的に実行しなくてもよい。ユニット１５１０は、命令アーキテクチャ１５００の複数の動作を同期するための任意の適切な数のタイマ１５１５を含んでよい。また、ユニット１５１０は、ＡＣポート１５１６を含んでよい。
【０１０５】
メモリシステム１５４０は、命令アーキテクチャ１５００の処理ニーズについての情報をストアする任意の適切な数および種類のメカニズムを含んでよい。一実施形態において、メモリシステム１５０４は、メモリまたは複数のレジスタへ書き込まれ、またはそれらから読み取られる複数のバッファなど、情報をストアするロードストアユニット１５３０を含んでよい。別の実施形態において、メモリシステム１５０４は、物理アドレスと仮想アドレスとの間の複数のアドレス値のルックアップを提供する変換ルックアサイドバッファ（ＴＬＢ）１５４５を含んでよい。さらに他の実施形態において、バスインターフェースユニット１５２０は、仮想メモリへのアクセスを容易化するメモリ管理ユニット（ＭＭＵ）１５４４を含んでよい。またさらに他の実施形態において、メモリシステム１５０４はレイテンシを減らすべく、複数の命令を、そのような複数の命令が実際に実行されることを必要とする前に、メモリから要求するプリフェッチャ１５４３を含んでよい。
【０１０６】
命令を実行する命令アーキテクチャ１５００のオペレーションは、異なるステージを通じて実行されてよい。例えば、ユニット１５１０を用い、命令プリフェッチステージ１５３０はプリフェッチャ１５４３を介して命令にアクセスしてよい。取得される複数の命令は、命令キャッシュ１５３２にストアされてよい。プリフェッチステージ１５３０は、高速ループモードのためのオプション１５３１をイネーブルしてよく、特定のキャッシュ内に入れるのに十分に小さいループを形成する一連の命令が実行される。一実施形態において、そのような実行は、例えば命令キャッシュ１５３２からの複数の追加の命令にアクセスする必要なしに実行されてよい。どの命令をプリフェッチするかの決定は、例えば分岐予測ユニット１５３５によりなされてよい。分岐予測ユニット１５３５は、グローバルヒストリ１５３６における実行の複数の指示、ターゲットアドレス１５３７の複数のインディケーション、または、リターンスタック１５３８の複数のコンテンツにアクセスして、コードの複数の分岐１５５７のいずれが次に実行されるかを決定してよい。そのような複数の分岐は、場合によっては結果としてプリフェッチされてよい。複数の分岐１５５７は、以下で説明されるように、オペレーションの他の複数のステージを通じて生成されてよい。命令プリフェッチステージ１５３０は、デュアル命令デコードステージに対し、複数の命令と、将来の命令についての全ての予測とを提供してよい。
【０１０７】
デュアル命令デコードステージ１５５０は、受信した命令を、実行されうる複数のマイクロコードベースの命令に変換してよい。デュアル命令デコードステージ１５５０は、クロックサイクルごとに２つの命令を同時にデコードしてよい。さらに、デュアル命令デコードステージ１５５０は、その複数の結果をレジスタリネームステージ１５５５に渡してよい。加えて、デュアル命令デコードステージ１５５０は、そのデコードと、最終的なマイクロコードの実行とから結果として起こる全ての分岐を決定してよい。そのような複数の結果は、複数の分岐１５５７に入力されてよい。
【０１０８】
レジスタリネームステージ１５５５は、複数の仮想レジスタまたは他リソースへの複数の参照を、複数の物理的レジスタまたはリソースへの複数の参照に変換してよい。レジスタリネームステージ１５５５は、そのようなマッピングのインディケーションをレジスタプール１５５６内に含んでよい。レジスタリネームステージ１５５５は、複数の命令を受信したときに変換して発行ステージ１５６０に結果を送信してよい。
【０１０９】
発行ステージ１５６０は、複数の実行エンティティ１５６５に対して複数のコマンドを発行またはディスパッチしてよい。そのような発行は、アウトオブオーダ方式で実行されてよい。一実施形態において、複数の命令は、実行される前に発行ステージ１５６０で保持されてよい。発行ステージ１５６０は、そのような複数のコマンドを保持するための命令キュー１５６１を含んでよい。特定の命令の実行に対するリソースの利用可能性または適合性などの任意の許容可能な基準に基づいて、複数の命令が発行ステージ１５６０により特定の処理エンティティ１５６５に発行されてよい。一実施形態において、発行ステージ１５６０は命令キュー１５６１内の複数の命令をリオーダしてよく、その結果、受信される第１の命令は実行される第１の命令でなくてもよい。命令キュー１５６１の順序付けに基づいて、追加の分岐情報が複数の分岐１５５７に提供されてよい。発行ステージ１５６０は、複数の命令を実行のために複数の実行エンティティ１５６５に渡してよい。
【０１１０】
実行されると、ライトバックステージ１５７０は、付与されたコマンドの完了を通信すべく、命令セットアーキテクチャ１５００の複数のレジスタ、複数のキュー、または他の構造にデータを書き込んでよい。ライトバックステージ１５７０のオペレーションは、発行ステージ１５６０において配列された複数の命令の順序に応じて、追加の複数の命令が実行されることを可能にしてよい。命令セットアーキテクチャ１５００の性能は、トレースユニット１５７５により監視され、またはデバッグされてよい。
【０１１１】
図１６は、本開示における複数の実施形態に係る、プロセッサの命令セットアーキテクチャのための実行パイプライン１６００のブロック図である。実行パイプライン１６００は、例えば図１５の命令アーキテクチャ１５００のオペレーションを説明してよい。
【０１１２】
実行パイプライン１６００は、複数の段階または複数のオペレーションの任意の適切な組み合わせを含んでよい。１６０５において、次に実行されるべき分岐の複数の予測がなされてよい。一実施形態において、そのような複数の予測は、先の複数の命令の実行、および、それらの結果に基づいてよい。１６１０において、実行の予測分岐に対応する複数の命令は、命令キャッシュにロードされてよい。１６１５において、命令キャッシュにおける１または複数のそのような命令は、実行を目指してフェッチされてよい。１６２０において、フェッチされた複数の命令は、マイクロコードまたは、より具体的な機械言語にデコードされてよい。一実施形態において、複数の命令は同時にデコードされてよい。１６２５において、デコードされた複数の命令内での、複数のレジスタまたは他の複数のリソースへの複数の参照は再割り当てされてよい。例えば、複数の仮想レジスタへの複数の参照は、対応する複数の物理的レジスタへの複数の参照と置換されてよい。１６３０において、複数の命令は、実行を目指して複数のキューにディスパッチされてよい。１６４０において、複数の命令が実行されてよい。そのような実行は、任意の適切な態様で実行されてよい。１６５０において、複数の命令が好適な実行エンティティに発行されてよい。命令が実行される態様は、命令を実行する具体的なエンティティに依存してよい。例えば、１６５５においてＡＬＵは複数の算術機能を実行してよい。ＡＬＵは、そのオペレーション用に単一のクロックサイクルおよび２つのシフタを利用してよい。一実施形態において、２つのＡＬＵが採用されてよく、従って２つの命令が１６５５で実行されてよい。１６６０において、結果として生じる分岐の決定が行われてよい。プログラムカウンタは、分岐が作成されるデスティネーションを指定するのに用いられてよい。１６６０は単一のクロックサイクルで実行されてよい。１６６５において、浮動小数点算術が１または複数のＦＰＵにより実行されてよい。浮動小数点オペレーションは、実行するのに複数クロックサイクル、例えば２から１０サイクルを必要としてよい。１６７０において、乗算および除算オペレーションが実行されてよい。そのような複数のオペレーションは４クロックサイクル内で実行されてよい。１６７５において、パイプライン１６００の複数のレジスタまたは他の部分へのロードおよびストアオペレーションが実行されてよい。オペレーションは複数のアドレスをロードおよびストアすることを含んでよい。そのようなオペレーションは４クロックサイクル内で実行されてよい。１６８０において、１６５５〜１６７５の結果として生じるオペレーションにより要求されるように、複数のライトバックオペレーションが実行されてよい。
【０１１３】
図１７は、本開示における複数の実施形態に係る、プロセッサ１７１０を利用する電子デバイス１７００のブロック図である。電子デバイス１７００は、例えばノートブック、ウルトラブック、コンピュータ、タワーサーバ、ラックサーバ、ブレードサーバ、ラップトップ、デスクトップ、タブレット、モバイルデバイス、電話、埋め込み型コンピュータ、または任意の他の適した電子デバイスを含んでよい。
【０１１４】
電子デバイス１７００は、任意の適切な数または種類のコンポーネント、周辺機器、モジュールまたはデバイスに通信可能に結合されたプロセッサ１７１０を含んでよい。そのような結合は、Ｉ２Ｃバス、システム管理バス（ＳＭバス）、ローピンカウント（ＬＰＣ）バス、ＳＰＩ、ハイディフィニションオーディオ（ＨＤＡ）バス、シリアルアドバンステクノロジアタッチメント（ＳＡＴＡ）バス、ＵＳＢバス（バージョン１、２、３）、またはユニバーサル非同期受信機／送信機（ＵＡＲＴ）バスなどの、任意の適切な種類のバスまたはインターフェースにより実現されてよい。
【０１１５】
そのようなコンポーネントは、例えば、ディスプレイ１７２４、タッチスクリーン１７２５、タッチパッド１７３０、ニアフィールド通信（ＮＦＣ）ユニット１７４５、センサハブ１７４０、熱センサ１７４６、エクスプレスチップセット（ＥＣ）１７３５、信頼されたプラットフォームモジュール（ＴＰＭ）１７３８、ＢＩＯＳ／ファームウェア／フラッシュメモリ１７２２、デジタル信号プロセッサ１７６０、ソリッドステートディスク（ＳＳＤ）またはハードディスクドライブ（ＨＤＤ）などのドライブ１７２０、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）ユニット１７５０、Ｂｌｕｅｔｏｏｔｈ（登録商標）ユニット１７５２、ワイヤレスワイドエリアネットワーク（ＷＷＡＮ）ユニット１７５６、グローバルポジショニングシステム（ＧＰＳ）、ＵＳＢ３．０カメラなどのカメラ１７５４、または、例えばＬＰＤＤＲ３規格で実装された低電力ダブルデータレート（ＬＰＤＤＲ）メモリユニット１７１５を含んでよい。これらのコンポーネントは、それぞれ任意の適切な態様で実装されてよい。
【０１１６】
さらに、様々な実施形態において、複数の他のコンポーネントが、上述された複数のコンポーネントを介してプロセッサ１７１０に通信可能に結合されてよい。例えば、加速度計１７４１、周辺光センサ（ＡＬＳ）１７４２、コンパス１７４３およびジャイロスコープ１７４４がセンサハブ１７４０に通信可能に結合されてよい。熱センサ１７３９、ファン１７３７、キーボード１７４６およびタッチパッド１７３０がＥＣ１７３５に通信可能に結合されてよい。スピーカ１７６３、ヘッドフォン１７６４およびマイク１７６５が音声ユニット１７６２に通信可能に結合されてよく、これは次にＤＳＰ１７６０に通信可能に結合されてよい。音声ユニット１７６２は例えば音声コーデックおよびクラスＤ増幅器を含んでよい。ＳＩＭカード１７５７がＷＷＡＮユニット１７５６に通信可能に結合されてよい。ＷＬＡＮユニット１７５０およびＢｌｕｅｔｏｏｔｈ（登録商標）ユニット１７５２、ならびに、ＷＷＡＮユニット１７５６などの複数のコンポーネントが次世代フォームファクタ（ＮＧＦＦ）に実装されてよい。
【０１１７】
本開示の複数の実施形態は、キャッシュベースの投機的なベクトル化のための命令およびロジックを含む。図１８は、クラスタ化された複数の実行ユニットを有する機械内にメモリアクセス用の命令およびロジックを実装するためのシステム１８００の機能ブロック図である。そのような機械はクラスタ化されたワイド実行機械を含んでよい。一実施形態において、システム１８００は、同期された複数のデータキャッシュユニットを利用することで、その複数の実行ユニットにメモリアクセスを提供してよい。さらなる実施形態において、そのような同期は複数のデータキャッシュユニット内の複数のデータキャッシュを同期することで実行されてよい。他のさらなる実施形態において、そのような同期は、複数のデータキャッシュユニット内の複数の同期スヌープバッファにより実行されてよい。また別のさらなる実施形態において、そのような同期は、複数のデータキャッシュユニット内の複数の同期ライトバックバッファにより実行されてよい。またさらに別のさらなる実施形態において、そのような同期は、複数のデータキャッシュユニット内の複数のフィルバッファの間で複数のフィルバッファ要求を通信することで実行されてよい。そのような複数の要求は、他の複数のフィルバッファに通じるそのような１つのフィルバッファにより受信される複数のロードオペレーションを含んでよい。
【０１１８】
システム１８００は、命令ストリーム１８０４などの複数の命令を実行してよい。システム１８００は、アウトオブオーダで複数の命令をフェッチ、ディスパッチ、実行およびリタイアしてよい。アウトオブオーダ実行を実行することにより、システム１８００は命令レベルでの並列処理を実行してよい。さらに、システム１８００は、すでにストア、決定または実行されたデータに対し、特定の実行ユニットがより速くアクセスしうるようにキャッシュを提供してよい。そのようなキャッシュは、複数のレベルのキャッシュにより確立されてよい。
【０１１９】
システム１８００は、キャッシュベースの投機的なベクトル化を実行するための任意の適切な態様で実装されてよい。一実施形態において、システム１８００は、クラスタ化された、ワイド実行機械（ＣＷＥＭ）を備えてよい。ＣＷＥＭは、例えば、複数の実行ユニットを有した処理エンティティを有してよい。さらなる実施形態において、複数の実行ユニットは、単一スレッドのコードを実行してよい。アウトオブオーダ実行を提供するべく、システム１８００は、論理および物理リソースのマッピングおよびリネームのための複数のレジスタファイルを備えてよい。ＣＷＥＭの複数の実行ユニットは、処理ユニットのチップまたは物理ダイパッケージにわたって分散されてよい。さらに、複数の実行ユニットは、クラスタにグループ化されてよい。そのような態様で複数の実行ユニットを拡散することで、レジスタファイルのアクセスおよびデータ転送に起因するレイテンシを低減しつつ、レジスタファイルのアクセスおよび実行帯域幅が改善されうる。従って、システム１８００は、アウトオブオーダ方式で実行するべくデータを待ちうる複数の他の命令のブロッキングに起因するメモリアクセスのボトルネックを低減し、命令レベルの並列処理を実行するためのシステム１８００の能力を改善してよい。
【０１２０】
一実施形態において、システム１８００は、命令ストリーム１８０４の一部を受信および実行するプロセッサ１８０２を含んでよい。プロセッサ１８０２の具体的な態様が図１８に図示されてはいるが、プロセッサ１８０２は、任意の適切な種類または数のプロセッサもしくは処理エンティティ、またはそれらのサポートにおける他の要素を含んでよい。プロセッサ１８０２は、１または複数のＣＷＥＭにより完全にまたは部分的に実装されてよく、または、１または複数のＣＷＥＭを含んでよい。
【０１２１】
一実施形態において、プロセッサ１８０２はコア（メモリ実行ユニット（ＭＥＵ）１８１６を含んでよい）およびアンコア１８２０を含んでよい。ＭＥＵ１８１６は、複数の命令を実行する複数の要素を含んでよい。アンコア１８２０は、複数の命令の実行をサポートする複数の要素を含んでよい。別の実施形態において、プロセッサ１８０２は、複数のクラスタ１８０６にグループ化された任意の適切な数および種類の実行ユニット１８０８を含んでよい。複数のクラスタ１８０６は、コア、ＭＥＵ１８１６または、プロセッサ１８０２における任意の他の適した部分内に実装されてよい。一実施形態において、複数の実行ユニット１０８は、システム１８００の複数のコンテンツのロードまたはストアオペレーションを実行するための任意の適切なハードウェア構造を含んでよい。そのような複数のオペレーションは、例えばレジスタまたはメモリ位置への／からのものであってよい。別の実施形態において、複数のクラスタ１８０６は、例えば複数の実行クラスタ４６０により実装されてよい。
【０１２２】
ＭＥＵ１８１６は、任意の適切な数および種類の要素を含んでよい。一実施形態において、ＭＥＵ１８１６は、複数のデータキャッシュユニット（ＤＣＵ）１８０４を含んでよい。各ＤＣＵ１８０４は、１または２つのクラスタ１８０６など、適切な数のクラスタ１８０６に通信可能に結合されてよい。さらに、各ＤＣＵ１８０４は、少なくとも１つの他のＤＣＵ１８０４に通信可能に結合されてよい。さらなる実施形態において、複数のＤＣＵ１８０４は通信可能に結合されて、そのように結合された複数のＤＣＵ１８０４の同期を容易化してよい。複数のＤＣＵ１８０４は、Ｌ１キャッシュを含んでよい。ＭＥＵ１８１６は、Ｌ２キャッシュ１８１０を含んでよい。単一のＬ２キャッシュ１８１０が図示されているが、ＭＥＵ１８１６は、任意の適切な数または種類のキャッシュを含んでよい。各ＤＣＵ１８０４は、Ｌ２キャッシュ１８１０に通信可能に結合されてよい。ＭＥＵ１８１６またはその複数の要素は、その複数の要素と、システム１８００の複数の他の要素との間の変換のための複数のインターフェースを含んでよい。例えば、複数のインターフェースは、複数のＤＣＵ１８０４および複数のクラスタ１８０６の間、または、複数のＤＣＵ１８０４およびＬ２キャッシュ１８１０の間の通信を目的として提供されてよい。
【０１２３】
複数のＤＣＵ１８０４は、例えばＬ１内部キャッシュメモリ１０４により完全にまたは部分的に実装されたキャッシュなど、任意の適切な態様で実装されたＬ１キャッシュを含んでよい。Ｌ２キャッシュ１８１０は、例えばＬ２キャッシュユニット４７６、キャッシュ階層５０３、複数のキャッシュ５０６、Ｌ２キャッシュ１４１０、またはキャッシュ１５２５により、完全にまたは部分的に実装されてよい。
【０１２４】
アンコア１８２０は、任意の適切な態様で実装されてよい。例えば、アンコア１８２０はＬ３キャッシュ１８１２およびメモリコントローラ１８１４を含んでよい。Ｌ２キャッシュ１８１０は、Ｌ３キャッシュ１８１２に通信可能に結合されてよい。Ｌ３キャッシュ１８１２は、複数のキャッシュ５０６、キャッシュ階層５０３またはＬＬＣ５９５により完全にまたは部分的に実装されるなど、任意の適切な態様により実装されてよい。メモリコントローラ１８１４は、ＭＣＨ１１６、複数のメモリコントローラユニット５５２、ＣＬ８７２、ＣＬ８８２、または複数の統合メモリコントローラユニット９１４により完全にまたは部分的に実装されるなど、メモリへの、および、メモリからの転送オペレーションを制御する任意の適切な態様で実装されてよい。
【０１２５】
複数のＤＣＵ１８０４の複数のＬ１キャッシュ、Ｌ２キャッシュ１８１０およびＬ３キャッシュの配列は、キャッシュ階層内に配置されてよい。さらに、Ｌ１、Ｌ２およびＬ３キャッシュが具体的に説明されるが、任意の適切な数または種類のキャッシュ階層が用いられてよい。例えば、特定の数のＬ１キャッシュが個々のＬ２キャッシュに割り当てられてよく、他の特定の数のＬ２キャッシュが個々のＬ３キャッシュに割り当てられてよい。複数の実行ユニット１８０８が１つのメモリ位置についてストアまたはロードを実行しなければならないときには、まず複数のＤＣＵ１８０４の複数のＬ１キャッシュ内へのチェックが行われて、その位置のキャッシュされたバージョンが利用可能であるかを調べてよい。そうである場合、オペレーションはローカルキャッシュ内で実行されてよい。結果が否定的な場合、試みられたオペレーションはミスを生成してよく、より高いレベルのキャッシュからさらにアクセスが試みられてよい。試みられたオペレーションは繰り返されてよく、そのようなキャッシュ内で複数の値が利用可能である場合には、当該値が戻されてよい。そうでなければ、別のミスが生成されてよい。これらの段階は、全てのキャッシュが問題のメモリ位置を含まないと判断されるまで継続してよく、この場合、システム１８００における実際のメモリ位置がアクセスされてよい。
【０１２６】
図１９Ａおよび図１９Ｂは、本開示における複数の実施形態に係る複数のＤＣＵ１８０４の機能ブロック図である。ＤＣＵ１８０４ＡおよびＤＣＵ１８０４Ｂが図示されてはいるが、同様に実装されたより多くのＤＣＵがシステム１８００内で用いられてよい。一実施形態において、各ＤＣＵ１８０４は、クラスタインターフェース１９２４を介してそれぞれの１または２つのクラスタ１８０６に通信可能に結合されてよい。さらに、各ＤＣＵ１８０４は、Ｌ２インターフェース１９２２を介してＬ２キャッシュ１８１０に通信可能に結合されてよい。加えて、各ＤＣＵ１８０４は、複数のアドレスバス１９４０を介して互いに通信可能に結合されてよい。
【０１２７】
複数のＤＣＵ１８０４は、本明細書で説明される機能を実行するための任意の適切な態様で実装されてよい。複数のＤＣＵ１８０４は、データキャッシュユニット４３４、４７４により部分的に実装されてよい。一実施形態において、各ＤＣＵ１８０４は、データキャッシュ（ＤＣ）１９２６、１または複数のフィルバッファ（ＦＢ）１９３０、ライトバックバッファ（ＷＢＢ）１９２８およびスヌープバッファ（ＳＢ）１９３２を含んでよい。さらに、各ＤＣＵ１８０４は、ＤＣＵ１８０４の内外の通信を容易化するマルチプレクサ１９３６、１９３４を含んでよい。
【０１２８】
ＤＣ１９２６は、本明細書で説明される機能を実行するための任意の適切な態様で実装されてよい。一実施形態において、ＤＣ１９２６は、Ｌ１データキャッシュ構造を含んでよい。ＤＣ１９２６は、任意の適切なサイズで実装されてよい。例えば、ＤＣ１９２６は、３２キロバイトの情報を含んでよい。
【０１２９】
ＷＢＢ１９２８は、本明細書で説明される機能を実行するための任意の適切な態様で実装されてよい。一実施形態において、ＷＢＢ１９２８は、ハードウェアストレージ領域として実装されてよい。別の実施形態において、ＷＢＢ１９２８は、例えばＤＣ１９２６から排除（ｅｖｉｃｔｅｄ）された複数の修正キャッシュラインをキャプチャしてよい。ＷＢＢ１９２８は、そのような複数の排除された修正キャッシュラインを、Ｌ２キャッシュ１８１０がそれらを必要とするか、またはＬ２キャッシュ１８１０がそれらを受信できるまで、保持してよい。そのような状況は、例えば、すでにＤＣ１９２６に書き込まれたデータがまだキャッシュ階層に通信されていないが、たった今ＤＣ１９２６から排除されたときに起こりうる。
【０１３０】
ＦＢ１９３０は、本明細書で説明される機能を実行するための任意の適切な態様で実装されてよい。一実施形態において、ＦＢ１９３０はハードウェアバッファとして実装されてよい。ＦＢ１９３０は、ＤＣ１９２６へのアクセスの試みにおいてミスを生成するすべてのロード及びストアの要求を受信して含んでよい。ＦＢ１９３０は、Ｌ２キャッシュ１８１０およびさらなる複数のレベルのキャッシュ、例えばＬ３キャッシュ１８１２に送信される複数の要求を、より高いレベルの複数のキャッシュから、要求されたキャッシュラインが戻され、ＤＣ１９２６内に配置されるまで含んでよい。
【０１３１】
ＳＢ１９３２は、本明細書で説明される機能を実行するための任意の適切な態様で実装されてよい。一実施形態において、ＳＢ１９２８はハードウェアバッファとして実装されてよい。ＳＢ１９２８は、ＤＣ１９２６内で見出される、修正された状態の複数のキャッシュラインをストアしてよい。そのような見出しは、例えば複数のスヌープシグナル１９４２により行われてよい。複数のスヌープシグナル１９４２は、スヌープのためのアドレスバスを介して供給されてよい。複数のスヌープシグナル１９４２は、ＤＣ１９２６、ＷＢＢ１９２８およびＦＢ１９３０内のチェックを実行するべく、Ｌ２キャッシュ１８１０から複数のＤＣＵ１８０４のそれぞれに渡されてよい。チェックは、他の箇所で要求されるキャッシュラインを見出すためのものであってよい。スヌープシグナル１９４２の元の原因は、他の複数のＥＵ１８０８でのロードまたはストア、複数レベルのキャッシュ排除に起因するバックワードの照会、ダイレクトメモリアクセスオペレーション、または、キャッシュ不能なメモリ要求によるキャッシュヒットに起因する自己スヌープを含んでよい。いずれかのそのようなオペレーションにより探されたキャッシュラインがＤＣ１９２６で見出された場合、それはライトバックのためにＳＢ１９２８にストアされてよい。
【０１３２】
特定のＤＣＵ１８０４の各要素は、任意の適切なラインまたはバスを介して他の要素に通信可能に結合されてよい。例示の複数のバスが図１９Ａ、図１９Ｂに図示されて、ＤＣＵ１８０４の様々な要素の間で渡される異なる種類のデータを説明してよい。さらに、バスのタイプは、各要素の間で渡されるべき情報に基づいて選択されてよい。
【０１３３】
例えば、ロード及びストアアドレスが、ロードおよびストアのためのアドレスバスを介して、複数のＥＵ１８０８から複数のＤＣＵ１８０４のそれぞれに渡されてよい。複数のロード及びストアアドレスは、ロードおよびストアオペレーションが実行されるアドレスを表してよい。一実施形態において、ＤＣＵ１８０４Ａ、１８０４Ｂのそれぞれに同一のアドレスが送信されてよい。ロード及びストアアドレス情報がＤＣ１９２６、ＦＢ１９３０およびＷＢＢ１９２８に分散されてよい。さらに、ストアに関連するデータは、データをロード及びストアするためのデータバスを介して複数のＥＵ１８０８からＤＣＵ１８０４に送信されてよい。一実施形態において、ＤＣＵ１８０４Ａ、１８０４Ｂのそれぞれに同じデータが送信されてよい。ストアに関連するデータは、ＤＣ１９２６およびＦＢ１９３０に分散されてよい。
【０１３４】
ＤＣ１９２６およびＦＢ１９３０は、複数のＥＵ１８０８のロード要求に応答してデータをプッシュしてよい。データはキャッシュラインの全体を含んでよい。データはキャッシュライン転送のためのデータバスを介して送信されてよい。ＤＣ１９２６またはＦＢ１９３０のいずれが実際にデータを供給するかの選択は、要求された、必要な、または、正確なバージョンのデータを、当該要素のいずれが有するかに従って決定されてよい。ＤＣ１９２６またはＦＢ１９３０のいずれかの出力選択は、マルチプレクサ１９３６により行われてよい。
【０１３５】
ＤＣ１９２６は、他の複数のキャッシュにライトバックされるキャッシュラインデータをＳＢ１９３２およびＷＢＢ１９２８に送信してよい。データはキャッシュライン転送のためのデータバスを介して送信されてよい。さらに、ＦＢ１９３０、ＳＢ１９３２およびＷＢＢ１９２８は、そのようなライトバックデータをＬ２キャッシュ１８１０に潜在的に送信してよい。そのようなデータは、キャッシュライン転送のためのデータバスを介して送信されてよい。いずれのライトバックデータが送信されるかの選択は、要求された、必要な、または、正確なバージョンのデータを、当該要素のいずれが有するかに従って決定されてよい。Ｌ２インターフェース１９２２へのライトバックデータの出力選択は、マルチプレクサ１９３４により行われてよい。
【０１３６】
複数のフィルデータメッセージは、Ｌ２インターフェース１９２２を介してキャッシュ階層から複数のＤＣＵ１８０４のそれぞれに送信されてよい。一実施形態において、複数のＤＣＵ１８０４のそれぞれに同じデータが同時に送信されてよい。別の実施形態において、フィルデータメッセージは１つのＤＣＵ１８０４から他のものにルーティングされてよい。そのようなＤＣＵ１８０４間のルーティングではレイテンシまたはディレイが発生しうる。複数のフィルデータメッセージは、ＤＣ１９２６における既存の複数のキャッシュラインを最終的に置換する複数のデータキャッシュラインを含んでよい。そのようなデータは、キャッシュライン転送のためのデータバスを介して送信されてよい。複数のフィルデータメッセージは、ＦＢ１９３０に送信されてよい。次に、ＦＢ１９３０は、適切なとき、同期されたとき、または、場合によっては修正されたときに、キャッシュライン転送のためのデータバスを介して複数のフィルデータメッセージをＤＣ１９２６に送信してよい。
【０１３７】
ＷＢＢ１９２８は、Ｌ２インターフェース１９２２を介してキャッシュ階層に複数のライトバック要求を送信してよい。複数のライトバック要求は、ＤＣ１９２６への要求がミスを引き起こしたときに作成されてよい。その次の複数のフィルデータメッセージは、特定のキャッシュ内でミスしたロードまたはストア命令に応答して作成されてよい。完了されるべきそのような複数のフィルデータメッセージのために、キャッシュ内にはフリーエントリがなければならない。ライトバック要求は、そのような複数のフリーエントリを作成するために行われる。データは、キャッシュミス処理のためのアドレスバスを介して送信されてよい。
【０１３８】
ＦＢ１９３０は、ＤＣ１９２６に複数の置換要求を送信してよい。そのような複数の要求は、ＤＣ１９２６をトリガして、その複数のコンテンツをライトバックデータを介して提供させるか、またはデータを排除させるべく作成されてよい。データは、キャッシュミス処理のためのアドレスバスを介して送信されてよい。さらに、ＦＢ１９３０は、Ｌ２インターフェース１９２２を介して読み取り要求またはオーナーシップの読み取り要求をキャッシュ階層に送信してよい。当該要求は、利用不可能なキャッシュラインの読み取りに応答して、または、キャッシュラインへの書き込みの試みのために作成されてよい。一実施形態において、オーナーシップの要求は、複数の他のＤＣＵ１８０４におけるデータキャッシュの複数のインスタンスを無効化してよい。データは、キャッシュミス処理のためのアドレスバスを介して送信されてよい。
【０１３９】
ＤＣＵ１８０４の複数の要素は、すべてのＤＣＵ１８０４に共通のハードウェアクロックに従って動作してよい。ハードウェアクロックのタイミングは、各ＤＣＵ１８０４にルーティングされてよい。ハードウェアクロックは、各ＤＣＵ１８０４のオペレーションを互いに関して同期するのに用いられてよい。一実施形態において、すべてのＤＣＵ１８０４のＤＣ１９２６の複数のコンテンツは、各クロックサイクルにおいて同一であってよい。別の実施形態において、すべてのＤＣＵ１８０４のＷＢＢ１９２８の複数のコンテンツは、各クロックサイクルにおいて同一であってよい。さらに他の実施形態において、すべてのＤＣＵ１８０４の複数のＳＢ１９３２の複数のコンテンツは、各クロックサイクルにおいて同一であってよい。さらにまた他の実施形態において、様々なＤＣＵ１８０４のＦＢ１９３０の複数のコンテンツは、特定のクロックサイクルにおいて異なってよい。そのような差異は、複数のＤＣＵ１８０４の間の転送のレイテンシに起因してよい。
【０１４０】
ＷＢＢ１９２８、ＤＣ１９２６またはＳＢ１９３２の複数のコンテンツの同期は、任意の適切な態様で実行されてよい。一実施形態において、ＷＢＢ１９２８、ＤＣ１９２６またはＳＢ１９３２の複数のコンテンツの同期は、複数のＤＣＵ１８０４の各要素内の異なる状況に応答する同一ロジックの実装により実行されてよい。特定の状況または入力は、すべてのＤＣＵ１８０４において同一に同期的に処理されてよい。さらなる実施形態において、すべてのＤＣＵ１８０４におけるそのような同一の処理は、各ＤＣ１９２６それぞれにおける複数のデータキャッシュラインの排除の同時処理を含んでよい。複数のＤＣＵ１８０４における複数のキャッシュラインの排除は各ＤＣ１９２６がフルであるときに発生してよく、ＤＣＵ１８０４は新しいキャッシュラインを加えることを必要としてよい。排除は、複数のＥＵ１８０８によるアクセスのための新しく、より有用なキャッシュライン用に場所を空けてよい。他のさらなる実施形態において、各ＤＣＵ１８０４は、どのキャッシュラインが排除されるべきかを決定すべく、同一の排除アルゴリズムを実行してよい。各ＤＣＵ１８０４が各ＤＣ１９２６それぞれにおいて同一コンテンツをすでに維持している場合には、結果は各ＤＣＵ１８０４において同一であってよい。また別のさらなる実施形態において、各ＤＣ１９２６への複数のフィルデータメッセージは、各ＤＣＵ１８０４において同時にかつ同様に処理されてよい。複数のフィルデータメッセージ自体もまた同一であってよい。複数のフィルデータメッセージは、それぞれのＤＣＵ１８０４における類似の作成を通じて、または、各ＤＣＵ１８０４でのＬ２インターフェース１９２２からの同一のフィルデータメッセージの受信により、同一であってよい。
【０１４１】
別の実施形態において、ＷＢＢ１９２８、ＤＣ１９２６またはＳＢ１９３２の複数のコンテンツの同期は、ＤＣＵ１８０４への同時、同一の入力により実行されてよい。そのような入力は、クラスタインターフェース１９２４を介して通信可能に結合されたＬ２インターフェース１９２２または複数のＥＵ１８０８を介してＤＣＵ１８０４に通信可能に結合されたキャッシュ階層など、任意の適切なソースを介して行われてよい。さらなる実施形態において、複数の同一のストア命令がそれぞれのＥＵ１８０８から各ＤＣＵ１８０４にブロードキャストされてよい。様々な実施形態において各クラスタ１８０８は複数のＥＵ１８０８の同一の配置を含みうるので、複数のストア命令は同一であってよい。ストアは、命令またはリソースがリタイアされるときのストアオペレーションを表すシニアストアを含んでよい。さらに、複数のストア命令を受け取ると、各ＤＣＵ１８０４は、複数のストア命令を同様に処理してよい。さらに他の実施形態において、同一の複数のフィルデータメッセージがキャッシュ階層からすべてのＤＣＵ１８０４に提供されてよい。それぞれのＤＣＵ１８０４で受信される、そのような各フィルデータメッセージは、同様に処理されてよい。さらにまた他の実施形態において、同一の複数のスヌープシグナル１９４２が、Ｌ２インターフェース１９２２を介してキャッシュ階層から各ＤＣＵ１８０４それぞれに送信されてよい。上述されたように、各スヌープシグナルは、各ＷＢＢ１９２８、ＦＢ１９３０およびＤＣ１９２６のそれぞれにルーティングされてよい。
【０１４２】
さらに他の実施形態において、ＷＢＢ１９２８、ＤＣ１９２６またはＳＢ１９３２の複数のコンテンツの同期は、それぞれのＤＣＵ１８０４の複数のＦＢ１９３０を通信可能に結合する１または複数のＦＢ同期ライン１９４０により実行されてよい。ＦＢ同期ライン１９４０は、キャッシュミス処理のためのアドレスバスにより実装されてよい。ＦＢ同期ライン１９４０を介した複数のメッセージの送信中に、ディレイが発生してよい。
【０１４３】
リタイアに関連する複数のストアオペレーションは各ＤＣＵ１８０４それぞれに同時にブロードキャストされてよく、各ストアは各ＤＣＵ１８０４それぞれにおいて同様に同時に処理されてよい。複数のＥＵ１８０８の各セットまたはクラスタ１８０６からそれぞれのＤＣＵ１８０４への同時のディスパッチを実装するのに任意の適切なメカニズムが用いられてよい。一実施形態において、グローバルストアディスパッチキュー（ＳＤＱ）が用いられてよい。そのようなＳＤＱは、複数のストアを受信すべく、複数のＥＵ１８０８またはクラスタ１８０６に通信可能に結合されてよく、また、そのような複数のストアをディスパッチすべく、クラスタインターフェース１９２４を介して各ＤＣＵ１８０４に通信可能に結合されてよい。ＳＤＱからディスパッチされる複数のストアは、等しいレイテンシで各ＤＣＵに供給されてよく、その結果、ＤＣＵ状態は同時に更新されてよい。ＳＤＱは、適切な数のストアが発行されたという判断の後に、そのような複数のストアのディスパッチを行ってよい。ディスパッチは従って、複数のＤＣＵ１８０４に複数のストアを送信することを含んでよい。別の実施形態において、複数の個々のＳＤＱが用いられてよい。ＳＤＱは、例えば各クラスタで維持されてよい。複数のクラスタ１８０６のそれぞれは、他のそのような複数のＳＤＱにブロードキャストしてよい。ブロードキャストは、ＳＤＱによるブロードキャスト実行の準備ができているストア数の同一化を含んでよい。複数の個々のＳＤＱは、合計ストア数がディスパッチに好適であるときを調整および決定してよい。そのような決定が行われると、各ＳＤＱは、その複数のストアをすべてのＤＣＵ１８０４に送信してよい。
【０１４４】
上述したように、一実施形態において、すべてのＥＵ１８０８およびクラスタ１８０６からの複数のストアは、各ＤＣ１９２６にルーティングされてよい。ＤＣ１９２６における既存の値に対応する、そのような全てのストアは、ＤＣ１９２６に書き込まれてよい。ＤＣ１９２６内でミスする、そのような全てのストアは、ＦＢ１９３０に書き込まれてよい。すべてのＤＣ１９２６の複数のコンテンツが同一に保持されるので、さらなる実施形態において、同一のそのようなオペレーションは、すべてのＤＣ１９２６において実行されてよい。さらに、ＤＣ１９２６内でミスする全てのストアは、フルキャッシュラインをフェッチするべく、ＦＢ１９３０からＬ２キャッシュ１８１０に発行されるオーナーシップの読み取り要求を作成してよい。フェッチの複数の結果は、ＦＢ１９３０内に位置するストアデータとマージされてよい。一実施形態において、フェッチの複数の結果は、すべてのＦＢ１９３０にブロードキャストされてよい。さらに、ミスが起こるとすべてのＦＢ１９３０に同一のストアが書き込まれるので、フェッチを待機するストアデータはすべてのＦＢ１９３０において同一であってよい。キャッシュラインがフェッチされた後に、すべてのＤＣＵ１８０４におけるＤＣ１９２６にデータを書き込むことにより、ミスした他の複数のストアオペレーションについてのその他のフェッチだけでなく、ストアがグローバルに観察されてよい。異なるＤＣＵ１８０４における各ＦＢ１９３０の複数のコンテンツは、各ＤＣＵ１８０４にキャッシュラインが供給されるまで、異なってよい。この差異は、複数のＤＣＵ１８０４の間のデータの送信および受信のレイテンシに起因してよい。
【０１４５】
複数のＦＢ１９３０の同期は、任意の適切な態様で実行されてよい。上述したように、キャッシュラインは、ＤＣ１９２６においてミスが生じるとフェッチされる必要があってよい。一実施形態において、すべてのＤＣＵ１８０４のなかで単一のＤＣＵ１８０４が、複数のＦＢ１９３０からＬ２キャッシュ１８１０への読み取り要求またはオーナーシップの読み取り要求の発行を担当してよい。担当ＤＣＵ１８０４は、任意の適切な態様で決定されてよい。さらなる実施形態において、ハッシュ、マッピング、インデックス、または、ストアオペレーションの物理アドレスに基づく他のインディケーションにより、特定のＤＣＵ１８０４が決定されてよい。単一のＤＣＵ１８０４のみが要求を発行してよいが、別の実施形態において、フェッチされたキャッシュラインはすべてのＦＢ１９３０にブロードキャストされてよい。さらに他の実施形態において、単一のＤＣＵ１８０４のみが要求を発行してよいが、フェッチされたラインに依存し得る、その次のロードによるヒットを正確に検出して追跡すべく、各ＦＢ１９３０がそのような複数の要求に対してエントリを保持してよい。
【０１４６】
さらに、複数のＦＢ１９３０の同期は、複数のＤＣＵ１８０４の間で複数のＦＢコンテンツを共有するための複数のアドレスバス１９４０の使用により実行されてよい。各ＦＢ１９３０は、複数のクラスタ１８０６により生成された複数の同一のストアを含んでよい。従って、各ＦＢ１９３０は、そのような複数のストアを同時に書き込んでよい。しかしながら、一実施形態において、各ＦＢは、複数の同一のロードオペレーションに対し、同一の時間でアクセスしなくてよい。そのような状況は、例えば、複数のＳＤＱが複数のロード要求をストアしない場合、または、同一のロード情報が単純に複数のクラスタ１８０６からすべてのＤＣＵにブロードキャストされない場合に起こりうる。このような実施形態において、ＦＢ１９３０は、それぞれのクラスタ１８０６からのロード情報を受け取ると、そのロードを自身に書き込むと共に、そのロードを、アドレスバス１９４０を介して複数の他のＦＢ１９３０に転送してよい。各ＦＢ１９３０は、自身のクラスタ１８０６からの複数のロード要求をストアし、複数の他のＦＢ１９３０で受信された複数のロード要求を追跡する。様々なＦＢ１９３０の複数のコンテンツは、複数のアドレスバス１９４０を介したそのような複数のロード要求の送信のレイテンシまたはディレイのために、特定のクロックサイクルで異なってよい。
【０１４７】
複数のＷＢＢ１９２８の同期は任意の適切な態様で実行されてよい。一実施形態において、新たなキャッシュラインがＤＣ１９２６への複数のフィルデータメッセージを書き込まれたときに、すべてのＤＣ１９２６に同じデータが同時に書き込まれてよい。別の実施形態において、ＤＣ１９２６における排除された同一のキャッシュラインは、複数のフィルデータメッセージを用いてすべてのＷＢＢ１９２８に同時に書き込まれてよい。さらに他の実施形態において、ライトバック条件に関し、ＤＣ１９２６の排除キャッシュラインは、（上述のように決定される）担当ＤＣＵ１８０４のＷＢＢ１９２８からＬ２キャッシュ１８１０に書き込まれてよい。書き込みはその次のクロックサイクルで実行されてよい。さらにまた他の実施形態において、Ｌ２キャッシュ１８１０はすべてのＷＢＢ１９２８に複数の確認メッセージを送信してよい。各ＷＢＢ１９２８それぞれは、そのような確認を受け取ると、自身におけるキャッシュラインを無効化してよい。
【０１４８】
Ｌ２キャッシュ１８１２からの複数のスヌープシグナル１９４２の同期は、任意の適切な態様で実行されてよい。様々な実施形態において、複数のスヌープシグナル１９４２は、ＤＣ１９２６、ＦＢ１９３０およびＷＢＢ１９２８にルーティングされてよい。要求されたキャッシュラインがＤＣ１９２６において修正状態で見つかった場合には、そのキャッシュラインはスヌープバッファ１９３２に排除されてよい。閾値に応じて、当該キャッシュラインおよびその他の収集された情報は、マルチプレクサ１９３４により選択されたときにスヌープバッファ１９３２を介してライトバックされる。（上述のように決定される）担当ＤＣＵ１８０４は、そのようなデータをライトバックするスヌープバッファ１９３２を含んでよい。さらに、ＷＢＢ１９２８またはＦＢ１９３０のいずれかにおけるヒットの場合に、ライトバックは、担当ＤＣＵ１８０４のそのような要素により実行される。加えて、キャッシュ不能な、または部分的な書き込みは、ＦＢ１９３０に担当ＤＣＵ１８０４からの、そのようなライトバックの実行を引き起こしてよい。そのような全ての場合における担当要素は、マルチプレクサ１９３４により選択されてよい。
【０１４９】
ＷＢＢ１９２８は、複数のＤＣＵ１８０４のライトバックバッファにおけるそれぞれのＷＢＢ１９２８内で等しい（ｅｑｕｉｖａｌｅｎｔ）エントリを割り当てることによってさらに同期されてよい。一実施形態において、そのような割り当ては、プロセッサのオペレーションの同じクロックサイクルで行われてよい。さらに、ＷＢＢ１９２８の１つのインスタンスは自身におけるエントリを割り当て解除してよく、ＷＢＢ１９２８の別のインスタンスは自身における等しいエントリを割り当ててよい。別の実施形態において、そのような割り当ておよび割り当て解除は同時であってよい。
【０１５０】
図２０Ａおよび図２０Ｂは、本開示における複数の実施形態に係る、クラスタ化された機械内のメモリアクセスのための方法２０００の図である。方法２０００は、任意の適切なポイントで開始してよく、任意の適切な順序で実行してよい。例えば、方法２０００の複数の要素は、特定のクロックサイクルにおいて同時に発生してよい。方法２０００の異なるセクションは、互いに並列に実行されてよい。さらに、方法２０００における複数の分岐または複数の決定は、非同期であってよい。方法２０００のいくつかの要素は、例えば複数のＤＣＵまたはそれらのコンポーネントによるなど、複数のエンティティにより同時に実行されてよい。複数のＤＣＵは、複数のＷＢＢ、複数のＦＢ、複数のＤＣおよび複数のＳＢなどの複数のコンポーネントに従って同期されてよい。特定のクロックサイクルにおいて、それぞれのＤＣＵの各ＷＢＢ、ＤＣおよびＳＢの複数のコンテンツは、同一であってよい。そのような態様で、任意の適切な数のＤＣＵが同期されてよい。各ＤＣＵは、それぞれ同数のＥＵを有する１または２つのクラスタに通信可能に結合されてよい。
【０１５１】
２００３において、複数のスヌープシグナルがキャッシュ階層からすべてのＤＣＵの複数のコンポーネントに送信されてよい。そのようなコンポーネントは、そのようなすべてのＤＣＵの複数のＤＣ、複数のＦＢおよび複数のＷＢＢを含んでよい。複数のスヌープシグナルは、１または複数のそのようなコンポーネントにおいて見い出されうる特定のキャッシュラインの状態についての照会を行ってよい。２００５において、各ＤＣＵは、複数のスヌープシグナルの結果として何らかのスヌープ関連条件が見い出されたか否かを判断してよい。スヌープ関連条件が見い出されない場合には、方法２０００は２０１０に進んでよい。ＤＣ（または複数のＤＣ）内で修正キャッシュラインを含むスヌープ関連条件が見い出された場合には、方法２０００は２００７に進んでよい。ＷＢＢまたはＦＢ内でキャッシュラインの発見を含むスヌープ関連条件が発生した場合には、方法２０００は２０４０に進んでよい。２００７において、複数のＤＣから、それぞれのＤＣＵにおけるすべてのＳＢへキャッシュラインが書き込まれてよい。方法２０００は２０４０に進んでよい。一実施形態において、２００３、２００５および２００７は、方法２０００の他の要素と並列に反復してよい。
【０１５２】
２０１０において、様々なＥＵおよびクラスタにおける複数のメモリオペレーションが監視されてよい。監視はクラスタごとに実行されてよい。そのようなメモリオペレーションは、ストアまたはロードオペレーションの様々な形態を含んでよい。一実施形態において、２０１０および好適なその次の複数の要素は、２００３、２００５および２００７と並列に実行されてよい。
【０１５３】
２０１３において、特定のクラスタによりロードオペレーションまたはストアオペレーションのいずれが生成されたかが判断されてよい。ロードオペレーションが発見された場合には、方法２０００は２０４５に進んでよい。ストアオペレーションが発見された場合には、２０１５において、すべてのクラスタから十分な数のストアが受信されたか否かが判断されてよい。２０１０で判断されたストアオペレーションは、複数のストアオペレーションのキューに追加されてよい。そのようなキューは、例えばグローバルで、かつ、すべてのクラスタからの複数のストアを説明してよく、或いは、キューにとってローカルで、かつ、そのような他の複数のキューと整合してよい。様々なＥＵにより生成された複数のストアの必須の数に達した場合には、方法２０００は２０１７に進んでよい。ストアの必須の数に達しない場合には、方法２０００は２０３７に進んでよい。
【０１５４】
２０１７において、集められたストアオペレーションのそれぞれはすべてのＤＣＵに発行されてよい。２０２０において、各ＤＣＵは、与えられたストアオペレーションのターゲットが複数のＤＣ内に存在するか否かを判断してよい。ストアオペレーションのターゲットが複数のＤＣ内に存在しない場合には、ミスが発生する。ミスが発生すると、方法２０２０は２０２５に進んでよい。ミスが発生せず、ストアオペレーションのターゲットが複数のＤＣ内で利用可能である場合には、方法２０２０は２０２３に進んでよい。２０２０およびその次の複数の要素は、発行されるストアオペレーションごとに繰り返されてよい。
【０１５５】
２０２３において、ストアオペレーションが複数のＤＣのすべてに書き込まれてよい。方法２０００は２０３７に進んでよい。
【０１５６】
２０２５において、ストアオペレーションのミス処理が開始されてよい。ストアオペレーションはすべてのＦＢに書き込まれてよい。２０２７において、キャッシュ階層の一部、例えばＬ２から取得されるべき、ストアオペレーションのための読み取り要求がすべてのＦＢで生成されてよい。２０３０において、単一の担当ＤＣＵのＦＢがキャッシュ階層の読み取り要求を発行してよい。担当ＤＣＵは、オペレーションの物理アドレスに基づく割り当てなど、任意の適切な態様で決定されてよい。
【０１５７】
２０３３において、キャッシュ階層からすべてのＤＣＵにフィルデータが送信されてよい。フィルデータはそれぞれのＦＢで受信されてよい。一実施形態において、キャッシュ階層はフィルデータを要求ＤＣＵにルーティングしてよく、これは複数の他のＤＣＵのそれぞれとフィルデータを共有してよい。別の実施形態において、キャッシュ階層はすべてのＤＣＵに対して並列にフィルデータをルーティングしてよい。
【０１５８】
２０３５において、すべてのＤＣにおける古いデータは、そのような複数のＤＣが新いフィルデータのために十分なフリー領域を有してない場合に、排除されてよい。また、そのように排除されるデータは、複数のＤＣからすべてのＷＢＢに書き込まれてよい。新しいフィルデータは、すべてのＤＣに書き込まれてよい。
【０１５９】
２０３７において、何らかのライトバック条件が発生したか否かが判断されてよい。そのような条件は、例えば、すでに排除されたがまだキャッシュ階層と共有されていないデータへのニーズ、キャッシュ不能なメモリ要求、部分的な書き込み、ダイレクトメモリアクセス、または、キャッシュ階層からのバックワード照会を含んでよい。様々な実施形態において、そのようなチェックは、２００５でのスヌープシグナル処理と関連して実行されてよい。ライトバック条件が発生した場合には、方法２０００は２０４０に進んでよい。ライトバック条件が発生していない場合には、方法２０００は２００３に進んで方法２０００の実行を反復してよい。様々な実施形態において、２０３７、２０４０、２０４３は方法２０００の複数の他の要素と並列に実行されてよい。
【０１６０】
２０４０において、ライトバック条件に対し、担当ＤＣＵのＷＢＢ、ＳＢ、ＦＢは、キャッシュ階層へのデータのライトバックを実行してよい。２０４３において、ライトバックの確認が受信されてよい。必要に応じて、すべてのＷＢＢが無効化されてよい。方法２０００は２０３３に進んでライトバック要求に応じてフィルデータを受信してよい。
【０１６１】
２０１３において個々のクラスタに対するロードオペレーションが判断されていてよく、２０４５において関連する個々のＤＣＵにロードが発行されてよい。２０４７において、それぞれのＤＣＵのＤＣにおいてロードオペレーションのターゲットについてヒットまたはミスがあるか否かが判断されてよい。ミスがある場合には、方法２０００は２０５３に進んでよい。ミスがない場合には、方法２０００は２０５０に進んでよい。
【０１６２】
２０５０において、ＤＣ上でロードオペレーションが実行されてよく、ロードオペレーションの要求を行ったクラスタへ結果のデータが戻されてよい。方法２０００は２０３７に進んでよい。
【０１６３】
２０５３において、ロードオペレーションのミス処理が開始されてよい。ロードオペレーションは、ロードオペレーションを受信した個々の各ＤＣＵのＦＢに書き込まれてよい。２０５５において、ロードオペレーションは複数の他のＤＣＵにおけるすべての他のＦＢに通信されてよい。そのような通信は、特別な複数のアドレスラインにより行われてよい。そのような通信にはディレイまたはレイテンシがあってよい。ディレイは、すべてのＦＢがロードオペレーションを受信するまで、異なるＦＢに異なるコンテンツを持たせ得る。２０５５において、すべてのＦＢがロードオペレーションを書き込むまでに、複数のロードオペレーションは、それが受信されるに従ってそれぞれの各ＦＢに書き込まれてよい。方法２０００は２０３０に進んでよい。
【０１６４】
方法２０００は任意の適切な基準により開始されてよい。さらに、方法２０００は複数の特定の要素のオペレーションを説明するが、方法２０００は複数の要素の任意の適切な組み合わせまたはタイプにより実行されてよい。例えば、方法２０００は図１Ａ−２０Ｂに図示された複数の要素、または、方法２０００を実施するべく動作可能な任意の他のシステムにより実施されてよい。従って、方法２０００の好ましい初期化ポイント、および、方法２０００を構成する複数の要素の順序は、選択される実施に依存してよい。いくつかの実施形態において、いくつかの要素は任意選択に省略、再構成、繰り返し、または組み合わせされてよい。
【０１６５】
本明細書に開示される複数のメカニズムの複数の実施形態は、ハードウェア、ソフトウェア、ファームウェアまたはそのような複数の実装アプローチの組み合わせで実装されてよい。本開示の実施形態は、少なくとも１つのプロセッサ、記憶システム（揮発性メモリ及び不揮発性メモリおよび／または記憶要素を含む）、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスを備えるプログラマブルシステム上で実行されるコンピュータプログラム又はプログラムコードとして実施されてよい。
【０１６６】
プログラムコードは、本明細書に説明されている複数の機能を実行し、出力情報を生成する複数の入力命令に適用され得る。この出力情報は、１または複数の出力デバイスに既知の方法で適用されてよい。この用途のために、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、又はマイクロプロセッサ等のプロセッサを有する任意のシステムを含んでよい。
【０１６７】
プログラムコードは、処理システムと通信を行うために、高水準の手順型またはオブジェクト指向プログラミング言語で実装されてもよい。プログラムコードはまた、必要に応じて、アセンブリまたは機械言語で実装されてよい。実際、本明細書に記載の複数のメカニズムは、いかなる特定のプログラミング言語にも範囲限定されない。いずれの場合であっても、言語はコンパイラ型またはインタープリタ型言語であってもよい。
【０１６８】
少なくとも一実施形態の１または複数の態様は、機械に読み取られた場合に、当該機械に本明細書において説明される技術を実行するためのロジックを組み立てさせる、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な複数の命令により実装され得る。「ＩＰコア」として知られているそのような表現は、有形の機械可読媒体上にストアされてよく、様々な顧客又は製造設備に供給されて、ロジック又はプロセッサを実際に作製する製造機械にロードすることができる。
【０１６９】
そのような機械可読記憶媒体は、機械又はデバイスによって製造又は形成された物品の非一時的な有形の構成を含みうるが、これに限定されるものではない。これらの物品は、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、再書込み可能コンパクトディスク（ＣＤ−ＲＷ）、及び光磁気ディスクを含む他の任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、磁気カード若しくは光カード、又は電子命令をストアするのに好適な他の任意のタイプの媒体等の半導体デバイス等の記憶媒体を含む。
【０１７０】
従って、本開示の実施形態は、命令を含む非一時的な有形の機械可読媒体、又は本明細書において説明した構造、回路、装置、プロセッサおよび／またはシステムの特徴を定義するハードウェア記述言語（ＨＤＬ）等の設計データを含む非一時的な有形の機械可読媒体も含んでよい。そのような複数の実施形態は複数のプログラム製品と呼ばれてもよい。
【０１７１】
場合によっては、命令コンバータは、ソース命令セットからターゲット命令セットに命令を変換するために、用いられてもよい。例えば、命令コンバータは、命令を、コアにより処理されることになる他の１または複数の命令にトランスレート（例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて）、モーフィング、エミュレート、または変換し得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせにおいて実装され得る。命令変換器は、オンプロセッサ、オフプロセッサ、又は、一部がオンプロセッサかつ一部がオフプロセッサであってよい。
【０１７２】
従って、少なくとも一実施形態に係る１または複数の命令を実行するための複数の技術が開示されている。或る例示の実施形態が、説明され、添付図面に示されているが、そのような実施形態は、他の実施形態の単なる例示にすぎず、他の実施形態を制限するものではないこと、及び、そのような実施形態は、図示及び説明された特定の構造及び構成に限定されるものではないことが理解されるべきである。なぜならば、この開示を検討すると、他の様々な変更が当業者には思い浮かべることができるからである。このような技術の分野では、成長が速く、さらなる進歩が容易に予見されない場合、開示された実施形態は、本開示の原理又は添付の特許請求の範囲の範囲から逸脱することなく技術的進歩を可能にすることによって容易にされるように、構成及び細部が容易に変更可能な場合がある。
【図１Ａ】
0006351722.tif 000002
【図１Ｂ】
0006351722.tif 000003
【図１Ｃ】
0006351722.tif 000004
【図２】
0006351722.tif 000005
【図３Ａ】
0006351722.tif 000006
【図３Ｂ】
0006351722.tif 000007
【図３Ｃ】
0006351722.tif 000008
【図３Ｄ】
0006351722.tif 000009
【図３Ｅ】
0006351722.tif 000010
【図３Ｆ】
0006351722.tif 000011
【図４Ａ】
0006351722.tif 000012
【図４Ｂ】
0006351722.tif 000013
【図５Ａ】
0006351722.tif 000014
【図５Ｂ】
0006351722.tif 000015
【図６】
0006351722.tif 000016
【図７】
0006351722.tif 000017
【図８】
0006351722.tif 000018
【図９】
0006351722.tif 000019
【図１０】
0006351722.tif 000020
【図１１】
0006351722.tif 000021
【図１２】
0006351722.tif 000022
【図１３】
0006351722.tif 000023
【図１４】
0006351722.tif 000024
【図１５】
0006351722.tif 000025
【図１６】
0006351722.tif 000026
【図１７】
0006351722.tif 000027
【図１８】
0006351722.tif 000028
【図１９Ａ】
0006351722.tif 000029
【図１９Ｂ】
0006351722.tif 000030
【図２０Ａ】
0006351722.tif 000031
【図２０Ｂ】
0006351722.tif 000032