(57)【要約】【課題】近年の画像生成装置はポリゴン数の飛躍的増加のために計算処理及びバッファリード／ライトの高速化が強く望まれている。また、汎用プロセッサが複数個必要な従来装置は高価である。【解決手段】描画回路１２は、現在出力しているバッファリードアドレスに対応するバッファブロック番号と異なるバッファブロック番号に対応するバッファリードアドレスを将来バッファリードアドレスとして出力する場合、そのバッファリードアドレスをバッファネクストリードアドレスとして予めキャッシュ制御部１３へ出力する。キャッシュ制御部１３は、算出したバッファブロック番号のバッファブロックがキャッシュメモリ１４に格納されていないことを検出したときは、バッファネクストリードアドレスに対応するバッファブロック番号が示すバッファブロックをバッファ１６からリードさせて、選択したキャッシュブロックに格納させる。【選択図】　　　　　　図１
2004133608.tif 000002
【特許請求の範囲】
【請求項１】
格子状に並んだ複数の画素で構成される画面を複数のバッファブロックに分割し、各々バッファブロック番号を付したバッファブロック単位で視点からの距離を表す奥行き値と輝度値を前記複数の画素毎に格納するバッファと、
３次元形状物体を基本形状であるポリゴンの集合として定義し、前記ポリゴンの頂点毎に画面上の位置と視点からの距離を表す奥行き値及び輝度値が記述されているポリゴンデータを入力として受け、前記奥行き値及び輝度値を内挿することにより前記ポリゴン内の画素の画素位置、奥行き値及び輝度値を求め、前記バッファから入力された前記画素位置に対応する奥行き値よりも前記内挿によって求めた奥行き値の方が小さいときにのみ、前記内挿によって求めた奥行き値及び輝度値を出力すると共に、バッファリードアドレス、バッファライトアドレス又はバッファネクストリードアドレスを出力する描画回路と、
前記複数のバッファブロックの奥行き値及び輝度値を、このバッファブロック単位で格納する、各々キャッシュブロック番号を付した複数のキャッシュブロックからなるキャッシュメモリと、
前記描画回路から前記バッファの前記画素位置に対応する奥行き値及び輝度値のバッファリードアドレス、バッファライトアドレス又はバッファネクストリードアドレスを入力として受け、入力された前記リードアドレス又は前記ライトアドレスに対応したバッファブロック番号を算出し、その算出したバッファブロック番号のバッファブロックが前記キャッシュメモリに格納されているかを、算出したバッファブロック番号とキャッシュブロック毎に記憶しているバッファブロック番号を比較することで検出し、前記キャッシュメモリに格納されているときには前記キャッシュメモリから前記バッファリードアドレスに対応する奥行き値をリードして前記描画回路へ出力するか、又は前記描画回路から入力された前記奥行き値及び輝度値を前記キャッシュメモリの前記バッファライトアドレスに対応した場所にライトし、前記キャッシュメモリに格納されていないときには更新を行う一のキャッシュブロックを選択して、選択したキャッシュブロックに格納されている奥行き値及び輝度値を前記キャッシュメモリから出力させた後、前記算出したバッファブロック番号のバッファブロックを前記選択したキャッシュブロックに格納させる制御信号を出力するキャッシュ制御部と、
前記キャッシュ制御部からの前記制御信号に基づき、前記選択したキャッシュブロックに格納されている奥行き値及び輝度値を前記キャッシュメモリから前記バッファへ転送した後、前記リードアドレス又は前記ライトアドレスに対応したバッファブロック番号のバッファブロックの奥行き値及び輝度値を前記バッファから前記選択したキャッシュブロックに転送して格納させるバッファ制御部と、前記描画回路が少なくとも前記リードアドレス、前記ライトアドレス及び前記バッファネクストリードアドレスを独立して出力するように前記描画回路の動作を制御すると共に、前記画面へのポリゴンの描画開始前に前記バッファ制御部を介して前記バッファを初期化させ、前記画面内の全てのポリゴンの描画終了時に前記バッファ制御部により前記バッファからの輝度値をリードさせて出力させる演算手段と
を有し、前記描画回路は、現在出力している前記バッファリードアドレスに対応するバッファブロック番号と異なるバッファブロック番号に対応するバッファリードアドレスを将来バッファリードアドレスとして出力する場合、将来出力するそのバッファリードアドレスを前記バッファネクストリードアドレスとして予め前記キャッシュ制御部へ出力する機能を備え、前記キャッシュ制御部は、前記算出したバッファブロック番号のバッファブロックが前記キャッシュメモリに格納されていないことを検出したときは、前記バッファネクストリードアドレスに対応するバッファブロック番号が示すバッファブロックを前記バッファからリードさせて、前記選択したキャッシュブロックに格納させる機能を備えることを特徴とする画像生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像生成装置に係り、特にコンピュータグラフィックスによる３次元形状物体を隠面消去した画像を生成する画像生成装置に関する。
【０００２】
【従来の技術】
コンピュータグラフィックスによる３次元形状物体を隠面消去した画像を生成する従来の画像生成装置として、Ｚバッファ法により隠面消去した画像を生成する装置が良く知られている。このＺバッファ法とは、視点から物体までの距離である奥行き値（Ｚ値）を各画素毎に格納するＺバッファと、明るさを表す輝度値を各画素毎に格納するフレームバッファとを用い、各画素毎に３次元形状物体の奥行き値と輝度値を計算し、Ｚバッファ中の奥行き値と３次元形状物体の奥行き値とを比較して、視点から近い方の奥行き値及び輝度値をＺバッファ及びフレームバッファに残すことで、最終的にある視点から見た場合に見えなくなる物体、あるいは物体の部分を表示させないように隠面消去された画像をフレームバッファ中に生成する方法である。
【０００３】
また、従来の画像生成装置では、汎用プロセッサでフレームバッファに図形等の画像情報を描画するが、キャッシュメモリを使用してその描画速度を高速化しようとするものが知られている（特許文献１参照）。
【０００４】
この従来の画像生成装置では、フレームバッファの一部の写しを有するキャッシュメモリ装置のキャッシュ単位を、２次元的な広がりを持つ矩形ブロックとし、かつ、コピーバック方式を適用する構成とすることにより、汎用プロセッサからフレームバッファへの書き込み要求が頻繁に発生する描画時には、一旦キャッシュミスとなっても、該当するフレームバッファ上の矩形ブロックのデータをキャッシュメモリ装置に読み込み、これに続くフレームバッファ上での２次元近傍への書き込み要求はキャッシュヒットする可能性が高くなり、フレームバッファへの書込み操作の高速化を図ろうとするものである。
【０００５】
【特許文献１】
特開平６−５９９７５号公報（第２−６頁、図１）
【０００６】
【発明が解決しようとする課題】
しかるに、前述したＺバッファ法を用いた従来の画像生成装置では、３次元形状物体を画面に投影したときの投影像に含まれる各画素毎に計算処理とバッファリード／ライトを行うが、Ｚバッファやフレームバッファには、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）を使用した場合、計算処理、バッファリード／ライトの高速化が可能となるが、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）に比べてコスト高となる。
【０００７】
一方、従来のＤＲＡＭでは計算処理、バッファリード／ライト双方の高速化が不充分であり、３次元のコンピュータグラフィックスの表示の高画質化が益々要求されるようになった近年では、ポリゴン数の飛躍的増加のために計算処理及びバッファリード／ライトの高速化が強く望まれている。
【０００８】
また、特許文献１記載の従来の画像生成装置では、汎用プロセッサを用いて画面上の各画素位置に対応した画素の輝度値をフレームバッファに格納し、また、バッファを所定サイズの矩形領域に分割し、バッファの一部の写しを矩形ブロック単位に保持するキャッシュメモリ装置を有する装置で、専用の描画ハードウェアによりフレームバッファに図形等を描画する装置よりも安価ではあるが、汎用プロセッサとてハードウェアであり、専用の描画ハードウェアと同等の性能を汎用プロセッサで得ようとすると、汎用プロセッサを複数個用いることになり、専用の描画ハードウェアを用いた場合に比べて高価な構成となってしまう。
【０００９】
本発明は以上の点に鑑みなされたもので、画面を複数のブロックに分割し、そのブロック単位でバッファメモリ（以下、単にバッファという）とキャッシュメモリ間のデータ転送を行い、描画回路がキャッシュメモリに対してリード／ライトを行うことにより、バッファのリード／ライトを高速化し、更に描画回路の並列化、パイプライン化を図ることにより、３次元形状物体を隠面消去した画像を高速に生成し得る画像生成装置を提供することを目的とする。
【００１０】
また、本発明の他の目的は、専用のハードウェア（描画回路）を設け、汎用プロセッサを用いた構成に比し安価な構成で画像を高速に生成し得る画像生成装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記の目的を達成するため、本発明の画像生成装置は、格子状に並んだ複数の画素で構成される画面を複数のバッファブロックに分割し、各々バッファブロック番号を付したバッファブロック単位で視点からの距離を表す奥行き値と輝度値を複数の画素毎に格納するバッファと、３次元形状物体を基本形状であるポリゴンの集合として定義し、ポリゴンの頂点毎に画面上の位置と視点からの距離を表す奥行き値及び輝度値が記述されているポリゴンデータを入力として受け、奥行き値及び輝度値を内挿することによりポリゴン内の画素の画素位置、奥行き値及び輝度値を求め、バッファから入力された画素位置に対応する奥行き値よりも内挿によって求めた奥行き値の方が小さいときにのみ、内挿によって求めた奥行き値及び輝度値を出力すると共に、バッファリードアドレス、バッファライトアドレス又はバッファネクストリードアドレスを出力する描画回路と、キャッシュ制御部と、キャッシュ制御部からの制御信号に基づき、選択したキャッシュブロックに格納されている奥行き値及び輝度値をキャッシュメモリからバッファへ転送した後、リードアドレス又はライトアドレスに対応したバッファブロック番号のバッファブロックの奥行き値及び輝度値をバッファから選択したキャッシュブロックに転送して格納させるバッファ制御部と、描画回路が少なくともリードアドレス、ライトアドレス及びバッファネクストリードアドレスを独立して出力するように描画回路の動作を制御すると共に、画面へのポリゴンの描画開始前にバッファ制御部を介してバッファを初期化させ、画面内の全てのポリゴンの描画終了時にバッファ制御部によりバッファからの輝度値をリードさせて出力させる演算手段とを有する構成としたものである。
【００１２】
ここで、上記のキャッシュ制御部は、複数のバッファブロックの奥行き値及び輝度値を、このバッファブロック単位で格納する、各々キャッシュブロック番号を付した複数のキャッシュブロックからなるキャッシュメモリと、描画回路からバッファの画素位置に対応する奥行き値及び輝度値のバッファリードアドレス、バッファライトアドレス又はバッファネクストリードアドレスを入力として受け、入力されたリードアドレス又はライトアドレスに対応したバッファブロック番号を算出し、その算出したバッファブロック番号のバッファブロックがキャッシュメモリに格納されているかを、算出したバッファブロック番号とキャッシュブロック毎に記憶しているバッファブロック番号を比較することで検出し、キャッシュメモリに格納されているときにはキャッシュメモリからバッファリードアドレスに対応する奥行き値をリードして描画回路へ出力するか、又は描画回路から入力された奥行き値及び輝度値をキャッシュメモリのバッファライトアドレスに対応した場所にライトし、キャッシュメモリに格納されていないときには更新を行う一のキャッシュブロックを選択して、選択したキャッシュブロックに格納されている奥行き値及び輝度値をキャッシュメモリから出力させた後、算出したバッファブロック番号のバッファブロックを選択したキャッシュブロックに格納させる制御信号を出力し、また、算出したバッファブロック番号のバッファブロックがキャッシュメモリに格納されていないことを検出したときは、バッファネクストリードアドレスに対応するバッファブロック番号が示すバッファブロックをバッファからリードさせて、選択したキャッシュブロックに格納させる機能を備える。
【００１３】
また、上記の描画回路は、現在出力しているバッファリードアドレスに対応するバッファブロック番号と異なるバッファブロック番号に対応するバッファリードアドレスを将来バッファリードアドレスとして出力する場合、将来出力するそのバッファリードアドレスをバッファネクストリードアドレスとして予めキャッシュ制御部へ出力する機能を備える。
【００１４】
この発明では、描画回路から将来バッファリードアドレスとして出力されるアドレスを、バッファネスクトリードアドレスとして先出しすることで、描画中にバッファネクストリードアドレスによって示されたバッファブロックを予めキャッシュメモリに格納することにより、バッファリードアドレスが出力されたときのキャッシュミスヒットを減らすことができる。
【００１５】
【発明の実施の形態】
次に、本発明の実施の形態について図面と共に説明する。図１は本発明になる画像生成装置の一実施の形態のブロック図を示す。この実施の形態の画像生成装置は、３次元空間中に配置した物体を基本形状であるポリゴンの集合として定義し、格子状に並んだ画素で構成される画面上の各画素位置に対応した、視点から物体までの距離を表す奥行き値（Ｚ値）及び輝度値を格納するバッファを用いて、奥行き値に基づいて隠面消去した画像を生成する画像生成装置で、装置全体を統括的に制御する中央処理装置（ＣＰＵ）１１と、ポリゴンデータが入力される描画回路１２と、描画回路１２に接続されたキャッシュ制御部１３と、キャッシュ制御部１３により動作が制御されるキャッシュメモリ１４と、バッファ制御部１５と、バッファ制御部１５により動作が制御され上記の奥行き値（Ｚ値）及び輝度値を格納するバッファ１６とから構成されている。
【００１６】
描画回路１２は専用の描画ハードウェアである。キャッシュメモリ１４は、例えばスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）により構成されている。一方、バッファ１６は、大容量が要求されるため、大容量が確保し易いシンクロナス・ＤＲＡＭ（ＳＤＲＡＭ）により構成されている。ＳＤＲＡＭは、少ないデータをリード／ライトする場合に比べて、まとまった多くのデータをリード／ライトした方がデータの転送能力が向上する特徴がある。
【００１７】
次に、本実施の形態の動作について説明する。本実施の形態はＺバッファ法により、３次元形状物体を隠面消去した画像を生成する。Ｚバッファ法では、画面描画前にバッファ１６の初期化が必要であるため、まず、ＣＰＵ１１からバッファ初期化リクエストが、バッファスタートアドレス、画面縦ライン数、画面横ピクセル数と共にバッファ制御部１５に供給され、バッファ制御部１５によりバッファ１６の初期化が行われる。
【００１８】
続いて、ＣＰＵ１１は描画命令を描画回路１２へ出力する。描画回路１２は、描画命令を入力として受けると、外部から入力されるポリゴンデータを取り込む。このポリゴンデータはポリゴンと呼ばれる平面多角形（例えば、三角形）として扱われる３次元座標の形状データで、ポリゴンの各頂点毎に画面上の位置と視点からの距離を表す奥行き値（Ｚ値）及び輝度値が記述されている。描画回路１２は、このポリゴンデータの奥行き値及び輝度値を内挿することで、ポリゴン内の画素の画素位置と奥行き値及び輝度値を求め、これらと共にポリゴン内の各画素位置から画素毎のバッファリードアドレスを計算し、キャッシュ制御部１３に供給する。
【００１９】
バッファ１６は、格子状に並んだ画素で構成される画面上の各画素位置に対応した、視点からの距離を表す奥行き値及び輝度値を格納するためのメモリで、バッファ１６には上記の奥行き値及び輝度値が、縦ｍライン、横ｎピクセル毎のブロック単位に分割されて格納されている。この各ブロック（以下、バッファブロックともいう）には、バッファブロック番号が付されている。
【００２０】
一方、キャッシュメモリ１４は、上記のバッファブロックを複数個格納するメモリで、各バッファブロックを格納するキャッシュブロック毎にキャッシュブロック番号を付している。キャッシュ制御部１３は、各キャッシュブロックが格納しているバッファブロック番号を記憶している。
【００２１】
ここで、上記のバッファ１６が格納しているバッファブロックのバッファブロック番号と、キャッシュメモリ１４が格納しているバッファブロック番号と、キャッシュ制御部１３が格納しているキャッシュブロック番号とバッファブロック番号の対応関係について、図２と共に詳細に説明する。一例として、縦１６ライン（画素）、横１６ピクセル（画素）の画面の奥行き値及び輝度値を、縦４ライン（画素）、横４ピクセル（画素）毎のブロック単位に分割した場合、図２（ａ）に示すように、これら各バッファブロックをバッファ１６が格納すると共に、各バッファブロックにはバッファブロック番号として０〜１５のいずれか一の番号が付されている。
【００２２】
一方、キャッシュメモリ１４は一例として、４個のバッファブロックを格納する容量があったとすると、キャッシュメモリ１４の容量は、図２（ｂ）に示すように、４個のキャッシュブロックに分割され、それら各キャッシュブロックにはキャッシュブロック番号０〜３が付されている。
【００２３】
ここで、描画回路１２はポリゴン内の各画素位置から画素毎のバッファリードアドレスを計算し、キャッシュ制御部１３に出力する。また、描画回路１２は現在出力しているバッファリードアドレスに対応するバッファブロック番号と異なるバッファブロック番号に対応するバッファリードアドレスを、将来、バッファリードアドレスとして出力する場合、そのバッファリードアドレスをバッファネクストリードアドレスとしてキャッシュ制御部１３に出力する。
【００２４】
例えば、図２（ａ）において、ポリゴン内の画素位置がバッファブロック番号９、１０の２つのバッファブロックに跨っており、描画開始画素がバッファブロック番号９のバッファブロックに含まれる場合、描画回路１２はバッファブロック番号９に対応するバッファリードアドレスと、バッファブロック番号１０に対応するバッファネクストリードアドレスをキャッシュ制御部１３に出力する。
【００２５】
キャッシュ制御部１３は、各キャッシュブロックが格納しているバッファブロック番号を記憶しており、各キャッシュブロックが描画回路１２によってライトされたことを記憶するライトフラグを持つ。
【００２６】
図２（ａ）、（ｂ）の場合、キャッシュブロック番号０はバッファブロック番号０のバッファブロックを、キャッシュブロック番号１はバッファブロック番号９のバッファブロックを、キャッシュブロック番号２はバッファブロック番号５のバッファブロックを、キャッシュブロック番号３はバッファブロック番号４のバッファブロックを格納していることをキャッシュ制御部１３は記憶している。
【００２７】
キャッシュ制御部１３は、描画回路１２からバッファリードアドレスが入力されると、それからリードするバッファブロック番号（バッファリードブロック番号）を算出し、キャッシュメモリ１４内の各キャッシュブロックが保持しているバッファブロック番号と比較する。
【００２８】
比較が一致した場合、キャッシュ制御部１３は、画素位置に対応するリードアドレスをキャッシュメモリ１４に出力し、キャッシュメモリ１４から画素位置に対応する奥行き値をリードして描画回路１２へ出力する。
【００２９】
上記の比較が一致しない場合、キャッシュ制御部１３は、ＣＰＵ１１へのキャッシュヒット信号をインアクティブにして、ＣＰＵ１１からの新たな描画命令出力を抑止すると共に、更新を行うキャッシュブロックを選択し、更新を行うキャッシュブロックに対応するバッファブロック番号からバッファライトスタートアドレスを算出し、更新を行うキャッシュメモリ１４のキャッシュブロック番号からキャッシュスタートアドレスを算出し、バッファリードアドレスからバッファリードスタートアドレスを算出し、更新を行うキャッシュブロックのライトフラグ及びキャッシュ更新リクエストと共にバッファ制御部１５に出力する。
【００３０】
バッファ制御部１５は、キャッシュ更新リクエストがキャッシュ制御部１３から入力されると、同じくキャッシュ制御部１３から入力されるライトフラグがアクティブな場合は、キャッシュ制御部１３から入力されるキャッシュスタートアドレスから１バッファブロック分の奥行き値、輝度値をキャッシュメモリ１４からリードし、それをバッファ１６の上記バッファライトスタートアドレスで示された場所に格納する。ライトフラグがインアクティブの場合は上記のバッファライトは行わない。
【００３１】
その後、バッファ制御部１５は、入力されたバッファリードスタートアドレスで示されたバッファ１６の場所から１バッファブロック分リードし、キャッシュメモリ１４のキャッシュスタートアドレスで示された場所に格納する。その後、バッファ制御部１５は、キャッシュ制御部１３にキャッシュ更新アクノリッジを出力する。バッファ１６はＳＤＲＡＭで構成されているので、バッファ制御部１５はＳＤＲＡＭであるバッファ１６にチップセレクト（ＣＳ）、ローアドレスストローブ（ＲＡＳ）、カラムアドレスストローブ（ＣＡＳ）、ライトイネーブル（ＷＥ）及びアドレスを出力し、奥行き値及び輝度値のライト／リードを行う。
【００３２】
上記の比較が一致しない場合の動作について、図２と共に更に具体的に説明する。一例として、バッファ１６に図２（ａ）に示す１６個のバッファブロックが格納されているとし、また、図２（ｂ）に示すキャッシュメモリ１４の４つの記憶領域を示すキャッシュブロック番号０〜３のキャッシュブロックに、図２（ａ）に示したバッファブロック番号０、９、５、４のバッファブロックの奥行き値及び輝度値が格納されているものとする。
【００３３】
この状態で、描画回路１２がキャッシュ制御部１３に出力したバッファリードアドレスが、バッファブロック番号１０に対応した場合、キャッシュ制御部１３は、４つのキャッシュブロックにはバッファブロック番号１０のバッファブロックが格納されていないので、前記した比較をした結果、比較が一致しない。
【００３４】
そこで、キャッシュ制御部１３は、キャッシュメモリ１４が図２（ｂ）の状態の場合、容量一杯にバッファブロックが記憶されており、そのままではバッファブロック番号１０のバッファブロックをキャッシュメモリ１４にライトできないので、４つのキャッシュブロックの中で更新を行うキャッシュブロックを一つ選択し（ここでは、一例として、キャッシュブロック番号０とする）、選択したキャッシュブロックに格納されているバッファブロック番号０のバッファブロックの奥行き値及び輝度値をリードしてバッファ１６にライトし、続いてバッファブロック番号１０のバッファブロックの奥行き値と輝度値を、バッファ１６からリードして更新を行うキャッシュブロックとして選択したキャッシュブロック番号０のキャッシュブロックに格納する。
【００３５】
これにより、キャッシュメモリ１４は、図２（ｃ）に示すように、更新を行うキャッシュブロック番号０のキャッシュブロックにバッファブロック番号１０のバッファブロックの奥行き値と輝度値が記憶された状態となる。記憶終了後、バッファ制御部１５は、キャッシュ制御部１３にキャッシュ更新アクノリッジを出力する。更新を行うキャッシュブロックをどれにするかは、アットランダムに選択してもよいが、比較が一致する確率（キャッシュヒット率）を上げるために、ＬＲＵアルゴリズム（全キャッシュブロックの中で描画回路１２がアクセスしてから最も時間が経過しているキャッシュブロックを選択するアルゴリズム）を使用することが望ましい。
【００３６】
再び図１に戻って説明する。キャッシュ制御部１３は、キャッシュ更新アクノリッジが入力されると、キャッシュヒット信号をアクティブにすると共に、更新したキャッシュブロックのライトフラグをインアクティブにし、バッファリードブロック番号と、各キャッシュブロックが保持しているバッファブロック番号とを再比較し、比較が一致したキャッシュブロックのリードアドレスをキャッシュメモリ１４に出力し、キャッシュメモリ１４から奥行き値をリードして描画回路１２に出力する。
【００３７】
描画回路１２はキャッシュメモリ１４から奥行き値を入力として受けると、その入力奥行き値を、前述したポリゴンデータに記述されている頂点における奥行き値から内挿によって求めた奥行き値と比較し、内挿によって求めた奥行き値の方が入力された奥行き値よりも小さい場合は、内挿によって求めた画素の方が視点からの距離が近いので、内挿によって求めた奥行き値と輝度値をキャッシュメモリ１４にライトするため、キャッシュ制御部１３にキャッシュライトアドレス、ライトイネーブル、奥行き値、輝度値を出力する。なお、内挿によって求めた奥行き値の方が入力された奥行き値よりも大きい場合は、内挿によって求めた奥行き値と輝度値のキャッシュメモリ１４へのライトは行わない。
【００３８】
キャッシュ制御部１３は、描画回路１２からキャッシュライトアドレスが入力されると、それからバッファライトブロック番号を算出し、各キャッシュブロックが保持しているバッファブロック番号と比較する。比較が一致した場合、キャッシュ制御部１３は比較が一致したキャッシュブロックのライトアドレス、ライトイネーブル、奥行き値、輝度値をキャッシュメモリ１４に出力し、キャッシュメモリ１４に奥行き値と輝度値をライトすると共に、比較が一致したキャッシュブロックのライトフラグをアクティブにする。
【００３９】
上記の比較が一致しない場合、キャッシュ制御部１３はＣＰＵ１１へのキャッシュヒット信号をインアクティブにして、ＣＰＵ１１からの新たな描画命令出力を抑止すると共に、更新を行うキャッシュブロックを選択し、更新を行うキャッシュメモリ１４が保持しているバッファブロックのバッファブロック番号からバッファライトスタートアドレスを算出し、更新を行うキャッシュメモリ１４のキャッシュブロック番号からキャッシュスタートアドレスを算出し、バッファライトアドレスからバッファリードスタートアドレスを算出し、更新を行うキャッシュブロックのライトフラグ、キャッシュ更新リクエストと共にバッファ制御部１５に出力する。
【００４０】
バッファ制御部１５は、キャッシュ更新リクエストがキャッシュ制御部１３から入力されると、ライトフラグがアクティブな場合は、同じくキャッシュ制御部１３から入力されるキャッシュスタートアドレスから１バッファブロック分の奥行き値及び輝度値をキャッシュメモリ１４からリードし、同じくキャッシュ制御部１３から入力されるバッファライトスタートアドレスで示されたバッファ１６の場所に格納する。ライトフラグがインアクティブな場合は、バッファライトは行わない。
【００４１】
その後、バッファ制御部１５は、キャッシュ制御部１３から入力されるバッファリードスタートアドレスで示された、バッファ１６の格納場所から１バッファブロック分をリードし、その１バッファブロック分をキャッシュメモリ１４のキャッシュスタートアドレスで示された場所に格納する。その後、バッファ制御部１５は、キャッシュ制御部１３にキャッシュ更新アクノリッジを出力する。
【００４２】
バッファ１６はＳＤＲＡＭで構成されているので、バッファ制御部１５はバッファ１６にチップセレクト（ＣＳ）、ローアドレスストローブ（ＲＡＳ）、カラムアドレスストローブ（ＣＡＳ）、ライトイネーブル（ＷＥ）、アドレスを出力し、奥行き値と輝度値のライト／リードを行う。
【００４３】
キャッシュ制御部１３は、バッファ制御部１５からキャッシュ更新アクノリッジが入力されると、ＣＰＵ１１へ出力するキャッシュヒット信号をアクティブにすると共に、更新したキャッシュブロックのライトフラグをインアクティブにし、バッファライトブロック番号と、各キャッシュブロックが保持しているバッファブロック番号とを再比較し、比較が一致したキャッシュブロックのライトアドレス、ライトイネーブル、輝度値、奥行き値をキャッシュメモリ１４へ出力し、キャッシュメモリ１４に輝度値及び奥行き値をライトすると共に、比較が一致したキャッシュブロックのライトフラグをアクティブにする。
【００４４】
キャッシュ制御部１３は、描画回路１２から入力したバッファリードアドレス及びバッファライトアドレスから対応するバッファブロック番号を算出し、その算出したバッファブロック番号とキャッシュメモリ１４のブロック毎に記憶しているバッファブロック番号とを比較し、一致した場合は描画回路１２からバッファネクストリードアドレスを入力として受け、これに基づき対応するバッファブロック番号を算出し、算出したバッファブロック番号と各キャッシュブロックが保持しているバッファブロック番号とを比較する。
【００４５】
比較が一致した場合、キャッシュ制御部１３はキャッシュ更新リクエストをバッファ制御部１５へ出力しない。これに対し、比較が一致しなかった場合は、キャッシュ制御部１３はＣＰＵ１１へ出力するキャッシュヒット信号をアクティブのままにして、ＣＰＵ１１からの新たな描画命令出力を抑止せずに、更新を行うキャッシュブロックを選択し、更新を行うキャッシュブロックのキャッシュブロック番号からキャッシュスタートアドレスを算出し、バッファネクストリードアドレスに対応するバッファブロック番号からバッファリードスタートアドレスを算出し、これらの算出したキャッシュスタートアドレス及びバッファリードスタートアドレスを、更新を行うキャッシュブロックのライトフラグ及びキャッシュ更新リクエストと共にバッファ制御部１５に出力する。
【００４６】
例えば、キャッシュメモリ１４には図２（ｂ）に示すように、キャッシュブロック番号０〜３のキャッシュブロックに、図２（ａ）に示したバッファ１６に格納されているバッファブロック番号０、９、５、４のバッファブロックの奥行き値及び輝度値が格納されているものとする。この状態で、描画回路１２がバッファブロック番号９（キャッシュブロック番号１）に対応するバッファリードアドレス、バッファブロック番号５（キャッシュブロック番号２）に対応するバッファライトアドレス、バッファブロック番号１０に対応するバッファネクストリードアドレスを出力したものとすると、キャッシュ制御部１３がキャッシュメモリ１４のブロック毎に記憶しているバッファブロック番号は０、９、５、４であるので、バッファリードアドレス、バッファライトアドレスに対応するブロック番号は比較が一致するが、バッファネクストリードアドレスに対応するブロック番号は比較が一致しない。
【００４７】
この場合、キャッシュ制御部１３は、ＣＰＵ１１へ出力するキャッシュヒット信号をアクティブにしたままで、ＣＰＵ１１からの新たな描画命令を抑止せずに、バッファリードアドレス、バッファライトアドレス、バッファネクストリードアドレスのいずれにも対応していないバッファブロック番号０が格納されているキャッシュブロック番号０を選択し、バッファブロック番号０からバッファライトスタートアドレスを、キャッシュブロック番号０からキャッシュスタートアドレスを、バッファブロック番号１０からバッファリードスタートアドレスを算出し、キャッシュブロック番号０のライトフラグ、キャッシュ更新リクエストと共にバッファ制御部１５へ出力する。
【００４８】
バッファ制御部１５は、キャッシュ更新リクエストをキャッシュ制御部１３から入力として受けると、ライトフラグがアクティブな場合はキャッシュスタートアドレスから１バッファブロック分の奥行き値及び輝度値をキャッシュメモリ１４からリードし、バッファ１６のバッファライトスタートアドレスで示された場所に格納する。ライトフラグがインアクティブの場合は、バッファライトは行わない。
【００４９】
その後、バッファ制御部１５はバッファ１６のバッファリードスタートアドレスで示された場所からバッファ１６を１バッファブロック分リードし、キャッシュメモリ１４のキャッシュスタートアドレスで示された場所に格納する。その格納終了後、バッファ制御部１５からキャッシュ制御部１３にキャッシュ更新アクノリッジが出力される。
【００５０】
前述したように、バッファ１６はＳＤＲＡＭで構成されているので、バッファ制御部１５はバッファ１６にチップセレクト（ＣＳ）、ローアドレスストローブ（ＲＡＳ）、カラムアドレスストローブ（ＣＡＳ）、ライトイネーブル（ＷＥ）、アドレスを出力し、奥行き値と輝度値のライト／リードを行う。キャッシュ制御部１３は、キャッシュ更新アクノリッジをバッファ制御部１５から入力されると、更新したキャッシュブロックのライトフラグをインアクティブにする。
【００５１】
図２（ｂ）に示したキャッシュメモリ１４の記憶状態において、バッファブロック番号０から算出したバッファライトスタートアドレス、キャッシュブロック番号０から算出したキャッシュスタートアドレス、バッファブロック番号１０から算出したバッファリードスタートアドレスをキャッシュブロック番号０のライトフラグ、キャッシュ更新リクエストと共にバッファ制御部１５に出力した前述の例の場合、キャッシュ制御部１３のキャッシュ更新アクノリッジ入力後のキャッシュメモリ１４の格納状態は、図２（ｃ）に示すように、キャッシュブロック番号０の領域にバッファブロック番号１０の１ブロック分の奥行き値及び輝度値が格納された状態となる。
【００５２】
画面の全てのポリゴンの描画が終了すると、ＣＰＵ１１はバッファ制御部１５に画像出力リクエスト、バッファスタートアドレス、画面縦ライン数、画面横ピクセル数を出力する。バッファ制御部１５は、画像出力リクエストが入力されると、入力されたバッファスタートアドレス、画面縦ライン数、画面横ピクセル数の情報が示す領域のバッファ１６の場所から輝度値をリードし出力する。
【００５３】
このように、本実施の形態によれば、描画回路１２から将来バッファリードアドレスとして出力されるアドレスを、バッファネスクトリードアドレスとして先出しすることで、バッファリードアドレスが出力されたときのキャッシュミスヒットを減らすことができ、これにより描画速度を上げることができ、キャッシュブロック更新時間を短縮できる。また、本実施の形態では、汎用プロセッサを複数個用いる場合と同等の描画速度を専用の描画ハードウェアである描画回路１２だけで構成できるので、汎用プロセッサを複数個用いた従来装置に比べて安価な構成にできる。
【００５４】
なお、本実施の形態では、描画回路１２が現在出力しているバッファリードアドレスに対応するバッファブロック番号と異なるバッファブロック番号に対応するバッファリードアドレスを将来バッファリードアドレスとして出力する場合、描画回路１２はそのバッファリードアドレスをバッファネクストリードアドレスとして出力するようにしているが、本実施の形態のように、将来バッファリードアドレスとして出力されるアドレスを、バッファネスクトリードアドレスとして先出ししない場合は、キャッシュ制御部１３が描画回路１２から入力されたバッファリードアドレス及びバッファライトアドレスから対応するバッファブロック番号を算出し、キャッシュメモリ１４のブロック毎に記憶しているバッファブロック番号と比較し、一致しなかった場合、キャッシュ制御部１３がキャッシュメモリ１４の更新が終了するまでＣＰＵ１１からの新たな描画命令出力を抑止することとなるため、描画速度が低下するが、本実施の形態では上述したように、描画速度を高速化できる。
【００５５】
なお、本発明は以上の実施の形態に限定されるものではなく、例えばバッファ１６はＳＤＲＡＭ以外の他の大容量が確保し易いメモリも使用可能である。
【００５６】
【発明の効果】
以上説明したように、本発明によれば、描画回路から将来バッファリードアドレスとして出力されるアドレスを、バッファネスクトリードアドレスとして先出しすることで、描画中にバッファネクストリードアドレスによって示されたバッファブロックを予めキャッシュメモリに格納することにより、バッファリードアドレスが出力されたときのキャッシュミスヒットを減らすようにしたため、描画命令出力抑止時間を短縮することができ、画像生成の高速化を実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態のブロック図である。
【図２】キャッシュメモリのキャッシュブロックと、バッファのバッファブロックとの対応関係と、キャッシュメモリの一つのキャッシュブロックの更新を説明する図である。
【符号の説明】
１１　中央処理装置（ＣＰＵ）
１２　描画回路
１３　キャッシュ制御部
１４　キャッシュメモリ
１５　バッファ制御部
１６　バッファ（バッファメモリ）
【図１】
2004133608.tif 000003
【図２】
2004133608.tif 000004