(57)【要約】【課題】外部メモリから読み出したテクスチャデータの再利用を可能としつつ、複数のテクスチャの複数のテクセルの同時読み出しを可能にする。【解決手段】複数の物理メモリを有し、複数のテクセルがマトリクス状に並んだブロック単位で外部メモリからデータを読み出し、隣り合うブロックを異なる物理メモリに記憶するキャッシュメモリと、物理メモリ毎に設けられたデータ選択回路を有し、複数アドレスを同時に入力されると、アドレスの示すテクセルを含むブロックが何れかの物理メモリに記憶されていればその物理メモリに対応するデータ選択回路により該当データを読み出して出力し、記憶されていなければ外部メモリから何れかの物理メモリに当該ブロックを読み出して記憶させた後にその物理メモリに対応するデータ選択回路によりデータを読み出して出力するキャッシュコントローラとを有するキャッシュ装置を提供する。【選択図】図４
2015200915.tif 000002
【特許請求の範囲】
【請求項１】
複数のテクセルがマトリクス状に並んだブロックを読み出し単位として、外部メモリに記憶されたテクスチャデータをブロック毎に読み出して記憶するキャッシュ装置において、
キャッシュメモリと、キャッシュコントローラと、を有し、
前記キャッシュメモリは、複数の物理メモリにより構成され、
前記キャッシュコントローラに、各々が１つのテクセルを示す複数のアドレスが同時に入力されると、前記キャッシュコントローラは、入力された複数のアドレスの各々について当該アドレスの示すテクセルを含むブロックを算出し、算出された互いに隣り合うブロックの格納先を前記複数の物理メモリのうちの互いに異なる物理メモリにする
ことを特徴とするキャッシュ装置。
【請求項２】
複数のテクセルがマトリクス状に並んだブロックを読み出し単位として、外部メモリに記憶されたテクスチャデータをブロック毎に読み出して記憶するキャッシュ装置において、
キャッシュメモリとキャッシュコントローラからなる組を複数組有し、
前記複数のキャッシュメモリの各々は、複数の物理メモリにより構成され、
前記複数のキャッシュコントローラの各々に、各々が１つのテクセルを示す複数のアドレスが同時に入力されると、当該キャッシュコントローラは、入力された複数のアドレスの各々について当該アドレスの示すテクセルを含むブロックを算出し、算出された互いに隣り合うブロックの格納先を当該キャッシュコントローラと対となるキャッシュメモリを構成する複数の物理メモリのうちの互いに異なる物理メモリにする
ことを特徴とするキャッシュ装置。
【請求項３】
前記キャッシュメモリと前記外部メモリとの間に介在し、前段のキャッシュメモリとして機能する第２のキャッシュメモリを有することを特徴とする請求項１または請求項２に記載のキャッシュ装置。
【請求項４】
前記キャッシュコントローラは、重複チェック部を有し、
前記重複チェック部は、
前記キャッシュコントローラに同時に入力された複数のアドレスの各々の示すテクセルを含むブロックについて重複の有無をチェックして互いに異なるブロックを判別する
ことを特徴とする請求項１〜３の何れか１項に記載のキャッシュ装置。
【請求項５】
請求項１〜４の何れか１項に記載のキャッシュ装置を使用して読み出したテクセルのデータを用いて、所定の画像に対するテクスチャマッピングを行う画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、３次元コンピュータグラフィック技術に関し、特にテクスチャマッピング技術に関する。
【背景技術】
【０００２】
テクスチャマッピングとは、ポリゴンの集合により表現された３Ｄモデルの表面にテクスチャと呼ばれる画像を貼り付けることで質感を表現する技法である。例えば、不均等な多面体の表面に岩肌のテクスチャを貼り付けることで岩山等を表現するといった具合である。テクスチャマッピングを利用することにより、岩肌の細かな凸凹を逐一ポリゴンで表現することなく、現実感のある岩山を表現することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２３２４７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
テクスチャの画像データ（テクスチャを構成する各画素（テクセル）の画素値を表す画素データの集合体、以下、テクスチャデータ）は、テクスチャマッピングを行う画像処理装置に接続される外部メモリに格納されていることが一般的である。テクスチャマッピングを利用した画像処理における描画性能は、外部メモリからのテクスチャデータの読み出し性能に大きく依存する。このため、同じテクスチャデータが外部メモリから複数回読み出されるようなことは極力避けなければならない。そこで、一度読み出したテクスチャデータを画像処理装置内のキャッシュメモリに格納しておき、再利用できるようにすることが考えられる。
【０００５】
しかし、テクスチャマッピングを行う際には、テクスチャの拡大・縮小、変形などの各種編集処理、バイリニアフィルタ処理などの各種フィルタ処理が行われることが多く、これら各種処理の実現、或いはミップマップ対応やキューブマップ対応、ボリュームマップ対応などの実現のために、複数のテクスチャの複数のテクセルの各画素データを同時に読み出すことが必要となる場合がある。しかし、ＳＲＡＭなどで構成された従来のキャッシュメモリでは、複数のアドレスに対して同時にキャッシュテーブルをアクセスしてキャッシュミス等の判定を行うことはできない等、複数のテクスチャの複数のテクセルの同時読み出しには対処することができない。
【０００６】
本発明は上記課題に鑑みて為されたものであり、テクスチャマッピングを行う画像処理装置において、一度読み出したテクスチャデータの再利用を可能としつつ、複数のテクスチャの複数のテクセルを同時に読み出せるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明は、複数のテクセルがマトリクス状に並んだブロックを読み出し単位として、外部メモリに記憶されたテクスチャデータをブロック毎に読み出して記憶するキャッシュ装置において、キャッシュメモリと、キャッシュコントローラと、を有し、前記キャッシュメモリは、複数の物理メモリにより構成され、前記キャッシュコントローラに、各々が１つのテクセルを示す複数のアドレスが同時に入力されると、前記キャッシュコントローラは、入力された複数のアドレスの各々について当該アドレスの示すテクセルを含むブロックを算出し、算出された互いに隣り合うブロックの格納先を前記複数の物理メモリのうちの互いに異なる物理メモリにすることを特徴とするキャッシュ装置、を提供する。
【０００８】
このようなキャッシュ装置を用いてテクスチャデータのキャッシュを行うようにすれば、互いに隣り合うブロックは互いに異なる物理メモリに格納される。このため、与えられたアドレスに応じたデータを物理メモリから読み出すデータ選択回路を物理メモリ毎に設けるようにすれば、互いに隣り合う複数のブロックの各々に属するテクセルの画素データを同時並列に読み出すことが可能になる。なお、複数の物理メモリの各々に格納される各ブロックは同じテクスチャに属するものであるか、異なるテクスチャに属するものであるかは問わない。また、読み出し対象のテクセルを示すものとして与えられたアドレスの示すテクセルの属するブロックが何れかの物理メモリに格納されている間は、当該ブロックを外部メモリから再度読み出す必要はない。つまり、一度読み込んだテクスチャデータをブロック単位で再利用することが可能になる。テクスチャマッピングを行う画像処理装置に本発明のキャッシュ装置を組み込み、当該キャッシュ装置を用いて、外部メモリから当該画像処理装置に読み出すテクスチャデータのキャッシュを行うようにすれば、一度読み出したテクスチャデータの再利用を可能としつつ、複数のテクスチャの複数のテクセルを同時に読み出すことが可能になる。
【０００９】
特許文献１には、外部メモリから画像処理装置へ読み出すテクスチャデータのキャッシュに関する技術が開示されているが、特許文献１に開示の技術は、複数のテクスチャの複数のテクセルを同時に読み出せるようにするものではなく、この点で本願発明と異なる。つまり、本願発明は特許文献１に開示の技術とは異なる技術である。
【００１０】
また、上記課題を解決するために本発明は、複数のテクセルがマトリクス状に並んだブロックを読み出し単位として、外部メモリに記憶されたテクスチャデータをブロック毎に読み出して記憶するキャッシュ装置において、キャッシュメモリとキャッシュコントローラからなる組を複数組有し、前記複数のキャッシュメモリの各々は、複数の物理メモリにより構成され、前記複数のキャッシュコントローラの各々に、各々が１つのテクセルを示す複数のアドレスが同時に入力されると、当該キャッシュコントローラは、入力された複数のアドレスの各々について当該アドレスの示すテクセルを含むブロックを算出し、算出された互いに隣り合うブロックの格納先を当該キャッシュコントローラと対となるキャッシュメモリを構成する複数の物理メモリのうちの互いに異なる物理メモリにすることを特徴とするキャッシュ装置、を提供する。
【００１１】
このような態様によっても、一度読み出したテクスチャデータの再利用を可能としつつ、複数のテクスチャの複数のテクセルを同時に読み出すことが可能になる。さらに本態様によれば、マトリクス状に並んだ複数のピクセルをマッピング単位としてテクスチャマッピングを行う際に、キャッシュコントローラ毎に異なるマッピング単位のアドレスを与えるようにすれば、キャッシュコントローラの数分のマッピング単位分のテクセルのデータを並列に読み出すことが可能になる。
【００１２】
より好ましい態様としては、キャッシュメモリと外部メモリとの間に介在し、前段のキャッシュメモリとして機能する第２のキャッシュメモリを設ける態様が考えられる。このような態様によれば、あるキャッシュメモリへ読み込んだブロックと同一のブロックについてのアクセスが他のキャッシュメモリ経由で発生した場合であっても、当該ブロックは上記第２のキャッシュメモリに格納されているため、当該ブロックを再度外部メモリから読み出すことが回避される。このため、本態様によれば、外部メモリとの間のデータ転送帯域の無駄な消費を回避することが可能になる。
【００１３】
さらに好ましい別の態様としては、キャッシュコントローラに同時に入力された複数のアドレスの各々の示すテクセルを含むブロックについて重複の有無をチェックして互いに異なるブロックを判別する重複チェック部を上記キャッシュコントローラに設ける態様が考えられる。このような態様によれば、キャッシュコントローラに同時に入力される複数のアドレスに、各々異なるテクセルを示すものの、同じブロックに属するテクセルを示すアドレスが含まれている場合に、アドレス単位でキャッシュミス判定を行う態様に比較して無駄な判定が行われることを回避することができる。
【００１４】
上記課題を解決するための本発明の別の態様としては、上述したキャッシュ装置の何れかを使用して読み出したテクセルのデータを用いて、所定の画像に対するテクスチャマッピングを行う画像処理装置を提供する態様が考えられる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態のキャッシュ装置２０を含む画像処理装置１の構成例を示すブロック図である。
【図２】画像処理装置１と外部メモリ２との間のデータ転送単位であるブロックを説明するとともに、ＵＶアドレスを説明するための図である。
【図３】キャッシュ装置２０の構成例を示すブロック図である。
【図４】Ｌ１キャッシュ２１０−ｍの構成例を示すブロック図である。
【図５】キャッシュメモリ２１００の構成例とキャッシュメモリ２１００におけるテクスチャデータの格納例を示す図である。
【図６】キャッシュメモリ２１００を構成する各物理メモリの構成例を示す図である。
【図７】キャッシュテーブル２１１０を構成する１つのテーブルを示す図である。
【図８】重複チェック部２１２４における重複チェックを説明するための図である。
【図９】データ読み出し部２１２８の構成例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しつつ、本発明の実施形態について説明する。
図１は、本発明の一実施形態の画像処理装置１の構成例を示すブロック図である。画像処理装置１には、ＤＤＲ３メモリにより構成された外部メモリ２が接続されている。外部メモリ２には、様々なテクスチャのテクスチャデータが予め格納されている。画像処理装置１は、例えば画像処理ＬＳＩであり、外部メモリ２に格納されているテクスチャデータを読み出してテクスチャマッピングを行う。本実施形態では、外部メモリ２には、ＡＲＧＢ（３２ビット）形式のテクスチャデータが格納されている。ＡＲＧＢ（３２ビット）形式のテクスチャデータとは、１テクセルの画素値が透明度（Ａ）８ビット、Ｒ成分の強さ８ビット、Ｇ成分の強さ８ビット、およびＢ成分の強さ８ビットの合計３２ビットで表された画像データである。本実施形態では、外部メモリ２にＡＲＧＢ（３２ビット）形式のテクスチャデータが格納されている場合について説明するが、他の形式（例えば、ＡＹＵＶ４４４形式など）のテクスチャデータが格納されていても良い。また、外部メモリ２に格納されるテクスチャデータは、ＥＴＣ圧縮などの圧縮符号化の施されたデータであっても良い。
【００１７】
画像処理装置１は、図１に示すように、ピクセルシェーダ１０、キャッシュ装置２０、テクスチャフィルタ３０、およびメモリインタフェース４０を含んでいる。外部メモリ２はメモリインタフェース４０に接続されている。外部メモリ２から画像処理装置１へのテクスチャデータの読み出しはメモリインタフェース４０を介して行われる。
【００１８】
図２は、外部メモリ２に格納されているテクスチャデータの論理データ構造を表す図である。図２に示すように、テクスチャは、複数のテクセルの配列として表現される。外部メモリ２から画像処理装置１へのテクスチャデータの読み出しは、８×８のマトリクス状に並んだ６４テクセルを１ブロックとし、このブロック単位で行われる。図２に示す例では、ａ００〜ａ７７、ｂ００〜ｂ７７、ｃ００〜ｃ７７およびｄ００〜ｄ７７によって各々１つのブロックが形成される。前述したように、外部メモリ２に格納されているテクスチャデータはＡＲＧＢ（３２ビット）形式のテクスチャデータであり、１テクセルあたりのデータサイズは３２ビットである。したがって、１ブロックのデータサイズは３２×８×８＝２０４８ビット（２５６バイト）となる。
【００１９】
図２におけるＵアドレスおよびＶアドレスは、テクスチャを構成する各テクセルの左上隅から見た相対位置（すなわち、テクスチャ座標）を表す各々１６ビットの論理アドレスである。図２に示すように、Ｕアドレスは水平方向の相対位置を表し、Ｖアドレスは垂直方向の相対位置を表す。より詳細に説明すると、Ｕアドレスの上位１３ビット（Ｕ[１５：３]）およびＶアドレスの上位１３ビット（Ｖ[１５：３]）は、テクセルの属するブロックを表す。つまり、同じブロックに属するテクセルであれば、Ｕ[１５：３]の値は同一であり、Ｖ[１５：３]の値も同一である。そして、Ｕ[２：０]はテクセルのブロック内での水平方向の相対位置を表し、Ｖ[２：０]はテクセルのブロック内での垂直方向の相対位置を表す。以下では、１つのテクセルを示す１組のＵアドレスおよびＶアドレスを「ＵＶアドレス」と呼ぶ場合がある。
【００２０】
ピクセルシェーダ１０には、描画対象の３Ｄモデルを構成するポリゴンの各頂点の座標位置を表す頂点情報と当該３Ｄモデルに貼り付けるテクスチャに関する情報（当該テクスチャの識別子、およびポリゴンの各頂点に対応させるテクセルのＵＶアドレス）とが上位装置から与えられる。ピクセルシェーダ１０は、上記３Ｄモデルをラスタライズして得られるラスタ画像を構成する各ピクセルの画素値を、当該３Ｄモデルに貼り付けるテクスチャの画素値に基づいて編集する。本実施形態では、３Ｄモデルをラスタライズして得られるラスタ画像の２次元座標とテクスチャデータ上のＵＶアドレスの縮尺が同じ場合について説明する。ピクセルシェーダ１０は、上記３Ｄモデルを構成するポリゴンの各頂点の座標位置を表す頂点情報と当該３Ｄモデルに貼り付けるテクスチャに関する情報とから、上記各ピクセルに対応させるテクセルのＵＶアドレスを算出してキャッシュ装置２０に与える。本実施形態のピクセルシェーダ１０は、上記ラスタ画像を４×４ピクセルのマッピング単位に分割し、１クロック当たり４マッピング単位分のＵＶアドレスをキャッシュ装置２０に与える。前述したように本実施形態では３Ｄモデルをラスタライズして得られるラスタ画像の２次元座標とテクスチャデータ上のＵＶアドレスの縮尺は同じであるため、ラスタ画像上のピクセル（画素）のアドレスとＵＶアドレスとは１対１の関係がある。つまり、１マッピング単位分のＵＶアドレスの個数は１６個となる。
【００２１】
キャッシュ装置２０は、外部メモリ２から画像処理装置１にテクスチャデータを読み出す際に、同じブロック（８×８のマトリクス状に並んだ６４テクセル）のデータが複数回読み出されることを回避するためのものである。キャッシュ装置２０には、マッピング単位を構成する各ピクセルに対応させるテクセルのＵＶアドレス（本実施形態では、合計１６個のＵＶアドレス）がピクセルシェーダ１０から与えられる。実際には、１クロック当たり４マッピング単位分のＵＶアドレス（すなわち、６４個のＵＶアドレス）がピクセルシェーダ１０からキャッシュ装置２０に与えられるのであるが、ここではマッピング単位で記載する。キャッシュ装置２０は、１つのＵＶアドレスに対して当該ＵＶアドレスの示すテクセル、およびその最寄りの３つのテクセルの合計４テクセルの各々の画素値を表す画素データを外部メモリ２から読み出してテクスチャフィルタ３０に出力する。例えば、ピクセルシェーダ１０から上記１６個のＵＶアドレスの１つとして（ｕ０、ｖ０）が与えられた場合には、キャッシュ装置２０はＵＶアドレスが（ｕ０、ｖ０）、（ｕ０＋１、ｖ０）、（ｕ０、ｖ０＋１）、および（ｕ０＋１、ｖ０＋１）の各テクスチャの画素値を表す画素データをテクスチャフィルタ３０に出力する。つまり、キャッシュ装置２０は、１マッピング単位当たり６４テクセル分の画素データをテクスチャフィルタ３０に出力する。
【００２２】
キャッシュ装置２０は、外部メモリ２から読み出したテクスチャデータを記憶するキャッシュを有している。キャッシュ装置２０は、ピクセルシェーダ１０から与えられた１６個のＵＶアドレスの各々について、そのＵＶアドレスに対応させる４つのテクセルの各々の画素データが上記キャッシュに記憶されている場合には、当該４つの画素データをキャッシュから読み出してテクスチャフィルタ３０に与える。詳細については後述するがテクスチャフィルタ３０は、処理対象のピクセルに対応したテクスチャの画素値を上記４つの画素データを用いたバイリニアフィルタ処理により算出し、このようにして算出した画素値を表す画素データをピクセルシェーダ１０に与える。なお、バイリニアフィルタ処理の具体的な処理内容については、周知技術であるため詳細な説明を省略する。
【００２３】
これに対して、上記バイリニアフィルタ処理にて用いる画素データがキャッシュに記憶されていない場合には、キャッシュ装置２０は該当する画素データを含むブロックを外部メモリ２から読み出してキャッシュに記憶させた後に、該当する画素データをテクスチャフィルタ３０へ出力する。このようなキャッシュ装置２０を設けたため、本実施形態によれば、外部メモリ２から同じブロックのデータが複数回読み出されることが回避される。
【００２４】
ここで留意すべき点は、１つのピクセルに対応した４つのテクセルが常に同一のブロックに属するとは限らない、という点である。例えば、ピクセルシェーダ１０からキャッシュ装置２０に図２のａ７７を示すＵＶアドレス（ｕ０，ｖ０）が与えられた場合、処理対象のピクセルに対応した４つのテクセルはａ７７、ｂ７０（ＵＶアドレス（ｕ０＋１，ｖ０）に対応するテクセル）、ｃ０７（ＵＶアドレス（ｕ０，ｖ０＋１）に対応するテクセル）およびｄ００（ＵＶアドレス（ｕ０＋１，ｖ０＋１）に対応するテクセル）であり、これら４つのテクセルは互いに隣り合う４つのブロックに属することとなる。また、ピクセルシェーダ１０からキャッシュ装置２０に図２のａ０７を示すＵＶアドレス（ｕ０´，ｖ０´）が与えられた場合、処理対象のピクセルに対応した４つのテクセルはａ０７、ｂ００（ＵＶアドレス（ｕ０´＋１，ｖ０´）に対応するテクセル）、ａ１７（ＵＶアドレス（ｕ０´，ｖ０´＋１）に対応するテクセル）およびｂ１０（ＵＶアドレス（ｕ０´＋１，ｖ０´＋１）に対応するテクセル）である。この場合、処理対象のピクセルに対応した４つのテクセルは、ａ０７とａ１７の属するブロックと、ｂ００とｂ１０の属するブロック（すなわち、互いに隣り合う２つのブロック）に跨ることになる。
【００２５】
また、テクスチャフィルタ３０の実行するフィルタ処理がミップマップ対応のフィルタ処理である場合、そのフィルタ処理にて用いる各テクセルが互いにＬｏｄ（Level Of Detail）の異なる複数のテクスチャに属していることがある。ミップマップとは、１つのテクスチャにおける各々Ｌｏｄの異なる複数のテクスチャの集合体である。Ｌｏｄとは、テクスチャの詳細度を表す値であり、縮小されていないテクスチャのＬｏｄを０とし、Ｌｏｄの値が大きいほど縮小の度合いが大きいこと（すなわち、詳細度が低い）ことを表す。Ｌｏｄの異なるテクスチャから読み出したテクセルの画素データを用いてバイリニアフィルタ処理を行うことで遠近感（手前側が大きく、奥に行くほど小さくぼやけて見える様子）を自然に再現することが可能になる。
【００２６】
画像処理装置１による描画性能の低下が生じないようにするためには、各マッピング単位を同時並列に処理できること、および１マッピング単位に対応する６４個のテクセルが同一のブロックに属しているか否かを問わずに、これらテクセルの画素データを同時並列に読み出せることがキャッシュ装置２０に対して要求される。また、テクスチャフィルタ３０におけるフィルタ処理がミップマップ対応の処理であれば、各々Ｌｏｄの異なる複数のテクスチャのブロックから複数のテクセルの画素データを同時並列に読み出せることがキャッシュ装置２０に対して要求される。本実施形態のキャッシュ装置２０は、この要求に応えることができるように構成されており、この点に本実施形態の特徴が現れている。キャッシュ装置２０の構成については後に詳細に説明する。なお、外部メモリ２に格納されているテクスチャデータのデータ形式がＡＲＧＢ（３２ビット）形式とは異なる場合には、キャッシュ装置２０からテクスチャフィルタ３０へのデータの受け渡しの際にフォーマット変換を行えば良い。また、外部メモリ２に記憶されているテクスチャデータにＥＴＣ圧縮などの圧縮が施されている場合には、キャッシュ装置２０からテクスチャフィルタ３０へのデータの受け渡しの際にデコードを行うようにすれば良い。
【００２７】
図３は、キャッシュ装置２０の構成例を示す図である。
図３に示すようにキャッシュ装置２０は、Ｌ２キャッシュ２００と、Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）とを含んでいる。なお、以下では、Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）の各々を区別する必要がない場合には、単に「Ｌ１キャッシュ２１０」と表記する。
【００２８】
Ｌ１キャッシュ２１０のアドレス入力ポートはピクセルシェーダ１０に接続されている。Ｌ１キャッシュ２１０のアドレス入力ポートには、読み出し対象のデータを指定する読み出しアドレスとして、１マッピング単位分のＵＶアドレス（本実施形態では、１６個のＵＶアドレス）がピクセルシェーダ１０から与えられる。Ｌ１キャッシュ２１０のデータ出力ポートはテクスチャフィルタ３０に接続されている。Ｌ１キャッシュ２１０は、アドレス入力ポートを介して与えられた１つのＵＶアドレスに対して、当該ＵＶアドレスの示すテクセルおよびその最寄りの３つのテクセルの合計４テクセルの画素値を表すデータをデータ出力ポートから出力する。従って、Ｌ１キャッシュ２１０は、１マッピング単位の１６個のＵＶアドレスに対して６４テクセルの画素値を表すデータをデータ出力ポートから出力する。
【００２９】
より詳細に説明すると、Ｌ１キャッシュ２１０は、上記６４個のデータのうち自身のキャッシュメモリに記憶されているものについては当該データをキャッシュメモリから読み出して出力する。これに対して、自身のキャッシュメモリに記憶されていないものについては、Ｌ１キャッシュ２１０は、該当するテクセルを含むブロックのデータをＬ２キャッシュ２００経由で取得して自身のキャッシュメモリに記憶させた後に、該当するデータを出力する。本実施形態においては、Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）の各々からのデータの読み出しは並列かつ独立して行われる。４つのマッピング単位を同時並列に処理するためである。
【００３０】
Ｌ２キャッシュ２００は、Ｌ１キャッシュ２１０から読み出しを指示されたブロックのデータが自身のキャッシュメモリに記憶されている場合には、該当するブロックのデータをＬ１キャッシュ２１０に出力し、自身のキャッシュメモリに記憶されていない場合には、該当するブロックのデータを外部メモリ２から読み出して自身のキャッシュメモリに記憶させた後に、当該ブロックのデータをＬ１キャッシュ２１０に出力する。つまり、Ｌ２キャッシュ２００は、Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）と外部メモリ２との間に介在し、Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）に対して共有メモリとして機能する。このようなＬ２キャッシュ２００を設けた理由は以下の通りである。
【００３１】
Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）の夫々から独立かつ並列に読み出されるデータは、異なるブロックに属している場合もあれば、同じブロックに属している場合もある。Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）のうちの複数に対して同じブロックに属する互いに異なるテクセルについての読み出し要求が為されると、要求先のＬ１キャッシュ２１０には同じブロックのデータが保持されることになる。例えば、ピクセルシェーダ１０からＬ１キャッシュ２１０−１に与えられた１マッピング単位分のＵＶアドレスのうちの１つがａ００（図２参照）のＵＶアドレスであり、ピクセルシェーダ１０からＬ１キャッシュ２１０−２に与えられた１マッピング単位分のＵＶアドレスのうちの１つがａ６６（図２参照）のＵＶアドレスであったとする。Ｌ１キャッシュ２１０−１では、ａ００の最寄の３つのテクセルのＵＶアドレスとしてａ０１、ａ１０およびａ１１のＵＶアドレスが生成される。そして、Ｌ１キャッシュ２１０−１は、ａ００、ａ０１、ａ１０およびａ１１の属するブロック（すなわち、ａ００〜０７７のブロック）が自身のキャッシュメモリに記憶されているか否かを判定し、記憶されていない場合には、該当するブロックをＬ２キャッシュ２００経由で外部メモリから読み出して記憶する。一方、Ｌ１キャッシュ２１０−２では、ａ６６の最寄の３つのテクセルのＵＶアドレスとしてａ６７、ａ７６およびａ７７のＵＶアドレスが生成される。そして、Ｌ１キャッシュ２１０−２は、ａ６６、ａ６７、ａ７６およびａ７７の属するブロック（すなわち、ａ００〜０７７のブロック）が自身のキャッシュメモリに記憶されているか否かを判定し、記憶されていない場合には、該当するブロックをＬ２キャッシュ２００経由で外部メモリから読み出して記憶する。この場合、Ｌ１キャッシュ２１０−１とＬ１キャッシュ２１０−２の各々のキャッシュメモリには、ａ００〜ａ７７の６４個のテクセルよりなるブロックのデータが夫々格納される。
【００３２】
ここで、ピクセルシェーダ１０からＵＶアドレスを与えられる時点では、Ｌ１キャッシュ２１０−１およびＬ１キャッシュ２１０−２の各々のキャッシュメモリには、ａ００〜ａ７７の６４個のテクセルよりなるブロックのデータが格納されていなかったとする。このような場合、Ｌ１キャッシュ２１０が外部メモリ２から直接データを読み出す構成であったとすると、Ｌ１キャッシュ２１０−１とＬ１キャッシュ２１０−２の夫々がａ００〜ａ７７の６４個のテクセルよりなるブロックのデータを外部メモリ２から読み出すことになる。つまり、画像処理装置１と外部メモリ２との間のデータ転送帯域が全く同一のデータの転送に消費されてしまい、無駄である。
【００３３】
これに対して、本実施形態のように、Ｌ１キャッシュ２１０−ｍ（ｍ＝１〜４）がＬ２キャッシュ２００を介して外部メモリ２からデータを読み出す態様であれば、上記のようなデータ転送帯域の無駄使いを回避することができる。例えば、Ｌ１キャッシュ２１０−１による上記ブロックの読み出しが先行する場合には、その読み出しが完了する時点で当該ブロックはＬ２キャッシュ２００のキャッシュメモリに記憶され、Ｌ１キャッシュ２１０−２による上記ブロックの読み出し時点では当該ブロックのデータを外部メモリ２から読み出す必要はないからである。このように、画像処理装置１と外部メモリ２との間のデータ転送帯域が全く同一のデータの転送に消費されてしまうことを回避するために、本実施形態ではＬ２キャッシュ２００を設けたのである。
【００３４】
次いでＬ１キャッシュ２１０の構成について説明する。
図４は、Ｌ１キャッシュ２１０の構成例を示すブロック図である。図４に示すように、Ｌ１キャッシュ２１０は、キャッシュメモリ２１００、キャッシュテーブル２１１０、およびキャッシュコントローラ２１２０を含んでいる。
【００３５】
キャッシュメモリ２１００は、テクスチャデータをブロック単位で管理するためのメモリである。キャッシュメモリ２１００は、図５（ａ）に示すように、４つの物理メモリ（図５（ａ）に示す例では、物理メモリＭｅｍ００、Ｍｅｍ０１、Ｍｅｍ１０およびＭｅｍ１１）により構成されている。各物理メモリには最大で４ブロック分のデータが格納される。なお、図５（ａ）に示す例では、ａ００〜ａ７７の６４個のテクセルよりなるブロックが単に「ａ」と表記されている（ｂ〜ｎも同様に各々６４個のテクセルよりなるブロックを表す）。つまり、Ｌ１キャッシュ２１０−ｍは、１６ブロック分のデータを格納することができる。なお、本実施形態では、Ｌ１キャッシュ２１０−ｍに１６ブロック分のデータを格納化可能な場合について説明するが、１マッピング単位を処理する際に１６個より多い数のブロックが必要となる場合には複数クロックに分けて処理を行えば良い。逆に、１マッピング単位を処理する際に１６個以下のブロックで充分な場合には１マッピング単位分を１クロックで処理することができる。
【００３６】
キャッシュメモリ２１００を構成する各物理メモリは、各々１ブロック分の記憶容量（すなわち、２５６バイト）を有する４つのページにより構成されている。より詳細に説明すると、上記各物理メモリは、各々３２ビットの記憶容量を有する２５６個のメモリチップを図６に示すように４行６４列に配列して構成されており、行方向に並んだ６４個のメモリチップにより１つのページが形成される。１ページを構成する６４個のメモリチップの各々には、１テクセルの画素データ（３２ビット）が格納される。物理メモリＭｅｍｘｘ（ｘｘは００、０１，１０および１１の何れか）を構成する４つのページの夫々は、ページアドレスｘｘ＿００、ｘｘ＿０１、ｘｘ＿１０およびｘｘ＿１１により識別される。
【００３７】
詳細については後述するが、本実施形態では、上記４行６４列に配列されたメモリチップに対して、１メモリチップ分のデータを読み出すセレクタが列毎に設けられている（図６参照）。このため、ページアドレスを指定して上記セレクタを適宜選択することで、１つのブロックに属する複数のテクセルの画素値を同時並列に読み出すことができる。また、本実施形態では、前掲図５（ａ）に示すように、テクスチャにおいて互いに隣り合うブロックのデータは異なる物理メモリに格納され、この点にも本実施形態の特徴の１つがある。テクスチャを構成する各ブロックを何れの物理メモリに格納するのかについては、当該ブロックに属するテクセルのＵアドレスおよびＶアドレス（より正確にはＵ[５：３]およびＶ[３]）に応じて図５（ｂ）に示すように予め定められている。例えば、物理メモリへの格納対象のブロックに属するテクスチャのＵアドレスのＵ［５：３］が“０００”であり、ＶアドレスのＶ［３］が“０”であれば、当該ブロック（図５（ｂ）に示す例では、ａ００〜ａ７７よりなるブロックａ）の格納先は物理メモリＭｅｍ００と定まるといった具合である。同様に、物理メモリへの格納対象のブロックに属するテクスチャのＵアドレスのＵ［５：３］が“００１”であり、ＶアドレスのＶ［３］が“０”であれば当該ブロック（図５（ｂ）に示す例では、ｂ００〜ｂ７７よりなるブロックｂ）の格納先は物理メモリＭｅｍ０１と定まり、ＵアドレスのＵ［５：３］が“０００”であり、ＶアドレスのＶ［３］が“１”であれば当該ブロック（図５（ｂ）に示す例では、ｃ００〜ｃ７７よりなるブロックｃ）の格納先は物理メモリＭｅｍ１０と定まる。そして、物理メモリへの格納対象のブロックに属するテクスチャのＵアドレスのＵ［５：３］が“００１”であり、ＶアドレスのＶ［３］が“１”であれば当該ブロック（図５（ｂ）に示す例では、ｄ００〜ｄ７７よりなるブロックｄ）の格納先は物理メモリＭｅｍ１１と定まる。物理メモリへの格納対象のブロックに属するテクスチャのＵアドレスのＵ［５：３］が“０１０”、“０１１”、“１００”、“１０１”、“１１０”、“１１１”の場合も、ＶアドレスのＶ［３］が“０”であるか、“１”であるかに応じて、図５（ｂ）に示すように、当該ブロックの格納先の物理メモリが定まる。上記の要領で定まった物理メモリの何れのページにブロックを記憶させるのかについては後に明らかにする。
【００３８】
キャッシュテーブル２１１０は、キャッシュメモリ２１００を構成する４個の物理メモリの各ページに何れのブロックのデータが格納されているのかを管理するためのものである。キャッシュテーブル２１１０は、上記４個の物理メモリに１つずつ対応する４つのテーブルにより構成されている。図７は、キャッシュテーブル２１１０を構成する各テーブルの構成例を示す図である。図７に示すように、キャッシュテーブル２１１０を構成するテーブルは、当該テーブルに対応する物理メモリＭｅｍｘｘの各ページに１つずつ対応する４個のレコードを含んでいる。各レコードには、当該レコードに対応するページに格納されているブロックを示すブロック識別子と、そのブロック識別子の示すデータが有効であるか否かを示すＶａｌｉｄビットと、当該データに対してアクセス中であるか否かを示すＡｃｃ１ビットおよびＡｃｃ２[７：０]と、ＬＲＵ制御に使用されるｄｃｎｔ[１：０]とが格納される。Ｖａｌｉｄビット、Ａｃｃ１ビット、Ａｃｃ２、ｄｃｎｔおよびこれらに対応付けられたブロック識別子は、アクセスが終了した時点（例えば、フレームの描画が終了し、次のフレームの描画開始時）にクリアされる。
【００３９】
本実施形態では、上記ブロック識別子として、ＵＶアドレスに基づいて以下の数１にしたがって算出される３２ビットのリニアアドレスＬＡの上位２４ビット（ＬＡ［３１：８］）が用いられる。なお、数１における[Ｂａｓｅ−ａｄｄｒｅｓｓ]は物理メモリ内で基準とする所定位置のアドレスであり、[Ｕ−ｗｉｄｔｈ]はブロックサイズに応じて定まる定数である。また、数１を参照すれば明らかように、ＬＡ［３１：８］はＵ[１５：３]およびＶ［１５：３］に基づいて算出され、前述したように、同じブロックに属するテクセルであればＵ[１５：３]およびＶ［１５：３］のそれぞれの値は同一である。換言すれば、ＬＡ［３１：８］の値はブロック毎に異なる値となり、このため、ブロックを識別する識別子としての役割を果たすのである。
【数１】
2015200915.tif 000003
【００４０】
前述したように本実施形態では１クロック当たり４マッピング単位分のＵＶアドレスがピクセルシェーダ１０からキャッシュ装置２０に与えられる。キャッシュ装置２０は４個のＬ１キャッシュ２１０を有しており、これら４個のＬ１キャッシュ２１０の各々のキャッシュコントローラ２１２０には上記４マッピング単位分の中から１マッピング単位分ずつＵＶアドレスが与えられる。キャッシュコントローラ２１２０は、前掲図４に示すように、アドレス変換部２１２２、重複チェック部２１２４、キャッシュミス判定部２１２６、およびデータ読み出し部２１２８により構成されている。アドレス変換部２１２２には、１クロック当たり１マッピング単位分のＵＶアドレス（１６個のＵＶアドレス）がピクセルシェーダ１０から与えられる。アドレス変換部２１２２は、このようにして与えられる１６個のＵＶアドレスの各々について当該ＵＶアドレスの示すテクセルの最寄りの３テクセルのＵＶアドレスを算出する。次いで、アドレス変換部２１２２は、ピクセルシェーダ１０から与えられる１６個のＵＶアドレスおよび上記の要領で算出した４８個のＵＶアドレス（すなわち、合計６４個のＵＶアドレス）の各々について前掲数１の演算を行ってリニアアドレスＬＡｎ（ｎ＝０〜６３）に変換する。そして、アドレス変換部２１２２は、このようにして得られたリニアアドレスＬＡｎ（ｎ＝０〜６３）の上位２４ビット（ＬＡｎ[３１：８]）をブロック識別子として重複チェック部２１２４に与える。また、アドレス変換部２１２２は、上記６４組のＵアドレスおよびＶアドレスの各々下位３ビット（Ｕｎ［２：０］およびＶｎ[２：０]）をデータ読み出し部２１２８に与える。
【００４１】
重複チェック部２１２４は、まず、アドレス変換部２１２２から与えられる６４個のブロック識別子の各々について、当該ブロック識別子の示すブロックの格納先となる物理メモリを当該ブロック識別子の下位５ビット（すなわち、ＬＡｎ[１２：８]）を参照して特定する。前述したように、各ブロックを何れの物理メモリに格納するのかについては当該ブロックのＵアドレスのＵ［５：３］およびＶアドレスのＶ[３]に応じて定まる一方、前掲数１を参照すれば明らかように、ブロック識別子の下位５ビットからＵ［５：３］およびＶアドレスのＶ[３]を算出することができるからである。重複チェック部２１２４は、上記特定結果に応じて、格納先となる物理メモリを示す２ビットの選択信号ＴＬＳｎを６４個並列にデータ読み出し部２１２８に出力する（図４参照）。例えば、ブロック識別子ＬＡｎ[３１：８]の示すブロックの格納先が物理メモリＭｅｍｘｘであった場合には、重複チェック部２１２４は選択信号ＴＬＳｎ[１：０]にｘｘをセットして出力する。選択信号ＴＬＳｎを２ビットの信号としたのは、ブロック識別子ＬＡｎ[３１：８]の示すブロックの格納先が物理メモリＭｅｍｘｘ（ｘｘは、００、０１、１０、１１の何れか）を示すためには２ビット必要だからである。
【００４２】
次いで、重複チェック部２１２４は、アドレス変換部２１２２から与えられる６４個のブロック識別子（すなわち、ＬＡｎ[３１：８]（ｎ＝０〜６３））に重複があるか（同じブロックを示すものがあるか）否かをチェックする。前述したように、同じブロックに属するテクセルの場合、ＬＡｎ[３１：８]の値は同じになる。つまり、重複チェック部２１２４は、読み出し対象の６４個のテクセルが何個のブロックに跨っているのかを判別する。例えば、図８（ａ）に示す４×４テクセルがマッピング単位であったとする。図８（ａ）に示すマッピング単位の左上隅に位置するテクセルａ７７の最寄の３テクセルはｂ７０、ｃ０７およびｄ００であり、同マッピング単位の右上隅に位置するテクセルｂ７２の最寄の３テクセルはｂ７３、ｄ０２およびｄ０３である（図２参照）。そして、同マッピング単位の左下隅に位置するテクセルｃ２７の最寄の３テクセルはｄ２０、ｃ３７およびｄ３０であり、同マッピング単位の右下隅に位置するテクセルｄ２２の最寄の３テクセルはｄ２３、ｄ３２およびｄ３３である（図２参照）。このように、図８（ａ）に示すマッピング単位の４×４テクセルの各々のＵＶアドレス（合計１６個のＵＶアドレス）とこれら１６個のＵＶアドレスに基づいて生成した４８個のＵＶアドレスよりなる６４個のＵＶアドレスの中には重複するものがあり、その重複を無くすと、図８（ｂ）に示す５×５画素の各々を示す合計２５個のＵＶアドレスが残る。これら５×５画素よりなる領域はブロックａ、ブロックｂ、ブロックｃおよびブロックｄの４つのブロックに跨っている。したがって、この場合、重複チェック部２１２４は、互いに重複しないブロック識別子ＬＡｎ[３１：８]の個数として４を算出する。なお、重複チェック部２１２４による重複チェックの結果、読み出し対象の６４個のテクセルが５個以上のブロックに跨っていた場合には、最大４ブロックを区切りとして複数クロックで処理するようにすれば良い。よって、以下では、読み出し対象の６４個のテクセルが最大で４個のブロックに跨る場合について説明する。
【００４３】
重複チェック部２１２４は、ブロック識別子ＬＡｎ[３１：８]（ｎ＝０〜６３）についての重複チェックのチェック結果に応じたデータをブロック識別子Ｌａ００、Ｌａ０１、Ｌａ１０およびＬａ１１と、ｆｌａｇ[３：０]（図４では、単に「ｆｌａｇ」と表記）にセットしてキャッシュミス判定部２１２６に与えるとともに、ｆｌａｇ[３：０]をデータ読み出し部２１２８に与える（図４参照）。図４におけるブロック識別子Ｌａ００、Ｌａ０１、Ｌａ１０およびＬａ１１の各々は、物理メモリＭｅｍ００、Ｍｅｍ０１、Ｍｅｍ１０およびＭｅｍ１１に対応している。ブロック識別子Ｌａ００、Ｌａ０１、Ｌａ１０およびＬａ１１の各々には、重複チェックにおいて互いに重複しないと判定されたブロック識別子（最大で４個のブロック識別子）の各々が重複チェック部２１２４によってセットされる。より詳細に説明すると、ブロック識別子Ｌａ００には、互いに重複しないと判定されたブロック識別子のうち物理メモリＭｅｍ００に格納されるブロックのブロック識別子が重複チェック部２１２４によってセットされる。なお、互いに重複しないと判定されたブロック識別子の各々についてのそのブロック識別子の示すブロックの格納先の物理メモリについては、当該ブロック識別子の下位５ビットを参照して特定すれば良い。同様に、ブロック識別子Ｌａ０１には互いに重複しないと判定されたブロック識別子のうち物理メモリＭｅｍ０１に格納されるブロックのブロック識別子が、ブロック識別子Ｌａ１０には互いに重複しないと判定されたブロック識別子のうち物理メモリＭｅｍ１０に格納されるブロックのブロック識別子が、ブロック識別子Ｌａ１１には互いに重複しないと判定されたブロック識別子のうち物理メモリＭｅｍ１１に格納されるブロックのブロック識別子が重複チェック部２１２４によってそれぞれセットされる。
【００４４】
重複チェック部２１２４からキャッシュミス判定部２１２６に与えるブロック識別子としてブロック識別子Ｌａ００〜Ｌａ１１の４つを用意した理由は以下の通りである。１マッピング単位についてのバイリニアフィルタ処理において用いる６４個のテクセルが複数のブロックに跨る場合には、それら６４個のテクセルは互いに隣り合うブロックに跨る。本実施形態では互いに隣り合うブロックは異なる物理メモリに格納されるため、重複チェック部２１２４により互いに重複しないと判別されたブロック識別子が複数ある場合であっても、それらブロック識別子の各々の示すブロックが同一の物理メモリに格納されていることはない。したがって、重複チェックのチェック結果を格納するブロック識別子として、物理メモリＭｅｍｘｘ（ｘｘ＝００，０１，１０，１１）の各々に対応する４つ（すなわち、ブロック識別子Ｌａ００、Ｌａ０１、Ｌａ１０およびＬａ１１）を用意しておけば良いのである。以下では、ブロック識別子Ｌａ００、Ｌａ０１、Ｌａ１０およびＬａ１１のうち、重複チェック部２１２４によって互いに重複しないと判定されたブロック識別子のセットされたものを「有効なブロック識別子」と呼ぶ。
【００４５】
重複チェック部２１２４は、常に４つのブロック識別子（ブロック識別子Ｌａ００、Ｌａ０１、Ｌａ１０およびＬａ１１）をキャッシュミス判定部２１２６に出力するのであるが、これら４つのブロック識別子の全てが常に「有効なブロック識別子」であるとは限らない。図４のｆｌａｇ[３：０]は、これら４つのブロック識別子の何れが有効であるかを示すデータである。より詳細に説明すると、ｆｌａｇ[３：０]の各ビットは、ブロック識別子Ｌａ００、Ｌａ０１、Ｌａ１０およびＬａ１１の各々に対応している。具体的には、ｆｌａｇの第０ビットはブロック識別子Ｌａ００に、ｆｌａｇの第１ビットはブロック識別子Ｌａ０１に、ｆｌａｇの第２ビットはブロック識別子Ｌａ１０に、ｆｌａｇの第３ビットはブロック識別子Ｌａ１１に夫々対応している。重複チェック部２１２４は、「有効なブロック識別子」に対応するｆｌａｇ[３：０]のビットには“１”をセットし、他のビットには“０”をセットする。例えば、重複チェックにおいて他のものとは重複していないと判別されたブロック識別子の個数が１であり、かつ当該ブロック識別子の示すブロックの格納先が物理メモリＭｅｍ００であれば、重複チェック部２１２４は当該ブロック識別子をブロック識別子Ｌａ００にセットしてキャッシュミス判定部２１２６に出力するとともに、ｆｌａｇ[３：０]の第０ビットに１を他のビットに０をセットしてキャッシュミス判定部２１２６およびデータ読み出し部２１２８に出力する。また、重複チェックにおいて他のものとは重複していないと判別されたブロック識別子の個数が２であり、かつ、これらブロック識別子の示す各ブロックの格納先が物理メモリＭｅｍ０１および物理メモリＭｅｍ１０であれば、重複チェック部２１２４は、物理メモリＭｅｍ０１に格納されるブロックのブロック識別子をブロック識別子Ｌａ０１にセットするとともに、物理メモリＭｅｍ１０に格納されるブロックのブロック識別子をブロック識別子Ｌａ１０にセットしてキャッシュミス判定部２１２６に出力するとともに、ｆｌａｇ[３：０]の第１および第２ビットに１をセットし他のビットに０をセットしてキャッシュミス判定部２１２６およびデータ読み出し部２１２８に出力する。
【００４６】
そして、重複チェックにおいて他のものとは重複していないと判別されたブロック識別子の個数が４であれば、重複チェック部２１２４は、物理メモリＭｅｍｘｘ（ｘｘは、００、０１、１０および１１の何れか）に格納されるブロックのブロック識別子をブロック識別子Ｌａｘｘにセットしてキャッシュミス判定部２１２６に出力するとともに、ｆｌａｇ[３：０]の第０〜第３の各ビットに１をセットしてキャッシュミス判定部２１２６およびデータ読み出し部２１２８に出力する。
【００４７】
キャッシュミス判定部２１２６は、重複チェック部２１２４から出力されたブロック識別子Ｌａｘｘ（ｘｘ＝００，０１，１０、１１）のうちの有効なもの（すなわち、ｆｌａｇ［３：０］における対応するビットの値が１であるもの）について、そのブロック識別子の示す物理メモリＭｅｍｘｘに対応するキャッシュテーブルを参照し当該ブロックの格納先のページを示すページアドレスをページアドレスＴＮｘｘにセットしてデータ読み出し部２１２８に出力する。例えば、重複チェック部２１２４から出力されたブロック識別子Ｌａｘｘ（ｘｘ＝００，０１，１０、１１）のうちブロック識別子Ｌａ００のみが有効（すなわち、ｆｌａｇ［３：０］の第０ビットのみが１であり、他のビットは０）であれば、キャッシュミス判定部２１２６からデータ読み出し部２１２８に与えられる４つのページアドレス（ページアドレスＴＮ００、ＴＮ０１、ＴＮ１０、ＴＮ１１）のうち、実際にページアドレスがセットされるのはページアドレスＴＮ００のみである。つまり、ｆｌａｇ［３：０］は、重複チェック部２１２４から出力されたブロック識別子Ｌａｘｘ（ｘｘ＝００，０１，１０、１１）のうちの有効なものを示すとともに、キャッシュミス判定部２１２６から出力されたページアドレスＴＮｘｘ（ｘｘ＝００，０１，１０、１１）のうちの有効なものを示す。
【００４８】
より詳細に説明すると、キャッシュミス判定部２１２６は、重複チェック部２１２４から出力されたブロック識別子Ｌａｘｘ（ｘｘ＝００，０１，１０、１１）のうちの有効なブロック識別子について、そのブロック識別子の示すブロックの有効なデータがキャッシュメモリ２１００に格納されているか否かをキャッシュテーブル２１１０を参照して判定する。前述したように、重複チェック部２１２４からキャッシュミス判定部２１２６に与えられる有効なブロック識別子は最大で４個であるから、キャッシュミス判定部２１２６では、最大で４個のブロックについてキャッシュテーブルを参照してキャッシュミスの判定を行えば良く、アドレス変換部２１２２の出力する６４個のブロック識別子の全てについてキャッシュミスの判定を行う場合に比較して同じブロックについてキャッシュミスの判定が複数回行われることが回避される。
【００４９】
キャッシュミス判定部２１２６は、有効なブロック識別子がキャッシュテーブル２１１０に格納されており、かつ当該ブロック識別子に対応付けてキャッシュテーブル２１１０に格納されているＶａｌｉｄビットが有効を示す値であれば、有効なデータがキャッシュメモリ２１００に格納されていると判定する。この場合、キャッシュミス判定部２１２６は、有効なブロック識別子の示すブロックの格納先のページを示すページアドレス（すなわち、当該ブロック識別子の格納されているレコードに対応するページアドレス）をページアドレスＴＮｘｘ（ｘｘ＝００，０１，１０，１１）のうちの有効なブロック識別子に対応するものにセットしてデータ読み出し部２１２８に与え、該当するレコードに対応するｄｃｎｔおよび“有効”を示す値のＶａｌｉｄビットに対応付けられている他のレコードを更新する。このｄｃｎｔの更新や他のレコードの更新については周知のＬＲＵ制御におけるものと同様である。
【００５０】
例えば、重複チェック部２１２４から与えられたブロック識別子Ｌａｘｘ（ｘｘ＝００，０１，１０および１１）のうちブロック識別子Ｌａ００が有効であったとする。この場合、キャッシュミス判定部２１２６は、キャッシュテーブル２１１０を構成する４つのテーブルのうち物理メモリＭｅｍ００に対応するテーブル（図７参照）を参照し、ブロック識別子Ｌａ００が当該テーブルに格納されており、かつ当該ブロック識別子に対応付けて当該テーブルに格納されているｖａｌｉｄフラグの値が有効を示す値であれば、ブロック識別子Ｌａ００の示すブロックの有効なデータが物理メモリＭｅｍ００に格納されていると判定し、当該ブロックの物理メモリＭｅｍ００における格納先のページアドレスをページアドレスＴＮ００にセットしてデータ読み出し部２１２８に出力する。例えば、上記格納先のページアドレスが００＿０１であった場合には、キャッシュミス判定部２１２６は、ページアドレスＴＮ００に００＿０１をセットしてデータ読み出し部２１２８に出力する。
【００５１】
これに対して、有効なブロック識別子がキャッシュテーブル２１１０を構成する４つのテーブルのうちの対応するものに格納されていない場合、または当該ブロック識別子が当該テーブルに格納されているものの、当該ブロック識別子に対応づけて当該テーブルに格納されているＶａｌｉｄビットが無効を示す値である場合には、キャッシュミス判定部２１２６は、当該ブロック識別子の示すブロックのデータをＬ２キャッシュから読み出す。該当ブロックのデータがＬ２キャッシュに格納されていない場合は、キャッシュミス判定部２１２６は、Ｌ２キャッシュ２００を介して外部メモリ２から該当するブロックのデータを読み出し、キャッシュメモリ２１００に格納するとともに、キャッシュテーブル２１１０の格納内容を更新する。この場合、キャッシュミス判定部２１２６は、上記ブロックの格納先となる物理メモリに空きページが有る場合には、当該ページに上記ブロックを格納し、当該ページのページアドレスをページアドレスＴＮｘｘ（ｘｘ＝００，０１，１０および１１）のうち有効なブロック識別子に対応するもの（有効なブロック識別子がＬａ００であればページアドレスＴＮ００）にセットしてデータ読み出し部２１２８に出力する。上記ブロックの格納先となる物理メモリに空きページが無い場合には、キャッシュミス判定部２１２６はＬＲＵ制御により格納先となるページを確保し、当該ページに上記ブロックを格納するとともに当該ページのページアドレスをページアドレスＴＮｘｘ（ｘｘ＝００，０１，１０および１１）のうち有効なブロック識別子に対応するものにセットしてデータ読み出し部２１２８に与える。
【００５２】
図９は、データ読み出し部２１２８の構成例を示す図である。図９に示すように、データ読み出し部２１２８は、物理メモリＭｅｍ００〜Ｍｅｍ１１の各々に対応させて１つずつ設けられたデータ選択回路２１２８ａ＿００、２１２８ａ＿０１、２１２８ａ＿１０および２１２８ａ＿１１と、６４ブロック分の記憶容量を有するレジスタ２１２８ｂと、セレクタ２１２８ｃ＿ｍ（ｍ＝０〜６３）とを含んでいる。なお、以下では、レジスタ２１２８ｂ内の記憶領域を１ブロック分ずつ６４個の記憶領域に区分し、先頭から順に０番目の記憶領域、１番目の記憶領域、・・・６３番目の記憶領域と呼ぶ。データ選択回路２１２８ａ＿ｘｘ（ｘｘ＝００、０１、１０または１１）は、対応する物理メモリＭｅｍｘｘを構成する４行６４列のメモリチップ（前掲図６参照）の列毎に設けられた６４個のセレクタを含んでいる（図９では図示略）。本実施形態のデータ読み出し部２１２８は、これら２５６個のセレクタを制御して、１マッピング単位に対応する６４個のテクセルのうちのｍ（ｍ＝０〜６３）番目のテクセルを含むブロックのデータ（すなわち、６４テクセル分の画素データ）をレジスタ２１２８ｂのｍ番目の記憶領域に書き込み、当該ｍ番目の記憶領域に格納されたブロックのうちから上記ｍ番目のテクセルに対応する画素データをセレクタ２１２８ｃ＿ｍにより読み出して出力する。
【００５３】
より詳細に説明すると、データ読み出し部２１２８には、アドレス変換部２１２２から６４個のＵＶアドレスの下位３ビット（Ｕｎ[２：０]（ｎ＝０〜６３）、Ｖｎ[２：０]（ｎ＝０〜６３））が与えられる。また、データ読み出し部２１２８には、選択信号ＴＳＬｎ（ｎ＝０〜６３）およびｆｌａｇ[３：０]が重複チェック部２１２４から与えられる。そして、データ読み出し部２１２８には、キャッシュミス判定部２１２６からページアドレスＴＮｘｘ（ｘｘ＝００、０１、１０および１１）が与えられる。
【００５４】
データ選択回路２１２８ａ＿ｘｘには、ページアドレスＴＮｘｘとｆｌａｇ[３：０]と選択信号ＴＬＳｎ（ｎ＝０〜６３）とが与えられる。データ選択回路２１２８ａ＿ｘｘは、ｆｌａｇ[３：０]において物理メモリＭｅｍｘｘに対応するビットの値が１である場合（すなわち、ページアドレスＴＮｘｘが有効である場合）に、物理メモリＭｅｍｘｘにおけるページアドレスＴＮｘｘの示すページを選択する。例えば、データ選択回路２１２８ａ＿００は、ｆｌａｇ[３：０]の第０ビットが１であれば、物理メモリＭｅｍ００におけるページアドレスＴＮ００の示すページを選択し、ｆｌａｇ[３：０]の第０ビットが０であれば、ページの選択を行わない。そして、データ選択回路２１２８ａ＿ｘｘは、選択信号ＴＬＳｎ（ｎ＝０〜６３）の各々について、その値がｘｘであれば上記選択したページに格納されている１ブロック分のデータ（すなわち、１ブロックを構成する６４個のテクセルの各画素データ）を前掲図６の６４個のセレクタの各々により選択してレジスタ２１２８ｂのｎ番目の記憶領域に書き込む。セレクタ２１２８ｃ＿ｍ（ｍ＝０〜６３）の各々にはアドレス変換部２１２２から出力されたＵｍ[２：０]とＶｍ[２：０]が与えられる。セレクタ２１２８ｃ＿ｍは、レジスタ２１２８ｂのｍ番目の記憶領域からちＵｍ[２：０]およびＶｍ[２：０]の示す画素データを読み出し、テクスチャフィルタ３０に与える６４個のデータのうちのｍ番目のデータとして出力する。セレクタ２１２８ｃ＿ｍ（ｍ＝０〜６３）の各々は上記処理を同時並列に実行するため、テクスチャフィルタ３０に与える６４個のデータが同時並列に読み出される。
【００５５】
例えば、バイリニアフィルタ処理に用いる６４個のテクセルが１つのブロックに属し、当該ブロックが物理メモリＭｅｍ００の第１ページ（ページアドレスが００＿０１のページ）に格納されていたとする。この場合、ページアドレスＴＮ００のみが有効となり、このページアドレスＴＮ００には上記第１ページのページアドレス００＿０１がセットされる。また、選択信号ＴＬＳｎ（ｎ＝０〜６３）の各々の値は全て００となる。したがって、レジスタ２１２８ｂの６４個の記憶領域の各々には、物理メモリＭｅｍ００の第１ページに格納されているブロックのデータが格納される。そして、セレクタ２１２８ｃ＿ｍ（ｍ＝０〜６３）の各々によって上記６４個の記憶領域の各々から同時並列に画素データが１つずつ読み出され、これら６４個のデータがキャッシュ装置２０からテクスチャフィルタ３０に出力される。また、バイリニアフィルタ処理に用いる６４個のテクセルが互いに隣り合う２つのブロックに跨り、これら２つのブロックが物理メモリＭｅｍ０１の第２ページと物理メモリＭｅｍ１０の第３ページに格納されていた場合には、ページアドレスＴＮ０１およびＴＮ１０が有効となり、ページアドレスＴＮ０１には上記第２ページのページアドレス０１＿１０が、ページアドレスＴＮ１０には上記第３ページのページアドレス１０＿１１が、それぞれセットされる。また、選択信号ＴＬＳｎ（ｎ＝０〜６３）には値が０１のものと値が１０のものとが含まれることになる。この場合、レジスタ２１２８ｂのｎ番目の記憶領域には、選択信号ＴＬＳｎの値が０１であればページアドレスＴＮ０１の示すブロックのデータが格納され、選択信号ＴＬＳｎの値が１０であればページアドレスＴＮ１０の示すブロックのデータが格納される。そして、セレクタ２１２８ｃ＿ｍ（ｍ＝０〜６３）の各々によって上記６４個の記憶領域の各々から同時並列に画素データが１つずつ読み出され、これら６４個のデータがキャッシュ装置２０からテクスチャフィルタ３０に出力される。これにより、バイリニアフィルタ処理に用いる各テクセルの画素値を表す６４個のデータが同時並列に読み出される。
【００５６】
そして、バイリニアフィルタ処理に用いる６４個のテクセルが互いに隣り合う４つのブロックに跨り、これら４つのブロックが物理メモリＭｅｍ００〜Ｍｅｍ１１に各々１つずつ格納さていた場合には、ページアドレスＴＮ００〜ＴＮ１１の全てが有効となり、選択信号ＴＬＳｎ（ｎ＝０〜６３）には値が００のもの、値が０１のもの、値が１０のもの、値が１１のものが含まれることになる。この場合、レジスタ２１２８ｂのｎ番目の記憶領域には、選択信号ＴＬＳｎの値が００であればページアドレスＴＮ００の示すブロックのデータが格納され、選択信号ＴＬＳｎの値が０１であればページアドレスＴＮ０１の示すブロックのデータが格納され、選択信号ＴＬＳｎの値が１０であればページアドレスＴＮ１０の示すブロックのデータが格納され、選択信号ＴＬＳｎの値が１１であればページアドレスＴＮ１１の示すブロックのデータが格納される。そして、セレクタ２１２８ｃ＿ｍ（ｍ＝０〜６３）の各々によって上記６４個の記憶領域の各々から同時並列に画素データが１つずつ読み出され、これら６４個のデータがキャッシュ装置２０からテクスチャフィルタ３０に出力される。これにより、バイリニアフィルタ処理に用いる各テクセルの画素値を表す６４個のデータが同時並列に読み出される。
【００５７】
このように、本実施形態によれば、処理対象の４×４テクセルに対してバイリニアフィルタ処理にて使用する６４テクセルが１つのブロックに収まっている場合は勿論、これら６４テクセルが互いに隣り合う複数のブロックに跨っている場合であっても、最大で４つのブロックに跨っているのであれば、それら６４テクセルの各画素値を表すデータを１クロックで同時並列に読み出してテクスチャフィルタ３０に与えることが可能になる。また、本実施形態において一度読み出したテクスチャデータの再利用が可能であることは前述した通りである。つまり、本実施形態によれば、一度読み出したテクスチャデータの再利用を可能としつつ、複数のテクスチャの複数のテクセルを同時に読み出すことが可能になる。
【００５８】
以上本発明の一実施形態について説明したが、この実施形態を以下のように変形しても勿論良い。
（１）上記実施形態では、キャッシュ装置２０が、複数のＬ１キャッシュ２１０−ｎと、Ｌ２キャッシュ２００により構成されていた。ここで、Ｌ１キャッシュ２１０−ｎは、外部メモリ２に記憶されているテクスチャデータを読み出してブロック単位で管理するキャッシュであり、複数の物理メモリにより構成され、テクスチャにおいて互いに隣り合うブロックは異なる物理メモリに格納される。これに対して、Ｌ２キャッシュ２００は、複数の第１のキャッシュと外部メモリ２との間に介在し、複数の第１のキャッシュに対して共有メモリとして機能する第２のキャッシュである。この第２のキャッシュを省略してキャッシュ装置を構成しても勿論良い。第２のキャッシュを省略した態様であっても、複数のテクスチャの複数のテクセルを同時に読み出すことは可能であり、描画性能の向上を実現することができるからである。
【００５９】
（２）上記実施形態では、４個のＬ１キャッシュがキャッシュ装置２０に含まれていた。これは、４マッピング単位を同時並列に処理するためである。しかし、キャッシュ装置２０に含まれるＬ１キャッシュの数は１〜３であっても良く、５個以上であっても良い。Ｌ１キャッシュが１つだけの場合、Ｌ２キャッシュを設けることに意味がないかのように見えるが、Ｌ２キャッシュ２００があれば外部メモリ２へのアクセスを減らすことができるので、Ｌ１キャッシュが１つだけの場合であってもＬ２キャッシュを設ける意味はある。また、上記実施形態では、Ｌ１キャッシュが４個の物理メモリにより構成されていたが、１〜３個の物理メモリにより構成されていても良く、また、５個以上の物理メモリにより構成されていても良い。但し、上記実施形態のように４×４テクセルを単位としてバイリニアフィルタ処理を実行する場合、そのバイリニアフィルタ処理にて使用する６４テクセル分のデータは最大で４ブロックに跨る可能性がある。このため、Ｌ１キャッシュを４個の物理メモリにより構成する態様が最も効率が良い。
【００６０】
（３）データ選択回路２１２８ａ＿ｘｘ（ｘｘ＝００、０１、１０、１１）の各々により１マッピング単位に対応させる６４個のテクセルを選択してレジスタ２１２８ｂに書き込むようにしても良い。この場合、レジスタ２１２８ｂは、各々が１テクセル分の記憶容量の６４個の記憶領域を有していれば良く、レジスタ２１２８ｃ−ｍは上記６４個の記憶領域のうちのｍ番目の記憶領域に格納されている１テクセル分のデータを読み出して出力すれば良い。これは以下の要領で実現できる。まず、データ選択回路２１２８ａ＿ｘｘにページアドレスＴＮｘｘとｆｌａｇ[３：０]と選択信号ＴＬＳｎ（ｎ＝０〜６３）に加えてＵｎ[２：０] （ｎ＝０〜６３）とＶｎ[２：０] （ｎ＝０〜６３）を与えるようにする。ページアドレスＴＮｘｘとｆｌａｇ[３：０]とに応じてデータ選択回路２１２８ａ＿ｘｘにページの選択を行わせる点は上記実施形態と同様である。そして、選択信号ＴＬＳｎ（ｎ＝０〜６３）の各々について、その値がｘｘであれば、当該データ選択回路２１２８ａ＿ｘｘに含まれる６４個のレジスタの各々にＵｎ[２：０]およびＶｎ[２：０]を与え、上記選択されたページに格納されているブロックからＵｎ[２：０]およびＶｎ[２：０]の示すセレクタにより１つのテクセルを選択してレジスタ２１２８ｂのｎ番目の記憶領域に書き込む処理をデータ選択回路２１２８ａ＿ｘｘに実行させるのである。
【符号の説明】
【００６１】
１…画像処理装置、２…外部メモリ、１０…ピクセルシェーダ、２０…キャッシュ装置、２００…Ｌ２キャッシュ、２１０−ｎ（ｎ＝１〜４）…Ｌ１キャッシュ、２１００…キャッシュメモリ、２１１０…キャッシュテーブル、２１２０…キャッシュコントローラ、２１２２…アドレス変換部、２１２４…重複チェック部、２１２６…キャッシュミス判定部、２１２８…データ読み出し部、２１２８ａ＿ｘｘ（ｘｘ＝００、０１，１０、１１）…データ選択回路、２１２８ｂ…レジスタ、２１２８ｃ−ｍ（ｍ＝０〜６３）…セレクタ、３０…テクスチャフィルタ、４０…メモリインタフェース。
【図１】
2015200915.tif 000004
【図２】
2015200915.tif 000005
【図３】
2015200915.tif 000006
【図４】
2015200915.tif 000007
【図５】
2015200915.tif 000008
【図６】
2015200915.tif 000009
【図７】
2015200915.tif 000010
【図８】
2015200915.tif 000011
【図９】
2015200915.tif 000012