(57)【特許請求の範囲】
【請求項１】
通常RISC命令および特殊RISC命令を実行するReduced  Instruction  Set  Computer（RISC）プロセッサを動作させる方法であって、
各通常RISC命令に応答して、RISCプロセッサの単一の機能単位を使用して、単一の演算を実行するようにRISCプロセッサを制御するステップと、
各特殊RISC命令に応答して、RISCプロセッサの複数の機能単位を並列に使用して、複数の演算を実行するようにRISCプロセッサを制御するステップとを備え、
さらに前記複数の演算を実行するようにRISCプロセッサを制御するステップにおいては、前記特殊RISC命令の複数の演算が完了するまでプログラム・カウンタの増分が防止されて、他のRISC命令のデコードが行われないことを特徴とする方法。
【請求項２】
あるタイプの特殊RISC命令が出力プリミティブを補間するドロー命令であり、RISCプロセッサが単一のピクセルの複数のピクセル・パラメータを処理する、請求項１に記載の方法。
【請求項３】
RISCプロセッサの複数の機能単位を並列に使用して複数の演算を繰り返し実行するようにRISCプロセッサを制御するステップをさらに含み、各後続の演算は、第１の演算の後、各特殊反復RISC命令に応答した前の演算の結果に依存する、請求項１に記載の方法。
【請求項４】
あるタイプの特殊反復RISC命令が出力プリミティブを補間する反復ドロー命令であり、RISCプロセッサが反復ドロー命令に応答してピクセルのスパンに対する一連のピクセル・パラメータを処理する、請求項３に記載の方法。
【請求項５】
RISCプロセッサにおいて、
命令を記憶する命令メモリと、
命令メモリに結合されたプログラム・カウンタであって、プログラム・カウンタが増分されたときに当該プログラム・カウンタが特殊命令または通常演算命令を前記命令メモリから発行させるプログラム・カウンタと、
それぞれが算術演算または論理演算を実行する機能単位を複数含むデータ経路と、
命令メモリ、プログラム・カウンタ、およびデータ経路に結合されたデコードおよび制御ユニットであって、各通常演算命令がデータ経路の単一の演算装置を使用しかつ各特殊命令がデータ経路の複数の演算装置を使用するように、各通常演算命令に対して単一の算術演算または論理演算を実行しかつ各特殊命令に対して複数の算術演算または論理演算を同時に実行するように、データ経路を制御するデコードおよび制御ユニットと、を備え、
前記特殊命令のタイプは、複数ピクセルの処理を指定して出力プリミティブを補間する反復ドロー命令であり、前記反復ドロー命令によって指定された複数ピクセルが処理されて前記RISCプロセッサがピクセル・スパンを生成するまで、前記デコードおよび制御ユニットが前記プログラム・カウンタの増分を防止して、他のRISC命令のデコードが行われないことを特徴とする
RISCプロセッサ。
【請求項６】
デコードおよび制御ユニットは、データ経路に供給された一組の制御信号を自動的に生成する論理装置を含み、前記データ経路は制御信号に応答して演算を実行するように構成された、請求項５に記載のRISCプロセッサ。
【請求項７】
通常RISC命令および特殊RISC命令を実行するReduced  Instruction  Set  Computer（RISC）プロセッサを動作させる方法であって
各通常RISC命令に応答して、RISCプロセッサの単一の機能単位を使用して、単一の演算を実行するようにRISCプロセッサを制御するステップと、
各特殊反復RISC命令に応答して、RISCプロセッサの複数の機能単位を並列に使用して、複数の演算を繰り返し実行するようにRISCプロセッサを制御するステップとを含み、
さらに前記複数の演算を繰り返し実行するようにRISCプロセッサを制御するステップにおいては、第１の演算の後の各後続の演算が各特殊反復RISC命令に応答した前の演算の結果に依存し、かつ前記特殊反復RISC命令の複数の演算が完了するまでプログラム・カウンタの増分が防止されて、他のRISC命令のデコードが行われないことを特徴とする方法。
【請求項８】
あるタイプの特殊反復RISC命令が出力プリミティブを補間する反復ドロー命令であり、RISCプロセッサが反復ドロー命令に応答してピクセルのスパンに対する一連のピクセル・パラメータを処理する、請求項７に記載の方法。
【請求項９】
通常RISC命令および特殊RISC命令を実行するReduced  Instruction  Set  Computer（RISC）プロセッサであって、
各通常RISC命令に応答して、RISCプロセッサの単一の機能単位を使用して、単一の演算を実行するようにRISCプロセッサを制御する手段と、
各特殊RISC命令に応答して、RISCプロセッサの複数の機能単位を並列に使用して、複数の演算を実行するようにRISCプロセッサを制御する手段と、
各特殊反復RISC命令に応答して、RISCプロセッサの複数の機能単位を並列に使用して、複数の演算を反復して実行するようにRISCプロセッサを制御する手段とを備え、
前記複数の演算を反復して実行するようにRISCプロセッサを制御する手段における複数の演算は第１の演算の後の各後続の演算が各特殊反復RISC命令に応答した前の演算の結果に依存しており、さらに前記特殊反復RISC命令の複数の演算が完了するまでプログラム・カウンタの増分が防止されて、他のRISC命令のデコードが行われないことを特徴とする
を含むRISCプロセッサ。
【請求項１０】
あるタイプの特殊RISC命令が出力プリミティブを補間するドロー命令であり、RISCプロセッサが単一のピクセルの複数のピクセル・パラメータを処理する、請求項９に記載のRISCプロセッサ。
【請求項１１】
あるタイプの特殊反復RISC命令が出力プリミティブを補間する反復ドロー命令であり、RISCプロセッサが反復ドロー命令に応答してピクセルのスパンに対する一連のピクセル・パラメータを処理する請求項９に記載のRISCプロセッサ。
【発明の詳細な説明】
発明の分野
本発明は、一般にプロセッサに関し、より詳細には単一の命令に応答して演算を複数回実行できるプロセッサに関する。
背景
グラフィックス・ワークステーションやパーソナル・コンピュータ（PC）など多数の現代のコンピュータ・システムは、二次元および三次元グラフィック・オブジェクトを陰極線管（CRT）、プラズマ・フラットパネル、液晶ディスプレイ（LCD）などディスプレイ装置上に表示する特殊化されたグラフィックス・サブシステムを含む。グラフィックス・サブシステムを使用すれば、かつてコンピュータ・システムのホスト・プロセッサが処理していたグラフィックス動作がグラフィックス・サブシステムによってホスト・プロセッサによって実行される他の演算と同時に（並列に）実行できるのでシステム性能が向上する。さらに、グラフィックス・サブシステムは、しばしば特殊化されたハードウェアおよびソフトウェアを備えており、一般にグラフィック・オブジェクトをより迅速に表示する。
グラフィックス・サブシステム自体が実行するグラフィックス処理の量は、システム性能ならびにグラフィックス処理性能の向上を大きい程度まで決定する。例えば、ある従来のグラフィックス・サブシステムは、単にフレーム・バッファ・メモリおよび関連する制御ハードウェアを含み、汎用ホスト・プロセッサはまだグラフィックス処理機能の大部分を実行しなければならない。そのような手法は、ホスト・プロセッサが比較的大量のデータをフレーム・バッファに転送しなければならず、したがって他のシステム構成要素およびサブシステムがシステム相互接続を同時に使用することができなくなるので非効率的である。他の従来のグラフィックス・サブシステムは、ホスト・プロセッサと並列に動作し、必要なすべてのグラフィック処理機能を実行する特殊化されたグラフィックス・プロセッサを含むが、そのような手法は一部のユーザにとってコストが法外に高くなる。
改善されたシステム性能およびグラフィックス処理性能を妥当なコストで与えるためにこの２つの極端な手法の間の釣り合いが必要である。１つの提案されたシステムではホスト・プロセッサが初期グラフィックス処理ステップを実行し、その後グラフィックス・コントローラが残りのグラフィックス処理ステップを実行する必要がある。そのような仕事の分割でホスト・プロセッサとグラフィックス・サブシステムとの間で交換されるデータの量が少なくでき、したがって従来技術の「ダム」グラフィックス・サブシステムと比較したときに全体的なシステム性能が改善される。グラフィックス処理性能を高めるために、グラフィックス・コントローラはグラフィック・オブジェクトが表示される速度を速くする性能向上機能を備えなければならないが、そのような性能向上機能は比較的低いコストで備えなければならない。
グラフィックス処理性能が高められる１つの領域は出力プリミティブの補間である。グラフィックス・データを効率的に記憶するために、アプリケーション・プログラムは、グラフィック・オブジェクトを表す出力プリミティブを与え、使用する。各出力プリミティブは、グラフィック・オブジェクトに関する完全な情報がそこから暗示または補間される最小の情報を与える。例えば、あるタイプの出力プリミティブは、位置（二次元デカルト座標空間中、またはｘ対ｙ）および３つの頂点の属性（ｘおよびｒ、ｇ、およびｂなどカラー属性を含む）を指定する三角形であり、三角形中のすべての点の位置および属性が頂点に対して与えられた値から補間できる。他のタイプの出力プリミティブには、点、直線、曲線、円、三角形および他の多角形、三角形ストリップ、および三角形ファンがある。
三角形など充填領域三角形用の補間の方法は一般に次のステップを含む。すなわち、１）セットアップ、２）エッジ・ウォーキング、および３）スパン生成。セットアップ中、各ピクセル・パラメータ（例えば位置および属性）のデルタ値を出力プリミティブの頂点のピクセル・パラメータ値に基づいて計算する。次いで、デルタ値を使用して、エッジ・ウォーキングを実行し、デルタ値を増分することによって水平でないエッジ（すなわち０でない勾配を有するエッジ）上のピクセルのピクセル・パラメータを計算する。多角形のエッジを決定した後、スパン生成を行い、多角形のエッジ間の水平走査線中に位置するピクセルのピクセル・パラメータを計算する。このようにして、多角形中の各ピクセルのピクセル・パラメータを出力プリミティブから計算する。スパン生成のステップは、特に性能を改善するために修正を施すことができる。例えば、スパン値の各ピクセルのｙ値は固定のままである。
発明の概要および目的
したがって、本発明の目的は、プロセッサの処理速度を改善することである。
本発明の他の目的は、グラフィックス処理中に出力プリミティブを補間するためにスパンを生成するときにプロセッサの処理速度を改善することである。
本発明の上記および他の目的は、通常RISC命令および特殊RISC命令を実行するReduced  Instruction  Set  Computer（RISC）プロセッサを動作させる方法によって与えられる。この方法は、各通常RISC命令に応答して、RISCプロセッサの単一の機能単位を使用して、単一の演算を実行するようにRISCプロセッサを制御するステップを含む。この方法はまた、各特殊RISC命令に応答して、RISCプロセッサの複数の機能単位を並列に使用して、複数の演算を実行するようにRISCプロセッサを制御するステップを含む。
一実施例によれば、あるタイプの特殊RISC命令は、RISCプロセッサが単一のピクセルに対して複数のピクセル・パラメータを処理する出力プリミティブを保管するドロー命令である。複数の機能単位を使用して、RISCプロセッサは複数の通常RISC命令を並列に効率的に実行し、したがって出力プリミティブを補間するときに処理速度が速くなる。
他の実施例によれば、RISCプロセッサはまた、RISCプロセッサがRISCプロセッサの複数の機能単位を並列に使用して複数の演算を繰り返し実行するように制御され、第１の演算の後、各後続の演算が各特殊反復RISC命令に応答して前の演算の結果に依存する特殊「反復」RISC命令を処理することができる。あるタイプの特殊反復RISC命令は、RISCプロセッサが反復ドロー命令に応答してピクセルのスパンに対して一連のピクセル・パラメータを処理する出力プリミティブを補間する反復ドロー命令である。反復ドロー命令を使用すれば、１つのRISC命令を有するピクセルのスパン全体を生成することができる。
本発明の他の目的、特徴、および利点は、添付の図面および以下の詳細な説明から明らかになろう。
【図面の簡単な説明】
本発明を添付の図面の図に制限ではなく例として示す。図面中、同じ参照番号は同じ要素を示す。
第１図は、一実施例のコンピュータ・システムを示す図である。
第２図は、一実施例のグラフィックス・サブシステムを示す図である。
第３図は、一実施例によるホストとグラフィックス・サブシステムの間の仕事の分割を示す流れ図である。
第４図は、一実施例のRISCプロセッサを示すブロック図である。
第５図は、従来技術による通常RISC命令の実行を示す流れ図である。
第６図は、一実施例による特殊反復RISC命令の実行を示す流れ図である。
第７図は、一実施例による特殊反復命令のフォーマットを示す図である。
第８図は、一実施例のデータ経路を示す図である。
第９図は、反復ドロー命令を実行するときの第８図のデータ経路の演算を示す図である。
詳細な説明
スパン生成に特定の用途を有するReduced  Instruction  Set  Computer（「RISC」）プロセッサ・アーキテクチャについて説明する。特に、説明するRISCプロセッサ・アーキテクチャは、次の命令がフェッチされる前にドロー動作を特定の回数反復させる特殊「反復ドロー」命令をサポートし、初期ドロー動作の後の各ドロー動作は前のドロー動作の結果に依存する。単一の命令に応答してRISCプロセッサにって複数の演算を実行すると、さもなければ同じ演算の性能を同じ回数必要とする命令のシーケンスを処理するときと比較して処理速度が速くなる。性能の改善は、所要のすべてのドロー動作を実行するために「反復ドロー」命令をフェッチし、デコードするだけで済むことを認識すれば理解できる。ドロー命令のシーケンスの各ドロー命令は一般に別々にフェッチされ、デコードされる。
さらなる利点は、RISCプロセッサ・アーキテクチャのデータ経路を構成し、動作させる方法にある。例えば、RISCプロセッサは、通常、乗算器、減算器、および算術論理演算装置（ALU）など複数の演算装置を含む汎用プロセッサとして動作する。通常命令は、実行のために単一の演算装置を必要とする単一の演算を指定する。「反復ドロー」命令など専用命令の場合、RISCプロセッサは、専用命令が複数の演算装置によって並列に効率的に実行される多数の演算動作を指定する。制御およびデコード論理回路は、RISCプロセッサが一般的な算術演算およびメモリ動作を実行する汎用プロセッサとして、ならびに特殊化された演算を効率的に実行する専用プロセッサとして動作するように汎用命令ならびに専用命令をサポートするように構成される。
「反復ドロー」命令は、１）特定の走査線の多角形のエッジ間の距離が分かった後でドロー動作のシーケンスを実行する必要が予測できるため、および２）スパン生成プロセスでは、走査線の各プロセッサのピクセル・パラメータを同じ組のデルタ値によって増分される必要があるために、出力プリミティブによって指定された多角形を充填するときにスパンを生成するために有用である。命令ストリーム中の適度の予測可能性があるところはどこでも「反復」命令の他の用途がある。
システム概要
第１図に、ホスト・バス25に結合されたホスト・プロセッサ15および主メモリ20を含むコンピュータ・システム10を示す。ホスト・プロセッサ15は、例えば、任意の市販のマイクロプロセッサである。コンピュータ・システム10はまた、一実施例では、構成要素相互接続（PCI）ローカル・バス仕様に従って動作する周辺バス30を含む。グラフィックス・サブシステム35は周辺バス30に結合され、ホスト周辺バス・ブリッジ45は周辺バス30およびホスト・バス25に結合され、ホストと周辺バスとの間でデータ・トランザクションをブリッジする。ホスト周辺バス・ブリッジ45はまた主メモリ20を制御するメモリ・コントローラとして動作する。代替システム構成も使用できる。
これらの実施例によれば、ホスト・プロセッサ15は、ディスプレイ装置40上のグラフィック・オブジェクトの表示を必要とする主メモリ20中に記憶されたアプリケーション・プロセッサ（図示せず）を実行する。各グラフィック・オブジェクトは１つまたは複数の出力プリミティブのセットから構成され、各出力プリミティブは、プリミティブによって表されるグラフィック・オブジェクトをどのようにまたどこに表示すべきかを指定または暗示する値のセットを含む。出力プリミティブのタイプには、点、直線、曲線、円、三角形および他の多角形、三角形ストリップ、および三角形ファンがある。
グラフィック・オブジェクトおよびそれらの構成要素プリミティブの位置は、最初にアプリケーション・プログラムによってワールド座標系と呼ばれるデカルト基準系で指定される。グラフィック・オブジェクトを表示するためには、グラフィック・オブジェクトおよびそれらの構成要素プリミティブをディスプレイのデバイス座標空間で表すために座標変換が必要である。出力プリミティブがデバイス座標に変換された後、出力プリミティブは、表示用のピクセル値を生成するために補間され、他の形で処理される。
これらの実施例によれば、ホスト・プロセッサ15は、ワールド座標系の出力プリミティブを受け取り、出力プリミティブをデバイス座標に変換し、照明効果処理を実行し、変換された出力プリミティブをグラフィックス・サブシステム35に送信し、これが出力プリミティブを補間し、表示用の最後のピクセル値を生成する。ホスト・プロセッサ15は実際のプロセッサ処理を実行しないので、バス・トラフィックがかなり減少し、ホスト・プロセッサは他のタスクを自由に実行できるようになる。したがって、ホスト・プロセッサ15とグラフィックス・サブシステム35の間の仕事のこの分割で、ホスト・プロセッサがグラフィックス処理タスクの大部分を実行するシステムと比較したときにコンカレンシ（パラレリズム）がかなり増大する。
第２図に、一般にグラフィックス・コントローラ50、EPROM55、DRAM60、およびパレット/DAC65を含むグラフィックス・サブシステム35を示す。グラフィックス・コントローラ50は、周辺バス30に結合され、ホスト・プロセッサ15から変換された出力プリミティブを受け取り、そのときグラフィックス・コントローラ50は表示用のピクセル値を生成するために適切な補間および処理を実行する。DRAM60は、表示用のピクセル値を記憶するフレーム・バッファ・メモリおよびテクスチャ・マップを記憶するテクスチャ・マップ・メモリに分割される。パレット/DAC65は、ディスプレイ装置40を操作するためにデジタル・ピクセル値をアナログ電圧に変換するデジタルアナログ変換器を含む。
グラフィックス・コントローラ50は、周辺バス・インタフェース70、RISCプロセッサ75、命令キャッシュ（Ｉ−キャッシュ）80、データ・キャッシュ（Ｄ−キャッシュ）85、DRAMコントローラ90、ピクセル・エンジン95、VGA回路100、ビデオ・コントローラ（「CRTC」）105、およびビデオ先入れ先出し（FIFO）回路110を含むものとして示される。周辺バス・インタフェース70はグラフィックス・コントローラ50を周辺バス30に結合するために備えられる。
出力プリミティブは、ホスト・プロセッサ15によってデータ・ストリームとしてグラフィックス・コントローラ50に送信される。各出力プリミティブは、出力プリミティブのタイプを指定するタイプ部分、およびプリミティブの各点および頂点の位置および属性を指定するデータ部分を含む。例えば、出力プリミティブが三角形である場合、出力プリミティブは、三角形を指定するタイプ部分、および３つの頂点の位置および属性を指定するデータを含む。タイプ部分はまた、RISCプロセッサ75がデータ・ストリーム中の次の出力プリミティブが始まる場所を決定できるように出力プリミティブのデータ部分の長さを指定する情報を含む。RISCプロセッサ75は、出力プリミティブを正確に処理するためにＩ−キャッシュ80からフェッチすべき命令を決定するためにデータ・ストリームを解釈する。
RISCプロセッサ75は、出力プリミティブによって画定された領域中に表示すべき各ピクセルごとにピクセル・パラメータを生成するために各出力プリミティブを補間する。ピクセル・エンジン95は、ピクセル値を生成するためにピクセル・パラメータを使用して、フィルタリングおよび他の処理を実行する。各ピクセル値は、ディスプレイ装置のピクセルと直接対応し、DRAMコントローラ90によってDRAM60のフレーム・バッファ部分中に記憶される。CRTC105は、ディスプレイ装置上でリフレッシュするためにビデオFIFO110を充填するためにDRAM60からピクセル値をフェッチする。
第３図に、グラフィックス処理がホスト・プロセッサ15とグラフィックス・コントローラ50の構成要素との間で分割される形を示す。一般に、ホスト・プロセッサ15はアプリケーション・プログラムから出力プリミティブを受け取り、出力プリミティブはワールド座標系125で指定される。ホスト・プロセッサ15は、照明効果を実行するために座標変換およびグラフィックス処理を実行する（プロセス・ブロック130）。いまデジタル座標で表されている出力プリミティブはホスト・プロセッサ15によってグラフィックス・コントローラ50に転送される。RISCプロセッサ75は、出力プリミティブによって暗示される中間点の位置および属性を計算するために出力プリミティブの点または頂点を補間し、ピクセル・エンジン95は、フレーム・バッファ中に記憶され、その後表示用に使用されるピクセル値を生成するためにグラフィック・オブジェクトのすべての点の値を処理する。
プロセス・ブロック135で、RISCプロセッサ75は出力プリミティブによって暗示された領域を充填する補間プロセスをセットアップする。例えば、出力プリミティブが三角形である場合、三角形の３つの頂点は三角形状を暗示し、充填された三角形中の各ピクセルのピクセル・パラメータ（すなわち位置および属性）は３つの頂点の位置および属性から計算できる。補間プロセスとセットアップするために、RISCプロセッサ75は指定された各ピクセル・パラメータのデルタ値（例えば、dx、dy、du、dvなど）を決定する。セットアップ・プロセス中、RISCプロセッサ75は、実行用にプロセッサの最大１つの演算装置を必要とする単一の演算をそれぞれ指定する命令のシーケンスを処理する代表的な汎用RISCプロセッサとして動作する。
プロセス・ブロック140で、RISCプロセッサ75は、デルタ値を使用して、出力プリミティブによって暗示された多角形のエッジのピクセルのピクセル・パラメータを決定する「エッジ・ウォーク」を実行する。エッジ・ウォーク・プロセス中、RISCプロセッサ75は代表的な汎用RISCプロセッサとして動作する。
プロセス・ブロック145で、RISCプロセッサ75は、デルタ値および計算したエッジを使用して、計算したエッジ間のピクセルのピクセル・パラメータの「スパン」を生成する。スパン生成プロセス中、RISCプロセッサ75は、それぞれがスパンのピクセルのピクセル・パラメータの出力をもたらす１つまたは複数の「ドロー」命令をRISCプロセッサが処理する、専用プロセッサとして動作する。あるいは、RISCプロセッサ75は、スパンの各ピクセルに対するドロー動作の出力を指定する単一の「反復ドロー」命令を実行する。各「ドロー命令」および「反復ドロー」命令各ドロー動作ごとに、RISCプロセッサ75は複数の演算装置を使用して複数の演算動作を並列に実行する。プロセス・ブロック150で、ピクセル・エンジン95は、RISCプロセッサ75によって計算されたピクセル・パラメータを使用して、ディスプレイ装置の適切なピクセルを励起するために使用されるピクセル値を生成する。
グラフィックス・サブシステム−プロセッサ
第４図に、RISCプロセッサ75の内部または外部に備えられる、すべてクロック信号180によってクロックされる、命令メモリ155、プログラム・カウンタ157、デコードおよび制御ユニット160、およびデータ経路165を含むRISCプロセッサ75を示す。たいていの用途では、RISCプロセッサ75は、命令当たり１つの演算を実行する代表的なパイプライン・プログラムとして動作する。したがって、データ経路165は、算術演算および論理演算を実行する多数の機能単位を含む（データ経路165の一実施例の例については第８図を参照）。
さらに、RISCプロセッサ75は、データ経路165の機能単位によって同時に並列に実行される多数の演算を含む特殊「ドロー」命令を実行することができる。デコードおよび制御ユニット160は、データ経路の機能単位を操作するために適切な制御信号を生成する論理回路を含む。データ経路165は、RISCプロセッサ75が専用スパン発生器のように動作するように「ドロー」命令を効率的に実行するように構成される。
RISCプロセッサ75はまた、命令ストリームの次の命令がフェッチされる前に「反復」命令によって示された演算が指定された回数実行される特殊「反復」命令を実行することができる。反復命令は、それぞれ同じ演算を実行するよう指定する命令のシーケンスの代わりに使用され、したがって所望の演算を実行するのに要する時間が短縮される。例えば、それぞれピクセルをドローする４つの「ドロー」命令のシーケンスの代わりに単一の「反復ドロー」命令または「rdraw」命令を使用することができる。
特殊「反復」命令の利点は、従来技術の第５図から第６図を比較すれば理解できる。第５図に、命令フェッチ段200、命令デコード段201、実行段202、書戻し段203を含む代表的な命令パイプの段を示す。プログラム・カウンタは段204でフェッチされ、それで次の命令がフェッチされる。パイプラインの各段が完了するのに１クロック・サイクルかかる場合、各命令は完了するのに５つのクロック・サイクルを必要とする。ドロー命令のシーケンスの場合、各ドロー命令はパイプラインの各段に従う。
第６図に、特殊「反復」命令を実行する形を示す。第５図のパイプラインと同様に、第６図のパイプラインは、命令フェッチ段210、命令デコード段211、実行段212、書戻し段213を含むが、プログラム・カウンタは、反復命令によって指定された演算を再び実行すべき場合増分できない。演算を再び実行すべきかどうかの決定は、書戻し段213と同時になされ、したがって待ち時間がパイプラインに加わることはない。「反復」命令がただ１回フェッチされ、デコードされるので、同じ演算を指定する命令のシーケンスと比較したときに時間が節約される。
次に、第４図に戻り、RISCプロセッサ75の動作について説明する。命令メモリ155は命令キャッシュ80から取り出された命令を記憶する。プログラム・カウンタ157が増分したとき、命令メモリ155は命令を出力し、これがデコードおよび制御ユニット160によってデコードされる。デコードおよび制御ユニット160は、必要な制御信号をアサートし、データ経路165が命令によって示された演算を実行できるようにデータ経路165の適切なレジスタをロードする。
「ドロー」命令がデコードおよび制御ユニット160から取り出されたとき、デコードおよび制御ユニット160は、複数の機能単位が異なる演算を同時に実行するようにデータ経路165の機能単位を操作するために必要な制御信号を生成する。デコードおよび制御ユニット160は、ドロー命令のopコードに応答して適切な制御信号を自動的に生成するプログラム可能論理アレイ（PLA）など論理回路を含む。
命令159がデコードおよび制御ユニット160によって受け取られ、命令159が反復命令である場合、デコードおよび制御ユニット160は、反復命令によって指定された演算が反復命令によって指定された回数実行されるまでプログラム・カウンタ157が増分するのを防ぐ。第７図に、opコード・フィールド220、宛先レジスタ・フィールド221、およびソース・レジスタ222および223を含む命令159の基本フォーマットを示す。「反復」命令の場合、opフィールド中に記憶された情報は、演算、演算を指定する情報224、演算を反復すべきかどうかを指定する反復情報225、および演算を反復すべき回数を指定する数情報を含むと考えられる。プロセッサ設計者は反復命令に対応する任意のopコードを勝手に選択でき、明確なオペレーションフィールド、反復フィールド、および数フィールドを与える必要はない。さらに、別法として、別個の命令を使用して数情報を与えることもできる。例えば、命令を使用して、反復命令によって指定された演算を実行すべき回数を指定する値を前もってレジスタまたはカウンタにロードすることもできる。
第８図および第９図に、スパンのピクセルに対するピクセル・パラメータを生成する「ドロー」および「反復ドロー」など専用命令、ならびに通常RISC命令を実行することができるデータ経路165の特定の実施例を示す。データ経路165は、マルチプレクサ（「MUX」）300、偶数レジスタ・ファイル302、演算論理装置（「ALU」）Ａ、およびレジスタ中に記憶されるピクセル・エンジン命令315の上部データ部分308に16ビットのデータを出力するレジスタ306を有する「偶数」パイプラインを含むものとして示されている。データ経路165はまた、マルチプレクサ（「MUX」）301、奇数レジスタ・ファイル303、ALU  Ｂ、およびピクセル・エンジン命令315の下部データ部分に19ビットのデータを出力するレジスタ307を含む「奇数」パイプラインを含む。データ経路165の他の機能単位は、XSHADOWレジスタ311、COUNTレジスタ312、相互計算回路「1/Q」）313、乗算器314を含む。ピクセル・エンジン命令315はまた、上部データ部分および下部データ部分中に記憶されたデータをどのように処理するかを決定するためにピクセル・エンジン95が読み取るopコード部分310を含む。ALU  ＡおよびALU  Ｂはそれぞれ待ち時間の１つのクロック・サイクルを有し、相互計算回路313および乗算器314はそれぞれ待ち時間の２つのクロック・サイクルを有するが、各クロック・サイクルごとに新しい動作の実行を開始するためにパイプラインされる。
デコードおよび制御ユニット160の一部も示されている。具体的には、偶数レジスタ・ファイルおよび奇数レジスタ・ファイルをアクセスするレジスタ・アドレスを与えるために結合されたデコード命令レジスタ（「デコード」IR）405およびCYCLEレジスタ410が示されている。この実施例によれば、デコードIR405は、命令の宛先フィールド、ソース・フィールド２、およびソース・フィールド１からデコードされたレジスタ・アドレスを記憶し、CYCLEレジスタ420は、反復命令の各動作ごとにクロック・サイクルの数を指定する３ビット・サイクル・カウント値を記憶する。この実施例によれば、各レジスタ・アドレスは６ビットであり、サイクル・カウントの最大値は反復命令のopコードからデコードされる。
デコードIR405中に記憶された各６ビット・ソース・レジスタ・アドレスごとに、ソース・レジスタ・アドレスの３つの最小桁のビットおよび３ビット・サイクル・カウントを受け取る３つの２入力論理ORゲート415のセットが与えられる。各論理ORゲート415は、対応するレジスタ・アドレスの下位ビットの１つおよびサイクル・カウントのビットの１つを有する論理OR演算を実行する。サイクル・カウントは０から始まり、各クロック・サイクルごとに増分し、ついにはサイクル・カウントが所定の最大値に達し、その後サイクル・カウントは０にリセットされ、反復命令の次の演算の開始を示す。サイクル・カウントが各クロック・サイクルごとに増分するので、４つの新しいソース・オペランド（各パイプラインごとに２つ）のセットが各クロック・サイクルごとに自動的にアドレスされ、他の命令をデコードする必要はない。サイクル・カウントの最大値を大きくすることによって、より多くのピクセル・パラメータがドロー動作によって計算できる。
宛先レジスタ・アドレスはデータとともにパイプライン中を移動する。パイプラインの最後に、宛先レジスタ・アドレスは決定され、データが示されたレジスタに書き込まれる。
マルチプレクサ320〜325、330〜333、345〜346、352、および360〜361が図示にように機能単位の結果を転送するために備えられ、レジスタ340〜344、350〜351、および370〜371がパイプラインのために備えられる。偶数パイプラインならびに奇数パイプラインは次の４つの段、すなわちデコード、実行１（X1）、実行２（X2）、および書込み（WR）を含む。両方のパイプライン用のフェッチ段は、第４図に示される命令メモリ155、プログラム・カウンタ157、およびデコードおよび制御ユニット160によって実行される。適切な場合、マルチプレクサおよびレジスタは、命令に対してパイプラインの特定の段で新しいデータを出力するために制御信号によって制御／イネーブルされるものとして示される。例えば、レジスタ340は、X1段中に特定の命令に対してオペランドを送ることができるようになり、レジスタ350は、X2段中に特定の命令に対して結果を送ることができるようになり、およびレジスタ350はWR段中に同じ結果を送ることができるようになる。すべての制御信号はデコードおよび制御ユニット160によって与えられる。
偶数パイプラインおよび奇数パイプラインは、第１の命令が偶数パイプライン中に発射され、第２の命令が奇数パイプライン中に同時に発射されるスーパスカラー機能を与えるために使用される。さらに、偶数パイプラインおよび奇数パイプラインは、単一の機能単位によって単一の演算をそれぞれ指定する代表的なRISC命令を実行するために使用される。
「ドロー」命令や「反復ドロー」命令など特殊な演算を実行する能力は、一部は、XSHADOWレジスタ311、COUNTレジスタ312、増分装置（「INC」）380〜381、および０検出器回路（ZD）390によって与えられる。XSHADOWレジスタ311はスパン生成中に水平位置パラメータ「ｘ」の現在の値を記憶し、増分装置380はスパンのデルタ値dxを記憶するようにプログラムされる。COUNTレジスタ312は、特定の「反復ドロー」命令に対して実行すべきドロー動作の回数を指定するカウンタの現在の値を記憶する。増分装置381は、CYCLEレジスタ420が０値に達したことによって示されるドロー動作が完了したときはいつでもCOUNTの値を減分する。COUNTレジスタ312が０値に達したとき、０検出器回路390は、デコードおよび制御ユニット160がプログラム・カウンタが増分し、かつ新しい命令がフェッチできるようにデコードおよび制御ユニット160にそのように示す。
第９図に、ドロー動作当たり４つのピクセル・パラメータの新しい値を生成する「反復ドロー」命令（サイクル・カウントの最大値は２に等しい）を使用してパースペクティブ補正を実行するデータ経路165の演算を示す。第９図の「反復ドロー」命令は、各ドロー命令ごとに次式を解くことによってｕパラメータおよびｖパラメータのパースペクティブ補正を実行する。
0003608797.tif 000002
各ドロー動作はピクセル・パラメータｘ、ｚ、u'、およびv'を出力する。上式で、ｑはパースペクティブ値、dqはセットアップ時に決定されるｑのデルタ値、ｕは水平テクスチャ座標、duはセットアップ時に決定されるｕのデルタ値、ｖは垂直テクスチャ座標、dvはセットアップ時に決定されるｖのデルタ値、ｘは水平位置パラメータ、dxはセットアップ時に決定されるｘのデルタ値、ｚは深さパラメータ、dzはセットアップ時に決定されるｚのデルタ値、u'はｕのパースペクティブ補正値、およびv'はｖのパースペクティブ補正値である。COUNTの値はすべての式が解かれた後で減分される。
ｑ、ｘ、ｚ、ｕ、ｖ、dq、dx、dz、du、およびdvの値は、反復ドロー命令をフェッチし、デコードする前に計算され、レジスタ・ファイル中に記憶される。この実施例によれば、XSHADOWレジスタ311にはスパンの初期水平座標ｘがロードされ、増分装置380には値dxがロードされる。ｑおよびｚの値はS1Aオペランドとしてアクセスするために偶然レジスタ・ファイル302中に記憶され、dqおよびdzの値はS2Aオペランドとしてアクセスするために偶然レジスタ・ファイル302中に記憶される。同様に、ｕおよびｖの値はS1Bオペランドとしてアクセスするために奇数レジスタ・ファイル303中に記憶され、duおよびdvの値はS2Bオペランドとしてアクセスするために奇数レジスタ・ファイル303中に記憶される。
データ経路165は、マルチプレクサによって与えられる転送能力を使用して、所望の量のコンカレンシを与える。第９図に示すように、デコードおよび制御ユニット160は、それぞれALU  ＡおよびALU  Ｂ、および乗算器314を使用して第１のピクセル（ピクセル０）に対して式（２）、（４）、および（５）を並列に解くために時刻T1にデータ経路165を制御する。時刻T2で、XSHADOWは増分し、式（７）を解き、ALU  Ａは式（８）を決定し、ALU  Ｂは式（６）を決定し、乗算器314は式（３）を決定し、相互計算回路313は式（１）の決定を終了する。これは、時刻T3中に第２のピクセル（ピクセル１）の式（２）、（４）、および（５）の決定を可能にする。また時刻T3では、ピクセル０のｘおよびu'の値（x0およびu0'）が出力される。時刻T4では、ピクセル０のｚおよびv'の値（z0およびv0'）が出力される。また時刻T4で、式（１）、（３）、（６）〜（８）がピクセル１に対して完了し、その後、図示のように、時刻T5およびT6中にピクセル１のパラメータが出力される。このプロセスはCOUNTが０に達するまで続く。
以上、本発明についてその特定の例示的な実施例に関して説明した。しかしながら、本発明のより広い精神および範囲から逸脱することなく本発明に様々な修正および変更を加えることができることは明らかであろう。したがって、明細書および図面は限定的なものではなく例示的なものである。
【図１】
0003608797.tif 000003
【図２】
0003608797.tif 000004
【図３】
0003608797.tif 000005
【図４】
0003608797.tif 000006
【図５】
0003608797.tif 000007
【図６】
0003608797.tif 000008
【図７】
0003608797.tif 000009
【図８Ａ】
0003608797.tif 000010
【図８Ｂ】
0003608797.tif 000011
【図９】
0003608797.tif 000012