(57)【要約】【課題】ＲＭＷを行う場合において、高速処理を可能とすると共に、本来の意図とは異なる論理演算が行われることを防ぐことを可能とする。【解決手段】生成部が、少なくとも描画パターンと、描画パターンのメモリ上のアドレスを示す描画アドレスと、描画パターンに施す論理演算を示す情報とを含む描画情報を生成する。生成部で生成された描画情報に含まれる論理演算を示す情報がメモリ上でのリードモディファイライトを用いる論理演算を示している場合に、描画情報に含まれる描画アドレスと、描画情報を保持する複数の保持部のうち少なくとも１に保持される描画情報に含まれる描画アドレスとが一致するか否かを判定する。一致していると判定された場合に、生成部で生成された描画情報に基づくメモリに対するリードモディファイライトによるリード処理を一時的に停止する。【選択図】図９
2014060579.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも描画パターンと、該描画パターンのメモリ上のアドレスを示す描画アドレスと、該描画パターンに施す論理演算を示す情報とを含む描画情報を生成する生成部と、
前記描画情報を保持する複数の保持部と、
前記生成部で生成された描画情報に含まれる論理演算を示す情報が前記メモリ上でのリードモディファイライトを用いる論理演算を示している場合に、該描画情報に含まれる描画アドレスと、前記複数の保持部のうち少なくとも１に保持される描画情報に含まれる描画アドレスとが一致するか否かを判定する判定部と、
前記判定部により一致していると判定された場合に、前記生成部で生成された描画情報に基づく前記メモリに対する前記リードモディファイライトによるリード処理を一時的に停止する制御部と
を有する
ことを特徴とする画像処理装置。
【請求項２】
前記制御部は、
前記複数の保持部に保持される前記描画情報に基づく前記メモリに対するリード要求を、リード応答の有無に関わらず順次実行する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記制御部は、
前記判定部により一致していると判定された場合に、前記メモリに対する前記リードモディファイライトによるリード処理とライト処理とをシリアルに実行する
ことを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記制御部は、
前記情報が前記メモリに対するライトのみを用いる論理演算を示し、且つ、前記判定部により一致していないと判定された場合に、前記メモリに対するライト処理を優先して実行する
ことを特徴とする請求項１乃至請求項３の何れか１項に記載の画像処理装置。
【請求項５】
前記論理演算を示す情報に従い描画パターンに対して論理演算を施す演算部をさらに有し、
前記演算部は、
前記生成部で生成された描画情報に含まれる論理演算を示す情報が前記メモリ上でのリードモディファイライトを用いる論理演算を示している場合には、前記複数の保持部のうち１に保持される描画情報に従い論理演算を実行し、
該情報が前記メモリに対するライトのみを用いる論理演算を示している場合には、前記生成部で生成された描画情報に従い論理演算を実行し、
前記制御部は、
前記演算部による論理演算の結果を、該論理演算を示す前記情報が含まれる描画情報に従い前記メモリに対してライト処理する
ことを特徴とする請求項１乃至請求項４の何れか１項に記載の画像処理装置。
【請求項６】
前記生成部で生成された描画情報に含まれる論理演算を示す情報が前記メモリ上でのリードモディファイライトを用いる論理演算を示している場合に、該情報に従い描画パターンに対して論理演算を施す第１演算部と、
前記情報が前記メモリに対するライトのみを用いる論理演算を示している場合に、該情報に従い描画パターンに対して論理演算を施す第２演算部と
をさらに有し、
前記制御部は、
前記判定部により一致していないと判定された場合に、前記第２演算部による論理演算を前記第１演算部による論理演算に対して優先して実行して、論理演算の結果を、該論理演算を示す前記情報が含まれる描画情報に従い前記メモリに対してライト処理する
ことを特徴とする請求項１乃至請求項４の何れか１項に記載の画像処理装置。
【請求項７】
少なくとも描画パターンと、該描画パターンのメモリ上のアドレスを示す描画アドレスと、該描画パターンに施す論理演算を示す情報とを含む描画情報を生成する生成ステップと、
前記描画情報を複数の保持部に保持する保持ステップと、
前記生成ステップにより生成された描画情報に含まれる論理演算を示す情報が前記メモリ上でのリードモディファイライトを用いる論理演算を示している場合に、該描画情報に含まれる描画アドレスと、前記複数の保持部のうち少なくとも１に保持される描画情報に含まれる描画アドレスとが一致するか否かを判定する判定ステップと、
前記判定ステップにより一致していると判定された場合に、前記生成ステップにより生成された描画情報に基づく前記メモリに対する前記リードモディファイライトによるリード処理を一時的に停止する制御ステップと
を有する
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセスをリードモディファイライトを用いて行う場合に用いて好適な画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
従来、ページプリンタなどにおいて、印刷解像度の高解像度化や、印刷速度の高速化が要求されている一方で、プリンタの動作を制御するＣＰＵ(Central  Processing  Unit)の処理能力のみでは、これらの要求を満たすことが困難となってきている。
【０００３】
ここで、従来技術によるプリンタにおける処理の流れについて、概略的に説明する。パーソナルコンピュータなどで作成された例えばＰＤＬ(Page  Description  Language)データが、ネットワークやケーブルなど所定のインターフェイスを介してプリンタに転送される。プリンタは、転送されたＰＤＬデータを解析して、プリンタにおける描画部が実行可能な中間言語を作成する。描画部は、作成された中間言語を解析して画像データを生成し、生成した画像データに対して階調処理を施して２値化画像データを得る。この２値化画像データを、バンドメモリに対して描画し、バンドメモリに書き込む。画像の描画は、Ｃ、Ｍ、Ｙ、Ｋの各色毎に行われる。
【０００４】
プリンタは、バンドメモリに描画された各色の画像データを、ＪＢＩＧ(Joint  Bi-level  Image  Coding  Expert  Group)などの２値画像の圧縮アルゴリズムにより符号化し、生成された符号をそれぞれメモリに書き込む。プリンタは、印字時に、Ｃ、Ｍ、Ｙ、Ｋ各版毎に遅延させてメモリから符号を読み出してそれぞれ復号し、復号したデータをＣ、Ｍ、Ｙ、Ｋ各版に対応するプリンタエンジンに転送して印字を行う。
【０００５】
このようなプリンタ装置におけるメモリアクセス制御に関して、特許文献１では、画像処理部がメモリアクセスの調停を行うメモリアービタを介してＣＰＵとメモリを共有して描画処理（論理演算処理）を行う技術が開示されている。このメモリアービタを介したメモリのリード処理は、ＣＰＵ(Central  Processing  Unit)などメモリアービタに接続される他の構成の処理とアクセスが競合するために、一般的には、リード要求が出されてから当該リード要求に応じて読み出されたデータが到着するまでに、比較的長い時間を要する場合がある。
【０００６】
一方、近年では、内部にＣＰＵおよびシステムバスを内蔵させたＬＳＩ(Large  Scale  Integration)が開発されている。また、近年では、ＳＯＣ(System-on-a-chip)におけるバスの標準プロトコルとして、ＡＸＩ(Advanced  eXtensible  Interface)バスが注目を集めている。
【０００７】
ＳＯＣにおいてＡＸＩバスを用いた構成では、ＣＰＵと、画像処理部と、バンドメモリとの間の調停を、メモリアービタを用いた場合に比べて効率良く行うことが可能である。そのため、データ読み出し側は、コマンドとして発行するリード要求を、リード要求に応じたリードデータの到着を待たずに次々と発行でき、バンドメモリに対するアクセスを効率良く処理することが可能となる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、上述したＡＸＩバスを用いた構成では、メモリアクセスを効率的に行うことができる一方で、バンドメモリ上の同一アドレスに対するリードモディファイライト（以下、ＲＭＷと略称する）において、正しくない描画／論理演算処理が行われる場合がある。
【０００９】
図２０を用いて、ＲＭＷにおける正しくない論理演算処理について、概略的に説明する。図２０（ａ）は、正しい、すなわち、本来意図したアクセスおよび論理演算処理の例を示す。この例では、図２０（ａ）の左側の図に示される横長の四角形の画像２００のＲＭＷを行い、図２０（ａ）の右側の図に示される、画像２００に交差する縦長の画像２０１のＲＭＷを行う。このとき、本来意図した論理演算処理では、画像２００と画像２０１との交差部分において画像２００と画像２０１との間で所定の演算がなされ、変更された画像が当該交差部分に描画される。
【００１０】
図２０（ｂ）は、正しくない、すなわち、本来意図しないアクセスおよび論理演算処理が行われた例を示す。この例では、上述と同様に、図２０（ｂ）の左側の図に示される横長の画像２００のＲＭＷを行い、画像２００に交差する縦長の画像２０１のＲＭＷを行っているが、画像２００と画像２０１との交差部分が、画像２０１で上書きされてしまっている。これは、上述の図２０（ａ）で説明した、本来意図する論理演算処理の結果とは異なっている。
【００１１】
このように、論理演算結果が本来意図したものと異なってしまう原因は、上述したように、データ読み出し側（描画処理部側）が、リード要求に応じたデータの到着を待たずに次々とリード要求を発行するために発生する。すなわち、画像２００と画像２０１との交差部分の論理演算処理は、画像２００において当該交差部分のＲＭＷが完了した後に実行される必要がある。
【００１２】
しかしながら、メモリのアクセスを制御するメモリコントローラは、ＲＭＷをリード情報とライト情報とに分解されたアクセス情報として扱うため、ＲＭＷにおけるリードおよびライトのデータの保証が困難である。そのため、リードデータの到着を待たずに次々とリード要求を発行した場合、ＲＭＷによるライトが終了していないアドレスに対してリードを行い、当該ライトが終了した当該アドレスに対して当該リードしてモディファイしたデータをライトしてしまう事態が発生する可能性がある。図２０（ｂ）で説明した現象は、このような理由により発生している。
【００１３】
本発明は、上記に鑑みてなされたものであって、ＲＭＷを行う場合において、高速処理を可能とすると共に、本来の意図とは異なる論理演算が行われることを防ぐことを可能とすることを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、少なくとも描画パターンと、描画パターンのメモリ上のアドレスを示す描画アドレスと、描画パターンに施す論理演算を示す情報とを含む描画情報を生成する生成部と、描画情報を保持する複数の保持部と、生成部で生成された描画情報に含まれる論理演算を示す情報がメモリ上でのリードモディファイライトを用いる論理演算を示している場合に、描画情報に含まれる描画アドレスと、複数の保持部のうち少なくとも１に保持される描画情報に含まれる描画アドレスとが一致するか否かを判定する判定部と、判定部により一致していると判定された場合に、生成部で生成された描画情報に基づくメモリに対するリードモディファイライトによるリード処理を一時的に停止する制御部とを有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ＲＭＷを行う場合において、高速処理が可能となると共に、本来の意図とは異なる論理演算が行われることを防ぐことが可能となるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施形態に係る画像形成装置の一例の構成を示すブロック図である。
【図２】図２は、実施形態に適用可能な、メインメモリにおけるバンド記憶領域の一例のフォーマットを示す図である。
【図３】図３は、実施形態に適用可能な、描画部が処理する中間言語の例を概略的に示す図である。
【図４】図４は、実施形態に適用可能な、中間言語によるコマンドの一例を示す図である。
【図５】図５は、実施形態に適用可能な、論理演算タイプの例を示す図である。
【図６】図６は、実施形態に係る描画部の一例の構成を示すブロック図である。
【図７】図７は、実施形態に係る描画パターン生成部の一例の構成を示すブロック図である。
【図８】図８は、実施形態に係る論理演算処理部の一例の構成を示すブロック図である。
【図９】図９は、実施形態に係るコントローラの一例の処理を示すフローチャートである。
【図１０】図１０は、実施形態に係るリード制御部のＲＭＷにおける一例の処理を示すフローチャートである。
【図１１】図１１は、実施形態に係るライトアドレスチェックの一例の処理を示すフローチャートである。
【図１２】図１２は、実施形態に係るリードアドレスチェックの一例の処理を示すフローチャートである。
【図１３】図１３は、実施形態による処理の効果について説明するための図である。
【図１４】図１４は、実施形態による処理の効果について説明するための図である。
【図１５−１】図１５−１は、実施形態を適用しない場合の例について説明するための図である。
【図１５−２】図１５−２は、実施形態を適用しない場合の例について説明するための図である。
【図１５−３】図１５−３は、実施形態を適用しない場合の例について説明するための図である。
【図１６】図１６は、実施形態を適用しない場合の別の例について説明するための図である。
【図１７−１】図１７−１は、実施形態を適用しない場合の別の例について説明するための図である。
【図１７−２】図１７−２は、実施形態を適用しない場合の別の例について説明するための図である。
【図１７−３】図１７−３は、実施形態を適用しない場合の別の例について説明するための図である。
【図１８】図１８は、実施形態を適用しないさらに別の例について説明するための図である。
【図１９】図１９は、実施形態を適用しないさらに別の例について説明するための図である。
【図２０】図２０は、従来技術による、ＲＭＷにおける正しくない論理演算処理について、概略的に説明するための図である。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照して、画像処理装置および画像処理方法の実施の形態を詳細に説明する。図１は、実施形態に係る画像形成装置１の一例の構成を示すブロック図である。画像形成装置１において、ＡＸＩ(Advanced  eXtensible  Interface)バスに従ったバス１３（以下、ＡＸＩバス１３と呼ぶ）に対してＣＰＵ  Ｉ／Ｆ１１を介してＣＰＵ(Central  Processing  Unit)１０が接続されると共に、ローカルＩ／Ｆ２１を介してＲＯＭ(Read  Only  Memory)２２およびパネルコントローラ２３が接続される。
【００１８】
ＡＸＩバス１３は、メモリコントローラ２５を介してメインメモリ１４が接続される。それと共に、ＡＸＩバス１３に対して、描画部１５、符号化部１６、復号部１７および通信コントローラ２０が接続される。復号部１７の出力は、プリンタエンジン１９を制御するエンジンコントローラ１８に接続される。
【００１９】
ＡＸＩバス１３は、接続された各部間におけるデータ転送を制御する。ＣＰＵ  Ｉ／Ｆ１１は、ＣＰＵ１０とＡＸＩバス１３との間のインターフェイスであって、ＣＰＵ１０は、ＣＰＵ  Ｉ／Ｆ１１およびＡＸＩバス１３を介して、画像形成装置１の各部に接続される。パネルコントローラ２３は、ユーザ操作を行うために操作子や表示部が設けられたパネル２４が接続される。
【００２０】
ＲＯＭ２２は、各種プログラムや文字などのフォント情報が予め記憶されている。ＣＰＵ１０は、ＲＯＭ２２に予め記憶されたプログラムに従い、図示されないＲＡＭ(Random  Access  Memory)をワークメモリとして用いて、この画像形成装置１の動作を制御する。ＣＰＵ１０は、ワークメモリとしてメインメモリ１４を利用することも可能である。また、ＣＰＵ１０は、エンジンコントローラ１８に対して、プリンタエンジン１９を制御するための命令を出す。通信コントローラ２０は、ネットワークを介して接続される、パーソナルコンピュータ（ＰＣ）といった外部機器との間の通信を制御する。
【００２１】
ＡＸＩバス１３を介してなされるメインメモリ１４に対するアクセスの制御は、メモリコントローラ２５により行われる。メインメモリ１４は、例えばプログラム領域、ＰＤＬデータ領域、ＣＭＹＫバンド画像データ領域、ＣＭＹＫページ符号データ領域およびその他領域を含む。
【００２２】
プログラム領域は、ＣＰＵ１０が動作するためのプログラムなどが格納される。ＰＤＬデータ領域は、例えば通信コントローラ２０を介してパーソナルコンピュータから転送されたＰＤＬ(Page  Description  Language)データが格納される。ＣＰＵ１０がＰＤＬデータに基づき生成した中間言語をこのＰＤＬデータ領域に格納してもよい。ＣＭＹＫバンド画像データ領域は、ＰＤＬデータに基づき生成されたＣ、Ｍ、Ｙ、Ｋ各色の版によるバンド画像データがそれぞれ格納される。ＣＭＹＫバンド符号データ領域は、ＣＭＹＫ各版の、符号化されたバンド画像データ（バンド符号データと呼ぶ）が格納される。また、その他領域は、上述以外のデータが格納される領域であって、例えばＣＰＵ１０がプログラムを実行する際のワークメモリとして用いることができる。
【００２３】
描画部１５は、ＣＰＵ１０によりＰＤＬデータに基づき生成された中間言語を読み込んで解析し、解析結果に従い、メインメモリ１４のバンド記憶領域に対してバンド画像を書き込む描画処理を行う。また、描画部１５は、論理演算処理部３０を有し、中間言語の解析結果に論理演算命令が含まれる場合、当該論理演算命令に従いバンド画像に対して論理演算を施す。
【００２４】
メインメモリ１４から、描画部１５により描画されたバンド画像が読み出されて、ＡＸＩバス１３を介して符号化部１６および復号部１７で符号化および復号処理などを施されて、エンジンコントローラ１８に供給される。エンジンコントローラ１８が、供給されたバンド画像に従いプリンタエンジン１９を制御することで、印刷媒体に対して画像が形成され、印刷がなされる。
【００２５】
このような構成において、例えばパーソナルコンピュータで生成されたＰＤＬデータがネットワークを介して通信コントローラ２０に受信され、メインメモリ１４のＰＤＬデータ領域に記憶される。ＣＰＵ１０は、メインメモリ１４のＰＤＬデータ領域からＰＤＬデータを読み出して解析し、解析結果に基づき中間言語を生成し、メインメモリ１４に記憶する。描画部１５は、メインメモリ１４から読み出した中間言語に従い描画処理を行い、ＣＭＹＫ各版の画像データを生成する。生成されたＣＭＹＫ各版の画像データは、メインメモリ１４のＣＭＹＫバンド画像データ領域に書き込まれる。
【００２６】
符号化部１６は、メインメモリ１４のＣＭＹＫバンド画像データ領域から読み出されたＣＭＹＫ各版のバンド画像データに対して、ＭＴＦ(Move  To  Front)制御およびハフマン符号化などを利用した圧縮符号化方式により圧縮符号化処理を施す。バンド画像データが圧縮符号化された符号データは、メインメモリ１４のＣＭＹＫページ符号データ領域に格納される。復号部１７は、メインメモリ１４のＣＭＹＫページ符号データ領域から読み出されたＣＭＹＫ各版の符号データを復号して、ＣＭＹＫ各版の画像データを出力し、エンジンコントローラ１８に送る。エンジンコントローラ１８は、復号部１７から受け取ったＣＭＹＫ各版の画像データに従い基づきプリンタエンジン１９を制御してプリントアウトを行う。
【００２７】
図２は、メインメモリ１４におけるバンド記憶領域の一例のフォーマットを示す。図２の例では、バンド幅は、例えば１ページの幅すなわち水平走査（主走査）により描画される１水平ラインの長さであり、バンド高さは、１ページを垂直走査方向に所定に分割した１の領域の高さとしている。また、描画ワード幅は、描画部１５においてバンド記憶領域をアクセスする単位を示す。
【００２８】
図２には、バンド記憶領域に対する画像データの書き込みの例として、水平ラインＹに対して、水平ラインＸ始点から水平ラインＸ終点までの水平ラインを描画（書き込み）した例が示されている。このように、描画部１５では、画像処理を施した画像データを、水平ラインの１ライン毎にバンド記憶領域に書き込むことで、描画を行っている。なお、水平ラインに沿った方向をＸ方向、水平ラインに垂直な方向、すなわち副走査方向をＹ方向とし、例えば１ページにおける印刷領域をＸ，Ｙ座標で表すものとする。
【００２９】
図３は、描画部１５が処理する中間言語の例を概略的に示す。図３の例では、中間言語は、バンド初期化コマンド、論理演算タイプ設定コマンド、四角形描画コマンド、３角形描画コマンド、論理演算タイプ設定コマンド、四角形描画コマンド、四角形描画コマンド、バンド終了コマンドが順次記述されている。なお、実際には、Ｃ、Ｍ、Ｙ、Ｋ各色について、中間言語が存在する。
【００３０】
図４は、上述の中間言語によるコマンドの一例を示す。図４の例では、各コマンドは、３２ビットのデータ幅を持つ。先頭の３２ビットがコマンドヘッダとされ、その後ろに、当該コマンドの各パラメータが付加される構造となっている。各コマンドは、Ｃ、Ｍ、Ｙ、Ｋ各色について指定することができる。なお、コマンドヘッダの直後のＮＯＰは、コマンドヘッダのデータ幅を３２ビット幅に合わせるためのもので、以下、このＮＯＰを含んでコマンドヘッダと呼ぶ。
【００３１】
図４（ａ）は、バンド初期化コマンドの例を示す。バンド初期化コマンドは、コマンドヘッダに続き、バンドの先頭アドレス、バンド高さおよびバンド幅の各設定パラメータが指定される。図７を用いて後述する描画コマンド解析部４１は、このコマンドを受け取ると、バンドの先頭アドレスとバンドの高さと幅とを、図７のパラメータ記憶部４０に記憶する。
【００３２】
図４（ｂ）は、四角形の描画を命令する四角形描画コマンドの例を示す。コマンドヘッダに続き、四角形の左上隅のＸおよびＹ座標、右下隅のＸおよびＹ座標の各描画パラメータがそれぞれ指定される。図７で後述する描画コマンド解析部４１は、このコマンドを受け取ると四角形の左上隅のＸ，Ｙ座標、右下隅のＸ，Ｙの座標と四角形コマンド名を図７で後述する水平ライン変換部４２へ転送し、描画処理を行う。
【００３３】
図４（ｃ）は、三角形の描画を命令する三角形描画コマンドの例を示す。三角形の３の端点＃０、＃１および＃２それぞれのＸおよびＹ座標の各描画パラメータが指定される。図７で後述する描画コマンド解析部４１は、このコマンドを受け取ると、３角形の各端点の座標と３角形コマンド名を図７で後述する水平ライン変換部４２へ転送し、描画処理を行う。
【００３４】
図４（ｄ）は、論理演算タイプを定義する論理演算タイプ設定コマンドの例を示す。コマンドヘッドに続き、論理演算タイプが指定される。図５は、論理演算タイプの例を示す。図５の例では、論理演算タイプ「ＲＯＰ＿００」〜「ＲＯＰ＿ＦＦ」でそれぞれ示される１６種類の論理演算が定義される。論理演算において、「０ｘ００００＿００００」は黒塗りつぶし、「０ｘＦＦＦＦ＿ＦＦＦＦ」は白塗りつぶしを示す。また、記号「Ｓ」および「Ｄ」は、それぞれ演算対象の画像（描画パターン）を示し、１または２の画像に対して論理演算が定義される。
【００３５】
図５において、各論理演算タイプに対して、各論理演算で用いるメモリアクセス種類が対応付けられている。メモリアクセス「ＷＲＩＴＥ」は、書き込み（ライト）のみを用いる論理演算を示す。また、メモリアクセス「ＲＭＷ」は、リードモディファイライトを用いる論理演算を示す。リードモディファイライトは、メモリ上のある領域からデータを読み出し（リード）て変更（モディファイ）し、変更されたデータを元の領域に書き込む（ライト）処理である。
【００３６】
以降、リードモディファイライトをＲＭＷと略称する。また、以降において、論理演算は、適宜「ＲＯＰ」と記述する。
【００３７】
図４（ｅ）は、定義したバンドの描画の終了を指示するバンド終了コマンドの例を示す。このバンド終了コマンドは、コマンドヘッダのみを有する。図７を用いて後述する描画コマンド解析部４１は、このコマンドを受け取るとそのバンドの処理を終了する。
【００３８】
図６は、描画部１５の一例の構成を示す。描画部１５は、論理演算処理部３０と、描画パターン生成部３１と、ＡＸＩバス入力部３２と、ＡＸＩバス出力部３３とを有する。ＡＸＩバス入力部３２およびＡＸＩバス出力部３３は、それぞれ、図１で示したＡＸＩバス１３との入力インタフェースおよび出力インタフェースである。
【００３９】
描画パターン生成部３１は、図４を用いて説明した描画コマンドをメインメモリ１４の中間言語格納メモリ領域から読み込み、描画コマンドを解析し、メインメモリ１４のバンドメモリ領域へ描画するための描画パターンを生成し、論理演算処理部３０に対して、描画パターンと、描画するワード単位の描画パターン、マスクパターンおよびアドレスとを含む描画情報を転送する。
【００４０】
論理演算処理部３０は、実施形態の特徴をなす部分であって、描画パターン生成部３１からの描画パターン、マスクパターン、アドレスおよび論理演算タイプなどを含む描画情報を受け取る。論理演算処理部３０は、描画パターン生成部３１から受け取った描画情報に従い論理演算などを行い、ＡＸＩバス入力部３２およびＡＸＩバス出力部３３を介してメモリコントローラ２５と通信を行い、演算結果をメインメモリ１４のバンドメモリ領域へ描画する。
【００４１】
図７は、描画パターン生成部３１の一例の構成を示す。描画パターン生成部３１は、描画コマンド解析部４１と、水平ライン変換部４２と、水平ライン描画部４３とを有する。描画コマンド解析部４１は、ＡＸＩバス入力部３２からの描画コマンドを読み込み、描画コマンドを解析し、パラメータの設定コマンドであれば、パラメータ記憶部４０にパラメータ値を転送し、描画コマンドであれば、水平ライン変換部４２に描画コマンドを転送する。
【００４２】
水平ライン変換部４２は、描画コマンド解析部４１から描画コマンドを受け取り、水平ラインへ変換し、水平ライン描画部４３に転送する。水平ライン描画部４３は、水平ライン変換部４２からの水平ラインデータに基づき、水平ラインを描画するワード単位の描画パターンとマスクパターンとアドレスなどを生成し、論理演算処理部３０に転送する。
【００４３】
図８は、論理演算処理部３０の一例の構成を示す。描画パターン生成部Ｉ／Ｆ５０は、図６の描画パターン生成部３１とのインタフェースであり、描画するワード単位の描画パターン、論理演算タイプ、マスクパターンおよびアドレスなどを受け取る。ＲＭＷ判断部５１は、例えば図５の論理演算タイプの情報をテーブルとして持ち、受け取った論理演算タイプがＲＭＷを用いた論理演算を行うか、ライト（Ｗ）のみを用いて論理演算を行うかを判断する。
【００４４】
ＲＭＷ描画アドレスレジスタ５２Ａおよび５２Ｂは、それぞれＲＭＷ時の描画アドレスを格納するレジスタである。この例では２つのリードを先投げするために、ＲＭＷ描画アドレスレジスタ５２Ａおよび５２Ｂの２のレジスタを持ち、これらＲＭＷ描画アドレスレジスタ５２Ａおよび５２ＢをＭＵＸ（マルチプレクサ）６０で切り替えてリード制御部６７およびライト制御部６８に転送している。
【００４５】
ＲＭＷ描画レングス格納レジスタ５３Ａおよび５３Ｂは、それぞれＲＭＷ時の描画レングスを格納するレジスタである。この例では２つのリードを先投げするために、ＲＭＷ描画レングスレジスタ５３Ａおよび５３Ｂの２のレジスタを持ち、これらＲＭＷ描画レングスレジスタ５３Ａおよび５３ＢをＭＵＸ６１で切り替えてリード制御部６７およびライト制御部６８に転送している。
【００４６】
ＲＭＷ＿ＲＯＰＴＹＰＥレジスタ５４Ａおよび５４Ｂは、それぞれＲＭＷ時の論理演算タイプを格納するレジスタである。この例では２つのリードを先投げするためにＲＭＷ＿ＲＯＰＴＹＰＥレジスタ５４Ａおよび５４Ｂの２のレジスタを持ち、ＭＵＸ６２で切り替えてＲＭＷ用の論理演算を行うＲＭＷ＿ＲＯＰＴ処理部６４に転送している。
【００４７】
ＲＭＷライト描画パターンバッファ５５Ａおよび５５Ｂは、それぞれＲＭＷ時の描画パターン（ライト描画パターン）を格納するバッファである。この例では２つのリードを先投げするためにＲＭＷライト描画パターンバッファ５５Ａおよび５５Ｂの２のバッファを持ち、ＭＵＸ６３で切り替えてＲＭＷ用の論理演算を行うＲＭＷ＿ＲＯＰＴ処理部６４に転送している。
【００４８】
このように、実施形態によるＲＭＷ処理では、リード時に先投げ処理を必要とするために、それぞれ２の描画情報（描画アドレス、描画レングス、論理演算タイプおよび描画パターン）を有する。以降、適宜、これら２の描画情報のうち一方をリードＡ、他方をリードＢと呼ぶ。リードＡおよびＢの２つ（複数）の値を有するのは、ＲＭＷの処理のリード処理とライト処理との異なるタイミングで必要とするためであり、リードＡおよびＢを先投げし、リードＡおよびＢに応じてリードデータが帰ってくると、リードＡ、リードＢの順序にライト処理を順次行うためである。
【００４９】
ＲＭＷ＿ＲＯＰＴ処理部６４は、ＲＭＷ用の論理演算を行う。ＲＭＷ＿ＲＯＰＴ処理部６４は、リード描画パターンバッファ６５からリード描画パターンを読み込むと共に、ＭＵＸ６２および６３から論理演算タイプとライト描画パターンを読み込む。そして、ＲＭＷ＿ＲＯＰＴ処理部６４は、読み込んだリード描画パターンとライト描画パターンに対して、論理演算タイプに示される論理演算を行い、演算結果の描画パターンをＲＭＷ用ライトバッファ６６に書き込む。
【００５０】
リード描画パターンバッファ６５は、リード制御部６７から読み込まれたバンドメモリのデータをリード描画パターンとして格納する。ＲＭＷライトバッファ６６は、ＲＭＷ＿ＲＯＰＴ処理部６４により論理演算処理された描画パターンを格納する。
【００５１】
リード制御部６７は、ＡＸＩバス入力部３２からリードデータを読み込む。ライト制御６８は、のＡＸＩバス出力部３３に対してライトデータを書き込む。
【００５２】
ライト描画アドレスレジスタ５６は、ライト時の描画アドレスを格納するレジスタであり、格納されたライト時の描画アドレスをライトアドレスチェック部６９に転送している。ライトレングスレジスタ５７は、ライト時の描画レングスを格納するレジスタであり、格納されたライト時の描画レングスをライトアドレスチェック部６９に転送している。ライトＲＯＰＴＹＰＥレジスタ５８は、ライト時の論理演算タイプを格納するレジスタであり、格納されたライト時の論理演算タイプをライト用ＲＯＰＴ処理部７０に転送している。ライト描画パターンバッファ５９は、ライト時の描画パターンを格納するレジスタであり、格納されたライト時の描画パターンをライト用ＲＯＰＴ処理部７０に転送している。
【００５３】
このように、実施形態によれば、ライト処理は先投げ処理を行わないため、複数の描画情報を有しない。
【００５４】
ライト用ＲＯＰＴ処理部７０は、論理演算タイプに示されるライト用の論理演算を行う。論理演算の結果の描画パターンは、ライト用ライトバッファ７１に書き込まれる。
【００５５】
ライトアドレスチェック部６９は、ＲＭＷのアドレスおよびレングスと、ライトのアドレスとレングスとから、リードとライトのアドレスの衝突の有無をチェックし、衝突していない場合は、ライト制御部６８にライトを要求し、衝突している場合は、コントローラ７３にその旨通知する。リードアドレスチェック部７２は、リードＡおよびリードＢによるアドレスおよびレングスに基づき、アドレスの衝突の有無をチェックし、衝突している場合、コントローラ７３にその旨通知する。コントローラ７３は、ライトアドレスチェック部６９およびリードアドレスチェック部７２のチェック結果に基づき、後述する論理演算処理を制御する。
【００５６】
図９は、コントローラ７３の一例の処理を示すフローチャートである。ステップＳ１００で、コントローラ７３は、描画パターン生成部３１からのデータイネーブルがアクティブであるか否かを判定する。若し、非アクティブであると判定した場合、再びステップＳ１００の処理を行う。アクティブであると判定された場合、処理をステップＳ１０１に移行させ、コントローラ７３は、論理演算タイプが示す論理演算が書き込み（ライト）のみを用いる論理演算であるか否かを判定する。
【００５７】
ステップＳ１０１で、論理演算がライトのみを用いると判定した場合、処理がステップＳ１０２に移行され、ライトアドレスチェック部６９に対してライトアドレスチェックを行うように指示する。ライトアドレスチェック処理の詳細については後述する。次のステップＳ１０３で、コントローラ７３は、ライトアドレスチェックの結果に基づき、ライトアドレスがリードアドレスと一致しているか否かを判定する。若し、一致していると判定した場合、処理をステップＳ１０２に戻し、ライトアドレスチェック部６９に対して再びライトアドレスチェックを行うように指示する。これにより、ライト処理が一時的に停止される。
【００５８】
一方、ステップＳ１０３で、ライトアドレスがリードアドレスと一致していないと判定した場合、コントローラ７３は、処理をステップＳ１０４に移行させ、描画パターン生成部３１から受け取った描画アドレス、描画レングス、描画パターンをライト用ＲＯＰＴ処理部７０に転送する。ライト用ＲＯＰＴ処理部７０は、転送された描画アドレス、描画レングス、描画パターンに基づき、論理演算タイプに従い論理演算を行う。論理演算結果は、ライト用ライトバッファ７１を介してライト制御部６８に転送される。コントローラ７３は、ライト制御部６８に対して、ライト処理を要求する。その後、処理がステップＳ１００に戻される。
【００５９】
上述のステップＳ１０１で、論理演算がＲＭＷを用いると判定した場合、処理がステップＳ１０５に移行され、リードＡが空いているか否かが判定される。具体的には、ＲＭＷ描画アドレスレジスタ５２Ａ、ＲＭＷレングスレジスタ５３Ａ、ＲＭＷ＿ＲＯＰＴＹＰＥレジスタ５４ＡおよびＲＭＷライト描画パターンバッファ５５Ａが空か否かが判定される。
【００６０】
若し、空いていると判定した場合、処理がステップＳ１０６に移行され、描画パターン生成部３１から受け取った描画アドレス、描画レングス、描画パターンをリードＡ側（ＲＭＷ描画アドレスレジスタ５２Ａ、ＲＭＷレングスレジスタ５３ＡおよびＲＭＷライト描画パターンバッファ５５Ａ）に転送し、リード制御部６７に対してリード処理を要求する。その後、処理がステップＳ１００に戻される。
【００６１】
ステップＳ１０５で空いていないと判定された場合、処理がステップＳ１０７に移行され、リードＢが空いているか否かが判定される。具体的には、ＲＭＷ描画アドレスレジスタ５２Ｂ、ＲＭＷレングスレジスタ５３Ｂ、ＲＭＷ＿ＲＯＰＴＹＰＥレジスタ５４ＢおよびＲＭＷライト描画パターンバッファ５５Ｂが空か否かが判定される。空いていないと判定された場合、処理がステップＳ１０５に戻される。
【００６２】
若し、空いていると判定した場合、処理がステップＳ１０８に移行され、リードアドレスチェック部７２に対してリードアドレスチェックを行うように指示する。リードアドレスチェック処理の詳細については後述する。次のステップＳ１０９で、コントローラ７３は、リードアドレスチェックの結果に基づき、リードアドレスがリードＡのリードアドレスと一致しているか否かを判定する。若し、一致していると判定した場合、処理をステップＳ１０８に戻し、リードアドレスチェック部７２に対して再びリードアドレスチェックを行うように指示する。これにより、ＲＭＷによるリード処理が一時的に停止される。
【００６３】
ステップＳ１０９でリードアドレスが一致していないと判定した場合、処理がステップＳ１１０に移行され、描画パターン生成部３１から受け取った描画アドレス、描画レングス、描画パターンをリードＢ側（ＲＭＷ描画アドレスレジスタ５２Ｂ、ＲＭＷレングスレジスタ５３ＢおよびＲＭＷライト描画パターンバッファ５５Ｂ）に転送し、リード制御部６７に対してリード処理を要求する。その後、処理がステップＳ１００に戻される。
【００６４】
図１０は、リード制御部６７のＲＭＷにおける一例の処理を示すフローチャートである。ステップＳ１２０で、リード制御部６７は、リードイネーブルがアクティブであるか否かを判定する。若し、非アクティブであると判定した場合、再びステップＳ１２０の処理を行う。若し、アクティブであると判定した場合、処理をステップＳ１２１に移行させ、リードフラグ（リードＦＬＡＧ）が０であるか否かを判定する。
【００６５】
若し、リードＦＬＡＧ＝０であると判定した場合、処理がステップＳ１２２に移行され、リード制御部６７は、ライト処理中であるか否かを判定する。若し、ライト処理中であると判定した場合、再びステップＳ１２２の処理を行う。
【００６６】
ステップＳ１２２でライト処理中ではないと判定した場合、リード制御部６７は、次のステップＳ１２３でリードＦＬＡＧの値を１として、処理をステップＳ１２４に移行させる。ステップＳ１２４で、ＲＭＷ＿ＲＯＰＴ処理部６４は、リード描画パターンバッファ６５から受け取ったリードパターンと、ライト描画パターンバッファ５５Ａから受け取った描画パターンとで、ＲＭＷ＿ＲＯＰＴＹＰＥレジスタ５４Ａから受け取った論理演算タイプに従って論理演算を行い、論理演算の結果の描画パターンの、ＲＭＷ描画アドレスレジスタ５２Ａに格納される描画アドレスに対する、ＲＭＷレングスレジスタ５３Ａに格納される描画レングス分のライト要求を、ライト制御部６８に対して行う。
【００６７】
ステップＳ１２１で、若し、リードＦＬＡＧ＝１である（リードＦＬＡＧ＝０でない）と判定した場合、処理がステップＳ１２５に移行され、リード制御部６７は、ライト処理中であるか否かを判定する。若し、ライト処理中であると判定した場合、再びステップＳ１２５の処理を行う。
【００６８】
ステップＳ１２５でライト処理中ではないと判定した場合、リード制御部６７は、次のステップＳ１２６でリードＦＬＡＧの値を０として、処理をステップＳ１２７に移行させる。ステップＳ１２７で、ＲＭＷ＿ＲＯＰＴ処理部６４は、リード描画パターンバッファ６５から受け取ったリードパターンと、ライト描画パターンバッファ５５Ｂから受け取った描画パターンとで、ＲＭＷ＿ＲＯＰＴＹＰＥレジスタ５４Ｂから受け取った論理演算タイプに従って論理演算を行い、論理演算の結果の描画パターンの、ＲＭＷ描画アドレスレジスタ５２Ｂに格納される描画アドレスに対する、ＲＭＷレングスレジスタ５３Ｂに格納される描画レングス分のライト要求を、ライト制御部６８に対して行う。
【００６９】
図１１は、図９のステップＳ１０２で説明した、ライトアドレスチェックの一例の処理を示すフローチャートである。ライトアドレスチェック部６４は、ステップＳ１３０で、ＲＭＷ描画アドレスレジスタ５２ＡおよびＲＭＷレングスレジスタ５３Ａに格納されるリードＡの描画アドレスと描画レングスとから、リードＡの終端アドレスを求める。同様に、ライトアドレスチェック部６４は、ステップＳ１３１で、ＲＭＷ描画アドレスレジスタ５２ＢおよびＲＭＷレングスレジスタ５３Ｂに格納されるリードＢの描画アドレスと描画レングスとから、リードＢの終端アドレスを求める。さらに、ライトアドレスチェック部６４は、ステップＳ１３２で、ライト描画アドレスレジスタ５６に格納されるライト描画アドレスと、ライトレングスレジスタ５７に格納されるライト描画レングスとに基づき、ライトの終端アドレスを求める。
【００７０】
ライトアドレスチェック部６４は、ステップＳ１３３およびステップＳ１３４で、ライトの始点アドレスから終端アドレスの間でリードＡの始点または終端アドレスの有無をチェックする。次に、ライトアドレスチェック部６４は、ステップＳ１３５およびステップＳ１３６で、リードＡの始点アドレスから終端アドレスの間でライトの始点または終端アドレスの有無をチェックする。これにより、リードＡとライトとによるアドレス衝突の有無をチェックしている。
【００７１】
次のステップＳ１３７およびステップＳ１３８で、ライトの始点アドレスから終端アドレスの間でリードＢの始点または終端アドレスの有無をチェックする。次に、ライトアドレスチェック部６４は、ステップＳ１３９およびステップＳ１４０で、リードＢの始点アドレスから終端アドレスの間でライトの始点または終端アドレスの有無をチェックする。これにより、リードＢとライトとによるアドレス衝突の有無をチェックしている。
【００７２】
以上の判定の結果、ライトアドレスとリードアドレスとが衝突していないと判定された場合（ステップＳ１３３〜ステップＳ１４０の判定による判定結果が全て「Ｎｏ」の場合）、処理がステップＳ１４１に移行され、ライトアドレスとリードアドレスとが不一致であるとされる。一方、ライトアドレスとリードアドレスとが衝突していると判定された場合（ステップＳ１３３〜ステップＳ１４０の判定による判定結果のうち少なくとも１が「Ｙｅｓ」の場合）、処理がステップＳ１４２に移行され、ライトアドレスとリードアドレスとが一致しているとされる。
【００７３】
図１２は、図９のステップＳ１０８で説明した、リードアドレスチェックの一例の処理を示すフローチャートである。リードアドレスチェック部７２は、ステップＳ１５０で、ＲＭＷ描画アドレスレジスタ５２ＡおよびＲＭＷレングスレジスタ５３Ａに格納されるリードＡの描画アドレスと描画レングスとから、リードＡの終端アドレスを求める。同様に、リードアドレスチェック部７２は、ステップＳ１５１で、ＲＭＷ描画アドレスレジスタ５２ＢおよびＲＭＷレングスレジスタ５３Ｂに格納されるリードＢの描画アドレスと描画レングスとから、リードＢの終端アドレスを求める。
【００７４】
リードアドレスチェック部７２は、ステップＳ１５２およびステップＳ１５３で、リードＡの始点から終端アドレスの間でリードＢの始点または終端アドレスの有無をチェックする。リードアドレスチェック部７２は、ステップＳ１５４およびステップＳ１５５で、リードＢの始点から終端アドレスの間でリードＡの始点または終端アドレスの有無をチェックする。これにより、リードＡとリードＢとによるアドレス衝突の有無をチェックしている。
【００７５】
以上の判定の結果、リードＡとリードＢとでアドレスが衝突していないと判定された場合（ステップＳ１５２〜ステップＳ１５５の判定による判定結果が全て「Ｎｏ」の場合）、処理がステップＳ１５６に移行され、リードＡのアドレスとリードＢのアドレスとが不一致であるとされる。一方、リードＡとリードＢとでアドレスが衝突していると判定された場合（ステップＳ１５２〜ステップＳ１５５の判定による判定結果のうち少なくとも１が「Ｙｅｓ」の場合）、処理がステップＳ１５７に移行され、リードＡのアドレスとリードＢのアドレスとが一致しているとされる。
【００７６】
図１３および図１４を用いて、実施形態による処理の効果について説明する。図１３は、メモリアクセスの順番に処理した例を示す。ＲＭＷを用いる論理演算を行う描画情報を複数記憶し、ＲＭＷによるリードアドレスとライトアドレスとの衝突の有無をチェックすることで、ライトアドレス＃Ａによるデータ＃０〜＃３のライト処理と、リードアドレス＃Ｂによるデータ＃４〜＃７のリード処理とを並行して実行することができる。
【００７７】
このように、実施形態では、ＲＭＷを用いる論理演算を行う描画情報を複数記憶して、ライト要求の際に、描画アドレスが、複数のＲＭＷの描画情報間で一致していないかを確認し、一致しないとされた場合、ＲＭＷによるリード処理とライト処理とを並行して実施している。そのため、処理を高速に実行することが可能となる。
【００７８】
また、図１４は、ＲＭＷにおいてアドレス衝突が無いことをチェックして、ライトアドレス＃Ｃによるデータ＃８〜＃１１のライト処理を、ライトアドレス＃Ａによるライト処理よりも先に行った例を示す。この場合、図１３の例に対して処理をより高速化できる。
【００７９】
図１５−１〜図１５−３を用いて、本実施形態を適用しない場合の例について説明する。図１５−１（ａ）に示されるような、画像（描画パターン）３００と画像（描画パターン）３０１とが交差し、交差部分で所定の論理演算が行われる場合について考える。ここで、図１５−１（ｂ）に示されるように、各部に領域ａ〜ｅの符号を付す。この場合、領域ａ、ｂおよびｃの順に最初のＲＭＷ（ＲＭＷ＃１とする）を行い、さらに領域ｄ、ｂおよびｅの順に次のＲＭＷ（ＲＭＷ＃２とする）を行うものとする。すなわち、領域ｂは、ＲＭＷ＃１でモディファイされライトが行われたデータに対して、ＲＭＷ＃２のリードが行われるべきである。
【００８０】
ＡＸＩバスのように、リードの応答を待たずに次々にリードコマンドを発行できる場合、図１５−２に例示されるように、領域ａ、ｂ、ｃおよびｄが順次リードされ、次に領域ｂのＲＭＷ＃１によるライトが行われる前に、ＲＭＷ＃２により領域ｂがリードされてしまう事態が起こり得る。この場合、本来意図した処理手順が実行されないため、正しい論理演算結果が得られないことになる。
【００８１】
これを避けるためには、図１５−３に例示されるように、領域ａ、ｂ、ｃおよびｄのリードが終了した後、これら領域ａ、ｂ、ｃおよびｄのライトが全て終了するのを待機し、その後、ＲＭＷ＃２による領域ｂおよびｅのリードを開始する。この方法では、正しい論理演算結果が得られる一方で、待機時間が発生する分、処理が遅くなるという欠点がある。
【００８２】
図１６および図１７−１〜図１７−３を用いて、本実施形態を適用しない場合の別の例について説明する。この別の例では、メモリワード単位でアクセスされるメモリに対して、メモリワード以下の単位で論理演算が行われる。すなわち、図１６（ａ）に例示されるように、領域３１０および３１１のＲＭＷのために左側のメモリワードと中央のメモリワードをリードし、中央のメモリワードをモディファイしてライトする。このとき、領域３１１および３１２がモディファイしてライトされる。その後、右側のメモリワードをリードし、領域３１３をモディファイしてライトする。
【００８３】
一方、リードの応答を待たずに次々にリードコマンドを発行できる場合、中央の領域は、領域３１０および３１１のＲＭＷのためにリードされた後、ライトされる前に、領域３１２および３１３のＲＭＷのためにリードされる事態が起こり得る。この場合、モディファイされた領域３１１が得られず、図１６（ｂ）に例示されるように、正しい論理演算結果が得られないことになる。
【００８４】
図１７−１〜図１７−３を用いて、本実施形態を適用しない場合の別の例についてより具体的に説明する。上述した図１６（ａ）の画像に対して、図１７−１で示されるように、メモリワードｐ、ｑおよびｒの符号を付す。この場合、メモリワードｐおよびｑに対してＲＭＷ＃１を行い、さらにメモリワードｑおよびｒに対してＲＭＷ＃２を行うものとする。
【００８５】
ＡＸＩバスのように、リードの応答を待たずに次々にリードコマンドを発行できる場合、図１７−２に例示されるように、ＲＭＷ＃１によりメモリワードｐおよびｑがリードされ、続けてＲＭＷ＃２によりメモリワードｑおよびｒがリードされる。すると、メモリワードｑは、ＲＭＷ＃１によるライトが行われる前にＲＭＷ＃２によりリードされてしまう事態が起こり得る。この場合、本来意図した処理手順が実行されないため、正しい論理演算結果が得られないことになる。
【００８６】
これを避けるためには、図１７−３に例示されるように、ＲＭＷ＃１によるメモリワードｐおよびｑのＲＭＷが完全に終了してから、ＲＭＷ＃２を開始する。この方法では、正しい論理演算結果が得られる一方で、待機時間が発生する分、処理が遅くなる。
【００８７】
図１８および図１９を用いて、本実施形態を適用しないさらに別の例について説明する。図１８は、ＲＭＷによる正しい論理演算が行われない例を示す。この例では、最初のＲＭＷ＃１によるリードアドレス＃Ａによるデータがデータ＃０〜＃３とされ、次のＲＭＷ＃２によるリードアドレス＃Ｂによるデータがデータ＃４〜＃７とされ、ＲＭＷ＃１とＲＭＷ＃２とでデータ＃３が重複している。この場合、データ＃３は、ＲＭＷ＃１によるライトが行われてから、ＲＭＷ＃２によるリードを行う必要がある。
【００８８】
ところが、図１８の例では、アドレスの衝突の有無をチェックしていないため、ＲＭＷ＃１とＲＭＷ＃２とで重複するデータ＃３においてアドレスの衝突が起こることが検出できない。そのため、データ＃３がＲＭＷ＃１により先ずリードデータ１００としてリードされ、そのデータ＃３が、ＲＭＷ＃１によるライトが行われる前に、ＲＭＷ＃２によりリードデータ１０１としてリードされ、その後、ライトデータ１０２としてライトされる。したがって、ライトデータ１０２は、ＲＭＷ＃２によるライトが反映されておらず、正しい論理演算結果が得られない。この場合、後続する同じデータ＃３によるライトデータ１０３も、正しくないことになる。
【００８９】
これを避けるためには、図１９に例示されるように、リードアドレス＃Ａおよび＃Ｂでアドレス衝突を認識し、リードアドレス＃ＡのＲＭＷ＃１によるデータ＃０〜＃３のライト処理が終了した後に、リードアドレス＃ＢのＲＭＷ＃１によるデータ＃３〜＃７のリードを行うことが考えられる。この場合でも、正しい論理演算結果が得られる一方で、待機時間が発生する分、処理が遅くなる。
【００９０】
実施形態では、図１３および図１４を用いて説明したように、ＲＭＷを用いる論理演算を行う描画情報を複数記憶して、ライト要求の際に、描画アドレスが、複数のＲＭＷの描画情報間で一致していないかを確認し、一致しないとされた場合、ＲＭＷによるリード処理とライト処理とを並行して実施している。そのため、処理を高速に実行することが可能となる。
【００９１】
なお、ＲＭＷによるアドレス衝突を避ける方法として、メモリにアクセスするための情報（アドレス情報、論理演算タイプ、描画マスク、ライトする描画パターンなど）をＦＩＦＯ(First  In,  First  Out)メモリに順次格納し、ＦＩＦＯメモリ内部でライトおよびリードのアドレス衝突の有無を監視して衝突が無ければ順次ＦＩＦＯからメモリアクセス情報を読み出してメモリをアクセスする方法が考えられる。
【００９２】
しかしながらこの方法では、ＦＩＦＯメモリにメモリアクセス情報を準じ格納するために、ＦＩＦＯメモリが巨大化し大きなゲート規模が必要となってしまう。また、ＦＩＦＯメモリが一杯になるとその時点でＦＩＦＯメモリが空になるまで待機する必要があり、高速化が困難である。さらに、メモリアクセス時に、ＦＩＦＯメモリ内のアドレスと順次比較する必要があり、処理の高速化を妨げていた。
【００９３】
例えばバースト長が１６ビットによる８回分のアクセスであれば、１２８個のメモリアクセス情報をＦＩＦＯメモリに格納する必要があり、ＦＩＦＯメモリに大きか容量が必要となると共に、高速化のために少なくとも１２８個のアドレス比較装置が必要とされ、ゲート規模が大きくなってしまう。
【００９４】
実施形態では、アドレスの衝突チェックを、メモリアクセス単位に開始アドレスとレングス（描画長さ）に基づきアドレス一致の有無を確認することで行なっているためゲート規模が小さくて済み、高速処理が可能である。また、ゲート規模が小さいのでより多くメモリアクセスに対応することができる。
【００９５】
上述の実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。
【符号の説明】
【００９６】
１  画像処理装置
１３  ＡＸＩバス
１４  メインメモリ
１５  描画部
３０  論理演算部
３１  描画パターン生成部
５２Ａ，５２Ｂ  ＲＭＷ描画アドレスレジスタ
５３Ａ，５３Ｂ  ＲＭＷ描画レングスレジスタ
５４Ａ，５４Ｂ  ＲＭＷ＿ＲＯＰＴＹＰＥレジスタ
５５Ａ，５５Ｂ  ＲＭＷライト描画パターンバッファ
５６  ライト描画アドレスレジスタ
５７  ライトレングスレジスタ
５８  ライトＲＯＰＴＹＰＥレジスタ
５９  ライト描画パターンバッファ
６４  ＲＭＷ＿ＲＯＰＴ処理部
６７  リード制御部
６８  ライト制御部
６９  ライトアドレスチェック部
７０  ライト用ＲＯＰＴ処理部
７２  リードアドレスチェック部
７３  コントローラ
【先行技術文献】
【特許文献】
【００９７】
【特許文献１】特開２００４−２３０７４２号公報
【図１】
2014060579.tif 000003
【図２】
2014060579.tif 000004
【図３】
2014060579.tif 000005
【図４】
2014060579.tif 000006
【図５】
2014060579.tif 000007
【図６】
2014060579.tif 000008
【図７】
2014060579.tif 000009
【図８】
2014060579.tif 000010
【図９】
2014060579.tif 000011
【図１０】
2014060579.tif 000012
【図１１】
2014060579.tif 000013
【図１２】
2014060579.tif 000014
【図１３】
2014060579.tif 000015
【図１４】
2014060579.tif 000016
【図１５−１】
2014060579.tif 000017
【図１５−２】
2014060579.tif 000018
【図１５−３】
2014060579.tif 000019
【図１６】
2014060579.tif 000020
【図１７−１】
2014060579.tif 000021
【図１７−２】
2014060579.tif 000022
【図１７−３】
2014060579.tif 000023
【図１８】
2014060579.tif 000024
【図１９】
2014060579.tif 000025
【図２０】
2014060579.tif 000026