JP5629068B2 - 命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニットによる命令実行のための回路構成、集積回路デバイス、プログラム、及び方法 - Google Patents

命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニットによる命令実行のための回路構成、集積回路デバイス、プログラム、及び方法 Download PDF

Info

Publication number
JP5629068B2
JP5629068B2 JP2009191947A JP2009191947A JP5629068B2 JP 5629068 B2 JP5629068 B2 JP 5629068B2 JP 2009191947 A JP2009191947 A JP 2009191947A JP 2009191947 A JP2009191947 A JP 2009191947A JP 5629068 B2 JP5629068 B2 JP 5629068B2
Authority
JP
Japan
Prior art keywords
logic
instructions
instruction
execution
sequencer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009191947A
Other languages
English (en)
Other versions
JP2010097593A (ja
Inventor
マシュー・レイ・タブス
アダム・ジェイムズ・マフ
エリック・オリヴァー・メユドリヒ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010097593A publication Critical patent/JP2010097593A/ja
Application granted granted Critical
Publication of JP5629068B2 publication Critical patent/JP5629068B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22—Microcontrol or microprogram arrangements
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003—Arrangements for executing specific machine instructions
    • G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009—Thread control instructions
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Description

本発明は一般にデータ処理に関するものであり、特に、プロセッサ・アーキテクチャ及び当該プロセッサ・アーキテクチャに組み込まれる実行ユニットに関するものである。
半導体技術のクロック速度の向上が事実上の限界点に近付くにつれ、設計者達は、性能改善を実現するためにプロセッサ・アーキテクチャの並列処理に焦点を当てるようになっている。チップ・レベルではしばしば複数のプロセッサ・コアが同一のチップ上に配設されるが、それらは別個のプロセッサ・チップとほぼ同じ機能を実現し、あるいはある程度まで完全に別個のコンピュータが存在する場合と同じ機能を実現する。また、コア内部においても、一定のタイプの処理を実行するように特殊化された複数の実行ユニットを利用した並列処理が採用されている。多くの例では、実行に複数のクロック・サイクルを要する可能性がある一定の処理が複数の段階に分割され、その結果先行する処理が完了する前に他の処理を開始することが可能となるパイプライン処理も採用されている。また、複数の命令ストリームを並列処理することが可能となり、その結果所与の任意のクロック・サイクル中に実行される全体の作業量を増加させることが可能となる、マルチスレッド処理も採用されている。
並列処理が継続利用される領域の1つは、実行ユニットの領域、例えば固定小数点実行ユニットや浮動小数点実行ユニット等の領域である。例えば、多くの浮動小数点実行ユニットは、かなりの程度パイプライン化されている。しかしながら、パイプライン処理によって性能が改善される可能性はあるが、パイプライン処理は、パイプラインによって処理される命令が互いに依存しない場合、例えば後続の命令が先行する命令の結果を使用しない場合に最も効率的となる。ある命令が別の命令の結果に影響を及ぼす場合、後続の命令は、典型的には先行する命令がパイプラインを抜けそれ自体の結果を計算するまでそのパイプラインに入ることはできない。この場合、後続の命令は先行する命令に依存すると考えられ、また、後続の命令が先行する命令の結果が出るまで停止(stall)する現象により、「バブル(bubble)」、即ち生産的な処理が何ら実行されないサイクルがパイプラインに導入されることが考えられる。
パイプライン化された実行ユニットの使用率を向上させ、使用されないバブルを解消するのに使用可能な1つの技法は、マルチスレッド処理を導入することである。このようにすれば、他のスレッドがパイプライン内の不使用スロット内に命令を発行することが可能となり、それによって使用率が高まり、したがって総スループットも高まることになる。性能を高める別の一般的な技法は、データの「ベクトル化(vectorizing)」とも呼ばれる単一命令複数データ(single instruction multiple data:SIMD)アーキテクチャを使用することである。このようにすると、処理は、複数のデータ要素に対して同時に実行され、また、同一のSIMD命令に応答して実行される。SIMD又はベクトル実行ユニットは、典型的にはベクトル内の様々なデータ・ポイントを処理し、すべてのデータ・ポイントに対して同様の処理を同時に実行する複数の処理レーン(processing lane)を含む。例えば、クワッド(4)ワード・ベクトルを利用するアーキテクチャでは、SIMD又はベクトル実行ユニットは、各ベクトル内の4つのワードに対して同一の処理を実行する4つの処理レーンを含むことができる。
上述の技法を互いに組み合わせることにより、複数のスレッドがSIMD実行ユニットにSIMD命令を発行して各データ・ポイントの「ベクトル(vector)」を同時に処理することを可能にする、マルチスレッド型ベクトル実行ユニット・アーキテクチャを提供することもできる。
また、複数の実行ユニットを同一のプロセッサ内で利用することによって並列処理性を高めることもできる。複数の実行ユニットは、異なるタイプの命令を処理するように特殊化することも、同一のタイプの命令を処理するように構成することも同様に可能である。
典型的には、スケジューリング・アルゴリズムを発行ロジック(issue logic)と共に利用することにより、実行ユニット・パイプライン(単数又は複数)内のバブル数を最小限に抑えながら、マルチスレッド・アーキテクチャにおける各スレッドが妥当な速度で進行できることが保証される。また、複数の実行ユニットが使用される場合、そのような実行ユニットに対する命令の発行は、同一の発行ユニットによって処理することも別個の発行ユニットによって処理することもできる。
プロセッサの性能を改善するのに使用され得る別の技法は、マイクロコード・ユニット又はシーケンサを利用して、実行ユニットによって実行される命令を自動的に生成することである。マイクロコード・ユニット又はシーケンサは、例えば命令セット内の専用命令を介してコマンドに応答し、プロセッサによって実行される命令シーケンスを応答時に出力する。ソフトウェア手順を使用して反復可能な一続きのステップをソフトウェア・プログラム内のプロシージャ・コールに応答して実行する場合とほぼ同様に、マイクロコード・ユニット又はシーケンサは、反復可能処理の実行コマンド又は命令によってトリガすることができる。
マイクロコード・ユニット又はシーケンサは、長レイテンシ処理(long latency operation)、即ち実行時間が比較的長い処理の実行に特に有益であり、パイプライン化された実行ユニットの場合は、しばしば実行パイプライン内で複数のパス(pass)が必要となる。マイクロコード・ユニット又はシーケンサの使用に利点が見出され得る長レイテンシ処理の一例は、画像処理、例えばグラフィック画像のラスタ化中に実行されるテクスチャ処理である。ラスタ化は、画面上に投影された3次元ジオメトリが適切なカラー及び輝度のピクセルで「埋められる(filled in)」3Dグラフィックスのプロセスである。典型的には、シーン内に配置された幾何オブジェクト上にテクスチャをペイントするために、ラスタ化プロセスにテクスチャ・マッピング・アルゴリズムが組み込まれる。
シーン内の配置オブジェクトにテクスチャをペイントするために、当該オブジェクトを構成する各プリミティブ内のピクセルは、典型的には3Dシーン又はワールド座標(例えばx,y,z)から、プロシージャル・テクスチャ又はビットマップ・テクスチャ(例えばu,v)に対する2D座標に変換される。テクスチャ内の基本要素はテクセル(texel)(又はテクスチャ・ピクセル)と呼ばれる。各テクセルはテクスチャの基本要素であり、単一のカラーと関連付けられる。配置される幾何プリミティブ表面の観察者(viewer)に対する向き及び距離は様々である故に、画像バッファ内のピクセルがテクスチャ内の単一のテクセルに対応することは稀である。その結果、典型的にはテクスチャ・フィルタリングを実行して、ピクセル内のテクスチャ・マッピング位置に近接した複数のテクセルのカラーに基づいてピクセルに割り当てるべきカラーを判定する。
ピクセルのカラーは、他のアルゴリズムの中でもとりわけ、単純補間(interpolation)、バイリニア・フィルタリング、トライリニア・フィルタリング、及び異方性フィルタリングを含めたいくつかのテクスチャ・フィルタリング・アルゴリズムを使用して判定され得る。様々なテクスチャ・フィルタリング・アルゴリズムを用いていくつかの隣接テクセル(texel)の重みが計算され、これらの重みを使用して隣接テクセルのカラーがスケーリングされ、スケーリングされた隣接テクセルのカラーを合計することによってピクセルのカラーが割り当てられる。その後、ピクセルのカラーはフレーム・バッファ内のピクセル位置に記憶され、又はピクセル位置に既に記憶されているカラーを更新するのに使用される。
例えば、バイリニア・フィルタリングでは、テクスチャ・サンプルの座標を使用して、当該サンプルの座標位置がピクセルの中心にどれだけ近いかによって重み付けされる4つの隣接ピクセルの加重平均がとられる。バイリニア・フィルタリングでは多くの場合、手前側の細部のブロック歪み(blockiness)は低減され得るが、しばしば奥側の細部で発見されるノイズについては殆ど低減されない。
トライリニア・フィルタリングでは、より低い解像度に連続的にスケーリングされる1組のプレフィルタリング・テクスチャ画像を使用するMIPマッピングが使用される。このアルゴリズムでは、カメラに近いジオメトリ部分ではテクスチャ解像度が高くなり、カメラから遠いジオメトリ部分ではテクスチャ解像度が低くなるテクスチャ・サンプルが使用される。MIPマッピングでは多くの場合、近位置のピクセル化及び遠位置のノイズが低減されるが、しばしば遠位置の細部が失われ、不必要なぼやけが発生することが多い。このようなぼやけ(blurrness)は、テクスチャ圧縮率が最大となる方向に対して垂直方向に解像度が低下するようにx次元とy次元の両方において低い解像度に事前にスケーリングされたテクスチャのMIPレベルから、テクスチャ・サンプルが取得されることに起因する。
異方性フィルタリングでは、テクスチャ圧縮率が最大となる方向に延びる「異方性ライン(line of anisotropy)」に沿って複数のサンプルが取得される。これらのサンプルをそれぞれバイリニア・フィルタリング又はトライリニア・フィルタリングにかけた後、その結果の平均をとることができる。このアルゴリズムを用いると、圧縮を一方向にのみ行うことが可能となる。そうすることにより、遠位置の構造体ほどぼやけの発生が少なくなる。
上述のフィルタリング計算はしばしば長レイテンシ処理となるが、従来のマイクロコード・ユニット又はシーケンサには、プロセッサ内、特に複数の実行ユニットを利用するマルチスレッド型プロセッサ内のフィルタリング計算の実行に関連して使用される各種コンポーネントが部分最適となるいくつかの欠陥が存在することが分かっている。特に、従来のマイクロコード・ユニット又はシーケンサは、典型的にはプロセッサの命令バッファ・ロジックの上流に所在し、したがって当該命令バッファ・ロジックの入力と結合されている。
多くの設計では、1つ又は複数の命令バッファを含む可能性がある同一の命令バッファ・ロジックが、プロセッサ内のすべての実行ユニットによって実行される命令をバッファリングする。命令フェッチ・ロジックは、典型的にはプロセッサ上で現在実行されているプログラムに関する命令をメモリから(例えば命令キャッシュから)フェッチし、それらの命令を1つ又は複数の命令バッファに記憶する。各命令はその後実行のために実行ユニットに渡される。複数の実行ユニットが同一の命令バッファ・ロジックによってサービスされる場合は、スケジューリング・ロジックを使用して命令が適切な実行ユニットに対して発行される。また、実行ユニットがマルチスレッド化されている場合は、スケジューリング・ロジックは複数のスレッドからの命令の発行を管理する。
命令バッファ・ロジックの上流に結合される従来のマイクロコード・ユニット又はシーケンサには、かかるコンポーネントを実装することでプロセッサの性能が低下する恐れがあるいくつかの欠陥が存在する。例えば、従来の殆どのマイクロコード・ユニット又はシーケンサは、シーケンスを開始するにあたり、例えば当該シーケンスの命令をフェッチすべきアドレスを計算するためにいくつかのサイクルを要する。また、マイクロコード・ユニット又はシーケンサが命令バッファ・ロジックの上流に所在することにより、マイクロコード・ユニット又はシーケンサのトリガ命令をデコードする際は、典型的には所望のシーケンスを開始する前に、実行パイプラインに対して既に発行されたより新しい命令をフラッシュ(出力)しておく必要が生じる可能性がある。
また、従来のマイクロコード・ユニット又はシーケンサは、すべての実行ユニットをサービスする命令バッファ・ロジックの上流に所在するため、典型的には、あるシーケンスが実行されるときは常に、すべての実行ユニット上で当該命令バッファの他のすべての命令の実行がブロックされることになる。それ故、シーケンスが実行される際、マルチスレッド型マルチ実行ユニット・プロセッサは事実上、シングル・スレッド型シングル実行ユニット・プロセッサとして機能することになり、その結果、シーケンス実行時のプロセッサの並列処理が大幅に制限されることになる。
したがって、当業界では、マルチ実行ユニット・プロセッサにおけるフィルタリング処理のような長レイテンシ処理の性能を改善することが必要とされている。
本発明は、複数の実行ユニットを利用する処理ユニット内の命令バッファ・ロジックの下流に配設され、命令ストリーム内に所在するシーケンサ命令に応答するシーケンサ・ロジックを利用することにより、従来技術に関連する上記及び他の課題を解決するものである。そのような命令に応答して、シーケンサ・ロジックは、長レイテンシ処理に関連する複数の命令を1つの実行ユニットに対して発行するとともに、命令バッファ・ロジックからの命令が当該実行ユニットに対して発行されるのをブロックする。また、実行ユニットに対する命令の発行をこのようにブロックしても他の実行ユニットに対する命令の発行には影響が及ばず、したがって、シーケンサ・ロジックが長レイテンシ処理に関連する複数の命令を発行している間もなお、命令バッファ・ロジックからの他の命令を他の実行ユニットに発行し、それらの実行ユニットによって実行することが可能である。命令バッファの下流にシーケンサ・ロジックを実装することにより、従来のマイクロコード・ユニットに関連する起動及び他のレイテンシを低減あるいは解消することが可能となり、また、シーケンサ・ロジックが長レイテンシ処理に関する命令を発行している間も他の実行ユニットが命令の実行を継続できるようにすることにより、全体的な性能を改善することが可能となる。
本発明の一態様によれば、回路配置構成(circuit arrangement)は、第1及び第2の実行ユニットと、少なくとも1つの命令ストリームに由来する命令を前記第1及び第2の実行ユニットに供給するように構成された命令バッファ・ロジックと、前記命令バッファ・ロジックと前記第1の実行ユニットとの中間に結合されたシーケンサ・ロジックと、を含む。前記シーケンサ・ロジックは、前記命令ストリームに由来するシーケンサ命令に応答して、長レイテンシ処理に関連する複数の命令を前記第1の実行ユニットに対して順次発行するとともに、前記複数の命令が前記第1の実行ユニットによって実行されるように、前記命令バッファ・ロジックからの命令をブロックするように構成される。また、前記第2の実行ユニットは、前記シーケンサ・ロジックが前記命令バッファ・ロジックからの命令をブロックしている間に、前記命令バッファ・ロジックから前記第2の実行ユニットに供給された命令を実行するように構成される。
本発明の別の態様によれば、第1及び第2の実行ユニットと、少なくとも1つの命令ストリームに由来する命令を前記第1及び第2の実行ユニットに供給するように構成された命令バッファ・ロジックとを含むタイプの処理ユニットにおいて、命令が実行される。前記命令ストリームに由来するシーケンサ命令が受け取られたことに応答して、前記命令バッファ・ロジックと前記第1の実行ユニットとの中間に結合されたシーケンサ・ロジックを使用して、長レイテンシ処理に関連する複数の命令が前記第1の実行ユニットに対して順次発行され、前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間は、前記第1の実行ユニットに対する前記命令バッファ・ロジックからの命令の発行がブロックされ、前記第1の実行ユニットに対する命令の発行がブロックされている間に、前記命令バッファ・ロジックからの少なくとも1つの命令が、前記第2の実行ユニットによる実行のために発行される。
本発明を特徴付ける上記及び他の利点ならびに特徴は、本明細書に添付されるとともに本明細書の一部を構成する特許請求範囲の各請求項に記載されている。しかしながら、本発明ならびに本発明の使用から得られる利点及び目的がより良く理解されるように、以下では本発明の例示的な諸実施形態が記載された添付図面を参照しながら本発明の説明を行う。
本発明の諸実施形態に係るデータ処理に利用される例示的なコンピュータを含む例示的な自動コンピューティング・マシンのブロック図である。 図1のコンピュータに実装される例示的なNOCのブロック図である。 図2のNOC(ネットワーク・オン・チップ)のノードの例示的な一実装環境をより詳細に示すブロック図である。 図2のNOCのIP(統合プロセッサ)ブロックの例示的な一実装環境を示すブロック図である。 本発明に係る命令ブロック・シーケンサ・ロジックが組み込まれ、図2のNOCのIPブロック内に実装することが可能な処理ユニットのブロック図である。 図5に示される命令ブロック・シーケンサ・ロジックの処理を示すフローチャートである。 ピクセルのテクスチャ・マッピングを示す、テクセル座標系のグラフ図である。
本発明に係る諸実施形態は、マルチ実行ユニット処理ユニット(multi‐execution unit processing unit)の命令バッファ・ロジックの下流に配設されたシーケンサ・ロジックを利用して、長レイテンシ処理に関連する複数の命令を処理ユニット内の実行ユニットに対して発行すると同時に、命令バッファ・ロジックから処理ユニット内の他のいずれかの実行ユニットへの命令の発行をブロックすることなく、当該実行ユニットに対する命令バッファ・ロジックからの命令の発行をブロックする。例えば、以下で論じる一実施形態において、マルチスレッド型マルチ実行ユニット処理ユニットは、当該スレッドに対して発行されるより新しい命令をすべてブロックし、実行ユニットに対して命令を順次発行することにより、テクスチャ・フィルタ処理(又は他の長レイテンシ処理)を実現する一連の命令の発行をコマンドに応答して開始する命令ブロック・シーケンサ(instruction blocking sequencer)を利用する。命令ブロック・シーケンサは、処理の実行が開始される前に、その処理に必要とされるすべてのデータがレジスタ・ファイルにロードされているものと仮定する。このように仮定することで、上記のタイプの処理を実行するように構成されたフル・マイクロコード・ユニットを用いる場合に生じ得る、ロード命令に関連するデータ位置合わせ問題やキャッシュ・ミスのような複雑さが回避される。命令ブロック・シーケンサによる処理の実行が完了すると、その結果は、元のシーケンサ・コマンドで指定されるレジスタ・ファイル内のアドレスに記憶される。また、命令ブロック・シーケンサは、従来の典型的なマイクロコード・ユニットの場合のようにすべての実行ユニットを包含する「最上位(top level)」の命令バッファ・レベルではなく、単一の実行ユニットと結合されている。単一の実行ユニットと結合されることにより、回路面積が縮小されるとともに設計の複雑さが軽減され、また、マイクロコード・エンジンを起動するオーバーヘッドが回避されること、及びシーケンサが処理を実行している間も他の実行ユニットがいくつかの処理を継続することができることにより、処理速度が大幅に向上する。
(ハードウェア及びソフトウェア環境)
ここで各図の同様の参照番号が同様の部分を指す添付図面を参照すると、図1には、本発明の諸実施形態に係るデータ処理に利用される例示的なコンピュータ10を含む例示的な自動コンピューティング・マシンが示されている。図1のコンピュータ10は、少なくとも1つのコンピュータ・プロセッサ12又は「CPU」と、高速メモリ・バス16及びバス・アダプタ18を介してプロセッサ12及びコンピュータ10の他のコンポーネントに接続されたランダム・アクセス・メモリ14(「RAM」)とを含む。
RAM 14には、例えばワード処理、スプレッドシート、データベース処理、ビデオ・ゲーム、株取引シミュレーション、原子の量子プロセス・シミュレーション、他のユーザ・レベル・アプリケーション等、特定のデータ処理タスクを実行するユーザ・レベルのコンピュータ・プログラム命令のモジュールであるアプリケーション・プログラム20が記憶されている。RAM 14には、オペレーティング・システム22も記憶されている。本発明の諸実施形態と共に利用されるオペレーティング・システムには、UNIX(商標)、Linux(商標)、Microsoft Windows XP(商標)、AIX(商標)、IBMのi5/OS(商標)、及び当業者によって想到される他のオペレーティング・システムが含まれる。図1の例のオペレーティング・システム22及びアプリケーション20はRAM 14内に示されているが、そのようなソフトウェアの多くのコンポーネントは、典型的には不揮発性メモリ、例えばディスク・ドライブ24上に記憶される。
以下でより明らかとなるように、本発明に係る諸実施形態は、ネットワーク・オン・チップ(Network On Chip:NOC)集積回路デバイス又はチップ内に実装することができ、そのため、コンピュータ10は、2つの例示的なNOC、即ちビデオ・アダプタ26及びコプロセッサ28を含むように示されている。グラフィックス・アダプタと呼ばれることもあるNOCビデオ・アダプタ26は、表示画面やコンピュータ・モニタのような表示デバイス30へのグラフィック出力用に特別に設計されたI/Oアダプタの一例である。NOCビデオ・アダプタ26は、高速ビデオ・バス32、バス・アダプタ18、及びやはり高速バスであるフロント・サイド・バス34を介してプロセッサ12に接続されている。NOCコプロセッサ28は、バス・アダプタ18、フロント・サイド・バス34、及びやはり高速バスであるフロント・サイド・バス36を介してプロセッサ12に接続されている。図1のNOCコプロセッサは、例えばメイン・プロセッサ12の命令に従って特定のデータ処理タスクを加速するように最適化することができる。
図1の例示的なNOCビデオ・アダプタ26及びNOCコプロセッサ28はそれぞれ、図2及び図3に関して以下でより詳細に論じる統合プロセッサ(integrated processor:「IP」)ブロック、ルータ、メモリ通信コントローラ、及びネットワーク・インターフェース・コントローラを含むNOCを含む。NOCビデオ・アダプタ及びNOCコプロセッサはそれぞれ、並列処理を使用するとともに共有メモリへの高速ランダム・アクセスも必要とするプログラム用に最適化されている。しかしながら、本開示内容の利益を享受する当業者には、本発明をNOCデバイス及びNOCデバイス・アーキテクチャ以外のデバイス及びデバイス・アーキテクチャに実装することができることが理解されるであろう。したがって、本発明はNOCデバイス内の実装に限定されるものではない。
図1のコンピュータ10は、拡張バス40及びバス・アダプタ18を介してプロセッサ12及びコンピュータ10の他のコンポーネントと結合されたディスク・ドライブ・アダプタ38を含む。ディスク・ドライブ・アダプタ38は、ディスク・ドライブ24の形をとる不揮発性データ・ストレージをコンピュータ10に接続するものであり、例えば統合ドライブ・エレクトロニクス(Integrated Drive Electronics:「IDE」)アダプタ、小型コンピュータ・システム・インターフェース(Small Computer System Interface:「SCSI」)アダプタ、及び当業者によって想到される他のアダプタを使用して実装することができる。不揮発性コンピュータ・メモリは、光ディスク・ドライブ、電気的消去再書込可能読み取り専用メモリ(いわゆる「EEPROM」又は「フラッシュ」メモリ)、RAMドライブ等、当業者によって想到されるドライブとして実装することもできる。
コンピュータ10は、例えばコンピュータ表示画面のような表示デバイスへの出力ならびにキーボードやマウスのようなユーザ入力デバイス44からのユーザ入力を制御するソフトウェア・ドライバ及びコンピュータ・ハードウェア等を介してユーザ指向入出力を実現する、1つ又は複数の入出力(「I/O」)アダプタ42も含む。また、コンピュータ10は、他のコンピュータ48との間のデータ通信、及びデータ通信ネットワーク50との間のデータ通信を行う通信アダプタ46も含む。このようなデータ通信は、RS‐232接続を介して、ユニバーサル・シリアル・バス(「USB」)のような外部バスを介して、IPデータ通信ネットワークのようなデータ通信ネットワークを介して、また当業者によって想到される他の手法で順次実行することが可能である。通信アダプタは、あるコンピュータが別のコンピュータに直接又はデータ通信ネットワークを介してデータ通信を送信する、ハードウェア・レベルのデータ通信を実現する。コンピュータ10での使用に適した通信アダプタの例としては、有線ダイヤル・アップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット(R)(IEEE 802.3)アダプタ、及び無線データ通信ネットワーク通信用の802.11アダプタが挙げられる。
更なる説明のために、図2は、本発明の諸実施形態に係る例示的なNOC 102の機能ブロック図を示す。図2のNOCは「チップ」100、即ち集積回路上に実装される。NOC 102は、それぞれ相互接続ノードにグループ化された統合プロセッサ(「IP」)ブロック104と、ルータ110と、メモリ通信コントローラ106と、ネットワーク・インターフェース・コントローラ108とを含む。各IPブロック104は、メモリ通信コントローラ106及びネットワーク・インターフェース・コントローラ108を介してルータ110と適合される。各メモリ通信コントローラは、IPブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ108は、ルータ110を介してIPブロック間の通信を制御する。
NOC 102において、各IPブロックは、NOC内のデータ処理用ビルディング・ブロックとして使用される同期又は非同期ロジック設計の再利用可能な単位を表す。「IPブロック」という用語は、「知的財産(intellectual property)ブロック」と展開されることもあり、その場合、IPブロックは事実上、一当事者によって所有され一当事者の知的財産となる、半導体回路の他のユーザ又は設計者にライセンスされるべきデザインとして指定されることになる。しかしながら、本発明の範囲において、IPブロックは必ずしも特定の所有権に属している必要はなく、したがって、「IPブロック」という用語は本明細書では常に「統合プロセッサ(integrated processor)ブロック」と展開される。本明細書に記載のIPブロックは、知的財産の対象であることも対象でないこともある論理設計、セル設計、又はチップ・レイアウト設計の再利用可能な単位を指す。IPブロックは、ASICチップ設計又はFPGA論理設計として形成され得る論理コアである。
一例として、NOC設計におけるIPブロックの存在は、コンピュータ・プログラミングにおけるライブラリの存在、あるいは印刷回路基板設計における個別集積回路コンポーネントの存在と同様である。本発明の諸実施形態に係るNOCにおいて、IPブロックは、一般ゲート・ネットリストとして、完全な専用マイクロプロセッサ又は汎用マイクロプロセッサとして、あるいは当業者によって想到され得る他の手法で実装することができる。ネットリストは、高水準プログラム・アプリケーション向けのアセンブリ・コード・リスティングに類似する、IPブロックの論理機能のブール代数表現(ゲート、スタンダード・セル)である。NOCは、例えばVerilogやVHDLのようなハードウェア記述言語で記述される合成可能な形で実装することもできる。ネットリスト及び合成可能な実装に加えて、NOCは低水準の物理的記述でも配布され得る。SERDES、PLL、DAC、ADC等のアナログIPブロック要素は、GDSIIのようなトランジスタ・レイアウト・フォーマットで配布され得る。IPブロックのデジタル要素もその時々にレイアウト・フォーマットで提供される。本発明に係るIPブロックならびに他の論理回路は、例えばそのようなロジックが実装された回路配置構成の機能又はレイアウトあるいはその両方を様々な詳細度で定義する論理定義プログラム・コードのようなコンピュータ・データ・ファイルの形で配布され得ることも理解されるであろう。このように、本発明は完全に機能する集積回路デバイス及びそのようなデバイスを利用するデータ処理システムの形で実装される回路配置構成の文脈で説明されているが、本開示内容の利益を享受する当業者なら、本発明に係る回路配置構成は様々な形態のプログラムとして配布することができ、実際の配布の際に使用される特定のタイプのコンピュータ可読媒体又は信号伝送媒体に関わらず、本発明が等しく応用されることを理解されるであろう。コンピュータ可読媒体又は信号伝送媒体の例としては、必ずしもそれだけに限定されるわけではないが、揮発性及び不揮発性メモリ・デバイス、フレキシブル・ディスク、ハード・ディスク・ドライブ、CD‐ROM、(特に)DVDのような物理的記録型媒体、及びデジタル通信回線やアナログ通信回線のような伝送型媒体が挙げられる。
図2の例における各IPブロック104は、メモリ通信コントローラ106を介してルータ110と適合される。各メモリ通信コントローラは、IPブロックとメモリとの間のデータ通信を実現するように適合された同期論理回路及び非同期論理回路の集合である。このようなIPブロックとメモリとの間の通信例としては、メモリ・ロード命令及びメモリ・ストア命令が挙げられる。メモリ通信コントローラ106については図3を参照しながら以下でより詳細に説明する。各IPブロック104は、ネットワーク・インターフェース・コントローラ108を介してルータ110とも適合され、ネットワーク・インターフェース・コントローラ108は、ルータ110を介するIPブロック104間の通信を制御する。IPブロック間の通信例としては、並列アプリケーション及びパイプライン型アプリケーションにおけるIPブロック間のデータ処理に関するデータ及び命令を搬送するメッセージが挙げられる。ネットワーク・インターフェース・コントローラ108についても図3を参照しながら以下でより詳細に説明する。
ルータ110とルータ間の対応するリンク118とが、NOCのネットワーク動作を実現する。リンク118は、すべてのルータを接続する物理的な並列ワイヤ・バス上で実現されるパケット構造とすることができる。即ち、各リンクは、すべてのヘッダ情報及びペイロード・データを含むデータ交換パケット全体を同時に収容するのに十分な幅を有するワイヤ・バス上で実現され得る。例えば、パケット構造が8バイトのヘッダと56バイトのペイロード・データとを合わせた64バイトを含む場合、各リンクに対するワイヤ・バスは、64バイト幅の512本のワイヤとなる。また、各リンクは、リンク・パケット構造が64バイトを含む場合に、ワイヤ・バスが事実上各ルータとネットワーク内の各隣接ルータとの間に1024本のワイヤを含むことになるような双方向リンクとすることもできる。かかる実装環境では、1つのメッセージが2つ以上のパケットを含む可能性があるが、各パケットはワイヤ・バスの幅にぴったりと収まることになる。代替実施形態において、リンクは、パケットの一部分だけを収容するのに十分な幅を有するワイヤ・バス上で実現することができ、その結果、パケットは複数のビート(beat)に分割されるようになり、例えばリンクが16バイト幅又は128本のワイヤとして実装される場合、64バイトのパケットを4つのビートに分割することができるようになる。実装環境毎の実際の物理的限界ならびに所望の性能特性に基づいて、様々なバス幅が使用され得ることが理解されるであろう。ルータとワイヤ・バスの各セクションとの間の接続をポートと称する場合、各ルータは、5つのポート、即ちネットワーク上の4つのデータ伝送方向のそれぞれにつき1つのポートと、メモリ通信コントローラ及びネットワーク・インターフェース・コントローラを介して該ルータを特定のIPブロックと適合させる第5のポートとを含む。
各メモリ通信コントローラ106は、IPブロックとメモリとの間の通信を制御する。メモリは、オフ・チップ・メインRAM 112と、メモリ通信コントローラ106を介してIPブロックに直接接続されたメモリ114と、IPブロックとして使用可能に設定(enabled)されたオン・チップ・メモリ116と、オン・チップ・キャッシュとを含むことができる。NOC 102では、例えばオン・チップ・メモリ114及び116はどちらもオン・チップ・キャッシュ・メモリとして実現することができる。このような形態のメモリはすべて同一のアドレス空間、物理アドレス、あるいは仮想アドレスに配設することができ、IPブロックに直接取り付けられるメモリについても同じことが言える。したがって、メモリ・アドレス指定メッセージ(memory addressed message)は、IPブロックに対して完全に双方向なメッセージとなり得る。というのも、このようなメモリは、ネットワーク上の任意の位置に所在する任意のIPブロックから直接アドレス指定することができるからである。IPブロック上のメモリ116は、そのIPブロックから、あるいはNOC内の他の任意のIPブロックからアドレス指定することができる。メモリ通信コントローラに直接取り付けられているメモリ114は、そのメモリ通信コントローラによってネットワークと適合されるIPブロックによってアドレス指定することができ、また、NOC内の任意の位置に所在する他の任意のIPブロックからアドレス指定することができる。
NOC 102は2つのメモリ管理ユニット(「MMU」)120、122を含み、ここでは本発明の諸実施形態に係るNOC向けの2つの代替メモリ・アーキテクチャが示されている。MMU 120はIPブロック内に実装されており、当該IPブロック内のプロセッサが仮想メモリにおいて動作することを可能にするとともに、NOCの残りのアーキテクチャ全体が物理メモリ・アドレス空間において動作することを可能にする。MMU 122はオフ・チップ実装され、データ通信ポート124を介してNOCに接続される。ポート124は、NOCとMMUとの間で信号を伝導するのに必要とされるピン及び他の相互接続部と、メッセージ・パケットをNOCパケット・フォーマットから外部MMU 122の必要とするバス・フォーマットに変換するのに十分なインテリジェンス(情報)とを含む。MMUが外部に配置されているということは、NOCのすべてのIPブロック内のすべてのプロセッサが仮想メモリ・アドレス空間において動作することができ、オフ・チップ・メモリの物理アドレスへのすべての変換がオフ・チップMMU 122によって処理されることを意味する。
MMU 120及び122を用いて例示した2つのメモリ・アーキテクチャに加えて、データ通信ポート126は、本発明の諸実施形態で使用可能なNOCで利用される第3のメモリ・アーキテクチャを示す。ポート126は、NOC 102のIPブロック104とオフ・チップ・メモリ112との間の直接接続を実現する。本アーキテクチャでは処理経路にMMUが存在せず、物理アドレス空間がNOCのすべてのIPブロックによって利用される。アドレス空間を双方向に共有する際、NOCのすべてのIPブロックは、ポート126に直接接続されているIPブロックを介して送られるロード及びストアを含むメモリ・アドレス指定メッセージにより、当該アドレス空間内のメモリにアクセスすることができる。ポート126は、NOCとオフ・チップ・メモリ112との間で信号を伝導するのに必要とされるピン及び他の相互接続部と、メッセージ・パケットをNOCパケット・フォーマットからオフ・チップ・メモリ112の必要とするバス・フォーマットに変換するのに十分なインテリジェンスとを含む。
図2の例において、IPブロックのうちの1つは、ホスト・インターフェース・プロセッサ(HIP)128として指定される。ホスト・インターフェース・プロセッサ128は、NOCと、当該NOCがインストールされ得るホスト・コンピュータ10との間のインターフェースを提供し、また、例えばホスト・コンピュータからのNOCデータ処理要求に関するIPブロック間の受信及びディスパッチを含めたデータ処理サービスをNOC上の他のIPブロックに提供する。NOCは、例えば図1に関して上述したように、より大型のコンピュータ10上にビデオ・グラフィックス・アダプタ26あるいはコプロセッサ28を実装することもできる。図2の例において、ホスト・インターフェース・プロセッサ128は、データ通信ポート130を介してより大型のホスト・コンピュータに接続されている。ポート130は、NOCとホスト・コンピュータとの間で信号を伝導するのに必要とされるピン及び他の相互接続部と、メッセージ・パケットをNOCフォーマットからホスト・コンピュータ10の必要とするバス・フォーマットに変換するのに十分なインテリジェンスとを含む。図1のコンピュータのNOCコプロセッサの例において、このようなポートは、NOCコプロセッサ28のリンク構造と、NOCコプロセッサ28及びバス・アダプタ18の間のフロント・サイド・バス36で必要とされるプロトコルとの間のデータ通信フォーマット変換を行うことになる。
次に、図3は、NOC 102内のIPブロック104内部、メモリ通信コントローラ106内部、ネットワーク・インターフェース・コントローラ108内部、及びルータ110内部に実装される各コンポーネントをより詳細に示す機能ブロック図である。各コンポーネントはまとめて132で示されている。各IPブロック104は、コンピュータ・プロセッサ134と、I/O機能部136とを含む。本例において、コンピュータ・メモリは、IPブロック104内のランダム・アクセス・メモリ(「RAM」)138のセグメントによって表されている。図2の例に関して上述したメモリは、物理アドレス空間のセグメントを占有することができ、各IPブロック上に所在するそれ自体の内容には、NOC内の任意のIPブロックからアドレス指定及びアクセス可能である。各IPブロック内のプロセッサ134、I/O機能部136、及びメモリ138は事実上、IPブロックを概してプログラマブルなマイクロコンピュータとして実現する。しかしながら、上述したように、本発明の範囲において、IPブロックは一般にNOC内のデータ処理用ビルディング・ブロックとして使用される同期又は非同期ロジックの再利用可能な単位を表す。したがって、IPブロックを概してプログラマブルなマイクロコンピュータとして実現することは、説明に役立つ一般的な実施形態であって、本発明を限定するものではない。
図3のNOC 102において、各メモリ通信コントローラ106は複数のメモリ通信実行エンジン140を含む。各メモリ通信実行エンジン140は、ネットワークとIPブロック104との間の双方向メモリ通信命令フロー141、142、144を含むIPブロック104からのメモリ通信命令を実行するように使用可能に設定されている。メモリ通信コントローラによって実行されるメモリ通信命令は、特定のメモリ通信コントローラを介してルータと適合されるIPブロックからだけでなく、NOC 102内の任意の位置に所在する任意のIPブロック104からも発信される可能性がある。即ち、NOC内のあらゆるIPブロックがメモリ通信命令を生成することができ、また、当該メモリ通信命令を実行のためにNOC内のルータを介して別のIPブロックに関連する別のメモリ通信コントローラに送信することができる。このようなメモリ通信命令としては、例えば変換索引バッファ制御命令、キャッシュ制御命令、バリア命令、及びメモリ・ロード/ストア命令を挙げることができる。
各メモリ通信実行エンジン140は、完全なメモリ通信命令を個別に且つ他のメモリ通信実行エンジンと並行して実行するように使用可能に設定されている。メモリ通信実行エンジンは、メモリ通信命令の並行(コンカレント)スループット向けに最適化されたスケーラブル・メモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ106は、すべてのエンジンが複数のメモリ通信命令の同時実行のために並行動作する複数のメモリ通信実行エンジン140をサポートする。新しいメモリ通信命令は、メモリ通信コントローラ106によってメモリ通信実行エンジン140に割り当てられ、メモリ通信実行エンジン140は、複数の応答イベントを同時に受け入れることができる。本例において、メモリ通信実行エンジン140はすべて同一である。したがって、1つのメモリ通信コントローラ106によって同時に処理され得るメモリ通信命令数のスケーリングは、メモリ通信実行エンジン140の数をスケーリングすることによって実行される。
図3のNOC 102において、各ネットワーク・インターフェース・コントローラ108は、通信命令を、ルータ110を介してIPブロック104間で伝送するために、コマンド・フォーマットからネットワーク・パケット・フォーマットに変換するように使用可能に設定されている。通信命令は、IPブロック104又はメモリ通信コントローラ106によってコマンド・フォーマットに定式化し、ネットワーク・インターフェース・コントローラ108にコマンド・フォーマットで提供することができる。コマンド・フォーマットは、IPブロック104及びメモリ通信コントローラ106のアーキテクチャ・レジスタ・ファイルに従うネイティブ・フォーマットとすることができる。ネットワーク・パケット・フォーマットは、典型的にはネットワークのルータ110を介した伝送で必要とされるフォーマットである。このようなメッセージはそれぞれ1つ又は複数のネットワーク・パケットから構成される。ネットワーク・インターフェース・コントローラにおいてコマンド・フォーマットからパケット・フォーマットに変換されるこのような通信命令の例としては、IPブロックとメモリとの間のメモリ・ロード命令及びメモリ・ストア命令が挙げられる。このような通信命令には、データを搬送するIPブロック間でメッセージを送信する通信命令、ならびに並列アプリケーション及びパイプライン型アプリケーションにおけるIPブロック間のデータ処理に関する命令も含まれ得る。
図3のNOC 102において、各IPブロックは、メモリとの間のメモリ・アドレス・ベース通信を、当該IPブロックのメモリ通信コントローラを介し、それ自体のネットワーク・インターフェース・コントローラを経て、ネットワークに送信するように使用可能に設定されている。メモリ・アドレス・ベース通信は、IPブロックのメモリ通信コントローラのメモリ通信実行エンジンによって実行されるロード命令やストア命令のようなメモリ・アクセス命令である。このようなメモリ・アドレス・ベース通信は、典型的にはIPブロックから発信され、コマンド・フォーマットに定式化され、実行のためにメモリ通信コントローラに引き渡される。
アクセス対象となるメモリは、NOC内の任意のメモリ通信コントローラに直接取り付けられたオン・チップ又はオフ・チップの物理メモリ・アドレス空間内のどこかに位置する可能性があり、また、任意の特定のメモリ・アドレス・ベース通信をどのIPブロックが発信したかに関わらず、NOCの任意のIPブロックを介して最終的にアクセスされ得るので、多くのメモリ・アドレス・ベース通信は、メッセージ・トラフィックを用いて実行される。それ故、NOC 102においてメッセージ・トラフィックを用いて実行されるすべてのメモリ・アドレス・ベース通信は、コマンド・フォーマットからパケット・フォーマットに変換し、ネットワークを介してメッセージの形で伝送するために、メモリ通信コントローラから関連するネットワーク・インターフェース・コントローラに渡される。ネットワーク・インターフェース・コントローラは、パケット・フォーマットへの変換時に、メモリ・アドレス・ベース通信のアクセス対象となる1つ又は複数のメモリ・アドレスに従って、パケットのネットワーク・アドレスも特定する。メモリ・アドレス・ベース・メッセージは、メモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによって、典型的にはある範囲の物理メモリ・アドレスに関与するメモリ通信コントローラのネットワーク位置に相当するネットワーク・アドレスにマッピングされる。言うまでもなく、メモリ通信コントローラ106のネットワーク位置は、そのメモリ通信コントローラに関連するルータ110、ネットワーク・インターフェース・コントローラ108、及びIPブロック104のネットワーク位置でもある。各ネットワーク・インターフェース・コントローラ内の命令変換ロジック150は、メモリ・アドレス・ベース通信をNOCのルータを介して伝送する目的で、メモリ・アドレスをネットワーク・アドレスに変換することができる。
ネットワークのルータ110からメッセージ・トラフィックを受信すると、各ネットワーク・インターフェース・コントローラ108は、各パケットのメモリ命令を検査する。メモリ命令を含む各パケットは、受信側のネットワーク・インターフェース・コントローラに関連するメモリ通信コントローラ106に渡され、メモリ通信コントローラ106は、当該メモリ命令を実行した後、パケットの残りのペイロードを更なる処理のためにIPブロックに送信する。このようにして、IPブロックによるデータ処理をサポートするために、当該IPブロックによる特定のメモリ内容に依存するメッセージに由来する命令の実行が開始される前に、メモリ内容が常に準備される。
図3のNOC 102において、各IPブロック104は、それ自体のメモリ通信コントローラ106を迂回し、IPブロック間のネットワーク・アドレス指定通信(network‐addressed communication)146を、当該IPブロックのネットワーク・インターフェース・コントローラ108を介してネットワークに直接送信するように使用可能に設定されている。ネットワーク・アドレス指定通信は、ネットワーク・アドレスによって別のIPブロックに送られるメッセージである。このようなメッセージは、当業者によって想到されるように、例えばパイプライン型アプリケーションでは作業データを伝送し、SIMDアプリケーションではIPブロック間の単一プログラム処理に関する複数のデータを伝送する。このようなメッセージは、それらがNOCのルータを介して送られることになるネットワーク・アドレスを認識している発信元のIPブロックによって当初からネットワーク・アドレス指定される点で、メモリ・アドレス・ベース通信とは異なる。このようなネットワーク・アドレス指定通信は、IPブロックによってI/O機能部136を介してIPブロックのネットワーク・インターフェース・コントローラにコマンド・フォーマットで直接渡され、その後、当該ネットワーク・インターフェース・コントローラによってパケット・フォーマットに変換され、NOCのルータを介して別のIPブロックに送信される。このようなネットワーク・アドレス指定通信146は双方向メッセージであり、特定の応用例でのそれぞれの用途に応じて、NOCの各IPブロックとの間でやりとりされる可能性がある。しかしながら、各ネットワーク・インターフェース・コントローラは、そのような通信を関連するルータとの間で送受信するように使用可能に設定され、また、そのような通信を、関連するメモリ通信コントローラ106を迂回(バイパス)して関連するIPブロックとの間で直接送受信するように使用可能に設定されている。
また、図3の例において、各ネットワーク・インターフェース・コントローラ108は、ネットワーク・パケットをタイプによって特徴付ける仮想チャネルをネットワーク上に実装するように使用可能に設定されている。各ネットワーク・インターフェース・コントローラ108は、仮想チャネル実装ロジック(virtual channel implementation logic)148を含んでおり、このロジックは、各通信命令をタイプ別に分類し、当該命令をNOC上での伝送のためにパケットの形でルータ110に渡す前に、命令のタイプをネットワーク・パケット・フォーマットのフィールドに記録する。通信命令タイプの例としては、IPブロック間ネットワーク・アドレス・ベース・メッセージ、要求メッセージ、要求応答メッセージ、キャッシュ宛て無効化メッセージ(invalidate messages directed to caches)、メモリ・ロード/ストア・メッセージ、メモリ・ロード応答メッセージ等が挙げられる。
図3の例において、各ルータ110は、ルーティング・ロジック152と、仮想チャネル制御ロジック154と、仮想チャネル・バッファ156とを含む。ルーティング・ロジックは、典型的にはルータ110、リンク118、及びルータ間のバス・ワイヤによって形成されるネットワーク内のデータ通信用のデータ通信プロトコル・スタックを実現する、同期及び非同期ロジックのネットワークとして実現される。ルーティング・ロジック152は、オフ・チップのネットワークにおいて当業者がルーティング・テーブルと関連付ける可能性がある機能を含んでいるが、ルーティング・テーブルは、少なくともいくつかの実施形態では、NOCでの使用では低速すぎて扱いにくいと考えられる可能性がある。同期及び非同期ロジックのネットワークとして実現されるルーティング・ロジックは、単一のクロック・サイクルと同様の速さでルーティング決定を行うように構成することができる。本例のルーティング・ロジックは、ルータ内で受信された各パケットを転送するポートを選択することによってパケットをルーティングする。各パケットは、当該パケットをルーティングすべきネットワーク・アドレスを含む。
上記のメモリ・アドレス・ベース通信の説明では、各メモリ・アドレスが、ネットワーク・インターフェース・コントローラによってメモリ通信コントローラのネットワーク位置(ロケーション)に相当するネットワーク・アドレスにマッピングされるように説明した。言うまでもなく、メモリ通信コントローラ106のネットワーク位置は、そのメモリ通信コントローラに関連するルータ110、ネットワーク・インターフェース・コントローラ108、及びIPブロック104のネットワーク位置でもある。したがって、IPブロック間通信又はネットワーク・アドレス・ベース通信において、ネットワーク・アドレスは、アプリケーション・レベルのデータ処理から見れば、NOCのルータ、リンク、及びバス・ワイヤによって形成されるネットワーク内のIPブロックの位置と見なされることになる。図2は、そのようなネットワークの1つの組織が行と列のメッシュとなっていることを示している。当該メッシュにおいて、各ネットワーク・アドレスは、例えば当該メッシュ内の関連するルータ、IPブロック、メモリ通信コントローラ、及びネットワーク・インターフェース・コントローラから成る各セット毎の一意の識別子として実現することも、そのようなメッシュ内の各セットのx,y座標として実現することもできる。
図3のNOC 102において、各ルータ110は2つ以上の仮想通信チャネルを実現し、各仮想通信チャネルは通信タイプによって特徴付けられる。上述のとおり、通信命令タイプ、したがって仮想チャネル・タイプには、IPブロック間ネットワーク・アドレス・ベース・メッセージ、要求メッセージ、要求応答メッセージ、キャッシュ宛て無効化メッセージ、メモリ・ロード/ストア・メッセージ、メモリ・ロード応答メッセージ等が含まれる。仮想チャネルをサポートするにあたり、図3の例の各ルータ110は、仮想チャネル制御ロジック154及び仮想チャネル・バッファ156も含む。仮想チャネル制御ロジック154は、各受信パケットに割り当てられている通信タイプを検査し、各パケットを、ポートを介してNOC上の隣接ルータに送信するために、当該通信タイプ用の出力側仮想チャネル・バッファに配置する。
各仮想チャネル・バッファ156は有限の記憶空間を有する。短期間に多数のパケットが受信されたときは、仮想チャネル・バッファが一杯になる可能性があり、その結果、パケットをそれ以上バッファに入れることができなくなる可能性がある。他のプロトコルでは、バッファが一杯になっている仮想チャネル上に到達したパケットは破棄(drop)されることになる。しかしながら、本例の仮想チャネル・バッファ156はそれぞれ、バス・ワイヤの制御信号によって、仮想チャネル制御ロジックを介して周辺のルータに対し仮想チャネルでの送信を中断する、即ち、特定の通信タイプのパケットの送信を中断するよう助言するように使用可能に設定されている。1つの仮想チャネルがそのように中断された場合にも、他のすべての仮想チャネルは影響を受けず、したがって最大限の動作を継続することができる。各制御信号は、上記と反対に各ルータを介して各ルータの関連するネットワーク・インターフェース・コントローラ108に戻される。各ネットワーク・インターフェース・コントローラは、このような信号を受信すると、それぞれに関連するメモリ通信コントローラ106又はそれぞれに関連するIPブロック104からの中断された仮想チャネルに関する通信命令の受け入れを拒否するように構成されている。このようにして仮想チャネルが中断されると、その仮想チャネルを実現する発信元のIPブロックに至るまで、すべてのハードウェアに影響が及ぶことになる。
仮想チャネル内のパケット伝送の中断による影響の1つは、パケットが決して破棄されなくなることである。例えばインターネット・プロトコルのような信頼性の低い何らかのプロトコルでパケットが破棄され得る状況にルータが直面した場合、図3の例のルータは、それぞれの仮想チャネル・バッファ156及びそれぞれの仮想チャネル制御ロジック154によって、バッファ空間が再び利用可能になるまで仮想チャネル内のすべてのパケット伝送を中断することができ、その結果、パケットを破棄する必要を解消することができる。したがって、図3のNOCは、ハードウェアの極めて薄い層によって非常に信頼性の高いネットワーク通信プロトコルを実現することができる。
図3の例示的なNOCは、オン・チップ・メモリ・キャッシュとオフ・チップ・メモリ・キャッシュの両方の間のキャッシュ・コヒーレンシを維持するように構成することもできる。各NOCは、それぞれ基礎となる同一のメモリ・アドレス空間に対して動作する複数のキャッシュをサポートすることができる。例えば、キャッシュは、IPブロック、メモリ通信コントローラ、あるいはNOC外部のキャッシュ・コントローラによって制御することができる。また、図2の例のオン・チップ・メモリ114及び116はいずれも、オン・チップ・キャッシュとして実装することができ、また、本発明の範囲内では、オフ・チップ・キャッシュとして実装することもできる。
図3に示される各ルータ110は、5つのポート、即ちバス・ワイヤ118を介して他のルータに接続される4つのポート158A〜158Dと、各ルータをネットワーク・インターフェース・コントローラ108及びメモリ通信コントローラ106を介してそれ自体に関連するIPブロック104に接続する第5のポート160とを含む。図2及び図3の例から分かるように、NOC 102のルータ110及びリンク118は、垂直方向及び水平方向のリンクによって各ルータ内の垂直方向及び水平方向のポートが接続されるメッシュ・ネットワークを形成する。図3の例では、例えばポート158A、158C、及び160を垂直方向ポート(vertical port)と呼び、ポート158B及び158Dを水平方向ポート(horizontal port)と呼ぶ。
次に、図4は、本発明に係るIPブロック104の例示的な一実装環境を別の形で示しており、ここでのIPブロック104は、命令ユニット(IU)162、実行ユニット(XU)164、及び補助実行ユニット(AXU)166に区分化される処理要素として実装される。図示の実装環境において、IU 162は、L1命令キャッシュ(iCACHE)から命令を受け取る複数の命令バッファ168を含む。各命令バッファ168は、複数の、例えば4つの対称マルチスレッド化(symmetric multithreaded:SMT)ハードウェア・スレッドのうちの1つに専用化されている。実効/実アドレス変換ユニット(effective‐to‐real translation unit:iERAT)172は、iCACHE 170と結合されており、複数のスレッド・フェッチ・シーケンサ174からの命令フェッチ要求を、より低次のメモリからの命令を検索するために実アドレスに変換するのに使用される。各スレッド・フェッチ・シーケンサ174は、特定のハードウェア・スレッドに専用化されており、これを使用することにより、関連するスレッドによって実行される命令が、適切な実行ユニットにディスパッチされるようにiCACHEに確実にフェッチされるようになる。また、図4に示されるように、命令バッファ168にフェッチされる命令は、分岐予測ロジック176によって監視することもできる。分岐予測ロジック176は、スレッド実行時の分岐の結果発生する命令キャッシュ・ミスを最小限に抑えるヒントを各スレッド・フェッチ・シーケンサ174に与える。
IU 162は、各ハードウェア・スレッドに専用化された依存関係/発行ロジック・ブロック(dependency/issue logic block)178も含む。依存関係/発行ロジック・ブロック178は、依存関係を解決し、命令バッファ168からXU 164に対する命令の発行を制御するように構成されている。また、図示の実施形態では、AXU 166に別個の依存関係/発行ロジック180が設けられており、そのため、異なるスレッドからXU 164及びAXU 166に対して別個の命令を並行して発行することが可能となる。一代替実施形態では、ロジック180をIU 162内に配設することができ、あるいはそれ自体を完全に省略して、ロジック178がAXU 166に対して命令を発行するようにすることもできる。
XU 164は、固定小数点ロジック184、分岐ロジック186、及びロード/ストア・ロジック188と結合された1組の汎用レジスタ(general purpose register:GRP)182を含む固定小数点実行ユニット(fixed point execution unit)として実現される。ロード/ストア・ロジック188は、L1データ・キャッシュ(dCACHE)190と結合されており、dERAT ロジック192によって実効/実アドレス変換が行われる。XU 164は、任意の命令セット、例えば32b又は64b PowerPC(商標)命令セットの全部又は一部を実際に実行するように構成することができる。
AXU 166は、1つ又は複数の実行ブロック194を伴う専用の依存関係/発行ロジック180を含む補助実行ユニットとして動作する。AXU 166は、任意の数の実行ブロックを含むことができ、また、任意のタイプの実行ユニット、例えば浮動小数点ユニット、あるいは暗号化/復号化ユニット、コプロセッサ、ベクトル処理ユニット、グラフィックス処理ユニット、XML処理ユニット等の1つ又は複数の特殊実行ユニットを実現することができる。図示の実施形態において、AXU 166は、例えばAXU設計状態(AXU architected state)とXU設計状態(XU architected state)との間の直接移動をサポートする、XU 164との間の高速補助インターフェースを含む。
IPブロック104との通信は、図2に関して上述したように、NOC 102と結合されたネットワーク・インターフェース・コントローラ108を介して管理することができる。例えばL2キャッシュ・メモリにアクセスするアドレス・ベース通信は、メッセージ・ベース通信と共に実行することができる。例えば、各IPブロック104は、IPブロック間のノード間通信を処理するために、専用のイン・ボックス(in box)又はアウト・ボックス(out box)あるいはその両方を含むことができる。
本発明の諸実施形態は、図1乃至図4に関して上述したハードウェア及びソフトウェア環境内で実現することができる。しかしながら、本開示内容の利益を享受する当業者なら、本発明は多種多様な環境で実現することができ、また、本発明の趣旨及び範囲から逸脱しない限り、上述のハードウェア及びソフトウェアの実施形態に他の様々な修正を施すことができることを理解するであろう。したがって、本発明は、本明細書に開示される特定のハードウェア及びソフトウェア環境に限定されるものではない。
(命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニット処理ユニット)
次に図5を参照すると、図5は、発行ロジック206からそれぞれに対して発行された命令を処理する複数の実行ユニット(例えば第1及び第2の実行ユニット202、204)と、本発明に係る命令ブロック・シーケンサ・ロジックとが組み込まれた例示的な処理ユニット200を示している。処理ユニット200は、例えば図1乃至図4のIPブロック104のようなIPブロック内に実装することができる。代替実施形態において、処理ユニット200は、命令の発行及び実行を行うシングル・コア又はマルチ・コア・マイクロプロセッサ又はマイクロコントローラを含めた他のプロセッサ・アーキテクチャに実装することができる。
各実行ユニット202、204は、発行ロジック206からそれぞれに対して発行された命令を処理し、複数の実行段階208(EX1〜EXNで個別に示される)を有する多段実行パイプラインを含んでおり、実行段階208は、発行ロジック206から発行された命令に基づいてレジスタ・ファイル210に記憶されているデータを処理し、ターゲット・データをレジスタ・ファイル210に再び記憶することができる。また、レジスタ・ファイル210と実行パイプラインの中間に迂回ロジック212を提供し、それによって後続の命令のオペランドとして使用されることになる1つの命令に関して生成されたターゲット・データがレジスタ・ファイルを迂回することを可能にすることができる。
各実行ユニット202、204は、いくつかの異なるタイプの実行ユニット、例えば浮動小数点ユニット、固定小数点ユニット、あるいはグラフィックス処理ユニット、暗号化/復号化ユニット、コプロセッサ、XML処理ユニット等の特殊実行ユニットのうちのどのユニットとして実装されてもよく、また、スカラ又はベクトル(SIMD)実行ユニットとして構成されてもよい。実行ユニット202、204は、それぞれ同様に構成することができ、同一のタイプの命令を処理することも、異なるタイプの命令を処理するように別個に(例えば固定小数点ユニット及び浮動小数点ユニットとして)構成することもできる。また、本発明に係る処理ユニット200では3つ以上の実行ユニットを使用することもできる。一実装環境では、例えば各実行ユニット202、204をベクトル浮動小数点実行ユニットとし、各レジスタ・ファイル210を、1組のベクトル・レジスタ内の浮動小数点値のベクトルを記憶するベクトル・レジスタ・ファイルとすることができる。
発行ロジック206はマルチスレッド化されており、図5ではスレッド0〜Nとして示される複数のハードウェア・スレッドをサポートする。更に、発行ロジック206は、各実行ユニット202、204に対して独立して命令を発行することができ、したがって、各実行ユニットに対してハードウェア・スレッド毎の別個の発行パイプラインが割り当てられる。各発行パイプラインは、それぞれの受信命令をデコードするデコード・ロジック214を含む。依存状態(dependency condition)(即ち、実行中のより古い命令の結果が出るまでより新しい命令を停止させなければならない状態)が依存関係ロジック(dependency logic)218において検出される。依存関係が解決されると、発行対象となる命令が発行選択ロジック(issue select logic)222によって選択され発行される。この選択は、図5ではマルチプレクサ224によって行われるように示されている。命令は、該当する実行ユニット202、204の実行段階パイプラインの第1段階(EX1)に対して発行される。様々な実施形態において様々な数のハードウェア・スレッドをサポートすることができ、更に、本発明は、シングル・スレッドの実装環境でも利用可能であり、また、すべてのハードウェア・スレッドに関連する命令を任意の実行ユニット202、204に対して発行することができる図5の実装環境とは対照的に、1つ又は複数のハードウェア・スレッドが特定の実行ユニットに専用化される実装環境でも利用可能であることが理解されるであろう。
1つ又は複数の命令バッファを含む命令バッファ・ロジック228は、1つ又は複数の命令ストリームに由来する命令を発行ロジック206によって管理される各ハードウェア・スレッドに供給する。注目すべきことに、命令バッファ・ロジック228は、両方の実行ユニット202、204によって実行されることになる命令をバッファするものであり、したがって、多くの処理ユニット設計において、命令バッファ・ロジック228は、特定の処理ユニット設計で実行されるすべての命令をバッファするグローバル命令バッファ・ロジックと見なすことができる。命令バッファ・ロジック228には主に、上述のとおりより下位のメモリから命令キャッシュ(図示せず)への命令フェッチを管理して、命令キャッシュ内の各命令の実行準備が整ったときに各命令が命令キャッシュ内で確実に利用できるようにする命令フェッチ・ロジック230によってフェッチされた命令が供給される。また、命令バッファ・ロジック228には、命令バッファ・ロジックの上流に所在し、コマンドに応答して命令バッファ・ロジック228内の命令バッファに対して一続きの命令を発行することが可能な、任意選択のグローバル・マイクロコード・ユニット又はシーケンサ232からの命令が供給されることもある。
グローバル・マイクロコード・ユニット又はシーケンサ232に加えて又はその代わりに、処理ユニット200は、実行ユニットのサブセット、例えば図5に示される実行ユニット204のような単一の実行ユニットにのみ関連付けられる、実行ユニット固有の命令ブロック・シーケンサ・ロジック234を含む。命令ブロック・シーケンサ・ロジック234は、命令バッファ・ロジック228の下流の、命令バッファ・ロジック228と実行ユニット204の中間に配設されており、特定のハードウェア・スレッドに関連する専用シーケンサ命令に応答して、当該スレッドに対して発行されるより新しい命令をすべてブロックし、関連する実行ユニット204に対して命令を順次発行することにより、フィルタリング処理のような長レイテンシ処理を構成する一連の命令の発行を開始する。
図示の実施形態の命令ブロック・シーケンサ・ロジック234は、複数のハードウェア・スレッド固有マルチプレクサ238、段階ラッチ240、及びフィードバック・マルチプレクサ242を含むブロック・ロジックと結合されたシーケンサ236のようなシーケンサ・ロジックを含む。図示の実施形態において、各マルチプレクサ238は、特定のハードウェア・スレッドに割り当てられ、命令バッファ・ロジック228のスレッド固有出力と、その特定のスレッドに関する発行パイプラインとの中間に配設され、それ自体の第1の入力が、命令バッファ・ロジック228のスレッド固有出力から関連するフィードバック・マルチプレクサ242及び段階ラッチ240を介して命令を受け取るように構成されている。通常、各マルチプレクサ238、242は、例えば実行ユニット202に関する発行パイプラインの場合と同様に、実行ユニット204に関する発行パイプラインに命令が供給されるように、命令バッファ・ロジック228から関連するハードウェア・スレッドについて出力された命令を関連する発行パイプラインに渡す。
各マルチプレクサ238は、シーケンサ236の命令出力と結合された第2の入力も含む。また、(例えば図5に示さない選択信号を介して)どの入力を各マルチプレクサ238の出力に渡すかの選択も、やはりシーケンサ236によって制御される。また、各マルチプレクサ242は、関連する段階ラッチ240の出力からのフィードバック経路も含んでおり、そこでは、段階ラッチ240に記憶されている現在の命令が段階ラッチに選択的にフィードバックされ、したがってシーケンサ236が関連するマルチプレクサ238の第2の入力に命令を出力している間、命令が効果的に停止されるように、各マルチプレクサ242の選択入力がシーケンサ236によって制御される。関連するスレッドからの命令を効果的にブロックするために、シーケンサ236からその他の上流段階ならびに命令バッファ・ロジック228に追加的な停止信号を出力することもできる。
したがって、各マルチプレクサ238は、第2の入力が選択されたときにシーケンサ236から出力される命令が関連するスレッドの関連する発行パイプラインに渡されるように構成されている。また、マルチプレクサ238の第1の入力が選択解除されたときは、関連するマルチプレクサ242のフィードバック入力が選択され、命令バッファ・ロジック228及びその他の上流段階に対して停止信号がアサートされ、命令バッファ・ロジック228内で発行を待つ関連するスレッドを対象とする命令が効果的にブロックされる。
シーケンサ236は、特定のハードウェア・スレッドに関連し、シーケンサ命令として(例えばオペコード(opcode)を介して)フォーマット化された命令が命令バッファ・ロジック228から受信されたことに応答して、シーケンサ命令と同一のハードウェア・スレッドに関連するマルチプレクサ238の第2の入力を選択し、関連するマルチプレクサ242のフィードバック入力を選択し、命令バッファ・ロジック228に対して停止信号をアサートし、当該シーケンサ命令に関連する長レイテンシ処理に関連する一続きの命令をマルチプレクサ238の第2の入力に出力する。その間は、命令バッファ・ロジック228から関連する発行パイプラインへの他の命令の受け渡しはブロックされる。
図6では、例えばシーケンサ236によって実行され得る例示的な一続きの処理が250で示されている。特に、シーケンサ236は、ブロック252でシーケンサ命令の受信を待つことができる。そのような命令が受信されると、制御がブロック254に渡されて、例えばシーケンサ命令を発行したハードウェア・スレッドに関連するマルチプレクサ238、242を上述のように制御し、命令バッファ・ロジックを停止させることにより、当該スレッドからの新しい命令がブロックされる。
次にブロック256で、シーケンサ命令に関連するシーケンス内の最初の命令を指すようにシーケンサが初期化される。シーケンサ236は、例えば単一の長レイテンシ処理及び関連するシーケンスだけをサポートすることも、そのような処理及びシーケンスを複数サポートすることもできることが理解されるであろう。別個のシーケンサ命令を異なる長レイテンシ処理と関連付けることができ、それらのシーケンサ命令は、例えば一意のオペコード又は一意の2次オペコードによって、あるいはオペランドを利用して(例えばシーケンサによってサポートされる複数のシーケンスのうちの1つに対する索引(インデックス)をオペランド・レジスタに記憶することによって)互いに区別することができる。
次にブロック258で、シーケンサ236は、選択されたシーケンス内の最初の命令をブロックされたハードウェア・スレッドの発行パイプラインに出力し、制御がブロック260に渡されて、シーケンス内の最後の命令がシーケンサ236から出力されたかどうかが判定される。出力されていない場合には、制御がブロック262に渡されてシーケンス内の次の命令に移行し、その後制御がブロック258に渡されると、シーケンス内の次の命令がブロックされたスレッドに出力される。
シーケンス内の最後の命令がシーケンサ236から出力されると、ブロック260からブロック264に制御が渡されて、ブロックされたスレッドが(例えば当該スレッドに関連するマルチプレクサ238、242を上述のように制御し、停止信号をデアサートすることによって)アンブロックされる。その後、制御がブロック252に渡されて、後続のシーケンサ命令まで待機する。
本明細書に記載される命令ブロック・シーケンサ・ロジックは事実上、特定のコンピューティング用途で望まれ得る任意の長レイテンシ処理を実行するのに使用することができ、例えばフィルタリング処理、除算演算、平方根演算、暗号化/セキュリティ処理、圧縮/解凍処理、高速フーリエ変換のような変換処理、あるいはレイテンシが長く、典型的には実行パイプライン内で複数のパスが必要となる他の任意の処理を実行するのに使用することができることが理解されるであろう。
図示の実施形態において、命令ブロック・シーケンサ・ロジックは、処理の実行が開始される前に、長レイテンシ処理に必要とされるすべてのデータがレジスタ・ファイルにロードされているものと仮定することが望ましい。このように仮定することで、同様のタイプの処理を実行するように構成されたグローバル・マイクロコード・ユニットを用いる場合に生じ得る、ロード命令に関連するデータ位置合わせ問題やキャッシュ・ミスのような複雑さが回避される。命令ブロック・シーケンサ・ロジックによる処理の実行が完了すると、その結果は、典型的には元のシーケンサ・コマンドで指定されるレジスタ・ファイル内のアドレスに記憶される。また、命令ブロック・シーケンサ・ロジックは、従来の典型的なマイクロコード・ユニットの場合のようにすべての実行ユニットを包含する「最上位」の命令バッファ・レベルではなく、単一の実行ユニットと結合されている故に、回路面積が縮小され得るとともに命令ブロック・シーケンサ・ロジックの複雑さも軽減され、また、マイクロコード・エンジンを起動するオーバーヘッドが回避されること、及び命令ブロック・シーケンサ・ロジックが処理を実行している間も他の実行ユニットがいくつかの処理を継続することができることにより、性能が大幅に改善される可能性がある。
ただし、本発明に係る命令ブロック・シーケンサ・ロジックから出力されるシーケンスは、例えばシーケンサによって必要とされる入力データをロードし、又はシーケンサによって生成された出力データを記憶する、長レイテンシ処理に関連するロード操作又はストア操作あるいはその両方を含むこともあれば含まないこともあることを理解していただきたい。また、結果を記憶すべきターゲット(単数又は複数)、又はシーケンサによって使用されることになる入力データのソース(単数又は複数)、あるいはその両方は、シーケンサ命令において例えばそれ自体のオペランドとして指定することができ、また、シーケンサ用に事前定義することができる。例えば、そのシーケンスの入力データに関する第1のレジスタを識別するのに必要となるシーケンサ命令内のオペランドが1つだけであること、また、他の入力データは次のN個のレジスタに順次記憶されるものと仮定することが望ましい可能性がある。本発明によれば、他の手法を使用して入力データをシーケンスに提供し、シーケンスからの出力データを記憶することもできる。
上述のとおり、本発明に係る命令ブロック・シーケンサ・ロジックを使用していくつかの異なるタイプの長レイテンシ処理を実行することができる。一例として、命令ブロック・シーケンサ・ロジックを利用して3Dラスタ化アルゴリズムで使用されるバイリニア・フィルタリング処理を実行することが望ましい可能性もある。バイリニア・フィルタリングでは、テクスチャ・サンプルの座標を使用して、当該サンプルの座標位置がピクセルの中心にどれだけ近いかによって重み付けされる4つの隣接ピクセルの加重平均がとられる。
バイリニア・フィルタリング後の最終的な各ピクセルを計算するアルゴリズムは、典型的には以下の表1に示すように計算される。
Figure 0005629068
ここで、uf及びvfは、浮動小数点フォーマットのサンプル点のテクスチャ座標であり、ru及びrvは、それぞれuf及びvfの座標(fmod(uf,1.0), fmod(vf,1.0))の小数部分であり、ui及びviは、テクスチャ座標の整数部分であり、texcolor(u,v)は、u, vにおけるテクセルのカラーである。図7は、これらの変数のグラフ図である。
本質的に、上述のバイリニア・フィルタリング・アルゴリズムは、ピクセルの中心が整数境界(integer boundary)(ui, vi)にあるものと仮定し、元のテクスチャ・サンプル点と各テクセルとの間の近接性によって重み付けされるテクスチャ・マップから、最も近い4つのテクセルの加重平均をとる。本発明によれば、計算量がずっと多くなる他のタイプのテクスチャ・フィルタリング(例えばトライリニア・フィルタリング及び異方性フィルタリング)を使用することもできるが、以下の論述では説明を簡単にするためにバイリニア・フィルタリングに焦点を当てる。
例えばPowerアーキテクチャVMX128命令セットをサポートする従来のベクトル浮動小数点実行ユニットは、以下の表2に示される命令ストリームを使用してバイリニア・フィルタリング処理を達成することができる。
Figure 0005629068
ここで、uf及びvfは、元のテクスチャ・サンプル点の浮動小数点座標であり、addr_row1は、1つ目のテクセル(4つのテクセルのうちの左上のテクセル)のアドレスであり、addr_row2 は、3つ目のテクセル(4つのテクセルのうちの左下のテクセル)のアドレスであり、各テクセルは16バイト、テクスチャ・データは典型的な様式で走査線内に編成されるものと仮定している。フィルタリング後のピクセル結果はwavgに記憶される。
しかしながら、本発明によれば、上述の命令ストリームは、命令ブロック・シーケンサ・ロジック内で実行することができ、当該シーケンスを実行するようにシーケンサ・ロジックをトリガするためにシーケンサ命令がデコードされたことに応答して、かかるロジックによって出力することができる。命令ブロック・シーケンサ・ロジックをトリガするのに使用され得るシーケンサ命令の例示的なフォーマットを以下の表3に示す。
Figure 0005629068
この命令フォーマットでは、wavg、uf、vf、addr_row1、及びaddr_row2の各パラメータが命令内で指定されるものと仮定する。別法として、シーケンサは単に、それらのソース・オペランドが常に所定のレジスタ内に所在するものと仮定することもできる。別法として、シーケンサ命令は、残りのオペランドが連続する次のレジスタ内に所在するものと仮定して、開始レジスタを指定することができる。また、シーケンス内で使用される定数は一定のレジスタ内に所在するものと仮定することができ、あるいはそれらをシーケンスによって生成することもできる。
したがって、本発明の諸実施形態を用いると、テクスチャ・フィルタリングのような複雑な長レイテンシ処理を、フル・マイクロコード・ユニットではなく小型の実行ユニット固有シーケンサによって実行することが可能となる。本構成を用いると、従来のマイクロコード・ユニットに関連する性能上の問題を回避しながら、長レイテンシ処理を必要とするアプリケーションの柔軟性を大幅に高めることが可能となる。特に、命令バッファ・ロジックの上流に配設されるグローバル・マイクロコード・ユニット又はシーケンサを用いる場合は通常実行パイプラインのフラッシュが必要となるが、命令バッファ・ロジックの下流に配設される本発明に係る命令ブロック・シーケンサ・ロジックでは、典型的には実行パイプラインをフラッシュする必要がなく、シーケンサ・ロジックが一続きの命令を実行ユニットに出力している間、後続の命令をブロックするだけで済む。更に、発行バッファ・ロジックは、シーケンサ・ロジックが一続きの命令を出力している間もなお、他の実行ユニットによって実行される命令を出力することができ、また、マルチスレッド型発行ロジックが利用される場合は、シーケンサ・ロジックが一続きの命令を現在出力している実行ユニットと同一の実行ユニットに対して、他のハードウェア・スレッドからの命令をなおも発行することができ、そのため、他の命令ストリームへの悪影響を最小限に抑えることが可能となる。
本発明の趣旨及び範囲から逸脱しない限り、様々な修正を施すことができる。例えば、すべてのハードウェア・スレッドについて単一のシーケンサを利用する代わりに、異なるスレッドに対する並行シーケンス出力をサポートすることができ、また、各ハードウェア・スレッド毎に別個のシーケンスを利用することもできる。他の修正形態も当業者には明らかとなるだろう。したがって、本発明の範囲は添付の特許請求範囲に示される。
10 ホスト・コンピュータ
12 プロセッサ
14 RAM
16 高速メモリ・バス
18 バス・アダプタ
20 アプリケーション
22 オペレーティング・システム
24 データ・ストレージ
26 NOCビデオ・アダプタ
28 NOCコプロセッサ
30 表示デバイス
32 高速ビデオ・バス
34、36 フロント・サイド・バス
38 ディスク・ドライブ・アダプタ
40 拡張バス
42 I/Oアダプタ
44 ユーザ入力デバイス
46 通信アダプタ
48 他のコンピュータ
50 ネットワーク
100 チップ
102 ネットワーク・オン・チップ(NOC)
104 IPブロック
106 メモリ通信コントローラ
108 ネットワーク・インターフェース・コントローラ
110 ルータ
112 オフ・チップ・メモリ
114 オン・チップ・メモリ
116 オン・チップ・メモリ
118 リンク
120、122 MMU
124、126、130 ポート
134 プロセッサ
136 I/O機能部
138 RAM
140 メモリ通信実行エンジン
141、142、144 双方向メモリ通信命令フロー
146 ネットワーク・アドレス指定通信
148 仮想チャネル実装ロジック
150 命令変換ロジック
152 ルーティング・ロジック
154 仮想チャネル制御ロジック
156 仮想チャネル・バッファ
158A〜158D、160 ポート
162 発行ユニット(IU)
164 実行ユニット(XU)
166 補助実行ユニット(AXU)
168 命令バッファ
170 iCACHE
172 iERAT
174 スレッド・フェッチ・シーケンサ
176 分岐予測
178 依存関係/発行
180 補助依存関係/発行
184 固定小数点
186 分岐
188 ロード/ストア
190 dCACHE
192 dERAT
194 実行ブロック
200 処理ユニット
202、204 実行ユニット
206 発行ロジック
210 レジスタ・ファイル
214 デコード・ロジック
218 依存関係ロジック
222 発行選択ロジック
224 マルチプレクサ
228 命令バッファ
230 命令フェッチ・ロジック
232 マイクロコード/シーケンサ
234 命令ブロック・シーケンサ・ロジック
236 命令ブロック・シーケンサ
238、242 マルチプレクサ
240 段階ラッチ
242 フィードバック・マルチプレクサ

Claims (4)

  1. 回路配置構成であって、
    第1及び第2の実行ユニットと、
    前記第1及び第2の実行ユニットに複数のスレッドからの命令を供給するように構成された命令バッファ・ロジックと、
    前記命令バッファ・ロジックならびに前記第1及び第2の実行ユニットと結合され、前記複数のスレッドからの命令を前記第1及び第2の実行ユニットに出力するようにそれぞれ構成された第1及び第2の発行選択ロジックを含むマルチスレッド型発行ユニットと、
    前記第1の発行選択ロジックと結合された第1及び第2のマルチプレクサであって、それぞれ前記複数のスレッドのうちの第1及び第2のスレッドと関連付けられ、前記第1の発行選択ロジックならびに第1及び第2の入力と通信する出力を含み、それぞれの前記第1の入力は、前記命令バッファ・ロジックからの命令を受け取るために前記命令バッファ・ロジックと結合される、第1及び第2のマルチプレクサと、
    前記第1及び第2のマルチプレクサの前記第2の入力と結合されたシーケンサであって、前記第1のスレッドに関連するフィルタリング命令に応答して、前記第1のマルチプレクサが前記第2の入力を選択するように制御して、前記命令バッファ・ロジックから受け取られた前記第1のスレッドに関連する命令が前記第1の実行ユニットによって実行されるのをブロックし、前記第1のマルチプレクサの前記第2の入力が選択されている間に、フィルタリング処理に関連する複数の命令が前記第1の実行ユニットによって実行されるように、前記フィルタリング処理に関連する前記複数の命令を前記第1のマルチプレクサの前記第2の入力に順次出力するように構成されたシーケンサと、を備え、
    前記第1の発行選択ロジックは、前記第1の実行ユニットによる前記第1のスレッドに関連する命令の実行がブロックされている間に、前記第2のマルチプレクサの前記第1の入力を介して前記命令バッファ・ロジックから提供された前記第2のスレッドに関連する命令を前記第1の実行ユニットによる実行のために出力するように構成され、
    前記第2の発行選択ロジックは、前記第1の実行ユニットによる前記第1のスレッドに関連する命令の実行がブロックされている間に、前記命令バッファ・ロジックから前記第2の発行選択ロジックに供給された命令を前記第2の実行ユニットによる実行のために出力するように構成される、回路配置構成。
  2. 回路配置構成であって、
    第1及び第2の実行ユニットと、
    少なくとも1つの命令ストリームに由来する命令を前記第1及び第2の実行ユニットに供給するように構成された命令バッファ・ロジックと、
    前記命令バッファ・ロジックと前記第1の実行ユニットとの中間に結合されたシーケンサ・ロジックであって、前記命令ストリームに由来するシーケンサ命令に応答して、長レイテンシ処理に関連する複数の命令を前記第1の実行ユニットに対して順次発行するとともに、前記複数の命令が前記第1の実行ユニットによって実行されるように、前記命令バッファ・ロジックからの命令をブロックするように構成されたシーケンサ・ロジックと、を備え、
    前記第2の実行ユニットは、前記シーケンサ・ロジックが前記命令バッファ・ロジックからの命令をブロックしている間に、前記命令バッファ・ロジックから前記第2の実行ユニットに供給された命令を実行するように構成され、
    前記シーケンサ・ロジックは、出力と、第1の入力と、第2の入力とを有するマルチプレクサを含み、前記マルチプレクサの前記出力は、前記第1及び第2の入力で受け取られた命令を前記第1の実行ユニットに渡すように構成され、前記マルチプレクサの前記第1の入力は、前記命令バッファ・ロジックからの命令を受け取るために前記命令バッファ・ロジックと結合され、前記マルチプレクサの前記第2の入力は、前記長レイテンシ処理に関連する前記複数の命令を受け取るように構成され、
    前記マルチプレクサの前記出力と結合され、それ自体が受け取った命令をデコードするように構成されたデコード・ロジックと、
    前記デコード・ロジックと結合され、命令間の依存関係を解決するように構成された依存関係ロジックと、
    前記依存関係ロジックと結合され、前記第1の実行ユニットに対して命令を発行するように構成された発行選択ロジックと、を更に備え、
    前記命令バッファ・ロジックは、マルチスレッド化され、複数のスレッドからの命令を出力するように構成され、
    前記シーケンサ・ロジックは、前記シーケンサ・ロジックが前記複数の命令を順次発行している間に少なくとも1つの他のスレッドからの命令がブロックされないように、前記命令バッファ・ロジックからの命令のうち、前記シーケンサ命令と同一のスレッドに関連する命令だけをブロックするように構成される、回路配置構成。
  3. 請求項1または請求項2に記載の回路配置構成を含む集積回路デバイス。
  4. 第1及び第2の実行ユニットと、少なくとも1つの命令ストリームに由来する命令を前記第1及び第2の実行ユニットに供給するように構成された命令バッファ・ロジックとを含むタイプの処理ユニットにおける命令実行方法であって、前記命令ストリームに由来するシーケンサ命令が受け取られたことに応答して、
    前記命令バッファ・ロジックと前記第1の実行ユニットとの中間に結合されたシーケンサ・ロジックを使用して、長レイテンシ処理に関連する複数の命令を前記第1の実行ユニットに対して順次発行するステップと、
    前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間に、前記命令バッファ・ロジックからの命令が前記第1の実行ユニットに対して発行されるのをブロックするステップと、
    前記第1の実行ユニットに対して命令が発行されるのをブロックしている間に、前記命令バッファ・ロジックからの少なくとも1つの命令を前記第2の実行ユニットによる実行のために発行するステップと、を含み、
    前記シーケンサ・ロジックは、出力と、第1の入力と、第2の入力とを有するマルチプレクサを含み、前記マルチプレクサの前記出力は、前記第1及び第2の入力で受け取られた命令を前記第1の実行ユニットに渡すように構成され、前記マルチプレクサの前記第1の入力は、前記命令バッファ・ロジックからの命令を受け取るために前記命令バッファ・ロジックと結合され、前記マルチプレクサの前記第2の入力は、前記長レイテンシ処理に関連する前記複数の命令を受け取るように構成され、
    前記マルチプレクサの前記出力と結合されたデコード・ロジックを使用して前記デコード・ロジックによって受け取られた命令をデコードするステップと、
    前記デコード・ロジックと結合された依存関係ロジックを使用して命令間の依存関係を解決するステップと、
    前記依存関係ロジックと結合された発行選択ロジックを使用して前記第1の実行ユニットに対して命令を発行するステップと、を更に含み、
    前記命令バッファ・ロジックは、マルチスレッド化され、複数のスレッドからの命令を出力するように構成され、前記シーケンサ・ロジックが前記長レイテンシ処理に関連する前記複数の命令を発行している間に、前記命令バッファ・ロジックからの命令が前記第1の実行ユニットに対して発行されるのをブロックする前記ステップは、前記シーケンサ・ロジックが前記複数の命令を順次発行している間に少なくとも1つの他のスレッドからの命令がブロックされないように、前記シーケンサ命令と同一のスレッドに関連する命令だけをブロックするステップを含む、方法。
JP2009191947A 2008-10-16 2009-08-21 命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニットによる命令実行のための回路構成、集積回路デバイス、プログラム、及び方法 Expired - Fee Related JP5629068B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/252541 2008-10-16
US12/252,541 US7941644B2 (en) 2008-10-16 2008-10-16 Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer

Publications (2)

Publication Number Publication Date
JP2010097593A JP2010097593A (ja) 2010-04-30
JP5629068B2 true JP5629068B2 (ja) 2014-11-19

Family

ID=42109545

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009191947A Expired - Fee Related JP5629068B2 (ja) 2008-10-16 2009-08-21 命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニットによる命令実行のための回路構成、集積回路デバイス、プログラム、及び方法

Country Status (3)

Country Link
US (1) US7941644B2 (ja)
JP (1) JP5629068B2 (ja)
KR (1) KR101107394B1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8139061B2 (en) * 2008-08-01 2012-03-20 International Business Machines Corporation Floating point execution unit for calculating a one minus dot product value in a single pass
US8510749B2 (en) 2010-05-27 2013-08-13 International Business Machines Corporation Framework for scheduling multicore processors
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
CN105094747B (zh) * 2014-05-07 2018-12-04 阿里巴巴集团控股有限公司 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
CN110825440B (zh) * 2018-08-10 2023-04-14 昆仑芯(北京)科技有限公司 指令执行方法和装置
US11094103B2 (en) * 2019-03-26 2021-08-17 Qualcomm Incorporated General purpose register and wave slot allocation in graphics processing
CN113867793A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses
US11886767B2 (en) 2022-06-17 2024-01-30 T-Mobile Usa, Inc. Enable interaction between a user and an agent of a 5G wireless telecommunication network using augmented reality glasses
CN116881194B (zh) * 2023-09-01 2023-12-22 腾讯科技(深圳)有限公司 处理器、数据处理方法及计算机设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US6711667B1 (en) * 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
CN1280714C (zh) * 1996-08-27 2006-10-18 松下电器产业株式会社 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
US6237083B1 (en) * 1998-02-13 2001-05-22 Advanced Micro Devices, Inc. Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
JP4651790B2 (ja) * 2000-08-29 2011-03-16 株式会社ガイア・システム・ソリューション データ処理装置
US6691306B1 (en) * 2000-12-22 2004-02-10 Lsi Logic Corporation Use of limited program space of general purpose processor for unlimited sequence of translated instructions
JP4783527B2 (ja) * 2001-01-31 2011-09-28 株式会社ガイア・システム・ソリューション データ処理システム、データ処理装置およびその制御方法
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
EP1494175A1 (en) * 2003-07-01 2005-01-05 Koninklijke Philips Electronics N.V. Selection of a mipmap level
US7373536B2 (en) * 2004-08-04 2008-05-13 Kabushiki Kaisha Toshiba Fine granularity halt instruction
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US7831815B2 (en) * 2008-02-06 2010-11-09 Arm Limited Data processing apparatus and method for identifying sequences of instructions

Also Published As

Publication number Publication date
JP2010097593A (ja) 2010-04-30
KR20100042581A (ko) 2010-04-26
KR101107394B1 (ko) 2012-01-19
US20100100712A1 (en) 2010-04-22
US7941644B2 (en) 2011-05-10

Similar Documents

Publication Publication Date Title
US7941644B2 (en) Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
US7814303B2 (en) Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively
US8255443B2 (en) Execution unit with inline pseudorandom number generator
US8217953B2 (en) Anisotropic texture filtering with texture data prefetching
US7809925B2 (en) Processing unit incorporating vectorizable execution unit
US8248422B2 (en) Efficient texture processing of pixel groups with SIMD execution unit
US20260017091A1 (en) System and method to accelerate reduce operations in graphics processor
US9021237B2 (en) Low latency variable transfer network communicating variable written to source processing core variable register allocated to destination thread to destination processing core variable register allocated to source thread
US9710274B2 (en) Extensible execution unit interface architecture with multiple decode logic and multiple execution units
US7973804B2 (en) Image processing with highly threaded texture fragment generation
US8139061B2 (en) Floating point execution unit for calculating a one minus dot product value in a single pass
US9501279B2 (en) Local instruction loop buffer utilizing execution unit register file
US10521234B2 (en) Concurrent multiple instruction issued of non-pipelined instructions using non-pipelined operation resources in another processing core
US12164430B2 (en) Instruction prefetch mechanism
US20170300361A1 (en) Employing out of order queues for better gpu utilization
US20130159668A1 (en) Predecode logic for autovectorizing scalar instructions in an instruction buffer
US20180107602A1 (en) Latency and Bandwidth Efficiency Improvement for Read Modify Write When a Read Operation is Requested to a Partially Modified Write Only Cacheline
US20180082431A1 (en) Priming Hierarchical Depth Logic within a Graphics Processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120330

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140114

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140604

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140826

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140916

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20140916

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141003

R150 Certificate of patent or registration of utility model

Ref document number: 5629068

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees