JP2002183750A - レンダリングシステム及びレンダリング方法 - Google Patents

レンダリングシステム及びレンダリング方法

Info

Publication number
JP2002183750A
JP2002183750A JP2001305961A JP2001305961A JP2002183750A JP 2002183750 A JP2002183750 A JP 2002183750A JP 2001305961 A JP2001305961 A JP 2001305961A JP 2001305961 A JP2001305961 A JP 2001305961A JP 2002183750 A JP2002183750 A JP 2002183750A
Authority
JP
Japan
Prior art keywords
command
rendering
queue
data transfer
register
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.)
Withdrawn
Application number
JP2001305961A
Other languages
English (en)
Inventor
Mark O Yeager
マーク・オー・イーガー
Kenneth W Correll
ケニス・ダブリュ・コレル
Steven Kerzner
スティーヴン・カーズナー
Hugh C Lauer
ヒュー・シー・ラウアー
Larry D Seiler
ラリー・ディー・シーラー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TeraRecon Inc Japan Branch
Original Assignee
TeraRecon Inc Japan Branch
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 TeraRecon Inc Japan Branch filed Critical TeraRecon Inc Japan Branch
Publication of JP2002183750A publication Critical patent/JP2002183750A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【課題】 長時間にわたるレンダリング動作およびデー
タ転送動作を時間的に重複させることができ、かつ、個
々の動作を互いに同期させることができるレンダリング
システムを得る。 【解決手段】 グラフィックデータをレンダリングする
ためのレンダリングシステムは、データ転送コマンドと
レンダリングコマンドとを生成するホストプロセッサ
と、コマンドキューにデータ転送コマンドとレンダリン
グコマンドとを格納するメモリとを備える。そのシステ
ムのコマンドパーサは、そのコマンドキューのデータ転
送コマンドとレンダリングコマンドとを同時に構文解析
し、かつ処理し、同期機構を用いて、同時に行われるデ
ータ転送コマンドおよびレンダリングコマンドの構文解
析および処理を同期させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータグラフ
ィックスの分野に関し、特に、並列パイプラン式のレン
ダリングシステムにおいてグラフィックデータをレンダ
リングすることに関する。
【0002】
【従来の技術】コンピュータグラフィックスアプリケー
ションにおいて、3次元データを視覚化する必要がある
とき、多くの場合にボリュームレンダリングが用いられ
る。そのボリュームデータには、物理的または医学的対
象物、あるいは大気、地理あるいは他の科学的モデルの
走査データを用いることができ、その場合には、データ
の視覚化によって、データによって表される根底をなす
現実世界の構造を理解しやすくなる。
【0003】ボリュームレンダリングを用いると、物理
的な物体およびモデルの内部構造ならびに外部表面の特
徴が視覚化される。ボクセルは通常、ボリュームレンダ
リングにおいて用いられる基本的なデータ項目である。
ボクセルは、その物体あるいはモデルの特定の3次元部
分に関連する。各ボクセルの座標(x,y,z)は、ボ
クセルを、表現される物体あるいはモデル内の位置にマ
ッピングする。
【0004】ボクセルは、その物体あるいはモデルの特
定の位置に関連する1つあるいは複数の値を表す。従来
技術によるボリュームレンダリングシステムでは、ボク
セルによって表される値には、密度、組織タイプ、弾性
あるいは速度のような多数の異なるパラメータのうちの
特定の1つのパラメータを用いることができる。レンダ
リング中に、ボクセルは、その強度値に応じた色および
不透明度(RBGα)値に変換される。その値は、視認
するために2次元の画像平面上に投影することができ
る。
【0005】レンダリング中に頻繁に用いられる1つの
技術はレイキャスティングである。その場合、1組の仮
想的なレイ(視線)が、ボクセルのアレイを通して投影
される。レイはいくつかの視点あるいは画像平面から生
じる。ボクセルの強度値はレイに沿った点でサンプリン
グされ、サンプリングされる値を画素値に変換するため
に種々の技術が知られている。
【0006】Burgess等による1999年5月20日出
願の米国特許出願第09/315,742号、タイトル
「Volume rendering integrated circuit」が、参照し
て本明細書に援用される。そこでは、簡単な従来技術の
ボリュームレンダリングシステムが記載される。そのレ
ンダリングシステムは、相互接続バスによってボリュー
ムグラフィックスボード(VGB)に接続されるホスト
プロセッサを備える。そのホストプロセッサには、バス
を含む任意の種類のパーソナルコンピュータあるいはワ
ークステーションを用いることができる。そのホスト
は、ホストメモリあるいはメインメモリを備える。ホス
トメモリには、メインメモリ、キャッシュメモリおよび
ディスクメモリのような、プロセッサが利用可能な内部
あるいは外部の記憶装置の任意の組み合わせを用いるこ
とができる。
【0007】VGBはボリュームレンダリングチップ
(VRC)に接続されるボクセルメモリとピクセルメモ
リとを備える。VRCは、リアルタイムでインタラクテ
ィブなボリュームレンダリング動作に必要な全てのロジ
ックを備える。VRCは、4つの相互に接続されるレン
ダリングパイプラインを含む。基本的には、VGBはホ
ストのためのレンダリングエンジンあるいは「グラフィ
ックスアクセラレータ」を提供する。
【0008】動作中に、ホスト内で実行されるアプリケ
ーションソフトウエアが、レンダリングのために、ボリ
ュームデータをVGBに転送する。詳細には、ボクセル
データは、ホストメモリからバスを介してボクセルメモ
リに転送される。またアプリケーションは、ボクセルメ
モリ内の分類テーブルのような別のデータも格納する。
またアプリケーションは、パイプラインによってアクセ
ス可能なレンダリングレジスタをロードする。これらの
レジスタは、そのレンダリングが如何に実行されること
になるかを指定する。全てのデータがロードされた後
に、アプリケーションは、レンダリング動作を開始する
ためにコマンドを生成する。パイプラインはそのレンダ
リングコマンドを実行する。レンダリング動作が完了す
ると、出力装置上で表示するために、出力画像がピクセ
ルメモリからホストあるいは3Dグラフィックスカード
に移動する。Burgessのシステムでは、主な動作は逐次
的に行われる。すなわち、そのシステムは、ホストから
VGBにボクセルデータを書き込み、VRCにおいてレ
ンダリングを実行し、その後、VGBからホストにピク
セルデータを書き込む。
【0009】しかしながら、さらに複雑なレンダリング
動作の場合、メモリ転送とレンダリング動作とを重複し
て行うか、あるいは以前のレンダリング動作が依然とし
て進行している間に、1つのレンダリング動作を開始す
ることが望ましい場合がある。さらに、効率上の理由に
より、ホストにおいて実行されているアプリケーション
あるいは他のソフトウエアによって割り込まれたり、介
入されたりすることなく、あるレンダリング動作から次
のレンダリング動作まで進行することが望ましい場合が
ある。同様に、ソフトウエアによる割込みあるいは介入
が生じることなく、レンダリング動作の完了からデータ
転送の開始まで進行することが望ましい場合がある。
【0010】たとえば、パイプラインが現在のボリュー
ムをレンダリングしている間に、以前のボリュームのレ
ンダリングから生成された画像をホストに転送して戻
し、レンダリングされることになる次のボリュームをロ
ードすることができるであろう。この状況では、次のボ
リュームのためのレンダリング動作は、そのボリューム
が完全にロードされるまで開始することを禁止され、画
像のデータ転送は、その画像を生成するレンダリング動
作が完了するまで開始してはならない。この状況は、デ
ータの移動が、埋め込まれた多角形構造を含むときに、
急激に、さらに一層複雑になる。なぜなら、これが、レ
ンダリングを開始する前にロードされなければならない
種々のデータ源の数を増加させるためである。
【0011】
【発明が解決しようとする課題】それゆえ、本発明の目
的は、長時間にわたるレンダリング動作およびデータ転
送などの動作を時間的に重複させることができ、ホスト
ソフトウエアが介入することなく、個々の動作を互いに
同期させることができ、さらにホストソフトウエアがレ
ンダリング動作の状態を判定し、進行中の動作と同期で
きるように、レンダリングシステムを制御するための効
率的な手段を提供することである。
【0012】
【課題を解決するための手段】本発明は、データ転送コ
マンドおよびレンダリングコマンドを生成するホストプ
ロセッサを備える、グラフィックスデータをレンダリン
グするためのレンダリングシステムを提供する。またそ
のシステムは、データ転送コマンドおよびレンダリング
コマンドを複数のコマンドキューに格納するメモリと、
複数のコマンドキューのデータ転送コマンドおよびレン
ダリングコマンドを同時に構文解析し、かつ処理するコ
マンドパーサとを備える。同期機構を用いて、データ転
送コマンドおよびレンダリングコマンドを同時に構文解
析し、かつ処理する動作を同期させる。
【0013】
【発明の実施の形態】パイプライン機構 図1は本発明によるボリュームレンダリングシステム全
体の機構を示す。そのシステムは、バス121によって
レンダリングサブシステム100に接続されるホストコ
ンピュータ10を備える。ホストは、CPU11と、ホ
ストメモリ12とを備える。ホストメモリ12は、グラ
フィカルアプリケーションソフトウエア13と、オペレ
ーティングシステムソフトウエアと通信するグラフィッ
クドライバ14とを格納することができる。そのソフト
ウエアはCPU11において実行される。またホストメ
モリは、ボリュームデータセット、画像、および種々の
テーブルのようなレンダリングデータも格納することが
できる。
【0014】レンダリングエンジン100の主なモジュ
ールは、メモリインターフェース110、バスロジック
200、シーケンサ130、および4つの並列パイプラ
イン140である。4つのパイプラインに及ぶ一対のス
ライスバッファ150を除いて、パイプライン(A、
B、CおよびD)は互いに独立して動作する。好ましい
実施形態では、全ての主なモジュール110、200、
130、140および150は、1つのVLSIチップ
上のハードウエア回路で実装される。これは、本発明を
用いることができるレンダリングエンジンのタイプの一
例にすぎないことに留意されたい。レンダリングエンジ
ンには、パイプライン化された、またはパイプライン化
されていない多角形レンダリングエンジン、あるいは任
意の他のタイプのハードウエアで実装されたレンダリン
グエンジンを用いることができることにも留意された
い。
【0015】メモリインターフェース メモリインターフェース110は、レンダリングメモリ
160を制御する。好ましい実施形態では、レンダリン
グメモリ160は、8つの倍速データレート(DDR
(double data rate))同期DRAMモジュールを備え
る。そのレンダリングメモリは、ボリューム(ボクセ
ル)、多角形、入力および出力画像(ピクセル)、デプ
ス値(depth values)および参照用テーブルのような、
パイプライン140内のレンダリンググラフィックス対
象物のために直接必要とされる全てのレンダリングデー
タ111のための一体化された記憶装置を提供する。以
下に記載されるように、レンダリングメモリ160は、
本発明によるコマンドキューバッファ190を格納する
こともできる。別法では、ホストCPUメモリ12がコ
マンドキューバッファ190を格納することができる。
すなわち、任意の個々のコマンドキューバッファは、レ
ンダリングメモリ160か、あるいはホストメモリ12
かのいずれかに格納することができる。
【0016】メモリインターフェース110は、レンダ
リングメモリ160への全てのメモリアクセスを実施
し、バスロジック200およびシーケンサ130の要求
を仲裁し、データを、サブシステム100およびレンダ
リングメモリ160に分散させる。この利点として、広
帯域幅メモリアクセス(読出しおよび書込み)が、レン
ダリング動作と重複して行われる。
【0017】好ましい実施形態では、VLSI100お
よびレンダリングメモリ160は、PCIバス121に
プラグインすることができる1枚のボードとして実装さ
れる。
【0018】シーケンサ シーケンサ130はレンダリングエンジンを制御する。
それは、どのデータがメモリからフェッチされるかを判
定し、そのデータを4つのパイプライン140にディス
パッチし、補間の重みのようなコントロール情報を正確
な時間に個々のパイプラインに送信し、レンダリング動
作からの出力画像を受信する。シーケンサそのものは、
多数のレジスタによって制御される1組の有限状態機械
である。これらは典型的には、特定のコマンドキューの
ロードレジスタコマンドに応答してバスロジック200
によって書き込まれるが、バスロジックへのPCIアク
セスを介して、ホストシステム上のソフトウエアによっ
て直接書き込まれる場合もある。いずれの場合でも、バ
スロジック200がFIFO170を介してレジスタ値
をシーケンサ130に書き込む。これにより、バスロジ
ック200の動作は、シーケンサ130の動作と切り離
すことができるようになり、バスロジックおよびシーケ
ンサが異なるサイクルタイムで動作できるようになる。
【0019】内部では、シーケンサ130は、ある時点
でサンプル空間を介して1つのセクションを進め、サン
プル座標を順序変更されたボクセル座標に変換し、さら
に4つのパイプラインのステージによって必要とされる
コントロール情報を生成するために必要とされるカウン
タ131を保持する。またシーケンサは、バスロジック
に、レンダリング動作のステータス171も提供する。
その後、バスロジックはレンダリングステータスをホス
ト10に提供する。
【0020】バスロジック 図2は、バスロジック200の内部構造を示す。バスロ
ジック200は、コマンドキューロジック300を含
み、バス121を介してホスト10へのインターフェー
スを、またFIFO170を介してメモリインターフェ
ース110およびシーケンサ130へのインターフェー
スを提供する。ホストがパーソナルコンピュータ(P
C)あるいはワークステーションである場合には、バス
121には、PCI仕様バージョン2.2に準拠する6
4ビット、66MHzPCIバス121を用いることが
できる。
【0021】このために、バスロジックは、メモリイン
ターフェース110を介してレンダリングメモリ160
にデータ(DmaIn)を転送し、またレンダリングメ
モリ160からデータ(DmaOut)を転送するため
のダイレクトメモリアクセス(DMA)動作を制御する
DMAインターフェース(DmaIf)210を含む。
DMA動作は、バーストモードデータ転送である。この
ために、バスロジックはPCIバスマスタとして動作す
る。
【0022】ターゲットインターフェース(Targe
tIf)220は、レンダリングレジスタ230の読出
しおよび書込みを制御する。これらのアクセスは、個々
のレジスタおよびメモリ内の個々の場所に対する直接的
な読出しおよび/または書込みであり、ホスト10によ
って、あるいはPCIバス上のいくつかの他の装置によ
って開始される。
【0023】またバスロジックは、メモリコントロール
および仲裁ロジック240も備え、そのロジックは、D
MA要求、およびターゲットレジスタ読出し/書込み要
求を仲裁する。またロジック240は、メモリアクセス
動作を、バスロジック200とメモリインターフェース
110との間のコマンドに変換する。またバスロジック
は、レンダリング動作を制御するために、シーケンサ1
30に直接にレジスタ値を送信し、かつシーケンサ13
0から戻されるステータス171を受信する。
【0024】最後に、バスロジックは、コマンドキュー
ロジック300の3つの同一のコピー(番号201、2
02および203)を含む。好ましい実施形態は、3つ
のコマンドキューに対応する。典型的には、以下に記載
されるように、ロジック201〜203は、それぞれD
MAinコマンド、レンダリングコマンドおよびDMA
outコマンドを専用に処理する。好ましい実施形態で
は、コマンドキューリングバッファ190が、レンダリ
ングメモリ160あるいはホストメモリ12に格納され
る。別法では、そのバッファはコマンドキューロジック
300の一部にすることができる。
【0025】コマンドキューロジック 図2に示されるように、そのレンダリングシステムは、
3つのコマンドキュー300、すなわちDmaIn20
1、レンダー(Render)202およびDmaOu
t203に対応する。典型的な使用法では、DmaIn
コマンドキュー201は、ホストメモリ12からレンダ
リングメモリ160へのデータの転送を制御する。レン
ダリングコマンドキュー202は、ユーザが入力したパ
ラメータにしたがってレンダリングデータ111をレン
ダリングする。それは、レンダリングメモリ160内の
場所間のグラフィックスデータをコピーすることを含
む。DmaOutコマンドキュー203は、レンダリン
グメモリ160からホストメモリ12へのデータの転送
を制御する。このデータには、画像あるいは部分的に処
理されたレンダリングデータを用いることができる。各
コマンドキューバッファ190は、ホストメモリ180
内、あるいはレンダリングメモリ160内に存在するこ
とができる。
【0026】図3は、各コマンドキュー201〜203
を実装するロジック300を示す。各コマンドキューに
対して、コマンドキューロジック300の1つのコピー
が存在する。ロジック300は、コマンドキュー状態レ
ジスタ310、DMA状態機械320、パース状態機械
330、レジスタアレイ340、ポインタロジック35
0、およびステータスロジック360を備える。また、
各コマンドキューロジックは、共有されるステータスレ
ジスタ600にステータス情報を報告する。そのロジッ
クの3つの全てのコピーに対してステータスレジスタは
1つしか存在しないことに留意されたい。ステータスレ
ジスタはレンダリングレジスタ230の1つである。
【0027】状態レジスタ310は、レンダリングメモ
リ160あるいはホストメモリ12内の関連するコマン
ドキューバッファ190の場所、およびバッファ内の現
在の位置を含む、関連するコマンドキューの状態を規定
する。具体的には、そのレジスタは、サイズ(Siz
e)レジスタ311、サブコンシューマ(subCon
sumer)レジスタ312、サブベース(SubBa
se)レジスタ313、ベース(Base)レジスタ3
14、コンシューマ(Consumer)レジスタ31
5、プロデューサ(Producer)レジスタ316
およびスクラッチ(Scratch)レジスタ317で
ある。
【0028】コマンドキューバッファ190に格納され
るデータ値は、データ転送、レンダリング動作を制御
し、転送コマンドとレンダリングコマンドとの同期を可
能にする。それゆえ、バッファは、コマンド(演算子)
およびデータ(オペランド)を要素cおよびdとして格
納する。アプリケーションソフトウエアあるいは他の手
段により、要素cおよびdは、コマンドキューバッファ
190内の空きエントリに順次書き込まれる。異なるコ
マンドcは、そのコマンドに関連する異なる量のデータ
dを有する場合があり、データを全く持たない場合もあ
る。
【0029】DMA状態機械310は、パース状態機械
330が要素を読み出す、あるいは「消費する」間に、
その要素を、コマンドキューバッファ190からローカ
ル記憶装置、すなわちレジスタアレイ340に読み出
す。コマンドキューバッファ190が空であるか、ある
いは処理されているコマンドcが、まだ発生していない
イベントに同期することを必要とする場合には、関連す
るプロセスが中止され、さらに多くの要素がそのキュー
に書き込まれるか、あるいはそのイベントが発生するま
で待機する。
【0030】好ましい実施形態では、各コマンドキュー
バッファ190は、レンダリングメモリ160内、ある
いは、ホストメモリ12のようなPCIアドレス空間内
のいくつかの外部メモリ内のいずれかに線形アレイとし
て構成される。コマンドcおよびデータd要素は、線形
アレイを通して、1ステップずつインクリメントしなが
ら書込みおよび読出しが行われる。線形アレイの端部に
到達したときには、開始点に循環して継続するように、
そのステップ動作は循環する(ラップアラウンドす
る)。言い換えると、バッファ190は循環バッファと
して動作する。
【0031】コマンドキュー状態レジスタ310がこの
プロセスを制御する。レジスタベース(Base)31
4およびサイズ(Size)311は、関連するキュー
の場所および長さを記述する。Baseの最下位ビット
の設定値により、そのキューは、外部メモリ12、ある
いはレンダリングメモリ160のいずれかに存在する。
詳細には、最下位ビットが0である場合には、そのキュ
ーはPCIアドレス空間内にあり、最下位ビットが1で
ある場合には、そのキューはレンダリングメモリ160
内にある。
【0032】サイズレジスタ311は、そのキュー内の
実際のエントリの数より1だけ小さい値、すなわち2の
2乗の値を有する。その後、複雑なラップアラウンドア
ドレス演算を必要としないように、サイズレジスタをキ
ューポインタを有するマスクとして用いることができ
る。
【0033】プロデューサ(Producer)レジス
タ316およびコンシューマ(Consumer)レジ
スタ315は、当分野において知られている標準的なリ
ングバッファモデルにしたがって、コマンドキューに指
標付けされる。詳細には、プロデューサ316レジスタ
は、新しいコマンドあるいはデータ要素を書き込むこと
ができるキュー内の最初の使用していないエントリを指
示する。コンシューマ315レジスタは、その時点で処
理されている要素を指示する。プロデューサレジスタお
よびコンシューマレジスタはいずれもサイズレジスタに
よってマスクされ、それにより、下位ビットがキューを
表すメモリアレイへの相対的な指標を表し、上位ビット
が破棄されるようにする。このマスク処理のため、イン
クリメントのために簡単な算術を用いることができる。
ラップアラウンドのための検査を行う必要はない。
【0034】あるコマンドのための処理が完了すると
き、そのコマンドキュー内の次のエントリを指示するよ
うに、ポインタロジック350がコンシューマ315を
インクリメントする。そのマスクされた値がプロデュー
サのマスクされた値に等しい場合には、そのキューは空
であり、新しいコマンドがそのキューに書き込まれるま
で、構文解析が一時的に中断される。そうでない場合に
は、次のコマンドcが読み出され、その処理が開始され
る。
【0035】以前に書き込まれたコマンドが処理されて
いる間に、ホストプロセッサ上で実行されるアプリケー
ションソフトウエアは、コマンドおよびデータをキュー
に書き込むことができる。ソフトウエアは、プロデュー
サ316のマスクされた値によって示されるエントリに
おいて開始するキューに、コマンドおよびデータを書き
込むことによりそれを実行する。その書込みが完了する
とき、そのソフトウエアは、キューに書き込まれた要素
の数だけプロデューサを自動的に更新し、プロデューサ
がそのキュー内の次の空のエントリを指示するようにす
る。
【0036】コマンドキュー内の最後の要素が処理され
た後、そのキューの始めに次の要素が書き込まれる。当
然、そのソフトウエアは、プロデューサがコンシューマ
に絶対に「追いつか」ないようにしなければならない。
もし追いついたなら、ソフトウエアはパース状態機械3
30が未だに処理していないコマンドを上書きしてしま
うであろう。
【0037】レジスタサブベース(SubBase)3
13およびサブコンシューマ(SubConsume
r)312は、以下に記載されるコマンドキュー「サブ
ルーチン」ファシリティを利用可能にする。各コマンド
キューに関連するスクラッチ(Scratch)レジス
タ317は、ソフトウエアを便利にするために設けられ
る。このレジスタは、一時的な値を保持することがで
き、以下に記載される「同期(sync)」コマンド
で、ロード、格納(ストア)、インクリメントおよび検
査されることができる。
【0038】プロデューサは、以下に記載されるような
コマンドキューのリセットに応答する場合を除いて、ソ
フトウエアによってのみ更新され、コマンドキューロジ
ック300によっては決して更新されないことに留意さ
れたい。コンシューマおよびサブコンシューマはコマン
ドキューロジックによってのみ更新され、決してソフト
ウエアによっては更新されない。さらに、これらのレジ
スタは自動的に更新される。それゆえ、これらのレジス
タは、プロデューサとコンシューマとの間の比較に関す
る競合条件を心配することなく、任意の時点で読み出す
ことができる。
【0039】コマンドキューにおいて用いるための他の
レジスタ図8は、キューを管理し、レンダリングおよび
DMAイベントを同期させ、外部メモリを管理する際に
ソフトウエアによって用いられるための1組のスクラッ
チおよび一時的レジスタ800のリストである。レジス
タ800は、スクラッチ801、スクラッチダブル80
2およびメモリ管理803を含む。これらの各レジスタ
は、以下に記載される、コマンドロードレジスタ(lo
adReg)およびインクリメントレジスタ(incr
Reg)を用いて、ソフトウエアあるいはハードウエア
によってロード、格納(ストア)あるいはインクリメン
トされることができる。さらに、そのレジスタは同期
(sync)コマンドによって検査することもできる。
【0040】これらのレジスタは、ホストプロセッサに
接続されるグラフィックスボードによって生成される埋
め込まれた多角形を含むピクセルおよびデプスアレイの
管理および転送に対応することを特に意図している。そ
れらは、以下に記載される、コマンドロードレジスタお
よびインクリメントレジスタによって自動的にロードお
よびインクリメントされる。それゆえ、これらのレジス
タとデータを交換し、かつ同期するコマンドキューは、
更新と検査との間の競合条件を心配する必要はない。
【0041】コマンドキューの状態 図4に示されるように、各コマンドキューは、コマンド
を構文解析する間に、5つの状態、すなわち、実行状態
(running)401、コマンド待ち状態(wai
ting for commands)402、同期待
ち状態(waiting for sync)403、
停止状態(halted)404あるいはリセット状態
(reset)405のうちの1つの状態にあることが
できる。状態遷移は、その状態間の指示されたエッジ4
10として示される。たとえば、
【数1】 を付された遷移は、あるサイクル中に遷移が生じること
を示しており、その場合には、キューコントロール(以
下を参照)の停止(halt)およびリセット(res
et)ビットの一方あるいは両方が、その特定のコマン
ドキューに当てはまることを示す。
【0042】実行状態401では、コマンドキューロジ
ック300が、コンシューマによって指示されるコマン
ドで開始して、コマンドキューからコマンドおよびデー
タを読み出し、次に各コマンドを構文解析し、かつ処理
する。
【0043】コマンド待ち状態402では、コンシュー
マのマスクされた値がプロデューサのマスクされた値に
追いついたために、コマンドの構文解析が一時的に中断
されている。コマンド構文解析、すなわち実行状態40
1は、プロデューサを更新した後に自動的に再開され
る。その時点で、そのキューから新しいコマンドが読み
出され、処理される。データ転送コマンドを処理するこ
とは、DMAあるいはレジスタ転送を生じさせることを
意味し、レンダリングコマンドを処理することは、レン
ダリングエンジン、たとえばパイプライン140におい
てレンダリング動作を生じさせることを意味する。
【0044】同期待ち状態403では、ある検査を満足
するために、以下に記載される同期コマンドがあるレジ
スタの値を待ち続けているので、コマンド構文解析は一
時的に中断されている。コマンド構文解析は、同期コマ
ンドの検査が満足されるようにそのレジスタを更新した
後に自動的に再開される。
【0045】停止状態404では、プロデューサあるい
はコンシューマの値に関係なく、コマンド構文解析が停
止される。停止状態は、図5に関して以下に記載され
る、キューコントロール(Queue Contro
l)レジスタ500の対応する停止ビットに書込みを行
う結果として、あるいは以下に記載される、停止あるい
は全停止(haltAll)ビットセットを有するコマ
ンドを構文解析する結果として生じる。構文解析は、キ
ューコントロールレジスタ500の停止ビットをクリア
することによってのみ再開することができる。
【0046】コマンドキューが停止状態404にあると
き、コマンドキューの全状態がそのレジスタセット31
0に含まれる。コマンドキューの隠れた状態あるいは内
部状態が保持されることはない。そのキューが空でない
場合には、コンシューマが、処理されることになる次の
コマンドを指示する。停止ビットがクリアされるとき、
コマンドが、バッファ190からローカルレジスタアレ
イ340内に再フェッチされる。これにより、ソフトウ
エアが、そのキューが停止している間にコマンドキュー
バッファ190内のキュー要素を変更でき、再開前に、
そのコマンドキューロジック300が内部バッファ34
0にそれらの変更された要素を確実に読み込むことがで
きるようになる。
【0047】最後に、リセット状態405では、コマン
ドキューは、定義された初期状態にリセットされてい
る。リセット信号を除去することにより、コマンドキュ
ーは停止状態にされる。
【0048】キューコントロールレジスタ 図5に示されるように、キューコントロールレジスタ5
00は、対応するコマンドキューの1つの状態を制御す
る。このレジスタは、各コマンドキューをリセットする
ためのビット、コマンドキューを停止させるためのフィ
ールド、およびDMAコマンドを処理することができる
場所を厳密に制御するためのビットを与える。そのビッ
トは、厳密(strict)ビット501と、リセット
DmaOutキュー(resetDmaOutQueu
e)ビット502と、リセットレンダーキュー(res
etRenderQueue)ビット503と、リセッ
トDmaInキュー(resetDmaInQueu
e)ビット504と、停止DmaOut(haltDm
aOut)ビット505と、停止レンダー(haltR
ender)ビット506と、停止DmaIn(hal
tDmaIn)ビット507とを含む。
【0049】コマンドキューのリセット 3つのリセットビット502〜504の任意のビットに
「1」を書き込むことにより、対応するコマンドキュー
がリセット状態405に入ることができる。そのレジス
タ310は全て0に設定される。コマンドキューをリセ
ットすることにより、そのキュー内のコマンドの構文解
析および処理が中断される。
【0050】コマンドキューの停止 現在のコマンドの処理が完了するとき、3つの停止ビッ
ト505〜507の任意のビットに「1」を書き込むこ
とにより、対応するコマンドキューが停止状態404に
入ることができる。詳細には、対応するコマンドキュー
が停止状態に入る前に、長い分散−収集リストを伴うD
MA転送のような、その処理に長い時間を要するコマン
ド、あるいはレジスタの長いリストを伴うロードレジス
タ(loadReg)コマンドは、完了するまで実行さ
れるであろう。これにより、ソフトウエアは、たとえば
デバッグ中にそのキューを1つずつステップできるよう
になる。
【0051】そのキューが、その停止ビットがセットさ
れる時点で待ち(waiting)状態にあるとき、そ
のキューは直ちに停止状態に入る。その待ち状態が、満
足されていない同期コマンドに関する検査の結果であっ
た場合には、同期コマンドが割り込まれ、停止ビットが
クリアされるときに同期が再度実行されるように、コン
シューマポインタが設定される。
【0052】停止ビットをクリアすることにより、その
レジスタの値によって、コマンドキューは実行あるいは
待ち状態のいずれかに戻ることができる。詳細には、サ
ブベースが0でない場合には、サブコンシューマによっ
て指示されるコマンドは、再フェッチされ、実行され
る。サブベースが0で、コンシューマがプロデューサと
同じでない場合には、コンシューマによって指示される
コマンドは再フェッチされ、実行される。コンシューマ
およびプロデューサがコマンドキュー内の同じ要素を指
示する場合には、そのキューは空であると見なされ、待
ち状態に入る。
【0053】コンシューマあるいはサブコンシューマに
よって指示されるコマンドが同期コマンドである場合に
は、そのコマンドは任意の他のコマンドと同様に再フェ
ッチされ、その検査が再度評価される。その検査が満足
されない場合には、そのキューは再び待ち状態に入る。
【0054】また、コマンドキューは、そのキュー内に
含まれるコマンドによって停止される場合もある。要約
すると、コマンドキューは4つのうちの任意の方法で停
止されることができる。
【0055】第一に、アプリケーションソフトウエア
が、キューコントロールレジスタ500内の停止ビット
を1に設定することができる。そのコマンドキューはそ
の時点のコマンドの終了時に停止することになるが、新
しいコマンドを開始しないであろう。その時点のコマン
ドが同期であり、検査が満足されていない場合には、同
期コマンドは中止されるであろう。以下に記載される、
キューステータス内の停止ビットは、そのキューが実際
に停止状態に入る時点を指示する。
【0056】第二に、コマンドキューは、自らのコマン
ドの1つに停止ビットを設定させる場合がある。この場
合には、コマンドの処理は完了し、その停止ビットはキ
ューコントロールの対応するエントリに書き込まれ、そ
のコマンドキューは直ちに停止状態に入る。そのコマン
ドが同期コマンドである場合には、同期検査が満足され
るまで、その停止ビットは書き込まれない。これは、デ
バッグ中にコマンドを通して1つずつステップするのに
有用である。
【0057】第三に、いくつかのコマンドキューは、そ
のコマンドの1つにおいて全停止ビットを設定させる場
合がある。その場合には、全停止ビットを含むコマンド
が完了するとき、キューコントロール(QueueCo
ntrol)の全ての3つの停止ビットに1が書き込ま
れる。その1つのコマンドキューは、全停止の代わりに
そのコマンドにおいて停止ビットを設定されたかのよう
に、直ちに停止状態に入るであろう。他の2つのキュー
は、ソフトウエアがその停止ビットに1を書き込んだか
のような動きをする。すなわち、そのキューが停止状態
に入る前に、その現在のコマンドの処理は完了するが、
満足されていない検査を待つ同期コマンドは中断される
であろう。以下に記載されるキューステータス(Que
ueStatus)600の停止ビットは、各コマンド
キューが実際に停止状態に入った時点を示す。
【0058】第四に、ソフトウエアは、キューコントロ
ールの対応するリセットビットを設定することができ
る。この場合には、コマンドキューは、リセットビット
がクリアされた後に停止する。
【0059】DMAコマンドの厳密(Strict)お
よび曖昧(Lax)コントロールキューコントロール
(QueueControl)レジスタ500の厳密
(strict)ビット501は、どのコマンドキュー
がどのDMAコマンドを処理することができるかを判定
する。
【0060】厳密ビットが1に設定されるとき、dma
InコマンドはDmaInキューからのみ処理される場
合があり、dmaOutコマンドは、DmaOutキュ
ーからのみ処理される場合がある。この規則に違反があ
れば、全ての3つのキューの停止ビットが直ちに1に設
定され、中断が発生するようになる。違反したコマンド
は処理されず、バイオレーションを含むキューのコンシ
ューマあるいはサブコンシューマは、そのコマンドを指
示したままにされる。これは、3つのキューの典型的な
使用法を強制し、その使用法に違反するときの誤りを検
出する。
【0061】厳密ビットが0に設定されるとき、あらゆ
るキューにおいて、あらゆるコマンドが構文解析され、
処理されることができる。これは、たとえば、ソフトウ
エア開発中に、重複した処理が存在しないように、レン
ダリングエンジンが1つのみのコマンドキューで制御さ
れるときに有用である。また、上記のようなdmaIn
コマンド、レンダーコマンドおよびdmaOutコマン
ドの典型的な配分以外の態様で、ソフトウエアが3つの
キューの中でコマンドを割り振るときに有用である。
【0062】コマンドキューステータス 図6はキューステータス(QueueStatus)レ
ジスタ600を示す。レジスタ600は、ステータスロ
ジック360によって保持される。このレジスタは、コ
マンドキューのステータス、およびそれぞれが停止され
ているか否かを示す。3つの各停止ビット604〜60
6は、対応するコマンドキューが実際に停止状態404
に入っていることを示す。
【0063】各コマンドキューのステータスは、対応す
る2ビットステータス(status)フィールド60
1〜603において連続して更新される。そのキューが
停止されていないとき、これらは連続して更新する。そ
のキューが停止するとき、このステータスはラッチさ
れ、停止された時点で、どのコマンドキューが動作中で
あるかを示す。このステータスは、たとえば、デバッグ
中にソフトウエアによって検査されることができる。
【0064】キューが停止した後、実行状態(exec
uting)のステータスは、停止ビットが設定された
時点で、コマンドの処理が進行中であることを意味す
る。「プロデューサ=コンシューマのための待ち状態
(waiting because Producer
=Consumer)」のステータスは、そのキューが
空であるため、停止ビットが設定されたときにコマンド
が処理されていなかったことを意味する。「同期検査が
満足されるのを待つ状態(waiting forsy
nc test to be satisfied)」
のステータスは、満足されていない同期コマンドが、停
止ビットを設定することによって中断されたことを意味
する。
【0065】コマンドキューコマンド 図7はキューコマンドのためのフォーマット700を示
す。コマンドは、コマンドヘッダc(演算子)と、その
後に続くことができるデータ(オペランド)とを含む。
コマンドの処理中の典型的な動作は、レジスタをロード
あるいはストアし、同期のためにレジスタ値を検査し、
DMA転送を開始することである。コマンドキューの中
からレンダリング動作を開始するために、1つあるいは
複数のロードレジスタ(loadReg)コマンドによ
ってレンダリングレジスタがロードされる。
【0066】各コマンドヘッダは以下のフィールドを含
む、cmdフィールド701の演算子コードは処理され
るコマンドの種類を示す。演算子が、各演算子コードの
ためのオペランド705とともに、以下のサブセクショ
ンにおいて列挙される。
【0067】中断(interrupt)フィールド7
02が設定されるとき、このコマンドを処理した完了時
に中断が通知される。
【0068】全停止(haltAll)フィールド70
3が設定されるとき、キューコントロールレジスタ50
0内の3つ全ての停止ビットが、現在のコマンドの完了
時に1に設定される。これにより、現在のコマンドキュ
ーは停止状態に入り、そのコンシューマあるいはサブコ
ンシューマレジスタが、次に構文解析され、かつ処理さ
れるコマンドを指示できるようになる。他の2つのコマ
ンドキューは、現在のコマンドの処理が完了した後に、
停止状態に入る。
【0069】停止(halt)フィールド704が設定
されるとき、現在のコマンドキューは停止状態に入り、
コマンド処理が完了した直後に、キューコントロールレ
ジスタの停止ビットが1に設定される。そのコンシュー
マあるいはサブコンシューマレジスタは、そのキュー内
の次のコマンドを指示する。
【0070】無演算コマンド 無演算(noop)コマンドは何も実行せず、完了する
のに1クロックサイクルを要する。無演算コマンド中
に、コマンドヘッダ内の割込み、停止および全停止ビッ
トが、任意の他のコマンドと同様に構文解析される。こ
のコマンドは、アプリケーションソフトウエアによって
プレースホルダとして用いられることができるか、ある
いはコマンドの2つの個別のシーケンス間で停止を強制
するために用いることができる。オペランド705は無
視される。
【0071】DMAコマンド2つのDMAコマンド、す
なわちdmaInおよびdmaOutは、バスロジック
200の中からDMA転送を生じさせるために与えられ
る。各DMAコマンドは、コマンドヘッダ内にカウント
(count)オペランド705を有し、それにそのキ
ュー内のデータ要素の所定の数のリストが後続する。各
データ要素は、ホストアドレス(hostAddres
s)、ホストアドレスインクリメント(hostAdd
ressIncr)と、レングス(length)とを
含む。どのDMAコマンドが呼び出されるかに関係な
く、ホストアドレスおよびレングスによって表されるD
MA転送が完了まで進められる。
【0072】DMAコマンドの処理は、キューコントロ
ールレジスタへの停止ビットの書込みによって中断する
ことはできない。そのコマンドの処理は、キューが停止
状態に入る前に完了する。しかしながら、DMAコマン
ドの処理は、そのコマンドキューがリセットされるとき
に中断される。この中断は、カウント(count)が
満了したか否かのいずれの場合でも、レングスバイトの
1回のDMA転送の正常な終了時に生じる。
【0073】キューコントロールレジスタ500におい
て厳密ビット501が設定される場合には、dmaIn
コマンドは、DmaInキューからのみ呼び出され、d
maOutコマンドは、DmaOutキューからのみ呼
び出される場合がある。
【0074】同期コマンド 本発明の利点として、同期(sync)コマンドは、多
数のコマンドキューを互いに、かつアプリケーションソ
フトウエアと同期させるための柔軟な機構を提供する。
特定のコマンドキューのための同期コマンドを実行する
ことにより、オペランド705によって規定されるレジ
スタが、検査値(testValue)オペランド内の
値と比較されるようになる(等しい、大きい、小さい
等)。比較関係は、検査(test)オペランドによっ
て規定される。同期コマンド自体は、そのコマンドヘッ
ダのみを含む。そのヘッダにはデータ要素は後続しな
い。
【0075】比較結果が正しい場合には、そのコマンド
キュー内の要素の構文解析が、次のコマンドで続けられ
る。比較結果に誤りがある場合には、そのコマンドキュ
ーは、レジスタ(reg)によって規定されるレジスタ
が更新され、その比較が正しい結果になるまで、待ち状
態になる。すなわち、ある後の時点で、ソフトウエアあ
るいはいくつかの他のコマンドキューがレジスタを更新
するとき、最終的に同期コマンドの検査が満足される。
その後、同期コマンドを含むコマンドキューの状態は、
待ち状態から実行状態に変化し、次のコマンドが、構文
解析および処理のためにフェッチされる。
【0076】同期コマンドは停止に関して専用である。
コマンドキューが未処理の満足されない同期コマンド、
すなわち試みられたが、その検査が未だ満足されてな
く、かつそのコマンドキューのためのキューコントロー
ル内の停止ビットが、ソフトウエアあるいはいくつかの
他のコマンドキューによって1に設定される同期コマン
ドを有する場合には、その同期コマンドは直ちに中止さ
れる。そのコマンドキューのコンシューマあるいはサブ
コンシューマレジスタは、それが処理されなかったかの
ように、同期コマンドを指示するために設定される。そ
の後、キューコントロール内の停止ビットがクリアされ
るとき、同期コマンドはコマンドバッファ190からレ
ジスタアレイ340に再フェッチされ、再試行される。
これは、アプリケーションソフトウエアに、停止状態中
の同期(sync)に及ぶいくつかの予測可能な制御を
与える。ソフトウエアの観点から、同期は進行するか、
あるいはそれが未だ試行されていなかった場合には、そ
れが存在していた状態に留まるかのいずれかである。比
較値のような隠れた状態は、停止中のコマンドキューに
は保持されない。
【0077】また同期コマンドは、同様に動作できるよ
うになる再フェッチビットも含む。詳細には、再フェッ
チビットが1に設定される場合には、レジスタアレイ3
40内のコマンドキューバッファデータは、それがその
時点で停止されたかのように、フラッシュされ、再フェ
ッチされるであろう。これにより、ハードウエアが同期
検査が満足されるのを待ち続けている間に、ソフトウエ
アは、そのキュー内のコマンドを変更できるようにな
り、変更されたコマンドがレジスタアレイ340内に読
み込まれることを保証する。これは、たとえば、デバッ
グのために、および規定された同期条件が満足された後
に、正確な値でのみ満たされることができる、コマンド
キュー内の次の場所に「ダミー」値が書き込まれる状況
の場合に有用である。
【0078】レジスタコマンド ストアレジスタ(storeReg)、ロードレジスタ
(loadReg)およびインクリメントレジスタ(i
ncrReg)コマンドによって、レンダリングエンジ
ンレジスタを書き込み、読み出し、インクリメントする
ことができるようになる。そのレジスタのデータは、P
CIアドレス空間に、あるいはPCIアドレス空間から
転送することができる。ストアレジスタコマンドは、そ
のオペランドとしてレジスタアドレスを、さらにそれに
続く、キュー内のデータ要素として64ビットPCIア
ドレスを規定する。ロードレジスタコマンドによって、
そのオペランド内のレジスタアドレスおよびマスクによ
って、かつマスクにおいて設定される各ビットのための
キュー内のデータ要素によって規定されるように、可変
数の連続したレジスタをロードできるようになる。各デ
ータ要素は64ビットレジスタ値を表す。最後に、イン
クリメントコマンドは、そのオペランドにおいてレジス
タアドレスおよびインクリメント値を含んでおり、その
コマンドによって、そのインクリメント値が所定のレジ
スタに加算される。
【0079】サブルーチンおよびリターン サブルーチン(Subroutine)およびリターン
(Return)コマンドによって、「インライン」、
すなわち「コマンドサブルーチン」ではない他のキュー
コマンドを処理できるようになる。サブルーチンコマン
ドによって、コマンドサブルーチンを処理できるように
なり、その後、正規の順序でキューからのコマンドを処
理し続ける。サブルーチンコマンドヘッダに続くデータ
要素は、メモリアドレスとして取り扱われ、そのサブル
ーチンを呼び出すコマンドキューのサブベースレジスタ
313に書き込まれる。リターンアドレスはコンシュー
マレジスタ315に保持され、サブルーチンコマンドお
よびそのデータ要素に続くメインコマンドキュー内の要
素を指示する。サブルーチンコマンドは、コマンドキュ
ーバッファの場合のように、コマンドおよびデータを含
む要素のリストとして格納される。しかしながら、サブ
ルーチンコマンドキューバッファは循環バッファではな
い。それは単に、リターンコマンドによって終了され
る、コマンドの直線的なリストである。
【0080】好ましい実施形態では、サブルーチンコマ
ンド自体を除く、任意のコマンドがサブルーチンコマン
ドキュー内に置かれる場合がある。すなわち、サブルー
チンは他のサブルーチンを呼び出さない。しかしなが
ら、他の実施形態では、サブルーチンは、付加的なオン
チップサブベース(subBase)レジスタを設ける
ことにより、あるいはチップ外のメモリにデータを格納
することにより、他のサブルーチンを呼び出すこともで
きる。
【0081】サブルーチンの大部分は、典型的にはDM
Aコマンドのために用いられる。これにより、アプリケ
ーションソフトウエアは、アクセス情報を、ある種類の
動作のためのコマンドキューバッファにおいてテンプレ
ートから都合よく切り離しておくことができる。サブル
ーチンは、そのコマンドキューが停止状態になるとき
に、中断される場合がある。そのコマンドキューのため
の停止ビットがクリアされるとき、サブベースレジスタ
は0ではないことに留意されたい。次のコマンドは、メ
インコマンドキューからの要素からではなく、サブコン
シューマによって示されるサブルーチンコマンドリスト
内の要素からフェッチされる。
【0082】リターンコマンドによって、構文解析は、
コンシューマによって指示されるエントリにおいてメイ
ンコマンドキューから再開されるようになる。リターン
コマンドは、サブコンシューマおよびサブベースをいず
れも0にクリアし、その結果、停止状態の後にコマンド
処理を再開する場所に関して混乱は生じない。サブルー
チンコマンドの停止ビットが設定される場合には、その
サブルーチンをコールした後、そのサブルーチンの最初
のコマンドを実行する前に、コマンドキューが停止す
る。停止されたとき、サブベースは、サブルーチンコマ
ンドに続くコマンドのアドレスを指示し、サブコンシュ
ーマは0であり、コンシューマは、サブルーチンからの
リターンの後に再開するためのコマンドを指示する。リ
ターンコマンドにおいて停止ビットが設定される場合に
は、そのサブルーチンからリターンした後、サブルーチ
ンコールに続く最初のコマンドを用いて進行する前に、
コマンドキューは停止する。この場合には、サブベース
およびサブコンシューマはクリアされ、コンシューマが
次に処理されることになるコマンドを指示する。
【0083】
【発明の効果】こうして、本発明は、レンダリング動作
から入力および出力データ転送を分離し、データ転送と
レンダリング動作との間を同期させることができるコマ
ンドキュー構造を実現する。これは、転送と動作とに長
時間を要する、すなわち多くのクロックサイクルを要す
るときに有利である。これらの動作を別々に取り扱うこ
とにより、特に正確な動作のために必要とされる場合、
たとえばレンダリングが完了するまで、システムメモリ
に画像をコピーするのを遅らせる場合を除いて、長時間
を要する動作が、別の各動作を待つ必要がなくなる。こ
れらの同期遅延は、ソフトウエアの介入を必要とせず、
コマンドキューコントロールロジック内で完全に処理す
ることができる。
【0084】本明細書に記載されるコマンドキュー構造
は、実際に、任意の種類のグラフィックレンダリングエ
ンジン、あるいは任意の他のハードウエアアクセラレー
タに適用することができる。本発明は、ホスト処理、サ
ブシステム処理、および広帯域DMA転送を同時に必要
とする多数のレンダリング動作が存在する際に特に有利
である。
【0085】本発明は好ましい実施形態を例示しながら
記載されてきたが、本発明の精神および範囲から逸脱す
ることなく、種々の他の適用形態および変更形態を実施
できることは理解されたい。それゆえ、添付の請求の範
囲の目的は、全てのそのような変形形態および変更形態
を、本発明の真の精神および範囲内に入るように網羅す
ることである。
【図面の簡単な説明】
【図1】 本発明によるコマンドキューを用いるレンダ
リングエンジンのブロック図である。
【図2】 コマンドキューロジックを備えるバスロジッ
クのブロック図である。
【図3】 本発明によるコマンドキューを実装する好ま
しい実施形態のブロック図である。
【図4】 コマンドキュー状態および状態遷移のグラフ
を示した説明図である。
【図5】 キューコントロールレジスタのテーブルを示
した説明図である。
【図6】 キューステータスレジスタのテーブルを示し
た説明図である。
【図7】 キューコマンドヘッダのテーブルを示した説
明図である。
【図8】 同期のために用いられるコマンドキューレジ
スタのテーブルを示した説明図である。
【符号の説明】
10 ホストコンピュータ、11 CPU、12 ホス
トメモリ、13 グラフィカルアプリケーションソフト
ウエア、14 グラフィックドライバ、100レンダリ
ングエンジン、110 メモリインターフェース、13
0 シーケンサ、140 並列パイプライン、150
スライスバッファ、160 レンダリングメモリ、17
0 FIFO、190 コマンドキューリングバッフ
ァ、200 バスロジック、201 DmaInコマン
ドキューロジック、202 レンダリングコメンドキュ
ーロジック、203 DmaOutコマンドキューロジ
ック、210 DMAインターフェース、220 ター
ゲットインターフェース、230 レンダリングレジス
タ、240 仲裁ロジック、300 ロジック、310
コマンドキュー状態レジスタ、320 DMA状態機
械、330 パース状態機械、340 レジスタアレ
イ、350 ポインタロジック、360 ステータスロ
ジック、401 実行状態、402 コマンド待ち状
態、403 同期待ち状態、404 停止状態、405
リセット状態、500 キューコントロールレジス
タ、600 ステータスレジスタ、700 フォーマッ
ト、800コマンドキューレジスタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ケニス・ダブリュ・コレル アメリカ合衆国、マサチューセッツ州、ラ ンカスター、ルネンバーグ・ロード 2193 (72)発明者 スティーヴン・カーズナー アメリカ合衆国、マサチューセッツ州、メ ドフォード、アーリントン・ストリート 21、アパートメント ナンバービー (72)発明者 ヒュー・シー・ラウアー アメリカ合衆国、マサチューセッツ州、コ ンコード、ボーダー・ロード 69 (72)発明者 ラリー・ディー・シーラー アメリカ合衆国、マサチューセッツ州、ボ イルストン、リンデン・ストリート 198 Fターム(参考) 5B013 DD01 5B057 CH02 CH05 CH06 CH11 CH14 CH16 5B080 CA03 CA04 CA05 CA07 CA08

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 レンダリングシステムであって、 複数のコマンドキュー内にデータ転送コマンドとレンダ
    リングコマンドとを格納するメモリと、 前記複数のコマンドキューそれぞれのためのコマンドキ
    ューロジックであって、各コマンドキューロジックは、
    対応するコマンドキューの前記データ転送コマンドおよ
    び前記レンダリングコマンドを同時にフェッチし、構文
    解析し、処理する、該コマンドキューロジックと、 グラフィックデータをレンダリングしている間に、同時
    に行われる前記データ転送コマンドおよび前記レンダリ
    ングコマンドの前記フェッチ、前記構文解析および前記
    処理を同期させるための手段とを備えるレンダリングシ
    ステム。
  2. 【請求項2】 前記複数のコマンドキューに格納された
    同期コマンドが前記複数のコマンドキューを同期させる
    請求項1に記載のレンダリングシステム。
  3. 【請求項3】 前記同期コマンドは、前記レンダリング
    システムに接続されるホストプロセッサによって生成さ
    れる請求項2に記載のレンダリングシステム。
  4. 【請求項4】 前記同期コマンドは、前記レンダリング
    システムのレンダリングパイプラインによって生成され
    る請求項2に記載のレンダリングシステム。
  5. 【請求項5】 前記コマンドキューのうちの少なくとも
    1つは、ホストメモリに格納される請求項1に記載のレ
    ンダリングシステム。
  6. 【請求項6】 前記コマンドキューのうちの少なくとも
    1つは、レンダリングメモリに格納される請求項1に記
    載のレンダリングシステム。
  7. 【請求項7】 前記複数のキューは、前記データ転送コ
    マンドと前記レンダリングコマンドとを格納するため
    に、複数の要素を有する循環バッファとして構成される
    請求項1に記載のレンダリングシステム。
  8. 【請求項8】 前記各コマンドキューロジックはさら
    に、 前記対応するコマンドキューから前記データ転送コマン
    ドと前記レンダリングコマンドとをフェッチするための
    DMA状態機械と、 前記データ転送コマンドと前記レンダリングコマンドと
    を構文解析し、処理し、さらに同期させるためのパース
    状態機械とを備える請求項1に記載のレンダリングシス
    テム。
  9. 【請求項9】 前記データ転送コマンドはDMAインタ
    ーフェースに発行され、前記レンダリングコマンドは複
    数の並列パイプラインに発行される請求項1に記載のレ
    ンダリングシステム。
  10. 【請求項10】 前記パース状態機械は、リセット状態
    と、停止状態と、実行状態と、コマンド待ち状態と、同
    期待ち状態とを有する請求項8に記載のレンダリングシ
    ステム。
  11. 【請求項11】 イベントを格納するためのスクラッチ
    レジスタをさらに備え、前記同期コマンドは、特定のイ
    ベントの発生のために前記スクラッチレジスタを検査す
    る請求項2に記載のレンダリングシステム。
  12. 【請求項12】 前記データ転送コマンドおよび前記レ
    ンダリングコマンドの構文解析および処理は、前記特定
    のイベントの発生を待つ間、停止される請求項11に記
    載のレンダリングシステム。
  13. 【請求項13】 前記各コマンドキューは前記データ転
    送コマンドと前記レンダリングコマンドとを格納するた
    めの複数のエントリを含み、 第1のポインタを、フェッチされることになる次のコマ
    ンドを格納する第1のエントリに格納するための、前記
    各コマンドキューのためのプロデューサレジスタと、 第2のポインタを、次のコマンドを格納するための第2
    のエントリに格納するための、前記各コマンドキューの
    ためのコンシューマレジスタとをさらに備える請求項1
    に記載のレンダリングシステム。
  14. 【請求項14】 レンダリングシステムであって、 複数のコマンドキューにデータ転送コマンドと、レンダ
    リングコマンドと、同期コマンドとを格納するように構
    成されるメモリと、 イベントを格納するように構成される複数のレジスタ
    と、 前記複数のコマンドキューそれぞれのためのコマンドキ
    ューロジックであって、各コマンドキューロジックは、
    対応するコマンドキューのデータ転送コマンドとレンダ
    リングコマンドとを同時にフェッチし、構文解析し、処
    理し、また前記コマンドキューロジックは、データをレ
    ンダリングする間に、同期コマンドを用いて前記複数の
    レジスタに格納される特定のイベントのための検査を行
    うことにより、同時に行われる前記データ転送コマンド
    と前記レンダリングコマンドとのフェッチ、構文解析お
    よび処理を同期させる、該コマンドキューロジックとを
    備えるレンダリングシステム。
  15. 【請求項15】 レンダリング方法であって、 複数のコマンドキューにデータ転送コマンドとレンダリ
    ングコマンドとを格納するステップと、 対応するコマンドキューのデータ転送コマンドとレンダ
    リングコマンドとを同時にフェッチし、構文解析し、処
    理するステップと、 グラフィックデータをレンダリングする間に、同時に行
    われる前記データ転送コマンドと前記レンダリングコマ
    ンドとの前記フェッチ、前記構文解析および前記処理を
    同期させるステップとを含む方法。
  16. 【請求項16】 レジスタにイベントを格納するステッ
    プと、 同時に行われる前記データ転送コマンドと前記レンダリ
    ングコマンドとの前記フェッチ、前記構文解析および前
    記処理を同期させるために、同期コマンドを用いて、特
    定のイベントの発生のために前記レジスタを検査するス
    テップとをさらに含む請求項15に記載の方法。
JP2001305961A 2000-10-04 2001-10-02 レンダリングシステム及びレンダリング方法 Withdrawn JP2002183750A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67924800A 2000-10-04 2000-10-04
US09/679248 2000-10-04

Publications (1)

Publication Number Publication Date
JP2002183750A true JP2002183750A (ja) 2002-06-28

Family

ID=24726151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001305961A Withdrawn JP2002183750A (ja) 2000-10-04 2001-10-02 レンダリングシステム及びレンダリング方法

Country Status (2)

Country Link
EP (1) EP1195718A2 (ja)
JP (1) JP2002183750A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252983A (ja) * 2003-02-18 2004-09-09 Microsoft Corp コプロセッサの性能を強化するシステムおよび方法
JP2004272894A (ja) * 2003-02-18 2004-09-30 Microsoft Corp グラフィックス処理ユニットのマルチスレッド式カーネル
JP2007156824A (ja) * 2005-12-05 2007-06-21 Nec Electronics Corp プロセッサシステム、タスク制御方法
JP2011028732A (ja) * 2009-06-24 2011-02-10 Olympus Corp 画像処理装置
JP2015076094A (ja) * 2013-10-10 2015-04-20 インテル・コーポレーション グラフィック処理アーキテクチャにおけるポストシンクロナイゼーションオペレーションとしてのアトミックオペレーションのサポート

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6621918B1 (en) 1999-11-05 2003-09-16 H Innovation, Inc. Teleradiology systems for rendering and visualizing remotely-located volume data sets
JP4425177B2 (ja) * 2005-05-20 2010-03-03 株式会社ソニー・コンピュータエンタテインメント グラフィックプロセッサ、情報処理装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252983A (ja) * 2003-02-18 2004-09-09 Microsoft Corp コプロセッサの性能を強化するシステムおよび方法
JP2004272894A (ja) * 2003-02-18 2004-09-30 Microsoft Corp グラフィックス処理ユニットのマルチスレッド式カーネル
JP2010020803A (ja) * 2003-02-18 2010-01-28 Microsoft Corp コプロセッサの性能を強化するシステムおよび方法
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
JP2010287254A (ja) * 2003-02-18 2010-12-24 Microsoft Corp タスクのスケジューリングを支援する装置
US8671411B2 (en) 2003-02-18 2014-03-11 Microsoft Corporation Multithreaded kernel for graphics processing unit
US9298498B2 (en) 2003-02-18 2016-03-29 Microsoft Technology Licensing, Llc Building a run list for a coprocessor based on rules when the coprocessor switches from one context to another context
JP2007156824A (ja) * 2005-12-05 2007-06-21 Nec Electronics Corp プロセッサシステム、タスク制御方法
JP2011028732A (ja) * 2009-06-24 2011-02-10 Olympus Corp 画像処理装置
JP2015076094A (ja) * 2013-10-10 2015-04-20 インテル・コーポレーション グラフィック処理アーキテクチャにおけるポストシンクロナイゼーションオペレーションとしてのアトミックオペレーションのサポート
US9626732B2 (en) 2013-10-10 2017-04-18 Intel Corporation Supporting atomic operations as post-synchronization operations in graphics processing architectures

Also Published As

Publication number Publication date
EP1195718A2 (en) 2002-04-10

Similar Documents

Publication Publication Date Title
US10915364B2 (en) Technique for computational nested parallelism
US5917502A (en) Peer-to-peer parallel processing graphics accelerator
EP2483772B1 (en) Trap handler architecture for a parallel processing unit
US8766988B2 (en) Providing pipeline state through constant buffers
US7565279B2 (en) Callbacks in asynchronous or parallel execution of a physics simulation
JP4564110B2 (ja) 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ
US9395997B2 (en) Request coalescing for instruction streams
US20210134045A1 (en) Memory Consistency in Memory Hierarchy with Relaxed Ordering
EP3945499A1 (en) Ray intersect circuitry with parallel ray testing
US11436784B2 (en) SIMD group formation techniques for primitive testing associated with ray intersect traversal
US11880925B2 (en) Atomic memory update unit and methods
CN109964244B (zh) 用于图形处理的本地图像块
JP2002183750A (ja) レンダリングシステム及びレンダリング方法
CN114218152A (zh) 流处理方法、处理电路和电子设备
Dwarakinath A fair-share scheduler for the graphics processing unit
CN110249308A (zh) 待决加载和存储的单独跟踪
US11676327B2 (en) Temporal split techniques for motion blur and ray intersection
US11954492B1 (en) Fence enforcement techniques based on stall characteristics
US20240095065A1 (en) Multi-stage Thread Scheduling
CN118378675A (zh) 神经网络处理
Kim Towards more efficient domain-specific image computing
Family TMS320 DSP
GB2520603A (en) Atomic memory update unit and methods

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20041207