(57)【要約】  複数の実行スレッドにおける多数のデータ・ストリームを処理するための方法及び装置が提供される。データは、複数のデータ・ソース（１００１）から選択される。上述のように選択されたデータについて、データ記憶手段（１０３６）内のアドレスが割り当てられる。次に、選択されたデータは、割り当てられたアドレスにロードされる。これに続いて、選択されたデータ・ソース、データ・アドレス、及び実行アドレスを含む実行タスクが構成され、データ・タスクは、前に構成されたタスクと共にキューに入れられる。各々のタスクに対してどの処理リソースを必要とするかについて判断がなされ、これに基づいて、タスクが実行のために選択される。実行のために選択されたタスクは、複数の処理スレッド（１７０）にわたって分散される。データ記憶手段におけるデータ記憶の割り当ては、データ・ソースの１つからデータを選択し、コード実行アドレスをプログラム可能なデータ・シーケンサ（１００４）に提供するステップを含む。コード実行アドレスからのコードが実行され、データがデータ記憶手段に書き込まれる。さらに、タイル・ベース型コンピュータ・グラフィック・レンダリング・システムは、複数のマルチスレッド型プロセッサ・コアを含む。各々のプロセッサ・コアは、タイルの異なるセクタに割り当てられる。
2009512917.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行スレッドにおいて多数のデータ・ストリームを処理する方法であって、
データ記憶手段内の記憶の可用性に基づいて、複数のデータ・ソースの少なくとも１つからデータを選択し、
そのように選択された前記データについての、前記データ記憶手段内のアドレスを割り当て、
そのように割り当てられた前記データ・アドレスにおいて選択されたデータをロードし、
前記選択されたデータ・ソース、前記データ・アドレス、及び実行アドレスを含む実行タスクを構成し、
前に構成された他のタスクと共に前記タスクをキューに入れ、
各々のタスクについてどの処理リソースが必要とされるかを判断し、
使用可能な前記処理リソースに基づいて、実行のためのタスクを選択し、
複数の処理スレッドにわたって実行のための選択されたタスクを分散させ、
データ依存性のために前記スレッドのいずれかが停止するかどうかを判断し、
前記データ依存性のために停止することはない、アクティブなスレッドのサブセットを繰り返し選択し、
アクティブなスレッドを実行する、
ステップを含むことを特徴とする方法。
【請求項２】
各々のデータ・ソースは、各々が前記データ・ソースのいずれかにおける他のデータと無関係に処理することが可能なデータの量である、複数のデータ・インスタンスを含むことを特徴とする請求項１に記載の方法。
【請求項３】
各々のデータ・ソースは、最小のデータ・インスタンス・カウントを、前記選択するステップに提供することを特徴とする請求項２に記載の方法。
【請求項４】
データ・ソースは、前記最小のデータ・インスタンス・カウントに基づいて選択されることを特徴とする請求項３に記載の方法。
【請求項５】
前記選択するステップは、データ・ソースから複数のデータ・インスタンスを選択し、それらを前記割り当てるステップ及び前記ロードするステップに提供し、タスクを構成することを特徴とする請求項２、請求項３、又は請求項４に記載の方法。
【請求項６】
前記実行のためのタスクを選択するステップは、タスクの実行依存性に基づいてタスクを選択することを特徴とする、前記請求項のいずれかに記載の方法。
【請求項７】
前記実行依存性は、外部依存性及び内部依存性を含むことを特徴とする請求項６に記載の方法。
【請求項８】
実行依存性を有するタスクをブロックするステップを含むことを特徴とする請求項６又は請求項７に記載の方法。
【請求項９】
前記タスクを分散させるステップは、タスクから複数の実行スレッドにデータ・インスタンスを分散させるステップを含むことを特徴とする前記請求項のいずれかに記載の方法。
【請求項１０】
タスクの実行が拒否されるたびに、タスクについての年齢カウンタを増加させるステップを含むことを特徴とする前記請求項のいずれかに記載の方法。
【請求項１１】
前記年齢カウンタが所定値を超えたときにタスクを実行するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
タイル・ベース・レンダリング・システムにおいて用いるための前記請求項のいずれかに記載の方法。
【請求項１３】
前記選択されたデータをロードするステップは、コード実行アドレスをプログラム可能なデータ・シーケンサ（ＰＤＳ）に提供し、前記コード実行アドレスからのコードを実行して、前記データを前記データ記憶手段に書き込ませるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
【請求項１４】
前記コードの前記実行により、データが、前記データ・ソースから前記データ記憶手段に直接書き込まれることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記コードの前記実行により、データが、別のデータ記憶場所からフェッチされ、前記データ記憶手段に書き込まれることを特徴とする、請求項１３又は請求項１４に記載の方法。
【請求項１６】
前記ＰＤＳは、マルチスレッド型処理手段におけるスレッドを含むことを特徴とする請求項１３、請求項１４、又は請求項１５に記載の方法。
【請求項１７】
データ・ソースが選択されるたびに、前記記憶手段内の入力データ記憶を割り当てるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
【請求項１８】
データ・ソースは、同じ出力バッファを共有する複数のデータ・インスタンスを含み、前記同じ出力バッファ要件を共有する前記データ・インスタンスが使い果たされたことを前記データ・ソースが知らせるまで、これらのデータ・インスタンスの第１のものだけにおいて出力データ記憶を割り当てることを特徴とする請求項２に記載の方法。
【請求項１９】
前記方法は、複数の処理コア上で実行され、異なる処理コアを異なるタイルの部分に割り当てるステップを含むことを特徴とする請求項１２に記載の方法。
【請求項２０】
前記複数の処理コアから入手可能なプロセッサ・パイプラインの数に基づいて、前記タイルのサイズを選択するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
頂点データを受け取り、これを使用可能な前記プロセッサ・パイプラインにわたって分散させるステップを含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
ピクセル・データを受け取り、これを使用可能な前記プロセッサ・パイプラインにわたって分散させるステップを含むことを特徴とする請求項２０又は請求項２１に記載の方法。
【請求項２３】
前記コードの実行により、テキスチャ座標又はイテレータ内で反復される他のデータが、前記データ記憶手段に直接書き込まれることを特徴とする請求項１３に記載の方法。
【請求項２４】
前記コードの実行により、テキスチャ・データがサンプリングされ、フィルタにかけられ、前記データ記憶手段に書き込まれることを特徴とする請求項１３に記載の方法。
【請求項２５】
多数のデータ・ストリームを処理するための装置であって、
複数のデータ・ソースと、
データ記憶手段内の記憶の可用性に基づいて、前記複数のデータ・ソースからデータ・ソースを選択するための手段と、
選択されたデータ・ソースについての、前記データ記憶手段内のアドレスを割り当てるための手段と、
前記選択されたデータ・ソースについてのデータを前記記憶手段内の前記アドレスにロードするための手段と、
前記選択されたデータ・ソース、実行アドレス、及び前記データ・アドレスを含む、実行されるタスクを構成するための手段と、
構成されたタスクについてのタスク・キューと、
処理リソースの可用性に基づいて、実行のためのタスクを選択するための手段と、
選択されたタスクを複数の実行スレッドにわたって分散させるための手段と、
データ依存性のためにいずれかのスレッドが停止するかどうかを判断するための手段と、
前記データ依存性のために停止することはない、アクティブなスレッドのサブセットを繰り返し選択するための手段と、
アクティブなスレッドを実行するための手段と、
を備えることを特徴とする装置。
【請求項２６】
各々のデータ・ソースは、各々が前記データ・ソースのいずれかの中の他のデータを参照することなく処理できるデータ量である、複数のデータ・インスタンスを含むことを特徴とする請求項２５に記載の装置。
【請求項２７】
各々のデータ・ソースは、最小のデータ・インスタンス・カウントを、前記選択する手段に提供することを特徴とする請求項２６に記載の装置。
【請求項２８】
前記選択する手段は、前記最小のデータ・インスタンス・カウントに基づいて、データ・ソースを選択することを特徴とする請求項２７に記載の装置。
【請求項２９】
前記選択する手段は、前記データ・ソースから複数のデータ・インスタンスを選択し、前記タスク構成手段によって使用するために、これらを前記割り当てる手段及び前記ロードする手段に提供することを特徴とする、請求項２６、請求項２７、又は請求項２８のいずれかに記載の装置。
【請求項３０】
前記選択する手段は、タスクの実行依存性に基づいて、実行のためのタスクを選択することを特徴とする、請求項２５から請求項２９までのいずれかに記載の装置。
【請求項３１】
前記実行依存性は、外部依存性及び内部依存性を含むことを特徴とする請求項３０に記載の装置。
【請求項３２】
実行依存性を有するタスクをブロックするための手段を含むことを特徴とする、請求項３０又は請求項３１に記載の装置。
【請求項３３】
前記タスクを分散させるための手段は、タスクから複数の実行スレッドにデータ・インスタンスを分散させるための手段を含むことを特徴とする、請求項２５から請求項３２までのいずれかに記載の装置。
【請求項３４】
タスクの実行が拒否されるたびに、タスクについての年齢カウンタを増加させるための手段を含むことを特徴とする、請求項２５から請求項３３までのいずれかに記載の装置。
【請求項３５】
前記実行する手段は、その年齢カウンタが所定値を超えたときにタスクを実行することを特徴とする請求項３４に記載の装置。
【請求項３６】
タイル・ベース・レンダリング・システムで用いるための請求項２５から請求項３５までのいずれかに記載の装置。
【請求項３７】
コード実行アドレスをプログラム可能なデータ・シーケンサ（ＰＤＳ）に提供するための手段と、前記コード実行アドレスからの前記コードを実行して、データを前記データ記憶手段に書き込ませるための手段とを含むことを特徴とする、請求項２５から請求項３６までのいずれかに記載の装置。
【請求項３８】
前記コードを実行するための前記手段により、データが、前記データ・ソースから前記データ記憶手段に直接書き込まれることを特徴とする請求項３７に記載の装置。
【請求項３９】
前記コードを実行するための前記手段により、データが、別のデータ記憶場所からフェッチされ、前記データ記憶手段に書き込まれることを特徴とする請求項３７に記載の装置。
【請求項４０】
前記コードを実行するための前記手段により、テキスチャ座標又は反復ユニット内で反復される他のデータが、前記データ記憶手段に直接書き込まれることを特徴とする請求項３７に記載の装置。
【請求項４１】
前記コードを実行するための前記手段により、テキスチャ・データがサンプリングされ、フィルタにかけられ、テキスチャリング・エンジンにより前記データ記憶手段に書き込まれることを特徴とする請求項３７に記載の装置。
【請求項４２】
前記ＰＤＳは、マルチスレッド型プロセッサにおけるスレッドを含むことを特徴とする請求項３７に記載の装置。
【請求項４３】
データ記憶装置内のアドレスを割り当てるための前記手段は、データ・ソースが選択されるたびにアドレスを割り当てることを特徴とする、請求項２５から請求項４２までのいずれかに記載の装置。
【請求項４４】
データ・ソースは、同じ出力バッファを共有する複数のデータ・インスタンスを含み、データ記憶を割り当てるための前記手段は、前記同じ出力バッファを共有する前記データ・インスタンスが使い果たされたことを前記データ・ソースが知らせるまで、これらのデータ・インスタンスの第１のものだけにおいて出力バッファのデータ記憶を割り当てることを特徴とする請求項３７に記載の装置。
【請求項４５】
各々が異なるタイルの部分に割り当てられた、複数のマルチスレッド型プロセッサ・コアを含むことを特徴とする請求項３６に記載の装置。
【請求項４６】
選択される前記タイルのサイズは、前記複数のプロセッサ・コアから入手可能なプロセッサ・パイプラインの数に依存することを特徴とする請求項４５に記載の装置。
【請求項４７】
プレスケジューラが頂点データを受け取り、これを使用可能なプロセッサ・パイプラインにわたって分散させるための手段を含むことを特徴とする、請求項４５又は請求項４６に記載の装置。
【請求項４８】
プリスケジューラがデータを受け取り、これを使用可能なプロセッサ・パイプラインにわたって分散させることを特徴とする、請求項４５、請求項４６、又は請求項４７のいずれかに記載の装置。
【請求項４９】
マルチスレッド型データ処理システムにおいてデータ記憶を割り当てる方法であって、
データ記憶の可用性に基づいて、複数のデータ・ソースの１つからデータを選択し、コード実行アドレスをプログラム可能なデータ・シーケンサに与え、前記コード実行アドレスからのコードを実行して、データを前記データ記憶手段に書き込ませるステップを含むことを特徴とする方法。
【請求項５０】
前記コードの前記実行により、データが、前記データ・ソースから前記データ記憶手段に直接書き込まれることを特徴とする請求項４９に記載の方法。
【請求項５１】
前記コードの前記実行により、データが、別のデータ記憶場所からフェッチされ、前記データ記憶手段に書き込まれることを特徴とする、請求項４９又は請求項５０に記載の方法。
【請求項５２】
前記プログラム可能なデータ・シーケンサは、マルチスレッド型処理システムにおけるスレッドを含むことを特徴とする、請求項４９、請求項５０、又は請求項５１に記載の方法。
【請求項５３】
データ・ソースが選択されるたびに、前記データ記憶手段内の入力データ記憶が割り当てられることを特徴とする、請求項４９から請求項５２までのいずれかに記載の方法。
【請求項５４】
データ・ソースは、同じ出力バッファ要件を共有する複数のデータ・インスタンスを含み、前記同じ出力バッファ要件を共有する前記データ・インスタンスが使い果たされたことを前記データ・ソースが知らせるまで、これらのデータ・インスタンスの第１のものだけにおいて出力バッファのデータ記憶が前記データ記憶手段内に割り当てられることを特徴とする、請求項４９から請求項５３までに記載の方法。
【請求項５５】
前記コードの前記実行により、テキスチャ座標又は反復ユニット内で反復される他のデータが、前記データ記憶手段に書き込まれることを特徴とする請求項４９に記載の方法。
【請求項５６】
前記コードの前記事項により、テキスチャ・データがサンプリングされ、フィルタにかけられ、前記データ記憶手段に書き込まれることを特徴とする請求項４９に記載の方法。
【請求項５７】
各々がタイルの異なるセクタに割り当てられた、複数のマルチスレッド型プロセッサ・コアを含むことを特徴とする、タイル・ベース型コンピュータ・グラフィックス・レンダリング・システム。
【請求項５８】
選択された前記タイルのサイズは、前記プロセッサ・コアから使用可能なプロセッサ・パイプラインの数に基づいていることを特徴とする請求項５７に記載のシステム。
【請求項５９】
プレスケジューラが頂点データを受け取り、この頂点データを使用可能なプロセッサ・パイプラインにわたって分散させることを特徴とする請求項５８に記載のシステム。
【請求項６０】
プレスケジューラがデータを受け取り、このデータを使用可能なプロセッサ・パイプラインにわたって分散させることを特徴とする、請求項５８又は請求項５９に記載のシステム。
【請求項６１】
複数の実行スレッドにおいて多数のデータ・ストリームを処理する方法であって、
データ記憶手段内の記憶の可用性に基づいて、複数のデータ・ソースの少なくとも１つからデータを選択し、
そのように選択された前記データについての、前記データ記憶手段内のアドレスを割り当て、
そのように割り当てられた前記データ・アドレスにおいて選択されたデータをロードし、
前記選択されたデータ・ソース、前記データ・アドレス、及び実行アドレスを含む実行タスクを構成し、
前に構成された他のタスクと共に前記タスクをキューに入れ、
各々のタスクについてどの処理リソースが必要とされるかを判断し、
使用可能な前記処理リソースに基づいて、実行のためのタスクを選択し、
複数の処理スレッドにわたって実行のための選択されたタスクを分散させる、
ステップを含むことを特徴とする方法。
【請求項６２】
多数のデータ・ストリームを処理するための装置であって、
複数のデータ・ソースと、
データ記憶手段内の記憶の可用性に基づいて、前記複数のデータ・ソースからデータ・ソースを選択するための手段と、
選択されたデータ・ソースについての、前記データ記憶手段内のアドレスを割り当てるための手段と、
前記選択されたデータ・ソースについてのデータを前記記憶手段内の前記アドレスにロードするための手段と、
前記選択されたデータ・ソース、実行アドレス、及び前記データ・アドレスを含む、実行されるタスクを構成するための手段と、
構成されたタスクについてのタスク・キューと、
処理リソースの可用性に基づいて、実行のためのタスクを選択するための手段と、
選択されたタスクを複数の実行スレッドにわたって分散させるための手段と、
データ依存性のためにいずれかのスレッドが停止するかどうかを判断するための手段と、
を備えることを特徴とする装置。
【請求項６３】
マルチスレッド型処理システムにおいてデータ記憶を割り当てるための装置であって、
データ記憶の可用性に基づいて、複数のデータ・ソースの１つからデータを選択するための手段と、
コード実行アドレスをプログラム可能なデータ・シーケンサに提供するための手段と、
前記コード実行アドレスからの前記コードを実行し、データを前記データ記憶装置に書き込ませるための手段と、
を備えることを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ及び３次元のコンピュータ・グラフィックスのようなマルチメディア・データを処理することが可能なシステムに関し、特に、スケーラブルなマルチスレッド環境内でこうしたデータの多数の並列ストリームを処理する方法に関する。
【背景技術】
【０００２】
国際特許出願第ＷＯ９７／３８３７２号（その内容は、引用によりここに組み入れられる）は、マルチスレッド型メディア処理コアを介して多数のリアルタイム・データ・ソースを処理するためのシステムを記載する。処理コアは、多数の実行スレッドの命令を処理する。が実行についてどのスレッドが最も高い優先順位を有するかについての判断がなされ、これに従ってそのスレッドにおける実行が形成される。
【０００３】
「ｃｏｎｔｒｏｌ  ａ  ｐｒｉｏｒｉｔｙ  ｌｅａｄ  ｓｔｒｕｃｔｕｒｅ  ｏｎ  ａ  ｍｕｌｔｉ−ｔｈｒｅａｄｅｄ  ｐｒｏｃｅｓｓｏｒ」という名称の国際特許出願第ＷＯ０２／０６７１６号（その内容は、引用によりここに組み入れられる）は、異なる実行スレッド間で可能なアービトレーション・スキームについてさらに詳述する。この国際特許出願は、命令スレッドの実行速度を制御するための方法装置を提供する。命令を実行する速度が格納され、格納された速度に応答して、要求を出して命令を実行させる。格納された速度は、命令の実行に応答して低減し、実行の命令がないときに増大する。さらに、各スレッドが命令を実行すべき平均速度を格納することによって、命令速度が制御される。まだ出されていない使用可能な命令の数を表す値は、監視され、命令の実行に応答して低減される。また、スレッドに関する複数のメトリックを用いて、格付け順序を複数の命令スレッドに割り当てることもできる。
【０００４】
さらなる開発において、サブセットがアクティブなものとして維持される実行スレッドの上位集合を維持することによって、「拡張インターリーブ型マルチスレッド（Ｅｎｈａｎｃｅｄ  ｉｎｔｅｒｌｅａｖｅｄ  ｍｕｌｔｉ−ｔｈｒｅａｄｉｎｇ）」として知られる技術が機能する。アクティブなスレッドの数は、それらが命令を出している実行ユニットの待ち時間によって決定される。次に、スレッドは、リソースの依存性に基づいて、アクティブなサブセットと上位集合との間でスレッドが交換される、すなわち、アクティブなスレッドがメモリから戻されるデータを待っている場合には、アクティブなスレッドは、進行する準備ができている現在のところ非アクティブなスレッドと交換される。
【発明の開示】
【０００５】
本発明の好ましい実施形態は、スケジューリングにマルチフェーズ式手法を用いることにより、パイプライン処理リソースの待ち時間吸収及び利用を最大にする方法で非リアルタイムのデータ・ソースのバルクを表す多数の入力データ・ストリームを処理するのに、マルチスレッド式処理パイプラインの使用が可能になるシステムを提供する。
このことは、処理パイプライン内のデータ記憶の管理を、同じパイプライン内の処理スレッドの割り当て、及び、実行リソースの競合に基づいた命令のスケジューリングと区別する３フェーズ・スケジューリング・システムを用いて行なわれる。
【０００６】
本発明の第１の態様の実施形態によると、データ記憶手段内の記憶の可用性に基づいて、複数のデータ・ソースの少なくとも１つからデータを選択し、そのように選択されたデータについてデータ記憶手段内のアドレスを割り当て、そのように割り当てられたデータ・アドレスにおいて選択されたデータをロードし、選択されたデータ・ソース、データ・アドレス、及び実行アドレスを含む実行タスクを構成し、前に構成された他のタスクと共にタスクをキューに入れ、各々のタスクについてどの処理リソースが必要とされるかを判断し、使用可能な処理リソースに基づいて実行のためのタスクを選択し、複数の処理スレッドにわたって実行のための選択されたタスクを分散させ、データ依存性のためにスレッドのいずれかが停止するかどうかを判断し、データ依存性に起因して停止しない、アクティブなスレッドのサブセットを繰り返し選択し、アクティブなスレッドを実行するステップを含む、複数の実行スレッドにおける多数のデータ・ストリームを処理する方法が提供される。
【０００７】
一実施形態は、使用可能なリソースに基づいてタスクをスケジューリングするための手段を含むことが好ましい。
一実施形態は、データ・ソース内で長時間ブロックされるのを回避するための手段を含むことが好ましい。
一実施形態は、プログラム可能なデータ・シーケンサを介して、データを統一された記憶領域にロードするための方法を含むことが好ましい。
【０００８】
一実施形態は、データ処理スレッド上にプログラム可能なデータ・シーケンサが設けられるように変更できることが好ましい。
一実施形態は、データが正しい順序で処理されることを保証する方法を提供することが好ましい。
この方法は、タイル・ベースのレンダリング・システムにおいて実現できることが好ましい。
【０００９】
システムを通したテクスチャ座標の反復及びテクスチャ・フェッチのために、プログラム可能なデータ・シーケンサが用いられることが好ましい。
本発明の実施形態は、異なるマルチプロセッサ・コアによってスケーラブルである（ここで、各々のマルチプロセッサ・コアは、タイルの異なるセクタに合致され、取り付けられたパイプラインの数に基づいてタイルのサイズを調整することができ、頂点データは、プリスケジューリング・ブロックを用いてパイプラインにわたって均一に分散され、ベント・プロセッサは、プリスケジューリング・ブロックによって同じくパイプラインにわたって均一に分散される）ことが好ましい。
【００１０】
本発明の更に別の態様の実施形態によると、データ記憶の可用性に基づいて複数のデータ・ソースの１つからデータを選択し、コード実行アドレスをプログラム可能なデータ・シーケンサに提供し、コード実行アドレスからのコードを実行して、データをデータ記憶手段に書き込ませるステップを含む、マルチスレッド式データ処理システムにおいてデータ記憶を割り当てる方法が提供される。
【発明を実施するための最良の形態】
【００１１】
ここで本発明の好ましい実施形態が、添付の図面を参照して例証として詳細に説明される。
図１は、システムを有するスケジューリング・フェーズを示す。第１のフェーズは、１１０において、プロセッサ記憶リソース（Ｐｒｏｃｅｓｓｏｒ  Ｓｔｏｒａｇｅ  Ｒｅｓｏｕｒｃｅ）１４０において使用可能な十分なリソースがあることに基づいて、使用可能なソース１００から入力のデータ・ソースを選択することで開始する。次に、１２０において、プロセッサ記憶リソースの割り当てが行なわれ、記憶装置内のデータ・アドレスがもたらされる。次に、１３０において、このアドレスを用いて、選択されたソースのサービスに必要とされるデータをロードする。次に、１５０において、（これらに限られるものではないが）発信データ・ソースＩＤ、データ・ソース１００によって与えられる実行アドレス、及びデータ・アドレスからなるタスクが構成される。次に、生成されたタスクは、タスク・キュー１６０に挿入される。
【００１２】
第２のスケジューリング・フェーズは、そのパイプライン内の処理リソースの可用性に基づいて、マルチスレッド型処理パイプライン内の１つ又はそれ以上の処理スレッドにわたって分散される第１のフェーズによって生成される、キュー内の各タスクを含む。１６２において、任意の所定のタスクを実行するのに必要とされる処理リソースを用いて、タスク・キュー内のどのタスクを実行することができるか、具体的には、必要とされる処理スレッドの数及びそれらのスレッドを実行するのに必要とされる一時的記憶装置を命令する。次に、１６４において、選択されたタスクは、実行スレッド１７０にわたって分散される。
【００１３】
第３の最後の実行フェーズは、１７５において、例えば、外部メモリの読み込み又は現在有効でないブランチ条件によって戻されたデータなど、現在使用可能でないリソースのために停止を招くことなく、どのスレッドを実行できるかを判断する。このことは、国際特許出願第ＷＯ９７／３８３７２号に記載される簡単なリソースのチェックと、「拡張インターリーブ型マルチスレッド」の技術を組み合わせる方法で行なわれる。このことにより、維持されるアクティブなスレッド１８０の組がもたらされ、その数は「実行」１９０の実行待ち時間に結び付けられる（一般的には、ＡＬＵ）。第３のフェーズはスレッドを実行して終了させ、その時点でスレッド及び任意の割り当てられたメモリ・リソースの両方がシステムに戻されることに留意すべきである。
【００１４】
図２は、高レベルで図１を実施するための提案された処理アーキテクチャを示す。データ・ソース８１０は、ここでは、これらがシステム内の全ての処理の後押しを担当することから、「データ・マスター」と呼ばれる。データ・マスターに結合された粗粒度スケジューラ（Ｃｏａｒｓｅ  Ｇｒａｉｎ  Ｓｃｈｅｄｕｌｅｒ、ＣＧＳ）８２０は、スケジューリング・フェーズ１内で上述された活動を引き受ける。ＣＧＳは、上述のスケジューリング・フェーズ２及び３を実施するマルチスレッド型メディア・プロセッサ（ＭＴＭＰ）８３０にタスクを送る。ＭＴＭＰからデータ処理パイプライン８４０に処理されたデータを「出す（ｅｍｉｔ）」。このシステムは、３フェーズ式スケジューリング・スキームと関連した、ＣＧＳ及び内部差をＭＴＭＰ内に付加するという点で、国際特許出願第ＷＯ９７／３８３７２号に述べられたものと異なる。
【００１５】
図３は、基本的なシステムの細部をより詳細に示す。データ・マスター１００１は、データ・サービス要求を、ＣＧＳ１０００内のデータ・マスター選択ユニット（ＤＭＳ）１００６に出す。これらのデータ要求は、データ・インスタンスのカウントに個々のデータ・インスタンスのサイズを加えた形態のものである。データ・インスタンスは、入ってくるデータ・ストリーム内の任意の他のデータを参照することなく処理できる固有のデータ量として定められ、よって、このデータ・マスター又は他の任意のデータ・マスターによって与えられる他の全てのデータ・インスタンスと並行して処理することができる。
【００１６】
上のスケジューリング・フェーズ１に述べられたように、ＤＭＳは、データ・マスターを通して循環し、リソース・マネージャー１００２によって、現在のところ空き状態として示される、リソース内でサービスできるものを探す。データ・マスターを選択するとき、ＤＭＳはまた、データ・マスターによって示される最小のデータ・インスタンス・カウント（データ・マスター最小サービス・カウントと呼ばれる）も考慮する。規定された多数の最小データ・インスタンス・カウントをサービスするのに使用可能な十分なリソースがなければならない。データ・マスターが選択されると、ＤＭＳは、要求されたリソースを割り当て、選択されたデータ・マスターの要求をプログラム可能なデータ・シーケンサ（ＰＤＳ）１００４に送る前に、必要に応じてリソース・マネージャを更新する。リソースの割り当ては、ＭＴＭＰの共有データ・ストア１０３６内の入出力データ記憶の形態であることに留意すべきである。
【００１７】
入力バッファ記憶は、サービス要求ごとに割り当てられるが、特定の状況において、出力バッファ記憶は、付加的な管理を必要とする。具体的には、特定のデータ・タイプは、出力バッファリングが、多数のサービス要求（例えば、ピクセル・データ）にわたって永続的なものであることを要求し、この場合、出力バッファリングは、「マクロ」タスクに関して管理される。マクロ・タスクは、出力バッファリングが永続的でなければならないタスクのグループとして定められる。これに対処するために、ＤＭＳ／リソース・マネージャは、現在割り当てられている出力バッファ記憶がないデータ・マスターについての第１のタスク上にのみ、出力バッファ記憶を割り当てる。次に、この割り当ては、マクロ・タスクが完了し、これが空き状態である可能性があることを、データ・マスターが知らせるまで永続的なままである。
【００１８】
サービス可能な最小量に対して大量のリソースを必要とするデータ・マスターの処理を阻止することが可能であることが留意される。このことは、各々のデータ・マスターについてのタイムアウト・カウンタを維持するＤＭＳによって防止される。このタイムアウト・カウンタは、サービス要求が拒否されるたびに増加され、このカウンタが所定の値に達すると、十分なリソースが使用可能になるまで現在使用可能なリソースすなわちＤＭＳの処理が防止されることに関係なく、関係したデータ・マスターがサービスされる。さらに、各々のデータ・マスターのサービスを制御し、使用不能／使用可能にするために、ソフトウェア制御が利用される。このソフトウェア制御を用いて、各々のデータ・マスターに使用可能な処理時間の量を操作することができる。
【００１９】
ＰＤＳは、ＤＭＳによって選択されたデータ・マスターによってコード実行アドレスが与えられた完全にプログラム可能なプロセッサである。指示されたコードは、データ・マスターからサービスされる各々のデータ・インスタンスについて一回実行される。コードは、データ・マスターによって提供されるデータを使用して、共有データ・ストア１０３６内に直接データを生成するか、又はデータを、メモリからＤＭＡユニット１００８を介して共有データ・ストア１０３６内に取り出すことができる。ＰＤＳは、ＭＴＭＰ内のスレッドとして実装できることに留意すべきである。しかしながら、次に、このことは、他の活動から処理リソースを取ることになる。
【００２０】
選択されたデータ・マスターからの全てのデータ・インスタンスがＰＤＳによってサービスされると、タスクは、ＭＴＭＰのタスク・キュー１０２２に出される。タスクについての実行アドレスは、ＰＤＳ内で実行されるコードから直接与えられることが好ましい。従って、ＰＤＳ操作は、図１からの「データをロードする」ステップ１３０に等しい。
スレッド・マネージャ１０２６に出すことができるタスクについて、タスク・キューがタスク制御ユニット（ＴＣＵ）１０２４によって走査され、これは、
・未解決の実行依存性を有しておらず、
・その一時的記憶の割り当て、及びデータ・インスタンスの特定の最小数（データ・マスター最小サービス・カウントと同じ数）についての実行スレッドの数、又は
・その年齢が許容可能な最大数に達した又はこれを超えた、
任意のタスクである。
【００２１】
タスクの実行をブロックするために実行依存性が用いられるが、タスクの進行を可能にする前に終了すべき何らかの外部活動又は内部活動がある。こうした依存性の例は、（これらに限られるものではないが）「外部」依存性又は「順序」依存性である。
外部依存性は、条件が解除されるまでタスクの実行をブロックするＭＴＭＰの外部にあるハードウェアの部分から与えられる条件である。例えば、タスクは、進行する前に、処理パイプライン１０４０の１つを終了することを必要とすることがある。
【００２２】
順序依存性は、タスクが、キューの到着に先行したタスクでも更新される出力バッファ・レジスタを更新できる場合に適用される。タスク・マネージャが、順次依存性の組を有するタスクを見るとき、タスク・マネージャは、その前に与えられたキュー内の同じデータ・マスターからの全てのタスクが、その進行を可能にする前に終了することを可能にする。これらの環境において、同じデータ・マスターからのタスクだけがブロックされ、これは、データ・マスター／ソースＩＤがタスク・データ内に含まれるためであることに留意すべきである。この機構への更なる変更において、各々のタスクは、変更される出力レジスタのマスクを保持することができ、次いで、順次依存性は、それらのマスクが重なり合う場合にのみ選択的に適用される。
【００２３】
大きいリソース要件を有するタスクが長期間ブロックされるのを防ぐために、キュー内の各タスクは、ＴＣＵによる処理のためにタスクが拒絶される度に増加される「年齢（Ａｇｅ）」カウンタを有する。年齢カウンタが所定の限界値に達すると、使用可能なスレッド及び一時的記憶の可用性に関わりなく、処理のために、顕著な実行依存性を有さないタスクが選択される。
サービスのためのタスクが選択されると、図１のスケジューリング・フェーズ２に概略的に示されるように、そのデータ・インスタンスは、それら及び必要とされる一時的レジスタ・リソースが使用可能になるため、スレッドに分散される。一時的レジスタ記憶はまた、共有のデータ・ストア１０３６からも割り当てられ、該ストアは、入力、出力、及び一時的記憶領域の間で固定された方法で予め分けられ、次に独立して管理される。入力及び一時的記憶は、組み合わされて単一の区画にされ、どちらもスケジューリングのフェーズ１に割り当てられるが、このことは、必要以上に長く一時的記憶を保有するという不利な点を有する。
【００２４】
スレッド・マネージャ１０２６は、図１に示されるようなスケジューリング・フェーズ３を実施するために必要とされる動作を実行する。スレッド・マネージャは、常にサブセットがアクティブである同時に行われる多数の実行スレッドを維持する。アクティブ・スレッドについてのコードの実行は、例えば、システム内に２つのアクティブ・スレッドがある場合、スレッド０、スレッド１等についての命令フェッチが出されるように、ラウンドロビンによるものである。ＡＬＵパイプランは、一般に、パイプラインの下方で動作するのと同じクロック・サイクルで結果を生成しないので、一般に、前の命令の結果を参照する命令は停止する。しかしながら、命令は、上述のように、関連していないデータ・インスタンス上で作動しているスレッドからインターリーブされるので、任意の所定の実行スレッド内で実行しているコードについての潜在的に依存するレジスタ・アクセス間の時間は、アクティブ・スレッドの数によって増加し、よって、アクティブ・スレッドの数は、ＡＬＵパイプラインの待ち時間と等しくなるように選択される。
【００２５】
図４は、４つの可能なスレッドの状態と、それらの状態間の変位を引き起こす活動とを示す。スレッドは、ＴＣＵ１０２４（図３）がデータ・インスタンスを出し、既述のようにそこで実行するようにデータ・インスタンスを出し、「準備完了（Ｒｅａｄｙ）」状態１２１０への変位を引き起こすまで、「空き（ｆｒｅｅ）」状態１２００で開始する。スレッドは、スレッド・マネージャが現在アクティブなスレッドを非アクティブ状態又は空き状態にし、準備完了のスレッドを１２２０の「アクティブ」に変位させるまで、準備完了状態のままである。スレッドは、それらが実行を継続する場合に停止をもたらす依存性に遭遇する時点までアクティブのままである。スレッドがこのような依存性にヒットすると、スレッド・マネージャは、その状態を１２３０の「非アクティブ」に移動させる。この時点で他のスレッドが「準備完了」状態にない場合、スレッド・マネージャは、図３の命令フェッチ・デコード・ユニット（ＩＦＤ）１０２８に信号を送り、ＩＦＤとＳＤＳとの間のＡＬＵ１０３４に与えられる命令ストリームに無動作命令を挿入することに留意すべきである。スレッドは、その非アクティブ化を引き起こした全ての依存性が満足され、その時点でスレッドが再び１２１０の「準備完了」状態に変位するまで、「非アクティブ」状態のままである。アクティブなスレッドが長時間、いずれかの「準備完了」スレッドの実行をブロックするのを回避するために、スレッドが所定のアクティブ時間制限を超えた場合、スレッド・マネージャは、アクティブなスレッドを再び準備完了状態に変える。「最後」とマーク付けされた命令（すなわち、最後の命令）に遭遇すると、スレッド・マネージャは、スレッドの状態を再び１２００の「空き」状態に戻す。「最後」とマーク付けされた命令の実行により、任意の割り当てられた一時的記憶又は入力記憶も空くが、出力記憶は空かない。スレッドの非アクティブ化をもたらす可能な依存性は、
・コード・キャッシュ・ミス
・現在無効な状態コードに依存するブランチ
・まだ戻されていない外部メモリ読み出しからのデータ
・別のスレッドが現在所有していないセマフォーを獲得しようとする試み
・待機同期
である。
アクティブなスレッドの選択のための待ち時間を最小にするために、いずれかの顕著な依存性が終了するとすぐに、スレッド・マネージャは、非アクティブなスレッドの状態を更新する。
【００２６】
スレッド・マネージャは、フェッチを命令キャッシュ１０３０に出す命令フェッチ・デコード・ユニット（ＩＦＤ）に対して、アクティブなレッドについての命令フェッチを出す。出されたフェッチがキャッシュ・ミスを引き起こす場合、ＩＤＦは、これをスレッド・マネージャに知らせ、そのことにより、命令キャッシュが要求されたキャッシュ・ラインを取り出す時間まで、上述のようにスレッドがアクティブ化される。フェッチされた命令はデコードされ、任意のブランチ又は制御命令がＩＦＤ内で実行される。現在有効でない制御リソース（条件コードのような）を参照するいずれかの制御又はブランチ命令はＩＦＤをもたらし、制御リソースが有効になる時点までスレッドを非アクティブ化すべきであることをスレッド・マネージャに知らせる。他の全ての命令は、実行のためにＡＬＵ１０３４に送られる。ＡＬＵは、共有されるデータ・ストア内に含まれるデータ上で直接作動することが留意される。
【００２７】
終了する前に、大部分のスレッドは、共有データ・ストア１０３６内に割り当てられた出力バッファからの要求されたデータを読み取る処理パイプライン１０４０に出されたことを知らせる。このプロセスが終了すると、処理パイプラインは、出力バッファ・リソースが空き状態であることを信号で知らせる。
本発明の好ましい実施形態において、システムは、タイル・ベース型レンダリング・システム内で使用するように適合される。
【００２８】
タイル・ベース型レンダリング・システムは、周知のものである。これらは、複数の矩形ブロック又はタイルにレンダリングされる画像を分解する。これを行う方法、実行される次のテキスチャリング及びシェーディングが、図５に概略的に示される。プリミティブ／コマンド・フェッチ・ユニット１５０１は、メモリから、コマンド及びプリミティブ・データのストリームをフェッチし、周知の方法を用いてこれを画面空間に変換する幾何学的処理ユニット１５０２にこれを送る。次に、データは、タイリング・ユニット１５０３に与えられ、タイリング・ユニット１５０３は、画面空間の幾何学的形状を１組の定められた矩形領域すなわちタイル１５０４についてのリストに挿入する。各々のリストは、画面のサブ領域（すなわち、タイル）内に完全に又は部分的に存在するプリミティブを含む。リストは、画面上のあらゆるタイルについて存在するが、幾つかのリストはその中にデータを有しない場合があることも心に留めておくべきである。
【００２９】
タイリングされたデータ・リストは、タイルごとにそれらを隠面消去ユニット（ＨＳＲ）１５０６に与え、そこからテキスチャリング・シェーディング・ユニット（ＴＳＵ）１５０８に与えるタイル・パラメータ・フェッチ・ユニット１５０５によってフェッチされる。下記に述べられるように、ＨＳＲユニットは、タイル内の各プリミティブを処理し、可視ピクセルについてのデータだけを、ＴＳＵに送る。
テキスチャリング・シェーディング・ユニットは、ＨＳＲユニットからデータを取得し、それを用いてテキスチャをフェッチし、周知の技術を用いて可視オブジェクト内の各ピクセルにシェーディングを適用する。
【００３０】
次に、ＴＳＵは、周知の方法で、テキスチャリングされ、シェーディングされたデータを、それぞれアルファ・テスト、フォギング、及びアルファ・ブレンドを行なうアルファ・テスト・ユニット１５０９、フォギング・ユニット１５１０、及びアルファ・ブレンド・ユニット１５１１に提供する。アルファ・ブレンドは、オンチップ・タイル・バッファ１５１２に対して行なわれ、これによりこの操作と関連した外部メモリの帯域幅が排除される。各タイリングの終了時、レンダリングされたシーン１５１６を格納するために用いられる外部メモリの外にある結果として生じるデータを書き込む前に、ピクセル処理ユニット１５１４が、パッキング又はアンチエイリアシング・フィルタリングのようなバックエンド・プロセスを実行する。
【００３１】
図６は、典型的なタイル・ベースのレンダリング装置のＨＳＲユニットをより詳細に説明する。具体的には、ラステライザ１６０２が、オンチップ・タイル・バッファ１６０８に対する、入ってくるプリミティブ・ピクセルの深度を試験し、ピクセル位置が視認可能であると分った場合には、そのオブジェクトを固有に識別する「タグ」がタグ・バッファ１６０４に書き込まれる。ピクセルに、トランスペアレントであるオブジェクトからのピクセルを上書きすることが必要なときはいつでも、タグ・バッファのコンテンツをテキスチャリング・シェーディング・ユニットに送ることが必要である。これが行なわれると、現在のタグ・バッファのコンテンツは、オブジェクト・タグに基づいてタグ・バッファのコンテンツを分類し、これをテキスチャリング・シェーディング・ユニットに渡すソータ（Ｓｏｒｔｅｒ）１６０６に送られるので、テキスチャリング・シェーディング・ユニットは、タイル内の可視オブジェクトの各々と関連した全てのピクセルを一度に見るようになる。このプロセスは、パス「スパウニング」と呼ばれる。
【００３２】
図７は、タイル・ベースのレンダリングに適用されるような本発明の更に別の実施形態を説明する。明確さのために、ＭＴＭＰ制御・実行パイプ１８５２は、タスク・キュー１０２２、タスク制御ユニット１０２４、スレッド・マネージャ１０２６、スレッドＰＣ１０３２、命令フェッチ・デコード１０２８、及びＡＬＵ１０３４を含む。明確さのためだけに、コード１０３０及びデータ・キャッシュ１０１０も除去されたことにも留意すべきである。
【００３３】
この例において、ＭＴＭＰは、図５からの、幾何学的形状処理ユニット１５０２、テキスチャリング・シェーディング・ユニット１５０８、アルファ・テスト・ユニット１５０９、フォギング・ユニット１５１０、及びアルファ・ブレンド・ユニット１５１１の機能を置き換える。さらに、累積バッファは、共有データ・ストアから割り当てられた出力バッファ空間と置き換えられる。一般的なプログラム可能性をもつ単一のユニットに機能を統合することにより、固定された機能ブロックを直接エミュレートする又は置き換える、或いは、それらを添付の出願により提供される任意のコードの部分と置き換えることができる非常に有能なシステムがもたらされる。
【００３４】
ここで、データ・マスター１８２０には、次のような特定の機能が割り当てられている。ピクセル・データ・マスター（ＰＤＭ）１８２６は、図５のタイリングされたパラメータ・フェッチ１５０５及び隠面消去１５０６の機能を組み込む。ＰＤＭは、Ｎピクセルのブロックにおいてピクセル処理要求をＤＭＳ１８０６に与え、ここで、この例において、Ｎは４から１２８までの間にあり、ピクセル処理パイプラインが変化計算の速度を実施しなければならないという周知の方法により、４は必要とされる最小値である。ピクセル・データを処理するとき、ＰＤＳ１０８内のオーバーハード（ｏｖｅｒｈｅａｒｄ）を最小にするために、各々のデータ・サービス要求は、多数のピクセルを表示する。ＰＤＭは、トライアングル・ラスター化のために必要とされるパラメータを座標イテレータ（ｉｔｅｒａｔｏｒ）１８１０にも送ることに留意すべきである。
【００３５】
頂点データ・マスター（ＶＤＭ）１８２２は、外部メモリから入ってくるプリミティブをフェッチし、各々のデータ・サービス要求においてフェッチされるべき頂点についての索引を送る。ＶＤＭはまた、側波帯情報をタイリング・エンジン１８６２に直接送り、タイリング・エンジン１８６２が処理された頂点からプリミティブを正しく再構成することを可能にすることに留意すべきである。
イベント・データ・マスター（ＥＤＭ）１８２４には、システム内の他のデータ・マスター及びホストからのイベントが提供され、処理システム・イベント及び一般的なコマンドのために、アーキテクチャを用いることが可能になり、これらのイベントをサービスするために、ホスト・プロセッサに割り込む必要性を回避する。
【００３６】
付加的なデータ・マスターをシステムに付加することができ、例えば、タイリングされたパラメータ・フェッチ・ユニットからの供給を取得するデータ・マスターを実装することができ、これをＨＳＲユニット（事実上、別の処理パイプラインになる）に送る前に、フェッチされたプリミティブ・データを事前処理することが可能になる。この事前処理により、タイリングされたリストを処理して、タイリングされたプリミティブ・リストについての消費メモリを著しく減少させることを可能にしながら、高次面のようなプロシージャー型幾何学形状を生成することが可能になる。
【００３７】
ここで、処理パイプライン１８６０には特有の機能が割り当てられ、タイリング・エンジン１８６２、ピクセル処理１８６４、及びテキスチャリング・ユニット１８６６は、図５の同じユニットにちょうど匹敵する。
データ処理に対する手法は、使用可能な幾つかの付加的な機能と共に前に述べられたとおりである。具体的には、ＰＤＳは、今や、ピクセル・データについて、１組の座標イテレータ１８１０又はテキスチャリング・ユニット１８６６を介して、データを共有データ・ストアにロードすることもできる。
【００３８】
ＰＤＭのＨＳＲユニットが、処理されるデータを有することをＤＭＳに知らせるパスを生成するときはいつも、ピクセル処理が行なわれる。選択されたとき、ＰＤＳ上で実行されるコードは、座標データ及びテキスチャ・データを共有データ・ストアの割り当てられた領域にロードする。システム内のデータ・インスタンスは、結果を共有データ・ストア内の割り当てられた出力バッファに格納する実行済みコードを有する単一のピクセルを表す。タイル全体が処理されるまで出力バッファはファイナライズされないので、ピクセル処理ユニット１８６４に対して、各々のピクセル・データ・インスタンスが出されないことに留意すべきである。発行されるタイル・データのために、タイルが終了したことを示すＰＤＭからの信号によって、ＥＤＭ１８２４が与えられる。次に、ＥＤＭは、タイル・データをピクセル処理ユニットに出すのに用いられるタスクを生成する。ＥＤＭを用いて、ＨＳＲユニットにより生成されるパス間でタスクを出すなど多くの他の目的のためにイベントを生成、各パス間のタイル・バッファのコンテンツで処理を行なうことを可能にできることに留意すべきである。例えば、終了したタイルを出すときに、付加的な処理を行なって、出されたデータについてのミップ・マップ（周知の技術）のレベルを生成できるといったイベントにおいて、任意の量又はタイプの処理を行なうことが可能であることに留意すべきである。
頂点処理は、前に述べたような一般的なデータ・ソースと類似した方法で機能し、処理された頂点ごとに、タイリング・エンジンに発行が行われる。
【００３９】
実施形態への更なる拡張において、アーキテクチャをスケーリングすることもできる。ピクセル処理の場合、図８に示されるように、このことは、各々のコアがタイルの異なる「セクタ」にマッピングされた、多数のメディア処理コアを定めることによって達成される。ＨＳＲユニットのタグ・バッファ２０００から各々のＰＤＭ２０２０、２０２１専用のものであるタグ・ソータ２０１０、２０１１に可視タグが転送される場合に分割が生じ、このことにより、ＨＳＲユニットを前端部で分割する必要なしに、２つのパイプライン間の並列処理のレベルが最大になる。
【００４０】
これらの異なるセクタは重なり合わないので、これらは、本質的に、多数のパイプラインにわたって並行して処理することができる。一般的には、パイプラインの数が増大されるにつれて、タイル・サイズは、取り付けられたパイプの数に比例して増大され、例えば、単一のパイプラインが、１６×１６のタイル上で機能するＨＳＲユニットに取り付けられた場合、２つのパイプラインは、３２×１６のタイル上で機能するＨＳＲユニットに取り付けられ、以下同様である。代替的に、セクタのサイズを低減させ、タイル・サイズが一定に保持されることを可能にできるが、このことにより、各パイプライン内のピクセル・データを処理する際の効率が低減される。
【００４１】
一般的に言うと、ＨＳＲの性能が飽和されるまで、すなわちその性能をさらにスケーリングすることが困難になるまで、パイプラインの数を合致させるようにタイル・サイズをスケーリングする手法を続けることができる。この時点で、多数の並列ＨＳＲユニットを定めることによって、スケーリングを続けることができる。
頂点処理の場合、使用可能なパイプラインにわたって入ってくるプリミティブ・データを分散させることによって、スケーラビリティを達成することができる。一般に、このことは、簡単なラウンドロビン機構を用いて、又は、最も忙しくないパイプラインに頂点のブロックを送ることによって行なわれる。ラウンドロビン機構は、パイプラインにおいて後にタイリング機構を簡単化するので、好ましいものである。
【００４２】
図９は、２つのパイプライン・システムについての構成を示す。パイプ１  ２２５０及びパイプ２  ２２５１の各々は、明確さの助けになるように前に別個に説明されたＣＧＳ及びＭＴＭＰの両方を表す。
前述のように、ＨＳＴユニット２２００は、入ってくるタイリングされたパラメータ・リストを処理する。上述のように、ピクセル・データ・マスター２２３０及び２２３１は、それぞれＨＳＲユニットのタグ・バッファの異なる部分にマッピングされる。各々のＰＤＭは、特有のメディア処理コア２２５０、２２５１専用のものである。テキスチャリング・パイプライン（２２６０、２２６１）及びピクセル処理パイプライン（２２７０、２２７１）は、メディア処理コアと共に複製される。前に述べられたように、タイルが終了すると、処理されたピクセル・データは、ＭＴＭＰのものからピクセル処理ユニット２２７０、２２７１に送られる。ピクセル処理ユニットは、それらの割り当てがメモリ内に格納されたピクセルに対して重ならならず、それらをピクセル処理パイプラインの残りと共に直接スケーラブルにするので、処理ユニットと共に複製される。
【００４３】
頂点データ・マスター２２１０及びイベント・データ・マスター２２２０の各々は、サービス要求をプリスケジューラ２２４０に与える。プリスケジューラは、データ・マスター（ＶＤＭ、ＥＤＭ）の各々について取り付けられたパイプラインごとにサービス・キューを維持する。キューは、単純なラウンドロビン順序で満たされるので、処理要求は、取り付けられたパイプラインにわたって均等に分散される。上述のように、処理された頂点は、ＭＴＭＰから、これらを、タイリング・プロセスを適用する前にＶＤＭによって生成されたプリミティブ・データと再結合させるタイリング・ユニットに送られる７。
【図面の簡単な説明】
【００４４】
【図１】上述の本発明の実施形態の、提案されたスケジューリング・フェーズを示す。
【図２】本発明を具体化する改善されたマルチメディア処理アーキテクチャを示す。
【図３】図２のアーキテクチャの詳細な図である。
【図４】図３のスレッド・マネージャ内のスレッドの状態を示す。
【図５】典型的な、タイル・ベース・レンダリング・システムを示す。
【図６】本発明の一実施形態を用いることができる、タイル・ベース・レンダリング・システム内の典型的なＨＳＲユニットを示す。
【図７】本発明の一実施形態を用いて実施される、タイル・ベース・レンダリング・システムを示す。
【図８】ピクセル・データ・マスター（ＰＤＭ）マッピングに対するタイル・セクタを示す。
【図９】２つのパイプラインにスケーリングされたシステムを示す。
【図１】
2009512917.tif 000003
【図２】
2009512917.tif 000004
【図３】
2009512917.tif 000005
【図４】
2009512917.tif 000006
【図５】
2009512917.tif 000007
【図６】
2009512917.tif 000008
【図７】
2009512917.tif 000009
【図８】
2009512917.tif 000010
【図９】
2009512917.tif 000011
【国際調査報告】
2009512917.tif 000012
2009512917.tif 000013
2009512917.tif 000014
2009512917.tif 000015
2009512917.tif 000016
2009512917.tif 000017