(57)【要約】【課題】  ＣＰＵトラフィックを特殊とマークすることによりデッドロックを回避する方法及びシステムを提供する。【解決手段】  パラレルプロセッサによってシステムメモリへ発行される読み取り要求を「特殊」とマークすることによりデッドロックが回避される。特殊とマークされた読み取り要求に関連した読み取り完了がＰＣＩｅバスのバーチャルチャンネル１を経てルーティングされる。バーチャンネル１を経てのデータ返送は、バーチャルチャンネル０における書き込み要求によりストール状態にならず、潜在的なデッドロックが回避される。【選択図】図４
2010140480.tif 000002
【特許請求の範囲】
【請求項１】
第１処理ユニットと、
第２処理ユニットと、
メモリブリッジと、
システムメモリと、
前記第２処理ユニットを、第１バーチャルチャンネル及び第２バーチャルチャンネルを経て前記第１処理ユニット、前記メモリブリッジ及び前記システムメモリに接続するバスと
を備え、
前記第２処理ユニットは、（ｉ）前記第１処理ユニットから前記第１バーチャルチャンネルを経て読み取り要求又は書き込み要求を受け取り、且つ（ii）前記読み取り要求又は前記書き込み要求を処理している間に発生されるデリバティブ読み取り要求を、前記第２バーチャルチャンネルを経て送出するように構成されたバスインターフェイスユニットを含む、コンピュータシステム。
【請求項２】
前記第２処理ユニットは、変換ルックアサイドバッファを有するメモリマネージメントユニットを更に含み、このメモリマネージメントユニットは、前記変換ルックアサイドバッファにミスが発生したときに前記デリバティブ読み取り要求を発生する、請求項１に記載のコンピュータシステム。
【請求項３】
前記第２処理ユニットのためのローカルメモリを更に備え、
前記第２処理ユニットは、キャッシュメモリユニットを通して前記ローカルメモリに接続され、更に、前記キャッシュメモリユニットは、前記デリバティブ読み取り要求を発生する、請求項１に記載のコンピュータシステム。
【請求項４】
前記キャッシュメモリユニットは、前記読み取り要求又は前記書き込み要求が、前記キャッシュメモリユニットに記憶されていない圧縮状態情報にアクセスするときに、前記デリバティブ読み取り要求を発生する、請求項３に記載のコンピュータシステム。
【請求項５】
前記キャッシュメモリユニットは、前記読み取り要求又は前記書き込み要求が前記システムメモリの圧縮領域からのデータにアクセスするときに前記デリバティブ読み取り要求を発生する、請求項３に記載のコンピュータシステム。
【請求項６】
前記第２処理ユニットは、複数のクライアントから読み取り要求又は書き込み要求を受け取り、前記読み取り要求又は前記書き込み要求が前記第１処理ユニットから受け取られた場合に前記読み取り要求又は前記書き込み要求を特殊とマークするように構成されたメモリマネージメントユニットアービターを更に備える、請求項１に記載のコンピュータシステム。
【請求項７】
前記クライアントの各々は、クライアント識別子を有し、前記メモリマネージメントユニットアービターは、前記読み取り要求又は前記書き込み要求の各々に関連したクライアント識別子を検査するように構成される、請求項６に記載のコンピュータシステム。
【請求項８】
前記第１処理ユニットは中央処理ユニットであり、前記第２処理ユニットはパラレル処理ユニットであり、前記バスはＰＣＩｅバスである、請求項１に記載のコンピュータシステム。
【請求項９】
第１処理ユニットと、
第２処理ユニットと、
メモリブリッジと、
システムメモリと、
前記第２処理ユニットを前記第１処理ユニット、前記メモリブリッジ及び前記システムメモリに接続するバスと
を有するコンピュータシステムにおいて、前記第２処理ユニットで読み取り要求又は書き込み要求を処理する方法であって、
前記バスの第１バーチャルチャンネルを経て前記第２処理ユニットで読み取り要求又は書き込み要求を受け取るステップと、
前記読み取り要求又は前記書き込み要求を処理している間に前記第２処理ユニットにおいて１つ以上のデリバティブ読み取り要求を発生し、前記バスの第２バーチャルチャンネルを経て前記デリバティブ読み取り要求を前記システムメモリへ送出するステップと、
前記バスの前記第２バーチャルチャンネルを経て前記デリバティブ読み取り要求の完了を受け取るステップと、
受け取られたオリジナルの前記読み取り要求又は前記書き込み要求を完了するステップと、
を備える方法。
【請求項１０】
前記読み取り要求又は前記書き込み要求を処理している間で、前記システムメモリの圧縮領域がアクセスされたときに、前記デリバティブ読み取り要求が発生される、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、一般的に、コンピュータハードウェアに関し、より詳細には、ＣＰＵトラフィックを特殊とマークすることによりデッドロックを回避する方法及びシステムに関する。
【背景技術】
【０００２】
[0002]従来のコンピュータシステムは、中央処理ユニット（ＣＰＵ）を備え、また、パラレル処理ユニット（ＰＰＵ）として知られているコプロセッサを含むこともある。ＣＰＵは、ＣＰＵの処理ワークロードを減少するために幾つかの処理オペレーションをＰＰＵへオフロードする。これらの処理オペレーションは、とりわけ、圧縮及び解凍オペレーションを含む。ＣＰＵは、これらの処理オペレーションを要求するときに、読み取り要求及び／又は書き込み要求を含む要求をＰＰＵへ発行する。例えば、ＣＰＵは、圧縮フォーマットで記憶することのできるデータをシステムメモリへ書き込むことが要求される。ＣＰＵは、書き込み要求をＰＰＵへ送出し、次いで、ＰＰＵは、その書き込み要求に関連したデータを読み取って解凍し、そして解凍されて新たなデータと合体されたオリジナルデータをシステムメモリに書き込む。
【０００３】
[0003]時々、ＣＰＵにより発行される書き込み要求は、最初の書き込み要求を完了できる前に完了しなければならない１つ以上の「デリバティブ」読み取り要求をＰＰＵが発行する状態を生じさせることがある。例えば、ＰＰＵは、ＣＰＵに関連したシステムメモリユニットをターゲットとするデリバティブ読み取り要求を発行することがある。読み取りトランザクションが完了すると、システムメモリは、トランザクションが完了したことをＰＰＵに通知する読み取り完了をＰＰＵへ発行する。
【０００４】
[0004]しかしながら、１つ以上の書き込み要求が保留中となっている周辺コンポーネントインターフェイスエクスプレス（ＰＣＩｅ）バスによりＣＰＵ及びＰＰＵが接続されたときに、問題が生じる。ＰＣＩｅバスの順序付けルールのために、読み取りが完了しても書き込み要求をパスできず、従って、デリバティブ読み取り要求は、書き込み完了をＰＰＵへ返送することができない。それ故、最初の書き込み要求を完了することができない。この状態は、この技術では、循環依存性又は「デッドロック(deadlock)」として知られている。デッドロックは、ＣＰＵとＰＰＵとの間の幾つかの又は全ての通信を停止し、コンピュータシステムの処理スループットに否定的な影響を与える。デッドロック状態の幾つかの例を以下に述べる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[0005]第１の例では、ＰＰＵが、システムメモリに記憶されたページテーブルから読み取りを行う必要があり、且つＰＣＩｅバスにおいて書き込み要求が保留中である場合に、デッドロックが生じることがある。ＰＰＵがシステムメモリへ読み取り要求を発行して、ページテーブルからエントリーを検索するときには、その読み取り要求に関連した読み取り完了をＰＰＵへ返送することができず、従って、最初の書き込み要求を完了することができない。
【０００６】
[0006]また、ＣＰＵが、ＰＰＵに関連したキャッシュメモリユニット内のキャッシュラインをターゲットとする書き込み要求をＰＰＵへ発行するときにも、デッドロックが生じることがある。書き込み要求を完了するために、ＰＰＵは、先ず、タグ記憶装置を検査することによりキャッシュラインが圧縮されたかどうか決定する。タグ記憶装置は、キャッシュメモリユニット内の最近アクセスされたキャッシュラインに関連した圧縮状態を指示する。タグ記憶装置が、書き込み要求により指定されたキャッシュラインの圧縮状態を含まないときには、ＰＰＵは、キャッシュメモリユニット内の各キャッシュラインの圧縮状態を含むバッキング記憶装置にアクセスするために読み取り要求をシステムメモリへ発行する。バッキング記憶装置は、指定のキャッシュラインの圧縮状態を返送すると共に、読み取り完了を発行する。しかしながら、書き込み要求がＰＣＩｅにおいて保留中であるときには、読み取り要求に関連した読み取り完了ではそれらの保留中の書き込み要求をパスできないので、デッドロックが発生し得る。
【０００７】
[0007]ＣＰＵが、この技術において「圧縮タイル」として知られている圧縮されたシステムメモリの領域へデータを書き込むように試みたときに、第３のデッドロックが発生し得る。ＣＰＵは、圧縮タイルを指定し且つ書き込みデータを含む書き込み要求をＰＰＵへ発行する。ＰＰＵは、圧縮タイルを読み取るために読み取り要求をシステムメモリへ発行する。この場合も、書き込み要求がＰＣＩｅにおいて保留中であるときには、読み取り要求に関連した読み取り完了ではそれらの保留中の書き込み要求をパスできないので、デッドロックが発生し得る。
【０００８】
[0008]これら３つの例に加えて、多数の他の環境でも、デッドロックが生じ得る。従って、この技術では、デッドロックを回避する方法及びシステムが要望される。
【課題を解決するための手段】
【０００９】
[0009]本発明の実施形態は、第１処理ユニットと、第２処理ユニットと、メモリブリッジと、システムメモリと、第２処理ユニットを第１処理ユニット、メモリブリッジ、及びシステムメモリに接続するバスとを有するコンピュータシステムにおいてデッドロックを回避する方法及びシステムを提供する。第１処理ユニットから第２処理ユニットへ読み取り要求又は書き込み要求が送出されるときにデッドロックが回避される。
【００１０】
[0010]本発明の実施形態によるデッドロックを回避する方法は、バスの第１バーチャルチャンネルを経て第２処理ユニットで読み取り要求又は書き込み要求を受け取り、その読み取り要求又は書き込み要求を処理する間に第２処理ユニットにおいてデリバティブ読み取り要求を発生し、バスの第２バーチャルチャンネルを経てデリバティブ読み取り要求をシステムメモリへ送出し、バスの第２バーチャルチャンネルを経てデリバティブ読み取り要求の完了を受け取り、更に、受け取られた読み取り要求又は書き込み要求を完了することを含む。
【００１１】
[0011]本発明の実施形態によるデッドロックを回避するシステムは、第２処理ユニット内にバスインターフェイスユニットを備えている。このバスインターフェイスユニットは、第１バーチャルチャンネルを経て第１処理ユニットから読み取り要求又は書き込み要求を受け取り、そしてその読み取り要求又は書き込み要求を処理する間に発生されるデリバティブ読み取り要求を、第２バーチャルチャンネルを経て送出するように構成される。
【００１２】
[0012]本発明の前述した特徴を詳細に理解できるように、概要について簡単に前述した本発明について、幾つかを添付図面に例示している実施形態に関して、以下により特定して説明する。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示したもので、従って、本発明の範囲は、それに限定されるものではなく、本発明は、同等の効果を発揮できる他の実施形態も包含できることに注意されたい。
【図面の簡単な説明】
【００１３】
【図１】本発明の１つ以上の態様を具現化するように構成されたコンピュータシステムを示すブロック図である。
【図２】本発明の一実施形態による図１のコンピュータシステムのためのパラレル処理サブシステムのブロック図である。
【図３Ａ】本発明の一実施形態による図２の１つのパラレル処理ユニット（ＰＰＵ）内の一般的処理クラスター（ＧＰＣ）のブロック図である。
【図３Ｂ】本発明の一実施形態による図２の１つのＰＰＵ内のパーティションユニットのブロック図である。
【図４】本発明の一実施形態によりデッドロックを回避するように構成されたコンピュータシステムのブロック図である。
【図５】本発明の一実施形態によりデッドロックを回避する方法のステップのフローチャートである。
【発明を実施するための形態】
【００１４】
[0019]以下の説明において、本発明をより完全に理解するために多数の特定の細部について述べる。しかしながら、当業者であれば、１つ以上のこれら特定の細部をもたずに、本発明を実施できることが明らかであろう。他の点について、本発明を不明瞭にしないために、良く知られた特徴は説明しない。
【００１５】
システムの概略
[0020]図１は、本発明の１つ以上の態様を具現化するように構成されたコンピュータシステム１００を示すブロック図である。このコンピュータシステム１００は、中央処理ユニット（ＣＰＵ）１０２と、メモリブリッジ１０５を通るバス経路を経て通信するシステムメモリ１０４とを備えている。メモリブリッジ１０５は、図１に示すようにＣＰＵ１０２に一体化されてもよい。或いはまた、メモリブリッジ１０５は、バスを経てＣＰＵ１０２に接続される、例えば、ノースブリッジチップのような従来の装置でもよい。メモリブリッジ１０５は、通信経路１０６（例えば、ハイパートランスポートリンク）を経てＩ／Ｏ（入力／出力）ブリッジ１０７へ接続される。例えば、サウスブリッジチップでよいＩ／Ｏブリッジ１０７は、１つ以上のユーザ入力装置１０８（例えば、キーボード、マウス）からユーザ入力を受け取り、そしてその入力を、経路１０６及びメモリブリッジ１０５を経てＣＰＵ１０２へ転送する。パラレル処理サブシステム１１２がバス又は他の通信経路１１３（例えば、ＰＣＩエクスプレス、アクセラレーテッドグラフィックポート、又はハイパートランスポートリンク）を経てメモリブリッジ１０５へ結合され、一実施形態では、パラレル処理サブシステム１１２は、ディスプレイ装置１１０（例えば、従来のＣＲＴ又はＬＣＤベースのモニタ）へピクセルを配送するグラフィックサブシステムである。システムディスク１１４もＩ／Ｏブリッジ１０７に接続される。スイッチ１１６は、Ｉ／Ｏブリッジ１０７と、他のコンポーネント、例えば、ネットワークアダプタ１１８及び種々のアドインカード１２０及び１２１との間の接続を与える。Ｉ／Ｏブリッジ１０７には、ＵＳＢ又は他のポートコネクタ、ＣＤドライブ、ＤＶＤドライブ、フィルム記録装置、等を含む他のコンポーネント（明確に示されていない）を接続することもできる。図１における種々のコンポーネントを相互接続する通信経路は、任意の適当なプロトコル、例えば、ＰＣＩ（周辺コンポーネント相互接続）、ＰＣＩエクスプレス（ＰＣＩ−Ｅ）、ＡＧＰ（アクセラレーテッドグラフィックポート）、ハイパートランスポート、或いは他のバス又はポイント対ポイント通信プロトコル（１つ又は複数）を使用して具現化されてもよいし、異なる装置間の接続が、この技術で良く知られたように、異なるプロトコルを使用してもよい。
【００１６】
[0021]一実施形態において、パラレル処理サブシステム１１２は、例えば、ビデオ出力回路を含むグラフィック及びビデオ処理に最適な回路を合体して、グラフィック処理ユニット（ＧＰＵ）を構成する。別の実施形態では、パラレル処理サブシステム１１２は、ここで詳細に述べる基礎的な計算アーキテクチャーを維持しながら、汎用処理に対して最適化された回路を合体する。更に別の実施形態では、パラレル処理サブシステム１１２は、１つ以上の他のシステム要素、例えば、メモリブリッジ１０５、ＣＰＵ１０２及びＩ／Ｏブリッジ１０７と一体化されて、システムオンチップ（ＳｏＣ）を形成してもよい。
【００１７】
[0022]ここに示すシステムは、例示に過ぎず、変更や修正が可能であることが明らかである。ブリッジの数及び配列を含む接続トポロジーは、必要に応じて変更されてもよい。例えば、ある実施形態では、システムメモリ１０４は、ブリッジを通さずにＣＰＵ１０２に直結され、他の装置は、メモリブリッジ１０５及びＣＰＵ１０２を経てシステムメモリ１０４と通信する。他の別のトポロジーにおいて、パラレル処理サブシステム１１２は、Ｉ／Ｏブリッジ１０７へ接続されるか、又はメモリブリッジ１０５ではなくＣＰＵ１０２に直結される。更に他の実施形態では、１つ以上のＣＰＵ１０２、Ｉ／Ｏブリッジ１０７、パラレル処理サブシステム１１２、及びメモリブリッジ１０５が、１つ以上のチップに一体化されてもよい。ここに示す特定のコンポーネントは、任意のものであり、例えば、いかなる数のアドインカード又は周辺装置がサポートされてもよい。ある実施形態では、スイッチ１１６が取り去られ、ネットワークアダプタ１１８及びアドインカード１２０、１２１がＩ／Ｏブリッジ１０７に直結される。
【００１８】
[0023]図２は、本発明の一実施形態によるパラレル処理サブシステム１１２を示す。図示されたように、パラレル処理サブシステム１１２は、１つ以上のパラレル処理ユニット（ＰＰＵ）２０２を備え、その各々がローカルパラレル処理（ＰＰ）メモリ２０４に結合される。一般的に、パラレル処理サブシステムは、多数ＵのＰＰＵを備え、但し、Ｕ≧１である。（ここで、同じオブジェクトの複数のインスタンスは、オブジェクトを識別する参照番号と、必要に応じてインスタンスを識別するかっこ付き番号とで示される。）ＰＰＵ２０２及びパラレル処理メモリ２０４は、１つ以上の集積回路デバイス、例えば、プログラム可能なプロセッサ、特定用途向け集積回路（ＡＳＩＣ）又はメモリデバイスを使用して具現化されてもよいし、或いは他の技術的に実現可能な形態で具現化されてもよい。
【００１９】
[0024]再び図１を参照すれば、ある実施形態において、パラレル処理サブシステム１１２における幾つかの又は全てのＰＰＵ２０２は、ＣＰＵ１０２及び／又はシステムメモリ１０４により供給されるグラフィックデータからピクセルデータを発生し、ローカルパラレル処理メモリ２０４（例えば、従来のフレームバッファを含むグラフィックメモリとして使用できる）と相互作用して、ピクセルデータを記憶及び更新し、ピクセルデータをディスプレイ装置１１０へ配送し、等々に関連した種々のタスクを遂行するように構成できるレンダリングパイプラインを伴うグラフィックプロセッサである。ある実施形態では、パラレル処理サブシステム１１２は、グラフィックプロセッサとして動作する１つ以上のＰＰＵ２０２、及び汎用の計算に使用される１つ以上の他のＰＰＵ２０２を含んでもよい。ＰＰＵは、同じものでも異なるものでもよく、また、各ＰＰＵは、それ自身の専用のパラレル処理メモリデバイス（１つ又は複数）を有してもよいし、又は専用のパラレル処理メモリデバイス（１つ又は複数）を有していなくてもよい。１つ以上のＰＰＵ２０２がディスプレイ装置１１０へデータを出力してもよいし、又は各ＰＰＵ２０２が１つ以上のディスプレイ装置１１０へデータを出力してもよい。
【００２０】
[0025]図２を参照すれば、ある実施形態において、ローカルＰＰメモリ２０４がなくてもよく、メモリの参照は、ローカルキャッシュ（図示せず）によりクロスバーユニット２１０及びＩ／Ｏユニット２０５を通してシステムメモリ１０４（図示せず）へ反映されて戻される。
【００２１】
[0026]動作中に、ＣＰＵ１０２がコンピュータシステム１００のマスタープロセッサとなり、他のシステムコンポーネントのオペレーションを制御し整合させる。特に、ＣＰＵ１０２は、ＰＰＵ２０２のオペレーションを制御するコマンドを発生する。ある実施形態では、ＣＰＵ１０２は、各ＰＰＵ２０２のためのコマンドのストリームをコマンドバッファ（図１又は図２のいずれにも明確に示されていない）へ書き込み、このバッファは、システムメモリ１０４、パラレル処理メモリ２０４、或いはＣＰＵ１０２及びＰＰＵ２０２の両方にアクセス可能な別の記憶位置に配置される。ＰＰＵ２０２は、コマンドバッファからコマンドストリームを読み取り、次いで、ＣＰＵ１０２のオペレーションに対して非同期でコマンドを実行する。また、ＣＰＵ１０２は、コマンドバッファのコマンドに応答してＰＰＵ２０２が読み取ることのできるデータバッファを生成することもできる。各コマンド及びデータバッファは、各ＰＰＵ２０２によって読み取ることができる。
【００２２】
[0027]図２に戻ると、各ＰＰＵ２０２は、メモリブリッジ１０５へ接続される（或いは１つの別の実施形態では、ＣＰＵ１０２へ直結される）通信経路１１３を経てコンピュータシステム１００の残部と通信するＩ／Ｏ（入力／出力）ユニット２０５を備えている。コンピュータシステム１００の残部へのＰＰＵ２０２の接続を変更することもできる。ある実施形態では、パラレル処理サブシステム１１２は、コンピュータシステム１００の拡張スロットへ挿入できるアドインカードとして具現化される。他の実施形態では、ＰＰＵ２０２は、メモリブリッジ１０５又はＩ／Ｏブリッジ１０７のようなバスブリッジと共に単一チップ上に集積化することができる。更に別の実施形態では、ＰＰＵ２０２の幾つかの又は全ての要素をＣＰＵ１０２と共に単一チップ上に集積化することができる。
【００２３】
[0028]一実施形態では、通信経路１１３は、この技術で知られたように各ＰＰＵ２０２に専用レーンが割り当てられたＰＣＩ−Ｅリンクである。他の通信経路を使用することもできる。Ｉ／Ｏユニット２０５は、通信経路１１３を経て送出するためのパケット（又は他の信号）を発生すると共に、通信経路１１３から全ての到来パケット（又は他の信号）を受信して、それら到来パケットをＰＰＵ２０２の適当なコンポーネントに向ける。例えば、処理タスクに関連したコマンドは、ホストインターフェイス２０６に向けることができる一方、メモリオペレーション（例えば、パラレル処理メモリ２０４からの読み取り又はそこへの書き込み）に関連したコマンドは、メモリクロスバーユニット２１０に向けることができる。ホストインターフェイス２０６は、各コマンドバッファを読み取り、また、コマンドバッファにより指定されたワークをフロントエンド２１２へ出力する。
【００２４】
[0029]各ＰＰＵ２０２は、高度なパラレル処理アーキテクチャーを具現化するのが好都合である。詳細に示されたように、ＰＰＵ２０２（０）は、多数Ｃの一般的処理クラスター（ＧＰＣ）２０８を含む処理クラスターアレイ２３０を備え、但し、Ｃ≧１である。各ＧＰＣ２０８は、多数（例えば、数百又は数千）のスレッドを同時に実行することができ、ここで、各スレッドは、プログラムのインスタンスである。種々のアプリケーションにおいて、異なる形式のプログラムを処理するか又は異なる形式の計算を遂行するために異なるＧＰＣ２０８が割り当てられる。例えば、グラフィックアプリケーションでは、テセレーションオペレーションを遂行してパッチに対するプリミティブトポロジーを発生するためにＧＰＣ２０８の第１セットを割り当てることができ、また、テセレーションシェーディングを遂行してプリミティブトポロジーに対してパッチパラメータを評価すると共に、頂点位置及び他の頂点ごとの属性を決定するためにＧＰＣ２０８の第２セットを割り当てることができる。ＧＰＣ２０８の割り当ては、各形式のプログラム又は計算に対して生じるワークロードに基づいて変更し得る。或いはまた、ＧＰＣ２０８は、異なる処理タスク間を切り換えるためにタイムスライススキムを使用して処理タスクを遂行するように割り当てられてもよい。
【００２５】
[0030]ＧＰＣ２０８は、フロントエンドユニット２１２から処理タスクを定義するコマンドを受け取るワーク分配ユニット２００を経て実行されるべき処理タスクを受け取る。処理タスクは、処理されるべきデータ、例えば、表面（パッチ）データ、プリミティブデータ、頂点データ、及び／又はピクセルデータ、並びにどのようにデータを処理すべきか（例えば、どんなプログラムを実行すべきか）を定義する状態パラメータ及びコマンドのポインタを含む。ワーク分配ユニット２００は、処理タスクに対応するポインタをフェッチするように構成されてもよいし、又はフロントエンド２１２からポインタを受け取ってもよいし、或いはフロントエンド２１２からデータを直接受け取ってもよい。ある実施形態では、インデックスがアレイ内のデータの位置を指定する。フロントエンド２１２は、コマンドバッファによって指定された処理が開始される前にＧＰＣ２０８が有効な状態へと構成されることを保証する。
【００２６】
[0031]ＰＰＵ２０２が、例えば、グラフィック処理に使用されるときには、各パッチに対する処理ワークロードが、ほぼ等しいサイズのタスクへ分割され、テセレーション処理を複数のＧＰＣ２０８へ分配できるようにする。ワーク分配ユニット２００は、タスクを処理のために複数のＧＰＣ２０８に与えることのできる頻度でタスクを出力するように構成することができる。本発明のある実施形態では、ＧＰＣ２０８の各部分は、異なる形式の処理を遂行するように構成される。例えば、第１部分は、頂点シェーディング及びトポロジー発生を遂行するように構成され、第２部分は、テセレーション及び幾何学的シェーディングを遂行するように構成され、更に、第３部分は、スクリーンスペースにおいてピクセルシェーディングを遂行して、レンダリングされた像を形成するように構成することができる。異なる形式の処理タスクを効率的に遂行するようにＧＰＣ２０８の各部分を割り当てする能力は、これら異なる形式の処理タスクにより生じるデータの膨張及び収縮を受け容れる。下流のＧＰＣ２０８によりデータが受け容れられる速度が、上流のＧＰＣ２０８によりデータが発生される速度より遅い場合には、ＧＰＣ２０８によって発生される中間データは、その中間データを最小のストール状態でＧＰＣ２０８間に送出できるように、バッファすることができる。
【００２７】
[0032]メモリインターフェイス２１４は、パラレル処理メモリ２０４の一部分に各々結合された多数Ｄのメモリパーティションユニットへ区画化することができ、但し、Ｄ≧１である。パラレル処理メモリ２０４の各部分は、一般的に、１つ以上のメモリデバイス（例えば、ＤＲＡＭ２２０）を含む。当業者であれば、ＤＲＡＭ２２０は、他の適当な記憶装置と置き換えることができ、一般的に従来設計のものでよいことが明らかであろう。それ故、詳細な説明は省略する。一実施形態では、ＤＲＡＭ２２０は、完全に省略されてもよく、メモリ要求は、クロスバー２１０及びＩ／Ｏユニット２０５を経てメモリブリッジ１０５へ反映されて戻される。フレームバッファ又はテクスチャマップのようなレンダーターゲットは、ＤＲＡＭ２２０にわたって記憶され、パーティションユニット２１５が各レンダーターゲットの部分をパラレルに書き込み、パラレル処理メモリ２０４の使用可能な帯域巾を効率的に使用できるようにする。
【００２８】
[0033]ＧＰＣ２０８のいずれの１つも、パラレル処理メモリ２０４内の任意のパーティションユニット２１５に書き込まれるべきデータを処理することができる。クロスバーユニット２１０は、各ＧＰＣ２０８の出力を任意のパーティションユニット２１４の入力へ又は別のＧＰＣ２０８へ更なる処理のためにルーティングするように構成される。ＧＰＣ２０８は、クロスバーユニット２１０を通してメモリインターフェイス２１４と通信し、種々の外部メモリ装置から読み取ったり又はそこへ書き込んだりする。一実施形態では、クロスバーユニット２１０は、Ｉ／Ｏユニット２０５と通信するためにメモリインターフェイス２１４への接続を有すると共に、ローカルのパラレル処理メモリ２０４への接続を有し、これにより、異なるＧＰＣ２０８内の処理コアが、システムメモリ１０４と通信するか、又はＰＰＵ２０２に対してローカルでない他のメモリと通信できるようにする。クロスバーユニット２１０は、バーチャルチャンネルを使用して、ＧＰＣ２０８とパーティションユニット２１５との間でトラフィックストリームを分離することができる。
【００２９】
[0034]この場合も、ＧＰＣ２０８は、これに限定されないが、直線的及び非直線的データ変換、ビデオ及び／又はオーディオデータのフィルタリング、モデリングオペレーション（例えば、物理の法則を適用して対象物の位置、速度及び他の属性を決定すること）、像レンダリングオペレーション（例えば、テセレーションシェーダー、頂点シェーダー、幾何学的シェーダー及び／又はピクセルシェーダープログラム）、等を含む種々様々なアプリケーションに関する処理タスクを実行するようにプログラムすることができる。ＰＰＵ２０２は、システムメモリ１０４及び／又はローカルパラレル処理メモリ２０４からのデータを内部（オンチップ）メモリへ転送し、そのデータを処理し、そしてそれにより得られるデータをシステムメモリ１０４及び／又はローカルパラレル処理メモリ２０４へ書き戻すことができ、このようなデータは、ＣＰＵ１０２又は別のパラレル処理サブシステム１１２を含む他のシステムコンポーネントによってアクセスすることができる。
【００３０】
[0035]ＰＰＵ２０２には、ローカルメモリを含まない任意の量のローカルパラレル処理メモリ２０４を設けることができ、また、ローカルメモリ及びシステムメモリを任意の組み合わせで使用することもできる。例えば、ＰＰＵ２０２は、統合型メモリアーキテクチャー（ＵＭＡ）実施形態では、グラフィックプロセッサである。このような実施形態では、専用グラフィック（パラレル処理）メモリがほとんど又は全く設けられず、ＰＰＵ２０２は、システムメモリを排他的又はほぼ排他的に使用する。ＵＭＡ実施形態では、ＰＰＵ２０２は、ブリッジチップ又はプロセッサチップに一体化されてもよいし、或いはブリッジチップ又は他の通信手段を経てシステムメモリへＰＰＵ２０２を接続する高速リンク（例えば、ＰＣＩ−Ｅ）をもつ個別のチップとして設けられてもよい。
【００３１】
[0036]上述したように、パラレル処理サブシステム１１２には、いかなる数のＰＰＵ２０２を含ませることもできる。例えば、複数のＰＰＵ２０２を単一のアドインカード上に設けることもできるし、又は複数のアドインカードを通信経路１１３に接続することもできるし、或いは１つ以上のＰＰＵ２０２をブリッジチップに一体化することもできる。マルチＰＰＵシステムにおけるＰＰＵ２０２は、互いに同じものでも異なるものでもよい。例えば、異なるＰＰＵ２０２は、異なる数の処理コア、異なる量のローカルパラレル処理メモリ、等を有してもよい。複数のＰＰＵ２０２が存在する場合には、それらＰＰＵは、単一のＰＰＵ２０２で可能であるよりも高いスループットでデータを処理するためにパラレルに動作させることができる。１つ以上のＰＰＵ２０２を組み込んだシステムは、デスクトップ、ラップトップ、又はハンドヘルドパーソナルコンピュータ、サーバー、ワークステーション、ゲームコンソール、埋め込み型システム、等々を含む種々のコンフィギュレーション及びフォームファクタで具現化することができる。
【００３２】
処理クラスターアレイの概略
[0037]図３Ａは、本発明の一実施形態による図２の１つのＰＰＵ２０２内のＧＰＣ２０８のブロック図である。各ＧＰＣ２０８は、多数のスレッドをパラレルに実行するように構成することができ、ここで、「スレッド」という語は、入力データの特定のセットに対して実行される特定のプログラムのインスタンスを指す。ある実施形態では、複数の独立したインストラクションユニットを設けずに、多数のスレッドのパラレル実行をサポートするために、単一インストラクション多データ（ＳＩＭＤ）のインストラクション発行技術が使用される。他の実施形態では、各１つのＧＰＣ２０８内の処理エンジンのセットへインストラクションを発行するように構成された共通のインストラクションユニットを使用して、多数の一般的に同期されるスレッドのパラレル実行をサポートするために、単一インストラクション多スレッド（ＳＩＭＴ）技術が使用される。全処理エンジンが典型的に同じインストラクションを実行するＳＩＭＤ実行形態とは異なり、ＳＩＭＴ実行は、異なるスレッドが、所与のスレッドプログラムを通じて、発散する実行経路を容易にたどることができるようにする。当業者であれば、ＳＩＭＤ処理形態は、ＳＩＭＴ処理形態の機能的サブセットを表すことが理解されよう。
【００３３】
[0038]グラフィックアプリケーションでは、ＧＰＣ２０８は、これに限定されないが、プリミティブ設定、ラスタ化及びｚカリングを含むスクリーンスペースグラフィック処理ファンクションを遂行するためのプリミティブエンジンを具現化するように構成されてもよい。プリミティブエンジンは、ワーク分配ユニット２００から処理タスクを受け取り、そして処理タスクは、それがプリミティブエンジンにより遂行されるオペレーションを必要としないときに、プリミティブエンジンを経てパイプラインマネージャー３０５へ通される。ＧＰＣ２０８のオペレーションは、処理タスクをストリーミングマルチプロセッサ（ＳＰＭ）３１０へ分配するパイプラインマネージャー３０５を経て制御されるのが好都合である。また、パイプラインマネージャー３０５は、ＳＰＭ３１０により出力される処理データの行先を指定することにより、ワーク分配クロスバー３３０を制御するように構成することもできる。
【００３４】
[0039]一実施形態では、各ＧＰＣ２０８は、多数ＭのＳＰＭ３１０を含み、但し、Ｍ≧１であり、また、各ＳＰＭ３１０は、１つ以上のスレッドグループを処理するように構成される。また、各ＳＰＭ３１０は、この技術で知られたように、手前のインストラクションが終了する前に新たなインストラクションを発行できるように、パイプライン化できる機能的ユニット（例えば、演算論理ユニット、等々）の同一セットを含むのが好都合である。機能的ユニットの任意の組み合わせを設けることができる。一実施形態では、機能的ユニットは、整数及び浮動小数点演算（例えば、加算及び乗算）、比較演算、ブール演算（ＡＮＤ、ＯＲ、ＸＯＲ）、ビットシフト、及び種々の代数関数（例えば、平面補間、三角関数、指数関数、対数関数、等）の計算を含む様々なオペレーションをサポートし、そして同じ機能的ユニットハードウェアをレバレッジして、異なるオペレーションを遂行することができる。
【００３５】
[0040]特定のＧＰＣ２０８へ送出される一連のインストラクションは、前記で定義したスレッドを構成し、ＳＰＭ３１０内のパラレル処理エンジン（図示せず）にわたるある個数の同時実行スレッドの集合がここで「ワープ」又は「スレッドグループ」と称される。ここで使用する「スレッドグループ」は、異なる入力データに対して同じプログラムを同時に実行するスレッドのグループを指し、グループの各スレッドがＳＰＭ３１０内の異なる処理エンジンに指定される。スレッドグループは、ＳＰＭ３１０内の処理エンジンの個数より少ないスレッドを含んでもよく、この場合に、幾つかの処理エンジンは、そのスレッドグループが処理されるときのサイクル中にアイドル状態となる。また、スレッドグループは、ＳＰＭ３１０内の処理エンジンの個数より多いスレッドを含んでもよく、この場合に、複数のクロックサイクルにわたって処理が行われる。各ＳＰＭ３１０がＧ個までのスレッドグループを同時にサポートできるので、いかなる所与の時間にもＧＰＣ２０８ではＧｘＭ個までのスレッドグループを実行できることになる。
【００３６】
[0041]更に、ＳＰＭ３１０内で複数の関連スレッドグループが同時にアクティブなことがある（異なる実行フェーズにおいて）。スレッドグループのこの集合は、ここでは、「協働スレッドアレイ」（ＣＴＡ）と称される。特定のＣＴＡのサイズは、ｍ＊ｋに等しく、但し、ｋは、スレッドグループ内の同時実行スレッドの数で、典型的に、ＳＰＭ３１０内のパラレル処理エンジンの数の整数倍であり、また、ｍは、ＳＰＭ３１０内の同時にアクティブなスレッドグループの数である。ＣＴＡのサイズは、一般的に、プログラマーと、ＣＴＡに使用可能なメモリ又はレジスタのようなハードウェアリソースの量とで決定される。
【００３７】
[0042]各スレッドには排他的ローカルアドレススペースが利用でき、共有のパー・ＣＴＡアドレススペースを使用してＣＴＡ内のスレッド間にデータを通すことができる。パー・スレッドのローカルアドレススペース及びパー・ＣＴＡアドレススペースに記憶されたデータは、Ｌ１キャッシュ３２０に記憶され、そして立ち退きポリシーを使用して、Ｌ１キャッシュ３２０にデータを好意的に保持することができる。
各ＳＰＭ３１０は、ロード及び記憶オペレーションを遂行するのに使用される対応Ｌ１キャッシュ３２０内のスペースを使用する。また、各ＳＰＭ３１０は、全てのＧＰＣ２０８間に共有されてスレッド間のデータ転送に使用できるパーティションユニット２１５内のＬ２キャッシュにもアクセスする。最終的に、ＳＰＭ３１０は、例えば、パラレル処理メモリ２０４及び／又はシステムメモリ１０４を含むことのできるオフチップ「グローバル」メモリにもアクセスする。グローバルメモリへ書き込まれ及びそこから読み取られるデータを記憶するのに、Ｌ２キャッシュを使用することができる。ＰＰＵ２０２の外部のメモリをグローバルメモリとして使用できることを理解されたい。
【００３８】
[0043]グラフィックアプリケーションでは、ＧＰＣ２０８は、例えば、テクスチャサンプル位置を決定し、テクスチャデータを読み取り、テクスチャデータをフィルタリングするようなテクスチャマッピングオペレーションを遂行するために各ＳＰＭ３１０がテクスチャユニット３１５に結合されるように構成できる。テクスチャデータは、メモリインターフェイス２１４を経て読み取られ、Ｌ２キャッシュ、パラレル処理メモリ２０４、又はシステムメモリ１０４から必要に応じてフェッチされる。テクスチャユニット３１５は、テクスチャデータを内部キャッシュに記憶するように構成できる。ある実施形態では、テクスチャユニット３１５がＬ１キャッシュ３２０に結合され、テクスチャデータがＬ１キャッシュ３２０に記憶される。各ＳＰＭ３１０は、処理されたタスクをワーク分配クロスバー３３０へ出力し、処理されたタスクを更なる処理のために別のＧＰＣ２０８に与えるか、又は処理されたタスクを、クロスバーユニット２１０を経てＬ２キャッシュ、パラレル処理メモリ２０４又はシステムメモリ１０４に記憶する。プレＲＯＰ（プレ・ラスタオペレーション）３２５は、ＳＰＭ３１０からデータを受け取り、パーティションユニット２１５内のＲＯＰユニットへデータを向け、カラー混合のための最適化を遂行し、ピクセルカラーデータを編成し、そしてアドレス変換を遂行するように構成される。
【００３９】
[0044]ここに述べるコアアーキテクチャーは、例示に過ぎず、変更や修正が可能であることが明らかである。いかなる数の処理エンジン、例えば、プリミティブエンジン３０４、ＳＰＭ３１０、テクスチャユニット３１５又はプレＲＯＰ３２５がＧＰＣ２０８内に含まれてもよい。更に、１つのＧＰＣ２０８しか示されていないが、ＰＰＵ２０２は、いかなる数のＧＰＣ２０８を含んでもよく、これらＧＰＣは、どのＧＰＣ２０８が特定の処理タスクを受け取るかに実行振舞いが依存しないように、互いに機能的に同様であるのが好都合である。更に、各ＧＰＣ２０８は、別々の個別の処理エンジン、Ｌ１キャッシュ３２０、等を使用して、他のＧＰＣ２０８とは独立して動作するのが好都合である。
【００４０】
[0045]図３Ｂは、本発明の一実施形態による図２の１つのＰＰＵ２０２内のパーティションユニット２１５のブロック図である。図示されたように、パーティションユニット２１５は、Ｌ２キャッシュ３５０、フレームバッファ（ＦＢ）３５５、及びラスタオペレーションユニット（ＲＯＰ）３６０を備えている。Ｌ２キャッシュ３５０は、クロスバーユニット２１０及びＲＯＰ３６０から受け取られるロード及び記憶オペレーションを遂行するように構成された読み取り／書き込みキャッシュである。読み取りミス及び緊急書き戻し要求がＬ２キャッシュ３５０によりＦＢ３５５へ処理のために出力される。ＦＢ３５５は、パラレル処理メモリ２０４と直接インターフェイスし、読み取り及び書き込み要求を出力すると共に、パラレル処理メモリ２０４から読み取られたデータを受け取る。
【００４１】
[0046]グラフィックアプリケーションでは、ＲＯＰ３６０は、ステンシル、ｚテスト、ブレンド、等のラスタオペレーションを遂行し、そしてピクセルデータを処理済みグラフィックデータとして出力してグラフィックメモリに記憶する処理ユニットである。本発明のある実施形態では、ＲＯＰ３６０は、パーティションユニット２１５ではなく、各ＧＰＣ２０８内に含まれ、そしてピクセル断片データではなく、ピクセル読み取り及び書き込み要求が、クロスバーユニット２１０を経て送出される。
【００４２】
[0047]処理済みのグラフィックデータは、ディスプレイ装置１１０に表示されるか、或いはＣＰＵ１０２、又はパラレル処理サブシステム１１２内の１つの処理エンティティにより更に処理するためにルーティングされる。各パーティションユニット２１５は、ラスタオペレーションの処理を分配するためにＲＯＰ３６０を備えている。ある実施形態では、ＲＯＰ３６０は、メモリに書き込まれるｚ又はカラーデータを圧縮し、そしてメモリから読み取られるｚ又はカラーデータを解凍するように構成される。
【００４３】
[0048]当業者であれば、図１、２、３Ａ及び３Ｂについて述べたアーキテクチャーは、本発明の範囲を何ら限定するものではなく、また、ここに教示される技術は、これに限定されないが、１つ以上のＣＰＵ、１つ以上のマルチコアＣＰＵ、１つ以上のＰＰＵ２０２、１つ以上のＧＰＣ２０８、１つ以上のグラフィック又は特殊目的の処理ユニット、等を含む適切に構成された処理ユニットにおいて、本発明の範囲から逸脱せずに、具現化できることが理解されよう。
【００４４】
デッドロックの回避
[0049]通信経路１１３がＰＣＩｅバスであるとき、ＰＣＩｅバスにおける保留中の書き込み要求は、システムメモリ１０４から返送される読み取り完了がＰＰサブシステム２０２に到着するのを妨げる。保留中の書き込み要求を取り扱いできる前にＰＰサブシステム２０２により読み取り完了が要求されるときに、デッドロックが発生する。本発明の実施形態は、書き込み要求を送出するのに使用されるバーチャルチャンネル（ＶＣ）とは個別のＰＣＩｅのＶＣを通して読み取り完了をルーティングする技術を提供する。従って、読み取り完了がＰＰサブシステム２０２に到着することが妨げられず、デッドロックが回避される。
【００４５】
[0050]図４は、本発明の一実施形態によりデッドロックを回避するよう構成されたコンピュータシステム４００のブロック図である。図示されたように、コンピュータシステム４００は、メモリブリッジ１０５と一体化されたＣＰＵ１０２と、システムメモリ１０４と、周辺コンポーネントインターフェイスエクスプレス（ＰＣＩｅ）バス４０１と、ＰＰサブシステム２０２とを備えている。ＣＰＵ１０２は、メモリブリッジ１０５を経てシステムメモリ１０４に結合される。また、ＣＰＵ１０２は、メモリブリッジ１０５及びＰＣＩｅバス４０１を経てＰＰサブシステム２０２へも結合される。ＣＰＵ１０２は、メモリブリッジ１０５及びＰＣＩｅバス４０１を経てＰＰサブシステム２０２内のメモリユニットにアクセスすることができる。同様に、ＰＰサブシステム２０２は、ＰＣＩｅバス４０１及びメモリブリッジ１０５を経てシステムメモリ１０４にアクセスすることができる。
【００４６】
[0051]ＣＰＵ１０２は、コンピュータシステム４００の主プロセッサであり、読み取り要求及び書き込み要求を含む要求を、メモリブリッジ１０５を経てシステムメモリ１０４へ発行するように構成されている。また、ＣＰＵ１０２は、メモリブリッジ１０５及びＰＣＩｅバス４０１を横切ってＰＰサブシステム２０２へも要求を発行する。
【００４７】
[0052]ＰＰサブシステム２０２は、ＣＰＵ１０２に対して異なる処理オペレーションを遂行するように構成されたコプロセッサである。これらの処理オペレーションは、データ圧縮及び解凍を含む。ＰＰサブシステム２０２は、ＰＣＩｅインターフェイス４０２を備え、これは、ＣＰＵ１０２からＰＣＩｅバス４０１を横切って要求を受け取り、そしてその要求を処理のためにＰＰサブシステム２０２の異なるコンポーネントへルーティングするように構成される。また、ＰＣＩｅインターフェイス４０２は、ＰＣＩｅバス４０１を横切ってＣＰＵ１０２又はシステムメモリ１０４へも要求を送出する。ＰＣＩｅインターフェイス４０２は、ＰＣＩｅバス４０１の異なるバーチャルチャンネル（ＶＣ）を横切ってデータをルーティングする。これらのバーチャルチャンネルは、ＶＣ０及びＶＣ１（図示せず）を含む。
【００４８】
[0053]ＰＰサブシステムは、更に、ホスト４０４と、クライアント４０６Ａ−４０６Ｎと、Ｉ／Ｏユニット２０５と、ｘ−バーユニット２１０と、Ｌ２キャッシュ３５０と、ＰＰメモリ２０４とを備えている。Ｉ／Ｏユニット２０５は、ＰＰサブシステムがメモリアクセスオペレーションを遂行できるようにし、メモリマネージメントユニット（ＭＭＵ）アービター４０８と、ＭＭＵ４１０と、変換ルックアサイドバッファ（ＴＬＢ）４１２と、１つ以上のイテレータ４１４とを備えている。
【００４９】
[0054]ホスト４０４は、ＣＰＵ１０２がＩ／Ｏユニット２０５にアクセスできるようにするエンジンである。ホスト４０４は、Ｉ／Ｏユニット２０５内のＭＭＵアービター４０８に結合される。ホスト４０４は、ＣＰＵ１０２から要求を受け取り、それらの要求を、ＭＭＵアービター４０８を経てＭＭＵ４１０へ送出する。また、クライアント４０６Ａ−４０６Ｎも、ＭＭＵアービター４０８に結合される。クライアント４０６Ａ−４０６Ｎは、メモリマネージメント、グラフィックディスプレイ、インストラクションフェッチ、暗号化、テクスチャ処理、及びビデオデコーディングを含む異なるファンクションを遂行するエンジンである。クライアント４０６Ａ−４０６Ｎは、Ｉ／Ｏユニット２０５へ要求を発行するように構成される。
【００５０】
[0055]ＭＭＵアービター４０８は、ホスト４０４と各クライアント４０６Ａ−４０６Ｎとの間を仲裁し、これらのエンジンがＭＭＵ４１０にアクセスできるようにする。ＭＭＵアービター４０８は、ホスト４０４及びクライアント４０６Ａ−４０６Ｎから受け取った要求に関連したエンジンＩＤであって、それら要求がＣＰＵ１０２から発せられたものであるかどうか指示するエンジンＩＤを検査する。要求がＣＰＵ１０２から発せられたものであることをエンジンＩＤが指示するときには、要求内の「特殊(special)」ビットを１に等しくすることで、要求が「特殊」とマークされる。この要求は、次いで、ＭＭＵ４１０へルーティングされる。
【００５１】
[0056]ＭＭＵ４１０は、ホスト４０４及びクライアント４０６Ａ−４０６Ｎに対してバーチャル／物理的アドレス変換を行う。ホスト４０４及び／又はクライアント４０６Ａ−４０６ＮがＭＭＵアービター４０８を経てＭＭＵ４１０へ要求を送出するときに、ＭＭＵ４１０は、要求において指定されたバーチャルアドレスを物理的アドレスへと変換する。バーチャル／物理的アドレス変換は、ＴＬＢ４１２を使用して加速される。ＴＬＢ４１２は、最近アドレスされたバーチャル／物理的アドレスマッピングを記憶している。受け取られたバーチャルアドレスがＴＬＢ４１２内に含まれる場合には、そのバーチャルアドレスに関連した物理的アドレスをＴＬＢ４１２から迅速に検索することができる。ＴＬＢ４１２が、要求されたバーチャル／物理的マッピングを記憶していない場合には、ＭＭＵ４１０は、要求されたバーチャル／物理的アドレスマッピングを含むページテーブルを検索するための読み取り要求を発行する。
【００５２】
[0057]別の要求の直接的な結果として発行される読み取り要求は、以後、「デリバティブ(derivative)読み取り要求」と称される。デリバティブ読み取り要求を生じさせる最初の要求が特殊とマークされる場合には、ＭＭＵ４１０がそのデリバティブ読み取り要求を特殊とマークする。ＭＭＵ４１０は、デリバティブ読み取り要求をＰＣＩｅインターフェイス４０２へ送出する。ＰＣＩｅインターフェイス４０２は、デリバティブ要求が特殊とマークされないときにはＶＣ０を経てデリバティブ読み取り要求をルーティングし、また、デリバティブ読み取り要求が特殊とマークされるときにはＶＣ１を経てデリバティブ読み取り要求をルーティングする。特殊とマークされない要求から返送される読み取り完了は、ＶＣ０を経て返送されるが、特殊とマークされた要求から返送される読み取り完了は、ＶＣ１を経て返送される。システムメモリ１０４が、要求されたデータに関連した読み取り完了を受け取ると、最初の要求の処理が続けられる。
【００５３】
[0058]ＭＭＵ４１０は、要求及び物理的アドレスをイテレータ４１４の１つへ送出する。イテレータ４１４は、物理的アドレスをｘバーの生のアドレスへと変換し、そして要求及びｘバーの生のアドレスをｘバーユニット２１０へ送出する。ｘバーユニット２１０は、要求をＬ２キャッシュ３５０へルーティングする。
【００５４】
[0059]Ｌ２キャッシュ３５０は、Ｉ／Ｏユニット２０５によって要求され得るデータを記憶する低待ち時間のメモリユニットである。Ｌ２キャッシュ３５０は、システムメモリ１０４から受け取ったデータ又はＬ２ラッチ３５０に記憶されたデータをＰＰサブシステム２０２が圧縮及び解凍できるようにする圧縮及び解凍ユニット（図示せず）を備えている。また、Ｌ２キャッシュ３５０は、Ｌ２キャッシュ３５０の最近アクセスされたキャッシュラインの圧縮状態を示すタグを含むタグ記憶装置（図示せず）を備えている。
【００５５】
[0060]Ｌ２キャッシュ３５０は、Ｌ２キャッシュ３５０の特定キャッシュラインをターゲットとする書き込み要求を受け取ると、タグ記憶装置を使用して、そのターゲットとするキャッシュラインが圧縮されるかどうか決定する。要求によって指示されたキャッシュラインの圧縮状態をタグ記憶装置が含まないときには、Ｌ２キャッシュ３５０は、システムメモリ１０４内のバッキング記憶装置（図示せず）にアクセスするためにデリバティブ読み取り要求を発生する。Ｌ２キャッシュ２５０は、そのデリバティブ読み取り要求を、ｘバーユニット２１０を経てＰＣＩｅインターフェイス４０２へ送出する。このＰＣＩｅインターフェイス４０２は、デリバティブ読み取り要求が特殊とマークされたかどうか決定し、それに応じて、デリバティブ読み取り要求を、ＰＣＩｅバス４０１を経てルーティングする。システムメモリ１０４がデリバティブ読み取り要求に関連した読み取り完了を返送すると、この読み取り完了は、デリバティブ読み取り要求が特殊とマークされたときにＶＣ１を経て送出され、従って、書き込み要求がＰＣＩｅバス４０１に既にあるときのデッドロック状態を回避する。
【００５６】
[0061]ターゲットとするキャッシュラインが圧縮されたことをバッキング記憶装置が指示する場合に、Ｌ２キャッシュ３５０は、ターゲットとするキャッシュラインを解凍し、その解凍したデータを、書き込み要求に含まれたデータと合体し、その解凍及び合体されたデータをＬ２キャッシュ３５０のキャッシュラインへ書き戻す。また、Ｌ２キャッシュ３５０は、最近アクセスされたキャッシュラインの圧縮状態を含むようにタグ記憶装置を更新することもできる。一実施形態では、合体されたデータが再び圧縮されてもよい。データが解凍されると、解凍フォーマットで記憶される。タグ記憶装置は、タイルが圧縮され、ひいては、解凍を必要とするかどうか、或いは最初の解凍を行わずに直接書き込みできるかどうか指示する。
【００５７】
[0062]また、Ｌ２キャッシュ３５０は、ＣＰＵ１０２がデータを書き込む必要のあるシステムメモリ１０４の圧縮領域又は「圧縮タイル」を指定する書き込み要求を受け取ることもできる。典型的に、圧縮タイルは、ＰＰサブシステム２０２に発生するが、一実施形態では、ＣＰＵ１０２が圧縮タイルを発生する。Ｌ２キャッシュ３５０は、書き込み要求を受け取り、デリバティブ読み取り要求を発生し、システムメモリ１０４にアクセスして、圧縮タイルをシステムメモリ３５０から読み取る。Ｌ２キャッシュ３５０は、ｘバーユニット２１０を経てＰＣＩｅインターフェイス４０２へデリバティブ読み取り要求を送出する。ＰＣＩｅインターフェイス４０２は、デリバティブ読み取り要求が特殊とマークされたかどうか決定し、それに応じて、ＰＣＩｅ４０１を経てデリバティブ読み取り要求をルーティングする。デリバティブ読み取り要求が特殊とマークされた場合には、システムメモリ１０４が、デリバティブ読み取り要求に関連した読み取り完了を、ＶＣ１を経て返送し、従って、書き込み要求がＰＣＩｅバス４０１において保留されているときに発生し得るデッドロック状態を回避する。Ｌ２キャッシュ３５０は、デリバティブ要求から返送される圧縮データを受け取り、その圧縮データを解凍し、その解凍されたデータを書き込みデータと合体し、その合体されたデータを圧縮し、そしてその合体され圧縮されたデータをシステムメモリ１０４へ書き戻す。
【００５８】
[0063]従って、ＣＰＵ１０２によって発行された要求を特殊とマークし、また、それらの要求に応答して発生されたデリバティブ読み取り要求を特殊とマークすることで、デッドロックを回避することができる。というのは、特殊とマークされた要求に関連した読み取り完了が、ＶＣ０ではなく、ＶＣ１を経て送出されるからである。また、それらの要求は、「緩和型(relaxed)順序付け」とマークされてもよいし、或いは順序付けルールに関与せずに読み取り完了を返送できることを指示する標準的（非ＰＣＩｅ）バスプロトコル技術を使用する他の仕方でマークされてもよい。この技術は、デッドロックを生じ得る特定の環境を参照して上述したが、当業者であれば、ＣＰＵ１０２によって発行された要求を特殊とマークし、また、それらの要求に応答して発生されたデリバティブ読み取り要求を特殊とマークすることで、ＰＣＩｅバス４０１に保留中の書き込み要求があるときにデッドロックを回避できることが理解されよう。
【００５９】
[0064]図５は、本発明の一実施形態によりデッドロックを回避するための方法ステップのフローチャートである。当業者であれば、図１から４のシステムに関連して方法５００を説明するが、この方法ステップを任意の順序で遂行するように構成された任意のシステムも本発明の範囲内であることが理解されよう。
【００６０】
[0065]図示されたように、方法５００は、ステップ５０２で始まり、ＭＭＵアービター４０８がホスト４０４又はクライアント４０６Ａ−４０６Ｎの１つから要求を受け取る。この要求は、読み取り要求又は書き込み要求である。更に、この要求は、Ｌ２キャッシュ３５０、ＰＰメモリ２０４又はシステムメモリ１０４をターゲットとするものである。ステップ５０４では、ＭＭＵアービター４０８は、その要求に関連したエンジンＩＤを検査する。エンジンＩＤは、要求の起点を指示する。例えば、要求は、クライアント４０６Ａ−４０６Ｎの１つから送出されたものであるか、或いはＣＰＵ１０２からホスト４０４を経て送出されたものである。ステップ５０６では、ＭＭＵアービター４１０は、ＣＰＵ１０２が要求を送出したかどうか決定する。ＣＰＵ１０２が要求を送出したことをエンジンＩＤが指示する場合には、方法５００は、ステップ５０８へ進む。ステップ５０６において、ＣＰＵ１０２が要求を送出していないことをＭＭＵアービター４１０が決定すると、方法５００は、ステップ５１８へ進む。
【００６１】
[0066]ステップ５０８において、ＭＭＵアービター４０８は、要求を特殊とマークする。ＭＭＵアービター４０８は、要求がＣＰＵ１０２から送出されたことを指示するために要求におけるビットを“１”にセットするように構成される。ステップ５１０において、要求は、デリバティブ読み取り要求を発生させる。要求は、異なる環境のもとでデリバティブ読み取り要求を発生させる。例えば、ＭＭＵ４１０がバーチャル／物理的アドレス変換を遂行できるようにシステムメモリ１０４の読み取りが要求されるときに、ＭＭＵ４１０は、システムメモリ１０４をターゲットとするデリバティブ読み取り要求を発生する。或いはまた、Ｌ２キャッシュ３５０がキャッシュラインの圧縮状態を決定できるようにシステムメモリ１０４の読み取りが要求されるときは、Ｌ２キャッシュ３５０は、システムメモリ１０４をターゲットとするデリバティブ読み取り要求を発生する。最初の要求がデリバティブ読み取り要求を発生させる種々の他のシナリオも考えられる。
【００６２】
[0067]ステップ５１２において、デリバティブ読み取り要求が特殊とマークされる。ＭＭＵ４１０がデリバティブ読み取り要求を発生するときには、ＭＭＵ４１０が、デリバティブ読み取り要求を特殊とマークする。Ｌ２キャッシュ２５０がデリバティブ読み取り要求を発生するときには、Ｌ２キャッシュ３５０がデリバティブ読み取り要求を特殊とマークする。ＰＰサブシステム２０２の別のコンポーネントがデリバティブ読み取り要求を発生するときには、そのコンポーネントがデリバティブ読み取り要求を特殊とマークする。ステップ５１４において、ＰＣＩｅインターフェイス４０２は、要求を受け取って検査する。要求は、デリバティブ読み取り要求でもよいし、或いは異なる要求でもよい。
【００６３】
[0068]ステップ５１６において、ＰＣＩｅインターフェイス４０２は、要求が特殊とマークされるかどうか決定する。要求が特殊とマークされない場合には、方法５００は、ステップ５１８へ進み、ＰＣＩｅインターフェイス４０２は、要求及び要求に関連した読み取り完了を、ＰＣＩｅバス４０１のＶＣ０を横切ってルーティングする。要求が特殊とマークされる場合には、方法５００は、ステップ５２０へ進み、ＰＣＩｅインターフェイス４０２は、要求及び要求に関連した読み取り完了を、ＰＣＩｅバス４０１のＶＣ１を横切ってルーティングする。次いで、この方法は、終了となる。
【００６４】
[0069]要するに、パラレル処理ユニット（ＰＰＵ）は、中央処理ユニット（ＣＰＵ）から受け取った要求を「特殊」とマークし、その要求に応答して発生されるデリバティブ読み取り要求も特殊とマークされ、従って、周辺コンポーネントインターフェイスエクスプレス（ＰＣＩｅ）バスの二次バーチャルチャンネルを経てルーティングされる。ＰＰＵは、特殊とマークされた要求を、周辺コンポーネントインターフェイスエクスプレス（ＰＣＩｅ）バスのバーチャルチャンネル（ＶＣ）１を横切って送出する。特殊とマークされた要求が読み取り完了を発生する場合には、ＰＣＩｅバスのＶＣ１を横切って読み取り完了が返送される。
【００６５】
[0070]特殊とマークされた要求から返送される読み取り完了は、書き込み要求がＶＣ０に既に存在するときにデッドロックを生じることがない。というのは、特殊とマークされた要求に関連した読み取り完了は、異なるバーチャルチャンネルを経て送出されるからである。
【００６６】
[0071]従って、本発明の実施形態は、ＣＰＵ１０２によりＰＰサブシステム２０２へ発行されてデッドロックを生じることになる幾つかの要求（例えば、読み取り及び書き込み要求）を、ファブリックを通して伝播する状態ビットを使用して識別し及びマークすると共に、その要求によって生じるデリバティブトランザクションもその状態ビットでマークするための技術を提供する。他の実施形態では、標準バスインターフェイス定義メカニズム（例えば、「緩和型順序付け」）をデッドロック回避に使用することができる。
【００６７】
[0072]ＰＰサブシステム２０２によりシステムメモリ１０４へ送出される幾つかのトランザクションは、デッドロックを生じることがなく、従って、第２のバーチャルチャンネルを経て搬送されないことに注意されたい。例えば、同期プリミティブとして使用されるか、さもなければ、読み取り完了が書き込み要求をパスしない順序付けルールに依存するトランザクションは、第１のバーチャルチャンネルを経て送出される。例えば、ＰＰメモリ２０４へのＣＰＵ１０２の書き込みが完了したときを検出するためにＰＰサブシステム２０２によってセマフォ取得が発行されたときには、読み取り完了は、それ以前の全てのＣＰＵ開始書き込みトランザクションがコヒレンシー点に到達することを保証する。
【００６８】
[0073]本発明の一実施形態は、コンピュータシステムに使用するためのプログラム製品として具現化することができる。このプログラム製品のプログラム（１つ又は複数）は、（ここに述べる方法を含めて）実施形態のファンクションを定義し、種々のコンピュータ読み取り可能な記憶媒体にこれを含ませることができる。ここに例示するコンピュータ読み取り可能な記憶媒体は、（ｉ）情報が永久的に記憶される書き込み不能の記憶媒体（例えば、コンピュータ内のリードオンリメモリ装置、例えば、ＣＤ−ＲＯＭドライブにより読み取り可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意の形式のソリッドステート不揮発性半導体メモリ）、及び（ii）変更可能な情報が記憶される書き込み可能な記憶媒体（例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意の形式のソリッドステートランダムアクセス半導体メモリ）を含むが、これらに限定されない。
【００６９】
[0074]特定の実施形態を参照して本発明を上述した。しかしながら、当業者であれば、特許請求の範囲に記載された本発明の広い精神及び範囲から逸脱せずに種々の変更や修正がなされ得ることが理解されよう。従って、前記説明及び添付図面は、単なる例示に過ぎず、それに限定されるものではない。
【符号の説明】
【００７０】
１００・・・コンピュータシステム、１０２・・・中央処理ユニット（ＣＰＵ）、１０３・・・装置ドライバ、１０４・・・システムメモリ、１０５・・・メモリブリッジ、１０６・・・通信経路、１０７・・・Ｉ／Ｏブリッジ、１０８・・・ユーザ入力装置、１１０・・・ディスプレイ装置、１１２・・・パラレル処理サブシステム、１１３・・・通信経路、１１６・・・スイッチ、１１８・・・ネットワークアダプタ、１２０、１２１・・・アドインカード、２００・・・ワーク分配ユニット、２０２・・・パラレル処理ユニット（ＰＰＵ）、２０４・・・パラレル処理（ＰＰ）メモリ、２０５・・・Ｉ／Ｏユニット、２０６・・・ホストインターフェイス、２０８・・・一般的処理クラスター（ＧＰＣ）、２１０・・・クロスバーユニット、２１２・・・フロントエンド、２１４・・・メモリインターフェイス、２３０・・・処理クラスターアレイ、３０５・・・パイプラインマネージャー、３１０・・・ＳＰＭ、３１５・・・テクスチャユニット、３２０・・・Ｌ１キャッシュ、３２５・・・カラープレＲＯＰ、３３０・・・ワーク分配クロスバー、３５０・・・Ｌ２キャッシュ、３５５・・・フレームバッファ（ＦＢ）、３６０・・・ラスタオペレーションユニット（ＲＯＰ）、４００・・・コンピュータシステム、４０１・・・ＰＣＩｅバス、４０２・・・ＰＣＩｅインターフェイス、４０４・・・ホスト、４０６Ａ・・・クライアント、４０６Ｎ・・クライアント、４０８・・・ＭＭＵアービター、４１０・・・ＭＭＵ、４１２・・・ＴＬＢ、４１４・・・イテレータ
【図１】
2010140480.tif 000003
【図２】
2010140480.tif 000004
【図３Ａ】
2010140480.tif 000005
【図３Ｂ】
2010140480.tif 000006
【図４】
2010140480.tif 000007
【図５】
2010140480.tif 000008
【外国語明細書】
2010140480000001.pdf