(57)【要約】      （修正有）【課題】高速でモバイルなアプリケーションはより集積度が高く低消費電力を要求しているので各種の数学的関数を実行するための効率的なアルゴリズムを提供する。【解決手段】多項式近似（例えば２次多項式近似等）を行う単一パイプラインと１またはそれ以上のオペコードにしたがって単一のパイプラインに動作的に結合されたＲＣＰ、ＳＱＲＴ、ＥＸＰまたはＬＯＧの少なくとも１つへ対応する１またはそれ以上のデータテーブルとからなる数学的関数を演算するためのものであって、単一パイプラインは１またはそれ以上のオペコードにしたがってＲＣＰ、ＳＱＲＴ、ＥＸＰまたはＬＯＧの少なくとも１つを演算するために動作可能である方法および装置。【選択図】図１
2008071336.tif 000002
【特許請求の範囲】
【請求項１】
多項式近似を行うための単一パイプラインであってその単一パイプラインは１またはそれ以上のステージからなり、
１またはそれ以上のオペコードにしたがって前記単一パイプラインに接続されるように動作的に結合されたＲＣＰ、ＳＱＲＴ、ＥＸＰまたはＬＯＧの少なくとも１つに対応した少なくとも１つのデータテーブルと
からなり、
各データテーブルは１０００エントリ以下を含み、
前記多項式近似は２次またはそれ以上の多項式を含み、
前記単一のパイプラインは１またはそれ以上のオペコードに従ってＲＣＰ、ＳＱＲＴ，ＥＸＰまたはＬＯＧの少なくとも一つを演算するために動作可能である、
数学的関数の演算装置。
【請求項２】
前記多項式近似は２次多項式近似を含み、前記単一パイプラインは７ステージ以下を有する請求項１記載の装置。
【請求項３】
各ステージは１またはそれ以上のデータテーブルに動作的に結合される請求項１記載の装置。
【請求項４】
各ステージは前記多項式近似の１個またはそれ以上の項を演算するように動作する請求項１記載の装置。
【請求項５】
第１ステージは浮動小数点表示を固定小数点表示に変換するように動作可能である請求項１記載の装置。
【請求項６】
前記第１ステージは前記１またはそれ以上のオペコードにしたがってバイパス関数を行うように構成されている請求項５記載の装置。
【請求項７】
第２ステージは固定小数点表示を浮動小数点表示に変換するために動作可能である請求項１記載の装置。
【請求項８】
前記第２ステージは前記１またはそれ以上のオペコードにしたがってバイパス関数を行うように構成されている請求項７記載の装置。
【請求項９】
電子回路を表わすデータ構造であって、この  電子的回路は、２次多項式近似を行うための単一のパイプラインであってその単一のパイプラインは７ステージ以下を含み、
１またはそれ以上のオペコードにしたがって単一のパイプラインに動作的に結合されるＲＣＰ、ＳＱＲＴ、ＥＸＰまたはＬＯＧの少なくとも１つに対応した１またはそれ以上のデータテーブルと
各データテーブルは１０００エントリ以下を含み、
前記単一のパイプラインは前記１またはそれ以上のオペコードにしたがうＲＣＰ、ＳＱＲＴ、ＥＸＰまたはＬＯＧの少なくとも１つを演算するために動作可能であるもの。
【請求項１０】
前記データ構造は前記電子回路のネットリストを表わす請求項９記載のデータ構造。
【請求項１１】
前記データ構造は前記電子回路の回路レイアウトを含む請求項９記載のデータ構造。
【請求項１２】
２次多項式近似を行う単一のパイプラインであってその単一パイプラインは４ステージ以下を有し、
前記単一のパイプラインに接続された１またはそれ以上のデータテーブルであって各データテーブルは１０００エントリ以下を含むことからなる
ＲＣＰ関数を演算する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は一般にコンピュータシステムの分野にかかり、より具体的にはグラフィックスプロセッサチップに対する演算関数に関する。
【背景技術】
【０００２】
従来グラフィックスプロッセッサチップは高速描画とレンダリングのためにハードウェアとして実行（または実装）される各種の数学的関数を採用している。これらの数学的関数の例として逆数（レシプロカル）関数（“ＲＣＰ”）、逆数平方根関数（“ＳＱＲＴ”）、指数関数、（“ＥＸＰ”）、および対数関数（“ＬＯＧ”）を含む。これらの数学的関数は従来においては異なったアルゴリズムをもつ別の回路ブロックとして実行されている。
【０００３】
たとえば従来における３サイクルＲＣＰ実行において浮動小数点ｘは、最上位ビット（“ＭＳＢ”）部分ｘ０と最下位ビット（“ＬＳＢ”）部分ｘ１との連結として表わされるがここでｘ１＝ｘ−ｘ０である。ｘの逆数に対する主たる演算は仮数部の演算にある。仮数は従来技術においてｆ（ｘ）＝ａ＋ｂ（ｘ−ｘ０）の２つの項の関数として演算されるものであり、ここでａとｂはデータルックアップテーブルである。典型的な例としては、２１ビットの精度以上がグラフィックスプロセッサに対して要求される場合に、この要求された精度を達成するためにデータルックアップテーブルａおよびｂの各々において１６０００エントリ以上が必要である。これは１４ビットｘ０および各々２１４エントリを有するデータルックアップテーブルとに基づいている。かかる大きなデータルックアップテーブルをハードウェア実装するためにはデータルックアップテーブルのサイズに比例した大きなゲート数が必要である。グラフィックプロセッサチップはいくつかの数学的関数のハードウェア実装を含むかもしれない。従来の例において、これらの数学的関数の各々は大きなゲート数を要求し一般的には他の方法と組み合わされる。これらの数学的関数の各々を別々の論理回路および別々の大きなデータルックアップテーブルと一緒に実装することは従来においては一般的な技術である。高速でかつモバイルなアプリケーションはより集積度が高く低消費電力を要求しているので各種の数学的関数を実行するための効率的なアルゴリズムに対する必要性が存在する。
【発明の開示】
【０００４】
広く述べれば、この発明の実施例は統一化（ｕｎｉｆｉｅｄ）されたハードウェア回路と１０００エントリー以下を有するデータルックアップテーブルとを用いて各種の数学的関数を実行するための方法および装置に対して与えることによってこれらの要求が満たされる。この発明は多数の方法で実装され得るものでありそれは方法、システムあるいは装置としてのものを含むものと理解されるべきである。この発明のいくつかの発明性のある実施例が以下に述べられる。
【０００５】
一例においてＲＣＰはモバイルグラフィックチップにおけるベルテックスシェイダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）およびピクセルシェイダ（Ｐｉｘｅｌ  Ｓｈａｄｅｒ）のための浮動小数点における統一化されたハードウェアで実装される。この技術は、２次近似を行う統一化されたハードウェアパイプを使ってＲＣＰ（Ｆ（ｘ）＝１／ｘ）の演算を行うことに基づいている。
【０００６】
Ｆ（ｘ）＝ａ＋ｂ（ｘ−ｘ０）＋Ｃ（ｘ−ｘ１）；
ここでｘは単精度あるいは倍精度の浮動小数点数ｙの仮数部でありｙ＝（ｓｉｇｎ）（２）ｗ（ｘ），−１２６＜＝ｗ＜１２６、および１．０＜＝ｘ＜２．０である。一度Ｆ（ｘ）が演算されると、ＲＣＰ（ｙ）は１／ｙ＝（ｓｉｇｎ）（２）−ｗ（Ｆ（ｘ））として演算される。いくつかの実施例において２次近似６４セグメント（区分）において行われる。６４セグメントの各々の開始値ｘ０と終了値ｘ１は以下のものとして演算される。
【０００７】
ｘ０＝１．０＋ｉ／６４
ｘ１＝１．０＋（ｉ＋１）／６４；
ここでｉは０から６３までの整数である。１．０＜＝ｘ＜２．０およびｘがこれらの６４セグメントの一つであるような任意の数ｘに対して、ｉはｘのＭＳＢ部分を特定のｘ０と一致させることによって決定される。したがってｘの値はｘ０とｘ１の間（ｘ０＜＝ｘ＜ｘ１）及び（ｘ−ｘ０）はｘのＬＳＢ部分である。一度ｉが決定すると、ａ、ｂおよびｃの値は３つの別々のデータルックアップテーブルから決定される。
【０００８】
ａ＝ｔａｂｌｅ［０］［ｉ］
ｂ＝ｔａｂｌｅ［１］［ｉ］
ｃ＝ｔａｂｌｅ［２］［ｉ］；
このＲＣＰは２次近似Ｆ（ｘ）＝ａ＋ｂ（ｘ−ｘ０）＋Ｃ（ｘ−ｘ０）（ｘ−ｘ１）に基づいて演算されてもよい。
【０００９】
他の例においてＳＱＲＴ（Ｆ（ｘ）＝１／ｘ＾（１／２））は異なったデータルックアップテーブルを有する統一化されたハードウェアで実装される。Ｆ（ｘ）が一度演算されると、ＳＱＲＴ（ｙ）は以下の式として演算される。
ｗが偶数の時、１／ｓｑｒｔ（ｙ）＝（ｓｉｇｎ）（２）−ｗ／２（Ｆ（ｘ））
ｗが奇数の時、１／ｓｑｒｔ（ｙ）＝（ｓｉｇｎ）（２）−（ｗ−１）／２（Ｆ（ｘ））
他の例として、ＥＸＰ（Ｆ（ｘ）＝２＾ｘ）は、統一化されたパイプ（パイプライン）の前に、異なったデータルックアップテーブルと、浮動小数点から固定小数点への変換回路とを有する統一化されたハードウェアで実行される。浮動小数点から固定小数点への変換回路はｙを整数ｉｎｔ＿ｙと小数ｆｒａｃ＿ｙへと変換するために前処理を行う。一度Ｆ（ｆｒａｃ＿ｙ）が演算されるとＥＸＰ（ｙ）は２ｙ＝（２ｉｎｔ＿ｙ）（Ｆ（ｆｒａｃ＿ｙ））として演算される。
【００１０】
他の実施例として、ＬＯＧ（Ｆ（ｘ）＝ＬＯＧ２（Ｘ））は、統一化されたハードウェアパイプの後に異なったデータルックアップテーブルと統一化された浮動小数点から固定小数点へ変換回路とを有する統一化されたハードウェアで実行されてもよい。一度Ｆ（ｘ）が演算されると、ＬＯＧ（ｙ）はＬｏｇｙ＝Ｌｏｇ２（ｙ）＝ｗ＋Ｆ（Ｘ）として演算される。浮動小数点から固定小数点への変換回路はそれからＬｏｇｙを浮動小数点へ変換するための後処理を行う。
【００１１】
この発明の例と効果はこの発明の原理をたとえば例示している、添付図面を参照した以下の詳細の説明から明らかになるであろう。
［発明の詳細な説明］
図１はこの発明の実施例にしたがう６ステージの統一化されたハードウェアパイプラインを図示するブロック図である。ここでブロック１０１、ブロック１０３、ブロック１０５、ブロック１０７、ブロック１０９、ブロック１１３はパイプラインのレジスタステージである。ブロック１０２は浮動小数点から固定小数点への変換部である。ブロック１１２は固定小数点から浮動小数点への変換部である。一例においてブロック１１２はＥＸＰ関数を実行するためのオペコード（即ち構成命令、マイクロコード等）にしたがうバイパス回路として構成されてもよい。他の例においてブロック１０２はＬＯＧ関数を実行するための他のオペコード（即ち構成（ｃｏｎｆｉｇｕｒａｔｉｏｎ）命令、マイクロコード等）にしたがってバイパス回路として構成されてもよい。更に他の例として、ブロック１０２とブロック１１２の両方は、ＲＣＰまたはＳＱＲＴ関数を実装することにおいてさらに他のオペコード（即ち構成命令、マイクロコード等）にしたがうバイパス回路として構成されてもよい。いくつかの実施例においてブロック１０４．１０６、１０８、および１１０は別々のデータルックアップテーブルに基づいてＲＣＰ、ＳＱＲＴ、ＥＸＰ，ＬＯＧのような数学的関数を演算するための２次近似の各部分を実行してもよい。たとえばブロック１０４は浮動小点数ｘの仮数部に対応する整数ｉに基づいてｃに対するデータテーブルルックアップを実行する。同様ブロック１０６はｂに対するテーブルルウックアップを実行する。同じパイプラインステージの間にブロック１０６はまたｃ（ｘ−ｘ０）をも演算する。同様にブロック１０８はｂ（ｘ−ｘ０）およびｃ（ｘ−ｘ０）（ｘ−ｘ１）の演算と同様にａに対するデータテーブルルックアップを実行する。ブロック１１０は２次近似を演算するための３つ項の和である。上述の説明は上述に述べられた詳細に限定されるものではなく上述の説明によって容易となる各種の変形や変更も行ってもよい。
【００１２】
図２はこの発明の実施例にしたがう３ステージＲＣＰハードウェアパイプラインを実施するブロック図である。ここでブロック２０１、ブロック２０３、ブロック２０５およびブロック２０７はパイプラインのレジスタステージである。いくつかの実施例においてブロック２０２、２０４および２０６は２次近似の各種の部分を示す。例えばブロック２０２は浮動小数点の仮数部のＭＳＢに対応する整数ｉに基づいて、ｂおよびｃのためのデータテーブルルックアップを実行する。同じパイプラインステージの間にブロック２０２はまた（ｘ−ｘ０）（ｘ−ｘ１）をも演算する。同様にブロック２０４はｂ（ｘ−ｘ０）およびｃ（ｘ−ｘ０）（ｘ−ｘ１）の演算と同様にａに対するデータテーブルルックアップを実行する。ブロック２０６は２次近似を演算するための３つの項の和を示す。上述の記載は上述の詳細なものに制限されるものではなく上述の説明から明らかなような各種の変形や変更も可能である。
【００１３】
図３はこの発明の実施例に従う各種のデータルックアップテーブルを演算するための例示的なアルゴリズムを示すフローチャートである。ここで例示的なアルゴリズムはＳＱＲＴに対するデータテーブルのａ，ｂおよびｃを演算するために例示される。この例において、テーブル［０］［ｉ］＝ａ，テーブル［１］［ｉ］＝ｂおよびテーブル［２］［ｉ］＝ｃである。これらの３個の線形方程式は３個の値ａ，ｂおよびｃを演算するために使われる。これらの３個の式はセグメント（３０１）の開始点（すなわちｘ）、中点（すなわちｘ＿５）および終点（すなわちｘ１）をはじめに演算することによって解かれる。ブロック３０２および３０３は浮動小数点フォーマットにおいてａ，ｂおよびｃを演算する。ブロック３０４はａ，ｂおよびｃを整数フォーマットに変換する。ブロック３０５は丸め込みを行いそして最終値を発生する。他の例としてブロック３０２における“ｓｑｒｔ”関数はＲＣＰに対するデータテールａ，ｂおよびｃを演算するためのアルゴリズムを採用するために逆数関数によって置き換えられる。他の例においてはブロック３０２における“ｓｑｒｔ”関数はこれらの他の関数に対するデータテーブルａ，ｂおよびｃを演算するためのアルゴリズムを採用するために他の関数（例えばＥＸＰ、ＬＯＧ、等）によって置き換えてもよい。上述の説明は詳細な上述の説明に限定されるものではなくて上述の説明によって明らかにされるような各種の変形や変更はされてもよい。
【００１４】
この発明の上述された実施例は例示的な記述として与えられている。それらはこの発明を述べられた詳細な形態に制限する意図ではない。ことにここに述べられた発明の関数的な実行はハードウェア、ソフトウェア、ファームフェアおよびまたは入手可能な関数コンポーネントまたはビルディングブロックにおいて等価的に実現され、そのネットワークはまた有線でも無線でも有線無線の組み合わせでもよい。他の変形例や実施例は上述の教示に照らして可能であり、この発明の範囲は詳細な説明によって限定されるものではなくむしろ以下のクレームによって限定されるということが意図されている。
【図面の簡単な説明】
【００１５】
この発明の上述した特徴、効果、目的が達成されるような態様が詳細に理解されるようにこの発明のより具体的な説明が、上記に簡単に要約されたように、添付図面において図示される実施例を参照することによってなされてもよい。
【００１６】
しかしながら、添付図面はこの発明の単なる典型的な実施例が図示されているだけでありその権利範囲を制限するように考えられるべきではないということを注意されるべきである。なぜならこの発明は他の同様に有効な実施例も認めているからである。
【００１７】
【図１】図１はこの発明の実施例にしたがう６ステージの統一化されたハードウェアパイプラインを図示するブロック図である。
【図２】図２はこの発明の一実施例に従う３ステージのＲＣＰハードウェアパイプラインを示すブロック図である。
【図３】図３はこの発明の実施例にしたがう各種の例示的データルックアップテーブルを演算するためのアルゴリズムを図示するフローチャートである。
【図１】
2008071336.tif 000003
【図２】
2008071336.tif 000004
【図３】
2008071336.tif 000005
【外国語明細書】
2008071336.tif 000006
2008071336.tif 000007
2008071336.tif 000008
2008071336.tif 000009
2008071336.tif 000010
2008071336.tif 000011
2008071336.tif 000012
2008071336.tif 000013
2008071336.tif 000014
2008071336.tif 000015
2008071336.tif 000016
2008071336.tif 000017
【図１】
2008071336.tif 000018
【図２】
2008071336.tif 000019
【図３】
2008071336.tif 000020