(57)【特許請求の範囲】
【請求項１】
印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する２以上の論理ページ解釈手段と、
前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させる１つのキャッシュ用解釈手段と、
前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段と、
前記キャッシュ手段に記憶される前記キャッシュ対象要素の解釈結果についての管理情報を管理するキャッシュ管理手段と、
を有し、
前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、
前記２以上の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記印刷画像データ生成手段は、前記２以上の論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、
前記２以上の論理ページ解釈手段は、それぞれ、
第１の動作モードと第２の動作モードを有し、
前記第１の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行うことなく、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記第２の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、
前記印刷画像処理システムは、前記２以上の論理ページ解釈手段の動作モードを前記第１のモードと前記第２のモードとの間で切り換える制御を行う制御手段、を更に備える、
印刷画像処理システム。
【請求項２】
前記制御手段は、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記２以上の論理ページ解釈手段で完了するまでは、前記２以上の論理ページ解釈手段を前記第２の動作モードで動作させ、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記２以上の論理ページ解釈手段で完了すると、前記２以上の論理ページ解釈手段の動作モードを前記第１の動作モードに切り換える、
請求項１に記載の印刷画像処理システム。
【請求項３】
前記制御手段は、前記キャッシュ手段の空き容量を監視し、前記２以上の論理ページ解釈手段が前記第１の動作モードで動作しているときに、前記キャッシュ手段の空き容量があらかじめ定められた閾値を下回った場合には、前記２以上の論理ページ解釈手段の動作モードを前記第２の動作モードに切り換える、請求項１又は２に記載の印刷画像処理システム。
【請求項４】
前記２以上の論理ページ解釈手段による前記問合せ通信の総数に対して、それら各問合せ通信に係るキャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていた回数の割合を表す前記キャッシュ手段のヒット率、および、前記キャッシュ手段に記憶されている各キャッシュ対象要素の解釈結果の利用状況を監視し、前記２以上の論理ページ解釈手段が前記第２の動作モードで動作しているときに、前記ヒット率があらかじめ定められた判定閾値を下回った場合には、前記利用状況から解釈結果の最近の利用度合いがあらかじめ定めた閾値を下回るキャッシュ対象要素群を特定し、特定したキャッシュ対象要素群の解釈結果を前記キャッシュ手段から一括して削除する一括削除処理を行い、前記ヒット率が前記判定閾値以上の場合には、前記一括削除処理を行わない一括削除手段、を更に備える、請求項１〜３のいずれか１項に記載の印刷画像処理システム。
【請求項５】
前記制御手段は、前記一括削除手段による削除に応じて、前記２以上の論理ページ解釈手段の動作モードを前記第２の動作モードから前記第１の動作モードに切り換える、請求項４に記載の印刷画像処理システム。
【請求項６】
コンピュータシステムを、
印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する２以上の論理ページ解釈手段、
前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、
前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段、
前記キャッシュ手段に記憶される前記キャッシュ対象要素の解釈結果についての管理情報を管理するキャッシュ管理手段、
として機能させるためのプログラムであって、
前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、
前記２以上の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記印刷画像データ生成手段は、前記２以上の論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、
前記２以上の論理ページ解釈手段は、それぞれ、
第１の動作モードと第２の動作モードを有し、
前記第１の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行うことなく、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記第２の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、
前記コンピュータシステムを、更に、前記２以上の論理ページ解釈手段の動作モードを前記第１のモードと前記第２のモードとの間で切り換える制御を行う制御手段、として機能させる、
ことを特徴とするプログラム。
【請求項７】
コンピュータを、
印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する２以上の論理ページ解釈手段、
前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、
前記キャッシュ手段に記憶される前記キャッシュ対象要素の解釈結果についての管理情報を管理するキャッシュ管理手段、
として機能させるためのプログラムであって、
前記コンピュータは、
前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段、と協働し、
前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、
前記２以上の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記印刷画像データ生成手段は、前記２以上の論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、
前記２以上の論理ページ解釈手段は、それぞれ、
第１の動作モードと第２の動作モードを有し、
前記第１の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行うことなく、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記第２の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、
前記コンピュータを、更に、前記２以上の論理ページ解釈手段の動作モードを前記第１のモードと前記第２のモードとの間で切り換える制御を行う制御手段、として機能させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷画像処理システムおよびプログラムに関する。
【背景技術】
【０００２】
一般に、パーソナルコンピュータから印刷装置に送られる印刷文書データは、ＰｏｓｔＳｃｒｉｐｔ（登録商標）やＰＤＦ( Portable Data Format: ISO 32000-1) などのページ記述言語（以下、ＰＤＬと呼ぶ。ＰＤＬはPage Description Languageの略）で記述されている。印刷装置では、ＲＩＰ( Raster Image Processor)と呼ばれるデータ処理装置により印刷文書データをビットマップ形式（ラスター形式とも呼ばれる）の画像データに変換し、その画像データをプリントエンジンにより印刷する。また、ＰＤＬデータを直接ラスター画像に変換する方式の他に、ＰＤＬデータをＰＤＬコマンドよりは粒度の小さいディスプレイリスト等の中間言語形式のデータに変換してバッファし、バッファした中間言語形式のデータをビットマップ形式に変換するという２段階の変換を行う印刷装置もよく知られている。
【０００３】
従来、ＰＤＬデータからビットマップ形式又は中間言語形式の画像データへの変換を、ページ単位などのあらかじめ定められた単位ごとに、複数のデータ処理装置で並列的に実行するシステムも知られている。
【０００４】
また、従来、あるデータ処理装置が印刷データ中のＰＤＬで記述された文書要素（オブジェクト）をビットマップ形式又は中間言語形式へ変換した場合に、その変換結果のデータを文書要素の識別情報と対応づけてキャッシュメモリにキャッシュし、後で同じ又は異なるデータ処理装置が同じ文書要素を変換する必要が生じた場合には、キャッシュされたデータを使用することで、変換処理を省略することも行われている。
【０００５】
特許文献１には、ＰＤＬデータの中間データへの変換を複数の解釈部によりページ単位で並列実行するシステムが開示されている。各解釈部が生成した各ページの中間データは、バックエンド装置でラスター画像データに変換され、印刷装置に供給される。この文献には、フォーム（複数のページで繰り返し利用される画像要素）の画像データをキャッシュし、キャッシュ済みのフォームについてはキャッシュした画像データを再利用するシステム構成も開示されている（図１３等）。このシステムでは、各解釈部が、論理ページのＰＤＬデータを中間データに変換する際、そのページに含まれるフォームの中間データも併せて生成する。
【０００６】
特許文献２には、複数のＲＩＰ処理部がページ単位で並列的にＲＩＰ処理を行う装置が開示される。この装置は、キャッシュメモリを有しており、各ＲＩＰ処理部が生成したフォームのラスター画像データをそのキャッシュメモリに保存して再利用する。この装置は、同じフォームについてのＲＩＰ処理が重複して行われることがないように制御するＲＩＰ処理判定部を備えている。ＲＩＰ処理判別部は、ＲＩＰ処理部に割り当てたページデータにフォームデータが含まれるか否かを判別する。フォームデータが含まれる場合には、そのフォームデータがそれ以前にＲＩＰ処理部の何れかで既にＲＩＰ処理したフォームデータ、または現在、他のＲＩＰ処理部でＲＩＰ処理の実行中であるフォームデータと一致するか否かを、フォームＩＤに基づき判別する。一致しない場合には、そのフォームデータのフォームＩＤを記憶し、そのページデータをＲＩＰ処理するＲＩＰ処理部に対し、そのフォームデータに関するラスタイメージデータをキャッシュメモリに記憶することを指示する。一方、そのフォームデータが、それ以前にＲＩＰ処理部の何れかで既にＲＩＰ処理したフォームデータと一致する場合には、ＲＩＰ処理判別部は、そのページデータをＲＩＰ処理するＲＩＰ処理部に対し、フォームデータ以外の画像データに関するＲＩＰ処理を行い、フォームデータに関しては、キャッシュメモリに記憶されたそのフォームデータに関するラスタイメージデータを取得して使用することを指示する。また、そのフォームデータが、現在他のＲＩＰ処理部にてＲＩＰ処理を実行中であるフォームデータと一致する場合には、ＲＩＰ処理判定部は、そのページデータをＲＩＰ処理するＲＩＰ処理部に対し、フォームデータ以外の画像データに関するＲＩＰ処理を行い、他のＲＩＰ処理部にてＲＩＰ処理が完了するまで待機することを指示する。そして、ＲＩＰ処理判別部は、他のＲＩＰ処理部にてＲＩＰ処理が完了した後に、キャッシュメモリに記憶されたフォームデータに関するラスタイメージデータを取得して使用することを指示する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−７０３３７号公報
【特許文献２】特開２０１１−６７９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、並列的に動作する複数の解釈部が、解釈しようとするキャッシュ対象要素の解釈結果が共用のキャッシュ手段内に存在するか否かを確認せずに処理を進めても、同じキャッシュ対象要素が重複して解釈されることがないようにすることを目的とする。
【課題を解決するための手段】
【０００９】
請求項１に係る発明は、印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する２以上の論理ページ解釈手段と、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させる１つのキャッシュ用解釈手段と、前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段と、を有し、前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記２以上の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記印刷画像データ生成手段は、前記２以上の論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成する、印刷画像処理システムである。
【００１０】
また請求項１に係る発明は、前記キャッシュ手段に記憶される前記キャッシュ対象要素の解釈結果についての管理情報を管理するキャッシュ管理手段を更に備え、前記２以上の論理ページ解釈手段は、それぞれ、第１の動作モードと第２の動作モードを有し、前記第１の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行うことなく、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記第２の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、前記印刷画像処理システムは、前記２以上の論理ページ解釈手段の動作モードを前記第１のモードと前記第２のモードとの間で切り換える制御を行う制御手段、を更に備える。
【００１１】
請求項２に係る発明は、前記制御手段は、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記２以上の論理ページ解釈手段で完了するまでは、前記２以上の論理ページ解釈手段を前記第２の動作モードで動作させ、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記２以上の論理ページ解釈手段で完了すると、前記２以上の論理ページ解釈手段の動作モードを前記第１の動作モードに切り換える、請求項１に記載の印刷画像処理システムである。
【００１２】
請求項３に係る発明は、前記制御手段は、前記キャッシュ手段の空き容量を監視し、前記２以上の論理ページ解釈手段が前記第１の動作モードで動作しているときに、前記キャッシュ手段の空き容量があらかじめ定められた閾値を下回った場合には、前記２以上の論理ページ解釈手段の動作モードを前記第２の動作モードに切り換える、請求項１又は２に記載の印刷画像処理システムである。
【００１３】
請求項４に係る発明は、前記２以上の論理ページ解釈手段による前記問合せ通信の総数に対して、それら各問合せ通信に係るキャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていた回数の割合を表す前記キャッシュ手段のヒット率、および、前記キャッシュ手段に記憶されている各キャッシュ対象要素の解釈結果の利用状況を監視し、前記２以上の論理ページ解釈手段が前記第２の動作モードで動作しているときに、前記ヒット率があらかじめ定められた判定閾値を下回った場合には、前記利用状況から解釈結果の最近の利用度合いがあらかじめ定めた閾値を下回るキャッシュ対象要素群を特定し、特定したキャッシュ対象要素群の解釈結果を前記キャッシュ手段から一括して削除する一括削除処理を行い、前記ヒット率が前記判定閾値以上の場合には、前記一括削除処理を行わない一括削除手段、を更に備える、請求項１〜３のいずれか１項に記載の印刷画像処理システムである。
【００１４】
請求項５に係る発明は、前記制御手段は、前記一括削除手段による削除に応じて、前記２以上の論理ページ解釈手段の動作モードを前記第２の動作モードから前記第１の動作モードに切り換える、請求項４に記載の印刷画像処理システムである。
【００１５】
請求項６に係る発明は、コンピュータシステムを、印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する２以上の論理ページ解釈手段、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段、前記キャッシュ手段に記憶される前記キャッシュ対象要素の解釈結果についての管理情報を管理するキャッシュ管理手段、として機能させるためのプログラムであって、前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記２以上の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記印刷画像データ生成手段は、前記２以上の論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、前記２以上の論理ページ解釈手段は、それぞれ、第１の動作モードと第２の動作モードを有し、前記第１の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行うことなく、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記第２の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、前記コンピュータシステムを、更に、前記２以上の論理ページ解釈手段の動作モードを前記第１のモードと前記第２のモードとの間で切り換える制御を行う制御手段、として機能させる、ことを特徴とするプログラムである。
【００１６】
請求項７に係る発明は、コンピュータを、印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する２以上の論理ページ解釈手段、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、前記キャッシュ手段に記憶される前記キャッシュ対象要素の解釈結果についての管理情報を管理するキャッシュ管理手段、として機能させるためのプログラムであって、前記コンピュータは、前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段、と協働し、前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記２以上の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記印刷画像データ生成手段は、前記２以上の論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、前記２以上の論理ページ解釈手段は、それぞれ、第１の動作モードと第２の動作モードを有し、前記第１の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行うことなく、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記第２の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を前記キャッシュ管理手段に対して行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、前記コンピュータを、更に、前記２以上の論理ページ解釈手段の動作モードを前記第１のモードと前記第２のモードとの間で切り換える制御を行う制御手段、として機能させる、ことを特徴とするプログラム。
【発明の効果】
【００１７】
請求項１、７または９に係る発明によれば、並列的に動作する複数の解釈部が、解釈しようとするキャッシュ対象要素の解釈結果が共用のキャッシュ手段内に存在するか否かを確認せずに処理を進めても、同じキャッシュ対象要素が重複して解釈されることがないようにすることができる。
【００１８】
請求項２に係る発明によれば、請求項１に規定した論理ページ解釈手段の動作（第１の動作モード）では処理効率が悪い場合でも、第２の動作モードで対応することが可能となる。
【００１９】
請求項３に係る発明によれば、第１の動作モードでは処理効率が悪い印刷ジョブの最初の方のページ群の処理効率を第２の動作モードにより向上させることができ、その最初のページ群の後は、第１の動作モードに切り換えることで処理を高速化することができる。
【００２０】
請求項４に係る発明によれば、キャッシュ手段の空き容量が少なくなった場合に、キャッシュ手段内の既存のデータを削除しても、各論理ページの解釈および描画が正しく行われるようにすることができる。
【００２１】
請求項５に係る発明によれば、キャッシュ手段のヒット率が低くなった場合に、キャッシュ手段内のあまり利用されていないキャッシュ対象要素の中間データを一括削除し、利用が増えてきたキャッシュ対象要素の中間データがキャッシュ手段に記憶されやすくすることができる。
【００２２】
請求項６に係る発明によれば、キャッシュ手段内のあまり利用されていないキャッシュ対象要素の中間データを一括削除してキャッシュ手段の空き容量を増やした段階で、第１の動作モードに切り換えることで処理を高速化することができる。
【図面の簡単な説明】
【００２３】
【図１】画像処理システムの構成の例を示すブロック図である。
【図２】印刷コントローラの内部構成の例を示すブロック図である。
【図３】実施形態の印刷コントローラの内部構成の例を示すブロック図である。
【図４】論理ページ解釈部およびフォーム解釈部の全体的な処理手順の例を示す図である。
【図５】論理ページ解釈部のコマンドごとの処理手順の例を示す図である。
【図６】フォーム解釈部のコマンドごとの処理手順の例を示す図である。
【図７】描画部の全体的な処理手順の例を示す図である。
【図８】描画部のコマンドごとの描画処理の手順の例を示す図である。
【図９】変形例の印刷コントローラの内部構成の例を示すブロック図である。
【図１０】変形例のキャッシュ管理部の内部構成の例を示すブロック図である。
【図１１】キャッシュテーブルのデータ内容の一例を示す図である。
【図１２】動作モード切換制御の手順の一例を示す図である。
【図１３】動作モード切換制御の手順の別の一例を示す図である。
【図１４】動作モード切換制御の手順の更に別の一例を示す図である。
【図１５】動作モード切換制御の手順の更に別の一例を示す図である。
【図１６】キャッシュテーブルのデータ内容の別の例を示す図である。
【図１７】変形例のフォーム解釈部に全体的な処理手順の例を示す図である。
【図１８】変形例におけるページ同期処理の手順の例を示す図である。
【図１９】変形例の論理ページ解釈部のコマンドごとの処理手順の例を示す図である。
【図２０】変形例のフォーム解釈部のコマンドごとの処理手順の例を示す図である。
【発明を実施するための形態】
【００２４】
＜システムのハードウエア構成＞
図１は、画像処理システムの構成の一例を示すブロック図である。以下で説明する本発明の各種の実施形態の例による画像処理システムは、いずれも、図１に例示する構成を備えるものとする。図１の例のシステムは、端末装置１０、印刷コントローラ２０、および印刷装置５０を備える。印刷コントローラ２０は、フロントエンド装置３０およびバックエンド装置４０を有している。端末装置１０は、通信手段６０を介してフロントエンド装置３０に接続されており、ユーザの指示に従い、文書の印刷命令を含む印刷ジョブをフロントエンド装置３０に対して送信する。フロントエンド装置３０は、通信手段６２を介してバックエンド装置４０に接続され、バックエンド装置４０は、通信手段６４を介して印刷装置５０に接続される。
【００２５】
通信手段６０，６２，６４は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークであってよい。通信手段６０，６２，６４は、互いに共通の通信手段であってもよいし、それぞれ異なる通信手段であってもよい。例えば、端末装置１０とフロントエンド装置３０との間の通信手段６０としてＬＡＮを用い、フロントエンド装置３０とバックエンド装置４０との間の通信手段６２およびバックエンド装置４０と印刷装置５０との間の通信手段６４として、それぞれ、ＬＡＮと異なる専用の通信手段を用いてもよい。
【００２６】
図１の例のシステムでは、端末装置１０から送信された印刷ジョブをフロントエンド装置３０において処理し、この処理結果のデータがバックエンド装置４０に渡され、バックエンド装置４０において生成された描画データ（ラスターデータとも言う）に従って印刷装置５０による印刷が行われる。
【００２７】
図１の例の端末装置１０、フロントエンド装置３０、およびバックエンド装置４０は、例えば汎用のコンピュータによって実現され得る。コンピュータは、ハードウエアとして、ＣＰＵ（中央演算装置）、メモリ（一次記憶）、各種Ｉ／Ｏ（入出力）インタフェース、通信インタフェースなどがバスを介して接続された回路構成を有する。コンピュータは、通信インタフェースを介して、他の装置との間でデータの授受を行う。また、バスに対し、例えばＩ／Ｏインタフェース経由で、キーボードやマウスなどの入力装置、および、ＣＲＴ（Cathode Ray Tube）や液晶ディスプレイなどの表示装置が接続される。また、バスには、Ｉ／Ｏインタフェースを介して、ＨＤＤ（ハードディスクドライブ）や、ＣＤ、ＤＶＤ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブが接続される。このようなドライブ，は、メモリに対する外部記憶装置として機能する。後述の各実施形態の処理内容が記述されたプログラムがＣＤやＤＶＤなどの記録媒体を経由して、またはネットワーク経由で、ＨＤＤなどの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されＣＰＵにより実行されることにより、後述の各実施形態の処理が実現される。
【００２８】
なお、後述の各実施形態の例において、バックエンド装置４０の機能の一部は、プログラムの実行によるソフトウエア処理ではなく、ハードウエア処理により実現してよい。ハードウエア処理は、例えば、動的再構成可能プロセッサ（Ｄｙｎａｍｉｃ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ，ＤＲＰ）と呼ばれる、処理の実行の途中で動的に回路を再構成できるプロセッサを用いて行ってもよい。あるいは、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等の回路を用いてハードウエア処理を行ってもよい。例えば、バックエンド装置４０の機能の一部を実行する、ＤＲＰやＡＳＩＣ等のハードウエア要素を予め構成しておき、このようなハードウエア要素を汎用コンピュータのバスに対して接続することで、バックエンド装置４０を実現すればよい。
【００２９】
フロントエンド装置３０およびバックエンド装置４０を実現するハードウエアの１つの具体例として、それぞれがサーバとして機能する複数の情報処理装置を１つの筐体内に搭載したブレードサーバを用いることが考えられる。ブレードサーバは、ＣＰＵやメモリを備える汎用のコンピュータを１枚の基板（ブレード）に実装し、複数のブレードを筐体内に搭載したサーバ装置である。例えば、ブレードサーバに搭載された１つのブレードをフロントエンド装置３０として機能させ、他の１つのブレードをバックエンド装置４０として機能させてもよい。あるいは、例えば、フロントエンド装置３０およびバックエンド装置４０のそれぞれを、ブレードサーバに搭載された複数のブレードにより実現してもよい。
【００３０】
印刷装置５０は、紙等の媒体に印刷を行う装置であり、例えば、連続紙プリンタであってよい。以下では、印刷装置５０として連続紙プリンタを用いる場合を例に取り、各実施形態の例を説明する。なお、印刷装置５０は、電子写真、インクジェット、またはその他の方式の印刷エンジンにより印刷を行うものとする。
【００３１】
＜実施形態＞
図２に、印刷コントローラ２０が備えるフロントエンド装置３０およびバックエンド装置４０の機能構成の例を示す。フロントエンド装置３０は、印刷ジョブ受信部３２、ページ配信部３４、および、複数の解釈部３６を備える。バックエンド装置４０は、中間データバッファ４２、描画部４４および出力バッファ４６を備える。
【００３２】
フロントエンド装置３０の印刷ジョブ受信部３２は、端末装置１０から印刷ジョブを受信する。本実施形態の例において、印刷ジョブは、文書を印刷する旨の命令と、印刷対象の文書をページ記述言語で記述したデータと、を含む。ページ記述言語（ＰＤＬと略す：ＰＤＬはPage Description Language の略）は、ディスプレイ表示処理、印刷処理等を情報処理機器に実行させるためのコンピュータプログラミング言語である。ページ記述言語の例としては、ＰｏｓｔＳｃｒｉｐｔ（登録商標）やＰＤＦ（Portable Document Format）等がある。ページ記述言語で記述されたデータは、印刷対象の文書を構成する文字や図形、イメージ（ビットマップ画像）などのオブジェクトの位置情報、書式情報および色情報などを含む。以下の説明では、印刷対象の文書をページ記述言語で記述したデータを「ＰＤＬデータ」と呼ぶ。印刷ジョブ受信部３２は、受信した印刷ジョブに含まれるＰＤＬデータをページ配信部３４に渡す。
【００３３】
ページ配信部３４は、印刷ジョブ受信部３２から取得したＰＤＬデータに含まれるページのうち、どのページをどの解釈部３６に処理させるかを決定する。ここでいう「ページ」は、ＰＤＬデータにおいて規定されているページ、すなわち論理ページである。用紙の１つの面、すなわち１つの物理ページには、印刷設定に応じて、１つ又は複数の論理ページが印刷されることになる。なお、以下では、文脈上明らかなように、特に断りのない場合は、「ページ」という用語は、論理ページを指すものとする。
【００３４】
ページ配信部３４は、各解釈部３６の稼動状態に基づいて、各解釈部３６に対してページを割り当てる。例えば、処理を実行中でない解釈部３６、または他の解釈部３６よりも負荷の低い処理を実行中の解釈部３６を優先して、ＰＤＬ中の先頭ページから順に担当ページを割り当てる。ページ配信部３４は、各解釈部３６に対し、割り当てた担当ページを通知すると共に、印刷ジョブ受信部３２から取得したＰＤＬデータを渡す。この例では、各解釈部３６に対し、ＰＤＬデータにおける担当ページの部分だけでなく、ＰＤＬデータの全体を渡すものとする。これは、例えばページ非独立のＰＤＬ（すなわち、ページの画像の生成が、そのページ以前のＰＤＬデータの解釈結果に依存するタイプのＰＤＬ）を用いている場合の例である。別の例として、ページ独立のＰＤＬ（ページごとのＰＤＬデータのみで当該ページの画像を正しく生成できるタイプのＰＤＬ）を用いる場合は、ページ配信部３４は、各解釈部３６に対してＰＤＬデータのページごとの割り当てを行い、この割り当てに基づいて、ページごとに分割したＰＤＬデータを担当の各解釈部３６に渡してもよい。
【００３５】
解釈部３６は、ページ配信部３４から取得したＰＤＬデータを解釈し、ページ配信部３４から通知された担当ページについて、描画データの生成の手順を表す命令を含む中間データを生成し、出力する。
【００３６】
より詳しくは、解釈部３６は、ＰＤＬデータを解釈し、自身の担当ページについて、中間データを生成する。中間データは、最終的に印刷装置５０に出力されるデータに変換される前段階のデータである。中間データの例として、ディスプレイリストや区間データ形式（例えば本出願人による特開２０１１−１５０５３５号公報参照）等があげられる。ここで、解釈部３６は、印刷装置５０による印刷で用いられる基本色（例えばイエロー（Ｙ，Ｙｅｌｌｏｗ）、マゼンタ（Ｍ，Ｍａｇｅｎｔａ）、シアン（Ｃ，Ｃｙａｎ）、ブラック（Ｋ，Ｂｌａｃｋ）の４色）ごとに分版された中間データを生成するようにしてもよい。ただし、これはあくまで一例に過ぎない。
【００３７】
中間データは、印刷対象の文書の構成要素であるオブジェクトのそれぞれについて、当該文書の印刷画像において当該オブジェクトを描画する手順を表す描画命令を含む。この描画命令を記述する言語としては、ページ記述言語と比較してより詳細な手順を表現する言語が用いられる。例えば、ページ記述言語において、あるオブジェクトの印刷画像上の位置、形状、および大きさを表す情報が定義される場合、中間データにおける当該オブジェクトの描画命令では、印刷画像における走査線単位で当該オブジェクトの描画の手順を記述したものであり得る。中間データに従って、後述のバックエンド装置４０において、印刷装置５０に対して出力される描画データが生成される。
【００３８】
以下に区間データ形式（「ランリスト」形式とも呼ぶ）において用いるコマンドの例を示す。
（１）line, ym, xl, xr, c
ｙ座標ymの走査線において、ｘ座標xlからxr - 1まで、階調cで描画する
（２）duplicate
直前に描画した走査線と同一の態様（ｘ座標，階調）で描画する
（３）window, xl, xr
直前に描画した走査線と同一の階調でｘ座標xlからxr - 1まで描画する
【００３９】
あるページの中間データは、当該ページを構成する各オブジェクトの描画手順を表す命令の集合であると捉えられる。１つのページを表す中間データのデータ量は、当該ページを構成する各画素の値を含むラスタデータと比較して少ない。
【００４０】
なお、区間データ形式は中間データの形式のあくまで一例に過ぎない。本実施形態は、どのような中間データ形式を使用する場合にも適用可能である。バックエンド装置において、ハードウエア処理により描画データを生成する場合には、中間データの形式は、ハードウエア処理による描画データの生成を可能とする描画手順を表す形式であればよく、上に例示した区間データ形式と異なる形式のものでもよい。
【００４１】
解釈部３６が生成した中間データは、バックエンド装置４０に対して出力される。出力された中間データは、バックエンド装置４０の中間データバッファ４２に書き込まれる。描画部４４は、中間データバッファ４２に記憶された各ページの中間データを読み出し、読み出したページの中間データに従って描画データ（ラスターデータ）を生成する。生成された各ページの描画データは出力バッファ４６に格納され、印刷装置５０から順次読み出される。印刷装置５０は、出力バッファ４６から読み出した各ページの描画データを、用紙に対して印刷する。
【００４２】
次に、図３を参照して、実施形態の印刷コントローラ２０の構成を説明する。
【００４３】
図２に例示した構成では、フロントエンド装置３０は複数の解釈部３６を備え、それら複数の解釈部３６が、それぞれ割り当てられたページについての解釈および中間データの生成処理を、並列的に実行する。図３に例示する実施形態の構成では、フロントエンド装置３０は、図２の解釈部３６と同様の、ページ（論理ページ）の中間データ生成を担当する２つの論理ページ解釈部３６−ｐ１および３６−ｐ２（以下、特に区別する必要がない場合は「論理ページ解釈部３６−ｐ」と総称する）に加え、フォームについての中間データ生成を担当するフォーム解釈部３６−ｆを有する。なお、図３の例は、論理ページ解釈部３６−ｐを２つ用いる例であるが、３つ以上用いる構成も考えられる。
【００４４】
「フォーム」とは、複数のページで繰り返し使用されることが想定された画像のことである。フォームは１以上のオブジェクトから構成される。一般に、ＰＤＬデータ中では、フォームに対して、当該フォームをＰＤＬデータ中で一意に識別する識別情報（「フォームＩＤ」と呼ぶ）が付与されている。ＰＤＬデータ中に同じフォームＩＤを指定したコマンドがある場合、それらコマンドは、同じフォームを用いた画像を表す。
【００４５】
本実施形態では、一度生成したフォームの中間データをキャッシュし、再利用する枠組み（フォームキャッシュ４８）を提供することで、同じフォームの中間データが何度も生成されるといった非効率を避ける。フォームキャッシュ４８は、キャッシュ対象のフォームの中間データを一時的に記憶するキャッシュである。
【００４６】
各論理ページ解釈部３６−ｐ１および３６−ｐ２は、それぞれページ配信部３４から割り当てられたページのＰＤＬデータの中間データを生成する。ここで、１つの例では、各論理ページ解釈部３６−ｐは、割り当てられたページ中の、フォーム以外のオブジェクト群を処理する。そして、ページ中に含まれるフォームは、そのフォームを構成するＰＤＬコマンド（オブジェクト）群を中間データ形式に変換したものを代えて、フォームキャッシュ４８にキャッシュされた当該フォームの中間データを指し示す識別情報（「キャッシュＩＤ」と呼ぶ）を参照する中間データコマンドに置き換える。各論理ページ解釈部３６−ｐが生成した各ページの中間データは、バックエンド装置４０の中間データバッファ４２に送られる。
【００４７】
一方、フォーム解釈部３６−ｆは、ＰＤＬデータ中のフォームのＰＤＬコマンド群を解釈し、当該フォームを表す中間データを生成する。そして、生成したフォームの中間データをバックエンド装置４０のフォームキャッシュ４８に登録する。ここで、フォーム解釈部３６−ｆは、フォームキャッシュ４８に対して登録するフォームを表す中間データに対して、少なくとも当該印刷ジョブ中で一意なキャッシュＩＤを付与し、このキャッシュＩＤに対応づけてその中間データをフォームキャッシュ４８に登録する。
【００４８】
論理ページ解釈部３６−ｐは、印刷ジョブのＰＤＬデータのうちの割り当てられたページのみを処理（すなわち解釈および中間データの生成）するのに対し、フォーム解釈部３６−ｆは、印刷ジョブのＰＤＬデータの全ページを処理する。ただし、フォーム解釈部３６−ｆが処理するのは、ページ中のフォームのみであり、フォームに含まれない一般のオブジェクトについては処理しない。
【００４９】
論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆは、典型的には、ＣＰＵ上で実行されるプロセスとして実現される。例えば、マルチコアＣＰＵを用いたシステム構成において、個々のコアでそれぞれ１つずつ解釈部３６のプロセスを実行するという構成が考えられる。
【００５０】
キャッシュ管理部３８は、フォームキャッシュ４８に保持されるキャッシュデータ（すなわちフォームの中間データ）の管理情報を保持する。キャッシュ管理部３８には、キャッシュデータごとに、キャッシュＩＤと、そのキャッシュデータのフォームキャッシュ４８の記憶空間内での記憶場所を示す情報（例えば先頭アドレスと、そのデータのサイズとの組合せ）とが記憶される。フォーム解釈部３６−ｆは、ＰＤＬデータ中のフォームを処理する際、そのフォームのキャッシュデータがフォームキャッシュ４８に登録されているかどうかをキャッシュ管理部３８から求め、登録されている場合にはそのフォームのキャッシュデータの生成は行わず、登録されていない場合にのみキャッシュデータの生成を行う。
【００５１】
バックエンド装置４０の描画部４４は、中間データバッファ４２内にある各ページの中間データを例えばページ順に読み出し、読み出したページの中間データのコマンドに従って描画データを生成していく。ここで、読み出したページの中間データ内に、キャッシュＩＤを参照する旨のコマンドが含まれる場合は、フォームキャッシュ４８からそのキャッシュＩＤに対応する中間データ（すなわちフォームの中間データ）を読み出し、読み出した中間データを処理することで、フォームの描画データを生成し、ページの描画データに対して合成する。
【００５２】
以上では、説明を簡潔にするために、フォームならばキャッシュするとして説明したが、実際の装置では、すべてのフォームをキャッシュするとは限らない。キャッシュを用いるためには、キャッシュへの登録や必要なキャッシュデータの有無の問合せ等の処理のオーバーヘッドが生じる。非常に小さい又は構造が簡単なフォームの場合、中間データの生成処理に要する時間が非常に短くて済むので、そのような処理オーバーヘッドを考慮すると、キャッシュを利用しない方が処理が早いことも多い。そこで、本実施形態では、フォームのうちキャッシュした方が処理効率がよいもののみを、キャッシュすることとする。このために、本実施形態では、キャッシュした方が処理効率がよい（すなわちキャッシュ対象とする）フォームと、そうでないフォームとを判定するためのルールを定めている。この判定ルールの例を以下に示す。
（ルール１）当該フォームのバウンディングボックス（物理ページ上で当該フォームを囲むことができる最小の長方形）の画素数が、予め決められた数（「画素数閾値」と呼ぶ）より多い場合は、当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
（ルール２）当該フォームに含まれるオブジェクトの数が予め決められた数（「オブジェクト数閾値」と呼ぶ）より多い場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
（ルール３）当該フォームに予め決められた大きさ（「イメージサイズ閾値」と呼ぶ）より大きいイメージ（ビットマップ）がある場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
【００５３】
例えば、以上に例示したルール１〜３のいずれか１つを用いて判定を行ってもよいし、２以上を組み合わせて判定を行ってもよい。２以上を組み合わせる場合は、少なくとも１つのルールで「キャッシュ対象」と判定されれば、他のルールによる判定結果によらず、当該フォームはキャッシュ対象とする。
【００５４】
なお、上述の画素数閾値、オブジェクト数閾値およびイメージサイズ閾値は、フロントエンド装置３０やバックエンド装置４０のシステム構成や性能に応じた値であり、実験やシミュレーション等で定めておけばよい。
【００５５】
本実施形態では、論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆが、統一された共通の判定ルールを用いて、フォームをキャッシュ対象とするかどうかを判定する。したがって、例えば論理ページ解釈部３６−ｐ１がキャッシュ対象と判定したフォームは、論理ページ解釈部３６−ｐ２でもフォーム解釈部３６−ｆでもキャッシュ対象と判定される。
【００５６】
また、本実施形態では、論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆは、統一された共通のＩＤ付与ルールを用いて、フォームのキャッシュデータ（中間データ）に対してキャッシュＩＤを付与する。この共通のＩＤ付与ルールでは、ＰＤＬデータ中でフォームに対して付与されているフォームＩＤに加え、そのフォームの最終的な描画結果の画像の状態を規定する各種のパラメータを考慮して、そのフォームのキャッシュデータに付与するキャッシュＩＤを決定する。同じフォームＩＤのフォームを用いる場合でも、そのフォームを描画・印刷する際のパラメータが異なれば、最終的に印刷物上に現れるフォームの画像も異なってくるので、パラメータが異なれば別のキャッシュデータとして取り扱うのである。キャッシュＩＤを規定する描画等のパラメータとしては、座標変換行列（座標の回転角や拡大縮小率を表す行列）、描画属性情報（例えば線幅、ラインキャップ、ラインジョイン、マイタ―リミット、線の形状、ストローク調整、描画方式、論理演算モード、パターン情報）、クリップ情報、カラー情報等がある。１つの例では、フォームＩＤとそれらパラメータとを結合したものをバイナリデータとして表現し、ＭＤ５ハッシュ関数（rfc1321で定義）等のハッシュ関数を用いて、そのバイナリデータからキャッシュＩＤを生成する。なお、キャッシュＩＤの材料として用いたフォームＩＤおよび上述パラメータ群を、「キーデータ（Key Data）」と呼ぶ。
【００５７】
なお、厳密には、ハッシュ関数には衝突があるため、上述の方式では異なるキャッシュデータのキャッシュＩＤ（ハッシュ値）が同じ値となる可能性がある。ハッシュの衝突を避けるために、キーデータそのものをキャッシュＩＤとして用いてもよい。
【００５８】
ただし、キーデータはかなり長いデータとなるため、利用可能なキャッシュデータが有るか無いかを調べる際、キーデータ同士の照合にある程度の時間を要する。キャッシュ管理部３８内のすべてのキャッシュエントリに対してキーデータの照合を行うにはかなりの時間がかかってしまう。そこで、以下の例では、キーデータと、そのキーデータのハッシュ値と、の組合せをキャッシュＩＤとして用いる。この例では、利用可能なキャッシュデータの有無を調べる際、まずハッシュ値で絞り込みを行うことで、キーデータの照合を行うキャッシュエントリの数を少なくする。
【００５９】
以上のように、本実施形態では、論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆは、共通のＩＤ付与ルールを用いる。したがって、例えば論理ページ解釈部３６−ｐ１があるフォームに対してあるキャッシュＩＤを生成した場合（ここで論理ページ解釈部３６−ｐ１はそのフォームの中間データは生成しない）、フォーム解釈部３６−ｆは同じキャッシュＩＤを生成し、生成したそのフォームの中間データをそのキャッシュＩＤに対応づけてフォームキャッシュ４８に登録する。
【００６０】
次に、図４〜図６を参照して、論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆが実行する処理の手順を例示する。
【００６１】
図４は、論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆの共通の処理手順である。この例は、ページ非独立のＰＤＬで記述されたＰＤＬデータを処理する場合の例である。図４の説明では、論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆを解釈部３６と総称する。これら各解釈部３６は、互いに独立して、非同期的に動作する。
【００６２】
この手順では、解釈部３６は、印刷ジョブ受信部３２から、印刷ジョブのＰＤＬデータ全体を取得する（Ｓ１０）。次に、そのページ配信部３４から、処理対象とするページの割り当てを受ける（Ｓ１２）。ここで、ページ配信部３４は、論理ページ解釈部３６−ｐ１および３６−ｐ２にはＰＤＬデータの全ページを分担させるが、フォーム解釈部３６−ｆには全ページを担当させる。解釈部３６は、割り当てられたページのＰＤＬデータを解釈する（Ｓ１４）。そして、そのページの解釈が終了すると、解釈部３６は、印刷ジョブ全体の解釈が完了したか否かを判定し（Ｓ１６）、未完了と判定した場合は、Ｓ１２に戻り、ページ配信部３４にページの解釈の終了を通知し、次の担当ページの割り当てを受ける。以上の処理を、印刷ジョブ全体の解釈が完了するまで繰り返す。
【００６３】
ページの解釈処理（Ｓ１４）では、解釈部３６は、当該ページの先頭から順に、ＰＤＬデータのコマンドを１つずつ抽出し（Ｓ２０）、抽出したコマンドを解釈して中間データのオブジェクトを生成する（Ｓ２２）。これらＳ２０およびＳ２２の処理を、当該ページの最後のコマンドの処理が終了するまで繰り返す（Ｓ２４）。
【００６４】
なお、ページ非独立のＰＤＬデータを処理する場合には、各論理ページ解釈部３６−ｐは、自分が担当するページか否かによらず、すべてのページのコマンドを解釈し、自分の内部状態をその解釈の結果に応じて遷移させる。そして、担当するページについては、解釈のみならず、中間データの生成も行う。これにより、先頭ページからの解釈の結果を反映した正しい中間データが生成されることになる。同様に、フォーム解釈部３６−ｆは、フォーム以外のオブジェクトの描画コマンドも含むＰＤＬデータのすべてのコマンドを解釈し、フォームの描画コマンドについては中間データの生成も行う。
【００６５】
中間データの生成処理（Ｓ２２）の内容は、論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆとで異なる。
【００６６】
図５は、論理ページ解釈部３６−ｐによる中間データの生成処理（Ｓ２２）の処理手順の一例を示す。この例では、論理ページ解釈部３６−ｐは、処理対象のコマンド（Ｓ２０で抽出したもの）がフォームオブジェクトの生成を指示するコマンドか否かを判定する（Ｓ３０）。例えば、ＰｏｓｔＳｃｒｉｐｔ（登録商標）の場合、処理対象のコマンドのコマンド名が”form”であれば、そのコマンドは、フォームオブジェクトの生成を指示するコマンドである。フォームの生成を指示するコマンドには、フォームＩＤがパラメータとして付随する。
【００６７】
Ｓ３０の判定結果が否定（Ｎ：フォーム生成以外のコマンド）である場合は、論理ページ解釈部３６−ｐは、そのコマンドを解釈して中間データを生成し（Ｓ３２）、その中間データを当該ページの中間データとして出力する（Ｓ３４）。
【００６８】
Ｓ３０の判定結果が肯定（Ｙ：フォーム生成のコマンド）である場合、論理ページ解釈部３６−ｐは、次にそのコマンドに対応するフォームの中間データがキャッシュ対象であるかどうかを、前述した統一の判定ルールに従って判定する（Ｓ３６）。
【００６９】
Ｓ３６で、そのコマンドがキャッシュ対象でないと判定した場合（Ｓ３６の判定結果がＮ）、論理ページ解釈部３６−ｐは、そのコマンドに付随するフォームＩＤを抽出し、そのフォームＩＤに対応するフォームのＰＤＬデータを取得してメモリ上に展開する（Ｓ３８）。例えば、ＰＤＬデータ中の２回目以降のフォームの使用箇所では、フォームＩＤが示されるのみで、フォームの実体を表すＰＤＬデータが記述されない場合もある。このような場合でも、論理ページ解釈部３６−ｐは印刷ジョブのＰＤＬデータ中でそのフォームがはじめて使用された場所から読み取った当該フォームのＰＤＬデータをフォームＩＤと対応づけて管理しているので、２回目以降の使用箇所では、その管理しているＰＤＬデータを読み出して利用するのである。フォームのＰＤＬデータの展開の後、論理ページ解釈部３６−ｐは、展開したＰＤＬデータを解釈し、中間データを生成し（Ｓ３２）、その中間データを出力する（Ｓ３４）。
【００７０】
Ｓ３６で、判定対象のコマンドがキャッシュ対象であると判定した場合（Ｓ３６の判定結果がＹ）、論理ページ解釈部３６−ｐは、前述した統一的なＩＤ付与ルールに従い、そのコマンドに対応するキャッシュＩＤを生成する（Ｓ４０）。Ｓ４０では、そのコマンドに付随するフォームＩＤ等のパラメータ群、および論理ページ解釈部３６−ｐ自身の内部状態の情報から、キーデータを構成する各項目の値を抽出し、それら抽出した値を結合してキーデータを生成し、そのキーデータのハッシュ値を計算する。そして、そのハッシュ値とキーデータのペアを、キャッシュＩＤとする。
【００７１】
そして、論理ページ解釈部３６−ｐは、そのキャッシュＩＤで示されるキャッシュデータを参照するよう指示する中間データコマンドを生成し、生成した中間データコマンドを出力する（Ｓ３２）。このように、論理ページ解釈部３６−ｐは、キャッシュされるフォームについては、そのフォームの実体（画像）を表す中間データを生成する代わりに、キャッシュデータを参照するコマンドを生成する。
【００７２】
図６は、フォーム解釈部３６−ｆによる中間データの生成処理（Ｓ２２）の処理手順の一例を示す。この例では、フォーム解釈部３６−ｆは、処理対象のコマンド（Ｓ２０で抽出したもの）がフォームオブジェクトの生成を指示するコマンドか否かを、Ｓ３０と同様の方法で、判定する（Ｓ５０）。Ｓ５０の判定結果が否定（Ｎ）である場合、フォーム解釈部３６−ｆは、そのコマンドについては何も処理を行わずに、図６の処理を終了する。
【００７３】
Ｓ５０の判定結果が肯定（Ｙ）である場合、フォーム解釈部３６−ｆは、次にそのコマンドに対応するフォームの中間データがキャッシュ対象であるかどうかを、Ｓ３６と同様、前述した統一の判定ルールに従って判定する（Ｓ５２）。
【００７４】
Ｓ５２で、そのコマンドがキャッシュ対象でないと判定した場合（Ｓ５２の判定結果がＮ）、フォーム解釈部３６−ｆは、そのコマンドについては何も処理を行わずに、図６の処理を終了する。
【００７５】
Ｓ５２で、判定対象のコマンドがキャッシュ対象であると判定した場合（Ｓ５２の判定結果がＹ）、フォーム解釈部３６−ｆは、Ｓ４０と同様の方法で、前述した統一的なＩＤ付与ルールに従い、そのコマンドに対応するキャッシュＩＤを生成する（Ｓ５４）。そして、そのコマンドを解釈してキャッシュデータ（フォームの中間データ）を生成し（Ｓ５６）、生成したキャッシュデータをそのキャッシュＩＤと対応づけて出力する（Ｓ５８）。出力されたキャッシュＩＤおよびキャッシュデータのペアは、フォームキャッシュ４８に登録される。
【００７６】
なお、Ｓ５６およびＳ５８では、同じキャッシュデータの重複した生成および登録を避けるようにしてもよい。このためには、フォーム解釈部３６−ｆは、キャッシュデータを生成する前に、Ｓ５４で生成したキャッシュＩＤに対応するキャッシュデータがフォームキャッシュ４８内に存在するどうかをキャッシュ管理部３８に問い合わせ、存在しないとの回答を得た場合にのみキャッシュデータを生成するようにすればよい。キャッシュデータを生成してフォームキャッシュ４８に登録した場合は、フォーム解釈部３６−ｆは、そのキャッシュデータのキャッシュＩＤをキャッシュ管理部３８に登録することで、そのキャッシュデータが登録済みであることを記録する。
【００７７】
次に、図７および図８を参照して、バックエンド装置４０の描画部４４の処理手順の例を説明する。
【００７８】
図７に示すように、この手順では、描画部４４は、まず処理対象の印刷ジョブの指定を受ける（Ｓ１００）。次に、その印刷ジョブの例えば先頭ページから順に１ページずつ、ページの中間データを中間データバッファ４２から取得し（Ｓ１０２）、取得したページの中間データを解釈する（Ｓ１０４）。これらＳ１０２およびＳ１０４の処理を、印刷ジョブの末尾まで、１ページずつ、繰り返し実行する（Ｓ１０６）。
【００７９】
ページの中間データの解釈処理（Ｓ１０４）では、は、当該ページの先頭から順に、中間データのコマンドを１つずつ抽出し（Ｓ１１０）、抽出したコマンドを解釈して、そのコマンドが示すラスター画像をメモリ上に描画する（Ｓ１１２）。これらＳ１１０およびＳ１１２の処理を、当該ページの最後の中間データコマンドの処理が終了するまで繰り返す（Ｓ１１４）。
【００８０】
ページの中間データの解釈処理（Ｓ１１２）では、描画部４４は、図８に示すように、ページの中間データを先頭から順にコマンドを読み出し、読み出したコマンドがキャッシュデータの参照を指示するコマンド（キャッシュ参照コマンドと呼ぶ）であるかどうかを判定する（Ｓ１２０）。
【００８１】
Ｓ１２０の判定結果が肯定（Ｙ）の場合、描画部４４は、そのキャッシュ参照コマンドからキャッシュＩＤを抽出し（Ｓ１２２）、そのキャッシュＩＤに対応するキャッシュデータ（中間データ）をフォームキャッシュ４８から取り出し（Ｓ１２４）、取り出したキャッシュデータを解釈してラスター画像を描画する（すなわち「ラスタライズ」する）（Ｓ１２６）。
【００８２】
Ｓ１２０の判定結果が否定（Ｎ）の場合、描画部４４は、そのコマンドを解釈してラスタライズする（Ｓ１２６）。
【００８３】
以上、印刷コントローラ２０の一実施形態を説明した。以上に説明したように、この実施形態では、論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆが、統一したＩＤ付与ルールを用い、同じ材料（すなわちフォームＩＤおよびフォームの印刷結果の画像を規定するその他のパラメータ）からキャッシュＩＤを付与する。したがって、それら解釈部３６は、互いに通信することなく、同じキャッシュデータには同じキャッシュＩＤを付すことができる。したがって、論理ページ解釈部３６−ｐ１、３６−ｐ２が生成したページの中間データに含まれるキャッシュ参照コマンドのキャッシュＩＤが指し示すキャッシュデータは、フォーム解釈部３６−ｆにより遅かれ早かれ必ず生成され、同じキャッシュＩＤに対応づけてフォームキャッシュ４８に登録される。仮に、描画部４４がページ中のキャッシュ参照コマンドを処理しようとした時点で、そのコマンドが指し示すキャッシュデータがフォームキャッシュ４８にない場合でも、しばらく待機すれば、描画部４４はそのキャッシュデータをフォームキャッシュ４８から取得可能となる。印刷ジョブの最初の方を処理している間は、フォーム解釈部３６−ｆによるフォームのキャッシュデータ生成の進捗が十分でないため、このような描画部４４の待機（キャッシュデータの完成待ち）が生じる確率はある程度高い。論理ページの処理は複数の論理ページ解釈部３６−ｐで並列処理しているのに対し、フォームの処理は１つのフォーム解釈部３６−ｆがページ順に行っているため、論理ページの処理の進捗に追いつかないことがあるからである。しかし、フォーム解釈部３６−ｆは、キーデータが同じフォームが何度現れても一度しかキャッシュデータを生成しないので、ある程度処理が進みフォームキャッシュ４８に相当数のキャッシュデータが蓄積された時点では、一般的に新たにキャッシュデータを生成する必要が生じる頻度は少なくなる。このため、ページ処理速度が向上していき、並列動作する論理ページ解釈部３６−ｐの処理の進捗を追い抜くこととなる。こうなると、上述した描画部４４によるキャッシュデータ完成待ちは起こらない。
【００８４】
以上に説明したように、この実施形態によれば、論理ページ解釈部３６−ｐ１、３６−ｐ、およびフォーム解釈部３６−ｆがプロセス間通信を行わずに互いに独立して非同期的に動作しても、フォームの中間データをキャッシュし、再利用することが可能となる。この実施形態は、プロセス間通信のためのオーバーヘッドがない分だけ、プロセス間通信を行うシステムよりも処理が高速である。
【００８５】
＜変形例＞
次に、上記実施形態の変形例を説明する。
【００８６】
上記実施形態のフロントエンド装置３０では、論理ページ解釈部３６−ｐ１、３６−ｐ、およびフォーム解釈部３６−ｆはキャッシュのためのプロセス間通信を行わなかった。これに対し、この変形例のフロントエンド装置３０は、上記実施形態のようにプロセス間通信を行わないモード（「非プロセス間通信モード」と呼ぶ）と、論理ページ解釈部３６−ｐ１、３６−ｐ、およびフォーム解釈部３６−ｆがキャッシュのためのプロセス間通信を行うモード（「プロセス間通信モード」と呼ぶ）と、いう２つの動作モードを有する。そして、状況に応じて動作モードを切り換えることで、より的確なキャッシュ制御を実現する。
【００８７】
図９に、この変形例の印刷コントローラ２０の構成例を示す。図９において、図３に例示した要素と同様の要素には同じ符号を付す。
【００８８】
図９の例は、論理ページ解釈部３６−ｐ１、３６−ｐ２がプロセス間通信モードでキャッシュ管理部３８と通信する点（およびその通信に応じて処理手順を切り換える点）が、図３の構成と異なる。
【００８９】
図９の変形例におけるキャッシュ管理部３８の内部構成の例を図１０に示す。このキャッシュ管理部３８は、フォーム解釈部３６−ｆの一部であってもよいし、フォーム解釈部３６−ｆとは別のプロセスであってもよい。以下では、一例として、キャッシュ管理部３８は、フォーム解釈部３６−ｆの一部である場合を例にとって説明する。
【００９０】
この例では、キャッシュ管理部３８は、通信制御部３８２、キャッシュ制御部３８４およびキャッシュテーブル３８６を有する。通信制御部３８２は、複数の解釈部３６との通信を制御し、それら解釈部３６からのキャッシュ問合せ等の要求を受信し、それら要求を調停してキャッシュ制御部３８４に要求を渡す。キャッシュ制御部３８４は、通信制御部３８２を介して受け取った要求に応じてキャッシュテーブル３８６の操作を行う。キャッシュテーブル３８６は、フォームキャッシュ４８内に登録したキャッシュデータの管理情報を保持するテーブルである。
【００９１】
キャッシュテーブル３８６には、個々のキャッシュデータごとに、図１１に示すように、キャッシュＩＤ（ここでは前述したキーデータのハッシュ値）、キーデータ、フォームキャッシュ４８内でのキャッシュデータの実体の格納場所の情報が登録されている。図示の例は、キャッシュデータをメモリ上に格納する場合の例であり、格納場所の情報は、その格納場所の先頭アドレスとサイズにより表されている。このようにキャッシュデータをメモリ上に格納する代わりに、ファイルとして保存し管理してもよく、この場合には、「格納場所」には、アドレスとサイズの組ではなく、キャッシュデータを格納するファイルのファイル名を記録すればよい。
【００９２】
この例では、フォームキャッシュ４８からキャッシュデータの実体を削除した場合、キャッシュテーブル３８６内のそのキャッシュデータの格納場所の値が、あらかじめ定めた無効なアドレスおよびサイズ（例えばヌル値）に変更される。したがって、キャッシュＩＤ（ハッシュ値およびキーデータの組）に対応するエントリがキャッシュテーブル３８６に存在し、且つそのエントリにおける格納場所が無効でない値である場合に、そのキャッシュＩＤに対応する実体データ（キャッシュデータ）がフォームキャッシュ４８内に存在することになる。
【００９３】
また、図１１の例では、キャッシュテーブル３８６には、キャッシュエントリごとに、キャッシュ管理のための数値情報として、アクセスカウント値および参照カウント値が記録される。
【００９４】
アクセスカウント値は、当該エントリのキャッシュデータの累計の使用頻度を表す値であり、解釈部３６から当該エントリのキャッシュＩＤへの参照がある度に１ずつ加算される。ここで、「参照がある」とは、そのキャッシュＩＤに対する参照を示すキャッシュ参照コマンドが中間データに組み込まれることを意味する。したがって、仮に、論理ページ解釈部３６−ｐが、フォームの処理に当たってキャッシュＩＤに対する問合せを行った結果、キャッシュ参照コマンドではなく、そのフォームの実体を表す中間データを作成した場合には、そのキャッシュＩＤに対するアクセスカント値はインクリメントされない。アクセスカウント値が大きいキャッシュデータほど、印刷ジョブのこれまでの処理において多く使用され（すなわち数多く印刷され）ており、キャッシュ利用による処理速度向上への貢献が大きい。
【００９５】
参照カウント値は、中間データバッファ４２中のページ群の中間データ（すなわち描画部４４によりまだ処理されていない中間データ）の中に、当該エントリのキャッシュデータへの参照がいくつ含まれているかを表す値である。この値は、解釈部３６から当該エントリのキャッシュＩＤへの参照がある度に１ずつ加算され、描画部４４から当該エントリのキャッシュＩＤへ参照がある（すなわちそのエントリのキャッシュデータが描画される）度に１ずつ減算される。あるエントリの参照カウント値が１以上であれば、中間データバッファ４２中に、そのエントリのキャッシュデータを参照しているページが存在するので、そのキャッシュデータをフォームキャッシュ４８から削除することはできない。逆にあるエントリの参照カウント値が０であれば、そのエントリのキャッシュデータは現時点では削除して構わないことになる。
【００９６】
アクセスカウント値および参照カウント値は、プロセス間通信モードでは、論理ページ解釈部３６−ｐからの参照に応じてインクリメント（１増加）され、フォーム解釈部３６−ｆからの参照ではインクリメントされない。論理ページ解釈部３６−ｐ群は印刷ジョブのページ群を分担して処理し、フォーム解釈部３６−ｆはその印刷ジョブの全ページを処理するので、それら両者からの参照の両方をカウントすると、二重カウントになる。そこで、ここでは、論理ページ解釈部３６−ｐ群からの参照のみをカウントする。フォーム解釈部３６−ｆではなく、論理ページ解釈部３６−ｐ群からの参照をカウントするのは、その方が実際に論理ページの印刷画像を生成する際のキャッシュデータの参照回数をより直接的に示しているからである。ただし、これは一例に過ぎず、プロセス間通信モードでも、フォーム解釈部３６−ｆからの参照の方をカウントするようにしてもよい。
【００９７】
一方、非プロセス間通信モードでは、アクセスカウント値および参照カウント値は、フォーム解釈部３６−ｆからの参照によりインクリメント（１増加）される。これは、非プロセス間通信モードでは、論理ページ解釈部３６−ｐからの参照が行われないからである。
【００９８】
キャッシュ制御部３８４は、キャッシュテーブル３８６（ひいてはフォームキャッシュ４８）に対してどのようなサイズのキャッシュデータを登録又は削除したかを監視しており、この監視処理に基づいて、フォームキャッシュ４８の空き容量（すなわち「フォームキャッシュ４８の容量」−「フォームキャッシュ４８内のキャッシュデータの合計サイズ」）を更新し管理している。
【００９９】
解釈部３６からキャッシュ制御部３８４への要求には、例えば、問合せ要求、領域確保要求、および登録要求がある。
【０１００】
問合せ要求は、キャッシュデータがフォームキャッシュ４８内に存在するか否かを問い合わせるための要求であり、そのキャッシュデータを特定するキャッシュＩＤ（ハッシュ値およびキーデータの組）を引数とする。問合せ要求を受けた場合、キャッシュ制御部３８４は、その要求の引数のキャッシュＩＤに対応するエントリをキャッシュテーブル３８６から探し、そのようなエントリが見つかり且つそのエントリ内の格納場所の値が有効である場合は「該当するキャッシュデータがある」と判定し、そうでない場合は「該当するキャッシュデータがない」と判定する。そして、その判定の結果を通信制御部３８２経由で要求元の解釈部３６に回答する。
【０１０１】
領域確保要求は、解釈部３６が生成したキャッシュデータを格納するための容量の確保を依頼するための要求であり、例えば、そのキャッシュデータを特定するキャッシュＩＤ（ハッシュ値およびキーデータの組）と、そのキャッシュデータのサイズを引数とする。領域確保要求を受けた場合、キャッシュ制御部３８４は、その引数のキャッシュデータのサイズがフォームキャッシュ４８の空き容量以下か否かを判定する。そして、そのサイズが空き容量以下であれば、そのサイズ分の格納場所を確保し、その格納場所を表す情報（例えば先頭アドレスとサイズ）を含んだ「領域確保済み」の回答を返す。引数のキャッシュデータのサイズがフォームキャッシュ４８の空き容量を超える場合は、フォームキャッシュ４８内にあるキャッシュデータを削除することで、そのサイズに応じた領域が確保できるかどうか調べる。ここでは、参照カウント値が０であるエントリをキャッシュテーブル３８６から探し、見つけたエントリ群の実データを削除することで、新たに登録したいキャッシュデータのサイズを収容できるだけの空き容量が確保できるかどうかを判定すればよい。ここで、参照カウント値が０であるキャッシュデータをすべて削除する必要はなく、登録したいキャッシュデータのサイズを収容できるだけの空き容量を確保するための最小限のキャッシュデータのみを削除するようにしてもよい。この場合、アクセスカウント値が少ない（つまり利用頻度が少ない）キャッシュデータから優先的に削除対象に選んでいくようにすればよい。
【０１０２】
このようにして、参照カウント値が０のキャッシュデータ群を削除することで領域確保要求を満たすための空き容量が得られた場合には、キャッシュ制御部３８４は、削除対象に選んだ各キャッシュデータをフォームキャッシュ４８から削除し、その空き容量の中から、その要求に応じたサイズの格納場所を確保する。そして、キャッシュＩＤと確保した格納場所を表す情報（例えば先頭アドレスとサイズの組）とを含んだ、「領域確保成功」を示す応答を、要求元の解釈部３６に返す。また、このときキャッシュ制御部３８４は、キャッシュテーブル３８６内のそのキャッシュのエントリの「格納場所」のデータを、無効を示すあらかじめ定めた値に書き換える。「領域確保成功」を示す応答を受けた解釈部３６は、キャッシュ管理部３８に対してキャッシュデータの登録要求を送る。
【０１０３】
一方、参照カウント値が０のキャッシュデータをすべて削除しても領域確保要求を満たすための空き容量が得られない場合は、キャッシュ制御部３８４は、「領域確保失敗」を示す応答を、要求元の解釈部３６に返す。「領域確保失敗」の応答を受けた解釈部３６は、生成したキャッシュデータをキャッシュに登録せずに破棄する。
【０１０４】
なお、この例では、フォームのキャッシュデータを作成するのはフォーム解釈部３６−ｆであり、論理ページ解釈部３６−ｐはキャッシュデータを作成しない（すなわち、フォームの中間データを作成することはあるものの、それをキャッシュすることはしない）ので、領域確保要求および登録要求を発するのはフォーム解釈部３６−ｆのみである。
【０１０５】
次に、各動作モードの特徴について説明する。
【０１０６】
非プロセス間通信モードは、通信のためのオーバーヘッドがない分だけ処理が高速である。しかし、論理ページ解釈部３６−ｐが生成したキャッシュ参照コマンドは、必ず解決される（すなわち、すぐでなくてもよいが、いずれ必ずそのキャッシュ参照コマンドが指し示すキャッシュデータがフォームキャッシュ４８に存在することになる）必要があるため、フォームキャッシュ４８からキャッシュデータを削除することができない。なぜなら、フォームキャッシュ４８からキャッシュデータを削除してしまうと、その削除を知らずに論理ページ解釈部３６−ｐが生成したキャッシュ参照コマンドが解決できなくなるケースが出てくるからである。
【０１０７】
また、非プロセス間通信モードでは、印刷ジョブの最初の方では、前述のように必要なキャッシュデータの生成されるまで描画部４４が待機するケースがあるため、並列処理に期待される程度の処理速度が得られないこともある。
【０１０８】
一方、プロセス間通信モードは、通信のためのオーバーヘッドがあるため、処理速度は非プロセス間通信モードよりも遅い。しかし、フォームキャッシュ４８からキャッシュデータを削除しても、キャッシュ利用のシステムが破綻しないようにすることができる。すなわち、論理ページ解釈部３６−ｐは、参照したいフォームのキャッシュデータがフォームキャッシュ４８に存在するかどうかをプロセス間通信により確認し、もし存在しなければそのフォームの中間データを自ら生成するという対処をとることが可能となる。
【０１０９】
また、論理ページ解釈部３６−ｐが印刷ジョブの最初の方を処理しているときにプロセス間通信を行って、参照したいフォームのキャッシュデータがフォームキャッシュ４８に存在するかどうかを確認し、もし存在しなければそのフォームの中間データを自ら生成することも考えられる。このようにすれば、非プロセス間通信モードのように描画部４４がフォーム解釈部３６−ｆによるキャッシュデータの生成するのを待機する方式よりも、高速な処理が可能となる。
【０１１０】
フロントエンド装置３０の動作モードの切換には、（ａ）プロセス間通信モードから非プロセス間通信モードへの切換と、（ｂ）非プロセス間通信モードからプロセス間通信モードへの切換という２つの方向がある。以下、それぞれの方向について説明する。
【０１１１】
（ａ）プロセス間通信モードから非プロセス間通信モードへの切換
これは、プロセス間通信モードで動作している状態から、ある条件が満たされると非プロセス間通信モードに移行するという方向である。この方向の切換は、例えば、印刷ジョブの最初の方で行う。すなわち、この例では、印刷ジョブの開始時点では、フロントエンド装置３０をプロセス間通信モードで動作させる。そして、フロントエンド装置３０が印刷ジョブをあらかじめ定めた量まで処理し終わると、動作モードを非プロセス間通信モードに切り換える。切換の条件となる閾値すなわち前述の「あらかじめ定めた量」は、例えば論理ページの数として定めておく。例えば、印刷ジョブの先頭からｎページ（ｎはあらかじめ定めた２以上の整数）まではプロセス間通信モード、ｎページまでの処理が完了した以降は非プロセス間通信モードと定める。
【０１１２】
ここで、例えばｎ＝「並列動作する論理ページ解釈部３６−ｐの数」と定めてもよい。これは、印刷ジョブの最初の「並列動作する論理ページ解釈部３６−ｐの数」のページを処理している期間では、キャッシュデータの蓄積が十分でなく、非プロセス間通信モードでは描画部４４のキャッシュデータ生成待ちが生じやすいからである。
【０１１３】
例えば、並列動作する論理ページ解釈部３６−ｐの数が４である場合、印刷ジョブの最初では、４つの論理ページ解釈部３６−ｐにより第１ページから第４ページまでの４ページが並列的に処理されることになる。仮にそれら４ページの処理負荷が同等であれば、それら４ページの中間データはほぼ同時に完成し、バックエンド装置４０に送られることになる。一方、１台しかないフォーム解釈部３６−ｆは、第１ページから順にフォームのキャッシュデータを生成していくので、第４ページに初めて現れるフォームがあったとすると、そのフォームのキャッシュデータが完成してバックエンド装置４０に送られるのは、印刷ジョブの処理開始からある程度の時間が経ってからのこととなる。このため、描画部４４が、それら並列処理される４ページのうちの最後の方のページを処理しようとする際に、それらページ（特に第４ページ）で用いるフォームのキャッシュデータの生成が追いつかない場合が出てくる。特に状況が厳しいのは、第４ページである。第５ページ以降は、並列処理の２巡目以降となるので時間的な余裕があり、また初出のフォームの出現頻度も減ってくる（第５ページ以降で使用されるフォームは、第１〜４ページで使われていたものと同じものも少なくないはずである）ので、第４ページほどの状況の厳しさはなくなる。
【０１１４】
この例から分かるように、キャッシュデータの生成が論理ページの処理に追いつかない可能性が高い、印刷ジョブの先頭からｎ（＝「並列動作する論理ページ解釈部３６−ｐの数」）ページまでの期間は、非プロセス間通信モードを採用すると、印刷コントローラ２０全体の処理速度が、フォーム解釈部３６−ｆの処理速度で律速されることになる可能性が高い。これに対し、その期間でプロセス間通信モードを採用すれば、例えば第４ページを担当している論理ページ解釈部３６−ｐは、キャッシュ対象のフォームのキャッシュデータが入手可能かどうかをプロセス間通信で求め、入手不可の場合はそのフォームの中間データを作成し、第４ページの処理結果に含めることになる。この場合、描画部４４は、第４ページの中間データを処理する時点でフォーム解釈部３６−ｆが第４ページ内のフォームのキャッシュデータを生成し終えていなくても、その第４ページの中間データからそのフォームのラスターデータを生成することができる。
【０１１５】
（ｂ）非プロセス間通信モードからプロセス間通信モードへの切換
これは、非プロセス間通信モードで動作している状態から、ある条件が満たされるとプロセス間通信モードに移行するという方向である。この方向の切換は、例えば、フォームキャッシュ４８内のキャッシュデータの総量がフォームキャッシュ４８の容量に近づいた（すなわちキャッシュが満杯に近づいた）段階で行う。
【０１１６】
キャッシュデータの総量がフォームキャッシュ４８の容量に近づくと、新たなキャッシュデータを登録しようとする際にフォームキャッシュ４８の空き容量が足りなくなる場合が出てくる。そのような場合、フォームキャッシュ４８内の既存のキャッシュデータを削除することで空き容量を増やし、新たフォームキャッシュ４８が登録できるようにする必要がある。ところが、非プロセス間通信モード時にフォームキャッシュ４８からいずれかのキャッシュデータを削除すると、前述したように、そのキャッシュデータが存在することを前提としているページの描画が不可能になってしまう。一方、プロセス間通信モードでは、各論理ページ解釈部３６−ｐは、必要とするフォームのキャッシュデータが入手可能か否かを常に確認し、入手可能な場合にはキャッシュデータを参照する中間データコマンドを生成し、入手不可の場合はそのフォームの実体を表す中間データを生成する。このため、あてにしていたキャッシュデータがないため描画が不可能になる、という事態は生じない。
【０１１７】
これとは逆に、フォームキャッシュ４８内のキャッシュデータの総量がそれほど多くなく、新たに生成されるキャッシュデータを収容できる空き容量が十分に確保できている状況では、処理速度が速い非プロセス間通信モードを採用した方が、処理効率がよい。
【０１１８】
このようなことから、キャッシュデータの総量がフォームキャッシュ４８の容量に近づくまでは非プロセス間通信モードを採用し、近づくとプロセス間通信モードに切り換えるという制御が考えられる。
【０１１９】
なお、「キャッシュデータの総量がフォームキャッシュ４８の容量に近づいた」か否かは、例えば、フォームキャッシュ４８内のキャッシュデータの総量を閾値と比較することにより判定すればよい。この例では、例えばフォームキャッシュ４８に割り当てられたメモリ容量（＝キャッシュデータの総量の上限値）をもとに（例えばそのメモリ容量の９０％を閾値とするなどの方法で）閾値を定め、フォームキャッシュ４８内のキャッシュデータの総量がその閾値に達すると、「キャッシュデータの総量がフォームキャッシュ４８の容量に近づいた」と判定する。
【０１２０】
次に、この変形例における動作モードの切換制御の手順の例を説明する。以下では、この切換制御の手順がページ配信部３４により実行されるものとして説明するが、これは一例に過ぎない。以下の手順は例えばキャッシュ管理部３８が実行してもよいし、その手順を実行する専用の機能モジュールを設けてもよい。
【０１２１】
図１２に、動作モードの切換制御の手順の第１の例を示す。この例では、ページ配信部３４は、印刷ジョブの処理を開始すると、フロントエンド装置３０の動作モードをプロセス間通信モードに設定する（Ｓ２００）。これにより、ジョブ開始時のキャッシュデータの生成待ちがなく、処理速度の低下が抑制される。このあと、ページ配信部３４は、論理ページ解釈部３６−ｐ群にページを割り当てるごとに、割り当て済みの最新のページ番号を記録し、記録した最新のページ番号があらかじめ定めた閾値以下であれば（Ｓ２０２の判定結果が否定（Ｎ））、プロセス間通信モードを維持する。一方、記録した最新のページ番号があらかじめ定めた閾値を超えると（Ｓ２０２の判定結果が肯定（Ｙ））、動作モードを非プロセス間通信モードに切り換える（Ｓ２０４）。これにより、処理速度が向上する。フォームキャッシュ４８の容量が、印刷ジョブで用いられるキャッシュ対象のフォームの中間データの総量よりも大きければ、図１２の手順は問題なく機能する。
【０１２２】
図１３に、動作モードの切換制御の手順の第２の例を示す。この例では、ページ配信部３４は、印刷ジョブの処理を開始すると、フロントエンド装置３０の動作モードを非プロセス間通信モードに設定する（Ｓ２１０）。このあと、ページ配信部３４は、フォームキャッシュ４８の空き容量を監視（空き容量はキャッシュ管理部３８に問合せることで分かる）し、その空き容量があらかじめ定めた閾値以上であれば（Ｓ２１２の判定結果が否定（Ｎ））、非プロセス間通信モードを維持する。一方、フォームキャッシュ４８の空き容量が閾値を下回ると（Ｓ２１２の判定結果が肯定（Ｙ））、動作モードをプロセス間通信モードに切り換える（Ｓ２１４）。これにより、フォームキャッシュ４８内の既存のキャッシュデータを削除し、新たに必要になったキャッシュデータを登録することが可能となる。この手順は、ジョブ開始時の処理速度の点では上記第１の例に劣るが、フォームキャッシュ４８の容量が印刷ジョブで用いられるキャッシュ対象のフォームの中間データの総量より少ない場合でも適切に機能する。
【０１２３】
図１４に、動作モードの切換制御の手順の第３の例を示す。この例は、上記第１および第２の例の組合せである。この例では、ページ配信部３４は、印刷ジョブの処理を開始すると、フロントエンド装置３０の動作モードをプロセス間通信モードに設定する（Ｓ２２０）。次に、論理ページ解釈部３６−ｐ群にページを割り当てるごとに、割り当て済みの最新のページ番号を閾値と比較し（Ｓ２２２）、閾値以下であれば（Ｓ２２２の判定結果が否定（Ｎ））プロセス間通信モードを維持し、閾値を超えれば（Ｓ２２２の判定結果が肯定（Ｙ））動作モードを非プロセス間通信モードに切り換える（Ｓ２２４）。この後、フォームキャッシュ４８の空き容量をあらかじめ定めた閾値と比較し（Ｓ２２６）、閾値以上であれば（Ｓ２２６の判定結果が否定（Ｎ））非プロセス間通信モードを維持し、閾値を下回れば（Ｓ２２６の判定結果が肯定（Ｙ））、動作モードをプロセス間通信モードに切り換える（Ｓ２２８）。動作モードをプロセス間通信モードに切り換えた後は、新たにキャッシュしたいキャッシュデータが生成されると、フォームキャッシュ４８の空き容量が足りなければ既存のキャッシュデータをフォームキャッシュ４８から削除し、そのようにして拡張した空き容量にその新たなキャッシュデータを格納するという処理の流れになる。このような処理では、フォームキャッシュ４８の空き容量が大幅に増えることはあまりないので、印刷ジョブの終了までプロセス間通信モードを維持する。ただし、何らかの理由でフォームキャッシュ４８の空き容量が大幅に増える可能性も考慮し、Ｓ２２８の後にもフォームキャッシュ４８の空き容量を監視し、その空き容量があらかじめ定めた閾値（この閾値は、Ｓ２２６の閾値と同じであってもよいが、Ｓ２２６の閾値より大きい値とした方がよりよい）を超えると、非プロセス間通信モードに切り換えるようにしてもよい。
【０１２４】
図１５に、動作モードの切換制御の手順の第４の例を示す。この例は、第３の例の改良である。図１５において、図１４に示したステップと同じステップには同じ符号を付して説明を省略する。
【０１２５】
この処理の前提として、キャッシュ管理部３８は、フォームキャッシュ４８のヒット率を管理しているものとする。例えば、キャッシュ管理部３８は、論理ページ解釈部３６−ｐ群から受けたキャッシュデータの有無の問合せ要求の総数と、その総数のうち「該当するキャッシュデータあり」（すなわち「キャッシュヒット」）の回答を返した数とを記録しており、それらの数値から常に最新のヒット率（ヒット数÷問合せ総数）を求めて保持している。
【０１２６】
図１５の手順では、Ｓ２２８でプロセス間通信モードに移行した後、ページ配信部３４は、例えば定期的に、キャッシュ管理部３８に対してヒット率を問い合わせる（Ｓ２３０）。そのヒット率があらかじめ定めた閾値以上（Ｓ２３２の判定結果が否定（Ｎ））であれば、プロセス間通信モードを維持する。すなわち、ヒット率が閾値以上であれば、フォームキャッシュ４８が有効利用されているとみなし、現在の状態を維持するのである。
【０１２７】
これに対し、ヒット率がその閾値を下回った場合（Ｓ２３２の判定結果が肯定（Ｙ））、それはフォームキャッシュ４８に格納されているキャッシュデータ群があまり利用されなくなってきているということを意味する。例えば、印刷ジョブの途中で使用するフォームががらりと入れ替わると、このようなことが生じる。すなわち、入れ替わりの前にフォームキャッシュ４８に格納されたキャッシュデータは入れ替わり後にはあまり利用さなくなる一方、入れ替わり後の新たなフォームは空き容量の不足からあまりフォームキャッシュ４８に登録され難くなり、ヒット率の低下が生じるのである。このような場合、ページ配信部３４は、キャッシュ管理部３８に対し、有効利用されていないキャッシュデータをフォームキャッシュ４８から一括削除するよう指示する（Ｓ２３４）。
【０１２８】
この指示を受けて、キャッシュ管理部３８は、キャッシュテーブル３８６の情報から、現在有効利用されていないキャッシュデータを特定する。例えば、キャッシュデータごとに、利用度合いの指標値、すなわち「アクセスカウント値÷現在割り当て済みの総ページ数」を計算し、その指標値があらかじめ定めた閾値以上であればそのキャッシュデータは「現在有効利用されている」と判定し、その指標値が下回った場合に、そのキャッシュデータは「現在有効利用されていない」と判定すればよい。そして、このように特定した「現在有効利用されていない」キャッシュデータのうち、参照カウント値が０（すなわち現在参照されていないもの）をフォームキャッシュ４８から一括削除する。
【０１２９】
なお、「アクセスカウント値÷現在割り当て済みの総ページ数」の値は、例えばジョブの最初の方では利用されていたがその後利用されなくなったキャッシュデータの場合も、最近のページになって利用され始めてきたキャッシュデータの場合も共に低い値になる。しかし、後者のキャッシュデータの場合は最近利用されているので、参照カウント値が１以上である可能性が高く、一括削除の対象になりにくい。
【０１３０】
また、図１６に例示するように、キャッシュテーブル３８６にて、累計のアクセスカウント値の他に、最近のアクセスカウント値を管理し、Ｓ２３４では、最近のアクセスカウント値が少ないもの（例えばあらかじめ定めた閾値を下回るもの）を一括削除するようにしてもよい。なお、「最近のアクセスカウント値」としては、例えば、現在時点から見て直近のあらかじめ定めたページ数のページ群におけるアクセスカウント値の合計、等を用いればよい。
【０１３１】
図１７に、この変形例における、フォーム解釈部３６−ｆの全体的な処理手順を示す。この手順は、図４に例示した論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆの全体的な処理手順に対し、動作モード切換時の処理であるＳ１７およびＳ１８を追加したものである。
【０１３２】
すなわち、図１７の手順では、フォーム解釈部３６−ｆは、ページ配信部３４から新たなページの割り当てを受けると（Ｓ１２）、動作モード切換中か否かを判定する（Ｓ１４）。「動作モード切換中」でなければ、Ｓ１４に進む。これにより、図４と同じ処理が行われる。一方、「動作モード切換中」であれば、ページ同期処理を行う（Ｓ１８）。
【０１３３】
「動作モード切換中」という状態は、フロントエンド装置３０が、切換前の動作モードから、指示された切換先の動作モードへと移行する途中（遷移段階）の状態である。この状態では、フロントエンド装置３０内のフォーム解釈部３６−ｆおよび論理ページ解釈部３６−ｐは、以下に説明するページ同期処理を行う。ページ同期処理を行っている間は、フォーム解釈部３６−ｆと、論理ページ解釈部３６−ｐ群とのいずれか一方は処理を中断して待機状態となり、もう一方が処理を進めることで、両者の処理するページを同期させる。「動作モード切換中」の段階ではまだ動作モードの切換は行わず、「動作モード切換中」が解除されて初めて動作モードの切換を行う。
【０１３４】
この例では、動作モードを切り換える指示を受けるとフロントエンド装置３０は「動作モード切換中」となる。この状態は、動作モードの切換のための準備を行う状態であり、ただし、この段階では、まだ動作モードの切換は行わない。その後、ページ同期処理が完了するまで「動作モード切換中」の状態が続き、ページ同期処理が完了すると「動作モード切換中」の状態は解除され、動作モードが切り換えられる。この例では、ページ配信部３４が、各論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆに対して何ページ目までのページを割り当てたかという情報と、キャッシュ管理部３８が管理している現在キャッシュ中のキャッシュデータの総量の情報と、に基づき、前述の（ａ）および（ｂ）の各方向の動作モードの切換が必要になったかどうかを判定する。そして、必要になった場合には、動作モードの切換をフォーム解釈部３６−ｆに指示する。この指示に応じて、フォーム解釈部３６−ｆは「動作モード切換中」状態となり、ページ同期処理（Ｓ１８）を実行する。
【０１３５】
ページ同期処理とは、並列動作する論理ページ解釈部３６−ｐ群と、フォーム解釈部３６−ｆと、の間で、ページ処理の進捗を合わせる（すなわち、両者が処理しているページの番号が同じになるようにする）処理である。
【０１３６】
図１８に、ページ同期処理（Ｓ１８）の処理手順の一例を示す。この例では、フォーム解釈部３６−ｆは、フォーム解釈部３６−ｆが現在処理しているページの番号Ｎｆと、複数の論理ページ解釈部３６−ｐが現在処理しているページの番号のうち最も大きな番号Ｎｐと、が同じであるかどうかを判定する（Ｓ１３０）。ＮｆおよびＮｐの値は、ページ配信部３４に問い合わせればよい。ＮｆとＮｐが同じ値でない場合、フォームの処理と論理ページの処理とが同期していないことになる。この場合、更に、ＮｆとＮｐを比較し、Ｎｆの方がＮｐよりも大きいか否かを判定する（Ｓ１３２）。
【０１３７】
この判定結果が否定（Ｎ）の場合、論理ページの解釈処理の方が、フォームの解釈処理よりも先に進んでいるということなので、フォーム解釈部３６−ｆは、各論理ページ解釈部３６−ｐに対して処理中断を指示する（Ｓ１３４）。この指示を受けた各論理ページ解釈部３６−ｐは、例えば現在処理中のページについての中間データの生成が完了し次第、中断状態となり、ページ配信部３４に対する次のページの配信要求を行わずに待機する。この中断状態は、処理再開指示を受けるまで続く。Ｓ１３４の後、フォーム解釈部３６−ｆはＳ１４（図１７）に進み、当該ページのフォームの解釈および中間データ生成の処理を行う。そして、フォーム解釈部３６−ｆが次のページの割り当てを受けると（図１７のＳ１２）、まだ「動作モード切換中」なので、図１８のページ同期処理が行われることになる。このようにして、フォーム解釈部３６−ｆの処理が処理中断中の論理ページ解釈部３６−ｐの進捗に追いつくまで、Ｓ１３０→Ｓ１３２→Ｓ１３４→Ｓ１４→Ｓ１２→Ｓ１７→Ｓ１３０の処理ループが繰り返される。
【０１３８】
このようにして、フォーム解釈部３６−ｆの処理進捗が、論理ページ解釈部３６−ｐの処理進捗に追いつくと、Ｓ１３０の判定結果が肯定（Ｙ）となる。この場合、フォーム解釈部３６−ｆは、「動作モード切換中」の状態から抜け出し、自身の動作モードを切り換える。また、フォーム解釈部３６−ｆは、論理ページ解釈部３６−ｐに対して処理中断指示を発しているかどうかを判定し（Ｓ１３６）、発している場合は、論理ページ解釈部３６−ｐに対して処理再開指示を発する（Ｓ１３８）。処理再開指示を受けた各論理ページ解釈部３６−ｐは、自身の動作モードを切り換え、処理を再開する。
【０１３９】
Ｓ１３２の判定結果が肯定（Ｙ）の場合、フォーム解釈部３６−ｆは、Ｓ１２で割り当てられたページの処理は行わずに待機し（Ｓ１３３）、Ｓ１３０に戻る。このようにして、論理ページ解釈部３６−ｐの処理が待機中のフォーム解釈部３６−ｆの進捗に追いつくまで、Ｓ１３０→Ｓ１３２→Ｓ１３３→Ｓ１２→Ｓ１７→Ｓ１３０の処理ループが繰り返される。そして、論理ページ解釈部３６−ｐの処理進捗が、フォーム解釈部３６−ｆの処理進捗に追いつくと、Ｓ１３０の判定結果が肯定（Ｙ）となる。すると、フォーム解釈部３６−ｆは自身の動作モードを切り換えるとともに、各論理ページ解釈部３６−ｐに対して動作モードの切換を指示する。
【０１４０】
以上、ページ同期処理の例を説明した。動作モードを切り換える際にページ同期処理を行うことで、切換後の動作モードでの処理を、フォーム解釈部３６−ｆと論理ページ解釈部３６−ｐの処理進捗状況が一致した状態から開始することが可能となる。
【０１４１】
例えば、非プロセス間通信モードで論理ページ解釈部３６−ｐがフォーム解釈部３６−ｆよりも先のページを処理している時点を考える。この時点では、未作成のキャッシュデータを参照するキャッシュ参照コマンドを含んだページの中間データが中間データバッファ４２内に存在する可能性がある。この時点で、仮に、キャッシュデータの総量がフォームキャッシュ４８の容量に近づいたため、動作モードを非プロセス間通信モードからプロセス間通信モードに切り換えたとする。この場合、プロセス間通信モードへの切換に応じて、新たに生成されるキャッシュデータをフォームキャッシュ４８に格納するために、フォームキャッシュ４８からの既存のキャッシュデータを削除することが可能になる。これにより、中間データバッファ４２内のまだ描画部４４で処理されていないページが参照しているキャッシュデータが、フォームキャッシュ４８から削除されてしまい、そのページの画像が生成できなくなってしまう可能性が出てくる。
【０１４２】
また、プロセス間通信モードで論理ページ解釈部３６−ｐがフォーム解釈部３６−ｆよりも先のページを処理している状況を考える。この状況で、いずれかの論理ページ解釈部３６−ｐが新たに出現したフォームのキャッシュデータの有無を問い合わせると、キャッシュ管理部３８は「キャッシュデータ無し」の旨の回答を返し、その論理ページ解釈部３６−ｐはキャッシュを参照しない中間データ（そのフォームの中間データを含んでいる）を作成する。その後、フォーム解釈部３６−ｆがそのフォームを処理する時点で、そのフォームのキャッシュデータをフォームキャッシュ４８に登録する可能性があるが、この登録したキャッシュデータが後のページで使用されるかどうかは分からない。このように、参照される可能性のないキャッシュデータを登録してしまう可能性がある。
【０１４３】
以上に例示したような不具合は、動作モード切換時にページ同期処理を行うことで、解消される。
【０１４４】
なお、図１８の例では、ページ同期において、論理ページ解釈部３６−ｐ群とフォーム解釈部３６−ｆとが処理しているページ番号が同じになるようにしたが、これは一例に過ぎない。この代わりに、フォーム解釈部３６−ｆが論理ページ解釈部３６−ｐ群に対して少し進んだページ番号を処理している状態となるように、同期をとってもよい。すなわち、フォーム解釈部３６−ｆの方が論理ページ解釈部３６−ｐ群よりも少し先を処理している状態であれば、非プロセス間通信モードでもプロセス間通信モードでも、論理ページ解釈部３６−ｐが処理するページに含まれるフォームのキャッシュデータはほぼ必ずフォームキャッシュ４８に存在する。このため、並列処理とキャッシュ利用の効果を最大限に利用して高速な処理が可能となる。これに対し、フォーム解釈部３６−ｆの処理が論理ページ解釈部３６−ｐ群よりも遙かに先を処理していると、フォーム解釈部３６−ｆが作成したキャッシュデータが、論理ページの描画の際に必要とされる前にキャッシュ空き容量の逼迫等により削除されてしまう可能性が高くなる。このような不具合は、動作モード切換時に、フォーム解釈部３６−ｆが論理ページ解釈部３６−ｐ群に対して少し進んだ進捗状態となるように同期することで解消され、高速な処理が可能となる。
【０１４５】
また、フォーム解釈部３６−ｆが論理ページ解釈部３６−ｐ群に対して同じページ番号乃至少し進んだページ番号を処理している状態となるよう、ある幅を持った範囲でページ同期をとるようにしてもよい。
【０１４６】
図１７および図１８の例では、フォーム解釈部３６−ｆがページ同期処理を実行したが、この代わりにページ配信部３４がページ同期処理を行ったり、ページ同期処理専用の機能モジュールを設けたりしてもよい。
【０１４７】
なお、プロセス間通信モードから非プロセス間通信モードへ切り換えた際、フォームキャッシュ４８およびキャッシュ管理部３８をリセット（すなわちクリア）する必要はない。切換後に、フォーム解釈部３６−ｆがＰＤＬデータからキャッシュ対象のフォームを見つけるごとに、そのフォームに対応するキャッシュエントリの有無をキャッシュ管理部３８に問い合わせればよい。
【０１４８】
また、プロセス間通信モードから非プロセス間通信モードへ切り換えた際、各キャッシュエントリのアクセスカウント値をリセットするようにしてもよい。特に、図１５の動作モード切換方式を用いる場合に、Ｓ２３２でのキャッシュのヒット率低下検知に応じてＳ２２４で非プロセス間通信モードに切り換える場合に、アクセスカウント値をリセットすれば、過去のアクセスの回数の情報がクリアされるので、アクセスカウント値はより新しいキャッシュ利用状況を反映したものとなり、キャッシュの利用効率を向上させることが可能となる。
【０１４９】
また、非プロセス間通信モードからプロセス間通信モードへ切り換えた際、フォームキャッシュ４８およびキャッシュ管理部３８をリセット（すなわちクリア）する必要はない。切換後、フォーム解釈部３６−ｆが、フォームの中間データをキャッシュするか否かをキャッシュ管理部３８に通知すればよい。
【０１５０】
以上、図１７および図１８を参照して、フォーム解釈部３６−ｆの全体的な処理手順の例を説明した。一方、論理ページ解釈部３６−ｐの全体的な処理手順は、図４の手順と同様でよい。
【０１５１】
次に、図１９を参照して、論理ページ解釈部３６−ｐのコマンドごとの処理手順（図４のＳ２２の詳細な手順）の例を説明する。図１９の手順は、図５に例示した実施形態の手順に対して、Ｓ４１およびＳ４４を追加したものである。
【０１５２】
すなわち、図１９の手順では、論理ページ解釈部３６−ｐは、フォームに対応するキャッシュＩＤを生成（Ｓ４０）した後、現在の動作モードがプロセス間通信モードか否かを判定する（Ｓ４１）。
【０１５３】
プロセス間通信モードである場合は、プロセス間通信を行い、キャッシュ管理部３８に対してそのキャッシュＩＤを引数とする問合せ要求を送ることで、そのキャッシュＩＤに対応するキャッシュデータがフォームキャッシュ４８内に存在しているかどうかを問い合わせる（Ｓ４４）。この問合せに対して、キャッシュ管理部３８から「該当するキャッシュデータあり」の旨の回答があった場合（Ｓ４４の判定結果がＹ）、論理ページ解釈部３６−ｐは、Ｓ４２に進み、そのキャッシュＩＤを参照する参照コマンドを生成し、出力する。問合せに対する回答が「該当するキャッシュデータなし」であれば、論理ページ解釈部３６−ｐは、当該フォームのＰＤＬデータをメモリに展開し（Ｓ３８）、そのＰＤＬデータを解釈してフォームの中間データを生成し（Ｓ３２）、生成した中間データを出力する（Ｓ３４）。このように、プロセス間通信モードでは、キャッシュデータがフォームキャッシュ４８にあるかどうかを確認し、あると確認できた場合にのみ、そのキャッシュデータを参照するコマンドを作成する。
【０１５４】
一方、現在の動作モードが非プロセス間通信モードの場合（Ｓ４１の判定結果がＮ）、論理ページ解釈部３６−ｐは、Ｓ４２に進み、そのキャッシュＩＤを参照する参照コマンドを生成し、出力する。非プロセス間通信モードでは、必要なキャッシュデータが入手できることが保証されているので、キャッシュ管理部３８への問合せをせずに、キャッシュデータを参照するコマンドを作成するのである。これは、図５に示した上記実施形態での処理と同じである。
【０１５５】
次に、図２０を参照して、フォーム解釈部３６−ｆのコマンドごとの処理手順（図１７のＳ２２の詳細な手順）の例を説明する。図２０の手順は、図６に例示した実施形態の手順に対して、Ｓ５５、Ｓ５７およびＳ６０〜Ｓ６６を追加したものである。
【０１５６】
図２０の手順では、フォーム解釈部３６−ｆは、フォームに対応するキャッシュＩＤを生成（Ｓ５４）した後、現在の動作モードがプロセス間通信モードか否かを判定する（Ｓ５５）。
【０１５７】
現在の動作モードが非プロセス間通信モードの場合（Ｓ５５の判定結果がＮ）、フォーム解釈部３６−ｆは、そのフォームの中間データを生成し（Ｓ５６）、キャッシュ管理部３８に対して、その中間データをキャッシュデータとしてフォームキャッシュ４８に登録する登録要求を行う（Ｓ５７）。これに応じ、キャッシュ管理部３８が、そのキャッシュデータの情報をキャッシュ管理部３８に登録する。そして、作成した中間データをそのキャッシュＩＤと対応づけてフォームキャッシュ４８に送ることで、キャッシュデータの登録を行う（Ｓ５８）。なお、Ｓ５７およびＳ５８では、上記実施形態の場合と同様、既にそのフォームのキャッシュデータが登録済みかどうかをキャッシュ管理部３８に問合せ、登録済みであれば重複登録をしないようにする。このように、非プロセス間通信モードでの処理は、図６に示した上記実施形態での処理と基本的に同じである。
【０１５８】
一方、現在の動作モードがプロセス間通信モードである場合（Ｓ５５の判定結果がＹ）は、キャッシュ管理部３８に対してそのキャッシュＩＤを引数とする問合せ要求を送ることで、そのキャッシュＩＤに対応するキャッシュデータがフォームキャッシュ４８内に存在しているかどうかを問い合わせる（Ｓ６０）。この問合せに対して、キャッシュ管理部３８から「該当するキャッシュデータあり」の旨の回答があった場合（Ｓ６０の判定結果がＹ）、フォーム解釈部３６−ｆは、処理を終了する。同じキャッシュデータを重複して生成・登録する必要がないからである。
【０１５９】
一方、Ｓ６０の問合せに対するキャッシュ管理部３８からの回答が「該当するキャッシュデータなし」であれば、フォーム解釈部３６−ｆは、そのフォームの中間データを生成し（Ｓ６２）、生成した中間データのサイズとキャッシュＩＤとを含んだ領域確保要求をキャッシュ管理部３８に送り、この要求に対して「領域確保成功」の回答があった場合には、その中間データを登録するための登録要求をキャッシュ管理部３８に送る（Ｓ６４）。この場合は、作成したフォームの中間データをフォームキャッシュに登録できる（Ｓ６６の判定結果がＹ）ので、フォーム解釈部３６−ｆは、その中間データをそのキャッシュＩＤと対応づけてフォームキャッシュ４８に送る（Ｓ５８）。一方、領域確保要求に対してキャッシュ管理部３８から「領域確保失敗」の回答があった場合は、Ｓ６６の判定結果が否定（Ｎ）となり、生成したフォームの中間データをキャッシュ管理部３８およびフォームキャッシュ４８に登録せずに、処理を終了する。
【０１６０】
以上、この変形例におけるフロントエンド装置３０の処理手順の例を説明した。この変形例のバックエンド装置４０（特に描画部４４）の処理手順は、上記実施形態と同様（図７および図８参照）である。
【０１６１】
以上、本発明の実施形態および変形例について説明した。上述した実施形態および変形例は、あくまで本発明を説明するための例に過ぎず、本発明の範囲が上記実施形態および変形例に限られるわけではない。例えば、上記実施形態および変形例ではフォームキャッシュ４８をバックエンド装置４０内に設けたが、これは一例に過ぎない。フォームキャッシュ４８は、各解釈部３６および描画部４４からアクセス可能な場所であれば、どのような場所に配置されてもよい。また、上記実施形態および変形例では、描画部４４の数は１つであったが、複数存在してももちろんよい。
【符号の説明】
【０１６２】
１０  端末装置、２０  印刷コントローラ、３０  フロントエンド装置、３２  印刷ジョブ受信部、３４  ページ配信部、３６−ｆ  フォーム解釈部、３６−ｐ１，３６−ｐ２  論理ページ解釈部、３８  キャッシュ管理部、４０  バックエンド装置、４２  中間データバッファ、４４  描画部、４６  出力バッファ、４８  フォームキャッシュ、５０  印刷装置、６０，６２，６４  通信手段、３８２  通信制御部、３８４  キャッシュ制御部、３８６  キャッシュテーブル。
【要約】
【課題】並列動作する複数の解釈部が、キャッシュ対象要素の解釈結果が共用のキャッシュ手段内に存在するか否かを確認せずに処理を進めても、同じキャッシュ対象要素が重複して解釈されることがないようにする。
【解決手段】各論理ページ解釈部３６−ｐ１，３６−ｐ２は、担当する論理ページを解釈する際、キャッシュ対象のフォームについては、共通のルールに従ってそのフォームのデータから生成したキャッシュＩＤを参照するコマンドを論理ページの中間データに組み込む。フォーム解釈部３６−ｆは、各論理ページ中のキャッシュ対象のフォームを解釈して中間データを生成し、前記共通のルールに従って生成したキャッシュＩＤに対応づけてフォームキャッシュ４８に登録する。描画部４４は、論理ページの中間データからキャッシュＩＤを参照するコマンドを見つけると、フォームキャッシュ４８からそのキャッシュＩＤの中間データを入手し処理する。
【選択図】図３【図１】
0005408323.tif 000002
【図２】
0005408323.tif 000003
【図３】
0005408323.tif 000004
【図４】
0005408323.tif 000005
【図５】
0005408323.tif 000006
【図６】
0005408323.tif 000007
【図７】
0005408323.tif 000008
【図８】
0005408323.tif 000009
【図９】
0005408323.tif 000010
【図１０】
0005408323.tif 000011
【図１１】
0005408323.tif 000012
【図１２】
0005408323.tif 000013
【図１３】
0005408323.tif 000014
【図１４】
0005408323.tif 000015
【図１５】
0005408323.tif 000016
【図１６】
0005408323.tif 000017
【図１７】
0005408323.tif 000018
【図１８】
0005408323.tif 000019
【図１９】
0005408323.tif 000020
【図２０】
0005408323.tif 000021