1.システム概要
図1ないし図3は、この発明に従うバス・アーキテクチャおよびデータ転送プロトコルを用いるコンピュータ・グラフィックス・システムの、それぞれ具体的な実施例を示すブロック図である。各々のシステムは、異なる数の構成要素を備え、それゆえ異なる性能レベルを提供する。図示されるシステムのうち2つは、付加のテクスチャ・マッピング機能を提供する。図示されるシステムは、例示であって、これに限定されるものではなく、任意のデータ転送システムが、この発明のバス・アーキテクチャおよびデータ転送プロトコルを利用することできることを理解しなければならない。
図1は、3つのうちの最も単純なシステムを示す。図示されるように、システムは、ホスト・コンピュータ100、フロントエンド・サブシステム102およびフレーム・バッファ・サブシステム104を含む。フロントエンド・サブシステム102は、ホストコンピュータ100からバス101を通して、レンダリングされるプリミティブを受信する。プリミティブは典型的に、三角形の頂点のようなプリミティブの特定の部分の各々に関するx,y,z座標データ、R,G,Bカラー・データおよびアルファ・ブレンディング(blending)・データによって指定される。
3次元でプリミティブを表現するデータは、フロントエンド・サブシステム102によって、セグメント122A、122Bおよび122Cを有するバス122を介して、フレーム・バッファ・サブシステムに提供される。フレーム・バッファ・サブシステム104は、フロントエンド・サブシステム102から受信されるレンダリング・データを補間して、各々のプリミティブを表現する表示画面上のピクセルを計算し、各々のピクセルについて結果の物体のR,G,Bカラー値を決定する。各々のピクセルに関するR,G,Bカラー制御信号は、それぞれR,G,Bライン123(B)上に供給され、結果として得られる画像を表示する表示画面のピクセル(図示せず)を制御する。
図1に示される実施例で、フロントエンド・サブシステム102は、ホスト・インタフェース106および3次元(3D)幾何アクセラレータ110を含む。上述したように、ホスト・インタフェース106は、ホストコンピュータ100からバス101を介して、x,y,z座標およびカラー・プリミティブ・データを受信する。そのようなデータは、ホスト・インタフェース106からバス108を通して幾何アクセラレータ110に供給される。幾何アクセラレータ110は、表示するためのレンダリング・データをもたらす従来の幾何アクセラレータ機能を実施する。そのような機能は、浮動小数点形式で実施される、3次元変換、ライティング、クリッピング、透視乗算演算、および平面方程式生成を含むことができる。レンダリング・データは、幾何アクセラレータ110により、バス112に沿ってホスト・インタフェース106に供給され、ホスト・インタフェース106は、レンダリング・データを再びフォーマットし、浮動小数点から固定小数点への変換を実施し、そのようなデータをバス・システム122を通してフレーム・バッファ・サブシステム104に供給する。
この実施例で、フレーム・バッファ・サブシステム104は、2つのフレーム・バッファ・コントローラ114Aおよび114Bを含み、各々のバッファ・コントローラは、それぞれ同期式グラフィックス・ランダムアクセスメモリ(SGRAM)116Aおよび116B、およびランダムアクセスメモリ・ディジタル・アナログ変換器(RAMDAC)120をもつ。バス・システム122には、フレーム・バッファ・コントローラ114Aおよび114Bの両方およびホスト・インタフェース106が接続される。この実施例で、バス122は、それぞれ同じものである3つのバス122A、122Bおよび122Cを含む。以下でより詳しく述べるバス・アーキテクチャ122および関連するデータ転送プロトコルは、従来技術のアーキテクチャおよびプロトコルにまさる改善された帯域幅を提供する。
図1の実施例で、各々のフレーム・バッファ・コントローラ114Aおよび114Bは、ホスト・インタフェース106からレンダリング・データを受信する。各々のフレーム・バッファ・コントローラは、表示画面の異なる重なり合わないセグメントを制御することができる。フレーム・バッファ・コントローラは、プリミティブ・データを補間して、プリミティブを表現する画面表示ピクセル座標および各々の座標のピクセルについて、対応する物体R,G,Bカラー値を計算することができる。
フレーム・バッファ・コントローラ114Aおよび114Bによって生成される、各々のピクセルについてR,G,B値を含む結果として得られる画像ビデオ・データは、対応するSGRAMS116Aおよび116Bに格納することができる。ビデオ・データは、SGRAMチップからフレーム・バッファ・コントローラに取り出され、RAMDAC120が処理できるように再びフォーマットされ、RAMDACに提供されることができる。RAMDAC120は、各々のピクセルについて、デジタル・カラー・データをアナログR,G,Bカラー制御信号に変換することができ、変換された信号は、画面ディスプレイ(図示せず)を制御するようにR,G,Bライン123に沿って供給される。
ホスト・インタフェース106は、ビデオ・バス124を通して直接RAMDAC120と通信することもできる。システムは、フレーム・バッファ・サブシステム104が第1のプリミティブに関して演算し、一方でフロントエンド・サブシステム102が(時間的に)次に続くプリミティブに関して演算するというような、パイプライン化されたシステムであることが好ましい。
この発明のバス・システムは、図2に示されるグラフィックス・システム内で使用することもできる。図2に示されるシステムは、(1)2つの3D幾何アクセラレータ110Aおよび110Bが、フロントエンド・サブシステム102に含まれること、(2)テクスチャ・マッピング・サブシステム130が使用されること、および(3)各々のSGRAMメモリ116Aおよび116Bが、容量を増やしたこと、を除いて図1に示されるシステムと同様である。2つの幾何アクセラレータ110Aおよび110Bを用いて、プリミティブ・データは、以下でより詳しく記述されるようにこの発明のデータ転送プロトコルに従ってそれぞれの幾何アクセラレータ間に分配される。
テクスチャ・マッピング・サブシステム130は、テクスチャ・マッピング演算を実行する任意のサブシステムでありえるが、この典型的な実施例では、テクスチャ・マッピング回路132、およびテクスチャ・データの制限された量を格納する関連するローカル・キャッシュメモリ134を含む。
この実施例で、バス122は、それぞれの部分122A-122Dを含む。テクスチャ・マッピング回路132は、ホスト・インタフェース106およびフレーム・バッファ・コントローラ114Aの間のバス122に接続される。演算の間、テクスチャ・マッピング回路132は、フレーム・バッファ・コントローラ回路114Aおよび114Bの両方と同様に、バス122Aに沿ってプリミティブ・データを受信する。データは、少なくとも1つの頂点に関数するx,y,z物体ピクセル座標、物体R,G,Bカラー値およびS,Tテクスチャ・マップ座標、およびプリミティブ(すなわち三角形)の平面方程式を含むことができる。テクスチャ・マッピング回路132は、x,yピクセル座標およびS,Tテクスチャ座標を補間して、各々のピクセルについて結果のテクスチャ・データを計算することができる。各々のピクセルに関するテクスチャ・データは、任意の時間にキャッシュ・メモリ134に格納することができる。そうである場合、テクスチャ・データは、キャッシュ・メモリ134から読み込まれる。要求されるテクスチャ・データが、その時間にキャッシュ・メモリ134に存在しない場合、以下でより詳しく記述されるように、データ・レンダリング・パイプラインまたは専用のテクスチャ・データ・パスをフラッシュする必要なく、この発明に従う効果的な方法で、要求されるテクスチャ・データをホストコンピュータからダウンロードする。
各々のピクセルに関するテクスチャ・データは、テクセル・バス136に沿って各々のフレーム・バッファ・コントローラ114Aおよび114Bに供給することができ、そこでテクスチャ・データは、1ピクセル毎の基準で、各々のフレーム・バッファ・コントローラによって物体R,G,Bカラー値と組み合わせられる。
フロントエンド・サブシステム102、フレーム・バッファ・サブシステム104およびテクスチャ・マッピング・サブシステム130は、現在知られている任意のサブシステムまたは今後開発されるサブシステムでありえることを理解すべきである。さらに、そのような各々のサブシステムは、パイプライン化され、複数のプリミティブに関して同時に演算することが好ましい。このように、テクスチャ・マッピング・サブシステム130およびフレーム・バッファ・サブシステム104が、フロントエンド・サブシステム102が以前に提供したプリミティブに関して演算し、一方フロントエンド・サブシステム102は、そのような下流サブシステム内のパイプラインが満杯になるまで新しいプリミティブに関して演算し続ける。
この発明のバス・アーキテクチャは、異なるタイプの複数のグラフィックス処理チップが、アーキテクチャ内で交換可能に配置できるように構成される。すなわち、バス122に接続される各々のチップは、テクスチャ・マッピング、フレーム・バッファ制御またはその他のそのような機能のような、任意のグラフィックス機能を実施することができる。
図3は、この発明のバス・アーキテクチャを用いるグラフィックス・システムの更なる実施例を示すブロック図である。図3のシステムで、フロントエンド・サブシステム102は、3つの3D幾何アクセラレータ110A、110Bおよび110Cを含む。フレーム・バッファ・サブシステム104は、それぞれSGRAMメモリ116A-116Dを有する4つのフレーム・バッファ・コントローラ114A-114Dを含む。テクスチャ・マッピング・サブシステム130は、関連するキャッシュメモリ134および135をそれぞれが有する2つのテクスチャ・マッピング回路132および133を含む。
この発明のバス・アーキテクチャ122のバス・セグメント122A-Gによって、ホスト・インタフェース106、各々のテクスチャ・マッピング回路132および133、および各々のフレーム・バッファ・コントローラ114A-114Dが接続される。テクセル・バス137が、テクスチャ・マッピング回路133と各々のフレーム・バッファ・コントローラ114Cおよび114Dの間に接続される。動作は、図2に関して記述したのとと同様である。
2.バス相互接続システム
図4を参照すると、この発明に従うバス相互接続システム200のブロック図が示されている。(例えばフレーム・バッファ・コントローラのような)多数のグラフィックス・チップを相互接続するために使用することができるバス相互接続システム200は、多数の処理要素202,222および242を含む。処理要素202は、中央処理装置(CPU)のような外部ホスト装置(図示せず)に、周辺要素相互接続(PCI)バス201を介してインタフェースされる。各々の処理要素202、222および242は、特定用途向け集積回路(ASIC)チップを含み、そのコアは、フレーム・バッファ・コントローラ、テクスチャ・マッピング装置等のような、任意のタイプのグラフィックス処理装置として構成することができる。
バス相互接続ネットワーク200を使用することができるシステムの例は、図1ないし図3に示されている。例えば図1で、ホスト・インタフェース106は、バス101を介してホストコンピュータ100に結合し、ホスト・インタフェース106は、フレーム・バッファ・コントローラ114Aおよび114Bとリング状に相互接続される。このように、この例では、処理要素202(図4)は、ホスト・インタフェース106(図1)に対応し、PCIバス201(図4)は、バス101(図1)に対応し、処理要素222および242(図4)は、それぞれバッファ・コントローラ114Aおよび114B(図1)に対応することができる。
図4に示されるように、各々の要素202、222および242は、それぞれコア・プロセッサ204、224および244およびインタフェース回路206、226および246を含む。各々の処理要素のコア・プロセッサは、同じものでも異なるものでもよいが、インタフェース回路206、226および246は、同じものである(ことが好ましい)。各々のコア・プロセッサ204、224および244およびその関連のインタフェース206、226および246の間には、いくつかの非同期式先入れ先出しバッファ(FIFO)208、210、212、214、228、230、232、234、248、250、252および254が結合される。これらの非同期式FIFOは、インタフェース回路206、226および246からそれぞれコア・プロセッサ204、224および244へ、およびコア・プロセッサ204、224および244からそれぞれインタフェース206、226および246へ、の両方にバッファされる(すなわち非優先の)情報パスおよびバッファされない(すなわち優先の)情報パスを提供する。
バッファされる(すなわち非優先の)情報とバッファされない(すなわち優先の)情報の区別、およびバッファされる(すなわち非優先の)情報パスとバッファされない(すなわち優先の)情報パスの間の情報の各々のタイプの処理は、それぞれ以下により詳しく記述される。しかしここで、情報の2つの別個のタイプは、1つの共有バスを使用して処理要素間で伝送できることを理解しなければならない。情報の各々のパケットは、(それと同時に伝送されるタイプ・フィールド・データに特定のビットを設定することによって、)バッファされる(すなわち非優先の)またはバッファされない(すなわち優先の)情報のどちらかであると識別される。インタフェース回路によって受信された後、バッファされると識別される情報は、バッファされる情報のみを受信する記憶要素(すなわち非優先情報記憶要素)に転送され、バッファされないと識別される情報は、バッファされない情報のみを受信する記憶要素(すなわち優先情報記憶要素)に転送される。
バッファされない(すなわち優先の)情報は、バッファされる(すなわち非優先の)情報よりも常に優先度が高くなるが、非優先情報は、バッファされない(すなわち優先の)情報が処理し終わるまで、バッファされない(すなわち優先の)情報パスとは異なる情報パス内に保持されるように、リング内のインタフェース回路を制御することにより、優先情報が送られる前にそのパイプライン・パスを「フラッシュ」しなければばらないシステムにまさる重要な利点が提供される。
優先情報は、ここでは「バッファされない」と識別されるが、それにもかかわらずそれは、情報記憶要素を通して処理されるように、言葉の一般的な意味で実際上「バッファされる」ことを理解しなければならない。だが、バッファされない情報は、非優先情報と比較するとある意味ではバッファされないので、ここでは優先情報は、バッファされないという。
さらに図4を参照して、処理要素222を一例として使用すると、バッファされる書込(BW)FIFO228(すなわち非優先インタフェース出力記憶要素)は、インタフェース回路からコア・プロセッサへバッファされる(すなわち非優先の)情報パスを提供するように、インタフェース回路226とコア・プロセッサ224の間に結合される。同様に、バッファされない書込(UW)FIFO230(すなわち優先インタフェース出力記憶要素)は、インタフェース回路からコア・プロセッサへバッファされない(すなわち優先の)情報パスを提供するように、インタフェース回路226とコア・プロセッサ224の間に結合される。さらに、バッファされる読込(BR)FIFO232(すなわち非優先インタフェース入力記憶要素)は、コア・プロセッサとインタフェース回路の間にバッファされる(すなわち非優先の)情報パスを提供するように、コア・プロセッサ224とインタフェース回路226の間に結合される。最後に、バッファされない読込(UR)FIFO234(すなわち優先インタフェース入力記憶要素)は、コア・プロセッサとインタフェース回路の間にバッファされない(すなわち優先の)情報を提供するように、コア・プロセッサ224とインタフェース回路226の間に結合される。典型的な読込および書込FIFO228、230、232および234の配置および動作は、以下でより詳しく記述される。
処理要素202、222および242は、バス・セグメント250、252および254を含む単方向バスによって相互接続される。相互接続ネットワーク200のバス・セグメント250、252および254は、構成および幅が同一である。図示されるように、バス・セグメント250、252および254は、リング形式で処理要素202、222および242を相互接続する。バス・セグメント250は、処理要素202および222を相互接続し、バス・セグメント252は、処理要素222および242を相互接続し、バス・セグメント254は、処理要素242および202を相互接続する。こうして、処理要素202からの情報は、処理要素222に送られ、処理要素222からの情報は、処理要素242に送られ、処理要素242からの情報は、処理要素202に戻される。
図4に示される配置を使用することによって、情報は、外部ホスト装置と処理要素202の間で(PCIバス201を介して)交換されることができ、情報は、各々の処理要素202、222および242からリング内のその次の処理要素に単方向に循環することができる。この循環の配置は、各々のインタフェースの出力が、リング内のそれに続くただ1つのインタフェースの入力をドライブし、処理要素の隣接する各々の対の間の単純なポイントツーポイント接続を提供する。各々の処理要素は、1ロードのみをドライブするので、信号の完全性の問題が最小限にされ、その結果として、高いバス帯域幅を達成することができる。
さらに、この実施例で、要素から要素へ転送される情報は、クロック信号と共に転送される。このようにして、システム全体のクロック同期を提供する必要が排除され、別の処理要素の付加は、単に新しい処理要素をリング内にプラグ接続することによって達成される。すなわち、クロック信号の完全性は、リング内の処理要素の数が増加するにつれて当然低下するが、クロックを情報と共に転送することによって、バスに含まれる要素の数を事実上無制限にすることができる。
このように、この発明によるリング相互接続システムは、幅が低減されたバスを使用して、通信帯域幅の増加を可能にする。高スループットは、リングのインタフェースに情報をすばやく送ることによって達成され、一方、各々の要素のコア・プロセッサが、情報転送レートから非同期でコマンド処理することを可能にする。バス幅が低減され、1バスあたり1ロードしかないので、ルーティングおよび信号の完全性の問題が低減される。さらに、クロックが、リング配置内で情報と共に伝送されると、追加の処理要素は、システムの同期化に悪影響を及ぼすことなく容易にリング・ネットワークに加えるまたはそこから削除することができる。各々の処理要素が、情報をバスから抽出するのに必要とする時間はわずかであるので、別の処理要素をリングに加えることは、追加される処理要素あたり追加の1クロック・サイクルしか増やさず、従って最小限の追加の遅延を生じさせるだけである。
3.バス相互接続
図4を参照して、バス・セグメント250、252および254の1つの機能は、処理要素202、222および242の間で情報のパケットを転送することである。発明の1つの実施例によると、情報の完全なパケットは、2つの別個の部分を含み、各々の部分は、情報の32ビットを含む。伝送されるとき、各々の情報パケットの2つの部分は、時間的に多重化されるので、転送される各々の完全なパケットについて、情報の64ビットが、実際に処理要素間で転送される。例えば、情報パケットの第1の部分は、32ビット・アドレスを含むことができ、パケットの(第1の部分のすぐ後に続く)第2の部分は、32ビット・データワードを含むことができる。さらにこの実施例によれば、各々の完全な情報パケットのそれぞれの部分は、それに関連する9ビット・タイプデータ・フィールドをもち、この9ビット・タイプフィールドは、関連する情報パケットと同時に伝送される。
各々のバス・セグメント250、252および254は、情報およびタイプデータの転送に割り当てられる41バス・ラインをもつ。バス・セグメント250を一例として使用すると、32の別個のバス・ラインを含む250Fバス・ラインが、インタフェース回路206とインタフェース回路226の間の情報の32ビットの単方向の転送に割り当てられ、9つの別個のバス・ラインを含む250Eバス・ラインが、インタフェース回路206とインタフェース回路226の間のタイプデータの9ビットの単方向の転送のために割り当てられる。このように、1クロック・サイクルの間に、バス・ライン250Eおよび250Fは一緒に、処理要素202と222との間でタイプデータの9ビットおよび情報の32ビットを転送することができる。情報およびタイプデータの半パケット(すなわち情報の32ビットおよびタイプ・データの9ビット)は、少なくとも200MHzのレートで転送されることが好ましい。
図4に示されるように、各々のバス・セグメント250、252および254は、それが相互接続する処理要素間に、共通信号を提供する。再びバス・セグメント250を一例として使用すると、これらの信号は、バス・ライン250Aに沿って伝送されるクロック信号(CLK)と、バス・ライン250Bに沿って伝送されるバッファされる情報準備信号(B_Rdy)と、バス・ライン250Cに沿って伝送されるバッファされない情報準備信号(U_Rdy)と、バス・ライン250Dに沿って伝送されるビジー信号(Busy)と、バス・ライン250Eに沿って伝送されるタイプ・フィールド信号(Type[8:0])と、バス・ライン250Fに沿って伝送される情報フィールド信号(Info[31:0])と、を含む。クロック信号(CLK)、タイプ・フィールド信号(Type[8:0])および情報フィールド信号(Info[31:0])は、リング内の(処理要素202のような)1つの処理要素から(処理要素222のような)次の処理要素へ第1の下流方向に送られる。バッファされる情報準備信号(B_Rdy)、バッファされない情報準備信号(U_Rdy)およびビジー信号(Busy)は、リング内の(処理要素222のような)第2の処理要素から(処理要素202のような)第1の処理要素へ、逆の上流方向に供給される。これら「逆方向」の信号のうちの2つすなわちB_RdyおよびU_Rdyは、以下でより詳しく記述されるように、処理要素間の情報のフローを制御するために使用される。
ビジー信号は、バス上のチップのどれがビジーであるか否かを示すために使用される。ホストが読み込むことができるマスタ処理要素内のレジスタが、チップのどれがビジーであるか否かを把握する。このようにして、ホストは、処理要素を伴う特定の演算をいつ実施することができるかを判断することができる。
バス相互接続システム200の1つの重要な利点は、その柔軟性である。すなわち、上述したように、クロックがデータと共に伝送され、ただ1つのロードが、各々のソースに結合されるので、バス相互接続システム200は、信号の完全性または帯域幅の深刻な低下を生じることなく、任意の数の処理要素を相互接続することができる。こうして、この発明のバス・アーキテクチャは、テクスチャ・マッピング、画像処理、ボリューム・レンダリングのような機能を実行する任意の処理要素の追加、または性能および機能性の向上のためにラスタライザまたはフレーム・バッファ・コントローラのような標準の処理要素の追加を可能にする。
バス構造によって提供されるもう1つの利点は、2つの別個の32ビット情報ワードを(時間的に)多重化することにより、この情報を処理要素間で交換するのに必要とされるピンの数が、情報パケットがそのように多重化されない場合に必要とされる数の半分になるということである。バスのスピードすなわち200MHzは、上述したようにアドレスの32ビットおよびデータの30ビットの多重化が実施され、グラフィックス装置が性能目標を満たすに十分な高さである。ピンの削減は、一般に、ASIC設計で主要なファクタであるので、情報転送に割り当てられるピンの数の半分を使用して性能目標を満たすバス構造の能力は、同じ量の情報を伝送するのにより多くのピンを使用するシステムにまさる重要な利点を提供する。
ASIC技術が向上するが、利用できるピン総数が増加し、または技術的な進歩が、より高速なデータ転送レートの必要を指図しなければならないとき、41ビット情報パスは、より多くのピンを情報転送に割り当てることができるように、容易に拡張することができ、それゆえシステムの帯域幅を増大させることができる。さらに、PCボード技術およびI/Oパッド設計の改善は、間違いなくバス・アーキテクチャ200が、増大された周波数で動作することを可能にする。
さらに、上述したように、バス・セグメント250、252および254は単方向である。一般に単方向バスは、バスの方向を逆にすることに関連する遅延期間がないので、双方向バスより高速なデータ転送レートを提供する。さらに、伝送および受信パスの両方を提供し、制御する必要がないので、単方向バス構造は、典型的に管理するのが比較的簡単であり、より少ないハードウェアしか必要としない。
4.処理要素
上述したように、図4の各々の処理要素は、コア・プロセッサ(例えばコア・プロセッサ224)と、多数の書込および読込FIFO(例えばFIFO228,230,232および234)と、インタフェース回路(例えばインタフェース回路226)と、を含む。また上述されたように、各々の処理要素のコア・プロセッサは、同じものである必要はない。例えば図4の実施例で、処理要素202のコア・プロセッサ204は、ホストPCIバスとインタフェースするための論理を含むが、それが他のコア・プロセッサに含まれる必要はない。図4の例で、処理要素202は、リング・ネットワーク200内のマスタ処理要素であり、前述したように、図1ないし図3のホスト・インタフェース106に対応することができる。こうして、以下に記述されるように、処理要素202は、リング内に結合される他の処理要素とは少し異なる方法で入力パケットを処理する。
バス相互接続ネットワーク200に関連する各々の処理要素202、222および242の一般的な動作は、以下の通りである。1次クロックは、フェーズ1(P1)およびフェーズ2(P2)の2つのフェーズに分割される。前述したように、情報ライン(例えばバス・ライン250F)を横断して伝達されるパケットは、例えば、多重化されたアドレス/データ情報でありえる。(1つの典型的な実施例で)各々のパケットは、アドレス情報の32ビットおよびデータ情報の32ビット(パケットあたり情報の64ビットの合計)を含む。こうして、フェーズ1(P1)の間、パケットのアドレス部分を、情報ライン(例えばバス・ライン250F)に沿って伝送することができ、フェーズ2(P2)の間、パケットの関連するデータ部分を情報ラインに沿って伝送することができる。
しかしここで、情報のパケットは、データ・パケットが後にくるアドレス・パケットを含む必要はなく、アドレスおよびデータ情報の任意の組合せを含むことができることに注意しなければならない。例えば、以下の表2に示されるように、ブロック転送のような操作が実施されるとき、情報パケットは、別のデータ・パケットが後にくるデータ・パケットを含むことができる。さらに、情報のパケットは、2つ以上の異なる部分に多重化されなくてもよく、選択として、この発明の理念から逸脱することなく、1つの多重ビット・パケットとして伝送されてもよいことに注意しなければならない。
情報の各々のパケットは、インタフェース回路(例えばインタフェース回路226)によって、1組の情報ライン(例えばバス・ライン250F)を通して受信される。処理要素によって受信される全てのパケットは、処理するため、その処理要素のコア・プロセッサ(例えば処理要素222のコア・プロセッサ224)に送られる。各々の処理要素は、それに関連するユニークな基準アドレスをもつので、例えば、読み込み操作の間、到来アドレスの5ビットを処理要素の基準アドレスと比較して、パケットがその処理要素に向けられたものかどうか調べることができる。処理要素の全ての同じタイプは、共通の基準アドレスを共有することが好ましい。特定のパケットが、ある処理要素に関係しない場合、そのコア・プロセッサは単にそのパケットを落とす。そうでなければ、コア・プロセッサは、パケットによって指図されるあらゆる機能を実施する。パケットが読込パケットである場合、例えば、コア・プロセッサ(例えばコア・プロセッサ224)は、そのメモリから読み込まれた情報を、(わずかな遅延の後)それに関連するインタフェース回路(例えばインタフェース回路226)から外に送り、それによってインタフェース回路は、下流の処理要素(例えば処理要素242)に情報を送ることができる。
バス相互接続システム200が、高周波で動作することができる1つの理由は、(マスタ処理要素202以外の)各々の処理要素について各々のインタフェース回路が、リング内の次の処理要素に情報を渡す前に最小限の時間しか情報を保持しないからである。すなわち、情報が各々の処理要素222および242に転送されるとき、各々のインタフェース回路226および246はそれぞれ、第1クロック・サイクルの間に、入力レジスタ(図示せず)内の情報を取り出し、必ずしも次に続くクロック・サイクルでなくてもよいが、第1のクロック・サイクルの後にくる第2のクロック・サイクルの間に、その情報を出力レジスタ(図示せず)に送る。このように、1つの実施例で、処理要素226および246の各々で生じる待ち時間は、1クロック・サイクルしかない。このように、(マスタ処理要素202以外の)処理要素によって受信される全てのパケットは、そのインタフェース回路によって、リング内の次の処理要素に送られる。
対照的に、マスタ処理要素は、それがリング相互接続の開始および終了であるため、「迂回モード」で動作するように構成される。迂回モードで、インタフェース回路206は、2つの別個の半分として動作する。(書込FIFO208および210を含む)入力の半分は、リングから全てのアドレス/データ情報を受信し、受信した情報をコア・プロセッサ204を通して迂回させ、(読込FIFO212および214を含む)出力の半分は、新しいアドレス/データ情報をコア・プロセッサ204から受け取り、この情報をリング内の次の処理要素に送る。こうして、図4に示される例で、(マスタ処理要素202内の)インタフェース回路206によって受信される全ての情報は、コア要素204に入り、情報は、インタフェース回路226および246の各々で行われるように直接インタフェース206の入力からその出力へ渡されることは決してない。出力の半分は、(PCIバスを通して)ホスト・プロセッサからコマンドを受信し、そのようなコマンドを伝えまたは修正し(またはそれに応答する追加のコマンドを生成し)、これらのコマンドをリングに送ることができる。
迂回モードは、マスタ処理要素についてのみ使用されるように上述したが、改善された機能性を提供するために、同様にリング内の他の処理要素について使用することができると考えられる。例えば、迂回モードを、他の処理要素内でも使用することにより、それらの要素が、画像処理のような機能を実施することを可能にする。画像処理の間、データは、典型的にコア・プロセッサに供給され、操作され、コア・プロセッサの外に渡される。このように、(コア・プロセッサが画像処理を実行しているとき)コア・プロセッサによって受信されるデータは、典型的に、データが入ってきてから出ていくまでの間の待ち時間が非常に長くなりうるような方法で格納され、処理される。その上、コアを出ていくデータ量と異なるデータ量が、コアに入ってくることがある。従って、リング内の1つまたは複数の処理要素を迂回モードに置くことによって、画像処理は、リングの全体の性能を低下させずに、それらの処理要素によって扱われることができる。
さらに、迂回モードを使用して、例えば処理要素は、デジタル・ビデオストリームを、伝送する処理要素の下流にあるビデオ・データ処理要素に伝送することができる。デジタル・ビデオストリームを供給する(複数の)処理要素は、デジタル・ビデオストリームを受信する(複数の)ビデオ・データ処理要素より上流になければならない。そのような機能を実施するため、ホストは、デジタル・ビデオ処理要素のインタフェース内の迂回状態ハードウェア・レジスタ(図示せず)に書き込むことによって、デジタル・ビデオデータ処理要素を迂回モードに置く。ビデオ処理要素を迂回モードに置いた後、それ以外の操作が、相互接続時に実施されてはならない。迂回モードに置かれた後に、ビデオ処理要素は、メモリおよびオーバレイ・バッファ、画像バッファ、またはリング・バス内の下流の処理要素のいずれかの中のテクスチャ・キャッシュへの書き込みを生成することができる。
迂回モードは、各々の「迂回されるべき」インタフェース回路に、迂回状態ハードウェア・フラグを設定することによって可能になる。従って、図4に示される例で、インタフェース回路206の迂回状態ハードウェア・フラグは、恒久的に設定され、インタフェース回路226および246の迂回状態ハードウェア・フラグは、選択的に設定されることができる。
(図4の)マスタ処理要素202は、リング・ネットワーク内の情報パケット通信を開始するので、情報と共に送られる1次クロックも提供する。すなわち、マスタ処理要素202は、迂回モードで動作するように構成されることに加えて、「マスタ・モード」で動作するようにも構成される。全ての処理要素は、それらがマスタ・モードで動作するように構成されるか否かにかかわらず、上流の処理要素から、その処理要素からの情報と共に到来クロック(In_CLK)を受信する。この到来クロックIn_CLKは、(後述する)インタフェース回路の入力回路をクロックするために使用される。マスタ・モードで動作するように構成されない、処理要素202以外の処理要素は、(後述する)インタフェース回路の出力回路をクロックするのにも到来クロックIn_CLKを使用する。
インタフェース回路206は、マスタ・モードで動作するように構成されるので、その出力回路は、到来クロック(In_CLK)ではなくコア・プロセッサ204によって生成されるソース・クロック(Src_CLK)を使用してクロックされるように制御される。従って「マスタにされた」処理要素のコアからのソース・クロックSrc_CLKが、情報と一緒に、その処理要素のコアからリング内の次の処理要素へ送られる。インタフェース回路の出力回路にタイミングを提供するために、(マスタ・モードで動作するように構成されるか否かに依存して)ソース・クロックまたは到来クロックのどちらを選択するかという方法、およびそこからの適当なタイミング信号の生成は、以下でより詳しく述べる。
上述したように、マスタ処理要素に結合される処理要素は、一般に迂回モードで動作しない。従って、全ての非マスタ処理要素(例えば処理要素222および242)について、リング内のある処理要素から他の処理要素への情報の転送は、主に処理要素のインタフェース回路(例えばインタフェース回路226および246)によって制御される。非マスタ処理要素222を一例として使用すると、コア・プロセッサ224は、非同期式バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230を介して情報を受信し、コア・プロセッサ224から読み込まれる情報を、非同期式バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234を介してインタフェース回路226の出力に渡す。FIFO228、230、232および234が、「非同期式」とよばれるのは、バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230が、インタフェース回路226から情報を受信し、バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234が、(インタフェース回路226によって提供される)第1のクロックを使用してインタフェース回路226に情報を伝送し、一方バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230が、情報をコア・プロセッサ224に伝送し、バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234が、第1のクロックとは異なる周波数をもちうる(コア・プロセッサ224によって提供される)第2のクロックを使用して、コア・プロセッサ224から情報を受信するからである。このように、インタフェース回路226およびコア・プロセッサ224は異なる周波数で動作することができるので、非同期FIFO228、230、232および234の使用は、2つの装置間の情報の転送を容易にする。
1つの実施例で、処理要素222を一例として使用するとき、FIFO228、230、232および234の各々は、1FIFOエントリあたり82ビットを(並列に)格納することができる。書込および読込パスの各々の中で、バッファされるFIFO(すなわち非優先インタフェース記憶要素)およびバッファされないFIFO(すなわち優先インタフェース記憶要素)の両方を用いる理由は、以下でより詳しく述べる。しかし、ここで、2つの別個の情報パス、すなわちバッファされる(非優先の)情報パスおよびバッファされない(すなわち優先の)情報パスが、コア・プロセッサ224へおよびそこから提供されることに注意すべきである。1つの実施例で、バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230の各々のエントリに格納される82並列ビットのうちの41ビットは、パケット伝送のフェーズ1(P1)の間に受信される32情報ビットおよび9タイプ・ビットに対応し、ビットのうち他方の41ビットは、パケット伝送のフェーズ2(P2)の間に受信される32情報ビットおよび9タイプ・ビットに対応する。従って、書き込み機能のようにアドレスおよびデータを必要とする機能が実施される場合、各々のバッファ・エントリは、32ビット・アドレスと、アドレスに関連する9ビット・タイプフィールドと、データの32ビットと、(一般にアドレスに関連するタイプフィールドの複製である)そのデータに関連する9ビット・タイプフィールドと、を含む。この発明の1つの実施例で、バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230の各々は、少なくとも5エントリの深さでなければならず、読込FIFOの各々は、少なくとも1エントリの深さでなければならない。しかし、各々のFIFOの中のエントリ数は、必要に応じてコアによって調整することができることを理解すべきである。
1つの実施例で、各々の処理要素間で送られるクロック信号は、200MHzクロックである。各々のインタフェース回路(例えばインタフェース回路226)は、2フェーズ・クロッキング・システムを使用し、それらの各々のフェーズは、外部クロック周波数の2分の1で動作する、すなわち各々のフェーズは、この実施例の中で100MHzで動作する。ここで図5を簡単に参照すると、(上流の処理要素からの)到来システム・クロックIn_CLKと、各々のインタフェース回路の内部で生成される2つのクロッキング・フェーズであるフェーズ1(P1)およびフェーズ2(P2)との間の関係を示すタイミング図が示されている。動作のフェーズ(すなわちP1またはP2)は、到来システム・クロックIn_CLKの各々の立ち下がり端に関して変わることに注意されたい。タイミングの理由のため、図5に示される1フェーズ・クロックではなく相補的なシステム・クロックを使用することが望ましい。しかし、分かり易くするため、1フェーズ・クロックのみを以下で述べる。
上述したように、処理要素がマスタ・モードで動作するように構成されないとき、それは、到来クロックIn_CLKを、出発情報と共に伝送されるその出発クロック(Out_CLK)として伝送する。従って、マスタ・モードで構成されないとき、出発クロックOut_CLKに関して内部で生成されるフェーズP1およびP2は、到来In_CLKに関して内部で生成されるフェーズP1およびP2と同一である。しかし、処理要素が、マスタ・モードで動作するように構成されるとき、到来クロックIn_CLKではなく、そのコアからのソース・クロックSrc_CLKを使用してデータを伝送する。従って、マスタ・モードのとき、インタフェース回路は、ソース・クロックをその出発クロックOut_CLKとして伝送し、出発情報のフローを制御するために、図5に示されるものと同様の(しかし同一ではない)、(フェーズP1およびP2を含む)2フェーズ・クロッキング・システムを生成する。
ここで図6を参照すると、インタフェース回路226の詳細なブロック図が示されている。1つの実施例で、リング内の全ての処理要素のインタフェース回路は同じものであるので、インタフェース回路226の以下の記述は、同様にインタフェース回路206および246の各々にも適用されることを理解すべきである。しかし、前述したように、インタフェース回路206は、一般に、「迂回モード」および「マスタ・モード」でのみ動作するので、その動作は、インタフェース回路226および246のものと少しばかり異なる。
図6に示されるように、タイプデータ、および情報の多重化されたパケットが、インタフェース回路226の入力と同時に提供され、入力レジスタ260(すなわち入力記憶要素)へラッチされる。入力レジスタ260は、インタフェース回路226の入力パッドに含めることができ、あるいは選択として、インタフェース回路の外部に位置することもできる。上述したように、インタフェース回路226内の論理は、2フェーズ・システムを使用してクロックされる。到来クロックIn_CLKは、2で割る(divide-by-two)回路295の入力に提供され、2で割る回路295は、出力信号書込クロック(Wr_CLK)と、Wr_CLK信号の逆であるので、フェーズP2の間は高いフェーズ2クロック(P2_CLK)とを提供する。信号Wr_CLKおよびP2_CLKは、以下に記述されるように、インタフェース論理内のさまざまなレジスタを制御するために使用される。
到来クロックIn_CLKは、マルチプレクサ299の一方の入力にも提供される。マルチプレクサ299は、第2の入力として、コア・プロセッサ224からソース・クロックSrc_CLKを受信する。インタフェース回路224がマスタ・モードで動作するように構成されるとき、マルチプレクサ299は、その出力としてソース・クロックSrc_CLKを選択し、そのソース・クロックSrc_CLKを出力クロックOut_CLKとしてインタフェース回路226の出力に提供する。逆に、インタフェース回路が、マスタ・モードで動作するように構成されないとき、マルチプレクサ299は、その出力として入力クロックIn_CLKを選択し、その入力クロックIn_CLKを出力クロックOut_CLKとして提供する。
マルチプレクサ299の出力は、2で割る回路(devide-by-two)297の入力にも提供され、2で割る回路297は、読込クロックRD_CLKと、RD_CLKの逆であり、出力制御のためにその出力として使用される信号(図示せず)とを提供する。このように、インタフェース回路226が、マスタ・モードで構成されないとき、書込クロックWr_CLKおよび読込クロックRD_CLKは、同期しなければならず、両方ともP2_CLKの逆でなければならない。反対に、インタフェース回路226がマスタ・モードで構成されるとき、読込クロックRD_CLKは、ソース・クロックSrc_CLKによってのみ駆動される。
1つの実施例によれば、情報バス・ラインのうちの1つに関する情報の1ビット、例えばバス・ライン250F(図4に示す)のBit[31]の状態を切り換え、2で割る回路295および297の出力をそれに同期させることによって、2で割る回路295および297によって生成されるクロックをシステム全体で同期することができる。
入力レジスタ260と出力レジスタ300(すなわち出力記憶要素)の間に(マルチプレクサ270および282を介して)結合されるパス通過経路(pass through path)261を使用することによって、インタフェース回路226は、次の処理要素に伝送するために、情報パケット(およびタイプ・データ)をその回路を通して出力レジスタ300にすばやく送ることができる。パス通過経路261は、(後述する)バックアップ・パス290が空であり、下流の処理要素(図示せず)が、現在情報を受信することができることを示す信号をインタフェース回路226に提供するときは必ず使用される。しかし、下流の処理要素が、情報を受信することができないと示す場合、(情報を受信する準備をしていた)下流の要素に渡そうとしていた情報は、(後述する)バックアップ情報パス290内の情報記憶要素(例えばレジスタ)に格納される。このバックアップされる情報は、少なくともインタフェース回路226が、上流の処理要素(例えば図4の処理要素202)から情報を受信することを中止するまで、バックアップ情報パス290の情報記憶要素に格納されなければならない。上流の処理要素は、インタフェース回路226が、上流の処理要素にその情報の伝送を中止するように命令する信号を提供することに応答して、情報を伝送することを中止する。
5.通信プロトコル
ここで述べる実施例で、上述したように処理要素間で転送される情報パケットは、2つの部分を含む。例えば、第1の部分はアドレス情報を含むことができ、第2の部分は、そのアドレスに関連するデータを含むことができる。さらに、タイプフィールドが、情報パケットの2つの部分の各々に関連する。1つの実施例で、タイプフィールドは、9ビットを含み、以下の表1に示されるようにコード化することができる。
タイプフィールドは、それと同時に受信する情報をどのように扱うかに関連して命令を処理要素の各々に提供する。一般に使用される2つのタイプフィールドは、レジスタ読込およびレジスタ書込タイプフィールドである。レジスタ書込は、2つのステップで実施される。第1に、アドレスが、フェーズ1(P1)の間にバスに沿って送信され、第2に、データが、フェーズ2(P2)の間に送信される。レジスタ読込の場合、アドレスが、フェーズ1(P1)の間に送信され、フェーズ2(P2)の間に送信されるデータフィールドは、未知である。短い遅延の後、コア・プロセッサから読み込まれたデータは、同じレジスタ読込パケットの以前に未知であったデータ・スロットに挿入され、リング内の次の処理要素に送られる。
ほかに一般に使用される2つのタイプフィールドは、BIN読込およびBlN書込命令であり、それらは、BlNタイプデータを読み込み、書き込む(すなわちオーバレイ・バッファ、画像バッファまたはテクスチャ・キャッシュのような特定のバッファに対して情報を読み込み、書き込む)のためである。別のタイプフィールドの選択として、ブロック転送命令を使用して、送信元と宛先の間で大きいデータ・ブロックを転送することができる。例えば、大きいデータ・ブロックは、ダイレクト・メモリ・アクセス(DMA)技法を使用することによって、ホスト・コンピュータから(マスタ処理要素を通して)下流の処理要素へ転送することができる。さらに、平面方程式命令をタイプフィールドに含めて、平面方程式データを3Dレンダリングのためのレジスタに転送することができる。最後に、多種多様な(Miscellaneous,Misc)タイプ命令が、バス上で特別な機能を実現するために使用される。例えば、Miscタイプ命令を使用して、操作の他のタイプを実施する前に読込パスをフラッシュすることができる。
表1から明らかなように、いくつかの命令は、共通の意味をもつビットを共有する。例えば、タイプ・フィールドのビット<8>は、「バリッド(Valid)」ビットであり、情報パケットのそれぞれの部分の有効性を示すために使用される。バリッド・ビットが「0」である場合、タイプ・フィールドのビット<7:0>は無視される。さらに、典型的に、タイプ・フィールドのビット<3>は、バッファされる(すなわち非優先の)情報パスまたはバッファされない(すなわち優先の)情報パスのどちらを使用して(1)インタフェース回路からコア・プロセッサへ情報を転送する、(2)コア・プロセッサからインタフェース回路へ情報を転送する、または(3)(上述した)バックアップ情報パス内に情報を保持するのか識別する。バッファされるおよびバッファされない情報パスの更なる詳細は、以下で与えられる。
前述したように、情報は、多重化されたパケットでバスに沿って伝送され、各々の情報パケットの半分が、クロックの各々のフェーズで転送される。以下の表2は、上述された、表1に挙げられる操作のタイプについて、フェーズ1および2(P1およびP2)の間に転送される情報をまとめている。
図4および図6を参照して(および再び処理要素222を一例として使用して)、表2に示されるように、フェーズP1の間に、各々の情報パケットの第1の部分がインタフェース回路226によって(情報ライン250Fに沿って)受信され、フェーズP2の間に、各々のパケットの第2の部分が、インタフェース回路226によって(情報ライン250Fに沿って)受信される。図6に示されるように、インタフェース回路226は、入力レジスタ260、P1レジスタ262、P1WDレジスタ264およびP2WDレジスタ266を含む。入力レジスタ260は、到来情報パケット(およびそれらの関連のタイプ・データ)を受信し、P1レジスタ262は、その入力を、入力レジスタ260の出力から受信する。さらに、P1WDレジスタ264は、その入力を、P1レジスタ262の出力から受信し、P2WDレジスタは、その入力を、入力レジスタ260の出力から受信する。
ここで簡単に図7を参照して、インタフェース回路226によるいくつかの完全な情報パケットの受信を示すタイミング図が示されている。具体的に言えば、このタイミング図は、(1)バス・ライン250Aに沿って受信される到来クロック(In_CLK)の状態と、(2)バス・ライン250Fに沿って受信される情報(Info[31:0])と、(3)2で割る回路295から出力される書込クロック信号(Wr_CLK)と、(4)入力レジスタ260(IN_Reg)、P1レジスタ262(P1_Reg)、およびP1WDおよびP2WDレジスタ264および266(P1/P2WD)のそれぞれの内容と、を示している。上述の信号の状態は、一連の転送サイクルT0-T3にわたって示されており、転送サイクルT0-T3の各々は、第1フェーズP1および第2フェーズP2を含む。これらの信号は、比較のため同じ時間スケール(水平軸)で示される。ある信号が他のものより上にある物理的な配置は、その信号が、他の信号より高い重要性を達成することを意味するのではない。
ここで述べるこの発明の1つの実施例は、処理要素としてASICを使用して実現されるので、図6に示される個々の情報記憶要素の各々の「次の状態」の内容の制御(すなわち情報記憶要素の内容が、次にクロックされる状態の間にどうなるか)、および多様なマルチプレクサを通る情報のフローの制御は、Verilogのようなソフトウェア・シミュレーション言語を使用することによって実現することができ、汎用プロセッサ上で動作するSynopsysTMのような統合ツールによって論理ゲート回路に転換することができる。選択として、論理関数を、ソフトウェアに書き込み、プロセッサによって実行してもよい。
図7に示されるように、転送サイクルT1のフェーズP1の間、上流の処理要素の出力レジスタは、例えば、アドレスADDR1(すなわち第1の情報パケットのアドレス部分)をバス・ライン250Fに沿って送る。転送サイクルT1のフェーズP2の間、到来クロックIn_CLKの立ち下がり端は、ADDR1を、インタフェース回路226の入力レジスタ260にラッチする。時間T2のフェーズP1の間、到来クロックIn_CLKの立ち下がり端は、第1の情報パケットのデータ部分DATA1を、入力レジスタ260にラッチする。これは、入力レジスタ260およびインタフェース回路226を、到来クロックIn_CLKの次の立ち下がり端(すなわち時間T2のフェーズ2(P2)の間)に上流の処理要素からADDR2を受信するために解放された状態にする。タイプ・データは、インタフェース回路226によって、(バス・ライン250Eから)同じ方法で受信される。こうして、情報およびタイプ・データは、インタフェース回路226によって、到来クロックIn_CLKの周波数すなわちおよそ200MHzで受信される。
各々の情報パケットの2つの部分を、(コア・プロセッサ224に渡される)82ビット並列ワードにデマルチプレクス(de-multiplex)するために、フェーズP1レジスタ262が提供される。情報(および関連するタイプ・フィールド)が、上述したようにインタフェース回路226によって受信されるとき、P1レジスタ262は、各々の情報パケットの第1の部分のみをラッチするように、2分の1周波数クロックWr_CLKによって制御される。さらに、(コア・プロセッサ224に情報を送るための)P1/P2WDレジスタ264/266は、各々の情報パケットの両方の部分を同時にラッチするように、(2分の1周波数クロックWr_CLKの逆である)2分の1周波数クロックP2_CLKによって制御される。
より具体的には、2分の1周波数クロックWr_CLKの立ち上がり端の間、入力レジスタ260の内容は、P1レジスタ262にラッチされ、2分の1周波数クロックP2_CLKの立ち上がり端(Wr_CLKの立ち下がり端)の間、P1レジスタ262の内容が、P1WDレジスタ264にラッチされ、入力レジスタ260の内容が、P2WDレジスタ266にラッチされる。従って、どのP2_CLK信号の立ち上がり端の後でも、P1/P2WDレジスタ264および266は、それぞれ情報パケットの第1の部分および第2の部分を格納している。P2_CLK信号の次の立ち上がり端の前の任意の時間に(例えば次のWr_CLK信号の立ち上がり端で)、P1/P2WDレジスタ内の情報は、以下により詳しく述べるように、パケットに関連するタイプ・フィールド内の特定のビットの値に依存して、バッファされる(すなわち非優先の)非同期書込(BW)FIFO228またはバッファされない(すなわち優先の)非同期書込(UW)FIFO230のどちらかにロードされる。インタフェースによって提供されるアドレス/データおよびタイプ情報のフィルタリングはない。このように、インタフェースで受信されるあらゆる情報パケットは、コア・プロセッサ224に送られ、コア・プロセッサ224は、それが関心のあるパケットであるかどうか判断する。
図6に戻って、到来する多重化された情報パケットは全て、(上述したように)到来クロックIn_CLKの各々の立ち下がり端で入力レジスタ260によって受信される。さらに、(1)(パス通過経路261を介して)入力レジスタ260、(2)バックアップ情報パス290、(3)バッファされる読込(BR)またはバッファされない読込(UR)FIFO232または234、のいずれかからの情報は、(処理要素がマスタ構成でないときは入力クロックIn_CLKと同じである)出力クロックOut_CLKの立ち下がり端で、出力レジスタ300に(1つまたは複数のマルチプレクサ270、282および280を通して)クロックされる。従って、マスタ・モードで構成されないとき、入力レジスタ260および出力レジスタ300は、入力クロックIn_CLKの各々の立ち下がり端で、すなわちP1およびP2転送サイクルの間に、情報を受信し、伝送する。情報パケットは、2つの部分(例えばアドレス部分およびデータ部分)に多重化されるので、入力レジスタ260は、実際に、操作のP2フェーズの間の入力クロックIn_CLKの立ち下がり端で、例えばアドレス情報のような各々の情報パケットの第1の部分を受信し、(アドレスがレジスタ260にクロックされたP2フェーズのすぐ後にくる)操作のP1フェーズの間の入力クロックIn_CLKの立ち下がり端で、例えばデータ情報のような情報パケットの第2の部分を受信する。同様に、インタフェース回路226によって伝送される各々の情報パケットの第1の部分は、操作のP1フェーズの間、(処理要素がマスタ構成でないときの入力クロックIn_CLKと同じである)出力クロックOut_CLKの立ち下がり端によって、出力レジスタ300にクロックされる。各々の伝送される情報パケットの第2の部分は、操作フェーズP2の間の(パケットの第1の部分がレジスタ300にクロックされたP1フェーズのすぐ後にくる)出力クロックOut_CLKの立ち下がり端によって、出力レジスタ300にクロックされる。
処理要素222の下流にある処理要素(例えば処理要素242)が、処理要素222から情報を受信することができることを示し、処理要素222が、それ自体ストールしてないとき(例えばそのコア・プロセッサからの読込情報を待っているとき)、出力レジスタ300は、情報を入力レジスタ260から(パス通過経路261を介して)直接受信する。それによって、入力クロックIn_CLKの各々の立ち下がり端の間に、情報パケット(およびその関連するタイプ・データ)の1つの部分が、インタフェース回路226を通してシフトされ、インタフェース回路の存在の結果として1クロック・サイクルの待ち時間のみが生じる。
6.バックアップ情報パス
処理要素222より下流の処理要素(例えば処理要素242)が、現在、処理要素222から情報を受信することができないことを示す場合、または処理要素222が、それ自体でストールしている場合(例えばそのコアからの読込情報を待っているとき)、処理要素222より上流の処理要素(例えば処理要素202)が、データをなお送信している間、すなわち現在情報を受け入れることができないという処理要素222からの指示に上流の処理要素202が応答するまで、(以下に記述される)バックアップ情報パス290内の情報記憶要素を使用して、インタフェース回路226にバックアップされる情報を格納する。すなわちこのバックアップ機能は、少なくともインタフェース回路226が、上流の処理要素(例えば処理要素202)に情報を送信するのを中止するよう知らせることができるまで実施される。
図6に示されるように、バックアップ情報パス290は、バッファされる(すなわち非優先の)情報バックアップ・パス292およびバッファされない(すなわち優先の)情報バックアップ・パス294を含む。バッファされる情報バックアップ・パス292は、バッファされる(すなわち非優先の)バックアップ記憶要素B0、B1、B2、B3、B4およびB5を含み、バッファされない情報バックアップ・パス294は、バッファされない(すなわち優先の)バックアップ記憶要素U0、U1、U2、U3、U4およびU5を含む。さらにバックアップ情報パス290にはマルチプレクサ292Aおよび292Bも含められ、それらは、1つの実施例で、バッファされるバックアップ記憶要素B4およびB5およびバッファされないバックアップ記憶要素U4およびU5のうちのただ1つの内容を、マルチプレクサ292Aおよび292Bの出力が接続されるマルチプレクサ270の入力の一方に選択的に提供する(または1つも提供しない)ように配置される。
また図6には、B_Rdyレジスタ322、U_Rdyレジスタ324、B_Rdy論理回路326およびU_Rdy論理回路328が示されている。B_Rdyレジスタ322は、下流の処理要素から(B_Rdy論理回路326を通して)到来バッファされる準備(B_Rdy_In)信号を受信し、出発バッファされる準備(B_Rdy_Out)信号を上流の処理要素へ提供する。同様に、U_Rdyレジスタ324は、下流の処理要素から(U_Rdy論理回路328を通して)到来バッファされない準備(U_Rdy_In)信号を受信し、出発バッファされない準備(U_Rdy_Out)信号を上流の処理要素に提供する。B_RdyおよびU_Rdy論理回路326および328は、到来B_Rdy_InおよびU_Rdy_In信号に加えて多数の他の入力を受信し、それらはどれも、処理要素222が、現在上流の処理要素から情報を受信することができないことを示すことができる。B_RdyおよびU_Rdyレジスタ322および324の各々は、Wr_CLK信号の立ち上がり端でクロックされる。
下流の処理要素は、上流の要素に対して(例えばバス・ライン250Bに沿った)それらの出発バッファされる準備(B_Rdy_Out)信号および(例えばバス・ライン250Cに沿った)それらの出発バッファされない準備(U_Rdy_Out)信号を非アサートにすることによって、上流の処理要素に情報伝送を中止するように知らせる。B_Rdy_OutおよびU_Rdy_Out信号は、バッファされる(すなわち非優先の)情報およびバッファされない(すなわち優先の)情報を受信するための処理要素222の相関的な能力を示す。バッファされるおよびバッファされない情報の使用および制御に関連する説明は、以下で詳しく述べる。
図6のバックアップ情報パス290は、そのバッファされるおよびバッファされない情報パス292および294の各々の中に、バッファリングの3ステージを含み、インタフェース回路226が、下流のインタフェース回路246から到来非アサートB_Rdy_In信号を最初に受信してから、(インタフェース回路226が、上流のインタフェース回路206に対して出発バッファされる準備信号B_Rdy_Outを非アサートした後、)インタフェース回路226が、実際に上流のインタフェース回路206から情報を受信することを中止するまでの時間の間に、バックアップできる情報の最大量を収容する。
インタフェース回路226による(下流の処理要素からの)到来B_Rdy_InおよびU_Rdy_In信号の受信によって、インタフェース回路226は、識別されるタイプの情報(すなわちバッファされるまたはバッファされない情報)を下流の処理要素に伝送することを中止する。また、インタフェース回路226は、あらゆるペンディング情報、およびインタフェース回路226が出発B_Rdy_OutまたはU_Rdy_Out信号を(上流の処理要素に対して)非アサートにしてから、上流の処理要素が、識別されるタイプの情報を送信することを実際に中止するまでの時間の間に受信されるあらゆる情報を、バックアップ情報パス290に含まれる専用バッファに格納する。このように、非アサートにされた到来B_Rdy_InまたはU_Rdy_In信号の受信は、信号を受信している処理要素が、その出発情報およびタイプデータ・バス・ラインに沿って、情報およびタイプデータを送信することを(できるだけ早く)中止しなければならないという指示である。
インタフェース回路226は、下流の処理要素から非アサートにされたB_Rdy_InまたはU_Rdy_In信号を受信すると、それは、信号を受信した時にすでに送信し始めていた情報の完全なパケットを送信し終えた後にのみ、その情報転送を中止する。こうして、例えば、インタフェース回路226は、インタフェース回路246から非アサートにされたB_Rdy_In信号を受信する場合、(非優先の操作に関連する)アドレスが出力レジスタ300にクロックされたあと、インタフェース回路226は、下流の処理要素246への情報転送を中止する前に、(前に送信されたアドレスに関連する)情報パケットのデータ部分をクロックすることを続ける。
バックアップ・パス290に転送される情報は、P1WDレジスタ264およびP2WDレジスタ266にもラッチされ、(情報がバッファされるかバッファされないかに依存して)バッファされる書込(BW)FIFO228またはバッファされない書込(UW)FIFO230のどちらかに転送され、従って(情報がコアに関心をもつ場合)「バックアップされる」情報であってもコア224に到達することに注意すべきである。
バックアップされる情報の一時的な記憶のために使用される方法は、バッファされるおよびバッファされない情報の両方について同じであることを理解すべきであるが、分かり易くするため、以下の記述は、B_Rdy_InおよびB_Rdy_Out信号の使用および効果と、バッファされるバックアップ情報パス292の使用にのみ言及する。
情報(およびタイプ・データ)が、バッファされるバックアップ・パス292に転送されるとき、それは、最初にレジスタB4およびB5に書き込まれる。レジスタB4およびB5が満杯になると、到来情報(およびタイプ・データ)は、レジスタB2およびB3に書き込まれる。最後に、レジスタB2およびB3が満杯になると、到来情報(およびタイプ・データ)は、レジスタB0およびB1に書き込まれる。加えて、情報(およびタイプ・データ)が、バッファされるバックアップ・パス292に転送されるとき、P1レジスタ262からの情報(およびタイプ・データ)は、常にレジスタB0、B2またはB4のうちの1つに書き込まれ、入力レジスタ260からの情報は、常にレジスタB1、B3またはB5のうちの1つに書き込まれる。P1レジスタ262からバッファされるバックアップ記憶要素B2およびB4へ、および入力レジスタ260からバッファされるバックアップ記憶要素B3およびB5への情報転送パスは、図6に明示的に示されていないが、それにもかかわらず情報転送パスが存在し、バッファされるバックアップ・パス292への入力は、バッファされるバックアップ・パス292内のバッファされるバックアップ記憶要素のそれぞれの対(すなわちB0およびB1、B2およびB3、B4およびB5)への入力を意味する傾向があることを理解すべきである。
バッファされるバックアップ・パス292がどのように満たされるかとは対照的に、バッファされるバックアップ・パス292が空にされるとき、情報(およびタイプ・データ)は、常にレジスタB4およびB5から読み込まれる。さらに、レジスタB4およびB5が空にされると、レジスタB2およびB3の内容が(もしあれば)、それぞれレジスタB4およびB5にシフトされ、レジスタB0およびB1の内容が(もしあれば)、それぞれレジスタB2およびB3にシフトされる。
前述したように、ソフトウェア設計/ハードウェア実現の論理を使用して、この発明で使用される各々のレジスタの次の状態の内容を制御することができる。1つの実施例によると、タイプデータを含むバックアップ情報パス290内の個々のレジスタおよびP2レジスタ262内の個々のタイプデータ・レジスタの各々の内容を調べて、どの情報が、次のクロック・サイクルの間に回路内のどの位置に転送されるべきかを判断する代わりに、例えば制御レジスタ・ブロック320に含まれるレジスタ302、304、306、308、310、312および314のような多数の別々の1ビット・レジスタ(すなわち記憶要素を識別する内容)を利用して、情報のどのタイプが、バックアップ情報パス290内のどの位置にあるか、および情報のどのタイプが、P1レジスタ262内にあるかを把握する。例えば、(1)単一のレジスタ302は、バッファされるバックアップ・レジスタB4およびB5が満杯であるかどうか示すために使用することができ、(2)単一のレジスタ304は、バッファされるバックアップ・レジスタB2およびB3が満杯であるかどうか示すために使用することができ、(3)単一のレジスタ306は、バッファされるバックアップ・レジスタB0およびB1が満杯であるかどうか示すために使用することができ、(4)単一のレジスタ308は、バッファされるバックアップ・レジスタB0が、その中に格納される多種多様なタイプの情報を持つかどうか示すために使用することができ、(5)単一のレジスタは310は、バッファされるバックアップのレジスタB2が、その中に格納される多種多様ななタイプの情報を持つかどうか示すために使用することができ、(6)単一のレジスタ312は、バッファされるバックアップ・レジスタB4が、その中に格納される多種多様なタイプの情報を持つかどうか示すために使用することができ、(7)単一のレジスタ314は、P1レジスタ262が、その中に格納される多種多様なタイプのバッファされる情報を持つかどうか示すために使用することができる。これら1ビット・レジスタの使用は、回路の制御を簡単にし、回路が、他の方法で動作できるよりも速いスピードで動作することを可能にする。
さらに同様のレジスタ(図示せず)を制御レジスタ・ブロック320内に提供して、バックアップ・レジスタB0、B2、B4およびP1レジスタ262の各々が、上記表1に定義されるような、その処理要素のコアの基準アドレスに合致するアドレスや、BlN読込パケットのアドレスやブロック転送(BltOb)パケットのような、それに格納される情報の他の特定の種類を持つかどうかを指示する。さらに同様の情報を、制御レジスタ・ブロック320(すなわち内容識別記憶要素)内の追加の複数の1ビット・レジスタ(図示せず)に格納して、バッファされないバックアップ・パス294に含まれる例えばレジスタのようなバッファされない(すなわち優先の)バックアップ記憶要素の内容を識別する。さらに、制御レジスタ・ブロック320内の1ビット「タイプ識別」レジスタ(図示せず)を使用して、P1レジスタ262が、例えばバッファされるBltOb情報のようなバッファされる情報の特定のタイプを含むかどうか識別し、それが、例えばバッファされないBltOb情報のようなバッファされない情報の特定のタイプを含むかどうか識別する。
B_Rdy_Out信号は、2つの状態をもち、アサートにされた状態は、B_Rdy_Out信号を伝送する処理要素が、情報を受け付けるために利用可能であることを示し、非アサートにされた状態は、処理要素が情報を受け付けるために利用できないことをを示す。1つの実施例で、アサートにされた状態は、論理「1」に相当し、非アサートにされた状態は、論理「0」に相当する。
処理要素は、下流の処理要素から非アサートにされた到来B_Rdy_In信号を受信することに応答して、上流の処理要素に対してその出発B_Rdy_Out信号を非アサートにすることに加えて、処理要素は、さまざまなその他の理由のために情報を受け付けることができないことがある。例えば、バッファされる書込(BW)FIFO228(すなわち非優先情報記憶要素)が、(以下でより詳しく説明されるように)満杯である特定の数のエントリ内にある場合、インタフェース回路226は、それ以上多くの情報を受信することができないので、B_Rdy論理回路326は、上流の処理要素が情報を伝送することを中止するように出発B_Rdy_Out信号を(次のWr_CLK上)非アサートにして、入力情報が落ちないことを保証する。さらに、コア読み込み操作の間、読み込みデータが(例えば先取り操作のために)すでに存在しない場合、到来情報パケットがコア224からの読込操作を実施するために符号化されるとき、B_Rdy論理回路326は、出発B_Rdy_Out信号を(次のWr_CLKで)非アサートにする。そのような読み込み操作は、1つまたは複数のコア・レジスタの読み込み、またはコアに結合される(フレーム・バッファのような)メモリ装置を含むことができる。
読込パケット(例えばレジスタ読込パケット)が受信され、先取りされたデータが存在しないとき、処理要素222は、情報およびタイプ・データを下流の処理要素に送信することを(できるだけ早く)中止しなければならないという指示を受信する。すなわち、処理要素222が、(以前に受信されたアドレスと共に多重化される)情報が下流の処理要素に伝送される前に情報がそのコアから読み込まれことを待たなければならない限りにおいて、処理要素222によって受信される読込パケットは、(上流の処理要素に情報を送信することを中止するように知らせることに加えて)、情報およびタイプ・データを下流の処理要素に送信することを(できるだけ早く)中止しなければならないという指示を構成する。
上述したように、コア・データの読込が要求されると、コア・プロセッサ224がアクセスされるとき、読込データが返される前に、わずかな遅延期間がある。データは、以下で説明されるように、データがバッファされるかバッファされないかに依存して、バッファされる読込(BR)FIFO232(すなわち非優先インタフェース入力記憶要素)またはバッファされない読込(UR)FIFO234(すなわち優先インタフェース入力記憶要素)のいずれかを通してコアから読み込まれる。これらのFIFOからのデータは、4つの情報保持レジスタすなわち情報保持レジスタP1_OUT、P2_OUT、U_P1_OUTおよびU_P2_OUT(それぞれ272、274、276および278)のうちの1つに読み込まれる。分かり易くするため、バッファされるデータの読み込みだけを、以下で述べる。しかし、(異なるレジスタを使用するが)バッファされないデータの読み込むも同じ方法で実施されることを理解すべきである。
コア・プロセッサ224がアクセスされるときの遅延期間の間、読込のアドレスは、バックアップ情報パス290内の情報記憶要素に格納され、処理要素224は、上流の処理要素に情報を送信するのを中止するよう知らせるためにバス・ライン250Bに沿ってその出発B_Rdy_Out信号を非アサートにする。データが、コア・プロセッサ224から返されるとき、それはバッファされる読込(BR)FIFO232を通して伝搬し、P2_OUTレジスタ274に格納される。取り出されたデータが、P2_OUTレジスタ274に格納される場合、B_Rdy_Out信号は、再びアサートにされ(上流の処理要素が再び情報を送信することができることを示す)、読込に対応するアドレスが、マルチプレクサ292A、270および282を通して送られ、次のP2_CLK信号の立ち上がり端で出力される。取り出されたデータは(マルチプレクサ280および282を通して伝搬したあと)、次のRD_CLK信号の立ち上がり端で出力される。このように、コア読込を実施するとき、B_Rdy_Out信号を使用して、上流の処理要素を読込データが利用可能になるまで一時的に止めることができる。結果として、コア読込が実施されたあと、そのアドレスから取り出されるアドレスおよびデータは、(本質的に)コア読込操作に関連する遅延によってのみ決定される遅延期間に同期して伝送することができる。
ここで図8を参照すると、出発B_Rdy_Out信号が、例えばコア読込パケットを受信したあと処理要素222によって非アサートにされてから、処理要素222が、実際に上流の処理要素(例えば処理要素202)から情報を受信することを中止するまでのの間に生じる待ち時間を説明するタイミング図が示されている。これらの信号は、比較のため同じ時間スケール(水平軸)で示される。ある信号が他のものより上にある物理的な配置は、ある信号が、他のものより高い重要性を達成することを意味するのではない。
図示されるように、各々の転送サイクルのフェーズ1(P1)およびフェーズ2(P2)の間、アドレスおよびデータ情報は、それぞれバス・ライン250Fに沿って受信される。転送サイクルT1のフェーズP1の間に送信されるアドレスに関連するタイプ情報が、コア読込操作が実施されることを示す場合、転送サイクルT1のフェーズP2の間、B_Rdy_Out信号が、非アサートにされる。タイプフィールド(すなわち有効信号)のビット<8>の高い状態によって示されるように、有効なアドレスおよびデータ情報は、転送サイクルT2の終了までバス・ライン250Fに沿って受信され続ける。B_Rdy_Out信号が、転送サイクルT1の間に非アサートにされてから、情報が、転送サイクルT2の間にバスに沿って伝送されることを中止するまでの時間の間の時間遅延は、結果として情報のバックアップを処理要素222に生じさせる。
ここで図9を参照すると、B_Rdy_Out信号が、処理要素222によって再びアサートにされてから、処理要素222が、再び上流の処理要素(例えば処理要素202)から有効な情報を受信するまでの時間の間の同様の遅延が示されている。これらの信号は、比較のため同じ時間スケール(水平軸)で示される。ある信号が他のものより上にある物理的な配置は、ある信号が他の信号より大きい重要性を達成することを意味しない。この時間遅延は、新しい情報がインタフェース回路226の入力レジスタ260によって受信される前に、バックアップ情報パス290内の情報が、出力レジスタ300の外に送られることを可能にする。
再び図6を参照して、(下流の処理要素から)非アサートにされた到来B_Rdy_In信号を受信した後のインタフェース回路226の操作を述べる。到来情報パケットの第1の部分(例えばアドレスおよびアドレス・タイプ情報)が、転送サイクルのフェーズP1の間、入力レジスタ260の入力で受信される。同じ転送サイクルのフェーズP2の間に、情報パケットの第1の部分は、入力レジスタ260にラッチされる。次の転送サイクルのフェーズP1の間に、情報パケットの第2の部分(例えばデータおよびデータ・タイプ情報)が、入力レジスタ260にロードされるのと同時に、入力レジスタ260に格納された情報が、P1レジスタ262にロードされる。情報の両方の部分は、次に続くP2クロック・フェーズで、バッファされるバックアップ・パス292(すなわちレジスタB4およびB5)の第1ステージに送られる。インタフェース回路226がその出発B_Rdy_Out信号を非アサートにするのに応じて、上流のプロセッサが伝送を止めるまで、情報は、P1レジスタ262および入力レジスタ260から、(次に続くP2クロック・フェーズで)バッファされるバックアップ・パス292内の次に続くレジスタ(すなわちバッファされるバックアップ記憶要素)に転送され続ける。
インタフェース回路226が、再び情報を受信するおよび/または送信する準備ができたとき、その出発B_Rdy_Out信号は、アサートにされ、バッファされるバックアップ・パス292内のレジスタを空にする処理が始まる。出発B_Rdy_Out信号が再びアサートにされた後の第1の転送サイクルのフェーズ1(P1)の間、レジスタB4からの情報が、マルチプレクサ292A、270および282へと送られ、出力レジスタ300にラッチされる。同じ転送サイクルのフェーズ2(P2)の間、レジスタB5からの情報が、マルチプレクサ292A、270および282に送られ、出力レジスタ300にラッチされる。
第2の転送サイクルのフェーズ1(P1)およびフェーズ2(P2)の間、レジスタB2およびB3からそれぞれシフトされたレジスタB4およびB5からの情報が(もしあれば)、出力レジスタ300に送られる。次に、第1の転送サイクルの間にレジスタB0からレジスタB2へ、そして第2の転送サイクルの間にレジスタB2からレジスタB4へシフトされたレジスタB4からの情報が(もしあれば)、第3の転送サイクルのフェーズ1(P1)の間に、マルチプレクサを通して出力レジスタ300に送られる。また第3の転送サイクルのフェーズ1(P1)の間に、上流の処理要素(例えば処理要素202)は、情報パケットの第1の部分をバス250に沿って提供する。こうして、第1の転送サイクルの間にレジスタB1からレジスタB3に、第2の転送サイクルの間にレジスタB3からレジスタB5にシフトされたレジスタB5からの情報が(もしあれば)、第3の転送サイクルのフェーズ2(P2)の間に、出力レジスタ300にラッチされると同時に、上流の処理要素からの情報パケットの第1の部分が入力レジスタ260にラッチされ、それによってバッファされるバックアップ・パス292を空にする。
最後に、第4の転送サイクルのフェーズ1(P1)の間に、(以前に入力レジスタ260にラッチされた)情報パケットの第1の部分が、パス通過経路261を通って出力レジスタ300に直接送ることができるようになると同時に、上流の処理要素からの情報パケットの第2の部分が、入力レジスタ260にラッチされることができる。バッファされるバックアップ・パス292は、バックアップできる限りの情報の最大量を収容するような大きさに作られるので、処理要素が操作を中止するときに失われる情報はなく、高速通信スループットが維持される。
7.バッファされるおよびバッファされない情報パス
さらに図6を参照して、上で説明したように、各々の到来情報パケットの第1および第2の部分(およびその関連のタイプ・フィールド)は、それぞれP1レジスタ262および入力レジスタ260(すなわち入力記憶要素)にラッチされ、その後それぞれP2WDレジスタ266およびP1WDレジスタ264にラッチされ、処理要素222のコア・プロセッサ224に送られる。P1WDおよびP2WDレジスタ264および266にラッチされる各々の情報パケットの両方の部分は、パケットの第1の部分のタイプフィールドの内容に従って、バッファされる書込(BW)FIFO228(すなわち非優先インタフェース出力記憶要素)またはバッファされない書込(UW)FIFO230(すなわち優先インタフェース出力記憶要素)のいずれかに入力される。すなわち、パケットの第1の部分のタイプフィールド、すなわちP1レジスタ262に格納された部分を調べて、パケットが、表1のリスト項目に従ってバッファされるまたはバッファされないと識別されるかを判断する。
表1に示されるように、このタイプフィールドのビット<7>が「1」である場合、パケットは、常にバッファされる書込(BW)FIFO228に転送されなければならず、ビット<7>が「0」である場合、バッファされる書込(BW)FIFO228またはバッファされない書込(UW)FIFO230のどちらにパケットが転送されるかは、タイプフィールドのビット<3>の値に依存する。1つの実施例で、パケットの第1の部分のタイプフィールドのビット<3>が「1」である場合、情報は、バッファされないタイプであり、逆にビット<3>が「0」である場合、情報は、バッファされるタイプである。
1つの実施例によれば、P1レジスタ262のタイプフィールドの内容を調べて、それがバッファされるまたはバッファされない情報を含むかどうか判断するのではなく、2つの別々の1ビット・レジスタ(例えば制御レジスタ・ブロック320内のレジスタ316および318)を用いてP1レジスタ262が現在バッファされるまたはバッファされない情報を含むかどうかを把握する。例えば、レジスタ316は、P1レジスタ262が現在バッファされる情報を含むかどうか示すために使用することができ、レジスタ318は、P1レジスタ262が現在バッファされない情報を含むかどうか示すために使用することができる。各々のレジスタ316および318の次の状態の内容は、入力レジスタ260に格納される情報のタイプ・フィールドを調べることによって決定することができ、従ってP1レジスタ262が、入力情報を受信し、同じクロック・サイクルの間に、レジスタ316および318が、P1レジスタ262に入力される情報のタイプに対応する入力を受信する。
バッファされる書込(BW)FIFO228およびバッファされない書込(UW)FIFO230が、より詳しく図10に示される。図示されるように、1つの実施例で、バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230の各々は、情報パケットの2つの部分のそれぞれを格納するための8エントリを含む。すなわち、バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230の各々は、(1)P1WDレジスタ264からのフェーズ1の情報およびタイプ・データ(P1_WrInfoおよびP1_WrType)、および(2)P1WDレジスタ266からのフェーズ2の情報およびタイプ・データ(P2_WrInfoおよびP2_WrType)、を格納する8エントリを含む。さらに、FIFO228は、ロード制御回路227およびアンロード制御回路229も含み、バッファされない書込(UW)FIFO230は、ロード制御回路231およびアンロード制御回路233も含む。
図11を参照すると、到来クロック信号In_CLK、2で割る回路295(図6に図示)からの書込クロック信号Wr_CLK、および(レジスタ264および266からFIFO228または230に書き込まれた情報である)P1およびP2_WrInfoの間の関係を示すタイミング図が与えられている。これらの信号は、比較のため同じ時間スケール(水平軸)で示される。ある信号が他のものより上にある物理的な配置は、ある信号が他の信号より高い重要性を達成することを意味していない。図10に示されるように、ロード制御回路227および231の各々は、クロック入力としてWr_CLK信号を受信する。さらにロード制御回路227は、上で説明した情報がバッファされるまたはバッファされないタイプのどちらであるか識別するタイプ・ビットの検査の結果であるバッファされる情報ロード信号(B_WrInfoLd)も受信する。ロード制御回路227は、バッファされる書込満杯信号(B_WrFull)を提供する。バッファされる書込満杯信号は、バッファされる書込(BW)FIFO228が、満杯である4エントリの中にあるとき、アサートにされ、バッファされる書込み(BW)FIFO228が満杯にするのに使用できる5以上のエントリを持つとき、非アサートにされる。同様に、ロード制御回路231は、上で説明した情報がバッファされるまたはバッファされないタイプあるかを識別するタイプ・ビットの検査の結果であるバッファされない情報ロード信号(U_WrInfoLd)を受信する。ロード制御回路231は、バッファされない書込満杯信号(U_WrFull)を提供し、それは、バッファされない書込み(UW)FIFO230が、満杯の4エントリの中にあるときアサートにされ、バッファされない書込(UW)FIFO230が、満杯にするのに使用できる5以上のエントリをもつとき、非アサートにされる。
さらにアンロード制御回路229および233の各々は、それぞれのコア・クロック信号およびアンロード信号をコアから受信し(アンロード信号のうちの1つがアサートにされるとき、コアが、FIFOからコア・クロック・レートで情報をアンロードすることを許し)、それぞれの空の信号をコアに与える(そのFIFOが、コアに、現在その中に格納された情報をもたないことを示す)。こうして、コアは、バッファされる書込(BW)およびバッファされない書込(UW)FIFO228および230からのP1およびP2の情報およびタイプ・データ(P1_Info、P1_Type、P2_InfoおよびP2_Type)に、これらのFIFOがインタフェース回路226から情報およびタイプ・データを受信するクロック・レートと非同期であるレートでアクセスすることができる。
図12および図13の各々は、非同期のバッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234をより詳細に示す。図12は、処理要素222が迂回モードで構成されるとき、バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234が、どのように動作するかを示し、図13は、(図6に示す構成のように)処理要素が迂回モードで構成されないとき、バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234が、どのように動作するかを示す。まず図12を参照して、処理要素222が迂回モードで構成されるとき、バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234の選択される一方が、コアから、情報パケットの両方の部分(すなわちフェーズ1の情報(P1_Info)およびタイプ・データ(P1_Type)およびフェーズ2の情報(P2_Info)およびタイプ・データ(P2_Type))をコア・クロックおよびロード信号と共に受信し、FIFOのそれぞれのものが満杯であるときをコアに示す「満杯」信号を、コアに与える。図示される例で、バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234の各々は、8エントリの深さであるが、それぞれの読込FIFOの必要な深さは、コアが実行する操作によって決定される。
図12に示されるように、バッファされる読込(BR)FIFO232は、インタフェース回路226に、バッファされる情報パケットの両方の部分(すなわちフェーズ1の出力情報(P1_OutInfo)およびタイプ・データ(P1_OutType)およびフェーズ2の出力情報(P2_OutInfo)およびタイプ・データ(P2_OutType))を提供する。具体的に言えば、フェーズ1の出力情報P1_OutInfoおよびタイプ・データP1_OutTypeは、P1_OUTレジスタ272に提供され、フェーズ2の出力情報P2_OutInfoおよびタイプ・データP2_OutTypeは、P2_OUTレジスタ274に提供される。同様に、バッファされない読込(UR)FIFO234は、バッファされない情報パケットの両方の部分をインタフェース回路226に提供する。すなわち、フェーズ1のバッファされない出力情報(P1_U_OutInfo)およびタイプ・データ(P1_U_OutType)は、バッファされない読込(UR)FIFO234からU_P1_OUTレジスタ276に与えられ、フェーズ2のバッファされない出力情報(P2_U_OutInfo)およびタイプ・データ(P2_U_OutType)は、バッファされない読込(UR)FIFO234からU_P2_OUTレジスタ278に与えられる。
ここで図13を参照して、処理要素222が迂回モードで構成されないとき、バッファされる読込(BR)およびバッファされない読込(UR)FIFO232および234の選択される一方は、以下で説明する情報に関連するマスク・データと共にコアから情報を受信する。迂回モードでないとき、情報パケットの各々の部分に関連するタイプ・データは、関係がなく無視される。その出力で、バッファされる読込(BR)FIFO232は、バッファされる情報パケットの2つの部分のいずれか(すなわちフェーズ1のバッファされる出力情報(P1_OutInfo)またはフェーズ2のバッファされる出力情報(P2_OutInfo))、およびコアからのマスク・データ(OutMask)を、インタフェース回路226に与える。具体的に言えば、フェーズ1のバッファされる出力情報P1_OutInfoまたはフェーズ2のバッファされる出力情報P2_OutInfoのいずれかが、P1_OUTレジスタ272およびP2_OUTレジスタ274の両方に与えられ、バッファされるマスク・データ(OutMask)の32ビットが、マスク・レジスタ284に与えられる。同様に、バッファされない読込(UR)FIFO234は、バッファされない情報パケットのどちらかの部分と、コアからのバッファされないマスク・データ(OutMask)を、インタフェース回路226に提供する。具体的に言えば、フェーズ1のバッファされない出力データ(PI_U_OutInfo)またはフェーズ2のバッファされない出力データ(P2_U_OutInfo)のいずれかが、U_P1_OUTレジスタ276およびU_P2_OUTレジスタ278の両方に提供され、バッファされないマスク・データ(OutMask)が、マスク・レジスタ284に提供される。1つの実施例によれば、バッファされないマスク・データの1ビットだけが使用される。
(バッファされる情報が読み込まれるとき)マスク・レジスタ284へ転送されるバッファされるマスク・データ(OutMask)は、コアから出力されるバッファされる情報の選択的マスキングまたは「ビット・スライシング」を実施するために使用される。このようにして、32ビット・マスクは、(1)コアから出力されるバッファされる情報、および(2)パス通過経路261を介して流れてくるバッファされる情報またはバックアップ情報パス290から読み込まれるバッファされる情報のいずれか、のうち1つから、ビット毎基準で、バッファされる情報を選択する。(バッファされない情報が読み込まれるとき)マスク・レジスタ284へ転送されるバッファされないマスク・データ(OutMask)の1ビットを使用して、今挙げられた2つのソースのうちの一方から、完全な32ビット情報ワードを選択する。あるいは、バッファされないマスク・データの32ビットを使用して、コアからのバッファされない情報を、「ビット毎」に選択的にマスクすることもできることに注意すべきである。
図14を参照すると、出発クロック信号Out_CLKと、2で割る回路297(図6に示す)からの読込クロック信号RD_CLKと、読込FIFO232および234のうちの一方からのバッファされる出力情報との間の関係を示すタイミング図が与えられている。バッファされる出力情報、すなわちバッファされる読込(BR)FIFO232からのP1およびP2_OutInfoが一例として示されているが、バッファされない出力情報P1およびP2_U_OutInfoを同様に表すことができる。これらの信号は、比較のため同じ時間スケール(水平軸)で示される。ある信号が他のものより上にある物理的な配置は、ある信号が他の信号より高い重用性を達成することを意味しない。
図12および図13で、バッファされる読込(BR)FIFO232は、アンロード制御回路235およびロード制御回路237を含み、バッファされない読込(UR)FIFO234は、アンロード制御回路239およびロード制御回路241を含む。ロード制御回路237または241の一方へのロード信号がアサートにされるとき、情報およびマスク・データは、コア・クロックの移行時にそれらのFIFOの一方にロードされ、アンロード制御回路235および239の一方へのバッファされるまたはバッファされないアンロード信号(B_OutlnfoUnldまたはU_OutlnfoUnld)がアサートにされるとき、クロック信号RD_CLKの移行時にそれらのFIFOの一方からアンロードされる。アンロード制御回路235および239からの信号B_OutDatValおよびU_OutDatValはそれぞれ、バッファされるまたはバッファされない情報が、読込レジスタ272、274、276および278のうち対応する1つにクロックされる準備ができていることを示す。
前述したように、バッファされない(すなわち優先の)情報が、バッファされる(すなわち非優先の)情報よりも優先度が高くなるように、FIFO228、230、232および234およびバックアップ情報パス290を制御することによって、パイプライン内の非優先情報が、パイプラインからフラッシュされるまたは優先情報が送信できる前に捨てられる必要なく、情報の2つの別個のタイプが、1つのバスに沿ってパイプラインを通して渡されることができる。すなわち、優先情報パケットがインタフェースに入るときに、パイプライン内に存在する非優先情報は、優先情報がインタフェースを通り抜け、非優先情報を再び伝送することができるときまで、非優先情報パスのいずれかの中の非情報記憶要素のいずれか(すなわちバッファされる読込(BR)FIFO232、バッファされる書込(BW)FIFO228またはバッファされるバックアップ・パス292に)の中で動かないまま保持することができる。優先および非優先の情報の各々のための専用のパスを提供するのではなく、2つのユニークで別々のパイプライン化されるパスについて、インタフェース回路(例えばインタフェース回路226)の到来および出発バスのそれぞれを共有することによって、資源の共有を含まないパイプライン化されるバス解決法のみを提供する先行技術システムにまさる、ハードウェアおよびASICピン総数の重要な節減が、実現される。
この発明は、この中で、ビットの特定の数を伝送することができるバスを使用し、特定の制御信号を使用して回路全体への情報の伝達を制御するように記述されているが、同様の機能を実施する任意の幅の任意の制御信号のバスも、この発明に含まれる。さらに、この中で、回路素子は、クロック信号の特定の端でクロックされるように記述されているが、これらの素子は、この発明の理念から逸脱することなく、同等にクロック信号の反対の端でクロックすることができる。
加えて、情報記憶要素の特定のタイプが、この発明の中で用いられると記述されているが、情報記憶要素の任意の代替のタイプを、この発明の理念に従って同等に使用することもできる。さらに回路は、ASICを使用して実現されると記述されているが、それは、専用のハードウェア、適切にプログラムされたファームウェアまたはソフトウェア、またはそれらの任意の組み合わせを使用して、同等に実現することができる。
さらに、システムは、グラフィックス処理システムのいくつかのグラフィックス処理装置を相互接続するように使用されると記述されているが、この発明は、グラフィックス処理の適用に限定されず、処理要素の任意のタイプを相互接続するために同等にそのバス・システムを使用することができる。同様に、インタフェース回路は、グラフィックス処理装置をバスにインタフェースするように使用されると記述されているが、この発明は、グラフィックス処理装置をインタフェースすることに限定されず、同等にそのインタフェース回路を使用して、装置の任意のタイプをバスにインタフェースすることができる。
この発明のわずか1つの実施例を述べたが、当業者であれば、さまざまな変更、修正および改良が容易に考えられるであろう。そのような変更、修正および改良は、この発明に従うものである。従って上の記述は、単なる例示であって、限定するものではない。
本発明は例として次の実施態様を含む。
(1)複数のグラフィックス処理要素をもつグラフィックス処理システム内で使用するためのバス相互接続システムであって、
上記複数のグラフィックス処理要素(202、222、242)をリング状に結合するバス構造を含み、上記バス構造は、複数の個々のバス(250、252、254))を含み、上記個々のバス(250、252、254)の各々は、上記グラフィックス処理要素(202、222、242)の一対を接続し、上記個々のバス(250、252、254)の各々は、上記リング内のグラフィックス処理要素(202、222、242)間でグラフィックス・コマンド信号および情報信号を転送するための、同様の複数の信号ライン(250A-250F)を含む、バス相互接続システム。
(2)上記複数の信号ライン(250A-250F)はさらに、
上記情報信号を転送するための複数の情報信号ライン(250F)と、
上記情報信号ライン上の情報信号に関連するクロック信号を、上記リング内の次の処理要素に転送するクロック信号ライン(250A)と、
を含む、上記(1)記載のバス相互接続システム。
(3)さらに上記複数の信号ラインは、準備信号ライン(250B、250C)を含み、それに沿って準備信号は、リング内の第1のグラフィックス処理要素(226)から前のグラフィックス処理要素(206)へ転送され、上記準備信号は、上記第1のグラフィックス処理要素(226)の、上記リング内の上記前のグラフィックス処理要素(206)から情報を受信する能力を示す、上記(1)記載のバス相互接続システム。
(4)さらに上記複数の信号ライン(250A-250F)は、上記情報信号ライン(250F)に沿った情報の有効性を示す信号を含む、上記(2)記載のバス相互接続システム。
(5)さらに上記複数の信号ライン(250A-250F)は、上記複数の情報信号ライン(250F)に沿った情報に実施される操作のタイプを示すタイプ信号を転送するための、複数のタイプ信号ライン(250E)を含む、上記(2)記載のバス相互接続システム。
(6)上記リング内の上記グラフィックス処理要素の1つは、ホスト・プロセッサに結合され、上記リング内の他のグラフィックス処理要素(222、242)へ送られるコマンドおよび情報信号をホスト・プロセッサから受信するホスト・インタフェース処理要素(202)である、上記(1)記載のバス相互接続システム。
(7)さらに上記グラフィックス処理要素の各々(222)は、
コア処理ユニット(224)と、
インタフェース・ユニット(226)と、
を含み、上記インタフェース・ユニットは、コマンドおよび情報信号が上記インタフェース・ユニットを通して上記リング内の他のグラフィックス処理要素に直接転送されることを可能にするパス通過経路(261)と、上記送られるコマンドおよび情報信号を一時的に格納するためのバックアップ・パス(290)とを含む、上記(6)記載のバス相互接続システム。
(8)さらに上記インタフェース・ユニットは、パス通過経路(261)に結合される、上記対応するコア処理ユニット(224)に転送するために上記コマンドおよび情報信号を一時的に格納する複数のバッファ(228、230)を含む、上記(7)記載のバス相互接続システム。
(9)上記ホスト・インタフェース処理要素(202)によって受信される全てのコマンドおよび情報信号は、上記ホスト・インタフェース処理要素(202)から上記リング内の他のグラフィックス処理要素に転送される前に、上記ホスト処理要素(202)の上記コア処理ユニット(204)に転送される、上記(7)記載のバス相互接続システム。
(10)上記処理要素(222)の各々は、動作の通常モードおよび動作の迂回モードをもち、通常モードで動作する間、コマンドおよび情報信号は、インタフェース(226)のパス通過経路(261)を通して送られ、迂回モードの間、コマンドおよび情報信号は、インタフェース(226)の外に転送される前にコア処理ユニット(224)へ送られる、上記(7)記載のバス相互接続システム。