(57)【要約】【課題】９０°回転印刷するときのフラッシュメモリからの画像データの読み出し効率を高くする。【解決手段】画像の行列方向に順次配列されたブロック単位で符号化された符号化画像データを画像メモリ２から読み出して、復号化し、復号化画像データをバンドメモリ１２に格納するプリンタにおいて、符号化画像データを読み出す画像読み出し部１０と、画像メモリから読み出した符号化画像データを一時的に格納するキャッシュメモリ８と、キャッシュメモリ内のキャッシュエレメントＥＬＭを画像の行方向のブロック毎に割り当てて、画像読み出し部１０からの読み出し要求に応答して、割り当てられた行内のブロックの符号化画像データを対応するキャッシュエレメントに一時的に格納するキャッシュコントロール部とを有する。９０°回転印刷するときの、画像メモリから画像データを読み出す効率を高くすることができる。【選択図】図８
2004082592.tif 000002
【特許請求の範囲】
【請求項１】
画像の行列方向に順次配列されたブロック単位で符号化された符号化画像データを画像メモリから読み出して、復号化し、復号化画像データをバンドメモリに格納するプリンタにおいて、
前記符号化画像データを読み出す画像読み出し部と、
前記画像メモリから読み出した符号化画像データを一時的に格納するキャッシュメモリと、
前記キャッシュメモリ内のキャッシュエレメントを前記画像の行方向のブロック毎に割り当てて、前記画像読み出し部からの読み出し要求に応答して、割り当てられた行内のブロックの符号化画像データを対応するキャッシュエレメントに一時的に格納するキャッシュコントロール部とを有することを特徴とするプリンタ。
【請求項２】
請求項１において、
右９０°回転印刷または左９０°回転印刷するときに、前記キャッシュコントロール部は、前記キャッシュエレメントを前記画像の行方向のブロック毎に割り当てることを特徴とするプリンタ。
【請求項３】
請求項１において、
前記符号化画像データは、ＪＰＥＧアルゴリズムにより符号化されていることを特徴とするプリンタ。
【請求項４】
請求項３において、
前記符号化画像データを復号化するときに利用される復元用データが、前記行列方向に配列された複数のブロックのうち、一部のブロックに対して保持され、前記ブロックの符号化画像データを復号化するときは、前記一部のブロックから順に復号化されることを特徴とするプリンタ。
【請求項５】
請求項１において、
前記画像の行数が、前記キャッシュエレメント数よりも少ない場合は、複数のキャッシュエレメントが少なくとも一部の行に割り当てられることを特徴とするプリンタ。
【請求項６】
請求項１において、
前記画像の行数が、前記キャッシュエレメント数よりも多い場合は、キャッシュエレメントが一部の行に割り当てられることを特徴とするプリンタ。
【請求項７】
請求項１において、
印刷レイアウトに応じて、印刷対象ページ内で複数種類の前記キャッシュエレメントの割り当てが行われることを特徴とするプリンタ。
【請求項８】
所定のアクセス単位で格納された画像データを画像メモリから読み出して、所定幅の画像データをバンドメモリに展開するプリンタにおいて、
前記画像データを読み出す画像読み出し部と、
前記画像メモリから読み出したアクセス単位の画像データを一時的に格納するキャッシュメモリと、
前記キャッシュメモリ内のキャッシュエレメントを画像の行毎に割り当てて、前記画像読み出し部からの読み出し要求に応答して、割り当てられた行内の画像データを対応するキャッシュエレメントに一時的に格納するキャッシュコントロール部とを有することを特徴とするプリンタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリを有するプリンタに関し、特に、ＪＰＥＧなどの圧縮アルゴリズムで圧縮された画像データを外部メモリから読み出して、画像データに復号化し、印刷するプリンタであって、外部メモリからの読み出しを高速化することができ、印刷時間を短縮したプリンタに関する。
【０００２】
【従来の技術】
一般に、プリンタは、ホストコンピュータから画像データを供給され、それを印刷エンジンの色に応じて色変換し、二値化するなどの所定の画像処理を行い、印刷エンジンにより画像を印刷する。一方で、近年のデジタルスチルカメラの普及に伴い、プリンタには、デジタルスチルカメラの補助記憶装置（例えばフラッシュメモリ）から直接画像データを読み出して、それを画像処理して印刷エンジンにより画像を印刷する機能が求められている。このようなホストコンピュータを利用せずに、補助記憶装置から画像データを読み出して印刷するプリンタは、例えばインクジェット方式の低コストプリンタであることが多く、そのようなプリンタ内には最低限必要な画像処理機能しか設けられない。
【０００３】
一方、画像データはビットマップデータのままではデータ量が大きくなるため、前述の補助記憶装置には、所定のアルゴリズムで圧縮された画像データが記憶されている。従って、プリンタは、その圧縮された画像データを復号化（伸長）する機能と、復号化された画像データを画像処理する機能とが求められる。
【０００４】
上記の圧縮アルゴリズムとしては、現在ＪＰＥＧ（Ｊｏｉｎｔ　Ｐｈｏｔｏｇｒａｐｈｉｃ　Ｅｘｐｅｒｔｓ　Ｇｒｏｕｐ）が使用されることが一般的になってきている。図１は、一般的なＤＣＴ方式によるＪＰＥＧ圧縮と復号化のアルゴリズムを示す図である。原画像ＩＭＧ１は、例えばＲＧＢ各８ビットで合計２４ビットのカラーデータであり、ＪＰＥＧ圧縮では、８ｘ８画素のブロック単位に分けて、各ブロックに対して圧縮が行われる。このブロックは、微少ブロック符号化ユニット（Ｍｉｃｒｏ−ｂｌｏｃｋ　Ｃｏｄｅｄ　Ｕｎｉｔ　：　ＭＣＵ）と称される。このようなブロックＭＣＵに対して、それぞれＤＣＴ処理（Ｄｉｓｃｒｅｔｅ　Ｃｏｓｉｎｅ　Ｔｒａｎｓｆｏｒｍ　：　ＤＣＴ）及び量子化処理により、画像の空間周波数を直流から高周波に分解し、それをエントロピー符号化により高周波部分を切り捨てて圧縮する。その結果、ＪＰＥＧ符号化画像ＩＭＧ２が生成される。この状態で、デジタルスチルカメラの補助記憶装置（通常フラッシュメモリ）に格納されている。
【０００５】
従って、プリンタでは、この圧縮されたブロックＭＣＵのデータを読み出して、各ブロックＭＣＵのデータに対してエントロピー復号化、量子化、逆ＤＣＴ（ＩＤＣＴ）処理の一連の復号化処理を行って、復号化画像ＩＭＧ３を生成する必要がある。
【０００６】
ＪＰＥＧの符号化画像データの特徴として、ブロックＭＣＵのデータは、１個のＤＣ成分（ＤＣ係数）と６３個のＡＣ成分（ＡＣ係数）とを有する。そして、各ブロックのＤＣ成分は、直前のＤＣ成分（ＤＣ成分の絶対値）との差分である。つまり、ブロックのＤＣ成分を求めるためには、直前のブロックのＤＣ成分にそのブロックの差分を加算する必要がある。従って、図１に示されるとおり、ＪＰＥＧ符号化画像ＩＭＧ２を復号化するためには、ブロックＭＣＵ１を先頭にして、順にＭＣＵ１〜ＭＣＵ４、ＭＣＵ５〜ＭＣＵ８、ＭＣＵ９〜ＭＣＵ１２、ＭＣＵ１３〜ＭＣＵ１６とラスタスキャンして読み出し、それぞれのブロックを順番に復号化する必要がある。
【０００７】
一方、前述の廉価版のプリンタでは、復号化された画像データをバンドメモリに格納展開し、バンドメモリ内の画像データについて画像処理を行い、印刷データを印刷エンジンに供給する。このバンドメモリは、高速アクセス可能な半導体メモリが利用されるのが一般的であり、コストの面から、その容量は、１ページ分の画像データを格納するほど大きくはない。従って、プリンタ内では、印刷対象の画像データの一部領域を復号化してバンドメモリに格納し、画像処理と印刷を行い、更に、次の一部領域の画像データを復号化してバンドメモリに格納し、画像処理と印刷を行い、更に、それを繰り返す。バンドメモリは、印刷エンジンが所定の高さで行方向に一斉に印刷を行うので、行方向の帯状領域の画像データを格納する。
【０００８】
図２は、符号化画像とバンドメモリとの関係を示す図である。図２には、印刷方向が図中の矢印に示されるように画像の上から下に向かって印刷される場合であり、画像の方向に変更がない（回転なし）場合の印刷処理における、バンドメモリ領域と符号化画像との関係が示される。この例では、ＪＰＥＧ符号化画像ＩＭＧ２が、ブロックＭＣＵ１〜ＭＣＵ１６で構成されるのに対して、バンドメモリ領域ＢＭＲは、各行の４つのブロックＭＣＵ１〜ＭＣＵ４の圧縮画像データしか格納することができない。従って、最初にバンドメモリに４つのブロックＭＣＵ１〜４の圧縮画像データが格納され、画像処理と印刷処理が行われると、バンドメモリ領域は図中の矢印方向に移動して、次に、ブロックＭＣＵ５〜ＭＣＵ８の圧縮画像データが格納され、同様に印刷され、更に、ブロックＭＣＵ９〜ＭＣＵ１２、ブロックＭＣＵ１３〜ＭＣＵ１８が同様に処理される。
【０００９】
図２の回転なしで印刷される場合は、バンドメモリに格納されるブロックの順番と、符号化されたブロックの順番とが一致しているので、先頭のブロックＭＣＵ１から順に読み出して、復号化することができる。
【００１０】
図３は、別の符号化画像とバンドメモリとの関係を示す図である。図３には、印刷方向が図中の矢印に示されるように画像の左から右に向かって印刷される場合であり、画像の方向が９０°回転される場合の印刷処理における、バンドメモリ領域と符号化画像との関係が示される。この場合は、バンドメモリ領域ＢＭＲに格納されるブロックは、最初はＭＣＵ１，５，９，１３、次にＭＣＵ２，６，１０，１４、次にＭＣＵ３，７，１１，１５、最後にＭＣＵ４，８，１２，１６となる。従って、符号化されたブロックの順番と異なる。
【００１１】
そのために、バンドメモリにブロックＭＣＵ１，５，９，１３の復号化データを格納するときは、先頭ブロックＭＣＵ１からラスタスキャンして読み出し、それぞれのブロックのデータを復号化し、処理対象のブロックＭＣＵ１，５，９，１３の復号化データをバンドメモリに格納する必要がある。更に、次のブロック群ＭＣＵ２，６，１０，１４の復号化データを格納するときも、再度、先頭ブロックＭＣＵ１からラスタスキャンして読み出し、それぞれのブロックのデータを復号化し、処理対象のブロックＭＣＵ２，６，１０，１４の復号化データをバンドメモリに格納する必要がある。次のブロック群ＭＣＵ３，７，１１，１５、ＭＣＵ４，８，１２，１６の場合も、同様に、先頭ブロックから全てのブロックを読み出して復号化する必要がある。
【００１２】
このような非効率的な復号化処理が必要な理由は、前述した各ブロックのＤＣ成分が差分データであることに起因する。そこで、上記の復号化処理を効率的に行うために、最初に全てのブロックの圧縮画像データを復号化したときに、所定のブロックにおけるＤＣ成分（ＤＣの絶対値）を復元用情報として記憶しておき、その後のブロック群の復号化処理の時は、この記憶したＤＣ成分を利用することで、全てのブロックを先頭から順番に復号化するという非効率的な処理を回避することが提案されている。例えば、特許文献１の通りである。
【００１３】
図４は、符号化画像と復元用情報との関係を示す図である。この例では、最初に先頭ブロックＭＣＵ１からラスタスキャン方向にブロックを読み出して符号化した時に、ブロックＭＣＵ１，５，９，１３及びブロックＭＣＵ３，７，１１，１５でのＤＣ成分の絶対値を、復元用情報としてエントリーデータメモリ（または復元用データメモリ）ＥＴ１，ＥＴ２に格納する。つまり、このエントリーデータメモリＥＴ１，ＥＴ２には、各ブロックのアドレスと、対応するＤＣ成分の絶対値とが格納される。
【００１４】
このようにすることで、次にブロックＭＣＵ４を復号化するときは、先頭ブロックＭＣＵ１から順に復号化する必要はなく、復元用情報を有する直近のブロックＭＣＵ３から順に復号化すれば良い。それにより、復号化の処理効率を上げることができる。
【００１５】
図５は、復元用情報を利用した時の分割画像を印刷する場合の符号化画像とバンドメモリ領域との関係を示す図である。この例では、４ｘ４ブロックの符号化画像ＩＭＧ２を、４分割して各分割画像ＩＭＧ２１、ＩＭＧ２２、ＩＭＧ２３、ＩＭＧ２４がそれぞれ印刷される。図４に示したとおり、網掛けされたブロックＭＣＵ１，３，５，９，１１，１３，１５に対する復元用情報がエントリーデータメモリに格納されている。従って、例えば、分割画像ＩＭＧ２４を印刷する場合、バンドメモリ領域ＢＭＲに格納されるブロックＭＣＵ１１の復号化データは、ブロックＭＣＵ１１の符号化画像データを読み出して、そのブロックの復元用情報を利用して復号化することで得ることができ、先頭ブロックＭＣＵ１から順に復号化する必要はない。更に、ブロックＭＣＵ１２の復号化データは、ブロックＭＣＵ１１の復号化で生成したＤＣ成分の絶対値をもとに、ブロックＭＣＵ１２の符号化データから求めることができる。このように、分割画像を印刷する場合に、復元用情報を利用することで、復号化処理を効率的に行うことができる。
【００１６】
図６は、復元用情報を利用した時の右９０°回転印刷する場合の符号化画像とバンドメモリ領域との関係を示す図である。図６には、バンドメモリ領域ＢＭＲが最後のブロック群ＭＣＵ４，８，１２，１６を復号化する場合を示している。この場合、ブロックＭＣＵ４の復号化には、ブロックＭＣＵ３に対応する復元用情報をもとにブロックＭＣＵ３の符号化データを復号化し、更に、ブロックＭＣＵ４の符号化データを復号化すればよく、先頭ブロックＭＣＵ１から順に復号化する必要はない。ブロックＭＣＵ８，１２，１６の場合も同様にして復号化することができる。従って、復元用情報を利用することで、バンドメモリ領域が１ページ分の全ての復号化画像データを格納することができなくても、効率的に復号化することができる。
【００１７】
【特許文献１】
特開平２００１−１１１８４１号公報
【００１８】
【発明が解決しようとする課題】
上記のように、復元用情報を利用することで、分割画像の印刷や９０°回転画像の印刷における復号化を効率的に行うことができるようになった。しかしながら、デジタルスチルカメラなどの補助記憶装置から符号化された画像データを読み出すことは、それ自体アクセス時間が長く、印刷に要する時間が長くなるという課題を有する。そのような課題を解決するためには、補助記憶装置へのアクセスに、キャッシュメモリを利用することが考えられる。
【００１９】
一般的なキャッシュメモリ方式では、キャッシュメモリに格納されたデータのアクセス頻度が高いデータや、アクセス時期が新しいデータのプライオリティを高く設定し、アクセス対象のデータがキャッシュミスされたら、そのプライオリティが低いデータをキャッシュアウトして、新たにアクセスされたデータをキャッシュインさせる。これにより、キャッシュヒットの確率を高く保って、アクセス時間がかかる補助記憶装置へのアクセス回数をできるだけ少なくする。
【００２０】
ところが、図３に示したような９０°右回転して印刷する場合には、上記の一般的なキャッシュメモリ方式では、補助記憶装置へのアクセス回数が高くなり、符号化画像データの効率的な読み出しを行うことができない。９０°右回転印刷する場合は、コラム方向の複数ブロックの画像データを読み出して、復号化し、バンドメモリに展開しなければならないからである。更に、補助記憶装置であるフラッシュメモリへのアクセス単位は、通常、５１２バイトのセクタ単位であり、このアクセス単位はブロックＭＣＵ単位とは必ずしも一致していない。即ち、ブロックＭＣＵの符号化された画像データの量は、画像によって異なり、アクセス単位に複数のブロックの符号化画像データが含まれる場合もあれば、単一のブロックもしくはブロックの一部の符号化画像データが含まれる場合もある。そのため、各行のブロックの符号化画像データを読み出す場合、アクセス対象ファイルがとびとびになりがちであり、それ故に一般的なキャッシュメモリの管理方法では、効率的ではなくなる。
【００２１】
そこで、本発明の目的は、印刷時間を短縮できるプリンタを提供することにある。
【００２２】
更に、本発明の別の目的は、補助記憶装置からの読み出しを高速化することができるプリンタを提供することにある。
【００２３】
【課題を解決するための手段】
上記の目的を達成するために、本発明の第１の側面は、画像の行列方向に順次配列されたブロック単位で符号化された符号化画像データを画像メモリから読み出して、復号化し、復号化画像データをバンドメモリに格納するプリンタにおいて、前記符号化画像データを読み出す画像読み出し部と、画像メモリから読み出した符号化画像データを一時的に格納するキャッシュメモリと、キャッシュメモリ内のキャッシュエレメントを画像の行方向のブロック毎に割り当てて、前記画像読み出し部からの読み出し要求に応答して、割り当てられた行内のブロックの符号化画像データを対応するキャッシュエレメントに一時的に格納するキャッシュコントロール部とを有することを特徴とする。
【００２４】
上記第１の側面によれば、画像復号部からの画像データの読み出し要求に応答して、キャッシュメモリまたは画像メモリから画像データを読み出すキャッシュコントロール部が、キャッシュメモリ内の複数のキャッシュエレメントを、画像の行方向のブロック毎に割り当てて、割り当てられたキャッシュエレメントに対応する行内のブロックの画像データを対応するキャッシュエレメントに一時的に格納するキャッシュ管理を行う。従って、画像を９０°回転して印刷する場合に、バンドメモリに複数の行の画像データを逐一格納するときのキャッシュヒット率を高くすることができ、読み出し効率を上げることができる。
【００２５】
上記の目的を達成するために、本発明の第２の側面は、所定のアクセス単位で格納された画像データを画像メモリから読み出して、所定幅の画像データをバンドメモリに展開するプリンタにおいて、前記画像データを読み出す画像読み出し部と、画像メモリから読み出したアクセス単位の画像データを一時的に格納するキャッシュメモリと、キャッシュメモリ内のキャッシュエレメントを画像の行毎に割り当てて、前記画像読み出し部からの読み出し要求に応答して、割り当てられた行内の画像データを対応するキャッシュエレメントに一時的に格納するキャッシュコントロール部とを有することを特徴とする。
【００２６】
上記第２の側面によれば、画像を９０°回転して印刷する場合に、バンドメモリに複数の行の画像データを逐一格納するときの、キャッシュメモリのキャッシュヒット率を高くすることができ、読み出し効率を上げることができる。
【００２７】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。
【００２８】
図７は、本実施の形態におけるプリンタの構成図である。プリンタ１には、デジタルスチルカメラの例えばフラッシュメモリなどからなる補助記憶装置２が脱着可能に取り付けられる。この補助記憶装置２には、例えばＪＰＥＧの圧縮アルゴリズムにより符号化された画像データが格納されている。プリンタ１は、上記補助記憶装置２に接続されるインターフェース４と、補助記憶装置２の符号化された画像データを読み出して復号化する画像復号部１０と、復号化された画像データを格納するバンドメモリ１２とを有する。バンドメモリ１２は、印刷される画像の一部分の画像データを格納する容量しか有していない。従って、バンドメモリ１２には、図２，図３に示したとおり、印刷方向の所定幅領域の画像データが格納される。
【００２９】
バンドメモリ１２に格納された復号化された画像データは、画像処理部１４によって、印刷エンジンのトナーやインクの色のデータに色変換され、更に誤差拡散法などの方法で二値化処理される。例えば、画像データがＲＧＢのカラーデータの場合であって、印刷エンジンがＣＭＹＫのインクジェットヘッドとすると、画像処理部１４では、バンドメモリ１２に格納された画像データを、ＲＧＢからＣＭＹＫに色変換し、各画素のＣＭＹＫのカラーデータを二値化処理して、印刷データを生成する。この印刷データは、エンジンコントローラ１６から、印刷エンジンにインクヘッド駆動パルスデータとして供給される。容量が限られたバンドメモリ１２には、印刷対象画像の全ての画像データを格納することができない。従って、複数回にわたって、復号化された画像データがバンドメモリ１２に格納され、画像処理され、印刷される。
【００３０】
画像復号部１０は、補助記憶装置２から符号化された画像データを読み出し、復号化する。具体的には、前述したＪＰＥＧの画像データをブロック毎に読み出し、復号化する。つまり、画像復号部は、画像読み出し機能を有する画像読み出し手段でもある。フラッシュメモリなどの補助記憶装置２へのアクセスは、あまり高速でないので、読み出し効率を上げるために、キャッシュメモリ８が設けられ、キャッシュモジュール６により、キャッシュメモリの管理が行われる。
【００３１】
更に、ＪＰＥＧの画像データの各ブロックのＤＣ成分が、直前のブロックのＤＣ成分の絶対値からの差分データであるので、復号化のためには、先頭ブロックから順番に復号化する必要がある。そこで、プリンタ１は、画像復号部１０が最初に符号化画像データを先頭ブロックから順番に復号化した時に生成される前述のＤＣ成分の絶対値を、復元用データとして、復元用データメモリＥＴに格納する。復元用データメモリＥＴには、全てのブロックに対するＤＣ成分の絶対値ではなく、一部の離散されたブロックに対するＤＣ成分の絶対値が、復元用データとして格納される。
【００３２】
そのために、復元用データ管理部２０が、画像復号部１０が復号化の過程で生成した所定のブロックのＤＣ成分の絶対値を取得して、復元用データとしてそのブロックのアドレスに関連付けて、復元用データメモリＥＴに格納する。即ち、図４に示した通りである。復元用データ管理部２０は、画像復号部１０によるその後の復号化処理において、必要に応じて復元用データを復元用データメモリＥＴから読み出して、画像復号部８に供給する。それにより、画像データの復号化処理において、毎回先頭のブロックから順に復号化する必要がなくなる。
【００３３】
図８は、本実施の形態におけるキャッシュモジュールとキャッシュメモリの詳細構成図である。キャッシュモジュール６内のキャッシュコントロール部２２は、画像復号部１０からの読み出し要求に応答して、キャッシュメモリ８内に要求された画像ファイルが格納されているか否かをチェックし、キャッシュヒットしている場合は、キャッシュメモリ８からその画像ファイルを出力し、キャッシュミスしている場合は、インターフェース４を介して補助記憶装置２から要求された画像ファイルを読み出して、キャッシュメモリ８に格納すると共に画像復号部１０に出力する。キャッシュヒットか否かのチェックをするために、キャッシュテーブル２４が設けられ、キャッシュミス時に補助記憶装置２から画像ファイルを読み出してキャッシュメモリ８に格納するたびに、キャッシュテーブル２４にはその画像ファイルのファイル番号とアドレスとが格納される。
【００３４】
通常、画像復号部１０の読み出し要求は、画像ファイルの５１２バイト単位で行われる。即ち、「ｘｘ画像ファイルのｘｘアドレスから５１２バイトの画像データを読み出せ」という読み出し要求である。この読み出し要求に応答して、フラッシュメモリ２は、その画像ファイルのアドレスに対応する５１２バイトの画像データに対応するセクタアドレスを検出し、そのセクタ内の５１２バイトの画像データを読み出す。この５１２バイトのアクセス単位は、必ずしも符号化された画像データのブロックＭＣＵの単位とは一致しない。ブロックＭＣＵ内の圧縮されたデータは、データの種類によってそのデータ量が異なり、ある時は５１２バイトのアクセス単位に複数のブロックの画像データが含まれたり、ブロックの一部の画像データのみが含まれたりする。
【００３５】
本実施の形態のキャッシュコントロール部２２は、キャッシュメモリ８内の複数のキャッシュエレメントＥＬＭ−１〜ＥＬＭ−ｎを、画像データＩＭＧ２の行方向のブロック群の画像データそれぞれに割り当てて、各キャッシュエレメントＥＬＭ−１〜ＥＬＭ−ｎ内には、対応する行の画像データを一時的に格納する。図８に示されるとおり、画像データＩＭＧ２の第１行目のブロックＭＣＵ１１〜ＭＣＵ１ｍの画像データは、キャッシュエレメントＥＬＭ−１内に格納される。同様に、第２行目のブロックＭＣＵ２１〜ＭＣＵ２ｍの画像データは、キャッシュエレメントＥＬＭ−２内に格納され、第ｎ行目のブロックＭＣＵｎ１〜ＭＣＵｎｍの画像データは、キャッシュエレメントＥＬＭ−ｎに格納される。
【００３６】
キャッシュメモリ８は、通常、ランダムアクセスメモリ内の所定のメモリ空間に割り当てられる。従って、その容量には限界があり、キャッシュエレメントの数にも限界がある。画像データのブロックの行数ｎが割り当て可能なキャッシュエレメント数を越える場合は、画像データの一部の行にキャッシュエレメントが割り当てられ、残りの行にはキャッシュメモリ自体が割り当てられない。一方、画像データのブロックの行数ｎが割り当て可能なキャッシュエレメント数未満の場合は、各行にできるだけ均等になるようにキャッシュエレメントが割り当てられる。つまり、少なくとも一部の行には複数のキャッシュエレメントが割り当てられる。
【００３７】
キャッシュエレメントの割り当ては、キャッシュコントロール部２２により行われ、その割り当てテーブルがエレメント管理テーブル２６に格納される。前述のｎ個のキャッシュエレメントにｎ行の画像データがそれぞれ割り当てられた場合は、エレメント管理テーブル２６には、各行の先頭ブロックのアドレスと各行のファイルサイズ（または最終アドレス）とが、キャッシュエレメントに対応付けて格納される。従って、キャッシュコントロール部２２は、このエレメント管理テーブル２６を参照することで、どのキャッシュエレメントに画像データを格納すべきかを確認することができる。
【００３８】
図２で説明したとおり、回転なしで印刷される場合は、バンドメモリには先頭ブロックから行列方向に沿ってブロックの画像データが順次格納されるので、キャッシュコントロール部２２は、上記したキャッシュエレメントの割り当てを行わずに、アクセス頻度と前回アクセスの新しさを基準とする一般的なキャッシュ制御を行う。
【００３９】
一方、図３で説明したように、９０°回転で印刷される場合は、バンドメモリにはコラム方向のブロックの画像データが格納されるので、キャッシュコントロール部２２は、上記したキャッシュエレメントの割り当てを行って、アクセス効率を高める。
【００４０】
以下、９０°回転印刷される場合のキャッシュ動作について、一般的なキャッシュ制御と本実施の形態によるキャッシュ制御との比較説明を行う。
【００４１】
図９は、画像データのブロックとアクセス単位との関係例を示す図であり、図１０は、右９０°回転印刷における従来例のキャッシュ動作を示す図である。図９の例では、画像データは２行４列のブロックで構成され、それぞれ奇数ブロックＭＣＵ１，３，５，７に対して復元用データＤＣ１，３，５，７が保存される。また、画像データのアクセス単位（例えば５１２バイト）は、図中破線Ｓ１，Ｓ２，Ｓ４，Ｓ５，Ｓ６に示される通りであり、画像データの１行目では、アクセス単位Ｓ１は、ブロックＭＣＵ１，２とＭＣＵ３の一部を含み、アクセス単位Ｓ２は、ブロックＭＣＵ３の残りとブロックＭＣＵ４とを含む。同様に、画像データの２行目では、アクセス単位Ｓ４，Ｓ５，Ｓ６が図示される通りのブロックの画像データを含む。また、キャッシュ管理では、２つのキャッシュエレメントＥＬＭ−１，２を有するキャッシュメモリに、いずれの行の画像データも格納される。そして、キャッシュ管理は、アクセス頻度が高いことを第１優先度、前回アクセスの新しさを第２優先度にして、キャッシュミスした時にキャッシュメモリのどのデータを置き換えるかを判断する。尚、キャッシュメモリに格納される画像データの単位は、上記アクセス単位である。
【００４２】
図１０を参照して、従来のキャッシュ動作について説明する。簡単のために、前提として、右９０°回転印刷に対応して、バンドメモリには、最初にブロックＭＣＵ１，５が格納され、次に、ブロックＭＣＵ２，６、ブロックＭＣＵ３，７、ブロックＭＣＵ４，８がそれぞれ順に格納される。つまり、バンドメモリのバンド幅は、１ブロックであることを前提とする。
【００４３】
復号化対象ブロックがＭＣＵ１の場合、画像復号部１０がブロックＭＣＵ１を含む画像データＳ１の読み出し要求を行う。キャッシュコントロール部２２は、それに応答して、画像データＳ１を補助記憶装置２から読み出して、キャッシュメモリ内に格納し、画像復号部１０に出力する。この時、キャッシュテーブル２４に画像データＳ１の画像ファイル番号及びアドレスが格納される。
【００４４】
更に、復号化対象ブロックがＭＣＵ５となり、画像復号部１０がブロックＭＣＵ５を含む画像データＳ４の読み出し要求を行う。これに応答して、キャッシュコントロール部２２は、画像データＳ４を読み出して、キャッシュメモリに格納し、画像復号部１０に出力する。この時、キャッシュテーブル２４に画像データＳ４の画像ファイル番号とアドレスが格納される。以上で、バンドメモリ内には、ブロックＭＣＵ１，５の復号化された画像データが格納される。画像復号部１０は、復元用データＤＣ５とブロックＭＣＵ５のデータとから復号化処理を行う。
【００４５】
次に、復号化対象ブロックはＭＣＵ２，６になる。ブロックＭＣＵ１，２の読み出し要求に対して、キャッシュコントロール部２２は、キャッシュテーブル２４内にその画像ファイル番号とアドレスとが格納されていることを検出して、キャッシュヒットしていることを確認し、キャッシュメモリから画像データＳ１を出力する。この時、キャッシュメモリのデータ入れ替えは行われない。画像復号部１０は、復元用データＤＣ１を使ってブロックＭＣＵ１を復号化し、更に、ブロックＭＣＵ２を復号化する。
【００４６】
また、ブロックＭＣＵ６の読み出し要求に対しては、キャッシュヒットした画像ファイルＳ４をキャッシュメモリから出力し、復元用データＤＣ５を利用してブロックＭＣＵ５を復号化し、更に、ブロックＭＣＵ６を復号化する。そのために、ブロックＭＣＵ６の残りが含まれる画像データＳ５を、補助記憶装置から読み出し、キャッシュメモリ内の画像データＳ１と入れ替え、同時に画像復号部１０に出力する。画像データＳ１のほうがＳ５よりも前にアクセスされているので、画像データＳ１がキャッシュメモリから破棄されるのである。その結果、キャッシュメモリ内には、画像データＳ４，Ｓ５が一時格納された状態になる。
【００４７】
次に、復号化対象ブロックはＭＣＵ３，７になる。ブロックＭＣＵ３を含む画像データＳ１，Ｓ２はいずれもキャッシュヒットしないので、それぞれ補助記憶装置から読み出されて、キャッシュメモリ内に格納される。更に、ブロックＭＣＵ７を含む画像データＳ５もキャッシュヒットしないので、補助記憶装置から読み出されて、キャッシュメモリ内に格納される。これらの一連のデータ入れ替えでは、画像データＳ４のアクセス回数が２回と大きいので、画像データＳ４は入れ替え対象にならない。画像復号部１０は、それぞれ復元用データＤＣ３，ＤＣ７を利用して、ブロックＭＣＵ３，７の復号化を行う。
【００４８】
次に、復号化対象ブロックはＭＣＵ４，８になる。ブロックＭＣＵ４を復号化するために、ブロックＭＣＵ３，４を読み出して復号化する必要がある。両ブロックＭＣＵ３，４を含む画像データＳ１，Ｓ２は、いずれもキャッシュヒットせずに、補助記憶装置から読み出されて、キャッシュメモリ内に格納される。同様に、ブロックＭＣＵ８を復号化するために、ブロックＭＣＵ７，８を読み出して復号化する必要がある。両ブロックＭＣＵ７，８を含む画像データＳ５，Ｓ６はいずれもキャッシュヒットしないので、補助記憶装置から読み出されて、キャッシュメモリに格納される。この場合も、画像データＳ４はアクセス回数が２回であり、キャッシュ入れ替えの対象にはならない。
【００４９】
以上のとおり、従来例の方法によれば、キャッシュヒットはわずか２回であり、補助記憶装置２への読み出し動作は、合計で１０回になる。
【００５０】
図１１は、画像データのブロックとアクセス単位との関係例を示す図であり、図１２は、右９０°回転印刷における本実施の形態のキャッシュ動作を示す図である。図１１の例では、２行４列のブロックＭＣＵ１〜ＭＣＵ８とアクセス単位Ｓ１，Ｓ２，Ｓ４，Ｓ５，Ｓ６との関係は、図９と同じであるが、図９と異なり、各行の画像データにキャッシュエレメントＥＬＭ１，ＥＬＭ２がそれぞれ対応付けられている。つまり、キャッシュエレメントＥＬＭ１には、第１行目のブロックＭＣＵ１〜ＭＣＵ４の画像データが格納され、きゃっ素エレメントＥＬＭ２には、第２行目のブロックＭＣＵ５〜ＭＣＵ８の画像データが格納される。
【００５１】
図１２を参照して、本実施の形態でのキャッシュメモリ動作について説明する。最初に復号化対象ブロックＭＣＵ１，５が、読み出され、バンドメモリに格納される。最初は、キャッシュメモリに画像データが格納されていないので、いずれの読み出しもキャッシュミスとなり、画像データＳ１とＳ４がそれぞれ補助記憶装置から読み出され、キャッシュエレメントＥＬＭ１，２にそれぞれ格納される。
【００５２】
次に、復号化対象ブロックはＭＣＵ２，６になり、第１行目では、画像データＳ１が読み出し要求され、キャッシュヒットとなり、キャッシュメモリから画像データＳ１が画像復号部に出力される。これにより、画像復号部は、ブロックＭＣＵ１を復元用データＤＣ１を利用して復号化し、更にブロックＭＣＵ２を復号化する。また、第２行目では、画像データＳ４が読み出し要求され、キャッシュメモリから出力される。更に、画像データＳ５が読み出し要求され、キャッシュミスになり、補助記憶装置から読み出され、キャッシュエレメントＥＬＭ２内の画像データＳ４と入れ替えられる。画像復号部は、ブロックＭＣＵ５を復元用データＤＣ５を利用して復号化し、更にブロックＭＣＵ６を復号化する。
【００５３】
次に、復号化対象ブロックＭＣＵ３，７となる。この場合は、第１行目では、画像データＳ１が読み出し要求され、キャッシュメモリから出力される。更に、画像データＳ２が読み出し要求され、キャッシュミスになり、補助記憶装置から読み出されて、キャッシュエレメントＥＬＭ１のデータＳ１と入れ替えられる。ブロックＭＣＵ３のデータは、復元用データＤＣ３を利用して復元可能であり、ブロックＭＣＵ１から順番に復号化する必要はない。第２行目では、画像データＳ５の読み出し要求があり、キャッシュメモリから出力される。ブロックＭＣＵ７も復元用データＤＣ７を利用して、復号化することができる。
【００５４】
最後に、符号化対象ブロックＭＣＵ４，８となる。この場合は、第１行目では、ブロックＭＣＵ３から順に復号化する必要があるので、画像データＳ１が読み出し要求され、キャッシュミスとなり、補助記憶装置から画像データＳ１が読み出されて、キャッシュエレメントＥＬＭ１のデータＳ２と入れ替えられる。更に、画像データＳ２の読み出し要求があり、キャッシュミスとなり、画像データＳ２が補助記憶装置から読み出されて、キャッシュエレメントＥＬＭ１のデータＳ１と入れ替えられる。第２行目では、ブロックＭＣＵ７から復号化する必要があり、画像データＳ５がリード要求されて、キャッシュメモリから出力され、更に画像データＳ６が読み出し要求され、キャッシュミスとなって、補助記憶装置から読み出されて、キャッシュエレメントＥＬＭ２に格納される。
【００５５】
以上のとおり、画像データの各行にキャッシュエレメントを対応付けることで、キャッシュミスの回数を減らすことができた。図１２の例では、キャッシュヒットが５回であり、画像データの補助記憶装置からの読み出し回数は７回であり、図１０の従来例の１０回より減っている。
【００５６】
図１３は、左９０°回転印刷における従来例のキャッシュ動作を示す図である。左９０°回転印刷の場合は、バンドメモリには、画像の左側から順番に画像データが格納される。但し、ＪＰＥＧアルゴリズムで符号化されているので、復号化するためには復元用データＤＣが保持されているブロックから読み出す必要がある。
【００５７】
最初は、ブロックＭＣＵ４，８が復号化される。ブロックＭＣＵ４を復号化するためには、ブロックＭＣＵ３，４を読み出してそれぞれ復号化する必要があるので、画像データＳ１，Ｓ２が補助記憶装置から読み出されて、キャッシュメモリに格納される。次に、ブロックＭＣＵ８を復号化するために、ブロックＭＣＵ７，８を順に復号化する必要があり、画像データＳ５，Ｓ６が補助記憶装置から読み出されて、キャッシュメモリに格納される。
【００５８】
次のコラムのブロックＭＣＵ３が復号化される場合は、画像データＳ１，Ｓ２が補助記憶装置から読み出されて、キャッシュメモリに格納される。また、ブロックＭＣＵ７を復号化するために、画像データＳ５が補助記憶装置から読み出されて、キャッシュメモリに格納される。この時点で、キャッシュメモリには、データＳ２，Ｓ５が格納されている。
【００５９】
次のコラムのブロックＭＣＵ２を復号化するために、画像データＳ１が補助記憶装置から読み出され、キャッシュメモリに格納される。そして、画像データＳ１に含まれているブロックＭＣＵ１，２が順に復号化される。更に、ブロックＭＣＵ６を復号化するために、画像データＳ４，Ｓ５がそれぞれ読み出されて、ブロックＭＣＵ５，６が順に復号化される。
【００６０】
そして、最後のコラムのブロックＭＣＵ１を復号化するために、画像データＳ１が読み出され、更に、ブロックＭＣＵ５を復号化するために、画像データＳ４が読み出される。
【００６１】
以上の通り、従来の一般的なキャッシュ制御では、左９０°回転印刷を行うとき、キャッシュヒットは１回もなく、補助記憶装置への読み出し動作は１２回になる。
【００６２】
図１４は、左９０°回転印刷における本実施の形態のキャッシュ動作を示す図である。キャッシュエレメントＥＬＭ１，２がそれぞれ第１行と第２行とに割り当てられている。最初のコラムのブロックＭＣＵ４，８を復号化するために、ブロックＭＣＵ４に対しては、画像データＳ１，Ｓ２が読み出されブロックＭＣＵ３，４が順に復号化される。また、キャッシュエレメントＥＬＭ１には、画像データＳ２が格納される。ブロックＭＣＵ８の復号化も同様に行われ、画像データＳ５，Ｓ６が読み出され、キャッシュエレメントＥＬＭ２には画像データＳ６が格納される。
【００６３】
次のコラムのブロックＭＣＵ３，７の復号化では、ブロックＭＣＵ３を読み出すために、画像データＳ１，Ｓ２が読み出され、ブロックＭＣＵ７を読み出すためには、画像データＳ５が読み出される。この状態で、キャッシュエレメントＥＬＭ１には画像データＳ２が、ＥＬＭ２には画像データＳ５がそれぞれ格納されている。
【００６４】
次のコラムのブロックＭＣＵ２，６を復号化するときは、画像データＳ１を読み出し、画像データＳ４，Ｓ５を読み出す。この時、キャッシュエレメントには、それぞれ画像データＳ１，Ｓ５が格納されている。そして、最後のコラムのブロックＭＣＵ１，５を復号化するときは、キャッシュエレメント内の画像データＳ１がそのまま出力され、画像データＳ４は補助記憶装置から読み出される。
【００６５】
以上のとおり、本実施の形態のキャッシュ制御方法では、ブロックＭＣＵ５を復号化するときにキャッシュヒットし、補助記憶装置への読み出しは１１回であり、従来例より少なくなる。
【００６６】
上記の例では、各キャッシュエレメントの容量がアクセス単位の画像データ容量（５１２バイト）であるが、複数のアクセス単位の容量を有する場合は、更にキャッシュヒット回数を増やすことができる。
【００６７】
図１５は、複数の画像を１印刷ページ内にレイアウトした時の本実施の形態によるキャッシュエレメントの配分例を示す図である。そして、図１６は、その場合の印刷プロセスのフローチャート図である。図１５の例では、１ページ内に、画像Ａ１、Ｂ１〜Ｂ４、Ｃ１，Ｃ２が図示されるとおりレイアウトされている。各画像はＪＰＥＧで符号化されており、それぞれ４行のブロックで構成されている。
【００６８】
本実施の形態では、図１５のレイアウトを印刷する場合、各画像に応じて、Ａブロック、Ｂブロック、Ｃブロックに分けられ、各ブロックでキャッシュエレメントの配分が変更される。前提として、キャッシュメモリには、１０個のキャッシュエレメントを生成する容量が確保されているものとする。印刷される画像とそのレイアウトによっては、ブロックの行数がキャッシュエレメントの最大数より少なくなったり、多くなったりする。ブロックの行数がキャッシュエレメントの最大数より少ない場合は、複数のキャッシュエレメントが一部の行または全ての行に割り当てられる。また、多い場合は、一部の行にのみキャッシュエレメントが割り当てられ、割り当てられなかった行は、キャッシュメモリを利用せずに全て補助記憶装置から読み出される。
【００６９】
図１５に示されるとおり、Ａブロックでは、画像Ａの４行のブロックに対して、３個、２個、３個、２個のキャッシュエレメントが割り当てられる。キャッシュエレメントの配分は、複数の行に対してできるだけ均等に行うことで、キャッシュヒットを増やすことができる。Ｂブロックでは、４つの画像Ｂ１〜Ｂ４に対して、３個、２個、３個、２個のキャッシュエレメントが配分される。従って、画像Ｂ１、Ｂ３の３行にそれぞれキャッシュエレメントが割り当てられ、画像Ｂ２、Ｂ４の２行にそれぞれキャッシュエレメントが割り当てられる。それ以外の行には、キャッシュエレメントは割り当てられない。そして、Ｃブロックでは、画像Ｃ１，Ｃ２にそれぞれ５個のキャッシュエレメントが割り当てられ、各画像の４行のブロックには、２個、１個、１個、１個のキャッシュエレメントが割り当てられる。
【００７０】
図１６のフローチャートに沿って、図１５のレイアウト画像を印刷するプロセスを説明する。デジタルスチルカメラのフラッシュメモリがプリンタに装着され、プリンタの操作パネルにより印刷レイアウトと印刷対象画像の選択が完了すると、印刷ボタンが押される（Ｓ１０）。それに応答して、プリンタのキャッシュコントロール部２２は、レイアウト情報、画像ファイル情報などの印刷情報を解釈して、レイアウトされた領域をブロックに区分する（Ｓ１１）。
【００７１】
キャッシュコントロール部２２は、最初のＡブロックについて、前述のキャッシュエレメントの割り当てを行い（Ｓ１２）、Ａブロック内の画像Ａの各ブロックＭＣＵをキャッシュモジュールを介して読み出して、復号化し、バンドメモリに格納する。その後、画像処理部１４が画像処理を行い、印刷エンジンが画像Ａの右９０°回転印刷を行う（Ｓ１３）。
【００７２】
同様に、キャッシュコントロール部２２は、次のＢブロックについて、キャッシュエレメントの割り当てを行い（Ｓ１４）、画像Ｂ１〜Ｂ４がキャッシュモジュールを介して読み出され、復号化され、バンドメモリに展開、印刷が行われる（Ｓ１５）。最後のＣブロックについても、同様にキャッシュエレメントの割り当て（Ｓ１６）と、画像Ｃ１，Ｃ２の読み出し、復号化、印刷が行われる（Ｓ１７）。
【００７３】
以上のとおり、本実施の形態では、右９０°回転印刷または左９０°回転印刷される場合に、印刷される画像に応じて、キャッシュエレメントを画像の行方向のブロック毎に割り当てキャッシュ制御を行う。その結果、キャッシュヒット率が上がり、従って、補助記憶装置からの読み出し効率を高くすることができる。
【００７４】
上記の例では、ＪＰＥＧで符号化された画像データについて説明したが、本実施の形態は、それ以外のアルゴリズムで符号化された画像データや、符号化されていない画像データの回転印刷にも適用することができる。その場合、符号化画像データのＤＣ成分の絶対値を復元用データとして保持しておく必要はなく、また、先頭のブロックまたは復元用データがあるブロックに戻って復号化する必要はない。しかし、回転印刷の場合、画像データを行方向にバンドメモリに展開する必要があるので、行方向の画像データをそれぞれ異なるキャッシュエレメントに割り当てることで、その読み出し効率を高くすることができる。
【００７５】
以上、本発明の保護範囲は、上記の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【００７６】
【発明の効果】
以上、本発明によれば、回転印刷の時の記憶装置からの画像データの読み出し効率を高くしたプリンタを提供することができる。
【図面の簡単な説明】
【図１】一般的なＤＣＴ方式によるＪＰＥＧ圧縮と復号化のアルゴリズムを示す図である。
【図２】符号化画像とバンドメモリとの関係を示す図である。
【図３】別の符号化画像とバンドメモリとの関係を示す図である。
【図４】符号化画像と復元用情報との関係を示す図である。
【図５】復元用情報を利用した時の分割画像を印刷する場合の符号化画像とバンドメモリ領域との関係を示す図である。
【図６】復元用情報を利用した時の右９０°回転印刷する場合の符号化画像とバンドメモリ領域との関係を示す図である。
【図７】本実施の形態におけるプリンタの構成図である。
【図８】本実施の形態におけるキャッシュモジュールとキャッシュメモリの詳細構成図である。
【図９】画像データのブロックとアクセス単位との関係例を示す図である。
【図１０】右９０°回転印刷における従来例のキャッシュ動作を示す図である。
【図１１】画像データのブロックとアクセス単位との関係例を示す図である。
【図１２】右９０°回転印刷における本実施の形態のキャッシュ動作を示す図である。
【図１３】左９０°回転印刷における従来例のキャッシュ動作を示す図である。
【図１４】左９０°回転印刷における本実施の形態のキャッシュ動作を示す図である。
【図１５】複数の画像を１印刷ページ内にレイアウトした時の本実施の形態によるキャッシュエレメントの配分例を示す図である。
【図１６】図１５のレイアウトにおける印刷プロセスのフローチャート図である。
【符号の説明】
１　プリンタ、２　補助記憶装置、フラッシュメモリ、画像メモリ、６　キャッシュモジュール、８　キャッシュメモリ、１０　画像復号部、画像読み出し部、１２　バンドメモリ
【図１】
2004082592.tif 000003
【図２】
2004082592.tif 000004
【図３】
2004082592.tif 000005
【図４】
2004082592.tif 000006
【図５】
2004082592.tif 000007
【図６】
2004082592.tif 000008
【図７】
2004082592.tif 000009
【図８】
2004082592.tif 000010
【図９】
2004082592.tif 000011
【図１０】
2004082592.tif 000012
【図１１】
2004082592.tif 000013
【図１２】
2004082592.tif 000014
【図１３】
2004082592.tif 000015
【図１４】
2004082592.tif 000016
【図１５】
2004082592.tif 000017
【図１６】
2004082592.tif 000018