(57)【要約】      （修正有）【課題】マルチ実行ユニット・プロセッサにおけるフィルタリング処理のような長レイテンシ処理の性能を改善する。【解決手段】処理ユニットは、複数の実行ユニットと、命令バッファ・ロジックの下流に配設され、命令ストリーム内に所在するシーケンサ命令に応答するシーケンサ・ロジックと、を含む。シーケンサ・ロジックは、長レイテンシ処理に関連する複数の命令を１つの実行ユニットに対して発行するとともに、命令バッファ・ロジックからの命令が当該実行ユニットに対して発行されるのをブロックする。また、実行ユニットに対する命令の発行をこのようにブロックしても他の実行ユニットに対する命令の発行には影響が及ばず、したがって、シーケンサ・ロジックが長レイテンシ処理に関連する複数の命令を発行している間もなお、命令バッファ・ロジックからの他の命令を他の実行ユニットに発行し、それらの実行ユニットによって実行することが可能である。【選択図】図１
2010097593.tif 000002
【特許請求の範囲】
【請求項１】
回路配置構成であって、
第１及び第２の実行ユニットと、
前記第１及び第２の実行ユニットに命令を供給するように構成された命令バッファ・ロジックと、
前記命令バッファ・ロジックならびに前記第１及び第２の実行ユニットと結合され、複数のスレッドからの命令を前記第１及び第２の実行ユニットに出力するようにそれぞれ構成された第１及び第２の発行選択ロジックを含むマルチスレッド型発行ユニットと、
前記第１の発行選択ロジックと結合された第１及び第２のマルチプレクサであって、それぞれ前記複数のスレッドのうちの第１及び第２のスレッドと関連付けられ、前記第１の発行選択ロジックならびに第１及び第２の入力と通信する出力を含み、それぞれの前記第１の入力は、前記命令バッファ・ロジックからの命令を受け取るために前記命令バッファ・ロジックと結合される、第１及び第２のマルチプレクサと、
前記第１及び第２のマルチプレクサの前記第２の入力と結合されたシーケンサであって、前記第１のスレッドに関連するフィルタリング命令に応答して、前記第１のマルチプレクサが前記第２の入力を選択するように制御して、前記命令バッファ・ロジックから受け取られた前記第１のスレッドに関連する命令が前記第１の実行ユニットによって実行されるのをブロックし、前記第１のマルチプレクサの前記第２の入力が選択されている間に、フィルタリング処理に関連する複数の命令が前記第１の実行ユニットによって実行されるように、前記フィルタリング処理に関連する前記複数の命令を前記第１のマルチプレクサの前記第２の入力に順次出力するように構成されたシーケンサと、
を備え、
前記第１の発行選択ロジックは、前記第１の実行ユニットによる前記第１のスレッドに関連する命令の実行がブロックされている間に、前記第２のマルチプレクサの前記第１の入力を介して前記発行選択ロジックから提供された前記第２のスレッドに関連する命令を前記第１の実行ユニットによる実行のために出力するように構成され、前記第２の発行選択ロジックは、前記第１の実行ユニットによる前記第１のスレッドに関連する命令の実行がブロックされている間に、前記命令バッファ・ロジックから前記第２の発行選択ロジックに供給された命令を前記第２の実行ユニットによる実行のために出力するように構成される、
回路配置構成。
【請求項２】
回路配置構成であって、
第１及び第２の実行ユニットと、
少なくとも１つの命令ストリームに由来する命令を前記第１及び第２の実行ユニットに供給するように構成された命令バッファ・ロジックと、
前記命令バッファ・ロジックと前記第１の実行ユニットとの中間に結合されたシーケンサ・ロジックであって、前記命令ストリームに由来するシーケンサ命令に応答して、長レイテンシ処理に関連する複数の命令を前記第１の実行ユニットに対して順次発行するとともに、前記複数の命令が前記第１の実行ユニットによって実行されるように、前記命令バッファ・ロジックからの命令をブロックするように構成されたシーケンサ・ロジックと、
を備え、
前記第２の実行ユニットは、前記シーケンサ・ロジックが前記命令バッファ・ロジックからの命令をブロックしている間に、前記命令バッファ・ロジックから前記第２の実行ユニットに供給された命令を実行するように構成される、
回路配置構成。
【請求項３】
前記シーケンサ命令は、フィルタリング処理を実行するように構成され、前記複数の命令は、前記フィルタリング処理における複数の計算を実施するように構成される、請求項２に記載の回路配置構成。
【請求項４】
前記フィルタリング処理は、異方性テクスチャ・フィルタリング処理、バイリニア・テクスチャ・フィルタリング処理、及びトライリニア・テクスチャ・フィルタリング処理から成る群から選択される、請求項３に記載の回路配置構成。
【請求項５】
前記第１の実行ユニットと結合されたレジスタ・ファイルであって、前記命令バッファ・ロジックから事前に供給された少なくとも１つの他の命令に応答して、前記シーケンサ命令に関する入力データがロードされるように構成されたレジスタ・ファイルを更に備え、前記複数の命令のうちの少なくとも１つは、前記シーケンサ命令に関する出力データを前記シーケンサ命令で指定された前記レジスタ・ファイル内のレジスタに記憶するように構成される、請求項２に記載の回路配置構成。
【請求項６】
前記命令バッファ・ロジックは、マルチスレッド化され、複数のスレッドからの命令を出力するように構成され、前記シーケンサ・ロジックは、前記シーケンサ・ロジックが前記複数の命令を順次発行している間に少なくとも１つの他のスレッドからの命令がブロックされないように、前記命令バッファ・ロジックからの命令のうち、前記シーケンサ命令と同一のスレッドに関連する命令だけをブロックするように構成される、請求項２に記載の回路配置構成。
【請求項７】
前記第１の実行ユニットは、前記シーケンサ・ロジックが前記シーケンサ命令と同一のスレッドに関連する命令をブロックしている間に、前記少なくとも１つの他のスレッドからの少なくとも１つの命令を実行するように構成される、請求項６に記載の回路配置構成。
【請求項８】
前記シーケンサ・ロジックと別個のマイクロコード・ロジックであって、第２の複数の命令を前記命令バッファ・ロジックに出力するように構成されたマイクロコード・ロジックを更に備える、請求項２に記載の回路配置構成。
【請求項９】
前記シーケンサ・ロジックは、出力と、第１の入力と、第２の入力とを有するマルチプレクサを含み、前記マルチプレクサの前記出力は、前記第１及び第２の入力で受け取られた命令を前記第１の実行ユニットに渡すように構成され、前記マルチプレクサの前記第１の入力は、前記命令バッファ・ロジックからの命令を受け取るために前記命令バッファ・ロジックと結合され、前記マルチプレクサの前記第２の入力は、前記長レイテンシ処理に関連する前記複数の命令を受け取るように構成される、請求項２に記載の回路配置構成。
【請求項１０】
前記マルチプレクサの前記出力と結合され、それ自体が受け取った命令をデコードするように構成されたデコード・ロジックと、
前記デコード・ロジックと結合され、命令間の依存関係を解決するように構成された依存関係ロジックと、
前記依存関係ロジックと結合され、前記第１の実行ユニットに対して命令を発行するように構成された発行選択ロジックと、
を更に備える、請求項９に記載の回路配置構成。
【請求項１１】
前記命令バッファ・ロジックは、複数のスレッドからの命令を出力するように構成され、前記デコード・ロジック、依存関係ロジック、及びマルチプレクサは、それぞれ前記複数のスレッドのうちの第１のスレッドと関連付けられる第１のデコード・ロジック、第１の依存関係ロジック、及び第１のマルチプレクサであり、
前記複数のスレッドのうちの第２のスレッドと関連付けられ、出力と、第１の入力と、第２の入力とを有する第２のマルチプレクサであって、前記第２のマルチプレクサの前記出力は、前記第１及び第２の入力で受け取られた命令を前記第１の実行ユニットに渡すように構成され、前記第２のマルチプレクサの前記第１の入力は、前記第２のスレッドからの命令を前記命令バッファ・ロジックから受け取るために前記命令バッファ・ロジックと結合され、前記第２のマルチプレクサの前記第２の入力は、第２のシーケンサ命令に応答して前記シーケンサ・ロジックによって生成された命令を受け取るように構成される、第２のマルチプレクサと、
前記第２のマルチプレクサの前記出力と結合され、それ自体が受け取った命令をデコードするように構成された第２のデコード・ロジックと、
前記第２のデコード・ロジックと結合され、命令間の依存関係を解決するように構成された第２の依存関係ロジックと、
を更に備える、請求項１０に記載の回路配置構成。
【請求項１２】
前記発行選択ロジックは更に、前記第２の依存関係ロジックと結合され、前記シーケンサ・ロジックは、最初のシーケンサ命令の実行中に、前記第１のマルチプレクサを制御してそれ自体の前記第２の入力を選択させることにより、前記第１のスレッドからの命令をブロックし、前記第２のマルチプレクサを制御してそれ自体の前記第１の入力を選択させることにより、前記第２のスレッドからの命令が前記第１の実行ユニットによって実行されることを可能にするように構成される、請求項１１に記載の回路配置構成。
【請求項１３】
請求項２乃至請求項１２のいずれか１項に記載の回路配置構成を含む集積回路デバイス。
【請求項１４】
コンピュータ可読媒体上に所在し、請求項２乃至請求項１２のいずれか１項に記載の回路配置構成を定義するロジック定義プログラム・コードと、を備えるプログラム。
【請求項１５】
第１及び第２の実行ユニットと、少なくとも１つの命令ストリームに由来する命令を前記第１及び第２の実行ユニットに供給するように構成された命令バッファ・ロジックとを含むタイプの処理ユニットにおける命令実行方法であって、前記命令ストリームに由来するシーケンサ命令が受け取られたことに応答して、
前記命令バッファ・ロジックと前記第１の実行ユニットとの中間に結合されたシーケンサ・ロジックを使用して、長レイテンシ処理に関連する複数の命令を前記第１の実行ユニットに対して順次発行するステップと、
前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間に、前記命令バッファ・ロジックからの命令が前記第１の実行ユニットに対して発行されるのをブロックするステップと、
前記第１の実行ユニットに対して命令が発行されるのをブロックしている間に、前記命令バッファ・ロジックからの少なくとも１つの命令を前記第２の実行ユニットによる実行のために発行するステップと、
を含む方法。
【請求項１６】
前記命令バッファ・ロジックから事前に供給された少なくとも１つの他の命令に応答して、前記シーケンサ命令に関する入力データを前記第１の実行ユニットと結合されたレジスタ・ファイルにロードするステップと、
前記複数の命令のうちの少なくとも１つが前記第１の実行ユニットによって実行されたことに応答して、前記シーケンサ命令に関する出力データを前記シーケンサ命令で指定された前記レジスタ・ファイル内のレジスタに記憶するステップと、
を更に含む、請求項１５に記載の方法。
【請求項１７】
前記命令バッファ・ロジックは、マルチスレッド化され、複数のスレッドからの命令を出力するように構成され、前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間に、前記命令バッファ・ロジックからの命令が前記第１の実行ユニットに対して発行されるのをブロックする前記ステップは、前記シーケンサ・ロジックが前記複数の命令を順次発行している間に少なくとも１つの他のスレッドからの命令がブロックされないように、前記シーケンサ命令と同一のスレッドに関連する命令だけをブロックするステップを含む、請求項１５に記載の方法。
【請求項１８】
前記シーケンサ・ロジックが前記シーケンサ命令と同一のスレッドに関連する命令をブロックしている間に、前記少なくとも１つの他のスレッドからの少なくとも１つの命令を前記第１の実行ユニットにおいて実行するステップを更に含む、請求項１７に記載の方法。
【請求項１９】
前記シーケンサ・ロジックと別個のマイクロコード・ロジックを使用して第２の複数の命令を前記命令バッファ・ロジックに出力するステップを更に含む、請求項１５に記載の方法。
【請求項２０】
前記シーケンサ・ロジックは、出力と、第１の入力と、第２の入力とを有するマルチプレクサを含み、前記マルチプレクサの前記出力は、前記第１及び第２の入力で受け取られた命令を前記第１の実行ユニットに渡すように構成され、前記マルチプレクサの前記第１の入力は、前記命令バッファ・ロジックからの命令を受け取るために前記命令バッファ・ロジックと結合され、前記マルチプレクサの前記第２の入力は、前記長レイテンシ処理に関連する前記複数の命令を受け取るように構成される、請求項１５に記載の方法。
【請求項２１】
前記マルチプレクサの前記出力と結合されたデコード・ロジックを使用して前記デコード・ロジックによって受け取られた命令をデコードするステップと、
前記デコード・ロジックと結合された依存関係ロジックを使用して命令間の依存関係を解決するステップと、
前記依存関係ロジックと結合された発行選択ロジックを使用して前記第１の実行ユニットに対して命令を発行するステップと、
を更に含む、請求項２０に記載の方法。
【請求項２２】
前記命令バッファ・ロジックは、複数のスレッドからの命令を出力するように構成され、前記デコード・ロジック、依存関係ロジック、及びマルチプレクサは、それぞれ前記複数のスレッドのうちの第１のスレッドと関連付けられる第１のデコード・ロジック、第１の依存関係ロジック、及び第１のマルチプレクサであり、前記シーケンサ・ロジックは、前記複数のスレッドのうちの第２のスレッドと関連付けられ、出力と、第１の入力と、第２の入力とを有する第２のマルチプレクサを含み、前記第２のマルチプレクサの前記出力は、前記第１及び第２の入力で受け取られた命令を前記第１の実行ユニットに渡すように構成され、前記第２のマルチプレクサの前記第１の入力は、前記第２のスレッドからの命令を前記命令バッファ・ロジックから受け取るために前記命令バッファ・ロジックと結合され、前記第２のマルチプレクサの前記第２の入力は、第２のシーケンサ命令に応答して前記シーケンサ・ロジックによって生成された命令を受け取るように構成され、
前記第２のマルチプレクサの前記出力と結合された第２のデコード・ロジックを使用して前記第２のデコード・ロジックによって受け取られた命令をデコードするステップと、
前記第２のデコード・ロジックと結合された第２の依存関係ロジックを使用して命令間の依存関係を解決するステップと、
を更に含む、請求項２１に記載の方法。
【請求項２３】
前記発行選択ロジックは更に、前記第２の依存関係ロジックと結合され、前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間に、前記命令バッファ・ロジックからの命令が前記第１の実行ユニットに対して発行されるのをブロックする前記ステップは、前記第１のマルチプレクサを制御してそれ自体の前記第２の入力を選択させるステップを含み、前記方法は、前記第２のマルチプレクサを制御してそれ自体の前記第１の入力を選択させることにより、前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間に、前記第２のスレッドからの命令が前記第１の実行ユニットによって実行されることを可能にするステップを更に含む、請求項２２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にデータ処理に関するものであり、特に、プロセッサ・アーキテクチャ及び当該プロセッサ・アーキテクチャに組み込まれる実行ユニットに関するものである。
【背景技術】
【０００２】
半導体技術のクロック速度の向上が事実上の限界点に近付くにつれ、設計者達は、性能改善を実現するためにプロセッサ・アーキテクチャの並列処理に焦点を当てるようになっている。チップ・レベルではしばしば複数のプロセッサ・コアが同一のチップ上に配設されるが、それらは別個のプロセッサ・チップとほぼ同じ機能を実現し、あるいはある程度まで完全に別個のコンピュータが存在する場合と同じ機能を実現する。また、コア内部においても、一定のタイプの処理を実行するように特殊化された複数の実行ユニットを利用した並列処理が採用されている。多くの例では、実行に複数のクロック・サイクルを要する可能性がある一定の処理が複数の段階に分割され、その結果先行する処理が完了する前に他の処理を開始することが可能となるパイプライン処理も採用されている。また、複数の命令ストリームを並列処理することが可能となり、その結果所与の任意のクロック・サイクル中に実行される全体の作業量を増加させることが可能となる、マルチスレッド処理も採用されている。
【０００３】
並列処理が継続利用される領域の１つは、実行ユニットの領域、例えば固定小数点実行ユニットや浮動小数点実行ユニット等の領域である。例えば、多くの浮動小数点実行ユニットは、かなりの程度パイプライン化されている。しかしながら、パイプライン処理によって性能が改善される可能性はあるが、パイプライン処理は、パイプラインによって処理される命令が互いに依存しない場合、例えば後続の命令が先行する命令の結果を使用しない場合に最も効率的となる。ある命令が別の命令の結果に影響を及ぼす場合、後続の命令は、典型的には先行する命令がパイプラインを抜けそれ自体の結果を計算するまでそのパイプラインに入ることはできない。この場合、後続の命令は先行する命令に依存すると考えられ、また、後続の命令が先行する命令の結果が出るまで停止（ｓｔａｌｌ）する現象により、「バブル（ｂｕｂｂｌｅ）」、即ち生産的な処理が何ら実行されないサイクルがパイプラインに導入されることが考えられる。
【０００４】
パイプライン化された実行ユニットの使用率を向上させ、使用されないバブルを解消するのに使用可能な１つの技法は、マルチスレッド処理を導入することである。このようにすれば、他のスレッドがパイプライン内の不使用スロット内に命令を発行することが可能となり、それによって使用率が高まり、したがって総スループットも高まることになる。性能を高める別の一般的な技法は、データの「ベクトル化（ｖｅｃｔｏｒｉｚｉｎｇ）」とも呼ばれる単一命令複数データ（ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ：ＳＩＭＤ）アーキテクチャを使用することである。このようにすると、処理は、複数のデータ要素に対して同時に実行され、また、同一のＳＩＭＤ命令に応答して実行される。ＳＩＭＤ又はベクトル実行ユニットは、典型的にはベクトル内の様々なデータ・ポイントを処理し、すべてのデータ・ポイントに対して同様の処理を同時に実行する複数の処理レーン（ｐｒｏｃｅｓｓｉｎｇ  ｌａｎｅ）を含む。例えば、クワッド（４）ワード・ベクトルを利用するアーキテクチャでは、ＳＩＭＤ又はベクトル実行ユニットは、各ベクトル内の４つのワードに対して同一の処理を実行する４つの処理レーンを含むことができる。
【０００５】
上述の技法を互いに組み合わせることにより、複数のスレッドがＳＩＭＤ実行ユニットにＳＩＭＤ命令を発行して各データ・ポイントの「ベクトル（ｖｅｃｔｏｒ）」を同時に処理することを可能にする、マルチスレッド型ベクトル実行ユニット・アーキテクチャを提供することもできる。
【０００６】
また、複数の実行ユニットを同一のプロセッサ内で利用することによって並列処理性を高めることもできる。複数の実行ユニットは、異なるタイプの命令を処理するように特殊化することも、同一のタイプの命令を処理するように構成することも同様に可能である。
【０００７】
典型的には、スケジューリング・アルゴリズムを発行ロジック（ｉｓｓｕｅ  ｌｏｇｉｃ）と共に利用することにより、実行ユニット・パイプライン（単数又は複数）内のバブル数を最小限に抑えながら、マルチスレッド・アーキテクチャにおける各スレッドが妥当な速度で進行できることが保証される。また、複数の実行ユニットが使用される場合、そのような実行ユニットに対する命令の発行は、同一の発行ユニットによって処理することも別個の発行ユニットによって処理することもできる。
【０００８】
プロセッサの性能を改善するのに使用され得る別の技法は、マイクロコード・ユニット又はシーケンサを利用して、実行ユニットによって実行される命令を自動的に生成することである。マイクロコード・ユニット又はシーケンサは、例えば命令セット内の専用命令を介してコマンドに応答し、プロセッサによって実行される命令シーケンスを応答時に出力する。ソフトウェア手順を使用して反復可能な一続きのステップをソフトウェア・プログラム内のプロシージャ・コールに応答して実行する場合とほぼ同様に、マイクロコード・ユニット又はシーケンサは、反復可能処理の実行コマンド又は命令によってトリガすることができる。
【０００９】
マイクロコード・ユニット又はシーケンサは、長レイテンシ処理（ｌｏｎｇ  ｌａｔｅｎｃｙ  ｏｐｅｒａｔｉｏｎ）、即ち実行時間が比較的長い処理の実行に特に有益であり、パイプライン化された実行ユニットの場合は、しばしば実行パイプライン内で複数のパス（ｐａｓｓ）が必要となる。マイクロコード・ユニット又はシーケンサの使用に利点が見出され得る長レイテンシ処理の一例は、画像処理、例えばグラフィック画像のラスタ化中に実行されるテクスチャ処理である。ラスタ化は、画面上に投影された３次元ジオメトリが適切なカラー及び輝度のピクセルで「埋められる（ｆｉｌｌｅｄ  ｉｎ）」３Ｄグラフィックスのプロセスである。典型的には、シーン内に配置された幾何オブジェクト上にテクスチャをペイントするために、ラスタ化プロセスにテクスチャ・マッピング・アルゴリズムが組み込まれる。
【００１０】
シーン内の配置オブジェクトにテクスチャをペイントするために、当該オブジェクトを構成する各プリミティブ内のピクセルは、典型的には３Ｄシーン又はワールド座標（例えばｘ，ｙ，ｚ）から、プロシージャル・テクスチャ又はビットマップ・テクスチャ（例えばｕ，ｖ）に対する２Ｄ座標に変換される。テクスチャ内の基本要素はテクセル（ｔｅｘｅｌ）（又はテクスチャ・ピクセル）と呼ばれる。各テクセルはテクスチャの基本要素であり、単一のカラーと関連付けられる。配置される幾何プリミティブ表面の観察者（ｖｉｅｗｅｒ）に対する向き及び距離は様々である故に、画像バッファ内のピクセルがテクスチャ内の単一のテクセルに対応することは稀である。その結果、典型的にはテクスチャ・フィルタリングを実行して、ピクセル内のテクスチャ・マッピング位置に近接した複数のテクセルのカラーに基づいてピクセルに割り当てるべきカラーを判定する。
【００１１】
ピクセルのカラーは、他のアルゴリズムの中でもとりわけ、単純補間（ｉｎｔｅｒｐｏｌａｔｉｏｎ）、バイリニア・フィルタリング、トライリニア・フィルタリング、及び異方性フィルタリングを含めたいくつかのテクスチャ・フィルタリング・アルゴリズムを使用して判定され得る。様々なテクスチャ・フィルタリング・アルゴリズムを用いていくつかの隣接テクセル（ｔｅｘｅｌ）の重みが計算され、これらの重みを使用して隣接テクセルのカラーがスケーリングされ、スケーリングされた隣接テクセルのカラーを合計することによってピクセルのカラーが割り当てられる。その後、ピクセルのカラーはフレーム・バッファ内のピクセル位置に記憶され、又はピクセル位置に既に記憶されているカラーを更新するのに使用される。
【００１２】
例えば、バイリニア・フィルタリングでは、テクスチャ・サンプルの座標を使用して、当該サンプルの座標位置がピクセルの中心にどれだけ近いかによって重み付けされる４つの隣接ピクセルの加重平均がとられる。バイリニア・フィルタリングでは多くの場合、手前側の細部のブロック歪み（ｂｌｏｃｋｉｎｅｓｓ）は低減され得るが、しばしば奥側の細部で発見されるノイズについては殆ど低減されない。
【００１３】
トライリニア・フィルタリングでは、より低い解像度に連続的にスケーリングされる１組のプレフィルタリング・テクスチャ画像を使用するＭＩＰマッピングが使用される。このアルゴリズムでは、カメラに近いジオメトリ部分ではテクスチャ解像度が高くなり、カメラから遠いジオメトリ部分ではテクスチャ解像度が低くなるテクスチャ・サンプルが使用される。ＭＩＰマッピングでは多くの場合、近位置のピクセル化及び遠位置のノイズが低減されるが、しばしば遠位置の細部が失われ、不必要なぼやけが発生することが多い。このようなぼやけ（ｂｌｕｒｒｎｅｓｓ）は、テクスチャ圧縮率が最大となる方向に対して垂直方向に解像度が低下するようにｘ次元とｙ次元の両方において低い解像度に事前にスケーリングされたテクスチャのＭＩＰレベルから、テクスチャ・サンプルが取得されることに起因する。
【００１４】
異方性フィルタリングでは、テクスチャ圧縮率が最大となる方向に延びる「異方性ライン（ｌｉｎｅ  ｏｆ  ａｎｉｓｏｔｒｏｐｙ）」に沿って複数のサンプルが取得される。これらのサンプルをそれぞれバイリニア・フィルタリング又はトライリニア・フィルタリングにかけた後、その結果の平均をとることができる。このアルゴリズムを用いると、圧縮を一方向にのみ行うことが可能となる。そうすることにより、遠位置の構造体ほどぼやけの発生が少なくなる。
【００１５】
上述のフィルタリング計算はしばしば長レイテンシ処理となるが、従来のマイクロコード・ユニット又はシーケンサには、プロセッサ内、特に複数の実行ユニットを利用するマルチスレッド型プロセッサ内のフィルタリング計算の実行に関連して使用される各種コンポーネントが部分最適となるいくつかの欠陥が存在することが分かっている。特に、従来のマイクロコード・ユニット又はシーケンサは、典型的にはプロセッサの命令バッファ・ロジックの上流に所在し、したがって当該命令バッファ・ロジックの入力と結合されている。
【００１６】
多くの設計では、１つ又は複数の命令バッファを含む可能性がある同一の命令バッファ・ロジックが、プロセッサ内のすべての実行ユニットによって実行される命令をバッファリングする。命令フェッチ・ロジックは、典型的にはプロセッサ上で現在実行されているプログラムに関する命令をメモリから（例えば命令キャッシュから）フェッチし、それらの命令を１つ又は複数の命令バッファに記憶する。各命令はその後実行のために実行ユニットに渡される。複数の実行ユニットが同一の命令バッファ・ロジックによってサービスされる場合は、スケジューリング・ロジックを使用して命令が適切な実行ユニットに対して発行される。また、実行ユニットがマルチスレッド化されている場合は、スケジューリング・ロジックは複数のスレッドからの命令の発行を管理する。
【００１７】
命令バッファ・ロジックの上流に結合される従来のマイクロコード・ユニット又はシーケンサには、かかるコンポーネントを実装することでプロセッサの性能が低下する恐れがあるいくつかの欠陥が存在する。例えば、従来の殆どのマイクロコード・ユニット又はシーケンサは、シーケンスを開始するにあたり、例えば当該シーケンスの命令をフェッチすべきアドレスを計算するためにいくつかのサイクルを要する。また、マイクロコード・ユニット又はシーケンサが命令バッファ・ロジックの上流に所在することにより、マイクロコード・ユニット又はシーケンサのトリガ命令をデコードする際は、典型的には所望のシーケンスを開始する前に、実行パイプラインに対して既に発行されたより新しい命令をフラッシュ（出力）しておく必要が生じる可能性がある。
【００１８】
また、従来のマイクロコード・ユニット又はシーケンサは、すべての実行ユニットをサービスする命令バッファ・ロジックの上流に所在するため、典型的には、あるシーケンスが実行されるときは常に、すべての実行ユニット上で当該命令バッファの他のすべての命令の実行がブロックされることになる。それ故、シーケンスが実行される際、マルチスレッド型マルチ実行ユニット・プロセッサは事実上、シングル・スレッド型シングル実行ユニット・プロセッサとして機能することになり、その結果、シーケンス実行時のプロセッサの並列処理が大幅に制限されることになる。
【発明の概要】
【発明が解決しようとする課題】
【００１９】
したがって、当業界では、マルチ実行ユニット・プロセッサにおけるフィルタリング処理のような長レイテンシ処理の性能を改善することが必要とされている。
【課題を解決するための手段】
【００２０】
本発明は、複数の実行ユニットを利用する処理ユニット内の命令バッファ・ロジックの下流に配設され、命令ストリーム内に所在するシーケンサ命令に応答するシーケンサ・ロジックを利用することにより、従来技術に関連する上記及び他の課題を解決するものである。そのような命令に応答して、シーケンサ・ロジックは、長レイテンシ処理に関連する複数の命令を１つの実行ユニットに対して発行するとともに、命令バッファ・ロジックからの命令が当該実行ユニットに対して発行されるのをブロックする。また、実行ユニットに対する命令の発行をこのようにブロックしても他の実行ユニットに対する命令の発行には影響が及ばず、したがって、シーケンサ・ロジックが長レイテンシ処理に関連する複数の命令を発行している間もなお、命令バッファ・ロジックからの他の命令を他の実行ユニットに発行し、それらの実行ユニットによって実行することが可能である。命令バッファの下流にシーケンサ・ロジックを実装することにより、従来のマイクロコード・ユニットに関連する起動及び他のレイテンシを低減あるいは解消することが可能となり、また、シーケンサ・ロジックが長レイテンシ処理に関する命令を発行している間も他の実行ユニットが命令の実行を継続できるようにすることにより、全体的な性能を改善することが可能となる。
【００２１】
本発明の一態様によれば、回路配置構成（ｃｉｒｃｕｉｔ  ａｒｒａｎｇｅｍｅｎｔ）は、第１及び第２の実行ユニットと、少なくとも１つの命令ストリームに由来する命令を前記第１及び第２の実行ユニットに供給するように構成された命令バッファ・ロジックと、前記命令バッファ・ロジックと前記第１の実行ユニットとの中間に結合されたシーケンサ・ロジックと、を含む。前記シーケンサ・ロジックは、前記命令ストリームに由来するシーケンサ命令に応答して、長レイテンシ処理に関連する複数の命令を前記第１の実行ユニットに対して順次発行するとともに、前記複数の命令が前記第１の実行ユニットによって実行されるように、前記命令バッファ・ロジックからの命令をブロックするように構成される。また、前記第２の実行ユニットは、前記シーケンサ・ロジックが前記命令バッファ・ロジックからの命令をブロックしている間に、前記命令バッファ・ロジックから前記第２の実行ユニットに供給された命令を実行するように構成される。
【００２２】
本発明の別の態様によれば、第１及び第２の実行ユニットと、少なくとも１つの命令ストリームに由来する命令を前記第１及び第２の実行ユニットに供給するように構成された命令バッファ・ロジックとを含むタイプの処理ユニットにおいて、命令が実行される。前記命令ストリームに由来するシーケンサ命令が受け取られたことに応答して、前記命令バッファ・ロジックと前記第１の実行ユニットとの中間に結合されたシーケンサ・ロジックを使用して、長レイテンシ処理に関連する複数の命令が前記第１の実行ユニットに対して順次発行され、前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間は、前記第１の実行ユニットに対する前記命令バッファ・ロジックからの命令の発行がブロックされ、前記第１の実行ユニットに対する命令の発行がブロックされている間に、前記命令バッファ・ロジックからの少なくとも１つの命令が、前記第２の実行ユニットによる実行のために発行される。
【００２３】
本発明を特徴付ける上記及び他の利点ならびに特徴は、本明細書に添付されるとともに本明細書の一部を構成する特許請求範囲の各請求項に記載されている。しかしながら、本発明ならびに本発明の使用から得られる利点及び目的がより良く理解されるように、以下では本発明の例示的な諸実施形態が記載された添付図面を参照しながら本発明の説明を行う。
【図面の簡単な説明】
【００２４】
【図１】本発明の諸実施形態に係るデータ処理に利用される例示的なコンピュータを含む例示的な自動コンピューティング・マシンのブロック図である。
【図２】図１のコンピュータに実装される例示的なＮＯＣのブロック図である。
【図３】図２のＮＯＣ（ネットワーク・オン・チップ）のノードの例示的な一実装環境をより詳細に示すブロック図である。
【図４】図２のＮＯＣのＩＰ（統合プロセッサ）ブロックの例示的な一実装環境を示すブロック図である。
【図５】本発明に係る命令ブロック・シーケンサ・ロジックが組み込まれ、図２のＮＯＣのＩＰブロック内に実装することが可能な処理ユニットのブロック図である。
【図６】図５に示される命令ブロック・シーケンサ・ロジックの処理を示すフローチャートである。
【図７】ピクセルのテクスチャ・マッピングを示す、テクセル座標系のグラフ図である。
【発明を実施するための形態】
【００２５】
本発明に係る諸実施形態は、マルチ実行ユニット処理ユニット（ｍｕｌｔｉ‐ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）の命令バッファ・ロジックの下流に配設されたシーケンサ・ロジックを利用して、長レイテンシ処理に関連する複数の命令を処理ユニット内の実行ユニットに対して発行すると同時に、命令バッファ・ロジックから処理ユニット内の他のいずれかの実行ユニットへの命令の発行をブロックすることなく、当該実行ユニットに対する命令バッファ・ロジックからの命令の発行をブロックする。例えば、以下で論じる一実施形態において、マルチスレッド型マルチ実行ユニット処理ユニットは、当該スレッドに対して発行されるより新しい命令をすべてブロックし、実行ユニットに対して命令を順次発行することにより、テクスチャ・フィルタ処理（又は他の長レイテンシ処理）を実現する一連の命令の発行をコマンドに応答して開始する命令ブロック・シーケンサ（ｉｎｓｔｒｕｃｔｉｏｎ  ｂｌｏｃｋｉｎｇ  ｓｅｑｕｅｎｃｅｒ）を利用する。命令ブロック・シーケンサは、処理の実行が開始される前に、その処理に必要とされるすべてのデータがレジスタ・ファイルにロードされているものと仮定する。このように仮定することで、上記のタイプの処理を実行するように構成されたフル・マイクロコード・ユニットを用いる場合に生じ得る、ロード命令に関連するデータ位置合わせ問題やキャッシュ・ミスのような複雑さが回避される。命令ブロック・シーケンサによる処理の実行が完了すると、その結果は、元のシーケンサ・コマンドで指定されるレジスタ・ファイル内のアドレスに記憶される。また、命令ブロック・シーケンサは、従来の典型的なマイクロコード・ユニットの場合のようにすべての実行ユニットを包含する「最上位（ｔｏｐ  ｌｅｖｅｌ）」の命令バッファ・レベルではなく、単一の実行ユニットと結合されている。単一の実行ユニットと結合されることにより、回路面積が縮小されるとともに設計の複雑さが軽減され、また、マイクロコード・エンジンを起動するオーバーヘッドが回避されること、及びシーケンサが処理を実行している間も他の実行ユニットがいくつかの処理を継続することができることにより、処理速度が大幅に向上する。
【００２６】
（ハードウェア及びソフトウェア環境）
ここで各図の同様の参照番号が同様の部分を指す添付図面を参照すると、図１には、本発明の諸実施形態に係るデータ処理に利用される例示的なコンピュータ１０を含む例示的な自動コンピューティング・マシンが示されている。図１のコンピュータ１０は、少なくとも１つのコンピュータ・プロセッサ１２又は「ＣＰＵ」と、高速メモリ・バス１６及びバス・アダプタ１８を介してプロセッサ１２及びコンピュータ１０の他のコンポーネントに接続されたランダム・アクセス・メモリ１４（「ＲＡＭ」）とを含む。
【００２７】
ＲＡＭ  １４には、例えばワード処理、スプレッドシート、データベース処理、ビデオ・ゲーム、株取引シミュレーション、原子の量子プロセス・シミュレーション、他のユーザ・レベル・アプリケーション等、特定のデータ処理タスクを実行するユーザ・レベルのコンピュータ・プログラム命令のモジュールであるアプリケーション・プログラム２０が記憶されている。ＲＡＭ  １４には、オペレーティング・システム２２も記憶されている。本発明の諸実施形態と共に利用されるオペレーティング・システムには、ＵＮＩＸ（商標）、Ｌｉｎｕｘ（商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ（商標）、ＡＩＸ（商標）、ＩＢＭのｉ５／ＯＳ（商標）、及び当業者によって想到される他のオペレーティング・システムが含まれる。図１の例のオペレーティング・システム２２及びアプリケーション２０はＲＡＭ  １４内に示されているが、そのようなソフトウェアの多くのコンポーネントは、典型的には不揮発性メモリ、例えばディスク・ドライブ２４上に記憶される。
【００２８】
以下でより明らかとなるように、本発明に係る諸実施形態は、ネットワーク・オン・チップ（Ｎｅｔｗｏｒｋ  Ｏｎ  Ｃｈｉｐ：ＮＯＣ）集積回路デバイス又はチップ内に実装することができ、そのため、コンピュータ１０は、２つの例示的なＮＯＣ、即ちビデオ・アダプタ２６及びコプロセッサ２８を含むように示されている。グラフィックス・アダプタと呼ばれることもあるＮＯＣビデオ・アダプタ２６は、表示画面やコンピュータ・モニタのような表示デバイス３０へのグラフィック出力用に特別に設計されたＩ／Ｏアダプタの一例である。ＮＯＣビデオ・アダプタ２６は、高速ビデオ・バス３２、バス・アダプタ１８、及びやはり高速バスであるフロント・サイド・バス３４を介してプロセッサ１２に接続されている。ＮＯＣコプロセッサ２８は、バス・アダプタ１８、フロント・サイド・バス３４、及びやはり高速バスであるフロント・サイド・バス３６を介してプロセッサ１２に接続されている。図１のＮＯＣコプロセッサは、例えばメイン・プロセッサ１２の命令に従って特定のデータ処理タスクを加速するように最適化することができる。
【００２９】
図１の例示的なＮＯＣビデオ・アダプタ２６及びＮＯＣコプロセッサ２８はそれぞれ、図２及び図３に関して以下でより詳細に論じる統合プロセッサ（ｉｎｔｅｇｒａｔｅｄ  ｐｒｏｃｅｓｓｏｒ：「ＩＰ」）ブロック、ルータ、メモリ通信コントローラ、及びネットワーク・インターフェース・コントローラを含むＮＯＣを含む。ＮＯＣビデオ・アダプタ及びＮＯＣコプロセッサはそれぞれ、並列処理を使用するとともに共有メモリへの高速ランダム・アクセスも必要とするプログラム用に最適化されている。しかしながら、本開示内容の利益を享受する当業者には、本発明をＮＯＣデバイス及びＮＯＣデバイス・アーキテクチャ以外のデバイス及びデバイス・アーキテクチャに実装することができることが理解されるであろう。したがって、本発明はＮＯＣデバイス内の実装に限定されるものではない。
【００３０】
図１のコンピュータ１０は、拡張バス４０及びバス・アダプタ１８を介してプロセッサ１２及びコンピュータ１０の他のコンポーネントと結合されたディスク・ドライブ・アダプタ３８を含む。ディスク・ドライブ・アダプタ３８は、ディスク・ドライブ２４の形をとる不揮発性データ・ストレージをコンピュータ１０に接続するものであり、例えば統合ドライブ・エレクトロニクス（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ：「ＩＤＥ」）アダプタ、小型コンピュータ・システム・インターフェース（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ：「ＳＣＳＩ」）アダプタ、及び当業者によって想到される他のアダプタを使用して実装することができる。不揮発性コンピュータ・メモリは、光ディスク・ドライブ、電気的消去再書込可能読み取り専用メモリ（いわゆる「ＥＥＰＲＯＭ」又は「フラッシュ」メモリ）、ＲＡＭドライブ等、当業者によって想到されるドライブとして実装することもできる。
【００３１】
コンピュータ１０は、例えばコンピュータ表示画面のような表示デバイスへの出力ならびにキーボードやマウスのようなユーザ入力デバイス４４からのユーザ入力を制御するソフトウェア・ドライバ及びコンピュータ・ハードウェア等を介してユーザ指向入出力を実現する、１つ又は複数の入出力（「Ｉ／Ｏ」）アダプタ４２も含む。また、コンピュータ１０は、他のコンピュータ４８との間のデータ通信、及びデータ通信ネットワーク５０との間のデータ通信を行う通信アダプタ４６も含む。このようなデータ通信は、ＲＳ‐２３２接続を介して、ユニバーサル・シリアル・バス（「ＵＳＢ」）のような外部バスを介して、ＩＰデータ通信ネットワークのようなデータ通信ネットワークを介して、また当業者によって想到される他の手法で順次実行することが可能である。通信アダプタは、あるコンピュータが別のコンピュータに直接又はデータ通信ネットワークを介してデータ通信を送信する、ハードウェア・レベルのデータ通信を実現する。コンピュータ１０での使用に適した通信アダプタの例としては、有線ダイヤル・アップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット（Ｒ）（ＩＥＥＥ  ８０２．３）アダプタ、及び無線データ通信ネットワーク通信用の８０２．１１アダプタが挙げられる。
【００３２】
更なる説明のために、図２は、本発明の諸実施形態に係る例示的なＮＯＣ  １０２の機能ブロック図を示す。図２のＮＯＣは「チップ」１００、即ち集積回路上に実装される。ＮＯＣ  １０２は、それぞれ相互接続ノードにグループ化された統合プロセッサ（「ＩＰ」）ブロック１０４と、ルータ１１０と、メモリ通信コントローラ１０６と、ネットワーク・インターフェース・コントローラ１０８とを含む。各ＩＰブロック１０４は、メモリ通信コントローラ１０６及びネットワーク・インターフェース・コントローラ１０８を介してルータ１１０と適合される。各メモリ通信コントローラは、ＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ１０８は、ルータ１１０を介してＩＰブロック間の通信を制御する。
【００３３】
ＮＯＣ  １０２において、各ＩＰブロックは、ＮＯＣ内のデータ処理用ビルディング・ブロックとして使用される同期又は非同期ロジック設計の再利用可能な単位を表す。「ＩＰブロック」という用語は、「知的財産（ｉｎｔｅｌｌｅｃｔｕａｌ ｐｒｏｐｅｒｔｙ）ブロック」と展開されることもあり、その場合、ＩＰブロックは事実上、一当事者によって所有され一当事者の知的財産となる、半導体回路の他のユーザ又は設計者にライセンスされるべきデザインとして指定されることになる。しかしながら、本発明の範囲において、ＩＰブロックは必ずしも特定の所有権に属している必要はなく、したがって、「ＩＰブロック」という用語は本明細書では常に「統合プロセッサ（ｉｎｔｅｇｒａｔｅｄ  ｐｒｏｃｅｓｓｏｒ）ブロック」と展開される。本明細書に記載のＩＰブロックは、知的財産の対象であることも対象でないこともある論理設計、セル設計、又はチップ・レイアウト設計の再利用可能な単位を指す。ＩＰブロックは、ＡＳＩＣチップ設計又はＦＰＧＡ論理設計として形成され得る論理コアである。
【００３４】
一例として、ＮＯＣ設計におけるＩＰブロックの存在は、コンピュータ・プログラミングにおけるライブラリの存在、あるいは印刷回路基板設計における個別集積回路コンポーネントの存在と同様である。本発明の諸実施形態に係るＮＯＣにおいて、ＩＰブロックは、一般ゲート・ネットリストとして、完全な専用マイクロプロセッサ又は汎用マイクロプロセッサとして、あるいは当業者によって想到され得る他の手法で実装することができる。ネットリストは、高水準プログラム・アプリケーション向けのアセンブリ・コード・リスティングに類似する、ＩＰブロックの論理機能のブール代数表現（ゲート、スタンダード・セル）である。ＮＯＣは、例えばＶｅｒｉｌｏｇやＶＨＤＬのようなハードウェア記述言語で記述される合成可能な形で実装することもできる。ネットリスト及び合成可能な実装に加えて、ＮＯＣは低水準の物理的記述でも配布され得る。ＳＥＲＤＥＳ、ＰＬＬ、ＤＡＣ、ＡＤＣ等のアナログＩＰブロック要素は、ＧＤＳＩＩのようなトランジスタ・レイアウト・フォーマットで配布され得る。ＩＰブロックのデジタル要素もその時々にレイアウト・フォーマットで提供される。本発明に係るＩＰブロックならびに他の論理回路は、例えばそのようなロジックが実装された回路配置構成の機能又はレイアウトあるいはその両方を様々な詳細度で定義する論理定義プログラム・コードのようなコンピュータ・データ・ファイルの形で配布され得ることも理解されるであろう。このように、本発明は完全に機能する集積回路デバイス及びそのようなデバイスを利用するデータ処理システムの形で実装される回路配置構成の文脈で説明されているが、本開示内容の利益を享受する当業者なら、本発明に係る回路配置構成は様々な形態のプログラムとして配布することができ、実際の配布の際に使用される特定のタイプのコンピュータ可読媒体又は信号伝送媒体に関わらず、本発明が等しく応用されることを理解されるであろう。コンピュータ可読媒体又は信号伝送媒体の例としては、必ずしもそれだけに限定されるわけではないが、揮発性及び不揮発性メモリ・デバイス、フレキシブル・ディスク、ハード・ディスク・ドライブ、ＣＤ‐ＲＯＭ、（特に）ＤＶＤのような物理的記録型媒体、及びデジタル通信回線やアナログ通信回線のような伝送型媒体が挙げられる。
【００３５】
図２の例における各ＩＰブロック１０４は、メモリ通信コントローラ１０６を介してルータ１１０と適合される。各メモリ通信コントローラは、ＩＰブロックとメモリとの間のデータ通信を実現するように適合された同期論理回路及び非同期論理回路の集合である。このようなＩＰブロックとメモリとの間の通信例としては、メモリ・ロード命令及びメモリ・ストア命令が挙げられる。メモリ通信コントローラ１０６については図３を参照しながら以下でより詳細に説明する。各ＩＰブロック１０４は、ネットワーク・インターフェース・コントローラ１０８を介してルータ１１０とも適合され、ネットワーク・インターフェース・コントローラ１０８は、ルータ１１０を介するＩＰブロック１０４間の通信を制御する。ＩＰブロック間の通信例としては、並列アプリケーション及びパイプライン型アプリケーションにおけるＩＰブロック間のデータ処理に関するデータ及び命令を搬送するメッセージが挙げられる。ネットワーク・インターフェース・コントローラ１０８についても図３を参照しながら以下でより詳細に説明する。
【００３６】
ルータ１１０とルータ間の対応するリンク１１８とが、ＮＯＣのネットワーク動作を実現する。リンク１１８は、すべてのルータを接続する物理的な並列ワイヤ・バス上で実現されるパケット構造とすることができる。即ち、各リンクは、すべてのヘッダ情報及びペイロード・データを含むデータ交換パケット全体を同時に収容するのに十分な幅を有するワイヤ・バス上で実現され得る。例えば、パケット構造が８バイトのヘッダと５６バイトのペイロード・データとを合わせた６４バイトを含む場合、各リンクに対するワイヤ・バスは、６４バイト幅の５１２本のワイヤとなる。また、各リンクは、リンク・パケット構造が６４バイトを含む場合に、ワイヤ・バスが事実上各ルータとネットワーク内の各隣接ルータとの間に１０２４本のワイヤを含むことになるような双方向リンクとすることもできる。かかる実装環境では、１つのメッセージが２つ以上のパケットを含む可能性があるが、各パケットはワイヤ・バスの幅にぴったりと収まることになる。代替実施形態において、リンクは、パケットの一部分だけを収容するのに十分な幅を有するワイヤ・バス上で実現することができ、その結果、パケットは複数のビート（ｂｅａｔ）に分割されるようになり、例えばリンクが１６バイト幅又は１２８本のワイヤとして実装される場合、６４バイトのパケットを４つのビートに分割することができるようになる。実装環境毎の実際の物理的限界ならびに所望の性能特性に基づいて、様々なバス幅が使用され得ることが理解されるであろう。ルータとワイヤ・バスの各セクションとの間の接続をポートと称する場合、各ルータは、５つのポート、即ちネットワーク上の４つのデータ伝送方向のそれぞれにつき１つのポートと、メモリ通信コントローラ及びネットワーク・インターフェース・コントローラを介して該ルータを特定のＩＰブロックと適合させる第５のポートとを含む。
【００３７】
各メモリ通信コントローラ１０６は、ＩＰブロックとメモリとの間の通信を制御する。メモリは、オフ・チップ・メインＲＡＭ  １１２と、メモリ通信コントローラ１０６を介してＩＰブロックに直接接続されたメモリ１１４と、ＩＰブロックとして使用可能に設定（ｅｎａｂｌｅｄ）されたオン・チップ・メモリ１１６と、オン・チップ・キャッシュとを含むことができる。ＮＯＣ  １０２では、例えばオン・チップ・メモリ１１４及び１１６はどちらもオン・チップ・キャッシュ・メモリとして実現することができる。このような形態のメモリはすべて同一のアドレス空間、物理アドレス、あるいは仮想アドレスに配設することができ、ＩＰブロックに直接取り付けられるメモリについても同じことが言える。したがって、メモリ・アドレス指定メッセージ（ｍｅｍｏｒｙ  ａｄｄｒｅｓｓｅｄ  ｍｅｓｓａｇｅ）は、ＩＰブロックに対して完全に双方向なメッセージとなり得る。というのも、このようなメモリは、ネットワーク上の任意の位置に所在する任意のＩＰブロックから直接アドレス指定することができるからである。ＩＰブロック上のメモリ１１６は、そのＩＰブロックから、あるいはＮＯＣ内の他の任意のＩＰブロックからアドレス指定することができる。メモリ通信コントローラに直接取り付けられているメモリ１１４は、そのメモリ通信コントローラによってネットワークと適合されるＩＰブロックによってアドレス指定することができ、また、ＮＯＣ内の任意の位置に所在する他の任意のＩＰブロックからアドレス指定することができる。
【００３８】
ＮＯＣ  １０２は２つのメモリ管理ユニット（「ＭＭＵ」）１２０、１２２を含み、ここでは本発明の諸実施形態に係るＮＯＣ向けの２つの代替メモリ・アーキテクチャが示されている。ＭＭＵ  １２０はＩＰブロック内に実装されており、当該ＩＰブロック内のプロセッサが仮想メモリにおいて動作することを可能にするとともに、ＮＯＣの残りのアーキテクチャ全体が物理メモリ・アドレス空間において動作することを可能にする。ＭＭＵ  １２２はオフ・チップ実装され、データ通信ポート１２４を介してＮＯＣに接続される。ポート１２４は、ＮＯＣとＭＭＵとの間で信号を伝導するのに必要とされるピン及び他の相互接続部と、メッセージ・パケットをＮＯＣパケット・フォーマットから外部ＭＭＵ  １２２の必要とするバス・フォーマットに変換するのに十分なインテリジェンス（情報）とを含む。ＭＭＵが外部に配置されているということは、ＮＯＣのすべてのＩＰブロック内のすべてのプロセッサが仮想メモリ・アドレス空間において動作することができ、オフ・チップ・メモリの物理アドレスへのすべての変換がオフ・チップＭＭＵ  １２２によって処理されることを意味する。
【００３９】
ＭＭＵ  １２０及び１２２を用いて例示した２つのメモリ・アーキテクチャに加えて、データ通信ポート１２６は、本発明の諸実施形態で使用可能なＮＯＣで利用される第３のメモリ・アーキテクチャを示す。ポート１２６は、ＮＯＣ  １０２のＩＰブロック１０４とオフ・チップ・メモリ１１２との間の直接接続を実現する。本アーキテクチャでは処理経路にＭＭＵが存在せず、物理アドレス空間がＮＯＣのすべてのＩＰブロックによって利用される。アドレス空間を双方向に共有する際、ＮＯＣのすべてのＩＰブロックは、ポート１２６に直接接続されているＩＰブロックを介して送られるロード及びストアを含むメモリ・アドレス指定メッセージにより、当該アドレス空間内のメモリにアクセスすることができる。ポート１２６は、ＮＯＣとオフ・チップ・メモリ１１２との間で信号を伝導するのに必要とされるピン及び他の相互接続部と、メッセージ・パケットをＮＯＣパケット・フォーマットからオフ・チップ・メモリ１１２の必要とするバス・フォーマットに変換するのに十分なインテリジェンスとを含む。
【００４０】
図２の例において、ＩＰブロックのうちの１つは、ホスト・インターフェース・プロセッサ（ＨＩＰ）１２８として指定される。ホスト・インターフェース・プロセッサ１２８は、ＮＯＣと、当該ＮＯＣがインストールされ得るホスト・コンピュータ１０との間のインターフェースを提供し、また、例えばホスト・コンピュータからのＮＯＣデータ処理要求に関するＩＰブロック間の受信及びディスパッチを含めたデータ処理サービスをＮＯＣ上の他のＩＰブロックに提供する。ＮＯＣは、例えば図１に関して上述したように、より大型のコンピュータ１０上にビデオ・グラフィックス・アダプタ２６あるいはコプロセッサ２８を実装することもできる。図２の例において、ホスト・インターフェース・プロセッサ１２８は、データ通信ポート１３０を介してより大型のホスト・コンピュータに接続されている。ポート１３０は、ＮＯＣとホスト・コンピュータとの間で信号を伝導するのに必要とされるピン及び他の相互接続部と、メッセージ・パケットをＮＯＣフォーマットからホスト・コンピュータ１０の必要とするバス・フォーマットに変換するのに十分なインテリジェンスとを含む。図１のコンピュータのＮＯＣコプロセッサの例において、このようなポートは、ＮＯＣコプロセッサ２８のリンク構造と、ＮＯＣコプロセッサ２８及びバス・アダプタ１８の間のフロント・サイド・バス３６で必要とされるプロトコルとの間のデータ通信フォーマット変換を行うことになる。
【００４１】
次に、図３は、ＮＯＣ  １０２内のＩＰブロック１０４内部、メモリ通信コントローラ１０６内部、ネットワーク・インターフェース・コントローラ１０８内部、及びルータ１１０内部に実装される各コンポーネントをより詳細に示す機能ブロック図である。各コンポーネントはまとめて１３２で示されている。各ＩＰブロック１０４は、コンピュータ・プロセッサ１３４と、Ｉ／Ｏ機能部１３６とを含む。本例において、コンピュータ・メモリは、ＩＰブロック１０４内のランダム・アクセス・メモリ（「ＲＡＭ」）１３８のセグメントによって表されている。図２の例に関して上述したメモリは、物理アドレス空間のセグメントを占有することができ、各ＩＰブロック上に所在するそれ自体の内容には、ＮＯＣ内の任意のＩＰブロックからアドレス指定及びアクセス可能である。各ＩＰブロック内のプロセッサ１３４、Ｉ／Ｏ機能部１３６、及びメモリ１３８は事実上、ＩＰブロックを概してプログラマブルなマイクロコンピュータとして実現する。しかしながら、上述したように、本発明の範囲において、ＩＰブロックは一般にＮＯＣ内のデータ処理用ビルディング・ブロックとして使用される同期又は非同期ロジックの再利用可能な単位を表す。したがって、ＩＰブロックを概してプログラマブルなマイクロコンピュータとして実現することは、説明に役立つ一般的な実施形態であって、本発明を限定するものではない。
【００４２】
図３のＮＯＣ  １０２において、各メモリ通信コントローラ１０６は複数のメモリ通信実行エンジン１４０を含む。各メモリ通信実行エンジン１４０は、ネットワークとＩＰブロック１０４との間の双方向メモリ通信命令フロー１４１、１４２、１４４を含むＩＰブロック１０４からのメモリ通信命令を実行するように使用可能に設定されている。メモリ通信コントローラによって実行されるメモリ通信命令は、特定のメモリ通信コントローラを介してルータと適合されるＩＰブロックからだけでなく、ＮＯＣ  １０２内の任意の位置に所在する任意のＩＰブロック１０４からも発信される可能性がある。即ち、ＮＯＣ内のあらゆるＩＰブロックがメモリ通信命令を生成することができ、また、当該メモリ通信命令を実行のためにＮＯＣ内のルータを介して別のＩＰブロックに関連する別のメモリ通信コントローラに送信することができる。このようなメモリ通信命令としては、例えば変換索引バッファ制御命令、キャッシュ制御命令、バリア命令、及びメモリ・ロード／ストア命令を挙げることができる。
【００４３】
各メモリ通信実行エンジン１４０は、完全なメモリ通信命令を個別に且つ他のメモリ通信実行エンジンと並行して実行するように使用可能に設定されている。メモリ通信実行エンジンは、メモリ通信命令の並行（コンカレント）スループット向けに最適化されたスケーラブル・メモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ１０６は、すべてのエンジンが複数のメモリ通信命令の同時実行のために並行動作する複数のメモリ通信実行エンジン１４０をサポートする。新しいメモリ通信命令は、メモリ通信コントローラ１０６によってメモリ通信実行エンジン１４０に割り当てられ、メモリ通信実行エンジン１４０は、複数の応答イベントを同時に受け入れることができる。本例において、メモリ通信実行エンジン１４０はすべて同一である。したがって、１つのメモリ通信コントローラ１０６によって同時に処理され得るメモリ通信命令数のスケーリングは、メモリ通信実行エンジン１４０の数をスケーリングすることによって実行される。
【００４４】
図３のＮＯＣ  １０２において、各ネットワーク・インターフェース・コントローラ１０８は、通信命令を、ルータ１１０を介してＩＰブロック１０４間で伝送するために、コマンド・フォーマットからネットワーク・パケット・フォーマットに変換するように使用可能に設定されている。通信命令は、ＩＰブロック１０４又はメモリ通信コントローラ１０６によってコマンド・フォーマットに定式化し、ネットワーク・インターフェース・コントローラ１０８にコマンド・フォーマットで提供することができる。コマンド・フォーマットは、ＩＰブロック１０４及びメモリ通信コントローラ１０６のアーキテクチャ・レジスタ・ファイルに従うネイティブ・フォーマットとすることができる。ネットワーク・パケット・フォーマットは、典型的にはネットワークのルータ１１０を介した伝送で必要とされるフォーマットである。このようなメッセージはそれぞれ１つ又は複数のネットワーク・パケットから構成される。ネットワーク・インターフェース・コントローラにおいてコマンド・フォーマットからパケット・フォーマットに変換されるこのような通信命令の例としては、ＩＰブロックとメモリとの間のメモリ・ロード命令及びメモリ・ストア命令が挙げられる。このような通信命令には、データを搬送するＩＰブロック間でメッセージを送信する通信命令、ならびに並列アプリケーション及びパイプライン型アプリケーションにおけるＩＰブロック間のデータ処理に関する命令も含まれ得る。
【００４５】
図３のＮＯＣ  １０２において、各ＩＰブロックは、メモリとの間のメモリ・アドレス・ベース通信を、当該ＩＰブロックのメモリ通信コントローラを介し、それ自体のネットワーク・インターフェース・コントローラを経て、ネットワークに送信するように使用可能に設定されている。メモリ・アドレス・ベース通信は、ＩＰブロックのメモリ通信コントローラのメモリ通信実行エンジンによって実行されるロード命令やストア命令のようなメモリ・アクセス命令である。このようなメモリ・アドレス・ベース通信は、典型的にはＩＰブロックから発信され、コマンド・フォーマットに定式化され、実行のためにメモリ通信コントローラに引き渡される。
【００４６】
アクセス対象となるメモリは、ＮＯＣ内の任意のメモリ通信コントローラに直接取り付けられたオン・チップ又はオフ・チップの物理メモリ・アドレス空間内のどこかに位置する可能性があり、また、任意の特定のメモリ・アドレス・ベース通信をどのＩＰブロックが発信したかに関わらず、ＮＯＣの任意のＩＰブロックを介して最終的にアクセスされ得るので、多くのメモリ・アドレス・ベース通信は、メッセージ・トラフィックを用いて実行される。それ故、ＮＯＣ  １０２においてメッセージ・トラフィックを用いて実行されるすべてのメモリ・アドレス・ベース通信は、コマンド・フォーマットからパケット・フォーマットに変換し、ネットワークを介してメッセージの形で伝送するために、メモリ通信コントローラから関連するネットワーク・インターフェース・コントローラに渡される。ネットワーク・インターフェース・コントローラは、パケット・フォーマットへの変換時に、メモリ・アドレス・ベース通信のアクセス対象となる１つ又は複数のメモリ・アドレスに従って、パケットのネットワーク・アドレスも特定する。メモリ・アドレス・ベース・メッセージは、メモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによって、典型的にはある範囲の物理メモリ・アドレスに関与するメモリ通信コントローラのネットワーク位置に相当するネットワーク・アドレスにマッピングされる。言うまでもなく、メモリ通信コントローラ１０６のネットワーク位置は、そのメモリ通信コントローラに関連するルータ１１０、ネットワーク・インターフェース・コントローラ１０８、及びＩＰブロック１０４のネットワーク位置でもある。各ネットワーク・インターフェース・コントローラ内の命令変換ロジック１５０は、メモリ・アドレス・ベース通信をＮＯＣのルータを介して伝送する目的で、メモリ・アドレスをネットワーク・アドレスに変換することができる。
【００４７】
ネットワークのルータ１１０からメッセージ・トラフィックを受信すると、各ネットワーク・インターフェース・コントローラ１０８は、各パケットのメモリ命令を検査する。メモリ命令を含む各パケットは、受信側のネットワーク・インターフェース・コントローラに関連するメモリ通信コントローラ１０６に渡され、メモリ通信コントローラ１０６は、当該メモリ命令を実行した後、パケットの残りのペイロードを更なる処理のためにＩＰブロックに送信する。このようにして、ＩＰブロックによるデータ処理をサポートするために、当該ＩＰブロックによる特定のメモリ内容に依存するメッセージに由来する命令の実行が開始される前に、メモリ内容が常に準備される。
【００４８】
図３のＮＯＣ  １０２において、各ＩＰブロック１０４は、それ自体のメモリ通信コントローラ１０６を迂回し、ＩＰブロック間のネットワーク・アドレス指定通信（ｎｅｔｗｏｒｋ‐ａｄｄｒｅｓｓｅｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）１４６を、当該ＩＰブロックのネットワーク・インターフェース・コントローラ１０８を介してネットワークに直接送信するように使用可能に設定されている。ネットワーク・アドレス指定通信は、ネットワーク・アドレスによって別のＩＰブロックに送られるメッセージである。このようなメッセージは、当業者によって想到されるように、例えばパイプライン型アプリケーションでは作業データを伝送し、ＳＩＭＤアプリケーションではＩＰブロック間の単一プログラム処理に関する複数のデータを伝送する。このようなメッセージは、それらがＮＯＣのルータを介して送られることになるネットワーク・アドレスを認識している発信元のＩＰブロックによって当初からネットワーク・アドレス指定される点で、メモリ・アドレス・ベース通信とは異なる。このようなネットワーク・アドレス指定通信は、ＩＰブロックによってＩ／Ｏ機能部１３６を介してＩＰブロックのネットワーク・インターフェース・コントローラにコマンド・フォーマットで直接渡され、その後、当該ネットワーク・インターフェース・コントローラによってパケット・フォーマットに変換され、ＮＯＣのルータを介して別のＩＰブロックに送信される。このようなネットワーク・アドレス指定通信１４６は双方向メッセージであり、特定の応用例でのそれぞれの用途に応じて、ＮＯＣの各ＩＰブロックとの間でやりとりされる可能性がある。しかしながら、各ネットワーク・インターフェース・コントローラは、そのような通信を関連するルータとの間で送受信するように使用可能に設定され、また、そのような通信を、関連するメモリ通信コントローラ１０６を迂回（バイパス）して関連するＩＰブロックとの間で直接送受信するように使用可能に設定されている。
【００４９】
また、図３の例において、各ネットワーク・インターフェース・コントローラ１０８は、ネットワーク・パケットをタイプによって特徴付ける仮想チャネルをネットワーク上に実装するように使用可能に設定されている。各ネットワーク・インターフェース・コントローラ１０８は、仮想チャネル実装ロジック（ｖｉｒｔｕａｌ  ｃｈａｎｎｅｌ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｌｏｇｉｃ）１４８を含んでおり、このロジックは、各通信命令をタイプ別に分類し、当該命令をＮＯＣ上での伝送のためにパケットの形でルータ１１０に渡す前に、命令のタイプをネットワーク・パケット・フォーマットのフィールドに記録する。通信命令タイプの例としては、ＩＰブロック間ネットワーク・アドレス・ベース・メッセージ、要求メッセージ、要求応答メッセージ、キャッシュ宛て無効化メッセージ（ｉｎｖａｌｉｄａｔｅ  ｍｅｓｓａｇｅｓ  ｄｉｒｅｃｔｅｄ  ｔｏ  ｃａｃｈｅｓ）、メモリ・ロード／ストア・メッセージ、メモリ・ロード応答メッセージ等が挙げられる。
【００５０】
図３の例において、各ルータ１１０は、ルーティング・ロジック１５２と、仮想チャネル制御ロジック１５４と、仮想チャネル・バッファ１５６とを含む。ルーティング・ロジックは、典型的にはルータ１１０、リンク１１８、及びルータ間のバス・ワイヤによって形成されるネットワーク内のデータ通信用のデータ通信プロトコル・スタックを実現する、同期及び非同期ロジックのネットワークとして実現される。ルーティング・ロジック１５２は、オフ・チップのネットワークにおいて当業者がルーティング・テーブルと関連付ける可能性がある機能を含んでいるが、ルーティング・テーブルは、少なくともいくつかの実施形態では、ＮＯＣでの使用では低速すぎて扱いにくいと考えられる可能性がある。同期及び非同期ロジックのネットワークとして実現されるルーティング・ロジックは、単一のクロック・サイクルと同様の速さでルーティング決定を行うように構成することができる。本例のルーティング・ロジックは、ルータ内で受信された各パケットを転送するポートを選択することによってパケットをルーティングする。各パケットは、当該パケットをルーティングすべきネットワーク・アドレスを含む。
【００５１】
上記のメモリ・アドレス・ベース通信の説明では、各メモリ・アドレスが、ネットワーク・インターフェース・コントローラによってメモリ通信コントローラのネットワーク位置（ロケーション）に相当するネットワーク・アドレスにマッピングされるように説明した。言うまでもなく、メモリ通信コントローラ１０６のネットワーク位置は、そのメモリ通信コントローラに関連するルータ１１０、ネットワーク・インターフェース・コントローラ１０８、及びＩＰブロック１０４のネットワーク位置でもある。したがって、ＩＰブロック間通信又はネットワーク・アドレス・ベース通信において、ネットワーク・アドレスは、アプリケーション・レベルのデータ処理から見れば、ＮＯＣのルータ、リンク、及びバス・ワイヤによって形成されるネットワーク内のＩＰブロックの位置と見なされることになる。図２は、そのようなネットワークの１つの組織が行と列のメッシュとなっていることを示している。当該メッシュにおいて、各ネットワーク・アドレスは、例えば当該メッシュ内の関連するルータ、ＩＰブロック、メモリ通信コントローラ、及びネットワーク・インターフェース・コントローラから成る各セット毎の一意の識別子として実現することも、そのようなメッシュ内の各セットのｘ，ｙ座標として実現することもできる。
【００５２】
図３のＮＯＣ  １０２において、各ルータ１１０は２つ以上の仮想通信チャネルを実現し、各仮想通信チャネルは通信タイプによって特徴付けられる。上述のとおり、通信命令タイプ、したがって仮想チャネル・タイプには、ＩＰブロック間ネットワーク・アドレス・ベース・メッセージ、要求メッセージ、要求応答メッセージ、キャッシュ宛て無効化メッセージ、メモリ・ロード／ストア・メッセージ、メモリ・ロード応答メッセージ等が含まれる。仮想チャネルをサポートするにあたり、図３の例の各ルータ１１０は、仮想チャネル制御ロジック１５４及び仮想チャネル・バッファ１５６も含む。仮想チャネル制御ロジック１５４は、各受信パケットに割り当てられている通信タイプを検査し、各パケットを、ポートを介してＮＯＣ上の隣接ルータに送信するために、当該通信タイプ用の出力側仮想チャネル・バッファに配置する。
【００５３】
各仮想チャネル・バッファ１５６は有限の記憶空間を有する。短期間に多数のパケットが受信されたときは、仮想チャネル・バッファが一杯になる可能性があり、その結果、パケットをそれ以上バッファに入れることができなくなる可能性がある。他のプロトコルでは、バッファが一杯になっている仮想チャネル上に到達したパケットは破棄（ｄｒｏｐ）されることになる。しかしながら、本例の仮想チャネル・バッファ１５６はそれぞれ、バス・ワイヤの制御信号によって、仮想チャネル制御ロジックを介して周辺のルータに対し仮想チャネルでの送信を中断する、即ち、特定の通信タイプのパケットの送信を中断するよう助言するように使用可能に設定されている。１つの仮想チャネルがそのように中断された場合にも、他のすべての仮想チャネルは影響を受けず、したがって最大限の動作を継続することができる。各制御信号は、上記と反対に各ルータを介して各ルータの関連するネットワーク・インターフェース・コントローラ１０８に戻される。各ネットワーク・インターフェース・コントローラは、このような信号を受信すると、それぞれに関連するメモリ通信コントローラ１０６又はそれぞれに関連するＩＰブロック１０４からの中断された仮想チャネルに関する通信命令の受け入れを拒否するように構成されている。このようにして仮想チャネルが中断されると、その仮想チャネルを実現する発信元のＩＰブロックに至るまで、すべてのハードウェアに影響が及ぶことになる。
【００５４】
仮想チャネル内のパケット伝送の中断による影響の１つは、パケットが決して破棄されなくなることである。例えばインターネット・プロトコルのような信頼性の低い何らかのプロトコルでパケットが破棄され得る状況にルータが直面した場合、図３の例のルータは、それぞれの仮想チャネル・バッファ１５６及びそれぞれの仮想チャネル制御ロジック１５４によって、バッファ空間が再び利用可能になるまで仮想チャネル内のすべてのパケット伝送を中断することができ、その結果、パケットを破棄する必要を解消することができる。したがって、図３のＮＯＣは、ハードウェアの極めて薄い層によって非常に信頼性の高いネットワーク通信プロトコルを実現することができる。
【００５５】
図３の例示的なＮＯＣは、オン・チップ・メモリ・キャッシュとオフ・チップ・メモリ・キャッシュの両方の間のキャッシュ・コヒーレンシを維持するように構成することもできる。各ＮＯＣは、それぞれ基礎となる同一のメモリ・アドレス空間に対して動作する複数のキャッシュをサポートすることができる。例えば、キャッシュは、ＩＰブロック、メモリ通信コントローラ、あるいはＮＯＣ外部のキャッシュ・コントローラによって制御することができる。また、図２の例のオン・チップ・メモリ１１４及び１１６はいずれも、オン・チップ・キャッシュとして実装することができ、また、本発明の範囲内では、オフ・チップ・キャッシュとして実装することもできる。
【００５６】
図３に示される各ルータ１１０は、５つのポート、即ちバス・ワイヤ１１８を介して他のルータに接続される４つのポート１５８Ａ〜１５８Ｄと、各ルータをネットワーク・インターフェース・コントローラ１０８及びメモリ通信コントローラ１０６を介してそれ自体に関連するＩＰブロック１０４に接続する第５のポート１６０とを含む。図２及び図３の例から分かるように、ＮＯＣ  １０２のルータ１１０及びリンク１１８は、垂直方向及び水平方向のリンクによって各ルータ内の垂直方向及び水平方向のポートが接続されるメッシュ・ネットワークを形成する。図３の例では、例えばポート１５８Ａ、１５８Ｃ、及び１６０を垂直方向ポート（ｖｅｒｔｉｃａｌ  ｐｏｒｔ）と呼び、ポート１５８Ｂ及び１５８Ｄを水平方向ポート（ｈｏｒｉｚｏｎｔａｌ  ｐｏｒｔ）と呼ぶ。
【００５７】
次に、図４は、本発明に係るＩＰブロック１０４の例示的な一実装環境を別の形で示しており、ここでのＩＰブロック１０４は、命令ユニット（ＩＵ）１６２、実行ユニット（ＸＵ）１６４、及び補助実行ユニット（ＡＸＵ）１６６に区分化される処理要素として実装される。図示の実装環境において、ＩＵ  １６２は、Ｌ１命令キャッシュ（ｉＣＡＣＨＥ）から命令を受け取る複数の命令バッファ１６８を含む。各命令バッファ１６８は、複数の、例えば４つの対称マルチスレッド化（ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉｔｈｒｅａｄｅｄ：ＳＭＴ）ハードウェア・スレッドのうちの１つに専用化されている。実効／実アドレス変換ユニット（ｅｆｆｅｃｔｉｖｅ‐ｔｏ‐ｒｅａｌ  ｔｒａｎｓｌａｔｉｏｎ  ｕｎｉｔ：ｉＥＲＡＴ）１７２は、ｉＣＡＣＨＥ  １７０と結合されており、複数のスレッド・フェッチ・シーケンサ１７４からの命令フェッチ要求を、より低次のメモリからの命令を検索するために実アドレスに変換するのに使用される。各スレッド・フェッチ・シーケンサ１７４は、特定のハードウェア・スレッドに専用化されており、これを使用することにより、関連するスレッドによって実行される命令が、適切な実行ユニットにディスパッチされるようにｉＣＡＣＨＥに確実にフェッチされるようになる。また、図４に示されるように、命令バッファ１６８にフェッチされる命令は、分岐予測ロジック１７６によって監視することもできる。分岐予測ロジック１７６は、スレッド実行時の分岐の結果発生する命令キャッシュ・ミスを最小限に抑えるヒントを各スレッド・フェッチ・シーケンサ１７４に与える。
【００５８】
ＩＵ  １６２は、各ハードウェア・スレッドに専用化された依存関係／発行ロジック・ブロック（ｄｅｐｅｎｄｅｎｃｙ／ｉｓｓｕｅ  ｌｏｇｉｃ  ｂｌｏｃｋ）１７８も含む。依存関係／発行ロジック・ブロック１７８は、依存関係を解決し、命令バッファ１６８からＸＵ  １６４に対する命令の発行を制御するように構成されている。また、図示の実施形態では、ＡＸＵ  １６６に別個の依存関係／発行ロジック１８０が設けられており、そのため、異なるスレッドからＸＵ  １６４及びＡＸＵ  １６６に対して別個の命令を並行して発行することが可能となる。一代替実施形態では、ロジック１８０をＩＵ  １６２内に配設することができ、あるいはそれ自体を完全に省略して、ロジック１７８がＡＸＵ  １６６に対して命令を発行するようにすることもできる。
【００５９】
ＸＵ  １６４は、固定小数点ロジック１８４、分岐ロジック１８６、及びロード／ストア・ロジック１８８と結合された１組の汎用レジスタ（ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｒｅｇｉｓｔｅｒ：ＧＲＰ）１８２を含む固定小数点実行ユニット（ｆｉｘｅｄ  ｐｏｉｎｔ  ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ）として実現される。ロード／ストア・ロジック１８８は、Ｌ１データ・キャッシュ（ｄＣＡＣＨＥ）１９０と結合されており、ｄＥＲＡＴ  ロジック１９２によって実効／実アドレス変換が行われる。ＸＵ  １６４は、任意の命令セット、例えば３２ｂ又は６４ｂ  ＰｏｗｅｒＰＣ（商標）命令セットの全部又は一部を実際に実行するように構成することができる。
【００６０】
ＡＸＵ  １６６は、１つ又は複数の実行ブロック１９４を伴う専用の依存関係／発行ロジック１８０を含む補助実行ユニットとして動作する。ＡＸＵ  １６６は、任意の数の実行ブロックを含むことができ、また、任意のタイプの実行ユニット、例えば浮動小数点ユニット、あるいは暗号化／復号化ユニット、コプロセッサ、ベクトル処理ユニット、グラフィックス処理ユニット、ＸＭＬ処理ユニット等の１つ又は複数の特殊実行ユニットを実現することができる。図示の実施形態において、ＡＸＵ  １６６は、例えばＡＸＵ設計状態（ＡＸＵ  ａｒｃｈｉｔｅｃｔｅｄ  ｓｔａｔｅ）とＸＵ設計状態（ＸＵ  ａｒｃｈｉｔｅｃｔｅｄ  ｓｔａｔｅ）との間の直接移動をサポートする、ＸＵ  １６４との間の高速補助インターフェースを含む。
【００６１】
ＩＰブロック１０４との通信は、図２に関して上述したように、ＮＯＣ  １０２と結合されたネットワーク・インターフェース・コントローラ１０８を介して管理することができる。例えばＬ２キャッシュ・メモリにアクセスするアドレス・ベース通信は、メッセージ・ベース通信と共に実行することができる。例えば、各ＩＰブロック１０４は、ＩＰブロック間のノード間通信を処理するために、専用のイン・ボックス（ｉｎ  ｂｏｘ）又はアウト・ボックス（ｏｕｔ  ｂｏｘ）あるいはその両方を含むことができる。
【００６２】
本発明の諸実施形態は、図１乃至図４に関して上述したハードウェア及びソフトウェア環境内で実現することができる。しかしながら、本開示内容の利益を享受する当業者なら、本発明は多種多様な環境で実現することができ、また、本発明の趣旨及び範囲から逸脱しない限り、上述のハードウェア及びソフトウェアの実施形態に他の様々な修正を施すことができることを理解するであろう。したがって、本発明は、本明細書に開示される特定のハードウェア及びソフトウェア環境に限定されるものではない。
【００６３】
（命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニット処理ユニット）
次に図５を参照すると、図５は、発行ロジック２０６からそれぞれに対して発行された命令を処理する複数の実行ユニット（例えば第１及び第２の実行ユニット２０２、２０４）と、本発明に係る命令ブロック・シーケンサ・ロジックとが組み込まれた例示的な処理ユニット２００を示している。処理ユニット２００は、例えば図１乃至図４のＩＰブロック１０４のようなＩＰブロック内に実装することができる。代替実施形態において、処理ユニット２００は、命令の発行及び実行を行うシングル・コア又はマルチ・コア・マイクロプロセッサ又はマイクロコントローラを含めた他のプロセッサ・アーキテクチャに実装することができる。
【００６４】
各実行ユニット２０２、２０４は、発行ロジック２０６からそれぞれに対して発行された命令を処理し、複数の実行段階２０８（ＥＸ１〜ＥＸＮで個別に示される）を有する多段実行パイプラインを含んでおり、実行段階２０８は、発行ロジック２０６から発行された命令に基づいてレジスタ・ファイル２１０に記憶されているデータを処理し、ターゲット・データをレジスタ・ファイル２１０に再び記憶することができる。また、レジスタ・ファイル２１０と実行パイプラインの中間に迂回ロジック２１２を提供し、それによって後続の命令のオペランドとして使用されることになる１つの命令に関して生成されたターゲット・データがレジスタ・ファイルを迂回することを可能にすることができる。
【００６５】
各実行ユニット２０２、２０４は、いくつかの異なるタイプの実行ユニット、例えば浮動小数点ユニット、固定小数点ユニット、あるいはグラフィックス処理ユニット、暗号化／復号化ユニット、コプロセッサ、ＸＭＬ処理ユニット等の特殊実行ユニットのうちのどのユニットとして実装されてもよく、また、スカラ又はベクトル（ＳＩＭＤ）実行ユニットとして構成されてもよい。実行ユニット２０２、２０４は、それぞれ同様に構成することができ、同一のタイプの命令を処理することも、異なるタイプの命令を処理するように別個に（例えば固定小数点ユニット及び浮動小数点ユニットとして）構成することもできる。また、本発明に係る処理ユニット２００では３つ以上の実行ユニットを使用することもできる。一実装環境では、例えば各実行ユニット２０２、２０４をベクトル浮動小数点実行ユニットとし、各レジスタ・ファイル２１０を、１組のベクトル・レジスタ内の浮動小数点値のベクトルを記憶するベクトル・レジスタ・ファイルとすることができる。
【００６６】
発行ロジック２０６はマルチスレッド化されており、図５ではスレッド０〜Ｎとして示される複数のハードウェア・スレッドをサポートする。更に、発行ロジック２０６は、各実行ユニット２０２、２０４に対して独立して命令を発行することができ、したがって、各実行ユニットに対してハードウェア・スレッド毎の別個の発行パイプラインが割り当てられる。各発行パイプラインは、それぞれの受信命令をデコードするデコード・ロジック２１４を含む。依存状態（ｄｅｐｅｎｄｅｎｃｙ  ｃｏｎｄｉｔｉｏｎ）（即ち、実行中のより古い命令の結果が出るまでより新しい命令を停止させなければならない状態）が依存関係ロジック（ｄｅｐｅｎｄｅｎｃｙ  ｌｏｇｉｃ）２１８において検出される。依存関係が解決されると、発行対象となる命令が発行選択ロジック（ｉｓｓｕｅ  ｓｅｌｅｃｔ  ｌｏｇｉｃ）２２２によって選択され発行される。この選択は、図５ではマルチプレクサ２２４によって行われるように示されている。命令は、該当する実行ユニット２０２、２０４の実行段階パイプラインの第１段階（ＥＸ１）に対して発行される。様々な実施形態において様々な数のハードウェア・スレッドをサポートすることができ、更に、本発明は、シングル・スレッドの実装環境でも利用可能であり、また、すべてのハードウェア・スレッドに関連する命令を任意の実行ユニット２０２、２０４に対して発行することができる図５の実装環境とは対照的に、１つ又は複数のハードウェア・スレッドが特定の実行ユニットに専用化される実装環境でも利用可能であることが理解されるであろう。
【００６７】
１つ又は複数の命令バッファを含む命令バッファ・ロジック２２８は、１つ又は複数の命令ストリームに由来する命令を発行ロジック２０６によって管理される各ハードウェア・スレッドに供給する。注目すべきことに、命令バッファ・ロジック２２８は、両方の実行ユニット２０２、２０４によって実行されることになる命令をバッファするものであり、したがって、多くの処理ユニット設計において、命令バッファ・ロジック２２８は、特定の処理ユニット設計で実行されるすべての命令をバッファするグローバル命令バッファ・ロジックと見なすことができる。命令バッファ・ロジック２２８には主に、上述のとおりより下位のメモリから命令キャッシュ（図示せず）への命令フェッチを管理して、命令キャッシュ内の各命令の実行準備が整ったときに各命令が命令キャッシュ内で確実に利用できるようにする命令フェッチ・ロジック２３０によってフェッチされた命令が供給される。また、命令バッファ・ロジック２２８には、命令バッファ・ロジックの上流に所在し、コマンドに応答して命令バッファ・ロジック２２８内の命令バッファに対して一続きの命令を発行することが可能な、任意選択のグローバル・マイクロコード・ユニット又はシーケンサ２３２からの命令が供給されることもある。
【００６８】
グローバル・マイクロコード・ユニット又はシーケンサ２３２に加えて又はその代わりに、処理ユニット２００は、実行ユニットのサブセット、例えば図５に示される実行ユニット２０４のような単一の実行ユニットにのみ関連付けられる、実行ユニット固有の命令ブロック・シーケンサ・ロジック２３４を含む。命令ブロック・シーケンサ・ロジック２３４は、命令バッファ・ロジック２２８の下流の、命令バッファ・ロジック２２８と実行ユニット２０４の中間に配設されており、特定のハードウェア・スレッドに関連する専用シーケンサ命令に応答して、当該スレッドに対して発行されるより新しい命令をすべてブロックし、関連する実行ユニット２０４に対して命令を順次発行することにより、フィルタリング処理のような長レイテンシ処理を構成する一連の命令の発行を開始する。
【００６９】
図示の実施形態の命令ブロック・シーケンサ・ロジック２３４は、複数のハードウェア・スレッド固有マルチプレクサ２３８、段階ラッチ２４０、及びフィードバック・マルチプレクサ２４２を含むブロック・ロジックと結合されたシーケンサ２３６のようなシーケンサ・ロジックを含む。図示の実施形態において、各マルチプレクサ２３８は、特定のハードウェア・スレッドに割り当てられ、命令バッファ・ロジック２２８のスレッド固有出力と、その特定のスレッドに関する発行パイプラインとの中間に配設され、それ自体の第１の入力が、命令バッファ・ロジック２２８のスレッド固有出力から関連するフィードバック・マルチプレクサ２４２及び段階ラッチ２４０を介して命令を受け取るように構成されている。通常、各マルチプレクサ２３８、２４２は、例えば実行ユニット２０２に関する発行パイプラインの場合と同様に、実行ユニット２０４に関する発行パイプラインに命令が供給されるように、命令バッファ・ロジック２２８から関連するハードウェア・スレッドについて出力された命令を関連する発行パイプラインに渡す。
【００７０】
各マルチプレクサ２３８は、シーケンサ２３６の命令出力と結合された第２の入力も含む。また、（例えば図５に示さない選択信号を介して）どの入力を各マルチプレクサ２３８の出力に渡すかの選択も、やはりシーケンサ２３６によって制御される。また、各マルチプレクサ２４２は、関連する段階ラッチ２４０の出力からのフィードバック経路も含んでおり、そこでは、段階ラッチ２４０に記憶されている現在の命令が段階ラッチに選択的にフィードバックされ、したがってシーケンサ２３６が関連するマルチプレクサ２３８の第２の入力に命令を出力している間、命令が効果的に停止されるように、各マルチプレクサ２４２の選択入力がシーケンサ２３６によって制御される。関連するスレッドからの命令を効果的にブロックするために、シーケンサ２３６からその他の上流段階ならびに命令バッファ・ロジック２２８に追加的な停止信号を出力することもできる。
【００７１】
したがって、各マルチプレクサ２３８は、第２の入力が選択されたときにシーケンサ２３６から出力される命令が関連するスレッドの関連する発行パイプラインに渡されるように構成されている。また、マルチプレクサ２３８の第１の入力が選択解除されたときは、関連するマルチプレクサ２４２のフィードバック入力が選択され、命令バッファ・ロジック２２８及びその他の上流段階に対して停止信号がアサートされ、命令バッファ・ロジック２２８内で発行を待つ関連するスレッドを対象とする命令が効果的にブロックされる。
【００７２】
シーケンサ２３６は、特定のハードウェア・スレッドに関連し、シーケンサ命令として（例えばオペコード（ｏｐｃｏｄｅ）を介して）フォーマット化された命令が命令バッファ・ロジック２２８から受信されたことに応答して、シーケンサ命令と同一のハードウェア・スレッドに関連するマルチプレクサ２３８の第２の入力を選択し、関連するマルチプレクサ２４２のフィードバック入力を選択し、命令バッファ・ロジック２２８に対して停止信号をアサートし、当該シーケンサ命令に関連する長レイテンシ処理に関連する一続きの命令をマルチプレクサ２３８の第２の入力に出力する。その間は、命令バッファ・ロジック２２８から関連する発行パイプラインへの他の命令の受け渡しはブロックされる。
【００７３】
図６では、例えばシーケンサ２３６によって実行され得る例示的な一続きの処理が２５０で示されている。特に、シーケンサ２３６は、ブロック２５２でシーケンサ命令の受信を待つことができる。そのような命令が受信されると、制御がブロック２５４に渡されて、例えばシーケンサ命令を発行したハードウェア・スレッドに関連するマルチプレクサ２３８、２４２を上述のように制御し、命令バッファ・ロジックを停止させることにより、当該スレッドからの新しい命令がブロックされる。
【００７４】
次にブロック２５６で、シーケンサ命令に関連するシーケンス内の最初の命令を指すようにシーケンサが初期化される。シーケンサ２３６は、例えば単一の長レイテンシ処理及び関連するシーケンスだけをサポートすることも、そのような処理及びシーケンスを複数サポートすることもできることが理解されるであろう。別個のシーケンサ命令を異なる長レイテンシ処理と関連付けることができ、それらのシーケンサ命令は、例えば一意のオペコード又は一意の２次オペコードによって、あるいはオペランドを利用して（例えばシーケンサによってサポートされる複数のシーケンスのうちの１つに対する索引（インデックス）をオペランド・レジスタに記憶することによって）互いに区別することができる。
【００７５】
次にブロック２５８で、シーケンサ２３６は、選択されたシーケンス内の最初の命令をブロックされたハードウェア・スレッドの発行パイプラインに出力し、制御がブロック２６０に渡されて、シーケンス内の最後の命令がシーケンサ２３６から出力されたかどうかが判定される。出力されていない場合には、制御がブロック２６２に渡されてシーケンス内の次の命令に移行し、その後制御がブロック２５８に渡されると、シーケンス内の次の命令がブロックされたスレッドに出力される。
【００７６】
シーケンス内の最後の命令がシーケンサ２３６から出力されると、ブロック２６０からブロック２６４に制御が渡されて、ブロックされたスレッドが（例えば当該スレッドに関連するマルチプレクサ２３８、２４２を上述のように制御し、停止信号をデアサートすることによって）アンブロックされる。その後、制御がブロック２５２に渡されて、後続のシーケンサ命令まで待機する。
【００７７】
本明細書に記載される命令ブロック・シーケンサ・ロジックは事実上、特定のコンピューティング用途で望まれ得る任意の長レイテンシ処理を実行するのに使用することができ、例えばフィルタリング処理、除算演算、平方根演算、暗号化／セキュリティ処理、圧縮／解凍処理、高速フーリエ変換のような変換処理、あるいはレイテンシが長く、典型的には実行パイプライン内で複数のパスが必要となる他の任意の処理を実行するのに使用することができることが理解されるであろう。
【００７８】
図示の実施形態において、命令ブロック・シーケンサ・ロジックは、処理の実行が開始される前に、長レイテンシ処理に必要とされるすべてのデータがレジスタ・ファイルにロードされているものと仮定することが望ましい。このように仮定することで、同様のタイプの処理を実行するように構成されたグローバル・マイクロコード・ユニットを用いる場合に生じ得る、ロード命令に関連するデータ位置合わせ問題やキャッシュ・ミスのような複雑さが回避される。命令ブロック・シーケンサ・ロジックによる処理の実行が完了すると、その結果は、典型的には元のシーケンサ・コマンドで指定されるレジスタ・ファイル内のアドレスに記憶される。また、命令ブロック・シーケンサ・ロジックは、従来の典型的なマイクロコード・ユニットの場合のようにすべての実行ユニットを包含する「最上位」の命令バッファ・レベルではなく、単一の実行ユニットと結合されている故に、回路面積が縮小され得るとともに命令ブロック・シーケンサ・ロジックの複雑さも軽減され、また、マイクロコード・エンジンを起動するオーバーヘッドが回避されること、及び命令ブロック・シーケンサ・ロジックが処理を実行している間も他の実行ユニットがいくつかの処理を継続することができることにより、性能が大幅に改善される可能性がある。
【００７９】
ただし、本発明に係る命令ブロック・シーケンサ・ロジックから出力されるシーケンスは、例えばシーケンサによって必要とされる入力データをロードし、又はシーケンサによって生成された出力データを記憶する、長レイテンシ処理に関連するロード操作又はストア操作あるいはその両方を含むこともあれば含まないこともあることを理解していただきたい。また、結果を記憶すべきターゲット（単数又は複数）、又はシーケンサによって使用されることになる入力データのソース（単数又は複数）、あるいはその両方は、シーケンサ命令において例えばそれ自体のオペランドとして指定することができ、また、シーケンサ用に事前定義することができる。例えば、そのシーケンスの入力データに関する第１のレジスタを識別するのに必要となるシーケンサ命令内のオペランドが１つだけであること、また、他の入力データは次のＮ個のレジスタに順次記憶されるものと仮定することが望ましい可能性がある。本発明によれば、他の手法を使用して入力データをシーケンスに提供し、シーケンスからの出力データを記憶することもできる。
【００８０】
上述のとおり、本発明に係る命令ブロック・シーケンサ・ロジックを使用していくつかの異なるタイプの長レイテンシ処理を実行することができる。一例として、命令ブロック・シーケンサ・ロジックを利用して３Ｄラスタ化アルゴリズムで使用されるバイリニア・フィルタリング処理を実行することが望ましい可能性もある。バイリニア・フィルタリングでは、テクスチャ・サンプルの座標を使用して、当該サンプルの座標位置がピクセルの中心にどれだけ近いかによって重み付けされる４つの隣接ピクセルの加重平均がとられる。
【００８１】
バイリニア・フィルタリング後の最終的な各ピクセルを計算するアルゴリズムは、典型的には以下の表１に示すように計算される。
【表１】
2010097593.tif 000003
【００８２】
ここで、uf及びvfは、浮動小数点フォーマットのサンプル点のテクスチャ座標であり、ru及びrvは、それぞれuf及びvfの座標(fmod(uf,1.0), fmod(vf,1.0))の小数部分であり、ui及びviは、テクスチャ座標の整数部分であり、texcolor(u,v)は、u, vにおけるテクセルのカラーである。図７は、これらの変数のグラフ図である。
【００８３】
本質的に、上述のバイリニア・フィルタリング・アルゴリズムは、ピクセルの中心が整数境界（ｉｎｔｅｇｅｒ  ｂｏｕｎｄａｒｙ）（ui, vi）にあるものと仮定し、元のテクスチャ・サンプル点と各テクセルとの間の近接性によって重み付けされるテクスチャ・マップから、最も近い４つのテクセルの加重平均をとる。本発明によれば、計算量がずっと多くなる他のタイプのテクスチャ・フィルタリング（例えばトライリニア・フィルタリング及び異方性フィルタリング）を使用することもできるが、以下の論述では説明を簡単にするためにバイリニア・フィルタリングに焦点を当てる。
【００８４】
例えばＰｏｗｅｒアーキテクチャＶＭＸ１２８命令セットをサポートする従来のベクトル浮動小数点実行ユニットは、以下の表２に示される命令ストリームを使用してバイリニア・フィルタリング処理を達成することができる。
【表２】
2010097593.tif 000004
【００８５】
ここで、uf及びvfは、元のテクスチャ・サンプル点の浮動小数点座標であり、addr_row1は、１つ目のテクセル（４つのテクセルのうちの左上のテクセル）のアドレスであり、addr_row2 は、３つ目のテクセル（４つのテクセルのうちの左下のテクセル）のアドレスであり、各テクセルは１６バイト、テクスチャ・データは典型的な様式で走査線内に編成されるものと仮定している。フィルタリング後のピクセル結果はwavgに記憶される。
【００８６】
しかしながら、本発明によれば、上述の命令ストリームは、命令ブロック・シーケンサ・ロジック内で実行することができ、当該シーケンスを実行するようにシーケンサ・ロジックをトリガするためにシーケンサ命令がデコードされたことに応答して、かかるロジックによって出力することができる。命令ブロック・シーケンサ・ロジックをトリガするのに使用され得るシーケンサ命令の例示的なフォーマットを以下の表３に示す。
【表３】
2010097593.tif 000005
【００８７】
この命令フォーマットでは、wavg、uf、vf、addr_row1、及びaddr_row2の各パラメータが命令内で指定されるものと仮定する。別法として、シーケンサは単に、それらのソース・オペランドが常に所定のレジスタ内に所在するものと仮定することもできる。別法として、シーケンサ命令は、残りのオペランドが連続する次のレジスタ内に所在するものと仮定して、開始レジスタを指定することができる。また、シーケンス内で使用される定数は一定のレジスタ内に所在するものと仮定することができ、あるいはそれらをシーケンスによって生成することもできる。
【００８８】
したがって、本発明の諸実施形態を用いると、テクスチャ・フィルタリングのような複雑な長レイテンシ処理を、フル・マイクロコード・ユニットではなく小型の実行ユニット固有シーケンサによって実行することが可能となる。本構成を用いると、従来のマイクロコード・ユニットに関連する性能上の問題を回避しながら、長レイテンシ処理を必要とするアプリケーションの柔軟性を大幅に高めることが可能となる。特に、命令バッファ・ロジックの上流に配設されるグローバル・マイクロコード・ユニット又はシーケンサを用いる場合は通常実行パイプラインのフラッシュが必要となるが、命令バッファ・ロジックの下流に配設される本発明に係る命令ブロック・シーケンサ・ロジックでは、典型的には実行パイプラインをフラッシュする必要がなく、シーケンサ・ロジックが一続きの命令を実行ユニットに出力している間、後続の命令をブロックするだけで済む。更に、発行バッファ・ロジックは、シーケンサ・ロジックが一続きの命令を出力している間もなお、他の実行ユニットによって実行される命令を出力することができ、また、マルチスレッド型発行ロジックが利用される場合は、シーケンサ・ロジックが一続きの命令を現在出力している実行ユニットと同一の実行ユニットに対して、他のハードウェア・スレッドからの命令をなおも発行することができ、そのため、他の命令ストリームへの悪影響を最小限に抑えることが可能となる。
【００８９】
本発明の趣旨及び範囲から逸脱しない限り、様々な修正を施すことができる。例えば、すべてのハードウェア・スレッドについて単一のシーケンサを利用する代わりに、異なるスレッドに対する並行シーケンス出力をサポートすることができ、また、各ハードウェア・スレッド毎に別個のシーケンスを利用することもできる。他の修正形態も当業者には明らかとなるだろう。したがって、本発明の範囲は添付の特許請求範囲に示される。
【符号の説明】
【００９０】
１０  ホスト・コンピュータ
１２  プロセッサ
１４  ＲＡＭ
１６  高速メモリ・バス
１８  バス・アダプタ
２０  アプリケーション
２２  オペレーティング・システム
２４  データ・ストレージ
２６  ＮＯＣビデオ・アダプタ
２８  ＮＯＣコプロセッサ
３０  表示デバイス
３２  高速ビデオ・バス
３４、３６  フロント・サイド・バス
３８  ディスク・ドライブ・アダプタ
４０  拡張バス
４２  Ｉ／Ｏアダプタ
４４  ユーザ入力デバイス
４６  通信アダプタ
４８  他のコンピュータ
５０  ネットワーク
１００  チップ
１０２  ネットワーク・オン・チップ（ＮＯＣ）
１０４  ＩＰブロック
１０６  メモリ通信コントローラ
１０８  ネットワーク・インターフェース・コントローラ
１１０  ルータ
１１２  オフ・チップ・メモリ
１１４  オン・チップ・メモリ
１１６  オン・チップ・メモリ
１１８  リンク
１２０、１２２  ＭＭＵ
１２４、１２６、１３０  ポート
１３４  プロセッサ
１３６  Ｉ／Ｏ機能部
１３８  ＲＡＭ
１４０  メモリ通信実行エンジン
１４１、１４２、１４４  双方向メモリ通信命令フロー
１４６  ネットワーク・アドレス指定通信
１４８  仮想チャネル実装ロジック
１５０  命令変換ロジック
１５２  ルーティング・ロジック
１５４  仮想チャネル制御ロジック
１５６  仮想チャネル・バッファ
１５８Ａ〜１５８Ｄ、１６０  ポート
１６２  発行ユニット（ＩＵ）
１６４  実行ユニット（ＸＵ）
１６６  補助実行ユニット（ＡＸＵ）
１６８  命令バッファ
１７０  ｉＣＡＣＨＥ
１７２  ｉＥＲＡＴ
１７４  スレッド・フェッチ・シーケンサ
１７６  分岐予測
１７８  依存関係／発行
１８０  補助依存関係／発行
１８４  固定小数点
１８６  分岐
１８８  ロード／ストア
１９０  ｄＣＡＣＨＥ
１９２  ｄＥＲＡＴ
１９４  実行ブロック
２００  処理ユニット
２０２、２０４  実行ユニット
２０６  発行ロジック
２１０  レジスタ・ファイル
２１４  デコード・ロジック
２１８  依存関係ロジック
２２２  発行選択ロジック
２２４  マルチプレクサ
２２８  命令バッファ
２３０  命令フェッチ・ロジック
２３２  マイクロコード／シーケンサ
２３４  命令ブロック・シーケンサ・ロジック
２３６  命令ブロック・シーケンサ
２３８、２４２  マルチプレクサ
２４０  段階ラッチ
２４２  フィードバック・マルチプレクサ
【図１】
2010097593.tif 000006
【図２】
2010097593.tif 000007
【図３】
2010097593.tif 000008
【図４】
2010097593.tif 000009
【図５】
2010097593.tif 000010
【図６】
2010097593.tif 000011
【図７】
2010097593.tif 000012