説明

手持ち式携帯デバイスのための高質・高性能3Dグラフィックスアーキテクチャ

手持ち式携帯デバイスに適した高質および高性能の3Dグラフィックスアーキテクチャが提供されている。この3Dグラフィックスアーキテクチャは、サイズおよび他の特徴によって多角形を分類するためのモジュールを組み込んでいる。一般に、小さく且つ形が整った三角形は、質や性能を何ら犠牲にすることなく(例えば、リアリズム、分解能など)、電力効率がよい回路を有する 「低精度」ユニットを使用して処理することができる。プリミティブを分類し且つより電力効率がよい処理ユニットを選択してプリミティブを処理することにより、質や性能を犠牲にすることなく、電力消費量を低減することができる。

【発明の詳細な説明】
【発明の分野】
【0001】
本発明は、一般にコンピュータシステムに関し、特に、最適な節電を行なうためのコンピュータグラフィックス三角形セットアップ・ラスタ化ユニットに関する。
【発明の背景】
【0002】
リアルタイム3次元(3D)イメージングを行なうバッテリ作動の手持ち式携帯デバイス、例えばパーソナルデイタルアシスタント(PDA)、携帯電話、手持ち式電子ゲーム機などは、極めて人気が高くなってきている。これらの人気は、利用可能なネットワーク接続性のオプションによって助長されている。現在、無線データサービスにより、次世代の高性能な電力消費量が低い手持ち式デバイスは、どこでも、いつでも、ネットワーク中心のアプリケーションおよびコンテンツにアクセスすることができる。その結果、これらの手持ち式デバイスは、携帯電話サービスを提供できることに加えて、豊富なウェブ体験以上のものを提供する画像およびビデオクリップを共有する2ウェイビデオをサポートすることができる。
【0003】
モバイルアプリケーションがリッチで複雑になるにつれて、PDAやスマートフォン(高度自動機能電話)等の手持ち式デバイスにおいては、マルチメディアを随意的に処理する能力が必要になってくる。ビデオメール、マッピングサービス、読み取りPDFファイル、3Dグラフィックスリッチゲーム等のアプリケーションは全て、高質・高性能グラフィックスおよびマルチメディア能力を必要とする。これらの能力は、以前は殆どのハンドヘルドユーザが利用できなかった方法でリッチ画像およびシステムから利益を得る新たなアプリケーションを可能にする。これらの手持ち式携帯デバイスは、全体のシステムエネルギ消費量およびコストを低減しつつ強力なユーザ体験を与えるという課題に直面する。従来、手持ち式携帯デバイスは、デスクトップパーソナルコンピュータ(PC)よりも低い性能の構成要素を有している。これは、主に、バッテリ作動の手持ち式デバイスに固有の電力制限によるものである
【0004】
一般に、3Dオブジェクトのレンダリングは、極めて難解な計算であり、電力が集中するため、バッテリ作動の手持ち式デバイスの助けとならない。3Dオブジェクトおよび表面は、関連する多角形として、通常は三角形として近似される。多数の小さい三角形を使用してオブジェクトを近似するとともに、テクスチャマップを使用して表面材料特徴をより正確にレンダリングすることにより、十分なリアリズムを得ることができる。各三角形のレンダリングには、複数の複雑な計算の実行が必要である。三角形の数が増えるにつれて、これらの計算を行なうロジックの複雑度および電力消費量も増大する。3Dグラフィックスアプリケーションは、より高い質および性能を持つアプリケーションが出現するにつれて人気を増し続けている。
【0005】
「Method and Apparatus For A Video Graphics Circuit Having Parallel Pixel Processing」と題された米国特許第6,473,089号(以下、’089特許という)は、3Dグラフィックスピクセル情報の並行処理のためのビデオグラフィックス回路を教示している。’089特許のビデオグラフィックス回路は、セットアップエンジンと、エッジウォーカー回路と、スパン処理回路と、複数のピクセル処理回路とを有している。複数のピクセル処理回路により、ピクセルパラメータの並行処理が可能になる。’089特許は性能が向上したビデオグラフィックス回路を教示しているが、節電の問題を扱っていない。その結果、’089特許のグラフィックス回路は、電力消費量を考慮することが重大となっているバッテリ作動の手持ち式携帯デバイスでの使用に適していない。
【0006】
「Multiple Triangle pixel−Pipelines With Span−Range Pixel Interlock For Processing Separate Non−Overlapping Triangles for Superscalar 3D Graphics Engine」と題された米国特許第6,222,550号(以下、’550特許という)は、三角形全体を同時に処理できるように並列の複数の三角形ピクセルパイプラインを有する3Dグラフィックスプロセッサを教示している。また、三角形ピクセルパイプラインは、三角形内の隣接するピクセルを同時に処理することができる。’089特許と同様に、’550特許は、性能が向上したビデオグラフィックス回路を教示しているが、節電の問題を扱っていない。その結果、’550特許のグラフィックス回路も、電力消費量を考慮することが重大となっているバッテリ作動の手持ち式携帯デバイスでの使用に適していない。
【0007】
そのため、電力消費量を考慮することが重大となっている手持ち式携帯デバイスに適した高質および高性能の3Dグラフィックスアーキテクチャの必要性が存在する。
【発明の概要】
【0008】
したがって、本発明は、電力消費量を考慮することが重大となっている手持ち式携帯デバイスに適した高質および高性能の3Dグラフィックスアーキテクチャを提供する。
【0009】
本発明は、メモリおよび中央処理ユニット(CPU)に結合されたグラフィックスエンジンを導入する3Dグラフィックスアーキテクチャを用いて前述した必要性を満たす。グラフィックスエンジンは、レンダリング/ラスタ化エンジンに結合されたプリミティブセットアップエンジンを備える。プリミティブセットアップエンジンは、グラフィックスプリミティブに関連するデータをメモリから受ける。プリミティブセットアップエンジンは、プリミティブを分類する際に使用されるプリミティブ分類回路を有している。プリミティブセットアップエンジンは、分類に基づいて、質および性能を犠牲にすることなく電力消費量を最小限に抑えるようにプリミティブのためのセットアップ方程式を計算するための処理モードを選択する。レンダリング/ラスタ化エンジンは、一般に、プリミティブのピクセルラスタ化を行なう。
【0010】
本発明において、プリミティブは、そのサイズおよび他の特徴に基づいて分類される。プリミティブは、小さく且つ形が整っているものとして、または、大きくあるいは形が悪いものとして分類される。プリミティブの態様を分類する際、利用される分類基準は、サイズ、テクスチャ、幅、デプスを含むが、これらに限定されない。
【0011】
以下、前述した一般的な概念の様々な実施を説明するグラフィックスエンジンの多くの実施形態が与えられている。他の更なる特徴についても説明されている。
【0012】
本発明の特徴および利点の全ては、添付図面と共にその説明がなされる以下の本発明の好ましい実施形態の詳細な説明から明らかとなろう。
【発明の詳細説明】
【0013】
本発明の以下の詳細な説明では、本発明を十分に理解できるように多数の特定の内容が述べられている。しかしながら、当業者であれば分かるように、本発明は、これらの特定の内容を伴うことなく実施されてもよい。他の場合においては、本発明の態様を不必要に分かり難くしないように、周知の方法、手段、構成要素、回路を詳細に説明しなかった。本発明の以下の詳細な説明は、3次元(3D)グラフィックスおよび手持ち式の携帯デバイスに関するものであるが、本発明が2次元グラフィックスおよび他のタイプの計算/処理デバイスにも適用できることは言うまでもない。
【0014】
本発明に係る3Dグラフィックスアーキテクチャは、サイズおよび他の特徴によって多角形を分類するためのモジュール/回路を組み込んでいる。好ましい実施形態においては、多角形が三角形である。一般に、小さくて形の整った三角形は、質や性能(例えば、リアリズム、分解能(解像度)等)を何ら犠牲にすることなく、電力効率のよい回路を有する低精度ユニットを使用して処理できる。分類に基づいて、更に電力効率がよい回路を有する低精度ユニットまたは更に電力を要する高精度ユニットを選択的にONして、レンダリング/ラスタ化プロセスを実行する。1つの実施形態では、高精度ユニットが低精度ユニットから分かれていてもよい。あるいは、高精度ユニットは、低精度ユニットとなるように回路の一部を無効にしおよび/またはクロックゲート化することにより再構成されてもよい。プリミティブを分類するとともに、より電力効率がよい処理ユニットを選択して、プリミティブを処理することにより、質や性能を犠牲にすることなく、電力消費量を最小限に抑えることができる。以下に詳細に説明する様々な実施形態により、3Dグラフィックスアーキテクチャを実施することができる。
【0015】
データを連続して処理する任意のデータ経路またはデータパイプラインを網羅するために本発明を一般化できることは明らかである。処理されるデータ(例えば、MPEGビデオのマクロブロック)が分類され、また、その分類に応じて、(例えば、電力効率に関して)最も適したデータ経路が(構成可能なデータ経路から)構成されあるいは(複数のデータ経路から)選択され、それにより、質や性能を何ら低下させることなく分類されたデータが処理される。
【0016】
ここで、本発明が実施されあるいは実行されてもよいコンピュータシステム100の高レベル線図を一例として示す図1を参照する。特に、コンピュータシステム100は、ラップトップコンピュータシステムまたはハンドヘルドコンピュータシステムであってもよい。このコンピュータシステム100は、単なる典型例であり、デスクトップコンピュータシステム、汎用コンピュータシステム、組み込み型コンピュータシステム等を含む多くの異なるコンピュータシステム内で本発明が機能できることは言うまでもない。
【0017】
図1に示されるように、コンピュータシステム100は、集積プロセッサ回路101と、周辺制御装置102と、読み出し専用メモリ(ROM)103と、ランダムアクセスメモリ(RAM)104とを含む高集積システムである。高集積アーキテクチャにより、電力を節約することができる。集積プロセッサ回路101内に設けられていない複雑なおよび/または高ピンカウントの周辺機器とインタフェースをとる必要がある場合には、周辺制御装置102は任意である。
【0018】
周辺制御装置102は、集積プロセッサ回路101の一端に接続されているが、ROM103およびRAM104は、集積プロセッサ回路101の他端に接続されている。集積プロセッサ回路101は、処理ユニット105と、メモリインタフェース106と、グラフィックス/ディスプレイコントローラ107と、ダイレクトメモリアクセス(DMA)コントローラ108と、エンコーダ/デコーダ(CODEC)インタフェース109、パラレルインタフェース110、シリアルインタフェース111、入力デバイスインタフェース112を含むコアロジック機能とを備える。処理ユニット105は、命令/データキャッシュと共に中央処理ユニット(CPU)およびメモリ管理ユニット(MMU)を内蔵(統合)している。
【0019】
CODECインタフェース109は、オーディオソースおよび/またはモデムが集積プロセッサ回路101に対して接続するためのインタフェースを備える。パラレルインタフェース110により、ハードディスクやプリンタ等のパラレル入力/出力(I/O)デバイスが集積プロセッサ回路101に対して接続可能となる。シリアルインタフェース111は、万能非同期送受信機(UART)、ユニバーサル・シリアル・バス(USB)、ファイアワイヤ(IEEE 1394)等のシリアルI/Oデバイスが集積プロセッサ回路101に対して接続するためのインタフェースを備える。入力デバイスインタフェース112は、キーボード、マウス、タッチパッド等の入力デバイスが集積プロセッサ回路101に対して接続するためのインタフェースを備える。
【0020】
DMAコントローラ108は、メモリインタフェース106を介して、RAM104に記憶されたデータに対してアクセスするとともに、CODECインタフェース109、パラレルインタフェース110、シリアルインタフェース111または入力デバイスインタフェース112に接続された周辺デバイスに対してデータを供給する。また、DMAコントローラ108は、CODECインタフェース109、パラレルインタフェース110、シリアルインタフェース111、入力デバイスインタフェース112からのデータを、メモリインタフェース106を介してRAM104へと送る。グラフィックス/ディスプレイコントローラ107は、メモリインタフェース106を介して、RAM104からビデオ/グラフィックスデータを要求し且つ当該データにアクセスする。その後、グラフィックス/ディスプレイコントローラ107は、データを処理して、処理されたデータをフォーマットするとともに、フォーマットされたデータを液晶ディスプレイ(LCD)、ブラウン管(CRT)、または、テレビ(TV)モニタ等の表示装置に対して送る。コンピュータシステム100では、集積プロセッサ回路101をROM103およびRAM104に対して接続するために1つのメモリバスが使用される。
【0021】
本発明は、グラフィックス/ディスプレイコントローラ107の一部として実施される。ここで、グラフィックス/ディスプレイコントローラ107を詳細に示す図2を参照する。一般に、グラフィックス/ディスプレイコントローラ107は、CPUインタフェースユニット(CIF)201と、SRAM202と、フェーズロックドループ(PLL)回路203と、オシレータ204と、ピクセル処理ロジック208と、2次元(2D)グラフィックスエンジン(GE)206と、メモリインタフェースユニット(MIU)207と、フラットパネルインタフェース(FPI)209と、CRTデジタル・アナログ変換器(DAC)210と、後処理モジュール211と、MPEG−4ビデオデコーダ212と、MPEG−4ビデオエンコーダ213と、3D GE214とを備える。グラフィックス/ディスプレイコントローラ107は、ビデオカメラを受け入れるためのビデオ入力ポートを更に含む。CIF201は、処理ユニット105およびDMAコントローラ108に対するインタフェースを備える。したがって、CIF201は、処理ユニット105から受けた要求およびビデオ/画像データを所望の宛先へと経路指定(ルーティング)する。特に、CIF201は、ホストCPU処理ユニット105およびDMAコントローラ108からのレジスタ読み取り/書き込み要求およびメモリ読み取り/書き込み要求をグラフィックス/ディスプレイコントローラ107内の適切なモジュールへと送る。例えば、メモリ読み取り/書き込み要求がMIU207へと伝えられ、MIU207は、SRAM202内のフレームバッファから/へとデータを読み取る/書き込む。また、CIF201は、DMAコントローラ108との連絡役として機能して、システムメモリ(ROM103およびRAM104)からデータをフェッチする(取り出す)とともに、そのデータをGE206およびMIU207に対して供給する。また、CIF201は、MPEG後処理プロセスを制御するために処理ユニット105内のホストCPUによってプログラム可能な多くの制御レジスタを有している(例えば、制御レジスタのうちの幾つかの内容は、MPEG−4デコーダ212を構成するために使用されてもよい)。また、CIF201は、画像の構成/解凍を行なうために、圧縮されたビデオ/画像ビットストリームをMPEG−4デコーダ212に対して送る。更に、CIF201は、集積プロセッサ回路101に直接的または間接的に接続されたデバイスに対して圧縮されたビットストリームが送信可能となる前に、圧縮を行なうため、コーデックインタフェース109またはシリアルインタフェース111に接続されたソースから受けた圧縮されていないビデオ/画像ビットストリームをMPEG−4エンコーダに対して送る。
【0022】
SRAM202内のフレームバッファは、モニタ上に表示される画像のピクセルマップ(すなわち、フレームバッファにマッピングされるピクセルパターン)を記憶するため、および様々な目的で一時バッファとしての機能を果たすために使用される。また、SRAM202は、ビデオバッファおよびトランザクションレジスタのために割り当てられたメモリを有していてもよい。2D GE206は、その後にホストCPUによって発せられるコマンドに基づいてSRAM202内のバッファに記憶されるグラフィックス/ビデオ画像データを処理する。GE206は、グラフィックス演算(例えば、BitBLTsおよびROPs、エリアフィル、線画)を行なうとともに、クリッピング、透過、回転、色拡張等のためのハードウェアサポートを行なう。更に、GE206は、内蔵されているストレッチ・ブロック・トランスファ(STRBLT)機能により、ビデオ画像拡張、プログレッシブスキャニング変換、YcbCr(YUV)−RGB色空間変換等を行なう。要するに、2D GE206は、処理ユニット105を、ビデオ/グラフィックス表示レンダリング機能から解放して、処理ユニット105がタイムクリティカルなあるいはリアルタイムな演算を行なえるようにする。
【0023】
3D GE214が本発明を実施する。ホストCPUのコマンドの下、3D GE214は、表示のために3Dグラフィックスの処理およびレンダリングを実行する。一般に、3D GE214は、データパイプライン(別名:データ経路)態様で3Dグラフィックスを連続して処理する。このような処理としては、プリミティブ頂点情報をフェッチすること、頂点情報をソートすること、プリミティブ面積を計算してプリミティブを分類すること、面積計算および/またはプリミティブ分類を使用して、3Dグラフィックスを処理するための適切な(例えば、最も電力効率がよい)回路を選択または構成すること、ピクセルの位置および属性における初期値および階調を計算すること、三角形プリミティブの各ピクセル毎に位置および属性の値を計算すること、パースペクティブ分割を行なうこと、フィルタモードによって必要とされるテクセルデータをテクスチャキャッシュから取り出すこと、テクスチャと拡散色とを組み合わせて新たな拡散色(dc)を生成すること、アルファ、デプス、ステンシルテストを行なうこと、dcとフレームバッファからのピクセルカラーとを組み合わせてレンダリングされた3Dデータを生成することを挙げることができるが、これらの機能に限定されない。3D GE214は、その後、処理された3Dをフレームバッファ202に対して供給する。プリミティブ面積の計算、プリミティブの分類、3Dグラフィックスデータを処理するための適した回路のその後の選択または構成等のような本発明に関連する機能を除き、3D GE214によって行なわれる残りの機能は、一般に、良く知られており、全てとはいえないにしても殆どの市販されている3Dグラフィックスエンジンで実行される。
【0024】
MIU207は、SRAM(フレームバッファ)202内のフレームバッファ、ビデオバッファ、トランザクションレジスタから/への全ての読み取りおよび書き込みを制御する。そのような読み取りおよび書き込み要求は、CIF201、2D GE206、3D GE214、ピクセル処理ロジック208、FPI209等を介してホストCPUから成されてもよい。また、MIU207は、メモリアドレッシングやメモリタイミング制御等に関連付けられたタスクを実行する。後処理モジュール211は、解凍されたMPEGビデオ画像データからのブロッキングアーティファクトおよびリンギングアーティファクトを除去して、解凍されたビデオデータの質を向上させる。解凍されたMPEGビデオ画像データは、例えばシリアルインタフェース111またはMPEG−4デコーダ212を介して光メディアプレーヤから受けることができる。その後、フィルタ処理されたビデオ画像データはSRAM202へ送られる。
【0025】
ピクセル処理ロジック208は、MIU207を介してSRAM202内のバッファからビデオ/グラフィックスデータを取り出して、その画像データをピクセルへとシリアライズ(直列化)するとともに、ピクセルをFPI209またはCRT DAC210へと出力する前に当該ピクセルを所定の形式へとフォーマットする。したがって、ピクセル処理ロジック208は、必要な水平および垂直な表示タイミング信号、メモリアドレス、読み取り要求、SRAM202内に記憶された画像データにアクセスするための制御信号を生成する。関連する表示デバイスがLCDである場合、ピクセル処理ロジック208からのピクセルデータは、LCDへ送られる前にFPI209に対して送られる。また、FPI209は、表示のために異なるカラー色相またはグレイシェイド(灰色影)を更に加えることによりデータを処理する。また、薄膜トランジスタ(TFT)LCD(別名:アクティブマトリクスLCD)または超ねじれネマチック(STN)LCD(別名:パッシブマトリクスLCD)が使用されるかどうかに応じて、FPI209は、ディスプレイのタイプに適するようにデータをフォーマットする。更に、FPI209により、モノクロLCDが使用される場合には、カラーデータをモノクロデータへと変換することができる。逆に、ディスプレイ装置がブラウン管(CRT)である場合、ピクセルデータは、CRTへ送られる前に、CRTデジタル・アナログ変換器(DAC)210に対して供給される。CRT DAC210は、ピクセル処理ロジック208からのデジタルピクセルデータを、CRTモニタ上に表示されるアナログのレッド(赤)、グリーン(緑)、ブルー(青)[RGB]信号へと変換する。
【0026】
ここで、本発明を実施する3D GE214の第1の実施形態の関連する構成要素を示す図3を参照する。図3に示されるように、3D GE214は、面積計算/分類回路301と、反復子セットアップ計算回路302と、反復子セットアップ計算回路312と、ピクセル反復子回路303と、ピクセル反復子回路313と、パースペクティブ分割回路304と、パースペクティブ分割回路314とを有している。面積計算/分類回路301、反復子セットアップ計算回路302、反復子セットアップ計算回路312は、三角形セットアップエンジン305を形成している。ピクセル反復子回路303と、ピクセル反復子回路313と、パースペクティブ分割回路304と、パースペクティブ分割回路314は、ラスタライジング/レンダリングエンジン306を形成している。しかしながら、反復子セットアップ計算回路302および反復子セットアップ計算回路312は、図3に示されるように三角形セットアップエンジン305の一部とならずに、破線のボックスによって示されるようにラスタライジング/レンダリングエンジン306の一部を成すこともできる。図3に示されるように、反復子セットアップ計算回路302、ピクセル反復子回路303、パースペクティブ分割回路304は、互いに接続されることにより、小さくて形の整った三角形を扱うようになっている第1の経路を形成する。反復子セットアップ計算回路312、ピクセル反復子回路313、パースペクティブ分割回路314は、互いに接続されることにより、大きくて形の悪い三角形を扱うようになっている第2の経路を形成する。この実施形態においては、三角形分類が決定された後、第1の経路または第2の経路によって三角形が処理される。電力を節約するため、選択されない経路中のハードウェアをOFFする(クロックされない)ことができる。
【0027】
3Dグラフィックスを生成するため、3Dアプリケーションがシーンを作成する(例えば、PCゲームで使用される3Dアニメーションソフトウェア)。各シーンは、パラメトリック曲面を接続することにより形成される多くのオブジェクトを含む。各パラメトリック曲面は、プリミティブと呼ばれる小さい更に簡素な要素に分割される。プリミティブは、多角形、球、円柱、自由造形面等の任意の立体形状またはパターン形状であってもよい。通常、プリミティブは、多角形の1つのタイプである三角形である。データベース中のデータ構造によって表わされる各プリミティブは、それに所望の色、形状、テクスチャ(質感)、透明度等を与えるための属性および(例えば、三角形の3つの頂点からの)頂点座標に関連付けられる。幾何学的処理として知られる3Dパイプラインの次の段階においては、プリミティブデータベースが画像空間へと数学的に変換される。そのような変換としては、翻訳(変換)、回転、クリッピング、投影、スケーリングを挙げることができる。照明効果およびぼかし効果もプリミティブに加えられる。幾何学的処理は、その頂点座標、色、デプス、テクスチャ、他の属性によって表わされる画像空間プリミティブを形成する。
【0028】
3D GE214は、幾何学的処理によって形成された画像空間プリミティブを受けるとともに、3Dパイプラインのラスタ化段階を実行する。本発明の実施形態は三角形状のプリミティブを対象としているが、本発明が他の形状のプリミティブにも同様に適用できることは明らかである。一般に、三角形セットアップエンジン305は、各三角形毎に調整されたピクセル位置および属性階調を生成するが、ラスタライジング/レンダリングエンジン306は、三角形セットアップエンジン305によって生成された情報を使用して、三角形内の全てのピクセル属性を生成する。ラスタライジング/レンダリングエンジン306は、エッジウォーキングを行なって、エッジに沿うピクセル位置を決定した後、主要エッジに沿うピクセル位置を開始点として使用して処理をスパンし、三角形プリミティブの内側の走査線に沿うピクセルにおいてピクセル位置および属性値をレンダリングする。属性の例としては、色、デプス、テクスチャ座標、ブレンディング等を挙げることができる。各ピクセルの最終的なレンダリングは、アプリケーションによって定められる全ての属性の合成である。ラスタライジング/レンダリングエンジン306自体は多数の計算を実行する。幾つかの更なる下流側での処理の後における各ピクセルの属性は、その後の表示のためにSRAM202内のフレームバッファに対して送られる。
【0029】
前述したように、三角形セットアップエンジン305は、面積計算/分類回路301と、反復子セットアップ計算回路302と、反復子セットアップ計算回路312とを含むが、これらに限定されない。本発明において、面積計算/分類回路301は、以下の式にしたがってXPを計算する。
XP=[(dx10*dy20)-(dx20*dy10)] (1)
ここで、dxNM=(XN-XM)、dyNM=(YN-YM)であり、|XP|/2は、手元にある三角形の面積に等しい。方程式(1)を計算できる前に、面積計算/分類回路301は、この三角形の主要エッジを決定する。三角形の主要エッジは、最も小さいY座標を有する頂点を最も大きいY座標を有する頂点に接続するエッジとして規定される。主要エッジおよびその対応する接続頂点に基づいて、面積計算/分類回路301は、最も大きいY座標を有する頂点に頂点2というラベルを付け、最も小さいY座標を有する頂点に頂点0というラベルを付け、残りの頂点に頂点1というラベルを付ける。ここで、三角形400の主要エッジ410および本発明にしたがって三角形の頂点にラベルを付ける方法を一例として示す図4を参照する。また、図4は、ラスタライジング/レンダリングプロセスで使用される三角形400内の多くの走査線を示している。
【0030】
面積計算/分類回路301は、所定の基準に基づいて、プリミティブ三角形を小さい三角形または大きい三角形として分類する。また、面積計算/分類回路301は、他の所定の基準にしたがって、各三角形を「形が整った」三角形または「形が悪い」三角形として分類する。「形が悪い」三角形の一例は、非常に狭い三角形である。三角形が小さく且つ形が整っているかどうかを決定することは重要である。なぜなら、小さく且つ形が整っている三角形を計算することは、大きくあるいは形が悪い三角形を計算することよりも精度をあまり必要としないからである。一般に、より精度が高い三角形計算器は、より大きい乗算器および/または加算器を必要とし、その結果、多くの電力を消費する更に多くの論理ゲートを必要とする。逆に、より精度が低い計算器は、より小さい乗算器および/または加算器あるいは他の数学的論理回路を必要とする。論理ゲートの使用が僅かであれば、電力消費量も少なくて済む。そのため、本発明においては、三角形プリミティブを正確に分類して、電力をあまり消費しない計算器を選択するとともに、「冗長な」精度だけを犠牲にすることにより、ピクセルレンダリング/ラスタ化プロセスにおける質や性能の損失を殆どあるいは全く伴うことなく、電力を節約することができる。
【0031】
表1は、一例として、三角形が小さくおよび/または形が整っているかどうかを決定するために面積計算/分類回路301によって実施される新しい分類基準をまとめている。表1に示されるように、「サイズ」基準を満たさないことは、三角形が大きいことを示しており、「テクスチャ」基準を満たさないことは、三角形がテクスチャマップ内で非常に長い距離にわたって広がり、したがって、形が悪いことを示しており、「幅」基準を満たさないことは、三角形が狭く、したがって、形が悪いことを示しており、「デプス」基準を満たさないことは、三角形が非常に深い範囲にわたって広がり、したがって、形が悪いことを示している。与えられた用途に応じて、他の基準(表1に示されていない)が定められてもよい。なお、分類規則は、頂点のX,Y,U,V,1/wの値に関して最小値および最大値を必要とする。すなわち、Xmin=min(X0, X1, X2)、Xmax=max(X0, X1, X2)であり、Umin=min(U0, U1, U2)等である。表1に示される全ての基準が満たされる場合、三角形は小さく且つ形が整っている。基準が満たされない場合、三角形は大きくあるいは形が悪い。
【表1】

【0032】
本発明の目的を満たすため、分類プロセスは、節約された電力のかなりの部分を使い果たすことができない。必要な処理能力を簡素化し従って減らすため、分類計算の前に複数のステップが行なわれる。幾つかの例を以下に示す。例えば、テクスチャ座標およびデプス座標(u,v)および1/wはそれぞれ浮動小数点値である。分類基準は、評価中に完全な精度を必要としない。計算を劇的に単純化して、テクスチャおよびデプス基準を評価するために必要な電力を減らすために、仮数の限られた数の最上位ビットだけを計算で使用する必要がある。
【0033】
他の電力節約手段を実施することもできる。サイズ、テクスチャ、デプス分類基準の計算は、三角形の3つの頂点の各分類基準において最小値および最大値の決定を必要とする。すなわち、各分類基準においては、3つの頂点からの3つの値が含まれる。好ましくは、最小値および最大値の決定は、電力節約のために最適化された3−入力最小値・最大値回路(例えば、3−入力比較回路)を使用して行なわれる。一般に、精度要件が限られた固定小数点数を含む減算・比較演算は、僅かな電力で行なうことができる。表1に示されるように、幅およびデプス分類基準の計算においては、閾値を使用する乗法演算が必要である。2の累乗(例えば、32)によって表わすことができる閾値を使用することにより、節電ビットシフト回路によって乗法演算を行なうことができる。幅分類基準の計算において(dy20*dy20)演算を実行するため、一般に非常に小さく且つ一般の乗算回路ほど電力を消費しない特定の二乗演算回路を使用することができる。あるいは、(dy20*dy20)の計算において、数dy20の最下位ビットの一部を下げることができる。
【0034】
三角形が小さく且つ形が整っているということを面積計算/分類回路301が決定すると、三角形の頂点情報および属性が反復子セットアップ計算回路302へと供給される。逆に、三角形が大きく且つ形が悪いということを面積計算/分類回路301が決定すると、三角形の頂点情報および属性が反復子セットアップ計算回路312へと供給される。
【0035】
反復子セットアップ計算回路302,312は、ラスタライジング/レンダリングエンジン306によって必要とされるパラメータ、例えば最初の属性値およびそれらの階調を計算する。より具体的には、反復子セットアップ計算回路302は、周知のセットアップ方程式を実行して、例えば、走査線に沿う水平インクリメント/デクリメントにおける属性の変化、または、隣接するスパンライン間の垂直インクリメント/デクリメントにおける属性の変化を決定する。次の隣接する走査線に対する垂直インクリメント/デクリメントは、現在の三角形の主要エッジ、例えば図4に示される主要エッジ410に沿って行なわれる。したがって、セットアップ方程式の微分においては、主要エッジの傾きおよびその逆数が使用される。反復子セットアップ計算回路302,312がその計算において使用する方程式を以下に示す。
【0036】
ピクセル属性が一次関数f(x, y)によって表わされると仮定する。走査線に沿う水平インクリメントのステップ、すなわち、ピクセル属性値と次のピクセル属性値との間の水平方向の差異は、以下のように表わされる。
∂f/∂x=(df10*dy20-df20*dy10)/XP (2)
ここで、XPは、方程式(1)から計算される。
【0037】
1つの走査線から主要エッジに沿う次の隣接する走査線までの垂直インクリメントのステップ、すなわち、座標の差は、yi=(yi+1)およびxi=(xi+si20)となるように幾何学的に示すことができる。ここで、xiおよびyiは整数値のピクセル座標であり、si20=|dx20/dy20|(すなわち、主要エッジの傾きの整数「底」逆数)である。x座標は、主要エッジの傾きの逆数によって決まる。そのため、現在の走査線の属性値と次の走査線属性値との間の垂直方向の差は、以下のように表わされる。
dt=si20*∂f/∂x+∂f/∂y (3)
ここで、∂f/∂y=[df20*dx10-df10*dx20]/XPである。
【0038】
反復子セットアップ計算回路302,312は、頂点情報および属性階調をラスタライジング/レンダリングエンジン306に対して送る。スタライジング/レンダリングエンジン306は、前述したようにピクセル反復子回路303とピクセル反復子回路313とパースペクティブ分割回路304とパースペクティブ分割回路314とを有しているが、これらに限定されない。ピクセル反復子回路303,313は、三角形のエッジに沿うピクセル位置を定めるためにエッジウォーキングを実行する。主要エッジに沿う定められたピクセル位置を走査線の開始点として使用して、ピクセル反復子回路303,313は、以下の方程式の繰り返しにより、各走査線に沿う全てのピクセルのx−y位置座標および属性値を決定する。
f(xi±1, yi)=f(xi, yi)±∂f/∂x (4)
この場合、加算または減算かどうかは、スパンニング方向によって決まる。エッジウォーキングおよびスパン処理は周知のプロセスである。
【0039】
ピクセル反復子回路303によって行なわれる走査線ラスタ化プロセス(例えば、エッジウォーキングおよびスパン処理)は、周知の方程式を使用することにより支援される。整数x,y座標における初期値および関連する属性値は、以下の方程式を使用して決定される。
f(xi, yi)=f0+(yi-y0)*∂f/∂y+(xi-x0)*∂f/∂x (5)
ここで、yi=|y0|およびxi=x0+si20*(yi-y0)であり、
dx20*(yi-y0)-dy20*(xi+1-x0)>-0の場合には、
xiが1だけインクリメントされる。
【0040】
パースペクティブ分割回路304,314は、テクスチャ座標(u,v)によって必要とされるパースペクティブコレクションを供給する。パースペクティブ分割回路304,314がピクセル反復子回路303およびピクセル反復子回路313からそれぞれ各ピクセル毎にピクセル属性値を受けると、パースペクティブ分割回路304,314は、テクスチャ座標とデプス値との線形に補間された積(すなわち、u/wおよびv/w)を、線形に補間されたデプス値(すなわち、1/w)で割る。その後、次の表示のためにSRAM202内のフレームバッファに対して情報を送る前にテクスチャルックアップおよびブレンディング等の幾つかの周知のプロセスを行なうため、パースペクティブ分割回路304,314は、ラスタ化/レンダリングプロセスにおいて、ピクセル位置座標およびそれらの個々の属性のリストを他の回路(図示せず)に対して送る。
【0041】
一般的な構成の三角形セットアップエンジン(面積計算/分類回路および他の関連する構成要素を使用しない)およびラスタ化/レンダリングエンジンについては、1999年11月のマイクロアーキテクチャに関する第32回年次国際シンポジウムの議事録、第50頁のA. WolfeおよびD. Noonburgによる「A Superscalar 3D Graphics Engine」等の様々な出版物に記載されている。また、一般的な構成の三角形セットアップエンジン(面積計算/分類回路および他の関連する構成要素を使用しない)およびラスタ化/レンダリングエンジンについては、前述した’089特許および’550特許を含む様々な米国特許に記載されている。これらの資料は、その全体が参照として本明細書に組み込まれる。
【0042】
したがって、本発明の第1の実施形態の主要な態様は、2つの経路、すなわち、精度が低く、複雑度が低く、その結果、演算のために電力をあまり必要としないハードウェアを使用して小さく且つ形が整った三角形を処理するための第1の経路と、精度が高く、より複雑で、その結果、演算のために多くの電力を必要とするハードウェアを使用して大きくあるいは形が悪い三角形を処理するための第2の経路とを使用することである。大きくあるいは形が悪い三角形を処理するための第2の経路のハードウェアは、サイズや態様に関係なく三角形を処理するために市販されている3Dグラフィックスエンジンで現在使用されている従来のハードウェアであってもよい。節電の主要なソースは、小さく形が整った三角形が処理され且つ大きく/形が悪い経路に関連する回路がOFFされる(クロックされない)ときに実現される。
【0043】
大きくあるいは形が悪い三角形に関しては24ビット仮数を用いて、また、小さく且つ形が整った三角形に関しては16ビット仮数を用いて反復子セットアップ浮動小数点演算が行なわれる場合に、精度、質、性能要件が満たされることがシミュレーションにより分かった。この場合、6ビット指数が両方の分類のために使用される。周知の3段階パイプラインを使用して浮動小数点乗算が行なわれ、また、周知の5段階パイプラインを使用して浮動小数点加算が行なわれる。3段乗算器および5段加算器の両方は、1サイクル当り1演算のスループットを有している。第1の経路の反復子セットアップ計算回路302で16ビット仮数浮動小数点乗算器および加算器を使用すると、反復子セットアップ計算電力消費量が約20%だけ減少する。一方、精度が低く複雑度が低いハードウェアをピクセル反復子回路303およびパースペクティブ分割回路304で使用することにより得られる電力消費量の節約は、小さい三角形で費やされるサイクル数が大きい三角形で費やされるサイクル数の1/10よりも少ないことを主な理由として、最小となる。
【0044】
ここで、本発明を実施する3D GE214の第2の実施形態の関連する構成要素を示す図5を参照する。図5に示されるように、3D GE214は、面積計算/分類回路501と、反復子セットアップ計算回路502と、反復子セットアップ計算回路512と、ピクセル反復子回路503と、パースペクティブ分割回路504とを含む。反復子セットアップ計算回路502は小さく且つ形が整った三角形のために使用される一方、反復子セットアップ計算回路512は大きくあるいは形が悪い三角形のために使用される。この実施形態においては、三角形分類が決定された後、反復子セットアップ計算回路502または反復子セットアップ計算回路512によって三角形が処理される。電力を節約するため、選択されない経路中のハードウェアをOFFする(クロックされない)ことができる。ピクセル反復子回路503およびパースペクティブ分割回路は、その後、小さく且つ形が整った三角形および大きくあるいは形が悪い三角形の両方を処理するために使用される。その際、ピクセル反復子回路313およびパースペクティブ分割回路314を実施するために第1の実施形態で必要とされる余分なハードウェアが排除され、それにより、余分なコストが節約される。これは、より望ましい設計法である可能性がある。なぜなら、これらの更なるハードウェアの使用は、省力化を著しく向上させることができないからである。
【0045】
面積計算/分類回路501は面積計算/分類回路301と同一である。反復子セットアップ計算回路502は反復子セットアップ計算回路302と同一である。反復子セットアップ計算回路512は反復子セットアップ計算回路312と同一である。ピクセル反復子回路503は、(第1の実施形態の大きい/形が悪い経路で使用される)ピクセル反復子回路313と同一である。パースペクティブ分割回路504は、(第1の実施形態の大きい/形が悪い経路で使用される)パースペクティブ分割回路314と同一である。なお、反復子セットアップ計算回路502および反復子セットアップ計算回路512は、図5に示されるように三角形セットアップエンジン505の一部とならずに、破線のボックスによって示されるようにラスタライジング/レンダリングエンジン506の一部を成すこともできる。
【0046】
並列処理の使用により性能向上を実現できることがシミュレーションにより分かった。例えば、(小さく且つ形が整った三角形のために使用される)反復子セットアップ計算回路502において、乗算器および加算器を既に有する回路に対して更なる乗算器が加えられる場合には、5%の性能向上が得られる。これは、小さい三角形が、形成される1ピクセル当りに大きな割合の浮動小数点演算を必要とするからである。
【0047】
ここで、本発明を実施する3D GE214の第3の実施形態の関連する構成要素を示す図6を参照する。図6に示されるように、3D GE214は、面積計算/分類回路601と、反復子セットアップ計算回路602と、ピクセル反復子回路603と、パースペクティブ分割回路604とを含む。反復子セットアップ計算回路602は、低精度モード(例えば、小さく形が整った三角形が関与している場合)または高精度モード(例えば、大きくあるいは形が悪い三角形が関与している場合)で演算を行なうように動的に構成することができる。より具体的には、低精度モードにおいて、反復子セットアップ計算回路602は、小さく且つ形が整った三角形を処理する際に、仮数の1つ以上のLSBを無効にする(ゼロに設定する)。逆に、高精度モードにおいて、反復子セットアップ計算回路602は、大きくあるいは形が悪い三角形を処理する際に、仮数の全幅を使用する。この実施形態では、三角形分類が決定された後、面積計算/分類回路601は、反復子セットアップ計算回路602を低精度モードまたは高精度モードへと設定する際に使用される三角形の分類を示す制御信号を生成する。これにより、反復子セットアップ計算回路602を三角形毎に動的に構成して電力を節約することができる。その後、小さく且つ形が整った三角形および大きいあるいは形が悪い三角形の両方を処理するために、ピクセル反復子回路603およびパースペクティブ分割回路604が使用される。
【0048】
面積計算/分類回路601は面積計算/分類回路301と同一である。ピクセル反復子回路603は、(第1の実施形態の大きい/形が悪い経路で使用される)ピクセル反復子回路313と同一である。パースペクティブ分割回路604は、(第1の実施形態の大きい/形が悪い経路で使用される)パースペクティブ分割回路314と同一である。なお、反復子セットアップ計算回路602は、図6に示されるように三角形セットアップエンジン605の一部とならずに、破線のボックスによって示されるようにラスタライジング/レンダリングエンジン606の一部を成すこともできる。
【0049】
2つの低精度モードおよび高精度モードで動的に演算できることを除き、反復子セットアップ計算回路602は、(第1の実施形態の大きい/形が悪い経路で使用される)反復子セットアップ計算回路312と略同一である。1つの実施形態においては、仮数のLSBをゼロ設定することにより、LSBに関連付けられた論理回路は、0と1との間でトグルする(切り換える)ことができず、したがって、電力を消費していない。1つの実施形態においては、高精度ハードウェアを必要とする大きくあるいは形が悪い三角形を処理するための反復子セットアップ計算回路602の演算論理回路(例えば、乗算器、加算器等)において24ビットの全仮数幅が使用され、また、低精度ハードウェアを必要とする小さく且つ形が整った三角形を処理するための反復子セットアップ計算の演算論理回路において16ビットの少ない仮数幅が使用される。他の節電構成(例えば、高精度モードで有効(使用可能)な仮数ビットの数、無効なLSBの数など)および更なる精度モード(例えば、様々な数の無効LSBを含む)も使用できる。以下の表2は、仮数の全幅(例えば24ビット)が使用される、2つの2進数と乗算器と浮動小数点数の仮数との間の第1の典型的な乗算と、仮数の8個のLSBが使用禁止となっている、2つの2進数と乗算器と浮動小数点数の仮数との間の第2の典型的な乗算とを示している。
【表2】

【0050】
例No.1に示されるように、仮数の幅が使用されるため、全てのビットが使用可能(有効)になり、したがって、計算中にゼロ(0)と1との間で自由にトグルすることができる。これに対して、例No.2は、仮数の8個のLSBが無効にされ、したがって、1へと自由にトグルできないときのシナリオを示している。例No.2における乗法演算の最終結果は例No.1のそれよりも精度が低いが、小さく且つ形が整った三角形を処理するためには十分に正確であると思われる。
【0051】
図7は、高精度モードおよび低精度モードでLSBを有効(使用可能)にし且つ無効にするために反復子セットアップ計算回路602で実施できる仮数レジスタ700を一例として示している。図7に示されるように、仮数レジスタ700は、フリップフロップ712a−712hと、ANDゲート714a−714hと、ANDゲート716a−716hとを有しており、これらは互いに接続されてレジスタ回路710a−710hを形成している。全て同一である各レジスタ回路710a−710hは、ビット0に割り当てられたレジスタ回路710a、LSB、ビット1に割り当てられたレジスタ回路710b等を用いて仮数ビットを制御するように構成されている。したがって、仮数レジスタ700は、8個の仮数ビットを制御するようになっている。より多くのあるいはより少ない仮数ビットを制御するために、仮数レジスタ700に対して更なるレジスタ回路を加えることができあるいは仮数レジスタ700から更なるレジスタ回路を除去できることは明らかである。
【0052】
次に、全てのレジスタ回路710a−710hの代表であるレジスタ回路710aの動作(演算)について説明する。ANDゲート714aは、入力としてイネーブル信号ENA 0およびクロック信号CLKを受ける。ANDゲート714aは、その出力をクロック入力としてフリップフロップ712aに対して供給する。フリップフロップ712aは、データとして入力信号IN 0を受ける。フリップフロップ712aは、イネーブル信号ENA 0およびクロック信号CLKの両方がアクティブのときに入力信号IN 0を単にラッチして送る。フリップフロップ712aの出力は、イネーブル信号ENA 0と共に、ANDゲート716aに対して入力として与えられる。ANDゲート716aは、ENA 0が非アクティブになると常にその出力BIT 0がゼロに設定されるようにする。クロック信号CLKによってBIT0が0と1との間で切り換わることができない(トグルできない)ようにすることにより、LSBに関与する論理回路は、0と1との間でトグルさせることができず、したがって、電力を消費しない。
【0053】
1つの実施形態において、イネーブル信号ENA 0−ENA 7は、面積計算/分類回路601(図示せず)内に設けられた8ビットプログラム可能制御レジスタによって供給される。8ビットプログラム可能制御レジスタの内容は、計算/分類プロセスを完了した後に面積計算/分類回路601によって生成される制御信号により設定されている。例えば、三角形が大きくあるいは形が悪いということを示すアクティブ制御信号は、8ビットプログラム可能制御レジスタの内容を全て1に設定し、また、三角形が小さく且つ形が整っているということを示す非アクティブ制御信号は、8ビットプログラム可能制御レジスタの内容を全て0に設定する。信号IN 0−IN 7は、演算機能ユニット(図示せず)によって生成された8個の仮数LSBである。あるいは、仮数レジスタ700は、反復子セットアップ計算回路602内で8個の仮数LSBとして使用されるその出力BIT 0−BIT 7を供給する。当業者であれば分かるように、本発明は、例えば無効な仮数LSBの数を変えることにより極端に小さい三角形、小さい三角形、中程度の三角形、大きい三角形を処理するため、2つの精度モードから更に多くの精度モードへと容易に拡張させることができる。表3は、典型的な仮数レジスタ700における真理値表である。
【表3】

【0054】
ここで、本発明を実施する3D GE214の第4の実施形態の関連する構成要素を示す図8を参照する。図8に示されるように、3D GE214は、面積計算/分類回路801と、反復子セットアップ計算回路802と、ピクセル反復子回路803と、パースペクティブ分割回路804とを有している。また、本実施形態は、ユーザインタフェース816および/または電力モニタ817に接続された精度選択回路815を更に含む。精度選択回路815は、3D GE214の外部にあっても良く(図8に示されるように)、あるいは、3D GE214の内部にあってもよい。ユーザインタフェース816により、ユーザは、所望の電力レベル、したがって関連する精度モードを手動で選択することができる。ユーザインタフェース816は、グラフィカルユーザインタフェース(GUI)、コマンドラインインタフェース、タッチスクリーンインタフェース、音声に反応するインタフェース、メニュー方式のインタフェース、手動スイッチ等であってもよい。したがって、ユーザインタフェース816を使用して、ユーザは、選択信号を生成することにより、バッテリ寿命を最大にするための低電力低精度モード、グラフィックスの質を良好にするための高電力高精度モード、あるいは、他の精度モードを選択してもよい。
【0055】
一般に、電力モニタ817は、手持ち式携帯デバイス100に給電するバッテリ中に残存する利用可能な電力を監視した後、利用可能な電力レベルとアクティブに実行中のアプリケーション(例えば、ゲーム等)の残存する動作時間とを比較して、実行中のアプリケーションの終了まで手持ち式携帯デバイス100の動作を持続可能にするために必要な適切な電力レベルを決定する。1つの実施形態において、電力モニタ817は、バッテリやCPU(ゲームの残存する実行時間を示す)等からの入力を使用して、記憶された電力レベル−動作時間アルゴリズムを実行する状態機械であってもよい。アルゴリズムは、基本的に、入力の比較(例えば、利用可能な電力と、現在の精度モード下で実行中のアプリケーションの終了までの時間とを比較)を行なって、他の利用可能な精度モード下での残存する動作時間を決定するとともに、バッテリの利用可能な電力がアプリケーションを終了させるに足るものとなるようにする精度モードを選択する。
【0056】
1つの実施形態において、精度選択回路815は、ユーザインタフェース816および/または電力モニタ817から選択信号を受けるとともに、選択された精度モードおよび電力を表わすビット列を生成する。また、精度選択信号回路815は、ユーザインタフェース816または電力モニタ817が起動されたかどうかを示すインジケータ信号も生成する(例えば、新たな選択信号がいずれかのモジュールから受けられるときに)。このビット列およびインジケータ信号は、その後、面積計算/分類回路801内の制御レジスタ(図示しないが、以下で後述する)に対して供給される。
【0057】
反復子セットアップ計算回路802は、低精度モード(例えば、小さく形が整った三角形が関与している場合)、高精度モード(例えば、大きくあるいは形が悪い三角形が関与している場合)、および他の精度モードで演算を行なうように動的に構成することができる。より具体的には、低精度モードにおいて、反復子セットアップ計算回路802は、小さく且つ形が整った三角形を処理する際に、仮数の1つ以上のLSBを無効にする(ゼロに設定する)。逆に、高精度モードにおいて、反復子セットアップ計算回路802は、大きくあるいは形が悪い三角形を処理する際に、仮数の全幅を使用する。他の精度モードは、仮数の様々な数のLSBの無効化を含む。この実施形態では、三角形分類が決定された後、面積計算/分類回路801は、反復子セットアップ計算回路802を設定(コンフィギュレーション)する際に使用される三角形の分類を示す制御信号を生成する。より具体的には、制御信号は、面積計算/分類回路802内の制御レジスタの内容を設定するために使用される。例えば、制御ビットが00である場合には、制御レジスタの内容が全てゼロ(0)であり、制御ビットが11である場合には、制御レジスタ(8ビットレジスタであるとする)の内容が0000011であるといった具合である。しかしながら、ユーザインタフェース816または電力モニタ817が起動されたことをインジケータ信号が示す場合には、これらのユニットによって生成されるビット列が制御レジスタへロードされる。すなわち、ユーザインタフェース816および電力モニタ817から受けた入力は、面積計算/分類回路801からの分類結果を取り消す。ピクセル反復子回路803およびパースペクティブ分割回路804は、その後、小さく且つ形が整った三角形および大きくあるいは形が悪い三角形の両方を処理するために使用される。電力を節約するために反復子セットアップ計算回路802を三角形毎に動的に構成できることに加え、この実施形態によれば、グラフィックスの質および性能と、電力要件およびバッテリ寿命とのバランスをとることができる。
【0058】
面積計算/分類回路801は、制御レジスタを除き、面積計算/分類回路801と略同様である。ピクセル反復子回路803はピクセル反復子回路603と同一である。パースペクティブ分割回路804はパースペクティブ分割回路604と同一である。反復子セットアップ計算回路802は反復子セットアップ計算回路602と略同様である。仮数レジスタ700は、更なる精度モードに合わせるように変更されてもよい。そのような変更は、当業者であれば明らかであり、これ以上説明しない。なお、反復子セットアップ計算回路802は、図8に示されるように三角形セットアップエンジン805の一部とならずに、破線のボックスによって示されるようにラスタライジング/レンダリングエンジン806の一部を成すこともできる。
【0059】
ここで、本発明を実施する3D GE214の第5の実施形態の関連する構成要素を示す図9を参照する。図9に示されるように、3D GE214は、面積計算/分類回路901と、反復子セットアップ計算回路902と、反復子セットアップ計算回路912と、ピクセル反復子回路903と、パースペクティブ分割回路904とを含む。また、本実施形態は、ユーザインタフェース916および/または電力モニタ917に接続された精度選択回路915を更に含む。精度選択回路915は、3D GE214の外部にあっても良く(図9に示されるように)、あるいは、3D GE214の内部にあってもよい。すなわち、この実施形態は、図5に示される第2の実施形態と図8に示される第4の実施形態とを組み合わせたものである。図5および図8における構成要素およびそれらの動作の説明は、図9における対応する構成要素に適用することができ、ここでは繰り返さない。しかしながら、第4の実施形態とは異なり、この実施形態では、ユーザインタフェース916および電力モニタ917は、2つの分類、すなわち、「小さく且つ形が整った三角形」と「大きくあるいは形が悪い三角形」とに個別に対応するように具体的に構成される少なくとも2つの異なる反復子セットアップ計算回路902,912を制御することができる。反復子セットアップ計算回路902,912は、1つの分類のために特別に構成されているため、特定の分類のために三角形を処理する際により効果的で且つ効率的となり得る。また、ユーザインタフェース916および電力モニタ917により、反復子セットアップ計算回路902,912において(すなわち、2つの分類のそれぞれにおいて)異なる精度モードを選択することができる。
【0060】
一方が三角形セットアップ計算回路902(小さく且つ形が整った三角形のためのもの)に対して割り当てられ且つ他方が三角形セットアップ計算回路912(大きく且つ形が悪い三角形のためのもの)に対して割り当てられるように、どの分類が関与しているかを示すように精度選択回路915によって生成される更なるインジケータ信号、面積計算/分類回路901内の更なる制御レジスタなどとのような幾つかの軽微な変更が必要となる。面積計算/分類回路901が三角形の分類を決定すると、三角形頂点情報および属性を処理するために反復子セットアップ計算回路902または反復子セットアップ計算回路912が使用される。反復子セットアップ計算回路902および反復子セットアップ計算回路912における仮数LSBの無効化は、それぞれの制御レジスタによって制御される。面積計算/分類回路は、その分類決定を行なうと、適切な制御レジスタの内容を設定する。ユーザインタフェース916または電力モニタ917からの入力が受けられると、精度選択回路915からのインジケータ信号は、ユーザインタフェース916または電力モニタ917が起動されたことを示し、その分類に関して(したがって、その反復子セットアップ計算回路に関して)、受けられた入力が指定される。これにより、精度選択回路から生成されたビット列を適切な制御レジスタへと送って、面積計算/分類回路901による分類の結果として設定された内容を取り消すことができる。なお、反復子セットアップ計算回路902および反復子セットアップ計算回路912は、図9に示されるように三角形セットアップエンジン905の一部とならずに、破線のボックスによって示されるようにラスタライジング/レンダリングエンジン906の一部を成すこともできる。
【0061】
本発明の幾つかの実施形態では、手持ち式携帯デバイスに適した高い品質および性能の3Dグラフィックスアーキテクチャが与えられている。特定の実施形態において本発明を説明してきたが、本発明は、そのような実施形態によって限定されるものと解釈されるべきではなく、むしろ、以下の請求項にしたがって解釈されなければならない。
【図面の簡単な説明】
【0062】
【図1】例えば本発明を実施する手持ち式携帯デバイス100の高レベル線図を示している。
【図2】手持ち式携帯デバイス100のグラフィックス/ディスプレイコントローラ107を詳細に示している。
【図3】本発明を実施する3D GE214の第1の実施形態の関連する構成要素を示している。
【図4】例えば主要エッジ410を有する三角形400およびラスタライジング/レンダリングプロセスで使用される三角形400内の多くの走査線を示している。
【図5】本発明を実施する3D GE214の第2の実施形態の関連する構成要素を示している。
【図6】本発明を実施する3D GE214の第3の実施形態の関連する構成要素を示している。
【図7】例えば高精度モードおよび低精度モードでLSBを有効および無効にするために反復子セットアップ計算回路602で実施できる仮数レジスタ701を示している。
【図8】本発明を実施する3D GE214の第4の実施形態の関連する構成要素を示している。
【図9】本発明を実施する3D GE214の第5の実施形態の関連する構成要素を示している。

【特許請求の範囲】
【請求項1】
受けられたデータセットを、少なくとも1つの基準に基づいて分類するとともに、1つの分類に基づいて、質や性能を犠牲にすることなく電力消費量を最小限に抑えるように前記データセットを処理するための処理モードを選択する第1の回路と、
前記第1の回路に結合されるとともに、前記第1の回路から受けたデータを処理する第2の回路と、
を備えるデータ処理パイプライン。
【請求項2】
前記第2の回路が、
第1の分類を有するデータを低精度処理モードで処理する第1のデータ処理回路と、
第2の分類を有するデータを高精度処理モードで処理する第2のデータ処理回路と、
を備える、請求項1に記載のデータ処理パイプライン。
【請求項3】
前記第2の回路が、
前記第1のデータ処理回路に結合されるとともに、前記第1のデータ処理回路から受けた第1の分類を有するデータを処理する第3のデータ処理回路と、
前記第2のデータ処理回路に結合されるとともに、前記第2のデータ処理回路から受けた第2の分類を有するデータを処理する第4のデータ処理回路と、
を更に備える、請求項2に記載のデータ処理パイプライン。
【請求項4】
前記第2の回路が、前記第1のデータ処理回路および前記第2のデータ処理回路に結合される第3のデータ処理回路を更に備え、前記第3のデータ処理回路が、分類に関係なく全てのデータに関してデータ処理を行なう、請求項2に記載のデータ処理パイプライン。
【請求項5】
前記第2の回路が構成可能なデータ処理回路を備え、前記構成可能なデータ処理回路が、第1の分類に基づいて低精度処理モードでデータを処理するように構成されるとともに、第2の分類に基づいて高精度処理モードでデータを処理するように構成される、請求項1に記載のデータ処理パイプライン。
【請求項6】
前記第2の回路が、前記構成可能なデータ処理回路に結合された第3のデータ処理回路を更に備え、この第3のデータ処理回路が、分類に関係なく全てのデータに関してデータ処理を行なう、請求項5に記載のデータ処理パイプライン。
【請求項7】
前記第1の回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記構成可能なデータ処理回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記第1の回路に対して通信する、請求項6に記載のデータ処理パイプライン。
【請求項8】
ユーザによって選択される前記所望の精度モードが、前記第1の回路によって選択された精度モードを取り消す、請求項7に記載のデータ処理パイプライン。
【請求項9】
前記第1の回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記構成可能なデータ処理回路を構成するために、決定された精度動作モードを前記第1の回路に対して通信する、請求項6に記載のデータ処理パイプライン。
【請求項10】
選択された精度モードが、前記第1の回路によって選択された精度モードを取り消す、請求項9に記載のデータ処理パイプライン。
【請求項11】
前記第1の回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記構成可能なデータ処理回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記第1の回路に対して通信する、請求項4に記載のデータ処理パイプライン。
【請求項12】
ユーザによって選択される前記所望の精度モードが、前記第1の回路によって選択された精度モードを取り消す、請求項11に記載のデータ処理パイプライン。
【請求項13】
前記第1の回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記構成可能なデータ処理回路を構成するために、決定された精度動作モードを前記第1の回路に対して通信する、請求項4に記載のデータ処理パイプライン。
【請求項14】
前記電力モニタが、利用可能な電力の表示とアクティブに実行中のアプリケーションの残存する動作時間の表示とを比較することにより決定を行なう、請求項13に記載のデータ処理パイプライン。
【請求項15】
メモリおよび中央処理ユニット(CPU)に結合されたグラフィックスエンジンであって、
前記メモリからのグラフィックスプリミティブに関与するデータを受けるとともに、1つのプリミティブを分類するプリミティブ分類回路を備え、1つの分類に基づいて、質および性能を犠牲にすることなく電力消費量を最小限に抑えるように当該プリミティブのためのセットアップ方程式を計算するための処理モードを選択するプリミティブセットアップエンジンと、
三角形セットアップエンジンに結合されるとともに、プリミティブピクセルラスタ化を行なうレンダリング/ラスタ化エンジンと、
を備えるグラフィックスエンジン。
【請求項16】
前記プリミティブが、そのサイズおよび他の特徴に基づいて分類される、請求項15に記載のグラフィックスエンジン。
【請求項17】
前記プリミティブが、小さく且つ形が整っているものとして、または、大きくあるいは形が悪いものとして分類される、請求項16に記載のグラフィックスエンジン。
【請求項18】
前記他の特徴のための分類基準が、テクスチャ、幅、デプスを含む、請求項16に記載のグラフィックスエンジン。
【請求項19】
前記プリミティブセットアップエンジンが、
前記プリミティブ分類回路に結合されるとともに、当該プリミティブ分類回路によって指示された低精度処理モードで、小さく且つ形が整っているものとして分類されたプリミティブのためのセットアップ方程式を計算する第1の反復子セットアップ計算回路と、
前記プリミティブ分類回路に結合されるとともに、当該プリミティブ分類回路によって指示された高精度処理モードで、大きくあるいは形が悪いものとして分類されたプリミティブのためのセットアップ方程式を計算する第2のピクセル反復子セットアップ計算回路と、
を更に備える、請求項17に記載のグラフィックスエンジン。
【請求項20】
前記低精度処理モードが、浮動小数点計算のための16個の仮数ビットを含み、前記高精度処理モードが、浮動小数点計算のための24個の仮数ビットを含む、請求項19に記載のグラフィックスエンジン。
【請求項21】
前記レンダリング/ラスタ化エンジンが、
小さく且つ形が整っているものとして分類されたプリミティブに関して走査線ラスタ化を行なう第1のピクセル反復子回路と、
前記第1の反復子セットアップ計算回路に接続される前記第1のピクセル反復子回路に対して接続され、それによって低精度パイプラインを形成するとともに、小さく且つ形が整っているものとして分類されるプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なう第1のパースペクティブ分割回路と、
大きくあるいは形が悪いものとして分類されたプリミティブに関して走査線ラスタ化を行なう第2のピクセル反復子回路と、
前記第2の反復子セットアップ計算回路に接続される前記第2のピクセル反復子回路に対して接続され、それによって高精度パイプラインを形成するとともに、大きくあるいは形が悪いものとして分類されるプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なう第2のパースペクティブ分割回路と、
を備える、請求項19に記載のグラフィックスエンジン。
【請求項22】
前記レンダリング/ラスタ化エンジンが、
前記第1の反復子セットアップ計算回路および前記第2の反復子セットアップ計算回路に接続されるとともに、分類に関係なく全てのプリミティブに関して走査線ラスタ化を行なうピクセル反復子回路と、
前記ピクセル反復子回路に接続されるとともに、全てのプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なうパースペクティブ分割回路と、
を備える、請求項19に記載のグラフィックスエンジン。
【請求項23】
前記プリミティブセットアップエンジンが、前記プリミティブ分類回路に結合された構成可能な反復子セットアップ計算回路を更に備え、前記構成可能な反復子セットアップ計算回路が、低精度処理モードでは、小さく且つ形が整っているものとして分類されたプリミティブのためのセットアップ方程式を計算するように前記プリミティブ分類回路により構成され、前記構成可能な反復子セットアップ計算回路が、高精度処理モードでは、大きく且つ形が悪いものとして分類されたプリミティブのためのセットアップ方程式を計算するように前記プリミティブ分類回路により構成される、請求項17に記載のグラフィックスエンジン。
【請求項24】
前記プリミティブ分類回路が、浮動小数点計算のために利用できる複数の仮数ビットを無効にすることにより前記構成可能な反復子セットアップ計算回路を前記低精度処理モードで動作するように構成するとともに、複数の仮数ビットを有効にすることにより前記構成可能な反復子セットアップ計算回路を前記高精度処理モードで動作するように構成する、請求項23に記載のグラフィックスエンジン。
【請求項25】
前記レンダリング/ラスタ化エンジンが、
前記反復子セットアップ計算回路に接続されるとともに、分類に関係なく全てのプリミティブに関して走査線ラスタ化を行なうピクセル反復子回路と、
前記ピクセル反復子回路に接続されるとともに、全てのプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なうパースペクティブ分割回路と、
を備える、請求項24に記載のグラフィックスエンジン。
【請求項26】
前記プリミティブ分類回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記プリミティブ分類回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記プリミティブ分類回路に対して通信する、請求項25に記載のグラフィックスエンジン。
【請求項27】
ユーザによって選択される前記所望の精度モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項26に記載のグラフィックスエンジン。
【請求項28】
前記プリミティブ分類回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記プリミティブ分類回路を構成するために、決定された精度動作モードを前記プリミティブ分類回路に対して通信する、請求項25に記載のグラフィックスエンジン。
【請求項29】
前記電力モニタが、利用可能な電力の表示とアクティブに実行中のアプリケーションの残存する動作時間の表示とを比較することにより決定を行なう、請求項28に記載のグラフィックスエンジン。
【請求項30】
選択された精度モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項31に記載のグラフィックスエンジン。
【請求項31】
前記プリミティブ分類回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記プリミティブ分類回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記プリミティブ分類回路に対して通信する、請求項22に記載のグラフィックスエンジン。
【請求項32】
ユーザによって選択される前記所望の精度モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項31に記載のグラフィックスエンジン。
【請求項33】
前記プリミティブ分類回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記プリミティブ分類回路を構成するために、決定された精度動作モードを前記プリミティブ分類回路に対して通信する、請求項22に記載のグラフィックスエンジン。
【請求項34】
前記電力モニタが、利用可能な電力の表示とアクティブに実行中のアプリケーションの残存する動作時間の表示とを比較することにより決定を行なう、請求項33に記載のグラフィックスエンジン。
【請求項35】
選択された精度動作モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項33に記載のグラフィックスエンジン。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2007−514209(P2007−514209A)
【公表日】平成19年5月31日(2007.5.31)
【国際特許分類】
【出願番号】特願2006−527085(P2006−527085)
【出願日】平成16年9月17日(2004.9.17)
【国際出願番号】PCT/US2004/030608
【国際公開番号】WO2005/029406
【国際公開日】平成17年3月31日(2005.3.31)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】