説明

画像描画装置

【課題】キャッシュ効率を向上させ描画速度の速い画像描画装置を提供する。
【解決手段】画面の横方向の直線状の絵を書くために、横方向一直線状にテクセルを取得する場合を考える。このとき、16x16ブロックのテクセルに割り振るキャッシュアドレスは、横方向の組のテクセルをグループとし、グループの横側に隣接するグループは、異なるキャッシュアドレス領域が割り当てられたグループとなるようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像描画装置に関する。
【背景技術】
【0002】
従来、コンピュータグラフィックスなどの画像描画装置では、描画対象の物体にテクスチャを貼り付けるように描画することで、より写実的な描画を行う。
図1は、テクスチャの描画処理のイメージを説明する図である。
【0003】
描画対象には、表示装置の座標系が設定される。表示装置の表示単位は画素で、表示装置座標で画素の位置を示すように設定される。一方、テクスチャは、描画対象に貼り付ける画像データであり、画像データを構成する基本単位をテクセルという。テクセルは、テクスチャにローカルに設定されたテクセル座標によって指定される。図1の場合は、x−y座標が表示装置座標であり、例えば、x、yが整数値のときに画素の左下端の位置を示すように設定される。一方、u−v座標は、テクセル座標であり、テクスチャにローカルに設定された座標系で、例えば、u、vが整数値のときにテクセルの左下端の位置を示すように設定される。テクスチャは、拡大、縮小、回転などの操作を受けた後、描画対象に貼り付けられる。テクスチャを描画対象に貼り付ける場合には、テクセル座標を表示装置座標に変換して、テクセルのデータを画素に転写することによって行われる。
【0004】
図2は、画像描画装置のブロック構成図である。
CPU11から発行された描画コマンドは、コマンド解釈部14により解釈され、頂点処理部15において、描画の基本単位である三角形の頂点の座標が生成される。ラスタライザー16では、頂点座標が指定された三角形を表示装置に表示するために、対応する部分のテクスチャのデータの取得を行う。ラスタライザー16では、テクセル座標が生成され、キャッシュ内テクセル有無判定部17、テクセル座標−メモリアドレス変換部18、テクセル座標−キャッシュマッピングアドレス変換部19に渡される。キャッシュ内テクセル有無判定部17は、キャッシュ22内に、テクセル座標で指定されたテクセルが存在するか否かを判定する。テクセル座標−メモリアドレス変換部18では、テクセル座標で示されるテクセルの情報が格納されているメモリ21内のアドレスを計算する。テクセル座標−キャッシュマッピングアドレス変換部19では、テクセル座標から、このテクセル座標で示されるテクセルが格納されているキャッシュ22内のアドレスを計算する。アドレス出力部20は、キャッシュ内テクセル有無判定部17の判定結果が、キャッシュ22内に該当するテクセルが存在しないという判定であった場合に、テクセル座標−メモリアドレス変換部18からのメモリアドレスをメモリ21に出力し、テクセルを読み出させる。また、キャッシュ内テクセル有無判定部17からは、当該テクセルがキャッシュ22に無い場合には書き込み指示、当該テクセルがキャッシュ22にある場合には読み出し指示が出力され、キャッシュ22に与えられる。テクセル座標−キャッシュマッピングアドレス変換部19からのアドレスは、キャッシュ22に与えられて、当該テクセルの読出しに使われる。このように、キャッシュ22に、必要なテクセルがある場合には、キャッシュ22からテクセルを読出し、無い場合には、メモリ21からキャッシュ22にテクセルを転送した後、キャッシュ22からテクセルを読み出すようにする。
【0005】
読み出されたテクセルは、ピクセル処理部23に渡され、ピクセル処理部23において、貼り付けるべき表示装置座標が計算され、ピクセルデータとして使用される。ピクセルデータと表示装置座標は、メモリアドレス変換部24に渡され、表示メモリへの書き込みアドレスと、書き込みデータが生成される。表示メモリ12の生成された書き込みアドレスに書き込みデータが書き込まれ、表示装置13によって表示される。
【0006】
テクスチャは、容量の大きいメモリに格納され、必要なときに取り出し使用される。容量の大きいメモリ21は、画像描画装置の集積回路10とは分離されている。メモリ21と集積回路10との通信は、集積回路10の内部動作よりも遅い速度であるため、メモリ21と集積回路10との通信を減らすことが望まれる。そのために集積回路10内にテクスチャを保持するためのキャッシュ22を設ける。このときキャッシュ22の容量は、メモリの容量に比べ小さい容量となる。キャッシュのマッピング方式は、フルアソシアティブマッピングがもっともキャッシュ効率がよいが、コストが高いためダイレクトマッピングもしくは、その中間的なNウェイセットアソシアティブマッピングが使用される。
【0007】
図3は、2ウェイセットアソシエイティブマッピングを説明する図である。
一般に、Nウェイセットアソシエイティブマッピングでは、キャッシュをN個のウェイに分割するが、ここでは、2ウェイセットアソシエイティブマッピングについて説明する。図3では、キャッシュにウェイ0とウェイ1が設けられている。FIFO方式のキャッシュの場合、外部メモリからデータを転送するときには、2つのウェイを交互に利用する。1回目の転送では、ウェイ0にデータを転送し、2回目の転送では、ウェイ1にデータを転送する。3回目の転送では、FIFO方式であるので、古いほうのデータであるウェイ0のデータを上書きするよう、データをウェイ0に転送する。4回目の転送では、ウェイ1にデータを転送する。
【0008】
テクスチャ内のテクセル位置を表すテクセル座標をマッピングのためのキャッシュマッピングアドレスに変換する。変換はテクセル座標がマッピング位置を示す方法(例えば、特許文献1参照)が低コストであり使用されている。なお、画像描画装置を使用するときは、予めテクセル座標をメモリアドレスに変換し、テクスチャをメモリに格納する。
【0009】
図4は、u座標方向4テクセルとv座標方向4テクセルの計16テクセルをマッピング可能なダイレクトマッピングのキャッシュの例を示す図である。
テクスチャを1ワード1テクセルのキャッシュへマッピングする例である。図4の場合、ワード0からワード15の16ワードが格納可能となっている。1ワード1テクセルなので、16テクセルの格納が可能である。図4の上の図は、テクスチャがテクセルからなっている様子を示しており、テクセル0からテクセル15までが、16x16のブロックに示されている。この16x16のブロックのテクセルを、16ワードのキャッシュに、テクセル番号が0から順に、格納する。この16x16のブロックに含まれていないテクセルをキャッシュに格納する場合には、所望のテクセルを含む16x16ブロックを指定して、16テクセル分キャッシュに読み込む。すなわち、図4上に記載されているように、テクスチャをテクセル0〜15の16x16ブロックに分割し、このブロック単位で、キャッシュに読み込むようにする。
【0010】
図5は、図4の例におけるテクセル座標からキャッシュマッピングアドレスへの変換回路の回路図である。
図5の回路では、テクセル座標uとvの下位2ビット分の2本の信号線を使用する。テクセル座標uの最下位の信号線の信号は、キャッシュマッピングアドレスの最下位ビットであるアドレス[0]とする。テクセル座標uの2番目の信号線の信号は、キャッシュマッピングアドレスの下から2番目のビットであるアドレス[1]とする。テクセル座標vの最下位の信号線の信号は、キャッシュマッピングアドレスの下から3番目のアドレス[2]とする。テクセル座標vの2番目の信号線の信号は、キャッシュマッピングアドレスの下から4番目のアドレス[3]とする。
【0011】
図6は、図5の回路の動作を図示したものである。
キャッシュメモリが、テクセル座標(0,0)〜(3,3)の矩形を格納するとする。その場合の順番は、
テクセル座標(0,0)をアドレス0に格納
テクセル座標(1,0)をアドレス1に格納
テクセル座標(2,0)をアドレス2に格納
テクセル座標(3,0)をアドレス3に格納
・・・
テクセル座標(3,3)をアドレス15に格納
となり、これを式で表すと、
アドレス=v*4+uとなる。
【0012】
この式の意味は、テクセル座標vのビットを2ビット分高位にシフトし、uと加算するということである。したがって、キャッシュマッピングアドレスは、上位2ビットがvで、下位2ビットがuとなる4ビットの値となる。
【0013】
また、特許文献2には、ピクセル座標をメモリ座標に変換する技術が開示されている。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特表2002−504251号公報
【特許文献2】特開平3−292575号公報
【発明の概要】
【発明が解決しようとする課題】
【0015】
図7は、従来の問題点を説明する図である。
今、取得したいテクスチャが横方向の一直線上にあるとする。この場合、(1)のブロックをキャッシュへ読み込んで、テクスチャ0〜3をピクセル処理部に送り、次に、(2)のブロック、その次に(3)のブロックをキャッシュへ読み込み、テクスチャ0〜3をピクセル処理部に送る。したがって、使用するのは、常にテクスチャ0〜3のみであり、キャッシュのワード0〜3しか使われない。
【0016】
すなわち、実際描画する場合に必要とするテクセルはテクスチャ内に一直線上にあり、メモリから取得しキャッシュへマッピングした場合、キャッシュの一部分しか使用されず、(1)のブロックから、(2)、(3)のブロックというように頻繁に上書きが発生し、描画速度が遅いという問題を生じていた。
【0017】
本発明の課題は、キャッシュ効率を向上させ描画速度の速い画像描画装置を提供することである。
【課題を解決するための手段】
【0018】
本発明の画像描画装置は、複数のテクセルからなるテクスチャを貼り付けることにより画像を描画する画像描画装置において、テクスチャを格納するメモリと、貼り付けに使用されるテクスチャを、複数のテクスチャ領域に分割してキャッシュマッピングアドレスを割り当て、格納するキャッシュと、分割されたテクスチャ領域の境界に隣接するテクスチャ領域は、異なるキャッシュマッピングアドレスが割り当てられたテクスチャ領域となるように、テクセル座標をキャッシュマッピングアドレスに変換する変換回路と、該キャッシュからテクセルを取得し表示装置の座標系で描画を行う描画回路とを備える。
【発明の効果】
【0019】
本発明によれば、キャッシュ効率を向上させ描画速度の速い画像描画装置を提供することができる。
【図面の簡単な説明】
【0020】
【図1】テクスチャの描画処理のイメージを説明する図である。
【図2】画像描画装置のブロック構成図である。
【図3】2ウェイセットアソシエイティブマッピングを説明する図である。
【図4】u座標方向4テクセルとv座標方向4テクセルの計16テクセルをマッピング可能なダイレクトマッピングのキャッシュの例を示す図である。
【図5】図4の例におけるテクセル座標からキャッシュマッピングアドレスへの変換回路の回路図である。
【図6】図5の回路の動作を示す図である。
【図7】従来の問題点を説明する図である。
【図8】本発明のテクセル座標とキャッシュマッピングアドレスの変換を示した図である。
【図9】本発明の実施形態のキャッシュマッピングアドレス変換の回路図である。
【図10】本発明の他の実施形態を説明する図である。
【図11】図10の実施形態のキャッシュマッピングアドレス変換の回路図である。
【発明を実施するための形態】
【0021】
本発明の画像描画装置は、テクスチャをマッピングするメモリと、複数の領域に分割されたキャッシュと、テクセル座標をキャッシュマッピングアドレスへ変換時に複数に分割されたキャッシュ領域の境界(左右の接辺のある部分)は必ず異なる領域となる変換回路とキャッシュからテクセルを取得し画像描画を行う回路を特徴とするものである。
【0022】
図8は、本発明のテクセル座標とキャッシュマッピングアドレスの変換を示した図である。
図8では、u座標方向4テクセルとv座標方向4テクセルの計16テクセルをマッピング可能なダイレクトマッピングのキャッシュの例を示している。テクスチャ内の数値はキャッシュのマッピング位置を示している。テクスチャを複数の領域に分割するためキャッシュマッピングの0,1,2,3をグループA、4,5,6,7をグループB、8,9,10,11をグループC、12,13,14,15をグループDと定義する。テクセルのキャッシュマッピングは、グループAの境界(接辺)にグループB,C,Dのいずれかを配置することとする。グループBの境界(接辺)にグループA,C,Dのいずれかを配置することとする。グループCの境界(接辺)にグループA,B,Dのいずれかを配置することとする。グループDの境界(接辺)にグループA,B,Cのいずれかを配置することとする。図8は、この条件に一致するように配置した例である。
【0023】
図8のように、取得したいテクスチャが、横方向の一直線であるとする。キャッシュにテクスチャを読み込む場合、16x16のブロック単位で読み込むのではなく、取得したいテクスチャを直接読み込むようにする。取得したい直線上には、テクスチャ0〜3、テクスチャ8〜11が配列され、以後、この繰り返しとなる例が示されている。16x16のブロックのテクスチャ0〜15に、キャッシュのワード0〜15が割り当てられているが、このブロックを読み込むのではなく、テクスチャ0〜3とその左隣のテクスチャ8〜11を読み込むようにする。このようにしても、テクスチャ0〜3が割り当てられるキャッシュのアドレス位置は、ワード0〜3であり、テクスチャ8〜11には、ワード8〜11が割り当てられるので、キャッシュ内で、同じワードに2つのデータを書き込むようなことは起こらない。従来の場合は、横方向の直線を読み込もうとした場合、16x16のブロックごとに、同じワードがテクスチャに割り当てられていた。したがって、図7のように、ワード0〜3が不要に上書きされないように、テクスチャ0〜3を順次、前の処理が終わってから読み込む必要があった。しかし、図8のように、テクスチャに割り振るキャッシュのワードを隣り合う16x16ブロックの間で切り替えることにより、ブロックをまたいで、テクスチャを読み込むことが出来るようになる。これにより、キャッシュの格納領域もより使用率が高まる。図8では、2つの16x16ブロックごとに、同じキャッシュアドレスの割り当てが繰り返されるようになっているが、3つのブロックごと、あるいは、4つのブロックにわたって、隣接するテクスチャグループが異なるようにすることにより、よりキャッシュの使用率が高まると共に、メモリからテクスチャを読み込みキャッシュへ上書きを行う頻度を少なくすることが出来る。
【0024】
図8は、u座標方向4テクセルとv座標方向4テクセルの計16テクセルをマッピング可能なダイレクトマッピングのキャッシュの例を示したものであるがキャッシュの容量によってu座標方向、v座標方向ともにテクセル数を増やすことが可能である。
【0025】
また、テクスチャ内の数値は1テクセルに割り当てているが、キャッシュ容量が大きい場合、テクスチャ内の数値は複数テクセルに割り当てることもできる。例えば、キャッシュマッピング位置0には4テクセルマッピングするということが可能である。
【0026】
更に、上記実施形態は、ダイレクトマッピングの例であるが、Nウェイセットアソシアティブにおいても1つのウェイ内ではダイレクトマッピングであるため、上記実施形態を適用可能である。
【0027】
図9は、本発明の実施形態のキャッシュマッピングアドレス変換の回路図である。
図9の回路においては、図8のキャッシュマッピングを実現する。テクセル座標uは、下位3ビット、すなわち、最下位ビットu[0]、下から2番目のビットu[1]、下から3番目のビットu[2]を使用する。テクセル座標vは、下位2ビット、すなわち、最下位ビットv[0]、下から2番目のビットv[1]を使用する。u[0]と、u[1]は、そのまま、キャッシュマッピングアドレスの下位2ビット、すなわち、アドレス[0]、アドレス[1]とする。すなわち、テクセルが横方向に4つ並んでいる場合には、連続したキャッシュマッピングアドレスとする意味である。テクセル座標v[0]は、そのまま、キャッシュマッピングアドレスの3ビット目、アドレス[2]とする。これは、テクセルが、2列上下に並んでいる場合には、そのままマッピングする意味である。テクセル座標uの3ビット目、u[2]と、テクセル座標vの2ビット目、v[1]は、XOR回路30に入力される。これは、テクセル座標vが1変化する、すなわち、テクセル座標vが0、1の場合と、2、3の場合とで、キャッシュマッピングアドレスのアドレス[3]を切り替える意味である。同様に、テクセル座標u[2]が変化する、すなわち、テクセル座標が、8個変化するごとに、キャッシュマッピングアドレス[3]を切り替える意味である。すなわち、u[2]が同じ場合には、v[1]が1変化する、すなわち、上に4つ行くと、アドレス[3]が元に戻る、すなわち、キャッシュマッピングのアドレスが元に戻ることを意味する。テクセル座標u[3]が変化すると、すなわち、横に8個進むと、キャッシュマッピングアドレスが元に戻ることを意味する。
以上により、図8のテクセル座標−キャッシュマッピングアドレス変換が実現される。
【0028】
図10は、本発明の他の実施形態を説明する図である。
他の実施形態として、以下のようなものが考えられる。すなわち、テクスチャを複数の領域に分割するためキャッシュマッピングの0,1をグループA、2,3をグループB、4,5をグループC、6,7をグループD、8,9をグループE、10,11をグループF、12,13をグループG、14,15をグループHと定義する。テクセルのキャッシュマッピングは、グループAの境界(接辺)にグループB,C,D,E,F,G,Hのいずれかを配置することとする。グループBの境界(接辺)にグループA,C,D,E,F,G,Hのいずれかを配置することとする。グループCの境界(接辺)にグループA,B,D,E,F,G,Hのいずれかを配置することとする。グループDの境界(接辺)にグループA,B,C,E,F,G,Hのいずれかを配置することとする。グループEの境界(接辺)にグループA,B,C,D,F,G,Hのいずれかを配置することとする。グループFの境界(接辺)にグループA,B,C,D,E,G,Hのいずれかを配置することとする。グループGの境界(接辺)にグループA,B,C,D,E,F,Hのいずれかを配置することとする。グループHの境界(接辺)にグループA,B,C,D,E,F,Gのいずれかを配置することとする。図10は、この条件に一致するように配置した例である。
【0029】
図10の場合においては、テクセルを2つずつ組にして、キャッシュに格納する。1つの組の横には、同じキャッシュマッピングアドレスを持たない組を配置するようにする。図10の取得したいテクスチャ上には、テクセル0,1、テクセル6,7、テクセル4,5、テクセル2,3が配列され、これが、横方向に繰り返すようになっている。したがって、これらのテクセルを格納するキャッシュ領域は、ワード0,1、ワード6,7、ワード4,5、ワード2,3であり、互いに重なっていないので、一度にキャッシュに読み込むことが出来ると共に、ワード0〜7をすべて使っているので、キャッシュ容量の使用率も向上する。
【0030】
図11は、図10の実施形態のキャッシュマッピングアドレス変換の回路図である。
テクセル座標uは、u[0]、u[1]、u[2]の下位3ビットを使用する。テクセル座標vは、v[0]、v[1]の下位2ビットを使用する。u[0]、u[1]は、そのままキャッシュマッピングアドレス、アドレス[0]、アドレス[1]とする。v[0]は、アドレス[3]とする。これは、v[0]が3変化する、すなわち、上方向に2個移動すると、アドレスが元に戻ることを意味する。v[1]とu[1]は、XOR回路31に入力される。XOR回路31の出力は、u[2]と共に、XOR回路32に入力される。すなわち、XOR回路31のアドレスの切り替えと、XOR回路32のアドレスの切り替えとのANDの切り替えが起きることを意味している。XOR回路31では、v[1]が変化する、すなわち、上方向に4つ進むか、u[1]が変化する、すなわち、横方向に4つ進むかすると、アドレスの切り替えが起きることを意味している。XOR回路32では、XOR回路31の切り替えのほかに、u[2]が変化する、すなわち、横方向に8つ進むと、切り替えが起きることを意味する。すなわち、XOR回路31と32の組み合わせで、上方向に4つ進むか、横方向に4つ進むか、横方向に8つ進むか、のいずれかが発生すると、アドレスの切り替えが起きるようになっている。
【0031】
本発明の実施形態では、テクスチャ内の一直線上のテクセルは、キャッシュマッピングの重複が発生する前にマッピングアドレスを別のキャッシュ領域へ割り当てる。
また、テクスチャのテクセルがマッピングされたメモリからテクセルを取得し、テクスチャ内の一直線上のテクセルは重複なくキャッシュへマッピングすることができることでキャッシュ効率がよく、速度の遅いメモリ間通信が低減され高速な画像描画を可能とする。
【符号の説明】
【0032】
10 画像描画装置(集積回路)
11 CPU
12 表示メモリ
13 表示装置
14 コマンド解釈部
15 頂点処理部
16 ラスタライザー
17 キャッシュ内テクセル有無判定部
18 テクセル座標−メモリアドレス変換部
19 テクセル座標−キャッシュマッピングアドレス変換部
20 アドレス出力部
21 メモリ
22 キャッシュ
23 ピクセル処理部
24 メモリアドレス変換部
30〜32 XOR回路

【特許請求の範囲】
【請求項1】
複数のテクセルからなるテクスチャを貼り付けることにより画像を描画する画像描画装置において、
テクスチャを格納するメモリと、
貼り付けに使用されるテクスチャを、複数のテクスチャ領域に分割してキャッシュマッピングアドレスを割り当て、格納するキャッシュと、
分割されたテクスチャ領域の境界に隣接するテクスチャ領域は、異なるキャッシュマッピングアドレスが割り当てられたテクスチャ領域となるように、テクセル座標をキャッシュマッピングアドレスに変換する変換回路と、
該キャッシュからテクセルを取得し表示装置の座標系で描画を行う描画回路と、
を備えることを特徴とする画像描画装置。
【請求項2】
前記テクスチャ領域は、16x16テクセルのブロックを横方向に分割した領域であることを特徴とする請求項1に記載の画像描画装置。
【請求項3】
前記テクスチャ領域は、16x16テクセルのブロックを、横方向に2テクセルずつ組にした領域であることを特徴とする請求項1に記載の画像描画装置。
【請求項4】
前記変換回路は、前記テクセル座標の下位ビット信号を伝播する信号線と、
前記テクセル座標の前記キャッシュマッピングアドレスへの変換方法に応じて、下位ビット同士のXORを演算するXOR回路と、
からなることを特徴とする請求項1に記載の画像描画装置。
【請求項5】
複数のテクセルからなるテクスチャを貼り付けることにより画像を描画する画像描画方法において、
テクスチャを格納し、
分割されたテクスチャ領域の境界に隣接するテクスチャ領域は、異なるキャッシュマッピングアドレスが割り当てられたテクスチャ領域となるように、テクセル座標をキャッシュマッピングアドレスに変換し、
貼り付けに使用されるテクスチャを、複数のテクスチャ領域に分割してキャッシュマッピングアドレスを割り当て、格納し、
該キャッシュからテクセルを取得し表示装置の座標系で描画を行う、
ことを特徴とする画像描画方法。

【図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

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2010−198156(P2010−198156A)
【公開日】平成22年9月9日(2010.9.9)
【国際特許分類】
【出願番号】特願2009−40328(P2009−40328)
【出願日】平成21年2月24日(2009.2.24)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】