(57)【要約】【課題】  従来の技術では、キャッシュヒットせずに処理速度が遅くなってしまう懸念が大きい。【解決手段】  入力した画像データ画像データに含まれる画素データに対応する変換後データをＤＲＡＭに記憶し、画像データに含まれる出現頻度の高い画素値を特定し、当該画素値に対応する変換後データを優先的にキャッシュする（Ｓ４６）。画像データに含まれる画素データに対応する変換後データがキャッシュされている場合は、そのキャッシュされている変換後データを用いて変換し（Ｓ４８，Ｓ４７）、画像データに含まれる画素データに対応する変換後データがキャッシュされていない場合は、ＤＲＡＭに記憶されている、その画素データに対応する変換後データを用いて変換する（Ｓ４８、Ｓ４９，Ｓ４７）。【選択図】  図１３
2010081429.tif 000002
【特許請求の範囲】
【請求項１】
入力した画像データをテーブルを参照して変換する画像処理装置であって、
画像データに含まれる画素データに対応する変換後データを記憶する記憶手段と、
前記画像データに含まれる出現頻度の高い画素値を特定し、当該画素値に対応する変換後データを優先的にキャッシュするキャッシュ手段と、
前記画像データに含まれる画素データに対応する変換後データが前記キャッシュ手段によりキャッシュされている場合は当該キャッシュ手段にキャッシュされている前記変換後データを用いて変換し、前記画像データに含まれる画素データに対応する変換後データが前記キャッシュ手段によりキャッシュされていない場合は前記記憶手段に記憶されている前記画素データに対応する変換後データを用いて変換する画像処理手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記画像処理手段は、前記画像データに含まれる画素データに対応する変換後データが前記キャッシュ手段によりキャッシュされていない場合は、前記記憶手段に記憶されている前記画素データに対応する変換後データを前記キャッシュ手段にキャッシュすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記キャッシュ手段は、前記出現頻度の高い画素値を出現頻度の高い順にキャッシュすることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記画像処理手段は、順番に接続された複数の画像処理部を有し、
前記複数の画像処理部のそれぞれは、各画像処理部に対応する前記キャッシュ手段を備えていることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記記憶手段は大容量のＤＲＡＭを有し、前記キャッシュ手段は、小容量の高速ＳＲＡＭを有することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
画像データに含まれる画素データに対応する変換後データを記憶するテーブルを有し、入力した画像データをテーブルを参照して変換する画像処理装置の制御方法であって、
前記画像データに含まれる出現頻度の高い画素値を特定し、当該画素値に対応する変換後データを優先的にキャッシュするキャッシュ工程と、
前記画像データに含まれる画素データに対応する変換後データがキャッシュされている場合は当該キャッシュされている前記変換後データを用いて変換し、前記画像データに含まれる画素データに対応する変換後データがキャッシュされていない場合は前記テーブルに記憶されている前記画素データに対応する変換後データを用いて変換する画像処理工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項７】
前記画像処理工程は、前記画像データに含まれる画素データに対応する変換後データがキャッシュされていない場合は、前記記憶手段に記憶されている前記画素データに対応する変換後データを前記キャッシュ工程でキャッシュさせることを特徴とする請求項６に記載の画像処理装置の制御方法。
【請求項８】
前記キャッシュ工程は、前記出現頻度の高い画素値を出現頻度の高い順にキャッシュすることを特徴とする請求項６又は７に記載の画像処理装置の制御方法。
【請求項９】
前記画像処理工程は、複数の画像処理工程を有し、前記複数の画像処理工程のそれぞれは、各対応する前記キャッシュ工程を実施することを特徴とする請求項６乃至８のいずれか１項に記載の画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを変換する画像処理を行う画像処理装置及びその制御方法に関するものである。
【背景技術】
【０００２】
データを一時的に記憶しておく記憶装置において、その記憶容量（サイズ）とアクセス速度が反比例することが知られている。つまり高速にアクセスできる記憶装置は、記憶容量を増やすのが物理的、コスト的に困難であり、記憶容量を多く取れる記憶装置はアクセス速度を高速にするのが困難である。
【０００３】
そこでＣＰＵアーキテクチャでは、高速にアクセスできるが、その記憶容量が制限されるキャッシュをＣＰＵの近くに配置し、キャッシュに比べるとアクセス速度は遅いが記憶容量を確保し易い大容量のＤＲＡＭをキャッシュの先に配置している。この構成では、ＣＰＵは常にキャッシュに対してデータの読み書き要求を出し、キャッシュがＤＲＡＭとの間の仲介役を果たしている。この場合、ＣＰＵからの要求をキャッシュで処理できる場合はキャッシュヒットと呼び、キャッシュでは処理できずにＤＲＡＭとの間でデータのやりとりが生じる場合をキャッシュミスと呼ぶ。当然、キャッシュミスが発生した場合には処理時間が大幅に長くなり、ＣＰＵの処理速度が低下するためキャッシュヒットする確立を高めることが重要となる。
【０００４】
この分野ではさまざまな研究がなされており、一般的な方法としてＤＲＡＭとキャッシュの間でのデータの送受信は、キャッシュブロックと呼ばれる一定サイズのブロックで行っている。そして過去の実績に基づいて、使用頻度の高いブロックが優先的にキャッシュ内に留まるような制御方法が提案されている。
【０００５】
また画像処理の中には、輝度画像（ＲＧＢ）から濃度画像（ＣＭＹ）に変換する色空間変換と呼ばれる画像処理のように非線形の処理が必要な処理が存在することが知られている。このような処理では、各入力値に対応した出力値をテーブルとして備え、入力データに応じて対応する出力値をテーブルから読み出すことにより、画像データを変換することが行われている。このような非線形のテーブル変換を伴う処理では、入力データの組み合わせが多くなるとテーブルサイズが大きくなるという問題がある。従来は、処理速度を優先するために、高速にアクセスできる小容量の記憶装置（高速ＳＲＡＭ）でテーブルを構成しているため、このＳＲＡＭの容量がＡＳＩＣのコストを上げる一因となっていた。
【０００６】
この問題を解決するために、テーブルのデータの持ち方をＣＰＵアーキテクチャで採用されている階層記憶構造にすることが提案されている（特許文献１参照）。この提案では、ＣＰＵアーキテクチャと同じ手法を用いて、過去の実績から使用頻度の高いブロック（テーブルデータ）が優先的にキャッシュ内に留まるようにキャッシュを制御している。
【特許文献１】特開２００７−１５８９６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した方法では、キャッシュヒットせずに処理速度が遅くなってしまう懸念が大きい。例えば、印刷装置において、ラスタ画像を印刷に適したハーフトンデータに変換する画像処理を実行することを想定する。この場合、キャッシュのヒット率が低いと画像処理に要する時間が長くなり、印刷速度が低下する。そのため、ヒット率が高い場合には目標となる印刷速度を達成できるが、ヒット率が低下すると目標性能を達成できないことが起こり得る。
【０００８】
本発明の目的は、上述した従来技術の問題点を解決することにある。
【０００９】
本願発明の特徴は、入力した画像データをテーブルを参照して変換する画像処理装置及びその制御方法において、少ないキャッシュ容量であっても、そのキャッシュのヒット率を上昇できる技術を提案することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
入力した画像データをテーブルを参照して変換する画像処理装置であって、
画像データに含まれる画素データに対応する変換後データを記憶する記憶手段と、
前記画像データに含まれる出現頻度の高い画素値を特定し、当該画素値に対応する変換後データを優先的にキャッシュするキャッシュ手段と、
前記画像データに含まれる画素データに対応する変換後データが前記キャッシュ手段によりキャッシュされている場合は当該キャッシュ手段にキャッシュされている前記変換後データを用いて変換し、前記画像データに含まれる画素データに対応する変換後データが前記キャッシュ手段によりキャッシュされていない場合は前記記憶手段に記憶されている前記画素データに対応する変換後データを用いて変換する画像処理手段と、
を有することを特徴とする。
【００１１】
上記目的を達成するために本発明の一態様に係る画像処理装置の制御方法は以下のような工程を備える。即ち、
画像データに含まれる画素データに対応する変換後データを記憶するテーブルを有し、入力した画像データをテーブルを参照して変換する画像処理装置の制御方法であって、
前記画像データに含まれる出現頻度の高い画素値を特定し、当該画素値に対応する変換後データを優先的にキャッシュするキャッシュ工程と、
前記画像データに含まれる画素データに対応する変換後データがキャッシュされている場合は当該キャッシュされている前記変換後データを用いて変換し、前記画像データに含まれる画素データに対応する変換後データがキャッシュされていない場合は前記テーブルに記憶されている前記画素データに対応する変換後データを用いて変換する画像処理工程と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、入力した画像データをテーブルを参照して変換する画像処理装置及びその制御方法において、少ないキャッシュ容量であっても、そのキャッシュのヒット率を上昇できるという効果がある。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して本発明の好適な実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１４】
図１は、本発明の実施形態に係る画像形成装置と、それを含むネットワークシステムの構成を示す図である。尚、本実施形態では、複合機などの画像形成装置を例にして説明するが本発明はこれに限定されるものでなく、入力画像データに対して画像処理を行う画像処理装置やその制御方法にも適用できる。
【００１５】
ここでは画像形成装置１００は、ネットワーク１２０を介してＰＣ１３０と接続されている。ＰＣ１３０は一般的なパーソナルコンピュータ等であり、ネットワーク１２０を介して画像形成装置１００にＰＤＬデータを送信する。そのＰＤＬデータは、画像形成装置１００のネットワークコントローラ１０６により受信される。ネットワークコントローラ１０６は、その受信したＰＤＬデータをメモリコントローラ１０２を介してＤＲＡＭ１０３に記憶する。その後、ＣＰＵ１０１は、そのスプールされたＰＤＬデータをＤＲＡＭ１０３から読み出し、ディスプレイリストに変換して再度ＤＲＡＭ１０３にスプールする。そして、レンダリング部１０４が、そのディスプレイリストをＤＲＡＭ１０３から読み出し、描画してラスタ画像に展開しＤＲＡＭ１０３に再度記憶する。
【００１６】
次にＣＰＵ１０１は、これから印刷を開始するジョブに関する情報をプリンタ部１１４とやり取りし、画像処理ブロックの各モジュールＤＭＡＣ１０７、画像処理部１０８、画像処理部１０９、画像処理部１１０、ＤＭＡＣ１１１のレジスタに適切な値を設定する。ＣＰＵ１０１はそれと同時に、各画像処理部が必要とするテーブルデータをＤＲＡＭ１１２に書き込む。それが済むとＣＰＵ１０１は、ＤＭＡＣ１０７，ＤＭＡＣ１１１を起動する。これによりＤＭＡＣ１０７は、ラスタ画像をＤＲＡＭ１０３から読み出して画像処理部１０８に送り出す。画像処理部１０８，１０９はそれぞれ入力データを処理すると、後段の画像処理部に渡す。そして最後にＤＭＡＣ１１１が、プリンタ部１１４に渡すための画像処理済みの画像データを画像処理部１１０から受け取ってＤＲＡＭ１１２にページ単位で記憶する。メモリコントローラ１１３は、画像処理部１０８〜１１０，ＤＭＡＣ１１１とＤＲＡＭ１１２との間のデータのやり取りを制御する。１１５は、図９を参照して後述するキャッシュコントローラ（９０３）である。
【００１７】
そしてＣＰＵ１０１が、ＤＲＡＭ１１２にデータが準備できたことをプリンタ部１１４に通知すると、プリンタ部１１４がＤＭＡＣ１１１にデータ要求信号をアサートする。それに従ってＤＭＡＣ１１１は、ＤＲＡＭ１１２に記憶している画像データを読み出してプリンタ部１１４に送信する。そしてプリンタ部１１４が、その画像データに基づいて記録媒体であるシートに印刷する。尚、バススイッチ（ＳＷ）１０５は、ＣＰＵ１０１が、画像データに対して画像処理を行う必要がある場合に、ＤＭＡＣ１０７によりＤＲＡＭ１０３から画像処理部１０８に画像データを転送するように切り替える。またＤＲＡＭ１０３の画像データを直接、プリンタ部１１４に転送して印刷させるようにも切り替えることができる。
【００１８】
図２は、本実施形態に係る画像形成装置による印刷処理を説明するフローチャートである。
【００１９】
この処理はネットワーク１２０を介してＰＤＬデータを受信することにより開始され、まずステップＳ１で、受信したＰＤＬデータをメモリコントローラ１０２を介してＤＲＡＭ１０３にスプールする。その後、そのスプールされたＰＤＬデータをＤＲＡＭ１０３から読み出し、ディスプレイリストに変換して再度ＤＲＡＭ１０３にスプールする。そして、レンダリング部１０４により、ディスプレイリストをラスタ画像に展開してＤＲＡＭ１０３に記憶する。次にステップＳ２に進み、後述する代表画素（Typical Pixel）を抽出する。次にステップＳ３に進み、画像処理ブロックの各モジュールであるＤＭＡＣ１０７、画像処理部１０８、画像処理部１０９、画像処理部１１０、ＤＭＡＣ１１１のレジスタに適切な値を設定してプリントを開始するための準備を行う。次にステップＳ４に進み、ＤＭＡＣ１０７を起動してＤＲＡＭ１０３に記憶されたラスタ画像データを読み出してＤＭＡで画像処理部１０８に送る。こうしてステップＳ５〜Ｓ７で、各画像処理部による画像処理を実行させる。こうして画像処理が終了するとステップＳ８に進み、その処理済みのデータをＤＲＡＭ１１２に記憶する。こうして印刷の準備ができるとステップＳ９に進み、ＤＭＡＣ１１１によりＤＲＡＭ１１２からプリンタ部１１４に画像データを出力して印刷させる。
【００２０】
次にレンダリング部１０４の動作について詳しく説明する。
【００２１】
レンダリング部１０４はＣＰＵ１０１によって制御され、ＣＰＵ１０１によって作成されたディスプレイリストをラスタ画像データに変換する機能を有する。レンダリング部１０４の処理単位は、ＣＰＵ１０１によるレジスタ設定とＣＰＵ１０１が作成するディスプレイリストの内容によって決まる。この処理単位には、ページ単位、バンド単位、矩形単位、オブジェクト単位がある。
【００２２】
図３（Ａ）（Ｂ）は、１ページを３バンドに分割して、各バンド単位で処理する例を説明する図である。図３（Ａ）は、１ページの画像データを３つのバンドに分割した例を示し、図３（Ｂ）は、バンド単位の処理を説明するフローチャートである。
【００２３】
ＣＰＵ１０１は、図３（Ａ）に示す各バンドに対応するディスプレイリストを作成する。そしてレンダリング部１０４が、バンド単位でディスプレイリストをラスタ画像データに展開し、ＤＲＡＭ１０３に格納する（ステップＳ１１）。
【００２４】
図３（Ａ）に示す例では、ステップＳ１１で、バンド１に相当するラスタ画像データを作成する。次にステップＳ１２で、図４に示すような出現頻度テーブルを作成する。
【００２５】
このようにレンダリング部１０４は、ラスタデータを作成すると同時に、図４に示すような出現頻度テーブルを作成する。この出現頻度テーブルは、画素値とその画素値が出現した回数を記録する。
【００２６】
図４は、本実施形態に係る出現頻度テーブルの一例を示す図である。
【００２７】
図４に示す例では、画像データはＲＧＢデータであり、画素値「Ｒ＝１１，Ｇ＝２２，Ｂ＝３３」の画素が５５画素あり、一番出現頻度が高くなっている。次に画素値「Ｒ＝２２，Ｇ＝３３，Ｂ＝１１」の画素が３０画素あり、２番目に出現頻度が高くなっている。また画素値「Ｒ＝２５５，Ｇ＝２５５，Ｂ＝２５５」の画素が１５画素あり、その画素は３番目に出現頻度が高くなっている。このように図４では、ＲＧＢの各値の組み合わせで定義される画素データの各画素が出現する回数が、その画素値に対応付けてＤＲＡＭ１０３に記憶されている。
【００２８】
次にステップＳ１３で、レンダリング部１０４は、この出現頻度テーブルを基に、代表画素（Typical Pixel）を求める。そして図５に示すようなメモリイメージを作成する。そしてステップＳ１４で、これらステップＳ１１〜Ｓ１３の処理を、バンド数分（図３では３回）繰り返して全バンド処理し終えたと判断すると、この処理を終了する。従って、図５に示すメモリイメージも各バンドに対応して３つ作成される。
【００２９】
図５は、１つのバンドのメモリイメージのデータ構成例を示す図である。
【００３０】
ここでTypical Pixel 0は、このバンドで最も出現頻度が高い画素値を有する画素を示している。以下、Typical Pixel 1〜Typical Pixel mの順に、出願頻度が高い画素値を有する画素を示している。そして画素データ（pixel 0 〜pixel n）は、このバンドの実際の画像データ（画素データ）を示している。
【００３１】
図６は、この出現頻度テーブルの作成手順を説明するフローチャートである。
【００３２】
この出現頻度テーブルを作成する初期状態では、ＤＲＡＭ１０３に記憶される出現頻度テーブルの内容は空である。まずステップＳ２１で、レンダリング部１０４が１画素を描画すると、ステップＳ２２以降の処理で出現頻度テーブルの内容を以下の手順で更新する。ステップＳ２２で、レンダリング部１０４が描画した画素値が、出現頻度テーブルに既に登録されているかどうかを判定する。ここで未登録であると判定されるとステップＳ２３に進み、その画素値を出現頻度テーブルに登録し、対応する出現回数を「１」に設定する。一方、ステップＳ２２で登録済みであると判定されるとステップＳ２４に進み、その画素値に対応する出現回数をインクリメントする（＋１する）。こうしてステップＳ２３或いはステップＳ２４を実行するとステップＳ２５に進み、最終画素であるかを判断し、そうでないときはステップＳ２１に戻って前述の処理を繰り返す。こうしてステップＳ２５で最終画素であると判定するとステップＳ２６に進み、各画素値に対応する出現頻度が特定されて生成された出現頻度テーブルのエントリーを、各画素値の出現回数に基づいてソーティング（並び替え）し、この処理を終了する。
【００３３】
この出現頻度テーブルを基にレンダリング部１０４は、図５に示すようにラスタデータをメモリ（ＤＲＡＭ１０３）に書き込む。ここで、代表画素（Typical Pixel 0）は、処理単位内（図３の例ではバンド単位）で出現頻度が一番高かった画素値を示し、図４の出現頻度テーブルの場合は「Ｒ＝１１，Ｇ＝２２，Ｂ＝３３」の画素値となる。同様に、代表画素（Typical Pixel 1）は、処理単位内で出現頻度が２番目に高かった画素値であり図４の例では、「Ｒ＝２２，Ｇ＝３３，Ｂ＝１１」の画素値である。また同様に、代表画素（Typical Pixel 2）は処理単位内で出現頻度が３番目に高かった画素値で、図４の例では「Ｒ＝２５５，Ｇ＝２５５，Ｂ＝２５５」の画素値となる。その後のデータ、画素０（pixel 0）〜画素ｎ（pixel n）が実際の画像データ（画素データ）を示している。
【００３４】
図７は、各画素データを説明する図である。
【００３５】
ここでは画素値に対して属性データ７０１と呼ばれる、データの属性を示す付加情報を付け加えた形で保存する。
【００３６】
図８は、この属性データのデータ構成を説明する図である。
【００３７】
この属性データ７０１の１ビットをダミーフラグ８０１と定義し、ダミーフラグ８０１が「１」であれば代表画素であることを示す。逆に、このダミーフラグ８０１が「０」であれば、実際の画素データであることを示す。よって、レンダリング部１０４は、代表画素のデータをＤＲＡＭ１０３に書き込む場合にはダミーフラグ８０１を「１」に設定し、実際の画素データをＤＲＡＭ１０３に書き込むときは、ダミーフラグ８０１を「０」にする。レンダリング部１０４が、このＤＲＡＭ１０３に書き込んだデータを入力する他の処理モジュールは、このダミーフラグ８０１を参照することにより、そのデータが代表画素のデータか、実際の画素データであるかを識別できる。
【００３８】
こうして図５に示すようなラスタ画像データがＤＲＡＭ１０３上に準備されてプリントする際の動作について説明する。
【００３９】
ＣＰＵ１０１は、レンダリング部１０４から終了割り込みを受け取ることによりラスタデータが準備できたことを認識する。そしてＣＰＵ１０１は、プリンタ部１１４と通信を行って、これから印刷する用紙サイズ等を通達する。そして印刷に必要なモジュール、ＤＭＡＣ１０７，１１１、画像処理部１０８〜１１０のレジスタを設定する。
【００４０】
画像処理が開始されるとＤＭＡＣ１０７は、図５に示すメモリイメージをＤＲＡＭ１０３から読み出し、画像処理部１０８に対して１画素（図９に示すデータ９０１の単位）単位で送信する。そのために、ＤＭＡＣ１０７は以下の情報を指定するレジスタを有する。即ち、ＤＲＡＭ１０３における読み出すデータの先頭アドレス、読み出すデータのサイズ、１画素のデータサイズを各レジスタにセットする。これらレジスタを設定してからＤＭＡＣ１０７を起動することによりＤＭＡＣ１０７が動作を開始する。これによりＤＭＡＣ１０７は、ＤＲＡＭ１０３からデータを先頭から順番に取り出して図５に示す順番で画像処理部１０８に送り出す。このため画像処理部１０８は、代表画素データ０，１，...、代表画素データｍ、そして実際の画素データ０，...，画素データｎの順番で画像データを受信する。
【００４１】
図９は、本実施形態に係る各画像処理部とＤＲＡＭ１１２との間のデータやり取りを説明する図である。図９に関する説明は後述する。
【００４２】
図１０は、本実施形態１に係る画像処理部の基本構成を示す図である。尚、ここで画像処理部１０８〜１１０は、それぞれが有する演算部が実行する演算処理の内容が異なる点を除き、いずれも同じ構成とする。
【００４３】
アドレス生成部１１０１は、入力データとレジスタ１１０２に設定されたパラメータとを基に、キャッシュ１１１０のテーブルデータを読み出すためのアドレスを計算する。演算部１１０３は、読み出されたテーブルデータと、レジスタ１１０２に設定されたパラメータとを基に計算して出力データを出力する。各パラメータはページによって異なるのでＣＰＵ１０１は、プリント前に適切な値を、各画像処理部のレジスタ１１０２に設定する。上述のように画像処理部１０８〜１１０はいずれも同じ構成であるが、アドレス生成部１１０１、演算部１１０３の演算式、それに伴うレジスタ１１０２で設定するパラメータが異なる。基本的な構成としてはハードウェアの構成は画像処理部１０８，１０９，１１０の全てにおいて共通で、レジスタ１１０２に設定する値と、キャッシュ１１１０のテーブルデータのみが異なる構成が考えられる。
【００４４】
図１１（Ａ）（Ｂ）は、テーブル変換を含む８ビットから１０ビットへの変換の一例を説明する図である。
【００４５】
図１１（Ａ）において、入力データＲは、範囲が０〜２５５の８ビットデータである。その入力データを、範囲が０〜１０２３の１０ビットデータに変化するためのテーブルの例を示す。図１１（Ｂ）は、そのテーブルの内容の具体例を示す。図１１（Ｂ）に示すように、８ビットのアドレス空間で、各アドレスには１０ビットの変換後データが記憶されている。図１１（Ａ）と図１１（Ｂ）は、同じテーブルの別の表現方法で示したものである。
【００４６】
次に図１１の例を参照して、図１０に示す画像処理部の動作例を図１２のフローチャートに従って説明する。
【００４７】
図１２は、実施形態１に係る画像処理部を使用した処理を説明するフローチャートである。
【００４８】
まずステップＳ３１で、ＣＰＵ１０１が、図１１（Ｂ）に示すテーブルデータを、ＤＲＡＭ１１２のアドレス「0x1000_0000」番地を先頭に書き込む。次にステップＳ３２に進み、ＣＰＵ１０１は、その先頭アドレスをレジスタ１１０２に書き込む。次にステップＳ３３で、画像処理部がデータ（例えば、Ｒ＝９）を受け取るとステップＳ３４に進む。ステップＳ３４では、アドレス生成部１１０１は、（テーブルの先頭アドレス「0x1000_0000」）にオフセット値（「９」）を足し込む。そしてキャッシュ１１１０にアクセスするアドレス１１０４を「0x1000_0009」に設定する。それと同時にアドレス生成部１１０１は、入力データの属性データに含まれるダミーフラグ８０１の値を信号ダミーフラグ１１０５に設定する。そしてステップＳ３５に進み、画像処理部からキャッシュ１１１０にデータを要求する。これによりキャッシュ１１１０は、アドレス「0x1000_0009」に対応するデータ（図１１の例では、データ「２８」）をデータ１１０６として演算部１０３に返す。そしてステップＳ３７で、演算部１１０３は、その読み出したテーブル値と、入力値とを基に必要であれば演算を行い、その値を出力データとして出力する。単純なテーブル変換では、演算部１１０３は、単純に読み出したテーブル値を出力する。以上の処理をステップＳ３８で、ページの最終画素を検出するまで繰り返し、このページの全ての画素に対する処理が終了すると、この処理を終了する。
【００４９】
ここでキャッシュ１１１０は、画像処理部から要求されたデータをキャッシュしているかを調べ、キャッシュしている場合（キャッシュヒット）は、そのキャッシュしているデータを返す。また画像処理部から要求されたデータをキャッシュしていないときは（キャッシュミス）は、その要求されたデータをＤＲＡＭ１１２から取得してキャッシュするとともに、そのデータを返す。
【００５０】
次に本実施形態１に係る画像処理部の動作を図９及び図１３を参照して説明する。尚、画像処理部１０８〜１１０の基本動作は同じであるので、ここでは画像処理部１０８の例をキャッシュ制御に着目して説明する。尚、図９のキャッシュ９０２は、図１０のキャッシュ１１１０に相当している。
【００５１】
図９は、本実施形態１に係る画像処理部におけるキャッシュ制御を説明するためのブロック図である。
【００５２】
ここでは画像処理部１０８は、データ９０１を入力し、そのデータ９０１を変換するために、そのデータに基づくアドレスと、そのダミーフラグをキャッシュコントローラ９０３に出力する。これによりキャッシュコントローラ９０３は、ダミーフラグが「０」で通常の画像データであれば、その要求されたデータがキャッシュされているかどうかを判断し、キャッシュされているとそのデータを画像処理部１０８に返す。一方キャッシュされていないときは、ＤＲＡＭ１１２にアクセスして、その要求されたデータをＤＲＡＭ１１２から取得して画像処理部１０８に返す。またダミーフラグが「１」であれば、ＤＲＡＭ１１２にアクセスして、その要求されたデータをＤＲＡＭ１１２から取得して画像処理部１０８に返すとともに、キャッシュ９０２の空きエリアに、そのデータを保存する。
【００５３】
画像処理部１０９は、画像処理部１０８で処理されたデータ９１０を受取り、画像処理部１０８の場合と同様にしてキャッシュを使用して画像処理を行う。以下、図１３のフローチャートに従って詳しく説明する。
【００５４】
図１３は、本実施形態１に係る画像処理部によるキャッシュ処理を説明するフローチャートである。
【００５５】
キャッシュ９０２は各画像処理部ごとに存在し、各キャッシュはプリントを開始する前にＣＰＵ１０１によって初期化される（ステップＳ４１）。次にステップＳ４２に進み、画像処理部１０８がデータ９０１を受け取ると、画像処理部１０８はテーブル変換に必要なデータをキャッシュコントローラ９０３に要求する。その際に画像処理部１０８は、受信したデータ９０１の属性データ７０１に含まれるダミーフラグ８０１の値もキャッシュコントローラ９０３に送信する。キャッシュコントローラ９０３は、データ要求を受けるとステップＳ４３で、ダミーフラグ８０１が「１」かどうかを判定する。このダミーフラグ８０１が「１」、即ち、データ９０１が代表画素であると認識するとステップＳ４４に進み、キャッシュコントローラ９０３は、画像処理部１０８から要求されたデータをＤＲＡＭ１１２から取得する。次にステップＳ４５に進み、ステップＳ４４で取得したデータをキャッシュ内部の代表画素データを保存しておくtypデータ９０４（図９）に書き込むかどうかを判定する。このtypデータ９０４は複数存在し、各typデータ９０４はフラグ９０５とセットになっており、フラグ９０５はtypデータ９０４が有効であるかどうかを示す。前述のステップＳ４１でキャッシュを初期化する際には、このフラグ９０５を全て「０」（無効）にクリアする。このステップＳ４５では、フラグ９０５をスキャンし、空き領域（フラグ９０５が「０」）を探す。そしてステップＳ４５で、空き領域が見つかった場合はステップＳ４６に進み、その空き領域に、ＤＲＡＭ１１２から読み出したデータを保存し、フラグ９０５を「１」にセットする。そしてステップＳ４７で、ＤＲＡＭ１１２から読み出したデータを画像処理部１０８に返す。一方ステップＳ４５で空き領域が見つからなかった場合はキャッシュ内のデータ更新は行わずにステップＳ４７に進み、ＤＲＡＭ１１２から読み出したデータを画像処理部１０８に返す。例えば図１１に示す例で、画像処理部からのデータ要求がアドレス「0x1000_0009」でダミーフラグが「１」である場合は、キャッシュコントローラ９０３は、ＤＲＡＭ１１２からアドレス「0x1000_0009」のデータ「２８」のみを読み出す。
【００５６】
尚、ステップＳ４６では、図５に示すように、ＤＲＡＭ１１２からキャッシュ９０２に出現頻度の高い画素データから順に送られてくるため、キャッシュ９０２のtypデータ９０４には、その出現頻度の高い代表画素の順に記憶されることになる。
【００５７】
一方、ステップＳ４３で、ダミーフラグが「０」で、実際の画素データであると認識するとステップＳ４８に進む。ステップＳ４８では、画像処理部１０８から要求されたデータがキャッシュ９０２のtypデータ９０４或はライン９０６に存在するか（キャッシュヒットするか）を判定する。ここで存在するとすると判断するとステップＳ４７に進み、そのキャッシュされている値を画像処理部１０８に返す。一方ステップＳ４８で、要求されたデータがキャッシュ９０２に存在しない（キャッシュミス）場合はステップＳ４９に進み、ＤＲＡＭ１１２から必要なデータを取得する。その際には通常のＣＰＵにおけるキャッシュ制御と同じように、ライン単位でＤＲＡＭ１１２からデータを取得し、Tag９０７で管理する。次にステップＳ５０に進み、Tag９０７を基に、ライン９０６を入れ替えるかどうか等の制御を行う。本実施形態では、ステップＳ５０における制御方法に関しては特に定めることはなく、汎用的な方法を採用する。
【００５８】
例えば、図１１に示す例において、画像処理部１０８からのデータ要求がアドレス「0x1000_0009」でダミーフラグが「０」、キャッシュのライン９０６のサイズが１２８バイトである場合を考える。この場合、キャッシュコントローラ９０３はＤＲＡＭ１１２からからアドレス「0x1000_0009」のデータ「２８」のみを読み出す。そしてステップＳ５０で、ラインを置き換える場合には、アドレス「0x1000_0000」から「0x1000_007F」までの１２８バイトのデータをＤＲＡＭ１１２から読み出してライン９０６に書き込む。
【００５９】
以上が一つのデータに対する処理で、複数のデータを受信した場合はこの処理をステップＳ４２から繰り返す。このフローチャートにおいては、代表画素の数がキャッシュ９０２のtypデータ９０４の領域の数を超えた場合には、それ以降の代表画素はキャッシュ９０２に保存されない。しかし図４及び図５に示すように、出現頻度の高い代表画素から順番に並べており、ＤＭＡＣ１０７も先頭から順番に読み出して画像処理部１０８に送信するため、出現頻度の高い代表画素が優先的にキャッシュ９０２に保存されることになる。
【００６０】
尚、ステップＳ４６で、一度typデータ９０４に保存されたデータはフラグ９０５をセットすることにより保護され、ステップＳ４１で、フラグ９０５がクリアされない限り上書きされることは無い。そのため、ステップＳ５１で処理ブロックの最終画素を検出する度に、即ち、レンダリングの単位（ページ単位、バンド単位、矩形単位、オブジェクト単位）ごとに、ステップＳ４１のキャッシュの初期化を実行する。
【００６１】
こうしてステップＳ４７で、画像処理部１０８に、要求されたデータを送信するとステップＳ５１に進み、処理対象ブロックの最終画素かどうかを判断する。ここで最終画素でないと判断するとステップＳ４１に戻って前述の処理を繰り返す。そして最終画素と判断するとステップＳ５１からステップＳ５２に進み、ページの最終画素かどうかを判断する。ページの最終画素でないと判断するとステップＳ４１に戻って前述の処理を繰り返す。そしてページの最終画素と判断すると、この処理を終了する。
【００６２】
画像処理部１０９の基本動作は画像処理部１０８と同じである。
【００６３】
図９では、画像処理部１０８で処理されたデータ９１０が画像処理部１０９に入力される。このデータ９１０の属性データ７０１は、画像処理部１０８に入力されたデータ９０１の場合と同じでありダミーフラグ８０１も同じ値である。そのため代表画素であれば、後段の画像処理部でも代表画素と認識される。それに対して画素値、例えばＲ，Ｇ，Ｂは、各画像処理部でテーブル変換を含む処理の結果得られた値に置き換わる。つまり、代表画素であるという属性は変化せずに、その画素値だけが画像処理部で処理されるたびに変化していく。
【００６４】
画像処理部１０９において一番出現頻度の高い画素データの値は、画像処理部１０８において一番出現頻度の高い画素データの値を、テーブル変換を含む処理の結果得られた画素値である。そのため、テーブルデータの値を含む画像処理部１０８での処理内容に依存する。テーブルデータの値はプリントを開始する前にＣＰＵ１０１がプリンタ部１１４と通信行って決まっており、レンダリング時に決められるものではない。
【００６５】
本実施形態では、代表画素であるという属性を変化させることなく、画素値のみを各画像処理部でのテーブル変換を含む処理によって変化させて伝播していく。これにより、各画像処理部に対して、テーブルデータの値によらず常に出現頻度の高いデータを代表画素として送信でき、各画像処理部で出現頻度の高いデータを優先的にキャッシュに留めておくことができる。その結果、キャッシュのヒット率を高めることができる。
【００６６】
実際のデータを処理する場合には、キャッシュヒットした場合には、ＤＲＡＭからデータを取得する処理（ステップＳ４９）が必要ないので高速に処理できる。通常、ＤＲＡＭからデータを取得するには、キャッシュ内部で処理を終える場合と比べて１０倍以上の時間を要するため、キャッシュヒットの確立を向上することにより全体の処理パフォーマンスを向上させることができる。
【００６７】
以上の点に基づいて再度図２を参照して概略動作を説明する。
【００６８】
画像処理部での処理が終了した画像データはＤＭＡＣ１１１に送られる。ＤＭＡＣ１１１では、その受信したデータから、実際の画素の画像データのみを取り出しＤＲＡＭ１１２に保存する。その際に、代表画素或は実際の画素データかを示す属性データ７０１は、ＤＭＡＣ１１１が読み捨ててＤＲＡＭ１１２には保存しない。ＤＭＡＣ１１１は、受信した実際の画素データを画素ブロックに送信する順番に並び替えてＤＲＡＭ１１２にスプールする機能を有する。ＤＭＡＣ１１１は、レンダリングの単位がページ、バンド単位であれば、受信した実際の画素データをそのままの順番でＤＲＡＭ１１２に保存する。それに対して、レンダリングの単位がブロック、オブジェクト単位であれば、受信した実際の画素をラスタ順（ページ単位のレンダリングと同じ並び）に並びかえる（ステップＳ８）。
【００６９】
ＤＭＡＣ１１１が、ＤＲＡＭ１１２に１ページ分のデータをスプールし終えると、プリンタ部１１４に対してプリンタ部１１４からのデータ要求信号に同期してデータを送信し、プリンタ部１１４によるプリントを実行させる（ステップＳ９）。
【００７０】
以上の処理をまとめたのが図２のフローチャートである。
【００７１】
以上説明したように本実施形態１によれば、各処理ブロック毎に出現頻度の高い画素データを優先的にキャッシュに保存するため、そのブロックの処理中におけるキャッシュヒット率が高められるという効果がある。またこれにより、ブロック単位のデータの処理効率が良くなるという効果がある。
【００７２】
（他の実施形態）
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また一つの機器からなる装置に適用しても良い。
【００７３】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを読み出して実行することによっても達成され得る。その場合、プログラムの機能を有していれば、形態は、プログラムである必要はない。
【００７４】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明のクレームでは、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００７５】
プログラムを供給するための記録媒体としては、様々なものが使用できる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【００７６】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページからハードディスク等の記録媒体にダウンロードすることによっても供給できる。その場合、ダウンロードされるのは、本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００７７】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布する形態としても良い。その場合、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムが実行可能な形式でコンピュータにインストールされるようにする。
【００７８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される形態以外の形態でも実現可能である。例えば、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００７９】
更に、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれるようにしてもよい。この場合、その後で、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【００８０】
以上説明したように本実施形態によれば、入力データが画像データであることに着目し、処理を行う前に入力データの解析を行って、事前に出現頻度の高い入力データの値を推定してキャッシュ制御に利用する。具体的には、出現頻度の高い入力データの値が入力された場合には必ずキャッシュヒットするように保障し、かつ出現頻度の高い入力データに対応するテーブルデータの値が必ずキャッシュ内に留まるように制御できる。
【図面の簡単な説明】
【００８１】
【図１】本発明の実施形態に係る画像形成装置と、それを含むネットワークシステムの構成を示す図である。
【図２】本実施形態に係る画像形成装置による印刷処理を説明するフローチャートである。
【図３】１ページを３バンドに分割して、各バンド単位で処理する例を説明する図である。
【図４】本実施形態に係る出現頻度テーブルの一例を示す図である。
【図５】１つのバンドのメモリイメージのデータ構成例を示す図である。
【図６】本実施形態に係る出現頻度テーブルの作成手順を説明するフローチャートである。
【図７】本実施形態に係る各画素データを説明する図である。
【図８】本実施形態に係る属性データのデータ構成を説明する図である。
【図９】本実施形態１に係る画像処理部におけるキャッシュ制御を説明するためのブロック図である。
【図１０】本発明の実施形態１に係る画像処理部の基本構成を示す図である。
【図１１】本実施形態に係るテーブル変換を含む８ビットから１０ビットへの変換の一例を説明する図である。
【図１２】本実施形態１に係る画像処理部を使用した処理を説明するフローチャートである。
【図１３】本実施形態１に係る画像処理部によるキャッシュ処理を説明するフローチャートである。
【図１】
2010081429.tif 000003
【図２】
2010081429.tif 000004
【図３】
2010081429.tif 000005
【図４】
2010081429.tif 000006
【図５】
2010081429.tif 000007
【図６】
2010081429.tif 000008
【図７】
2010081429.tif 000009
【図８】
2010081429.tif 000010
【図９】
2010081429.tif 000011
【図１０】
2010081429.tif 000012
【図１１】
2010081429.tif 000013
【図１２】
2010081429.tif 000014
【図１３】
2010081429.tif 000015