(57)【要約】【課題】印刷装置における展開処理に適したデータバッファリングにより、画像データへのアクセスを高速化することのできる印刷装置等を提供する。【解決手段】画素毎に表現された画像データに基づいて印刷を実行する印刷装置が、前記画像データを生成する制御手段と、前記画像データを描画領域に格納する第一メモリと、第一メモリに対するアクセスよりも速くアクセスすることが可能であり、制御手段がアクセスする描画領域の画像データを読み込んで制御手段にアクセスさせる第二メモリとを有し、制御手段から描画領域に対するリードアクセスがあった際に当該リードアクセスによって指定されたアドレスのデータを含む所定単位の画像データを第二メモリへ読み込むと共に、当該第二メモリに読み込まれる画像データの一部であって、前記指定されたアドレスのデータを含む画像データを第二メモリを介さずに制御手段に転送する。【選択図】  図３
2006256105.tif 000002
【特許請求の範囲】
【請求項１】
画素毎に表現された画像データを生成し当該画像データに基づいて印刷を実行する印刷装置であって、
前記画像データを生成する処理を実行する制御手段と、
前記画像データを描画領域に格納する第一メモリと、
前記第一メモリに対するアクセスよりも速くアクセスすることが可能であり、前記第一メモリからの１回のデータ転送量が、前記第一メモリから前記制御手段への１回のデータ転送量よりも大きく設定されているメモリであって、前記制御手段がアクセスする前記描画領域の画像データを読み込み、当該読み込んだ画像データに対して前記制御手段にアクセスさせる第二メモリと、を有し、
前記第一メモリの描画領域から前記第二メモリへ画像データを読み込む際に、当該読み込みが、前記制御手段の前記描画領域に対するリードアクセスによって行なわれるものである場合には、当該リードアクセスによって指定されたアドレスのデータを含む所定単位の画像データを前記第二メモリへ読み込むと共に、当該第二メモリに読み込まれる画像データの一部であって、前記指定されたアドレスのデータを含む画像データを前記第二メモリを介さずに前記制御手段に転送する
ことを特徴とする印刷装置。
【請求項２】
請求項１において、
前記第二メモリは複数のメモリで構成され、
前記制御手段から前記描画領域に対するアクセスがあった際に、当該アクセスによって指定されたアドレスのデータが前記複数のメモリのいずれかに格納されている場合には、前記第一メモリから前記第二メモリへの画像データの読み込みは行わない
ことを特徴とする印刷装置。
【請求項３】
請求項２において、
前記第一メモリから前記第二メモリへの画像データの読み込みが行われる際には、前記複数のメモリのうち前記制御手段にアクセスされた時期が最も古いメモリに、当該画像データの読み込みが行われる
ことを特徴とする印刷装置。
【請求項４】
請求項２あるいは請求項３において、
前記制御手段による前記第二メモリへのアクセス中に、前記複数のメモリのうち当該アクセスを受けていないメモリの更新されたデータを前記第一メモリへ書き戻す
ことを特徴とする印刷装置。
【請求項５】
請求項４において、
前記第二メモリが３以上の前記メモリで構成されている場合には、
前記更新されたデータの第一メモリへの書き戻しは、前記複数のメモリのうち前記制御手段にアクセスされた時期が２番目に古いメモリについて行なわれる
ことを特徴とする印刷装置。
【請求項６】
画素毎に表現された画像データを生成する制御手段と、前記画像データを描画領域に格納する第一メモリと、前記第一メモリに対するアクセスよりも速くアクセスすることが可能であり、前記第一メモリからの１回のデータ転送量が、前記第一メモリから前記制御手段への１回のデータ転送量よりも大きく設定されている第二メモリとを有し、前記生成された画像データに基づいて印刷を実行する印刷装置におけるデータ処理方法であって、
前記制御手段から前記第一メモリの描画領域に対するリードアクセスがあった際に、当該リードアクセスによって指定されたアドレスのデータを含む所定単位の画像データを前記第二メモリへ読み込むと共に、当該第二メモリに読み込まれる画像データの一部であって、前記指定されたアドレスのデータを含む画像データを前記第二メモリを介さずに前記制御手段に転送する
ことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを用いて印刷を実行する印刷装置等に関し、特に、画像データへのアクセスを高速化することのできる印刷装置等に関する。
【背景技術】
【０００２】
一般に、プリンタでは、ホスト装置から送信される印刷データに基づいて印刷を行うが、印刷を実行するまでの間に、前記印刷データから中間コードを生成する処理、当該中間コードから画素毎の画像データに展開する処理、当該画像データの色変換を行って圧縮する処理、圧縮後のデータを解凍してドットのイメージにする処理等を行っている。そして、それらの処理の過程で生成される、中間コード、画像データ、圧縮後の画像データ等は、通常、プリンタ内のメモリに格納される。
【０００３】
このプリンタ内のメモリは、通常、上記各処理過程で生成されたデータを格納するなど多目的で使用されるので、アクセススピードよりも大容量であることが重視され、ＤＲＡＭが用いられる場合が多い。前述した中間コードから画素毎の画像データに展開する処理は、ＣＰＵがこのＤＲＡＭに繰り返しアクセスして処理を行うが、ＣＰＵがＤＲＡＭから読み書き（リード、ライト）する画像データの容量が大きいことから、前述したプリンタにおける処理の中で最も時間を要する処理となっている。
【０００４】
一方、下記特許文献１には、一つのバッファリング手法が提案されている。ここで提案されているシステムでは、中央処理装置が必要とするデータは中央処理装置に転送し、そのデータに隣接するデータをバッファリングしておくことが示されている。
【特許文献１】特開平４−１６０６６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述の通り、従来のプリンタでは、上記中間コードから画像データへの展開処理に時間がかかり、プリンタにおけるスループットの向上にとって一つのボトルネックとなっていた。従って、かかる処理に必要なＣＰＵからメモリ（ＤＲＡＭ等）へのアクセスを高速化することが望まれている。
【０００６】
また、上記特許文献１に記載のバッファリングでは、前述のように、中央処理装置が必要とするデータに隣接するデータをバッファリングのであって、バッファ手段に中央処理装置が必要とするデータは保持しないので、ＣＰＵから画像データへのライトも必要な前記展開処理のバッファリングとしては不十分である。
【０００７】
そこで、本発明の目的は、印刷装置における展開処理に適した画像データのバッファリングにより、画像データへのアクセスを高速化することのできる印刷装置等を提供することである。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明の一つの側面は、画素毎に表現された画像データを生成し当該画像データに基づいて印刷を実行する印刷装置が、前記画像データを生成する処理を実行する制御手段と、前記画像データを描画領域に格納する第一メモリと、前記第一メモリに対するアクセスよりも速くアクセスすることが可能であり、前記第一メモリからの１回のデータ転送量が、前記第一メモリから前記制御手段への１回のデータ転送量よりも大きく設定されているメモリであって、前記制御手段がアクセスする前記描画領域の画像データを読み込み、当該読み込んだ画像データに対して前記制御手段にアクセスさせる第二メモリと、を有し、前記第一メモリの描画領域から前記第二メモリへ画像データを読み込む際に、当該読み込みが、前記制御手段の前記描画領域に対するリードアクセスによって行なわれるものである場合には、当該リードアクセスによって指定されたアドレスのデータを含む所定単位の画像データを前記第二メモリへ読み込むと共に、当該第二メモリに読み込まれる画像データの一部であって、前記指定されたアドレスのデータを含む画像データを前記第二メモリを介さずに前記制御手段に転送することである。従って、本発明によれば、制御手段による描画領域へのアクセスを高速に行なうことが可能となる。
【０００９】
更に、上記の発明において、その好ましい態様は、前記第二メモリは複数のメモリで構成され、前記制御手段から前記描画領域に対するアクセスがあった際に、当該アクセスによって指定されたアドレスのデータが前記複数のメモリのいずれかに格納されている場合には、前記第一メモリから前記第二メモリへの画像データの読み込みは行わないことを特徴とする。これにより、第一メモリへのアクセス回数を減らすことができ、より処理の高速化を図ることができる。
【００１０】
更に、上記の発明において、好ましい態様は、前記第一メモリから前記第二メモリへの画像データの読み込みが行われる際には、前記複数のメモリのうち前記制御手段にアクセスされた時期が最も古いメモリに、当該画像データの読み込みが行われることを特徴とする。
【００１１】
また、上記の発明において、好ましい態様は、前記制御手段による前記第二メモリへのアクセス中に、前記複数のメモリのうち当該アクセスを受けていないメモリの更新されたデータを前記第一メモリへ書き戻すことを特徴とする。これにより、第一メモリから第二メモリへのデータ読み込みが必要になった際に、第一メモリへの書き戻しを行なわずに直ぐにデータ読み込みを行うことができ、処理の高速化を図ることができる。
【００１２】
更に、上記の発明において、好ましい態様は、前記第二メモリが３以上の前記メモリで構成されている場合には、前記更新されたデータの第一メモリへの書き戻しは、前記複数のメモリのうち前記制御手段にアクセスされた時期が２番目に古いメモリについて行なわれることを特徴とする。
【００１３】
上記の目的を達成するために、本発明の別の側面は、画素毎に表現された画像データを生成する制御手段と、前記画像データを描画領域に格納する第一メモリと、前記第一メモリに対するアクセスよりも速くアクセスすることが可能であり、前記第一メモリからの１回のデータ転送量が、前記第一メモリから前記制御手段への１回のデータ転送量よりも大きく設定されている第二メモリとを有し、前記生成された画像データに基づいて印刷を実行する印刷装置におけるデータ処理方法において、前記制御手段から前記第一メモリの描画領域に対するリードアクセスがあった際に、当該リードアクセスによって指定されたアドレスのデータを含む所定単位の画像データを前記第二メモリへ読み込むと共に、当該第二メモリに読み込まれる画像データの一部であって、前記指定されたアドレスのデータを含む画像データを前記第二メモリを介さずに前記制御手段に転送することである。
【００１４】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
【００１６】
図１は、本発明を適用した印刷装置の実施の形態例に係る構成図である。図１のプリンタ２が、本実施の形態例に係る印刷装置であり、ホストコンピュータ１から送信される印刷データに基づいて印刷処理を実行するが、メモリ（ＤＲＡＭ）７（第一メモリ）とは別に描画バッファ部１６を備え、展開処理時（描画時）のメモリ７へのアクセスを高速に行おうとするものである。
【００１７】
図１に示すホストコンピュータ１は、プリンタ２に対して印刷要求を行うホスト装置である。ホストコンピュータ１内には印刷指示元のアプリケーション３と、その指示に基づいてプリンタ２に送信する印刷データを生成するプリンタドライバ４がある。
【００１８】
プリンタ２は、図１に示すような各部から構成される。なお、図１に示すプリンタ２は、概ね機能ブロックとし表現されている。まず、Ｉ／Ｆ部５は、前記ホストコンピュータ１から送信される印刷データを受信し、中間コードを生成する部分である。生成された中間コードは、メモリ（ＤＲＡＭ）７に保存される。
【００１９】
展開部６は、生成された中間コードから画素毎のデータである画像データを生成する部分である。この画像データは、Ｒ（レッド）Ｇ（グリーン）Ｂ（ブルー）の各濃度値のデータから構成され、以下、ＲＧＢデータと呼ぶこととする。生成されたＲＧＢデータは、メモリ（ＤＲＡＭ）７に保存される。この展開部６は、具体的には、後述するＣＰＵ１３、描画バッファ部１６を含むＡＳＩＣ１７等で構成され、展開部６が処理を行う際のＲＧＢデータへのアクセスに本プリンタ２の特徴がある。
【００２０】
次に、色変換部８は、生成されたＲＧＢデータを印刷時に使用するＣ（シアン）Ｍ（マゼンダ）Ｙ（イエロー）Ｋ（ブラック）のデータに変換する部分であり、圧縮部９は、そのデータを圧縮してメモリ７に格納する部分である。また、解凍部１０、スクリーン処理部１１は、エンジン１２に同期して処理を実行する後段の処理部であり、所定のタイミングで前記圧縮されたＣＭＹＫデータをメモリ７から読み出し、順次、解凍処理、スクリーン処理を行って、処理後のデータをエンジン１２に引き渡す。エンジン１２は、スクリーン処理後のデータに基づいて、印刷媒体に対する印刷を実行する。
【００２１】
図２は、前記展開処理を司る部分のハードウェア構成図である。前述した中間コードから画像データ（ＲＧＢデータ）への展開処理は、ＣＰＵ１３（制御手段）が行う。また、前述の通り、当該展開処理に用いられる中間コードとＲＧＢデータは、メモリ（ＤＲＡＭ）７に格納される。また、ＣＰＵ１３とメモリ７をつなぐＡＳＩＣ１７には、ＣＰＵＩ／Ｆ部１４、メモリＩ／Ｆ部１５、及び描画バッファ部１６が備えられる。ＣＰＵＩ／Ｆ部１４及びメモリＩ／Ｆ部１５は、それぞれ、ＣＰＵ１３がメモリ７にアクセスする際の、ＣＰＵ１３側、メモリ７側のインターフェースを司る部分である。また、描画バッファ部１６は、ＣＰＵ１３が、メモリ７のＲＧＢデータの格納されている領域（以下、描画領域と呼ぶ）にアクセスする際のデータのバッファリングを行う部分であり、当該描画バッファ部１６を有することが本プリンタ２の特徴である。
【００２２】
ＣＰＵ１３が、メモリ７の前記描画領域以外にアクセスする場合には、上記ＣＰＵＩ／Ｆ部１４及びメモリＩ／Ｆ部１５を経由した通常の方法で、データのリード、ライトが行われる。本ＣＰＵ１３は、一般的に流通しているアーキテクチャを有しており、ＤＲＡＭへのアクセスでは、一例として最大４バーストアクセス（一度に３２バイトのアクセス）となっている。従って、ＣＰＵ１３からメモリ７へのアクセスは、４バーストアクセスとなる。複数の処理を実行するＣＰＵ１３と多目的に使用されるメモリ７との間のアクセスについては、単に一回のデータ転送量を多くすればよいというものではないのでこのような値に設定されている。
【００２３】
ＣＰＵ１３が中間コードからＲＧＢデータを生成する前記展開処理を行う際には、順次、メモリ７の中間コードを取り出して対応するＲＧＢデータを生成していくが、ＲＧＢデータの各画素の値は、一回の処理で最終的な値が確定するとは限らず、複数回の処理の結果確定する画素（領域）もある。従って、かかる展開処理をする際に、ＣＰＵ１３は、中間コードだけでなく処理対象の領域のＲＧＢデータもメモリ７からリードし、処理後のデータを再び、メモリ７の元の位置にライトするという処理を行う。
【００２４】
このように、前記展開処理では、ＣＰＵ１３からメモリ７の描画領域へのアクセスが行われることになるが、かかる描画領域へのアクセスの場合には、前記通常のアクセス方法とは異なり、前記描画バッファ部１６を経由したアクセスが行われる。具体的なアクセス方法については後述するが、描画バッファ部１６からメモリ７へのアクセスは、前記ＣＰＵ１３の制限がないので、４バースト以上のアクセス、例えば、８バーストアクセス、１６バーストアクセスが可能であり、この例では、１６バーストアクセスに設計されている。
【００２５】
図３は、本プリンタ２の特徴である描画バッファ部１６の構成を示した図である。前述のように、描画バッファ部１６は、ＣＰＵ１３がメモリ７の描画領域にアクセスする際に、当該描画領域に格納されているＲＧＢデータを適宜メモリ７からリードし、そのデータに対するＣＰＵ１３からのリード、ライトが行われた後に、再び、メモリ７へライトする処理を行う。そして、これらＣＰＵ１３及びメモリ７とのアクセスは、図２に示したとおり、ＣＰＵＩ／Ｆ部１４及びメモリＩ／Ｆ部１５を経由して行われる。
【００２６】
図３に示すように、描画バッファ部１６は、ＣＰＵ側制御部１８、メモリ側制御部１９、及び４つのバッファ２０（Ａ〜Ｄ）（第二メモリ）を備えている。また、メモリ側制御部１９とＣＰＵ側制御部１８の間は、バッファ２０を介さないでデータをメモリ７からＣＰＵ１３へ転送するためのバス２１でつながれている。
【００２７】
ＣＰＵ側制御部１８は、ＣＰＵ１３とのタイミング調整とバッファ２０の制御を行う部分であり、メモリ側制御部１９は、メモリ７へのアクセスとのタイミング調整を行う部分である。バッファ２０（Ａ〜Ｄ）は、メモリ７の描画領域へアクセスする際のデータバッファであり、メモリ７との前述したバーストアクセスに都合の良いサイズ、例えば、１２８ビット×８、６４ビット×１６等のバッファ容量を有している。そして、当該バッファ２０として、具体的には、メモリ７（ＤＲＡＭ）よりもアクセススピードの速いＳＲＡＭを採用している。なお、本実施の形態例においては、メモリ７にＤＲＡＭを用い、バッファ２０にＳＲＡＭを用いているが、バッファ２０の方にアクセススピードが速いものを採用するのであれば、メモリの種類は他のものであっても構わない。
【００２８】
このように、描画バッファ部１６において、バッファ２０としてアクセススピードの速いメモリを採用していること、メモリ７との間で４バーストを超えるアクセスが可能であること、前記バス２１が設けられていること等が、メモリアクセスを高速化しようとする本プリンタ２の大きな特徴である。
【００２９】
図４は、ＣＰＵ１３からメモリ７へのアクセスがあった際の処理手順を例示した図である。以下、図４に基づいて、本プリンタ２の特徴部分である描画バッファ部１６を用いたＣＰＵ１３からメモリ７へのアクセスについて具体的に説明する。
【００３０】
まず、ＣＰＵ１３からメモリ７へのアクセスリクエストがあると、当該リクエストを受け取ったＣＰＵＩ／Ｆ部１４は、当該リクエストが前述した描画領域へのアクセスであるか否かをチェックする（ステップＳ１）。そして、描画領域へのアクセスでない場合には（ステップＳ１のＮｏ）、通常のアクセス方法にてメモリ７へのアクセスを実行する（ステップＳ２）。即ち、描画バッファ部１６を経由しないでメモリ７に格納されているデータへのリード、ライトを行う。
【００３１】
一方、描画領域へのアクセスである場合には（ステップＳ１のＹｅｓ）、当該アクセスリクエスト、アクセス先のアドレス等が描画バッファ部１６に渡され、当該リクエストによりアクセスする領域のデータが、描画バッファ部１６内（バッファ２０内）に存在しているか否かがチェックされる（ステップＳ３）。なお、描画領域は、メモリ（ＤＲＡＭ）７の所定の位置に確保されており、そのアドレスは固定である。
【００３２】
かかる判断において、アクセスする領域がバッファ２０内に存在していなかった場合には（ステップＳ３のＮｏ）、当該領域のデータ（ＲＧＢデータ）をメモリ７からバッファ２０へ読み込むが、その際にまず、ＣＰＵ１３からのリクエストがリードであるかライトであるかをチェックする（ステップＳ４）。そして、リクエストがリードであれば、メモリ７から、リクエストされた領域を含む所定範囲の画像データをリードして、そのデータを所定のバッファ２０へ格納すると共に、リードしたデータのうち前記リクエストされた領域の部分のデータをＣＰＵ１３へ出力する（ステップＳ５）。
【００３３】
図５は、かかるメモリ７からのデータリードを説明するための図である。図５の右側には、メモリ７内の描画領域が模式的に示されており、図のＢで示す各マスは、１回のリードでバッファ２０へ読み込むデータの範囲を示している。このように、バッファ２０に読み込むデータは、その先頭位置が予め定められており、読み込みの各回で、読み込むデータの一部が重なるようなことはない。
【００３４】
また、図５のＡで示す位置は、リクエストされたアクセス先の先頭アドレスであり、この例では、当該位置を含む前述した１マスのデータ（図のＢ）がバッファ２０に読み込まれる。図５の左側には、当該読み込まれるデータが大きく示されている。図に示すように、バッファ２０に読み込むデータは、各バッファ２０の容量と同サイズ（１２８バイト）となっており、前述したとおり、メモリ７と描画バッファ部１６間が１６バーストアクセスとなっているので、１回の転送により当該データをメモリ７から描画バッファ部１６に転送することができる。
【００３５】
また、前述したように、ＣＰＵ１３からのアクセスがリードである場合には、当該描画バッファ部１６に転送されたデータが全て所定のバッファ２０に格納されると共に、前記アクセス先の先頭アドレス（図５のＡ）を含む部分のデータ、図５に示すＲ１の部分のデータが並行してＣＰＵ１３に出力される。前述の通り、ＣＰＵ１３とのデータ転送は４バーストアクセスであるので、ＣＰＵ１３へ転送するＲ１は１回の転送分のサイズ（３２バイト）となっている。なお、図５では、バッファ２０に格納される１２８バイトのデータを４分割した各データをＲ０〜Ｒ３で表している。
【００３６】
また、前記データの読み込みは、図３に示したメモリ側制御部１９を介して行なわれ、メモリ７からリードされた１２８バイトのデータ（Ｒ０〜Ｒ３）は、メモリ側制御部１９から、順次所定のバッファ２０へ送られる。その過程で、Ｒ１のデータをメモリ側制御部１９からバッファ２０へ送る際には、メモリ側制御部１９は、同じデータを並行してバス２１からＣＰＵ側制御部１８にも転送する。ＣＰＵ側制御部１８は、送られたＲ１のデータをＣＰＵＩ／Ｆ部１４に転送し、そのデータがＣＰＵ１３に送られる。このように、ＣＰＵ１３が必要としたデータをバッファリングと並行してＣＰＵ１３にも転送することが、本プリンタ２の一つの大きな特徴である。
【００３７】
さらに、このメモリ７からのリードでは、データが、４つのバッファ２０のうち、カウンタ値が“０”のバッファ２０に読み込まれる。図示していないが各バッファ２０には、それぞれ、カウンタが設けられ、ＣＰＵ１３からのアクセスがあった時期の順番がカウントされる。ＣＰＵ１３からのアクセスがあった時期が最も新しいバッファ２０のカウンタ値は“３”とされ、以下順番に、“２”、“１”、“０”のカウンタ値が他のバッファ２０に与えられる。従って、カウンタ値が“０”であるバッファ２０は、ＣＰＵ１３からのアクセスがあった時期が最も古いバッファ２０であることを意味する。但し、後述するように、制御上、カウンタ値が“０”であるバッファ２０が複数存在する場合もある。なお、上記読み込みにおいて、カウンタ値が“０”であるバッファ２０が複数ある場合には、例えば、ＣＰＵ１３からのアクセスがあった時期が最も古いバッファ２０に読み込むことにする。
【００３８】
図４に戻って、ＣＰＵ１３からのリクエストがライトである場合には（ステップＳ４のライト）、前述したリード（Ｓ５）の場合と同様に、メモリ７から、リクエストされた領域を含む所定範囲の画像データ（１２８バイト）をリードして、そのデータをカウンタ値が“０”のバッファ２０に格納するが、ＣＰＵ１３への出力（データ転送）は行なわない（ステップＳ６）。
【００３９】
次に、描画バッファ部１６では、ステップＳ５の場合であっても、ステップＳ６の場合であっても、各バッファ２０のカウンタ値を変更する。具体的には、ステップＳ５又はＳ６でデータを読み込んだバッファ２０のカウンタ値を“３”にし、他のバッファ２０のカウンタ値をそれぞれ１減らす。
【００４０】
図６は、ＣＰＵアクセスと各バッファ２０のカウンタ値の関係を例示した図である。図６の（ａ）には、ＣＰＵ１３からのアクセスリクエストが、（１）〜（５）まで５回分例示されている。例えば、（１）回のアクセスリクエストは、バッファ２０に格納されている範囲外の描画領域へのリードリクエストであることを表し、（３）回のアクセスリクエストは、バッファＡに格納されているデータへのライトリクエストであることを表している。
【００４１】
また、図６の（ｂ）には、図６の（ａ）に示すリクエストを受けた際の各バッファＡ〜Ｄのカウンタ値を示している。図中大きい数字がカウンタ値であり、右側の小さい数字は後述するライトフラグの値を示している。
【００４２】
図６の（ｂ）において、各カウンタ値が一番左側に示されている状態であった場合に、図６の（ａ）における（１）回に示すようなアクセスリクエストがあると、バッファ２０内にアクセスする領域がないので、前述した図４のステップＳ３、Ｓ４、及びＳ５の手順に従ってメモリ７からのデータリードが行なわれる。そして、この際に、カウンタ値が“０”のバッファ２０はバッファＤであるので、リードされたデータはこのバッファＤに格納される。そして、前記ステップＳ７に従って、このバッファＤのカウンタ値が“３”にされ、他のバッファＡ〜Ｃのカウンタ値がそれぞれ１減らされて、図６の（ｂ）の（１）に示すような値となる。
【００４３】
その後、図６の（ａ）における（２）回に示すリクエストがあり、同様に、バッファ２０内にアクセスする領域がないので、前述した図４のステップＳ３、Ｓ４、及びＳ６の手順に従ってメモリ７からのデータリードが行なわれる。この際には、カウンタ値が“０”のバッファ２０はバッファＣであるので、リードされたデータはこのバッファＣに格納され、前記ステップＳ７に従って、このバッファＣのカウンタ値が“３”にされ、他のバッファ２０のカウンタ値がそれぞれ１減らされて、図６の（ｂ）の（２）に示すような値となる。
【００４４】
図４に戻って、ＣＰＵ１３がアクセスしようとする領域がバッファ２０内に存在する場合には（ステップＳ３のＹｅｓ）、前回のアクセス時とアクセスする先、すなわち、アクセスするバッファ２０が変わるか否かをチェックし（ステップＳ８）、変わらなければ（ステップＳ８のＮｏ）、各バッファ２０のカウンタ値を変更せず、アクセス先が変われば（ステップＳ８のＹｅｓ）、各バッファ２０のカウンタ値を変更する（ステップＳ９）。具体的には、アクセス先のバッファ２０のカウンタ値を“３”にし、他のバッファ２０のカウンタ値を１減らす。
【００４５】
図６に示した例では、（３）回に示すリクエストで、アクセス先のデータがバッファＡにあるので、前記ステップＳ８に処理が進み、前回のアクセスである（２）回で、バッファＣにデータが読み込まれて、そこにＣＰＵ１３からのライトアクセスがなされているので、今回アクセス先が変わることとなり、前記ステップ９に従って、バッファＡのカウンタ値が“３”にされ、他のバッファ２０のカウンタ値がそれぞれ１減らされて、図６の（ｂ）の（３）に示すような値となる。なお、このカウンタ値は負の値を取らないので、バッファＢのカウンタ値は“０”のままとなる。
【００４６】
また、（４）回に示すリクエストでは、同様に、アクセス先のデータがバッファＡにあるので、前記ステップＳ８に処理が進み、今回は、アクセス先に変更がないので前述のように各バッファ２０のカウンタ値は変更されず、図６の（ｂ）の（４）に示すような値となる。すなわち、（３）回時から変更はない。
【００４７】
図４に戻って、以上説明したステップＳ７、Ｓ８、又はＳ９が終わると、描画バッファ部１６では、ＣＰＵ１３からのアクセスを受け付け、リクエストがリードである場合には（ステップＳ１０のリード）、直前にメモリリードが発生したか（ステップＳ５を経由したか）否かをチェックし（ステップＳ１０−２）、メモリリードが発生していない場合はアクセス先のバッファ２０から所望のデータが読み出されて、ＣＰＵ側制御部１８、ＣＰＵＩ／Ｆ部１４を介してＣＰＵ１３へ転送される（ステップＳ１１）。直前にメモリリードが発生している場合は、ステップＳ５にて所望のデータをＣＰＵ１３へ転送済みであるため、バッファ２０からのデータ読み出しは行なわれない。図６の例では、（１）回及び（４）回がリードリクエストであるが、（１）回の場合はメモリ７からバッファ２０へのメモリリードが発生時にデータがＣＰＵ１３へ転送され、（４）回の場合はアクセス先であるバッファＡからデータが読み出される。
【００４８】
一方、リクエストがライトである場合には（ステップＳ１０のライト）、アクセス先のバッファ２０に対してＣＰＵ１３からの書き込みが行なわれる（ステップＳ１２）。そして、当該ライトを行なったバッファ２０のライトフラグを“１”（オン）にする（ステップＳ１３）。このライトフラグが“１”であることは、バッファ２０に格納しているデータがＣＰＵ１３からのデータで更新され、かつ、その更新後のデータがメモリ７へ書き戻されていないことを表している。また、ライトフラグが“０”（オフ）であることは、バッファ２０に格納しているデータがＣＰＵ１３からのデータで更新されていないか、又は、更新後のデータがメモリ７へ書き戻されていることを表す。すなわち、ライトフラグ“１”はメモリ７へ書き戻す必要があることを示し、ライトフラグ“０”はメモリ７へ書き戻す必要がないことを示す。
【００４９】
図６の例では、（２）回、（３）回、及び（５）回がライトリクエストであり、それぞれ、アクセス先であるバッファＣ、Ａ、Ｃに対してライトの処理がなされ、図６の（ｂ）に示すように、各バッファ２０のライトフラグが“１”になっている。（２）回及び（３）回においては、“０”から“１”に変更され、（５）回においては“１”のままとされる。
【００５０】
このように、描画バッファ部１６に対するＣＰＵ１３からのアクセスが行なわれている間に、必要がある場合には、描画バッファ部１６からメモリ７への書き戻し処理を並行して行なう。まず、その時点で、すなわち、ステップＳ７、Ｓ８、又はＳ９が終わった時点で、カウンタ値が“１”でかつライトフラグが“１”であるバッファ２０があるか否かをチェックする（ステップＳ１４）。
【００５１】
その結果、該当するバッファ２０がある場合には（ステップＳ１４のＹｅｓ）、当該バッファ２０に格納されているデータをメモリ７の所定の場所に書き戻す（ステップＳ１５）。言い換えれば、今回のＣＰＵアクセスの結果、ＣＰＵ１３からのアクセスがあった時期が２番目に古いバッファ２０に、メモリ７へ書き戻すべきデータがあれば、書き戻し処理を行なう。そして、当該バッファ２０のライトフラグを“０”（オフ）にする（ステップＳ１６）。
【００５２】
図６の例では、例えば、（１）回のリクエスト時に、バッファＢにおいて、カウンタ値が“１”でライトフラグが“１”になっているので、このバッファＢに格納されているデータがメモリ７へ書き戻されることになり、その後、バッファＢのライトフラグが“０”にされる。
【００５３】
一方、ステップＳ１４において、該当するバッファ２０がない場合には（ステップＳ１４のＮｏ）、前記メモリ７への書き戻しは行なわれない。図６の例では、例えば、（３）回のリクエスト時において、どのバッファ２０もカウンタ値“１”、ライトフラグ“１”になっていないので、メモリ７への書き戻しは行なわれない。
【００５４】
以上説明したように、ＣＰＵ１３からメモリ７への一つのアクセスリクエストが処理されると、次のメモリ７へのアクセスリクエストがあるか否かが判断され（ステップＳ１７）、リクエストがある場合には（ステップＳ１７のＹｅｓ）、前記ステップＳ１からの処理が繰り返し行われる。そして、リクエストがなくなりＣＰＵ１３における前記展開処理が終了すれば（ステップＳ１７のＮｏ）、一連の処理を終了する。なお、ここで展開処理が終了し、メモリ７の描画領域に収められる画像データが完成するので、バッファ２０内にメモリ７へ書き戻すべきデータが残っている場合には、すなわち、ライトフラグが“１”になっているバッファ２０がある場合には、そのデータをメモリ７へ書き戻す。図６の（５）回時において、展開処理を終了するのであれば、バッファＡ及びバッファＣの内容がメモリ７へ書き戻される。
【００５５】
図７は、メモリアクセスに要する時間を例示したタイムチャートである。図７に示す例は、ＣＰＵ１３がメモリ７の描画領域から１２８バイトのデータ（Ｒ０〜Ｒ３）をリードする場合であり、（ａ）、（ｂ）、及び（ｃ）は、それぞれ、描画バッファ部１６を用いない場合、描画バッファ部１６を用いるがバス２１を用いない場合、前述した本実施の形態例による処理を行う場合を示している。
【００５６】
図７の（ａ）では、ＣＰＵ１３とメモリ７との間のアクセスとなるので、前述の通り、４バーストアクセスとなり、１回に転送できるデータは３２バイトとなる。また、メモリ７は、前述の通り、アクセスの速くないＤＲＡＭで構成されている。従って、図に示すように、Ｒ０〜Ｒ３のデータは４回に分けて転送され、１回毎に転送のための準備時間（アドレス情報の読み出し等）を要し、全体としてＴ１の時間がかかることになる。
【００５７】
図７の（ｂ）では、本実施の形態例に係る描画バッファ部１６にバッファリングを行なうので、一度、メモリ７からバッファ２０へのデータ読み込みが行なわれる（図の上段）。かかる読み込みは、前述のように１６バーストアクセスでなされるので、準備後は１回で連続して１２８バイトのデータ（Ｒ０〜Ｒ３）を転送することができる。そして、この例では、バッファ２０へ読み込んだ後にＣＰＵ１３へ転送するので、Ｒ０から順番にバッファ２０からＣＰＵ１３への転送が行われる（図の下段）。かかる転送は、ＣＰＵ１３へのアクセスであるので４バーストとなり、１回の転送で３２バイトずつ送ることになる。また、バッファ２０は、前述のように、ＳＲＡＭで構成され、メモリ７の場合よりもアクセスが速いので、転送のための準備時間は短く、図に示すようなタイミングで出力が可能である。従って、メモリ７からＣＰＵ１３への転送は全体としてＴ１よりも短いＴ２で終わることになる。
【００５８】
図７の（ｃ）では、前述した本実施の形態例に係る処理が行なわれるので、概ね、前記（ｂ）の場合と同様となるが、バッファ２０へ読み込んでいる際に（図の上段）、バス２１を用いてＣＰＵ１３が必要とする３２ビット分のデータ（例えば、図のＲ０）を並行してＣＰＵ１３へ転送するので、バッファ２０に読み込んだ後の転送は３回（Ｒ１〜Ｒ３）でよくなり（図の下段）、先に並行して転送した分の転送時間が省かれるので、全体としての転送時間は更に短いＴ３となる。
【００５９】
このようにして、本実施の形態例に係るプリンタ２では、ＣＰＵ１３から直接メモリ７（ＤＲＡＭ）にアクセスする従来の転送方法よりも、高速に処理を行うことができる。
【００６０】
以上説明したように、本実施の形態例では、中間コードを展開した画像データを格納するＤＲＡＭ等で構成されるメモリ７とは別に、当該メモリ７よりもアクセスの速いＳＲＡＭ等で構成される複数のバッファ２０を有する描画バッファ部１６が設けられ、ＣＰＵ１３から前記メモリ７の描画領域へのアクセスにおいては、当該描画バッファ部１６を経由してデータのリード、ライトが行われる。また、当該描画バッファ部１６とメモリ７との間では１回のアクセスで扱えるデータ容量がＣＰＵ１３とメモリ７との間よりも大きく設計される。さらに、ＣＰＵ１３からのアクセスリクエストがリードである場合には、描画バッファ部１６は、メモリ７からバッファ２０にデータを読み込むのと並行して、ＣＰＵ１３が必要とするデータをバッファ２０へデータを読み込むのとは別パスでＣＰＵ１３へ転送する。
【００６１】
従って、データ量の多い前記画像データにアクセスする際に要する時間を、前述の通り短縮することができ、プリンタの処理において一つのボトルネックとなっていた前記展開処理の高速化を図ることができる。その結果として、プリンタ２のスループットの向上を図ることが可能となる。
【００６２】
また、描画バッファ部１６には、４つのバッファ２０を備えており、それらを切り換えて使用することによって、ＣＰＵ１３からのアクセスとメモリ７への書き戻しを並行して実行でき、さらに処理の高速化を図ることができる。さらに、前述したカウンタ値及びライトフラグを用いて、できるだけ効率的にメモリ７への書き戻し処理が行なわれるようになっている。
【００６３】
また、バッファ２０には比較的広い範囲のデータが読み込まれるため、メモリ７から描画バッファ部１６へのデータの読み込み回数を減らすことができ、これによっても処理が高速化される。
【００６４】
更に、当該描画バッファ部１６がＡＳＩＣ１７に一体に組み込まれ、その動作がＡＳＩＣ１７内で閉じているので、ＣＰＵ１３からは、描画バッファ部１６が用いられる場合にも通常のメモリアクセスと同等の扱いとなる。
【００６５】
なお、備えられるバッファ２０の数は４つでなくてもよく、２以上であれば同様の処理を行うことができる。また、前述のように、メモリ７にＤＲＡＭを用い、バッファ２０にＳＲＡＭを用いたのは一例であって、バッファ２０の方がアクセスが速ければ、他の種類のメモリを用いても構わない。
【００６６】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【図面の簡単な説明】
【００６７】
【図１】本発明を適用した印刷装置の実施の形態例に係る構成図である。
【図２】展開処理を司る部分のハードウェア構成図である。
【図３】プリンタ２の特徴である描画バッファ部１６の構成を示した図である。
【図４】ＣＰＵ１３からメモリ７へのアクセスがあった際の処理手順を示した図である。
【図５】メモリ７からのデータリードを説明するための図である。
【図６】ＣＰＵアクセスと各バッファ２０のカウンタ値の関係を例示した図である。
【図７】メモリアクセスに要する時間を例示したタイムチャートである。
【符号の説明】
【００６８】
１  ホストコンピュータ、  ２  プリンタ、  ３  アプリケーション、  ４  プリンタドライバ、  ５  Ｉ／Ｆ部、  ６  展開部、  ７  メモリ（第一メモリ）、  ８  色変換部、  ９  圧縮部、  １０  解凍部、  １１  スクリーン処理部、  １２  エンジン、  １３  ＣＰＵ（制御手段）、  １４  ＣＰＵＩ／Ｆ部、  １５  メモリＩ／Ｆ部、  １６  描画バッファ部、  １７  ＡＳＩＣ、  １８  ＣＰＵ側制御部、  １９  メモリ側制御部、  ２０  バッファ（第二メモリ）、  ２１  バス
【図１】
2006256105.tif 000003
【図２】
2006256105.tif 000004
【図３】
2006256105.tif 000005
【図４】
2006256105.tif 000006
【図５】
2006256105.tif 000007
【図６】
2006256105.tif 000008
【図７】
2006256105.tif 000009