(57)【要約】  本グラフィックスプロセッサは、画素パケットを処理するためのスカラ算術演算を行うことのできるプログラマブル算術論理演算装置（ＡＬＵ）段を有する。画素パケット内のオペランドは、ダイナミックレンジを改善するためにＳ１．８形式でフォーマット設定されてもよく、異なるデータ形式でフォーマット設定されてもよい。グラフィックスプロセッサは、構成可能なグラフィックスパイプラインとして実施されてもよい。一実装形態では、パイプラインを通る画素パケットのプロセスフローが、ホストからのコマンドに応答して再構成され得るようにするために、分配器がグラフィックスパイプラインの要素を結合する。各画素は、偶数画素または奇数画素に割り当てられ、次いで、奇数と偶数の画素の画素パケットがＡＬＵ待ち時間を引き受けるようにインターリーブされてもよい。【選択図】図３
2007538319.tif 000002
【特許請求の範囲】
【請求項１】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも１つの画素属性を識別するペイロード情報を含み、前記画素パケットに対して実行されるべき少なくとも１つの命令のシーケンスを識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
少なくとも１つのプログラマブル算術論理演算装置（ＡＬＵ）を含む、前記画素パケットを処理するＡＬＵ段であり、各ＡＬＵが、対応する現在の命令を有する入力画素パケットに対して実行される少なくとも１つの可能なスカラ算術演算の組を有するようにプログラムされている前記ＡＬＵ段と
を備え、グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行される、グラフィックスプロセッサ。
【請求項２】
ラスタライズされるべきプリミティブの頂点を変換し、セットアップする少なくとも１つの段と、
スカラ算術演算のシーケンスとして表現され得るグラフィックス操作を用いて、処理されるべき各画素ごとに画素パケットの少なくとも１つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段と、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパと、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段と、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置（ＡＬＵ）を備えるＡＬＵ段であり、各ＡＬＵが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ＡＬＵが、受け取った画素パケットの行から少なくとも１つのオペランドを読み取り、前記少なくとも１つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の画素属性レジスタの更新の少なくとも一方を実行する前記ＡＬＵ段と、
前記複数のＡＬＵから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と
を具備し、前記グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行される、グラフィックスプロセッサ。
【請求項３】
グラフィックスソフトウェアモジュールを有する中央処理装置と、
前記グラフィックスソフトウェアモジュールからの頂点情報、およびプログラマブルグラフィックスプロセッサの各段をプログラムするプログラミング命令を受け取るプログラマブルグラフィックスプロセッサであって、
前記グラフィックスソフトウェアモジュールからの命令に応答して、処理されるべき各画素ごとに複数の画素パケットを生成するラスタ段であり、各画素パケットが、処理されるべき少なくとも１つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも１つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段、および
前記画素パケットを処理するように構成されている複数のプログラマブル算術論理演算装置（ＡＬＵ）を含むＡＬＵ段であり、各ＡＬＵが、前記グラフィックスソフトウェアモジュールによって、受け取った画素パケットから選択されたオペランドを読み取り、結果を生成するために現在の命令に応答してスカラ算術演算を実行し、前記結果を用いた画素属性レジスタの更新と前記結果の一時的な値としての格納の少なくとも一方を実行するように割り当てられる前記ＡＬＵ段
を備える前記プログラマブルグラフィックスプロセッサと
を具備し、前記各画素に対してグラフィックス処理機能を実行するために、前記複数の画素パケットに対してスカラ算術演算のシーケンスを実行するグラフィックスシステム。
【請求項４】
ホストがグラフィックスコアのレジスタをプログラムするためのレジスタインターフェースと、
ホストが前記グラフィックスコアとやりとりするためのホストインターフェースと、
前記グラフィックスコアがデータを読み書きするためのメモリインターフェースと、
前記グラフィックスコア内に配置されたプログラマブルグラフィックスプロセッサであって、
ラスタライズされるべきプリミティブの頂点をセットアップし、変換する少なくとも１つの段、
スカラ算術演算のシーケンスとして表現され得るグラフィックス操作を用いて処理されるべき各画素ごとに画素パケットの少なくとも１つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも１つの画素属性を識別するペイロード情報を含み、各行が、前記行の前記各画素パケットに対して実行されるべき少なくとも１つの命令を識別する関連付けられた情報を有する前記ラスタ段、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパ、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置（ＡＬＵ）を備えるＡＬＵ段であり、各ＡＬＵが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ＡＬＵが、受け取った画素パケットの行から少なくとも１つのオペランドを読み取り、前記少なくとも１つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の属性レジスタの更新の少なくとも一方を実行する前記ＡＬＵ段、および
前記複数のＡＬＵから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段
を備える前記プログラマブルグラフィックスプロセッサと
を具備し、前記グラフィックス処理機能を実行するために前記複数の画素パケットに対して算術演算のシーケンスが実行される組込みプロセッサ。
【請求項５】
画素に対して実行されるべき少なくとも１つのグラフィックス機能について、前記少なくとも１つのグラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
前記画素の複数の画素パケットを生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部を含み、前記複数の画素パケットが関連付けられた命令シーケンスを有する前記ステップと、
少なくとも１つの算術論理演算装置（ＡＬＵ）において、前記画素パケットからオペランドを読み取るステップと、
前記少なくとも１つのＡＬＵにおいて、前記少なくとも１つのグラフィックス機能を実施するために前記スカラ算術演算のシーケンスを実行する前記命令シーケンスに従ってスカラ算術演算を実行するステップと
を含む、画素に対してグラフィックス処理操作を実行する方法。
【請求項６】
画素に対して実行されるべきグラフィックス機能について、前記グラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
前記画素が連続するクロックサイクルで処理されるように画素パケットの少なくとも１つの行を生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部のための少なくとも１つのフィールドを含み、前記少なくとも１つの行が関連付けられた命令シーケンスを有する前記ステップと、
複数の算術論理演算装置（ＡＬＵ）のそれぞれにおいて、割り当てられたオペランドを読み取るステップであり、前記オペランドの少なくとも１つが、画素パケットの行内の画素パケットから読み取られるオペランドに対応する前記ステップと、
前記各ＡＬＵにおいて、前記グラフィックス機能を実施するための前記スカラ算術演算のシーケンスを実行する前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行するステップと
を含む、画素に対してグラフィックス処理操作を実行する方法。
【請求項７】
画素パケットの行から選択されたオペランドを読み取り、前記画素パケットの行に関連付けられた選択された現在の命令に応答して選択されたスカラ算術演算を実行するように複数の算術論理演算装置（ＡＬＵ）をプログラムするステップと、
画素に対して実行されるべき少なくとも１つのグラフィックス操作について、前記画素の属性の一部に対して実行されるべき少なくとも１つの対応するスカラ算術演算を識別するステップと、
前記画素の画素パケットの行を生成するステップであり、各画素パケットが、少なくとも１つのオペランドとして処理されるべき前記画素に関連付けられた少なくとも１つの属性のフィールドを含み、前記画素パケットが、実行されるべきスカラ算術演算のシーケンスを示す関連付けられた現在の命令を有する前記ステップと、
前記ＡＬＵにおいて、前記画素パケットの行内の前記選択されたオペランドを読み取り、前記関連付けられた現在の命令に対応する前記選択されたスカラ算術演算を実行するステップと
を含む、グラフィックス処理操作を実行する方法。
【請求項８】
画素に対して実行されるべき少なくとも１つのグラフィックス機能について、前記少なくとも１つのグラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算を識別するステップと、
処理されるべき前記画素の画素パケットの少なくとも１つの行を生成するステップであり、各画素パケットが、オペランドとして処理されるべき画素属性の一部のための少なくとも１つのフィールドを含み、前記少なくとも１つの行が関連付けられた命令シーケンスを有する前記ステップと、
複数の算術論理演算装置（ＡＬＵ）のそれぞれにおいて、割り当てられたオペランドを読み取るステップであり、前記オペランドの少なくとも１つが、画素パケットの行内の画素パケットから読み取られるオペランドに対応する前記ステップと、
前記各ＡＬＵにおいて、前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行する前記ステップと、
［０，１］の範囲にある結果を必要とする選択されたスカラ算術演算について、対応する画素パケットのオペランドを、８ビットの小数成分を有する［−２，＋２）の範囲にあるオペランドの２進数表現に対応するＳ１．８形式でフォーマット設定し、前記選択されたスカラ算術演算の結果を［０，１］の範囲にクランプするステップと、
少なくとも１つの他のスカラ算術演算について、対応する画素パケットを異なるデータ形式でフォーマット設定するステップと
を含む、画素に対して、グラフィックス処理操作を実行する方法。
【請求項９】
画素の色成分に対して実行されるべき第１のグラフィックス機能について、前記第１のグラフィックス機能を実施するための第１のスカラ算術演算のシーケンスを識別するステップであり、前記第１のグラフィックス機能が、スカラ算術演算が［０，１］の範囲にクランプされた結果を有することを必要とする前記ステップと、
画素に関連付けられたテクスチャに対して実行されるべき第２のグラフィックス機能について、前記第２のグラフィックス機能を実施するための第２のスカラ算術演算のシーケンスを識別するステップと、
前記画素の画素パケットの少なくとも１つの行を生成するステップであり、各画素パケットが、少なくとも長さ１６ビットの固定ビットサイズを有し、オペランドとして処理されるべき画素属性の一部のための少なくとも１つのフィールドを含み、前記少なくとも１つの行が関連付けられた命令シーケンスを有する前記ステップと、
前記第１のグラフィックス機能と関連付けられた各画素パケットごとに、Ｓ１．８形式で少なくとも２つの色成分をパックするステップであり、前記Ｓ１．８形式が、８ビットの小数成分を有する［−２，＋２）の範囲にあるオペランドの２進数表現に対応する前記ステップと、
前記第２のグラフィックス機能と関連付けられた各画素パケットごとに、８を上回るビット数を必要とする単一の高精度テクスチャをパックするステップと、
複数の算術論理演算装置（ＡＬＵ）のそれぞれにおいて、割り当てられたオペランドを読み取り、前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行するステップと
を含み、前記第１のグラフィックス機能では、色成分が、前記Ｓ１．８形式のオペランドとして選択され、結果が［０，１］の範囲にクランプされ、前記第２のグラフィックス機能では、前記テクスチャが、８を上回るビット数の精度を有する形式のオペランドとして選択される、画素に対して、グラフィックス処理操作を実行する方法。
【請求項１０】
ラスタライズされるべきプリミティブの頂点をセットアップし、変換する少なくとも１つの段と、
スカラ算術演算のシーケンスとして表現され得る各グラフィックス操作ごとに処理されるべき各画素ごとに画素パケットの少なくとも１つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段と、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパと、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段と、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置（ＡＬＵ）を備えるＡＬＵ段であり、各ＡＬＵが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ＡＬＵが、受け取った画素パケットの行から少なくとも１つのオペランドを読み取り、前記少なくとも１つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の画素パケットの更新の少なくとも一方を実行する前記ＡＬＵ段と、
前記複数のＡＬＵから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と
を具備し、前記グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行され、前記ラスタ段が、第１の種類のスカラ算術演算の画素パケットを、８ビットの小数成分を有する［−２，＋２）の範囲にあるオペランドの２進数表現に対応するＳ１．８形式でフォーマット設定し、各ＡＬＵが、結果を［０，１］の範囲にクランプする前記第１の種類のスカラ演算を処理し、前記ラスタ段が、第２の種類のスカラ算術演算の画素パケットを、８を上回るビット数の精度を必要とする形式でフォーマット設定するグラフィックスプロセッサ。
【請求項１１】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも１つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも１つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
複数のプログラマブル算術論理演算装置（ＡＬＵ）を含む、前記画素パケットを処理するＡＬＵ段であり、各ＡＬＵが、対応する現在の命令コマンドを有する入力画素パケットに対して実行される少なくとも１つの可能な算術演算の組を有する前記ＡＬＵ段と、
前記画素パケットのためのデータをフェッチするデータフェッチ段と、
前記ＡＬＵ段から受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と、
前記ＡＬＵ段、前記データフェッチ段、および前記データ書込み段のそれぞれの入力に結合されている第１の分配器と、
前記ＡＬＵ段、前記データフェッチ段、および前記データ書込み段のそれぞれの出力に結合されている第２の分配器と
を備え、前記第１の分配器および前記第２の分配器が、ホストからのコマンドに応答して、前記データフェッチ段、前記ＡＬＵ段、および前記ＡＬＵ書込み段を通る画素パケットのプロセスフローを再構成するように適合されているグラフィックスプロセッサ。
【請求項１２】
画素パケットを生成するラスタライザと、画素パケットのためのデータをフェッチするデータフェッチ段と、画素パケットに対してスカラ算術演算を実行する少なくとも１つのＡＬＵを有するＡＬＵ段と、画素データを書き込むデータ書込み段と、前記データフェッチ段、前記データ書込み段、および前記ＡＬＵ段を結合する分配器とを有するグラフィックスパイプラインを動作させる方法であって、
第１のコマンドに応答して、前記分配器を、前記データフェッチ段、前記ＡＬＵ段、および前記データ書込み段を通る画素パケットの第１の処理フローを定義するようにプログラムするステップと、
第２のコマンドに応答して、前記分配器を、前記データフェッチ段、前記ＡＬＵ段、および前記データ書込み段を通る画素パケットの第２の処理フローを定義するようにプログラムするステップと
を含み、ソフトウェアホストが、複数の処理フローのいずれか１つで前記パイプラインを構成してもよい方法。
【請求項１３】
画素パケットを生成するラスタライザと、画素パケットのためのデータをフェッチするデータフェッチ段と、画素パケットに対してスカラ算術演算を実行する少なくとも１つのＡＬＵを有するＡＬＵ段と、画素データを書き込むデータ書込み段と、前記データフェッチ段、前記データ書込み段、および前記ＡＬＵ段を結合する分配器とを有するグラフィックスパイプラインを動作させる方法であって、
ソフトウェアホストから、前記パイプラインを、前記データフェッチ段、前記ＡＬＵ段、および前記データ書込み段を通る画素パケットの第１の処理フローから、前記データフェッチ段、前記ＡＬＵ段、および前記データ書込み段を通る画素パケットの第２のフローに再構成するコマンドを受け取るステップと、
前記パイプラインを、前記第１の処理フローから前記第２の処理フローに再構成するように前記分配器を調整するステップと
を含む方法。
【請求項１４】
画素パケットを処理する複数の段と、
前記複数の要素のそれぞれの入力に結合された第１の分配器と、
前記複数の要素のそれぞれの出力に結合された第２の分配器と
を備え、前記第１の分配器および前記第２の分配器が、ホストからのコマンドに応答して、前記複数の要素を通る画素パケットのプロセスフローを再構成するように適合されているグラフィックスプロセッサ。
【請求項１５】
画素パケットを処理する複数の要素を備えるグラフィックスパイプラインを有するグラフィックスパイプラインを動作させる方法であって、
第１のコマンドに応答して、分配器を、前記複数の要素を通る画素パケットの第１の処理フローを定義するようにプログラムするステップと、
第２のコマンドに応答して、前記分配器を、前記複数の要素を通る画素パケットの第２のフローを定義するようにプログラムするステップと
を含み、ソフトウェアホストが、複数の処理フローのいずれか１つで前記パイプラインを構成してもよい方法。
【請求項１６】
画素に対してグラフィックス処理操作を実行する方法であって、
複数の画素に対して実行されるべきグラフィックス機能について、前記グラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
画素を、偶数画素または奇数画素として割り当てるステップと、
前記各画素ごとに画素パケットの少なくとも２つの行を生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部のための少なくとも１つのフィールドを含み、前記少なくとも２つの行が、関連付けられた命令シーケンス、および、前記画素パケットが奇数画素であるか、それとも偶数画素であるかを示す識別子を有する前記ステップと、
画素パケットの行のグループにおいて偶数と奇数の画素の画素パケットの行をインターリーブするステップであり、前記グループ中の各行が、連続するクロックサイクルで処理するように割り当てられる前記ステップと、
ＡＬＵ段の複数の算術論理演算装置（ＡＬＵ）のそれぞれにおいて、現在のクロックサイクルの画素パケットの行を受け取り、前記命令シーケンスに従って、画素パケットの前記行から読み取られた少なくとも１つのオペランドに対してスカラ算術計算を実行するステップと
を含み、前記ＡＬＵにおいて画素パケットの処理がインターリーブされる方法。
【請求項１７】
グラフィックスパイプラインの要素を通る複数の可能な画素パケットのプロセスフローを有する構成可能な前記グラフィックスパイプラインの要素において識別子のレジスタ書込みを実行する方法であって、
前記グラフィックスパイプラインの前記要素をトリガして、各要素ごとに、前記プロセスフロー内の前記要素の位置を示す識別子を発見させるデータパケットを受け取るステップと、
各要素が、構成レジスタに、前記プロセスフロー内の相対的位置を示す識別子を書き込むステップと
を含む方法。
【請求項１８】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも１つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも１つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
複数の算術論理演算装置（ＡＬＵ）を含む、前記画素パケットを処理するプログラマブルＡＬＵ段であり、各ＡＬＵが、対応する現在の命令コマンドを有する入力画素パケットに対して実行される少なくとも１つの可能な算術演算の組を有する前記ＡＬＵ段と、
前記画素パケットのためのデータをフェッチするデータフェッチ段と、
前記ＡＬＵ段から受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と、
前記ＡＬＵ段、前記データフェッチ段、および前記データ書込み段のそれぞれの入力に結合されている第１の分配器と、
前記ＡＬＵ段、前記データフェッチ段、および前記データ書込み段のそれぞれの出力に結合されている第２の分配器と
を備え、
前記第１の分配器および前記第２の分配器が、ホストからのコマンドに応答して、前記データフェッチ段、前記ＡＬＵ段、および前記ＡＬＵ書込み段を通る画素パケットのプロセスフローを再構成するように適合されており、
前記ＡＬＵ状態の各ＡＬＵが、ソフトウェア識別情報によって開始される識別パケットを受け取るように適合され、各ＡＬＵが、前記識別パケットの識別子の現在の値を構成レジスタに書き込み、前記識別子を増分し、前記識別パケットを次のＡＬＵに送る
グラフィックスプロセッサ。
【請求項１９】
グラフィックスパイプラインの要素と関連付けられたタップ点の組を有するグラフィックスパイプラインと、
ソフトウェアコマンドによって選択されたタップ点の一部を監視し、前記タップ点の一部の前記各タップ点に関連付けられた少なくとも１つの条件の統計を取るように適合されている、ソフトウェアホストからコマンドを受け取る構成可能なテスト点選択器と
を備え、前記ソフトウェアホストのためにタップ点の一部の統計が収集されるグラフィックスプロセッサ。
【請求項２０】
第２の要素にペイロードを送ることのできる第１の要素と関連付けられた２つのテスト点を選択するコマンドを受け取るステップと、
前記２つのテスト点を監視するステップと、
前記第１の要素および前記第２の要素と関連付けられた少なくとも２つの条件に関して統計を収集するステップと
を含む、グラフィックスプロセッサを監視する方法。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明は、一般に、プログラマブルプロセッサに関する。より詳細には、本発明は、グラフィックスアプリケーション用の低電力プログラマブルプロセッサを対象とする。
【発明の背景】
【０００２】
[0002]３次元グラフィック画像の生成は、様々な電子ゲームその他のアプリケーションにおいて注目されている。従来方式では、ある場面の３次元画像を生成するのに使用されるステップの中には、表示されるべき対象物の３次元モデルを生成することが含むものがある。幾何プリミティブ（三角形など）が形成され、それらが深さ情報と共に２次元投影にマップされる。レンダリング（描画）プリミティブには、プリミティブの各２次元投影上での、深さや色といった、補間パラメータが含まれる。
【０００３】
[0003]グラフィックス処理装置（ＧＰＵ）は、一般に、グラフィックスシステムにおいて、中央処理装置からの命令に応答して３次元画像を生成するのに使用される。最新のＧＰＵは、通常、データ処理にグラフィックスパイプラインを利用する。図１は、もっぱら特定の機能を果たすために設けられた段を有する「深い」パイプラインである、従来技術の通常のパイプラインアーキテクチャを示す図である。変換段１０５は、プリミティブの幾何計算を行い、クリッピング操作を行ってもよい。セットアップ／ラスタ段１１０は、プリミティブをラスタライズする。テクスチャアドレス段１１５およびテクスチャフェッチ１２０段は、テクスチャマッピングに利用される。フォグ段１３０は、フォグアルゴリズムを実施する。アルファテスト段１３５は、アルファテストを行う。深さテスト段１４０は、遮蔽された画素を除去するための深さテストを行う。アルファブレンド１４５段は、アルファブレンド色合成アルゴリズムを実行する。メモリ書込み段１５０は、パイプラインの出力を書き込む。
【０００４】
[0004]図１に示す従来のＧＰＵパイプラインアーキテクチャは、通常、ＯｐｅｎＧＬ（登録商標）グラフィックス言語を使った高速テクスチャリングのために最適化される。深いパイプラインアーキテクチャの利点は、それが、複雑な場面でさえも高速高品質でレンダリングすることができることである。
【０００５】
[0005]無線電話機、携帯情報端末（ＰＤＡ）、ならびにコストおよび電力消費が重要な設計要件であるその他の機器では、３次元グラフィックス利用への関心がますます高まっている。しかしながら、従来の深いパイプラインアーキテクチャは、大きなチップ面積を必要とし、所望するものより大きなコストを生じることになる。さらに、深いパイプラインは、各段が比較的わずかな処理しか行っていない場合でさえも、相当な電力を消費する。これは、各段の多くが、それらが画素を処理しているかどうかに関わらず、ほぼ同量の電力を消費するからである。
【０００６】
[0006]コストおよび電力を考慮すると、図１に示す従来の深いパイプラインアーキテクチャは、無線電話機やＰＤＡで３次元ゲームを実施するなどの、多くのグラフィックスアプリケーションには適さないことになる。
【０００７】
[0007]したがって、求められているのは、グラフィックス処理アプリケーションに適する、電力およびサイズ要件の低いプロセッサアーキテクチャである。
【発明の概要】
【０００８】
[0008]グラフィックスプロセッサは、画素パケットを処理するプログラマブル算術論理演算装置（ＡＬＵ）を含む。ＡＬＵ段では、グラフィックス機能を実施するために、画素パケットに対してスカラ算術演算が行われる。
【０００９】
[0009]画素に対してグラフィックス処理操作を行う方法の一実施形態は、グラフィックス機能を実施するために画素パケットに対して行われるべきスカラ算術演算のシーケンスを識別するステップと、その画素の複数の画素パケットを生成するステップであり、各画素パケットが、スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部を含むステップと、少なくとも１つのＡＬＵにおいてそれらの画素パケットからオペランドを読み取るステップと、スカラ算術演算のシーケンスを実行するための命令シーケンスに従ってスカラ算術演算を実行するステップとを含む。
【００１０】
[0010]グラフィックスプロセッサの一実施形態は、画素パケットを処理する少なくとも１つのＡＬＵを有するプログラマブルＡＬＵ段であり、各ＡＬＵが、対応する現在の命令を有する入力画素パケットに対して実行される少なくとも１つの可能なスカラ算術演算の組を有するようにプログラムされているＡＬＵ段を含み、グラフィックス処理機能を実行するために画素パケットに対して算術演算のシーケンスが行われる。
【００１１】
[0011]本発明は、以下の詳細な説明を添付の図面と併せて読めば、より完全に理解されるものである。
【００１２】
[0023]図面のいくつかの図を通して、類似の参照番号は、対応する部分を指すものである。
【発明の詳細な説明】
【００１３】
[0024]図２は本発明の一実施形態のブロック図である。プログラマブルグラフィックスプロセッサ２０５が、レジスタインターフェース２１０と、ホストインターフェース２２０と、フレームバッファなどのグラフィックスメモリ（不図示）とのメモリ読取り／書込み操作のための直接メモリアクセス（ＤＭＡ）エンジン２３０などのメモリインターフェースとに結合されている。ホストインターフェース２２０は、プログラマブルグラフィックスプロセッサ２０５が、ホストからグラフィック画像を生成するコマンドを受け取ることができるようにする。例えば、ホストは、プログラマブルグラフィックスプロセッサ２０５に、頂点データ、コマンドおよびプログラム命令を送ってもよい。ＤＭＡエンジン２３０などのメモリインターフェースは、グラフィックスメモリ（不図示）と読取り／書込み操作が行われ得るようにする。レジスタインターフェース２１０は、プログラマブルグラフィックスプロセッサ２０５のレジスタとのインターフェースを取るインターフェースを提供する。
【００１４】
[0025]プログラマブルグラフィックスプロセッサ２０５は、プログラマブルグラフィックスプロセッサ２０５のホストとして働くソフトウェアアプリケーション２７０を実行する少なくとも１つの別の中央処理装置２６０を含むシステム２９０の一部として実施されてもよい。システム２９０の一例は、例えば、携帯電話や携帯情報端末（ＰＤＡ）などのハンドヘルドユニットを備えていてもよい。例えば、ソフトウェアアプリケーション２７０は、ディスプレイ２９５上にグラフィックス画像を生成するグラフィックスアプリケーション２７５を含んでいてもよい。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ソフトウェアアプリケーション２７０は、例えば、パイプライン再構成、レジスタ構成、およびテストなどといった、プログラマブルグラフィックスプロセッサ２０５に関連付けられる管理機能を実行する、グラフィックスプロセッサ管理ソフトウェアアプリケーション２８０を含んでいてもよい。
【００１５】
[0026]一実施形態では、プログラマブルグラフィックスプロセッサ２０５、レジスタインターフェース２１０、ホストインターフェース２２０、およびＤＭＡエンジン２３０は、メモリ上に常駐するソフトウェア２７０を有する中央処理装置２６０を含むチップ上に形成された集積回路２００など、ホストを含む単一の集積回路２００上に形成された組込みグラフィックス処理コア２５０の一部である。代替として、グラフィックス処理コア２５０が第１の集積回路上に配置され、ＣＰＵ２６０が第２の集積回路上に配置されていてもよい。
【００１６】
[0027]図３は、本発明の一実施形態によるプログラマブルグラフィックスプロセッサ２０５をより詳細に示すブロック図である。これは、セットアップ段３０５、ラスタ段３１０、ゲートキーパ段３２０、データフェッチ段３３０、算術論理演算装置（ＡＬＵ）段３４０、データ書込み段３５５、および再循環パス３６０を含む。一実施形態では、プログラマブルグラフィックスプロセッサ２０５は、テクスチャ合成、フォグ、アルファブレンド（色混合など）、アルファテスト（色テストなど）、Ｚ深さテスト、その他のシェーディングアルゴリズムといった３次元グラフィックス操作を実施するためのシェーダプログラムを実行するように構成されたＡＬＵ３５０を含む。しかしながら、以下の考察を通して読めば、プログラマブルグラフィックスプロセッサ２０５が、他の種類の処理操作を実行するように構成されてもよいことが理解されるであろう。
【００１７】
[0028]セットアップ段３０５は、集積回路２００上で走っているソフトウェアアプリケーションなどのホストから命令を受け取る。一実施形態では、セットアップ段３０５は、座標（Ｘフォーム）の幾何変換、クリッピング、およびセットアップの機能を実行する。セットアップユニットは、頂点情報（例えば、ｘ、ｙ、ｚ、色および／またはテクスチャ属性など）を取得し、ユーザ定義のビュー変換を適用して各幾何プリミティブ（プリミティブは、通常、三角形として実施されるため、以後、三角形と記載する）ごとの画面空間座標を計算し、次いで、それがラスタ段３１０に送られて、与えられた三角形を描画する。セットアップ段３０５によって使用される頂点データのバッファを提供するために、頂点バッファ３０８が含まれていてもよい。一実施形態では、セットアップ段３０５は、重心係数をセットアップする。一実装形態では、セットアップ段３０５は、３２ビットＩＥＥＥ浮動小数点形式、Ｓ１５．１６固定小数点形式およびパックド．８形式をサポートする浮動小数点超長命令語（ＶＬＩＷ）マシンである。
【００１８】
[0029]ラスタ段３１０は、セットアップ段２０５から、レンダリングされるべき（例えば、画素に変換される）三角形に関するデータを受け取る。いくつかの実施形態では、例えば、ラスタ段３１０に、ラスタ段３１０の命令をプログラムするための命令ＲＡＭ（不図示）が含まれていてもよい。ラスタ段３１０は、所与の三角形の各画素を処理し、例えば、色、テクスチャ、アルファテスト、アルファブレンド、ｚ−深さテスト、およびフォグパラメータの計算など、レンダリングの一部として画素について計算される必要のあるパラメータを求める。一実施形態では、ラスタ段３１０は、画素パケットの重心係数を計算する。重心座標系において、三角形における距離は、その頂点に関して測定される。重心係数の使用は、必要なダイナミックレンジを狭め、浮動小数点計算より少ない電力で済む固定小数点計算の使用を可能にする。
【００１９】
[0030]ラスタ段３１０は、処理されるべき三角形の各画素ごとに少なくとも１つの画素パケットを生成する。各画素パケットは、処理に必要な画素属性（例えば、色、テクスチャ、深さ、フォグ、（ｘ，ｙ）位置など）のペイロードのフィールドを含む。さらに、各画素パケットは、画素パケットに対して行われるべき操作の命令シーケンスを含む、関連付けられたサイドバンド情報も有する。ラスタ段２１０内の命令領域（不図示）が画素パケットに命令を割り当てる。
【００２０】
[0031]図４に、ある画素の画素パケットの例４３０、４６０を示す。一実施形態では、ラスタ段２１０は、画素属性を、それぞれが、特定の種類の命令が作用する画素属性データだけのためのフィールドを必要とする、２つ以上の異なる種類の画素パケット４３０、４６０に区分する。画素データをより小さい作業単位に区分すれば、帯域幅要件が軽減され、また、例えば、特定の処理操作のために画素の属性のほんの一部だけが操作されればよい場合には、処理要件も軽減される。
【００２１】
[0032]各画素パケットは、関連付けられたサイドバンド情報４１０およびペイロード情報４２０を有する。サイドバンド情報の例は、有効フィールド４１２、キルフィールド４１４、タグフィールド、および現在の命令を含む命令フィールド４１６を含む。画素パケットの例４３０は、フォグフィールド４２６と共に、テクスチャ座標４２２、４２４フィールドの第１の組（ｓ，ｔ）を含む。画素パケットの例４６０は、色フィールド４６２、およびテクスチャ座標４６４、４６６の第２の組（ｓ，ｔ）を含む。一実施形態では、各画素パケットは、固定小数点表現のペイロード情報４２０を表す。画素属性のために２０ビットの画素パケットサイズを有する画素パケットに含まれ得る画素属性の例には、１つのＺ．１６の１６ビットＺ深さ値、１つの１６ビットＳ／Ｔテクスチャ座標および４ビット詳細レベル、それぞれが８ビットの精度を有する１対の色値、または各ＡＲＧＢ変数に５ビットずつを有するパックド５５５５ＡＲＧＢ色が含まれる。
【００２２】
[0033]画素パケットのサイドバンド情報は、画素の（ｘ，ｙ）位置を含んでいてもよい。しかしながら、一実施形態では、ラスタ段３１０が走査線に沿って三角形を横切ってウォークし始める（ｘ，ｙ）起点において、ラスタ段３１０によってｓｔａｒｔ  ｓｐａｎコマンドが生成される。ｓｔａｒｔ  ｓｐａｎコマンドの使用は、（ｘ，ｙ）位置が画素パケットから除外されることを可能にする。ｓｔａｒｔ  ｓｐａｎコマンドは、他のエンティティ（データ書込み段３５５やデータフェッチ段３３０など）に、走査線の開始時の初期（ｘ，ｙ）位置を知らせる。走査線に沿った他の画素の（ｘ，ｙ）位置は、所与の画素が起点から離れている画素数によって推論される。一実施形態では、データ書込み段３５５およびデータフェッチ段３３０は、ローカルカウンタを増分し、それらがｓｐａｎ  ｓｔａｒｔコマンド後に遭遇した画素数の計算に基づいて（ｘ，ｙ）位置を更新するように適合されたローカルキャッシュを含む。
【００２３】
[0034]図５を参照すると、一実施形態では、ラスタ段３１０は、処理されるべき画素ごとに画素パケットの少なくとも１つの行５１０を生成する。いくつかの実施形態では、各行５１０は、その行５１０の命令シーケンスを定義する共通のサイドバンド情報４１０を有する。画素に複数の行５１０が必要とされる場合、それらの行５１０は、新しいクロックサイクルごとに連続して処理される行のグループ５２０として編成される。一実施形態では、８０ビット画素データが４つの２０ビット画素属性レジスタ値に区分され、それら４つの画素レジスタ値が、画素の画素パケット（Ｒ０、Ｒ１、Ｒ２、およびＲ３）の「行」５１０を定義する。
【００２４】
[0035]ラスタ段３１０の反復子レジスタプール（不図示）は、画素パケットの行５１０をサポートするための対応するレジスタを有する。一実装形態では、ラスタ段３１０は、画素パケットの最大４つの行までをサポートするレジスタプールを含む。テクスチャなど、いくつかの種類の画素パケット属性は、高精度を必要とすることがある。逆に、色など、いくつかの種類の画素パケット属性は、より低い精度でよいこともある。レジスタプールは、行５１０内の各画素パケットごとに高精度値および低精度値をサポートするように構成され得る。一実施形態では、レジスタプールは、１行当たり４つの高精度および４つの低精度パースペクティブ補正反復値と、Ｚ深さ値を含む。これは、例えば、ソフトウェアが、特定の画素パケット属性を処理するための反復子の精度を割り当てることを可能にする。一実施形態では、ラスタ段３１０は、テクスチャの整数部分を追跡するように適合されたレジスタプールを含み、テクスチャの小数ビットがデータパケットとして送られ得るようにする。
【００２５】
[0036]ラスタ段３１０は、例えば、画素に対して操作が行われることを必要とするホストからの命令を受け取ることがある。これに応答して、ラスタ段３１０は、関連付けられた命令シーケンスを有する画素パケットの１つまたは複数の行５１０を生成し、それらの画素パケット行および命令は、所望の処理操作を実行するように構成される。以下でより詳細に説明するように、一実施形態では、ＡＬＵ段３４０は、そのオペランドが、画素パケットの行５１０内の画素属性の事前に選択された一部、定数値、および画素パケットに対する前の計算の一時的に格納された結果を含むスカラ算術演算が実行されることを可能にする。
【００２６】
[0037]様々なグラフィックス操作が、１つまたは複数のスカラ算術演算として定式化され得る。さらに、様々なベクトルグラフィックス操作が、複数のスカラ算術演算として定式化され得る。よって、本発明のプログラマブルグラフィックスプロセッサ２０５は、その内容が参照により本明細書に組み込まれる、Open GL(登録商標） Graphics System: A Specification (Version 1. 2）に記載されているような、フォグ操作、色（アルファ）合成、テクスチャ合成、アルファテスト、深さテストなどのスカラ算術演算のシーケンスとして表され得る、画素に対する任意のグラフィックス操作を実行するようにプログラムされてもよいことが理解されるであろう。例えば、ラスタ段３１０が画素に対して実行されるべき所望のグラフィックス処理機能（フォグ操作など）を検出したことに応答して、ラスタ段３１０は、プログラマブルマッピング表またはマッピングアルゴリズムを使って、画素パケットの割り当て、および画素に対してそのグラフィックス機能を実施するのに必要なスカラ算術演算を実行するための関連付けられた命令を決定することができる。マッピングは、例えば、グラフィックスプロセッサ管理アプリケーション２８０によってプログラムされてもよい。
【００２７】
[0038]図３に戻ると、三角形の各画素がラスタ段３１０によってウォークされるに従って、ラスタ段３１０は、さらなる処理のために画素パケットを生成し、それらがゲートキーパ段３２０によって受け取られる。ゲートキーパ段３２０は、データフロー制御機能を果たす。一実施形態では、ゲートキーパ段３２０は、画素パケットのスケジューリング、負荷均衡化、リソース割り振り、およびハザード回避のための関連付けられたスコアボード３２５を有する。スコアボード３２５は、画素の入力および除却を追跡する。ゲートキーパ段３２０に入力される画素パケットは、スコアボードを設定し、スコアボードは、処理完了後に画素パケットがプログラマブルプロセッサ２０５から排出される際にリセットされる。例をあげて説明すると、コンパクトディスプレイ２９５が１２８×３２画素の領域を有する場合、スコアボード３２５は、画素を監視するためにディスプレイの各画素ごとに表を維持してもよい。
【００２８】
[0039]スコアボード３２５は、いくつかのメリットを提供する。例えば、スコアボード３２５は、三角形内のある画素が、処理されている未完了の別の画素の上にある場合のハザードを防止する。一実施形態では、スコアボード３２５は、アイドル状態を監視し、スコアボード情報を使ってアイドル状態の装置をクロックオフする。例えば、有効な画素がない場合、スコアボード３２５は、節電のためにＡＬＵをオフにしてもよい。以下でより詳細に説明するように、スコアボード３２５は、キルビットが設定されている画素パケットと共に、ＡＬＵ３５０による処理が可能な画素パケットを追跡して、画素パケットが、アクティブな処理なしでＡＬＵ３５０を流れるようにする。一実施形態では、スコアボード３２５は、再循環された画素パケットの（ｘ，ｙ）位置を追跡する。画素パケットが再循環される場合、スコアボード３２５は、その画素の次の命令への後続の受け渡しにおいてその画素パケットの命令シーケンスを増分する。例えば、命令が受け渡し番号１のフォグ操作のものである場合、命令は、受け渡し番号２のアルファブレンド操作まで反復される。
【００２９】
[0040]データフェッチ段３３０は、ゲートキーパ３２０によって渡された画素パケットためのデータをフェッチする。これは、例えば、画素パケットの各行ごとに適切な色、深さ、またはテクスチャデータ読取りを行うことによる、色、深さおよびテクスチャデータのフェッチを含んでいてもよい。データフェッチ段３３０は、例えば、メモリインターフェースからの読取り（例えば、ＤＭＡエンジン２３０を使ったフレームバッファ（不図示）の読取りなど）を要求することによって画素またはテクセルデータをフェッチしてもよい。また、一実施形態では、データフェッチ段３３０は、テクスチャ／フォグキャッシュ３３２、色／深さキャッシュ３３４、および深さデータのためのＺキャッシュ（不図示）などのローカルキャッシュを管理してもよい。フェッチされるデータは、画素パケットを次の段に送る前に、対応する画素パケットフィールドに配置される。一実施形態では、データフェッチ段３３０は、画素パケット属性フィールドによって必要とされるデータにアクセスするための命令を有する命令ランダムアクセスメモリ（ＲＡＭ）を含む。また、いくつかの実施形態では、データフェッチ段３３０は、Ｚ深さテストも行う。この実施形態では、データフェッチ段３３０は、１つまたは複数の深さ比較テストを使って、画素パケットのＺ深さ値を、格納されたＺ値と比較する。画素のＺ深さ値が、その画素が遮蔽されていることを示す場合、キルビットが設定される。
【００３０】
[0041]画素パケットの行は、処理のために算術論理演算装置（ＡＬＵ）段３４０に入力される。ＡＬＵ段３４０は、ＡＬＵ３５０−０、３５０−１、３５０−２、および３５０−３など、少なくとも１つのＡＬＵ３５０を含むＡＬＵ３５０の組を有する。４つのＡＬＵ３５０が図示されているが、ＡＬＵ段３４０では、アプリケーションに応じてより多い、または少ないＡＬＵ３５０が使用されてもよい。個別ＡＬＵ３５０は、画素パケットの少なくとも１行５１０の現在の命令を読み取り、サポートするようにプログラムされているスカラ算術演算を実行する任意の命令を実施する。命令は、各ＡＬＵ３５０に含まれ、例えば、ローカル命令ＲＡＭ（図３には図示せず）上に格納されていてもよい。
【００３１】
[0042]各ＡＬＵ３５０は、オペランドの第１の積（ａ＊ｂ）およびオペランドの第２の積（ｂ＊ｃ）に対する少なくとも１つの算術演算を実行する命令を含む（式中、ａ、ｂ、ｃおよびｄはオペランドであり、*は乗算である）。オペランドの一部または全部は、例えば、画素パケットの行５１０内のレジスタ値属性に対応していてもよい。また、ＡＬＵ３５０は、一定の、またはソフトウェアロード可能な１つまたは複数のオペランド値を備えていてもよい。いくつかの実施形態では、ＡＬＵは、画素パケットに対する前の操作からの一時的に格納された結果を使ってサポートしてもよい。
【００３２】
[0043]一実施形態では、各ＡＬＵ３５０はプログラム可能である。ソフトウェア（ソフトウェアアプリケーション２７０など）からの命令に応答してオペランドおよび結果の宛先が選択され得るように、ＡＬＵ３５０内にクロスバー（不図示）または他のプログラマブル選択器が含まれていてもよい。例えば、一実施形態では、操作コマンドコードを使って、画素パケットの行５１０内の任意のレジスタ値、一時的な値、および定数値の属性からの各オペランド（ａ、ｂ、ｃ、ｄ）のソースが選択されてもよい。この実施形態では、操作コマンドは、ＡＬＵ３５０に、結果で画素パケットを更新する、結果を一時的な値として保存する、あるいは結果で画素パケットを更新すると共に結果を一時的な値として保存するなど、算術演算の結果をどこに送るべきかをも指示する。よって、例えば、ＡＬＵは、画素パケット内の特定の属性をオペランドとして読み取り、現在の命令によって指示されるスカラ算術演算を適用するようにプログラムされ得る。また、操作コマンドコードには、オペランドの補数を取る（例えば、ｘを読取り値とする場合、１−ｘを計算する）コマンド、オペランドを否定する（例えば、ｘを読取り値とする場合、−ｘを計算する）コマンド、あるいはオペランドまたは結果をクランプするコマンドも含まれ得る。操作コマンドコードの他の例には、例えば、データ形式を選択するコマンドも含まれ得る。
【００３３】
[0044]ＡＬＵ３５０によって実行される算術演算の一例が、画素パケット内の少なくとも１つの変数に関する（ａ＊ｂ）＋（ｃ＊ｄ）の形のスカラ算術演算である（式中、ａ、ｂ、ｃおよびｄはオペランドであり、＊は乗算である）。また、各ＡＬＵ３５０は、好ましくは、オペランドの補数を取る、オペランドを否定するなど、他の数値演算を実行するようプログラムされてもよい。さらに、いくつかの実施形態では、各ＡＬＵ３５０は、（ａ＊ｂ、ｃ＊ｄ）から最小値および最大値を計算し、論理比較（例えば、ａ＊ｂがｃ＊ｄと等しい、ｃ＊ｄと等しくない、ｃ＊ｄより小さい、あるいはｃ＊ｄ以下であるかどうかの論理的結果など）を行ってもよい。
【００３４】
[0045]いくつかの実施形態では、各ＡＬＵ３５０は、ａ＊ｂとｃ＊ｄの比較（例えば、ａ＊ｂがｃ＊ｄに等しくない場合キルする、ａ＊ｂがｃ＊ｄに等しい場合キルする、ａ＊ｂがｃ＊ｄより小さい場合キルする、ａ＊ｂがｃ＊ｄ以上である場合キルする）などのテストに基づいてキルフィールド４１４にキルビットを生成するかどうか決定する命令を含んでいてもよい。キルビットを生成し得るＡＬＵ操作の例には、式、IF (alpha>alpha reference), then kill the pixel（式中、alphaは色値であり、alpha referenceは基準色値である）など、色値がテスト色値に比較されるアルファテストが含まれる。キルビットを生成し得るＡＬＵ操作の別の例がＺ深さテストであり、画素のＺ値が、同じ位置を有する前の画素の少なくとも１つのＺ値に比較され、深さテストが、その画素が遮蔽されていると示せば、画素がキルされる。
【００３５】
[0046]一実施形態では、画素パケットにおいてキルビットが設定されている場合、画素パケットの処理に関して、個別ＡＬＵ３５０が使用不可とされる。一実施形態では、サイドバンド情報でキルビットが検出されたときに、クロックゲーティング機構を使ってＡＬＵ３５０が使用不可とされる。その結果、画素パケットにキルビットが生成された後で、ＡＬＵ３５０は、画素パケットがＡＬＵ段３４０を通って伝搬する際にその画素パケットに電力を浪費しなくなる。しかしながら、キルビットが設定された画素パケットは、さらに先に伝搬し、データ書込み段３５５およびスコアボード３２５によって計上され得ることに留意されたい。これは、たとえキルビットによってそれ以上のＡＬＵ処理を必要としないとマークされている画素パケットであれ、すべての画素パケットが、スコアボード３２５によって計上されるようにする。一実施形態では、画素の任意の行５１０がキルビットでマークされている場合、同じ画素の他の行５１０もキルされる。これは、例えば、行５１０がキルビットでマークされている画素を追跡する段の間で、または１つまたは複数の段によってキル情報を転送することによって達成されてもよい。いくつかの実施形態では、キルビットがセットされると、画素パケットの行５１０の（キルビットを含む）サイドバンド情報４１０だけが次の段に伝搬する。
【００３６】
[0047]ＡＬＵ段３４０の出力は、データ書込み段３５５に進む。データ書込み段３５５は、処理された画素パケットを画素データに変換し、その結果を（ＤＭＡエンジン２３０などを介して）メモリインターフェースに書き込む。一実施形態では、画素の書込み値が書込みバッファ３５２に累積され、累積された画素の書込みはバッチでメモリに書き込まれる。データ書込み段３５５が実行し得る機能の例には、色および深さ書戻し、およびフォーマット変換が含まれる。いくつかの実施形態では、データ書込み段３５５は、キルされるべき画素を識別し、キルビットを設定してもよい。
【００３７】
[0048]画素パケットを再循環させてゲートキーパ３２０に戻す再循環パス３６０が含まれる。再循環パス３６０は、例えば、一連の算術演算を必要とするプロセスが、ＡＬＵ段３４０を通る複数の受け渡しを使って実行されることを可能にする。データ書込み段３５５は、スコアボードに記録するために除却されたゲートキーパ段３２０への書込みを示す。
【００３８】
[0049]図６は、個別ＡＬＵ３５０の例を示すブロック図である。ＡＬＵ３５０は、対応するレジスタＲ０、Ｒ１、Ｒ２、およびＲ３内の画素パケットの行５１０を受け取るデータバスを備える入力バス６０５を有する。ＡＬＵ命令のために命令ＲＡＭ６１０が含まれる。命令セットの一例をブロック６２０に示す。一実施形態では、ＡＬＵ３５０は、行５１０から４つの２０ビットレジスタ値の任意の１つを読み取り、行５１０からオペランドの組を選択するようにプログラムされてもよい。さらに、ＡＬＵ３５０は、パス６４０で示すように、前の結果から一時的に保存されている、１つのＡＬＵ３５０当たり２つの２０ビットの一時的な値など、レジスタ（Ｔ）６３０からの一時的な値をオペランドとして選択するようにプログラムされてもよい。また、ＡＬＵ３５０は、やはりソフトウェアによってプログラムされ得る、定数値（不図示）をオペランドとして選択してもよい。一実施形態では、マルチプレクサ（ＭＵＸ）６４５の第１段が、画素パケットの行からのオペランド、任意の一時的な値６３０、および任意の定数値（不図示）を選択する。オペランドを、算術計算ユニット６７０におけるＡＬＵ３５０の計算精度に適した所望のデータ形式に変換するためにフォーマット変換モジュール６５０が含まれていてもよい。ＡＬＵ３５０は、各オペランドまたはその補数がＭＵＸ６６０の第２段において選択されることを可能にする要素を含む。結果として生じる４つのオペランドは、２つの乗算および１つの加算を実行することのできるスカラ算術計算ユニット６７０に入力される。結果として生じる値は、任意選択で、クランパ６８０を使って所望の範囲（例えば、０から１．０まで）にクランプされてもよい。画素パケットの行５１０は、バス６９０上で終了する。
【００３９】
[0050]一実施形態では、選択された画素パケット属性を、１符号１．８（Ｓ１．８）形式としてもよい。Ｓ１．８形式は、［-２から＋２）までの範囲にある８ビットの小数を有する２進数である。Ｓ１．８形式は、計算のためのより高いダイナミックレンジを許容する。例えば、照明を処理する計算において、Ｓ１．８形式は、より大きいダイナミックレンジを可能とし、結果としてアリズムが改善される。Ｓ１．８で実行されるスカラ算術演算の結果が［０，１］の範囲になければならない場合、その結果は、結果が強制的に範囲［０，１］になるようにクランプされてもよい。例をあげて説明すると、色データのシェーディング計算がＳ１．８形式で実行され、次いで、その結果がクランプされてもよい。本発明の実施形態では、異なる種類の画素パケットは、異なるフォーマットで表されるデータ属性を有していてもよいことに留意されたい。例えば、色データが、Ｓ１．８形式の第１の種類の画素パケットで表され、（ｓ，ｔ）テクスチャデータが高精度１６ビット形式による第２の種類の画素パケットで表されてもよい。いくつかの実施形態では、画素パケットビットサイズは、最高精度の画素属性のビットサイズ要件によって設定される。例えば、テクスチャ属性は、通常、色より大きい精度を必要とするため、画素パケットサイズは、１６ビットテクスチャデータなど、高レベルの精度を有するテクスチャデータを表すように設定されてもよい。Ｓ１．８形式の改善されたダイナミックレンジは、例えば、複数の色成分のデータを、例えば、テクスチャデータに１６ビットと４ビットの詳細レベル（ＬＯＤ）を必要とするより高精度のデータのテクスチャデータに選択されるサイズである２０ビット画素パケットサイズに効率よくパッキングすることを可能にする。例えば、各Ｓ１．８色成分は１０ビットを必要とするため、２つの色成分が、１つの２０ビット画素パケットにパックされてもよい。
【００４０】
[0051]図７に、２つ以上のＡＬＵ３５０がつなぎ合わされているパイプラインとして構成された複数のＡＬＵ３５０を含むＡＬＵ段３４０の例を示す。前述のように、個別ＡＬＵ３５０は、画素パケットから１つまたは複数のオペランドを読み取り、算術演算の結果を生成し、その結果で画素パケットまたは一時レジスタを更新するようにプログラムされてもよい。各ＡＬＵは、オペランドを読み取り、演算結果を生成し、１つまたは複数の画素パケットまたは一時的な値を更新してから画素パケットの行を次のＡＬＵに渡す役割が割り当てられてもよい。
【００４１】
[0052]ＡＬＵ段３４０のＡＬＵ３５０間のデータフローは、実行されるべき処理操作、ＡＬＵ待ち時間、および効率性の考慮事項に応じて、様々なやり方で構成され得る。前述のように、本発明は、各ＡＬＵが、画素パケットの行内の選択されたオペランドを読み取り、結果で選択された画素パケットレジスタを更新するようにプログラムされるようにする。一実施形態では、ＡＬＵ段３４０は、各色チャネル（例えば、赤、緑、青およびアルファなど）ごとに少なくとも１つのＡＬＵ３５０を含む。これは、例えば、各ＡＬＵが、類似の、または異なる処理タスクを実行するために、（パイプライン化により異なる時点においてではあるが）画素パケットの行５１０に対して並列に動作するように構成される負荷均衡化を可能にする。ＡＬＵ３５０がどのようにしてプログラムされ得るかの一例を上げると、第１のＡＬＵ３５０-０が第１の色成分の計算を行うようにプログラムされ、第２のＡＬＵ３５０-１が第２の色成分の操作を行うようにプログラムされ、第３のＡＬＵ３５０-２が第３の色成分の操作を行うようにプログラムされ、第４のＡＬＵ３５０-３がフォグ操作を行うようにプログラムされてもよい。よって、いくつかの実施形態では、各ＡＬＵ３５０に、画素パケットの行５１０の異なる処理タスクが割り当てられてもよい。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ソフトウェアは、ＡＬＵ３５０を、ＡＬＵ３５０の実行順序を含むＡＬＵ段３４０内のＡＬＵ３５０のデータフローを選択するように構成してもよい。しかしながら、データフローは構成されてもよいため、いくつかの実施形態では、ＡＬＵのチェーンに沿ったデータフローが、１つのＡＬＵ３５０-０の結果が、後続のＡＬＵ３５０-１によってオペランドとして読み取られる１つまたは複数の画素パケットレジスタを更新するように構成されてもよいことが理解されるであろう。
【００４２】
[0053]図８は、各段を通る画素パケットのプロセスフローが、グラフィックスプロセッサ管理アプリケーション２８０からのソフトウェアコマンドなどのソフトウェアコマンドに応答して構成可能な再構成可能パイプラインを有するプログラマブルグラフィックスプロセッサ２０５の一部の実施形態を示すブロック図である。各段の要素のそれぞれの入力と出力とに結合された分配器８９０、８９５は、画素パケットのプロセスフローが再構成されることを可能にする。各段には、例えば、データフェッチ段８３０、データ書込み段８５５、個別ＡＬＵ８５０などが含まれ得るが、他の種類のものも分配器８９０、８９５を使って再構成され得ることが理解されるであろう。いくつかの実施形態では、ソフトウェアは、各段を通る画素パケットのプロセスフローを動的に再構成してもよい。よって、好ましくは、同期技法を利用して、ある構成から別の構成への切換えの間に、未完了の画素パケットのデータフローが調整される。すなわち、第１の構成で処理することが意図されている未完了の画素パケットが、その構成が第２の構成に変更される前に、その処理を完了するように同期が行われる。
【００４３】
[0054]一実施形態では、データフェッチ段８３０、データ書込み段８５５、および個別ＡＬＵ８５０は、それぞれ第１の分配器８９０に接続された個々の入力と、それぞれ第２の分配器８９５に接続された個々の出力とを有する。各分配器８９０、８９５は、データフェッチ段８３０、ＡＬＵ８５０およびデータ書込み段８５５への入力画素パケットの配布フローを選択するために、例えば、スイッチ、クロスバー、ルータ、またはＭＵＸ回路などを備えていてもよい。分配器８９０、８９５は、データフェッチ段８３０、データ書込み段８５５、および個別ＡＬＵ８５０を通る入力画素パケット８１０のデータパスを決定する。信号入力８９２、８９４は、分配器８９０、８９５が、データフェッチ段８３０と、データ書込み段８５５と、ＡＬＵ８５０の間での画素パケットの分配を再構成するための（例えば、ＣＰＵ上で走っているソフトウェアアプリケーションからの）ソフトウェアコマンドを受け取ることを可能にする。再構成の一例が、ＡＬＵ８５０の実行順序を割り当てることである。再構成の別の例が、データフェッチ段がある一定の時間タスクを処理するのに必要とされないと判定された場合に、データフェッチ段８３０を迂回することである。再構成の別の例として、データフェッチ段８３０がＡＬＵに結合される順序を変更することが望ましいこともある。別の例として、データ書込み段８５５を再配列することが望ましいこともある。例をあげて説明すると、データフェッチの前にテクスチャ座標を操作する方が効率的である場合もあり、その場合、データフローは、ＡＬＵ８５０がテクスチャ操作を行った後でデータフェッチ段８３０に画素パケットを受け取らせるように構成される。よって、再構成可能なパイプラインの１つの利点は、ソフトウェアアプリケーションが、効率を上げるためにプログラマブルグラフィックスプロセッサ２０５を再構成することができることである。
【００４４】
[0055]図５に戻ると、前述のように、ラスタ段３１０は、処理のために画素パケットの行５１０を生成する。各行５１０は、さらに、連続するクロックサイクルで処理するために渡される、４行５１０のシーケンスなど、行のグループ５２０に構成されてもよい。しかしながら、画素パケットの行５１０に対して行われ得るいくつかの操作は、画素パケットの別の行の算術演算の結果を必要とすることもある。したがって、一実施形態では、ラスタ段３１０は、行のグループ５２０内の画素パケットを、データ依存関係を明らかにするように構成する。例をあげて説明すると、ある画素パケットに対するテクスチャ操作が、ある行内の別の画素パケットの結果を必要とする場合、グループ５２０は、依存テクスチャ操作を有する画素パケットが後の行に配置されるように構成される。
【００４５】
[0056]図９を参照すると、一実施形態では、画素は、代替として、ラスタ段３１０によって奇数または偶数として割り当てられる。画素の各行ごとの対応するレジスタ（Ｒ０、Ｒ１、Ｒ２、およびＲ３）が、しかるべく、偶数または奇数に割り当てられる。次いで、偶数画素の画素パケットの偶数行９０５と奇数画素の奇数行９１０が、データ依存関係を回避するための１つまたは複数の規則を利用してインターリーブされる。１行おきにインターリーブすれば、ＡＬＵ待ち時間を引き受ける追加のクロックサイクルが提供される。よって、偶数画素の行０が、偶数画素の行１によって必要とされる結果を生成するのに２クロックサイクルを必要とする場合、奇数画素での行０をインターリーブすれば、ＡＬＵ待ち時間によって必要とされる時間の追加のクロックサイクルが提供される。説明例として、偶数画素での行０が合成操作であり、同じ画素での行１が、第１の合成操作の結果を必要とする第２のテクスチャとの合成に対応するマルチテクスチャ操作を考察する。第１の操作でのＡＬＵ待ち時間が２クロックサイクルである場合、インターリービングは、合成操作の結果が、合成操作を用いるテクスチャに利用できるようにする。
【００４６】
[0057]インターリーブされる実施形態においては、好ましくは、インターリーブされたデータフローを調整するためのサイドバンド情報が含まれる。例えば、一実施形態では、各画素パケット内のサイドバンド情報は、偶数行と奇数数行を区別するための偶数／奇数フィールドを含む。また、各ＡＬＵ３５０は、偶数／奇数画素パケットの適切な一時的な値を提供するために、偶数画素と奇数画素の一時レジスタに対応する２組の一時レジスタを含んでいてもよい。偶数／奇数フィールドを使って適切な一時レジスタの組が選択される。例えば、奇数の画素には偶数の一時レジスタが選択され、偶数の画素には一時レジスタの奇数の組が選択される。一実施形態では、偶数画素と奇数画素の両方に使用される定数値に必要な総記憶量を低減するために、定数レジスタが、偶数画素と奇数画素の両方によって共用される。一実施形態では、ソフトウェアホストは、定数レジスタをエミュレートするために、長期間にわたって、一時レジスタを定数値に設定してもよい。２つの画素のインターリービングは１つの実装形態であるが、例えば、ＡＬＵ待ち時間が２つより大きいクロックサイクルに対応する場合、インターリービングは、さらに、２つより大きい画素をインターリーブするように拡張されてもよいことが理解されるであろう。ラスタ段３１０インターリーブ画素パケットを有することの１つの利点は、ＡＬＵ待ち時間がハードウェアによって考慮に入れられ、例えば、ラスタ段３１０が画素をインターリーブしなかった場合などに通常発生するはずのＡＬＵ待ち時間を引き受けるためにソフトウェアにかかる負担が軽減されることである。
【００４７】
[0058]前述のように、構成可能なパイプラインでは、ＡＬＵ３５０内のデータフローが構成されてもよい。例えば、ハードウェアにおいて、各ＡＬＵ３５０は、実質的に同一とすることができる。しかしながら、個々のＡＬＵは、データフローにおいて複数の位置、例えば、異なる実行順序を有するように構成されてもよい。したがって、各ＡＬＵ３５０に、そのデータフロー内での位置を示す識別子が設けられる必要がある。この識別子は、例えば、各ＡＬＵ３５０の直接レジスタ書込み技法によって、各ＡＬＵ３５０に提供されてもよい。しかしながら、この手法には、大きなソフトウェアオーバーヘッドを必要とするという欠点がある。したがって、一実施形態では、パケット技法を利用し、構成情報を必要とする要素をトリガしてそれらのプロセスフロー内の相対的位置を発見させ、対応する識別子をローカルレジスタに書き込ませる。
【００４８】
[0059]図１０を参照すると、一実施形態では、ＡＬＵ３５０のレジスタアドレス空間は、データパケットを使用して各ＡＬＵ３５０に識別（ＩＤ）を送るパケット初期設定技法を使ってソフトウェアにより構成可能である。各ＡＬＵ３５０は、例えば、データパケットを受け取り、転送する従来のネットワークモジュールを含んでいてもよい。一実施形態では、ＩＤパケット１０１０がソフトウェアアプリケーションによって開始される。ＩＤパケット１０１０は、数値などの初期ＩＤコードを含む。ＩＤパケット１０１０は、グラフィックスパイプラインの、ＩＤコードを必要とする要素の前の時点において注入され、次いで、現在のパイプライン構成によって定義されるプロセスフローの後続の要素に渡される。一実施形態では、第１のＡＬＵ３５０の構成レジスタ１０２０がＩＤパケットを受け取り、ＩＤコードの現在値を構成レジスタに書き込み、次いで、ＩＤパケットを次のＡＬＵに渡す前に、ＩＤパケットのＩＤコードを増分する。このプロセスが続けられて、各後続ＡＬＵ３５０がＩＤコードの現在値をその構成レジスタに書き込み、次いで、増分されたＩＤコードを有するＩＤパケットを次のＡＬＵに渡す。また、データフローパスに沿った他の段も類似のやり方で構成レジスタを設定させ得ることが理解されるであろう。例えば、構成フロー中の各要素には、やはり、ＩＤパケットを読み取ることによって構成レジスタを設定させ、ＩＤコードを増分してから増分されたＩＤを有するＩＤパケットを構成フロー中の次の要素に渡すデータフェッチ段またはデータ書込み段が含まれていてもよい。この形のレジスタ構成の１つの利点は、それがＡＬＵ３５０ユニット間のハードウェアの差異を必要とせず、パイプラインを通るデータフローのソフトウェア再構成を可能にすることである。よって、例えば、一実施形態では、グラフィックスプロセッサ管理アプリケーション２８０は、ＩＤパケット発生器１０３０によって受け取られる、ホストインターフェース２２０を介してＩＤパケット１０１０を生成するコマンドを発行するなどによって、初期ＩＤパケット１０１０を生成するだけでよい。
【００４９】
[0060]代替の実施形態では、構成レジスタが書き込まれることを必要とする要素をトリガしてそれらのＩＤを発見させるために、ブロードキャストパケット技法を使ってＩＤコードが構成レジスタに書き込まれる。この実施形態では、各要素（ＡＬＵ３５０など）は、ネットワークプロトコルを使ってそれらのＩＤを発見してもよい。ブロードキャストパケット技法は、例えば、パイプラインの分岐が画素を並列で処理するようにパイプラインが分岐される実施形態において有用である。
【００５０】
[0061]図１１に、診断監視機能を含む実施形態を示す。一実施形態では、各ＡＬＵ３５０およびデータフェッチ段３３０に関連付けられたタップなど、グラフィックスプロセッサ２０５の要素に沿ったタップのシーケンスがある。また、タップは、他の段に含まれていてもよい。構成可能なテスト点選択器１１０５が、グラフィックスプロセッサ管理アプリケーション２８０からのソフトウェアコマンドなどのソフトウェアコマンドに応答して、２つのタップ１１２０、１１３０などの選択されたタップが監視され得るように適合される。構成可能なテスト点選択器１１０５は、例えば、マルチプレクサを使って実施されてもよい。一実施形態では、選択されたテスト点ごとの統計収集のために少なくとも１つのカウンタ１１１０が含まれる。一実施形態では、ソフトウェアによって生成される計測パケットが、監視されるべきタップに関する情報を提供し、選択されたテスト点でのカウントを可能にする。さらに、パイプラインの動作モードに基づいて統計収集をオンとオフにゲート制御するための計測レジスタが含まれていてもよい（例えば、ソフトウェアが、アルファブレンド操作が行われるときに統計カウントを可能にするなど、特定の種類のグラフィックス操作をカウントすることができるようにする計測レジスタが設けられていてもよい）。構成可能なテスト点選択器１１０５の１つの利点は、それが、グラフィックスプロセッサ管理アプリケーション２８０などのソフトウェアが、当該のテスト点だけのために統計データを収集させることを可能にし、ハードウェアの複雑度およびコストを低減し、しかも、ソフトウェアがプログラマブルプロセッサ２０５の挙動の任意の部分を解析することも可能にすることである。当該のテスト点は、例えば、テクスチャデータを処理するＡＬＵ３５０など、特定の種類のデータを処理するＡＬＵ３５０と関連付けられた統計を収集するように選択されてもよい。さらに、統計収集は、アルファブレンドなど、特定のグラフィックス操作のために使用可能とされてもよい。
【００５１】
[0062]一実施形態では、構成可能なテスト点選択器１１０５は、三線のプロトコルを利用する。有効なペイロードデータを有する、ＡＬＵ３５０−０などの各要素は、有効信号を生成し、それは、例えば、次の要素（例えばＡＬＵ３５０−１）などに流れてもよい。ペイロードを受け取ることが可能な状態の要素は、作動可能信号を生成し、それは、例えば、前の要素に流れてもよい。しかしながら、要素がペイロードを受け取ることが可能な状態ではない場合、その要素は、非作動可能信号を生成し、それは、例えば、作動可能信号をアサートしないことに対応してもよい。イネーブル信号は、例えば、監視されている点に隣接して格納される監視イネーブル制御ビットへのパイプライン化レジスタ書込みによるソフトウェア制御などによって、要素が監視可能とされることに対応する。信号は、信号を生成する要素から、またはこれらの信号を受け取る要素から直接出力されてもよい。
【００５２】
[0063]選択されたタップ点における有効、作動可能、および非作動可能信号は、動作状態を判定するのに使用され得る。転送状態は、下流へ流れるデータの有効なペイロード（すなわち有効なビットセット）、およびそのデータを受け取る下流ブロックにおける下流ブロックからの作動可能信号を有するクロックティックに対応する（例えば、タップ点１１２０における、ＡＬＵ−０からの有効信号およびタップ点１１３０におけるＡＬＵ−１からの作動可能信号など）。待機状態は、下のブロックがデータを受け取ることが可能な状態ではないためにブロックされている有効なペイロードを有するクロックティックに対応する（例えば、タップ点１１２０における、ＡＬＵ−０からの有効信号およびタップ点１１３０におけるＡＬＵ−１からの非作動可能信号など）。この実施形態では、転送状態および待機状態が検出されるクロックサイクル数をカウントするなど、選択されたタップ点に関する統計が収集されてもよい。
【００５３】
[0064]本発明の実施形態は、組込みグラフィックスプロセッサコア２５０で有用な様々な利点を提供する。コンパクトで、低電力のハンドヘルドシステム２９０では、電力、スペースおよびＣＰＵ能力が比較的限られている。一実施形態において、ＡＬＵ３５０は、処理が必要とされないときに（例えば、キルビットを検出するなどによって）クロックゲート制御され、処理電力要件が軽減される。さらに、ラスタ段３１０は、処理される画素データの一部の画素パケットを生成するだけでよく、やはり、電力要件が軽減される。プログラマブルＡＬＵ段３４０は、専用のグラフィックス機能を実行する専用段を備える従来のパイプラインよりも小さいチップ面積で済み、コストが低減される。プログラマブルプロセッサ２０５は、ソフトウェアによって構成可能なブロックとして実施されてもよく、効率性が改善される。テスト監視は、テスト点の一部をテストするように構成されてもよく、ソフトウェアによる帯域幅および解析要件が軽減される。上記およびその他の前述の特徴が、組込みグラフィックスプロセッサコア２５０で使用するための当該のプログラマブルグラフィックスプロセッサ２０５を構成するものである。
【００５４】
[0065]以上の記述では、説明のために、特定の用語を使用して本発明の十分な理解提供した。しかしながら、具体的詳細は、本発明を実施するために必要とされないことが、当分野の技術者には明らかであろう。よって、以上の本発明の具体的実施形態の記述は、図示と説明のために提示するものである。これらは、網羅的であることも、本発明を開示の厳密な形に限定することも意図するものではない。上記の教示を考察すれば、明らかに、多くの変更および変形が可能である。実施形態は、本発明の原理およびその実際的な適用例を最も適切に説明し、それによって、当分野の技術者が、本発明および様々な変更を伴う様々な実施形態を、企図される特定の用途に適するように最も適切に利用することができるようにするために選択され、記述されたものである。添付の特許請求の範囲およびその均等物が本発明の範囲を定義するものである。
【図面の簡単な説明】
【００５５】
【図１】３次元グラフィックスのための従来技術のパイプラインを示す図である。
【図２】本発明の一実施形態によるプログラマブルグラフィックスプロセッサを含む集積回路を示すブロック図である。
【図３】本発明の一実施形態によるプログラマブルグラフィックスプロセッサを示すブロック図である。
【図４】本発明の一実施形態による画素パケットの例を示す図である。
【図５】本発明の一実施形態による、画素パケットの画素パケットグループの行への配列の例を示す図である。
【図６】本発明の一実施形態による単一の算術論理演算装置を示すブロック図である。
【図７】本発明の一実施形態による２つの算術論理演算装置のシーケンスを示すブロック図である。
【図８】本発明の一実施形態による構成可能なプログラマブルグラフィックスプロセッサを示すブロック図である。
【図９】本発明の一実施形態による画素パケットの行のインターリービングを示す図である。
【図１０】本発明の一実施形態による構成レジスタを有する算術論理演算装置を示すブロック図である。
【図１１】本発明の一実施形態による構成可能なテスト点選択器を示すブロック図である。
【図１】
2007538319.tif 000003
【図２】
2007538319.tif 000004
【図３】
2007538319.tif 000005
【図４】
2007538319.tif 000006
【図５】
2007538319.tif 000007
【図６】
2007538319.tif 000008
【図７】
2007538319.tif 000009
【図８】
2007538319.tif 000010
【図９】
2007538319.tif 000011
【図１０】
2007538319.tif 000012
【図１１】
2007538319.tif 000013
【国際調査報告】
2007538319.tif 000014