(57)【要約】【課題】  本発明は，複数のプログラムを１つのプロセッサで同時に処理することができる３次元コンピュータグラフィックに特化したプロセッサを提供することを目的とする。【解決手段】  本発明のプロセッサの制御ユニット１１は，ｎ個のプロセスコントローラ２１を含む。そして，本発明のプロセッサの実行ユニット１３ａ〜１３ｈは，ｎ個のプロセスコントローラ２１に対応したレジスタ領域を有する。よって，本発明は，複数のプログラムを１つのプロセッサで同時に処理することができる３次元コンピュータグラフィックに特化したプロセッサを提供することができる。【選択図】図１
2010250625.tif 000002
【特許請求の範囲】
【請求項１】
制御ユニット（１１）と，複数の実行ユニット（１３ａ〜１３ｈ）と，配線（１５）とを含む３次元コンピュータグラフィック用プロセッサ（１）であって，
前記制御ユニット（１１）は，
デコーダ（１７），プログラムインターフェイス（１９），及びｎ個のプロセスコントローラ（２１）を含み，ここでｎは２以上の整数であり，
前記デコーダ（１７）は，
１又は複数の指令を同時にデコードでき，前記デコードした指令を前記プログラムインターフェイス（１９）へ出力し，
前記プログラムインターフェイス（１９）は，
前記デコーダ（１７）がデコードした指令を，１クロックごとに前記ｎ個のプロセスコントローラ（２１）のいずれかに出力し，
前記それぞれのプロセスコントローラ（２１）は，
前記デコーダ（１７）がデコードした指令に基づいて，前記複数の実行ユニット（１３ａ〜１３ｈ）に対する制御信号を出力し，
前記複数の実行ユニット（１３ａ〜１３ｈ）のそれぞれの実行ユニットは，演算処理部（２３）と，レジスタ（２５）と，２命令以上の命令を同時に実行するためのデータ経路制御部（２７）とを有し，
前記演算処理部（２３）は，
複数の演算回路（３１，３３，３５，３７，３９）を含み，ここで前記複数の演算回路は乗算器（３１）及び加算器（３３）を含み，
前記レジスタ（２５）は，
複数のレジスタアドレスにより分割された複数のレジスタ領域を含み，
前記複数のレジスタ領域は，それぞれ
前記ｎ個のプロセスコントローラ（２１）のいずれかに対応したレジスタ領域であり， 
前記配線（１５）は，
前記制御ユニット（１１）と前記複数の実行ユニット（１３ａ〜１３ｈ）とを接続するものであり，
前記制御信号は，
処理を行うレジスタ領域を指定するためのレジスタアドレスと，前記演算処理部（２３）で処理を行う演算に関する情報とを含み，
前記実行ユニット（１３ａ〜１３ｈ）は，
前記制御信号に含まれるレジスタアドレスに基づいて用いるレジスタ領域を決定し，
前記制御信号に含まれる前記演算に関する情報に基づいて，あるクロックにおいて用いる前記演算処理部（２３）内の演算回路（３１，３３，３５，３７，３９）を決定し，
前記データ経路制御部（２７）は，
前記あるクロックにおいて用いる演算回路に関する情報を用いて，あるクロックにおいて用いる演算回路を決定し，これにより２命令以上の命令により用いられる演算回路が重複する事態を防止する，
３次元コンピュータグラフィック用プロセッサ。
【請求項２】
レジスタ（２５）は，
入出力レジスタ（４３）及びテクスチャレジスタ（４５）を含み，
前記入出力レジスタ（４３）の容量は，前記テクスチャレジスタ（４５）の容量より大きい，
請求項１に記載の３次元コンピュータグラフィック用プロセッサ。
【請求項３】
レジスタ（２５）は，
テンポラリレジスタ（４７ａ，４７ｂ）及び中継レジスタ（４９）を含み，
前記テンポラリレジスタ（４７ａ，４７ｂ）は，演算に用いる各種情報を一時的に記憶するユニットであって，前記ｎ個のプロセスコントローラ（２１）のいずれかに対応したレジスタ領域に分割されており，
前記中継レジスタ（４９）は，演算に用いる各種情報を一時的に記憶するユニットであって，前記ｎ個のプロセスコントローラ（２１）に対応してレジスタ領域が分割されていないレジスタ領域を有する，
請求項１に記載の３次元コンピュータグラフィック用プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，３次元コンピュータグラフィックに特化したプロセッサに関する。より具体的に説明すると，本発明は複数のプログラムを１つのプロセッサで同時に処理することができる３次元コンピュータグラフィック用プロセッサに関する。
【背景技術】
【０００２】
特表２００８−５１２７７１号公報には，グラフィックス処理サブシステムが開示されている。このシステムは，プログラマブルなプロセッサを用いる。そして，このシステムは，パフォーマンス要求に応じてプロセッサをスケールアップ又はスケールダウンすることができる。しかしながら，このシステムでは，プロセッサの制御機構が大掛かりとなり，プロセッサの動作管理にも多くの時間がかかる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００８−５１２７７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
そこで本発明は，複数のプログラムを１つのプロセッサで同時に処理することができる３次元コンピュータグラフィックに特化したプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の３次元コンピュータグラフィック用プロセッサ１は，制御ユニット１１と，複数の実行ユニット１３ａ〜１３ｈと，配線１５とを含む。制御ユニット１１は，デコーダ１７，プログラムインターフェイス１９，及びｎ個のプロセスコントローラ２１を含む。ここでｎは２以上の整数である。そして，デコーダ１７は，１又は複数の指令を同時にデコードできる。また，デコーダ１７は，デコードした指令をプログラムインターフェイス１９へ出力する。プログラムインターフェイス１９は，デコーダ１７がデコードした指令を，１クロックごとにｎ個のプロセスコントローラ２１のいずれかに出力する。それぞれのプロセスコントローラ２１は，デコーダ１７がデコードした指令に基づいて，複数の実行ユニット１３ａ〜１３ｈに対する制御信号を出力する。
【０００６】
複数の実行ユニット１３ａ〜１３ｈのそれぞれの実行ユニットは，演算処理部２３と，レジスタ２５と，２命令以上の命令を同時に実行するためのデータ経路制御部２７とを有する。演算処理部２３は，複数の演算回路３１，３３，３５，３７，３９を含む。複数の演算回路は少なくとも乗算器３１及び加算器３３を含む。レジスタ２５は，複数のレジスタアドレスにより分割された複数のレジスタ領域を含む。複数のレジスタ領域は，それぞれｎ個のプロセスコントローラ２１のいずれかに対応したレジスタ領域である。配線１５は，制御ユニット１１と複数の実行ユニット１３ａ〜１３ｈとを接続するものである。制御信号は，処理を行うレジスタ領域を指定するためのレジスタアドレスと，演算処理部２３で処理を行う演算に関する情報とを含む。実行ユニット１３ａ〜１３ｈは，制御信号に含まれるレジスタアドレスに基づいて用いるレジスタ領域を決定する。実行ユニット１３ａ〜１３ｈは，制御信号に含まれる演算に関する情報に基づいて，あるクロックにおいて用いる演算処理部２３内の演算回路３１，３３，３５，３７，３９を決定する。データ経路制御部２７は，あるクロックにおいて用いる演算回路に関する情報を用いて，あるクロックにおいて用いる演算回路を決定し，これにより２命令以上の命令により用いられる演算回路が重複する事態を防止する。
【発明の効果】
【０００７】
本発明のプロセッサの制御ユニット１１は，ｎ個のプロセスコントローラ２１を含む。そして，本発明のプロセッサの実行ユニット１３ａ〜１３ｈは，ｎ個のプロセスコントローラ２１に対応したレジスタ領域を有する。
【０００８】
よって，本発明は，複数のプログラムを１つのプロセッサで同時に処理することができる３次元コンピュータグラフィックに特化したプロセッサを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は，本発明の３次元コンピュータグラフィック用プロセッサのブロック図である。
【図２】図２は，本発明の実行ユニットの例を示すブロック図である。
【図３】図３は，本発明の制御ユニットの例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下図面に従って本発明の実施例について説明する。本発明は以下説明する実施例に基づいて当業者に自明な範囲での設計変更を含む。図１は，本発明の３次元コンピュータグラフィック用プロセッサのブロック図である。図２は，本発明の実行ユニットの例を示すブロック図である。図３は，本発明の制御ユニットの例を示すブロック図である。
【００１１】
図１に示されるように，３次元コンピュータグラフィック用プロセッサ１は，制御ユニット１１と，複数の実行ユニット１３ａ〜１３ｈと，配線１５とを含む。３次元コンピュータグラフィック用プロセッサ１は，３次元グラフィックをコンピュータに表示させるためのプロセッサである。このプロセッサは，３次元コンピュータグラフィックスに関するさまざまな演算処理を行う装置である。このプロセッサは，コンピュータ，ゲーム機，又は携帯端末に実装される。
【００１２】
制御ユニット１１は，デコーダ１７，プログラムインターフェイス１９，及びｎ個のプロセスコントローラ２１を含む。ここでｎは２以上の整数である。ｎの値は２以上８以下が好ましい。なお，図１においてｎは４である。デコーダ１７は，図示しないバスにより様々な回路や要素と接続される。そして，デコーダ１７は，１又は複数の指令を同時にデコードできる。本発明のプロセッサは，デコーダとして公知のデコーダを用いることができる。デコーダ１７は，デコードした指令をプログラムインターフェイス１９へ出力する。プログラムインターフェイス１９は，デコーダ１７がデコードした指令を，１クロックごとにｎ個のプロセスコントローラ２１のいずれかに出力する。それぞれのプロセスコントローラ２１は，デコーダ１７がデコードした指令に基づいて，複数の実行ユニット１３ａ〜１３ｈに対する制御信号を出力する。
【００１３】
図２に示されるように，それぞれの実行ユニット１３ａ〜１３ｈは，演算処理部２３と，レジスタ２５と，２命令以上の命令を同時に実行するためのデータ経路制御部２７とを有する。
【００１４】
演算処理部２３は，複数の演算回路３１，３３，３５，３７，３９を含む。複数の演算回路は少なくとも乗算器３１及び加算器３３を含む。図２の例では，演算回路が，さらにマルチ演算器３５，４入力加算器３７及び逆算器３９を含む。マルチ演算器３５は，様々な演算処理を行うことができる演算器である。図２のマルチ演算器３５は，ｆｌｏｏｒ演算器，ｍａｘ演算器，及びｍｉｎ演算器が含まれる。ｍａｘ演算器は，入力された値のうち最も大きな値を出力する演算器である。一方，ｍｉｎ演算器は，入力された値のうち最も小さな値を出力する演算器である。逆算器は，入力された値ｘの逆数１／ｘを求めて出力する演算器である。
【００１５】
レジスタ２５は，複数のレジスタアドレスにより分割された複数のレジスタ領域を含む。複数のレジスタ領域は，それぞれｎ個のプロセスコントローラ２１のいずれかに対応したレジスタ領域である。このレジスタ領域は，論理的又は仮想的に各プロセスコントローラに分割されている。これにより各プロセスコントローラに応じた作業領域が確保されることとなる。
【００１６】
図２の例では，実行ユニット１３が，定数レジスタ４１，入出力レジスタ４３，テクスチャレジスタ４５，テンポラリレジスタ４７ａ，４７ｂ，中継レジスタ４９及びアドレスレジスタ５１を有している。そして，これらは仮想的にｎの値に対応した４つの領域に分割されている。
【００１７】
定数レジスタ４１は，各種演算に用いる定数を記憶するユニットである。入出力レジスタ４３は，実行ユニットに入力される情報や実行ユニットから出力される情報を一時的に記憶するユニットである。本発明では，入出力レジスタを用いるクロックを明確に把握できる。そこで，本発明のプロセッサは，入出力レジスタの情報が記憶されていないタイミングにおいて，入出力レジスタを作業空間又は出力待ちデータの保存領域として利用する。このため入出力レジスタの容量を通常の入出力レジスタの容量に比べて大きくする。本発明のプロセッサは，たとえば，テクスチャレジスタ４５の容量よりも入出力レジスタの容量を大きくする。具体的には，本発明のプロセッサでは，入出力レジスタ４３の容量をテクスチャレジスタ４５の容量の１．５倍以上４倍以下とする。
【００１８】
テンポラリレジスタ４７ａ，４７ｂ及び中継レジスタ４９は，演算に用いる各種情報を一時的に記憶するユニットである。中継レジスタは，特にデータの生存時間が１クロックのみでよいような値を格納するために用いられる。中継レジスタは，主に一連の複雑な演算処理を行う際の途中結果等，あるクロックでのみ使われて再利用されないような値を格納するためのものである。中継レジスタ４９はフリップフロップ動作を行う。たとえば，２命令が同時に発行され，これを処理する場合，通常であれば２入力１出力の演算器を同時に動かすためにレジスタ群が４つの出力を持つ必要がある。一方，入出力レジスタや定数レジスタが使われる頻度は比較的低い。このため，通常であればテンポラリレジスタに４つの出力を持たせたいと考えられる。一方，テンポラリレジスタは高コストであるため，テンポラリレジスタのポート数を増やすのは容易ではない。そのため，本発明の好ましい態様では，出力ポート数を稼ぐために中継レジスタを設けている。中継レジスタ４９は「アドレスが０しかないテンポラリレジスタ」といえる。すなわち，中継レジスタ４９は，アドレス領域がｎ個に分割されていないレジスタである。
【００１９】
データ経路制御部２７は，スウィズルユニット５３ａ〜５３ｄを含む。すなわち，各種レジスタ２５から出力された情報を適切に処理して，適切な演算回路（３１，３３，３５，３７，３９）へと導く。スウィズルユニットは，演算処理を行う前に各種の演算処理を行うためのユニットである。スウィズルユニットは，たとえば，入力されたベクタの位置を入れ替える演算処理や，符号を入れ替える演算処理を行う。
【００２０】
図示しないループレジスタ（ＬＲＥＧ）からの情報がアドレスレジスタ５１に入力される。そして，アドレスレジスタ５１に入力された情報は，レジスタ２５の指定された作業領域へと伝えられる。一方，各種情報が入出力レジスタ４３へ入力される。この際，入出力レジスタ４３の指定された領域に記憶される。また，テクスチャインターフェースから伝えられたテクスチャ情報がテクスチャレジスタ４５に入力される。この際，テクスチャレジスタ４５の指定された領域に記憶される。
【００２１】
各レジスタが一時的に記憶した情報は，データ経路制御部２７により適切なスウィズルユニット５３ａ〜５３ｄへと出力される。スウィズルユニット５３ａ〜５３ｄへと出力された情報は，スウィズルユニット５３ａ〜５３ｄにより必要なスウィズル演算処理を施される。
【００２２】
スウィズルユニット５３ａ〜５３ｄにより必要なスウィズル演算処理を施されたデータは，適切な演算回路３１，３３，３５，３７，３９やテクスチャインターフェース５５へと出力される。演算回路３１，３３，３５，３７，３９により適切な演算が施されたデータは，スイッチユニット５７により適切なレジスタへと転送される。演算が終わったデータは入出力レジスタ４３へ転送され，出力される。
【００２３】
また，加算器３３において所定の情報が加算されたデータは，テクスチャインターフェース５５を介して出力される。
【００２４】
図２に示す実行ユニットは例示であり様々な改変を施して用いることができる。そのような実行ユニットの例は，４入力加算器３７及び逆算器３９に替えてスカラー演算器を用いたものである。
【００２５】
図３を用いて制御ユニットについて説明する。図３に示されるように制御ユニットは，フラグメントコントローラ７３，プログラムＲＡＭ（ランダムアクセスメモリ）７５，デコーダ７７，定数レジスタ７９，及びスウィズルレジスタ８１，を有する。
【００２６】
図３における実行ユニット７１，８３は，図１における実行ユニット１３ａ〜１３ｈに対応したものである。
【００２７】
フラグメントコントローラ７３は，プロセスコントローラとして機能する。すなわち，この実施例では，１つのプロセスコントローラがｎ個の仮想的なフラグメントコントローラ７３が存在するかのように振舞ってもよい。また，ｎ個のフラグメントコントローラがｎ個のプロセスコントローラとして機能してもよい。これらのフラグメントコントローラは，デコーダ７７がデコードした情報に基づいた制御指令を，図示しないインターフェイスを介して，実行ユニット８３へ伝える。
【００２８】
プログラムＲＡＭ７５は，デコーダがデコードした指令を１クロック毎にｎ個のフラグメントコントローラ７３のいずれかがへ出力するように，デコーダを制御する。すると，プログラムインターフェイスが，デコーダがデコードした指令を，１クロックごとに前記ｎ個のプロセスコントローラのいずれかに出力するように機能する。
【００２９】
デコーダ７７は，入力された情報を復号化するためのユニットである。
【００３０】
定数レジスタ７９は，演算処理に用いられる定数を記憶するユニットである。そして，デコーダがデコードした制御指令に基づいて所定の定数を実行ユニット８３へと出力する。
【００３１】
スウィズルレジスタ８１は，スウィズル５３ａ〜５３ｄ又はスウィズル５３ａ〜５３ｄ及び演算処理部２３における演算経路に関する情報を記憶するためのユニットである。デコーダがデコードした制御指令に基づいて実行ユニット８３における演算処理に関する情報を出力する。
【００３２】
たとえば，実行ユニット７１から出力された情報は，フラグメントコントローラ７３に入力する。フラグメントコントローラ７３に入力した情報の一部は，次の実行ユニット８３へと出力される。一方，フラグメントコントローラ７３に入力した情報の残りは，プログラムＲＡＭ７５及びデコーダ７７へと出力される。プログラムＲＡＭ７５は，デコーダがデコードした指令を１クロック毎にｎ個のフラグメントコントローラ７３のいずれかがへ出力するように，デコーダを制御する指令をデコーダへ出力する。デコーダがデコードした指令は，プログラムインターフェイスを介して，１クロックごとに前記ｎ個のプロセスコントローラのいずれかに出力される。
【００３３】
定数レジスタ７９は，デコーダがデコードした制御指令に基づいて所定の定数を実行ユニット８３へと出力する。スウィズルレジスタ８１は，デコーダがデコードした制御指令に基づいて実行ユニット８３における演算処理に関する情報を出力する。
【００３４】
配線１５は，制御ユニット１１と複数の実行ユニット１３ａ〜１３ｈとを接続するものである。制御信号は，処理を行うレジスタ領域を指定するためのレジスタアドレスと，演算処理部２３で処理を行う演算に関する情報とを含む。実行ユニット１３ａ〜１３ｈは，制御信号に含まれるレジスタアドレスに基づいて用いるレジスタ領域を決定する。実行ユニット１３ａ〜１３ｈは，制御信号に含まれる演算に関する情報に基づいて，あるクロックにおいて用いる演算処理部２３内の演算回路３１，３３，３５，３７，３９を決定する。データ経路制御部２７は，あるクロックにおいて用いる演算回路に関する情報を用いて，あるクロックにおいて用いる演算回路を決定し，これにより２命令以上の命令により用いられる演算回路が重複する事態を防止する。
【産業上の利用可能性】
【００３５】
本発明は，３次元コンピュータグラフィック用プロセッサに関する。よって，本発明は，３次元グラフィックを表示するコンピュータ，ゲーム機，及び携帯端末用の半導体チップ産業などにおいて利用されうる。
【符号の説明】
【００３６】
１      ３次元コンピュータグラフィック用プロセッサ
１１    制御ユニット
１３ａ〜１３ｈ    実行ユニット
１５    配線
１７  デコーダ
１９  プログラムインターフェイス
２１  プロセスコントローラ
２３  演算処理部
２５  レジスタ
２７  データ経路制御部
３１  乗算器
３３  加算器
３５  マルチ演算器
３７  ４入力加算器
３９  逆算器
４３  入出力レジスタ
４５  テクスチャレジスタ
【図１】
2010250625.tif 000003
【図２】
2010250625.tif 000004
【図３】
2010250625.tif 000005