JP2009512917A - スケーラブルなマルチスレッド型メディア処理アーキテクチャ - Google Patents

スケーラブルなマルチスレッド型メディア処理アーキテクチャ Download PDF

Info

Publication number
JP2009512917A
JP2009512917A JP2008532869A JP2008532869A JP2009512917A JP 2009512917 A JP2009512917 A JP 2009512917A JP 2008532869 A JP2008532869 A JP 2008532869A JP 2008532869 A JP2008532869 A JP 2008532869A JP 2009512917 A JP2009512917 A JP 2009512917A
Authority
JP
Japan
Prior art keywords
data
execution
task
address
data storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008532869A
Other languages
English (en)
Other versions
JP5202319B2 (ja
Inventor
ジョン ホーソン
Original Assignee
イマジネイション テクノロジーズ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2009512917A publication Critical patent/JP2009512917A/ja
Application granted granted Critical
Publication of JP5202319B2 publication Critical patent/JP5202319B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

複数の実行スレッドにおける多数のデータ・ストリームを処理するための方法及び装置が提供される。データは、複数のデータ・ソース(1001)から選択される。上述のように選択されたデータについて、データ記憶手段(1036)内のアドレスが割り当てられる。次に、選択されたデータは、割り当てられたアドレスにロードされる。これに続いて、選択されたデータ・ソース、データ・アドレス、及び実行アドレスを含む実行タスクが構成され、データ・タスクは、前に構成されたタスクと共にキューに入れられる。各々のタスクに対してどの処理リソースを必要とするかについて判断がなされ、これに基づいて、タスクが実行のために選択される。実行のために選択されたタスクは、複数の処理スレッド(170)にわたって分散される。データ記憶手段におけるデータ記憶の割り当ては、データ・ソースの1つからデータを選択し、コード実行アドレスをプログラム可能なデータ・シーケンサ(1004)に提供するステップを含む。コード実行アドレスからのコードが実行され、データがデータ記憶手段に書き込まれる。さらに、タイル・ベース型コンピュータ・グラフィック・レンダリング・システムは、複数のマルチスレッド型プロセッサ・コアを含む。各々のプロセッサ・コアは、タイルの異なるセクタに割り当てられる。

Description

本発明は、ビデオ及び3次元のコンピュータ・グラフィックスのようなマルチメディア・データを処理することが可能なシステムに関し、特に、スケーラブルなマルチスレッド環境内でこうしたデータの多数の並列ストリームを処理する方法に関する。
国際特許出願第WO97/38372号(その内容は、引用によりここに組み入れられる)は、マルチスレッド型メディア処理コアを介して多数のリアルタイム・データ・ソースを処理するためのシステムを記載する。処理コアは、多数の実行スレッドの命令を処理する。が実行についてどのスレッドが最も高い優先順位を有するかについての判断がなされ、これに従ってそのスレッドにおける実行が形成される。
「control a priority lead structure on a multi−threaded processor」という名称の国際特許出願第WO02/06716号(その内容は、引用によりここに組み入れられる)は、異なる実行スレッド間で可能なアービトレーション・スキームについてさらに詳述する。この国際特許出願は、命令スレッドの実行速度を制御するための方法装置を提供する。命令を実行する速度が格納され、格納された速度に応答して、要求を出して命令を実行させる。格納された速度は、命令の実行に応答して低減し、実行の命令がないときに増大する。さらに、各スレッドが命令を実行すべき平均速度を格納することによって、命令速度が制御される。まだ出されていない使用可能な命令の数を表す値は、監視され、命令の実行に応答して低減される。また、スレッドに関する複数のメトリックを用いて、格付け順序を複数の命令スレッドに割り当てることもできる。
さらなる開発において、サブセットがアクティブなものとして維持される実行スレッドの上位集合を維持することによって、「拡張インターリーブ型マルチスレッド(Enhanced interleaved multi−threading)」として知られる技術が機能する。アクティブなスレッドの数は、それらが命令を出している実行ユニットの待ち時間によって決定される。次に、スレッドは、リソースの依存性に基づいて、アクティブなサブセットと上位集合との間でスレッドが交換される、すなわち、アクティブなスレッドがメモリから戻されるデータを待っている場合には、アクティブなスレッドは、進行する準備ができている現在のところ非アクティブなスレッドと交換される。
本発明の好ましい実施形態は、スケジューリングにマルチフェーズ式手法を用いることにより、パイプライン処理リソースの待ち時間吸収及び利用を最大にする方法で非リアルタイムのデータ・ソースのバルクを表す多数の入力データ・ストリームを処理するのに、マルチスレッド式処理パイプラインの使用が可能になるシステムを提供する。
このことは、処理パイプライン内のデータ記憶の管理を、同じパイプライン内の処理スレッドの割り当て、及び、実行リソースの競合に基づいた命令のスケジューリングと区別する3フェーズ・スケジューリング・システムを用いて行なわれる。
本発明の第1の態様の実施形態によると、データ記憶手段内の記憶の可用性に基づいて、複数のデータ・ソースの少なくとも1つからデータを選択し、そのように選択されたデータについてデータ記憶手段内のアドレスを割り当て、そのように割り当てられたデータ・アドレスにおいて選択されたデータをロードし、選択されたデータ・ソース、データ・アドレス、及び実行アドレスを含む実行タスクを構成し、前に構成された他のタスクと共にタスクをキューに入れ、各々のタスクについてどの処理リソースが必要とされるかを判断し、使用可能な処理リソースに基づいて実行のためのタスクを選択し、複数の処理スレッドにわたって実行のための選択されたタスクを分散させ、データ依存性のためにスレッドのいずれかが停止するかどうかを判断し、データ依存性に起因して停止しない、アクティブなスレッドのサブセットを繰り返し選択し、アクティブなスレッドを実行するステップを含む、複数の実行スレッドにおける多数のデータ・ストリームを処理する方法が提供される。
一実施形態は、使用可能なリソースに基づいてタスクをスケジューリングするための手段を含むことが好ましい。
一実施形態は、データ・ソース内で長時間ブロックされるのを回避するための手段を含むことが好ましい。
一実施形態は、プログラム可能なデータ・シーケンサを介して、データを統一された記憶領域にロードするための方法を含むことが好ましい。
一実施形態は、データ処理スレッド上にプログラム可能なデータ・シーケンサが設けられるように変更できることが好ましい。
一実施形態は、データが正しい順序で処理されることを保証する方法を提供することが好ましい。
この方法は、タイル・ベースのレンダリング・システムにおいて実現できることが好ましい。
システムを通したテクスチャ座標の反復及びテクスチャ・フェッチのために、プログラム可能なデータ・シーケンサが用いられることが好ましい。
本発明の実施形態は、異なるマルチプロセッサ・コアによってスケーラブルである(ここで、各々のマルチプロセッサ・コアは、タイルの異なるセクタに合致され、取り付けられたパイプラインの数に基づいてタイルのサイズを調整することができ、頂点データは、プリスケジューリング・ブロックを用いてパイプラインにわたって均一に分散され、ベント・プロセッサは、プリスケジューリング・ブロックによって同じくパイプラインにわたって均一に分散される)ことが好ましい。
本発明の更に別の態様の実施形態によると、データ記憶の可用性に基づいて複数のデータ・ソースの1つからデータを選択し、コード実行アドレスをプログラム可能なデータ・シーケンサに提供し、コード実行アドレスからのコードを実行して、データをデータ記憶手段に書き込ませるステップを含む、マルチスレッド式データ処理システムにおいてデータ記憶を割り当てる方法が提供される。
ここで本発明の好ましい実施形態が、添付の図面を参照して例証として詳細に説明される。
図1は、システムを有するスケジューリング・フェーズを示す。第1のフェーズは、110において、プロセッサ記憶リソース(Processor Storage Resource)140において使用可能な十分なリソースがあることに基づいて、使用可能なソース100から入力のデータ・ソースを選択することで開始する。次に、120において、プロセッサ記憶リソースの割り当てが行なわれ、記憶装置内のデータ・アドレスがもたらされる。次に、130において、このアドレスを用いて、選択されたソースのサービスに必要とされるデータをロードする。次に、150において、(これらに限られるものではないが)発信データ・ソースID、データ・ソース100によって与えられる実行アドレス、及びデータ・アドレスからなるタスクが構成される。次に、生成されたタスクは、タスク・キュー160に挿入される。
第2のスケジューリング・フェーズは、そのパイプライン内の処理リソースの可用性に基づいて、マルチスレッド型処理パイプライン内の1つ又はそれ以上の処理スレッドにわたって分散される第1のフェーズによって生成される、キュー内の各タスクを含む。162において、任意の所定のタスクを実行するのに必要とされる処理リソースを用いて、タスク・キュー内のどのタスクを実行することができるか、具体的には、必要とされる処理スレッドの数及びそれらのスレッドを実行するのに必要とされる一時的記憶装置を命令する。次に、164において、選択されたタスクは、実行スレッド170にわたって分散される。
第3の最後の実行フェーズは、175において、例えば、外部メモリの読み込み又は現在有効でないブランチ条件によって戻されたデータなど、現在使用可能でないリソースのために停止を招くことなく、どのスレッドを実行できるかを判断する。このことは、国際特許出願第WO97/38372号に記載される簡単なリソースのチェックと、「拡張インターリーブ型マルチスレッド」の技術を組み合わせる方法で行なわれる。このことにより、維持されるアクティブなスレッド180の組がもたらされ、その数は「実行」190の実行待ち時間に結び付けられる(一般的には、ALU)。第3のフェーズはスレッドを実行して終了させ、その時点でスレッド及び任意の割り当てられたメモリ・リソースの両方がシステムに戻されることに留意すべきである。
図2は、高レベルで図1を実施するための提案された処理アーキテクチャを示す。データ・ソース810は、ここでは、これらがシステム内の全ての処理の後押しを担当することから、「データ・マスター」と呼ばれる。データ・マスターに結合された粗粒度スケジューラ(Coarse Grain Scheduler、CGS)820は、スケジューリング・フェーズ1内で上述された活動を引き受ける。CGSは、上述のスケジューリング・フェーズ2及び3を実施するマルチスレッド型メディア・プロセッサ(MTMP)830にタスクを送る。MTMPからデータ処理パイプライン840に処理されたデータを「出す(emit)」。このシステムは、3フェーズ式スケジューリング・スキームと関連した、CGS及び内部差をMTMP内に付加するという点で、国際特許出願第WO97/38372号に述べられたものと異なる。
図3は、基本的なシステムの細部をより詳細に示す。データ・マスター1001は、データ・サービス要求を、CGS1000内のデータ・マスター選択ユニット(DMS)1006に出す。これらのデータ要求は、データ・インスタンスのカウントに個々のデータ・インスタンスのサイズを加えた形態のものである。データ・インスタンスは、入ってくるデータ・ストリーム内の任意の他のデータを参照することなく処理できる固有のデータ量として定められ、よって、このデータ・マスター又は他の任意のデータ・マスターによって与えられる他の全てのデータ・インスタンスと並行して処理することができる。
上のスケジューリング・フェーズ1に述べられたように、DMSは、データ・マスターを通して循環し、リソース・マネージャー1002によって、現在のところ空き状態として示される、リソース内でサービスできるものを探す。データ・マスターを選択するとき、DMSはまた、データ・マスターによって示される最小のデータ・インスタンス・カウント(データ・マスター最小サービス・カウントと呼ばれる)も考慮する。規定された多数の最小データ・インスタンス・カウントをサービスするのに使用可能な十分なリソースがなければならない。データ・マスターが選択されると、DMSは、要求されたリソースを割り当て、選択されたデータ・マスターの要求をプログラム可能なデータ・シーケンサ(PDS)1004に送る前に、必要に応じてリソース・マネージャを更新する。リソースの割り当ては、MTMPの共有データ・ストア1036内の入出力データ記憶の形態であることに留意すべきである。
入力バッファ記憶は、サービス要求ごとに割り当てられるが、特定の状況において、出力バッファ記憶は、付加的な管理を必要とする。具体的には、特定のデータ・タイプは、出力バッファリングが、多数のサービス要求(例えば、ピクセル・データ)にわたって永続的なものであることを要求し、この場合、出力バッファリングは、「マクロ」タスクに関して管理される。マクロ・タスクは、出力バッファリングが永続的でなければならないタスクのグループとして定められる。これに対処するために、DMS/リソース・マネージャは、現在割り当てられている出力バッファ記憶がないデータ・マスターについての第1のタスク上にのみ、出力バッファ記憶を割り当てる。次に、この割り当ては、マクロ・タスクが完了し、これが空き状態である可能性があることを、データ・マスターが知らせるまで永続的なままである。
サービス可能な最小量に対して大量のリソースを必要とするデータ・マスターの処理を阻止することが可能であることが留意される。このことは、各々のデータ・マスターについてのタイムアウト・カウンタを維持するDMSによって防止される。このタイムアウト・カウンタは、サービス要求が拒否されるたびに増加され、このカウンタが所定の値に達すると、十分なリソースが使用可能になるまで現在使用可能なリソースすなわちDMSの処理が防止されることに関係なく、関係したデータ・マスターがサービスされる。さらに、各々のデータ・マスターのサービスを制御し、使用不能/使用可能にするために、ソフトウェア制御が利用される。このソフトウェア制御を用いて、各々のデータ・マスターに使用可能な処理時間の量を操作することができる。
PDSは、DMSによって選択されたデータ・マスターによってコード実行アドレスが与えられた完全にプログラム可能なプロセッサである。指示されたコードは、データ・マスターからサービスされる各々のデータ・インスタンスについて一回実行される。コードは、データ・マスターによって提供されるデータを使用して、共有データ・ストア1036内に直接データを生成するか、又はデータを、メモリからDMAユニット1008を介して共有データ・ストア1036内に取り出すことができる。PDSは、MTMP内のスレッドとして実装できることに留意すべきである。しかしながら、次に、このことは、他の活動から処理リソースを取ることになる。
選択されたデータ・マスターからの全てのデータ・インスタンスがPDSによってサービスされると、タスクは、MTMPのタスク・キュー1022に出される。タスクについての実行アドレスは、PDS内で実行されるコードから直接与えられることが好ましい。従って、PDS操作は、図1からの「データをロードする」ステップ130に等しい。
スレッド・マネージャ1026に出すことができるタスクについて、タスク・キューがタスク制御ユニット(TCU)1024によって走査され、これは、
・未解決の実行依存性を有しておらず、
・その一時的記憶の割り当て、及びデータ・インスタンスの特定の最小数(データ・マスター最小サービス・カウントと同じ数)についての実行スレッドの数、又は
・その年齢が許容可能な最大数に達した又はこれを超えた、
任意のタスクである。
タスクの実行をブロックするために実行依存性が用いられるが、タスクの進行を可能にする前に終了すべき何らかの外部活動又は内部活動がある。こうした依存性の例は、(これらに限られるものではないが)「外部」依存性又は「順序」依存性である。
外部依存性は、条件が解除されるまでタスクの実行をブロックするMTMPの外部にあるハードウェアの部分から与えられる条件である。例えば、タスクは、進行する前に、処理パイプライン1040の1つを終了することを必要とすることがある。
順序依存性は、タスクが、キューの到着に先行したタスクでも更新される出力バッファ・レジスタを更新できる場合に適用される。タスク・マネージャが、順次依存性の組を有するタスクを見るとき、タスク・マネージャは、その前に与えられたキュー内の同じデータ・マスターからの全てのタスクが、その進行を可能にする前に終了することを可能にする。これらの環境において、同じデータ・マスターからのタスクだけがブロックされ、これは、データ・マスター/ソースIDがタスク・データ内に含まれるためであることに留意すべきである。この機構への更なる変更において、各々のタスクは、変更される出力レジスタのマスクを保持することができ、次いで、順次依存性は、それらのマスクが重なり合う場合にのみ選択的に適用される。
大きいリソース要件を有するタスクが長期間ブロックされるのを防ぐために、キュー内の各タスクは、TCUによる処理のためにタスクが拒絶される度に増加される「年齢(Age)」カウンタを有する。年齢カウンタが所定の限界値に達すると、使用可能なスレッド及び一時的記憶の可用性に関わりなく、処理のために、顕著な実行依存性を有さないタスクが選択される。
サービスのためのタスクが選択されると、図1のスケジューリング・フェーズ2に概略的に示されるように、そのデータ・インスタンスは、それら及び必要とされる一時的レジスタ・リソースが使用可能になるため、スレッドに分散される。一時的レジスタ記憶はまた、共有のデータ・ストア1036からも割り当てられ、該ストアは、入力、出力、及び一時的記憶領域の間で固定された方法で予め分けられ、次に独立して管理される。入力及び一時的記憶は、組み合わされて単一の区画にされ、どちらもスケジューリングのフェーズ1に割り当てられるが、このことは、必要以上に長く一時的記憶を保有するという不利な点を有する。
スレッド・マネージャ1026は、図1に示されるようなスケジューリング・フェーズ3を実施するために必要とされる動作を実行する。スレッド・マネージャは、常にサブセットがアクティブである同時に行われる多数の実行スレッドを維持する。アクティブ・スレッドについてのコードの実行は、例えば、システム内に2つのアクティブ・スレッドがある場合、スレッド0、スレッド1等についての命令フェッチが出されるように、ラウンドロビンによるものである。ALUパイプランは、一般に、パイプラインの下方で動作するのと同じクロック・サイクルで結果を生成しないので、一般に、前の命令の結果を参照する命令は停止する。しかしながら、命令は、上述のように、関連していないデータ・インスタンス上で作動しているスレッドからインターリーブされるので、任意の所定の実行スレッド内で実行しているコードについての潜在的に依存するレジスタ・アクセス間の時間は、アクティブ・スレッドの数によって増加し、よって、アクティブ・スレッドの数は、ALUパイプラインの待ち時間と等しくなるように選択される。
図4は、4つの可能なスレッドの状態と、それらの状態間の変位を引き起こす活動とを示す。スレッドは、TCU1024(図3)がデータ・インスタンスを出し、既述のようにそこで実行するようにデータ・インスタンスを出し、「準備完了(Ready)」状態1210への変位を引き起こすまで、「空き(free)」状態1200で開始する。スレッドは、スレッド・マネージャが現在アクティブなスレッドを非アクティブ状態又は空き状態にし、準備完了のスレッドを1220の「アクティブ」に変位させるまで、準備完了状態のままである。スレッドは、それらが実行を継続する場合に停止をもたらす依存性に遭遇する時点までアクティブのままである。スレッドがこのような依存性にヒットすると、スレッド・マネージャは、その状態を1230の「非アクティブ」に移動させる。この時点で他のスレッドが「準備完了」状態にない場合、スレッド・マネージャは、図3の命令フェッチ・デコード・ユニット(IFD)1028に信号を送り、IFDとSDSとの間のALU1034に与えられる命令ストリームに無動作命令を挿入することに留意すべきである。スレッドは、その非アクティブ化を引き起こした全ての依存性が満足され、その時点でスレッドが再び1210の「準備完了」状態に変位するまで、「非アクティブ」状態のままである。アクティブなスレッドが長時間、いずれかの「準備完了」スレッドの実行をブロックするのを回避するために、スレッドが所定のアクティブ時間制限を超えた場合、スレッド・マネージャは、アクティブなスレッドを再び準備完了状態に変える。「最後」とマーク付けされた命令(すなわち、最後の命令)に遭遇すると、スレッド・マネージャは、スレッドの状態を再び1200の「空き」状態に戻す。「最後」とマーク付けされた命令の実行により、任意の割り当てられた一時的記憶又は入力記憶も空くが、出力記憶は空かない。スレッドの非アクティブ化をもたらす可能な依存性は、
・コード・キャッシュ・ミス
・現在無効な状態コードに依存するブランチ
・まだ戻されていない外部メモリ読み出しからのデータ
・別のスレッドが現在所有していないセマフォーを獲得しようとする試み
・待機同期
である。
アクティブなスレッドの選択のための待ち時間を最小にするために、いずれかの顕著な依存性が終了するとすぐに、スレッド・マネージャは、非アクティブなスレッドの状態を更新する。
スレッド・マネージャは、フェッチを命令キャッシュ1030に出す命令フェッチ・デコード・ユニット(IFD)に対して、アクティブなレッドについての命令フェッチを出す。出されたフェッチがキャッシュ・ミスを引き起こす場合、IDFは、これをスレッド・マネージャに知らせ、そのことにより、命令キャッシュが要求されたキャッシュ・ラインを取り出す時間まで、上述のようにスレッドがアクティブ化される。フェッチされた命令はデコードされ、任意のブランチ又は制御命令がIFD内で実行される。現在有効でない制御リソース(条件コードのような)を参照するいずれかの制御又はブランチ命令はIFDをもたらし、制御リソースが有効になる時点までスレッドを非アクティブ化すべきであることをスレッド・マネージャに知らせる。他の全ての命令は、実行のためにALU1034に送られる。ALUは、共有されるデータ・ストア内に含まれるデータ上で直接作動することが留意される。
終了する前に、大部分のスレッドは、共有データ・ストア1036内に割り当てられた出力バッファからの要求されたデータを読み取る処理パイプライン1040に出されたことを知らせる。このプロセスが終了すると、処理パイプラインは、出力バッファ・リソースが空き状態であることを信号で知らせる。
本発明の好ましい実施形態において、システムは、タイル・ベース型レンダリング・システム内で使用するように適合される。
タイル・ベース型レンダリング・システムは、周知のものである。これらは、複数の矩形ブロック又はタイルにレンダリングされる画像を分解する。これを行う方法、実行される次のテキスチャリング及びシェーディングが、図5に概略的に示される。プリミティブ/コマンド・フェッチ・ユニット1501は、メモリから、コマンド及びプリミティブ・データのストリームをフェッチし、周知の方法を用いてこれを画面空間に変換する幾何学的処理ユニット1502にこれを送る。次に、データは、タイリング・ユニット1503に与えられ、タイリング・ユニット1503は、画面空間の幾何学的形状を1組の定められた矩形領域すなわちタイル1504についてのリストに挿入する。各々のリストは、画面のサブ領域(すなわち、タイル)内に完全に又は部分的に存在するプリミティブを含む。リストは、画面上のあらゆるタイルについて存在するが、幾つかのリストはその中にデータを有しない場合があることも心に留めておくべきである。
タイリングされたデータ・リストは、タイルごとにそれらを隠面消去ユニット(HSR)1506に与え、そこからテキスチャリング・シェーディング・ユニット(TSU)1508に与えるタイル・パラメータ・フェッチ・ユニット1505によってフェッチされる。下記に述べられるように、HSRユニットは、タイル内の各プリミティブを処理し、可視ピクセルについてのデータだけを、TSUに送る。
テキスチャリング・シェーディング・ユニットは、HSRユニットからデータを取得し、それを用いてテキスチャをフェッチし、周知の技術を用いて可視オブジェクト内の各ピクセルにシェーディングを適用する。
次に、TSUは、周知の方法で、テキスチャリングされ、シェーディングされたデータを、それぞれアルファ・テスト、フォギング、及びアルファ・ブレンドを行なうアルファ・テスト・ユニット1509、フォギング・ユニット1510、及びアルファ・ブレンド・ユニット1511に提供する。アルファ・ブレンドは、オンチップ・タイル・バッファ1512に対して行なわれ、これによりこの操作と関連した外部メモリの帯域幅が排除される。各タイリングの終了時、レンダリングされたシーン1516を格納するために用いられる外部メモリの外にある結果として生じるデータを書き込む前に、ピクセル処理ユニット1514が、パッキング又はアンチエイリアシング・フィルタリングのようなバックエンド・プロセスを実行する。
図6は、典型的なタイル・ベースのレンダリング装置のHSRユニットをより詳細に説明する。具体的には、ラステライザ1602が、オンチップ・タイル・バッファ1608に対する、入ってくるプリミティブ・ピクセルの深度を試験し、ピクセル位置が視認可能であると分った場合には、そのオブジェクトを固有に識別する「タグ」がタグ・バッファ1604に書き込まれる。ピクセルに、トランスペアレントであるオブジェクトからのピクセルを上書きすることが必要なときはいつでも、タグ・バッファのコンテンツをテキスチャリング・シェーディング・ユニットに送ることが必要である。これが行なわれると、現在のタグ・バッファのコンテンツは、オブジェクト・タグに基づいてタグ・バッファのコンテンツを分類し、これをテキスチャリング・シェーディング・ユニットに渡すソータ(Sorter)1606に送られるので、テキスチャリング・シェーディング・ユニットは、タイル内の可視オブジェクトの各々と関連した全てのピクセルを一度に見るようになる。このプロセスは、パス「スパウニング」と呼ばれる。
図7は、タイル・ベースのレンダリングに適用されるような本発明の更に別の実施形態を説明する。明確さのために、MTMP制御・実行パイプ1852は、タスク・キュー1022、タスク制御ユニット1024、スレッド・マネージャ1026、スレッドPC1032、命令フェッチ・デコード1028、及びALU1034を含む。明確さのためだけに、コード1030及びデータ・キャッシュ1010も除去されたことにも留意すべきである。
この例において、MTMPは、図5からの、幾何学的形状処理ユニット1502、テキスチャリング・シェーディング・ユニット1508、アルファ・テスト・ユニット1509、フォギング・ユニット1510、及びアルファ・ブレンド・ユニット1511の機能を置き換える。さらに、累積バッファは、共有データ・ストアから割り当てられた出力バッファ空間と置き換えられる。一般的なプログラム可能性をもつ単一のユニットに機能を統合することにより、固定された機能ブロックを直接エミュレートする又は置き換える、或いは、それらを添付の出願により提供される任意のコードの部分と置き換えることができる非常に有能なシステムがもたらされる。
ここで、データ・マスター1820には、次のような特定の機能が割り当てられている。ピクセル・データ・マスター(PDM)1826は、図5のタイリングされたパラメータ・フェッチ1505及び隠面消去1506の機能を組み込む。PDMは、Nピクセルのブロックにおいてピクセル処理要求をDMS1806に与え、ここで、この例において、Nは4から128までの間にあり、ピクセル処理パイプラインが変化計算の速度を実施しなければならないという周知の方法により、4は必要とされる最小値である。ピクセル・データを処理するとき、PDS108内のオーバーハード(overheard)を最小にするために、各々のデータ・サービス要求は、多数のピクセルを表示する。PDMは、トライアングル・ラスター化のために必要とされるパラメータを座標イテレータ(iterator)1810にも送ることに留意すべきである。
頂点データ・マスター(VDM)1822は、外部メモリから入ってくるプリミティブをフェッチし、各々のデータ・サービス要求においてフェッチされるべき頂点についての索引を送る。VDMはまた、側波帯情報をタイリング・エンジン1862に直接送り、タイリング・エンジン1862が処理された頂点からプリミティブを正しく再構成することを可能にすることに留意すべきである。
イベント・データ・マスター(EDM)1824には、システム内の他のデータ・マスター及びホストからのイベントが提供され、処理システム・イベント及び一般的なコマンドのために、アーキテクチャを用いることが可能になり、これらのイベントをサービスするために、ホスト・プロセッサに割り込む必要性を回避する。
付加的なデータ・マスターをシステムに付加することができ、例えば、タイリングされたパラメータ・フェッチ・ユニットからの供給を取得するデータ・マスターを実装することができ、これをHSRユニット(事実上、別の処理パイプラインになる)に送る前に、フェッチされたプリミティブ・データを事前処理することが可能になる。この事前処理により、タイリングされたリストを処理して、タイリングされたプリミティブ・リストについての消費メモリを著しく減少させることを可能にしながら、高次面のようなプロシージャー型幾何学形状を生成することが可能になる。
ここで、処理パイプライン1860には特有の機能が割り当てられ、タイリング・エンジン1862、ピクセル処理1864、及びテキスチャリング・ユニット1866は、図5の同じユニットにちょうど匹敵する。
データ処理に対する手法は、使用可能な幾つかの付加的な機能と共に前に述べられたとおりである。具体的には、PDSは、今や、ピクセル・データについて、1組の座標イテレータ1810又はテキスチャリング・ユニット1866を介して、データを共有データ・ストアにロードすることもできる。
PDMのHSRユニットが、処理されるデータを有することをDMSに知らせるパスを生成するときはいつも、ピクセル処理が行なわれる。選択されたとき、PDS上で実行されるコードは、座標データ及びテキスチャ・データを共有データ・ストアの割り当てられた領域にロードする。システム内のデータ・インスタンスは、結果を共有データ・ストア内の割り当てられた出力バッファに格納する実行済みコードを有する単一のピクセルを表す。タイル全体が処理されるまで出力バッファはファイナライズされないので、ピクセル処理ユニット1864に対して、各々のピクセル・データ・インスタンスが出されないことに留意すべきである。発行されるタイル・データのために、タイルが終了したことを示すPDMからの信号によって、EDM1824が与えられる。次に、EDMは、タイル・データをピクセル処理ユニットに出すのに用いられるタスクを生成する。EDMを用いて、HSRユニットにより生成されるパス間でタスクを出すなど多くの他の目的のためにイベントを生成、各パス間のタイル・バッファのコンテンツで処理を行なうことを可能にできることに留意すべきである。例えば、終了したタイルを出すときに、付加的な処理を行なって、出されたデータについてのミップ・マップ(周知の技術)のレベルを生成できるといったイベントにおいて、任意の量又はタイプの処理を行なうことが可能であることに留意すべきである。
頂点処理は、前に述べたような一般的なデータ・ソースと類似した方法で機能し、処理された頂点ごとに、タイリング・エンジンに発行が行われる。
実施形態への更なる拡張において、アーキテクチャをスケーリングすることもできる。ピクセル処理の場合、図8に示されるように、このことは、各々のコアがタイルの異なる「セクタ」にマッピングされた、多数のメディア処理コアを定めることによって達成される。HSRユニットのタグ・バッファ2000から各々のPDM2020、2021専用のものであるタグ・ソータ2010、2011に可視タグが転送される場合に分割が生じ、このことにより、HSRユニットを前端部で分割する必要なしに、2つのパイプライン間の並列処理のレベルが最大になる。
これらの異なるセクタは重なり合わないので、これらは、本質的に、多数のパイプラインにわたって並行して処理することができる。一般的には、パイプラインの数が増大されるにつれて、タイル・サイズは、取り付けられたパイプの数に比例して増大され、例えば、単一のパイプラインが、16×16のタイル上で機能するHSRユニットに取り付けられた場合、2つのパイプラインは、32×16のタイル上で機能するHSRユニットに取り付けられ、以下同様である。代替的に、セクタのサイズを低減させ、タイル・サイズが一定に保持されることを可能にできるが、このことにより、各パイプライン内のピクセル・データを処理する際の効率が低減される。
一般的に言うと、HSRの性能が飽和されるまで、すなわちその性能をさらにスケーリングすることが困難になるまで、パイプラインの数を合致させるようにタイル・サイズをスケーリングする手法を続けることができる。この時点で、多数の並列HSRユニットを定めることによって、スケーリングを続けることができる。
頂点処理の場合、使用可能なパイプラインにわたって入ってくるプリミティブ・データを分散させることによって、スケーラビリティを達成することができる。一般に、このことは、簡単なラウンドロビン機構を用いて、又は、最も忙しくないパイプラインに頂点のブロックを送ることによって行なわれる。ラウンドロビン機構は、パイプラインにおいて後にタイリング機構を簡単化するので、好ましいものである。
図9は、2つのパイプライン・システムについての構成を示す。パイプ1 2250及びパイプ2 2251の各々は、明確さの助けになるように前に別個に説明されたCGS及びMTMPの両方を表す。
前述のように、HSTユニット2200は、入ってくるタイリングされたパラメータ・リストを処理する。上述のように、ピクセル・データ・マスター2230及び2231は、それぞれHSRユニットのタグ・バッファの異なる部分にマッピングされる。各々のPDMは、特有のメディア処理コア2250、2251専用のものである。テキスチャリング・パイプライン(2260、2261)及びピクセル処理パイプライン(2270、2271)は、メディア処理コアと共に複製される。前に述べられたように、タイルが終了すると、処理されたピクセル・データは、MTMPのものからピクセル処理ユニット2270、2271に送られる。ピクセル処理ユニットは、それらの割り当てがメモリ内に格納されたピクセルに対して重ならならず、それらをピクセル処理パイプラインの残りと共に直接スケーラブルにするので、処理ユニットと共に複製される。
頂点データ・マスター2210及びイベント・データ・マスター2220の各々は、サービス要求をプリスケジューラ2240に与える。プリスケジューラは、データ・マスター(VDM、EDM)の各々について取り付けられたパイプラインごとにサービス・キューを維持する。キューは、単純なラウンドロビン順序で満たされるので、処理要求は、取り付けられたパイプラインにわたって均等に分散される。上述のように、処理された頂点は、MTMPから、これらを、タイリング・プロセスを適用する前にVDMによって生成されたプリミティブ・データと再結合させるタイリング・ユニットに送られる7。
上述の本発明の実施形態の、提案されたスケジューリング・フェーズを示す。 本発明を具体化する改善されたマルチメディア処理アーキテクチャを示す。 図2のアーキテクチャの詳細な図である。 図3のスレッド・マネージャ内のスレッドの状態を示す。 典型的な、タイル・ベース・レンダリング・システムを示す。 本発明の一実施形態を用いることができる、タイル・ベース・レンダリング・システム内の典型的なHSRユニットを示す。 本発明の一実施形態を用いて実施される、タイル・ベース・レンダリング・システムを示す。 ピクセル・データ・マスター(PDM)マッピングに対するタイル・セクタを示す。 2つのパイプラインにスケーリングされたシステムを示す。

Claims (63)

  1. 複数の実行スレッドにおいて多数のデータ・ストリームを処理する方法であって、
    データ記憶手段内の記憶の可用性に基づいて、複数のデータ・ソースの少なくとも1つからデータを選択し、
    そのように選択された前記データについての、前記データ記憶手段内のアドレスを割り当て、
    そのように割り当てられた前記データ・アドレスにおいて選択されたデータをロードし、
    前記選択されたデータ・ソース、前記データ・アドレス、及び実行アドレスを含む実行タスクを構成し、
    前に構成された他のタスクと共に前記タスクをキューに入れ、
    各々のタスクについてどの処理リソースが必要とされるかを判断し、
    使用可能な前記処理リソースに基づいて、実行のためのタスクを選択し、
    複数の処理スレッドにわたって実行のための選択されたタスクを分散させ、
    データ依存性のために前記スレッドのいずれかが停止するかどうかを判断し、
    前記データ依存性のために停止することはない、アクティブなスレッドのサブセットを繰り返し選択し、
    アクティブなスレッドを実行する、
    ステップを含むことを特徴とする方法。
  2. 各々のデータ・ソースは、各々が前記データ・ソースのいずれかにおける他のデータと無関係に処理することが可能なデータの量である、複数のデータ・インスタンスを含むことを特徴とする請求項1に記載の方法。
  3. 各々のデータ・ソースは、最小のデータ・インスタンス・カウントを、前記選択するステップに提供することを特徴とする請求項2に記載の方法。
  4. データ・ソースは、前記最小のデータ・インスタンス・カウントに基づいて選択されることを特徴とする請求項3に記載の方法。
  5. 前記選択するステップは、データ・ソースから複数のデータ・インスタンスを選択し、それらを前記割り当てるステップ及び前記ロードするステップに提供し、タスクを構成することを特徴とする請求項2、請求項3、又は請求項4に記載の方法。
  6. 前記実行のためのタスクを選択するステップは、タスクの実行依存性に基づいてタスクを選択することを特徴とする、前記請求項のいずれかに記載の方法。
  7. 前記実行依存性は、外部依存性及び内部依存性を含むことを特徴とする請求項6に記載の方法。
  8. 実行依存性を有するタスクをブロックするステップを含むことを特徴とする請求項6又は請求項7に記載の方法。
  9. 前記タスクを分散させるステップは、タスクから複数の実行スレッドにデータ・インスタンスを分散させるステップを含むことを特徴とする前記請求項のいずれかに記載の方法。
  10. タスクの実行が拒否されるたびに、タスクについての年齢カウンタを増加させるステップを含むことを特徴とする前記請求項のいずれかに記載の方法。
  11. 前記年齢カウンタが所定値を超えたときにタスクを実行するステップを含むことを特徴とする請求項10に記載の方法。
  12. タイル・ベース・レンダリング・システムにおいて用いるための前記請求項のいずれかに記載の方法。
  13. 前記選択されたデータをロードするステップは、コード実行アドレスをプログラム可能なデータ・シーケンサ(PDS)に提供し、前記コード実行アドレスからのコードを実行して、前記データを前記データ記憶手段に書き込ませるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
  14. 前記コードの前記実行により、データが、前記データ・ソースから前記データ記憶手段に直接書き込まれることを特徴とする請求項13に記載の方法。
  15. 前記コードの前記実行により、データが、別のデータ記憶場所からフェッチされ、前記データ記憶手段に書き込まれることを特徴とする、請求項13又は請求項14に記載の方法。
  16. 前記PDSは、マルチスレッド型処理手段におけるスレッドを含むことを特徴とする請求項13、請求項14、又は請求項15に記載の方法。
  17. データ・ソースが選択されるたびに、前記記憶手段内の入力データ記憶を割り当てるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
  18. データ・ソースは、同じ出力バッファを共有する複数のデータ・インスタンスを含み、前記同じ出力バッファ要件を共有する前記データ・インスタンスが使い果たされたことを前記データ・ソースが知らせるまで、これらのデータ・インスタンスの第1のものだけにおいて出力データ記憶を割り当てることを特徴とする請求項2に記載の方法。
  19. 前記方法は、複数の処理コア上で実行され、異なる処理コアを異なるタイルの部分に割り当てるステップを含むことを特徴とする請求項12に記載の方法。
  20. 前記複数の処理コアから入手可能なプロセッサ・パイプラインの数に基づいて、前記タイルのサイズを選択するステップを含むことを特徴とする請求項19に記載の方法。
  21. 頂点データを受け取り、これを使用可能な前記プロセッサ・パイプラインにわたって分散させるステップを含むことを特徴とする請求項20に記載の方法。
  22. ピクセル・データを受け取り、これを使用可能な前記プロセッサ・パイプラインにわたって分散させるステップを含むことを特徴とする請求項20又は請求項21に記載の方法。
  23. 前記コードの実行により、テキスチャ座標又はイテレータ内で反復される他のデータが、前記データ記憶手段に直接書き込まれることを特徴とする請求項13に記載の方法。
  24. 前記コードの実行により、テキスチャ・データがサンプリングされ、フィルタにかけられ、前記データ記憶手段に書き込まれることを特徴とする請求項13に記載の方法。
  25. 多数のデータ・ストリームを処理するための装置であって、
    複数のデータ・ソースと、
    データ記憶手段内の記憶の可用性に基づいて、前記複数のデータ・ソースからデータ・ソースを選択するための手段と、
    選択されたデータ・ソースについての、前記データ記憶手段内のアドレスを割り当てるための手段と、
    前記選択されたデータ・ソースについてのデータを前記記憶手段内の前記アドレスにロードするための手段と、
    前記選択されたデータ・ソース、実行アドレス、及び前記データ・アドレスを含む、実行されるタスクを構成するための手段と、
    構成されたタスクについてのタスク・キューと、
    処理リソースの可用性に基づいて、実行のためのタスクを選択するための手段と、
    選択されたタスクを複数の実行スレッドにわたって分散させるための手段と、
    データ依存性のためにいずれかのスレッドが停止するかどうかを判断するための手段と、
    前記データ依存性のために停止することはない、アクティブなスレッドのサブセットを繰り返し選択するための手段と、
    アクティブなスレッドを実行するための手段と、
    を備えることを特徴とする装置。
  26. 各々のデータ・ソースは、各々が前記データ・ソースのいずれかの中の他のデータを参照することなく処理できるデータ量である、複数のデータ・インスタンスを含むことを特徴とする請求項25に記載の装置。
  27. 各々のデータ・ソースは、最小のデータ・インスタンス・カウントを、前記選択する手段に提供することを特徴とする請求項26に記載の装置。
  28. 前記選択する手段は、前記最小のデータ・インスタンス・カウントに基づいて、データ・ソースを選択することを特徴とする請求項27に記載の装置。
  29. 前記選択する手段は、前記データ・ソースから複数のデータ・インスタンスを選択し、前記タスク構成手段によって使用するために、これらを前記割り当てる手段及び前記ロードする手段に提供することを特徴とする、請求項26、請求項27、又は請求項28のいずれかに記載の装置。
  30. 前記選択する手段は、タスクの実行依存性に基づいて、実行のためのタスクを選択することを特徴とする、請求項25から請求項29までのいずれかに記載の装置。
  31. 前記実行依存性は、外部依存性及び内部依存性を含むことを特徴とする請求項30に記載の装置。
  32. 実行依存性を有するタスクをブロックするための手段を含むことを特徴とする、請求項30又は請求項31に記載の装置。
  33. 前記タスクを分散させるための手段は、タスクから複数の実行スレッドにデータ・インスタンスを分散させるための手段を含むことを特徴とする、請求項25から請求項32までのいずれかに記載の装置。
  34. タスクの実行が拒否されるたびに、タスクについての年齢カウンタを増加させるための手段を含むことを特徴とする、請求項25から請求項33までのいずれかに記載の装置。
  35. 前記実行する手段は、その年齢カウンタが所定値を超えたときにタスクを実行することを特徴とする請求項34に記載の装置。
  36. タイル・ベース・レンダリング・システムで用いるための請求項25から請求項35までのいずれかに記載の装置。
  37. コード実行アドレスをプログラム可能なデータ・シーケンサ(PDS)に提供するための手段と、前記コード実行アドレスからの前記コードを実行して、データを前記データ記憶手段に書き込ませるための手段とを含むことを特徴とする、請求項25から請求項36までのいずれかに記載の装置。
  38. 前記コードを実行するための前記手段により、データが、前記データ・ソースから前記データ記憶手段に直接書き込まれることを特徴とする請求項37に記載の装置。
  39. 前記コードを実行するための前記手段により、データが、別のデータ記憶場所からフェッチされ、前記データ記憶手段に書き込まれることを特徴とする請求項37に記載の装置。
  40. 前記コードを実行するための前記手段により、テキスチャ座標又は反復ユニット内で反復される他のデータが、前記データ記憶手段に直接書き込まれることを特徴とする請求項37に記載の装置。
  41. 前記コードを実行するための前記手段により、テキスチャ・データがサンプリングされ、フィルタにかけられ、テキスチャリング・エンジンにより前記データ記憶手段に書き込まれることを特徴とする請求項37に記載の装置。
  42. 前記PDSは、マルチスレッド型プロセッサにおけるスレッドを含むことを特徴とする請求項37に記載の装置。
  43. データ記憶装置内のアドレスを割り当てるための前記手段は、データ・ソースが選択されるたびにアドレスを割り当てることを特徴とする、請求項25から請求項42までのいずれかに記載の装置。
  44. データ・ソースは、同じ出力バッファを共有する複数のデータ・インスタンスを含み、データ記憶を割り当てるための前記手段は、前記同じ出力バッファを共有する前記データ・インスタンスが使い果たされたことを前記データ・ソースが知らせるまで、これらのデータ・インスタンスの第1のものだけにおいて出力バッファのデータ記憶を割り当てることを特徴とする請求項37に記載の装置。
  45. 各々が異なるタイルの部分に割り当てられた、複数のマルチスレッド型プロセッサ・コアを含むことを特徴とする請求項36に記載の装置。
  46. 選択される前記タイルのサイズは、前記複数のプロセッサ・コアから入手可能なプロセッサ・パイプラインの数に依存することを特徴とする請求項45に記載の装置。
  47. プレスケジューラが頂点データを受け取り、これを使用可能なプロセッサ・パイプラインにわたって分散させるための手段を含むことを特徴とする、請求項45又は請求項46に記載の装置。
  48. プリスケジューラがデータを受け取り、これを使用可能なプロセッサ・パイプラインにわたって分散させることを特徴とする、請求項45、請求項46、又は請求項47のいずれかに記載の装置。
  49. マルチスレッド型データ処理システムにおいてデータ記憶を割り当てる方法であって、
    データ記憶の可用性に基づいて、複数のデータ・ソースの1つからデータを選択し、コード実行アドレスをプログラム可能なデータ・シーケンサに与え、前記コード実行アドレスからのコードを実行して、データを前記データ記憶手段に書き込ませるステップを含むことを特徴とする方法。
  50. 前記コードの前記実行により、データが、前記データ・ソースから前記データ記憶手段に直接書き込まれることを特徴とする請求項49に記載の方法。
  51. 前記コードの前記実行により、データが、別のデータ記憶場所からフェッチされ、前記データ記憶手段に書き込まれることを特徴とする、請求項49又は請求項50に記載の方法。
  52. 前記プログラム可能なデータ・シーケンサは、マルチスレッド型処理システムにおけるスレッドを含むことを特徴とする、請求項49、請求項50、又は請求項51に記載の方法。
  53. データ・ソースが選択されるたびに、前記データ記憶手段内の入力データ記憶が割り当てられることを特徴とする、請求項49から請求項52までのいずれかに記載の方法。
  54. データ・ソースは、同じ出力バッファ要件を共有する複数のデータ・インスタンスを含み、前記同じ出力バッファ要件を共有する前記データ・インスタンスが使い果たされたことを前記データ・ソースが知らせるまで、これらのデータ・インスタンスの第1のものだけにおいて出力バッファのデータ記憶が前記データ記憶手段内に割り当てられることを特徴とする、請求項49から請求項53までに記載の方法。
  55. 前記コードの前記実行により、テキスチャ座標又は反復ユニット内で反復される他のデータが、前記データ記憶手段に書き込まれることを特徴とする請求項49に記載の方法。
  56. 前記コードの前記事項により、テキスチャ・データがサンプリングされ、フィルタにかけられ、前記データ記憶手段に書き込まれることを特徴とする請求項49に記載の方法。
  57. 各々がタイルの異なるセクタに割り当てられた、複数のマルチスレッド型プロセッサ・コアを含むことを特徴とする、タイル・ベース型コンピュータ・グラフィックス・レンダリング・システム。
  58. 選択された前記タイルのサイズは、前記プロセッサ・コアから使用可能なプロセッサ・パイプラインの数に基づいていることを特徴とする請求項57に記載のシステム。
  59. プレスケジューラが頂点データを受け取り、この頂点データを使用可能なプロセッサ・パイプラインにわたって分散させることを特徴とする請求項58に記載のシステム。
  60. プレスケジューラがデータを受け取り、このデータを使用可能なプロセッサ・パイプラインにわたって分散させることを特徴とする、請求項58又は請求項59に記載のシステム。
  61. 複数の実行スレッドにおいて多数のデータ・ストリームを処理する方法であって、
    データ記憶手段内の記憶の可用性に基づいて、複数のデータ・ソースの少なくとも1つからデータを選択し、
    そのように選択された前記データについての、前記データ記憶手段内のアドレスを割り当て、
    そのように割り当てられた前記データ・アドレスにおいて選択されたデータをロードし、
    前記選択されたデータ・ソース、前記データ・アドレス、及び実行アドレスを含む実行タスクを構成し、
    前に構成された他のタスクと共に前記タスクをキューに入れ、
    各々のタスクについてどの処理リソースが必要とされるかを判断し、
    使用可能な前記処理リソースに基づいて、実行のためのタスクを選択し、
    複数の処理スレッドにわたって実行のための選択されたタスクを分散させる、
    ステップを含むことを特徴とする方法。
  62. 多数のデータ・ストリームを処理するための装置であって、
    複数のデータ・ソースと、
    データ記憶手段内の記憶の可用性に基づいて、前記複数のデータ・ソースからデータ・ソースを選択するための手段と、
    選択されたデータ・ソースについての、前記データ記憶手段内のアドレスを割り当てるための手段と、
    前記選択されたデータ・ソースについてのデータを前記記憶手段内の前記アドレスにロードするための手段と、
    前記選択されたデータ・ソース、実行アドレス、及び前記データ・アドレスを含む、実行されるタスクを構成するための手段と、
    構成されたタスクについてのタスク・キューと、
    処理リソースの可用性に基づいて、実行のためのタスクを選択するための手段と、
    選択されたタスクを複数の実行スレッドにわたって分散させるための手段と、
    データ依存性のためにいずれかのスレッドが停止するかどうかを判断するための手段と、
    を備えることを特徴とする装置。
  63. マルチスレッド型処理システムにおいてデータ記憶を割り当てるための装置であって、
    データ記憶の可用性に基づいて、複数のデータ・ソースの1つからデータを選択するための手段と、
    コード実行アドレスをプログラム可能なデータ・シーケンサに提供するための手段と、
    前記コード実行アドレスからの前記コードを実行し、データを前記データ記憶装置に書き込ませるための手段と、
    を備えることを特徴とする装置。
JP2008532869A 2005-09-26 2006-09-26 スケーラブルなマルチスレッド型メディア処理アーキテクチャ Active JP5202319B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0519597.9A GB0519597D0 (en) 2005-09-26 2005-09-26 Scalable multi-threaded media processing architecture
GB0519597.9 2005-09-26
PCT/GB2006/003603 WO2007034232A2 (en) 2005-09-26 2006-09-26 Scalable multi-threaded media processing architecture

Publications (2)

Publication Number Publication Date
JP2009512917A true JP2009512917A (ja) 2009-03-26
JP5202319B2 JP5202319B2 (ja) 2013-06-05

Family

ID=35335465

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008532869A Active JP5202319B2 (ja) 2005-09-26 2006-09-26 スケーラブルなマルチスレッド型メディア処理アーキテクチャ

Country Status (5)

Country Link
US (1) US8046761B2 (ja)
EP (2) EP1932077B1 (ja)
JP (1) JP5202319B2 (ja)
GB (2) GB0519597D0 (ja)
WO (1) WO2007034232A2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
GB2442266B (en) * 2006-09-29 2008-10-22 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
US9965886B2 (en) * 2006-12-04 2018-05-08 Arm Norway As Method of and apparatus for processing graphics
GB0723536D0 (en) 2007-11-30 2008-01-09 Imagination Tech Ltd Multi-core geometry processing in a tile based rendering system
GB2458488C (en) 2008-03-19 2018-09-12 Imagination Tech Ltd Untransformed display lists in a tile based rendering system
CN101650787A (zh) * 2008-08-13 2010-02-17 鸿富锦精密工业(深圳)有限公司 仿生老化系统及其老化方法
WO2010058246A1 (en) * 2008-11-24 2010-05-27 Freescale Semiconductor, Inc. Management of multiple resource providers
GB0900700D0 (en) * 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
EP2253233A1 (en) * 2009-05-21 2010-11-24 Philip Morris Products S.A. An electrically heated smoking system
GB201004673D0 (en) * 2010-03-19 2010-05-05 Imagination Tech Ltd Processing of 3D computer graphics data on multiple shading engines
US9311102B2 (en) * 2010-07-13 2016-04-12 Advanced Micro Devices, Inc. Dynamic control of SIMDs
US9158610B2 (en) * 2011-08-04 2015-10-13 Microsoft Technology Licensing, Llc. Fault tolerance for tasks using stages to manage dependencies
US8949853B2 (en) * 2011-08-04 2015-02-03 Microsoft Corporation Using stages to handle dependencies in parallel tasks
JP5894496B2 (ja) * 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US9317948B2 (en) 2012-11-16 2016-04-19 Arm Limited Method of and apparatus for processing graphics
US9207944B1 (en) 2013-03-15 2015-12-08 Google Inc. Doubling thread resources in a processor
US10204391B2 (en) 2013-06-04 2019-02-12 Arm Limited Method of and apparatus for processing graphics
US9824414B2 (en) * 2014-12-09 2017-11-21 Intel Corporation Thread dispatching for graphics processors
GB201505067D0 (en) * 2015-03-25 2015-05-06 Advanced Risc Mach Ltd Rendering systems
GB2553744B (en) 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
US10115223B2 (en) * 2017-04-01 2018-10-30 Intel Corporation Graphics apparatus including a parallelized macro-pipeline
EP3843045B1 (en) * 2020-05-28 2022-06-22 Imagination Technologies Limited Task merging
US11048553B1 (en) * 2020-09-14 2021-06-29 Gunther Schadow Processing of messages and documents carrying business transactions

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002502801A (ja) * 1998-02-13 2002-01-29 ダイムラークライスラー・アクチェンゲゼルシャフト 繊維強化複合材料の製造方法
WO2002067116A2 (en) * 2001-02-19 2002-08-29 Imagination Technologies Limited Control of priority and instruction rates on a multithreaded processor
JP2002528786A (ja) * 1998-08-24 2002-09-03 マイクロユニティ システムズ エンジニアリング インコーポレイテッド ワイド・オペランド・アーキテクチャを含むシステムおよび方法
JP2002532801A (ja) * 1998-12-16 2002-10-02 クリアウオーター・ネツトワークス・インコーポレイテツド マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング
JP2002540505A (ja) * 1999-03-22 2002-11-26 クリアウオーター・ネツトワークス・インコーポレイテツド マルチストリーミングデジタルプロセッサ用のストリーム間制御および通信
JP2004518183A (ja) * 2000-07-14 2004-06-17 クリアウオーター・ネツトワークス・インコーポレイテツド マルチスレッド・システムにおける命令のフェッチとディスパッチ
JP2005182825A (ja) * 2003-12-18 2005-07-07 Nvidia Corp マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ
JP2008521097A (ja) * 2004-11-15 2008-06-19 エヌヴィディア コーポレイション ビデオ処理
JP2008524720A (ja) * 2004-12-20 2008-07-10 エヌヴィディア コーポレイション プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948050B1 (en) * 1989-11-17 2005-09-20 Texas Instruments Incorporated Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware
US5517631A (en) * 1991-02-01 1996-05-14 Quantum Corporation Miniature disk drive having embedded sector servo with split data fields and automatic on-the-fly data block sequencing
US5412788A (en) * 1992-04-16 1995-05-02 Digital Equipment Corporation Memory bank management and arbitration in multiprocessor computer system
US5339413A (en) * 1992-08-21 1994-08-16 International Business Machines Corporation Data stream protocol for multimedia data streaming data processing system
JP3696901B2 (ja) * 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
GB2336982B (en) * 1995-01-31 2000-01-19 Videologic Ltd Improvements relating to computer 3D rendering systems
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6272600B1 (en) 1996-11-15 2001-08-07 Hyundai Electronics America Memory request reordering in a data processing system
JPH10333925A (ja) * 1997-02-27 1998-12-18 Zuno Ltd オートノマス・エージェント・アーキテクチャ
US5860018A (en) * 1997-06-25 1999-01-12 Sun Microsystems, Inc. Method for tracking pipeline resources in a superscalar processor
US6044429A (en) * 1997-07-10 2000-03-28 Micron Technology, Inc. Method and apparatus for collision-free data transfers in a memory device with selectable data or address paths
US6343352B1 (en) 1997-10-10 2002-01-29 Rambus Inc. Method and apparatus for two step memory write operations
US6418458B1 (en) * 1998-10-02 2002-07-09 Ncr Corporation Object-oriented prioritized work thread pool
DE19846274A1 (de) * 1998-10-08 2000-04-20 Alcatel Sa Verfahren zur Durchführung von kooperativem Multitasking in einem Nachrichtenübertragungsnetz und Netzelement dafür
US6359623B1 (en) * 1998-11-12 2002-03-19 Hewlett-Packard Company Method and apparatus for performing scan conversion in a computer graphics display system
US20010042187A1 (en) 1998-12-03 2001-11-15 Marc Tremblay Variable issue-width vliw processor
JP2001167060A (ja) * 1999-12-07 2001-06-22 Hitachi Ltd タスク並列化方法
US6523098B1 (en) * 1999-12-22 2003-02-18 Intel Corporation Mechanism for efficient low priority write draining
US6728862B1 (en) * 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
IL137085A (en) * 2000-06-29 2004-08-31 Eci Telecom Ltd Method for effective utilizing of shared resources in computerized systems
CA2416053C (en) 2000-07-19 2008-11-18 Novatek Engineering Inc. Downhole data transmission system
US7401211B2 (en) * 2000-12-29 2008-07-15 Intel Corporation Method for converting pipeline stalls caused by instructions with long latency memory accesses to pipeline flushes in a multithreaded processor
US7539625B2 (en) * 2004-03-17 2009-05-26 Schlumberger Technology Corporation Method and apparatus and program storage device including an integrated well planning workflow control system with process dependencies
US7430654B2 (en) * 2003-07-09 2008-09-30 Via Technologies, Inc. Dynamic instruction dependency monitor and control system
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
US7114060B2 (en) * 2003-10-14 2006-09-26 Sun Microsystems, Inc. Selectively deferring instructions issued in program order utilizing a checkpoint and multiple deferral scheme
US7614054B2 (en) * 2003-12-31 2009-11-03 Intel Corporation Behavioral model based multi-threaded architecture
US6940514B1 (en) * 2004-04-26 2005-09-06 Sun Microsystems, Inc. Parallel initialization path for rasterization engine
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002502801A (ja) * 1998-02-13 2002-01-29 ダイムラークライスラー・アクチェンゲゼルシャフト 繊維強化複合材料の製造方法
JP2002528786A (ja) * 1998-08-24 2002-09-03 マイクロユニティ システムズ エンジニアリング インコーポレイテッド ワイド・オペランド・アーキテクチャを含むシステムおよび方法
JP2002532801A (ja) * 1998-12-16 2002-10-02 クリアウオーター・ネツトワークス・インコーポレイテツド マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング
JP2002540505A (ja) * 1999-03-22 2002-11-26 クリアウオーター・ネツトワークス・インコーポレイテツド マルチストリーミングデジタルプロセッサ用のストリーム間制御および通信
JP2004518183A (ja) * 2000-07-14 2004-06-17 クリアウオーター・ネツトワークス・インコーポレイテツド マルチスレッド・システムにおける命令のフェッチとディスパッチ
WO2002067116A2 (en) * 2001-02-19 2002-08-29 Imagination Technologies Limited Control of priority and instruction rates on a multithreaded processor
JP2005182825A (ja) * 2003-12-18 2005-07-07 Nvidia Corp マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ
JP2008521097A (ja) * 2004-11-15 2008-06-19 エヌヴィディア コーポレイション ビデオ処理
JP2008524720A (ja) * 2004-12-20 2008-07-10 エヌヴィディア コーポレイション プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7012000950; 'PowerVR stellt SGX-Chip mit Unified Shader vor' Computer Base , 200508 *

Also Published As

Publication number Publication date
JP5202319B2 (ja) 2013-06-05
US8046761B2 (en) 2011-10-25
GB0519597D0 (en) 2005-11-02
US20070101013A1 (en) 2007-05-03
GB2430513B (en) 2009-12-30
WO2007034232A2 (en) 2007-03-29
WO2007034232A3 (en) 2008-01-24
EP3367237A1 (en) 2018-08-29
GB0618972D0 (en) 2006-11-08
EP1932077B1 (en) 2018-04-25
EP1932077A2 (en) 2008-06-18
GB2430513A (en) 2007-03-28

Similar Documents

Publication Publication Date Title
JP5202319B2 (ja) スケーラブルなマルチスレッド型メディア処理アーキテクチャ
US20210049729A1 (en) Reconfigurable virtual graphics and compute processor pipeline
US20210349763A1 (en) Technique for computational nested parallelism
US8144149B2 (en) System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US10032242B2 (en) Managing deferred contexts in a cache tiling architecture
US10095526B2 (en) Technique for improving performance in multi-threaded processing units
US7634637B1 (en) Execution of parallel groups of threads with per-instruction serialization
US9293109B2 (en) Technique for storing shared vertices
US9286119B2 (en) System, method, and computer program product for management of dependency between tasks
US10002031B2 (en) Low overhead thread synchronization using hardware-accelerated bounded circular queues
US8533435B2 (en) Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict
US9495721B2 (en) Efficient super-sampling with per-pixel shader threads
US7366842B1 (en) Creating permanent storage on the fly within existing buffers
US8564604B2 (en) Systems and methods for improving throughput of a graphics processing unit
US9418616B2 (en) Technique for storing shared vertices
CN108305313B (zh) 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法
KR20120058605A (ko) Gpu 워크의 하드웨어 기반 스케쥴링
US7747842B1 (en) Configurable output buffer ganging for a parallel processor
KR20130123645A (ko) 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법
TW201435581A (zh) 透過管線狀態繫結觸發的效能事件擷取
US9697044B2 (en) Application programming interface to enable the construction of pipeline parallel programs
US9594599B1 (en) Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors
CN114968549A (zh) 用于向任务分配资源的方法和设备
US9406101B2 (en) Technique for improving the performance of a tessellation pipeline
US8976185B2 (en) Method for handling state transitions in a network of virtual processing nodes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120619

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130104

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130110

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130212

R150 Certificate of patent or registration of utility model

Ref document number: 5202319

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250