画像処理装置
【課題】画像処理装置において、処理性能の低下を抑制すること。
【解決手段】テクスチャデータを格納するメモリ部1、メモリ部1に格納されているテクスチャデータの一部を格納するキャッシュ部2、キャッシュ部2に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する判定部3、判定部3によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する保持部4を備える。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とする。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とする。
【解決手段】テクスチャデータを格納するメモリ部1、メモリ部1に格納されているテクスチャデータの一部を格納するキャッシュ部2、キャッシュ部2に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する判定部3、判定部3によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する保持部4を備える。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とする。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とする。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、テクスチャマッピング処理を行う画像処理装置に関する。
【背景技術】
【0002】
従来、テクスチャマッピング処理を行う画像処理装置において、外部メモリが保持するテクスチャデータの一部を保持するキャッシュメモリを備える装置が知られている(例えば、特許文献1、特許文献2、特許文献3、特許文献4参照。)。このような画像処理装置において、例えば、テクスチャデータの使用率が境界値以上である場合に、キャッシュメモリを有効とし、境界値未満の場合に、キャッシュメモリを無効とする画像処理装置が知られている(例えば、特許文献1参照。)。また、テクスチャデータを記憶する主メモリを持つホストコンピュータ、テクスチャデータの一部を記憶するローカルメモリ(キャッシュメモリ)、および最も最近アクセスされたローカルメモリ中のテクセルを記憶するテクセル・データバッファを備える装置が知られている。この装置では、テクスチャデータはテクセル・データバッファからアクセスされるが、テクセル・データバッファに読み取るべきテクセルが存在しない場合に限ってローカルメモリに記憶されているテクセルがアクセスされる(例えば、特許文献2参照。)。また、ヒットまたはミスしたテクスチャデータリクエストに関連したアドレスをFIFO(First−In First−Out、先入れ先出し)メモリに格納し、(n+1)番目の未処理テクスチャリクエストミスに遭遇すると、テクスチャエンジンが停止する装置が知られている(例えば、特許文献3参照。)。また、テクスチャを記憶する主メモリと、最も新しく使用されたテクスチャを記憶するキャッシュメモリと、を備え、主メモリに対する記憶アクセスサイクルをキャッシュメモリに対する読み出しサイクルと並行して行う装置が知られている(例えば、特許文献4参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−59266号公報
【特許文献2】特開平8−329260号公報
【特許文献3】特表2001−507152号公報
【特許文献4】特表平9−510309号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、キャッシュミスが発生すると、テクスチャデータを保持するメモリ(上記例では、外部メモリや主メモリに相当)から該当するテクスチャデータを読み出してキャッシュメモリに格納するまでの待ち時間が発生するため、処理性能が低下してしまうという問題点がある。
【0005】
処理性能の低下を抑制することができる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
この画像処理装置は、メモリ部、キャッシュ部、判定部、保持部およびデータ処理部を備える。メモリ部は、テクスチャデータを格納する。キャッシュ部は、メモリ部に格納されているテクスチャデータの一部を格納する。判定部は、キャッシュ部に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する。保持部は、判定部によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する。データ処理部は、保持部に情報が保持されているピクセルにより必要とされるデータがキャッシュ部に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とする。データ処理部は、保持部に情報が保持されているピクセルにより必要とされるデータがキャッシュ部に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とする。
【発明の効果】
【0007】
この画像処理装置によれば、処理性能の低下を抑制することができるという効果を奏する。
【図面の簡単な説明】
【0008】
【図1】実施例1にかかる画像処理装置を示すブロック図である。
【図2】実施例2にかかる画像処理装置を含む画像処理システムを示すブロック図である。
【図3】実施例2にかかる画像処理装置を示すブロック図である。
【図4】実施例2にかかる画像処理装置のラスタライズ部を示すブロック図である。
【図5】描画対象のピクセルとキャッシュの予測対象のピクセルとの関係を説明する図である。
【図6】実施例2にかかる画像処理装置のミスリスト部を示すブロック図である。
【図7】実施例2にかかる画像処理装置のミスリスト部の格納情報の一例を示す説明図である。
【図8】実施例2にかかる画像処理装置のリスト制御部の一例を示す回路図である。
【図9】図8に示す回路の動作を説明する真理値表である。
【図10】実施例2にかかる画像処理装置のリスト制御部の一例を示す回路図である。
【図11】図10に示す回路の動作を説明する真理値表である。
【図12】図10に示す回路の動作を説明する真理値表である。
【図13】図10に示す回路の動作を説明する真理値表である。
【図14】図10に示す回路の動作を説明する真理値表である。
【図15】図10に示す回路の動作を説明する真理値表である。
【図16】図10に示す回路の動作を説明する真理値表である。
【図17】図10に示す回路の動作を説明する真理値表である。
【図18】図10に示す回路の動作を説明する真理値表である。
【図19】図10に示す回路の動作を説明する真理値表である。
【図20】図10に示す回路の動作を説明する真理値表である。
【図21】図10に示す回路の動作を説明する真理値表である。
【図22】図10に示す回路の動作を説明する真理値表である。
【図23】図10に示す回路の動作を説明する真理値表である。
【図24】図10に示す回路の動作を説明する真理値表である。
【図25】図10に示す回路の動作を説明する真理値表である。
【図26】実施例2にかかる画像処理装置のテクスチャキャッシュ部を示すブロック図である。
【図27】実施例2にかかる画像処理装置のテーブルの格納情報の一例を示す説明図である。
【図28】実施例2にかかる画像処理装置のテクスチャキャッシュ部における処理を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、この画像処理装置の好適な実施の形態を詳細に説明する。
【0010】
(実施例1)
図1は、実施例1にかかる画像処理装置を示すブロック図である。図1に示すように、画像処理装置は、メモリ部1、キャッシュ部2、判定部3、保持部4およびデータ処理部5を備える。メモリ部1は、テクスチャデータを格納する。キャッシュ部2は、メモリ部1に格納されているテクスチャデータの一部を格納する。判定部3は、キャッシュ部2に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する。保持部4は、判定部3によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する。例えば、データ処理部5は、判定部3に将来描画の対象となるピクセルの位置の情報を与える。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とする。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とする。
【0011】
実施例1によれば、予め判定部3によりキャッシュミスを起こすと判定されたピクセルの描画を、当該ピクセルが必要とするテクスチャデータがキャッシュ部2に格納されるまで先延ばしにすることができる。それによって、キャッシュミスが発生するピクセルへのアクセスを避けることができるので、メモリ部1から該当するテクスチャデータを読み出してキャッシュ部2に格納するまでの待ち時間をなくすことができる。従って、処理性能の低下を抑制することができる。
【0012】
(実施例2)
・画像処理システムの説明
図2は、実施例2にかかる画像処理装置を含む画像処理システムを示すブロック図である。図2に示すように、画像処理システムは、メモリ11、ホストプロセッサ12、グラフィックスチップ13、ディスプレイ14およびバス15を備えている。メモリ11は、ディスプレイ14に表示されるオブジェクトの形状データやテクスチャデータを格納する。ホストプロセッサ12は、アプリケーションプログラムを実行し、アプリケーションプログラムによる描画の要求に基づいてグラフィックスチップ13にコマンドやデータを送る。グラフィックスチップ13は、ホストプロセッサ12からコマンドやデータを受け取り、描画を行う。ディスプレイ14は、グラフィックスチップ13の描画結果を出力する。メモリ11、ホストプロセッサ12およびグラフィックスチップ13は、バス15に接続されている。グラフィックスチップ13は、実施例2にかかる画像処理装置として動作する。
【0013】
・画像処理装置(グラフィックスチップ)の説明
図3は、実施例2にかかる画像処理装置を示すブロック図である。図3に示すように、画像処理装置(グラフィックスチップ13)は、インタフェース部21、セットアップ部22、ラスタライズ部23、テクスチャ部24、テクスチャキャッシュ部25、フレームバッファ部26およびテクスチャメモリ部27を備えている。画像処理装置は、将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定し、キャッシュミスを起こすピクセルを避けるように描画順序を変更してテクスチャマッピング処理を行う。
【0014】
インタフェース部21は、ホストプロセッサ12から描画データおよびテクスチャデータを受け取る。インタフェース部21は、描画データをセットアップ部22へ送る。インタフェース部21は、テクスチャデータをテクスチャメモリ部27に書き込む。テクスチャメモリ部27には、テクスチャイメージが複数のブロックに分割されて格納される。分割されたテクスチャイメージの各ブロックには、一意のブロック番号が付与される。セットアップ部22は、インタフェース部21から与えられた描画データを、ラスタライズ部23での処理に適したデータ(セットアップデータ)に変換する。セットアップ部22は、セットアップデータをラスタライズ部23へ送る。
【0015】
ラスタライズ部23は、セットアップ部22から与えられたセットアップデータに基づいて1ピクセルずつ描画位置を求める。ラスタライズ部23は、1ピクセルずつ図形を描画する。ラスタライズ部23は、現在の描画位置にあるピクセルのテクスチャ座標(第1座標データ)を算出し、該第1座標データをテクスチャ部24に渡す。ラスタライズ部23は、現在の描画位置よりも後の描画位置(予測位置)にあるピクセル、すなわち将来描画の対象となるピクセルのテクスチャ座標(第2座標データ)を算出し、該第2座標データをテクスチャ部24に渡す。ラスタライズ部23は、テクスチャキャッシュ部25からキャッシュの判定結果としてヒット情報を受け取る。ラスタライズ部23は、テクスチャキャッシュ部25から、キャッシュに読み込まれたテクスチャイメージのブロックの情報としてブロック読み込み情報を受け取る。
【0016】
テクスチャ部24は、ラスタライズ部23から与えられた第1座標データを第1アドレスデータに変換し、該第1アドレスデータをテクスチャキャッシュ部25に渡す。第1アドレスデータは、現在の描画位置にあるピクセルのテクスチャアドレスのデータである。テクスチャ部24は、第1アドレスデータに対応するテクスチャデータをテクスチャキャッシュ部25から受け取り、該テクスチャデータをピクセルデータとしてフレームバッファ部26に書き込む。テクスチャ部24は、ラスタライズ部23から与えられた第2座標データを第2アドレスデータに変換し、該第2アドレスデータをテクスチャキャッシュ部25に渡す。第2アドレスデータは、前記予測位置にあるピクセルのテクスチャアドレスのデータである。
【0017】
テクスチャキャッシュ部25は、テクスチャメモリ部27とテクスチャ部24との間でキャッシュ処理を行う。テクスチャキャッシュ部25には、テクスチャメモリ部27からテクスチャイメージのブロックの単位でデータが読み込まれる。テクスチャキャッシュ部25は、テクスチャ部24から与えられた第1アドレスデータに対応するテクスチャデータをテクスチャ部24に返す。テクスチャキャッシュ部25は、該当するテクスチャデータを有していない場合には、テクスチャメモリ部27から該当するテクスチャデータを読み込む。テクスチャキャッシュ部25は、テクスチャ部24から与えられた第2アドレスデータに対応するテクスチャデータを有しているか否かを判断し、その判断結果およびブロック番号をヒット情報としてラスタライズ部23に渡す。テクスチャキャッシュ部25は、ラスタライズ部23が必要とするテクスチャイメージのブロックをテクスチャメモリ部27から読み込むと、当該ブロックのブロック番号をブロック読み込み情報としてラスタライズ部23に渡す。テクスチャメモリ部27は、実施例1のメモリ部に相当する。
【0018】
・ラスタライズ部の説明
図4は、実施例2にかかる画像処理装置のラスタライズ部を示すブロック図である。図4に示すように、ラスタライズ部23は、描画位置情報生成部31、補間処理部32、ミス領域情報生成部33およびミスリスト部34を備えている。描画位置情報生成部31は、セットアップ部22から与えられたセットアップデータの情報と、ミスリスト部34から与えられた第1領域情報および第2領域情報とに基づいて、今まさに描画しようとしているピクセルの位置の情報(描画位置情報)を生成し、該描画位置情報を補間処理部32に渡す。第1領域情報および第2領域情報については、後述する。描画位置情報生成部31は、将来描画の対象となるピクセルの位置の情報(予測位置情報)を生成し、該予測位置情報をミス領域情報生成部33に渡す。描画位置情報生成部31は、描画の済んだピクセルのうち、最も進んだ位置にあるピクセルの位置の情報(走査位置情報)をミスリスト部34に渡す。描画位置情報生成部31は、実施例1のデータ処理部として動作する。
【0019】
図5は、描画対象のピクセルとキャッシュの予測対象のピクセルとの関係を説明する図である。図5において、特に限定しないが、例えば画像処理装置は、各行の左から右に向かって描画を進め、ある行の右端まで描画が済んだら、上の行を描画することとする。すなわち、図5に示す例では、描画装置は、P11のピクセルからP71のピクセルへ向かって描画を進め、P71のピクセルの描画が済んだら、P12のピクセルからP72のピクセルへ向かって描画を進める。なお、描画領域は、2行7列のマトリックスに限らない。また、各行の右から左に向かって描画を進めてもよいし、ある行の描画が済んだら、下の行を描画するようにしてもよい。P11からP71へ至る方向をX方向とし、P11からP12へ至る方向をY方向とする。
【0020】
描画位置情報生成部31は、aを1から7までの整数とすると、例えばPa1のピクセルを今まさに描画しようとしているときに、このPa1のピクセルよりも後に描画の対象となるPa2のピクセルをキャッシュの予測対象のピクセルとする。従って、描画位置情報生成部31は、描画位置情報としてPa1のピクセルの位置情報を出力し、予測位置情報としてPa2のピクセルの位置情報を出力する。実施例2では、キャッシュミスを起こすと判定され、かつテクスチャイメージの同じブロック番号のブロックに含まれる連続した複数のピクセルは、ミス領域情報生成部33によって一つのミス領域として扱われる。例えば、図5に示すように、予測対象のピクセル列において、P32、P42、P52およびP62の各ピクセルがキャッシュミスを起こすと判定され、かつP32のピクセルとP42のピクセルとがテクスチャイメージの同じブロック番号のブロックに含まれる場合、P32のピクセルとP42のピクセルとは一つのミス領域(ミス領域1)として扱われる。P52のピクセルおよびP62のピクセルについても同様であり、P52のピクセルとP62のピクセルとは、ミス領域1とは別のミス領域(ミス領域2)として扱われる。ミス領域に関する情報(ミス領域情報)は、後述するミス領域情報生成部33において生成される。ミス領域情報生成部33で生成されたミス領域情報は、後述するミスリスト部34に保持される。ミスリスト部34には、複数のミス領域情報が保持される。
【0021】
描画位置情報生成部31は、次の(A)から(D)のいずれかに従って、今まさに描画しようとしているピクセルの位置を生成する。
(A)最も古いミス領域が必要とするデータがキャッシュに読み込まれた場合、今まさに描画しようとしているピクセルの位置は、最も古いミス領域の開始位置となる。この場合には、描画位置は、前に戻ることになる。最も古いミス領域の情報は、前記第2領域情報から得られる。描画位置情報生成部31は、後述する第2領域情報のフラグを参照することによって、最も古いミス領域が必要とするデータがキャッシュに読み込まれたか否かを判定する。
(B)今まさに描画しようとしているピクセルの位置がミス領域の開始位置に一致する場合、新たに、当該ミス領域の次の位置が、今まさに描画しようとしているピクセルの位置となる。この場合には、今まさに描画しようとしているピクセルに必要なデータがキャッシュにないので、当該ピクセルの描画が後回しにされることになる。今まさに描画しようとしているピクセルの位置に開始位置が一致するミス領域の情報は、前記第1領域情報から得られる。
(C)前記(A)の条件も前記(B)の条件も満たさず、かつミスリスト部34に空きがある場合、今まさに描画しようとしているピクセルの位置は、当初の順番通りの位置となる。
(D)前記(A)、前記(B)および前記(C)のいずれの条件も満たさない場合、最も古いミス領域が必要とするデータがキャッシュに読み込まれるまで待機する。
【0022】
図4において、補間処理部32は、描画位置情報生成部31から与えられた描画位置情報(今まさに描画しようとしているピクセルの位置の情報)に基づいて、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標を生成し、該テクスチャ座標を第1座標データとして出力する。補間処理部32は、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標に基づいて、将来描画の対象となるピクセルの位置に対応するテクスチャ座標を生成し、該テクスチャ座標を第2座標データとして出力する。
【0023】
補間処理部32は、例えば次のようにして将来描画の対象となるピクセルの位置に対応するテクスチャ座標を生成する。3次元グラフィックス描画処理では、多角形、例えば三角形のポリゴンの各頂点にテクスチャ座標(s,t)を設定し、次の(1)式に基づいて各ピクセルにおけるテクスチャ座標が算出される。下記(1)式については、同様の式が「The OpenGLR Graphics System:A Specification(Version 3.1 − May 28, 2009)」(インターネット<URL:http://www.opengl.org/registry/doc/glspec31.20090528.pdf>)の第97頁に同様の式が記載されている。
【0024】
【数1】
【0025】
上記(1)式において、s(x,y)は、画面上の点(x,y)における図形のテクスチャ座標のs成分である。xはXY座標軸におけるX座標であり、yはXY座標軸におけるY座標である。sa、sbおよびscは、三角形の各頂点におけるテクスチャ座標のs成分の値である。wa、wbおよびwcは、三角形の各頂点の同次座標のw成分であり、定数である。μa、μbおよびμcは、点(x,y)における三角形の重心座標と呼ばれる値であり、点(x,y)の値に応じて変化する。従って、s(x,y)の分母および分子は、xとyの関数である。三角形の重心座標は、点(x,y)に対して線形に変化するので、s(x,y)の分母R(x,y)および分子F(x,y)は、ともに線形に変化する。従って、F(x,y)のy方向の変化FyおよびR(x,y)のy方向の変化Ryは、ともに定数である。以上のことから、テクスチャ座標sのY方向への変化syは、次の(2)式で求められる。
【0026】
【数2】
【0027】
上記(2)式において、Rの逆数は、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標を求める際に既に求められている。FyおよびRyが定数であるので、上記(2)式の計算を容易に行うことができる。また、演算精度を適当に設定することによって、上記(2)式の演算処理を軽減させることができる。特に限定しないが、例えば、将来キャッシュミスを起こすか否かを判定する対象を、今まさに描画しようとしているピクセルの真上のピクセルとする場合、将来キャッシュミスを起こすか否かの判定対象となるピクセルのテクスチャ座標s(x,y+1)は、次の(3)式で表される一次近似式で求められる。3次元グラフィックスでは、図形に張られたテクスチャ画像が射影などの効果により歪むが、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標とテクスチャ座標のY方向の変化率とから、将来キャッシュミスを起こすか否かの判定対象となるピクセルのテクスチャ座標を求めることができる。
【0028】
【数3】
【0029】
ミス領域情報生成部33は、描画位置情報生成部31から与えられた予測位置情報(将来描画の対象となるピクセルの位置の情報)と、当該ピクセルが必要とするデータがキャッシュにあるか否かを判定した結果であるヒット情報とに基づいて、ミス領域情報を生成する。ミス領域情報には、当該ミス領域に含まれるピクセルが属するテクスチャイメージのブロックのブロック番号、当該ミス領域に含まれるピクセルのY座標、当該ミス領域の開始位置にあるピクセルのX座標(開始X座標)および当該ミス領域の終了位置にあるピクセルのX座標(終了X座標)の各情報が含まれる。ミス領域情報生成部33は、一時的にミス領域情報を格納する作業領域を備えている。
【0030】
ミス領域情報生成部33は、この作業領域を用いて、次の(E)から(H)に従ってミス領域情報を生成する。ミス領域情報生成部33は、ヒット情報がミスである場合、ヒット情報からブロック番号を取得し、予測位置情報からY座標、開始X座標および終了X座標を取得する。
(E)作業領域が空であり、ヒット情報がミスである場合、ミス領域情報生成部33は、作業領域に、取得したブロック番号、Y座標、開始X座標および終了X座標の各情報を格納する。
(F)作業領域にブロック番号、Y座標、開始X座標および終了X座標の各情報が格納されており、ヒット情報がミスであり、新たに取得したブロック番号およびY座標が既に作業領域に格納されている各情報と一致している場合、ミス領域情報生成部33は、作業領域の終了X座標を新たに取得した終了X座標に更新する。
(G)作業領域にブロック番号、Y座標、開始X座標および終了X座標の各情報が格納されており、ヒット情報がミスであり、新たに取得したブロック番号またはY座標が既に作業領域に格納されている各情報と異なっている場合、ミス領域情報生成部33は、作業領域に既に格納されている情報を一つのミス領域情報として、ミスリスト部34へ送る。その後、ミス領域情報生成部33は、作業領域に新たに取得したブロック番号、Y座標、開始X座標および終了X座標の各情報を格納する。
(H)前記(E)、前記(F)および前記(G)のいずれの条件も満たさない場合、ミス領域情報生成部33は、作業領域に既に格納されている情報を一つのミス領域情報として、ミスリスト部34へ送る。その後、ミス領域情報生成部33は、作業領域を空にする。
【0031】
図6は、ミスリスト部を示すブロック図である。図6に示すように、ミスリスト部34は、複数の格納部41,42,43,44,45およびリスト制御部46を備えている。図示例では、第1から第5までの5個の格納部が設けられているが、格納部の数は2個、3個、4個または6個以上でもよい。各格納部41,42,43,44,45は、例えばレジスタを備えている。リスト制御部46は、各格納部41,42,43,44,45の動作を制御する。各格納部41,42,43,44,45は、ミス領域情報生成部33から与えられたミス領域情報を格納する。nを1以上の整数とすると、第n格納部は、リスト制御部46へ第n一致信号および第nバリッド信号を出力する。リスト制御部46は、第n格納部へ第nロード信号、第nリムーブ信号、第nシフト信号および第nアベイル信号を出力する。ミスリスト部34は、実施例1の保持部として動作する。
【0032】
リスト制御部46は、各格納部へのロード信号によって、ミス領域情報を第1格納部41、第2格納部42、・・・、第5格納部45の順に格納する。リスト制御部46は、各格納部41,42,43,44,45へのシフト信号によって、各格納部41,42,43,44,45に格納されている情報を第5格納部45、第4格納部44、・・・、第1格納部41の順にシフトさせる。リスト制御部46は、全ての格納部41,42,43,44,45の格納情報を一斉にシフトさせることができる。また、リスト制御部46は、一部の格納部の格納情報をシフトさせずに、別の一部の格納部の格納情報をシフトさせることができる。例えば、リスト制御部46は、第1格納部41の格納情報をそのまま保持して、第3格納部43の格納情報を第2格納部42へシフトさせ、第4格納部44の格納情報を第3格納部43へシフトさせ、第5格納部45の格納情報を第4格納部44へシフトさせることができる。
【0033】
図7は、ミスリスト部の格納情報の一例を示す説明図である。図7に示すように、ミスリスト部34の各格納部41,42,43,44,45には、ミス領域情報(ブロック番号、Y座標、開始X座標および終了X座標)、フラグおよびバリッドの各情報が格納される。フラグは、当該ミス領域情報のブロック番号に該当するテクスチャイメージのブロックがテクスチャメモリ部27からテクスチャキャッシュ部25に読み込まれたか否かを表す。テクスチャキャッシュ部25からブロック読み込み情報として与えられたブロック番号がミス領域情報のブロック番号と一致する場合に、フラグが真となる。フラグが真であるとき、当該ミス領域情報のブロック番号に該当するテクスチャイメージのブロックがテクスチャキャッシュ部25に格納されている。バリッドは、当該ミス領域情報が有効であるか否かを表す。ミス領域情報生成部33から与えられたミス領域情報が格納部に格納されるときに、バリッドが真となる。バリッドが真であるとき、当該格納部に格納されているミス領域情報は有効である。各格納部41,42,43,44,45は、有効な情報を格納していない状態においてミス領域情報を格納するときに、バリッドを真とし、フラグを偽とする。
【0034】
図6に示すように、各格納部41,42,43,44,45は、それぞれのバリッドをバリッド信号としてリスト制御部46に渡す。ミス領域情報生成部33からミスリスト部34にミス領域情報が与えられるときに、リスト制御部46に第6バリッド信号が入力する。リスト制御部46は、各格納部41,42,43,44,45からのバリッド信号および第6バリッド信号に基づいて、各格納部41,42,43,44,45へ前記ロード信号および前記シフト信号を出力する。各格納部41,42,43,44,45は、テクスチャキャッシュ部25から与えられたブロック番号とミス領域情報のブロック番号とが一致する場合に、リスト制御部46へ一致信号を出力する。リスト制御部46は、一致信号の入力によって一致信号の出力元である格納部へリムーブ信号またはアベイル信号を出力する。各格納部41,42,43,44,45では、リムーブ信号の入力によって格納情報のバリッドが偽となる。バリッドが偽であるとき、当該格納部には有効な情報が格納されていない。各格納部41,42,43,44,45では、アベイル信号の入力によって格納情報のフラグが真となる。
【0035】
リスト制御部46は、次の(I)および(J)に従ってリムーブ信号またはアベイル信号を選択して出力する。
(I)一致信号を出力した格納部に格納されているミス領域情報のY座標の値が描画位置情報生成部31から与えられた走査位置情報のY座標の値よりも大きいか、もしくは、一致信号を出力した格納部に格納されているミス領域情報のY座標の値が描画位置情報生成部31から与えられた走査位置情報のY座標の値に等しく、かつ、一致信号を出力した格納部に格納されているミス領域情報の開始X座標の値が、描画位置情報生成部31から与えられた走査位置情報のX座標よりも大きい場合、リスト制御部46は、一致信号の出力元である格納部へリムーブ信号を出力する。この(I)の条件を満たす場合、走査位置情報により示される位置(描画の済んだピクセルのうち、最も進んだ位置にあるピクセルの位置)よりも当該ミス領域情報のミス領域の方が後にあるので、将来必要になるテクスチャイメージのブロックがテクスチャキャッシュ部25に格納されることになる。従って、この時点で既にミス領域ではなくなるので、リスト制御部46は、リムーブ信号によって当該格納部のミス領域情報を無効にする。それによって、ミスリスト部34から当該ミス領域情報が消去される。いずれかの格納部からミス領域情報が消去されると、各格納部41,42,43,44,45の格納情報が適宜、シフトされる。
(J)前記(I)の条件を満たさない場合、リスト制御部46は、一致信号の出力元である格納部へアベイル信号を出力する。この場合、走査位置情報により示される位置(描画の済んだピクセルのうち、最も進んだ位置にあるピクセルの位置)よりも当該ミス領域情報のミス領域の方が前にあるので、過去に描画処理を飛ばされたピクセルが必要とするテクスチャイメージのブロックがテクスチャキャッシュ部25に格納されることになる。従って、リスト制御部46は、アベイル信号によって当該格納部の格納情報のフラグを真にして、描画に必要なデータがテクスチャキャッシュ部25に読み込まれたことを示す。
【0036】
リスト制御部46は、各格納部41,42,43,44,45に格納されているミス領域情報を検索し、走査位置情報により示される位置よりも後にあり、かつ走査位置情報により示される位置に最も近いミス領域情報を第1領域情報として描画位置情報生成部31に渡す。リスト制御部46は、第1格納部41に格納されているミス領域情報、すなわち最も古いミス領域情報を第2領域情報として描画位置情報生成部31に渡す。
【0037】
図8は、リスト制御部において、ミス領域情報の格納先を選択する回路の一例を示す回路図である。図8に示すように、リスト制御部46の、ミス領域情報の格納先を選択する回路は、例えば5個のインバータ51,52,53,54,55、4個の一段目のアンド回路56,57,58,59、5個の2段目のアンド回路60,61,62,63,64、および4個のオア回路65,66,67,68を備えている。第1インバータ51は、第5バリッド信号を反転する。第1アンド回路56は、第1インバータ51の出力信号と第4バリッド信号との論理積を出力する。第2アンド回路60は、第1アンド回路56の出力信号と第6バリッド信号との論理積を第5ロード信号として出力する。第1オア回路65は、第5バリッド信号と第4バリッド信号との論理和を出力する。第2インバータ52は、第1オア回路65の出力信号を反転する。第3アンド回路57は、第2インバータ52の出力信号と第3バリッド信号との論理積を出力する。第4アンド回路61は、第3アンド回路57の出力信号と第6バリッド信号との論理積を第4ロード信号として出力する。第2オア回路66は、第1オア回路65の出力信号と第3バリッド信号との論理和を出力する。第3インバータ53は、第2オア回路66の出力信号を反転する。第5アンド回路58は、第3インバータ53の出力信号と第2バリッド信号との論理積を出力する。第6アンド回路62は、第5アンド回路58の出力信号と第6バリッド信号との論理積を第3ロード信号として出力する。第3オア回路67は、第2オア回路66の出力信号と第2バリッド信号との論理和を出力する。第4インバータ54は、第3オア回路67の出力信号を反転する。第7アンド回路59は、第4インバータ54の出力信号と第1バリッド信号との論理積を出力する。第8アンド回路63は、第7アンド回路59の出力信号と第6バリッド信号との論理積を第2ロード信号として出力する。第4オア回路68は、第3オア回路67の出力信号と第1バリッド信号との論理和を出力する。第5インバータ55は、第4オア回路68の出力信号を反転する。第9アンド回路64は、第5インバータ55の出力信号と第6バリッド信号との論理積を第1ロード信号として出力する。
【0038】
図9は、図8に示す回路の動作を説明する真理値表である。各信号の値において、1は真であることを表し、0は偽であることを表す(図11〜図25においても同じ)。図9に示すように、ミス領域情報生成部33からミスリスト部34に新たなミス領域情報が与えられるときに、第6バリッド信号の値が1となる。ミスリスト部34の第1〜第(n−1)の格納部に有効なミス領域情報が格納されており、第n格納部に有効な情報が格納されていないときには、第1〜第(n−1)のバリッド信号の値が1であり、第nバリッド信号の値は0である。このときには、第nロード信号の値のみが1となり、その他のロード信号の値は0となる。従って、ミス領域情報の格納先は第n格納部となり、第n格納部に新たなミス領域情報が格納される。全ての格納部に有効な情報が格納されていないときには、第1ロード信号の値のみが1となるので、第1格納部41に新たなミス領域情報が格納される。全ての格納部に有効なミス領域情報が格納されているときには、全てのロード信号の値が0となるので、新たなミス領域情報はいずれの格納部にも格納されない。なお、ミス領域情報の格納先を選択する回路は、図8に示す回路に限らない。
【0039】
図10は、リスト制御部において、各格納部の格納情報をシフトさせる回路の一例を示す回路図である。図10に示すように、リスト制御部46の、各格納部41,42,43,44,45の格納情報をシフトさせる回路は、例えば5個のインバータ71,72,73,74,75および4個のオア回路76,77,78,79を備えている。第6インバータ71は、第1バリッド信号を反転した信号を第1シフト信号として出力する。第7インバータ72は、第2バリッド信号を反転する。第5オア回路76は、第7インバータ72の出力信号と第1シフト信号との論理和を第2シフト信号として出力する。第8インバータ73は、第3バリッド信号を反転する。第6オア回路77は、第8インバータ73の出力信号と第2シフト信号との論理和を第3シフト信号として出力する。第9インバータ74は、第4バリッド信号を反転する。第7オア回路78は、第9インバータ74の出力信号と第3シフト信号との論理和を第4シフト信号として出力する。第10インバータ75は、第5バリッド信号を反転する。第8オア回路79は、第10インバータ75の出力信号と第4シフト信号との論理和を第5シフト信号として出力する。
【0040】
ここで、図10に示す回路の各インバータ71,72,73,74,75には、現在のミスリスト部34の各格納部41,42,43,44,45に格納されている情報のバリッドではなく、次のクロックで各格納部41,42,43,44,45に格納される候補となる情報のバリッドがバリッド信号として与えられる。つまり、新たなミス領域情報を格納したり、各格納部41,42,43,44,45に既に格納されている情報に変化が起こると、リスト制御部46は、まず、次のクロックで各格納部41,42,43,44,45に格納される候補となる情報を生成する。そして、図10に示す回路によって、各格納部41,42,43,44,45に格納される候補となる情報のバリッドに応じて各シフト信号の真偽が決まる。シフト信号が真である場合には、該当する格納部に格納されている情報がシフトされる。シフト信号が偽である場合には、該当する格納部に格納されている情報が保持される。
【0041】
リスト制御部46は、次の(K)から(N)に従って、各格納部41,42,43,44,45に次に格納される候補となる情報を設定する。各格納部41,42,43,44,45に次に格納される候補となる情報は、格納部ごとにロード信号、リムーブ信号およびアベイル信号により決まる。各格納部41,42,43,44,45に対して、ロード信号、リムーブ信号およびアベイル信号は背反であり、同時に真になることはない。
(K)第nロード信号が真であれば、リスト制御部46は、ミスリスト部34の第n格納部に格納する次の候補として、ミス領域情報生成部33から与えられた新たなミス領域情報を設定し、該候補のバリッドを真に設定する。
(L)第nリムーブ信号が真であれば、リスト制御部46は、第n格納部に格納する次の候補のバリッドを偽に設定する。
(M)第nアベイル信号が真であれば、リスト制御部46は、第n格納部に格納する次の候補として、第n格納部に現在格納されている情報を設定し、該候補のフラグを真に設定する。
(N)前記(K)、前記(L)および前記(M)のいずれにも該当しない場合、リスト制御部46は、第n格納部に格納する次の候補として、第n格納部に現在格納されている情報を設定する。
【0042】
図11〜図15は、図10に示す回路においてロード信号が真となるときの動作を説明する真理値表である。図11〜図15に示すように、現在の第1〜第(n−1)のバリッド信号の値が1であり、現在の第nバリッド信号の値が0であるときには、第nロード信号の値のみが1となり、その他のロード信号、リムーブ信号およびアベイル信号の値は0となる。従って、第1〜第nの格納部に格納される次の候補のバリッドの値が1となり、それ以外の格納部に格納される次の候補のバリッドの値は0となる。それによって、第1〜第nのシフト信号の値が0となるので、第1〜第nの格納部についてはシフトが起こらずに、自格納部に対して設定された次の候補の情報(現在の格納情報と同じ情報)が格納される。それ以外のシフト信号の値は1となるので、第(n+1)以降の格納部についてはシフトが起こる。kを1以上の整数とすると、シフトが起こる場合、第k格納部には、第(k+1)格納部に対して設定された次の候補の情報が格納される。ただし、例えば第5格納部45については、シフトが起こる場合に第5格納部45へ情報を提供する格納部が存在しないので、バリッドの値が0であるダミーのデータが用意されており、該ダミーのデータが第5格納部45に格納される。
【0043】
図16〜図20は、図10に示す回路においてリムーブ信号が真となるときの動作を説明する真理値表である。図16〜図20に示すように、第nリムーブ信号の値が1となるとき、第1〜第nの格納部には有効なミス領域情報が格納されているので、現在の第1〜第nのバリッド信号の値は1である。第(n+1)以降の格納部については、格納している情報が有効である場合(現在のバリッド信号の値が1)と無効である場合(現在のバリッド信号の値が0)とがある。第nリムーブ信号の値が1になると、第n格納部に格納される次の候補のバリッドの値は0となる。それ以外の格納部に格納される次の候補のバリッドの値は現在の値のままである。それによって、第1〜第(n−1)のシフト信号の値が0となるので、第1〜第(n−1)の格納部についてはシフトが起こらずに、自格納部に対して設定された次の候補の情報(現在の格納情報と同じ情報)が格納される。第n以降のシフト信号の値は1となるので、第n以降の格納部についてはシフトが起こる。シフトが起こる場合、第k格納部には、第(k+1)格納部に対して設定された次の候補の情報が格納される。ただし、例えば第5格納部45についてシフトが起こる場合には、上述したようにダミーのデータが格納される。
【0044】
図21〜図25は、図10に示す回路においてアベイル信号が真となるときの動作を説明する真理値表である。図21〜図25に示すように、mを1以上の整数とすると、第mアベイル信号の値が1になると、第m格納部のフラグの値が1になるが、第n格納部に格納される次の候補のバリッドの値は現在の値のままである。従って、現在のバリッドの値が1である格納部についてはシフト信号の値が0となるので、シフトが起こらずに、自格納部に対して設定された次の候補の情報(現在の格納情報と同じ情報)が格納される。現在のバリッドの値が0である格納部についてはシフト信号の値が1となるので、シフトが起こる。シフトが起こる場合、第k格納部には、第(k+1)格納部に対して設定された次の候補の情報が格納される。ただし、例えば第5格納部45についてシフトが起こる場合には、上述したようにダミーのデータが格納される。なお、各格納部の格納情報をシフトさせる回路は、図10に示す回路に限らない。
【0045】
・テクスチャキャッシュ部の説明
図26は、実施例2にかかる画像処理装置のテクスチャキャッシュ部を示すブロック図である。図26に示すように、テクスチャキャッシュ部25は、キャッシュデータ部81およびキャッシュ制御部82を備えている。キャッシュデータ部81は、テクスチャメモリ部27から読み込まれたデータを格納するメモリである。キャッシュデータ部81は、複数のアクセスポートを有するRandom Access Memory(RAM、ランダムアクセスメモリ)を備えているとよい。キャッシュデータ部81が複数のアクセスポートを備えていれば、テクスチャメモリ部27から読み込まれたデータをキャッシュデータ部81に書き込む動作と、キャッシュ制御部82によるキャッシュデータ部81からのデータの読み出し動作とを同時に行うことができる。キャッシュ制御部82は、テクスチャキャッシュ部25の動作を制御する。キャッシュ制御部82は、テーブル83を備えている。テーブル83は、キャッシュデータ部81に格納されているテクスチャイメージのブロックの情報を保持する。テーブル83は、テクスチャ部24から第1アドレスデータと第2アドレスデータとを受け取るので、同時に2系統でデータの読み込みを行うことができるRAMを備えているとよい。
【0046】
図27は、テーブルの格納情報の一例を示す説明図である。図27に示すように、テーブル83は、例えば複数のキャッシュアドレスのエントリを保持している。各エントリには、ブロック番号、イネーブル、ローディングおよびプレディクトの各情報が格納される。ブロック番号は、キャッシュデータ部81の、当該エントリのキャッシュアドレスに対応する領域に格納されているデータのブロック番号を表す。イネーブルは、当該エントリが有効であるか無効であるかを表す。ローディングは、テクスチャメモリ部27からデータを読み出してキャッシュデータ部81に書き込み中であることを表す。プレディクトは、キャッシュデータ部81の、当該エントリのキャッシュアドレスに対応する領域に格納されているデータがミス領域により必要とされるデータであるか否かを表す。
【0047】
図26に示すように、キャッシュ制御部82は、テクスチャ部24から第1アドレスデータを受け取ると、テーブル83を参照する。第1アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されている場合、キャッシュ制御部82は、キャッシュデータ部81から該当するテクスチャデータを読み出してテクスチャ部24へ送る。該当するテクスチャデータがキャッシュデータ部81に格納されていない場合、キャッシュ制御部82は、キャッシュデータ部81から該当するテクスチャデータが読み出されるまで待機する。キャッシュ制御部82は、テクスチャ部24から第2アドレスデータを受け取ると、テーブル83を参照し、第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されているか否かを判断する。第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されている場合、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータありを返す。第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されていない場合、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータなしを返すとともに、テクスチャメモリ部27から該当するデータを読み込む処理を実行する。
【0048】
図28は、テクスチャキャッシュ部における第2アドレスデータに対する処理を示すフローチャートである。図28に示すように、キャッシュ制御部82は、前記予測位置にあるピクセルのテクスチャアドレスのデータ(第2アドレスデータ)がテクスチャ部24から渡されるのを待つ(ステップS1)。キャッシュ制御部82は、テクスチャ部24から第2アドレスデータを受け取ると、テーブル83を参照し、第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されているか否かを判断する(ステップS2)。該当するデータがキャッシュデータ部81に格納されている場合(ステップS2:Yes)、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータありを返す(ステップS3)。そして、処理を終了する。
【0049】
一方、該当するデータがキャッシュデータ部81に格納されていない場合(ステップS2:No)、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータなしを返す(ステップS4)。次いで、キャッシュ制御部82は、第2アドレスデータに対応するテクスチャデータをテクスチャメモリ部27から読み込んでいる途中であるか否かを判断する(ステップS5)。該当するデータの読み込み中である場合(ステップS5:Yes)、処理を終了する。
【0050】
一方、該当するデータの読み込み中でない場合(ステップS5:No)、キャッシュ制御部82は、キャッシュデータ部81に空きがあるか否かを判断する(ステップS6)。キャッシュデータ部81に空きがある場合(ステップS6:Yes)、ステップS8へ進む。キャッシュデータ部81に空きがない場合(ステップS6:No)、キャッシュ制御部82は、キャッシュデータ部81から最も使用されていないキャッシュを破棄してキャッシュデータ部81に空きを作り(ステップS7)、ステップS8へ進む。次いで、キャッシュ制御部82は、テクスチャメモリ部27から第2アドレスデータに対応するテクスチャデータを読み込んでキャッシュデータ部81の空いている領域へ格納することを要求する(ステップS8)。次いで、キャッシュ制御部82は、テーブル83の該当するエントリのローディングおよびプレディクトをともに真にする(ステップS9)。そして、処理を終了する。
【0051】
テクスチャメモリ部27からキャッシュデータ部81にデータが読み込まれると、キャッシュ制御部82は、テーブル83の対応するエントリを参照し、該エントリのプレディクトが真であるか否かを確認する。プレディクトが真である場合、キャッシュデータ部81に読み込まれたデータは、ミス領域により必要とされているデータである。従って、キャッシュ制御部82は、読み込まれたデータのブロック番号をブロック読み込み情報としてミスリスト部34に通知する。キャッシュデータ部81は、実施例1のキャッシュ部に相当する。キャッシュ制御部82は、実施例1の判定部として動作する。
【0052】
実施例2によれば、予めキャッシュ制御部82によりキャッシュミスを起こすと判定されたピクセルの描画を、当該ピクセルが必要とするテクスチャデータがキャッシュデータ部81に格納されるまで先延ばしにすることができる。それによって、キャッシュミスが発生するピクセルへのアクセスを避けることができるので、テクスチャメモリ部27から該当するテクスチャデータを読み出してキャッシュデータ部81に格納するまでの待ち時間をなくすことができる。従って、処理性能の低下を抑制することができる。
【符号の説明】
【0053】
1 メモリ部
2 キャッシュ部
3 判定部
4 保持部
5 データ処理部
【技術分野】
【0001】
この発明は、テクスチャマッピング処理を行う画像処理装置に関する。
【背景技術】
【0002】
従来、テクスチャマッピング処理を行う画像処理装置において、外部メモリが保持するテクスチャデータの一部を保持するキャッシュメモリを備える装置が知られている(例えば、特許文献1、特許文献2、特許文献3、特許文献4参照。)。このような画像処理装置において、例えば、テクスチャデータの使用率が境界値以上である場合に、キャッシュメモリを有効とし、境界値未満の場合に、キャッシュメモリを無効とする画像処理装置が知られている(例えば、特許文献1参照。)。また、テクスチャデータを記憶する主メモリを持つホストコンピュータ、テクスチャデータの一部を記憶するローカルメモリ(キャッシュメモリ)、および最も最近アクセスされたローカルメモリ中のテクセルを記憶するテクセル・データバッファを備える装置が知られている。この装置では、テクスチャデータはテクセル・データバッファからアクセスされるが、テクセル・データバッファに読み取るべきテクセルが存在しない場合に限ってローカルメモリに記憶されているテクセルがアクセスされる(例えば、特許文献2参照。)。また、ヒットまたはミスしたテクスチャデータリクエストに関連したアドレスをFIFO(First−In First−Out、先入れ先出し)メモリに格納し、(n+1)番目の未処理テクスチャリクエストミスに遭遇すると、テクスチャエンジンが停止する装置が知られている(例えば、特許文献3参照。)。また、テクスチャを記憶する主メモリと、最も新しく使用されたテクスチャを記憶するキャッシュメモリと、を備え、主メモリに対する記憶アクセスサイクルをキャッシュメモリに対する読み出しサイクルと並行して行う装置が知られている(例えば、特許文献4参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−59266号公報
【特許文献2】特開平8−329260号公報
【特許文献3】特表2001−507152号公報
【特許文献4】特表平9−510309号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、キャッシュミスが発生すると、テクスチャデータを保持するメモリ(上記例では、外部メモリや主メモリに相当)から該当するテクスチャデータを読み出してキャッシュメモリに格納するまでの待ち時間が発生するため、処理性能が低下してしまうという問題点がある。
【0005】
処理性能の低下を抑制することができる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
この画像処理装置は、メモリ部、キャッシュ部、判定部、保持部およびデータ処理部を備える。メモリ部は、テクスチャデータを格納する。キャッシュ部は、メモリ部に格納されているテクスチャデータの一部を格納する。判定部は、キャッシュ部に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する。保持部は、判定部によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する。データ処理部は、保持部に情報が保持されているピクセルにより必要とされるデータがキャッシュ部に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とする。データ処理部は、保持部に情報が保持されているピクセルにより必要とされるデータがキャッシュ部に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とする。
【発明の効果】
【0007】
この画像処理装置によれば、処理性能の低下を抑制することができるという効果を奏する。
【図面の簡単な説明】
【0008】
【図1】実施例1にかかる画像処理装置を示すブロック図である。
【図2】実施例2にかかる画像処理装置を含む画像処理システムを示すブロック図である。
【図3】実施例2にかかる画像処理装置を示すブロック図である。
【図4】実施例2にかかる画像処理装置のラスタライズ部を示すブロック図である。
【図5】描画対象のピクセルとキャッシュの予測対象のピクセルとの関係を説明する図である。
【図6】実施例2にかかる画像処理装置のミスリスト部を示すブロック図である。
【図7】実施例2にかかる画像処理装置のミスリスト部の格納情報の一例を示す説明図である。
【図8】実施例2にかかる画像処理装置のリスト制御部の一例を示す回路図である。
【図9】図8に示す回路の動作を説明する真理値表である。
【図10】実施例2にかかる画像処理装置のリスト制御部の一例を示す回路図である。
【図11】図10に示す回路の動作を説明する真理値表である。
【図12】図10に示す回路の動作を説明する真理値表である。
【図13】図10に示す回路の動作を説明する真理値表である。
【図14】図10に示す回路の動作を説明する真理値表である。
【図15】図10に示す回路の動作を説明する真理値表である。
【図16】図10に示す回路の動作を説明する真理値表である。
【図17】図10に示す回路の動作を説明する真理値表である。
【図18】図10に示す回路の動作を説明する真理値表である。
【図19】図10に示す回路の動作を説明する真理値表である。
【図20】図10に示す回路の動作を説明する真理値表である。
【図21】図10に示す回路の動作を説明する真理値表である。
【図22】図10に示す回路の動作を説明する真理値表である。
【図23】図10に示す回路の動作を説明する真理値表である。
【図24】図10に示す回路の動作を説明する真理値表である。
【図25】図10に示す回路の動作を説明する真理値表である。
【図26】実施例2にかかる画像処理装置のテクスチャキャッシュ部を示すブロック図である。
【図27】実施例2にかかる画像処理装置のテーブルの格納情報の一例を示す説明図である。
【図28】実施例2にかかる画像処理装置のテクスチャキャッシュ部における処理を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、この画像処理装置の好適な実施の形態を詳細に説明する。
【0010】
(実施例1)
図1は、実施例1にかかる画像処理装置を示すブロック図である。図1に示すように、画像処理装置は、メモリ部1、キャッシュ部2、判定部3、保持部4およびデータ処理部5を備える。メモリ部1は、テクスチャデータを格納する。キャッシュ部2は、メモリ部1に格納されているテクスチャデータの一部を格納する。判定部3は、キャッシュ部2に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する。保持部4は、判定部3によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する。例えば、データ処理部5は、判定部3に将来描画の対象となるピクセルの位置の情報を与える。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とする。データ処理部5は、保持部4に情報が保持されているピクセルにより必要とされるデータがキャッシュ部2に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とする。
【0011】
実施例1によれば、予め判定部3によりキャッシュミスを起こすと判定されたピクセルの描画を、当該ピクセルが必要とするテクスチャデータがキャッシュ部2に格納されるまで先延ばしにすることができる。それによって、キャッシュミスが発生するピクセルへのアクセスを避けることができるので、メモリ部1から該当するテクスチャデータを読み出してキャッシュ部2に格納するまでの待ち時間をなくすことができる。従って、処理性能の低下を抑制することができる。
【0012】
(実施例2)
・画像処理システムの説明
図2は、実施例2にかかる画像処理装置を含む画像処理システムを示すブロック図である。図2に示すように、画像処理システムは、メモリ11、ホストプロセッサ12、グラフィックスチップ13、ディスプレイ14およびバス15を備えている。メモリ11は、ディスプレイ14に表示されるオブジェクトの形状データやテクスチャデータを格納する。ホストプロセッサ12は、アプリケーションプログラムを実行し、アプリケーションプログラムによる描画の要求に基づいてグラフィックスチップ13にコマンドやデータを送る。グラフィックスチップ13は、ホストプロセッサ12からコマンドやデータを受け取り、描画を行う。ディスプレイ14は、グラフィックスチップ13の描画結果を出力する。メモリ11、ホストプロセッサ12およびグラフィックスチップ13は、バス15に接続されている。グラフィックスチップ13は、実施例2にかかる画像処理装置として動作する。
【0013】
・画像処理装置(グラフィックスチップ)の説明
図3は、実施例2にかかる画像処理装置を示すブロック図である。図3に示すように、画像処理装置(グラフィックスチップ13)は、インタフェース部21、セットアップ部22、ラスタライズ部23、テクスチャ部24、テクスチャキャッシュ部25、フレームバッファ部26およびテクスチャメモリ部27を備えている。画像処理装置は、将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定し、キャッシュミスを起こすピクセルを避けるように描画順序を変更してテクスチャマッピング処理を行う。
【0014】
インタフェース部21は、ホストプロセッサ12から描画データおよびテクスチャデータを受け取る。インタフェース部21は、描画データをセットアップ部22へ送る。インタフェース部21は、テクスチャデータをテクスチャメモリ部27に書き込む。テクスチャメモリ部27には、テクスチャイメージが複数のブロックに分割されて格納される。分割されたテクスチャイメージの各ブロックには、一意のブロック番号が付与される。セットアップ部22は、インタフェース部21から与えられた描画データを、ラスタライズ部23での処理に適したデータ(セットアップデータ)に変換する。セットアップ部22は、セットアップデータをラスタライズ部23へ送る。
【0015】
ラスタライズ部23は、セットアップ部22から与えられたセットアップデータに基づいて1ピクセルずつ描画位置を求める。ラスタライズ部23は、1ピクセルずつ図形を描画する。ラスタライズ部23は、現在の描画位置にあるピクセルのテクスチャ座標(第1座標データ)を算出し、該第1座標データをテクスチャ部24に渡す。ラスタライズ部23は、現在の描画位置よりも後の描画位置(予測位置)にあるピクセル、すなわち将来描画の対象となるピクセルのテクスチャ座標(第2座標データ)を算出し、該第2座標データをテクスチャ部24に渡す。ラスタライズ部23は、テクスチャキャッシュ部25からキャッシュの判定結果としてヒット情報を受け取る。ラスタライズ部23は、テクスチャキャッシュ部25から、キャッシュに読み込まれたテクスチャイメージのブロックの情報としてブロック読み込み情報を受け取る。
【0016】
テクスチャ部24は、ラスタライズ部23から与えられた第1座標データを第1アドレスデータに変換し、該第1アドレスデータをテクスチャキャッシュ部25に渡す。第1アドレスデータは、現在の描画位置にあるピクセルのテクスチャアドレスのデータである。テクスチャ部24は、第1アドレスデータに対応するテクスチャデータをテクスチャキャッシュ部25から受け取り、該テクスチャデータをピクセルデータとしてフレームバッファ部26に書き込む。テクスチャ部24は、ラスタライズ部23から与えられた第2座標データを第2アドレスデータに変換し、該第2アドレスデータをテクスチャキャッシュ部25に渡す。第2アドレスデータは、前記予測位置にあるピクセルのテクスチャアドレスのデータである。
【0017】
テクスチャキャッシュ部25は、テクスチャメモリ部27とテクスチャ部24との間でキャッシュ処理を行う。テクスチャキャッシュ部25には、テクスチャメモリ部27からテクスチャイメージのブロックの単位でデータが読み込まれる。テクスチャキャッシュ部25は、テクスチャ部24から与えられた第1アドレスデータに対応するテクスチャデータをテクスチャ部24に返す。テクスチャキャッシュ部25は、該当するテクスチャデータを有していない場合には、テクスチャメモリ部27から該当するテクスチャデータを読み込む。テクスチャキャッシュ部25は、テクスチャ部24から与えられた第2アドレスデータに対応するテクスチャデータを有しているか否かを判断し、その判断結果およびブロック番号をヒット情報としてラスタライズ部23に渡す。テクスチャキャッシュ部25は、ラスタライズ部23が必要とするテクスチャイメージのブロックをテクスチャメモリ部27から読み込むと、当該ブロックのブロック番号をブロック読み込み情報としてラスタライズ部23に渡す。テクスチャメモリ部27は、実施例1のメモリ部に相当する。
【0018】
・ラスタライズ部の説明
図4は、実施例2にかかる画像処理装置のラスタライズ部を示すブロック図である。図4に示すように、ラスタライズ部23は、描画位置情報生成部31、補間処理部32、ミス領域情報生成部33およびミスリスト部34を備えている。描画位置情報生成部31は、セットアップ部22から与えられたセットアップデータの情報と、ミスリスト部34から与えられた第1領域情報および第2領域情報とに基づいて、今まさに描画しようとしているピクセルの位置の情報(描画位置情報)を生成し、該描画位置情報を補間処理部32に渡す。第1領域情報および第2領域情報については、後述する。描画位置情報生成部31は、将来描画の対象となるピクセルの位置の情報(予測位置情報)を生成し、該予測位置情報をミス領域情報生成部33に渡す。描画位置情報生成部31は、描画の済んだピクセルのうち、最も進んだ位置にあるピクセルの位置の情報(走査位置情報)をミスリスト部34に渡す。描画位置情報生成部31は、実施例1のデータ処理部として動作する。
【0019】
図5は、描画対象のピクセルとキャッシュの予測対象のピクセルとの関係を説明する図である。図5において、特に限定しないが、例えば画像処理装置は、各行の左から右に向かって描画を進め、ある行の右端まで描画が済んだら、上の行を描画することとする。すなわち、図5に示す例では、描画装置は、P11のピクセルからP71のピクセルへ向かって描画を進め、P71のピクセルの描画が済んだら、P12のピクセルからP72のピクセルへ向かって描画を進める。なお、描画領域は、2行7列のマトリックスに限らない。また、各行の右から左に向かって描画を進めてもよいし、ある行の描画が済んだら、下の行を描画するようにしてもよい。P11からP71へ至る方向をX方向とし、P11からP12へ至る方向をY方向とする。
【0020】
描画位置情報生成部31は、aを1から7までの整数とすると、例えばPa1のピクセルを今まさに描画しようとしているときに、このPa1のピクセルよりも後に描画の対象となるPa2のピクセルをキャッシュの予測対象のピクセルとする。従って、描画位置情報生成部31は、描画位置情報としてPa1のピクセルの位置情報を出力し、予測位置情報としてPa2のピクセルの位置情報を出力する。実施例2では、キャッシュミスを起こすと判定され、かつテクスチャイメージの同じブロック番号のブロックに含まれる連続した複数のピクセルは、ミス領域情報生成部33によって一つのミス領域として扱われる。例えば、図5に示すように、予測対象のピクセル列において、P32、P42、P52およびP62の各ピクセルがキャッシュミスを起こすと判定され、かつP32のピクセルとP42のピクセルとがテクスチャイメージの同じブロック番号のブロックに含まれる場合、P32のピクセルとP42のピクセルとは一つのミス領域(ミス領域1)として扱われる。P52のピクセルおよびP62のピクセルについても同様であり、P52のピクセルとP62のピクセルとは、ミス領域1とは別のミス領域(ミス領域2)として扱われる。ミス領域に関する情報(ミス領域情報)は、後述するミス領域情報生成部33において生成される。ミス領域情報生成部33で生成されたミス領域情報は、後述するミスリスト部34に保持される。ミスリスト部34には、複数のミス領域情報が保持される。
【0021】
描画位置情報生成部31は、次の(A)から(D)のいずれかに従って、今まさに描画しようとしているピクセルの位置を生成する。
(A)最も古いミス領域が必要とするデータがキャッシュに読み込まれた場合、今まさに描画しようとしているピクセルの位置は、最も古いミス領域の開始位置となる。この場合には、描画位置は、前に戻ることになる。最も古いミス領域の情報は、前記第2領域情報から得られる。描画位置情報生成部31は、後述する第2領域情報のフラグを参照することによって、最も古いミス領域が必要とするデータがキャッシュに読み込まれたか否かを判定する。
(B)今まさに描画しようとしているピクセルの位置がミス領域の開始位置に一致する場合、新たに、当該ミス領域の次の位置が、今まさに描画しようとしているピクセルの位置となる。この場合には、今まさに描画しようとしているピクセルに必要なデータがキャッシュにないので、当該ピクセルの描画が後回しにされることになる。今まさに描画しようとしているピクセルの位置に開始位置が一致するミス領域の情報は、前記第1領域情報から得られる。
(C)前記(A)の条件も前記(B)の条件も満たさず、かつミスリスト部34に空きがある場合、今まさに描画しようとしているピクセルの位置は、当初の順番通りの位置となる。
(D)前記(A)、前記(B)および前記(C)のいずれの条件も満たさない場合、最も古いミス領域が必要とするデータがキャッシュに読み込まれるまで待機する。
【0022】
図4において、補間処理部32は、描画位置情報生成部31から与えられた描画位置情報(今まさに描画しようとしているピクセルの位置の情報)に基づいて、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標を生成し、該テクスチャ座標を第1座標データとして出力する。補間処理部32は、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標に基づいて、将来描画の対象となるピクセルの位置に対応するテクスチャ座標を生成し、該テクスチャ座標を第2座標データとして出力する。
【0023】
補間処理部32は、例えば次のようにして将来描画の対象となるピクセルの位置に対応するテクスチャ座標を生成する。3次元グラフィックス描画処理では、多角形、例えば三角形のポリゴンの各頂点にテクスチャ座標(s,t)を設定し、次の(1)式に基づいて各ピクセルにおけるテクスチャ座標が算出される。下記(1)式については、同様の式が「The OpenGLR Graphics System:A Specification(Version 3.1 − May 28, 2009)」(インターネット<URL:http://www.opengl.org/registry/doc/glspec31.20090528.pdf>)の第97頁に同様の式が記載されている。
【0024】
【数1】
【0025】
上記(1)式において、s(x,y)は、画面上の点(x,y)における図形のテクスチャ座標のs成分である。xはXY座標軸におけるX座標であり、yはXY座標軸におけるY座標である。sa、sbおよびscは、三角形の各頂点におけるテクスチャ座標のs成分の値である。wa、wbおよびwcは、三角形の各頂点の同次座標のw成分であり、定数である。μa、μbおよびμcは、点(x,y)における三角形の重心座標と呼ばれる値であり、点(x,y)の値に応じて変化する。従って、s(x,y)の分母および分子は、xとyの関数である。三角形の重心座標は、点(x,y)に対して線形に変化するので、s(x,y)の分母R(x,y)および分子F(x,y)は、ともに線形に変化する。従って、F(x,y)のy方向の変化FyおよびR(x,y)のy方向の変化Ryは、ともに定数である。以上のことから、テクスチャ座標sのY方向への変化syは、次の(2)式で求められる。
【0026】
【数2】
【0027】
上記(2)式において、Rの逆数は、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標を求める際に既に求められている。FyおよびRyが定数であるので、上記(2)式の計算を容易に行うことができる。また、演算精度を適当に設定することによって、上記(2)式の演算処理を軽減させることができる。特に限定しないが、例えば、将来キャッシュミスを起こすか否かを判定する対象を、今まさに描画しようとしているピクセルの真上のピクセルとする場合、将来キャッシュミスを起こすか否かの判定対象となるピクセルのテクスチャ座標s(x,y+1)は、次の(3)式で表される一次近似式で求められる。3次元グラフィックスでは、図形に張られたテクスチャ画像が射影などの効果により歪むが、今まさに描画しようとしているピクセルの位置に対応するテクスチャ座標とテクスチャ座標のY方向の変化率とから、将来キャッシュミスを起こすか否かの判定対象となるピクセルのテクスチャ座標を求めることができる。
【0028】
【数3】
【0029】
ミス領域情報生成部33は、描画位置情報生成部31から与えられた予測位置情報(将来描画の対象となるピクセルの位置の情報)と、当該ピクセルが必要とするデータがキャッシュにあるか否かを判定した結果であるヒット情報とに基づいて、ミス領域情報を生成する。ミス領域情報には、当該ミス領域に含まれるピクセルが属するテクスチャイメージのブロックのブロック番号、当該ミス領域に含まれるピクセルのY座標、当該ミス領域の開始位置にあるピクセルのX座標(開始X座標)および当該ミス領域の終了位置にあるピクセルのX座標(終了X座標)の各情報が含まれる。ミス領域情報生成部33は、一時的にミス領域情報を格納する作業領域を備えている。
【0030】
ミス領域情報生成部33は、この作業領域を用いて、次の(E)から(H)に従ってミス領域情報を生成する。ミス領域情報生成部33は、ヒット情報がミスである場合、ヒット情報からブロック番号を取得し、予測位置情報からY座標、開始X座標および終了X座標を取得する。
(E)作業領域が空であり、ヒット情報がミスである場合、ミス領域情報生成部33は、作業領域に、取得したブロック番号、Y座標、開始X座標および終了X座標の各情報を格納する。
(F)作業領域にブロック番号、Y座標、開始X座標および終了X座標の各情報が格納されており、ヒット情報がミスであり、新たに取得したブロック番号およびY座標が既に作業領域に格納されている各情報と一致している場合、ミス領域情報生成部33は、作業領域の終了X座標を新たに取得した終了X座標に更新する。
(G)作業領域にブロック番号、Y座標、開始X座標および終了X座標の各情報が格納されており、ヒット情報がミスであり、新たに取得したブロック番号またはY座標が既に作業領域に格納されている各情報と異なっている場合、ミス領域情報生成部33は、作業領域に既に格納されている情報を一つのミス領域情報として、ミスリスト部34へ送る。その後、ミス領域情報生成部33は、作業領域に新たに取得したブロック番号、Y座標、開始X座標および終了X座標の各情報を格納する。
(H)前記(E)、前記(F)および前記(G)のいずれの条件も満たさない場合、ミス領域情報生成部33は、作業領域に既に格納されている情報を一つのミス領域情報として、ミスリスト部34へ送る。その後、ミス領域情報生成部33は、作業領域を空にする。
【0031】
図6は、ミスリスト部を示すブロック図である。図6に示すように、ミスリスト部34は、複数の格納部41,42,43,44,45およびリスト制御部46を備えている。図示例では、第1から第5までの5個の格納部が設けられているが、格納部の数は2個、3個、4個または6個以上でもよい。各格納部41,42,43,44,45は、例えばレジスタを備えている。リスト制御部46は、各格納部41,42,43,44,45の動作を制御する。各格納部41,42,43,44,45は、ミス領域情報生成部33から与えられたミス領域情報を格納する。nを1以上の整数とすると、第n格納部は、リスト制御部46へ第n一致信号および第nバリッド信号を出力する。リスト制御部46は、第n格納部へ第nロード信号、第nリムーブ信号、第nシフト信号および第nアベイル信号を出力する。ミスリスト部34は、実施例1の保持部として動作する。
【0032】
リスト制御部46は、各格納部へのロード信号によって、ミス領域情報を第1格納部41、第2格納部42、・・・、第5格納部45の順に格納する。リスト制御部46は、各格納部41,42,43,44,45へのシフト信号によって、各格納部41,42,43,44,45に格納されている情報を第5格納部45、第4格納部44、・・・、第1格納部41の順にシフトさせる。リスト制御部46は、全ての格納部41,42,43,44,45の格納情報を一斉にシフトさせることができる。また、リスト制御部46は、一部の格納部の格納情報をシフトさせずに、別の一部の格納部の格納情報をシフトさせることができる。例えば、リスト制御部46は、第1格納部41の格納情報をそのまま保持して、第3格納部43の格納情報を第2格納部42へシフトさせ、第4格納部44の格納情報を第3格納部43へシフトさせ、第5格納部45の格納情報を第4格納部44へシフトさせることができる。
【0033】
図7は、ミスリスト部の格納情報の一例を示す説明図である。図7に示すように、ミスリスト部34の各格納部41,42,43,44,45には、ミス領域情報(ブロック番号、Y座標、開始X座標および終了X座標)、フラグおよびバリッドの各情報が格納される。フラグは、当該ミス領域情報のブロック番号に該当するテクスチャイメージのブロックがテクスチャメモリ部27からテクスチャキャッシュ部25に読み込まれたか否かを表す。テクスチャキャッシュ部25からブロック読み込み情報として与えられたブロック番号がミス領域情報のブロック番号と一致する場合に、フラグが真となる。フラグが真であるとき、当該ミス領域情報のブロック番号に該当するテクスチャイメージのブロックがテクスチャキャッシュ部25に格納されている。バリッドは、当該ミス領域情報が有効であるか否かを表す。ミス領域情報生成部33から与えられたミス領域情報が格納部に格納されるときに、バリッドが真となる。バリッドが真であるとき、当該格納部に格納されているミス領域情報は有効である。各格納部41,42,43,44,45は、有効な情報を格納していない状態においてミス領域情報を格納するときに、バリッドを真とし、フラグを偽とする。
【0034】
図6に示すように、各格納部41,42,43,44,45は、それぞれのバリッドをバリッド信号としてリスト制御部46に渡す。ミス領域情報生成部33からミスリスト部34にミス領域情報が与えられるときに、リスト制御部46に第6バリッド信号が入力する。リスト制御部46は、各格納部41,42,43,44,45からのバリッド信号および第6バリッド信号に基づいて、各格納部41,42,43,44,45へ前記ロード信号および前記シフト信号を出力する。各格納部41,42,43,44,45は、テクスチャキャッシュ部25から与えられたブロック番号とミス領域情報のブロック番号とが一致する場合に、リスト制御部46へ一致信号を出力する。リスト制御部46は、一致信号の入力によって一致信号の出力元である格納部へリムーブ信号またはアベイル信号を出力する。各格納部41,42,43,44,45では、リムーブ信号の入力によって格納情報のバリッドが偽となる。バリッドが偽であるとき、当該格納部には有効な情報が格納されていない。各格納部41,42,43,44,45では、アベイル信号の入力によって格納情報のフラグが真となる。
【0035】
リスト制御部46は、次の(I)および(J)に従ってリムーブ信号またはアベイル信号を選択して出力する。
(I)一致信号を出力した格納部に格納されているミス領域情報のY座標の値が描画位置情報生成部31から与えられた走査位置情報のY座標の値よりも大きいか、もしくは、一致信号を出力した格納部に格納されているミス領域情報のY座標の値が描画位置情報生成部31から与えられた走査位置情報のY座標の値に等しく、かつ、一致信号を出力した格納部に格納されているミス領域情報の開始X座標の値が、描画位置情報生成部31から与えられた走査位置情報のX座標よりも大きい場合、リスト制御部46は、一致信号の出力元である格納部へリムーブ信号を出力する。この(I)の条件を満たす場合、走査位置情報により示される位置(描画の済んだピクセルのうち、最も進んだ位置にあるピクセルの位置)よりも当該ミス領域情報のミス領域の方が後にあるので、将来必要になるテクスチャイメージのブロックがテクスチャキャッシュ部25に格納されることになる。従って、この時点で既にミス領域ではなくなるので、リスト制御部46は、リムーブ信号によって当該格納部のミス領域情報を無効にする。それによって、ミスリスト部34から当該ミス領域情報が消去される。いずれかの格納部からミス領域情報が消去されると、各格納部41,42,43,44,45の格納情報が適宜、シフトされる。
(J)前記(I)の条件を満たさない場合、リスト制御部46は、一致信号の出力元である格納部へアベイル信号を出力する。この場合、走査位置情報により示される位置(描画の済んだピクセルのうち、最も進んだ位置にあるピクセルの位置)よりも当該ミス領域情報のミス領域の方が前にあるので、過去に描画処理を飛ばされたピクセルが必要とするテクスチャイメージのブロックがテクスチャキャッシュ部25に格納されることになる。従って、リスト制御部46は、アベイル信号によって当該格納部の格納情報のフラグを真にして、描画に必要なデータがテクスチャキャッシュ部25に読み込まれたことを示す。
【0036】
リスト制御部46は、各格納部41,42,43,44,45に格納されているミス領域情報を検索し、走査位置情報により示される位置よりも後にあり、かつ走査位置情報により示される位置に最も近いミス領域情報を第1領域情報として描画位置情報生成部31に渡す。リスト制御部46は、第1格納部41に格納されているミス領域情報、すなわち最も古いミス領域情報を第2領域情報として描画位置情報生成部31に渡す。
【0037】
図8は、リスト制御部において、ミス領域情報の格納先を選択する回路の一例を示す回路図である。図8に示すように、リスト制御部46の、ミス領域情報の格納先を選択する回路は、例えば5個のインバータ51,52,53,54,55、4個の一段目のアンド回路56,57,58,59、5個の2段目のアンド回路60,61,62,63,64、および4個のオア回路65,66,67,68を備えている。第1インバータ51は、第5バリッド信号を反転する。第1アンド回路56は、第1インバータ51の出力信号と第4バリッド信号との論理積を出力する。第2アンド回路60は、第1アンド回路56の出力信号と第6バリッド信号との論理積を第5ロード信号として出力する。第1オア回路65は、第5バリッド信号と第4バリッド信号との論理和を出力する。第2インバータ52は、第1オア回路65の出力信号を反転する。第3アンド回路57は、第2インバータ52の出力信号と第3バリッド信号との論理積を出力する。第4アンド回路61は、第3アンド回路57の出力信号と第6バリッド信号との論理積を第4ロード信号として出力する。第2オア回路66は、第1オア回路65の出力信号と第3バリッド信号との論理和を出力する。第3インバータ53は、第2オア回路66の出力信号を反転する。第5アンド回路58は、第3インバータ53の出力信号と第2バリッド信号との論理積を出力する。第6アンド回路62は、第5アンド回路58の出力信号と第6バリッド信号との論理積を第3ロード信号として出力する。第3オア回路67は、第2オア回路66の出力信号と第2バリッド信号との論理和を出力する。第4インバータ54は、第3オア回路67の出力信号を反転する。第7アンド回路59は、第4インバータ54の出力信号と第1バリッド信号との論理積を出力する。第8アンド回路63は、第7アンド回路59の出力信号と第6バリッド信号との論理積を第2ロード信号として出力する。第4オア回路68は、第3オア回路67の出力信号と第1バリッド信号との論理和を出力する。第5インバータ55は、第4オア回路68の出力信号を反転する。第9アンド回路64は、第5インバータ55の出力信号と第6バリッド信号との論理積を第1ロード信号として出力する。
【0038】
図9は、図8に示す回路の動作を説明する真理値表である。各信号の値において、1は真であることを表し、0は偽であることを表す(図11〜図25においても同じ)。図9に示すように、ミス領域情報生成部33からミスリスト部34に新たなミス領域情報が与えられるときに、第6バリッド信号の値が1となる。ミスリスト部34の第1〜第(n−1)の格納部に有効なミス領域情報が格納されており、第n格納部に有効な情報が格納されていないときには、第1〜第(n−1)のバリッド信号の値が1であり、第nバリッド信号の値は0である。このときには、第nロード信号の値のみが1となり、その他のロード信号の値は0となる。従って、ミス領域情報の格納先は第n格納部となり、第n格納部に新たなミス領域情報が格納される。全ての格納部に有効な情報が格納されていないときには、第1ロード信号の値のみが1となるので、第1格納部41に新たなミス領域情報が格納される。全ての格納部に有効なミス領域情報が格納されているときには、全てのロード信号の値が0となるので、新たなミス領域情報はいずれの格納部にも格納されない。なお、ミス領域情報の格納先を選択する回路は、図8に示す回路に限らない。
【0039】
図10は、リスト制御部において、各格納部の格納情報をシフトさせる回路の一例を示す回路図である。図10に示すように、リスト制御部46の、各格納部41,42,43,44,45の格納情報をシフトさせる回路は、例えば5個のインバータ71,72,73,74,75および4個のオア回路76,77,78,79を備えている。第6インバータ71は、第1バリッド信号を反転した信号を第1シフト信号として出力する。第7インバータ72は、第2バリッド信号を反転する。第5オア回路76は、第7インバータ72の出力信号と第1シフト信号との論理和を第2シフト信号として出力する。第8インバータ73は、第3バリッド信号を反転する。第6オア回路77は、第8インバータ73の出力信号と第2シフト信号との論理和を第3シフト信号として出力する。第9インバータ74は、第4バリッド信号を反転する。第7オア回路78は、第9インバータ74の出力信号と第3シフト信号との論理和を第4シフト信号として出力する。第10インバータ75は、第5バリッド信号を反転する。第8オア回路79は、第10インバータ75の出力信号と第4シフト信号との論理和を第5シフト信号として出力する。
【0040】
ここで、図10に示す回路の各インバータ71,72,73,74,75には、現在のミスリスト部34の各格納部41,42,43,44,45に格納されている情報のバリッドではなく、次のクロックで各格納部41,42,43,44,45に格納される候補となる情報のバリッドがバリッド信号として与えられる。つまり、新たなミス領域情報を格納したり、各格納部41,42,43,44,45に既に格納されている情報に変化が起こると、リスト制御部46は、まず、次のクロックで各格納部41,42,43,44,45に格納される候補となる情報を生成する。そして、図10に示す回路によって、各格納部41,42,43,44,45に格納される候補となる情報のバリッドに応じて各シフト信号の真偽が決まる。シフト信号が真である場合には、該当する格納部に格納されている情報がシフトされる。シフト信号が偽である場合には、該当する格納部に格納されている情報が保持される。
【0041】
リスト制御部46は、次の(K)から(N)に従って、各格納部41,42,43,44,45に次に格納される候補となる情報を設定する。各格納部41,42,43,44,45に次に格納される候補となる情報は、格納部ごとにロード信号、リムーブ信号およびアベイル信号により決まる。各格納部41,42,43,44,45に対して、ロード信号、リムーブ信号およびアベイル信号は背反であり、同時に真になることはない。
(K)第nロード信号が真であれば、リスト制御部46は、ミスリスト部34の第n格納部に格納する次の候補として、ミス領域情報生成部33から与えられた新たなミス領域情報を設定し、該候補のバリッドを真に設定する。
(L)第nリムーブ信号が真であれば、リスト制御部46は、第n格納部に格納する次の候補のバリッドを偽に設定する。
(M)第nアベイル信号が真であれば、リスト制御部46は、第n格納部に格納する次の候補として、第n格納部に現在格納されている情報を設定し、該候補のフラグを真に設定する。
(N)前記(K)、前記(L)および前記(M)のいずれにも該当しない場合、リスト制御部46は、第n格納部に格納する次の候補として、第n格納部に現在格納されている情報を設定する。
【0042】
図11〜図15は、図10に示す回路においてロード信号が真となるときの動作を説明する真理値表である。図11〜図15に示すように、現在の第1〜第(n−1)のバリッド信号の値が1であり、現在の第nバリッド信号の値が0であるときには、第nロード信号の値のみが1となり、その他のロード信号、リムーブ信号およびアベイル信号の値は0となる。従って、第1〜第nの格納部に格納される次の候補のバリッドの値が1となり、それ以外の格納部に格納される次の候補のバリッドの値は0となる。それによって、第1〜第nのシフト信号の値が0となるので、第1〜第nの格納部についてはシフトが起こらずに、自格納部に対して設定された次の候補の情報(現在の格納情報と同じ情報)が格納される。それ以外のシフト信号の値は1となるので、第(n+1)以降の格納部についてはシフトが起こる。kを1以上の整数とすると、シフトが起こる場合、第k格納部には、第(k+1)格納部に対して設定された次の候補の情報が格納される。ただし、例えば第5格納部45については、シフトが起こる場合に第5格納部45へ情報を提供する格納部が存在しないので、バリッドの値が0であるダミーのデータが用意されており、該ダミーのデータが第5格納部45に格納される。
【0043】
図16〜図20は、図10に示す回路においてリムーブ信号が真となるときの動作を説明する真理値表である。図16〜図20に示すように、第nリムーブ信号の値が1となるとき、第1〜第nの格納部には有効なミス領域情報が格納されているので、現在の第1〜第nのバリッド信号の値は1である。第(n+1)以降の格納部については、格納している情報が有効である場合(現在のバリッド信号の値が1)と無効である場合(現在のバリッド信号の値が0)とがある。第nリムーブ信号の値が1になると、第n格納部に格納される次の候補のバリッドの値は0となる。それ以外の格納部に格納される次の候補のバリッドの値は現在の値のままである。それによって、第1〜第(n−1)のシフト信号の値が0となるので、第1〜第(n−1)の格納部についてはシフトが起こらずに、自格納部に対して設定された次の候補の情報(現在の格納情報と同じ情報)が格納される。第n以降のシフト信号の値は1となるので、第n以降の格納部についてはシフトが起こる。シフトが起こる場合、第k格納部には、第(k+1)格納部に対して設定された次の候補の情報が格納される。ただし、例えば第5格納部45についてシフトが起こる場合には、上述したようにダミーのデータが格納される。
【0044】
図21〜図25は、図10に示す回路においてアベイル信号が真となるときの動作を説明する真理値表である。図21〜図25に示すように、mを1以上の整数とすると、第mアベイル信号の値が1になると、第m格納部のフラグの値が1になるが、第n格納部に格納される次の候補のバリッドの値は現在の値のままである。従って、現在のバリッドの値が1である格納部についてはシフト信号の値が0となるので、シフトが起こらずに、自格納部に対して設定された次の候補の情報(現在の格納情報と同じ情報)が格納される。現在のバリッドの値が0である格納部についてはシフト信号の値が1となるので、シフトが起こる。シフトが起こる場合、第k格納部には、第(k+1)格納部に対して設定された次の候補の情報が格納される。ただし、例えば第5格納部45についてシフトが起こる場合には、上述したようにダミーのデータが格納される。なお、各格納部の格納情報をシフトさせる回路は、図10に示す回路に限らない。
【0045】
・テクスチャキャッシュ部の説明
図26は、実施例2にかかる画像処理装置のテクスチャキャッシュ部を示すブロック図である。図26に示すように、テクスチャキャッシュ部25は、キャッシュデータ部81およびキャッシュ制御部82を備えている。キャッシュデータ部81は、テクスチャメモリ部27から読み込まれたデータを格納するメモリである。キャッシュデータ部81は、複数のアクセスポートを有するRandom Access Memory(RAM、ランダムアクセスメモリ)を備えているとよい。キャッシュデータ部81が複数のアクセスポートを備えていれば、テクスチャメモリ部27から読み込まれたデータをキャッシュデータ部81に書き込む動作と、キャッシュ制御部82によるキャッシュデータ部81からのデータの読み出し動作とを同時に行うことができる。キャッシュ制御部82は、テクスチャキャッシュ部25の動作を制御する。キャッシュ制御部82は、テーブル83を備えている。テーブル83は、キャッシュデータ部81に格納されているテクスチャイメージのブロックの情報を保持する。テーブル83は、テクスチャ部24から第1アドレスデータと第2アドレスデータとを受け取るので、同時に2系統でデータの読み込みを行うことができるRAMを備えているとよい。
【0046】
図27は、テーブルの格納情報の一例を示す説明図である。図27に示すように、テーブル83は、例えば複数のキャッシュアドレスのエントリを保持している。各エントリには、ブロック番号、イネーブル、ローディングおよびプレディクトの各情報が格納される。ブロック番号は、キャッシュデータ部81の、当該エントリのキャッシュアドレスに対応する領域に格納されているデータのブロック番号を表す。イネーブルは、当該エントリが有効であるか無効であるかを表す。ローディングは、テクスチャメモリ部27からデータを読み出してキャッシュデータ部81に書き込み中であることを表す。プレディクトは、キャッシュデータ部81の、当該エントリのキャッシュアドレスに対応する領域に格納されているデータがミス領域により必要とされるデータであるか否かを表す。
【0047】
図26に示すように、キャッシュ制御部82は、テクスチャ部24から第1アドレスデータを受け取ると、テーブル83を参照する。第1アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されている場合、キャッシュ制御部82は、キャッシュデータ部81から該当するテクスチャデータを読み出してテクスチャ部24へ送る。該当するテクスチャデータがキャッシュデータ部81に格納されていない場合、キャッシュ制御部82は、キャッシュデータ部81から該当するテクスチャデータが読み出されるまで待機する。キャッシュ制御部82は、テクスチャ部24から第2アドレスデータを受け取ると、テーブル83を参照し、第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されているか否かを判断する。第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されている場合、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータありを返す。第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されていない場合、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータなしを返すとともに、テクスチャメモリ部27から該当するデータを読み込む処理を実行する。
【0048】
図28は、テクスチャキャッシュ部における第2アドレスデータに対する処理を示すフローチャートである。図28に示すように、キャッシュ制御部82は、前記予測位置にあるピクセルのテクスチャアドレスのデータ(第2アドレスデータ)がテクスチャ部24から渡されるのを待つ(ステップS1)。キャッシュ制御部82は、テクスチャ部24から第2アドレスデータを受け取ると、テーブル83を参照し、第2アドレスデータに対応するテクスチャデータがキャッシュデータ部81に格納されているか否かを判断する(ステップS2)。該当するデータがキャッシュデータ部81に格納されている場合(ステップS2:Yes)、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータありを返す(ステップS3)。そして、処理を終了する。
【0049】
一方、該当するデータがキャッシュデータ部81に格納されていない場合(ステップS2:No)、キャッシュ制御部82は、ミス領域情報生成部33にヒット情報としてデータなしを返す(ステップS4)。次いで、キャッシュ制御部82は、第2アドレスデータに対応するテクスチャデータをテクスチャメモリ部27から読み込んでいる途中であるか否かを判断する(ステップS5)。該当するデータの読み込み中である場合(ステップS5:Yes)、処理を終了する。
【0050】
一方、該当するデータの読み込み中でない場合(ステップS5:No)、キャッシュ制御部82は、キャッシュデータ部81に空きがあるか否かを判断する(ステップS6)。キャッシュデータ部81に空きがある場合(ステップS6:Yes)、ステップS8へ進む。キャッシュデータ部81に空きがない場合(ステップS6:No)、キャッシュ制御部82は、キャッシュデータ部81から最も使用されていないキャッシュを破棄してキャッシュデータ部81に空きを作り(ステップS7)、ステップS8へ進む。次いで、キャッシュ制御部82は、テクスチャメモリ部27から第2アドレスデータに対応するテクスチャデータを読み込んでキャッシュデータ部81の空いている領域へ格納することを要求する(ステップS8)。次いで、キャッシュ制御部82は、テーブル83の該当するエントリのローディングおよびプレディクトをともに真にする(ステップS9)。そして、処理を終了する。
【0051】
テクスチャメモリ部27からキャッシュデータ部81にデータが読み込まれると、キャッシュ制御部82は、テーブル83の対応するエントリを参照し、該エントリのプレディクトが真であるか否かを確認する。プレディクトが真である場合、キャッシュデータ部81に読み込まれたデータは、ミス領域により必要とされているデータである。従って、キャッシュ制御部82は、読み込まれたデータのブロック番号をブロック読み込み情報としてミスリスト部34に通知する。キャッシュデータ部81は、実施例1のキャッシュ部に相当する。キャッシュ制御部82は、実施例1の判定部として動作する。
【0052】
実施例2によれば、予めキャッシュ制御部82によりキャッシュミスを起こすと判定されたピクセルの描画を、当該ピクセルが必要とするテクスチャデータがキャッシュデータ部81に格納されるまで先延ばしにすることができる。それによって、キャッシュミスが発生するピクセルへのアクセスを避けることができるので、テクスチャメモリ部27から該当するテクスチャデータを読み出してキャッシュデータ部81に格納するまでの待ち時間をなくすことができる。従って、処理性能の低下を抑制することができる。
【符号の説明】
【0053】
1 メモリ部
2 キャッシュ部
3 判定部
4 保持部
5 データ処理部
【特許請求の範囲】
【請求項1】
テクスチャデータを格納するメモリ部と、
該メモリ部に格納されているテクスチャデータの一部を格納するキャッシュ部と、
該キャッシュ部に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する判定部と、
該判定部によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する保持部と、
該保持部に情報が保持されているピクセルにより必要とされるデータが該キャッシュ部に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とし、一方、該保持部に情報が保持されているピクセルにより必要とされるデータが該キャッシュ部に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とするデータ処理部と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記データ処理部は、現在の描画位置よりも前のピクセルの描画処理が終了した後、元の描画位置に戻り、該元の描画位置の次のピクセルを次の描画対象とすることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記データ処理部は、前記保持部に情報が保持されているピクセルにより必要とされるデータが前記キャッシュ部に格納されるときに当該ピクセルが現在の描画位置よりも後のピクセルである場合、前記保持部に保持されている当該ピクセルの情報を消去することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記データ処理部は、将来描画の対象となるピクセルのテクスチャ座標を現在描画中のピクセルのテクスチャ座標に基づいて算出することを特徴とする請求項1〜3のいずれか一つに記載の画像処理装置。
【請求項5】
前記将来描画の対象となるピクセルを含むピクセル列と前記現在描画中のピクセルを含むピクセル列とが隣接しており、かつ前記将来描画の対象となるピクセルと前記現在描画中のピクセルとが隣接している場合、
前記データ処理部は、前記将来描画の対象となるピクセルのテクスチャ座標を前記現在描画中のピクセルのテクスチャ座標の一次近似により求めることを特徴とする請求項3に記載の画像処理装置。
【請求項1】
テクスチャデータを格納するメモリ部と、
該メモリ部に格納されているテクスチャデータの一部を格納するキャッシュ部と、
該キャッシュ部に格納されているデータを参照して将来描画の対象となるピクセルがキャッシュミスを起こすか否かを判定する判定部と、
該判定部によりキャッシュミスを起こすと判定された複数のピクセルの情報を保持する保持部と、
該保持部に情報が保持されているピクセルにより必要とされるデータが該キャッシュ部に格納されていない場合に、当該ピクセルよりも後のピクセルを次の描画対象とし、一方、該保持部に情報が保持されているピクセルにより必要とされるデータが該キャッシュ部に格納されるときに当該ピクセルが現在の描画位置よりも前のピクセルである場合に、当該ピクセルを次の描画対象とするデータ処理部と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記データ処理部は、現在の描画位置よりも前のピクセルの描画処理が終了した後、元の描画位置に戻り、該元の描画位置の次のピクセルを次の描画対象とすることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記データ処理部は、前記保持部に情報が保持されているピクセルにより必要とされるデータが前記キャッシュ部に格納されるときに当該ピクセルが現在の描画位置よりも後のピクセルである場合、前記保持部に保持されている当該ピクセルの情報を消去することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記データ処理部は、将来描画の対象となるピクセルのテクスチャ座標を現在描画中のピクセルのテクスチャ座標に基づいて算出することを特徴とする請求項1〜3のいずれか一つに記載の画像処理装置。
【請求項5】
前記将来描画の対象となるピクセルを含むピクセル列と前記現在描画中のピクセルを含むピクセル列とが隣接しており、かつ前記将来描画の対象となるピクセルと前記現在描画中のピクセルとが隣接している場合、
前記データ処理部は、前記将来描画の対象となるピクセルのテクスチャ座標を前記現在描画中のピクセルのテクスチャ座標の一次近似により求めることを特徴とする請求項3に記載の画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【公開番号】特開2011−44077(P2011−44077A)
【公開日】平成23年3月3日(2011.3.3)
【国際特許分類】
【出願番号】特願2009−193060(P2009−193060)
【出願日】平成21年8月24日(2009.8.24)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年3月3日(2011.3.3)
【国際特許分類】
【出願日】平成21年8月24日(2009.8.24)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]