(57)【要約】【課題】  文字、グラフィック、イメージなどの複数のオブジェクトで構成される電子文書の画像形成をソフトウェアで高速に形成することが出来るようになり、画像の表示や印刷などを高速に行うことが可能な画像形成装置の提供。【解決手段】  ＣＰＵがアクセス可能な記憶手段と、前記記憶手段の動作設定をする設定手段と、画像データを入力する入力手段と、前記入力手段に入力された画像データに基づいて画像を形成する画像形成手段と、前記入力手段に入力された画像データを解析する解析手段とを有し、前記画像形成手段は、前記設定手段が前記解析手段の解析結果に基づいて前記動作設定をした後に画像を形成することを特徴とする画像形成装置。【選択図】        図２
2006277529.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵがアクセス可能な記憶手段と、
前記記憶手段の動作設定をする設定手段と、
画像データを入力する入力手段と、
前記入力手段に入力された画像データに基づいて画像を形成する画像形成手段と、
前記入力手段に入力された画像データを解析する解析手段とを有し、
前記画像形成手段は、前記設定手段が前記解析手段の解析結果に基づいて前記動作設定をした後に画像を形成することを特徴とする画像形成装置。
【請求項２】
前記設定手段は、前記記憶手段のインストラクションキャッシュとデータキャッシュの容量割合を変化させることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記設定手段は、前記記憶手段においてキャッシュとして利用する容量とワークメモリとして利用する容量割合を変化させることを特徴とする請求項１に記載の画像形成装置。
【請求項４】
前記設定手段は、システムメモリの中でキャッシュを割り当てる領域を変更することを特徴とする請求項１に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像形成装置に関し、詳しくは、キャッシュ機構をもった演算装置を用いて中間データ生成処理およびレンダリング処理を実行する画像形成装置及び画像形成方法ならびに画像形成方法を実行するプログラムに関するものである。
【背景技術】
【０００２】
ソフトウェアを高速に動作させようとした場合、重要な要素の１つにＣＰＵキャッシュ（Ｌ１キャッシュ、Ｌ２キャッシュの等）を如何に有効に利用するかという点がある。
【０００３】
ＣＰＵ内部の演算等のユニットは複数が並列動作することにより高速に処理するという方向性も存在するが、そのユニットを動作するためのデータがインストラクションやデータが効率的に読み込まれなければ、ユニットを複数持っていようが並列動作不可能である。そういった意味でＣＰＵキャッシュを利用して効率的にインストラクションやデータをＣＰＵ内部に取り込みことがソフトウェアを高速に動作させることのベースであり、ユニットの並列動作はその効率化の付加要素と考えても良い。
【０００４】
ＣＰＵキャッシュは高価であるのでその容量はシステムメモリより小さくなる。容量が小さくても有効であるのは、現在実行中の命令とこれが使うデータ(必要なとき)に着目すると、次に実行する命令とデータは、現在のそれらが格納されている近くのアドレスを持つメモリ領域に格納されているというメモリアクセスの局所性というランタイムプログラムの特性に基づいているからである。結局のところ、それぞれのプログラムにおけるメモリアクセスの局所性の特徴を把握し、さらに局所性を高めるようにコーディングの変更（アルゴリズムの変更や、ＶＬＩＷ命令、ＳＩＭＤ命令による最適化等）をすることによりソフトウェアの高速化が実現できる。
【０００５】
さらにソフトウェア高速化の別のアプローチとしてＣＰＵキャッシュ内容を能動的に管理する方法がある。通常ＣＰＵキャッシュ内容はＣＰＵとその周辺チップの動作により自動的に決定してしまうが、ＣＰＵキャッシュの一部をワークメモリのように利用可能なものも存在する。ワークメモリとした部分は自動的にＣＰＵキャッシュへの取込みや、書出しが行われず、プログラムがダイレクトメモリアクセス（ＤＭＡ）回路を用いて能動的にインストラクションやデータをキャッシュメモリへの取込みや書出しを行う。画像形成においても文字形成（スケーリング）に関して、インストラクションと文字形成後のデータを能動的に管理する技術が存在する（例えば、特許文献１参照）。
【特許文献１】特許第３１２８７９９号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、文字形成に関してのみ高速化しており画像形成における文字以外の処理（例えば多角形描画などのグラフィックス描画や、ビットマップ画像（２値、多値）を利用したイメージ描画を含んだ総合的な画像形成）についてソフトウェアの高速化が十分なされていないといった問題的があり、ＰＤＬデータやＰＤＦやＸＭＬといった電子文書を表示あるいは印刷する装置では高速化が不十分になっていた。
【０００７】
本発明は、上述の問題点に着目してなされたものであって、文字、グラフィック、イメージなどの複数のオブジェクトで構成される電子文書の画像形成をソフトウェアで高速に形成することが出来るようになり、画像の表示や印刷などを高速に行うことが可能な画像形成装置をユーザに提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明は、上記目的を達成するために、以下の構成を備える。
【０００９】
（１）ＣＰＵがアクセス可能な記憶手段と、前記記憶手段の動作設定をする設定手段と、画像データを入力する入力手段と、前記入力手段に入力された画像データに基づいて画像を形成する画像形成手段と、前記入力手段に入力された画像データを解析する解析手段とを有し、前記画像形成手段は、前記設定手段が前記解析手段の解析結果に基づいて前記動作設定をした後に画像を形成する画像形成装置。
【００１０】
（２）前記設定手段は、前記記憶手段のインストラクションキャッシュとデータキャッシュの容量割合を変化させる前記（１）に記載の画像形成装置。
【００１１】
（３）前記設定手段は、前記記憶手段においてキャッシュとして利用する容量とワークメモリとして利用する容量割合を変化させる前記（１）に記載の画像形成装置。
【００１２】
（４）前記設定手段は、システムメモリの中でキャッシュを割り当てる領域を変更する前記（１）記載の画像形成装置。
【００１３】
さらに説明すると、ＣＰＵキャッシュあるいはＣＰＵから内部クロックか内部クロック近い速度でアクセス可能なＲＡＭを備え、設定を動作開始時および動作中に自由に設定変更可能な機能を備えた画像形成装置において、画像形成する元データの内容を分析し、その傾向に応じて上記ＣＰＵキャッシュ等の設定内容を最適に設定しなおしてから画像形成を行う処理を有することを特徴とする。扱う画像形成する元データの内容の傾向が常に同じの場合は、分析を行わない固定設定を持つことが可能なことを特徴とする。
【００１４】
上記設定はキャッシュ内のインストラクションキャッシュとデータキャッシュの容量割合を変化させる手段、キャッシュとして利用する容量とワークメモリとして利用する容量割合を変化させる手段、システムメモリの中でキャッシュを割り当てる領域を変更する手段有することを特徴とする。
【００１５】
ワークメモリにした領域をフレームメモリの一部として利用する手段を有する。フレームメモリの一部とは画像形成する元データ内に含まれる１つのオブジェクトの描領領域ではなく、複数のオブジェクトをまとめた描画領域であることを特徴とする。上記、複数のオブジェクトをまとめた描画領域は中間データ生成時に複数のオブジェクトをまとめた領域テーブルを作成しておき、その領域ごとに処理することにより効率良く処理する手段を備えることを特徴とする。キャッシュの設定変更は、画像形成処理における中間データ生成処理までと、それ以降のレンダリングでは特徴なる。
【００１６】
中間データ生成処理まではインストラクションを多く読み込み、レンダリング処理はデータを多く読み書きする特徴に応じて、中間データ生成まではインストラクションの読み込みに有利な設定とし、レンダリング処理時にはデータの読み書きに有利な設定とする手段を有し、画像生成に用いる元データが予めラインまたはバンドにソートされていると判断された場合は、最初からレンダリング処理時と同様な設定にする手段を有する。上記判断はＰＤＬデータあるいは電子文書の種類である手段を有する。
【発明の効果】
【００１７】
本発明によれば、文字、グラフィック、イメージなどの複数のオブジェクトで構成される電子文書の画像形成をソフトウェアで高速に形成することが出来るようになり、画像の表示や印刷などを高速に行うことが可能な画像形成装置をユーザに提供することが可能になる。
【発明を実施するための最良の形態】
【００１８】
本実施例を適用するに好適なレーザビームプリンタの構成について説明する。なお、本実施例を適用するプリンタは、レーザビームプリンタおよびインクジェットプリンタに限られるものでなく、他のプリント方式のプリンタでもよいことは言うまでもない。
【００１９】
図１は本発明を適用可能な第１の出力装置の構成を示す断面図であり、例えばレーザビームプリンタ（ＬＢＰ）の場合を示す。
【００２０】
図において、１００はＬＢＰ本体であり、外部に接続されているホストコンピュータから供給される印刷情報（文字コード等）やフォーム情報あるいはマクロ命令等を入力して記憶するとともに、それらの情報にしたがって対応する文字パターンやフォームパターン等を作成し、記録媒体である記録紙等に像を形成する。１１２は操作の為のスイッチおよびＬＥＤ表示器等が配されている操作パネル、１０１はＬＢＰ本体１００全体の制御およびホストコンピュータから供給される文字情報等を解析するプリンタ制御ユニットである。このプリンタの制御ユニット１０１は、主に文字情報を対応する文字パターンのビデオ信号に変換してレーザドライバ１０２出力する。レーザドライバ１０２は半導体レーザ１０３を駆動する為の回路であり、入力されたビデオ信号に応じて半導体レーザ１０３から発射されるレーザ光１０４をオン・オフ切り換えする。レーザ光１０４は回転多面鏡１０５で左右方向に振らされて静電ドラム１０６上を走査露光する。これにより、静電ドラム１０６上には文字パターンの静電潜像が形成されることになる。この潜像は、静電ドラム１０６周囲に配設された現像ユニット１０７により現像された後、記録紙に転写される。この記録紙にはカットシートを用い、カットシート記録紙はＬＢＰ１００に装着した用紙カセット１０８に収納され、給紙ローラ１１１により装置内に取り込まれ、静電ドラム１０６に供給される。また、ＬＢＰ本体１００には、図示しないカードスロットを少なくとも１個以上備え、内臓フォントに加えてオプションフォントカード、言語系の異なる制御カード（エミュレーションカード）を接続できるように構成されている。
【００２１】
図２は本発明の実施例を示すプリンタ制御システムの構成を説明するブロック図である。ここでは、レーザビームプリンタ（図１）を例に説明する。図において、２００はホストコンピュータで、ＲＯＭ２０４のプログラム用ＲＯＭに記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在して文書を実行するＣＰＵ２０２を備え、システムデバイス２０５に接続される各デバイスをＣＰＵ２０２が総括的に制御する。また、本発明における図７〜図１１および図１４〜１５で示される各種変換処理はフロッピー(登録商標)ディスクやＣＤ−ＲＯＭあるいはＤＶＤ−ＲＯＭといったメディアで供給され同様に実行される。
【００２２】
また、このＲＯＭ２０４のプログラム用のＲＯＭには、ＣＰＵ２０２の制御プログラム等を記憶し、ＲＯＭ２０４のフォント用ＲＯＭには上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ２０４のデータ用ＲＯＭは上記文書処理等を行う際に使用する各種データを記憶する。２０３はＲＡＭでＣＰＵ２０２の主メモリ、ワークエリア等として機能する。２０６はキーボードコントローラ（ＫＢＣ）で、キーボード２１０や不図示のポインティングデバイスからのキー入力を制御する。２０７はＣＲＴコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）２１１の表示を制御する。２０８はメモリコントローラ（ＭＣ）で、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、編集ファイル用を記憶するハードディスク（ＨＤ）、フロッピー(登録商標)ディスク（ＦＤ）等の外部メモリ２１２とのアクセスを制御する。２０９、２２６はデバイス間のＩ/Ｏを制御する処理部で、具体例としてＩＥＥＥ１３９４の様なインターフェースが挙げられるが、双方向通信が可能なインターフェースであれば、その種類は問わない。また、プリンタ２２０において、２２２はプリンタＣＰＵで、ＲＯＭ２２４のプログラム用ＲＯＭに記憶された制御プログラム等或いは外部メモリ２３１に記憶された制御プログラム等に基づいてシステムバス２２５に接続される各種のデバイスとのアクセスを総括的に制御し、印刷部インターフェース２２７を介して接続される印刷部（プリンタエンジン）２２９に出力情報としての画像信号を出力する。また、このＲＯＭ２２４のプログラムＲＯＭには、図１３に示されるフローチャートで示されるようなＣＰＵ２２２の制御プログラム等を記憶する。ＲＯＭ２２４のデータ用ＲＯＭにはハードディスク等の外部メモリ２３１が無いプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。ＣＰＵ２２２は入力部（プリンタ外部Ｉ／Ｏ制御部）２２６を介してホストコンピュータ２００との通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ２００に通知可能に構成されている。２２３はＣＰＵ２２２の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張できるように設計されている。ＲＡＭ２２３は、印刷データの格納、出力情報展開、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ２３１は、メモリコントローラ（ＭＣ）２２８によりアクセスを制御される。２３０は前述した操作パネルで操作の為のスイッチおよびＬＥＤ表示機機等が配されている。
【００２３】
また、前述した外部メモリは１個に限らず、少なくとも１個以上備え、内臓フォントに加えてオプションカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル２３０からのプリンタモード設定情報を記憶するようにしてもよい。
【実施例１】
【００２４】
図３はＣＰＵとＣＰＵキャッシュの関係を詳細に示した図である。３０４が実際のインストラクションを処理するＣＰＵコア部で３０１はＬ１命令キャッシュ、３０２はＬ１データキャッシュである。３０５はインストラクションとデータと共用のＬ２キャッシュであり、実施例ではこのＬ２キャッシュ３０５の設定を変更することにより説明する。もちろん本発明はＬ１キャッシュを変更することにも適応可能だが、Ｌ１キャッシュはＣＰＵコア３０４と密接な関係があり、実質Ｌ１キャッシュが無いと動作出来ない。そのＬ１キャッシュの設定を変更することは動作不良を起こすなどのリスクがあり、本発明を適応するのにＬ２キャッシュの設定を変更するのは妥当な選択だと言える。３０８はシステムメモリ、３０７はＬ２キャッシュ３０５とシステムメモリ３０８間のダイレクトメモリアクセスを可能にするＤＭＡ回路である。３０３は高速に動作可能なＣＰＵの内部バスでＣＰＵコアとＬ１キャッシュ、Ｌ１キャッシュとＬ２キャッシュ間のインストラクションやデータの転送はこのバスを用いて行われる。３０６はＣＰＵの外にある外部バスで内部バスに比べて低速である。この内部バスと外部バスの速度差によってＣＰＵキャッシュは必要とされる。
【００２５】
３１０から３１２でＬ２キャッシュとシステムメモリのマッピングを示している。本発明の特徴としてＬ２キャッシュ内を３１０のキャッシュメモリと３１１のワークメモリとして利用可能であることを特徴としている。キャッシュメモリ部はシステムメモリのキャッシュとして動作し、その内容はＣＰＵの動作に応じて自動的に書き換えられる。キャッシュメモリとシステムメモリ間のマッピングにはダイレクトメモリマッピング、フルソシアティブマッピング、Ｎウエイアソシアティブマッピング等が存在するが、本発明においてはどのマッピング方法であっても適応可能である。ワークメモリはＣＰＵコアから見ると高速にアクセス可能なシステムメモリと考えてよく、その内容はプログラムあるいはプログラムによって制御される回路によって変更しない限り書き替えられることは無い。プログラムによって制御される回路とは本発明では３０７のＤＭＡ回路であり、ＣＰＵコアの動作とは並列にＬ２キャッシュとシステムメモリ間のインストラクションやデータの交換を可能にする。
【００２６】
図４は本発明における画像形成を行う元データ（ここでは説明を解りやすくするために以降ＰＤＬデータとする）の特徴に応じてキャッシュメモリとシステムメモリのマッピングを変更する例であるが、４０２、４０３、４０４が画像形成を行うときに使用するインストラクションやデータの全て、あるいは大部分が収められているシステムメモリであるとすると、キャッシュメモリ４０１はその部分に重点的に割り当てられる。また、上述したダイレクトメモリマッピング、フルソシアティブマッピング、Ｎウエイアソシアティブマッピング等が適応可能であるというのは４０１のキャッシュメモリの一部と４０２、４０３、４０４のシステムメモリの一部とのそれぞれとの関係に用いることが可能であるということである。
【００２７】
図５を用いてＬ２キャッシュの設定変更例を説明する。５０１から５０４は複雑な演算処理等を多く処理する場合で、インストラクションの読み込む量が多く、データの読み書きが少ない例である。例えばＰＤＬデータの特徴で言えば、文字のスケーリングや多角形描画のための点列制御における座標演算などが多く含まれている場合である。その場合５０１のＬ２キャッシュはキャッシュメモリとしての容量を大きくし、かつシステムメモリ内のインストラクションが含まれている領域に５０２，５０３，５０４に集中的に割り当てる。
【００２８】
５１０から５１３は連続的なデータのアクセスを多く処理する場合で、５１０のＬ２キャッシュはワークメモリの容量を大きくし、連続したデータのアクセスでもＤＭＡ回路を用いて事前にワークメモリ内にシステムメモリの内容を読み書きし、ＣＰＵはなるべくワークメモリへの書出しを行うことにより高速に処理する。ＰＤＬデータの特徴で言えば、イメージやスケーリング済みの文字を多く処理する場合である。キャッシュメモリはシステムメモリのインストラクションが含まれている領域５１１よりも、データ含まれている領域５１２、５１３に多く割り当てられる。
【００２９】
図６を用いてＰＤＬデータの特徴以外にも、画像形成工程の特徴によってキャッシュ設定を変更する例について説明する。６０１のＰＤＬデータから最終的な画像イメージ６０９を形成する工程である。
【００３０】
近年、画像の高解像度化や高階調度化が進むことにより最終的な画像イメージを形成するための１ページ分のメモリ（以降フレームメモリと記述）は膨大な容量となり、特にメモリ容量を抑え低コストを目指した装置などにおいては１ページ分のフレームメモリを確保することが出来ない。そのためラインやバンドごとに画像を形成し、形成後圧縮処理を施すのが普通である。ラインやバンドごとに画像を形成するためには並び替えが必要で中間データ６０５を生成する必要がある。この工程において中間データ生成処理６０３において複雑な処理を全て行ってしまい、中間データ６０５の抽象度は出来うる限り下げておく。６０７のレンダリング処理においては中間データに指示通りフレームメモリにビットを書き込んでいくという処理になるのが一般的である。また、中間データの容量が大きくなっては意味が無いので、６０１から６０５までの工程においては、なるべく圧縮処理を行い、低解像度、低階調度の状態で中間データを生成する。
【００３１】
以上のことにより中間データ生成処理６０３は抽象度を下げるための処理や圧縮処理を行う必要があるため、処理が複雑になりインストラクションを多く読み込む必要がある反面、データの入力６０２や出力６０４は小さくなる。それに比べてレンダリング処理６０７は処理が単純であるためインストラクションを読み込む量は少なく。逆にデータの入力６０６および出力６０８は多くなる。
【００３２】
以上の特徴から考えれば中間データ生成処理時には図５で説明した５０１から５０４の設定を適応し、レンダリング処理には５１０から５１３を適応すれば高速に処理できることになる。また６１０のように予めラインまたはバンドでソートされたＰＤＬデータも存在する。ＰＤＬデータの種類によってそれが判断可能であるならば、中間データの種類に従って、ラインまたはバンドでソートされているＰＤＬデータの場合には、最初から５１０から５１３に示したレンダリング処理時の設定にすることが考えられる。
【００３３】
図７から図１４までを用いて実際のＰＤＬデータを示しその処理の流れを説明する。
【００３４】
図７は本実施例に使用されるＰＤＬデータ内に含まれるコマンドの一例である。当然のことながらここに示す以外のコマンドがあっても良いことは言うまでも無い。７．１は矩形描画命令で単純な矩形を描画する命令である。インストラクション、データとも少ない。７．２は多角形描画命令であり、座標変換やストローク処理など複雑な演算処理が必要なためインストラクションの読み込み量が多く、データは少ない。７．３は文字印字命令では、ここでは装置内でスケーリング処理をするものとする。よって複雑な処理になりインストラクションの読み込みが多くなり、データの読み込みは少なくなる。７．４はイメージ描画命令で、ここでは矩形状のイメージを単純に貼り付けるもっとも標準的なものとする。インストラクションの読み込みは少なく、データの読み込みは大きい。
【００３５】
図８を用いてＰＤＬデータ全体の構成を説明する。８０１はＰＤＬデータ全体であり、８０２のヘッダ部、図７で示したコマンドが含まれる８０３のページデータで、ページデータは複数含んでよい。８０４はヘッダ部８０２の詳細であり、８０５のＰＤＬ種類を含む。８０５のＰＤＬ種類はラインまたはバンドソートされたＰＤＬデータであるかを判定するのに利用する。８０６は８０３のページデータの一例であり、８０７のコマンド頻度情報と図７で説明したコマンドが複数含まれる。８０７のコマンド頻度情報によってＰＤＬデータの特徴を判断しＬ２キャッシュのキャッシュメモリとワークメモリの割合等を決定する。
【００３６】
図９はコマンド頻度情報の具体例とその具体例によって、中間データ生成処理時のＬ２キャッシュの設定を変更した例である。９０１はコマンド頻度情報の一例で、図７で示したそれぞれのコマンドに対してページ内に含まれる回数が記載される。この場合、矩形描画コマンドは８０００回（９０２）、多角形描画コマンドは２０００回（９０３）、文字描画およびイメージ描画コマンドは含まれていない（９０４，９０５）ということになる。上記コマンド頻度からＬ２キャッシュをキャッシュメモリ９０６，９０７とワークメモリ９０８に最適なサイズに分割する。キャッシュメモリの容量が確定するので、その容量をインストラクションキャッシュとして使用する領域９０６，９０７とデータキャッシュとして使用する領域９０８に分割する。キャッシュメモリに分割した領域を使用される、または使用頻度が高いコマンドのインストラクションが収められた領域への割り当てを行う。ここでは矩形描画と多角形描画のみが行われるので、キャッシュメモリの上部９０６を矩形描画中間データ生成のインストラクションが格納された領域９０９に割り当て、９０７を多角形描画中間データ生成のインストラクションが格納された領域９１０に割り当てる。データキャッシュに使用する領域９０８はデータキャッシュ全体９１１に割り当てるものとする。データの中で特に使用頻度が高いもの、あるいは領域はワークメモリ領域９１２にＤＭＡ回路等を用いて転送される。以上のことによりＰＤＬデータの特徴に応じたＬ２キャッシュの設定が完了したことになり、この後、行われるＰＤＬデータから中間データを生成は高速に行うことが出来る。
【００３７】
図１０はコマンド頻度情報の具体例とその具体例によって、レンダリング処理時のＬ２キャッシュの設定を変更した例である。割り当て手順としては図９の説明した手順と同様になるのでここでは説明しない。レンダリング処理時はキャッシュメモリ１００６，１００７，１００８よりもワークメモリ１０１２を多く割り当て、キャッシュメモリ内もインストラクションキャッシュ１００６，１００７よりデータキャッシュ１００８を多く割り当てる。
【００３８】
図１１は重要インストラクションが指定されていた場合である。１１０２が重要インストラクション（例えばもっとも重要なアルゴリズム処理や繰り返し処理関数を指定しておく）であるとすると、キャッシュメモリに同容量の領域１１０１を確保してしまう。つまり重要インストラクションについては一度キャッシュメモリに読み込まれたら、設定を変更するまではキャッシュメモリから無くなることが無い。よってある特定の関数などが全体の処理時間の９０％以上を占めている場合などは、その関数を重要インストラクションとして指定しておけば高速に処理することが出来るようになる。
【００３９】
図１２は図９で説明したキャッシュメモリをシステムメモリの一部に割り当てる場合に使用されるコマンドごとにインストラクションが格納された領域を指定するテーブルで、このテーブルを参照しながらキャッシュメモリを実際に割り当てる。
【００４０】
１２０１、１２１１はそれぞれコマンド名で、１２０１から１２０４までが中間データ生成処理用であり、１２１１から１２１４がレンダリング処理用である。１２０２，１２１２はインストラクションの格納されたシステムメモリ内の位置を示している。
【００４１】
１２０３，１２１３は重要インストラクションのシステムメモリ内の位置を示している。重要インストラクションが存在しないのは特に処理時間が集中する関数等が無い場合である。１２０４，１２１４は各処理が使用したいワークメモリの容量を示している。
【００４２】
１２０５、１２１５はキャッシュメモリをインストラクションキャッシュとデータキャッシュに割り当てるときに使用する係数である。この係数はそれぞれのコマンドがインストラクションキャッシュを利用した方が良いか、データキャッシュを用いた方が良いのかという特徴を示しており、図７の説明したものを数値化している。０．５〜２．０で表現され、２．０に近いほどインストラクションキャッシュを必要し、０．５に近いほどデータキャッシュを必要とする。
【００４３】
各コマンドの描画回数と係数を掛け算して足し合わせた数値を総描画回数で割ったものを最終的な係数とする。その係数により１２２０に示すように、インストラクションキャッシュとデータキャッシュの分割する境界線を決定する。上下１割程は必ずインストラクションキャッシュあるいはデータキャッシュに割り当てられるようにし、どちかの割り当てが全く無いという状況をなくしている。これは、例えば１回しか描画しないコマンドのインストラクション領域にはキャッシュメモリは割り当てたく無い。上記１割はコマンド描画されるが、その描画回数が少なくキャッシュメモリの割り当てがされなかった処理への救済処置である。
【００４４】
図１３を用いて上述してきたＬ２キャッシュの設定変更に関する処理の流れを説明する。
【００４５】
１３０１においてＰＤＬデータが受信されるのを待つ。ＰＤＬデータが受信されたら１３０２においてＰＤＬデータに含まれる全てのページに対して処理を行った後、受信状態に戻るように判断する。
【００４６】
１３０３から１３１８までの処理がＰＤＬデータの各ページに対して行われる。１３０３において図８のヘッダ８０４に含まれるＰＤＬ種類８０５を判定し、ラインまたはバンドソート済みのＰＤＬデータであるか判断する。ソート済みであれば１３０５においてレンダリング処理モードに設定し、最初からレンダリング処理に特化したＬ２キャッシュ設定を行う。ソートされていない場合は１３０４において中間データ生成処理に特化したＬ２キャッシュの設定を行うように判断する。
【００４７】
１３０６において中間生成処理モードである場合は、１３０７において中間データ生成処理用の各コマンドのインストラクションのシステムメモリ内の位置等を示した情報（図１２の１２０１から１２０５）を、以降の１３１１から１３１３の処理において使用するように判断する。１３０９、１３１０でＰＤＬデータからコマンド頻度、そのコマンド頻度から総コマンド数を取得して以下の処理で利用する。以降中間データ生成モードであったとして説明を続ける。
【００４８】
１３１１においてＬ２キャッシュをキャッシュメモリとワークメモリに最適なサイズに分割する。１３１２においてキャッシュメモリの容量が確定するので、その容量をインストラクションキャッシュとして使用する領域とデータキャッシュとして使用する領域に分割する。１３１３においてキャッシュメモリに分割した領域を使用される、または使用頻度が高いコマンドのインストラクションが収められた領域への割り当てを行う。ここまでで中間データ生成処理用のＬ２キャッシュの設定が終了している。
【００４９】
１３１４では中間データ生成処理モードなので１３１５の中間データ生成処理が実装される。中間データを生成しおえたら１３１６においてレンダリング処理モードに設定する。その後１３０６の処理に戻り、今度はレンダリング処理モードになっているので１３０８の処理が選択され、レンダリング処理用の各コマンドのインストラクションのシステムメモリ内の位置等を示した情報（図１２の１２１１から１２１５）を、以降の１３１１から１３１３の処理において使用するように判断する。以下中間データ生成処理と同様に１３０９から１３１３までの処理を行うことによって、レンダリング処理用にＬ２キャッシュが設定される。
【００５０】
１３１４ではレンダリング処理モードなので１３１７、１３１８の処理が選択される。１３１７において全てのラインあるいはバンドに対して１３１８のレンダリング処理を行うように判断し、実行する。
【００５１】
図１４の１４０１から１４０６は図１３における１３１１のＬ２キャッシュをキャッシュメモリとワークメモリに分割する処理の詳細な流れを示すフローチャートである。
【００５２】
１４０１から１４０４で各コマンドを実行するのに最適なワークメモリ容量を取得する。
【００５３】
１４０５において描画回数が１００回以上の描画されるコマンドの処理の中で最大のワークメモリ容量のものを、ワークメモリの容量とする。１００回という数値は可変にしても良い。例えば総コマンド数がそもそも１００個以下のならは１回以上とすれば良い。本実施例では総コマンド数が１００００個程度のＰＤＬデータを仮定して１/１００程度を目安とした。また、加算するのでは無く最大の容量を設定するのは、本実施例ではコマンドは並列に処理されないとしているためである。もちろん並列に処理する場合や、Ｌ２キャッシュ容量に余裕がある場合は、加算した容量を確保しても良い。
【００５４】
１４０６においてＬ２キャッシュ容量から１４０５で決定したワークメモリ容量を引いた容量が、キャッシュメモリ容量となる。
【００５５】
図１４の１４１１から１４１６は図１３における１３１２のキャッシュメモリ領域をインストラクションキャッシュとして使用する領域とデータキャッシュとして使用する領域に分割する処理の流れの詳細を示すフローチャートである。
【００５６】
１４１１においてａを初期化する。
【００５７】
ａ＝ａ＋各コマンド描画数×係数
を計算する。ここで係数とは１４１２から１４１５において、図１２の１２０５から１２１５で示した値である。
【００５８】
１４１６で、
ａ＝ａ÷総コマンド数
を計算すると、aは０．５〜２．０の間の値を取る。この値を利用して図１２の１２２０を用いて説明したキャッシュメモリとデータキャッシュの分割を行う。
【００５９】
図１４の１４２１から１４２９は図１３における１３１３のインストラクションキャッシュとして割り当てられた領域をシステムメモリのどの領域を割り当てるか決定する処理の詳細な流れを示すフローチャートである。
【００６０】
１４２１で描画数が１００以上のコマンド数を得る図９から図１１の例でいえば、矩形描画命令と多角形描画命令なので２つとなる。１４２２でキャッシュメモリ容量を個数で割ることにより、１コマンドのインストラクションに割り当てられるキャッシュメモリ容量を算出する。１４２３において描画数が１００以上のコマンドを全て処理する。１４２４において重要インストラクションがあるか判断する。判断は図１２の１２０３、１２１３を参照すれば良い。割り当てられてない場合は、１４２２で算出したキャッシュメモリ容量を１２０２、１２１２で示されるインストラクション領域全体のキャッシュとして割り当てる。重要インストラクションがある場合は１４２６において１４２２で割り当てられた領域が重要インストラクションの容量より大きいか判断する。十分に大きい場合は１４２７においてキャッシュメモリから重要インストラクションの容量分を重要インストラクション専用のキャッシュメモリとして割り当てる。この結果、重要インストラクション部分はキャッシュメモリから次に設定を変更するまで常駐させることができるので１４２８において重要インストラクションはＤＭＡ回路を用いてＬ２キャッシュに転送してしまう。１４２８において重要インストラクション領域に用いた以外のキャッシュメモリを領域全体のキャッシュメモリとして割り当てる（１４２９）。また１４２６において割り当てられたキャッシュメモリ領域が少なかった場合は、重要インストラクションは無視して考える。１４３０で１４２５と同様な処理を行う。
【００６１】
以上により、画像形成装置に送られてきたＰＤＬデータは最適なキャッシュ設定にしたから中間データ生成処理およびレンダリング処理が行われるので高速な画像形成を行うことが可能になる。
【００６２】
図１５と図１６を用いてレンダリング処理の一例を利用してワークメモリの利用方法について説明する。図１５は各描画オブジェクト（コマンドが解析されレンダリング処理に好適なデータに変換したものをオブジェクトと記す）をグループ化する様子を示している。１５０１は形成しようとしている画像である。本実施例では１５０２のように中間データが生成される。中間データ１５０２から各オブジェクトの１つ１つレンダリング処理し、フレームメモリに書き出していくことにより１５０１の画像が形成される。フレームメモリは容量が大きいため、Ｌ２キャッシュに入らない。その場合は１５１０から１５１１に示すように１５１１のフレームメモリの一部１５１２を１５１０のＬ２キャッシュのワークメモリ部分に転送し、そのワークメモリに対してレンダリング処理を行い。レンダリングが終了したらＬ２キャッシュのワークメモリからフレームメモリへＤＭＡ転送を行う方法が考えられる。上記ＤＭＡでの転送を１５０２のオブジェクトごとに行っていては効率が悪いため、１５０６と１５０７のように描画する位置が近いものは、ある程度グループ化して管理しておき、そのグループ単位にＤＭＡによる転送を行うと効率が良い。中間データをグループとして管理するための情報が１５０３で、１５０４が１５０６に該当するグループの中間データの開始位置と終了位置を記載されている。１５０５は１５０７に該当するグループの中間データの開始位置と終了位置を記載する。すなわちＤＭＡ回路には１５０３のグループを管理している情報（グループテーブル）に従ってフレームメモリ、Ｌ２キャッシュのワークメモリ間のＤＭＡ転送を行わせ。レンダリングは無条件にワークメモリへのレンダリングを行うことによりワークメモリを利用した高速なレンダリング処理を行うことが可能になる。
【００６３】
図１６を用いて中間データから図１５の１５０３に示したグループ情報を生成する処理の流れについて説明する。
【００６４】
１６０１においてレンダリング処理時のワークメモリの容量から、１回のＤＭＡ転送することが可能な矩形サイズを求める。例えば１バイトしかワークメモリが割り当ててなければ、１×４、２×２、４×１の矩形しかフレームメモリから転送できない。１６０２において現在の矩形サイズとグループ開始位置を初期化する。１６０３において中間データに含まれる全てのオブジェクトに対して１６０３から１６１４までの処理を行うように判断する。１６０４においてオブジェクトサイズ（幅高）が１６０１で求めた最大矩形サイズより大きいか判断する。以下小さかった場合についてまず説明する。１６０５において現在の矩形サイズにオブジェクトを追加したときの矩形サイズを求める。１６２０から１６２１はその更新を様子を示している。１６２０が更新までの現在の矩形で、１６２１が追加されるオブジェクトである。結果１６２２が求める矩形になる。１６０５で求めた矩形が１６０１で求めた最大矩形サイズより小さい場合は、このオブジェクトは１回のＤＭＡ転送で転送できるフレームメモリの１部に一緒にレンダリングできるオブジェクトなので１６１０において１６０５で求めた矩形サイズを現在の矩形サイズに設定する。１６０６において大きかった場合、このオブジェクトは別のフレームメモリの一部としてＤＭＡ転送しなければならないので（１６３０が現在の矩形で１６３１のオブジェクトを追加しようとした場合、１６３２が新たにワークメモリとして必要となるが、ワークメモリが１６３３の容量しか無い場合は一緒にレンダリング処理できない）、１６０７において現在の矩形サイズ／グループ開始位置／このオブジェクトの前をグループ終了位置としてグループテーブルに登録する。１６０８において、このオブジェクトのサイズを現在の矩形サイズに設定し、１６０９においてグループ開始位置をこのオブジェクトとする。
【００６５】
次に１６０４において１つのオブジェクトのサイズが最大矩形サイズより大きかった場合について説明する。１つのオブジェクトのサイズが最大矩形サイズより大きい場合はオブジェクトを分割し、最大矩形サイズに収まるようにする。１６１１において１６０７と同様に今までのグループを登録する。１６１２から１６１４においてオブジェクトを最大矩形サイズ以下に分割し、グループテーブルを作成する。分割された最後は最大矩形サイズ以下になるので１６１５において、その最後に分割されたサイズを現在の矩形とし、１６１６においてグループ開始位置に設定する。
【００６６】
以上の処理において全てのオブジェクトがフレームメモリの一部をＬ２キャッシュ内のワークメモリに転送してレンダリング処理することが可能になり、高速なレンダリングが可能になる。また、今回はレンダリング処理の出力のみに注目したが、図１６においてオブジェクトのサイズも小さくされているので、そのオブジェクトもワークメモリに転送するような処理も考えられるし、そのたレンダリング処理時に利用するカラーコンバージョンに関数テーブルやハーフトーンディザテーブルをワークメモリに転送しておいても良いだろう。
【図面の簡単な説明】
【００６７】
【図１】本発明を適用可能な第１の出力装置の構成を示す断面図
【図２】本発明の実施例を示すプリンタ制御システムの構成を説明するブロック図
【図３】ＣＰＵとＣＰＵキャッシュの関係を詳細に示した図
【図４】本発明における画像形成を行う元データの特徴に応じてキャッシュメモリとシステムメモリのマッピングを変更する例を示す図
【図５】Ｌ２キャッシュの設定変更例を説明する図
【図６】ＰＤＬデータの特徴以外にも、画像形成工程の特徴によってキャッシュ設定を変更する例について説明する図
【図７】本実施例に使用されるＰＤＬデータ内に含まれるコマンドの一例を示す図
【図８】ＰＤＬデータ全体の構成を説明する図
【図９】コマンド頻度情報の具体例とその具体例によって、中間データ生成処理時のＬ２キャッシュの設定を変更した例を示す図
【図１０】コマンド頻度情報の具体例とその具体例によってレンダリング処理時のＬ２キャッシュの設定を変更した例を示す図
【図１１】重要インストラクションが指定されていた場合を説明する図
【図１２】キャッシュメモリをシステムメモリの一部に割り当てる場合に使用されるコマンドごとにインストラクションが格納された領域を指定するテーブルを示す図
【図１３】Ｌ２キャッシュの設定変更に関する処理のフローチャート
【図１４】実際のＰＤＬデータの処理のフローチャート
【図１５】各描画オブジェクトをグループ化する様子を示す図
【図１６】中間データからグループ情報を生成する処理のフローチャート
【符号の説明】
【００６８】
２００  ホストコンピュータ
２０２  ＣＰＵ
２０３  ＲＡＭ
２０４  ＲＯＭ
２０６  キーボードコントローラ（ＫＢＣ）
２０７  ＣＲＴコントローラ（ＣＲＴＣ）
２０８  メモリコントローラ（ＭＣ）
２０９  ホスト外部Ｉ／Ｏ制御部
２１０  キーボード（ＫＢ）
２１１  ＣＲＴディスプレイ（ＣＲＴＣ）
２１２  外部メモリ
２２０  プリンタ
２２２  プリンタＣＰＵ
２２３  ＲＡＭ
２２４  ＲＯＭ
２２６  プリンタ外部Ｉ／Ｏ制御部
２２７  印刷部Ｉ／Ｏ制御部
２２８  メモリコントローラ（ＭＣ）
２２９  印刷部（プリンタエンジン）
２３０  操作パネル
２３１  外部メモリ
【図１】
2006277529.tif 000003
【図２】
2006277529.tif 000004
【図６】
2006277529.tif 000005
【図８】
2006277529.tif 000006
【図１２】
2006277529.tif 000007
【図１３】
2006277529.tif 000008
【図１４】
2006277529.tif 000009
【図１６】
2006277529.tif 000010
【図３】
2006277529.tif 000011
【図４】
2006277529.tif 000012
【図５】
2006277529.tif 000013
【図７】
2006277529.tif 000014
【図９】
2006277529.tif 000015
【図１０】
2006277529.tif 000016
【図１１】
2006277529.tif 000017
【図１５】
2006277529.tif 000018