(57)【特許請求の範囲】
【請求項１】
メモリから、前記メモリに記憶されている記憶データを読み出し、前記記憶データと、入力された入力データとを用いての演算処理を行い、前記演算処理の演算結果を前記メモリに書き戻すリードモディファイライト動作を制御するメモリ制御装置であって、
前記入力データのアドレスに基づいて、前記記憶データの領域を特定するための行アドレスおよび列アドレスを発生して出力する発生手段と、
前記発生手段の出力を記憶するアドレス記憶手段と、
前記発生手段の出力、または前記アドレス記憶手段の記憶値のうちのいずれか一方を選択し、前記メモリに与える選択手段と
を備え、
列アドレスが前記アドレス記憶手段により記憶されている列アドレスと一致しない入力データに対して、
連続して入力される複数の入力データの行アドレスが同一である間、前記選択手段が、前記発生手段の出力を選択して前記メモリに与えることにより、前記メモリから記憶データを読み出させて前記演算処理を行わせるとともに、前記アドレス記憶手段が前記発生手段の出力を記憶し、
異なる行アドレスの入力データが入力された場合、前記選択手段が、前記アドレス記憶手段の記憶値を選択して前記メモリに与えることにより、前記メモリに、前記記憶値に対応する前記演算結果を書き込ませる
ことを特徴とするメモリ制御装置。
【請求項２】
前記行アドレスおよび列アドレスにより特定される領域に対して、データの読み出しまたは書き込みのいずれを行うのかを、前記メモリに指示する指示手段と、
前記アドレス記憶手段の空き領域がなくなったことを検出する検出手段と
をさらに備え、
前記指示手段が、前記メモリに対して、前記記憶データの読み出しを指示している場合において、前記検出手段により前記アドレス記憶手段の空き領域がなくなったことが検出されたとき、
前記指示手段は、前記演算結果の書き込みを指示し、
前記選択手段は、前記アドレス記憶手段の記憶値を選択して前記メモリに与えることにより、前記メモリに、前記記憶値に対応する前記演算結果を書き込ませる
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記行アドレスおよび列アドレスにより特定される領域に対して、データの読み出しまたは書き込みのいずれを行うのかを、前記メモリに指示する指示手段と、
前記発生手段が、前記アドレス記憶手段に記憶されている前記列アドレスと同一のものを発生したことを検出する検出手段と
をさらに備え、
前記指示手段が、前記メモリに対して、前記記憶データの読み出しを指示している場合において、前記検出手段により、前記発生手段が前記アドレス記憶手段に記憶されている前記列アドレスと同一のものを発生したことが検出されたとき、
前記指示手段は、前記演算結果の書き込みを指示し、
前記選択手段は、前記アドレス記憶手段の記憶値を選択して前記メモリに与えることにより、前記メモリに、前記記憶値に対応する前記演算結果を書き込ませる
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項４】
メモリから、前記メモリに記憶されている記憶データを読み出し、前記記憶データと、入力された入力データとを用いての演算処理を行い、前記演算処理の演算結果を前記メモリに書き戻すリードモディファイライト動作を制御するメモリ制御装置のメモリ制御方法であって、
前記入力データのアドレスに基づいて、前記記憶データの領域を特定するための行アドレスおよび列アドレスを発生する発生ステップと、
前記発生ステップにおいて発生されたアドレスをアドレス記憶手段に記憶するアドレス記憶ステップと、
前記発生ステップにおいて発生されたアドレス、または前記アドレス記憶手段の記憶値のうちのいずれか一方を選択し、前記メモリに与える選択ステップと
を含み、
列アドレスが前記アドレス記憶手段に記憶されている列アドレスと一致しない入力データに対して、
連続して入力される複数の入力データの行アドレスが同一である間、前記選択ステップにおいて、前記発生ステップにおいて発生されたアドレスを選択して前記メモリに与えることにより、前記メモリから記憶データを読み出させて前記演算処理を行わせるとともに、前記アドレス記憶ステップにおいて、前記発生ステップにおいて発生されたアドレスを記憶し、
異なる行アドレスの入力データが入力された場合、前記選択ステップにおいて、前記アドレス記憶手段の記憶値を選択して前記メモリに与えることにより、前記メモリに、前記記憶値に対応する前記演算結果を書き込ませる
ことを特徴とするメモリ制御方法。
【請求項５】
前記行アドレスおよび列アドレスにより特定される領域に対して、データの読み出しまたは書き込みのいずれを行うのかを、前記メモリに指示する指示ステップと、
前記アドレス記憶手段の空き領域がなくなったことを検出する検出ステップと
をさらに含み、
前記指示ステップの処理により、前記メモリに対して、前記記憶データの読み出しを指示している場合において、前記検出ステップにおいて前記アドレス記憶手段の空き領域がなくなったことが検出されたとき、
前記指示ステップにおいて、前記演算結果の書き込みを指示し、
前記選択ステップにおいて、前記アドレス記憶手段の記憶値を選択して前記メモリに与えることにより、前記メモリに、前記記憶値に対応する前記演算結果を書き込ませる
ことを特徴とする請求項４に記載のメモリ制御方法。
【請求項６】
前記行アドレスおよび列アドレスにより特定される領域に対して、データの読み出しまたは書き込みのいずれを行うのかを、前記メモリに指示する指示ステップと、
前記発生ステップにおいて、前記アドレス記憶手段に記憶されている前記列アドレスと同一のものが発生されたことを検出する検出ステップと
をさらに含み、
前記指示ステップの処理により、前記メモリに対して、前記記憶データの読み出しを指示している場合において、前記検出ステップにより、前記発生ステップにおいて前記アドレス記憶手段に記憶されている前記第２のアドレスと同一のものが発生されたことが検出されたとき、
前記指示ステップにおいて、前記演算結果の書き込みを指示し、
前記選択ステップにおいて、前記アドレス記憶手段の記憶値を選択して前記メモリに与えることにより、前記メモリに、前記記憶値に対応する前記演算結果を書き込ませる
ことを特徴とする請求項４に記載のメモリ制御方法。
【請求項７】
単位図形の組合せにより定義される３次元画像を生成する画像生成装置であって、
前記単位図形の頂点に関する頂点データを生成する頂点データ生成手段と、
前記頂点データに基づいて、前記単位図形の内部の画素についての画素データを生成する画素データ生成手段と、
行アドレスおよび列アドレスにより特定される領域に対して、データの読み出しおよび書き込みが行われるデータ記憶手段と、
前記画素データ生成手段により生成された画素データと、前記データ記憶手段に記憶されたデータとを用いて所定の演算を行う演算手段と、
前記行アドレスおよび列アドレスを発生する発生手段と、
前記発生手段の出力を記憶するアドレス記憶手段と、
前記発生手段の出力、または前記アドレス記憶手段の記憶値のうちのいずれか一方を選択し、前記データ記憶手段に与える選択手段と
を備え、
前記データ記憶手段から、前記データ記憶手段に記憶されている記憶データを読み出し、前記記憶データと、入力された入力データとを用いての演算処理を行い、前記演算処理の演算結果を前記メモリに書き戻すリードモディファイライト動作において、
列アドレスが前記アドレス記憶手段により記憶されている列アドレスと一致しない入力データに対して、
連続して入力される複数の入力データの行アドレスが同一である間、前記選択手段が、前記発生手段の出力を選択して前記データ記憶手段に与えることにより、前記データ記憶手段から記憶データを読み出させて前記演算処理を行わせるとともに、前記アドレス記憶手段が前記発生手段の出力を記憶し、
異なる行アドレスの入力データが入力された場合、前記選択手段が、前記アドレス記憶手段の記憶値を選択して前記データ記憶手段に与えることにより、前記データ記憶手段に、前記記憶値に対応する前記演算結果を書き込ませる
ことを特徴とする画像生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ制御装置およびメモリ制御方法、並びに画像生成装置に関する。特に、例えば、３次元コンピュータグラフィックシステムにおいて、回転、移動、及び拡大／縮小等の座標変換を頻繁に行って立体モデル（３次元画像）を表示する場合に、その表示画像を生成するときなどに用いて好適なメモリ制御装置およびメモリ制御方法、並びに画像生成装置に関する。
【０００２】
【従来の技術】
例えば、コンピュータグラフィックスシステムは、計算機とグラフィックス周辺装置により、画像（映像）を作成して表示するシステムであり、機械、電気、建築等における設計支援のためのＣＡＤシステムや、化学、航空、制御等における反応、応答のシュミレーション、さらには、教育、芸術、及びビデオゲーム等の多くの分野において活用されている。
【０００３】
上述のようなコンピュータグラフィックスシステムとして、主として計算機の数値計算能力を活用して立体的な画像（３次元画像）を作成する３次元画像生成装置を備えたシステム（以下、３次元グラフィックシステムと言う。）がある。
【０００４】
この３次元グラフィックシステムは、計算機中にある立体モデルを、回転、移動、拡大／縮小という座標変換を頻繁に行って画面表示するシステムであり、２次元グラフィックシステムに比べ、座標変換、透視変換、陰影処理、及び隠線／隠面消去処理等、高度な技術を必要とする。
【０００５】
ここで、３次元グラフィックシステムでは、立体モデルを、空間中において様々な状態に変化させるために、画素毎の演算を行う画素演算処理が行われるが、この画素演算処理を行うためには、立体モデルから得られる画素データと、既に得られており、フレームバッファなどに記憶されている画素データとの合成および比較等が必要となる。そこで、３次元グラフィックシステムにおいては、フレームバッファから、そこに既に記憶されている画素データを読み出し（リードし）、その画素データと、新しく入力（生成）された画素データとを用いての演算処理を行い、その演算結果を、フレームバッファに書き戻すことが行われる（以下、適宜、このような動作（処理）を、リードモディファイライト動作と言う）。
【０００６】
図７は、従来の３次元グラフィックシステムにおける３次元画像生成装置の一例の構成を示している。図７において、３次元画像生成装置は、図示せぬブロックからの画素データの書き込み要求を保持する記憶回路としてのリクエストバッファ１０１と、その書き込み要求に応じてメモリ制御を行うメモリ制御回路１０２と、画素データを記憶するメモリとしての、例えば同期型のＤＲＡＭ（Dynamic Random Access Memory）（ＳＤＲＡＭ（Syncronous DRAM））などで構成されたフレームバッファ１０３とを備えている。
【０００７】
なお、フレームバッファ１０３においては、行アドレスおよび列アドレスの２つのアドレスによって特定される領域に対して、データの書き込みおよび読み出しが行われるようになされている。
【０００８】
メモリ制御回路１０２は、リクエストバッファ１０１からの書き込み要求の読み出し、並びにフレームバッファ１０３の物理的なアドレスADRおよび制御信号CTLの発生を行うタイミング発生回路１０２Ａと、フレームバッファ１０３から読み出された画素データ、および書き込み要求のあった画素データを用いての画素演算処理を行う演算処理回路１０２Ｂとからなる。
【０００９】
なお、タイミング発生回路１０２Ａは、例えば、書き込み要求としてアドレスを、リクエストバッファ１０１からアドレスバス１０４を介して受信し、また、発生したアドレスADRまたは制御信号CTLを、コントロールバス１０６またはアドレスバス１０７それぞれを介して、フレームバッファ１０３に供給するようになされている。演算処理回路１０２Ｂは、リクエストバッファ１０４からアドレスとともに出力されるデータ（画素データ）を、データバス１０５を介して受信し、また、フレームバッファ１０３との間の画素データDATAの送受信を、データバス１０８を介して行うようになされている。
【００１０】
以上のように構成される３次元画像生成装置において、フレームバッファ１０３の同一行アドレス内の、例えば任意の３画素（ピクセル）に対して、リードモディファイライト動作が行われる場合、図８に示すように、まず、タイミング発生回路１０２Ａは、クロックclk＝「０」において、リクエストバッファ１０１からの書き込み要求に応じた行アドレスを活性化するため、フレームバッファ１０３に対して、ロウアクティブ動作を指示する制御信号Ractを、コントロールバス１０６介して供給すると共に、書き込み要求に応じた行アドレスRow0を、アドレスバス１０７を介して供給する。これにより、フレームバッファ１０３は、タイミング発生回路１０２ＡからのアドレスRow0を行アドレスとしてラッチし、その行アドレスRow0に対応する領域を活性化する。
【００１１】
次に、タイミング発生回路１０２Ａは、クロックclk＝「２」において、フレームバッファ１０３に対して、カラムリードアクセス動作を指示する信号Rdcを、コントロールバス１０６介して供給すると共に、書き込み要求に応じた列アドレスCol0を、アドレスバス１０７を介して供給する。
【００１２】
これにより、フレームバッファ１０３は、タイミング発生回路１０２ＡからのアドレスCol0を列アドレスとしてラッチする。そして、フレームバッファ１０３は、タイミング発生回路１０２Ａからの行アドレスRow0及び列アドレスCol0により特定される領域に記憶されている画素データRpd0を読み出し、データバス１０８を介して演算処理回路１０２Ｂに供給する。
【００１３】
次に、演算処理回路１０２Ｂは、クロックclk＝「５」において、フレームバッファ１０３からの画素データRpd0を受信する。ここで、リクエストバッファ１０１は、書き込み要求（アドレス）を出力するときに、それに対応する画像データも出力しており、この画像データは、データバス１０５を介して、演算処理回路１０２Ｂで受信される。演算回路１０２Ｂは、フレームバッファ１０３からの画素データRpd0を受信すると、この画素データRpd0と、リクエストバッファ１０１からの画素データとを用いての演算処理を行い、これにより、フレームバッファ１０３に新たに書き込むべき画素データWpd0を生成する。
【００１４】
そして、タイミング発生回路１０２Ａは、クロックclk＝「８」において、フレームバッファ１０３に対して、カラムライトアクセス動作を指示する制御信号Wrcを、コントロールバス１０６を介して供給すると共に、前回発生したものと同一の列アドレスCol0を、アドレスバス１０７を介してを供給する。これにより、フレームバッファ１０３の行アドレスRow0及び列アドレスCol0で特定される領域には、演算処理回路１０２Ｂにおける演算処理の結果得られた画素データWpd0が供給される。
【００１５】
同一行アドレス内の、残りの２つの画素データについても、クロックclk＝「９」乃至「１５」または「１７」乃至「２３」において、上述のクロックclk＝「２」乃至「８」における場合と同様の手順にしたがって、フレームバッファ１０３へのアクセス及び演算処理が行われることにより、行アドレスRow0及び列アドレスCol1で示される領域に画素データWpd1が、行アドレスRow0及び列アドレスCol2で示される領域に画素データWpd2が、それぞれ供給される。
【００１６】
以上のようにして、同一行アドレス内の３画素についての画素データが、フレームバッファ１０３に供給されると、タイミング制御回路１０２Ａは、クロックclk＝「２５」において、プリチャージ動作を指示する制御信号Pchrgを、コントロールバス１０６介してフレームバッファ１０３へ供給する。これにより、活性化された行アドレスCol0に供給された画素データWpd0，Wpd1，Wpd2が、フレームバッファ１０３の、対応する領域（メモリセル）へ書き込まれる。
【００１７】
尚、図８において、クロックclkが「０」乃至「１」の期間tRCDは、タイミング発生回路１０２Ａが行アドレスRow0及び制御信号Ractを発生してから、フレームバッファ１０３がRow0を行アドレスとしてラッチして、その行アドレスRow0内のデータが活性化されるまでの期間である。
【００１８】
また、クロックclkが「２」乃至「４」の期間tCLは、タイミング発生回路１０２Ａが列アドレスCol0及び制御信号Rdcを発生してから、フレームバッファ１０３から読み出される画素データRpd0が有効となるまでの期間である。クロックclkが「９」乃至「１１」の期間および「１７」乃至「１９」の期間も同様である。
【００１９】
さらに、クロックclkが「５」乃至「７」の期間tRMWは、読み出す画素データRpd0が有効となってから、演算処理回路１０２Ｂにおける演算が終了するまでの期間である。クロックclkが「１２」乃至「１４」の期間および「２０」乃至「２２」の期間も同様である。
【００２０】
また、クロックclkが「２３」乃至「２４」の期間tRASは、同一行のデータのアクセスが終了し、プリチャージ動作が可能になるまでの期間である。
【００２１】
さらに、クロックclkが「２５」乃至「２６」の期間tRPは、プリチャージ動作が行われ、新たな行アドレスを活性化することができるようになるまでの期間である。
【００２２】
なお、以上の期間のうち、期間tRCD，tCL，tRAS、及びtRPは、フレームバッファ１０３を構成するＤＲＡＭ（ＳＤＲＡＭ）の規格により規定されるものであり、また、期間tRMWは、演算処理回路１０２Ｂにおける演算処理の内容によって変動するものである。図８においては、期間tRP，tRCD、及びtRASは２クロックを要するものと、また、期間tCLおよびtRMWは３クロックを要するものとしてある。
【００２３】
【発明が解決しようとする課題】
ところで、上述したような従来の３次元画像生成装置では、リードモディファイライト動作を行う場合において、１画素単位でリード動作（フレームバッファ１０３からの画素データの読み出し）、演算処理、ライト動作（フレームバッファ１０３への演算結果の書き込み）が繰り返し行われる。このため、図８に示したように、１画素毎にデータ転送以外の余分なサイクル、即ち、期間tCLおよびtRMWが必要であり、メモリアクセス効率が良いとは言い難かった。
【００２４】
具体的には、リードモディファイライト動作に要する期間は、式
tRCD＋画素数×（tCL＋tRMW）＋tRAS＋tRP＋（画素数−１）
から求めることができ、この式からわかるように、余分なサイクルとしての期間tCLおよびtRMWが画素数に比例して必要となる。例えば、図８に示した場合における３画素のリードモディファイライト動作に要する期間は２７クロックであり、この場合の画素演算の処理効率、即ち、１画素の処理に費やされるクロック数は９クロック（＝２７クロック／３画素）となる。
【００２５】
本発明は、このような状況に鑑みてなされたものであり、メモリアクセスの効率化を図ることができるようにするものである。
【００２６】
【課題を解決する手段】
本発明のメモリ制御装置は、メモリから、メモリに記憶されている記憶データを読み出し、記憶データと、入力された入力データとを用いての演算処理を行い、演算処理の演算結果をメモリに書き戻すリードモディファイライト動作を制御するメモリ制御装置であって、入力データのアドレスに基づいて、記憶データの領域を特定するための行アドレスおよび列アドレスを発生する発生手段と、発生手段の出力を記憶するアドレス記憶手段と、発生手段の出力、またはアドレス記憶手段の記憶値のうちのいずれか一方を選択し、メモリに与える選択手段とを備え、列アドレスがアドレス記憶手段により記憶されている列アドレスと一致しない入力データに対して、連続して入力される複数の入力データの行アドレスが同一である間、選択手段が、発生手段の出力を選択してメモリに与えることにより、メモリから記憶データを読み出させて演算処理を行わせるとともに、アドレス記憶手段が発生手段の出力を記憶し、異なる行アドレスの入力データが入力された場合、選択手段が、アドレス記憶手段の記憶値を選択してメモリに与えることにより、メモリに、記憶値に対応する演算結果を書き込ませることを特徴とする。
【００２７】
本発明のメモリ制御方法は、メモリから、メモリに記憶されている記憶データを読み出し、記憶データと、入力された入力データとを用いての演算処理を行い、演算処理の演算結果をメモリに書き戻すリードモディファイライト動作を制御するメモリ制御装置のメモリ制御方法であって、入力データのアドレスに基づいて、記憶データの領域を特定するための行アドレスおよび列アドレスを発生する発生ステップと、発生ステップにおいて発生されたアドレスをアドレス記憶手段に記憶するアドレス記憶ステップと、発生ステップにおいて発生されたアドレス、またはアドレス記憶手段の記憶値のうちのいずれか一方を選択し、メモリに与える選択ステップとを含み、列アドレスがアドレス記憶手段に記憶されている列アドレスと一致しない入力データに対して、連続して入力される複数の入力データの行アドレスが同一である間、選択ステップにおいて、発生ステップにおいて発生されたアドレスを選択してメモリに与えることにより、メモリから記憶データを読み出させて演算処理を行わせるとともに、アドレス記憶ステップにおいて、発生ステップにおいて発生されたアドレスを記憶し、異なる行アドレスの入力データが入力された場合、選択ステップにおいて、アドレス記憶手段の記憶値を選択してメモリに与えることにより、メモリに、記憶値に対応する演算結果を書き込ませることを特徴とする。
【００２８】
本発明の画像生成装置は、単位図形の組合せにより定義される３次元画像を生成する画像生成装置であって、単位図形の頂点に関する頂点データを生成する頂点データ生成手段と、頂点データに基づいて、単位図形の内部の画素についての画素データを生成する画素データ生成手段と、行アドレスおよび列アドレスにより特定される領域に対して、データの読み出しおよび書き込みが行われるデータ記憶手段と、画素データ生成手段により生成された画素データと、データ記憶手段に記憶されたデータとを用いて所定の演算を行う演算手段と、行アドレスおよび列アドレスを発生する発生手段と、発生手段の出力を記憶するアドレス記憶手段と、発生手段の出力、またはアドレス記憶手段の記憶値のうちのいずれか一方を選択し、データ記憶手段に与える選択手段とを備え、データ記憶手段から、データ記憶手段に記憶されている記憶データを読み出し、記憶データと、入力された入力データとを用いての演算処理を行い、演算処理の演算結果をメモリに書き戻すリードモディファイライト動作において、列アドレスがアドレス記憶手段により記憶されている列アドレスと一致しない入力データに対して、連続して入力される複数の入力データの行アドレスが同一である間、選択手段が、発生手段の出力を選択してデータ記憶手段に与えることにより、データ記憶手段から記憶データを読み出させて演算処理を行わせるとともに、アドレス記憶手段が発生手段の出力を記憶し、異なる行アドレスの入力データが入力された場合、選択手段が、アドレス記憶手段の記憶値を選択してデータ記憶手段に与えることにより、データ記憶手段に、記憶値に対応する演算結果を書き込ませることを特徴とする。
【００２９】
本発明のメモリ制御装置およびメモリ制御方法においては、入力データのアドレスに基づいて、記憶データの領域を特定するための行アドレスおよび列アドレスを発生し、その発生されたアドレスをアドレス記憶手段に記憶し、発生されたアドレス、またはアドレス記憶手段の記憶値のうちのいずれか一方を選択し、行アドレスおよび列アドレスにより特定される領域に対して、データの読み出しおよび書き込みが行われるメモリであって、入力された入力データとの所定の演算が施される記憶データを記憶するメモリに与える。この場合、列アドレスがアドレス記憶手段に記憶されている列アドレスと一致しない入力データに対して、連続して入力される複数の入力データの行アドレスが同一である間、発生されたアドレスを選択してメモリに与えることにより、メモリから記憶データを読み出させて演算処理を行わせるとともに、その発生されたアドレスをアドレス記憶手段に記憶させ、異なる行アドレスの入力データが入力されたとき、アドレス記憶手段の記憶値を選択してメモリに与えることにより、メモリに、記憶値に対応する演算結果を書き込ませる。
【００３０】
本発明の画像生成装置においては、単位図形の頂点に関する頂点データを生成し、頂点データに基づいて、単位図形の内部の画素についての画素データを生成し、行アドレスおよび列アドレスにより特定されるデータ記憶手段の領域に対して、データの読み出しおよび書き込みが行われ、生成された画素データと、記憶されたデータとを用いて所定の演算を行い、行アドレスおよび列アドレスを発生し、その発生されたアドレスを記憶し、発生されたアドレス、または発生されたアドレスの記憶値のうちのいずれか一方を選択し、データ記憶手段に与える。この場合、データ記憶手段から、データ記憶手段に記憶されている記憶データを読み出し、記憶データと、入力された入力データとを用いての演算処理を行い、演算処理の演算結果をメモリに書き戻すリードモディファイライト動作において、列アドレスがアドレス記憶手段に記憶されている列アドレスと一致しない入力データに対して、連続して入力される複数の入力データの行アドレスが同一である間、発生されたアドレスを選択してデータ記憶手段に与えることにより、データ記憶手段から記憶データを読み出させて演算処理を行わせるとともに、その発生されたアドレスをアドレス記憶手段に記憶させ、異なる行アドレスの入力データが入力されたとき、アドレス記憶手段の記憶値を選択してデータ記憶手段に与えることにより、データ記憶手段に、記憶値に対応する演算結果を書き込ませる。
【００３１】
請求項５に記載の画像生成装置においては、画像データ生成手段は、頂点データに基づいて、単位図形の内部の画素についての画素データを生成し、データ記憶手段は、第１および第２のアドレスにより特定される領域に対して、データの読み出しおよび書き込みを行うようになされている。演算手段は、画素データ生成手段により生成された画素データと、データ記憶手段に記憶されたデータとを用いて所定の演算を行い、発生手段は、第１および第２のアドレスを発生するようになされている。アドレス記憶手段は、画素データ生成手段が連続して出力する複数の画素データとの演算が施される、データ記憶手段に記憶されたデータの第１のアドレスが同一である間に、発生手段が発生する第２のアドレスを記憶し、選択手段は、データ記憶手段からデータを読み出すとき、またはデータ記憶手段に演算手段の演算結果を書き込むとき、発生手段の出力、またはアドレス記憶手段の記憶値をそれぞれ選択して、データ記憶手段に与えるようになされている。
【００３２】
【発明の実施の形態】
以下、発明の実施の形態について、図面を参照して詳細に説明する。
【００３３】
本発明に係る３次元画像生成装置は、例えば、図１に示すような３次元コンピュータグラフィックシステム３００の３次元画像生成装置（以下、単に画像生成装置と言う）２に適用される。
【００３４】
まず、３次元コンピュータグラフィックシステム３００において、画像生成装置２には、入力装置１及び表示装置３が接続されている。
【００３５】
画像生成装置２は、入力装置１の出力が供給される転送回路２１と、転送回路２１の出力が供給されるジオメトリ演算回路２２（頂点データ生成手段）と、ジオメトリ演算回路２２の出力が供給されるパラメータ演算回路２３と、パラメータ演算回路２３の出力が供給される画素発生回路２４（画像データ生成手段）と、画素発生回路２４の出力が供給されるマッピング回路２５と、マッピング回路２５の出力が供給されるメモリ制御回路２７と、メモリ制御回路２７の出力が供給されるディスプレイ制御回路２９とを備えており、ディスプレイ制御回路２９の出力は、表示装置３に供給されるようになされている。
【００３６】
また、画像生成装置２は、マッピング回路２５と接続されたテクスチャメモリ２６と、メモリ制御回路２７と接続されたフレームバッファ２８（データ記憶手段）とを備えている。
【００３７】
まず、入力装置１により、画像生成装置２に対して、任意の立体モデルを構成するポリゴン（単位図形）に関するポリゴンデータが入力される。即ち、図１の３次元コンピュータグラフィックシステムでは、立体モデル（３次元画像）を、複数のポリゴンに分解し、これらのポリゴンそれぞれを描画することで、立体モデル全体を表示するようになされており（従って、立体モデルは、ポリゴンの組合せにより定義されているということができる）、入力装置１から画像生成装置２に対しては、そのようなポリゴンについてのポリゴンデータが供給されるようになされている。
【００３８】
画像生成装置２では、転送回路２１において、入力装置１からのポリゴンデータが、直接メモリアクセス（ＤＭＡ：Direct Memory Access）転送により、ジオメトリ演算回路２２に高速転送される。
【００３９】
ここで、画像生成装置２は、平面を表す（ｘ，ｙ）座標のほかに、奥行きを表すｚ座標を用いて、３次元物体を表し、ｘ，ｙ，ｚの３つの座標で３次元空間内の任意の１点を表現するようになされている。
【００４０】
また、ポリゴンについては、その各頂点が主要なデータとなっている。すなわち、各頂点に対して、幾何学変換を施すことにより、面の変換ができ、最終的には、ポリゴンの幾何学的変換ができる。この幾何学的変換としては、並進変換、平行変換、及び回転変換等がある。
【００４１】
そこで、入力装置１により入力されたポリゴンを空間中の様々な位置へと変化させるために、ジオメトリ演算回路２２は、転送回路２１からのポリゴンデータの３次元空間内の各頂点（ｘ，ｙ，ｚ）毎に、上述したような幾何学的変換処理（以下、ジオメトリ変換処理という）を施す。そして、ジオメトリ演算回路２２は、ジオメトリ変換処理を行ったポリゴンデータを、パラメータ演算回路２３に供給する。
【００４２】
パラメータ演算回路２３は、ジオメトリ演算回路２２からのポリゴンデータに基いて、画素発生回路２４においてポリゴン内部の画素データを発生するために必要なパラメータを求め、画素発生回路２４に供給する。
【００４３】
画素発生回路２４は、パラメータ演算回路２３からのパラメータによりセットアップされ、ジオメトリ演算回路２２でジオメトリ変換処理が行われたポリゴンデータ内部の色データ、奥行データ等の画素データ、および表示に対応する２次元平面上でのアドレスを生成し、マッピング回路２５に供給する。
【００４４】
マッピング回路２５は、画素発生回路２４からの画素データおよびアドレスに応じ、テクテクスチャメモリ２６に格納されているテクスチャデータを用いて、テクスチャマッピング処理を行う。そして、マッピング回路２５は、テクスチャマッピング処理を行った画素データおよびアドレスを、メモリ制御回路２７に供給する。
【００４５】
メモリ制御回路２７は、マッピング回路２５からのアドレスに対応した画素データを、フレームバッファ２８から読み出し、その画素データと、マッピング回路２５からの画素データとを用いて、画素演算処理を行う。そして、メモリ制御回路２７は、画素演算処理の結果得られた画素データを、フレームバッファ２８へ書き込む。また、メモリ制御回路２７は、ディスプレイ制御回路２９から指定された表示領域の画素データを、フレームバッファ２８から読み出し、ディスプレイ制御回路２９に供給する。
【００４６】
尚、メモリ制御回路２７及びフレームバッファ２８についての詳細な説明は後述する。
【００４７】
ディスプレイ制御回路２９は、メモリ制御回路２７に対して、表示すべき表示領域の画素データを要求し、その要求に応じてメモリ制御回路２７から供給される画素データを受信する。そして、ディスプレイ制御回路２９は、その画素データをアナログ化して表示装置３に供給する。
【００４８】
これにより、表示装置３においては、ディスプレイ制御回路２９からの画素データ（画像信号）に対応する画面が表示される。
【００４９】
次に、上述したメモリ制御回路２７及びフレームバッファ２８について詳述する。
【００５０】
メモリ制御回路２７とフレームバッファ２８とは、例えば、前述した図７のメモリ制御回路１０２およびフレームバッファ１０３における場合と同様に接続されている。即ち、メモリ制御回路２７とフレームバッファ２８とは、図２に示すように、１本のコントロールバス１０６、１本のアドレスバス１０７、および１本のデータバス１０８で接続されている。そして、メモリ制御回路２７は、制御信号CTLまたはアドレスADRを、コントロールバス１０６またはアドレスバス１０７それぞれを介して出力することで、フレームバッファ２８にアクセスするようになされている。また、メモリ制御回路２７とフレームバッファ２８との間では、データバス１０８を介して、データDATAのやりとりが行われるようになされている。
【００５１】
メモリ制御回路２７は、タイミング発生回路２７１（発生手段）（指示手段）、列アドレスバッファ２７２（アドレス記憶手段）、セレクト回路２７３（選択手段）、演算処理回路２７４（演算手段）、ライトデータバッファ２７５、および双方向バッファ２７６で構成されている。
【００５２】
タイミング発生回路２７１は、フレームバッファ２８に対する制御信号CTLを発生し、コントロールバス１０６を介して、フレームバッファ２８に供給するようになされている。また、タイミング発生回路２７１は、マッピング回路２５からアドレスバス１０４を介して供給される画素データのアドレスに対応して、行アドレスおよび列アドレス（第１および第２のアドレス）を発生し、アドレスバス１１１を介して、列アドレスバッファ２７２およびセレクト回路２７３に供給するようにもなされている。さらに、タイミング発生回路２７１は、コントロールバス１０９を介して、セレクト回路２７３および双方向バッファ２７６を制御するようにもなされている。
【００５３】
列アドレスバッファ２７２は、例えばＦＩＦＯ（First In First Out）方式のメモリを含んで構成され、タイミング発生回路２７１が発生する列アドレスを、必要に応じて記憶するようになされている。列アドレスバッファ２７２において記憶された列アドレスは、アドレスバス１１２を介して、セレクト回路２７３に供給されるようになされている。
【００５４】
セレクト回路２７３は、タイミング発生回路２７１の制御にしたがって、タイミング発生回路２７１が出力するアドレス（行アドレス、列アドレス）、または列アドレスバッファ２７２が出力する列アドレスのうちのいずれか一方を選択し、アドレスバス１０７を介して、フレームバッファ２８に供給するようになされている。
【００５５】
演算処理回路２７４は、マッピング回路２５から供給される画素データと、フレームバッファ２８から読み出され、双方向バッファ２７６を介して供給される画素データとを用いての演算処理を行い、その演算結果としての画素データを、データバス１１４を介して、ライトデータバッファ２７５に供給するようになされている。ライトデータバッファ２７５は、演算処理回路２７４から供給される画素データを一時記憶し、データバス１１５を介して双方向バッファ２７６に供給するようになされている。双方向バッファ２７６は、フレームバッファ２８から読み出され、データバス１０８を介して供給される画素データを受信し、データバス１１３を介して、演算処理回路２７４に供給するとともに、ライトデータバッファ２７５から供給される画素データを受信し、データバス１０８を介して、フレームバッファ２８に供給するようになされている。
【００５６】
フレームバッファ２８は、前述した図７のフレームバッファ１０３と同様に構成されている。
【００５７】
以上のように構成されるメモリ制御回路２７に対しては、マッピング回路２５から、処理を行うべき画素データが、データバス１０５を介して、また、その画素データについてのアドレスが、アドレスバス１０４を介して入力される。
【００５８】
例えば、いま、マッピング回路２５から連続してフレームバッファ２８の同一行アドレス内の３つの画素データPix0，Pix1，Pix2が入力され、次に異なる行アドレスの画素データPix3が入力され、これらについて、リードモディファライト動作が行われる場合、図３に示すように、まず、タイミング発生回路２７１は、クロックclk＝「０」において、画素データPix0，Pix1，Pix2についてのアドレスに応じて、行アドレスを活性化するため、ロウアクティブ動作を指示する制御信号Ractを発生し、コントロールバス１０６介して、フレームバッファ２８に供給する。同時に、タイミング発生回路２７１は、３つの画素データPix0，Pix1，Pix2に対応する同一の行アドレスRow0を発生し、アドレスバス１１１を介して、セレクト回路２７３に供給する。
【００５９】
このとき、タイミング発生回路２７１は、セレクト回路２７３を、タイミング発生回路２７１の出力を選択するように制御しており、従って、行アドレスRow0は、セレクト回路２７３において選択され、アドレスバス１０７を介して、フレームバッファ２８に供給される。
【００６０】
これにより、フレームバッファ２８は、タイミング発生回路２７１からのアドレスRow0を行アドレスとしてラッチし、制御信号Ractにしたがって、行アドレスRow0に対応する領域を活性化する。
【００６１】
そして、タイミング発生回路２７１は、クロックclk＝「２」において、カラムリードアクセス動作を指示する信号Rdcを発生し、コントロールバス１０６介して、フレームバッファ２８へ供給する。さらに、タイミング発生回路２７１は、その出力を選択するように、セレクト回路２７３を制御するとともに、リード方向（フレームバッファ２８から演算処理回路２７４の方向）にデータを転送するように、双方向バッファ２７６を制御する。その後、タイミング発生回路２７１は、同一行内の最初の画像データPix0に対応する列アドレスCol0を発生し、アドレスバス１１１を介して出力する。
【００６２】
この列アドレスCol0は、列アドレスバッファ１１２およびセレクト回路２７３に供給される。列アドレスバッファ１１２は、タイミング発生回路２７１からの列アドレスCol0を受信して記憶する。また、セレクト回路２７３は、タイミング発生回路２７１からの列アドレスCol0を選択し、アドレスバス１０７を介して、フレームバッファ２８に供給する。
【００６３】
フレームバッファ２８は、タイミング発生回路２７１が発生したアドレスCol0を、列アドレスとしてラッチする。そして、フレームバッファ２８は、行アドレスRow0および列アドレスCol0で特定される領域に記憶されている画素データRpd0を読み出し、データバス１０８を介して、双方向バッファ２７６に供給する。
【００６４】
双方向バッファ２７６は、上述したように、リード方向に、データを転送するように制御されており、従って、この場合、フレームバッファ２８からの画像データRpd0は、双方向バッファ２７６を介して、演算処理回路２７４に供給される。
【００６５】
次に、タイミング発生回路２７１は、クロックclk＝「３」において、カラムリードアクセス動作を指示する信号Rdcを発生するとともに、同一行内の２番目の画像データPix1に対応する列アドレスCol1を発生し、以下、クロックclk＝「２」における場合と同様の処理を行う。
【００６６】
これにより、列アドレスバッファ２７２には列アドレスCol1が記憶され、また、フレームバッファ２８の行アドレスRow0および列アドレスCol1で特定される領域から画素データRpd1が読み出されて、演算処理回路２７４に供給される。
【００６７】
さらに、タイミング発生回路２７１は、クロックclk＝「４」において、カラムリードアクセス動作を指示する信号Rdcを発生するとともに、同一行内の３番目の画像データPix2に対応する列アドレスCol2を発生し、以下、クロックclk＝「２」における場合と同様の処理を行う。
【００６８】
これにより、やはり、列アドレスバッファ２７２には列アドレスCol2が記憶され、また、フレームバッファ２８の行アドレスRow0および列アドレスCol2で特定される領域から画素データRpd2が読み出されて、演算処理回路２７４に供給される。
【００６９】
演算処理回路２７４は、例えば、パイプライン処理が可能な構造となっており、クロックclk＝「５」において、画素データPix0とRpd0とを用いた演算処理を、クロックclk＝「６」において、画素データPix1とRpd1とを用いた演算処理を、クロックclk＝「７」において、画素データPix2とRpd2とを用いた演算処理を、それぞれ開始する。そして、演算処理回路２７４は、各演算処理の結果得られる画素データWpd0，Wpd1，Wpd2を、ライトデータバッファ２７５に順次供給する。ライトデータバッファ２７５は、例えば、ＦＩＦＯ方式のメモリで構成され、演算処理回路２７４から供給される画素データWpd0，Wpd1，Wpd2を順次記憶する。
【００７０】
一方、タイミング発生回路２７１は、画素データPix3に対応するアドレスを受信すると、その行アドレスが、いままでに処理した画素データPix0乃至Pix2の行アドレスと異なることを認識し、ライトデータバッファ２７５に記憶された画素データWpd0乃至Wpd2の、フレームバッファ２８への書き込み制御を開始するが、画素データRpd2とWpd0との、データバス１０８上での衝突を避けるため、クロクclk＝「８」において待ち状態となる。
【００７１】
その後、タイミング発生回路２７１は、クロックclk＝「９」において、カラムライトアクセス動作を指示する制御信号Wrcを、コントロールバス１０６介してフレームバッファ２８に供給する。さらに、タイミング発生回路２７１は、列アドレスバッファ２７２の出力を選択するように、セレクト回路２７３を制御するとともに、ライト方向（ライトデータバッファ２７５からフレームバッファ２８の方向）にデータを転送するように、双方向バッファ２７６を制御する。
【００７２】
そして、列アドレスバッファ２７２からは、最初に記憶した列アドレス、即ち、画像データWpd0に対応する列アドレスCol0が読み出され、セレクタ回路２７３に供給される。この場合、セレクタ回路２７３では、列アドレスバッファ２７２からの列アドレスCol0が選択され、アドレスバス１０７を介して、フレームバッファ２８に供給される。同時に、ライトデータバッファ２７５からは、やはり最初に記憶した画素データWpd0が読み出され、双方向バッファ２７６に供給される。この場合、双方向バッファ２７６は、ライト方向に、データを転送するように制御されており、従って、ライトデータバッファ２７５からの画像データWpd0は、データバス１０８を介して、フレームバッファ２８に供給される。
【００７３】
これにより、フレームバッファ２８の行アドレスRow0および列アドレスCol0で示される領域には、演算処理回路２７４で得られた画像データWpd0が供給される。
【００７４】
以下、クロックclk＝「１０」および「１１」においても、タイミング発生回路２７１は同様の処理を行い、これにより、フレームバッファ２８には、クロックclk＝「１０」において、列アドレスバッファ２７２で２番目に記憶された列アドレスCol1、およびライトデータバッファ２７５で２番目に記憶された画素データWpd1が供給され、クロックclk＝「１１」において、列アドレスバッファ２７２で３番目に記憶された列アドレスCol2、およびライトデータバッファ２７５で３番目に記憶された画素データWpd2が供給される。
【００７５】
その結果、クロックclk＝「１０」においては、フレームバッファ２８の行アドレスRow0および列アドレスCol1で示される領域に、画像データWpd1が供給され、また、クロックclk＝「１１」においては、フレームバッファ２８の行アドレスRow0および列アドレスCol2で示される領域に、画像データWpd2が供給される。
【００７６】
そして、タイミング発生回路２７１は、クロックclk＝「１２」において、プリチャージ動作を指示する制御信号Pchrを、コントロールバス１０６介してフレームバッファ２８へ供給する。これにより、制御信号Ractによって活性化された行アドレスRow0の領域に供給された画素データWpd0乃至Wpd2が、その行アドレスRow0および列アドレスCol0乃至Col2に対応する領域（メモリセル）に、それぞれ書き込まれる。
【００７７】
なお、図３において、クロックclkが「０」乃至「１」の期間tRCDは、タイミング発生回路２７１が行アドレスRow0および制御信号Ractを発生してから、フレームバッファ２８がRow0を行アドレスとしてラッチして、その行アドレスRow0内の画素データが活性化されるまでの期間である。
【００７８】
また、クロックclkが「２」乃至「４」の期間tCL0は、タイミング発生回路２７１が列アドレスCol0および制御信号Rdcを発生してから、フレームバッファ２８から読み出される画像データRpd0が有効となるまでの期間である。同様に、クロックclkが「３」乃至「５」の期間tCL1は、タイミング発生回路２７１が列アドレスCol1および制御信号Rdcを発生してから、フレームバッファ２８から読み出される画像データRpd1が有効となるまでの期間であり、クロックclkが「４」乃至「６」の期間tCL2は、タイミング発生回路２７１が列アドレスCol2および制御信号Rdcを発生してから、フレームバッファ２８から読み出される画像データRpd2が有効となるまでの期間である。
【００７９】
さらに、クロックclkが「５」乃至「７」の期間tRMW0は、画素データRpd0が有効となってから、その画素データRpd0を用いての演算処理回路２７４での演算処理が終了するまでの期間である。同様に、クロックclkが「６」乃至「８」の期間tRMW1は、画素データRpd1が有効となってから、その画素データRpd1を用いての演算処理回路２７４での演算処理が終了するまでの期間であり、クロックclkが「７」乃至「９」の期間tRMW2は、画像データRpd2が有効となってから、その画像データRpd2を用いての演算処理回路２７４での演算処理が終了するまでの期間である。
【００８０】
また、クロックclkが「１１」乃至「１２」の期間tRASは、同一行アドレスの画像データに対するアクセスが終了し、プリチャージ動作が可能になるまでの期間である。
【００８１】
さらに、クロックclkが「１３」乃至「１４」の期間tRPは、プリチャージ動作が行われ、新たな行アドレスを活性化することができるまでの期間である。
【００８２】
なお、後述する図６における期間tRCD，tCL，tRMWも、図３における場合と同様の期間を表す。
【００８３】
また、前述したように、期間tRCD，tCL，tRAS、およびtRPは、フレームバッファを構成するＤＲＡＭの規格により規定されるものであり、期間tRMWは、演算処理回路２７４における演算処理の内容によって変動するものである。図３（図６においても同様）においても、前述した図８における場合と同様に、期間tRP，tRCD、およびtRASは２クロックと、期間tCLおよびtRMWは３クロックと、それぞれしてある。
【００８４】
次に、メモリ制御回路２７とフレームバッファ２８によって行われるリードモディファイライト動作における画素演算処理の効率について説明する。
【００８５】
図３に示した場合においては、リードモディファイライト動作に要する期間は、式
tRCD＋tCL＋tRMW＋画素数＋tRAS＋tRP
から求めることができ、従って、３画素に対するリードモディファイライトに要する期間は１５クロックとなる。この１５クロックというのは、従来の場合（図８）の２７クロックより、１２クロック少ないが、これは、図３に示したように、期間tCL0乃至tCL2およびtRMW0乃至tRMW2がオーバラップしているからである。即ち、画素データの読み出しおよび画素演算処理が並列して行われていることにより、リードモディファイライトに要する期間が短縮されている。
【００８６】
この場合における画素演算の処理効率、すなわち１画素の処理に消費されるクロック数は５クロックであり、従って、前述した従来の３次元画像生成装置における１画素当たりの処理クロック数が９クロックであるのと比較してわかるように、メモリアクセスの効率化が図られている。
【００８７】
また、従来の３次元画像生成装置における１画素当たりの処理クロック数は、期間tCLおよびtRMWが、画素毎に必要とされるため、連続して処理することができる同一行アドレスの画素データの数によっては低減しないが、画像生成装置２では、期間tCLおよびtRMWが、連続して処理することのできる同一行アドレスの画素データ数に拘らず一定クロック数であるため、連続して処理することができる画素データの数が多いほど、１画素当たりの処理クロック数を低減することができる。
【００８８】
そして、一般的に、３次元画像生成装置は、メモリアクセスの局所性（同一行アドレスへの連続アクセスが多い事）を有するから、これを考慮した場合、その性能を十分に向上させることができる。
【００８９】
ところで、列アドレスバッファ２７２をオーバーフローさせないためには、同一行アドレスの画素データが連続して供給される最大数だけの列アドレスを記憶させることができるように、列アドレスバッファ２７２を構成する必要があるが、そのような数の列アドレスを記憶しなければならないのは稀であり、このようなレアケースを想定して、列アドレスバッファ２７２を構成するのは、装置の規模およびコストの面から好ましくない。
【００９０】
従って、列アドレスバッファ２７２を、同一行アドレスの画素データが連続して供給される最大数より少ない数の列アドレスしか記憶することができないようにした場合に、そのオーバーフローを防止する必要がある。
【００９１】
さらに、列アドレスバッファ２７２を、単に、ＦＩＦＯ方式のメモリだけで構成した場合、同一行アドレスの、同一列アドレスの画素データが、メモリ制御回路２７に供給されたときに不都合が生じる。
【００９２】
具体的には、例えば、図４に示すように、既に、フレームバッファ２８の行アドレスRow0の列アドレスCol0に画素データＡが記憶され、その画素データＡと同一の行アドレスRow0の、異なる列アドレスCol1に画素データＢが記憶されている場合において、メモリ制御回路２７に対して、最初に行アドレスRow0の列アドレスCol0の画素データａが供給され、続いて行アドレスRow0の列アドレスCol1の画素データｂが供給され、さらにその後に、最初と同一の行アドレスRow0の列アドレスCol0の画素データｃが供給されたとき、上述したメモリ制御回路２７の処理によれば、演算処理回路２７４において、期待している演算結果を得ることができない。
【００９３】
即ち、いま、演算処理回路２７４において、画像データＸおよびＹを用いての演算が行われることにより得られる演算結果（画像データ）を、ＸＹと表すこととすると、上述の場合、画像データａ，ｂ，ｃが順次供給されることにより、演算処理回路２７４においては、画像データａＡ，ｂＢ，ｃＡなる演算結果が順次得られる。
【００９４】
しかしながら、画像データｃについては、本来、画像データａおよびＡを用いての演算結果ａＡとの演算が行われるべきであり、従って、画像データｃについての演算結果は、ｃａＡにならなければならない。
【００９５】
そこで、列アドレスバッファ２７２は、例えば、図５に示すように構成することができる。この実施例においては、列アドレスバッファ２７２は、ＦＩＦＯメモリ２７２１（検出手段）、比較器２７２２（検出手段）、および論理和演算回路２７２３から構成されている。
【００９６】
ＦＩＦＯメモリ２７２１は、タイミング発生回路２７１から供給される列アドレスを一時記憶し、セレクト回路２７３に供給するようになされている。なお、ＦＩＦＯメモリ２７２１は、ＦＩＦＯ方式のメモリで、この実施例では、４段に構成されている（但し、ＦＩＦＯメモリ２７２１の段数は、４段に限定されるものではない）。従って、ＦＩＦＯメモリ２７２１は、最大で４つの列アドレスを記憶することができるようになされている。また、ＦＩＦＯメモリ２７２１は、記憶可能な４つの列アドレスを記憶したとき、自身の空き領域がなくなったことを検出し、論理和演算回路２７２３に、例えば、１（Ｈレベル）のＦＵＬＬ信号を出力するようにもなされている。なお、ＦＩＦＯメモリ２７２１は、その他の場合は、例えば、０（Ｌレベル）のＦＵＬＬ信号を、論理和演算回路２７２３に出力するようになされている。
【００９７】
比較器２７２２は、タイミング発生回路２７１からＦＩＦＯメモリ２７２１に供給されるものと同一の列アドレスを受信し、その列アドレスと、ＦＩＦＯメモリ２７２１に、既に記憶されている列アドレスとを比較し、これにより、ＦＩＦＯメモリ２７２１に記憶されている列アドレスと同一の列アドレスが、タイミング発生回路２７１において発生されたことを検出するようになされている。比較器２７２２は、ＦＩＦＯメモリ２７２１に記憶されている列アドレスと同一の列アドレスが、タイミング発生回路２７１において発生されたこと検出したとき、通常は、例えば、０となっているＤＴ信号を、例えば、１にして論理和演算回路２７２３に出力するようになされている。
【００９８】
論理和演算回路２７２３は、ＦＩＦＯメモリ２７２１からのＦＵＬＬ信号と、比較器２７２２からのＤＴ信号との論理和を求め、その論理和を、ＥＱ信号として、タイミング発生回路２７１に出力するようになされている。従って、タイミング発生回路２７１には、ＦＩＦＯメモリ２７２１の空き領域がなくなったときと、ＦＩＦＯメモリ２７２１に記憶されている列アドレスと同一の列アドレスが、タイミング発生回路２７１において発生されたときに、１のＥＱ信号が、それ以外のときは０のＥＱ信号が供給されるようになされている。
【００９９】
以上のように構成される列アドレスバッファ２７２の下で、図４で説明したような画素データａ乃至ｃが供給され、フレームバッファ２８へのリードモディファライト動作が行われる場合においては、図６に示すように、まず、タイミング発生回路２７１は、クロックclk＝「０」において、図３に示したクロックclk＝「０」における場合と同様に、制御信号Racおよび行アドレスRow0を発生して、フレームバッファ２８に供給する。これにより、フレームバッファ２８では、アドレスRow0が行アドレスとしてラッチされ、その行アドレスRow0に対応する領域がを活性化される。
【０１００】
次に、タイミング発生回路２７１は、クロックclk＝「２」において、カラムリードアクセス動作を指示する信号Rdcを、コントロールバス１０６介してフレームバッファ２８へ供給する。さらに、タイミング発生回路２７１は、その出力を選択するように、セレクト回路２７３を制御するとともに、リード方向にデータを転送するように、双方向バッファ２７６を制御する。そして、タイミング発生回路２７１は、画像データａの列アドレスCol0を発生し、セレクト回路２７３を介して、フレームバッファ２８に供給する。なお、この列アドレスCol0は、列アドレスバッファ２７２にも供給され、そのＦＩＦＯメモリ２７２１において記憶される。
【０１０１】
フレームバッファ２８は、タイミング発生回路２７１からのアドレスCol0を受信すると、それを列アドレスとしてラッチし、その列アドレスCol0と、先に供給された行アドレスRow0とで特定される領域に記憶されている画素データＡを読み出し、双方向バッファ２７６を介して、演算処理回路２７４に供給する。
【０１０２】
次に、タイミング発生回路２７１は、クロックclk＝「３」において、クロックclk＝「２」における場合と同様にして、制御信号Rdcおよび画像データｂの列アドレスCol1を発生する。これにより、上述した場合と同様にして、列アドレスCol1は、ＦＩＦＯメモリ２７２１に記憶され、また、フレームバッファ２８の行アドレスRow0および列アドレスCol1で特定される領域に記憶されている画素データＢが読み出されて、演算処理回路２７４に供給される。
【０１０３】
ここで、タイミング発生回路２７１は、次に出力すべき列アドレスも発生するようになされており、この列アドレスを、先に、比較器２７２２に供給するようになされている。従って、いまの場合、クロックclk＝「３」において、画像データｃの列アドレスCol0が、比較器２７２２に供給される。このとき、ＦＩＦＯメモリ２７２１には、画像データｃの列アドレスCol0と一致する、画像データａの列アドレスCol0が記憶されているから、比較器２７２２は、論理和演算回路２７２３に、１のＤＴ信号を出力する。これにより、論理和演算回路２７２３からは、１のＥＱ信号が出力され、このＥＱ信号は、コントロールバス１１０（図２）を介して、タイミング発生回路２７１に供給される。
【０１０４】
タイミング発生回路２７１は、１のＥＱ信号を受信すると、フレームバッファ２８からのリード（読み出し）を中断し、いままでに得られた演算結果のライト（書き込み）を行うため、クロックclk＝「４」乃至「７」の期間、待ち状態となる。
【０１０５】
一方、演算処理回路２７４では、クロックclk＝「５」、「６」において、フレームバッファ２８に書き込むべきデータを求める演算が開始される。即ち、演算処理回路２７４は、クロックclk＝「５」において、画素データａとＡとを用いた演算処理を、クロックclk＝「６」において、画素データｂとＢとを用いた演算処理を、それぞれ開始する。そして、演算処理回路２７４は、各演算処理の結果得られる画素データａＡ，ｂＢを、ライトデータバッファ２７５に順次供給して記憶させる。
【０１０６】
そして、タイミング発生回路２７１は、クロックclk＝「８」において、カラムライトアクセス動作を指示する制御信号Wrcを、コントロールバス１０６介してフレームバッファ２８へ供給する。さらに、タイミング発生回路２７１は、列アドレスバッファ２７２の出力を選択するように、セレクト回路２７３を制御するとともに、ライト方向にデータを転送するように、双方向バッファ２７６を制御する。
【０１０７】
これにより、列アドレスバッファ２７２からは、画素データａＡに対応する列アドレスCol0が読み出され、アドレスバス１０７を介して、フレームバッファ２８に供給される。また、ライトデータバッファ２７５からは、画素データａＡが読み出され、双方向バッファ２７６およびデータバス１０８を介して、フレームバッファ２８に供給される。その結果、フレームバッファ２８の行アドレスRow0および列アドレスCol0で示される領域には、画素データａＡが書き込まれる。
【０１０８】
クロックclk＝「９」においても、同様の処理が行われ、これにより、画像データｂＢが、フレームバッファ２８の行アドレスRow0および列アドレスCol1で示される領域に書き込まれる。
【０１０９】
以上のようにして、ライトデータバッファ２７５に記憶されていた画素データすべての、フレームバッファ２８への書き込みが終了すると、タイミング発生回路２７１は、再び、フレームバッファ２８からのリードを行うために、クロックclk＝「１０」において、制御信号Rdcおよび画素データｃの列アドレスCol0を発生し、クロックclk＝「２」における場合と同様にして、フレームバッファ２８の行アドレスRow0および列アドレスCol0により特定される領域から、画素データａＡを読み出す。この画素データａＡは、双方向バッファ２７６を介して、演算処理回路２７４に供給される。
【０１１０】
演算処理回路２７４では、クロックclk＝「１３」において、画素データｃおよびａＡを用いた演算が開始され、その後、その演算結果としての画素データｃａＡが得られると、その画素データｃａＡは、ライトデータバッファ２７５に供給されて記憶される。
【０１１１】
そして、タイミング発生回路２７１は、クロックclk＝「１６」において、クロックclk＝「８」における場合と同様にして、制御信号Wrcおよび画素データｃａＡの列アドレスCol0を、フレームメモリ２８に供給することで、その行アドレスRow0および列アドレスCol0で特定される領域に、画素データｃａＡを書き込む。
【０１１２】
従って、この場合、フレームバッファ２８には、画像データｃについての演算結果として、本来得られるべきのｃａＡが書き込まれる。
【０１１３】
以上のように、列アドレスバッファ２７２に記憶されている列アドレスと同一の列アドレスが、タイミング発生回路２７１において発生された場合には、フレームメモリ２８からの読み出しを中断し、それまでに得られた演算結果を、フレームメモリ２８に書き込んでから、再び読み出しを開始するようにしたので、期待される演算結果を得ることができる。
【０１１４】
次に、列アドレスバッファ２７２が図５に示すように構成される場合において、ＦＩＦＯメモリ２７２１の空き容量がなくなった場合には、ＦＩＦＯメモリ２７２１から論理和演算回路２７２３に対して、１のＦＵＬＬ信号が出力され、これにより、論理和演算回路２７２３からタイミング発生回路２７１に対して、１のＥＱ信号が供給される。従って、この場合も、フレームメモリ２８からの読み出しが中断され、それまでに得られた演算結果を、フレームメモリ２８に書き込んでから、再び読み出しが開始されるので、ＦＩＦＯメモリ２７２１がオーバーフローすることを防止することができる。
【０１１５】
【発明の効果】
以上のように、第１の本発明によれば、列アドレスがアドレス記憶手段に記憶されている列アドレスと一致しない入力データに対して、連続して入力される複数の入力データの行アドレスが同一である間、選択手段が、発生されたアドレスを選択してメモリに与えることにより、メモリから記憶データを読み出させて演算処理を行わせるとともに、アドレス記憶手段が、その発生されたアドレスを記憶し、異なる行アドレスの入力データが入力された場合、選択手段が、アドレス記憶手段の記憶値を選択してメモリに与えることにより、メモリに、記憶値に対応する演算結果を書き込ませるので、メモリアクセスの効率化を図ることができる。
【０１１６】
第２の本発明によれば、単位図形の頂点に関する頂点データが生成され、生成された頂点データに基づいて、単位図形の内部の画素についての画素データが生成され、行アドレスおよび列アドレスにより特定されるデータ記憶手段の領域に対して、データの読み出しおよび書き込みが行われる場合、データ記憶手段から、データ記憶手段に記憶されている記憶データを読み出し、記憶データと、入力された入力データとを用いての演算処理を行い、演算処理の演算結果をメモリに書き戻すリードモディファイライト動作において、列アドレスがアドレス記憶手段に記憶されている列アドレスと一致しない入力データに対して、連続して入力される複数の入力データの行アドレスが同一である間、選択手段が、発生されたアドレスを選択してデータ記憶手段に与えることにより、データ記憶手段から記憶データを読み出させて演算処理を行わせるとともに、アドレス記憶手段が、その発生されたアドレスを記憶し、異なる行アドレスの入力データが入力されたとき、選択手段が、アドレス記憶手段の記憶値を選択してデータ記憶手段に与えることにより、データ記憶手段に、記憶値に対応する演算結果を書き込ませるので、単位図形の組合せにより定義される３次元画像を生成する場合において、画像演算処理の効率化を図ることができる。
【図面の簡単な説明】
【図１】本発明を適用した３次元コンピュータグラフィックシステムの一実施例の構成を示すブロック図である。
【図２】図１のメモリ制御装置２７の構成例を示すブロック図である。
【図３】図２のメモリ制御装置２７の処理を説明するためのタイミングチャートである。
【図４】同一行アドレスの、同一列アドレスの画素データが、メモリ制御回路２７に供給された場合に生じる不都合を説明するための図である。
【図５】図２の列アドレスバッファ２７２の構成例を示すブロック図である。
【図６】列アドレスバッファ２７２が図５に示すように構成される場合のメモリ制御装置２７の処理を説明するためのタイミングチャートである。
【図７】従来の３次元画像作成装置の一例の構成を示すブロック図である。
【図８】図７のメモリ制御回路１０２の処理を説明するためのタイミングチャートである。
【符号の説明】
２２  ジオメトリ演算回路（頂点データ生成手段），  ２３  パラメータ演算回路，  ２４  画素発生回路（画素データ生成手段），  ２５  マッピング回路，  ２６  テクスチャメモリ，  ２７  メモリ制御回路，  ２８  フレームバッファ（データ記憶手段），  ２９  ディスプレイ制御回路，  ２７１  タイミング発生回路（発生手段）（指示手段），  ２７２  列アドレスバッファ（列アドレス記憶手段），  ２７３  セレクト回路（選択手段），  ２７４  演算処理回路（演算手段），  ２７５  ライトデータバッファ，  ２７６  双方向バッファ，  ２７２１  ＦＩＦＯメモリ（検出手段），  ２７２２  比較器（検出手段），  ２７２３  論理和演算回路
【図１】
0003797498.tif 000002
【図２】
0003797498.tif 000003
【図３】
0003797498.tif 000004
【図４】
0003797498.tif 000005
【図５】
0003797498.tif 000006
【図６】
0003797498.tif 000007
【図７】
0003797498.tif 000008
【図８】
0003797498.tif 000009