JP2014093045A - 印刷画像処理システムおよびプログラム - Google Patents
印刷画像処理システムおよびプログラム Download PDFInfo
- Publication number
- JP2014093045A JP2014093045A JP2012244744A JP2012244744A JP2014093045A JP 2014093045 A JP2014093045 A JP 2014093045A JP 2012244744 A JP2012244744 A JP 2012244744A JP 2012244744 A JP2012244744 A JP 2012244744A JP 2014093045 A JP2014093045 A JP 2014093045A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- interpretation
- logical page
- unit
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/1244—Job translation or job parsing, e.g. page banding
- G06F3/1245—Job translation or job parsing, e.g. page banding by conversion to intermediate or common format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1211—Improving printing performance
- G06F3/1215—Improving printing performance achieving increased printing speed, i.e. reducing the time between printing start and printing end
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/1244—Job translation or job parsing, e.g. page banding
- G06F3/1247—Job translation or job parsing, e.g. page banding by conversion to printer ready format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
- G06F3/1288—Remote printer device, e.g. being remote from client or server in client-server-printer device configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1297—Printer code translation, conversion, emulation, compression; Configuration of printer parameters
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Record Information Processing For Printing (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
【課題】印刷データ処理装置を構成するためのコンピュータのハードウエア資源が複数の解釈部を実行するのに不足している場合でも正しく動作する印刷データ処理装置を構成できるようにする。
【解決手段】起動数判定部37は、フロントエンド装置30のベースとなるコンピュータのハードウエア計算資源の量(メモリ容量、CPUコア数等)を取得し、その量の資源で実行可能な解釈部の数(起動数という)を判定する。構成制御部39は、判定された起動数が2以上の場合、フォームを専門に解釈してその解釈結果をフォームキャッシュ48に登録するフォーム解釈部36−fと、論理ページを解釈する複数の論理ページ解釈部36−paと、を含む解釈システム35を起動する。また、判定された起動数が1の場合は、論理ページの解釈とフォームの解釈(およびフォームキャッシュ48への登録)との両方を行う単一の論理ページ解釈部からなる解釈システム35を起動する。
【選択図】図3
【解決手段】起動数判定部37は、フロントエンド装置30のベースとなるコンピュータのハードウエア計算資源の量(メモリ容量、CPUコア数等)を取得し、その量の資源で実行可能な解釈部の数(起動数という)を判定する。構成制御部39は、判定された起動数が2以上の場合、フォームを専門に解釈してその解釈結果をフォームキャッシュ48に登録するフォーム解釈部36−fと、論理ページを解釈する複数の論理ページ解釈部36−paと、を含む解釈システム35を起動する。また、判定された起動数が1の場合は、論理ページの解釈とフォームの解釈(およびフォームキャッシュ48への登録)との両方を行う単一の論理ページ解釈部からなる解釈システム35を起動する。
【選択図】図3
Description
本発明は、印刷画像処理システムおよびプログラムに関する。
一般に、パーソナルコンピュータから印刷装置に送られる印刷文書データは、PostScript(登録商標)やPDF( Portable Data Format: ISO 32000-1) などのページ記述言語(以下、PDLと呼ぶ。PDLはPage Description Languageの略)で記述されている。印刷装置では、RIP( Raster Image Processor)と呼ばれるデータ処理装置により印刷文書データをビットマップ形式(ラスター形式とも呼ばれる)の画像データに変換し、その画像データをプリントエンジンにより印刷する。また、PDLデータを直接ラスター画像に変換する方式の他に、PDLデータをPDLコマンドよりは粒度の小さいディスプレイリスト等の中間言語形式のデータに変換してバッファし、バッファした中間言語形式のデータをビットマップ形式に変換するという2段階の変換を行う印刷装置もよく知られている。
従来、PDLデータからビットマップ形式又は中間言語形式の画像データへの変換を、ページ単位などのあらかじめ定められた単位ごとに、複数のデータ処理装置で並列的に実行するシステムも知られている。
また、従来、あるデータ処理装置が印刷データ中のPDLで記述された文書要素(オブジェクト)をビットマップ形式又は中間言語形式へ変換した場合に、その変換結果のデータを文書要素の識別情報と対応づけてキャッシュメモリにキャッシュし、後で同じ又は異なるデータ処理装置が同じ文書要素を変換する必要が生じた場合には、キャッシュされたデータを使用することで、変換処理を省略することも行われている。
特許文献1には、PDLデータの中間データへの変換を複数の解釈部によりページ単位で並列実行するシステムが開示されている。各解釈部が生成した各ページの中間データは、バックエンド装置でラスター画像データに変換され、印刷装置に供給される。この文献には、フォーム(複数のページで繰り返し利用される画像要素)の画像データをキャッシュし、キャッシュ済みのフォームについてはキャッシュした画像データを再利用するシステム構成も開示されている。このシステムでは、各解釈部が、論理ページのPDLデータを中間データに変換する際、そのページに含まれるフォームの中間データも併せて生成する。
特許文献2には、複数のRIP処理部がページ単位で並列的にRIP処理を行う装置が開示される。この装置は、キャッシュメモリを有しており、各RIP処理部が生成したフォームのラスター画像データをそのキャッシュメモリに保存して再利用する。この装置は、同じフォームについてのRIP処理が重複して行われることがないように制御するRIP処理判定部を備えている。RIP処理判別部は、RIP処理部に割り当てたページデータにフォームデータが含まれるか否かを判別する。フォームデータが含まれる場合には、そのフォームデータがそれ以前にRIP処理部の何れかで既にRIP処理したフォームデータ、または現在、他のRIP処理部でRIP処理の実行中であるフォームデータと一致するか否かを、フォームIDに基づき判別する。一致しない場合には、そのフォームデータのフォームIDを記憶し、そのページデータをRIP処理するRIP処理部に対し、そのフォームデータに関するラスタイメージデータをキャッシュメモリに記憶することを指示する。一方、そのフォームデータが、それ以前にRIP処理部の何れかで既にRIP処理したフォームデータと一致する場合には、RIP処理判別部は、そのページデータをRIP処理するRIP処理部に対し、フォームデータ以外の画像データに関するRIP処理を行い、フォームデータに関しては、キャッシュメモリに記憶されたそのフォームデータに関するラスタイメージデータを取得して使用することを指示する。また、そのフォームデータが、現在他のRIP処理部にてRIP処理を実行中であるフォームデータと一致する場合には、RIP処理判定部は、そのページデータをRIP処理するRIP処理部に対し、フォームデータ以外の画像データに関するRIP処理を行い、他のRIP処理部にてRIP処理が完了するまで待機することを指示する。そして、RIP処理判別部は、他のRIP処理部にてRIP処理が完了した後に、キャッシュメモリに記憶されたフォームデータに関するラスタイメージデータを取得して使用することを指示する。
本発明は、印刷データ処理装置に含まれる並列的に動作する複数の解釈部が、解釈しようとするキャッシュ対象要素の解釈結果が共用のキャッシュ手段内に存在するか否かを確認せずに処理を進めても、同じキャッシュ対象要素が重複して解釈されることがないようにすると共に、印刷データ処理装置を構成するためのコンピュータのハードウエア計算資源が複数の解釈部を実行するのに不足している場合でも、正しく動作する印刷データ処理装置を構成することを目的とする。
請求項1に係る発明は、コンピュータを、前記コンピュータの有するハードウエア計算資源の量を求め、求めた量の前記ハードウエア計算資源で実行することが可能な解釈手段の数を判定する判定手段、前記コンピュータを、第1の印刷データ処理装置および第2の印刷データ処理装置のいずれとして機能させるかを、前記判定手段により判定された前記数に応じて制御する制御手段、として機能させるためのプログラムであって、前記第1の印刷データ処理装置は、前記コンピュータを、印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第1の論理ページ解釈手段、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させる1つのキャッシュ用解釈手段、として機能させることで構築される装置であり、前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記2以上の前記第1の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記第2の印刷データ処理装置は、前記コンピュータを、前記印刷データの各論理ページを解釈して解釈結果を出力する第2の論理ページ解釈手段であって、前記論理ページ内の前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素については、当該キャッシュ対象要素を解釈し、解釈結果を、前記生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記論理ページ内の前記キャッシュ手段に解釈結果が記憶されているキャッシュ対象要素については、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込む、第2の論理ページ解釈手段、として機能させることで構築される装置であり、前記第1の印刷データ処理装置および前記第2の印刷データ処理装置は、印刷画像データ生成装置に対して、前記第1の論理ページ解釈手段または前記第2の論理ページ解釈手段による前記印刷データの各論理ページの解釈結果を供給し、前記印刷画像データ生成装置は、前記第1の印刷データ処理装置または前記第2の印刷データ処理装置から供給された各論理ページの解釈結果を処理してそれら各論理ページの印刷画像データを生成する装置であり、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成する、ことを特徴とするプログラムである。
請求項2に係る発明は、前記制御手段は、前記判定手段により判定された前記数が1以上かつN(Nはあらかじめ定められた2以上の整数)未満であれば、前記コンピュータを前記第2の印刷データ処理装置として機能させ、前記判定手段により判定された前記数がN以上であれば、前記コンピュータを前記第1の印刷データ処理装置として機能させる、ことを特徴とする請求項1に記載のプログラムである。
請求項3に係る発明は、前記制御手段は、前記コンピュータを、前記第1の印刷データ処理装置、前記第2の印刷データ処理装置および第3の印刷データ処理装置のいずれとして機能させるかを、前記資源量判定手段の判定結果に応じて制御するものであり、前記第3の印刷データ処理装置は、前記コンピュータを、前記印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第3の論理ページ解釈手段であって、処理対象の論理ページにキャッシュ対象要素が含まれる場合、そのキャッシュ対象要素も解釈して解釈結果を当該論理ページの解釈結果に組み込む、2以上の第3の論理ページ解釈手段、として機能させることにより構築される装置であり、前記制御手段は、前記判定手段により判定された前記数が1であれば、前記コンピュータを前記第2の印刷データ処理装置として機能させ、前記判定手段により判定された前記数が2以上、かつ、前記N未満であれば、前記コンピュータを前記第3の印刷データ処理装置として機能させる、ことを特徴とする請求項2に記載のプログラムである。
請求項4に係る発明は、前記2以上の第1の論理ページ解釈手段は、それぞれ、第1の動作モードと第2の動作モードを有し、前記第1の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記第2の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、前記プログラムは、前記コンピュータを、前記2以上の第1の論理ページ解釈手段の動作モードを前記第1のモードと前記第2のモードとの間で切り換える制御を行うモード制御手段、として更に機能させる、ことを特徴とする請求項1〜3のいずれか1項に記載のプログラムである。
請求項5に係る発明は、前記モード制御手段は、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記2以上の第1の論理ページ解釈手段で完了するまでは、前記2以上の第1の論理ページ解釈手段を前記第2の動作モードで動作させ、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記2以上の第1の論理ページ解釈手段で完了すると、前記2以上の第1の論理ページ解釈手段の動作モードを前記第1の動作モードに切り換える、請求項4に記載のプログラムである。
請求項6に係る発明は、前記モード制御手段は、前記キャッシュ手段の空き容量を監視し、前記2以上の第1の論理ページ解釈手段が前記第1の動作モードで動作しているときに、前記キャッシュ手段の空き容量があらかじめ定められた閾値を下回った場合には、前記2以上の第1の論理ページ解釈手段の動作モードを前記第2の動作モードに切り換える、請求項4又は5に記載のプログラムである。
請求項7に係る発明は、前記2以上の第1の論理ページ解釈手段による前記問合せ通信に対して当該問合せ通信に係るキャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていた割合を表す前記キャッシュ手段のヒット率、および、前記キャッシュ手段に記憶されている各キャッシュ対象要素の中間データの利用状況を監視し、前記2以上の第1の論理ページ解釈手段が前記第2の動作モードで動作しているときに、前記ヒット率があらかじめ定められた判定閾値を下回った場合には、前記利用状況から中間データの最近の利用度合いがあらかじめ定めた閾値を下回るキャッシュ対象要素群を特定し、特定したキャッシュ対象要素群の中間データを前記キャッシュ手段から一括して削除する一括削除手段、として更に機能させる、ことを特徴とする請求項4〜6のいずれか1項に記載のプログラムである。
請求項8に係る発明は、前記モード制御手段は、前記一括削除手段による削除に応じて、前記2以上の第1の論理ページ解釈手段の動作モードを前記第2の動作モードから前記第1の動作モードに切り換える、請求項7に記載のプログラムである。
請求項9に係る発明は、コンピュータを、前記コンピュータの有するハードウエア計算資源の量を求め、求めた量の前記ハードウエア計算資源で実行することが可能な解釈手段の数を判定する判定手段、前記コンピュータを、第1の印刷データ処理装置および第2の印刷データ処理装置のいずれとして機能させるかを、前記判定手段により判定された前記数に応じて制御する制御手段、として機能させるためのプログラムであって、前記第1の印刷データ処理装置は、前記コンピュータを、印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第1の論理ページ解釈手段、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させる1つのキャッシュ用解釈手段、として機能させることで構築される装置であり、前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記2以上の前記第1の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記第2の印刷データ処理装置は、前記コンピュータを、前記印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第2の論理ページ解釈手段であって、処理対象の論理ページにキャッシュ対象要素が含まれる場合、そのキャッシュ対象要素も解釈して解釈結果を当該論理ページの解釈結果に組み込む、2以上の第2の論理ページ解釈手段、として機能させることで構築される装置であり、前記第1の印刷データ処理装置および前記第2の印刷データ処理装置は、印刷画像データ生成装置に対して、前記第1の論理ページ解釈手段または前記第2の論理ページ解釈手段による前記印刷データの各論理ページの解釈結果を供給し、前記印刷画像データ生成装置は、前記第1の印刷データ処理装置または前記第2の印刷データ処理装置から供給された各論理ページの解釈結果を処理してそれら各論理ページの印刷画像データを生成する装置であり、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成する、ことを特徴とするプログラムである。
請求項10に係る発明は、前記制御手段は、前記判定手段により判定された前記数がN(Nはあらかじめ定められた2以上の整数)未満であれば、前記コンピュータを前記第2の印刷データ処理装置として機能させ、前記判定手段により判定された前記数がN以上であれば、前記コンピュータを前記第1の印刷データ処理装置として機能させる、ことを特徴とする請求項9に記載のプログラムである。
請求項1に係る発明によれば、印刷データ処理装置に含まれる並列的に動作する複数の解釈手段が、解釈しようとするキャッシュ対象要素の解釈結果が共用のキャッシュ手段内に存在するか否かを確認せずに処理を進めても、同じキャッシュ対象要素が重複して解釈されることがないようにすると共に、印刷データ処理装置を構成するためのコンピュータのハードウエア計算資源が複数の解釈手段を実行するのに不足している場合でも、正しく動作する印刷データ処理装置を構成することができる。
請求項2に係る発明によれば、コンピュータのハードウエア計算資源が複数の解釈手段を実行するのに不足している場合に、コンピュータを第2の印刷データ処理装置として構成することで対処することができる。
請求項3に係る発明によれば、ハードウエア計算資源をキャッシュ用解釈手段に割り当てるよりも、そのハードウエア計算資源で論理ページ解釈手段を動作させた方が高速な処理が可能な場合に、コンピュータを第3の印刷データ処理装置として構成することで対処することができる。
請求項4に係る発明によれば、コンピュータを第1の印刷データ処理装置として機能させる場合において、第1の論理ページ解釈手段の動作(第1の動作モード)では処理効率が悪い場合でも、第2の動作モードで対応することが可能となる。
請求項5に係る発明によれば、コンピュータを第1の印刷データ処理装置として機能させる場合において、第1の動作モードでは処理効率が悪い印刷ジョブの最初の方のページ群の処理効率を第2の動作モードにより向上させることができ、その最初のページ群の後は、第1の動作モードに切り換えることで処理を高速化することができる。
請求項6に係る発明によれば、コンピュータを第1の印刷データ処理装置として機能させる場合において、キャッシュ手段の空き容量が少なくなった場合に、キャッシュ手段内の既存のデータを削除しても、各論理ページの解釈および描画が正しく行われるようにすることができる。
請求項7に係る発明によれば、コンピュータを第1の印刷データ処理装置として機能させる場合において、キャッシュ手段のヒット率が低くなった場合に、キャッシュ手段内のあまり利用されていないキャッシュ対象要素の中間データを一括削除し、利用が増えてきたキャッシュ対象要素の中間データがキャッシュ手段に記憶されやすくすることができる。
請求項8に係る発明によれば、コンピュータを第1の印刷データ処理装置として機能させる場合において、キャッシュ手段内のあまり利用されていないキャッシュ対象要素の中間データを一括削除してキャッシュ手段の空き容量を増やした段階で、第1の動作モードに切り換えることで処理を高速化することができる。
請求項9に係る発明によれば、印刷データ処理装置に含まれる並列的に動作する複数の解釈手段が、解釈しようとするキャッシュ対象要素の解釈結果が共用のキャッシュ手段内に存在するか否かを確認せずに処理を進めても、同じキャッシュ対象要素が重複して解釈されることがないようにすると共に、印刷データ処理装置を構成するためのコンピュータのハードウエア計算資源では、キャッシュ用解釈手段を設けると処理速度が低下してしまう場合には、キャッシュ手段を用いずに正しく動作する印刷データ処理装置を構成することができる。
請求項10に係る発明によれば、コンピュータが、キャッシュ用解釈手段を設けても、他の2以上の第1の論理ページ解釈手段による並列処理で十分な処理速度が得られるだけのハードウエア計算資源を有している場合には、コンピュータを第1の印刷データ処理装置として構成し、ハードウエア計算資源をキャッシュ用解釈手段に割り当てるよりも、そのハードウエア計算資源で論理ページ解釈手段を動作させた方が高速な処理が可能な場合には、コンピュータを第2の印刷データ処理装置として構成することで対処することができる。
<システムのハードウエア構成>
図1は、画像処理システムの構成の一例を示すブロック図である。以下で説明する本発明の各種の実施形態の例による画像処理システムは、いずれも、図1に例示する構成を備えるものとする。図1の例のシステムは、端末装置10、印刷コントローラ20、および印刷装置50を備える。印刷コントローラ20は、フロントエンド装置30およびバックエンド装置40を有している。端末装置10は、通信手段60を介してフロントエンド装置30に接続されており、ユーザの指示に従い、文書の印刷命令を含む印刷ジョブをフロントエンド装置30に対して送信する。フロントエンド装置30は、通信手段62を介してバックエンド装置40に接続され、バックエンド装置40は、通信手段64を介して印刷装置50に接続される。
図1は、画像処理システムの構成の一例を示すブロック図である。以下で説明する本発明の各種の実施形態の例による画像処理システムは、いずれも、図1に例示する構成を備えるものとする。図1の例のシステムは、端末装置10、印刷コントローラ20、および印刷装置50を備える。印刷コントローラ20は、フロントエンド装置30およびバックエンド装置40を有している。端末装置10は、通信手段60を介してフロントエンド装置30に接続されており、ユーザの指示に従い、文書の印刷命令を含む印刷ジョブをフロントエンド装置30に対して送信する。フロントエンド装置30は、通信手段62を介してバックエンド装置40に接続され、バックエンド装置40は、通信手段64を介して印刷装置50に接続される。
通信手段60,62,64は、例えば、LAN(Local Area Network)等のネットワークであってよい。通信手段60,62,64は、互いに共通の通信手段であってもよいし、それぞれ異なる通信手段であってもよい。例えば、端末装置10とフロントエンド装置30との間の通信手段60としてLANを用い、フロントエンド装置30とバックエンド装置40との間の通信手段62およびバックエンド装置40と印刷装置50との間の通信手段64として、それぞれ、LANと異なる専用の通信手段を用いてもよい。
図1の例のシステムでは、端末装置10から送信された印刷ジョブをフロントエンド装置30において処理し、この処理結果のデータがバックエンド装置40に渡され、バックエンド装置40において生成された描画データ(ラスターデータとも言う)に従って印刷装置50による印刷が行われる。
図1の例の端末装置10、フロントエンド装置30、およびバックエンド装置40は、例えば汎用のコンピュータによって実現され得る。コンピュータは、ハードウエアとして、CPU(中央演算装置)、メモリ(一次記憶)、各種I/O(入出力)インタフェース、通信インタフェースなどがバスを介して接続された回路構成を有する。コンピュータは、通信インタフェースを介して、他の装置との間でデータの授受を行う。また、バスに対し、例えばI/Oインタフェース経由で、キーボードやマウスなどの入力装置、および、CRT(Cathode Ray Tube)や液晶ディスプレイなどの表示装置が接続される。また、バスには、I/Oインタフェースを介して、HDD(ハードディスクドライブ)や、CD、DVD、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブが接続される。このようなドライブは、メモリに対する外部記憶装置として機能する。後述の各実施形態の処理内容が記述されたプログラムがCDやDVDなどの記録媒体を経由して、またはネットワーク経由で、HDDなどの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されCPUにより実行されることにより、後述の各実施形態の処理が実現される。
なお、後述の各実施形態の例において、バックエンド装置40の機能の一部は、プログラムの実行によるソフトウエア処理ではなく、ハードウエア処理により実現してよい。ハードウエア処理は、例えば、動的再構成可能プロセッサ(Dynamic Reconfigurable Processor,DRP)と呼ばれる、処理の実行の途中で動的に回路を再構成できるプロセッサを用いて行ってもよい。あるいは、ASIC(Application Specific Integrated Circuit)等の回路を用いてハードウエア処理を行ってもよい。例えば、バックエンド装置40の機能の一部を実行する、DRPやASIC等のハードウエア要素を予め構成しておき、このようなハードウエア要素を汎用コンピュータのバスに対して接続することで、バックエンド装置40を実現すればよい。
フロントエンド装置30およびバックエンド装置40を実現するハードウエアの1つの具体例として、それぞれがサーバとして機能する複数の情報処理装置を1つの筐体内に搭載したブレードサーバを用いることが考えられる。ブレードサーバは、CPUやメモリを備える汎用のコンピュータを1枚の基板(ブレード)に実装し、複数のブレードを筐体内に搭載したサーバ装置である。例えば、ブレードサーバに搭載された1つのブレードをフロントエンド装置30として機能させ、他の1つのブレードをバックエンド装置40として機能させてもよい。あるいは、例えば、フロントエンド装置30およびバックエンド装置40のそれぞれを、ブレードサーバに搭載された複数のブレードにより実現してもよい。
印刷装置50は、紙等の媒体に印刷を行う装置であり、例えば、連続紙プリンタであってよい。以下では、印刷装置50として連続紙プリンタを用いる場合を例に取り、各実施形態の例を説明する。なお、印刷装置50は、電子写真、インクジェット、またはその他の方式の印刷エンジンにより印刷を行うものとする。
<実施形態>
図2に、実施形態の基礎となる、印刷コントローラ20が備えるフロントエンド装置30およびバックエンド装置40の機能構成の例を示す。フロントエンド装置30は、印刷ジョブ受信部32、ページ配信部34、および、複数の解釈部36を備える。バックエンド装置40は、中間データバッファ42、描画部44および出力バッファ46を備える。
図2に、実施形態の基礎となる、印刷コントローラ20が備えるフロントエンド装置30およびバックエンド装置40の機能構成の例を示す。フロントエンド装置30は、印刷ジョブ受信部32、ページ配信部34、および、複数の解釈部36を備える。バックエンド装置40は、中間データバッファ42、描画部44および出力バッファ46を備える。
フロントエンド装置30の印刷ジョブ受信部32は、端末装置10から印刷ジョブを受信する。以下に示す例において、印刷ジョブは、文書を印刷する旨の命令と、印刷対象の文書をページ記述言語で記述したデータと、を含む。ページ記述言語(PDLと略す:PDLはPage Description Language の略)は、ディスプレイ表示処理、印刷処理等を情報処理機器に実行させるためのコンピュータプログラミング言語である。ページ記述言語の例としては、PostScript(登録商標)やPDF(Portable Document Format)等がある。ページ記述言語で記述されたデータは、印刷対象の文書を構成する文字や図形、イメージ(ビットマップ画像)などのオブジェクトの位置情報、書式情報および色情報などを含む。以下の説明では、印刷対象の文書をページ記述言語で記述したデータを「PDLデータ」と呼ぶ。印刷ジョブ受信部32は、受信した印刷ジョブに含まれるPDLデータをページ配信部34に渡す。
ページ配信部34は、印刷ジョブ受信部32から取得したPDLデータに含まれるページのうち、どのページをどの解釈部36に処理させるかを決定する。ここでいう「ページ」は、PDLデータにおいて規定されているページ、すなわち論理ページである。用紙の1つの面、すなわち1つの物理ページには、印刷設定に応じて、1つ又は複数の論理ページが印刷されることになる。なお、以下では、文脈上明らかなように、特に断りのない場合は、「ページ」という用語は、論理ページを指すものとする。
ページ配信部34は、各解釈部36の稼動状態に基づいて、各解釈部36に対してページを割り当てる。例えば、処理を実行中でない解釈部36、または他の解釈部36よりも負荷の低い処理を実行中の解釈部36を優先して、PDL中の先頭ページから順に担当ページを割り当てる。ページ配信部34は、各解釈部36に対し、割り当てた担当ページを通知すると共に、印刷ジョブ受信部32から取得したPDLデータを渡す。この例では、各解釈部36に対し、PDLデータにおける担当ページの部分だけでなく、PDLデータの全体を渡すものとする。これは、例えばページ非独立のPDL(すなわち、ページの画像の生成が、そのページ以前のPDLデータの解釈結果に依存するタイプのPDL)を用いている場合の例である。別の例として、ページ独立のPDL(ページごとのPDLデータのみで当該ページの画像を正しく生成できるタイプのPDL)を用いる場合は、ページ配信部34は、各解釈部36に対してPDLデータのページごとの割り当てを行い、この割り当てに基づいて、ページごとに分割したPDLデータを担当の各解釈部36に渡してもよい。
解釈部36は、ページ配信部34から取得したPDLデータを解釈し、ページ配信部34から通知された担当ページについて、描画データの生成の手順を表す命令を含む中間データを生成し、出力する。
より詳しくは、解釈部36は、PDLデータを解釈し、自身の担当ページについて、中間データを生成する。中間データは、最終的に印刷装置50に出力されるデータに変換される前段階のデータである。中間データの例として、ディスプレイリストや区間データ形式(例えば本出願人による特開2011−150535号公報参照)等があげられる。ここで、解釈部36は、印刷装置50による印刷で用いられる基本色(例えばイエロー(Y,Yellow)、マゼンタ(M,Magenta)、シアン(C,Cyan)、ブラック(K,Black)の4色)ごとに分版された中間データを生成するようにしてもよい。ただし、これはあくまで一例に過ぎない。
中間データは、印刷対象の文書の構成要素であるオブジェクトのそれぞれについて、当該文書の印刷画像において当該オブジェクトを描画する手順を表す描画命令を含む。この描画命令を記述する言語としては、ページ記述言語と比較してより詳細な手順を表現する言語が用いられる。例えば、ページ記述言語において、あるオブジェクトの印刷画像上の位置、形状、および大きさを表す情報が定義される場合、中間データにおける当該オブジェクトの描画命令では、印刷画像における走査線単位で当該オブジェクトの描画の手順を記述したものであり得る。中間データに従って、後述のバックエンド装置40において、印刷装置50に対して出力される描画データが生成される。
以下に区間データ形式(「ランリスト」形式とも呼ぶ)において用いるコマンドの例を示す。
(1)line, ym, xl, xr, c
y座標ymの走査線において、x座標xlからxr - 1まで、階調cで描画する
(2)duplicate
直前に描画した走査線と同一の態様(x座標,階調)で描画する
(3)window, xl, xr
直前に描画した走査線と同一の階調でx座標xlからxr - 1まで描画する
(1)line, ym, xl, xr, c
y座標ymの走査線において、x座標xlからxr - 1まで、階調cで描画する
(2)duplicate
直前に描画した走査線と同一の態様(x座標,階調)で描画する
(3)window, xl, xr
直前に描画した走査線と同一の階調でx座標xlからxr - 1まで描画する
あるページの中間データは、当該ページを構成する各オブジェクトの描画手順を表す命令の集合であると捉えられる。1つのページを表す中間データのデータ量は、当該ページを構成する各画素の値を含むラスタデータと比較して少ない。
なお、区間データ形式は中間データの形式のあくまで一例に過ぎない。本実施形態は、どのような中間データ形式を使用する場合にも適用可能である。バックエンド装置において、ハードウエア処理により描画データを生成する場合には、中間データの形式は、ハードウエア処理による描画データの生成を可能とする描画手順を表す形式であればよく、上に例示した区間データ形式と異なる形式のものでもよい。
解釈部36が生成した中間データは、バックエンド装置40に対して出力される。出力された中間データは、バックエンド装置40の中間データバッファ42に書き込まれる。描画部44は、中間データバッファ42に記憶された各ページの中間データを読み出し、読み出したページの中間データに従って描画データ(ラスターデータ)を生成する。生成された各ページの描画データは出力バッファ46に格納され、印刷装置50から順次読み出される。印刷装置50は、出力バッファ46から読み出した各ページの描画データを、用紙に対して印刷する。
次に、図3を参照して、実施形態の印刷コントローラ20の構成の一例(「第1構成」と呼ぶ)を説明する。
図2に例示した構成では、フロントエンド装置30は複数の解釈部36を備え、それら複数の解釈部36が、それぞれ割り当てられたページについての解釈および中間データの生成処理を、並列的に実行する。図3に例示する第1構成では、フロントエンド装置30の解釈システム35は、図2の解釈部36と同様の、ページ(論理ページ)の中間データ生成を担当する2つの論理ページ解釈部36−pa1および36−pa2(以下、特に区別する必要がない場合は「論理ページ解釈部36−pa」と総称する)に加え、フォームについての中間データ生成を担当するフォーム解釈部36−fを有する。なお、図3の例は、論理ページ解釈部36−paを2つ用いる例であるが、3つ以上用いる構成も考えられる。
「フォーム」とは、複数のページで繰り返し使用されることが想定された画像のことである。フォームは1以上のオブジェクトから構成される。一般に、PDLデータ中では、フォームに対して、当該フォームをPDLデータ中で一意に識別する識別情報(「フォームID」と呼ぶ)が付与されている。PDLデータ中に同じフォームIDを指定したコマンドがある場合、それらコマンドは、同じフォームを用いた画像を表す。
第1構成では、一度生成したフォームの中間データをキャッシュし、再利用する枠組み(フォームキャッシュ48)を提供することで、同じフォームの中間データが何度も生成されるといった非効率を避ける。フォームキャッシュ48は、キャッシュ対象のフォームの中間データを一時的に記憶するキャッシュである。
各論理ページ解釈部36−pa1および36−pa2は、それぞれページ配信部34から割り当てられたページのPDLデータの中間データを生成する。ここで、1つの例では、各論理ページ解釈部36−paは、割り当てられたページ中の、フォーム以外のオブジェクト群を処理する。そして、ページ中に含まれるフォームは、そのフォームを構成するPDLコマンド(オブジェクト)群を中間データ形式に変換したものを代えて、フォームキャッシュ48にキャッシュされた当該フォームの中間データを指し示す識別情報(「キャッシュID」と呼ぶ)を参照する中間データコマンドに置き換える。各論理ページ解釈部36−paが生成した各ページの中間データは、バックエンド装置40の中間データバッファ42に送られる。
一方、フォーム解釈部36−fは、PDLデータ中のフォームのPDLコマンド群を解釈し、当該フォームを表す中間データを生成する。そして、生成したフォームの中間データをバックエンド装置40のフォームキャッシュ48に登録する。ここで、フォーム解釈部36−fは、フォームキャッシュ48に対して登録するフォームを表す中間データに対して、少なくとも当該印刷ジョブ中で一意なキャッシュIDを付与し、このキャッシュIDに対応づけてその中間データをフォームキャッシュ48に登録する。
論理ページ解釈部36−paは、印刷ジョブのPDLデータのうちの割り当てられたページのみを処理(すなわち解釈および中間データの生成)するのに対し、フォーム解釈部36−fは、印刷ジョブのPDLデータの全ページを処理する。ただし、フォーム解釈部36−fが処理するのは、ページ中のフォームのみであり、フォームに含まれない一般のオブジェクトについては処理しない。
論理ページ解釈部36−pa1、36−pa2およびフォーム解釈部36−fは、典型的には、CPU上で実行されるプロセスとして実現される。例えば、マルチコアCPUを用いたシステム構成において、個々のコアでそれぞれ1つずつ解釈部36のプロセスを実行するという構成が考えられる。
キャッシュ管理部38は、フォームキャッシュ48に保持されるキャッシュデータ(すなわちフォームの中間データ)の管理情報を保持する。キャッシュ管理部38には、キャッシュデータごとに、キャッシュIDと、そのキャッシュデータのフォームキャッシュ48の記憶空間内での記憶場所を示す情報(例えば先頭アドレスと、そのデータのサイズとの組合せ)とが記憶される。フォーム解釈部36−fは、PDLデータ中のフォームを処理する際、そのフォームのキャッシュデータがフォームキャッシュ48に登録されているかどうかをキャッシュ管理部38から求め、登録されている場合にはそのフォームのキャッシュデータの生成は行わず、登録されていない場合にのみキャッシュデータの生成を行う。
起動数判定部37および構成制御部39は、フロントエンド装置30の機能構成、特に印刷データの解釈を行う解釈システム35の内部構成を制御するための機能モジュールである。起動数判定部37および構成制御部39は、フロントエンド装置30が実装されるコンピュータ(例えばブレードサーバ上の1つ乃至複数のブレード)上で、図3に示した3つの解釈部36(2つの論理ページ解釈部36−paと1つのフォーム解釈部36−f)からなる解釈システム35を実行できるかどうかを判定する。この判定は、例えばそのコンピュータ上でフロントエンド装置30を立ち上げる際のシステム構成処理の一部として実行される。この判定は、起動数判定部37が、そのコンピュータにおいてフロントエンド装置30のために使用可能なハードウエア計算資源の量(例えばメモリの容量やCPUのコア数)に基づいて行う。「実行できる」と判定された場合、構成制御部39が、それら3つの解釈部36からなる解釈システム35を起動する。これが、図3に例示した、フロントエンド装置30の「第1構成」である。「実行できない」と判定された場合には、構成制御部39は、図9(詳細は後述)に示すように、単一の論理ページ解釈部36−pbからなる解釈システム35を起動する(「第2構成」)。第1構成の論理ページ解釈部36−paと、図9に示す論理ページ解釈部36−pbとでは、実行する処理手順が一部異なる(詳細は後述)。以下では、第1構成の論理ページ解釈部36−paを「タイプ1」、第2構成の論理ページ解釈部36−pbを「タイプ2」と呼んで区別する。 図3の説明を続ける。バックエンド装置40の描画部44は、中間データバッファ42内にある各ページの中間データを例えばページ順に読み出し、読み出したページの中間データのコマンドに従って描画データを生成していく。ここで、読み出したページの中間データ内に、キャッシュIDを参照する旨のコマンドが含まれる場合は、フォームキャッシュ48からそのキャッシュIDに対応する中間データ(すなわちフォームの中間データ)を読み出し、読み出した中間データを処理することで、フォームの描画データを生成し、ページの描画データに対して合成する。
以上では、説明を簡潔にするために、フォームならばキャッシュするとして説明したが、実際の装置では、すべてのフォームをキャッシュするとは限らない。キャッシュを用いるためには、キャッシュへの登録や必要なキャッシュデータの有無の問合せ等の処理のオーバーヘッドが生じる。非常に小さい又は構造が簡単なフォームの場合、中間データの生成処理に要する時間が非常に短くて済むので、そのような処理オーバーヘッドを考慮すると、キャッシュを利用しない方が処理が早いことも多い。そこで、第1構成では、フォームのうちキャッシュした方が処理効率がよいもののみを、キャッシュすることとする。このために、キャッシュした方が処理効率がよい(すなわちキャッシュ対象とする)フォームと、そうでないフォームとを判定するためのルールを定めている。この判定ルールの例を以下に示す。
(ルール1)当該フォームのバウンディングボックス(物理ページ上で当該フォームを囲むことができる最小の長方形)の画素数が、予め決められた数(「画素数閾値」と呼ぶ)より多い場合は、当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
(ルール2)当該フォームに含まれるオブジェクトの数が予め決められた数(「オブジェクト数閾値」と呼ぶ)より多い場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
(ルール3)当該フォームに予め決められた大きさ(「イメージサイズ閾値」と呼ぶ)より大きいイメージ(ビットマップ)がある場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
(ルール1)当該フォームのバウンディングボックス(物理ページ上で当該フォームを囲むことができる最小の長方形)の画素数が、予め決められた数(「画素数閾値」と呼ぶ)より多い場合は、当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
(ルール2)当該フォームに含まれるオブジェクトの数が予め決められた数(「オブジェクト数閾値」と呼ぶ)より多い場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
(ルール3)当該フォームに予め決められた大きさ(「イメージサイズ閾値」と呼ぶ)より大きいイメージ(ビットマップ)がある場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
例えば、以上に例示したルール1〜3のいずれか1つを用いて判定を行ってもよいし、2以上を組み合わせて判定を行ってもよい。2以上を組み合わせる場合は、少なくとも1つのルールで「キャッシュ対象」と判定されれば、他のルールによる判定結果によらず、当該フォームはキャッシュ対象とする。
なお、上述の画素数閾値、オブジェクト数閾値およびイメージサイズ閾値は、フロントエンド装置30やバックエンド装置40のシステム構成や性能に応じた値であり、実験やシミュレーション等で定めておけばよい。
第1構成では、論理ページ解釈部36−pa1、36−pa2およびフォーム解釈部36−fが、統一された共通の判定ルールを用いて、フォームをキャッシュ対象とするかどうかを判定する。したがって、例えば論理ページ解釈部36−pa1がキャッシュ対象と判定したフォームは、論理ページ解釈部36−pa2でもフォーム解釈部36−fでもキャッシュ対象と判定される。
また、第1構成では、論理ページ解釈部36−pa1、36−pa2およびフォーム解釈部36−fは、統一された共通のID付与ルールを用いて、フォームのキャッシュデータ(中間データ)に対してキャッシュIDを付与する。この共通のID付与ルールでは、PDLデータ中でフォームに対して付与されているフォームIDに加え、そのフォームの最終的な描画結果の画像の状態を規定する各種のパラメータを考慮して、そのフォームのキャッシュデータに付与するキャッシュIDを決定する。同じフォームIDのフォームを用いる場合でも、そのフォームを描画・印刷する際のパラメータが異なれば、最終的に印刷物上に現れるフォームの画像も異なってくるので、パラメータが異なれば別のキャッシュデータとして取り扱うのである。キャッシュIDを規定する描画等のパラメータとしては、座標変換行列(座標の回転角や拡大縮小率を表す行列)、描画属性情報(例えば線幅、ラインキャップ、ラインジョイン、マイターリミット、線の形状、ストローク調整、描画方式、論理演算モード、パターン情報)、クリップ情報、カラー情報等がある。1つの例では、フォームIDとそれらパラメータとを結合したものをバイナリデータとして表現し、MD5ハッシュ関数(rfc1321で定義)等のハッシュ関数を用いて、そのバイナリデータからキャッシュIDを生成する。なお、キャッシュIDの材料として用いたフォームIDおよび上述パラメータ群を、「キーデータ(Key Data)」と呼ぶ。
なお、厳密には、ハッシュ関数には衝突があるため、上述の方式では異なるキャッシュデータのキャッシュID(ハッシュ値)が同じ値となる可能性がある。ハッシュの衝突を避けるために、キーデータそのものをキャッシュIDとして用いてもよい。
ただし、キーデータはかなり長いデータとなるため、利用可能なキャッシュデータが有るか無いかを調べる際、キーデータ同士の照合にある程度の時間を要する。キャッシュ管理部38内のすべてのキャッシュエントリに対してキーデータの照合を行うにはかなりの時間がかかってしまう。そこで、以下の例では、キーデータと、そのキーデータのハッシュ値と、の組合せをキャッシュIDとして用いる。この例では、利用可能なキャッシュデータの有無を調べる際、まずハッシュ値で絞り込みを行うことで、キーデータの照合を行うキャッシュエントリの数を少なくする。
以上のように、第1構成では、論理ページ解釈部36−pa1、36−pa2およびフォーム解釈部36−fは、共通のID付与ルールを用いる。したがって、例えば論理ページ解釈部36−pa1があるフォームに対してあるキャッシュIDを生成した場合(ここで論理ページ解釈部36−pa1はそのフォームの中間データは生成しない)、フォーム解釈部36−fは同じキャッシュIDを生成し、生成したそのフォームの中間データをそのキャッシュIDに対応づけてフォームキャッシュ48に登録する。
次に、図4〜図6を参照して、第1構成における論理ページ解釈部36−pa(タイプ1)およびフォーム解釈部36−fが実行する処理の手順を例示する。
図4は、論理ページ解釈部36−pa(タイプ1)およびフォーム解釈部36−fの共通の処理手順である。この例は、ページ非独立のPDLで記述されたPDLデータを処理する場合の例である。なお、以下では、特に区別する必要がない場合には、タイプ1の論理ページ解釈部36−paを含む各タイプの論理ページ解釈部、およびフォーム解釈部36−fを、解釈部36と総称する。この第1構成では、各解釈部36は、互いに独立して、非同期的に動作する。
図4の手順では、解釈部36は、印刷ジョブ受信部32から、印刷ジョブのPDLデータ全体を取得する(S10)。次に、そのページ配信部34から、処理対象とするページの割り当てを受ける(S12)。ここで、ページ配信部34は、論理ページ解釈部36−pa1および36−pa2にはPDLデータの全ページを分担させるが、フォーム解釈部36−fには全ページを担当させる。解釈部36は、割り当てられたページのPDLデータを解釈する(S14)。そして、そのページの解釈が終了すると、解釈部36は、印刷ジョブ全体の解釈が完了したか否かを判定し(S16)、未完了と判定した場合は、S12に戻り、ページ配信部34にページの解釈の終了を通知し、次の担当ページの割り当てを受ける。以上の処理を、印刷ジョブ全体の解釈が完了するまで繰り返す。
ページの解釈処理(S14)では、解釈部36は、当該ページの先頭から順に、PDLデータのコマンドを1つずつ抽出し(S20)、抽出したコマンドを解釈して中間データのオブジェクトを生成する(S22)。これらS20およびS22の処理を、当該ページの最後のコマンドの処理が終了するまで繰り返す(S24)。
なお、ページ非独立のPDLデータを処理する場合には、各論理ページ解釈部36−paは、自分が担当するページか否かによらず、すべてのページのコマンドを解釈し、自分の内部状態をその解釈の結果に応じて遷移させる。そして、担当するページについては、解釈のみならず、中間データの生成も行う。これにより、先頭ページからの解釈の結果を反映した正しい中間データが生成されることになる。同様に、フォーム解釈部36−fは、フォーム以外のオブジェクトの描画コマンドも含むPDLデータのすべてのコマンドを解釈し、フォームの描画コマンドについては中間データの生成も行う。
中間データの生成処理(S22)の内容は、論理ページ解釈部36−paとフォーム解釈部36−fとで異なる。
図5は、タイプ1の論理ページ解釈部36−paによる中間データの生成処理(S22)の処理手順の一例を示す。この例では、論理ページ解釈部36−paは、処理対象のコマンド(S20で抽出したもの)がフォームオブジェクトの生成を指示するコマンドか否かを判定する(S30)。例えば、PostScript(登録商標)の場合、処理対象のコマンドのコマンド名が"form"であれば、そのコマンドは、フォームオブジェクトの生成を指示するコマンドである。フォームの生成を指示するコマンドには、フォームIDがパラメータとして付随する。
S30の判定結果が否定(N:フォーム生成以外のコマンド)である場合は、論理ページ解釈部36−paは、そのコマンドを解釈して中間データを生成し(S32)、その中間データを当該ページの中間データとして出力する(S34)。
S30の判定結果が肯定(Y:フォーム生成のコマンド)である場合、論理ページ解釈部36−paは、次にそのコマンドに対応するフォームの中間データがキャッシュ対象であるかどうかを、前述した統一の判定ルールに従って判定する(S36)。
S36で、そのコマンドがキャッシュ対象でないと判定した場合(S36の判定結果がN)、論理ページ解釈部36−paは、そのコマンドに付随するフォームIDを抽出し、そのフォームIDに対応するフォームのPDLデータを取得してメモリ上に展開する(S38)。例えば、PDLデータ中の2回目以降のフォームの使用箇所では、フォームIDが示されるのみで、フォームの実体を表すPDLデータが記述されない場合もある。このような場合でも、論理ページ解釈部36−paは印刷ジョブのPDLデータ中でそのフォームがはじめて使用された場所から読み取った当該フォームのPDLデータをフォームIDと対応づけて管理しているので、2回目以降の使用箇所では、その管理しているPDLデータを読み出して利用するのである。フォームのPDLデータの展開の後、論理ページ解釈部36−paは、展開したPDLデータを解釈し、中間データを生成し(S32)、その中間データを出力する(S34)。
S36で、判定対象のコマンドがキャッシュ対象であると判定した場合(S36の判定結果がY)、論理ページ解釈部36−paは、前述した統一的なID付与ルールに従い、そのコマンドに対応するキャッシュIDを生成する(S40)。S40では、そのコマンドに付随するフォームID等のパラメータ群、および論理ページ解釈部36−pa自身の内部状態の情報から、キーデータを構成する各項目の値を抽出し、それら抽出した値を結合してキーデータを生成し、そのキーデータのハッシュ値を計算する。そして、そのハッシュ値とキーデータのペアを、キャッシュIDとする。
そして、論理ページ解釈部36−paは、そのキャッシュIDで示されるキャッシュデータを参照するよう指示する中間データコマンドを生成し、生成した中間データコマンドを出力する(S42)。このように、論理ページ解釈部36−paは、キャッシュされるフォームについては、そのフォームの実体(画像)を表す中間データを生成する代わりに、キャッシュデータを参照するコマンドを生成する。
図6は、フォーム解釈部36−fによる中間データの生成処理(S22)の処理手順の一例を示す。この例では、フォーム解釈部36−fは、処理対象のコマンド(S20で抽出したもの)がフォームオブジェクトの生成を指示するコマンドか否かを、S30と同様の方法で、判定する(S50)。S50の判定結果が否定(N)である場合、フォーム解釈部36−fは、そのコマンドについては何も処理を行わずに、図6の処理を終了する。
S50の判定結果が肯定(Y)である場合、フォーム解釈部36−fは、次にそのコマンドに対応するフォームの中間データがキャッシュ対象であるかどうかを、S36と同様、前述した統一の判定ルールに従って判定する(S52)。
S52で、そのコマンドがキャッシュ対象でないと判定した場合(S52の判定結果がN)、フォーム解釈部36−fは、そのコマンドについては何も処理を行わずに、図6の処理を終了する。
S52で、判定対象のコマンドがキャッシュ対象であると判定した場合(S52の判定結果がY)、フォーム解釈部36−fは、S40と同様の方法で、前述した統一的なID付与ルールに従い、そのコマンドに対応するキャッシュIDを生成する(S54)。そして、そのコマンドを解釈してキャッシュデータ(フォームの中間データ)を生成し(S56)、生成したキャッシュデータをそのキャッシュIDと対応づけて出力する(S58)。出力されたキャッシュIDおよびキャッシュデータのペアは、フォームキャッシュ48に登録される。
なお、S56およびS58では、同じキャッシュデータの重複した生成および登録を避けるようにしてもよい。このためには、フォーム解釈部36−fは、キャッシュデータを生成する前に、S54で生成したキャッシュIDに対応するキャッシュデータがフォームキャッシュ48内に存在するどうかをキャッシュ管理部38に問い合わせ、存在しないとの回答を得た場合にのみキャッシュデータを生成するようにすればよい。キャッシュデータを生成してフォームキャッシュ48に登録した場合は、フォーム解釈部36−fは、そのキャッシュデータのキャッシュIDをキャッシュ管理部38に登録することで、そのキャッシュデータが登録済みであることを記録する。
次に、図7および図8を参照して、バックエンド装置40の描画部44の処理手順の例を説明する。
図7に示すように、この手順では、描画部44は、まず処理対象の印刷ジョブの指定を受ける(S100)。次に、その印刷ジョブの例えば先頭ページから順に1ページずつ、ページの中間データを中間データバッファ42から取得し(S102)、取得したページの中間データを解釈する(S104)。これらS102およびS104の処理を、印刷ジョブの末尾まで、1ページずつ、繰り返し実行する(S106)。
ページの中間データの解釈処理(S104)では、当該ページの先頭から順に、中間データのコマンドを1つずつ抽出し(S110)、抽出したコマンドを解釈して、そのコマンドが示すラスター画像をメモリ上に描画する(S112)。これらS110およびS112の処理を、当該ページの最後の中間データコマンドの処理が終了するまで繰り返す(S114)。
ページの中間データの解釈処理(S112)では、描画部44は、図8に示すように、ページの中間データを先頭から順にコマンドを読み出し、読み出したコマンドがキャッシュデータの参照を指示するコマンド(キャッシュ参照コマンドと呼ぶ)であるかどうかを判定する(S120)。
S120の判定結果が肯定(Y)の場合、描画部44は、そのキャッシュ参照コマンドからキャッシュIDを抽出し(S122)、そのキャッシュIDに対応するキャッシュデータ(中間データ)をフォームキャッシュ48から取り出し(S124)、取り出したキャッシュデータを解釈してラスター画像を描画する(すなわち「ラスタライズ」する)(S126)。
S120の判定結果が否定(N)の場合、描画部44は、そのコマンドを解釈してラスタライズする(S126)。
以上、第1構成のフロントエンド装置30を含む印刷コントローラ20の一例を説明した。以上に説明したように、第1構成では、論理ページ解釈部36−paとフォーム解釈部36−fが、統一したID付与ルールを用い、同じ材料(すなわちフォームIDおよびフォームの印刷結果の画像を規定するその他のパラメータ)からキャッシュIDを付与する。したがって、それら解釈部36は、互いに通信することなく、同じキャッシュデータには同じキャッシュIDを付すことができる。したがって、論理ページ解釈部36−pa1、36−pa2が生成したページの中間データに含まれるキャッシュ参照コマンドのキャッシュIDが指し示すキャッシュデータは、フォーム解釈部36−fにより遅かれ早かれ必ず生成され、同じキャッシュIDに対応づけてフォームキャッシュ48に登録される。仮に、描画部44がページ中のキャッシュ参照コマンドを処理しようとした時点で、そのコマンドが指し示すキャッシュデータがフォームキャッシュ48にない場合でも、しばらく待機すれば、描画部44はそのキャッシュデータをフォームキャッシュ48から取得可能となる。印刷ジョブの最初の方を処理している間は、フォーム解釈部36−fによるフォームのキャッシュデータ生成の進捗が十分でないため、このような描画部44の待機(キャッシュデータの完成待ち)が生じる確率はある程度高い。論理ページの処理は複数の論理ページ解釈部36−paで並列処理しているのに対し、フォームの処理は1つのフォーム解釈部36−fがページ順に行っているため、論理ページの処理の進捗に追いつかないことがあるからである。しかし、フォーム解釈部36−fは、キーデータが同じフォームが何度現れても一度しかキャッシュデータを生成しないので、ある程度処理が進みフォームキャッシュ48に相当数のキャッシュデータが蓄積された時点では、一般的に新たにキャッシュデータを生成する必要が生じる頻度は少なくなる。このため、ページ処理速度が向上していき、並列動作する論理ページ解釈部36−paの処理の進捗を追い抜くこととなる。こうなると、上述した描画部44によるキャッシュデータ完成待ちは起こらない。
以上に説明したように、第1構成では、論理ページ解釈部36−pa1、36−pa2、およびフォーム解釈部36−fがプロセス間通信を行わずに互いに独立して非同期的に動作しても、フォームの中間データをキャッシュし、再利用することが可能となる。この実施形態は、プロセス間通信のためのオーバーヘッドがない分だけ、プロセス間通信を行うシステムよりも処理が高速である。
以上に説明した第1構成のフロントエンド装置30は、フォーム専用の解釈部(フォーム解釈部36−f)を用意することで、各論理ページ解釈部36−paはフォームの解釈を実質的に行う必要がなくなるため、高速な動作が期待できる。特に、並列動作する論理ページ解釈部36−paの数が多くなると、フォーム専用のフォーム解釈部36−fを設けた意義は高まる。
しかし、逆の観点からみれば、このように複数の解釈部36が並列的に動作する第1構成は、フロントエンド装置30のベースとなるコンピュータが豊富なハードウエア計算資源(メモリ容量やプロセッサ数等)を持つことを要求する。ハードウエア計算資源が少ないコンピュータ上にフロントエンド装置30をインストールしたとしても、並列化しない構成よりもかえって処理速度が低下したり、そもそもそのような並列処理が実行できなかったりすることが起こり得る。例えば、各解釈部36を1つのCPU上で時分割で実行する場合、実行する解釈部36を切り換える際のオーバーヘッドで処理速度が低下する。また、個々の解釈部36は1ページ分のデータを処理するのに十分なメモリ空間を必要とするが、メモリ容量の小さいコンピュータでは、それら複数の解釈部36に要するメモリ空間を確保できない。このようなコンピュータには、第1構成のフロントエンド装置30は実装できない。
コンピュータをフロントエンド装置30として機能させるプログラムを作成する場合、インストール先のコンピュータの性能(ハードウエア計算資源)に柔軟に対応できることが望ましい。そこで、本実施形態では、フロントエンド装置30のプログラムに、上述の第1構成に加え、インストール先のコンピュータが第1構成による並列処理のメリットが得られるだけのハードウエア計算資源を持っていない場合のための第2構成を実行するための記述を含める。
この第2構成を、図9を参照して説明する。図9の第2構成では、図3の第1構成と異なり、解釈システム35は、ただ1つの論理ページ解釈部36−pb(タイプ2)のみを備える。このタイプ2の論理ページ解釈部36−pbは、論理ページの中間データを作成する処理と、それら論理ページに含まれるキャッシュ対象のフォームの中間データをフォームキャッシュ48に登録する処理との両方を実行する。図9の解釈システム35以外の構成は、図3と同様である。
論理ページ解釈部36−pb(タイプ2)が実行する解釈処理の手順の一例を図10に示す。図10の手順のうち、図5の論理ページ解釈部36−pa(タイプ1)の手順のステップと処理内容が同様のステップには同一符号を付し、詳細な説明は省略する。
図10の手順では、キャッシュ対象のフォームを処理する際、論理ページ解釈部36−pbは、S36で、判定対象のフォームがキャッシュ対象であると判定した場合(S36の判定結果がY)、論理ページ解釈部36−pbは、そのコマンドに対応するキャッシュIDを生成する(S40)。ここでのキャッシュIDの生成は、例えば、第1構成の場合と同じ統一的なID付与ルールに従って行えばよい。次に、論理ページ解釈部36−pbは、S40で生成したキャッシュIDに対応するキャッシュデータがフォームキャッシュ48内に存在するかどうかをキャッシュ管理部38に問い合わせる(S44)。この問合せに対するキャッシュ管理部38からの回答が、「存在しない」であった場合(S44の判定結果がN)、論理ページ解釈部36−pbは、当該フォームのPDLデータを展開して解釈することで、そのフォームの中間データを生成し(S46)、生成した中間データをS40で生成したキャッシュIDと対応づけてフォームキャッシュ48に登録する(S47)。そして、解釈部36は、S46で生成したフォームの中間データを論理ページの解釈結果の一部として中間データバッファ42に出力する(S48)。S44で、キャッシュ管理部38からの回答が「存在する」であった場合には、論理ページ解釈部36−pbは、そのキャッシュIDで示されるキャッシュデータを参照するよう指示する中間データコマンドを生成し、生成した中間データコマンドを、論理ページの解釈結果の一部として中間データバッファ42へ出力する(S42)。
なお、S47の後、S48の代わりにS42を実行してもよい。
キャッシュ管理部38は、例えば、フォームキャッシュ48の空き容量が、論理ページ解釈部36−pbが新たに登録しようとするフォームの中間データのサイズより小さい場合、フォームキャッシュ48中のあまり利用されていないキャッシュデータを削除し、空き容量を広げた上で、そのフォームの中間データを登録する。
図9の構成における描画部44の動作は、第1構成(図3)の描画部44の動作と同じである。
図9に示す第2構成では、解釈部36を1つ(すなわち論理ページ解釈部36−pbだけ)しか用いない。したがって、この第2構成は、ベースとなるコンピュータの性能が並列処理に適さない場合にも、そのコンピュータ上で適切に動作する。
以上に説明したように、本実施形態の印刷コントローラ20では、インストール先のコンピュータのハードウエア計算資源に応じて、起動数判定部37及び構成制御部39が、フロントエンド装置30を第1構成または第2構成の間で切り換える。この切換制御の手順の例を、図11に示す。
図11の手順は、典型的には、コンピュータ上でフロントエンド装置30を立ち上げる際のシステム構成処理の際に実行される。この手順では、まず起動数判定部37が、そのコンピュータのOS(オペレーティングシステム)等から、解釈システム35に割り当て可能なハードウエア計算資源(この例では、メモリの容量とCPUのコア数)の情報を取得する(S1002、S1004)。そのコンピュータ上で実行されるフロントエンド装置30以外の機能のためのプログラムが実行される場合、S1002およびS1004で取得されるメモリ容量およびコア数は、そのコンピュータが有するメモリの容量及びCPUコア数よりも小さい値となる。起動数判定部37は、S1002およびS1004で取得した情報に基づき、そのコンピュータ上で起動可能な解釈部36の数(以下「起動数」と呼ぶ)を算出する(S36)。
S36の処理では、起動数判定部37は、まずS1002で求めたメモリ容量を、1つの解釈部36の処理のために必要なメモリ容量で除した値(端数は切り捨て)を、暫定的な「起動数」とする(S1008)。1つの解釈部36の処理のために必要なメモリ容量は、あらかじめ求められているものとする。仮に、この暫定的な起動数を超える数の解釈部36をそのコンピュータ上で実行しようとしても、個々の解釈部36は自分の処理に必要なメモリ容量より少ないメモリ容量しか持たないので、正常に動作しなくなる可能性がある。
次に起動数判定部37は、S1008で求めた暫定的な起動数が、S1004で取得したCPUのコア数より大きいか否かを判定する(S1010)。暫定的な起動数がコア数より大きければ、そのコア数を正式の起動数にする(S1012)。1つのCPUコアで複数の解釈部36を実行する場合、実行する解釈部36のスイッチングによる時間ロスが問題となるので、コア数を超える解釈部36は起動しないようにするのである。一方、S1010で暫定的な起動数がコア数以下であると判定した場合は、S1012をスキップし、その暫定的な起動数を正式の起動数に決定する。このようにして決定された起動数は、構成制御部39に伝達される。
構成制御部39は、伝達された起動数が1であるか否かを判定し(S1014)、判定の結果起動数が2以上である場合には、図3の第1構成を採用し、解釈システム35として、1個のフォーム解釈部36−fと、「起動数−1」個の論理ページ解釈部36−paを起動する(S1016)。この場合、フォーム解釈部36−fと個々の論理ページ解釈部36−paは、それぞれ別々のコアで実行されるようにする。一方、S1014で、起動数が1である場合には図9の第2構成を採用し、解釈システム35として単一の論理ページ解釈部36−pbを起動する(S1018)。
このようにフロントエンド装置30の立ち上げ時のシステム構成処理の際に図11の手順を実行するケースでは、起動数判定部37及び構成制御部39は、このシステム構成処理の間だけ、コンピュータ上で実行されていればよく、システム構成処理の終了後は削除してもよい。
なお、フロントエンド装置30の立ち上げ後、運転中にも、フロントエンド装置30に割り当てられるハードウエア計算資源の量が変化することも考えられる(例えば、より優先度の高い他のプログラムの実行により、フロントエンド装置30に割当可能なメモリ容量が減る場合)。このような場合にも対処する必要がある場合には、起動判定部37及び構成制御部39をコンピュータ上に常駐させ、定期的に図11の処理を実行するようにしてもよい(後述する変形例でも同様)。
<変形例1>
上記実施形態では、フロントエンド装置30の実装先のコンピュータのハードウエア計算資源で起動可能な解釈部36の数が1つの場合は第2構成(図9)を、2以上の場合は第1構成(図3)を採用した。
上記実施形態では、フロントエンド装置30の実装先のコンピュータのハードウエア計算資源で起動可能な解釈部36の数が1つの場合は第2構成(図9)を、2以上の場合は第1構成(図3)を採用した。
しかしながら、第1構成は、並列実行可能な論理ページ解釈部36−paの数が少ないと、専用のフォーム解釈部36−fを設けた意義が薄くなってしまう。極端な例として、起動数が2でフォーム解釈部36−fと論理ページ解釈部36−paを1つずつ起動した構成では、フォームのみを処理する前者の処理が後者よりも大幅に早く進むことになり、解釈システム35全体の処理速度が、論理ページ解釈部36−paの速度で律速される。これならば、2つの解釈部36で論理ページの解釈を並列実行した方が、高い処理速度が得られる。このように、フォーム専用のフォーム解釈部36−fを設ける第1構成が有効に機能するには、論理ページ解釈部36−paをある数以上並列実行する必要がある。第1構成が有効に機能するための論理ページ解釈部36−paの並列数の下限Nは、実験等で求められる。
そこで、この変形例1では、コンピュータのハードウエア計算資源から求めた起動数(図11のS1006)が2以上、第1構成が有効に機能するための並列数の下限N以下の範囲にある場合、前述の第1及び第2の構成のいずれとも異なる第3構成を用いる。
図12に、第3構成のフロントエンド装置30を含んだ印刷コントローラ20の構成を示す。図12において、図3に示した要素と同様の要素には同一符号を付した。
図12に例示する第3構成では、解釈システム35は、タイプ3の論理ページ解釈部36−pcを複数(図示例では、論理ページ解釈部36−pc1及び36−pc2の2つ)有する。解釈システム35は、フォーム解釈部36−fは含んでいない。
タイプ3の論理ページ解釈部36−pcは、フォームキャッシュ48の利用を想定しない解釈部であり、割り当てられた論理ページの印刷データを解釈し、その解釈の結果の中間データを出力する。すなわち、論理ページ解釈部36−pcは、タイプ1の論理ページ解釈部36−pa(図3)等のようにキャッシュ対象のフォームの描画コマンドをキャッシュ参照コマンドに置き換えることはしない。
図13に、このタイプ3の論理ページ解釈部36−pcが実行するコマンドごとの解釈処理の手順の例を示す(印刷ジョブ全体の処理手順は、図4の手順でよい)。この手順では、論理ページ解釈部36−pcは、割り当てられたページの各コマンドを、フォーム以外のオブジェクトの描画コマンドかフォームの描画コマンドであるかを問わずすべてを解釈し、それらすべてのコマンドの解釈の結果を表す中間データを生成する(S32)。そして、その中間データを当該ページの中間データとして出力する(S34)。したがって、タイプ3の論理ページ解釈部36−pcが生成するページの中間データには、そのページに含まれるフォームの画像を表す中間データも含まれることになる。
以上の説明から判るように、この第3構成では、フォームキャッシュ48は使用されない。描画部44の処理手順は、図7および図8に例示した手順と同様でよいが、その手順からキャッシュ参照のためのステップ群を省いた手順を採用してもよい。
このように、第3構成では、フォーム専用のフォーム解釈部36−fを設けないので、利用可能なハードウエア計算資源のすべてが論理ページの並列処理に振り向けられる。
この第3構成では、フォームの中間データをキャッシュしない。これは、その方が、キャッシュを行う場合よりも高い処理速度が得られる可能性が高いからである。仮に、各論理ページ解釈部36−pcがフォームキャッシュ48の利用を想定した動作を行うとすると、必要とするキャッシュデータがフォームキャッシュ48にあるかどうかを確認したり、既に登録済みのキャッシュデータを重複して処理することがないよう確認したりする必要が出てくる。これら確認のために、各論理ページ解釈部36−pcは、キャッシュ管理部38(図3等参照:図12の構成には存在しない)に問合せを行う必要があり、この問合せのための通信のオーバーヘッドにより、印刷ジョブの処理に時間がかかってしまう。このような通信のオーバーヘッドを考慮すると、並列動作する論理ページ解釈部36−pcの数がある数以下の場合、キャッシュを用いない方が処理速度が速くなる。この場合、前述した論理ページ解釈部36−paの並列数の下限Nは、このようなことも考慮して定める。
なお、これは一例に過ぎず、第3構成で用いる複数の論理ページ解釈部36−pcとして、キャッシュ利用を想定したものを用いてもよい。この場合、論理ページ解釈部36−pcは、タイプ2の論理ページ解釈部36−pbと同様の図10の処理手順を実行する。ただし、この場合、あるCPUコアで実行される論理ページ解釈部36−pcが行う図10のS44の問合せは、別のCPUコアで実行される別の論理ページ解釈部36−pcに付随するキャッシュ管理部38(図3参照)へのプロセス間通信となる。
次に、図14を参照して、この変形例1での起動数判定部37および構成制御部39の処理手順の例を説明する。図14において、図11に示したステップと同様のステップには、同一符号を付した。
図14の手順のうちS1002〜S1014およびS1018は、図11の手順と同じである。S1014で起動数が1でないと判定された場合、図14の手順では、構成制御部39は、次にその起動数が、上述した第1構成が有効に機能するための論理ページ解釈部36−paの並列数の下限Nより小さいかどうかを判定する(S1020)。このNの値は、実験等で求められ、あらかじめ設定されている。S1020で、起動数がNより小さいと判定した場合、構成制御部39は、解釈システム35として、タイプ3の論理ページ解釈部36−p3をその起動数と同じ数だけ起動する(S1022:図12の第3構成)。S1020で、起動数がN以上と判定した場合、構成制御部39は、1個のフォーム解釈部36−fと、「起動数−1」個の論理ページ解釈部36−paを起動する(S1016:図3の第1構成)。
<変形例2>
次に、変形例2を説明する。
上記実施形態の第1構成(図3)のフロントエンド装置30では、論理ページ解釈部36−pa1、36−pa2、およびフォーム解釈部36−fはキャッシュのためのプロセス間通信を行わなかった。これに対し、この変形例2のフロントエンド装置30は、上記実施形態のようにプロセス間通信を行わないモード(「非プロセス間通信モード」と呼ぶ)と、論理ページ解釈部36−pa1、36−pa2、およびフォーム解釈部36−fがキャッシュのためのプロセス間通信を行うモード(「プロセス間通信モード」と呼ぶ)と、いう2つの動作モードを有する。そして、状況に応じて動作モードを切り換えることで、より的確なキャッシュ制御を実現する。以下に説明する第1構成(図3)の変形例は、上記実施形態のように第2構成(図9)と組み合わせて用いてもよいし、上記変形例1のように第2構成(図9)および第3構成(図12)と組み合わせて用いてもよい。
次に、変形例2を説明する。
上記実施形態の第1構成(図3)のフロントエンド装置30では、論理ページ解釈部36−pa1、36−pa2、およびフォーム解釈部36−fはキャッシュのためのプロセス間通信を行わなかった。これに対し、この変形例2のフロントエンド装置30は、上記実施形態のようにプロセス間通信を行わないモード(「非プロセス間通信モード」と呼ぶ)と、論理ページ解釈部36−pa1、36−pa2、およびフォーム解釈部36−fがキャッシュのためのプロセス間通信を行うモード(「プロセス間通信モード」と呼ぶ)と、いう2つの動作モードを有する。そして、状況に応じて動作モードを切り換えることで、より的確なキャッシュ制御を実現する。以下に説明する第1構成(図3)の変形例は、上記実施形態のように第2構成(図9)と組み合わせて用いてもよいし、上記変形例1のように第2構成(図9)および第3構成(図12)と組み合わせて用いてもよい。
図15に、この変形例2における第1構成の印刷コントローラ20の構成例を示す。図15において、図3に例示した要素と同様の要素には同じ符号を付す。
図15の例は、論理ページ解釈部36−pa1、36−pa2がプロセス間通信モードでキャッシュ管理部38と通信する点(およびその通信に応じて処理手順を切り換える点)が、図3の構成と異なる。
図15の変形例2におけるキャッシュ管理部38の内部構成の例を図16に示す。このキャッシュ管理部38は、フォーム解釈部36−fの一部であってもよいし、フォーム解釈部36−fとは別のプロセスであってもよい。以下では、一例として、キャッシュ管理部38は、フォーム解釈部36−fの一部である場合を例にとって説明する。
この例では、キャッシュ管理部38は、通信制御部382、キャッシュ制御部384およびキャッシュテーブル386を有する。通信制御部382は、複数の解釈部36との通信を制御し、それら解釈部36からのキャッシュ問合せ等の要求を受信し、それら要求を調停してキャッシュ制御部384に要求を渡す。キャッシュ制御部384は、通信制御部382を介して受け取った要求に応じてキャッシュテーブル386の操作を行う。キャッシュテーブル386は、フォームキャッシュ48内に登録したキャッシュデータの管理情報を保持するテーブルである。
キャッシュテーブル386には、個々のキャッシュデータごとに、図17に示すように、キャッシュID(ここでは前述したキーデータのハッシュ値)、キーデータ、フォームキャッシュ48内でのキャッシュデータの実体の格納場所の情報が登録されている。図示の例は、キャッシュデータをメモリ上に格納する場合の例であり、格納場所の情報は、その格納場所の先頭アドレスとサイズにより表されている。このようにキャッシュデータをメモリ上に格納する代わりに、ファイルとして保存し管理してもよく、この場合には、「格納場所」には、アドレスとサイズの組ではなく、キャッシュデータを格納するファイルのファイル名を記録すればよい。
この例では、フォームキャッシュ48からキャッシュデータの実体を削除した場合、キャッシュテーブル386内のそのキャッシュデータの格納場所の値が、あらかじめ定めた無効なアドレスおよびサイズ(例えばヌル値)に変更される。したがって、キャッシュID(ハッシュ値およびキーデータの組)に対応するエントリがキャッシュテーブル386に存在し、且つそのエントリにおける格納場所が無効でない値である場合に、そのキャッシュIDに対応する実体データ(キャッシュデータ)がフォームキャッシュ48内に存在することになる。
また、図17の例では、キャッシュテーブル386には、キャッシュエントリごとに、キャッシュ管理のための数値情報として、アクセスカウント値および参照カウント値が記録される。
アクセスカウント値は、当該エントリのキャッシュデータの累計の使用頻度を表す値であり、解釈部36から当該エントリのキャッシュIDへの参照がある度に1ずつ加算される。ここで、「参照がある」とは、そのキャッシュIDに対する参照を示すキャッシュ参照コマンドが中間データに組み込まれることを意味する。したがって、仮に、論理ページ解釈部36−paが、フォームの処理に当たってキャッシュIDに対する問合せを行った結果、キャッシュ参照コマンドではなく、そのフォームの実体を表す中間データを作成した場合には、そのキャッシュIDに対するアクセスカント値はインクリメントされない。アクセスカウント値が大きいキャッシュデータほど、印刷ジョブのこれまでの処理において多く使用され(すなわち数多く印刷され)ており、キャッシュ利用による処理速度向上への貢献が大きい。
参照カウント値は、中間データバッファ42中のページ群の中間データ(すなわち描画部44によりまだ処理されていない中間データ)の中に、当該エントリのキャッシュデータへの参照がいくつ含まれているかを表す値である。この値は、解釈部36から当該エントリのキャッシュIDへの参照がある度に1ずつ加算され、描画部44から当該エントリのキャッシュIDへ参照がある(すなわちそのエントリのキャッシュデータが描画される)度に1ずつ減算される。あるエントリの参照カウント値が1以上であれば、中間データバッファ42中に、そのエントリのキャッシュデータを参照しているページが存在するので、そのキャッシュデータをフォームキャッシュ48から削除することはできない。逆にあるエントリの参照カウント値が0であれば、そのエントリのキャッシュデータは現時点では削除して構わないことになる。
アクセスカウント値および参照カウント値は、プロセス間通信モードでは、論理ページ解釈部36−paからの参照に応じてインクリメント(1増加)され、フォーム解釈部36−fからの参照ではインクリメントされない。論理ページ解釈部36−pa群は印刷ジョブのページ群を分担して処理し、フォーム解釈部36−fはその印刷ジョブの全ページを処理するので、それら両者からの参照の両方をカウントすると、二重カウントになる。そこで、ここでは、論理ページ解釈部36−pa群からの参照のみをカウントする。フォーム解釈部36−fではなく、論理ページ解釈部36−pa群からの参照をカウントするのは、その方が実際に論理ページの印刷画像を生成する際のキャッシュデータの参照回数をより直接的に示しているからである。ただし、これは一例に過ぎず、プロセス間通信モードでも、フォーム解釈部36−fからの参照の方をカウントするようにしてもよい。
一方、非プロセス間通信モードでは、アクセスカウント値および参照カウント値は、フォーム解釈部36−fからの参照によりインクリメント(1増加)される。これは、非プロセス間通信モードでは、論理ページ解釈部36−paからの参照が行われないからである。
キャッシュ制御部384は、キャッシュテーブル386(ひいてはフォームキャッシュ48)に対してどのようなサイズのキャッシュデータを登録又は削除したかを監視しており、この監視処理に基づいて、フォームキャッシュ48の空き容量(すなわち「フォームキャッシュ48の容量」−「フォームキャッシュ48内のキャッシュデータの合計サイズ」)を更新し管理している。
解釈部36からキャッシュ制御部384への要求には、例えば、問合せ要求、領域確保要求、および登録要求がある。
問合せ要求は、キャッシュデータがフォームキャッシュ48内に存在するか否かを問い合わせるための要求であり、そのキャッシュデータを特定するキャッシュID(ハッシュ値およびキーデータの組)を引数とする。問合せ要求を受けた場合、キャッシュ制御部384は、その要求の引数のキャッシュIDに対応するエントリをキャッシュテーブル386から探し、そのようなエントリが見つかり且つそのエントリ内の格納場所の値が有効である場合は「該当するキャッシュデータがある」と判定し、そうでない場合は「該当するキャッシュデータがない」と判定する。そして、その判定の結果を通信制御部382経由で要求元の解釈部36に回答する。
領域確保要求は、解釈部36が生成したキャッシュデータを格納するための容量の確保を依頼するための要求であり、例えば、そのキャッシュデータを特定するキャッシュID(ハッシュ値およびキーデータの組)と、そのキャッシュデータのサイズを引数とする。領域確保要求を受けた場合、キャッシュ制御部384は、その引数のキャッシュデータのサイズがフォームキャッシュ48の空き容量以下か否かを判定する。そして、そのサイズが空き容量以下であれば、そのサイズ分の格納場所を確保し、その格納場所を表す情報(例えば先頭アドレスとサイズ)を含んだ「領域確保済み」の回答を返す。引数のキャッシュデータのサイズがフォームキャッシュ48の空き容量を超える場合は、フォームキャッシュ48内にあるキャッシュデータを削除することで、そのサイズに応じた領域が確保できるかどうか調べる。ここでは、参照カウント値が0であるエントリをキャッシュテーブル386から探し、見つけたエントリ群の実データを削除することで、新たに登録したいキャッシュデータのサイズを収容できるだけの空き容量が確保できるかどうかを判定すればよい。ここで、参照カウント値が0であるキャッシュデータをすべて削除する必要はなく、登録したいキャッシュデータのサイズを収容できるだけの空き容量を確保するための最小限のキャッシュデータのみを削除するようにしてもよい。この場合、アクセスカウント値が少ない(つまり利用頻度が少ない)キャッシュデータから優先的に削除対象に選んでいくようにすればよい。
このようにして、参照カウント値が0のキャッシュデータ群を削除することで領域確保要求を満たすための空き容量が得られた場合には、キャッシュ制御部384は、削除対象に選んだ各キャッシュデータをフォームキャッシュ48から削除し、その空き容量の中から、その要求に応じたサイズの格納場所を確保する。そして、キャッシュIDと確保した格納場所を表す情報(例えば先頭アドレスとサイズの組)とを含んだ、「領域確保成功」を示す応答を、要求元の解釈部36に返す。また、このときキャッシュ制御部384は、キャッシュテーブル386内のそのキャッシュのエントリの「格納場所」のデータを、無効を示すあらかじめ定めた値に書き換える。「領域確保成功」を示す応答を受けた解釈部36は、キャッシュ管理部38に対してキャッシュデータの登録要求を送る。
一方、参照カウント値が0のキャッシュデータをすべて削除しても領域確保要求を満たすための空き容量が得られない場合は、キャッシュ制御部384は、「領域確保失敗」を示す応答を、要求元の解釈部36に返す。「領域確保失敗」の応答を受けた解釈部36は、生成したキャッシュデータをキャッシュに登録せずに破棄する。
なお、この例では、フォームのキャッシュデータを作成するのはフォーム解釈部36−fであり、論理ページ解釈部36−paはキャッシュデータを作成しない(すなわち、フォームの中間データを作成することはあるものの、それをキャッシュすることはしない)ので、領域確保要求および登録要求を発するのはフォーム解釈部36−fのみである。
次に、各動作モードの特徴について説明する。
非プロセス間通信モードは、通信のためのオーバーヘッドがない分だけ処理が高速である。しかし、論理ページ解釈部36−paが生成したキャッシュ参照コマンドは、必ず解決される(すなわち、すぐでなくてもよいが、いずれ必ずそのキャッシュ参照コマンドが指し示すキャッシュデータがフォームキャッシュ48に存在することになる)必要があるため、フォームキャッシュ48からキャッシュデータを削除することができない。なぜなら、フォームキャッシュ48からキャッシュデータを削除してしまうと、その削除を知らずに論理ページ解釈部36−paが生成したキャッシュ参照コマンドが解決できなくなるケースが出てくるからである。
また、非プロセス間通信モードでは、印刷ジョブの最初の方では、前述のように必要なキャッシュデータが生成されるまで描画部44が待機するケースがあるため、並列処理に期待される程度の処理速度が得られないこともある。
一方、プロセス間通信モードは、通信のためのオーバーヘッドがあるため、処理速度は非プロセス間通信モードよりも遅い。しかし、フォームキャッシュ48からキャッシュデータを削除しても、キャッシュ利用のシステムが破綻しないようにすることができる。すなわち、論理ページ解釈部36−paは、参照したいフォームのキャッシュデータがフォームキャッシュ48に存在するかどうかをプロセス間通信により確認し、もし存在しなければそのフォームの中間データを自ら生成するという対処をとることが可能となる。
また、論理ページ解釈部36−paが印刷ジョブの最初の方を処理しているときにプロセス間通信を行って、参照したいフォームのキャッシュデータがフォームキャッシュ48に存在するかどうかを確認し、もし存在しなければそのフォームの中間データを自ら生成することも考えられる。このようにすれば、非プロセス間通信モードのように描画部44がフォーム解釈部36−fによるキャッシュデータの生成を待機する方式よりも、高速な処理が可能となる。
フロントエンド装置30の動作モードの切換には、(a)プロセス間通信モードから非プロセス間通信モードへの切換と、(b)非プロセス間通信モードからプロセス間通信モードへの切換という2つの方向がある。以下、それぞれの方向について説明する。
(a)プロセス間通信モードから非プロセス間通信モードへの切換
これは、プロセス間通信モードで動作している状態から、ある条件が満たされると非プロセス間通信モードに移行するという方向である。この方向の切換は、例えば、印刷ジョブの最初の方で行う。すなわち、この例では、印刷ジョブの開始時点では、フロントエンド装置30をプロセス間通信モードで動作させる。そして、フロントエンド装置30が印刷ジョブをあらかじめ定めた量まで処理し終わると、動作モードを非プロセス間通信モードに切り換える。切換の条件となる閾値すなわち前述の「あらかじめ定めた量」は、例えば論理ページの数として定めておく。例えば、印刷ジョブの先頭からnページ(nはあらかじめ定めた2以上の整数)まではプロセス間通信モード、nページまでの処理が完了した以降は非プロセス間通信モードと定める。
これは、プロセス間通信モードで動作している状態から、ある条件が満たされると非プロセス間通信モードに移行するという方向である。この方向の切換は、例えば、印刷ジョブの最初の方で行う。すなわち、この例では、印刷ジョブの開始時点では、フロントエンド装置30をプロセス間通信モードで動作させる。そして、フロントエンド装置30が印刷ジョブをあらかじめ定めた量まで処理し終わると、動作モードを非プロセス間通信モードに切り換える。切換の条件となる閾値すなわち前述の「あらかじめ定めた量」は、例えば論理ページの数として定めておく。例えば、印刷ジョブの先頭からnページ(nはあらかじめ定めた2以上の整数)まではプロセス間通信モード、nページまでの処理が完了した以降は非プロセス間通信モードと定める。
ここで、例えばn=「並列動作する論理ページ解釈部36−paの数」と定めてもよい。これは、印刷ジョブの最初の「並列動作する論理ページ解釈部36−paの数」のページを処理している期間では、キャッシュデータの蓄積が十分でなく、非プロセス間通信モードでは描画部44のキャッシュデータ生成待ちが生じやすいからである。
例えば、並列動作する論理ページ解釈部36−paの数が4である場合、印刷ジョブの最初では、4つの論理ページ解釈部36−paにより第1ページから第4ページまでの4ページが並列的に処理されることになる。仮にそれら4ページの処理負荷が同等であれば、それら4ページの中間データはほぼ同時に完成し、バックエンド装置40に送られることになる。一方、1台しかないフォーム解釈部36−fは、第1ページから順にフォームのキャッシュデータを生成していくので、第4ページに初めて現れるフォームがあったとすると、そのフォームのキャッシュデータが完成してバックエンド装置40に送られるのは、印刷ジョブの処理開始からある程度の時間が経ってからのこととなる。このため、描画部44が、それら並列処理される4ページのうちの最後の方のページを処理しようとする際に、それらページ(特に第4ページ)で用いるフォームのキャッシュデータの生成が追いつかない場合が出てくる。特に状況が厳しいのは、第4ページである。第5ページ以降は、並列処理の2巡目以降となるので時間的な余裕があり、また初出のフォームの出現頻度も減ってくる(第5ページ以降で使用されるフォームは、第1〜4ページで使われていたものと同じものも少なくないはずである)ので、第4ページほどの状況の厳しさはなくなる。
この例から分かるように、キャッシュデータの生成が論理ページの処理に追いつかない可能性が高い、印刷ジョブの先頭からn(=「並列動作する論理ページ解釈部36−paの数」)ページまでの期間は、非プロセス間通信モードを採用すると、印刷コントローラ20全体の処理速度が、フォーム解釈部36−fの処理速度で律速されることになる可能性が高い。これに対し、その期間でプロセス間通信モードを採用すれば、例えば第4ページを担当している論理ページ解釈部36−paは、キャッシュ対象のフォームのキャッシュデータが入手可能かどうかをプロセス間通信で求め、入手不可の場合はそのフォームの中間データを作成し、第4ページの処理結果に含めることになる。この場合、描画部44は、第4ページの中間データを処理する時点でフォーム解釈部36−fが第4ページ内のフォームのキャッシュデータを生成し終えていなくても、その第4ページの中間データからそのフォームのラスターデータを生成することができる。
(b)非プロセス間通信モードからプロセス間通信モードへの切換
これは、非プロセス間通信モードで動作している状態から、ある条件が満たされるとプロセス間通信モードに移行するという方向である。この方向の切換は、例えば、フォームキャッシュ48内のキャッシュデータの総量がフォームキャッシュ48の容量に近づいた(すなわちキャッシュが満杯に近づいた)段階で行う。
これは、非プロセス間通信モードで動作している状態から、ある条件が満たされるとプロセス間通信モードに移行するという方向である。この方向の切換は、例えば、フォームキャッシュ48内のキャッシュデータの総量がフォームキャッシュ48の容量に近づいた(すなわちキャッシュが満杯に近づいた)段階で行う。
キャッシュデータの総量がフォームキャッシュ48の容量に近づくと、新たなキャッシュデータを登録しようとする際にフォームキャッシュ48の空き容量が足りなくなる場合が出てくる。そのような場合、フォームキャッシュ48内の既存のキャッシュデータを削除することで空き容量を増やし、新たにフォームキャッシュ48が登録できるようにする必要がある。ところが、非プロセス間通信モード時にフォームキャッシュ48からいずれかのキャッシュデータを削除すると、前述したように、そのキャッシュデータが存在することを前提としているページの描画が不可能になってしまう。一方、プロセス間通信モードでは、各論理ページ解釈部36−paは、必要とするフォームのキャッシュデータが入手可能か否かを常に確認し、入手可能な場合にはキャッシュデータを参照する中間データコマンドを生成し、入手不可の場合はそのフォームの実体を表す中間データを生成する。このため、あてにしていたキャッシュデータがないため描画が不可能になる、という事態は生じない。
これとは逆に、フォームキャッシュ48内のキャッシュデータの総量がそれほど多くなく、新たに生成されるキャッシュデータを収容できる空き容量が十分に確保できている状況では、処理速度が速い非プロセス間通信モードを採用した方が、処理効率がよい。
このようなことから、キャッシュデータの総量がフォームキャッシュ48の容量に近づくまでは非プロセス間通信モードを採用し、近づくとプロセス間通信モードに切り換えるという制御が考えられる。
なお、「キャッシュデータの総量がフォームキャッシュ48の容量に近づいた」か否かは、例えば、フォームキャッシュ48内のキャッシュデータの総量を閾値と比較することにより判定すればよい。この例では、例えばフォームキャッシュ48に割り当てられたメモリ容量(=キャッシュデータの総量の上限値)をもとに(例えばそのメモリ容量の90%を閾値とするなどの方法で)閾値を定め、フォームキャッシュ48内のキャッシュデータの総量がその閾値に達すると、「キャッシュデータの総量がフォームキャッシュ48の容量に近づいた」と判定する。
次に、この変形例2における動作モードの切換制御の手順の例を説明する。以下では、この切換制御の手順がページ配信部34により実行されるものとして説明するが、これは一例に過ぎない。以下の手順は例えばキャッシュ管理部38が実行してもよいし、その手順を実行する専用の機能モジュールを設けてもよい。
図18に、動作モードの切換制御の手順の第1の例を示す。この例では、ページ配信部34は、印刷ジョブの処理を開始すると、フロントエンド装置30の動作モードをプロセス間通信モードに設定する(S200)。これにより、ジョブ開始時のキャッシュデータの生成待ちがなく、処理速度の低下が抑制される。このあと、ページ配信部34は、論理ページ解釈部36−pa群にページを割り当てるごとに、割り当て済みの最新のページ番号を記録し、記録した最新のページ番号があらかじめ定めた閾値以下であれば(S202の判定結果が否定(N))、プロセス間通信モードを維持する。一方、記録した最新のページ番号があらかじめ定めた閾値を超えると(S202の判定結果が肯定(Y))、動作モードを非プロセス間通信モードに切り換える(S204)。これにより、処理速度が向上する。フォームキャッシュ48の容量が、印刷ジョブで用いられるキャッシュ対象のフォームの中間データの総量よりも大きければ、図18の手順は問題なく機能する。
図19に、動作モードの切換制御の手順の第2の例を示す。この例では、ページ配信部34は、印刷ジョブの処理を開始すると、フロントエンド装置30の動作モードを非プロセス間通信モードに設定する(S210)。このあと、ページ配信部34は、フォームキャッシュ48の空き容量を監視(空き容量はキャッシュ管理部38に問合せることで分かる)し、その空き容量があらかじめ定めた閾値以上であれば(S212の判定結果が否定(N))、非プロセス間通信モードを維持する。一方、フォームキャッシュ48の空き容量が閾値を下回ると(S212の判定結果が肯定(Y))、動作モードをプロセス間通信モードに切り換える(S214)。これにより、フォームキャッシュ48内の既存のキャッシュデータを削除し、新たに必要になったキャッシュデータを登録することが可能となる。この手順は、ジョブ開始時の処理速度の点では上記第1の例に劣るが、フォームキャッシュ48の容量が印刷ジョブで用いられるキャッシュ対象のフォームの中間データの総量より少ない場合でも適切に機能する。
図20に、動作モードの切換制御の手順の第3の例を示す。この例は、上記第1および第2の例の組合せである。この例では、ページ配信部34は、印刷ジョブの処理を開始すると、フロントエンド装置30の動作モードをプロセス間通信モードに設定する(S220)。次に、論理ページ解釈部36−pa群にページを割り当てるごとに、割り当て済みの最新のページ番号を閾値と比較し(S222)、閾値以下であれば(S222の判定結果が否定(N))プロセス間通信モードを維持し、閾値を超えれば(S222の判定結果が肯定(Y))動作モードを非プロセス間通信モードに切り換える(S224)。この後、フォームキャッシュ48の空き容量をあらかじめ定めた閾値と比較し(S226)、閾値以上であれば(S226の判定結果が否定(N))非プロセス間通信モードを維持し、閾値を下回れば(S226の判定結果が肯定(Y))、動作モードをプロセス間通信モードに切り換える(S228)。動作モードをプロセス間通信モードに切り換えた後は、新たにキャッシュしたいキャッシュデータが生成されると、フォームキャッシュ48の空き容量が足りなければ既存のキャッシュデータをフォームキャッシュ48から削除し、そのようにして拡張した空き容量にその新たなキャッシュデータを格納するという処理の流れになる。このような処理では、フォームキャッシュ48の空き容量が大幅に増えることはあまりないので、印刷ジョブの終了までプロセス間通信モードを維持する。ただし、何らかの理由でフォームキャッシュ48の空き容量が大幅に増える可能性も考慮し、S228の後にもフォームキャッシュ48の空き容量を監視し、その空き容量があらかじめ定めた閾値(この閾値は、S226の閾値と同じであってもよいが、S226の閾値より大きい値とした方がよりよい)を超えると、非プロセス間通信モードに切り換えるようにしてもよい。
図21に、動作モードの切換制御の手順の第4の例を示す。この例は、第3の例の改良である。図21において、図20に示したステップと同じステップには同じ符号を付して説明を省略する。
この処理の前提として、キャッシュ管理部38は、フォームキャッシュ48のヒット率を管理しているものとする。例えば、キャッシュ管理部38は、論理ページ解釈部36−pa群から受けたキャッシュデータの有無の問合せ要求の総数と、その総数のうち「該当するキャッシュデータあり」(すなわち「キャッシュヒット」)の回答を返した数とを記録しており、それらの数値から常に最新のヒット率(ヒット数÷問合せ総数)を求めて保持している。
図21の手順では、S228でプロセス間通信モードに移行した後、ページ配信部34は、例えば定期的に、キャッシュ管理部38に対してヒット率を問い合わせる(S230)。そのヒット率があらかじめ定めた閾値以上(S232の判定結果が否定(N))であれば、プロセス間通信モードを維持する。すなわち、ヒット率が閾値以上であれば、フォームキャッシュ48が有効利用されているとみなし、現在の状態を維持するのである。
これに対し、ヒット率がその閾値を下回った場合(S232の判定結果が肯定(Y))、それはフォームキャッシュ48に格納されているキャッシュデータ群があまり利用されなくなってきているということを意味する。例えば、印刷ジョブの途中で使用するフォームががらりと入れ替わると、このようなことが生じる。すなわち、入れ替わりの前にフォームキャッシュ48に格納されたキャッシュデータは入れ替わり後にはあまり利用されなくなる一方、入れ替わり後の新たなフォームは空き容量の不足からあまりフォームキャッシュ48に登録され難くなり、ヒット率の低下が生じるのである。このような場合、ページ配信部34は、キャッシュ管理部38に対し、有効利用されていないキャッシュデータをフォームキャッシュ48から一括削除するよう指示する(S234)。
この指示を受けて、キャッシュ管理部38は、キャッシュテーブル386の情報から、現在有効利用されていないキャッシュデータを特定する。例えば、キャッシュデータごとに、利用度合いの指標値、すなわち「アクセスカウント値÷現在割り当て済みの総ページ数」を計算し、その指標値があらかじめ定めた閾値以上であればそのキャッシュデータは「現在有効利用されている」と判定し、その指標値が下回った場合に、そのキャッシュデータは「現在有効利用されていない」と判定すればよい。そして、このように特定した「現在有効利用されていない」キャッシュデータのうち、参照カウント値が0(すなわち現在参照されていないもの)をフォームキャッシュ48から一括削除する。
なお、「アクセスカウント値÷現在割り当て済みの総ページ数」の値は、例えばジョブの最初の方では利用されていたがその後利用されなくなったキャッシュデータの場合も、最近のページになって利用され始めてきたキャッシュデータの場合も共に低い値になる。しかし、後者のキャッシュデータの場合は最近利用されているので、参照カウント値が1以上である可能性が高く、一括削除の対象になりにくい。
また、図22に例示するように、キャッシュテーブル386にて、累計のアクセスカウント値の他に、最近のアクセスカウント値を管理し、S234では、最近のアクセスカウント値が少ないもの(例えばあらかじめ定めた閾値を下回るもの)を一括削除するようにしてもよい。なお、「最近のアクセスカウント値」としては、例えば、現在時点から見て直近のあらかじめ定めたページ数のページ群におけるアクセスカウント値の合計、等を用いればよい。
図23に、この変形例2における、フォーム解釈部36−fの全体的な処理手順を示す。この手順は、図4に例示した論理ページ解釈部36−paおよびフォーム解釈部36−fの全体的な処理手順に対し、動作モード切換時の処理であるS17およびS18を追加したものである。
すなわち、図23の手順では、フォーム解釈部36−fは、ページ配信部34から新たなページの割り当てを受けると(S12)、動作モード切換中か否かを判定する(S14)。「動作モード切換中」でなければ、S14に進む。これにより、図4と同じ処理が行われる。一方、「動作モード切換中」であれば、ページ同期処理を行う(S18)。
「動作モード切換中」という状態は、フロントエンド装置30が、切換前の動作モードから、指示された切換先の動作モードへと移行する途中(遷移段階)の状態である。この状態では、フロントエンド装置30内のフォーム解釈部36−fおよび論理ページ解釈部36−paは、以下に説明するページ同期処理を行う。ページ同期処理を行っている間は、フォーム解釈部36−fと、論理ページ解釈部36−pa群とのいずれか一方は処理を中断して待機状態となり、もう一方が処理を進めることで、両者の処理するページを同期させる。「動作モード切換中」の段階ではまだ動作モードの切換は行わず、「動作モード切換中」が解除されて初めて動作モードの切換を行う。
この例では、動作モードを切り換える指示を受けるとフロントエンド装置30は「動作モード切換中」となる。この状態は、動作モードの切換のための準備を行う状態であり、ただし、この段階では、まだ動作モードの切換は行わない。その後、ページ同期処理が完了するまで「動作モード切換中」の状態が続き、ページ同期処理が完了すると「動作モード切換中」の状態は解除され、動作モードが切り換えられる。この例では、ページ配信部34が、各論理ページ解釈部36−paおよびフォーム解釈部36−fに対して何ページ目までのページを割り当てたかという情報と、キャッシュ管理部38が管理している現在キャッシュ中のキャッシュデータの総量の情報と、に基づき、前述の(a)および(b)の各方向の動作モードの切換が必要になったかどうかを判定する。そして、必要になった場合には、動作モードの切換をフォーム解釈部36−fに指示する。この指示に応じて、フォーム解釈部36−fは「動作モード切換中」状態となり、ページ同期処理(S18)を実行する。
ページ同期処理とは、並列動作する論理ページ解釈部36−pa群と、フォーム解釈部36−fと、の間で、ページ処理の進捗を合わせる(すなわち、両者が処理しているページの番号が同じになるようにする)処理である。
図24に、ページ同期処理(S18)の処理手順の一例を示す。この例では、フォーム解釈部36−fは、フォーム解釈部36−fが現在処理しているページの番号Nfと、複数の論理ページ解釈部36−paが現在処理しているページの番号のうち最も大きな番号Npと、が同じであるかどうかを判定する(S130)。NfおよびNpの値は、ページ配信部34に問い合わせればよい。NfとNpが同じ値でない場合、フォームの処理と論理ページの処理とが同期していないことになる。この場合、更に、NfとNpを比較し、Nfの方がNpよりも大きいか否かを判定する(S132)。
この判定結果が否定(N)の場合、論理ページの解釈処理の方が、フォームの解釈処理よりも先に進んでいるということなので、フォーム解釈部36−fは、各論理ページ解釈部36−paに対して処理中断を指示する(S134)。この指示を受けた各論理ページ解釈部36−paは、例えば現在処理中のページについての中間データの生成が完了し次第、中断状態となり、ページ配信部34に対する次のページの配信要求を行わずに待機する。この中断状態は、処理再開指示を受けるまで続く。S134の後、フォーム解釈部36−fはS14(図23)に進み、当該ページのフォームの解釈および中間データ生成の処理を行う。そして、フォーム解釈部36−fが次のページの割り当てを受けると(図23のS12)、まだ「動作モード切換中」なので、図24のページ同期処理が行われることになる。このようにして、フォーム解釈部36−fの処理が処理中断中の論理ページ解釈部36−paの進捗に追いつくまで、S130→S132→S134→S14→S12→S17→S130の処理ループが繰り返される。
このようにして、フォーム解釈部36−fの処理進捗が、論理ページ解釈部36−paの処理進捗に追いつくと、S130の判定結果が肯定(Y)となる。この場合、フォーム解釈部36−fは、「動作モード切換中」の状態から抜け出し、自身の動作モードを切り換える。また、フォーム解釈部36−fは、論理ページ解釈部36−paに対して処理中断指示を発しているかどうかを判定し(S136)、発している場合は、論理ページ解釈部36−paに対して処理再開指示を発する(S138)。処理再開指示を受けた各論理ページ解釈部36−paは、自身の動作モードを切り換え、処理を再開する。
S132の判定結果が肯定(Y)の場合、フォーム解釈部36−fは、S12で割り当てられたページの処理は行わずに待機し(S133)、S130に戻る。このようにして、論理ページ解釈部36−paの処理が待機中のフォーム解釈部36−fの進捗に追いつくまで、S130→S132→S133→S12→S17→S130の処理ループが繰り返される。そして、論理ページ解釈部36−paの処理進捗が、フォーム解釈部36−fの処理進捗に追いつくと、S130の判定結果が肯定(Y)となる。すると、フォーム解釈部36−fは自身の動作モードを切り換えるとともに、各論理ページ解釈部36−paに対して動作モードの切換を指示する。
以上、ページ同期処理の例を説明した。動作モードを切り換える際にページ同期処理を行うことで、切換後の動作モードでの処理を、フォーム解釈部36−fと論理ページ解釈部36−paの処理進捗状況が一致した状態から開始することが可能となる。
例えば、非プロセス間通信モードで論理ページ解釈部36−paがフォーム解釈部36−fよりも先のページを処理している時点を考える。この時点では、未作成のキャッシュデータを参照するキャッシュ参照コマンドを含んだページの中間データが中間データバッファ42内に存在する可能性がある。この時点で、仮に、キャッシュデータの総量がフォームキャッシュ48の容量に近づいたため、動作モードを非プロセス間通信モードからプロセス間通信モードに切り換えたとする。この場合、プロセス間通信モードへの切換に応じて、新たに生成されるキャッシュデータをフォームキャッシュ48に格納するために、フォームキャッシュ48からの既存のキャッシュデータを削除することが可能になる。これにより、中間データバッファ42内のまだ描画部44で処理されていないページが参照しているキャッシュデータが、フォームキャッシュ48から削除されてしまい、そのページの画像が生成できなくなってしまう可能性が出てくる。
また、プロセス間通信モードで論理ページ解釈部36−paがフォーム解釈部36−fよりも先のページを処理している状況を考える。この状況で、いずれかの論理ページ解釈部36−paが新たに出現したフォームのキャッシュデータの有無を問い合わせると、キャッシュ管理部38は「キャッシュデータ無し」の旨の回答を返し、その論理ページ解釈部36−paはキャッシュを参照しない中間データ(そのフォームの中間データを含んでいる)を作成する。その後、フォーム解釈部36−fがそのフォームを処理する時点で、そのフォームのキャッシュデータをフォームキャッシュ48に登録する可能性があるが、この登録したキャッシュデータが後のページで使用されるかどうかは分からない。このように、参照される可能性のないキャッシュデータを登録してしまう可能性がある。
以上に例示したような不具合は、動作モード切換時にページ同期処理を行うことで、解消される。
なお、図24の例では、ページ同期において、論理ページ解釈部36−pa群とフォーム解釈部36−fとが処理しているページ番号が同じになるようにしたが、これは一例に過ぎない。この代わりに、フォーム解釈部36−fが論理ページ解釈部36−pa群に対して少し進んだページ番号を処理している状態となるように、同期をとってもよい。すなわち、フォーム解釈部36−fの方が論理ページ解釈部36−pa群よりも少し先を処理している状態であれば、非プロセス間通信モードでもプロセス間通信モードでも、論理ページ解釈部36−paが処理するページに含まれるフォームのキャッシュデータはほぼ必ずフォームキャッシュ48に存在する。このため、並列処理とキャッシュ利用の効果を最大限に利用して高速な処理が可能となる。これに対し、フォーム解釈部36−fの処理が論理ページ解釈部36−pa群よりも遙かに先を処理していると、フォーム解釈部36−fが作成したキャッシュデータが、論理ページの描画の際に必要とされる前にキャッシュ空き容量の逼迫等により削除されてしまう可能性が高くなる。このような不具合は、動作モード切換時に、フォーム解釈部36−fが論理ページ解釈部36−pa群に対して少し進んだ進捗状態となるように同期することで解消され、高速な処理が可能となる。
また、フォーム解釈部36−fが論理ページ解釈部36−pa群に対して同じページ番号乃至少し進んだページ番号を処理している状態となるよう、ある幅を持った範囲でページ同期をとるようにしてもよい。
図23および図24の例では、フォーム解釈部36−fがページ同期処理を実行したが、この代わりにページ配信部34がページ同期処理を行ったり、ページ同期処理専用の機能モジュールを設けたりしてもよい。
なお、プロセス間通信モードから非プロセス間通信モードへ切り換えた際、フォームキャッシュ48およびキャッシュ管理部38をリセット(すなわちクリア)する必要はない。切換後に、フォーム解釈部36−fがPDLデータからキャッシュ対象のフォームを見つけるごとに、そのフォームに対応するキャッシュエントリの有無をキャッシュ管理部38に問い合わせればよい。
また、プロセス間通信モードから非プロセス間通信モードへ切り換えた際、各キャッシュエントリのアクセスカウント値をリセットするようにしてもよい。特に、図21の動作モード切換方式を用いる場合に、S232でのキャッシュのヒット率低下検知に応じてS224で非プロセス間通信モードに切り換える場合に、アクセスカウント値をリセットすれば、過去のアクセスの回数の情報がクリアされるので、アクセスカウント値はより新しいキャッシュ利用状況を反映したものとなり、キャッシュの利用効率を向上させることが可能となる。
また、非プロセス間通信モードからプロセス間通信モードへ切り換えた際、フォームキャッシュ48およびキャッシュ管理部38をリセット(すなわちクリア)する必要はない。切換後、フォーム解釈部36−fが、フォームの中間データをキャッシュするか否かをキャッシュ管理部38に通知すればよい。
以上、図23および図24を参照して、フォーム解釈部36−fの全体的な処理手順の例を説明した。一方、論理ページ解釈部36−paの全体的な処理手順は、図4の手順と同様でよい。
次に、図25を参照して、論理ページ解釈部36−paのコマンドごとの処理手順(図4のS22の詳細な手順)の例を説明する。図25の手順は、図5に例示した実施形態の手順に対して、S41およびS44を追加したものである。
すなわち、図25の手順では、論理ページ解釈部36−paは、フォームに対応するキャッシュIDを生成(S40)した後、現在の動作モードがプロセス間通信モードか否かを判定する(S41)。
プロセス間通信モードである場合は、プロセス間通信を行い、キャッシュ管理部38に対してそのキャッシュIDを引数とする問合せ要求を送ることで、そのキャッシュIDに対応するキャッシュデータがフォームキャッシュ48内に存在しているかどうかを問い合わせる(S44)。この問合せに対して、キャッシュ管理部38から「該当するキャッシュデータあり」の旨の回答があった場合(S44の判定結果がY)、論理ページ解釈部36−paは、S42に進み、そのキャッシュIDを参照する参照コマンドを生成し、出力する。問合せに対する回答が「該当するキャッシュデータなし」であれば、論理ページ解釈部36−paは、当該フォームのPDLデータをメモリに展開し(S38)、そのPDLデータを解釈してフォームの中間データを生成し(S32)、生成した中間データを出力する(S34)。このように、プロセス間通信モードでは、キャッシュデータがフォームキャッシュ48にあるかどうかを確認し、あると確認できた場合にのみ、そのキャッシュデータを参照するコマンドを作成する。
一方、現在の動作モードが非プロセス間通信モードの場合(S41の判定結果がN)、論理ページ解釈部36−paは、S42に進み、そのキャッシュIDを参照する参照コマンドを生成し、出力する。非プロセス間通信モードでは、必要なキャッシュデータが入手できることが保証されているので、キャッシュ管理部38への問合せをせずに、キャッシュデータを参照するコマンドを作成するのである。これは、図5に示した上記実施形態での処理と同じである。
次に、図26を参照して、フォーム解釈部36−fのコマンドごとの処理手順(図23のS22の詳細な手順)の例を説明する。図26の手順は、図6に例示した実施形態の手順に対して、S55、S57およびS60〜S66を追加したものである。
図26の手順では、フォーム解釈部36−fは、フォームに対応するキャッシュIDを生成(S54)した後、現在の動作モードがプロセス間通信モードか否かを判定する(S55)。
現在の動作モードが非プロセス間通信モードの場合(S55の判定結果がN)、フォーム解釈部36−fは、そのフォームの中間データを生成し(S56)、キャッシュ管理部38に対して、その中間データをキャッシュデータとしてフォームキャッシュ48に登録する登録要求を行う(S57)。これに応じ、キャッシュ管理部38が、そのキャッシュデータの情報をキャッシュ管理部38に登録する。そして、作成した中間データをそのキャッシュIDと対応づけてフォームキャッシュ48に送ることで、キャッシュデータの登録を行う(S58)。なお、S57およびS58では、上記実施形態の場合と同様、既にそのフォームのキャッシュデータが登録済みかどうかをキャッシュ管理部38に問合せ、登録済みであれば重複登録をしないようにする。このように、非プロセス間通信モードでの処理は、図6に示した上記実施形態での処理と基本的に同じである。
一方、現在の動作モードがプロセス間通信モードである場合(S55の判定結果がY)は、キャッシュ管理部38に対してそのキャッシュIDを引数とする問合せ要求を送ることで、そのキャッシュIDに対応するキャッシュデータがフォームキャッシュ48内に存在しているかどうかを問い合わせる(S60)。この問合せに対して、キャッシュ管理部38から「該当するキャッシュデータあり」の旨の回答があった場合(S60の判定結果がY)、フォーム解釈部36−fは、処理を終了する。同じキャッシュデータを重複して生成・登録する必要がないからである。
一方、S60の問合せに対するキャッシュ管理部38からの回答が「該当するキャッシュデータなし」であれば、フォーム解釈部36−fは、そのフォームの中間データを生成し(S62)、生成した中間データのサイズとキャッシュIDとを含んだ領域確保要求をキャッシュ管理部38に送り、この要求に対して「領域確保成功」の回答があった場合には、その中間データを登録するための登録要求をキャッシュ管理部38に送る(S64)。この場合は、作成したフォームの中間データをフォームキャッシュに登録できる(S66の判定結果がY)ので、フォーム解釈部36−fは、その中間データをそのキャッシュIDと対応づけてフォームキャッシュ48に送る(S58)。一方、領域確保要求に対してキャッシュ管理部38から「領域確保失敗」の回答があった場合は、S66の判定結果が否定(N)となり、生成したフォームの中間データをキャッシュ管理部38およびフォームキャッシュ48に登録せずに、処理を終了する。
以上、この変形例2におけるフロントエンド装置30の処理手順の例を説明した。この変形例2のバックエンド装置40(特に描画部44)の処理手順は、上記実施形態と同様(図7および図8参照)である。
以上、本発明の実施形態および変形例について説明した。上述した実施形態および変形例は、あくまで本発明を説明するための例に過ぎず、本発明の範囲が上記実施形態および変形例に限られるわけではない。例えば、上記実施形態および変形例ではフォームキャッシュ48をバックエンド装置40内に設けたが、これは一例に過ぎない。フォームキャッシュ48は、各解釈部36および描画部44からアクセス可能な場所であれば、どのような場所に配置されてもよい。また、上記実施形態および変形例では、描画部44の数は1つであったが、複数存在してももちろんよい。
また、構成制御部39が、フロントエンド装置30の構成を、フォーム専用のフォーム解釈部36−fを含んだ第1構成(図3参照)と、フォームキャッシュ48を利用しない第3構成(図12参照)と、の間で切り換える変形例も考えられる。この変形例では、論理ページ解釈部36−pb(論理ページの解釈とフォームのキャッシュの両方を行う)を用いる第2構成(図9参照)は使用しない。この変形例では、起動数判定部37が求めた解釈部36の起動数があらかじめ定めた閾値N以下であれば、フロントエンド装置30を第3構成として構成し、その起動数がNよりも大きい場合は、フロントエンド装置30を第1構成として構成する。
また、構成制御部39が、フロントエンド装置30の構成を、フォーム専用のフォーム解釈部36−fを含んだ第1構成(図3参照)と、フォームキャッシュ48を利用しない第3構成(図12参照)と、の間で切り換える変形例も考えられる。この変形例では、論理ページ解釈部36−pb(論理ページの解釈とフォームのキャッシュの両方を行う)を用いる第2構成(図9参照)は使用しない。この変形例では、起動数判定部37が求めた解釈部36の起動数があらかじめ定めた閾値N以下であれば、フロントエンド装置30を第3構成として構成し、その起動数がNよりも大きい場合は、フロントエンド装置30を第1構成として構成する。
10 端末装置、20 印刷コントローラ、30 フロントエンド装置、32 印刷ジョブ受信部、34 ページ配信部、36−f フォーム解釈部、36−pa1,36−pa2,36−pb,36−pc1,36−pc2 論理ページ解釈部、38 キャッシュ管理部、40 バックエンド装置、42 中間データバッファ、44 描画部、46 出力バッファ、48 フォームキャッシュ、50 印刷装置、60,62,64 通信手段、382 通信制御部、384 キャッシュ制御部、386 キャッシュテーブル。
Claims (10)
- コンピュータを、
前記コンピュータの有するハードウエア計算資源の量を求め、求めた量の前記ハードウエア計算資源で実行することが可能な解釈手段の数を判定する判定手段、
前記コンピュータを、第1の印刷データ処理装置および第2の印刷データ処理装置のいずれとして機能させるかを、前記判定手段により判定された前記数に応じて制御する制御手段、
として機能させるためのプログラムであって、
前記第1の印刷データ処理装置は、前記コンピュータを、
印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第1の論理ページ解釈手段、
前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させる1つのキャッシュ用解釈手段、
として機能させることで構築される装置であり、
前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、
前記2以上の前記第1の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記第2の印刷データ処理装置は、前記コンピュータを、
前記印刷データの各論理ページを解釈して解釈結果を出力する第2の論理ページ解釈手段であって、前記論理ページ内の前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素については、当該キャッシュ対象要素を解釈し、解釈結果を、前記生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記論理ページ内の前記キャッシュ手段に解釈結果が記憶されているキャッシュ対象要素については、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込む、第2の論理ページ解釈手段、
として機能させることで構築される装置であり、
前記第1の印刷データ処理装置および前記第2の印刷データ処理装置は、印刷画像データ生成装置に対して、前記第1の論理ページ解釈手段または前記第2の論理ページ解釈手段による前記印刷データの各論理ページの解釈結果を供給し、
前記印刷画像データ生成装置は、前記第1の印刷データ処理装置または前記第2の印刷データ処理装置から供給された各論理ページの解釈結果を処理してそれら各論理ページの印刷画像データを生成する装置であり、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成する、
ことを特徴とするプログラム。 - 前記制御手段は、前記判定手段により判定された前記数が1以上かつN(Nはあらかじめ定められた2以上の整数)未満であれば、前記コンピュータを前記第2の印刷データ処理装置として機能させ、前記判定手段により判定された前記数がN以上であれば、前記コンピュータを前記第1の印刷データ処理装置として機能させる、ことを特徴とする請求項1に記載のプログラム。
- 前記制御手段は、前記コンピュータを、前記第1の印刷データ処理装置、前記第2の印刷データ処理装置および第3の印刷データ処理装置のいずれとして機能させるかを、前記資源量判定手段の判定結果に応じて制御するものであり、
前記第3の印刷データ処理装置は、前記コンピュータを、
前記印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第3の論理ページ解釈手段であって、処理対象の論理ページにキャッシュ対象要素が含まれる場合、そのキャッシュ対象要素も解釈して解釈結果を当該論理ページの解釈結果に組み込む、2以上の第3の論理ページ解釈手段、
として機能させることにより構築される装置であり、
前記制御手段は、前記判定手段により判定された前記数が1であれば、前記コンピュータを前記第2の印刷データ処理装置として機能させ、前記判定手段により判定された前記数が2以上、かつ、前記N未満であれば、前記コンピュータを前記第3の印刷データ処理装置として機能させる、
ことを特徴とする請求項2に記載のプログラム。 - 前記2以上の第1の論理ページ解釈手段は、それぞれ、
第1の動作モードと第2の動作モードを有し、
前記第1の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記第2の動作モードでは、前記処理対象の論理ページに含まれるキャッシュ対象要素について、当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されているか否かを問い合わせる問合せ通信を行い、この問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていることが判った場合は、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記問合せ通信の結果当該キャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていないことが判った場合は、当該キャッシュ対象要素を解釈して解釈結果を当該論理ページの解釈結果に組み込み、
前記プログラムは、前記コンピュータを、前記2以上の第1の論理ページ解釈手段の動作モードを前記第1のモードと前記第2のモードとの間で切り換える制御を行うモード制御手段、として更に機能させる、
ことを特徴とする請求項1〜3のいずれか1項に記載のプログラム。 - 前記モード制御手段は、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記2以上の第1の論理ページ解釈手段で完了するまでは、前記2以上の第1の論理ページ解釈手段を前記第2の動作モードで動作させ、前記印刷データの最初のあらかじめ定められた数のページについての解釈が前記2以上の第1の論理ページ解釈手段で完了すると、前記2以上の第1の論理ページ解釈手段の動作モードを前記第1の動作モードに切り換える、
請求項4に記載のプログラム。 - 前記モード制御手段は、前記キャッシュ手段の空き容量を監視し、前記2以上の第1の論理ページ解釈手段が前記第1の動作モードで動作しているときに、前記キャッシュ手段の空き容量があらかじめ定められた閾値を下回った場合には、前記2以上の第1の論理ページ解釈手段の動作モードを前記第2の動作モードに切り換える、請求項4又は5に記載のプログラム。
- 前記2以上の第1の論理ページ解釈手段による前記問合せ通信に対して当該問合せ通信に係るキャッシュ対象要素の解釈結果が前記キャッシュ手段に記憶されていた割合を表す前記キャッシュ手段のヒット率、および、前記キャッシュ手段に記憶されている各キャッシュ対象要素の中間データの利用状況を監視し、前記2以上の第1の論理ページ解釈手段が前記第2の動作モードで動作しているときに、前記ヒット率があらかじめ定められた判定閾値を下回った場合には、前記利用状況から中間データの最近の利用度合いがあらかじめ定めた閾値を下回るキャッシュ対象要素群を特定し、特定したキャッシュ対象要素群の中間データを前記キャッシュ手段から一括して削除する一括削除手段、として更に機能させる、ことを特徴とする請求項4〜6のいずれか1項に記載のプログラム。
- 前記モード制御手段は、前記一括削除手段による削除に応じて、前記2以上の第1の論理ページ解釈手段の動作モードを前記第2の動作モードから前記第1の動作モードに切り換える、請求項7に記載のプログラム。
- コンピュータを、
前記コンピュータの有するハードウエア計算資源の量を求め、求めた量の前記ハードウエア計算資源で実行することが可能な解釈手段の数を判定する判定手段、
前記コンピュータを、第1の印刷データ処理装置および第2の印刷データ処理装置のいずれとして機能させるかを、前記判定手段により判定された前記数に応じて制御する制御手段、
として機能させるためのプログラムであって、
前記第1の印刷データ処理装置は、前記コンピュータを、
印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第1の論理ページ解釈手段、
前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させる1つのキャッシュ用解釈手段、
として機能させることで構築される装置であり、
前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、
前記2以上の前記第1の論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記第2の印刷データ処理装置は、前記コンピュータを、
前記印刷データ内の互いに異なる論理ページを並列的に解釈して解釈結果を出力する2以上の第2の論理ページ解釈手段であって、処理対象の論理ページにキャッシュ対象要素が含まれる場合、そのキャッシュ対象要素も解釈して解釈結果を当該論理ページの解釈結果に組み込む、2以上の第2の論理ページ解釈手段、
として機能させることで構築される装置であり、
前記第1の印刷データ処理装置および前記第2の印刷データ処理装置は、印刷画像データ生成装置に対して、前記第1の論理ページ解釈手段または前記第2の論理ページ解釈手段による前記印刷データの各論理ページの解釈結果を供給し、
前記印刷画像データ生成装置は、前記第1の印刷データ処理装置または前記第2の印刷データ処理装置から供給された各論理ページの解釈結果を処理してそれら各論理ページの印刷画像データを生成する装置であり、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成する、
ことを特徴とするプログラム。 - 前記制御手段は、前記判定手段により判定された前記数がN(Nはあらかじめ定められた2以上の整数)未満であれば、前記コンピュータを前記第2の印刷データ処理装置として機能させ、前記判定手段により判定された前記数がN以上であれば、前記コンピュータを前記第1の印刷データ処理装置として機能させる、ことを特徴とする請求項9に記載のプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012244744A JP5288039B1 (ja) | 2012-11-06 | 2012-11-06 | 印刷画像処理システムおよびプログラム |
US13/952,021 US8705108B1 (en) | 2012-11-06 | 2013-07-26 | Non-transitory computer readable medium storing program for executing print image processing system |
CN201310401292.5A CN103809922B (zh) | 2012-11-06 | 2013-09-05 | 图像形成系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012244744A JP5288039B1 (ja) | 2012-11-06 | 2012-11-06 | 印刷画像処理システムおよびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5288039B1 JP5288039B1 (ja) | 2013-09-11 |
JP2014093045A true JP2014093045A (ja) | 2014-05-19 |
Family
ID=49274079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012244744A Expired - Fee Related JP5288039B1 (ja) | 2012-11-06 | 2012-11-06 | 印刷画像処理システムおよびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8705108B1 (ja) |
JP (1) | JP5288039B1 (ja) |
CN (1) | CN103809922B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016207172A (ja) * | 2015-04-28 | 2016-12-08 | 富士ゼロックス株式会社 | データ処理装置及びプログラム |
JP2021071811A (ja) * | 2019-10-29 | 2021-05-06 | 富士ゼロックス株式会社 | 印刷制御装置、印刷システム、及び印刷制御プログラム |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5344075B1 (ja) * | 2012-10-11 | 2013-11-20 | 富士ゼロックス株式会社 | 印刷画像処理システムおよびプログラム |
JP5408323B1 (ja) * | 2012-10-11 | 2014-02-05 | 富士ゼロックス株式会社 | 印刷画像処理システムおよびプログラム |
JP6381187B2 (ja) * | 2013-08-09 | 2018-08-29 | キヤノン株式会社 | 情報処理装置、情報処理方法、及びプログラム |
US9875249B1 (en) * | 2015-03-31 | 2018-01-23 | Maginatics Llc | Reducing database fragmentation |
US9892346B2 (en) * | 2015-12-18 | 2018-02-13 | Océ-Technologies B.V. | Method of converting image data from source format into target format |
JP6827798B2 (ja) * | 2016-12-21 | 2021-02-10 | キヤノン株式会社 | 画像形成装置、画像形成装置の制御方法、プログラム。 |
WO2020222900A1 (en) * | 2019-04-30 | 2020-11-05 | Hewlett-Packard Development Company, L.P. | Storage device decoupling determination |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333246A (en) * | 1990-04-05 | 1994-07-26 | Seiko Epson Corporation | Page-description language interpreter for a parallel-processing system |
US5269013A (en) * | 1991-03-20 | 1993-12-07 | Digital Equipment Corporation | Adaptive memory management method for coupled memory multiprocessor systems |
JP3611003B2 (ja) | 1996-09-24 | 2005-01-19 | 富士ゼロックス株式会社 | 画像処理装置 |
US6429949B1 (en) * | 1998-10-15 | 2002-08-06 | Electronics For Imaging, Inc. | Low memory printer controller |
JP2000211210A (ja) * | 1999-01-25 | 2000-08-02 | Canon Inc | 複合機器の制御装置及び方法 |
JP2000335022A (ja) * | 1999-05-31 | 2000-12-05 | Toshiba Corp | プリンタ制御装置 |
JP4199519B2 (ja) * | 2002-11-05 | 2008-12-17 | パナソニック株式会社 | メモリ管理装置及びメモリ管理方法 |
US20040174570A1 (en) * | 2002-12-02 | 2004-09-09 | Plunkett Richard Thomas | Variable size dither matrix usage |
US7103723B2 (en) * | 2003-02-25 | 2006-09-05 | Intel Corporation | Priority-based code cache management |
US8619310B2 (en) * | 2007-05-25 | 2013-12-31 | Kyocera Document Solutions, Inc. | Image forming apparatus |
JP4501593B2 (ja) * | 2004-08-25 | 2010-07-14 | セイコーエプソン株式会社 | 画像処理を並列処理で実行する際の負荷の割り付け |
US7403945B2 (en) * | 2004-11-01 | 2008-07-22 | Sybase, Inc. | Distributed database system providing data and space management methodology |
JP4543340B2 (ja) * | 2007-12-17 | 2010-09-15 | 富士ゼロックス株式会社 | 画像処理装置および画像形成システムとプログラム |
JP5247603B2 (ja) * | 2008-09-04 | 2013-07-24 | キヤノン株式会社 | 情報処理装置、制御方法、制御プログラム |
JP2010109967A (ja) * | 2008-10-01 | 2010-05-13 | Canon Inc | 画像処理装置、方法、及び、プログラム |
JP5183444B2 (ja) * | 2008-11-28 | 2013-04-17 | キヤノン株式会社 | 印刷制御装置、印刷制御方法、及びコンピュータプログラム |
JP5333763B2 (ja) * | 2009-07-22 | 2013-11-06 | 富士ゼロックス株式会社 | 画像処理装置、画像処理システムおよび画像処理プログラム |
JP5370044B2 (ja) | 2009-09-24 | 2013-12-18 | 富士ゼロックス株式会社 | 画像処理装置、画像形成装置、およびプログラム |
JP5531531B2 (ja) * | 2009-09-25 | 2014-06-25 | 富士ゼロックス株式会社 | 画像処理システム及び画像処理プログラム |
JP5446916B2 (ja) | 2010-01-21 | 2014-03-19 | 富士ゼロックス株式会社 | 印刷画像処理システム |
JP5663941B2 (ja) * | 2010-04-30 | 2015-02-04 | 富士ゼロックス株式会社 | 印刷文書変換装置およびプログラム |
JP5482529B2 (ja) * | 2010-07-14 | 2014-05-07 | 富士ゼロックス株式会社 | 印刷文書変換装置及びプログラム |
JP5482528B2 (ja) * | 2010-07-14 | 2014-05-07 | 富士ゼロックス株式会社 | 印刷文書変換装置及びプログラム |
JP5691448B2 (ja) | 2010-11-30 | 2015-04-01 | 富士ゼロックス株式会社 | 印刷文書処理システム、キャッシュ装置、データ処理装置及びプログラム |
JP5747489B2 (ja) * | 2010-11-30 | 2015-07-15 | 富士ゼロックス株式会社 | 印刷文書処理システム、キャッシュ装置及びプログラム |
JP5648449B2 (ja) * | 2010-11-30 | 2015-01-07 | 富士ゼロックス株式会社 | 印刷文書処理システム、キャッシュ装置及びプログラム |
JP2012183704A (ja) * | 2011-03-04 | 2012-09-27 | Canon Inc | 画像処理装置、画像処理方法及びプログラム |
JP4905604B1 (ja) * | 2011-09-26 | 2012-03-28 | 富士ゼロックス株式会社 | 印刷データ処理システム及びプログラム |
-
2012
- 2012-11-06 JP JP2012244744A patent/JP5288039B1/ja not_active Expired - Fee Related
-
2013
- 2013-07-26 US US13/952,021 patent/US8705108B1/en not_active Expired - Fee Related
- 2013-09-05 CN CN201310401292.5A patent/CN103809922B/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016207172A (ja) * | 2015-04-28 | 2016-12-08 | 富士ゼロックス株式会社 | データ処理装置及びプログラム |
JP2021071811A (ja) * | 2019-10-29 | 2021-05-06 | 富士ゼロックス株式会社 | 印刷制御装置、印刷システム、及び印刷制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
US8705108B1 (en) | 2014-04-22 |
JP5288039B1 (ja) | 2013-09-11 |
CN103809922A (zh) | 2014-05-21 |
US20140126008A1 (en) | 2014-05-08 |
CN103809922B (zh) | 2018-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5288039B1 (ja) | 印刷画像処理システムおよびプログラム | |
JP5747489B2 (ja) | 印刷文書処理システム、キャッシュ装置及びプログラム | |
JP5344075B1 (ja) | 印刷画像処理システムおよびプログラム | |
JP5691448B2 (ja) | 印刷文書処理システム、キャッシュ装置、データ処理装置及びプログラム | |
JP5663941B2 (ja) | 印刷文書変換装置およびプログラム | |
JP5408323B1 (ja) | 印刷画像処理システムおよびプログラム | |
US8625133B2 (en) | Print data processing apparatus, print data processing method, and storage medium | |
US20090249017A1 (en) | Systems and Methods for Memory Management for Rasterization | |
JP5051327B1 (ja) | 画像処理装置及びプログラム | |
JP5648449B2 (ja) | 印刷文書処理システム、キャッシュ装置及びプログラム | |
JP5614266B2 (ja) | 印刷文書処理システム、キャッシュ装置、データ処理装置及びプログラム | |
JP6135329B2 (ja) | 印刷データ処理装置、プログラム、及びシステム | |
US8934121B2 (en) | Coordinated, distributed, reusable document component respository | |
US20100188692A1 (en) | Printing System, Printing Apparatus, and Printing Method | |
US9052854B2 (en) | Parallel printing system | |
JP2016207172A (ja) | データ処理装置及びプログラム | |
JP2012008838A (ja) | 印刷文書変換装置およびプログラム | |
JP2015001882A (ja) | 印刷画像処理システムおよびプログラム | |
JP3483419B2 (ja) | コンピュータおよびデータ処理方法およびコンピュータが読み出し可能な記憶媒体 | |
JP2012081711A (ja) | 画像形成装置、画像処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130507 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130520 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5288039 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |