(57)【特許請求の範囲】
【請求項１】
複数のテーブルデータが記憶された主メモリと、前記主メモリから読み出されたテーブルデータを、該テーブルデータを記憶単位として記憶するキャッシュメモリと、所要のテーブルデータの読出し時に前記キャッシュメモリの記憶データにヒットしないときには、前記所要のテーブルデータを前記主メモリから読み出して前記キャッシュメモリに記憶する際に、前記所要のテーブルデータをキャッシュメモリに記憶すると共に、前記所要のテーブルデータにアドレスが後続する所定数のテーブルデータを前記主メモリから読み出して、前記キャッシュメモリに候補データとして記憶する制御手段とを備え、前記制御手段が、前記キャッシュアドレスに空きがないときには、記憶済みの候補データに前記所要のテーブルデータを上書きする上書き手段を有することを特徴とし、前記制御手段は、前記キャッシュメモリに記憶されたテーブルデータが前記候補データとして書き込まれたことを示す候補データフラグをセットする手段と、前記キャッシュメモリに記憶されたテーブルデータが前記所要のテーブルデータとして参照されたことを示す有効データフラグをセットする手段とを更に備え、前記上書き手段は、前記候補データフラグがセットされ且つ前記有効データフラグがセットされていないときに上書きし、１ライン分のテーブルデータの処理毎に、セットされた前記候補データフラグ及びセットされた前記有効データフラグを初期化する画像処理装置。
【請求項２】
前記テーブルデータが前記主メモリに記憶されたアドレスを示すテーブルアドレスと前記キャッシュアドレスとの対応を記憶したタグメモリを更に有し、前記制御手段は、１フレーム分のテーブルデータの処理毎に、前記タグメモリを初期化することを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記所要のテーブルデータが前記キャッシュメモリのキャッシュアドレスの昇順に記憶されるとともに前記候補データが前記キャッシュメモリのキャッシュアドレスの降順に記憶されるか、又は、前記所要のテーブルデータが前記キャッシュメモリのキャッシュアドレスの降順に記憶されるとともに前記候補データがキャッシュメモリのキャッシュアドレスの昇順に記憶されることを特徴とする、請求項１もしくは２に記載の画像処理装置。
【請求項４】
複数のテーブルデータが記憶された主メモリと、前記主メモリから読み出されたテーブルデータを、該テーブルデータを記憶単位として記憶するキャッシュメモリと、所要のテーブルデータの読出し時に前記キャッシュメモリの記憶データにヒットしないときには、前記所要のテーブルデータを前記主メモリから読み出して前記キャッシュメモリに記憶する際に、前記所要のテーブルデータをキャッシュメモリに記憶すると共に、前記所要のテーブルデータにアドレスが後続する所定数のテーブルデータを前記主メモリから読み出して、前記キャッシュメモリに候補データとして記憶する制御手段とを備え、前記制御手段が、前記キャッシュアドレスに空きがないときには、記憶済みの候補データに前記所要のテーブルデータを上書きする上書き手段を有することを特徴とし、前記所要のテーブルデータが前記キャッシュメモリのキャッシュアドレスの昇順に記憶されるとともに前記候補データが前記キャッシュメモリのキャッシュアドレスの降順に記憶されるか、又は、前記所要のテーブルデータが前記キャッシュメモリのキャッシュアドレスの降順に記憶されるとともに前記候補データがキャッシュメモリのキャッシュアドレスの昇順に記憶されることを特徴とする画像処理装置。
【請求項５】
前記制御手段は、前記キャッシュメモリに記憶されたテーブルデータが前記候補データとして書き込まれたことを示す候補データフラグをセットする手段と、前記キャッシュメモリに記憶されたテーブルデータが前記所要のテーブルデータとして参照されたことを示す有効データフラグをセットする手段とを更に備え、前記上書き手段は、前記候補データフラグがセットされ且つ前記有効データフラグがセットされていないときに上書きすることを特徴とする、請求項４に記載の画像処理装置。
【請求項６】
前記制御手段が、１ライン分のテーブルデータの処理毎に、セットされた前記候補データフラグ及びセットされた前記有効データフラグを初期化する、請求項５に記載の画像処理装置。
【請求項７】
前記テーブルデータが前記主メモリに記憶されたアドレスを示すテーブルアドレスと前記キャッシュアドレスとの対応を記憶したタグメモリを更に有し、前記制御手段は、１フレーム分のテーブルデータの処理毎に、前記タグメモリを初期化することを特徴とする、請求項４〜６の何れか一に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理装置に関し、特に、テーブルデータに対するキャッシュ機能を備えた画像処理装置に関する。
【０００２】
【従来の技術】
画像処理装置、特に二次元画像（２Ｄグラフィック）を処理する装置には、主メモリに比して十分に高速なキャッシュメモリを備えたものがある。この画像処理装置では、主メモリから一旦読み出して使用したテーブルデータの一部をキャッシュメモリに複写しておき、この複写データが再度必要になったときに、キャッシュメモリから読み出すことによって、画像生成や画像変更等の処理を高速化している。
【０００３】
図２０は、上記従来の画像処理装置で扱う画像の状態を模式的に示す図である。ここで、ゲーム等の背景を作成する際の最小単位をピクセルと呼び、このピクセルを集合させて或る大きさの画像（例えば、１６ピクセル×１６ライン）としたものをキャラクタと呼ぶ。キャラクタには、反転、輝度などの装飾情報が含まれる。また、キャラクタにコードを付したキャラクタデータをマトリックス状に配列したものをキャラクタテーブルと呼ぶ。キャラクタテーブルには、例えば、３２×３２、３２×６４、３２×１２８、６４×１６、６４×３２、６４×６４、１２８×１６、１２８×３２などのキャラクタ数を備えるものが一般的に利用されている。背景画像は、キャラクタテーブルの一部、又は全部を組み合わせることによって作成される。
【０００４】
例えば、図２１に示すように、同一アドレスデータが画面上で繰り返される画像変化に乏しい背景の場合には、キャラクタテーブル（スクリーンテーブル）におけるテーブルアドレス“００”、“０１”、“０２”を繰り返し用いることで足りる。この場合、テーブルアドレスが“００”、“０１”、“０２”の３つのアドレスで足りるので、キャラクタテーブル自体が小さくできる。
【０００５】
一方、図２２に示すように、同一アドレスデータが繰り返されない画像の場合には、テーブルアドレスを連続するように割り付けることにより、読出し時の効率を上げ、また、表現力向上のために、ラインスクロール、分割スクロール等のスクロールを用いて背景画像に変化を与える。
【０００６】
図２３は、ラインスクロールによる画像変化を模式的に示す図である。例えば、同図のａに示す画像をラインスクロールすると同図のｂに示す通りであるが、同図のｃに示すように縦１ライン単位でキャラクタテーブルの読込みアドレスを変化させ（水平スクロール量を変化させ）ることにより、画面に表示される画像は同図のｄに示すように変化する。
【０００７】
図２４は、分割スクロールによる画像変化を模式的に示す図である。例えば、画面を横方向（水平方向）、縦方向（垂直方向）、或いは、水平及び垂直方向に分割し、分割した単位毎にキャラクタテーブルの読込みアドレスを変更する。この分割スクロールによると、画像の中心部のみ読込みアドレスを変更することで、画像Ｂとして示すように、周囲が文字で囲まれた中心部の電車の画像のみをスクロールさせる演出が可能になる。
【０００８】
近年では、高速動作するデータキャッシュ回路を用いることで、出力画像の大型化や複雑な組合わせによる画面表示を実現しつつ描画速度を向上させることが要請されている。図２５は、この要請に応えるためのデータキャッシュ回路を備えた画像処理装置の概略構成を示すブロック図である。
【０００９】
画像処理装置は、データキャッシュ回路を構成する、キャッシュコントローラ３とテーブルデータキャッシュメモリ（以下、単にキャッシュメモリとも呼ぶ）４とタグメモリ８とを有する。データキャッシュ回路には、入力側に外部メモリ１とテーブルアドレス演算回路２とが接続され、出力側にROMコントローラ９が接続される。ROMコントローラ９には、画像データROM１０からの画像データが入力され、ROMコントローラ９からラインバッファ１１にデータが出力される。画像処理装置は更に、水平同期信号（H-Sync）と垂直同期信号（V-Sync）とをカウントするＨ／Ｖカウンタ（図示せず）を有する。
【００１０】
図２６は、図２５の画像処理装置の作動を示すフローチャートである。まず、ステップＳ１でＨ／Ｖカウンタを初期化した後、V-Syncが入力されると（ステップＳ２）、タグメモリ８の内容を初期化し（ステップＳ３）、H-Syncの入力を待つ（ステップＳ４）。
【００１１】
H-Syncが入力されると、ステップＳ５で、スクロールや分割画面などを考慮してテーブルアドレスを計算し、ステップＳ６で、算出したテーブルアドレスがタグメモリ８に記憶されているか否かをチェックする。このチェックでは、まず、タグメモリ８の記憶内容とテーブルアドレスとを比較し、双方が等しいときには、タグメモリ８の記憶内容に対応するキャッシュメモリ４内のテーブルデータを読み出して出力する（ステップＳ７）。ステップＳ１０では、読み出されたテーブルデータに基づいて、ＲＯＭコントローラ９でＲＯＭアドレスを計算し、画像データＲＯＭ１０から画像を読み出し、例えば、キャラクタサイズが１６ピクセル×１６ラインの場合に１６ピクセル×１ラインをラインバッファ１１に出力する。
【００１２】
一方、タグメモリ８の記憶内容とテーブルアドレスとが異なるときには、キャッシュメモリ４の各アドレスを検索し、空きアドレスに対応するタグメモリ８にテーブルアドレスを記憶し（ステップＳ８）、このテーブルアドレスに対応するテーブルデータを外部メモリ１から読み出す（ステップＳ９）。
【００１３】
ステップＳ１１では、Ｈカウンタに一定値１６を加算したときの値が１６０未満で、画面の最大横サイズに達していなければ、ステップＳ５に戻ってテーブルアドレス演算から繰り返す。一方、Ｈカウンタの値が１６０以上で、最大横サイズに達した場合には、Ｈカウンタを初期化し、Ｖカウンタに１を加算する。次いで、Ｖカウンタの値が６４未満で、画面の最大縦サイズに達していなければ、ステップＳ３に戻ってタグメモリ８の初期化から繰り返す。一方、最大縦サイズ以上になった場合には、１フレームの画像表示を終了する。
【００１４】
【発明が解決しようとする課題】
ところで、上記従来の画像処理装置では、図２１のように同じテーブルアドレスが繰り返し用いられる場合には効率良くキャッシュヒットするので、処理効率が上がる。しかし、図２２に示すように、異なるテーブルアドレスが連続し、同じテーブルアドレスが繰り返し使用されないような場合には、キャッシュヒットの効率が大幅に低下する。また、１ラインの処理が終了する毎にタグメモリ８を初期化し、キャッシュメモリ４にテーブルデータを新たに読み込むので、１ライン毎の横方向にはキャッシュ効果が期待できても、縦方向には期待できないという問題があった。
【００１５】
本発明は、上記に鑑み、異なるテーブルデータが続けて読み出されるような画像処理においても効率の良いキャッシュヒットが期待でき、画像処理の一層の高速化が図れる画像処理装置を提供することを目的とする。
【００１６】
本発明は更に、上記目的を達成した上で、画面の縦方向においても効率の良いキャッシュヒットが期待できる画像処理装置を提供することを目的とする。
【００１７】
【課題を解決するための手段】
複数のテーブルデータが記憶された主メモリと、
前記主メモリから読み出されたテーブルデータを記憶するキャッシュメモリと、
所要のテーブルデータの読出し時に前記キャッシュメモリの記憶データにヒットしないときには、前記所要のテーブルデータを前記主メモリから読み出して前記キャッシュメモリに記憶すると共に、前記所要のテーブルデータにアドレスが後続する所定数のテーブルデータを前記主メモリから読み出して、前記キャッシュメモリに候補データとして記憶する制御手段とを備え、
前記制御手段が、前記キャッシュアドレスに空きがないときには、前記候補データに前記所要のテーブルデータを上書きする上書き手段を有することを特徴とする。
【００１８】
本発明の画像処理装置では、異なるテーブルデータが続けて読み出されるような画像処理においても、ミスヒットする度に主メモリから、ヒットしたテーブルデータに後続する候補データを読み出してキャッシュメモリに記憶するので、その後引き続いて候補データが読み出される場合にはこの候補データが利用でき、キャッシュヒットの確率が高まる。この結果、主メモリに対するアクセス回数が減少し、画像処理がより高速化する。
【００１９】
ここで、本発明の画像処理装置では、所要のテーブルデータが前記キャッシュメモリのキャッシュアドレスの昇順又は降順に記憶され、前記候補データがキャッシュアドレスの降順又は昇順に記憶されることが好ましい。これにより、所要のテーブルデータと候補データとの記憶処理が円滑になる。
【００２０】
また、前記制御手段が、前記キャッシュメモリに記憶されたテーブルデータの有効／無効を示す有効データフラグを備え、所要のテーブルデータの読出し時にヒットしたときには、該ヒットしたテーブルデータを前記キャッシュメモリから読み出すと共に該読み出したテーブルデータに対応するキャッシュアドレスに前記有効データフラグをセットすることも好ましい態様である。
【００２１】
この場合、タグメモリの初期化に代えて、有効データフラグをライン単位で初期化するので、以前の処理ラインに関するキャッシュメモリの記憶内容をそのまま保持することができる。このため、次のラインに処理が進んでも、所要のテーブルデータのテーブルアドレスを前回の記憶内容と比較することにより、縦方向でのキャッシュ効果も期待できるようになる。また、キャッシュメモリに空きが無い場合でも、有効フラグがセットされていないキャッシュアドレスから優先的にテーブルデータを上書きできるので、キャッシュデータの特別な破棄アルゴリズムが不要になる。
【００２２】
更に、前記制御手段が、１ライン分のテーブルデータの処理毎に、セットされた前記有効データフラグを初期化することが好ましい。これにより、１ラインの処理において書き換え可能なキャッシュアドレスを認識することができる。
【００２３】
更に、前記制御手段は、前記キャッシュメモリのキャッシュアドレスに前記候補データが書き込まれたか否かを示す候補データフラグを備えることが好ましい。この場合、連続的に読み出されるテーブルデータをどのキャッシュアドレスに記憶するかを、候補データフラグのセット／リセットをみることによって判断することができ、候補データフラグがセットされていないキャッシュアドレスに候補データを円滑に記憶することができる。
【００２４】
また、前記制御手段が、１ライン分のテーブルデータの処理毎に、セットされた前記候補データフラグを初期化することも好ましい態様である。これにより、例えば、全てのキャッシュアドレスに候補データフラグがセットされるときには候補データを無効とする制御の場合、次のラインの処理時に、候補データフラグが初期化されたキャッシュアドレスに候補データが円滑に記憶できる。
【００２５】
【発明の実施の形態】
以下、図面を参照し、本発明の実施形態例に基づいて本発明を更に詳細に説明する。図１は、本発明の一実施形態例における画像処理装置の概略構成を示すブロック図である。画像処理装置１５は、データキャッシュ回路１４と、データキャッシュ回路１４に接続された外部メモリ１、テーブルアドレス演算回路２、ROMコントローラ９、画像データROM１０及びラインバッファ１１とを有する。
【００２６】
データキャッシュ回路１４は、キャッシュコントローラ３と、テーブルデータキャッシュメモリ４と、空きアドレス保持メモリ５と、有効データフラグ６と、候補データフラグ７と、タグメモリ８とを有する。
【００２７】
外部メモリ１には、画像データROM１０のアドレスや、反転、重ね合わせ方法などの装飾情報を含む多数のテーブルデータが記憶されている。外部メモリ１は、テーブルアドレス演算回路２によって演算された水平スクロール、垂直スクロール、分割スクロール処理を行った結果のテーブルアドレスと、そのテーブルアドレスに対応するテーブルデータとをキャッシュコントローラ３に出力する。
【００２８】
テーブルアドレス演算回路２は、外部メモリ１内のテーブルアドレスを演算して出力する機能を有し、複数のキャラクタテーブルの組み合わせや、水平／垂直スクロール、分割スクロールなどの処理後のテーブルアドレスを演算して出力する。
【００２９】
キャッシュコントローラ３は、有効データフラグ６、候補データフラグ７の内容に従ってテーブルアドレスをタグメモリ８に記憶し、或いは、テーブルデータをキャッシュメモリ４に記憶する。この場合に、タグメモリ８及びキャッシュメモリ４の記憶先の空きアドレスを、データの種類に基づいて、アドレスを降順又は昇順に検索して、空きアドレス保持メモリ５に記憶する。また、キャッシュコントローラ３は、キャッシュのヒット又はミスヒットに従って、キャッシュコントローラ３を通過する外部メモリ１からのテーブルデータ、又は、キャッシュメモリ４からのテーブルデータを選択し、ＲＯＭコントローラ９に出力する。
【００３０】
テーブルデータキャッシュメモリ４は、ＳＤＲＡＭ等で構成され、外部メモリ１から読み込んだテーブルデータを記憶する多数のテーブルアドレスを有する。空きアドレス保持メモリ５は、タグメモリ８のどのアドレスが空いているかを記憶する。保管された空きアドレスは、連続的に読み出されたテーブルデータ（候補データ）のテーブルアドレスをタグメモリ８に記憶する際に使用される。
【００３１】
有効データフラグ６は、キャッシュメモリ４内で空いているキャッシュアドレスの有無を表すもので、キャッシュアドレス数に対応するbit数で構成される。例えば、キャッシュメモリ４が１６bit×２０wordであれば、有効データフラグ６は、キャッシュアドレス数２０に対応して２０bitとなる。
【００３２】
候補データフラグ７は、外部メモリ１から連続的に読み出されたテーブルデータが、キャッシュメモリ４のキャッシュアドレスに候補データとして書き込まれたか否かを示す。タグメモリ８は、テーブルデータキャッシュメモリ４に記憶されたテーブルデータに対応するテーブルアドレスを記憶する。
【００３３】
ROMコントローラ９は、テーブルデータに付されたキャラクタコードに基づいて、対応する画像データを画像データROM１０から読み出し、ラインバッファ１１に出力する。画像データROM１０は、背景の基本となる、或る単位の大きさ（例えば、１６ピクセル×１６ライン）の画像データを記憶している。ラインバッファ１１は、H-Syncに同期して表示する１ライン分の画像データを記憶するメモリである。
【００３４】
図２は、上記実施形態例の画像処理装置１５の全体の作動を示すフローチャート、図３は、画面表示途中の処理ラインを模式的に示す図、図４は、図３の処理ライン３０３を全て終了したときのキャッシュメモリの記憶内容等を示す対応表である。
【００３５】
図３に示す例では、現在処理している処理ライン３０３では表示画面の横方向にテーブルデータ１、０、０、５、８が連続し、次の処理ライン３０４では横方向にテーブルデータ１、３、０、５、８が連続している。処理ライン３０３と３０４との間のテーブルデータの縦方向でのズレは、垂直スクロールしてずれた状況を示す。また、図３の処理の開始時には、タグメモリ８及びキャッシュメモリ４の記憶内容は全て空として考える。
【００３６】
まず、１ラインの処理に先立って、図２のステップＳ１５でＨ／Ｖカウンタを初期化し、ステップＳ１６でタグメモリ８を初期化し、ステップＳ１７でV-Syncの入力を待つ。V-Syncの入力後、ステップＳ１８では、有効データフラグ６と候補データフラグ７とを初期化する。
【００３７】
次いで、ステップＳ１９でH-Syncの入力を待ち、H-Syncが入力されれば、ステップＳ２０で、テーブルデータ“１”（図３）に対応するテーブルアドレス“１”をテーブルアドレス演算回路２（図１）で演算し、出力する。ステップＳ２１では、空きアドレス保持メモリ５をキャッシュコントローラ３でチェックし、演算されたテーブルアドレス“１”がタグメモリ８に記憶されているか否かをみる。この場合、タグメモリ８の記憶内容は全て空なので、ステップＳ２３に進み、バースト読出し期間を開始する。このバースト読出しでは、目的とするテーブルデータを含む最大４ワード（４テーブルデータ）を一度に読み出す。
【００３８】
まず、ステップＳ２４で、連続読出しを行う４ワードの内の最初の１ワード、つまり、目的とするテーブルデータが“１”であるか否かを判定する。その結果、テーブルデータ“１”であれば、ステップＳ２５で、テーブルデータ“１”を外部メモリ１から読み出し、ステップＳ２６で、有効データフラグ６がセットされていないキャッシュメモリ４の空きアドレスを昇順に（図４の“０”から）検索する。
【００３９】
更に、ステップＳ２７で、有効データフラグ６がセットされていない最小キャッシュアドレス“０”に有効データフラグ６及び候補データフラグ７をセットし、テーブルアドレス“１”をタグメモリ８に記憶し、このテーブルアドレス“１”に対応して外部メモリ１から読み出したテーブルデータ“１”をROMコントローラ９に出力すると共に、キャッシュメモリ４のキャッシュアドレス“０”に記憶（複写）する。更に、ステップＳ３３で、バースト読出し期間を終了するか否かを判定する。この場合、テーブルデータ“１”がキャッシュヒットしていないので、残り３ワードの読出しのため、ステップＳ２４に戻ってバースト読出し期間を続行する。
【００４０】
ステップＳ２４で、今度は最初の１ワードではないので、ステップＳ２８に進み、テーブルデータ“１”に連続するテーブルデータ“２”、“３”、“４”を外部メモリ１から連続して読み出す。次いで、ステップＳ４０で、読み出したテーブルデータ“２”〜“４”は既に読み出されているか否かを判定する。この場合、テーブルデータ“２”〜“４”は今回初めて読み出されたので、ステップＳ２９に進み、候補データフラグ７がセットされていないキャッシュメモリ４の空きアドレスを降順に（図４の“９”から）検索する。
【００４１】
現在、キャッシュアドレス“０”以外ではステップＳ１８で有効データフラグ６及び候補データフラグ７の双方が初期化されたままなので、キャッシュアドレス“９”、“８”、“７”にテーブルデータ“２”、“３”、“４”を順次に記憶し、対応するタグメモリ８にテーブルアドレス“２”、“３”、“４”を順次に記憶し、キャッシュアドレス“９”、“８、”、“７”に候補データフラグ７のみをセットしておく。但し、この記憶は、候補データフラグ７がセットされていないキャッシュアドレスが存在する場合にのみ行われ、全てのキャッシュアドレスに候補データフラグ７がセットされている場合には、読み込んだテーブルデータはキャッシュメモリ４に書き込まずに無効とする（ステップＳ３２）。更に、ステップＳ３３でバースト読出し期間を終了し、ステップＳ３５に進む。
【００４２】
ステップＳ３５では、キャッシュメモリ４から読み出したテーブルデータ“１”に基づいて、ROMコントローラ９でROMアドレスを計算し、画像データROM１０から画像データ（例えば、１６ピクセル×１ライン）を読み出しラインバッファ１１に出力する。更に、ステップＳ３６で、１６ピクセル×１６ラインの場合にはＨカウンタに１６を加算し、ステップＳ３７で、Ｈカウンタの値を１６０と比較する。この場合、Ｈカウンタの値は１６０よりも小さく、画面の横サイズに達していないので、ステップＳ２０に戻ってテーブルアドレスの演算処理から繰り返す。
【００４３】
ステップＳ２０では、今度は、テーブルデータ“０”（図３）に対応するテーブルアドレス“０”を演算して出力する。ステップＳ２１では、演算されたテーブルアドレス“０”がタグメモリ８に記憶されているか否かをチェックする。この場合、タグメモリ８にテーブルアドレス“０”は記憶されていないので、ステップＳ２３に進み、バースト読出し期間を開始する。
【００４４】
上記と同様に、ステップＳ２４〜Ｓ２７で、有効データフラグ６がセットされない最小キャッシュアドレス“１”に有効データフラグ６及び候補データフラグ７をセットし、テーブルアドレス“０”をタグメモリ８に記憶し、テーブルデータ“０”をキャッシュアドレス“１”に記憶する。更に、ステップＳ３３で、バースト読出し期間を終了するか否かを判定するが、この場合も上記と同様に、テーブルデータ“０”がミスヒットしたので、ステップＳ２４に戻ってバースト読出し期間を続行する。
【００４５】
ステップＳ２４の判定に従い、ステップＳ２８で、今回のテーブルデータ“０”に続くテーブルデータ“１”、“２”、“３”を外部メモリ１から連続して読み出す。次いで、ステップＳ４０で、読み出したテーブルデータ“１”〜“３”は既に読み出されているか否かを判定するが、この場合、既に読み出されているので、ステップＳ３２で、テーブルデータ“１”〜“３”を無効にする。更に、ステップＳ３３でバースト読出し期間を終了し、ステップＳ３５に進む。
【００４６】
ステップＳ３５では、読み出したテーブルデータ“０”に基づいてROMアドレスを計算し、画像データROM１０から画像データを読み出しラインバッファ１１に出力する。更に、ステップＳ３６で、Ｈカウンタに１６を加算し、ステップＳ３７で、Ｈカウンタの値を１６０と比較する。この場合、Ｈカウンタの値は１６０より小さく、画面の横サイズに達していないので、ステップＳ２０に戻ってテーブルアドレスの演算処理から繰り返す。
【００４７】
ステップＳ２０では、今度も、テーブルデータ“０”（図３）に対応するテーブルアドレス“０”を演算して出力する。ステップＳ２１では、演算されたテーブルアドレス“０”がタグメモリ８に記憶されているか否かをチェックするが、この場合、タグメモリ８にテーブルアドレス“０”が既に記憶されているので、ステップＳ２２に進み、キャッシュアドレス“１”の有効データフラグ６を更新する。
【００４８】
更に、ステップＳ３４で、キャッシュメモリ４からテーブルデータ“０”を読み出し、ステップＳ３５で、テーブルデータ“０”に基づいてROMアドレスを計算し、画像データROM１０から画像データを読み出しラインバッファ１１に出力する。更に、ステップＳ３６で、Ｈカウンタに１６を加算し、ステップＳ３７で、Ｈカウンタの値を１６０と比較する。この場合、Ｈカウンタの値は１６０より小さく、画面の横サイズに達していないので、ステップＳ２０に戻ってテーブルアドレスの演算処理から繰り返す。
【００４９】
ステップＳ２０では、今度は、テーブルデータ“５”（図３）に対応するテーブルアドレス“５”を演算して出力する。ステップＳ２１では、演算されたテーブルアドレス“５”がタグメモリ８に記憶されているか否かをチェックする。この場合、タグメモリ８にテーブルアドレス“５”が記憶されていないので、ステップＳ２３に進み、バースト読出し期間を開始する。
【００５０】
上記と同様に、ステップＳ２４〜Ｓ２７では、有効データフラグ６がセットされない最小キャッシュアドレス“２”に有効データフラグ６及び候補データフラグ７をセットし、テーブルアドレス“５”をタグメモリ８に記憶し、テーブルデータ“５”をキャッシュアドレス“２”に記憶する。更に、ステップＳ３３で、バースト読出し期間を終了するか否かを判定するが、この場合も上記と同様に、テーブルデータ“５”がミスヒットしたので、ステップＳ２４に戻ってバースト読出し期間を続行する。
【００５１】
ステップＳ２４の判定に従い、ステップＳ２８で、今回のテーブルデータ“５”に続くテーブルデータ“６”、“７”、“８”を外部メモリ１から連続して読み出す。次いで、ステップＳ４０で、読み出したテーブルデータ“６”〜“８”は既に読み出されているか否かを判定するが、この場合、まだ読み出されていないので、ステップＳ２９に進み、候補データフラグ７がセットされていないキャッシュメモリ４の空きアドレスを降順に（図４の“６”から）検索する。この結果、キャッシュアドレス“６”、“５”、“４”にテーブルデータ“６”、“７”、“８”を順次に記憶し、対応するタグメモリ８にテーブルアドレス“６”、“７”、“８”を順次に記憶し、キャッシュアドレス“６”、“５、”、“４”に候補データフラグ７のみをセットしておく。更に、ステップＳ３３でバースト読出し期間を終了し、ステップＳ３５に進む。
【００５２】
ステップＳ３５では、読み出したテーブルデータ“５”に基づいてROMアドレスを計算し、画像データROM１０から画像データを読み出しラインバッファ１１に出力する。更に、ステップＳ３６で、Ｈカウンタに１６を加算し、ステップＳ３７で、Ｈカウンタの値を１６０と比較する。この場合、Ｈカウンタの値は１６０より小さく、画面の横サイズに達していないので、ステップＳ２０に戻ってテーブルアドレスの演算処理から繰り返す。
【００５３】
ステップＳ２０では、今度は、テーブルデータ“８”（図３）に対応するテーブルアドレス“８”を演算して出力する。ステップＳ２１では、演算されたテーブルアドレス“８”がタグメモリ８に記憶されているか否かをチェックする。この場合、タグメモリ８にテーブルアドレス“８”が記憶されているので、ステップＳ２２に進み、キャッシュアドレス“４”に有効データフラグ６をセットする。
【００５４】
更に、ステップＳ３４で、キャッシュメモリ４からテーブルデータ“８”を読み出し、ステップＳ３５で、テーブルデータ“０”に基づいてROMアドレスを計算し、画像データROM１０から画像データを読み出しラインバッファ１１に出力する。ステップＳ３６で、Ｈカウンタに１６を加算し、ステップＳ３７で、Ｈカウンタの値を１６０と比較し、Ｈカウンタの値が１６０以上であれば、画面の横サイズに達したとしてステップＳ３８に進んで１ラインの処理を終了し、Ｖカウンタに１を加算する。更に、ステップＳ３９で、Ｖカウンタが６４以上になって１フレームの処理が終了するまで、上記と同様の処理を繰り返す。
【００５５】
ここで、本画像処理装置では、従来のように１ライン毎にタグメモリ８及びキャッシュメモリ４の記憶内容を初期化するのではなく、図３に示す次のライン３０４の処理に先立って有効データフラグ６及び候補データフラグ７のみを初期化する。次のライン３０４におけるテーブルデータの配列は、図３に示すように“１”、“３”、“０”、“５”、“８”となるが、これらのテーブルデータ及びその対応するテーブルアドレスが全てタグメモリ８及びキャッシュメモリ４に既に記憶されているので、次のライン３０４では、所要の全テーブルデータがキャッシュヒットし、画像処理が大幅に高速化することになる。
【００５６】
次に、本画像処理装置による横方向でのキャッシュ効果でアクセス回数が減少する具体例を挙げる。ここでは、空きアドレス保持メモリ５が４アドレス分（４バースト分）あるとし、１キャラクタのサイズを１６ピクセル×１６ラインとし、出力画像のサイズを１６０ピクセル×８０ラインとする。また、外部メモリ１の連続読込みを最大４ワードとし、キャッシュメモリ４のサイズを１３ワードとする。この１３ワードは、１６０ピクセル÷１６ピクセル＝１０であるので、この１０に、（４バースト−１）を加えた数である。
【００５７】
この場合、キャラクタテーブルを表す図５に示すように、テーブルアドレスが00〜0FからなるキャラクタテーブルＣ１と、10〜1FからなるキャラクタテーブルＣ２と、20〜2FからなるキャラクタテーブルＣ３と、30〜3FからなるキャラクタテーブルＣ４と、40〜4FからなるキャラクタテーブルＣ５とがあるとする。また、キャラクタテーブルＣ１〜Ｃ５から読み出したテーブルデータを重ね合わせた出力例を図６に示し、本画像処理時のキャッシュメモリ４の記憶内容、有効データフラグ６及び候補データフラグ７の変化を順を追って図７〜図１５に示す。同図ではキャッシュアドレスが“０”〜“１２”あるものとする。
【００５８】
図６に示すように、最初の１ラインでは、“00”、“01”、“02”、“03”、“10”、“11”、“20”、“30”、“31”、“40”のテーブルデータを連続して読み出して画像出力する。この実現のため、まず、V-Syncに同期してＨ／Ｖカウンタ及びタグメモリ８を初期化し、H-Syncに同期して有効データフラグ６及び候補データフラグ７を初期化する。更に、図７に示すように、キャラクタテーブルＣ１の最初のテーブルアドレス“00”（図５）に対応するテーブルデータ“00”を外部メモリ１から読み出して出力すると共に、キャッシュメモリ４のキャッシュアドレス“０”にテーブルアドレス“00”を記憶する。同時に、テーブルアドレス“00”に後続する“01”、“02”、“03”（図５）を候補データとして連続して読み込み、図７のキャッシュアドレス“12”、“11”、“10”に順次に記憶する。この際に、キャッシュアドレス“０”には有効データフラグ６及び候補データフラグ７がセットされ（１が立てられ）、キャッシュアドレス“12”〜“10”には候補データフラグ７のみがセットされる。
【００５９】
次いで、キャラクタテーブルＣ１のテーブルアドレス“01”（図５）に対応するテーブルデータ“01”を読み出して出力するが、この場合、図７に示すように、テーブルデータ“01”はキャッシュメモリ４に既に存在するためキャッシュヒットする。従って、図８に示すように、キャッシュアドレス“12”に有効データフラグ６をセットし、テーブルデータ“01”をキャッシュメモリ４から読み出す。
【００６０】
更に、キャラクタテーブルＣ１のテーブルアドレス“02”、“03”（図５）に対応するテーブルデータ“02”、“03”を順次に読み出すが、この場合、図８に示すように、テーブルデータ“02”、“03”はキャッシュメモリ４に既に存在するためキャッシュヒットする。従って、図９に示すように、キャッシュアドレス“11”、“10”の有効データフラグ６を夫々セットし、テーブルデータ“02”、“03”をキャッシュメモリ４から読み出す。
【００６１】
次いで、キャラクタテーブルＣ２のテーブルアドレス“10”（図５）に対応するテーブルデータ“10”を読み出すが、この場合、図９に示すように、テーブルデータ“10”はキャッシュメモリ４に存在しないためミスヒットする。従って、図１０に示すように、キャラクタテーブルＣ２の最初のテーブルアドレス“10”（図５）に対応するテーブルデータ“10”を外部メモリ１から読み出して出力すると共に、キャッシュアドレス“１”にテーブルアドレス“10”を記憶する。同時に、テーブルアドレス“10”に後続する“11”、“12”、“13”を連続して読み込み、キャッシュアドレス“9”、“8”、“7”に候補データとして順次に記憶する。この際に、キャッシュアドレス“１”には有効データフラグ６及び候補データフラグ７がセットされ、キャッシュアドレス“9”〜“7”には候補データフラグ７のみがセットされる。
【００６２】
引き続き、キャラクタテーブルＣ２のテーブルアドレス“11”（図５）に対応するテーブルデータ“11”を読み出して出力するが、この場合、図１１に示すように、テーブルデータ“11”はキャッシュメモリ４に既に存在するためキャッシュヒットする。従って、図１１に示すように、キャッシュアドレス“9”に有効データフラグ６をセットし、テーブルデータ“11”をキャッシュメモリ４から読み出す。
【００６３】
次いで、キャラクタテーブルＣ３のテーブルアドレス“20”（図５）に対応するテーブルデータ“20”を読み出すが、この場合、図１１に示すように、テーブルデータ“20”はキャッシュメモリ４に存在しないためミスヒットする。従って、図１２に示すように、キャラクタテーブルＣ３の最初のテーブルアドレス“20”（図５）に対応するテーブルデータ“20”を外部メモリ１から読み出して出力すると共に、キャッシュアドレス“２”にテーブルアドレス“20”を記憶する。これと同時に、テーブルアドレス“20”に後続する“21”、“22”、“23”を連続して読み込み、キャッシュアドレス“6”、“5”、“4”に候補データとして順次に記憶する。この際に、キャッシュアドレス“２”には有効データフラグ６及び候補データフラグ７がセットされ、キャッシュアドレス“6”〜“4”には候補データフラグ７のみがセットされる。
【００６４】
更に、キャラクタテーブルＣ４のテーブルアドレス“30”（図５）に対応するテーブルデータ“30”を読み出すが、この場合、図１２に示すように、テーブルデータ“30”はキャッシュメモリ４に存在しないためミスヒットする。従って、図１３に示すように、キャラクタテーブルＣ４の最初のテーブルアドレス“30”（図５）に対応するテーブルデータ“30”を外部メモリ１から読み出して出力すると共に、キャッシュアドレス“３”にテーブルアドレス“30”を記憶する。これと同時に、テーブルデータ“30”に後続するテーブルデータ“31”、“32”、“33”を連続して読み込むが、キャッシュアドレスに空きが無いのでこれらは無効とする。
【００６５】
次いで、キャラクタテーブルＣ４のテーブルアドレス“31”（図５）に対応するテーブルデータ“31”を読み出すが、この場合、図１３に示すように、テーブルデータ“31”はキャッシュメモリ４に存在しないためミスヒットする。従って、図１４に示すように、キャラクタテーブルＣ４のテーブルアドレス“31”（図５）に対応するテーブルデータ“31”を外部メモリ１から読み出して出力する。更に、テーブルデータ“31”に後続するテーブルデータ“32”、“33”、“34”を連続して読み込むが、キャッシュアドレスに空きが無いので、テーブルデータ“32”、“33”、“34”は無効とし、テーブルデータ“31”のみを、有効データフラグ６に１が立っていないキャッシュアドレス“４”に記憶する。
【００６６】
次いで、キャラクタテーブルＣ５のテーブルアドレス“40”（図５）に対応するテーブルデータ“40”を読み出すが、この場合、図１４に示すように、テーブルデータ“40”はキャッシュメモリ４内に存在しないためミスヒットする。従って、キャラクタテーブルＣ５のテーブルアドレス“40”（図５）に対応するテーブルデータ“40”を外部メモリ１から読み出して出力すると共に、テーブルデータ“40”に後続するテーブルデータ“41”、“42”、“43”を連続して読み込むが、図１４に示すように、キャッシュアドレスに空きが無いので、テーブルデータ“41”、“42”、“43”を無効とし、テーブルデータ“40”のみを、有効データフラグ６に１が立っていないキャッシュアドレス“５”に、図１５のように記憶する。
【００６７】
以上で、１ラインに対する処理が終了するので、H-Syncに同期して有効データフラグ６及び候補データフラグ７を初期化し、上述の処理を次のラインに対して繰り返す。通常、図６の１ラインのテーブルデータ“00”〜“40”に関し１キャラクタ毎に外部メモリ１にアクセスする場合には１０回のアクセスが必要になるが、本画像処理装置によると、上述のように、６回のアクセスで足りるので、６／１０の性能向上がみられる。
【００６８】
また、続く１ラインの処理に移行する場合、有効データフラグ６及び候補データフラグ７を初期化するが、タグメモリ８及びキャッシュメモリ４の記憶内容は初期化しない。このため、キャッシュアドレスに記憶されたテーブルデータにキャッシュヒットすれば、外部メモリ１にアクセスせずに読み出すことができる。或いは、キャッシュヒットしなくても上記例と同様の動作で、キャッシュメモリ４がテーブルデータで埋まっていくことになる。
【００６９】
次に、“00 01 02 03 04 05 06 07 08 09”のように連続するテーブルデータの場合のキャッシュ動作について説明する。図１６〜図１９は、このキャッシュ動作時のキャッシュメモリ４の記憶内容、有効データフラグ６及び候補データフラグ７の変化を順を追って示す表である。
【００７０】
まず、先の例と同様に、タグメモリ８（つまりキャッシュメモリ４）の初期化、V-Syncの入力、有効データフラグ及び候補データフラグ６、７の初期化に続いてH-Syncを入力した後に、図１６に示すように、テーブルデータ“00”を外部メモリ１から読み込んでキャッシュアドレス“０”に記憶する。この場合、キャッシュヒットしていないので、“00”の後続するテーブルデータ“01”、“02”、“03”を読み込んでキャッシュアドレス“12”〜“10”に候補データとして順次に記憶すると共に、候補データフラグ７をセットする。
【００７１】
次に、テーブルデータ“01”、“02”、“03”がキャッシュヒットするので、図１７に示すように、夫々が記憶されたキャッシュアドレスに対応する有効データフラグ６をセットする。
【００７２】
続くテーブルデータ“04”はミスヒットするので、外部メモリ１から読み出し、図１７に示すように、キャッシュアドレス“１”に記憶すると共に、後続のテーブルデータ“05”、“06”、“07”を読み込んで候補データとしてキャッシュアドレス“９”、“８”、“７”に夫々記憶する。
【００７３】
次いで、テーブルデータ“05”、“06”、“07”がキャッシュヒットするので、図１８に示すように、夫々が記憶されたキャッシュアドレスに対応する有効データフラグ６をセットする。
【００７４】
続くテーブルデータ“08”はミスヒットするので、外部メモリ１から読み出し、図１８に示すように、キャッシュアドレス“２”に記憶すると共に、後続のテーブルデータ“09”、“0A”、“0B”を読み込んで候補データとしてキャッシュアドレス“６”、“５”、“４”に夫々記憶する。
【００７５】
次いで、テーブルデータ“09”がキャッシュヒットするので、図１９に示すように、テーブルデータ“09”が記憶されたキャッシュアドレスに対応する有効データフラグ６をセットする。これにより、１ラインの画像処理が終了する。更に、H-Syncに同期して有効データフラグ６及び候補データフラグ７を初期化し、最初の処理に戻る。
【００７６】
以上のように、連続するテーブルデータ“00 01 02 03 04 05 06 07 08 09”の場合には、外部メモリ１に対する３回のアクセスのみで１ライン分のテーブルデータの読み込みが実現する。従って、１キャラクタ毎にアクセスする場合に比して、３／１０の読出し回数で足り、読出し性能の向上がみられる。
【００７７】
本画像処理装置では、背景画像には連続したテーブルアドレスを使用することが多いことから、外部メモリ１から候補データとして先読みすることにより、外部メモリ１に対するアクセス回数を減少させることができる。これにより、キャッシュヒットの効率が向上し、メモリアクセスの待ち時間が減少し、結果的に描画性能が向上することになる。
【００７８】
また、本画像処理装置では、タグメモリ１ではなく有効データフラグ６及び候補データフラグを１ライン毎に初期化するので、次の１ラインの処理に進んでも以前のラインに関するタグメモリ８及びキャッシュメモリ４の記憶内容が残っているので、横方向と同様に縦方向においてもキャッシュヒットが期待できる。具体的には、１６ピクセル×１６ラインを１キャラクタとした場合に、従来では１６回のアクセスを要していたのに対し、本実施形態例では１回のアクセスで済むので、単純に１６倍の性能向上となる。
【００７９】
以上、本発明をその好適な実施形態例に基づいて説明したが、本発明の画像処理装置は、上記実施形態例の構成にのみ限定されるものではなく、上記実施形態例の構成から種々の修正及び変更を施した画像処理装置も、本発明の範囲に含まれる。
【００８０】
【発明の効果】
以上説明したように、本発明の画像処理装置によると、異なるテーブルデータが続けて読み出されるような画像処理においても効率の良いキャッシュヒットが期待でき、画像処理の一層の高速化を図ることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態例における画像処理装置の概略構成を示すブロック図である。
【図２】本実施形態例の画像処理装置の全体の作動を示すフローチャートである。
【図３】本実施形態例における処理ラインを模式的に示す図である。
【図４】本実施形態例におけるフラグ、タグメモリ、キャッシュメモリの対応表を示す図である。
【図５】本実施形態例におけるキャラクタテーブルの具体例を模式的に表す図である。
【図６】異なるテーブルデータを重ね合わせたラインの具体例を模式的に表す図である。
【図７】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図８】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図９】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１０】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１１】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１２】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１３】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１４】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１５】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１６】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１７】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１８】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図１９】本実施形態例におけるキャッシュメモリの記憶内容、有効及び候補データフラグの変化を示す表である。
【図２０】画像処理における画像構成を模式的に示す図である。
【図２１】同一アドレスデータが繰り返される画像例を表す図である。
【図２２】同一アドレスデータが繰り返されない画像例を表す図である。
【図２３】ラインスクロールによる画像変化を模式的に示す図である。
【図２４】分割スクロールによる画像変化を模式的に示す図である。
【図２５】従来の画像処理装置の概略構成を示すブロック図である。
【図２６】図２５の画像処理装置の作動を示すフローチャートである。
【符号の説明】
１：外部メモリ（主メモリ）
２：テーブルアドレス演算回路
３：キャッシュコントローラ
４：テーブルデータキャッシュメモリ
５：空きアドレス保持メモリ
６：有効データフラグ
７：候補データフラグ
８：タグメモリ
９：ROMコントローラ
１０：画像データROM
１１：ラインバッファ１１
１４：データキャッシュ回路
１５：画像処理装置
6+
【図１】
0003866455.tif 000002
【図２】
0003866455.tif 000003
【図３】
0003866455.tif 000004
【図４】
0003866455.tif 000005
【図５】
0003866455.tif 000006
【図６】
0003866455.tif 000007
【図７】
0003866455.tif 000008
【図８】
0003866455.tif 000009
【図９】
0003866455.tif 000010
【図１０】
0003866455.tif 000011
【図１１】
0003866455.tif 000012
【図１２】
0003866455.tif 000013
【図１３】
0003866455.tif 000014
【図１４】
0003866455.tif 000015
【図１５】
0003866455.tif 000016
【図１６】
0003866455.tif 000017
【図１７】
0003866455.tif 000018
【図１８】
0003866455.tif 000019
【図１９】
0003866455.tif 000020
【図２０】
0003866455.tif 000021
【図２１】
0003866455.tif 000022
【図２２】
0003866455.tif 000023
【図２３】
0003866455.tif 000024
【図２４】
0003866455.tif 000025
【図２５】
0003866455.tif 000026
【図２６】
0003866455.tif 000027