(57)【特許請求の範囲】
【請求項１】
入力データに対して描画計算を実行するように構成されるシェーダパイプアレイと、
前記シェーダパイプアレイ内の不完全なシェーダパイプを識別するとともに、前記シェーダパイプアレイを介したデータの流れを制御するように構成されるシーケンサと、
前記不完全なシェーダパイプに予定されていたシェーダパイプデータを処理するように構成される冗長シェーダパイプアレイと、を備え、
前記冗長シェーダパイプアレイは、１つ以上の垂直冗長シェーダパイプ列を更に備えており、各垂直冗長シェーダパイプ列は、１つ以上の冗長シェーダパイプブロックを備えており、行毎に単一の冗長シェーダパイプブロックがあり、
前記シーケンサが不完全なシェーダパイプを識別すると、制御レジスタが、前記不完全なシェーダパイプあてのデータを、処理のための冗長シェーダパイプアレイにマッピングするように構成されており、
前記シーケンサが前記シェーダパイプアレイ内の不完全なシェーダパイプを識別すると、冗長シェーダスイッチが、データを前記冗長シェーダパイプアレイに転送するように構成されている、システム。
【請求項２】
前記シェーダパイプアレイは１つ以上の垂直シェーダパイプ列を更に備えており、各垂直シェーダパイプ列は１つ以上のシェーダパイプブロックを備えており、行毎に単一のシェーダパイプブロックがある、請求項１のシステム。
【請求項３】
前記垂直シェーダパイプ列内の各シェーダパイプブロックは１つ以上のシェーダパイプを含み、
前記垂直冗長シェーダパイプ列内の各冗長シェーダパイプブロックは１つ以上のシェーダパイプを含む、請求項２のシステム。
【請求項４】
各垂直冗長シェーダパイプ列は前記シェーダパイプアレイの１つの垂直シェーダパイプ列内のシェーダパイプ行の数と同じ数量の冗長シェーダパイプ行を備えている、請求項２のシステム。
【請求項５】
前記冗長シェーダスイッチは、
前記不完全なシェーダパイプに予定されていたシェーダパイプデータを、前記シェーダパイプアレイにおける垂直シェーダパイプ列内のシェーダパイプブロックから、処理のための前記冗長シェーダパイプアレイにおける垂直冗長シェーダパイプ列内の冗長シェーダパイプブロックに多重化する入力部と、
その処理されたシェーダパイプデータを前記冗長シェーダパイプブロックから前記冗長シェーダスイッチの出力列に多重化する出力部と、を更に備えている、請求項２のシステム。
【請求項６】
前記シェーダパイプブロック内の前記不完全なシェーダパイプに予定されていた前記シェーダパイプデータは、水平経路を介して処理のための前記冗長シェーダパイプアレイにおける垂直冗長シェーダパイプ列内の冗長シェーダパイプブロックへ移動させられる、請求項５のシステム。
【請求項７】
前記冗長シェーダスイッチの前記出力部は、前記処理されたシェーダパイプデータを出力エクスポートデータに対して再調整するための遅延バッファを更に備えている、請求項５のシステム。
【請求項８】
各垂直冗長シェーダパイプ列は、１つ以上の不完全なシェーダパイプに予定されていたシェーダパイプデータを処理するように構成される、請求項２のシステム。
【請求項９】
各垂直冗長シェーダパイプ列は、行毎に１つの不完全なシェーダパイプに予定されていたシェーダパイプデータを処理するように構成される、請求項８のシステム。
【請求項１０】
前記垂直冗長シェーダパイプ列は、同一の行内の１つ以上の不完全なシェーダパイプに予定されていたシェーダパイプデータを処理するように構成される、請求項２のシステム。
【請求項１１】
プロセッサが、
シェーダパイプの行及び列からなるシェーダパイプアレイ内の不完全なシェーダパイプを識別するとともに、前記シェーダパイプアレイを介したデータの流れを制御することと、
不完全なシェーダパイプを識別すると、前記不完全なシェーダパイプあてのデータを、処理のための冗長シェーダパイプアレイにマッピングすることと、
前記シェーダパイプアレイ内の不完全なシェーダパイプを識別すると、前記不完全なシェーダパイプに予定されていたデータを、前記処理のための冗長シェーダパイプアレイに転送することと、
前記不完全なシェーダパイプに予定されていた前記シェーダパイプデータを処理することと、
その処理されたシェーダパイプデータを出力列へ返すことと、
前記出力列における前記処理されたシェーダパイプデータを出力エクスポートデータと同期させることと、を備え、
前記冗長シェーダパイプアレイは、１つ以上の垂直冗長シェーダパイプ列を備えており、各垂直冗長シェーダパイプ列は、１つ以上の冗長シェーダパイプブロックを備えており、行毎に単一の冗長シェーダパイプブロックがある、方法。
【請求項１２】
異なる行の２つ以上の不完全なシェーダパイプに予定されていたシェーダパイプデータが同時に処理される、請求項１１の方法。
【請求項１３】
同一の行の２つ以上の不完全なシェーダパイプに予定されていたシェーダパイプデータが同時に処理される、請求項１１の方法。
【請求項１４】
ハードウエア記述言語命令を合成することによって実行される、請求項１１の方法。
【請求項１５】
プロセッサと、前記プロセッサと通信するメモリと、を備え、
前記メモリは、
シェーダパイプの行及び列からなるシェーダパイプアレイ内の不完全なシェーダパイプを識別するとともに、前記シェーダパイプアレイを介したデータの流れを制御することと、
不完全なシェーダパイプを識別すると、前記不完全なシェーダパイプあてのデータを、処理のための冗長シェーダパイプアレイにマッピングすることと、
前記シェーダパイプアレイ内の不完全なシェーダパイプを識別すると、前記不完全なシェーダパイプに予定されていたデータを、前記処理のための冗長シェーダパイプアレイに転送することと、
前記不完全なシェーダパイプに予定されていた前記シェーダパイプデータを処理することと、
その処理されたシェーダパイプデータを出力列へ返すことと、
前記出力列における前記処理されたシェーダパイプデータを出力エクスポートデータと同期させることと、を前記プロセッサに指示するための複数の処理命令を記憶しており、
前記冗長シェーダパイプアレイは、１つ以上の垂直冗長シェーダパイプ列を備えており、各垂直冗長シェーダパイプ列は、１つ以上の冗長シェーダパイプブロックを備えており、行毎に単一の冗長シェーダパイプブロックがある、システム。
【請求項１６】
異なる行の２つ以上の不完全なシェーダパイプに予定されていたシェーダパイプデータが同時に補償される、請求項１５のシステム。
【請求項１７】
同一の行の２つ以上の不完全なシェーダパイプに予定されていたシェーダパイプデータが同時に補償される、請求項１５のシステム。
【請求項１８】
シェーダパイプの行及び列からなるアレイ内の不完全なシェーダパイプを識別するとともに、前記アレイを介したデータの流れを制御することと、
不完全なシェーダパイプを識別すると、前記不完全なシェーダパイプあてのデータを、処理のための冗長シェーダパイプアレイにマッピングすることであって、前記冗長シェーダパイプアレイは、１つ以上の垂直冗長シェーダパイプ列を備えており、各垂直冗長シェーダパイプ列は、１つ以上の冗長シェーダパイプブロックを備えており、行毎に単一の冗長シェーダパイプブロックがあることと、
前記アレイ内の不完全なシェーダパイプを識別すると、前記不完全なシェーダパイプに予定されていたデータを、前記処理のための冗長シェーダパイプアレイに転送することと、
前記不完全なシェーダパイプに予定されていた前記シェーダパイプデータを処理することと、
その処理されたシェーダパイプデータを出力列へ返すことと、
前記出力列における前記処理されたシェーダパイプデータを出力エクスポートデータと同期させることと、を備えたオペレーションを実行する１つ以上のプロセッサによる実行のための１つ以上の命令の１つ以上のシーケンスを伝えるコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してコンピュータシステム内で実行される計算処理に関し、より特定的にはコンピュータシステム内で実行されるグラフィックス処理タスクに関する。
【背景技術】
【０００２】
グラフィックス処理ユニット（ＧＰＵ）は、グラフィックス処理タスクを実行するために特別に設計された複合的な(complex)集積回路である。ＧＰＵは、例えば、ビデオゲームアプリケーション等のエンドユーザアプリケーションによって要求されるグラフィックス処理タスクを実行することができる。このような例においては、エンドユーザアプリケーションとＧＰＵの間にいくつものソフトウエアの階層が存在する。
【０００３】
エンドユーザアプリケーションはアプリケーションプログラミングインタフェース（ＡＰＩ）と通信する。ＡＰＩは、ＧＰＵに依存するフォーマットでよりはむしろ標準化されたフォーマットでエンドユーザアプリケーションがグラフィックスデータ及び命令を出力することを可能にする。マイクロソフトコープ(Microsoft Corp.)により開発されたＤｉｒｅｃｔＸ（登録商標）及びシリコングラフィックスインク(Silicon Graphics, Inc.)により開発されたＯｐｅｎＧＬ（登録商標）を含め、何種類ものＡＰＩが商業的に入手可能である。ＡＰＩはドライバと通信する。ドライバはＡＰＩから受け取った標準コードをＧＰＵが理解する固有のフォーマットの命令に変換する。ドライバは典型的にはＧＰＵの製造業者によって書かれる。ＧＰＵはそうしてドライバからの命令を実行する。
【０００４】
ＧＰＵは、描画(rendering)として知られる処理において、その構成要素のより高い階層記述から画像を作り出すピクセルを生成する。ＧＰＵは典型的には、ピクセル、テクスチャ、及び幾何データを処理するパイプラインの使用による連続的描画の概念を利用している。これらのパイプラインはしばしばシェーダパイプ又はシェーダパイプラインと称され、「シェーダ」はコンピュータグラフィックスでの用語であり、主として結果を描画することを実行するためにグラフィックリソースによって用いられる一連のソフトウエア命令を参照する。またＧＰＵは、より高いスループットを得るために並列処理設計にある多重化パイプラインを採用することもできる。シェーダパイプラインの多重化はシェーダパイプアレイと称されることもある。
【０００５】
例えば製造上の不完全性（製造欠陥）の結果として、シェーダパイプアレイとしてのパイプライン内のどこかで周期的にエラーが生じる。エラー回数が増えると、許容可能な描画計算の全体的な収率(overall yield)が減少する。典型的には不完全なパイプラインを修正するために用いられる方法は、シェーダパイプアレイ内の全アレイのデータを再計算することであろう。この方法は不完全なパイプラインデータを修正することができるものの、全アレイのデータを再計算するのにかなりの処理時間が費やされる。この再計算の試みは、単一のパイプライン内の単一の不完全な要素に起因する場合でさえも、システム全体の性能を著しく低下させ、あるいは有効な製品の製造歩留まりを著しく低下させる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、前述した欠点を軽減するシステム及び／又は方法が求められている。特に、全体的な製品製造又は性能に対する影響を最小限にしつつ不完全なシェーダパイプの影響を克服するための高度に効果的で費用効率の高い解決手法が必要とされている。
【課題を解決するための手段】
【０００７】
ここに具象化され且つ広く記述される本発明の原理に従い、本発明は、シェーダパイプアレイ、冗長シェーダパイプアレイ、冗長シェーダスイッチ、シーケンサ、及びテクスチャフェッチシステムを備えたシェーダパイプライン補償のための方法及び装置を含む。製造試験、システムレベル試験、又は起動試験の間に不完全性が確認されたら、制御レジスタが構成されて不完全なシェーダパイプ列を冗長シェーダパイプ列にマッピングする。正常動作モードにおいては、例えばシェーダパイプアレイにおけるシェーダパイプ列内の不完全性を冗長シェーダ制御レジスタが示したら、不完全なシェーダパイプ列に向けられていたデータは、冗長シェーダスイッチによって直接的に水平経路を介して冗長シェーダパイプアレイ列へ転送されてそこで処理される。このことは行毎に独自に制御されてよく、あるいは全ての行に対して共通であってもよい。シェーダパイプアレイ内における不完全なシェーダパイプは、例えば製造欠陥、製造後欠陥、部品の劣化、外部からの干渉、及び／又は不注意な静電放電、又は他の電気的な若しくは環境的な条件若しくは発生に起因し得る。試験の間に定常的な又は断続的なエラー状態が検出されれば、シェーダパイプは不完全であるとされる。試験は製造に際して又は製品の使用の間に周期的に（例えば起動又は初期化に際して）行なわれ得る。データが冗長シェーダパイプアレイによって一旦処理されたら、そのデータは冗長シェーダスイッチにより正しい出力列に再挿入される。また、冗長シェーダパイプアレイデータが他の出力データに対して正確に位置し且つタイミングをとられるように、冗長シェーダスイッチは冗長シェーダパイプアレイデータを同期させる。このように、不完全なシェーダパイプに予定されていたデータを処理のための冗長シェーダパイプに経路変更することによって、不完全なシェーダパイプが「補償（修復）」される。
【０００８】
本発明の実施形態においては、シェーダパイプアレイは１つ以上の垂直シェーダパイプ列を備えており、各列は１つ以上のシェーダパイプブロックから構成される。この実施形態では、シェーダパイプアレイはＭ個の垂直シェーダパイプ列を有する（Ｍ・Ｎ）アレイとして構成され、各列はＮ行のシェーダパイプブロックを備えている。
【０００９】
他の実施形態においては、冗長シェーダパイプは１つ以上の垂直冗長シェーダパイプ列を備えており、各列は１つ以上の冗長シェーダパイプブロックから構成される。この実施形態では、冗長シェーダパイプアレイはＸ個の垂直冗長シェーダパイプ列を有する（Ｘ・Ｎ）アレイとして構成され、各列はＮ行の冗長シェーダパイプブロックを備えている。
【００１０】
冗長シェーダパイプが２つ以上の垂直冗長シェーダパイプ列を備えている他の実施形態においては、冗長シェーダパイプは、単一のシェーダパイプアレイ内の２つ以上の不完全なシェーダパイプ列に予定されていたデータを２つ以上の垂直冗長シェーダパイプ列に対して同時に受け取り、処理し、そして出力することが可能である。従って、各冗長列は主シェーダアレイ内の個々の列を補償することができる。
【００１１】
他の実施形態においては、冗長シェーダパイプスイッチは入力及び出力モジュールを含んでいてよい。入力モジュールは、不完全なシェーダパイプに当初予定されていたデータがそのシェーダパイプに入力するよりも前に、処理のための冗長シェーダパイプ列にそのデータを転送することができる。これに伴いこの実施形態では、シェーダパイプアレイの出力ユニットは、冗長シェーダパイプアレイからの処理されたシェーダパイプアレイデータを正しい出力列に多重化し、出力が他の出力データと一致するように出力を同期させることになる。
【００１２】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に記述されている。本発明がここに記述される特定の実施形態に限定されないことを特記しておく。当該実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
【図面の簡単な説明】
【００１３】
添付の図面は、ここに組み込まれまた出願書類の一部をなし、本発明の実施形態を示しそして、上述の一般的な説明及び以下に示される実施形態の詳細な説明と共に本発明の原理を説明するのに役立つ。
【００１４】
【図１】図１は冗長シェーダパイプ補償システムの実施又は実装を示すシステム図である。
【００１５】
【図２】図２はシェーダパイプアレイの詳細を説明するための冗長シェーダパイプ補償システムの実施又は実装を示すシステム図である。
【００１６】
【図３】図３は冗長シェーダスイッチ出力の詳細を説明するための冗長シェーダパイプ補償システムの実施又は実装を示すシステム図である。
【００１７】
【図４】図４は単一列内の冗長シェーダパイプアレイの詳細を説明するための冗長シェーダパイプ補償システムの実施又は実装を示すシステム図である。
【００１８】
【図５】図５は多重化列冗長シェーダパイプアレイの詳細を説明するための冗長シェーダパイプ補償システムの実施又は実装を示すシステム図である。
【００１９】
【図６】図６は冗長シェーダパイプ補償のための方法の実施を示すフローチャートである。
【００２０】
本発明の特徴及び利益は、図面と共に以下に記述される詳細な説明からより明らかになり、図面において同様の参照符号は全体を通して対応する要素を特定する。図面において、同様の参照数字は一般的に同一の、機能的に類似の、及び／又は構造的に類似の要素を示す。ある要素が最初に現れる図面は対応する参照番号の一番左の桁の１つ以上の数字によって示される。
【発明を実施するための形態】
【００２１】
本発明はシェーダパイプアレイに関連し、そこには不完全なシェーダパイプに予定されていたデータを処理する能力を有する冗長シェーダパイプアレイが存在する。この発明の実施形態においては、不完全なシェーダパイプが識別され、次いで冗長シェーダスイッチの使用を通して、その識別された不完全なシェーダパイプに予定されていたデータはその代わりに、水平経路を介して冗長シェーダパイプへ転送され、そこでそのシェーダパイプデータが処理される。冗長シェーダスイッチはまた、処理された冗長シェーダパイプデータを他の出力データに一致する正確なタイミングで正しい出力列へ返送することを制御する。このようにして不完全なシェーダパイプの影響が補償され、従って冗長シェーダパイプアレイを用いて、製造の時点における初期収率を高め、あるいは後続の不完全なシェーダパイプが他の点からデバイスを使用不能にし又は劣化した状態で動作させてしまうであろうデバイスの有用寿命を延ばすことができる。
【００２２】
特定の構成、配置、及びステップが論じられるが、このことは例示的な目的のみのためのものであることが理解されるべきである。関連分野を含めた当業者であれば、本発明の精神及び範囲から逸脱することなしに他の構成、配置、及びステップが用いられ得ることを認識するであろう。この発明が種々の他の応用においても採用され得ることは、関連分野を含めた当業者にとって明らかであろう。
【００２３】
尚、「１つの実施形態」、「実施形態」、「例示的実施形態」等に対する明細書での言及は、説明される実施形態が特定の特徴、構造、又は特性を含んでいてよいが、全ての実施形態が必ずしも当該特定の特徴、構造、又は特性を含む必要はないことを示している。また、そのような表現は必ずしも同じ実施形態を参照していない。更に、特定の特徴、構造、又は特性が実施形態に関連して説明されている場合には、明白に説明されていようとなかろうと、他の実施形態に関連して当該特定の特徴、構造、又は特性を具現化することは当業者の知識の範囲内にあることと言える。
【００２４】
本発明は特定の応用のための例示的な実施形態を参照してここに説明されるが、本発明はそれらに限定されないことが理解されるべきである。当業者であれば、ここに提供される教示を利用して、当該範囲内での及び本発明が顕著に有用であろう追加的な分野での追加的な修正、応用、及び実施形態を認識するであろう。
【００２５】
図１は本発明の実施形態に従うグラフィックス処理ユニット内のシェーダシステム１００を示す図である。システム１００は、シーケンサ１３０と、パイプアレイ１４０と、ＲＳＳ−Ｉｎ１２０及びＲＳＳ−Ｏｕｔ１６０として示される冗長シェーダスイッチ（ＲＳＳ）と、冗長シェーダパイプアレイ１５０と、テクスチャフィルタ１５５とを備えている。また、ピクセルデータを入力するシェーダパイプ補間ユニット１１０と、処理されたピクセルデータが向けられるシェーダパイプ出力１７０とが示されている。
【００２６】
シェーダパイプアレイ１４０は、ＲＳＳ−Ｉｎ１２０を介してシェーダパイプ補間ユニット１１０から受け取った入力データに対してシェーダプログラム計算を実行する。ＲＳＳ−Ｉｎ１２０はシェーダパイプアレイ１４０への入力データの流れを制御する。シーケンサ１３０は、シェーダパイプアレイ１４０を介したデータの流れを制御すると共に、シェーダパイプアレイ１４０内の不完全なシェーダパイプを識別する。不完全なシェーダパイプが無い場合には、処理されたデータはそのままＲＳＳ−Ｏｕｔ１６０を介してシェーダパイプ出力１７０へ進む。
【００２７】
シェーダパイプアレイ１４０内に不完全なシェーダパイプがある場合には、シーケンサ１３０はＲＳＳ−Ｉｎ１２０に不完全なシェーダパイプの位置を通知する。ＲＳＳ−Ｉｎ１２０は次いで、不完全なシェーダパイプに予定されていたデータをシェーダパイプアレイ１４０から直接水平経路(direct horizontal path)を介して冗長シェーダパイプアレイ１５０へ転送する。冗長シェーダパイプアレイ１５０は、不完全なシェーダパイプにより本来処理される対象となっていたシェーダパイプデータを処理することによって、不完全なシェーダパイプを「効果的に」補償することを委ねられている。一旦シェーダパイプデータが冗長シェーダパイプアレイ１５０によって処理されると、そのデータはＲＳＳ−Ｏｕｔ１６０へ戻され、ＲＳＳ−Ｏｕｔ１６０は、シェーダパイプが不完全であると見出されなかった場合にそのデータがあったであろうように正確な位置で且つ適切な時間にその冗長シェーダパイプデータを配置する。
【００２８】
シェーダパイプアレイ１４０及び冗長シェーダパイプアレイ１５０はまた、テクスチャフィルタ１５５に対してテクスチャ要求を発行することができる。この場合、テクスチャフィルタ１５５はピクセルに付随するテクセルデータを含むキャッシュシステム（図示せず）に対して適切なアドレスを生成する。キャッシュシステムはアドレスを受け取った後、関連するテクセルデータをテクスチャフィルタ１５５へ返してよい。
【００２９】
他の実施形態では、不完全なシェーダパイプが無い場合、冗長シェーダパイプアレイ１５０は例えば入力データに対する追加的な描画計算を含む他の目的のために用いられてよい。代替的な実施形態では、特別な診断試験、例えばソフトウエアコード又はハードウエア試験回路が、あるシェーダパイプが単に断続的に不完全であるか又は新たに不完全であると識別した場合には、断続的に又は新たに不完全なシェーダパイプに対するシェーダパイプデータが処理のための冗長シェーダアレイに単に転送されるように制御レジスタ（図示せず）が構成されてよい。
【００３０】
図２は本発明の実施形態に従うシェーダパイプアレイ１４０の更に詳細な図解を示している。この実施形態では、シェーダパイプアレイ１４０は、垂直シェーダパイプ列１４１−１，１４１−２，１４１−３、及び１４１−４乃至１４１−Ｍとして示される１つ以上の垂直シェーダパイプ列を備えており、「Ｍ」は１より大きい正の整数を表している。各垂直シェーダパイプ列、例えば１４１−１は、ここではＳＰ＿００乃至ＳＰ＿０Ｎで示される１つ以上のシェーダパイプブロックを備えており、「Ｎ」は１より大きい正の整数を表している。
【００３１】
図２において例えば、シェーダパイプブロックＳＰ＿１２内に位置しているシェーダパイプが不完全であるとシーケンサ１３０が識別した場合、ＲＳＳ−Ｉｎ１２０は、不完全なパイプＳＰ＿１２に当初予定されていたデータを処理のための冗長シェーダパイプアレイ１５０へ水平経路を介して転送してよい。不完全なシェーダパイプに当初予定されていたシェーダパイプデータを冗長シェーダパイプアレイ１５０が一旦処理すると、処理されたシェーダパイプデータは冗長シェーダパイプアレイ１５０からＲＳＳ−Ｏｕｔ１６０へ転送されることになる。
【００３２】
図３は本発明の実施形態に従うＲＳＳ−Ｏｕｔ１６０の更に詳細な図解を示している。ＲＳＳ−Ｏｕｔ１６０は、ＤＢ＿０乃至ＤＢ＿Ｍで示される一連の遅延バッファと、ＯＢ＿０乃至ＯＢ＿Ｍで示される一連の出力バッファとを備えている。遅延バッファ及び出力バッファの各組、例えばＤＢ＿０及びＯＢ＿０は、シェーダパイプアレイ１４０内の対応する垂直シェーダパイプ列、例えばブロックＳＰ＿００乃至ＳＰ＿０Ｎからなる列０に合わされている。
【００３３】
遅延バッファの目的は、冗長シェーダパイプアレイ１５０結果を再調整して、シェーダパイプデータの処理を完了すると共に処理されたシェーダパイプデータをＲＳＳ−Ｏｕｔ１６０の適切な列に戻すことを可能にするのに十分な期間、シェーダパイプアレイ１４０内の垂直シェーダパイプ列のデータ出力を保持することである。例えばシーケンサ１３０が垂直シェーダパイプ列２内、具体的にはブロックＳＰ＿２Ｎ内の不完全なシェーダパイプを示している場合、不完全なシェーダパイプＳＰ＿２Ｎに対して予定されていたシェーダパイプデータは、図３内に符号１３１で示されるように、行Ｎに関連する水平経路を介して冗長シェーダパイプアレイ１５０へ転送されることになる。冗長シェーダパイプアレイ１５０はシェーダパイプデータを処理し、次いで図３内に符号１６１で示されるように、処理されたシェーダパイプデータをＲＳＳ−Ｏｕｔ１６０へ戻り経路を介して返送することとなる。この例では、不完全なパイプは列２内に位置していたので、処理されたシェーダパイプデータは出力バッファＯＢ＿２へ戻されることになる。遅延バッファ、この例ではＤＢ＿２があるために、出力バッファ、この例ではＯＢ＿２は処理されたシェーダパイプデータを列２に対する出力ストリームに挿入して、当初ＳＰ＿２内にあったシェーダパイプデータの代わりとすることができる。
【００３４】
１つの実施形態では、データは単一命令多重化データ（ＳＩＭＤ）として処理されてよく、この場合、不完全なレーン(defective lane)は冗長ユニットに置き換えられて、シーケンサ１３０がエクスポート命令を含む処理に必要な全ての命令を発行する。従って、ＲＳＳ−Ｏｕｔ１６０は命令ベースでデータの再調整(re-alignment)を行う。しかし、他の実施形態では、ＳＩＭＤアプローチは多重化命令ストリーム多重化データストリーム（ＭＩＭＤ）で代替されてよく、この場合、構成要素は並行して且つ独立に機能する。
【００３５】
図４は本発明の実施形態に従う冗長シェーダパイプアレイ１５０の更に詳細な図解を示している。この実施形態では、冗長シェーダパイプアレイ１５０は図４内で符号１５１として外形を描かれている単一の列を備えている。この構成では、冗長シェーダパイプアレイ１５０は行あたり１つまでの不完全なシェーダパイプに予定されていたシェーダパイプデータを処理することができるが、Ｎ行まで修正することが可能である。ＲＳＰ＿００ブロックは、ブロックＳＰ＿００乃至ＳＰ＿Ｍ０を備えたシェーダパイプアレイ１４０の行０内の単一の不完全なシェーダパイプに予定されていたシェーダパイプデータを処理することができる。同様にブロックＲＳＰ＿０１は、ブロックＳＰ＿０１乃至ＳＰ＿Ｍ１を備えたシェーダパイプアレイ１４０の行１内の単一の不完全なシェーダパイプに予定されていたシェーダパイプデータを処理することができ、以下、冗長シェーダパイプアレイ１５０のＲＳＰ＿０Ｎの行まで同様である。
【００３６】
図５は本発明の実施形態に従う多重化列冗長シェーダパイプアレイ５１０を示す図である。この実施形態では、冗長シェーダパイプアレイ５１０は、図５内で符号１５１−１乃至１５１Ｘとして外形を描かれている多重化列を備えており、Ｘは１より大きい正の整数である。この構成では、冗長シェーダパイプアレイ５１０は行あたりＸ個までの不完全なシェーダパイプに予定されていたシェーダパイプデータを処理することができる。冗長シェーダパイプアレイ１５０内の列の数（Ｘ）はシェーダパイプアレイ１４０内の列の数（Ｍ）に依存しないが、シェーダパイプデータが同時に処理されることを望まれている、単一の行内の並列した不完全なシェーダパイプの数の関数であってよい。
【００３７】
図６は冗長シェーダスイッチを用いるシェーダパイプデータ補償のための方法６００を示すフローチャートである。方法６００はステップ６０２で開始する。ステップ６０４では、システム試験結果に基き不完全なシェーダパイプ制御レジスタをシーケンサが読み、またシェーダパイプ冗長性を用いる制御を設定する。ステップ６０６では、不完全なシェーダパイプに予定されていたシェーダパイプデータを冗長シェーダスイッチがシェーダパイプアレイから処理のための冗長シェーダパイプに多重化する。ステップ６０８では、不完全なシェーダパイプに予定されていたシェーダパイプデータの実際の処理を冗長シェーダパイプが実行する。
【００３８】
ステップ６１０では、処理されたシェーダパイプデータを冗長シェーダパイプアレイが冗長シェーダスイッチの適切な出力列に返送する。ステップ６１２では、シェーダアレイ及び冗長シェーダアレイからの処理されたシェーダパイプデータを冗長シェーダスイッチが適切な出力列に統合する。
【００３９】
図１、２、３、４、５、及び６で概説した機能、処理、システム及び方法は、ソフトウエア、ファームウエア若しくはハードウエア又はこれらの組み合わせを用いて実施又は実装され得る。プログラム可能な論理が使用される場合には、当該論理は商業的に入手可能な処理プラットフォーム又は特殊目的デバイス上で実行可能である。
【００４０】
関連分野を含めた当業者に明らかであろうように、ここでの説明に基いて、本発明の実施形態はハードウエア記述言語（ＨＤＬ）、例えばＶｅｒｉｌｏｇ又はＶＨＤＬを用いたソフトウエアにおいて設計することができる。ＨＤＬ設計は電子システムの挙動をモデル化することができ、そこでは当該設計は合成され最終的にはハードウエアデバイスへと製造され得る。また、ＨＤＬ設計はコンピュータ製品内に記憶されてよく、ハードウエア製造に先立ちコンピュータシステム内に取り込まれてよい。
【００４１】
概要及び要約部ではなく、詳細な説明部が特許請求の範囲を解釈するために用いられるよう意図されていることが理解されるべきである。概要及び要約部は、発明者によって意図される本発明の１つ以上のしかし全部のではない例示的実施形態を示すことができ、従って本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。
【００４２】
特定の機能の実装及びそれらの関係を示す機能構成ブロックを用いて本発明が以上のように説明されてきた。それらの機能構成ブロックの境界は説明の便宜のためここでは任意に画定されてきた。特定の機能及びそれらの関係が適切に実行される限りにおいて代替的な境界が画定されてよい。
【００４３】
特定の実施形態の前述した説明は、他者が、当該分野の技能の範囲内の知識を適用することによって、必要以上の実験を要せず、本発明の一般的概念から逸脱することなしに、当該特定の実施形態を容易に修正し及び／又は種々の応用に適合させることができる程度に、本発明の一般的性質を完全に明らかにするであろう。従って、そのような適合及び修正は、ここに提示される教示及び指針に基き、開示された実施形態と均等なものの意味及び範囲内にあることが意図されている。ここでの表現法及び用語は説明を目的としたものであり限定を目的としてないことが理解されるべきであり、本明細書の表現法及び用語は教示及び指針を考慮して当業者によって解釈されるべきである。
【００４４】
本発明の種々の実施形態が上に説明されてきたが、それらは例示のみを目的として提示されたものであり、限定を目的とはしていないことが理解されるべきである。本発明の精神及び範囲から逸脱することなしに、形態及び詳細における種々の変更がここになされ得ることが関連分野を含めた当業者には明らかであろう。従って、本発明の広さ及び範囲は上述したいかなる例示的実施形態によっても限定されるべきではなく、以下の請求項及びそれらと均等なものに従ってのみ画定されるべきである。
【図１】
0005536760.tif 000002
【図２】
0005536760.tif 000003
【図３】
0005536760.tif 000004
【図４】
0005536760.tif 000005
【図５】
0005536760.tif 000006
【図６】
0005536760.tif 000007