(57)【要約】  手持ち式携帯デバイスに適した高質および高性能の３Ｄグラフィックスアーキテクチャが提供されている。この３Ｄグラフィックスアーキテクチャは、サイズおよび他の特徴によって多角形を分類するためのモジュールを組み込んでいる。一般に、小さく且つ形が整った三角形は、質や性能を何ら犠牲にすることなく（例えば、リアリズム、分解能など）、電力効率がよい回路を有する  「低精度」ユニットを使用して処理することができる。プリミティブを分類し且つより電力効率がよい処理ユニットを選択してプリミティブを処理することにより、質や性能を犠牲にすることなく、電力消費量を低減することができる。【選択図】  図３
2007514209.tif 000002
【特許請求の範囲】
【請求項１】
受けられたデータセットを、少なくとも１つの基準に基づいて分類するとともに、１つの分類に基づいて、質や性能を犠牲にすることなく電力消費量を最小限に抑えるように前記データセットを処理するための処理モードを選択する第１の回路と、
前記第１の回路に結合されるとともに、前記第１の回路から受けたデータを処理する第２の回路と、
を備えるデータ処理パイプライン。
【請求項２】
前記第２の回路が、
第１の分類を有するデータを低精度処理モードで処理する第１のデータ処理回路と、
第２の分類を有するデータを高精度処理モードで処理する第２のデータ処理回路と、
を備える、請求項１に記載のデータ処理パイプライン。
【請求項３】
前記第２の回路が、
前記第１のデータ処理回路に結合されるとともに、前記第１のデータ処理回路から受けた第１の分類を有するデータを処理する第３のデータ処理回路と、
前記第２のデータ処理回路に結合されるとともに、前記第２のデータ処理回路から受けた第２の分類を有するデータを処理する第４のデータ処理回路と、
を更に備える、請求項２に記載のデータ処理パイプライン。
【請求項４】
前記第２の回路が、前記第１のデータ処理回路および前記第２のデータ処理回路に結合される第３のデータ処理回路を更に備え、前記第３のデータ処理回路が、分類に関係なく全てのデータに関してデータ処理を行なう、請求項２に記載のデータ処理パイプライン。
【請求項５】
前記第２の回路が構成可能なデータ処理回路を備え、前記構成可能なデータ処理回路が、第１の分類に基づいて低精度処理モードでデータを処理するように構成されるとともに、第２の分類に基づいて高精度処理モードでデータを処理するように構成される、請求項１に記載のデータ処理パイプライン。
【請求項６】
前記第２の回路が、前記構成可能なデータ処理回路に結合された第３のデータ処理回路を更に備え、この第３のデータ処理回路が、分類に関係なく全てのデータに関してデータ処理を行なう、請求項５に記載のデータ処理パイプライン。
【請求項７】
前記第１の回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記構成可能なデータ処理回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記第１の回路に対して通信する、請求項６に記載のデータ処理パイプライン。
【請求項８】
ユーザによって選択される前記所望の精度モードが、前記第１の回路によって選択された精度モードを取り消す、請求項７に記載のデータ処理パイプライン。
【請求項９】
前記第１の回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記構成可能なデータ処理回路を構成するために、決定された精度動作モードを前記第１の回路に対して通信する、請求項６に記載のデータ処理パイプライン。
【請求項１０】
選択された精度モードが、前記第１の回路によって選択された精度モードを取り消す、請求項９に記載のデータ処理パイプライン。
【請求項１１】
前記第１の回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記構成可能なデータ処理回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記第１の回路に対して通信する、請求項４に記載のデータ処理パイプライン。
【請求項１２】
ユーザによって選択される前記所望の精度モードが、前記第１の回路によって選択された精度モードを取り消す、請求項１１に記載のデータ処理パイプライン。
【請求項１３】
前記第１の回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記構成可能なデータ処理回路を構成するために、決定された精度動作モードを前記第１の回路に対して通信する、請求項４に記載のデータ処理パイプライン。
【請求項１４】
前記電力モニタが、利用可能な電力の表示とアクティブに実行中のアプリケーションの残存する動作時間の表示とを比較することにより決定を行なう、請求項１３に記載のデータ処理パイプライン。
【請求項１５】
メモリおよび中央処理ユニット（ＣＰＵ）に結合されたグラフィックスエンジンであって、
前記メモリからのグラフィックスプリミティブに関与するデータを受けるとともに、１つのプリミティブを分類するプリミティブ分類回路を備え、１つの分類に基づいて、質および性能を犠牲にすることなく電力消費量を最小限に抑えるように当該プリミティブのためのセットアップ方程式を計算するための処理モードを選択するプリミティブセットアップエンジンと、
三角形セットアップエンジンに結合されるとともに、プリミティブピクセルラスタ化を行なうレンダリング／ラスタ化エンジンと、
を備えるグラフィックスエンジン。
【請求項１６】
前記プリミティブが、そのサイズおよび他の特徴に基づいて分類される、請求項１５に記載のグラフィックスエンジン。
【請求項１７】
前記プリミティブが、小さく且つ形が整っているものとして、または、大きくあるいは形が悪いものとして分類される、請求項１６に記載のグラフィックスエンジン。
【請求項１８】
前記他の特徴のための分類基準が、テクスチャ、幅、デプスを含む、請求項１６に記載のグラフィックスエンジン。
【請求項１９】
前記プリミティブセットアップエンジンが、
前記プリミティブ分類回路に結合されるとともに、当該プリミティブ分類回路によって指示された低精度処理モードで、小さく且つ形が整っているものとして分類されたプリミティブのためのセットアップ方程式を計算する第１の反復子セットアップ計算回路と、
前記プリミティブ分類回路に結合されるとともに、当該プリミティブ分類回路によって指示された高精度処理モードで、大きくあるいは形が悪いものとして分類されたプリミティブのためのセットアップ方程式を計算する第２のピクセル反復子セットアップ計算回路と、
を更に備える、請求項１７に記載のグラフィックスエンジン。
【請求項２０】
前記低精度処理モードが、浮動小数点計算のための１６個の仮数ビットを含み、前記高精度処理モードが、浮動小数点計算のための２４個の仮数ビットを含む、請求項１９に記載のグラフィックスエンジン。
【請求項２１】
前記レンダリング／ラスタ化エンジンが、
小さく且つ形が整っているものとして分類されたプリミティブに関して走査線ラスタ化を行なう第１のピクセル反復子回路と、
前記第１の反復子セットアップ計算回路に接続される前記第１のピクセル反復子回路に対して接続され、それによって低精度パイプラインを形成するとともに、小さく且つ形が整っているものとして分類されるプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なう第１のパースペクティブ分割回路と、
大きくあるいは形が悪いものとして分類されたプリミティブに関して走査線ラスタ化を行なう第２のピクセル反復子回路と、
前記第２の反復子セットアップ計算回路に接続される前記第２のピクセル反復子回路に対して接続され、それによって高精度パイプラインを形成するとともに、大きくあるいは形が悪いものとして分類されるプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なう第２のパースペクティブ分割回路と、
を備える、請求項１９に記載のグラフィックスエンジン。
【請求項２２】
前記レンダリング／ラスタ化エンジンが、
前記第１の反復子セットアップ計算回路および前記第２の反復子セットアップ計算回路に接続されるとともに、分類に関係なく全てのプリミティブに関して走査線ラスタ化を行なうピクセル反復子回路と、
前記ピクセル反復子回路に接続されるとともに、全てのプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なうパースペクティブ分割回路と、
を備える、請求項１９に記載のグラフィックスエンジン。
【請求項２３】
前記プリミティブセットアップエンジンが、前記プリミティブ分類回路に結合された構成可能な反復子セットアップ計算回路を更に備え、前記構成可能な反復子セットアップ計算回路が、低精度処理モードでは、小さく且つ形が整っているものとして分類されたプリミティブのためのセットアップ方程式を計算するように前記プリミティブ分類回路により構成され、前記構成可能な反復子セットアップ計算回路が、高精度処理モードでは、大きく且つ形が悪いものとして分類されたプリミティブのためのセットアップ方程式を計算するように前記プリミティブ分類回路により構成される、請求項１７に記載のグラフィックスエンジン。
【請求項２４】
前記プリミティブ分類回路が、浮動小数点計算のために利用できる複数の仮数ビットを無効にすることにより前記構成可能な反復子セットアップ計算回路を前記低精度処理モードで動作するように構成するとともに、複数の仮数ビットを有効にすることにより前記構成可能な反復子セットアップ計算回路を前記高精度処理モードで動作するように構成する、請求項２３に記載のグラフィックスエンジン。
【請求項２５】
前記レンダリング／ラスタ化エンジンが、
前記反復子セットアップ計算回路に接続されるとともに、分類に関係なく全てのプリミティブに関して走査線ラスタ化を行なうピクセル反復子回路と、
前記ピクセル反復子回路に接続されるとともに、全てのプリミティブのテクスチャ属性に関してパースペクティブコレクションを行なうパースペクティブ分割回路と、
を備える、請求項２４に記載のグラフィックスエンジン。
【請求項２６】
前記プリミティブ分類回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記プリミティブ分類回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記プリミティブ分類回路に対して通信する、請求項２５に記載のグラフィックスエンジン。
【請求項２７】
ユーザによって選択される前記所望の精度モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項２６に記載のグラフィックスエンジン。
【請求項２８】
前記プリミティブ分類回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記プリミティブ分類回路を構成するために、決定された精度動作モードを前記プリミティブ分類回路に対して通信する、請求項２５に記載のグラフィックスエンジン。
【請求項２９】
前記電力モニタが、利用可能な電力の表示とアクティブに実行中のアプリケーションの残存する動作時間の表示とを比較することにより決定を行なう、請求項２８に記載のグラフィックスエンジン。
【請求項３０】
選択された精度モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項３１に記載のグラフィックスエンジン。
【請求項３１】
前記プリミティブ分類回路に結合されたユーザインタフェースを更に備え、このユーザインタフェースが、前記プリミティブ分類回路を所望の精度動作モードで動作するように構成するため、ユーザによる入力情報を前記プリミティブ分類回路に対して通信する、請求項２２に記載のグラフィックスエンジン。
【請求項３２】
ユーザによって選択される前記所望の精度モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項３１に記載のグラフィックスエンジン。
【請求項３３】
前記プリミティブ分類回路に結合された電力モニタを更に備え、前記電力モニタが、アクティブに実行中のアプリケーションの終了まで手持ち式携帯デバイスの動作を持続させるために必要な電力レベルを決定して、適切な精度動作モードを選択し、前記電力モニタが、選択された精度動作モードで動作するように前記プリミティブ分類回路を構成するために、決定された精度動作モードを前記プリミティブ分類回路に対して通信する、請求項２２に記載のグラフィックスエンジン。
【請求項３４】
前記電力モニタが、利用可能な電力の表示とアクティブに実行中のアプリケーションの残存する動作時間の表示とを比較することにより決定を行なう、請求項３３に記載のグラフィックスエンジン。
【請求項３５】
選択された精度動作モードが、前記プリミティブ分類回路によって選択された精度モードを取り消す、請求項３３に記載のグラフィックスエンジン。
【発明の詳細な説明】
【発明の分野】
【０００１】
本発明は、一般にコンピュータシステムに関し、特に、最適な節電を行なうためのコンピュータグラフィックス三角形セットアップ・ラスタ化ユニットに関する。
【発明の背景】
【０００２】
リアルタイム３次元（３Ｄ）イメージングを行なうバッテリ作動の手持ち式携帯デバイス、例えばパーソナルデイタルアシスタント（ＰＤＡ）、携帯電話、手持ち式電子ゲーム機などは、極めて人気が高くなってきている。これらの人気は、利用可能なネットワーク接続性のオプションによって助長されている。現在、無線データサービスにより、次世代の高性能な電力消費量が低い手持ち式デバイスは、どこでも、いつでも、ネットワーク中心のアプリケーションおよびコンテンツにアクセスすることができる。その結果、これらの手持ち式デバイスは、携帯電話サービスを提供できることに加えて、豊富なウェブ体験以上のものを提供する画像およびビデオクリップを共有する２ウェイビデオをサポートすることができる。
【０００３】
モバイルアプリケーションがリッチで複雑になるにつれて、ＰＤＡやスマートフォン（高度自動機能電話）等の手持ち式デバイスにおいては、マルチメディアを随意的に処理する能力が必要になってくる。ビデオメール、マッピングサービス、読み取りＰＤＦファイル、３Ｄグラフィックスリッチゲーム等のアプリケーションは全て、高質・高性能グラフィックスおよびマルチメディア能力を必要とする。これらの能力は、以前は殆どのハンドヘルドユーザが利用できなかった方法でリッチ画像およびシステムから利益を得る新たなアプリケーションを可能にする。これらの手持ち式携帯デバイスは、全体のシステムエネルギ消費量およびコストを低減しつつ強力なユーザ体験を与えるという課題に直面する。従来、手持ち式携帯デバイスは、デスクトップパーソナルコンピュータ（ＰＣ）よりも低い性能の構成要素を有している。これは、主に、バッテリ作動の手持ち式デバイスに固有の電力制限によるものである
【０００４】
一般に、３Ｄオブジェクトのレンダリングは、極めて難解な計算であり、電力が集中するため、バッテリ作動の手持ち式デバイスの助けとならない。３Ｄオブジェクトおよび表面は、関連する多角形として、通常は三角形として近似される。多数の小さい三角形を使用してオブジェクトを近似するとともに、テクスチャマップを使用して表面材料特徴をより正確にレンダリングすることにより、十分なリアリズムを得ることができる。各三角形のレンダリングには、複数の複雑な計算の実行が必要である。三角形の数が増えるにつれて、これらの計算を行なうロジックの複雑度および電力消費量も増大する。３Ｄグラフィックスアプリケーションは、より高い質および性能を持つアプリケーションが出現するにつれて人気を増し続けている。
【０００５】
「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ａ  Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ｃｉｒｃｕｉｔ  Ｈａｖｉｎｇ  Ｐａｒａｌｌｅｌ  Ｐｉｘｅｌ  Ｐｒｏｃｅｓｓｉｎｇ」と題された米国特許第６，４７３，０８９号（以下、’０８９特許という）は、３Ｄグラフィックスピクセル情報の並行処理のためのビデオグラフィックス回路を教示している。’０８９特許のビデオグラフィックス回路は、セットアップエンジンと、エッジウォーカー回路と、スパン処理回路と、複数のピクセル処理回路とを有している。複数のピクセル処理回路により、ピクセルパラメータの並行処理が可能になる。’０８９特許は性能が向上したビデオグラフィックス回路を教示しているが、節電の問題を扱っていない。その結果、’０８９特許のグラフィックス回路は、電力消費量を考慮することが重大となっているバッテリ作動の手持ち式携帯デバイスでの使用に適していない。
【０００６】
「Ｍｕｌｔｉｐｌｅ  Ｔｒｉａｎｇｌｅ  ｐｉｘｅｌ−Ｐｉｐｅｌｉｎｅｓ  Ｗｉｔｈ  Ｓｐａｎ−Ｒａｎｇｅ  Ｐｉｘｅｌ  Ｉｎｔｅｒｌｏｃｋ  Ｆｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｅｐａｒａｔｅ  Ｎｏｎ−Ｏｖｅｒｌａｐｐｉｎｇ  Ｔｒｉａｎｇｌｅｓ  ｆｏｒ  Ｓｕｐｅｒｓｃａｌａｒ  ３Ｄ  Ｇｒａｐｈｉｃｓ  Ｅｎｇｉｎｅ」と題された米国特許第６，２２２，５５０号（以下、’５５０特許という）は、三角形全体を同時に処理できるように並列の複数の三角形ピクセルパイプラインを有する３Ｄグラフィックスプロセッサを教示している。また、三角形ピクセルパイプラインは、三角形内の隣接するピクセルを同時に処理することができる。’０８９特許と同様に、’５５０特許は、性能が向上したビデオグラフィックス回路を教示しているが、節電の問題を扱っていない。その結果、’５５０特許のグラフィックス回路も、電力消費量を考慮することが重大となっているバッテリ作動の手持ち式携帯デバイスでの使用に適していない。
【０００７】
そのため、電力消費量を考慮することが重大となっている手持ち式携帯デバイスに適した高質および高性能の３Ｄグラフィックスアーキテクチャの必要性が存在する。
【発明の概要】
【０００８】
したがって、本発明は、電力消費量を考慮することが重大となっている手持ち式携帯デバイスに適した高質および高性能の３Ｄグラフィックスアーキテクチャを提供する。
【０００９】
本発明は、メモリおよび中央処理ユニット（ＣＰＵ）に結合されたグラフィックスエンジンを導入する３Ｄグラフィックスアーキテクチャを用いて前述した必要性を満たす。グラフィックスエンジンは、レンダリング／ラスタ化エンジンに結合されたプリミティブセットアップエンジンを備える。プリミティブセットアップエンジンは、グラフィックスプリミティブに関連するデータをメモリから受ける。プリミティブセットアップエンジンは、プリミティブを分類する際に使用されるプリミティブ分類回路を有している。プリミティブセットアップエンジンは、分類に基づいて、質および性能を犠牲にすることなく電力消費量を最小限に抑えるようにプリミティブのためのセットアップ方程式を計算するための処理モードを選択する。レンダリング／ラスタ化エンジンは、一般に、プリミティブのピクセルラスタ化を行なう。
【００１０】
本発明において、プリミティブは、そのサイズおよび他の特徴に基づいて分類される。プリミティブは、小さく且つ形が整っているものとして、または、大きくあるいは形が悪いものとして分類される。プリミティブの態様を分類する際、利用される分類基準は、サイズ、テクスチャ、幅、デプスを含むが、これらに限定されない。
【００１１】
以下、前述した一般的な概念の様々な実施を説明するグラフィックスエンジンの多くの実施形態が与えられている。他の更なる特徴についても説明されている。
【００１２】
本発明の特徴および利点の全ては、添付図面と共にその説明がなされる以下の本発明の好ましい実施形態の詳細な説明から明らかとなろう。
【発明の詳細説明】
【００１３】
本発明の以下の詳細な説明では、本発明を十分に理解できるように多数の特定の内容が述べられている。しかしながら、当業者であれば分かるように、本発明は、これらの特定の内容を伴うことなく実施されてもよい。他の場合においては、本発明の態様を不必要に分かり難くしないように、周知の方法、手段、構成要素、回路を詳細に説明しなかった。本発明の以下の詳細な説明は、３次元（３Ｄ）グラフィックスおよび手持ち式の携帯デバイスに関するものであるが、本発明が２次元グラフィックスおよび他のタイプの計算／処理デバイスにも適用できることは言うまでもない。
【００１４】
本発明に係る３Ｄグラフィックスアーキテクチャは、サイズおよび他の特徴によって多角形を分類するためのモジュール／回路を組み込んでいる。好ましい実施形態においては、多角形が三角形である。一般に、小さくて形の整った三角形は、質や性能（例えば、リアリズム、分解能（解像度）等）を何ら犠牲にすることなく、電力効率のよい回路を有する低精度ユニットを使用して処理できる。分類に基づいて、更に電力効率がよい回路を有する低精度ユニットまたは更に電力を要する高精度ユニットを選択的にＯＮして、レンダリング／ラスタ化プロセスを実行する。１つの実施形態では、高精度ユニットが低精度ユニットから分かれていてもよい。あるいは、高精度ユニットは、低精度ユニットとなるように回路の一部を無効にしおよび／またはクロックゲート化することにより再構成されてもよい。プリミティブを分類するとともに、より電力効率がよい処理ユニットを選択して、プリミティブを処理することにより、質や性能を犠牲にすることなく、電力消費量を最小限に抑えることができる。以下に詳細に説明する様々な実施形態により、３Ｄグラフィックスアーキテクチャを実施することができる。
【００１５】
データを連続して処理する任意のデータ経路またはデータパイプラインを網羅するために本発明を一般化できることは明らかである。処理されるデータ（例えば、ＭＰＥＧビデオのマクロブロック）が分類され、また、その分類に応じて、（例えば、電力効率に関して）最も適したデータ経路が（構成可能なデータ経路から）構成されあるいは（複数のデータ経路から）選択され、それにより、質や性能を何ら低下させることなく分類されたデータが処理される。
【００１６】
ここで、本発明が実施されあるいは実行されてもよいコンピュータシステム１００の高レベル線図を一例として示す図１を参照する。特に、コンピュータシステム１００は、ラップトップコンピュータシステムまたはハンドヘルドコンピュータシステムであってもよい。このコンピュータシステム１００は、単なる典型例であり、デスクトップコンピュータシステム、汎用コンピュータシステム、組み込み型コンピュータシステム等を含む多くの異なるコンピュータシステム内で本発明が機能できることは言うまでもない。
【００１７】
図１に示されるように、コンピュータシステム１００は、集積プロセッサ回路１０１と、周辺制御装置１０２と、読み出し専用メモリ（ＲＯＭ）１０３と、ランダムアクセスメモリ（ＲＡＭ）１０４とを含む高集積システムである。高集積アーキテクチャにより、電力を節約することができる。集積プロセッサ回路１０１内に設けられていない複雑なおよび／または高ピンカウントの周辺機器とインタフェースをとる必要がある場合には、周辺制御装置１０２は任意である。
【００１８】
周辺制御装置１０２は、集積プロセッサ回路１０１の一端に接続されているが、ＲＯＭ１０３およびＲＡＭ１０４は、集積プロセッサ回路１０１の他端に接続されている。集積プロセッサ回路１０１は、処理ユニット１０５と、メモリインタフェース１０６と、グラフィックス／ディスプレイコントローラ１０７と、ダイレクトメモリアクセス（ＤＭＡ）コントローラ１０８と、エンコーダ／デコーダ（ＣＯＤＥＣ）インタフェース１０９、パラレルインタフェース１１０、シリアルインタフェース１１１、入力デバイスインタフェース１１２を含むコアロジック機能とを備える。処理ユニット１０５は、命令／データキャッシュと共に中央処理ユニット（ＣＰＵ）およびメモリ管理ユニット（ＭＭＵ）を内蔵（統合）している。
【００１９】
ＣＯＤＥＣインタフェース１０９は、オーディオソースおよび／またはモデムが集積プロセッサ回路１０１に対して接続するためのインタフェースを備える。パラレルインタフェース１１０により、ハードディスクやプリンタ等のパラレル入力／出力（Ｉ／Ｏ）デバイスが集積プロセッサ回路１０１に対して接続可能となる。シリアルインタフェース１１１は、万能非同期送受信機（ＵＡＲＴ）、ユニバーサル・シリアル・バス（ＵＳＢ）、ファイアワイヤ（ＩＥＥＥ  １３９４）等のシリアルＩ／Ｏデバイスが集積プロセッサ回路１０１に対して接続するためのインタフェースを備える。入力デバイスインタフェース１１２は、キーボード、マウス、タッチパッド等の入力デバイスが集積プロセッサ回路１０１に対して接続するためのインタフェースを備える。
【００２０】
ＤＭＡコントローラ１０８は、メモリインタフェース１０６を介して、ＲＡＭ１０４に記憶されたデータに対してアクセスするとともに、ＣＯＤＥＣインタフェース１０９、パラレルインタフェース１１０、シリアルインタフェース１１１または入力デバイスインタフェース１１２に接続された周辺デバイスに対してデータを供給する。また、ＤＭＡコントローラ１０８は、ＣＯＤＥＣインタフェース１０９、パラレルインタフェース１１０、シリアルインタフェース１１１、入力デバイスインタフェース１１２からのデータを、メモリインタフェース１０６を介してＲＡＭ１０４へと送る。グラフィックス／ディスプレイコントローラ１０７は、メモリインタフェース１０６を介して、ＲＡＭ１０４からビデオ／グラフィックスデータを要求し且つ当該データにアクセスする。その後、グラフィックス／ディスプレイコントローラ１０７は、データを処理して、処理されたデータをフォーマットするとともに、フォーマットされたデータを液晶ディスプレイ（ＬＣＤ）、ブラウン管（ＣＲＴ）、または、テレビ（ＴＶ）モニタ等の表示装置に対して送る。コンピュータシステム１００では、集積プロセッサ回路１０１をＲＯＭ１０３およびＲＡＭ１０４に対して接続するために１つのメモリバスが使用される。
【００２１】
本発明は、グラフィックス／ディスプレイコントローラ１０７の一部として実施される。ここで、グラフィックス／ディスプレイコントローラ１０７を詳細に示す図２を参照する。一般に、グラフィックス／ディスプレイコントローラ１０７は、ＣＰＵインタフェースユニット（ＣＩＦ）２０１と、ＳＲＡＭ２０２と、フェーズロックドループ（ＰＬＬ）回路２０３と、オシレータ２０４と、ピクセル処理ロジック２０８と、２次元（２Ｄ）グラフィックスエンジン（ＧＥ）２０６と、メモリインタフェースユニット（ＭＩＵ）２０７と、フラットパネルインタフェース（ＦＰＩ）２０９と、ＣＲＴデジタル・アナログ変換器（ＤＡＣ）２１０と、後処理モジュール２１１と、ＭＰＥＧ−４ビデオデコーダ２１２と、ＭＰＥＧ−４ビデオエンコーダ２１３と、３Ｄ  ＧＥ２１４とを備える。グラフィックス／ディスプレイコントローラ１０７は、ビデオカメラを受け入れるためのビデオ入力ポートを更に含む。ＣＩＦ２０１は、処理ユニット１０５およびＤＭＡコントローラ１０８に対するインタフェースを備える。したがって、ＣＩＦ２０１は、処理ユニット１０５から受けた要求およびビデオ／画像データを所望の宛先へと経路指定（ルーティング）する。特に、ＣＩＦ２０１は、ホストＣＰＵ処理ユニット１０５およびＤＭＡコントローラ１０８からのレジスタ読み取り／書き込み要求およびメモリ読み取り／書き込み要求をグラフィックス／ディスプレイコントローラ１０７内の適切なモジュールへと送る。例えば、メモリ読み取り／書き込み要求がＭＩＵ２０７へと伝えられ、ＭＩＵ２０７は、ＳＲＡＭ２０２内のフレームバッファから／へとデータを読み取る／書き込む。また、ＣＩＦ２０１は、ＤＭＡコントローラ１０８との連絡役として機能して、システムメモリ（ＲＯＭ１０３およびＲＡＭ１０４）からデータをフェッチする（取り出す）とともに、そのデータをＧＥ２０６およびＭＩＵ２０７に対して供給する。また、ＣＩＦ２０１は、ＭＰＥＧ後処理プロセスを制御するために処理ユニット１０５内のホストＣＰＵによってプログラム可能な多くの制御レジスタを有している（例えば、制御レジスタのうちの幾つかの内容は、ＭＰＥＧ−４デコーダ２１２を構成するために使用されてもよい）。また、ＣＩＦ２０１は、画像の構成／解凍を行なうために、圧縮されたビデオ／画像ビットストリームをＭＰＥＧ−４デコーダ２１２に対して送る。更に、ＣＩＦ２０１は、集積プロセッサ回路１０１に直接的または間接的に接続されたデバイスに対して圧縮されたビットストリームが送信可能となる前に、圧縮を行なうため、コーデックインタフェース１０９またはシリアルインタフェース１１１に接続されたソースから受けた圧縮されていないビデオ／画像ビットストリームをＭＰＥＧ−４エンコーダに対して送る。
【００２２】
ＳＲＡＭ２０２内のフレームバッファは、モニタ上に表示される画像のピクセルマップ（すなわち、フレームバッファにマッピングされるピクセルパターン）を記憶するため、および様々な目的で一時バッファとしての機能を果たすために使用される。また、ＳＲＡＭ２０２は、ビデオバッファおよびトランザクションレジスタのために割り当てられたメモリを有していてもよい。２Ｄ  ＧＥ２０６は、その後にホストＣＰＵによって発せられるコマンドに基づいてＳＲＡＭ２０２内のバッファに記憶されるグラフィックス／ビデオ画像データを処理する。ＧＥ２０６は、グラフィックス演算（例えば、ＢｉｔＢＬＴｓおよびＲＯＰｓ、エリアフィル、線画）を行なうとともに、クリッピング、透過、回転、色拡張等のためのハードウェアサポートを行なう。更に、ＧＥ２０６は、内蔵されているストレッチ・ブロック・トランスファ（ＳＴＲＢＬＴ）機能により、ビデオ画像拡張、プログレッシブスキャニング変換、ＹｃｂＣｒ（ＹＵＶ）−ＲＧＢ色空間変換等を行なう。要するに、２Ｄ  ＧＥ２０６は、処理ユニット１０５を、ビデオ／グラフィックス表示レンダリング機能から解放して、処理ユニット１０５がタイムクリティカルなあるいはリアルタイムな演算を行なえるようにする。
【００２３】
３Ｄ  ＧＥ２１４が本発明を実施する。ホストＣＰＵのコマンドの下、３Ｄ  ＧＥ２１４は、表示のために３Ｄグラフィックスの処理およびレンダリングを実行する。一般に、３Ｄ  ＧＥ２１４は、データパイプライン（別名：データ経路）態様で３Ｄグラフィックスを連続して処理する。このような処理としては、プリミティブ頂点情報をフェッチすること、頂点情報をソートすること、プリミティブ面積を計算してプリミティブを分類すること、面積計算および／またはプリミティブ分類を使用して、３Ｄグラフィックスを処理するための適切な（例えば、最も電力効率がよい）回路を選択または構成すること、ピクセルの位置および属性における初期値および階調を計算すること、三角形プリミティブの各ピクセル毎に位置および属性の値を計算すること、パースペクティブ分割を行なうこと、フィルタモードによって必要とされるテクセルデータをテクスチャキャッシュから取り出すこと、テクスチャと拡散色とを組み合わせて新たな拡散色（ｄｃ）を生成すること、アルファ、デプス、ステンシルテストを行なうこと、ｄｃとフレームバッファからのピクセルカラーとを組み合わせてレンダリングされた３Ｄデータを生成することを挙げることができるが、これらの機能に限定されない。３Ｄ  ＧＥ２１４は、その後、処理された３Ｄをフレームバッファ２０２に対して供給する。プリミティブ面積の計算、プリミティブの分類、３Ｄグラフィックスデータを処理するための適した回路のその後の選択または構成等のような本発明に関連する機能を除き、３Ｄ  ＧＥ２１４によって行なわれる残りの機能は、一般に、良く知られており、全てとはいえないにしても殆どの市販されている３Ｄグラフィックスエンジンで実行される。
【００２４】
ＭＩＵ２０７は、ＳＲＡＭ（フレームバッファ）２０２内のフレームバッファ、ビデオバッファ、トランザクションレジスタから／への全ての読み取りおよび書き込みを制御する。そのような読み取りおよび書き込み要求は、ＣＩＦ２０１、２Ｄ  ＧＥ２０６、３Ｄ  ＧＥ２１４、ピクセル処理ロジック２０８、ＦＰＩ２０９等を介してホストＣＰＵから成されてもよい。また、ＭＩＵ２０７は、メモリアドレッシングやメモリタイミング制御等に関連付けられたタスクを実行する。後処理モジュール２１１は、解凍されたＭＰＥＧビデオ画像データからのブロッキングアーティファクトおよびリンギングアーティファクトを除去して、解凍されたビデオデータの質を向上させる。解凍されたＭＰＥＧビデオ画像データは、例えばシリアルインタフェース１１１またはＭＰＥＧ−４デコーダ２１２を介して光メディアプレーヤから受けることができる。その後、フィルタ処理されたビデオ画像データはＳＲＡＭ２０２へ送られる。
【００２５】
ピクセル処理ロジック２０８は、ＭＩＵ２０７を介してＳＲＡＭ２０２内のバッファからビデオ／グラフィックスデータを取り出して、その画像データをピクセルへとシリアライズ（直列化）するとともに、ピクセルをＦＰＩ２０９またはＣＲＴ  ＤＡＣ２１０へと出力する前に当該ピクセルを所定の形式へとフォーマットする。したがって、ピクセル処理ロジック２０８は、必要な水平および垂直な表示タイミング信号、メモリアドレス、読み取り要求、ＳＲＡＭ２０２内に記憶された画像データにアクセスするための制御信号を生成する。関連する表示デバイスがＬＣＤである場合、ピクセル処理ロジック２０８からのピクセルデータは、ＬＣＤへ送られる前にＦＰＩ２０９に対して送られる。また、ＦＰＩ２０９は、表示のために異なるカラー色相またはグレイシェイド（灰色影）を更に加えることによりデータを処理する。また、薄膜トランジスタ（ＴＦＴ）ＬＣＤ（別名：アクティブマトリクスＬＣＤ）または超ねじれネマチック（ＳＴＮ）ＬＣＤ（別名：パッシブマトリクスＬＣＤ）が使用されるかどうかに応じて、ＦＰＩ２０９は、ディスプレイのタイプに適するようにデータをフォーマットする。更に、ＦＰＩ２０９により、モノクロＬＣＤが使用される場合には、カラーデータをモノクロデータへと変換することができる。逆に、ディスプレイ装置がブラウン管（ＣＲＴ）である場合、ピクセルデータは、ＣＲＴへ送られる前に、ＣＲＴデジタル・アナログ変換器（ＤＡＣ）２１０に対して供給される。ＣＲＴ  ＤＡＣ２１０は、ピクセル処理ロジック２０８からのデジタルピクセルデータを、ＣＲＴモニタ上に表示されるアナログのレッド（赤）、グリーン（緑）、ブルー（青）［ＲＧＢ］信号へと変換する。
【００２６】
ここで、本発明を実施する３Ｄ  ＧＥ２１４の第１の実施形態の関連する構成要素を示す図３を参照する。図３に示されるように、３Ｄ  ＧＥ２１４は、面積計算／分類回路３０１と、反復子セットアップ計算回路３０２と、反復子セットアップ計算回路３１２と、ピクセル反復子回路３０３と、ピクセル反復子回路３１３と、パースペクティブ分割回路３０４と、パースペクティブ分割回路３１４とを有している。面積計算／分類回路３０１、反復子セットアップ計算回路３０２、反復子セットアップ計算回路３１２は、三角形セットアップエンジン３０５を形成している。ピクセル反復子回路３０３と、ピクセル反復子回路３１３と、パースペクティブ分割回路３０４と、パースペクティブ分割回路３１４は、ラスタライジング／レンダリングエンジン３０６を形成している。しかしながら、反復子セットアップ計算回路３０２および反復子セットアップ計算回路３１２は、図３に示されるように三角形セットアップエンジン３０５の一部とならずに、破線のボックスによって示されるようにラスタライジング／レンダリングエンジン３０６の一部を成すこともできる。図３に示されるように、反復子セットアップ計算回路３０２、ピクセル反復子回路３０３、パースペクティブ分割回路３０４は、互いに接続されることにより、小さくて形の整った三角形を扱うようになっている第１の経路を形成する。反復子セットアップ計算回路３１２、ピクセル反復子回路３１３、パースペクティブ分割回路３１４は、互いに接続されることにより、大きくて形の悪い三角形を扱うようになっている第２の経路を形成する。この実施形態においては、三角形分類が決定された後、第１の経路または第２の経路によって三角形が処理される。電力を節約するため、選択されない経路中のハードウェアをＯＦＦする（クロックされない）ことができる。
【００２７】
３Ｄグラフィックスを生成するため、３Ｄアプリケーションがシーンを作成する（例えば、ＰＣゲームで使用される３Ｄアニメーションソフトウェア）。各シーンは、パラメトリック曲面を接続することにより形成される多くのオブジェクトを含む。各パラメトリック曲面は、プリミティブと呼ばれる小さい更に簡素な要素に分割される。プリミティブは、多角形、球、円柱、自由造形面等の任意の立体形状またはパターン形状であってもよい。通常、プリミティブは、多角形の１つのタイプである三角形である。データベース中のデータ構造によって表わされる各プリミティブは、それに所望の色、形状、テクスチャ（質感）、透明度等を与えるための属性および（例えば、三角形の３つの頂点からの）頂点座標に関連付けられる。幾何学的処理として知られる３Ｄパイプラインの次の段階においては、プリミティブデータベースが画像空間へと数学的に変換される。そのような変換としては、翻訳（変換）、回転、クリッピング、投影、スケーリングを挙げることができる。照明効果およびぼかし効果もプリミティブに加えられる。幾何学的処理は、その頂点座標、色、デプス、テクスチャ、他の属性によって表わされる画像空間プリミティブを形成する。
【００２８】
３Ｄ  ＧＥ２１４は、幾何学的処理によって形成された画像空間プリミティブを受けるとともに、３Ｄパイプラインのラスタ化段階を実行する。本発明の実施形態は三角形状のプリミティブを対象としているが、本発明が他の形状のプリミティブにも同様に適用できることは明らかである。一般に、三角形セットアップエンジン３０５は、各三角形毎に調整されたピクセル位置および属性階調を生成するが、ラスタライジング／レンダリングエンジン３０６は、三角形セットアップエンジン３０５によって生成された情報を使用して、三角形内の全てのピクセル属性を生成する。ラスタライジング／レンダリングエンジン３０６は、エッジウォーキングを行なって、エッジに沿うピクセル位置を決定した後、主要エッジに沿うピクセル位置を開始点として使用して処理をスパンし、三角形プリミティブの内側の走査線に沿うピクセルにおいてピクセル位置および属性値をレンダリングする。属性の例としては、色、デプス、テクスチャ座標、ブレンディング等を挙げることができる。各ピクセルの最終的なレンダリングは、アプリケーションによって定められる全ての属性の合成である。ラスタライジング／レンダリングエンジン３０６自体は多数の計算を実行する。幾つかの更なる下流側での処理の後における各ピクセルの属性は、その後の表示のためにＳＲＡＭ２０２内のフレームバッファに対して送られる。
【００２９】
前述したように、三角形セットアップエンジン３０５は、面積計算／分類回路３０１と、反復子セットアップ計算回路３０２と、反復子セットアップ計算回路３１２とを含むが、これらに限定されない。本発明において、面積計算／分類回路３０１は、以下の式にしたがってＸＰを計算する。
XP=[(dx10*dy20)-(dx20*dy10)]    （１）
ここで、dxNM=(XN-XM)、dyNM=(YN-YM)であり、｜XP｜／２は、手元にある三角形の面積に等しい。方程式（１）を計算できる前に、面積計算／分類回路３０１は、この三角形の主要エッジを決定する。三角形の主要エッジは、最も小さいＹ座標を有する頂点を最も大きいＹ座標を有する頂点に接続するエッジとして規定される。主要エッジおよびその対応する接続頂点に基づいて、面積計算／分類回路３０１は、最も大きいＹ座標を有する頂点に頂点２というラベルを付け、最も小さいＹ座標を有する頂点に頂点０というラベルを付け、残りの頂点に頂点１というラベルを付ける。ここで、三角形４００の主要エッジ４１０および本発明にしたがって三角形の頂点にラベルを付ける方法を一例として示す図４を参照する。また、図４は、ラスタライジング／レンダリングプロセスで使用される三角形４００内の多くの走査線を示している。
【００３０】
面積計算／分類回路３０１は、所定の基準に基づいて、プリミティブ三角形を小さい三角形または大きい三角形として分類する。また、面積計算／分類回路３０１は、他の所定の基準にしたがって、各三角形を「形が整った」三角形または「形が悪い」三角形として分類する。「形が悪い」三角形の一例は、非常に狭い三角形である。三角形が小さく且つ形が整っているかどうかを決定することは重要である。なぜなら、小さく且つ形が整っている三角形を計算することは、大きくあるいは形が悪い三角形を計算することよりも精度をあまり必要としないからである。一般に、より精度が高い三角形計算器は、より大きい乗算器および／または加算器を必要とし、その結果、多くの電力を消費する更に多くの論理ゲートを必要とする。逆に、より精度が低い計算器は、より小さい乗算器および／または加算器あるいは他の数学的論理回路を必要とする。論理ゲートの使用が僅かであれば、電力消費量も少なくて済む。そのため、本発明においては、三角形プリミティブを正確に分類して、電力をあまり消費しない計算器を選択するとともに、「冗長な」精度だけを犠牲にすることにより、ピクセルレンダリング／ラスタ化プロセスにおける質や性能の損失を殆どあるいは全く伴うことなく、電力を節約することができる。
【００３１】
表１は、一例として、三角形が小さくおよび／または形が整っているかどうかを決定するために面積計算／分類回路３０１によって実施される新しい分類基準をまとめている。表１に示されるように、「サイズ」基準を満たさないことは、三角形が大きいことを示しており、「テクスチャ」基準を満たさないことは、三角形がテクスチャマップ内で非常に長い距離にわたって広がり、したがって、形が悪いことを示しており、「幅」基準を満たさないことは、三角形が狭く、したがって、形が悪いことを示しており、「デプス」基準を満たさないことは、三角形が非常に深い範囲にわたって広がり、したがって、形が悪いことを示している。与えられた用途に応じて、他の基準（表１に示されていない）が定められてもよい。なお、分類規則は、頂点のＸ，Ｙ，Ｕ，Ｖ，１／ｗの値に関して最小値および最大値を必要とする。すなわち、Xmin=min(X0, X1, X2)、Xmax=max(X0, X1, X2)であり、Umin=min(U0, U1, U2)等である。表１に示される全ての基準が満たされる場合、三角形は小さく且つ形が整っている。基準が満たされない場合、三角形は大きくあるいは形が悪い。
【表１】
2007514209.tif 000003
【００３２】
本発明の目的を満たすため、分類プロセスは、節約された電力のかなりの部分を使い果たすことができない。必要な処理能力を簡素化し従って減らすため、分類計算の前に複数のステップが行なわれる。幾つかの例を以下に示す。例えば、テクスチャ座標およびデプス座標（ｕ，ｖ）および１／ｗはそれぞれ浮動小数点値である。分類基準は、評価中に完全な精度を必要としない。計算を劇的に単純化して、テクスチャおよびデプス基準を評価するために必要な電力を減らすために、仮数の限られた数の最上位ビットだけを計算で使用する必要がある。
【００３３】
他の電力節約手段を実施することもできる。サイズ、テクスチャ、デプス分類基準の計算は、三角形の３つの頂点の各分類基準において最小値および最大値の決定を必要とする。すなわち、各分類基準においては、３つの頂点からの３つの値が含まれる。好ましくは、最小値および最大値の決定は、電力節約のために最適化された３−入力最小値・最大値回路（例えば、３−入力比較回路）を使用して行なわれる。一般に、精度要件が限られた固定小数点数を含む減算・比較演算は、僅かな電力で行なうことができる。表１に示されるように、幅およびデプス分類基準の計算においては、閾値を使用する乗法演算が必要である。２の累乗（例えば、３２）によって表わすことができる閾値を使用することにより、節電ビットシフト回路によって乗法演算を行なうことができる。幅分類基準の計算において（dy20*dy20）演算を実行するため、一般に非常に小さく且つ一般の乗算回路ほど電力を消費しない特定の二乗演算回路を使用することができる。あるいは、（dy20*dy20）の計算において、数dy20の最下位ビットの一部を下げることができる。
【００３４】
三角形が小さく且つ形が整っているということを面積計算／分類回路３０１が決定すると、三角形の頂点情報および属性が反復子セットアップ計算回路３０２へと供給される。逆に、三角形が大きく且つ形が悪いということを面積計算／分類回路３０１が決定すると、三角形の頂点情報および属性が反復子セットアップ計算回路３１２へと供給される。
【００３５】
反復子セットアップ計算回路３０２，３１２は、ラスタライジング／レンダリングエンジン３０６によって必要とされるパラメータ、例えば最初の属性値およびそれらの階調を計算する。より具体的には、反復子セットアップ計算回路３０２は、周知のセットアップ方程式を実行して、例えば、走査線に沿う水平インクリメント／デクリメントにおける属性の変化、または、隣接するスパンライン間の垂直インクリメント／デクリメントにおける属性の変化を決定する。次の隣接する走査線に対する垂直インクリメント／デクリメントは、現在の三角形の主要エッジ、例えば図４に示される主要エッジ４１０に沿って行なわれる。したがって、セットアップ方程式の微分においては、主要エッジの傾きおよびその逆数が使用される。反復子セットアップ計算回路３０２，３１２がその計算において使用する方程式を以下に示す。
【００３６】
ピクセル属性が一次関数f(x, y)によって表わされると仮定する。走査線に沿う水平インクリメントのステップ、すなわち、ピクセル属性値と次のピクセル属性値との間の水平方向の差異は、以下のように表わされる。
∂f/∂x=(df10*dy20-df20*dy10)/XP    （２）
ここで、XPは、方程式（１）から計算される。
【００３７】
１つの走査線から主要エッジに沿う次の隣接する走査線までの垂直インクリメントのステップ、すなわち、座標の差は、yi=(yi+1)およびxi=(xi+si20)となるように幾何学的に示すことができる。ここで、xiおよびyiは整数値のピクセル座標であり、si20=｜dx20/dy20｜（すなわち、主要エッジの傾きの整数「底」逆数）である。ｘ座標は、主要エッジの傾きの逆数によって決まる。そのため、現在の走査線の属性値と次の走査線属性値との間の垂直方向の差は、以下のように表わされる。
dt=si20*∂f/∂x+∂f/∂y    （３）
ここで、∂f/∂y=[df20*dx10-df10*dx20]/XPである。
【００３８】
反復子セットアップ計算回路３０２，３１２は、頂点情報および属性階調をラスタライジング／レンダリングエンジン３０６に対して送る。スタライジング／レンダリングエンジン３０６は、前述したようにピクセル反復子回路３０３とピクセル反復子回路３１３とパースペクティブ分割回路３０４とパースペクティブ分割回路３１４とを有しているが、これらに限定されない。ピクセル反復子回路３０３，３１３は、三角形のエッジに沿うピクセル位置を定めるためにエッジウォーキングを実行する。主要エッジに沿う定められたピクセル位置を走査線の開始点として使用して、ピクセル反復子回路３０３，３１３は、以下の方程式の繰り返しにより、各走査線に沿う全てのピクセルのｘ−ｙ位置座標および属性値を決定する。
f(xi±1, yi)=f(xi, yi)±∂f/∂x    （４）
この場合、加算または減算かどうかは、スパンニング方向によって決まる。エッジウォーキングおよびスパン処理は周知のプロセスである。
【００３９】
ピクセル反復子回路３０３によって行なわれる走査線ラスタ化プロセス（例えば、エッジウォーキングおよびスパン処理）は、周知の方程式を使用することにより支援される。整数ｘ，ｙ座標における初期値および関連する属性値は、以下の方程式を使用して決定される。
f(xi, yi)=f0+(yi-y0)*∂f/∂y+(xi-x0)*∂f/∂x    （５）
ここで、yi=｜y0｜およびxi=x0+si20*(yi-y0)であり、
dx20*(yi-y0)-dy20*(xi+1-x0)>-0の場合には、
xiが１だけインクリメントされる。
【００４０】
パースペクティブ分割回路３０４，３１４は、テクスチャ座標（ｕ，ｖ）によって必要とされるパースペクティブコレクションを供給する。パースペクティブ分割回路３０４，３１４がピクセル反復子回路３０３およびピクセル反復子回路３１３からそれぞれ各ピクセル毎にピクセル属性値を受けると、パースペクティブ分割回路３０４，３１４は、テクスチャ座標とデプス値との線形に補間された積（すなわち、ｕ／ｗおよびｖ／ｗ）を、線形に補間されたデプス値（すなわち、１／ｗ）で割る。その後、次の表示のためにＳＲＡＭ２０２内のフレームバッファに対して情報を送る前にテクスチャルックアップおよびブレンディング等の幾つかの周知のプロセスを行なうため、パースペクティブ分割回路３０４，３１４は、ラスタ化／レンダリングプロセスにおいて、ピクセル位置座標およびそれらの個々の属性のリストを他の回路（図示せず）に対して送る。
【００４１】
一般的な構成の三角形セットアップエンジン（面積計算／分類回路および他の関連する構成要素を使用しない）およびラスタ化／レンダリングエンジンについては、１９９９年１１月のマイクロアーキテクチャに関する第３２回年次国際シンポジウムの議事録、第５０頁のＡ．  ＷｏｌｆｅおよびＤ．  Ｎｏｏｎｂｕｒｇによる「Ａ  Ｓｕｐｅｒｓｃａｌａｒ  ３Ｄ  Ｇｒａｐｈｉｃｓ  Ｅｎｇｉｎｅ」等の様々な出版物に記載されている。また、一般的な構成の三角形セットアップエンジン（面積計算／分類回路および他の関連する構成要素を使用しない）およびラスタ化／レンダリングエンジンについては、前述した’０８９特許および’５５０特許を含む様々な米国特許に記載されている。これらの資料は、その全体が参照として本明細書に組み込まれる。
【００４２】
したがって、本発明の第１の実施形態の主要な態様は、２つの経路、すなわち、精度が低く、複雑度が低く、その結果、演算のために電力をあまり必要としないハードウェアを使用して小さく且つ形が整った三角形を処理するための第１の経路と、精度が高く、より複雑で、その結果、演算のために多くの電力を必要とするハードウェアを使用して大きくあるいは形が悪い三角形を処理するための第２の経路とを使用することである。大きくあるいは形が悪い三角形を処理するための第２の経路のハードウェアは、サイズや態様に関係なく三角形を処理するために市販されている３Ｄグラフィックスエンジンで現在使用されている従来のハードウェアであってもよい。節電の主要なソースは、小さく形が整った三角形が処理され且つ大きく／形が悪い経路に関連する回路がＯＦＦされる（クロックされない）ときに実現される。
【００４３】
大きくあるいは形が悪い三角形に関しては２４ビット仮数を用いて、また、小さく且つ形が整った三角形に関しては１６ビット仮数を用いて反復子セットアップ浮動小数点演算が行なわれる場合に、精度、質、性能要件が満たされることがシミュレーションにより分かった。この場合、６ビット指数が両方の分類のために使用される。周知の３段階パイプラインを使用して浮動小数点乗算が行なわれ、また、周知の５段階パイプラインを使用して浮動小数点加算が行なわれる。３段乗算器および５段加算器の両方は、１サイクル当り１演算のスループットを有している。第１の経路の反復子セットアップ計算回路３０２で１６ビット仮数浮動小数点乗算器および加算器を使用すると、反復子セットアップ計算電力消費量が約２０％だけ減少する。一方、精度が低く複雑度が低いハードウェアをピクセル反復子回路３０３およびパースペクティブ分割回路３０４で使用することにより得られる電力消費量の節約は、小さい三角形で費やされるサイクル数が大きい三角形で費やされるサイクル数の１／１０よりも少ないことを主な理由として、最小となる。
【００４４】
ここで、本発明を実施する３Ｄ  ＧＥ２１４の第２の実施形態の関連する構成要素を示す図５を参照する。図５に示されるように、３Ｄ  ＧＥ２１４は、面積計算／分類回路５０１と、反復子セットアップ計算回路５０２と、反復子セットアップ計算回路５１２と、ピクセル反復子回路５０３と、パースペクティブ分割回路５０４とを含む。反復子セットアップ計算回路５０２は小さく且つ形が整った三角形のために使用される一方、反復子セットアップ計算回路５１２は大きくあるいは形が悪い三角形のために使用される。この実施形態においては、三角形分類が決定された後、反復子セットアップ計算回路５０２または反復子セットアップ計算回路５１２によって三角形が処理される。電力を節約するため、選択されない経路中のハードウェアをＯＦＦする（クロックされない）ことができる。ピクセル反復子回路５０３およびパースペクティブ分割回路は、その後、小さく且つ形が整った三角形および大きくあるいは形が悪い三角形の両方を処理するために使用される。その際、ピクセル反復子回路３１３およびパースペクティブ分割回路３１４を実施するために第１の実施形態で必要とされる余分なハードウェアが排除され、それにより、余分なコストが節約される。これは、より望ましい設計法である可能性がある。なぜなら、これらの更なるハードウェアの使用は、省力化を著しく向上させることができないからである。
【００４５】
面積計算／分類回路５０１は面積計算／分類回路３０１と同一である。反復子セットアップ計算回路５０２は反復子セットアップ計算回路３０２と同一である。反復子セットアップ計算回路５１２は反復子セットアップ計算回路３１２と同一である。ピクセル反復子回路５０３は、（第１の実施形態の大きい／形が悪い経路で使用される）ピクセル反復子回路３１３と同一である。パースペクティブ分割回路５０４は、（第１の実施形態の大きい／形が悪い経路で使用される）パースペクティブ分割回路３１４と同一である。なお、反復子セットアップ計算回路５０２および反復子セットアップ計算回路５１２は、図５に示されるように三角形セットアップエンジン５０５の一部とならずに、破線のボックスによって示されるようにラスタライジング／レンダリングエンジン５０６の一部を成すこともできる。
【００４６】
並列処理の使用により性能向上を実現できることがシミュレーションにより分かった。例えば、（小さく且つ形が整った三角形のために使用される）反復子セットアップ計算回路５０２において、乗算器および加算器を既に有する回路に対して更なる乗算器が加えられる場合には、５％の性能向上が得られる。これは、小さい三角形が、形成される１ピクセル当りに大きな割合の浮動小数点演算を必要とするからである。
【００４７】
ここで、本発明を実施する３Ｄ  ＧＥ２１４の第３の実施形態の関連する構成要素を示す図６を参照する。図６に示されるように、３Ｄ  ＧＥ２１４は、面積計算／分類回路６０１と、反復子セットアップ計算回路６０２と、ピクセル反復子回路６０３と、パースペクティブ分割回路６０４とを含む。反復子セットアップ計算回路６０２は、低精度モード（例えば、小さく形が整った三角形が関与している場合）または高精度モード（例えば、大きくあるいは形が悪い三角形が関与している場合）で演算を行なうように動的に構成することができる。より具体的には、低精度モードにおいて、反復子セットアップ計算回路６０２は、小さく且つ形が整った三角形を処理する際に、仮数の１つ以上のＬＳＢを無効にする（ゼロに設定する）。逆に、高精度モードにおいて、反復子セットアップ計算回路６０２は、大きくあるいは形が悪い三角形を処理する際に、仮数の全幅を使用する。この実施形態では、三角形分類が決定された後、面積計算／分類回路６０１は、反復子セットアップ計算回路６０２を低精度モードまたは高精度モードへと設定する際に使用される三角形の分類を示す制御信号を生成する。これにより、反復子セットアップ計算回路６０２を三角形毎に動的に構成して電力を節約することができる。その後、小さく且つ形が整った三角形および大きいあるいは形が悪い三角形の両方を処理するために、ピクセル反復子回路６０３およびパースペクティブ分割回路６０４が使用される。
【００４８】
面積計算／分類回路６０１は面積計算／分類回路３０１と同一である。ピクセル反復子回路６０３は、（第１の実施形態の大きい／形が悪い経路で使用される）ピクセル反復子回路３１３と同一である。パースペクティブ分割回路６０４は、（第１の実施形態の大きい／形が悪い経路で使用される）パースペクティブ分割回路３１４と同一である。なお、反復子セットアップ計算回路６０２は、図６に示されるように三角形セットアップエンジン６０５の一部とならずに、破線のボックスによって示されるようにラスタライジング／レンダリングエンジン６０６の一部を成すこともできる。
【００４９】
２つの低精度モードおよび高精度モードで動的に演算できることを除き、反復子セットアップ計算回路６０２は、（第１の実施形態の大きい／形が悪い経路で使用される）反復子セットアップ計算回路３１２と略同一である。１つの実施形態においては、仮数のＬＳＢをゼロ設定することにより、ＬＳＢに関連付けられた論理回路は、０と１との間でトグルする（切り換える）ことができず、したがって、電力を消費していない。１つの実施形態においては、高精度ハードウェアを必要とする大きくあるいは形が悪い三角形を処理するための反復子セットアップ計算回路６０２の演算論理回路（例えば、乗算器、加算器等）において２４ビットの全仮数幅が使用され、また、低精度ハードウェアを必要とする小さく且つ形が整った三角形を処理するための反復子セットアップ計算の演算論理回路において１６ビットの少ない仮数幅が使用される。他の節電構成（例えば、高精度モードで有効（使用可能）な仮数ビットの数、無効なＬＳＢの数など）および更なる精度モード（例えば、様々な数の無効ＬＳＢを含む）も使用できる。以下の表２は、仮数の全幅（例えば２４ビット）が使用される、２つの２進数と乗算器と浮動小数点数の仮数との間の第１の典型的な乗算と、仮数の８個のＬＳＢが使用禁止となっている、２つの２進数と乗算器と浮動小数点数の仮数との間の第２の典型的な乗算とを示している。
【表２】
2007514209.tif 000004
【００５０】
例Ｎｏ．１に示されるように、仮数の幅が使用されるため、全てのビットが使用可能（有効）になり、したがって、計算中にゼロ（０）と１との間で自由にトグルすることができる。これに対して、例Ｎｏ．２は、仮数の８個のＬＳＢが無効にされ、したがって、１へと自由にトグルできないときのシナリオを示している。例Ｎｏ．２における乗法演算の最終結果は例Ｎｏ．１のそれよりも精度が低いが、小さく且つ形が整った三角形を処理するためには十分に正確であると思われる。
【００５１】
図７は、高精度モードおよび低精度モードでＬＳＢを有効（使用可能）にし且つ無効にするために反復子セットアップ計算回路６０２で実施できる仮数レジスタ７００を一例として示している。図７に示されるように、仮数レジスタ７００は、フリップフロップ７１２ａ−７１２ｈと、ＡＮＤゲート７１４ａ−７１４ｈと、ＡＮＤゲート７１６ａ−７１６ｈとを有しており、これらは互いに接続されてレジスタ回路７１０ａ−７１０ｈを形成している。全て同一である各レジスタ回路７１０ａ−７１０ｈは、ビット０に割り当てられたレジスタ回路７１０ａ、ＬＳＢ、ビット１に割り当てられたレジスタ回路７１０ｂ等を用いて仮数ビットを制御するように構成されている。したがって、仮数レジスタ７００は、８個の仮数ビットを制御するようになっている。より多くのあるいはより少ない仮数ビットを制御するために、仮数レジスタ７００に対して更なるレジスタ回路を加えることができあるいは仮数レジスタ７００から更なるレジスタ回路を除去できることは明らかである。
【００５２】
次に、全てのレジスタ回路７１０ａ−７１０ｈの代表であるレジスタ回路７１０ａの動作（演算）について説明する。ＡＮＤゲート７１４ａは、入力としてイネーブル信号ＥＮＡ  ０およびクロック信号ＣＬＫを受ける。ＡＮＤゲート７１４ａは、その出力をクロック入力としてフリップフロップ７１２ａに対して供給する。フリップフロップ７１２ａは、データとして入力信号ＩＮ  ０を受ける。フリップフロップ７１２ａは、イネーブル信号ＥＮＡ  ０およびクロック信号ＣＬＫの両方がアクティブのときに入力信号ＩＮ  ０を単にラッチして送る。フリップフロップ７１２ａの出力は、イネーブル信号ＥＮＡ  ０と共に、ＡＮＤゲート７１６ａに対して入力として与えられる。ＡＮＤゲート７１６ａは、ＥＮＡ  ０が非アクティブになると常にその出力ＢＩＴ  ０がゼロに設定されるようにする。クロック信号ＣＬＫによってＢＩＴ０が０と１との間で切り換わることができない（トグルできない）ようにすることにより、ＬＳＢに関与する論理回路は、０と１との間でトグルさせることができず、したがって、電力を消費しない。
【００５３】
１つの実施形態において、イネーブル信号ＥＮＡ  ０−ＥＮＡ  ７は、面積計算／分類回路６０１（図示せず）内に設けられた８ビットプログラム可能制御レジスタによって供給される。８ビットプログラム可能制御レジスタの内容は、計算／分類プロセスを完了した後に面積計算／分類回路６０１によって生成される制御信号により設定されている。例えば、三角形が大きくあるいは形が悪いということを示すアクティブ制御信号は、８ビットプログラム可能制御レジスタの内容を全て１に設定し、また、三角形が小さく且つ形が整っているということを示す非アクティブ制御信号は、８ビットプログラム可能制御レジスタの内容を全て０に設定する。信号ＩＮ  ０−ＩＮ  ７は、演算機能ユニット（図示せず）によって生成された８個の仮数ＬＳＢである。あるいは、仮数レジスタ７００は、反復子セットアップ計算回路６０２内で８個の仮数ＬＳＢとして使用されるその出力ＢＩＴ  ０−ＢＩＴ  ７を供給する。当業者であれば分かるように、本発明は、例えば無効な仮数ＬＳＢの数を変えることにより極端に小さい三角形、小さい三角形、中程度の三角形、大きい三角形を処理するため、２つの精度モードから更に多くの精度モードへと容易に拡張させることができる。表３は、典型的な仮数レジスタ７００における真理値表である。
【表３】
2007514209.tif 000005
【００５４】
ここで、本発明を実施する３Ｄ  ＧＥ２１４の第４の実施形態の関連する構成要素を示す図８を参照する。図８に示されるように、３Ｄ  ＧＥ２１４は、面積計算／分類回路８０１と、反復子セットアップ計算回路８０２と、ピクセル反復子回路８０３と、パースペクティブ分割回路８０４とを有している。また、本実施形態は、ユーザインタフェース８１６および／または電力モニタ８１７に接続された精度選択回路８１５を更に含む。精度選択回路８１５は、３Ｄ  ＧＥ２１４の外部にあっても良く（図８に示されるように）、あるいは、３Ｄ  ＧＥ２１４の内部にあってもよい。ユーザインタフェース８１６により、ユーザは、所望の電力レベル、したがって関連する精度モードを手動で選択することができる。ユーザインタフェース８１６は、グラフィカルユーザインタフェース（ＧＵＩ）、コマンドラインインタフェース、タッチスクリーンインタフェース、音声に反応するインタフェース、メニュー方式のインタフェース、手動スイッチ等であってもよい。したがって、ユーザインタフェース８１６を使用して、ユーザは、選択信号を生成することにより、バッテリ寿命を最大にするための低電力低精度モード、グラフィックスの質を良好にするための高電力高精度モード、あるいは、他の精度モードを選択してもよい。
【００５５】
一般に、電力モニタ８１７は、手持ち式携帯デバイス１００に給電するバッテリ中に残存する利用可能な電力を監視した後、利用可能な電力レベルとアクティブに実行中のアプリケーション（例えば、ゲーム等）の残存する動作時間とを比較して、実行中のアプリケーションの終了まで手持ち式携帯デバイス１００の動作を持続可能にするために必要な適切な電力レベルを決定する。１つの実施形態において、電力モニタ８１７は、バッテリやＣＰＵ（ゲームの残存する実行時間を示す）等からの入力を使用して、記憶された電力レベル−動作時間アルゴリズムを実行する状態機械であってもよい。アルゴリズムは、基本的に、入力の比較（例えば、利用可能な電力と、現在の精度モード下で実行中のアプリケーションの終了までの時間とを比較）を行なって、他の利用可能な精度モード下での残存する動作時間を決定するとともに、バッテリの利用可能な電力がアプリケーションを終了させるに足るものとなるようにする精度モードを選択する。
【００５６】
１つの実施形態において、精度選択回路８１５は、ユーザインタフェース８１６および／または電力モニタ８１７から選択信号を受けるとともに、選択された精度モードおよび電力を表わすビット列を生成する。また、精度選択信号回路８１５は、ユーザインタフェース８１６または電力モニタ８１７が起動されたかどうかを示すインジケータ信号も生成する（例えば、新たな選択信号がいずれかのモジュールから受けられるときに）。このビット列およびインジケータ信号は、その後、面積計算／分類回路８０１内の制御レジスタ（図示しないが、以下で後述する）に対して供給される。
【００５７】
反復子セットアップ計算回路８０２は、低精度モード（例えば、小さく形が整った三角形が関与している場合）、高精度モード（例えば、大きくあるいは形が悪い三角形が関与している場合）、および他の精度モードで演算を行なうように動的に構成することができる。より具体的には、低精度モードにおいて、反復子セットアップ計算回路８０２は、小さく且つ形が整った三角形を処理する際に、仮数の１つ以上のＬＳＢを無効にする（ゼロに設定する）。逆に、高精度モードにおいて、反復子セットアップ計算回路８０２は、大きくあるいは形が悪い三角形を処理する際に、仮数の全幅を使用する。他の精度モードは、仮数の様々な数のＬＳＢの無効化を含む。この実施形態では、三角形分類が決定された後、面積計算／分類回路８０１は、反復子セットアップ計算回路８０２を設定（コンフィギュレーション）する際に使用される三角形の分類を示す制御信号を生成する。より具体的には、制御信号は、面積計算／分類回路８０２内の制御レジスタの内容を設定するために使用される。例えば、制御ビットが００である場合には、制御レジスタの内容が全てゼロ（０）であり、制御ビットが１１である場合には、制御レジスタ（８ビットレジスタであるとする）の内容が０００００１１であるといった具合である。しかしながら、ユーザインタフェース８１６または電力モニタ８１７が起動されたことをインジケータ信号が示す場合には、これらのユニットによって生成されるビット列が制御レジスタへロードされる。すなわち、ユーザインタフェース８１６および電力モニタ８１７から受けた入力は、面積計算／分類回路８０１からの分類結果を取り消す。ピクセル反復子回路８０３およびパースペクティブ分割回路８０４は、その後、小さく且つ形が整った三角形および大きくあるいは形が悪い三角形の両方を処理するために使用される。電力を節約するために反復子セットアップ計算回路８０２を三角形毎に動的に構成できることに加え、この実施形態によれば、グラフィックスの質および性能と、電力要件およびバッテリ寿命とのバランスをとることができる。
【００５８】
面積計算／分類回路８０１は、制御レジスタを除き、面積計算／分類回路８０１と略同様である。ピクセル反復子回路８０３はピクセル反復子回路６０３と同一である。パースペクティブ分割回路８０４はパースペクティブ分割回路６０４と同一である。反復子セットアップ計算回路８０２は反復子セットアップ計算回路６０２と略同様である。仮数レジスタ７００は、更なる精度モードに合わせるように変更されてもよい。そのような変更は、当業者であれば明らかであり、これ以上説明しない。なお、反復子セットアップ計算回路８０２は、図８に示されるように三角形セットアップエンジン８０５の一部とならずに、破線のボックスによって示されるようにラスタライジング／レンダリングエンジン８０６の一部を成すこともできる。
【００５９】
ここで、本発明を実施する３Ｄ  ＧＥ２１４の第５の実施形態の関連する構成要素を示す図９を参照する。図９に示されるように、３Ｄ  ＧＥ２１４は、面積計算／分類回路９０１と、反復子セットアップ計算回路９０２と、反復子セットアップ計算回路９１２と、ピクセル反復子回路９０３と、パースペクティブ分割回路９０４とを含む。また、本実施形態は、ユーザインタフェース９１６および／または電力モニタ９１７に接続された精度選択回路９１５を更に含む。精度選択回路９１５は、３Ｄ  ＧＥ２１４の外部にあっても良く（図９に示されるように）、あるいは、３Ｄ  ＧＥ２１４の内部にあってもよい。すなわち、この実施形態は、図５に示される第２の実施形態と図８に示される第４の実施形態とを組み合わせたものである。図５および図８における構成要素およびそれらの動作の説明は、図９における対応する構成要素に適用することができ、ここでは繰り返さない。しかしながら、第４の実施形態とは異なり、この実施形態では、ユーザインタフェース９１６および電力モニタ９１７は、２つの分類、すなわち、「小さく且つ形が整った三角形」と「大きくあるいは形が悪い三角形」とに個別に対応するように具体的に構成される少なくとも２つの異なる反復子セットアップ計算回路９０２，９１２を制御することができる。反復子セットアップ計算回路９０２，９１２は、１つの分類のために特別に構成されているため、特定の分類のために三角形を処理する際により効果的で且つ効率的となり得る。また、ユーザインタフェース９１６および電力モニタ９１７により、反復子セットアップ計算回路９０２，９１２において（すなわち、２つの分類のそれぞれにおいて）異なる精度モードを選択することができる。
【００６０】
一方が三角形セットアップ計算回路９０２（小さく且つ形が整った三角形のためのもの）に対して割り当てられ且つ他方が三角形セットアップ計算回路９１２（大きく且つ形が悪い三角形のためのもの）に対して割り当てられるように、どの分類が関与しているかを示すように精度選択回路９１５によって生成される更なるインジケータ信号、面積計算／分類回路９０１内の更なる制御レジスタなどとのような幾つかの軽微な変更が必要となる。面積計算／分類回路９０１が三角形の分類を決定すると、三角形頂点情報および属性を処理するために反復子セットアップ計算回路９０２または反復子セットアップ計算回路９１２が使用される。反復子セットアップ計算回路９０２および反復子セットアップ計算回路９１２における仮数ＬＳＢの無効化は、それぞれの制御レジスタによって制御される。面積計算／分類回路は、その分類決定を行なうと、適切な制御レジスタの内容を設定する。ユーザインタフェース９１６または電力モニタ９１７からの入力が受けられると、精度選択回路９１５からのインジケータ信号は、ユーザインタフェース９１６または電力モニタ９１７が起動されたことを示し、その分類に関して（したがって、その反復子セットアップ計算回路に関して）、受けられた入力が指定される。これにより、精度選択回路から生成されたビット列を適切な制御レジスタへと送って、面積計算／分類回路９０１による分類の結果として設定された内容を取り消すことができる。なお、反復子セットアップ計算回路９０２および反復子セットアップ計算回路９１２は、図９に示されるように三角形セットアップエンジン９０５の一部とならずに、破線のボックスによって示されるようにラスタライジング／レンダリングエンジン９０６の一部を成すこともできる。
【００６１】
本発明の幾つかの実施形態では、手持ち式携帯デバイスに適した高い品質および性能の３Ｄグラフィックスアーキテクチャが与えられている。特定の実施形態において本発明を説明してきたが、本発明は、そのような実施形態によって限定されるものと解釈されるべきではなく、むしろ、以下の請求項にしたがって解釈されなければならない。
【図面の簡単な説明】
【００６２】
【図１】例えば本発明を実施する手持ち式携帯デバイス１００の高レベル線図を示している。
【図２】手持ち式携帯デバイス１００のグラフィックス／ディスプレイコントローラ１０７を詳細に示している。
【図３】本発明を実施する３Ｄ  ＧＥ２１４の第１の実施形態の関連する構成要素を示している。
【図４】例えば主要エッジ４１０を有する三角形４００およびラスタライジング／レンダリングプロセスで使用される三角形４００内の多くの走査線を示している。
【図５】本発明を実施する３Ｄ  ＧＥ２１４の第２の実施形態の関連する構成要素を示している。
【図６】本発明を実施する３Ｄ  ＧＥ２１４の第３の実施形態の関連する構成要素を示している。
【図７】例えば高精度モードおよび低精度モードでＬＳＢを有効および無効にするために反復子セットアップ計算回路６０２で実施できる仮数レジスタ７０１を示している。
【図８】本発明を実施する３Ｄ  ＧＥ２１４の第４の実施形態の関連する構成要素を示している。
【図９】本発明を実施する３Ｄ  ＧＥ２１４の第５の実施形態の関連する構成要素を示している。
【図１】
2007514209.tif 000006
【図２】
2007514209.tif 000007
【図３】
2007514209.tif 000008
【図４】
2007514209.tif 000009
【図５】
2007514209.tif 000010
【図６】
2007514209.tif 000011
【図７】
2007514209.tif 000012
【図８】
2007514209.tif 000013
【図９】
2007514209.tif 000014