JP2012116078A - 印刷文書処理システム、キャッシュ装置及びプログラム - Google Patents

印刷文書処理システム、キャッシュ装置及びプログラム Download PDF

Info

Publication number
JP2012116078A
JP2012116078A JP2010267562A JP2010267562A JP2012116078A JP 2012116078 A JP2012116078 A JP 2012116078A JP 2010267562 A JP2010267562 A JP 2010267562A JP 2010267562 A JP2010267562 A JP 2010267562A JP 2012116078 A JP2012116078 A JP 2012116078A
Authority
JP
Japan
Prior art keywords
cache
image data
data
document element
cache memory
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
Application number
JP2010267562A
Other languages
English (en)
Other versions
JP5747489B2 (ja
Inventor
Michio Hayakawa
道生 早川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2010267562A priority Critical patent/JP5747489B2/ja
Priority to US13/110,590 priority patent/US8810813B2/en
Priority to AU2011202615A priority patent/AU2011202615B2/en
Publication of JP2012116078A publication Critical patent/JP2012116078A/ja
Application granted granted Critical
Publication of JP5747489B2 publication Critical patent/JP5747489B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1288Remote printer device, e.g. being remote from client or server in client-server-printer device configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1211Improving printing performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1247Job translation or job parsing, e.g. page banding by conversion to printer ready format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/464Multimedia object, e.g. image, video
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1245Job translation or job parsing, e.g. page banding by conversion to intermediate or common format

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Record Information Processing For Printing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】文書要素の画像データのための記憶領域をキャッシュメモリ内に確保する際に、使用中でない画像データをキャッシュメモリから追い出すだけよりも更に多くの空き容量を作ることができるようにする。
【解決手段】キャッシュ管理部130はRIP部120から領域確保要求を受けた場合、エントリ管理テーブル132を参照し、その要求の対象の文書要素よりもキャッシュ優先度が低く且つ使用されていない文書要素の画像データをキャッシュメモリ140から追い出す。これでも空き容量が足りない場合は、その要求の対象の文書要素よりもキャッシュ優先度が低く且ついずれのデータ処理装置からも使用中でないすべての文書要素の画像データをキャッシュメモリ140から追い出すことで空き容量を増大させる。追い出される画像データを使用中のRIP部120のために、キャッシュメモリ140の容量を一時的にオーバーフローして領域確保するなどの対処を行う。
【選択図】図1

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には、複数の描画プロセッサにより印刷データの描画処理を並列して行う装置が開示されている。この装置は、各描画プロセッサにて描画処理されたフォーム等のビットマップデータを、印刷機構制御プロセッサ内の共通のキャッシュメモリにてキャッシュするように構成されている。
特開2000−335022号公報
ところで、データ処理装置が作成した画像データをキャッシュメモリに記憶しようとする際に空き容量が足りない場合、例えば使用中でない画像データをキャッシュメモリから追い出す(削除する)ことにより空き容量を広げることが考えられる。しかし、使用中でない画像データを削除しただけでは、新たに記憶しようとする画像データに見合った十分な空き容量を確保できない場合も生じ得る。
本発明は、文書要素の画像データのための記憶領域をキャッシュメモリ内に確保する際に、使用中でない画像データをキャッシュメモリから追い出すだけよりも更に多くの空き容量を作ることができるようにすることを目的とする。
請求項1に係る発明は、キャッシュ装置と、複数のデータ処理装置と、を備え、前記複数のデータ処理装置の各々は、印刷文書データ内の各文書要素のページ記述言語のデータを処理してビットマップ形式又は中間言語形式の画像データを作成する画像データ作成手段と、前記画像データ作成手段が作成する前記画像データのための記憶領域を確保するための確保要求を前記キャッシュ装置に送信する確保要求送信手段と、を備え、前記キャッシュ装置は、前記各データ処理装置が作成したビットマップ形式又は中間言語形式の画像データを記憶するためのキャッシュメモリと、前記キャッシュメモリに画像データが記憶されている各文書要素について、それぞれ当該文書要素の画像データがいずれかのデータ処理装置により使用中であるか否かを示す使用状態情報と、当該文書要素のキャッシュ優先度と、を記憶する記憶手段と、前記データ処理装置から文書要素の画像データのための記憶領域を確保するための確保要求を受けた際に、当該文書要素よりもキャッシュ優先度が低く且ついずれかのデータ処理装置が使用中である文書要素を前記キャッシュメモリからの追い出し対象とすることにより、当該記憶領域を確保する領域確保手段と、を備える、ことを特徴とする印刷文書処理システムである。
請求項2に係る発明は、前記各データ処理装置は、前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、を更に備え、前記領域確保手段は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、ことを特徴とする請求項1に記載の印刷文書処理システムである。
請求項3に係る発明は、前記領域確保手段は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、ことを特徴とする請求項1に記載の印刷文書処理システムである。
請求項4に係る発明は、前記データ処理装置は、前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、を更に備え、前記領域確保手段は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、ことを特徴とする請求項1に記載の印刷文書処理システムである。
請求項5に係る発明は、前記データ処理装置は、前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、を更に備え、前記領域確保手段は、前記キャッシュ装置を管理するオペレーティングシステムが管理するメモリの空き容量に基づき、前記確保要求の対象の文書要素の画像データの記憶領域を、前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保できるか否か判定し、確保できる場合は第1の方式を、確保できない場合は第2の方式を採用し、前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、という方式であり、前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、という方式である、ことを特徴とする請求項1に記載の印刷文書処理システムである。
請求項6に係る発明は、前記データ処理装置は、前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、を更に備え、前記領域確保手段は、前記キャッシュ装置を管理するオペレーティングシステムが管理するメモリの空き容量に基づき、前記確保要求の対象の文書要素の画像データの記憶領域を、前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保できるか否か判定し、確保できる場合は第1の方式を、確保できない場合は第2の方式を採用し、前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、という方式であり、前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、という方式である、ことを特徴とする請求項1に記載の印刷文書処理システムである。
請求項7に係る発明は、前記データ処理装置は、前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、を更に備え、前記領域確保手段は、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出した場合に当該文書要素の画像データを使用していたデータ処理装置が被る損害の評価値を計算し、その評価値があらかじめ定められた閾値以下である場合は第1の方式を、そうでない場合は第2の方式を採用し、前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、という方式であり、前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、という方式である、ことを特徴とする請求項1に記載の印刷文書処理システムである。
請求項8に係る発明は、前記データ処理装置は、前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、を更に備え、前記領域確保手段は、前記キャッシュ装置を管理するオペレーティングシステムが管理するメモリの空き容量に基づき、前記確保要求の対象の文書要素の画像データの記憶領域を、前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保できるか否か判定し、確保できる場合は第1の方式を採用し、
確保できない場合は更に、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出した場合に当該文書要素の画像データを使用していたデータ処理装置が被る損害の評価値を計算し、その評価値があらかじめ定められた閾値以下である場合は第2の方式を、そうでない場合は第3の方式を採用し、前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、という方式であり、前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、という方式であり、前記第3の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、という方式である、ことを特徴とする請求項1に記載の印刷文書処理システムである。
請求項9に係る発明は、各データ処理装置が作成したビットマップ形式又は中間言語形式の画像データを記憶するためのキャッシュメモリと、前記キャッシュメモリに画像データが記憶されている各文書要素について、それぞれ当該文書要素の画像データがいずれかのデータ処理装置により使用中であるか否かを示す使用状態情報と、当該文書要素のキャッシュ優先度と、を記憶する記憶手段と、前記データ処理装置から文書要素の画像データのための記憶領域を確保するための確保要求を受けた際に、当該文書要素よりもキャッシュ優先度が低く且ついずれかのデータ処理装置が使用中である文書要素を前記キャッシュメモリからの追い出し対象とすることにより、当該記憶領域を確保する領域確保手段と、を備える、ことを特徴とするキャッシュ装置である。
請求項10に係る発明は、コンピュータを、各データ処理装置が作成したビットマップ形式又は中間言語形式の画像データを記憶するためのキャッシュメモリ、前記キャッシュメモリに画像データが記憶されている各文書要素について、それぞれ当該文書要素の画像データがいずれかのデータ処理装置により使用中であるか否かを示す使用状態情報と、当該文書要素のキャッシュ優先度と、を記憶する記憶手段、前記データ処理装置から文書要素の画像データのための記憶領域を確保するための確保要求を受けた際に、当該文書要素よりもキャッシュ優先度が低く且ついずれかのデータ処理装置が使用中である文書要素を前記キャッシュメモリからの追い出し対象とすることにより、当該記憶領域を確保する領域確保手段、として機能させるためのプログラムである。
請求項1,9又は10に係る発明によれば、文書要素の画像データのための記憶領域をキャッシュメモリ内に確保する際に、使用中でない画像データをキャッシュメモリから追い出すだけよりも更に多くの空き容量を作ることができる。
請求項2に係る発明によれば、解放対象の画像データの作成を中断することなく、確保要求に対して即座に空き容量を確保することができる。
請求項3に係る発明によれば、キャッシュメモリに割り当てられた容量を超えることなく、確保要求に対して即座に空き容量を確保することができる。
請求項4に係る発明によれば、解放対象の画像データの作成を中断することなく、かつキャッシュメモリに割り当てられた容量を超えることなく、空き容量を確保することができる。
請求項5に係る発明によれば、キャッシュメモリに割り当てられたメモリ空間からはみ出して記憶領域を確保できるかどうかに応じて、適切な方式で記憶領域の確保を行うことができる。
請求項6に係る発明によれば、キャッシュメモリに割り当てられたメモリ空間からはみ出して記憶領域を確保できるかどうかに応じて、適切な方式で記憶領域の確保を行うことができる。
請求項7に係る発明によれば、作成中の画像データのための記憶領域を解放することによる損失を考慮して、適切な方式で記憶領域の確保を行うことができる。
請求項8に係る発明によれば、状況に応じた適切な方式で記憶領域の確保を行うことができる。
第1例の印刷文書変換システムの構成及びこれが接続される印刷システムの構成の一例を示す図である。 エントリ管理テーブルのデータ内容の一例を示す図である。 第1例におけるキャッシュエントリの5つのステージ間の状態遷移を示す図である。 RIP部の全体的な処理手順の一例を示すフローチャートである。 キャッシュ管理部から応答“Miss”を受け取ったときのRIP部の処理手順の一例を示すフローチャートである。 キャッシュ管理部から応答“Creating”を受け取ったときのRIP部の処理手順の一例を示すフローチャートである。 RIP部から問合せを受けたときのキャッシュ管理部の処理手順の一例を示すフローチャートである。 RIP部から使用開始要求を受けたときのキャッシュ管理部の処理手順の一例を示すフローチャートである。 RIP部から使用終了通知を受けたときのキャッシュ管理部の処理手順の一例を示すフローチャートである。 RIP部から領域確保要求を受けたときのキャッシュ管理部の処理手順の一例の一部を示すフローチャートである。 RIP部から領域確保要求を受けたときのキャッシュ管理部の処理手順の一例の残りの部分を示すフローチャートである。 RIP部から登録要求を受けたときのキャッシュ管理部の処理手順の一例を示すフローチャートである。 追い出し予約がなされたキャッシュエントリのキャッシュデータを追い出す処理の一例を示すフローチャートである。 追い出し予約がなされたキャッシュエントリのキャッシュデータを、使用終了通知に対応する処理の中で追い出す例を示すフローチャートである。 追い出されたキャッシュエントリの見直し処理の手順の一例を示すフローチャートである。 第1例において作成中のキャッシュデータの完成をRIP部に待たせるかどうかをキャッシュ管理部が判定する変形例1−1の処理手順の一部を示すフローチャートである。 第1例において作成中のキャッシュデータの完成をRIP部に待たせるかどうかをキャッシュ管理部が判定する変形例1−1の処理手順の残りの部分を示すフローチャートである。 第1例において、RIP部が自らの負荷に応じて、作成中のキャッシュデータの完成を待つか否かの判断をスキップする変形例1−2の処理手順の要部を示すフローチャートである。 実施形態におけるRIP部から領域確保要求を受けたときのキャッシュ管理部の処理手順の一例の第1方式の主要部を示すフローチャートである。 実施形態の第2方式で用いるエントリ管理テーブルのデータ内容の一例を示す図である。 実施形態の第2方式において使用開始要求を受けたときのキャッシュ管理部の処理手順の一例を示すフローチャートである。 実施形態の第2方式において使用終了通知を受けたときのキャッシュ管理部の処理手順の一例を示すフローチャートである。 実施形態におけるRIP部から領域確保要求を受けたときのキャッシュ管理部の処理手順の一例の第2方式の主要部を示すフローチャートである。 実施形態におけるRIP部から領域確保要求を受けたときのキャッシュ管理部の処理手順の一例の第3方式の主要部を示すフローチャートである。 実施形態において、第1方式〜第3方式を動的に切り替える場合のキャッシュ管理部の処理手順の一例の一部を示すフローチャートである。 実施形態において、第1方式〜第3方式を動的に切り替える場合のキャッシュ管理部の処理手順の一例の残りの部分を示すフローチャートである。
以下、図面を参照して本発明の実施の形態(以下「実施形態」という)を説明する。図面において、同様の構成要素又はステップには同一符号を付す。
[第1例]
《装置構成》
図1を用いて、本実施形態の領域確保のための構成及び処理の適用対象となり得る第1の例の印刷文書変換システムの構成及びこれが接続される印刷システムの構成の一例を説明する。
図1に示す印刷システムは、印刷文書変換システム100,ホストコンピュータ200,印刷制御装置210及びプリンタエンジン220を備える。
印刷文書変換システム100は、ページ記述言語(PDL)で記述された印刷文書データを、プリンタエンジン220が取扱可能なビットマップ形式(ラスター形式とも呼ばれる)等の印刷画像データに変換する装置である。図示は省略したが、ホストコンピュータ200は、LAN(ローカルエリアネットワーク)等のネットワークを介して印刷文書変換システム100に対して接続されている。ホストコンピュータ200は、そのネットワークを介して印刷文書変換システム100に対して印刷文書データを送り、その印刷文書データの印刷を指示する。なお、図1にはホストコンピュータ200を1つしか示さなかったが、ネットワーク上に複数のホストコンピュータ200が存在していてもよい。
印刷文書変換システム100は、ジョブ管理部110,n個(nは2以上の整数)のRIP部120−1,120−2,…,120−n,キャッシュ管理部130及びキャッシュメモリ140を備える。
RIP( Raster Image Processor)部120−1,120−2,…,120−n(以下、ここを区別する必要がない場合はRIP部120と総称する)は、RIP処理を行うデータ処理装置である。ここで、RIP処理とは、PDLで記述された印刷文書データをプリンタエンジン220が取扱可能なビットマップ(ラスター)形式等の印刷画像データに変換する変換処理である。印刷文書変換システム100は、複数(n個)のRIP部120により、ページ単位で並列的に、すなわち最大nページを並列的に、RIP処理する。RIP処理は、描画又はレンダリングとも呼ばれる。RIP部120は、与えられたPDLのデータを例えば先頭から順に調べていき、その過程で順番に見つかった各オブジェクト(すなわち文書要素)のPDLデータを解釈し、中間言語形式又はビットマップ形式の画像データを生成する。ここで、オブジェクトには、例えば、テキスト(文字列)、図形(グラフィックス)、イメージ(連続調画像)など、いくつかの種類がある。個々のオブジェクトは、例えばPDLの描画コマンドにより表される。
RIP部120は、1つの例では、PDLのデータを直接ビットマップ形式等の印刷画像データに変換するものであってよい。また、別の例では、RIP部120は、PDLのデータを、PDLコマンドよりは粒度の小さいディスプレイリスト等の中間言語データに変換してバッファし、バッファした中間言語データをビットマップ形式に変換するという2段階の変換を行うものであってよい。
ジョブ管理部110は、ホストコンピュータ200から印刷文書データを受け取り、それら印刷文書データの印刷処理の管理を行う。以下では、ホストコンピュータ200から受け取った1つの印刷文書データのことをジョブと呼ぶ。ホストコンピュータ200からのジョブ(印刷文書データ)には、個々の対象(例えば顧客)ごとに、データベースに記憶された各対象のデータを定型データに組み合わせて印刷する、いわゆるバリアブルプリントのジョブも含まれ得る。
ジョブ管理部110が行う印刷処理の管理には、一般的な、ジョブ単位での印刷順序の管理の他に、1つのジョブ内の各ページを各RIP部120に割り当てるページ割当管理も含まれる。後者のページ割当管理を担当するのが、ページ割当部112である。
例えば印刷文書データ(ジョブ)がページ独立(すなわち1つのページの描画に必要な情報がそのページのPDLデータ内に完全に記述される印刷文書データの方式)である場合には、ページ割当部112は、各RIP部120に対してそれぞれ異なるページのPDLデータを順に供給し、そのページをRIP処理させるようにしてもよい。また、別の例では、ジョブ管理部110は全てのRIP部120に印刷文書データ全体を提供し、ページ割当部112はその印刷文書データの中で処理すべきページの番号を各RIP部120に順に指示するようにしてもよい(この方式は、ページ独立、ページ非独立を問わず適用可)。
また、各RIP部120に対するページ割当方式も特に限定されない。ページ割当部112は、例えばRIP部120に対してあらかじめ定められた順序に従い、RIP部120−1,120−2,…,120−nに対して1,2,…nページと順にページを割り当てる動作を繰り返してもよい。また、別の例として、最初は各RIP部112に順にページを割り当て、その後は割り当てたページのRIP処理を完了した順にページの割当を行う方式も可能である。
また、更に別の例として、各ページのRIP処理負荷量を事前(RIP処理の開始前)に見積もって、その見積もり結果に従って各RIP部120に割り当てるページをスケジューリングする方式も考えられる。ページのRIP処理負荷量は、例えば、ページに含まれる個々のオブジェクトのRIP処理負荷量を、全オブジェクトにわたって総和することで求められる。個々のオブジェクトのRIP処理負荷量は、例えば、そのオブジェクトの複雑さやサイズ(面積)などから求められる。オブジェクトの複雑さは、そのオブジェクトの種類(イメージ、フォント、グラフィックスなど)などに応じて決まっている。一般に、オブジェクトの数が多いほど処理負荷は高い。また、イメージのオブジェクトは図形オブジェクトよりも一般に処理負荷が高い。また、サイズが大きいほど一般に処理負荷が高い。このような各種のパラメータからページの処理負荷を推定する方式には様々な公知技術があり、第1例でもその公知技術を用いればよい。
また、各RIP部120の現在の負荷、ページのRIP処理の進捗度、処理能力(CPUの速度など)、各RIP部120がRIP処理しているページのRIP処理負荷量、割り当て対象のページのRIP処理負荷量などのパラメータのうちの一以上を考慮して、ページ割当のスケジューリングを行ってもよい。スケジューリングでは、それら例示したパラメータのうちの一部又は全部を総合的に考慮した上で、例えば、割り当て対象のページのRIP処理を最も早く完了できるRIP部120を特定し、そのRIP部120にそのページを割り当てる。この例では、ページ割当部112は、例えば、各RIP部120がRIP処理しているページのRIP処理負荷量と処理の進捗度とから、未だ処理されずに残っているRIP処理負荷量を求める。そして、この残りのRIP処理負荷量に割り当て対象のページのRIP処理負荷量を加算し、その加算結果を処理能力(あるいは処理能力から現在の負荷を減じた結果である正味の処理能力)で除することで、現在時点から残りのRIP処理負荷量と割り当て対象のページのRIP処理負荷量を合わせた量の処理を完了するまでに要する時間の表す指標値を得る。そして、各RIP部120についてそのような指標値を求め、比較することで、割り当て対象のページのRIP処理を最も早く完了できるRIP部120を特定する。
なお、このような評価のためのパラメータのうち、各RIP部120の処理能力は、システム管理者等があらかじめジョブ管理部110に登録しておけばよい。また、各RIP部120がRIP処理しているページや割り当て対象のページのRIP処理負荷量は、上述のようにして求めればよい。各RIP部120の現在の負荷やRIP処理の進捗度は、次に説明する負荷監視部114が監視する。
負荷監視部114は、各RIP部120の負荷状態を監視する機能モジュールである。例えば、負荷監視部114は、各RIP部120から定期的に当該RIP部120の現在の負荷の情報を受け取る。RIP部120の負荷の情報には、例えばRIP部120のプログラムを実行しているコンピュータのCPU(中央演算装置)使用率や、CPUが実行中のアクティブプロセスの数、そのコンピュータにて仮想メモリが使用中であるかどうかの情報(例えばメモリスワッピングが起こっているかどうか)などがある。RIP部120の現在の負荷をCPU使用率で代表してもよいし、CPU使用率の他にアクティブプロセス数や仮想メモリの使用状況などといった他のパラメータも総合して負荷評価値を求めてもよい。
また、負荷監視部114は、各RIP部120から、それぞれ割り当てたページについてのRIP処理の進捗度合い(例えばページの何%までRIP処理が完了したか)について情報を、例えば定期的に、あるいは一定割合ずつ進捗するごとに、取得してもよい。また、RIP部120から定期的に取得される進捗度合いの時間的な変化率、または一定割合ずつ進捗するごとの時間間隔から求められる進捗度合いの時間的な変化率と、そのRIP部120がRIP中のページのデータサイズから、そのRIP部120の現在の正味の処理能力を推定し、この推定値を用いて、現在時点から残りのデータサイズと割り当て対象のページのデータサイズを合わせた量の処理を完了するまでに要する時間の表す指標値を算出してもよい。
なお、負荷監視部114が求めた各RIP部120の負荷状況の情報は、前述したページ割当部112の判断材料として用いられる他、キャッシュ管理にも利用し得る。すなわち、例えば、RIP部120がオブジェクトをRIP処理するときに、他のRIP部120がそのオブジェクトのRIP処理を既に開始している場合に、前者が後者の処理完了を待ってその処理結果(キャッシュデータ)を流用した方がよいのか否かを判定するのに利用し得る(詳細は後述)。
各RIP部120は、ページ割当部112から割り当てられたページのPDLデータについてのRIP処理を行う際、キャッシュメモリ140を利用することで、過去(すなわち割り当てられたページより前のページ群)のRIP処理結果を再利用する。すなわち、各RIP部120は、割り当てられたページに含まれるオブジェクトのPDLデータをRIP処理する際、そのオブジェクトのRIP処理結果がすでにキャッシュメモリ140内にあれば、RIP処理は行わずにキャッシュメモリ140内のRIP処理結果を再利用することで、ページの印刷画像データに対してそのオブジェクトの画像を加える。なお、オブジェクトは、ひとまとまりの描画単位のことであり、例えば1つのPDL描画コマンドで表される。一方、オブジェクトのRIP処理結果がキャッシュメモリ140内にない場合は、RIP部120はそのオブジェクトのPDLデータをRIP処理することで、ページの印刷画像データに対してそのオブジェクトの画像を加える。また、このとき生成されたオブジェクトのRIP処理結果は、後の再利用のために、キャッシュメモリ140に登録(キャッシュ)される。
キャッシュメモリ140にキャッシュされるRIP処理結果(キャッシュデータ)は、ビットマップ形式のものであってもよいし、中間言語形式のものであってもよい。キャッシュメモリ140から読み出したキャッシュデータがビットマップ形式のものであれば、RIP部120はそのキャッシュデータをページの印刷画像データに単に付加(合成)すればよい。また、キャッシュメモリ140から読み出したキャッシュデータが中間言語形式のものであれば、RIP部120はそのキャッシュデータに対して更にRIP処理を施すことでビットマップ形式の画像を生成し、生成したビットマップ形式の画像をページの印刷画像データに単に付加(合成)すればよい。
このようなキャッシュメモリ140に対する各RIP部120の読み書き(キャッシュされたRIP処理結果の読み出し、及びRIP処理結果のキャッシュメモリへの登録)を管理するのがキャッシュ管理部130である。キャッシュ管理部130は、エントリ管理テーブル132を備えており、このエントリ管理テーブル132に基づいて、各RIP部120によるキャッシュ利用を制御する。
図2にエントリ管理テーブル132のデータ内容の一例を示す。図2の例では、最上部の見出し行以外の各行が、それぞれ1つのキャッシュエントリについての管理レコードを示している。キャッシュエントリは、印刷文書データ内のオブジェクトごとに用意される。個々のキャッシュエントリの管理レコードには、ID、ステージ、データ作成中のRIP、累計問合せ回数、使用カウンタ、キャッシュ領域のアドレス、キャッシュデータのサイズ、スコア、オブジェクト属性などの項目が含まれる。
「ID」は、キャッシュエントリを識別するための一意な識別情報である。PDLの中には、イメージ(ビットマップ)やフォント、フォーム(定型画像)等といった、ジョブ内で何度も再利用される可能性のあるオブジェクトに対してIDを割り当て、印刷文書データ内にて各オブジェクトのIDを記述するものもある。例えばPDF(Portable Document Format)がその一例である。このようなPDLで記述された印刷文書データを処理する場合には、印刷文書データ中のオブジェクトのIDをキャッシュエントリのIDとして流用してもよい。また、別の例として、キャッシュ管理部130が個々のオブジェクトを識別してIDを付与してもよい。この場合、オブジェクトの識別は、例えば、PDLの描画コマンドとそのコマンドに付随するパラメータ群の組合せに基づき行えばよい。例えば、描画コマンドとそのコマンドに付随するパラメータ群の組合せが同じオブジェクトは、同一のオブジェクトと判定するなどの方式を用いればよい。
「ステージ」は、当該キャッシュエントリの現在の状態(言い換えれば、オブジェクトのRIP結果のキャッシュ状態)を示す情報である。ステージは、ステータスとも呼ばれる。第1例では、“New Cache”、“Caching”、“Cached”、“Cached Out”、及び“Never Cache”の5つのステージを用いている。これら各ステージの詳細については後で説明する。
「データ作成中のRIP」は、“New Cache”(「作成中」)ステージにあるキャッシュエントリについての項目であり、当該エントリのキャッシュデータを作成中のRIP部120の識別情報を示す。この項目は、ある第1のRIP部120があるオブジェクトをRIP処理しようとする時に、別の第2のRIP部120がそのオブジェクトのキャッシュデータを作成中である場合に、第1のRIP部120が第2のRIP部120によるキャッシュデータの作成完了を待つか待たないかの判定のための1つの材料として用いられる(具体例は後述)。この判定に「データ作成中のRIP」の情報を用いない例もあり、そのような例ではこの項目は不要である。なお、この項目に登録されたRIP部120の識別情報は、そのRIP部120からのキャッシュのための領域確保要求(後述)に対して確保失敗を返したとき、又はそのRIP部120からキャッシュデータの登録要求(後述)を受け取ったときに、キャッシュ管理部130により、作成中のRIPがないことを示す値にリセットされる。
「累計問合せ回数」は、印刷文書データの先頭ページの先頭部分からRIP処理を開始した後、現在時点までの間に、RIP部120群から当該キャッシュエントリについての問合せを受けた回数の累計値である。
「使用カウンタ」は、当該キャッシュエントリのキャッシュデータが現在いくつのRIP部120により使用されているかを示す数である。ここで、RIP部120によるオブジェクトのキャッシュデータの「使用」とは、RIP部120が、現在作成中のページの印刷画像データに対しそのオブジェクトのビットマップ画像を合成するために、そのオブジェクトのキャッシュデータが読み出して用いることを意味する。
「キャッシュ領域のアドレス」は、当該キャッシュエントリのキャッシュデータ(すなわちRIP処理結果のビットマップ形式又は中間言語形式のデータ)が格納されるキャッシュメモリ140内のアドレス(例えば先頭アドレス)を示す。RIP結果のキャッシュデータがキャッシュメモリ140内に記憶されている(すなわち後述する“Cached”ステージの)キャッシュエントリについては、もちろんこの項目にアドレスが登録されている。キャッシュすることは決まっているがまだキャッシュデータが完成していない(すなわち後述する“New Cache”ステージの)オブジェクトのキャッシュエントリについても、アドレスを割り当ててこの項目に登録するようにしてもよい。逆に、RIP結果をキャッシュする価値がそもそもないと判定されたオブジェクト(後述する“Never Cache”ステージ)のキャッシュエントリや、キャッシュデータがキャッシュメモリ140から追い出された(すなわち、削除された。後述する“Cached Out”ステージの)キャッシュエントリについては、この項目の値は空値となる。
「キャッシュデータのサイズ」は、当該キャッシュエントリのキャッシュデータのデータサイズを示す情報であり、例えばバイト、キロバイト、又はメガバイトなどの単位で表される。キャッシュデータがビットマップ形式の場合、そのデータサイズは当該キャッシュデータが表す画像の面積に対応する。例えば、イメージやフォーム、フォントなどのオブジェクトの画像サイズを描画コマンドの引数として明示するPDLも多く(例えばPDF)、このようなPDLの場合、例えばRIP部120が当該オブジェクトについてのPDL記述から画像サイズの情報を求め、その画像サイズからキャッシュデータのデータサイズが求めてエントリ管理テーブル132に登録してもよい。
「スコア」は、当該キャッシュエントリの優先度を示す評価値である。キャッシュメモリ140の容量には限りがあるので、全てのキャッシュエントリのキャッシュデータがキャッシュメモリ140内にキャッシュ(記憶)できない場合には、スコア(優先度)が相対的に高いキャッシュエントリの方が、スコアが相対的に低いキャッシュエントリよりも優先的にキャッシュされる。スコアの値は、キャッシュを利用することによる効果が高いものほど高い値となるよう、あらかじめ定めた関数等に基づき計算する。例えば、RIP処理の負荷が大きいオブジェクトほど、キャッシュデータを再利用した場合の効果が大きい。
また、キャッシュデータをキャッシュメモリ140から読み出すためには、その読み出しの準備や完了などのプロトコルのために、キャッシュデータのデータサイズによらず一定のオーバーヘッド時間を要するが、そのオーバーヘッド時間はキャッシュデータのサイズが小さいほど相対的な割合は大きくなる。キャッシュデータのサイズが小さいほど、元のPDLデータからそのキャッシュデータをRIPするのに要する時間は短い。場合によっては、キャッシュデータを読み出すよりも、元のPDLデータから描画した方が早いこともある。したがって、キャッシュデータのサイズが小さくなるほど、当該オブジェクトのRIP結果をキャッシュする意義・効果は小さくなる。
また、同じオブジェクトが描画される回数が多いほど、そのオブジェクトのRIP結果をキャッシュする意義・効果は大きくなる。
第1例では、このような考え方に従って、各キャッシュエントリのスコアを計算する。
スコアを決めるパラメータとしては、例えば、オブジェクトの種類がある。イメージ(ビットマップ)の方が、フォントやグラフィックス(図形)よりも一般的にRIP処理の負荷が大きいため、キャッシュの効果が高くなり、従ってスコアも高くなる。
また、オブジェクトの複雑さを、スコアを決めるパラメータとして用いてもよい。オブジェクトの複雑さは、例えば、そのオブジェクトに含まれる子オブジェクトの数や種類などから定義する。すなわち、フォーム(定型書式を表すオブジェクト)などのオブジェクトは、イメージやテキストなどといった子オブジェクトの組合せにより表現される。このようなオブジェクトについては、例えば、各オブジェクト種類に属する子オブジェクトの数とその種類に固有の重みとの積を、全種類にわたって総和するなどの方式で、そのオブジェクトの複雑さを求める。オブジェクト種類に固有の重みは、キャッシュ効果が高い種類ほど大きな値となる正の数である。例えば、イメージの重みは、グラフィックスやテキストの重みよりも大きい。このようにして求められた複雑さが高い(例えば数値として大きい)ほど、スコアも高くなる。もちろん、複雑さの求め方はこの例に限られるものではない。オブジェクトを記述するPDLデータの長さ(データサイズ)やそのデータに含まれるコマンド数などを考慮して複雑さを規定してもよい。
また、オブジェクト種類が同じ子オブジェクトを一律に扱うのではなく、その子オブジェクトの属性(例えば、ビットマップに展開した場合の画像のサイズや、そのオブジェクトを描画するために必要な処理の種類など)に応じて、個々の子オブジェクトの重みを求めてもよい。
例えば、イメージの場合、色空間変換(例えばRGBからCMYKへの変換)が必要なオブジェクトの方が、そうでないオブジェクトよりも処理負荷が重いので、色空間変換がある場合とない場合とで重みを異ならせてもよい。また、描画のための拡大率が小さい方が処理負荷が重いので、拡大率に応じて異なった重みとしてもよい。また、描画のために元のイメージデータを回転させる回転角に応じて、重みを異ならせてもよい。異なる回転角同士の間での処理負荷の比較では、例えば、回転角が0度の場合が最も処理負荷が軽く、90度、180度、270度などといった90度刻みのよく用いられる回転角の場合の処理負荷は、0度の場合よりも重いが、それ以外の自由な回転角の場合よりも軽い。また、そのような色空間変換や拡大、回転などの処理の対象となる元のイメージデータのサイズが大きいほど、処理対象の画素数が増えるので、処理負荷は重くなる。したがって、元のイメージデータの画素数に応じて重みを異ならせてもよい。
また、オブジェクトの種類によらず、オブジェクトの形状(フォントの場合の形状とは、フォントの形状ではなく、フォントを表現するビットマップの形状のこと)が長方形か否か、すなわち、クリップされているか否か(オブジェクトが長方形の場合はクリップが不要であり、長方形でなければクリップが必要である)、に応じて重みを異ならせてもよい。一般的に長方形(クリップされていない)の場合の方が処理負荷が軽い。
また、フォントオブジェクトの場合も、イメージオブジェクトと同様、回転しているか否か、あるいは回転角に応じて重みを異ならせてもよい。
また、オブジェクトの描画に当たってスムースシェード処理(グラデーション処理)を行う場合は、処理負荷が重くなる。一般に、スムースシェードの処理負荷は、イメージの描画よりも軽いが、グラフィックスやテキストの描画よりも重い。したがって、スムースシェード処理を行うか否かで異なる重みを用いてもよい。また1つのオブジェクト内でのスムースシェード処理による色の変化の量に応じても処理負荷が変わるので、スムースシェード処理を行う場合、その処理での色の変化量に応じて重みを異ならせてもよい。
1つのオブジェクトについての総合的な重みは、以上に例示した様々な属性パラメータ(例えば、色空間変換の有無、拡大率、回転角、クリップ処理の要否、スムースシェード処理の要否など)についての重みを総合(例えば乗算や加算など。具体的な総合のための演算の仕方は、重みの値の決め方などといった実装に依存する)することで求めればよい。
また、オブジェクトを記述するPDLデータのサイズを、スコアを決めるパラメータとして用いてもよい。PDLデータのサイズが大きいほど、例えばRIP処理のための解釈処理に時間を要するため、RIP処理の負荷が大きくなると言える。したがって、一例では、PDLデータのサイズが大きくなるほどスコアが高くなる。
また、同様の考え方で、オブジェクトを記述するPDLデータをRIP処理するのに要する時間を、スコアを決めるパラメータとして用いてもよい。この所要時間は、例えば当該オブジェクトのPDLデータをRIP処理した時に求めればよい。
また、オブジェクトのキャッシュデータ(すなわちRIP処理結果のビットマップ又は中間言語形式のデータ)のサイズを、スコアを決めるパラメータとして用いてもよい。例えば、前述した理由からキャッシュデータのサイズが小さくなるほど、当該オブジェクトのRIP結果をキャッシュする意義・効果は小さくなるので、一例では、キャッシュデータのサイズが大きくなるほどスコアが高くなる。また、ビットマップ形式のキャッシュデータをページに描画(すなわちページの印刷画像データに合成)するのには、データのサイズ(画素数に比例)に応じた時間がかかるので、この意味でも、キャッシュデータのサイズはスコアを決めるパラメータとなる。
また、同様の考え方で、キャッシュメモリ140とRIP部120との間でオブジェクトのキャッシュデータを転送するのに要する時間を、当該オブジェクトのスコアを決めるパラメータとして用いてもよい。例えば、転送に要する時間が長いほど、キャッシュ転送のためのオーバーヘッド時間の割合が相対的に低くなるので、キャッシュすることによるペナルティが相対的に低い(逆に言えば、キャッシュの効果が高い)と言える。
また、中間言語形式のデータをキャッシュする場合には、中間言語形式のキャッシュデータをRIP部120がビットマップ形式にRIPするのに要する時間を、スコアを決めるパラメータとして用いてもよい。この所要時間が短いほど、キャッシュデータを再利用することの効果が大きいので、スコアも高くなる。
また、RIP部120は、オブジェクトのRIP処理を開始しようとする際、キャッシュ管理部130にそのオブジェクトのキャッシュデータがあるか否かを問い合わせ、あればそのキャッシュデータを利用するが、そのような問合せの回数が多いほど、キャッシュしておく価値が高いといえる。したがって、前述の累計問合せ回数を、スコアを決めるパラメータの1つとして用いてもよい。累計問合せ回数が多いほどスコアは高くなる。
なお、各キャッシュエントリの累計問合せ回数は、時間の経過に従って単調増加する(すなわち減りはしない)。したがって、一例では、時間の経過に従った累計問合せ回数の単調増加に応じて、全てのキャッシュエントリのスコアが単調増加するようにしてもよい。
また、スコアの本質は、キャッシュエントリ同士の間でキャッシュする価値に関する優劣の順位付けをするものなので、別の例では、判断する時点ごとに全キャッシュエントリのスコアをあらかじめ定められた範囲内の値へと正規化してもよい。この場合、累積問合せ回数が増えてもスコアの値そのものは上昇するとは限らない。ただし、累積問合せ回数の増加度合いが他のキャッシュエントリより多ければ、そのスコアの全キャッシュエントリ内での順位は上昇する。
以上に例示したパラメータはあくまで例に過ぎず、その他のパラメータも考えられる。スコアは、それらパラメータのうちの1以上に基づき計算すればよい。キャッシュ管理部130は、この計算のために、例えば、それらパラメータのうちの1以上を引数とする関数、または、それらパラメータのうちの1以上に対応づけてスコアを登録したテーブルなどを用いる。なお、このようにキャッシュ優先度を表すスコアを計算する関数やテーブルは、従来も用いられており、そのような公知の関数又はテーブルを用いてもよい。
再び図2の説明に戻り、エントリ管理テーブル132に登録される項目「オブジェクト属性」は、当該オブジェクトの1以上の属性項目の情報が含まれる。オブジェクトの属性項目には、例えば、オブジェクトの種類、オブジェクトを表すPDLデータのサイズ、オブジェクトの複雑さなどが含まれる。これら属性項目の情報は、例えば、既に前述のスコアについての説明の中で示した方法等を用いて、当該オブジェクトのPDL記述を解析することで求めればよい。これら各属性項目は、例えば前述のスコアを計算するのに用いられる。
キャッシュ管理部130は、エントリ管理テーブル132を参照して、各RIP部120からのキャッシュメモリ140への読み書きのアクセスに応答する。また、キャッシュ管理部130は、そのようなアクセス等に応じて、エントリ管理テーブル132のデータ内容の更新を行う。キャッシュ管理部130の処理動作については、後で具体例を挙げて更に詳細に説明する。
各RIP部120は、担当するページのPDLデータに対してRIP処理を行い、またそのページ内のオブジェクトのうちキャッシュメモリ140内にキャッシュデータがあるものはそのキャッシュデータを用いることで、割り当てられたページの印刷画像データを生成する。そして、RIP部120は、生成したページの印刷画像データを印刷制御装置210に送る。
以上に説明した印刷文書変換システム100の構成要素のうち、キャッシュメモリ140は、例えば、ランダムアクセスメモリなどの高速に読み書きが可能なメモリから構成される。また、キャッシュメモリ140以外の各構成要素、すなわちジョブ管理部110、各RIP部120及びキャッシュ管理部130は、前述及び後述するそれら各構成要素の機能を記述したプログラムをコンピュータに実行させることにより実現される。1つの例では、ジョブ管理部110、各RIP部120及びキャッシュ管理部130が共通の1つのコンピュータ上にて実現されてもよい。この場合、各構成要素同士の情報のやりとりは、例えばプロセス間通信やスレッド間通信により行えばよい。また別の例では、ジョブ管理部110、各RIP部120及びキャッシュ管理部130が、それぞれ別々のコンピュータ上に実現されてもよい。この場合、各構成要素同士の情報のやりとりは、例えば、それら各要素間を結ぶネットワークのプロトコルを用いて行えばよい。また、更に別の例では、それら各構成要素のうちの2以上を1つのコンピュータ上に実現することで、印刷文書変換システム100全体をそれら構成要素の数よりも少ない数のコンピュータで実現してもよい。例えば、ジョブ管理部110とキャッシュ管理部130とを同一のコンピュータに実装し、両者が管理するデータベース(例えばジョブ管理部110が管理する各オブジェクトの情報と、キャッシュ管理部130が管理するエントリ管理テーブル132)を一元化することも考えられる。いずれの場合も、キャッシュメモリ140は、キャッシュ管理部130が実装されるコンピュータ上のメモリに構築する。また、いずれの場合も、使用するコンピュータは、シングルプロセッサのものでもマルチプロセッサのものでもよい。マルチプロセッサのコンピュータを用いる場合は、マルチプロセッサを構成する個々のプロセッサコアをそれぞれ別々のRIP部120に割り当てるなどの運用も考えられる。
プリンタエンジン220は、印刷画像データが表す画像をインクやトナーなどの色材を用いて用紙に対して印刷する印刷ハードウエアである。印刷制御装置210は、プリンタエンジン220を制御する装置であり、通信ケーブルやネットワーク(ホストコンピュータ200・印刷文書変換システム100間のネットワークと同じものでも異なるものでもよい)を介して印刷文書変換システム100と通信する。そして、その通信により、各ページの印刷画像データを受信したり、印刷制御のために必要な各種の制御情報をやりとりしたりする。また、印刷制御装置210は、受信した各ページの印刷画像データを蓄積し、印刷順序に従ってプリンタエンジン220に供給する。プリンタエンジン220は、受け取った印刷画像データを用紙に印刷する。
さて、複数のRIP部120が、キャッシュメモリ140を介してRIP処理結果を再利用しつつ並列的に動作するシステムでは、あるRIP部120(第1のRIP部と呼ぶ)があるオブジェクトのRIP処理を開始しようとした時点で、別のRIP部120(第2のRIP部と呼ぶ)がそのオブジェクトのRIP処理を実行中である場合がある。このような状況では、キャッシュメモリ140にはそのオブジェクトのRIP処理結果のキャッシュデータはまだ存在しない。このような状況では、第1のRIP部の取り得る選択肢としては、次の2つが考えられる。最初の選択肢は、第2のRIP部のRIP処理完了を待って、その完了に伴ってキャッシュメモリ140に登録されたキャッシュデータを利用するという処理である。第2の選択肢は、第2のRIP部のRIP処理完了を待たずに、同じオブジェクトのPDLデータのRIP処理を行うというものである。しかし、従来のRIP結果のキャッシュ管理方式では、第1のRIP部からの問合せに対してキャッシュメモリ側はキャッシュデータがあるかないか(すなわち“Hit”(ヒット)又は“Miss”(ミス))の応答しか返さない。すなわち、前述の状況では、キャッシュメモリ側は、第1のRIP部に対して、問い合わせたオブジェクトのキャッシュデータが無い(“Miss”)旨の応答をすることになる。この場合、当該オブジェクトのキャッシュデータを他のRIP部が作成中であることが分からない以上、第1のRIP部には選択肢はそもそも無く、そのオブジェクトのPDLデータをRIP処理するしかない。また、第1のRIP部は、そのRIP処理結果を、第2のRIP部のRIP処理結果と重複してキャッシュメモリに登録しようとすることになる。
これに対し、第1例では、第1のRIP部から問い合わせられたオブジェクトのキャッシュデータが第2のRIP部で既に作成中であるが未完成である場合、キャッシュ管理部130がその状況を第1のRIP部に通知することで、第1のRIP部がその状況に応じた処置をとれるようにする。そのための構成を、以下に詳しく説明する。
《第1例の状態遷移》
そこで、まず図3を参照して、キャッシュ管理部130での管理のために用いられる、キャッシュエントリのステージ(Stage)について説明する。第1例では、キャッシュエントリのステージ(すなわちステータス)として、“New Cache”、“Caching”、“Cached”、“Cached Out”、及び“Never Cache”の5つを用いている。説明の便宜上、それら5つのステージに対して1から順に通し番号を割り当てる。図3は、それら5つのステージ間の状態遷移図である。
<ステージ1> “New Cache”(新規キャッシュ、すなわちキャッシュデータ「作成中」)は、当該キャッシュエントリのキャッシュデータが作成中であり、まだキャッシュメモリ内には存在しないことを示すステージである。キャッシュ管理部130は、いずれかのRIP部120からあるオブジェクトについてのキャッシュデータについての最初の問合せを受けた時に、当該オブジェクトに対応するキャッシュエントリを生成し、そのキャッシュエントリのステージを“New Cache”とし、そのRIP部120に“Miss”(「キャッシュデータがない」)を応答することで、そのRIP部120にそのオブジェクトのRIP処理(すなわちキャッシュデータの作成)を開始させる。
また、後述する“Caching”ステージにあるキャッシュエントリに対していずれかのRIP部120から問合せがあった場合、そのエントリのステージは“New Cache”に遷移する。
“New Cache”ステージにあるキャッシュエントリに対してRIP部120から問合せがあると、キャッシュ管理部130は、“Creating”というコードを応答する。応答“Creating”は、当該キャッシュエントリのデータが別のRIP部120により作成中であることを示す。
<ステージ2> “Caching”(空き待ち)は、キャッシュ領域が空くのを待機する状態である。“Caching”ステージは、当該キャッシュエントリのキャッシュデータがキャッシュメモリ140内にないという点では上述の“New Cache”ステージと同じであるが、どのRIP部120もそのキャッシュデータを現在作成中ではない点で、上述の“New Cache”とは異なる。
“Caching”ステージへ遷移する1つの例は、前述したステージ1“New Cache”からの遷移である。すなわち、“New Cache”ステージにあるキャッシュエントリについていずれかのRIP部120がキャッシュデータを作成しようとする際に、キャッシュメモリ140内にそのキャッシュデータを記憶する領域が空いていなければ、当該キャッシュエントリは“Caching”ステージに遷移する。“Caching”ステージにあるキャッシュエントリは、時間の経過に伴って他のキャッシュエントリのキャッシュデータがキャッシュメモリ140から追い出され(すなわち削除され)、当該キャッシュエントリのための空き領域ができるのを待つ。
ただし、“New Cache”から“Caching”への遷移は、当該キャッシュエントリがキャッシュする価値があると判定された場合のことである。当該キャッシュエントリがキャッシュする価値がないと判定された場合(例えばスコアが、現在キャッシュメモリ140内にキャッシュデータのある他のいずれのキャッシュエントリよりも低い場合)には、ステージは“Caching”にではなく次に説明する“Cached Out”(キャッシュ外)に遷移する。
また、“Caching”ステージに遷移する別の例としては、後述するステージ4すなわち“Cached Out”(キャッシュ外)ステージからの遷移がある(詳細は“Cached Out”ステージの説明にて述べる)。
“Caching”ステージにあるキャッシュエントリに対していずれかのRIP部120から問合せがあると、キャッシュ管理部130は、そのキャッシュエントリのステージを1すなわち“New Cache”に遷移し、“Miss”(「キャッシュデータがない」)を応答する。これに応じ、RIP部120は、そのキャッシュエントリのキャッシュデータの作成のための処理を開始する。
<ステージ3> “Cached”(キャッシュ済)は、当該キャッシュエントリのキャッシュデータがキャッシュメモリ140内に記憶されている状態である。“Cached”ステージには、前述したステージ1“New Cache”から遷移する。すなわち、“New Cache”ステージにあるキャッシュエントリについていずれかのRIP部120がキャッシュデータを作成しようとする際に、キャッシュメモリ140内にそのキャッシュデータを記憶する領域が確保でき、その領域にキャッシュデータが作成され登録されると、当該キャッシュエントリは“Cached”ステージに遷移する。
“Cached”ステージにあるキャッシュエントリにいずれかのRIP部120から問合せがあると、キャッシュ管理部130は、“Hit”(「キャッシュデータがある」)を応答する。この応答を受けたRIP部120は、自らPDLデータをRIP処理する代わりに、キャッシュメモリ140からそのキャッシュデータを受け取ってそのオブジェクトの画像を生成する。
“Cached”ステージにあるキャッシュエントリは、キャッシュメモリ140の空き容量が少なくなると、“Cached Out”(キャッシュ外)に遷移する場合がある。概略的には、新たなキャッシュエントリのキャッシュデータをキャッシュメモリ140へ登録するよう要求された時に、そのキャッシュデータのデータ量がキャッシュメモリ140の空き容量を超えている場合、“Cached”ステージにあるキャッシュエントリの中から選ばれたエントリのキャッシュデータがキャッシュメモリ140から追い出される(削除される)。キャッシュメモリ140から追い出されるのは、例えば、その時点でいずれのRIP部120からもキャッシュデータが使用(参照)されていないキャッシュエントリである。このようにしてキャッシュデータが追い出されたキャッシュエントリのステージは、“Cached”から“Cached Out”に遷移する。また、その時点でいずれかのRIP部120からキャッシュデータが使用(参照)されているキャッシュエントリについては、使用中のRIP部120への悪影響を避けるには、その使用が終わるまではキャッシュデータを追い出せないが、使用が終われば追い出してもよくなる。そこで、キャッシュデータが使用中の段階でそのキャッシュエントリのステージを“Cached Out”に遷移させることで、いわば追い出しの予約を行ってもよい。追い出しの対象となるキャッシュエントリをスコアにより絞り込んでもよい。
<ステージ4> “Cached Out”(キャッシュ外、すなわち追い出し済)は、当該キャッシュエントリのキャッシュデータがキャッシュメモリ140から追い出された状態、又は追い出しの予約をされている状態である。このステージにあるキャッシュエントリのキャッシュデータは、キャッシュメモリ140内にはなく(「追い出し予約」の場合は、キャッシュデータは現時点ではキャッシュメモリ140内にあるが、極めて近い将来、なくなってしまう)、且つそのキャッシュデータはどのRIP部120によっても作成されてはいない。なお、「追い出し予約」の場合は、キャッシュデータは現時点ではキャッシュメモリ140内にあるが、極めて近い将来、なくなってしまう。
“Cached Out”ステージには、前述した通りステージ3“Cached”から遷移する。
また、特定の場合に、ステージ1当該文書要素の画像データが前記キャッシュメモリ内になく且ついずれかのデータ処理装置が当該画像データの作成中である「作成中」状態で有る旨を示す「作成中」応答であった場合、“New Cache”にあるキャッシュエントリをこの“Cached Out”ステージに遷移させてもよい。例えば、当該キャッシュエントリのスコアが、キャッシュする価値が十分にあるとみなされない程低い場合には、そのキャッシュエントリにキャッシュデータを登録せずに、そのキャッシュエントリを“Cached Out”に遷移させる。キャッシュする価値が十分にあるとみなされない程低い場合の例としては、当該キャッシュエントリのスコアが、キャッシュ中(“Cached”)のどのキャッシュエントリのスコアよりも低い場合がある。また、キャッシュに値するか否かのスコアの閾値を定めておき、当該キャッシュエントリのスコアがこの閾値よりも低い場合に、キャッシュを行わずにステージを“Cached Out”に遷移させるようにしてもよい(後述の図24の例を参照)。
“Cached Out”ステージにあるキャッシュエントリにいずれかのRIP部120から問合せがあると、キャッシュ管理部130は、“Deleted”(「キャッシュデータは削除済」)を応答する。この応答を受けたRIP部120は、当該オブジェクトの元のPDLデータを自らRIP処理することで、当該オブジェクトの印刷画像データを生成する。ただし、このとき、RIP部120は、生成した印刷画像データをキャッシュメモリ140に登録することはしない。当該キャッシュエントリは、キャッシュデータをキャッシュする価値がないと判定された状態だからである。
“Cached Out”ステージは、キャッシュメモリ140内に当該キャッシュエントリのデータがないという点では、前述の“New Cache”ステージ及び“Caching”ステージと同じである。しかし、“New Cache”及び“Caching”の場合は問合せに対して“Miss”を応答するのに対し、“Cached Out”の場合は問合せに対して“Delete”を応答する。これら2つの応答の違いは、“Miss”の場合は問合せ元のRIP部120はRIP処理で作成した画像データをキャッシュ登録しようとするのに対し、“Delete”の場合は問合せ元のRIP部120はRIP処理で作成した画像データをキャッシュ登録しないという点である。すなわち、“Cached Out”ステージにあるキャッシュエントリは、RIP部120から問合せがあっても、キャッシュデータがキャッシュメモリ140内に登録されることはない。これは、例えば、キャッシュする価値が低いといったんみなされたキャッシュエントリのキャッシュデータが、キャッシュメモリ140内に出たり入ったりを繰り返すことによる処理のオーバーヘッドを避けるためである。このように、この第1例では、キャッシュする価値が低いといったんみなされたキャッシュエントリのキャッシュデータは、しばらくはキャッシュメモリ140内に戻らないようにしている。
しかし、そのようなキャッシュエントリに対して問合せが増えてくると、それに応じて当該キャッシュエントリのスコアが高くなり、キャッシュメモリ140内にデータのある他のキャッシュエントリよりも相対的にキャッシュする価値が高くなる場合も出てくる。そこで、この第1例では、“Cached Out”ステージにあるキャッシュエントリについて定期的な見直しを行う(例えば、後述する図15の例を参照)。すなわち、“Cached Out”ステージにあるキャッシュエントリのスコアを例えば定期的にチェックし、スコアが再登録に値するほど十分に高くなっていれば、そのエントリを前述の“Caching”ステージに遷移させる。あるキャッシュエントリのステージが“Cached Out”から“Caching”に遷移すると、その後に当該エントリに対して問合せが到来すると、そのエントリのステージが“New Cache”に遷移し、そのエントリのキャッシュデータの作成・登録のための処理が開始される。
<ステージ5> “Never Cache”(キャッシュ対象外)は、当該キャッシュエントリに対応するオブジェクトが、あらかじめ定められた制限条件に抵触し、キャッシュの対象外であると判定された状態である。この制限条件は、例えば、スコアを他のキャッシュエントリと比較するまでもなく、キャッシュする価値がないと判断されるオブジェクトを規定する条件である。
例えば、余りにも小さいオブジェクトや、余りにも単純なオブジェクト(例えば直線分一本のみ)は、キャッシュメモリ140からキャッシュデータを読み出すよりもRIP120が自ら描画した方が早い。そこで、オブジェクトのサイズ又は複雑さなどに関してそれぞれ条件(例えば閾値)を設定しておき、キャッシュしようとするオブジェクトのサイズ又は複雑さなどがそれぞれ対応する条件を満たす(例えば閾値よりも小さい又は低い)場合は、そのオブジェクトに対応するキャッシュエントリを“Never Cache”ステージに遷移させる。なお、サイズ又は複雑さなどについての条件の組合せ方は、AND条件(全ての条件が満たされて初めて“Never Cache”に遷移)でもOR条件(いずれかの条件が満たされて初めて“Never Cache”に遷移)でも、どちらでもよい。
また、効率の観点等から、キャッシュするオブジェクトの形状をページの縦横の辺に平行な矩形に限定している場合には、矩形以外の形状のオブジェクトは制限条件に抵触することになり、そのオブジェクトのキャッシュエントリは“Never Cache”ステージとなる。
“Never Cache”ステージにあるキャッシュエントリに対していずれかのRIP部120から問合せがあると、キャッシュ管理部130は、“Invalid”(「キャッシュ無効」)を応答する。これに応じ、RIP部120は、当該オブジェクトのPDLデータをRIP処理する(そして、RIP処理結果はキャッシュしない)。
以上、キャッシュエントリのステージについて説明した。以上は、キャッシュ管理部130のエントリ管理テーブル132に登録されているキャッシュエントリがとり得るステージである。ところで、キャッシュ管理部130は、あるオブジェクトについての問合せを最初に受けた時に、そのオブジェクトのためのキャッシュエントリをエントリ管理テーブル132上に生成するので、その最初の問合せ以前にはキャッシュエントリは存在せず、したがってキャッシュエントリのステージもない。しかし、キャッシュエントリはオブジェクトと対応しているので、そのような最初の問合せを受ける以前にも、オブジェクトに対応するキャッシュエントリは潜在的に存在していると考えてもよい。このように考えると、最初の問合せを受ける以前は、その潜在的なキャッシュエントリの状態は、「キャッシュメモリ140内にキャッシュデータが存在しておらず、またどのRIP部120によってもそのキャッシュデータの作成は行われていない」状態に属すると考えられる。
《RIP部120処理手順》
次に、各RIP部120の処理手順の一例を、図4〜図6を参照して説明する。
RIP部120は、それぞれ、ページ割当部112から割り当てられたページのPDLデータを先頭から順に解釈していく。この中で、新たなオブジェクトのPDLデータを見つけるごとに、図4〜図6に例示する手順を実行する。
この手順では、図4に示すように、まず、そのオブジェクトのPDLデータから、そのオブジェクトがキャッシュ対象であるかどうかを判定する(S10)。例えば、PDLの一種といえるPDFでは、オブジェクトを、フォームやイメージ(ビットマップ)、フォントなどといった繰り返し使用される可能性のある種類と、そうでない種類とに大別している。そして、前者に該当するオブジェクトにはIDを付与し、印刷文書データ中の複数の位置でそのオブジェクトが用いられる場合、同じIDでそのオブジェクトを呼び出すようにしている。逆に、IDのないオブジェクトは、繰り返し使用されることが想定されていない種類のオブジェクトである。したがって、IDが付与されたオブジェクトはキャッシュ対象であり、IDが付与されていないオブジェクトはキャッシュ対象でないと判定される。なお、PDF以外にも、オブジェクトについて同様の区別をしているPDLはあり、そのようなPDLについてはS10と同様の判定が適用される。
S10でオブジェクトがキャッシュ対象でないと判定すると、RIP部120は、そのオブジェクトのPDLデータを解釈し描画することで、そのオブジェクトのビットマップ画像を生成し、生成したビットマップ画像を作成中のページの印刷画像データへ合成し(S12)、当該オブジェクトについてのRIP処理を完了する。このとき生成したオブジェクトのビットマップ画像は、キャッシュされない。
一方、S10で当該オブジェクトがキャッシュ対象であると判定した場合、RIP部120は、そのオブジェクトのキャッシュエントリの状態をキャッシュ管理部130に問い合わせる(S14)。この問合せには、そのオブジェクトを特定する識別情報が含まれる。例えば、PDFのようにキャッシュ対象のオブジェクトにIDが付されている場合は、問合せにはそのIDを用いればよい。キャッシュエントリは、オブジェクトと一対一に対応しているので、オブジェクトのIDから、そのオブジェクトに対応するキャッシュエントリが特定される。例えば、オブジェクトのIDをキャッシュエントリのIDとして流用している場合は、オブジェクトのIDから、対応するキャッシュエントリが特定される。また、オブジェクトにIDを付さないPDLの場合には、例えば、そのオブジェクトを記述するPDLコマンドと引数の組を識別情報として問合せに含めるようにしてもよい。この場合、各キャッシュエントリには、当該エントリに対応するオブジェクトの識別情報として、PDLコマンドと引数の組(又はこれに紐付けられた識別情報)が登録しておけばよい。
この問合せの後、RIP部120は、キャッシュ管理部130からその問合せに対する応答を受け取ると、その応答の示す値を判別する(S16)。前述したように、問合せに対するキャッシュ管理部130の応答には、“Hit”、“Miss”、“Creating”、“Deleted”、“Invalid”の5種類がある。
キャッシュ管理部130からの応答が“Hit”であった場合、RIP部120は、当該オブジェクトに対応するキャッシュデータの使用開始要求をキャッシュ管理部130に送る(S18)。この使用開始要求には、当該オブジェクトに対応するキャッシュエントリを特定するIDが含まれる。この要求に応じ、キャッシュ管理部130は、要求されたキャッシュエントリのキャッシュデータをキャッシュメモリ140からRIP部120に提供する。RIP部120は、このキャッシュデータを用いて当該オブジェクトのビットマップ画像を生成し、生成したビットマップ画像を作成中のページの印刷画像データへ合成する(S20)。すなわち、キャッシュデータがビットマップ形式であれば、そのキャッシュデータをそのままページの印刷画像データへ合成すればよい。また、キャッシュデータがディスプレイリスト等の中間言語形式であれば、そのキャッシュデータに基づきそのオブジェクトを描画してビットマップ画像を生成し、そのビットマップ画像をページの印刷画像データへ合成すればよい。このようにしてキャッシュデータのRIP処理が完了すると、RIP部120はキャッシュ管理部130に対して当該キャッシュエントリの使用が終了した旨の通知(「使用終了通知」)をキャッシュ管理部130に送る(S22)。この通知には、使用していたキャッシュエントリを特定するIDが含まれる。この通知により、当該オブジェクトについてのRIP処理が終了する。
次に、S16の判定で、キャッシュ管理部130からの応答が“Miss”であった場合の処理手順を説明する。応答“Miss”は、前述した通り、「キャッシュデータがないので、作成して登録せよ」という命令に相当する。そこで、RIP部120は図5に例示する処理手順を実行する。
すなわち、RIP部120はまずキャッシュ管理部130に領域確保要求を発する(S30)。領域確保要求は、当該オブジェクトのRIP処理結果をキャッシュするための領域をキャッシュメモリ140内に確保することを指示する要求である。領域確保要求には、例えば、当該オブジェクトに対応するキャッシュエントリのID、及び確保すべき領域のサイズ(データ容量)の情報が含まれる。確保すべき領域のサイズは、当該オブジェクトのRIP処理結果(ビットマップ形式又は中間言語形式)のデータサイズであり、これはPDLデータの解析から求められる。例えば、イメージやフォーム、フォントなどのオブジェクトの画像サイズを描画コマンドの引数として明示するPDLも多く、このようなPDLの場合、画像サイズの情報からキャッシュデータのデータサイズが求められる。ビットマップ形式の場合、キャッシュデータのサイズは画像サイズに比例するからである。中間言語形式のキャッシュデータのデータ量も、PDLデータの解析から見積もり可能である。また、実際に一度RIP処理すれば中間言語形式のキャッシュデータのデータ量は正確に求められるので、それを例えばエントリ管理テーブル132に記憶しておき、再度キャッシュのための領域確保が必要となった場合に参照するようにしてもよい。
この領域確保要求に対し、キャッシュ管理部130は、要求されたサイズの領域が確保できるかどうかを判定し(詳細は後述)、その判定結果を要求元のRIP部120に応答する。RIP部120は、その応答が確保の成功及び失敗のいずれを示すものかを判定する(S31)。
S31で応答が「確保成功」であると判定した場合、RIP部120は、そのオブジェクトのPDLデータをRIP処理し、確保された領域(その応答に、この領域のアドレスが含まれている)に対して、そのRIP処理の結果を書き込む(S32)。これにより、その領域に当該オブジェクトのキャッシュデータが生成される。次に、RIP部120は、生成したキャッシュデータを用いて当該オブジェクトのビットマップ画像を生成し、生成したビットマップ画像を作成中のページの印刷画像データに合成する(S34)。このようにしてキャッシュデータの生成及びページの印刷画像データへの合成が完了すると、RIP部120は、キャッシュ管理部130に対して、そのキャッシュデータについての登録要求を発する(S36)。登録要求には、当該キャッシュエントリのIDが含まれる。この登録要求により、RIP部120は当該オブジェクトについての処理を終了する。
S31で応答が「確保失敗」であると判定された場合、それはキャッシュデータ140内には当該オブジェクトのRIP処理結果をキャッシュする余地がないということを意味する。この場合、RIP部120は、そのオブジェクトのPDLデータを解釈し描画することでビットマップ画像を生成し、そのビットマップ画像をページの印刷画像データへ合成する(S38)。そして、生成したビットマップ画像をキャッシュせずに、当該オブジェクトについての処理を終了する。
図4の説明に戻る。S16でキャッシュ管理部130からの応答が“Creating”である場合、RIP部120は図6に例示する処理手順を実行する。応答“Creating”は、前述した通り、「問合せの対象のキャッシュデータは、現在他のRIP部が作成中である」ことを意味する。第1例では、このような特徴的な応答“Creating”により、RIP部120は、目的とするオブジェクトのキャッシュデータを他のRIP部が作成中であることを知る。これにより、RIP部120には、他のRIP部によるそのキャッシュデータの完成を待つのか、待たずに自分でRIP処理を行うのかの選択の余地が生まれる。どちらを選択するかを固定的に設定してもよいし、状況に応じて動的に選択するようにしてもよい。図5では、待つ/待たないを動的に選択する場合の例を示す。
この手順では、RIP部120(第1のRIP部と呼ぶ)は、他のRIP部120(第2のRIP部と呼ぶ)によるそのキャッシュデータの完成を待ってそのキャッシュデータを利用する場合と、当該オブジェクトのPDLデータを自らRIP処理する場合との、どちらが早く処理が完了するかを評価する(S42)。この評価は、例えば、以下に例示するパラメータ(a1)〜(f)のうちの一以上を用いて行う。
(a1)当該オブジェクトのPDLデータをRIP処理してビットマップ画像を作成する場合のRIP処理負荷量
(a2)当該オブジェクトのPDLデータをRIP処理して中間言語形式のデータを作成する場合のRIP処理負荷量(これは、中間言語形式のデータをキャッシュする場合に用いる)
(b)キャッシュデータのデータサイズ(又はそのキャッシュデータを第1のRIP部120に転送するのに要する時間)
(c)当該オブジェクトのキャッシュデータをビットマップ形式の画像に変換し、ページの印刷画像データへ合成する場合の処理負荷量
(d1)第1のRIP部の処理能力(CPUの能力などの、理想条件での値。ただし、すべてのRIP部の処理能力が同一の場合には考慮不要)
(d2)第2のRIP部の処理能力(同上)
(e1)第1のRIP部の現在の処理負荷
(e2)第2のRIP部の現在の処理負荷
(f)第2のRIP部におけるキャッシュデータの作成の進捗度合い
これらパラメータのうち(a1)及び(a2)は、前述した負荷監視部114によるページのRIP処理負荷量の算出と同様の方式で算出すればよい。また、例えば、負荷監視部114がページのRIP処理負荷量を求めるのに際し、その中の各オブジェクトのRIP処理負荷量を求め、オブジェクトのIDをキーとするデータベースに登録し、RIP部120がそれを参照するようにしてもよい。
またパラメータ(b)は、キャッシュ管理部130のエントリ管理テーブル132から取得すればよい。
またパラメータ(c)は、キャッシュデータがビットマップ形式であれば、ビットマップ形式への変換は不要であり、ページの印刷画像データへの合成に要する処理の負荷量のみとなる。合成に要する処理負荷量は、ビットマップ形式のデータのサイズに応じたものであり、実験やシミュレーションなどで求められた係数をそのサイズに乗じることで求められる。また、キャッシュデータが中間言語形式である場合、例えばそのキャッシュデータから描画すべき画素数や、描画において行うべき画像処理の種類などから公知の方法で求めればよい。例えば、画素数に関しては、中間言語形式の命令として、長方形を塗りつぶす命令と同じ形状及びサイズの長方形の対角線を描画する命令とがあった場合、両命令はデータサイズとしてはほぼ同サイズであるが、描画すべき画素数は前者の方がはるかに多いため、前者の方が処理負荷量もはるかに多い。したがって、中間言語形式の命令の種類(これがオブジェクトについて描画すべき画素群の形状を規定する。例えば長方形の塗りつぶしと長方形の対角線の描画では命令が異なる。)及び、その命令の引数などにより示されるオブジェクトのサイズなどから、パラメータ(c)を計算すればよい。また、描画において行うべき画像処理の種類としては、上述のスコアの計算方法の説明において例示した、色空間変換、拡大、回転、スムースシェード(グラデーション)等がある。そこで、例えば画像処理の種類のそれぞれについて、処理負荷量の計算のための関数などを定めておき、その関数にキャッシュデータが表す画像のサイズや、画像処理のパラメータ(例えば当該画像処理の有無や、拡大率、回転角、グラデーションでの色の変化量など)を入力することで、パラメータ(c)に係る処理負荷量を計算するようにしてもよい。1つのオブジェクトに対して複数の画像処理を行う場合には、個々の画像処理についての処理負荷量の総和を当該オブジェクトのパラメータ(c)に係る処理負荷量として求めてもよい。(なお、上述のスコアを同様の方法で計算してもよい。)
またパラメータ(d1)及び(d2)は、既知の値であり、システム管理者があらかじめ登録しておけばよい。同じパラメータは、負荷監視部114でも用いられるので共用すればよい。
またパラメータ(e1),(e2)及び(f)は、負荷監視部114から取得すればよい。
これらパラメータを用いたS42の評価処理では、まず、例えば、パラメータ(a1)、(d1)及び(e1)から、第1のRIP部自身がそのオブジェクトのPDLデータをRIP処理してオブジェクトのビットマップ画像を生成する場合の所要時間T1を見積もる。これには、例えば、(d1)を(e1)に応じて低減することで現在の実際の処理能力を求め、この実際の処理能力で(a1)を例えば除することで、前述の所要時間を表す評価値を求めればよい。
また、同様に、パラメータ(b)、(c)、(d2)、(e2)及び(f)と、(a1)又は(a2)とから、第2のRIP部でのキャッシュデータの完成を待ってそれを流用することによりオブジェクトのビットマップ画像を生成する場合の所要時間T2を見積もる。所要時間T2は、例えば、第2のRIP部が作成中のキャッシュデータが完成するまでの時間T21と、そのキャッシュデータをキャッシュメモリ140から第1のRIP部へと読み出すのに要するプロトコル処理のオーバーヘッド時間T22(これは固定値として登録しておけばよい)と、読み出したキャッシュデータを第1のRIP部がビットマップ画像に変換するのに要する時間T23との和である。
このうちT21(第2のRIP部が作成中のキャッシュデータが完成するまでの時間)を表す評価値は、パラメータ(a1)又は(a2)(キャッシュデータがビットマップ形式の場合は前者、中間言語形式の場合は後者)と(f)とからキャッシュデータ完成までの残りの処理負荷量Rを求め、(d2)と(e2)とから第2のRIP部の現在の処理能力P2を求め、このP2で残りの処理負荷量Rを除するなどの計算により求めればよい。
また、T22は、固定値でよく、あらかじめ登録しておけばよい。
また、T23は、キャッシュデータをキャッシュメモリ140から第1のRIP部に読み出すのに要する時間T231と、読み出したキャッシュデータを第1のRIP部がビットマップ形式に変換するのに要する時間との和である。このうち時間T231はパラメータ(b)から求めればよい。また、時間T232は、パラメータ(d1)と(e1)から第1のRIP部の現在の処理能力を求め、これでパラメータ(c)を除する等の計算により求めればよい。
以上に説明した所要時間T1とT2の推定の仕方はあくまで一例に過ぎず、他の方法を用いてももちろんよい。例えば、以上に例示したパラメータのうちの一部を用いて推定を行ってもよいし、他のパラメータを用いてもよい。
以上のようにして見積もられた所要時間T1とT2のうち、短い方に対応する方式を採用すればよい。すなわち、T1の方がT2より短ければ、第1のRIP部がキャッシュデータの完成を待たずに自らPDLデータをRIPする方式がよいと判定され、逆であれば第1のRIP部はキャッシュデータの完成を待ってそれを利用する方式の方がよいと判定される。
以上では、RIP部120が自らPDLデータをRIP処理する場合と、他のRIP部が作成中のキャッシュデータの完成を待つ場合の各々の所要時間を見積もって比較することで、どちらの場合が有利かを判定したが、これは一例に過ぎない。例えば、オブジェクトの種類がイメージならばキャッシュデータの完成を待ち、イメージ以外(例えばフォーム又はフォント)ならば待たずにRIP処理を行うといった、1つのパラメータに基づく単純な判定でもよい。また、オブジェクトの複雑さがあらかじめ定めた閾値以上であれば待ち、閾値未満であれば待たないというような判定も考えられる。もちろん、これら以外の判定方式も考えられる。
S43では、S42の評価の結果、待つ方がよいか待たない方がよいかを判定する。S43で第1のRIP部120がキャッシュデータの完成を待った方がよいと判定された場合、第1のRIP部120はキャッシュ管理部130に対し、当該キャッシュデータ(例えばキャッシュエントリのIDで特定すればよい)が完成して登録されたら通知するように依頼し(S44)、その通知を待つ(S45)。そして、キャッシュ管理部130からその通知が到来すると、当該キャッシュデータを用いてビットマップ画像を生成し、ページの印刷画像データに合成する(S46)。なお、このS46は、より厳密には、S18からS22と同様、使用開始要求、ビットマップ生成、使用終了通知の3つのステップを含む。
S43で、第1のRIP部120がキャッシュデータの完成を待たない方がよいと判定された場合、第1のRIP部120は、当該オブジェクトのPDLデータをRIP処理してビットマップ画像を生成し、ページの印刷画像データに合成する(S48)。このとき生成されたビットマップ形式又は中間言語形式のデータは、第2のRIP部が生成してキャッシュ登録するものと重複するため、キャッシュメモリ140には登録されない。
S46又はS48により、当該オブジェクトについての処理は終了する。
再び図4に戻る。S16でキャッシュ管理部130からの応答が“Deleted”である場合、この応答を受け取ったRIP部120は、当該オブジェクトのPDLデータをRIP処理してビットマップ画像を生成し、ページの印刷画像データに合成する(S24)。この場合、S24の中で生成されたビットマップ形式又は中間言語形式のデータをキャッシュに登録することはしない。当該オブジェクトは、キャッシュする価値がないと判定されているからである。
また、S16でキャッシュ管理部130からの応答が“Invalid”(ステージが“Never Cache”)である場合、この応答を受け取ったRIP部120は、当該オブジェクトのPDLデータをRIP処理してビットマップ画像を生成し、ページの印刷画像データに合成する(S24)。この場合、S24の中で生成されたビットマップ形式又は中間言語形式のデータをキャッシュに登録することはしない。当該オブジェクトは、キャッシュする価値がないからである。
以上では、“Never Cache”に該当するオブジェクトの場合もS14でキャッシュ管理部130に問合せ、S24においてRIP部120が当該オブジェクトのPDLデータをRIP処理するとしたが、これは必須ではない。この代わりに、RIP部120自身が、オブジェクトがステージ“Never Cache”に該当するか否かを判定(この判定事態の処理負荷は極めて小さい)し、該当すると判定された場合には、キャッシュ管理部130への問合せを省略してもよい。また、“Never Cache”に該当すると判定したオブジェクトのRIP処理結果をRIP部120自身がローカルでキャッシュしておき、同じオブジェクトを再度描画する場合は、キャッシュ管理部130に問い合わせずに、ローカルのキャッシュを利用して描画を行ってもよい。
なお、ステージ“Cashed Out”(応答は“Deleted”)は、ある観点では“Never Cache”と似ているが、“Never Cache”は上述のようにキャッシュ管理部130への問合せを省略できるのに対し、“Cashed Out”はそのような省略をしない点で異なる。すなわち、ステージ“Cashed Out”のオブジェクトの場合は、時間の経過に連れてスコアが変化し、共用のキャッシュメモリ140にキャッシュされる場合があるので、RIP部120は、そのようなオブジェクトに出会うごとに、キャッシュ管理部130に問合せを行う必要がある。
《キャッシュ管理部130の処理手順》
以上、各RIP部120の処理手順の例を説明した。次に、キャッシュ管理部130の処理手順の例を、図7〜図15を参照して説明する。
まず、いずれかのRIP部120から問合せ(図4のS14)が到来したときにキャッシュ管理部130が実行する処理手順の一例を、図7を参照して説明する。
この手順では、キャッシュ管理部130は、問合せの対象であるオブジェクトのキャッシュエントリをエントリ管理テーブル132から検索する(S50)。S50では、問合せに含まれている、キャッシュエントリを特定する情報(例えばオブジェクトのID、またはPDLコマンドと引数の組など)をキーとして検索すればよい。そして、そのオブジェクトに対応するキャッシュエントリが見つかったかどうかを判定し(S52)、見つからなければ、そのオブジェクトに対応するキャッシュエントリを新たに作成する(S54)。オブジェクトのIDをキャッシュエントリのIDとして用いる方式の場合は、問合せに含まれるオブジェクトのIDを当該キャッシュエントリのIDにセットすればよい。また、オブジェクトのIDがない場合は、新たに生成したキャッシュエントリに一意なIDを付与し、更に問合せに含まれるPDLコマンドと引数の組などのキャッシュエントリを特定する情報を、そのキャッシュエントリに登録する(図2では省略)。また、キャッシュ管理部130は、そのキャッシュエントリのステージを1すなわち“New Cache”に設定し、累計問合せ回数を1に設定するなど、エントリ管理テーブル132(図2参照)における当該キャッシュエントリの各項目の値を初期化又は設定する(S56)。オブジェクトの種類等のオブジェクト属性の情報は、例えばRIP部120からの問合せに含めておき、それをキャッシュ管理部130がエントリ管理テーブル132に設定すればよく、キャッシュデータのサイズも同様である。また、使用カウンタの値は0に初期化する。キャッシュ領域のアドレスは、未定のままとしておけばよい。また、オブジェクト属性(オブジェクトの種類など)や累計値合わせ回数から当該キャッシュエントリのスコア(キャッシュする価値を示す評価値)を前述のようにして計算し、エントリ管理テーブル132に登録する。また、問合せ元のRIP部120の識別情報を、「データ作成中のRIP」の欄に登録する。そして、キャッシュ管理部130は、問合せ元のRIP部120に対して応答“Miss”を返し(S58)、この問合せについての処理を終了する。これに応じ、そのRIP部120は、当該オブジェクトについてのキャッシュデータの作成を開始する(図4及び図5参照)。
S52で、問合せの対象のキャッシュエントリがエントリ管理テーブル132から見つかった場合は、キャッシュ管理部130は、そのエントリの累計問合せ回数を1増加させる(S60)。また、スコアは、前述のように累計問合せ回数が多くなるほど高くなるので、累計問合せ回数の増加に応じて当該エントリのスコアを更新する(S60)。
次に、キャッシュ管理部130は、当該キャッシュエントリのステージを判定する(S62)。その判定の結果、ステージが1“New Cache”であれば問合せ元のRIP部120に“Creating”を応答する(S64)。また、ステージが2“Caching”であれば問合せ元のRIP部120に“Miss”を応答し、当該キャッシュエントリのステージを1に遷移させる(S66)。このとき、問合せ元のRIP部120の識別情報を、エントリ管理テーブル132の当該エントリの「データ作成中のRIP」の欄に登録する。また、ステージが3“Cached”であれば“Hit”を(S68)、4“Cached Out”であれば“Deleted”を(S70)、5“Never Cache”であれば“Invalid”を(S72)、それぞれ問合せ元のRIP部120に応答する。この応答により、キャッシュ管理部130は、問合せについての処理を終了する。この応答に応じ、問合せ元のRIP部120は、図4〜図6に示した処理を実行する。
次に、図8を参照して、いずれかのRIP部120からキャッシュデータの使用開始要求を受信したときのキャッシュ管理部130の処理手順の一例を説明する。
この手順では、キャッシュ管理部130は、受信した使用開始要求の対象であるキャッシュデータをキャッシュメモリ140から求め、要求元のRIP部120に返信する(S80)。これには、例えば、受信した使用開始要求に含まれる、ID等のキャッシュエントリを特定する情報をキーとしてエントリ管理テーブル132を検索し、これにより検索されたキャッシュエントリの中の「キャッシュ領域のアドレス」及び「キャッシュデータのサイズ」(図2参照)の情報に従い、キャッシュメモリ140からキャッシュデータを読み出せばよい。そして、キャッシュ管理部130は、当該キャッシュエントリの使用カウンタ(図2参照)の値に1を加える(S82)。これにより、そのキャッシュエントリのキャッシュデータを現在使用しているRIP部120が1つ増えたことが記録される。
次に、図9を参照して、いずれかのRIP部120からキャッシュデータの使用終了通知を受信したときのキャッシュ管理部130の処理手順の一例を説明する。
この手順では、キャッシュ管理部130は、受信した使用終了通知に含まれるID等のエントリ特定情報からその通知の対象であるキャッシュエントリを特定し、そのキャッシュエントリの使用カウンタの値から1を減算する(S85)。これにより、そのキャッシュエントリのキャッシュデータを現在使用しているRIP部120が1つ減ったことが記録される。
次に、図10及び図11を参照して、いずれかのRIP部120からキャッシュのための領域確保要求を受信したときのキャッシュ管理部130の処理手順の一例を説明する。
この手順では、図10に示すように、まずキャッシュ管理部130は、当該領域確保要求に含まれるID等のエントリ特定情報からその通知の対象であるキャッシュエントリを特定する。そして、そのキャッシュエントリの情報などに基づき、そのキャッシュエントリのキャッシュデータがキャッシュメモリ140にキャッシュできるかどうかを、制限条件及びキャッシュメモリ140の空き容量の両面から評価する(S90)。制限条件は、前述した通り、オブジェクトの複雑さやサイズ、形状などの点で、キャッシュに適さない、又はキャッシュした方が効率が悪いことが明らかなオブジェクトを特定する条件である。この判定は、特定したキャッシュエントリについてのエントリ管理テーブル132内の登録情報、例えばキャッシュデータのサイズやオブジェクト属性(例えばオブジェクトの種類や複雑さなど)などの情報を用いて行う。また、これらキャッシュデータのサイズやオブジェクト属性の情報は、領域確保要求と共にRIP部120から受け取り、エントリ管理テーブル132に登録する方式でもよい。
S90の評価の結果、制限条件がクリアされない(すなわちキャッシュに適さない)と判定した場合(S92の判定結果がNO)、キャッシュ管理部130は、特定されたキャッシュエントリ(以下「対象エントリ」と呼ぶ)のステージを5“Never Cache”に変更し(S94)、要求元のRIP部120に対して領域確保の失敗を示すコードを応答する(S96)。この応答に応じ、そのRIP部120は、図5のS38に示したように、当該オブジェクトのPDLデータを用いてビットマップ画像を生成してページの画像に合成し、そのビットマップ画像をキャッシュせずに処理を終了する。
S90の評価の結果、制限条件がクリアされたと判定した場合(S92の判定結果がYES)、キャッシュ管理部130は、更に、キャッシュメモリ140の空き領域(キャッシュデータが記憶されていない領域)の容量が、当該オブジェクトのキャッシュデータを記憶するのに十分かどうかを判定する(S98)。この判定では、キャッシュデータのサイズの情報を参照する。この判定処理で、空き領域の容量が十分であると判定されると、キャッシュ管理部130は、キャッシュメモリ140内の空き領域の中から、そのキャッシュデータのサイズに応じた領域を確保し、領域確保の成功を示すコードと共に、確保した領域のアドレスを要求元のRIP部120に応答する(S100)。この応答に応じ、そのRIP部120は、図5のS32〜S36の処理を実行する。なお、このときキャッシュ管理部130は、エントリ管理テーブル132の当該対象エントリの「キャッシュ領域のアドレス」に、確保した領域のアドレス(例えば先頭アドレス)を登録してもよい。
S98で空き領域の容量が十分でないと判定した場合、キャッシュ管理部130は、エントリ管理テーブル132から対象エントリのスコアを取得し(S102)、更にエントリ管理テーブル132に登録された各キャッシュエントリの中から、ステージが3“Cached”で且つ対象エントリよりもスコアの低いキャッシュエントリ(以下「劣位エントリ」と呼ぶ)を全て抽出する(S104)。
キャッシュエントリのスコアは、前述したように、当該キャッシュエントリのキャッシュデータをキャッシュメモリ140にキャッシュする価値(効果)を表す評価値である。したがって、劣位エントリは、対象エントリよりも相対的にキャッシュする価値が低いキャッシュエントリといえる。第1例では、キャッシュメモリ140に対象エントリのキャッシュデータを収容するのに十分な空き領域がない場合、そのような劣位エントリのキャッシュデータをキャッシュメモリ140から追い出す(削除する)ことで、十分な空き領域を作るよう試みる。
S106では、S104で劣位エントリが1つでも見つかったかどうかを判定する。劣位エントリが1つも見つからなければ、対象エントリは、キャッシュ対象を規定する最低限の条件(言い換えれば絶対的な条件)である制限条件は満たしているものの、既にキャッシュメモリ140内にデータがキャッシュされている他のいずれのエントリからみても相対的にキャッシュする価値が低いということになる。したがって、このような場合には、対象エントリのデータをキャッシュしないようにする。すなわちS106の判定結果がNOの場合には、キャッシュ管理部130は、対象エントリを現在のステージ1“New Cache”からステージ4“Cached Out”に変更し(S108)、要求元のRIP部120に領域確保の失敗を示すコードを応答する(S110)。この応答に応じ、そのRIP部120は、図5のS38に示したように、当該オブジェクトのPDLデータを用いてビットマップ画像を生成してページの画像に合成し、そのビットマップ画像をキャッシュせずに処理を終了する。
S106で、劣位エントリが1以上見つかったことが分かった場合(判定結果がYES)、キャッシュ管理部130は図11に例示する手順を実行する。
すなわち、まず見つかった劣位エントリのなかに、使用カウンタの値が0のものが残っているかどうかを判定する(S111)。使用カウンタの値が0ということは、どのRIP部120もそのキャッシュエントリ(劣位エントリ)のキャッシュデータを使用していないということなので、そのキャッシュデータを削除しても他のRIP部には悪影響がない。そこで、使用カウンタの値が0の劣位エントリがあれば、その中から最もスコアの低いものを1つ抽出する(S112)。そして、抽出した劣位エントリのキャッシュデータのアドレス及びサイズをエントリ管理テーブル132から求めて、そのアドレスからキャッシュデータをキャッシュメモリ140から追い出し(削除し)、その劣位エントリを現在のステージ3“Cached”からステージ4“Cached Out”に変更する(S114)。この追い出しにより、それまでそのキャッシュデータが占めていたキャッシュメモリ140内の領域が解放される。キャッシュ管理部130は、その解放された領域を空き領域に加入し、それにより広がった空き領域の容量(すなわち、キャッシュメモリ140の空き容量)が対象エントリのキャッシュデータのサイズを収容するのに必要な大きさとなったかどうかを判定する(S116)。この判定で、空き領域が必要な容量に達していないと判定した場合、キャッシュ管理部130はS111に戻り、使用カウンタの値が0の劣位エントリが残っている間は、その中からスコアの低い順に1つずつ、キャッシュデータの追い出し及びステージの変更を行う(S112,S114)。
このようにして、使用カウンタの値が0の劣位エントリのみを追い出すことで、対象エントリをキャッシュするのに必要な空き容量が確保できた場合(S116の判定結果がYES)、キャッシュ管理部130は、キャッシュメモリ140の空き領域の中から、そのキャッシュデータのサイズに応じた領域を確保し、領域確保の成功を示すコードと共に、確保した領域のアドレスを要求元のRIP部120に応答する(S118)。これにより領域確保要求に対するキャッシュ管理部130の処理が終了する。その応答に応じ、そのRIP部120は、図5のS32〜S36の処理を実行する。なお、このときキャッシュ管理部130は、エントリ管理テーブル132の当該対象エントリの「キャッシュ領域のアドレス」に、確保した領域のアドレスを登録してもよい。
使用カウンタの値が0の劣位エントリを全てキャッシュメモリ140から追い出しても対象エントリをキャッシュするのに必要な空き容量が確保できない場合、S111の判定結果がNOとなる。これは、現在いずれかのRIP部120で使用されているキャッシュデータを追い出さない限り、対象エントリのキャッシュデータをキャッシュすることができないことを意味する。この場合、第1例では、例えば現在劣位エントリのキャッシュデータを使用しているRIP部120の処理に悪影響が及ぶことを避けるために、今回の要求については、対象エントリのキャッシュデータをキャッシュすることをあきらめる。ただし、対象エントリは、現在使用されている劣位エントリよりもキャッシュする価値(スコア)が高いので、あきらめたまま放置するのではなく、キャッシュするための準備を行う。
すなわち、図11の手順では、S111の判定結果がNOの場合、対象エントリを現在のステージ1“New Cache”からステージ2“Caching”に変更する(S122)。ステージ2“Caching”は、前述した通り、このケースのように、当該エントリは他と比べてキャッシュする価値はあるものの、使用中の劣位エントリのキャッシュデータを追い出さないと当該エントリをキャッシュするのに十分な領域が確保できない「空き待ち」状態を表す。そして、要求元のRIP部120に対して、領域確保の失敗を示すコードを応答する(S124)。この応答に応じ、そのRIP部120は、図5のS38に示したように、当該オブジェクトのPDLデータをRIP処理してビットマップ画像を生成してページの画像に合成し、RIP処理結果をキャッシュせずに処理を終了する。
このケースは、折角生成されたRIP処理結果がキャッシュされないという点では、対象エントリが制限条件に抵触する場合(図10のS92〜S94)や劣位エントリがない場合(同S106〜S110)と同じである。しかし、これらの場合は、いずれも対象エントリをキャッシュする価値が絶対的に又は他と比べて相対的に低い場合であり、ステージが“Never Cache”又は“Cached Out”とされることで、今後ずっと、又はしばらくはキャッシュ登録されないよう制御される。これに対し、S111の判定結果がNOとなったこのケースでは、対象エントリはキャッシュする価値が相対的に十分高いので、対象エントリを“Caching”という特別なステージに置いておき、今後、いずれかのRIP部120から同じ対象エントリに問合せがあった際、その対象エントリのキャッシュ登録が再度試みられるようにする。
また、キャッシュ管理部130は、使用カウンタの値が0でない劣位エントリを、スコアの低い順に1つずつ抽出し(S126)、抽出した劣位エントリをステージ3“Cached”からステージ4“Cached Out”に変更する(S128)。
そして、“Cached Out”に変更した劣位エントリのキャッシュデータを追い出したと仮定した場合のキャッシュメモリ140の空き容量を計算し、その空き容量が対象エントリのキャッシュデータをキャッシュするのに十分な量に達するまで、S126及びS128の処理を繰り返す(S130)。必要な空き容量が確保された時点で、領域確保要求に対するキャッシュ管理部130の処理が終了する。
前述のS114では、抽出した劣位エントリのキャッシュデータをキャッシュメモリ140から追い出したが、このS128では、抽出した劣位エントリのキャッシュデータをまだ他のRIP部120が使用しているので、この時点では追い出しは行わない。しかし、抽出された劣位エントリはステージが4“Cached Out”に変更されているので、いずれのRIP部120からも使用されなくなった後で、キャッシュデータがキャッシュメモリ140から追い出されることとなる(詳細は後述)。S128は、使用中の劣位エントリに対する追い出しの予約と捉えてもよい。このように、対象エントリよりもスコアの低いエントリ(劣位エントリ)に対して、追い出しの予約をしておくことで、例えば対象エントリが次の機会にキャッシュされる可能性が高まる。
また、使用中の劣位エントリをステージ4“Cached Out”に遷移させると、その後いずれかのRIP部120からその劣位エントリに問合せがあった場合、キャッシュ管理部130は“Deleted”を応答する(図7のS70)。この場合、問合せ元のRIP部120は、キャッシュデータを使用せずに、PDLデータをRIP処理する(図4のS24)。すなわち、その劣位エントリは使用中なので、キャッシュデータが未だキャッシュメモリ140にあるにもかかわらず、第1例では、それを問合せ元のRIP部120に使用させないようにしている。仮にこのような場合に問合せ元のRIP部120にキャッシュデータの使用を認めると、いずれかのRIP部から使用されているキャッシュデータは追い出さないという基本方針の下では、追い出し予約中のエントリをいつまで経っても追い出せなくなってしまう可能性がある。これに対し、第1例では、追い出しが予約された劣位エントリの使用を認めないので、そのような不具合が回避される。
なお、S122及びS124の処理と、S126〜S130の処理とは、どちらを先に実行してもよい。
また、煩雑さを避けるために図11では省略したが、使用カウンタが0でない劣位エントリの全てをステージ4“Cached Out”にしても、対象エントリをキャッシュするのに十分な容量が確保できない場合も起こり得る。このような場合、キャッシュ管理部130は、領域確保要求に対する処理を終了すればよい。ここで必要な領域が確保できなくても、今回の領域確保要求に対しては確保失敗を応答しているので問題はなく、また同じ対象エントリに対する今後の問合せに対しても、追い出し予約をした劣位エントリの分だけ、キャッシュ登録が成功する可能性が高まっている。
次に、図12を参照して、いずれかのRIP部120からキャッシュデータの登録要求を受信したときのキャッシュ管理部130の処理手順の一例を説明する。
この手順では、図12に示すように、まずキャッシュ管理部130は、当該登録要求に含まれるID等のエントリ特定情報からその通知の対象であるキャッシュエントリを特定し、そのキャッシュエントリにキャッシュデータを登録する(S142)。例えば、エントリ管理テーブル132にキャッシュデータの登録の有無を示す項目(図2では省略)を設けておき、S142ではその項目の値を「登録無し」から「登録有り」に変更すればよい。
また、キャッシュ管理部130は、当該キャッシュエントリの使用カウンタの値を0にリセットするとともに(S144)、当該エントリをステージ1“New Cache”からステージ3“Cached”に遷移させる(S146)。このとき、当該エントリの「データ作成中のRIP」の項目をクリアする。
以上、RIP部120からの各種のアクセス(問合せ、使用開始要求、使用終了通知、領域確保要求、登録要求)に対するキャッシュ管理部130の処理手順の例を説明した。以上に説明した処理手順では、1以上のRIP部120から使用中のキャッシュエントリに対して追い出し予約(キャッシュデータは削除されないが、ステージは4“Cached Out”に変更される)がなされる場合がある。第1例では、追い出し予約がなされたキャッシュエントリについては、いずれのRIP部120からもキャッシュデータが使用されなくなった段階で、できるだけすみやかに実際の追い出しを行い、それまでのそのデータが占めていた領域を解放する。このような追い出し予約がなされたキャッシュエントリの解放には、いくつかの方式が考えられる。
1つは、定期的にエントリ管理テーブル132を調べて、解放すべきキャッシュエントリを探す方式である。この方式に従った手順の例を図13に示す。
図13の手順では、キャッシュ管理部130は、定期的な調査のタイミング(クリーニングタイミングと呼ぶ)が到来すると、エントリ管理テーブル132においてステージが4“Cached Out”で且つ使用カウンタの値が0であるエントリを探し(S150)、そのようなエントリがあれば(S152の判定結果がYES)、そのエントリのキャッシュデータがまだキャッシュメモリ140内にあるかどうかを判定する(S154)。S154の判定結果がYESであれば、そのキャッシュデータをキャッシュメモリ140から追い出し、それまでそのデータが占めていた領域を解放し(S156)、再びS150に戻る。S154の判定結果がNOであれば、S156を飛ばしてS150に戻る。このようにして、ステージが4“Cached Out”で且つ使用カウンタの値が0である全てのキャッシュエントリのキャッシュデータを追い出す。
また、追い出し予約がなされたキャッシュエントリの解放を、キャッシュデータの使用終了通知に対する処理の中で行う方式も考えられる。この方式に沿った手順の例を、図14に示す。
図14の手順は、いずれかのRIP部120からキャッシュデータの使用終了通知が到来した場合に実行される。この手順では、キャッシュ管理部130は、使用終了通知に含まれるID等に対応するキャッシュエントリをエントリ管理テーブル132から特定し、そのエントリの使用カウンタの値を1つ減少させる(S160)。そして、そのエントリがステージ4“Cached Out”であるか否か(S162)及び使用カウンタの値が0であるか否か(S164)をそれぞれ判定し、両方の判定結果がYESの場合に、当該エントリのキャッシュデータをキャッシュメモリ140から追い出す(S166)。これにより、それまでそのキャッシュデータが占めていた領域が解放される。特定したエントリがステージ4でないか、又は使用カウンタの値が0でない場合は、キャッシュデータの削除は行わず、処理を終了する。追い出し予約がなされたキャッシュエントリのキャッシュデータは、この手順により、使用しているRIP部120が無くなり次第直ちに追い出されることとなる。
次に、図15を参照して、いったん“Cached Out”ステージに遷移させたキャッシュエントリの見直し処理の一例を説明する。この処理は、例えば一定周期ごとなどのように、あらかじめ定められた規則に応じて決定された見直しタイミングが到来するごとに実行される。
この手順では、キャッシュ管理部130は、見直しのタイミングが到来すると、エントリ管理テーブル132からステージが4“Cached Out”である(すなわち追い出された状態にある)キャッシュエントリを探し(S170)、そのようなエントリがあれば(S172の判定結果がYES)、そのエントリのスコアがあらかじめ定められた閾値以上であるかどうかを判定する(S174)。キャッシュエントリのスコアがある範囲に収まるように正規化されたものであれば、この判定に用いる閾値は固定値でもよい。そうでない場合は、エントリ管理テーブル132に登録されているキャッシュエントリのスコアの分布に応じて閾値を適応的に変化させる。閾値の決め方には、様々な方式が考えられる。例えば、全キャッシュエントリにわたるスコアの平均値を閾値としてもよいし、全キャッシュエントリのスコアのうち上位から見てあらかじめ定められた順位に該当するスコアを閾値としてもよい。また、現在ステージが3“Cached”であるキャッシュエントリのうちの最低スコアを基準に閾値を定めてもよい(例えば、最低スコアに対してあらかじめ定めた値を足した値を閾値とするなど)。
S174で当該キャッシュエントリのスコアが閾値以上であると判定された場合、それはそのキャッシュエントリはキャッシュメモリ140に戻す価値があることを意味する。この場合、キャッシュ管理部130は、そのキャッシュエントリをステージ4“Cached Out”からステージ2“Caching”へと遷移させる(S176)。これにより、その後当該キャッシュエントリに対していずれかのRIP部120から問合せが到来すると、当該エントリはステージ1“New Cache”に遷移し、そのRIP部120が当該エントリのキャッシュデータの登録を試みることとなる(図7のS66及び図4,図5を参照)。
《変形例1−1》
以上の第1例では、あるキャッシュエントリのキャッシュデータが作成中(すなわちステージ1“New Cache”)である場合、そのエントリの問合せを行ったRIP部120が、そのキャッシュデータが完成するのを待つのか待たないのかを判断した(図6のS42,S43参照)。しかし、その判断は、問合せを受けたキャッシュ管理部130が行ってもよい。その判断をキャッシュ管理部130が行う例を、以下に説明する。
この例において、RIP部120からキャッシュエントリの問合せを受けたときのキャッシュ管理部130の処理手順を、図16及び図17に示す。図16に示す手順は、問合せの対象のキャッシュエントリのステージが1“New Cache”である場合の処理を除き、図7の手順と同じである。
問合せの対象のキャッシュエントリのステージが1“New Cache”である場合は、キャッシュ管理部130は、図17に例示する手順を実行する。この手順では、キャッシュ管理部130は、問合せ元のRIP部120(第1のRIP部と呼ぶ)が当該オブジェクトのPDLデータを自らRIP処理する場合と、そのオブジェクトのキャッシュデータを作成中のRIP部120(第2のRIP部と呼ぶ)がそのキャッシュデータの完成させるのを待って第1のRIP部にそのキャッシュデータを利用させる場合との、どちらが早く処理が完了するかを評価する(S182)。評価の仕方は、図6のS42の評価と同様でよい。
S183では、S182の評価の結果に基づき、作成中のキャッシュデータの完成を待つ方がよいか待たない方がよいかを判定する。S183で第1のRIP部がキャッシュデータの完成を待った方がよいと判定された場合、キャッシュ管理部130は、第2のRIP部から当該キャッシュデータの登録要求が来るのを待つ(S184)。登録要求が来ることで、キャッシュデータが完成したことが分かる。すると、キャッシュ管理部130は、第1のRIP部に対し“Hit”を応答する(S186)。この時点では、そのキャッシュデータはキャッシュメモリ140内にあるので、“Hit”を受け取った第1のRIP部は、そのキャッシュデータを用いてページのRIP処理を進める。
すなわち、この例では、待つ方がよいと判断した場合は、キャッシュ管理部130はすぐには問合せ元のRIP部120(第1のRIP部)に応答を行わず、そのキャッシュデータの完成を待って“Hit”を応答している。その間、問合せ元のRIP部120は、キャッシュ管理部130の応答を待っている。しかし、このような処理は一例に過ぎない。この代わりに、待つ方がよいと判断した時点で即座に問合せ元のRIP部120に待つように明示的に指示を行い、その後キャッシュデータが完成した時点で“Hit”を応答するようにしてもよい。
一方、S183で、待たない方がよい(すなわち第1のRIP部がPDLデータをRIP処理した方が早く処理が完了する)と判定した場合は、キャッシュ管理部130は、即座に、第1のRIP部に対し“Creating”を応答する(S188)。“Creating”を受け取った第1のRIP部は、キャッシュデータの完成を待たずに、当該オブジェクトのPDLデータをRIP処理し、ページの描画を進める。この場合、RIP処理結果はキャッシュされない。
《変形例1−2》
また、更に別の変形例も考えられる。すなわち、上記第1例では、あるキャッシュエントリのキャッシュデータが作成中である場合、そのエントリの問合せを行ったRIP部120が、そのキャッシュデータが完成するのを待つのか待たないのかを判断していた(図6のS42,S43参照)が、この変形例では、そのRIP部120の処理負荷が高い場合にはこの判断自体を取りやめる。この変形例の手順の一例を図18に示す。図18は、図4の手順のS16で応答が“Creating”であると判定された後の処理の流れを示す。
この変形例では、その場合、まず、RIP部120は自身の負荷があらかじめ定めた閾値以上であるかどうかを判定する(S41)。ここでの負荷は、負荷監視部114が監視している当該RIP部120の負荷と同じものである。負荷がその閾値を超えている場合、図6の手順と同様のS42及びS43の処理を実行すること自体が、当該RIP部120にとって無視できない負担となる(すなわち、実行中の他の処理の妨げとなる)。逆に言えば、閾値は、そのような状況を生じる下限の負荷であり、これは実験等によりあらかじめ求めておけばよい。
S41の判定で、RIP部120の負荷が閾値以上と判定された場合、RIP部120は、S42及びS43を飛ばし、キャッシュデータの完成を待つと自動的に判定し、S44へと進む。すなわち、この場合、RIP部120は負荷が高いので、自分でPDLデータをRIP処理することはしない。その他のステップは、図6と同様でよい。
《変形例1−3》
また、上記第1例では、RIP部120は、キャッシュ管理部130から“Creating”の応答を受け取った場合、作成中のキャッシュデータの完成を待つか否かを判定したが、このような判定を行わず、“Creating”を受け取った場合には、作成中のキャッシュデータの完成を必ず待つようにしてもよい。また、この逆に、必ず、待たずに自らRIP処理し、処理結果をキャッシュしないようにしてもよい。このような場合でも、RIP部120は、“Creating”というキャッシュデータ作成中を示す従来にない応答を受け取ることで、“Miss”又は“Hit”という従来の応答の場合とは異なる対応をとる。すなわち、“Miss”及び“Hit”という応答しか無ければ、“Miss”という応答を受けた場合、RIP部120は目的のキャッシュデータが作成中であってもそのことが分からないので、その完成を待つこともできず、自分でPDLデータをRIP処理することとなり、その処理結果をキャッシュメモリ140に重複登録してしまうことになる。
[実施形態]
《概要》
本発明の実施形態を説明する。この実施形態は、上記第1例の構成及び処理のうち、RIP部120からの領域確保要求に対するキャッシュ管理部130の処理を変更したものである。この実施形態において、明示的に第1例と異なる構成及び処理を示した点以外は、第1例と同じ構成及び処理が用いられるものとする。この実施形態の印刷文書変換システムの構成は、図1に示したものと同様でよい。例えば、エントリ管理テーブル132のデータ構造は図2に例示した第1例のものと同様でよい。また、キャッシュエントリの状態遷移も、図3に例示した第1例の状態遷移と同様でよい。
上述の第1例では、領域確保要求に応じた領域確保処理の際、ステージが3“Cached”で使用カウンタの値が0の劣位エントリのキャッシュデータを全て追い出しても必要な空き容量が確保できない場合、その時点での領域の確保はあきらめ、要求元のRIP部120に対して領域確保の失敗を応答した(例えば図11のS124)。
これに対し、この実施形態では、そのような場合に、ステージ3で使用カウンタの値が0でない(すなわちいずれかのRIP部120により使用中)の劣位エントリがあれば、それら劣位エントリのキャッシュデータを追い出す(削除する)ことで領域確保を行う。
実施形態での各RIP部120の処理手順は、第1例の場合と同様でよい(図4〜図6参照)。
実施形態でのキャッシュ管理部130の動作については、いずれかのRIP部120から問合せを受けたときのキャッシュ管理部130の処理手順は、第1例と同様でよい(図7参照)。また、いずれかのRIP部120から使用開始要求を受けたときのキャッシュ管理部130の処理手順も、第1例と同様でよい(図8参照)。また、クリーニングタイミング到来時及び見直しタイミング到来時の処理も、第1例の場合と同様でよい(図13及び図15参照)。
一方、いずれかのRIP部120から領域確保要求を受けたときのキャッシュ管理部130の動作は、第1例(図10及び図11参照)の場合と異なる。特に領域確保要求に応じた領域確保処理の際、ステージが3“Cached”で使用カウンタの値が0の劣位エントリのキャッシュデータを全て追い出しても必要な空き容量が確保できない場合(第1例で図11のS111の判定結果がNOの場合)の処理が、第1例の場合と異なってくる。
領域確保要求に応じた領域確保処理の際、ステージが3“Cached”で使用カウンタの値が0の劣位エントリのキャッシュデータを全て追い出しても必要な空き容量が確保できない場合における、この実施形態の処理については、例えば以下の3つの方式がある。以下、それら3つの方式の処理手順の例を順に説明する。
《第1方式:一時的オーバーフロー方式》
この実施形態の第1方式では、いずれかのRIP部120から領域確保要求を受けたとき、キャッシュ管理部130は、図10に示す第1例の手順と同じ動作を行う。この手順を実行する中で、S106で劣位エントリありと判定されると、この第1方式では、キャッシュ管理部130は、図19に示す手順を実行する。図19の手順のうち、S111〜S118及びS126〜S130は、図11に示される第1例の場合と同様である。
図19の手順が図11の手順と異なるのは、まず、S111でステージが3“Cached”で使用カウンタの値が0の劣位エントリがなくなったと判定された後、S122及びS124の処理(対象エントリをステージ2“Caching”に遷移、及び確保失敗を応答)を行わない点である。また、別の異なる点は、S130で必要な容量が確保できたと判定すると、キャッシュ管理部130は、対象エントリのための領域をキャッシュメモリ140に確保し、要求元のRIP部120に領域確保の旨を示すコードと確保した領域のアドレスの情報を返す(S132)点である。
すなわち、S128では、使用中の劣位エントリのステージを4“Cached Out”に遷移させるだけで、それら使用中の劣位エントリのキャッシュデータをキャッシュメモリ140から追い出すことはしない。S130でキャッシュメモリ140に必要な空き容量が確保できたと判定されたとしても、それはそれら使用中の劣位エントリのキャッシュデータを追い出したと仮定した場合のことである。このため、S132を実行する時点では、キャッシュメモリ140の空き容量は、実際には対象エントリのために必要な量よりも少ない。したがって、S132で行っているのは、まだ実際には追い出されていない劣位エントリ(追い出し予約された劣位エントリ)の容量が、近い将来、その使用が終了した時点で追い出されることを見込んで、対象エントリのための領域を確保してしまうことである。このため、S132での領域の確保は、オペレーティングシステムからキャッシュメモリ140に割り当てられた全体容量の制限を一時的に超える(オーバーフローする)形で行う。すなわち、キャッシュ管理部130及びキャッシュメモリ140を実現するコンピュータのオペレーティングシステムは、自身が管理するメモリ空間の一部をキャッシュメモリ140に割り当てており、S132ではその割り当てられた領域からはみ出して対象エントリのためのキャッシュ領域を確保するのである。このような確保処理により、キャッシュメモリ140として実際に使用される領域のサイズは、本来割り当てられたキャッシュメモリサイズを超えることとなるが、このオーバーフロー状態は追い出し予約された劣位エントリ群のキャッシュデータの作成が完了するまでの一時的な状態に過ぎない。
煩雑さを避けるために図19では省略したが、使用カウンタが0でない劣位エントリの全てをステージ4“Cached Out”にしても、対象エントリをキャッシュするのに十分な容量が確保できない場合も起こり得る。このような場合、キャッシュ管理部130は、例えば、領域確保要求に対して確保失敗を応答すればよい。
この第1方式では、対象エントリのための領域確保を要求したRIP部120は、ステージ3の劣位エントリの領域を解放すれば必要な容量が得られる場合には、即座にキャッシュ領域の割当を受けることとなる。
また、この第1方式では、S128で追い出しの予約がなされたキャッシュエントリについての領域の解放を、第1例と同様、図13又は図14に例示した手順により行えばよい。追い出し予約された劣位エントリのキャッシュデータが図13又は図14の手順により実際にキャッシュメモリ140から追い出されることにより、キャッシュメモリ140のオーバーフロー状態が解消される。
《第2方式:即時強制追い出し方式》
この実施形態の第2方式は、対象エントリのための領域を即座に確保する点では上述の第1方式と同じである。しかし、第1方式では対象エントリのための領域を、キャッシュメモリ140に割り当てられた容量をオーバーフローするように確保することで、使用中の劣位エントリを実際には追い出さなかった(追い出しの予約をするのみであった)のに対し、この第2方式では、そのようなオーバーフローを避けるために、使用中の劣位エントリを実際に追い出してから、対象エントリのための領域を確保する。ここで、使用中の劣位エントリを実際に追い出すと、その劣位エントリのキャッシュデータを使用しているRIP部120は、RIP処理を続けることができなくなるので、この第2方式では、追い出す劣位エントリのキャッシュデータを使用中のRIP部120に対し、そのキャッシュデータを削除する旨を通知する。これに応じ、そのRIP部120は、削除されるキャッシュデータに対応するオブジェクトの元のPDLデータをRIP処理する。
このような処理のために、この第2方式では、例えば、エントリ管理テーブル132に対し、図20に例示するように、「使用中のRIP」を記録する。「使用中のRIP」には、当該キャッシュエントリのキャッシュデータを使用している(すなわち当該キャッシュデータに対する使用開始要求を発した後、使用終了通知を発するまでの期間にある)RIP部120の識別情報が登録される。1つのキャッシュエントリのキャッシュデータを使用しているRIP部120が複数あれば、それら使用している複数のRIP部120すべての識別情報が登録される。キャッシュデータがキャッシュメモリ140内にないキャッシュエントリ(ステージ3“Cached”以外のステージのエントリ)については、「使用中のRIP」は空欄である。ステージが3“Cached”であるキャッシュエントリも、どのRIP部120からも使用されていない期間は、「使用中のRIP」は空欄である。
「使用中のRIP」欄の保守のために、キャッシュ管理部130は、いずれかのRIP部120からキャッシュデータの使用開始要求が到来すると、図21に例示するように、キャッシュデータを登録し(S80)、使用カウンタの値を1増加させるとともに(S82)、要求元のRIP部120の識別情報を当該キャッシュエントリの「使用中のRIP」欄に追加する(S83)。また、キャッシュ管理部130は、いずれかのRIP部120からキャッシュデータの使用終了通知が到来すると、図22に例示するように、使用カウンタの値を1減少させるとともに(S85)、通知元のRIP部120の識別情報を当該キャッシュエントリの「使用中のRIP」欄から削除する(S87)。
また、この実施形態の第2方式では、いずれかのRIP部120から領域確保要求を受けたとき、キャッシュ管理部130は、図10に示す第1例の手順と同じ動作を行う。この手順を実行する中で、S106で劣位エントリありと判定されると、この第2方式では、キャッシュ管理部130は、図23に示す手順を実行する。図23の手順は、S127及びS128A及びS132A以外は、上述の第1方式の場合の手順(図19)と同様である。
すなわち、図23の手順は、S111でステージが3“Cached”で使用カウンタの値が0の劣位エントリがなくなったと判定された後、S122及びS124の処理(対象エントリをステージ2“Caching”に遷移、及び確保失敗を応答)を行わない点では、上述の第1方式の手順(図19)と同じである。図23の手順が図19の手順と異なる点は、S126の後、S127にて抽出したキャッシュエントリの「使用中のRIP」欄に登録された各RIP部120に対して、そのエントリのキャッシュデータの使用中止(及び元のPDLデータからの再RIP処理)を指示する点、及びS128Aにてそのエントリのステージを4に変更するのに加え、そのエントリのキャッシュデータを実際にキャッシュメモリ140から削除し、そのデータの領域を解放してしまう点である。
このように、この第2方式では実際にキャッシュデータが削除されて領域が解放されているので、図23の手順におけるS132Aでは、対象エントリのためのキャッシュ領域をそれら空いた領域から確保すればよい。したがって、オペレーティングシステムからキャッシュメモリ140として割り当てられた範囲を超えてキャッシュ領域を確保する必要はない。この第2方式では、対象エントリに必要なキャッシュ領域が即座に確保される。なお、キャッシュ領域を強制解放されたステージ1の劣位エントリは、対象エントリよりもスコアが低いので、対象エントリのキャッシュをあきらめるより、劣位エントリの使用中のキャッシュデータの領域を解放した方が、キャッシュの利用効率の点では有利な場合が少なくない。
《第3方式:使用完了後追い出し方式》
前述の第1方式では、ステージ4に遷移させた劣位エントリの使用が終了してデータが削除されるのを待たず、キャッシュメモリ140に割り当てられた容量からオーバーフローする形で対象エントリのための領域確保(S132)を行った。これに対し、この第3方式では、図24に示すように、キャッシュメモリ140のオーバーフローは、それらステージ4に遷移させたすべての劣位エントリの使用の終了を待ち(S131)、その後それらすべての劣位エントリの領域が解放された後に、対象エントリのための領域確保を行う(S132A)。ここで、S131では、S126〜S130の繰り返しの中でステージを4“Cached Out”に変更した各劣位エントリを記憶しておき、それら各劣位エントリの使用カウンタを例えば定期的に監視し、それら劣位エントリの全ての使用カウンタの値が0になったときに、それら劣位エントリの使用が全て終了したと判定する。
なお、図24の手順では、S128では、劣位エントリのステージを3“Cached”から4“Cached Out”に変更するが、第2方式のS128Aとは異なり、キャッシュデータの削除は行わない。
この第3方式では、対象エントリに必要なキャッシュ領域は、ステージ4に変更した劣位エントリ群の使用が終了するまでは確保されないものの、キャッシュメモリ140に割り当てられた容量を超えることはない。
《混合方式》
以上、3つの方式について説明した。キャッシュ管理部130は、それら3つの方式の1つに従って処理を実行してもよいが、それら3つの方式を動的に切り替えながら処理を進めてもよい。このような動的切り替えの手順の一例を、図25及び図26に例示する。
図25の手順は、図10の手順のS106の判定結果がYESとなった場合の手順であり、図19の手順にS320及びS322を追加したものである。したがって、図19を参照して既に説明したステップについては説明を省略する。
図19の手順では、S111の判定結果がNOとなった場合、すなわち、使用されていないキャッシュデータを全てキャッシュメモリから削除しても対象エントリに必要なキャッシュ領域が確保できない場合、まずキャッシュ管理部130はオペレーティングシステム(OS)に対し、OSが管理しているメモリの空き容量(あるいは使用率など)を問い合わせる(S320)。キャッシュ管理部130は、OSが管理するメモリのうちの一部をキャッシュメモリ140として割り当ててもらっているが、S320ではその割り当てられたメモリ空間を超えて(オーバーフローして)キャッシュメモリ140の領域を一時的に拡大できるかどうかを判定するために、メモリの空き容量を問い合わせるのである。そして、キャッシュ管理部130は、その結果得られたメモリの空き容量に基づき、OSが管理するメモリに、対象エントリのためのキャッシュ領域分だけキャッシュメモリ140のための割当を増やす余裕があるかどうかを判定する(S322)。この判定では、例えば、OSが管理するメモリの空き容量から対象エントリのキャッシュデータサイズを減算し、その減算結果が、OSが適切に動作するためのメモリの空き容量の閾値を超えていれば、「余裕がある」と判定するなどすればよい。S322でメモリに余裕があると判定すると、キャッシュ管理部130は、S126〜S132に示す第1(オーバーフロー)方式の処理を実行する。
S322でメモリに余裕がないと判定すると、キャッシュ管理部130は、第2(即時強制追い出し)方式と第3(使用完了後追い出し)方式との選択を行う。このための手順の例を図26に示す。図26の手順では、劣位エントリ(ステージ3)の中から最もスコアの低いものを1つ抽出する(S126)。そして、抽出した劣位エントリをステージ4“Cached Out”に遷移させ(S128)、その劣位エントリのキャッシュデータを追い出してキャッシュ領域を解放したと仮定した場合のキャッシュメモリ140の空き容量を計算する。また、その劣位エントリのキャッシュデータを今すぐに強制的に追い出すと仮定した場合のペナルティを評価する(S324)。ここでいう「ペナルティ」は、抽出した各劣位エントリのキャッシュデータを即時に追い出した場合に、それまでそれら劣位エントリのキャッシュデータを使用していた各RIP部120が被る損害を表す評価値である。
S324のペナルティ評価には、様々な方式が考えられる。例えば1つの方式として、評価対象の劣位エントリのキャッシュデータのサイズに基づいて評価する方式がある。この方式では、キャッシュデータのサイズが大きいほど、そのキャッシュデータを追い出す場合のペナルティが高くなる。即時強制追い出し方式の場合、使用されているキャッシュデータを追い出してしまうことになり、これによりそのキャッシュデータを使用中のRIP部120は、そのキャッシュデータに対応するPDLデータをRIP処理する必要がある。一般にキャッシュデータが大きいほどRIP処理に時間がかかるので、ペナルティを高くする。
また、別の方式では、評価対象の劣位エントリのキャッシュデータを使用している各RIP部120についての、そのキャッシュデータの読み出し完了率(すなわちキャッシュデータの全体のうち読み出しが完了した部分の割合)に基づいて評価する。この方式では、キャッシュデータの読み出し完了率が高いほど、そのキャッシュデータをすぐに追い出した場合のペナルティが高くなる。これは、追い出しによりそれまでのキャッシュデータの読み出し処理が無駄になるが、読み出し完了率が高いほどその無駄が大きくなるためである。1つの劣位エントリのキャッシュデータを使用しているRIP部120が複数ある場合は、個々のRIP部120についてペナルティを求める。なお、この方式のために、キャッシュ管理部130は、RIP部120ごとに、当該RIP部120に現在キャッシュデータを提供しているキャッシュエントリと、そのキャッシュデータのうち提供済の割合(すなわちRIP部120から見れば読み出し完了率)とを例えば定期的に記録する。
また、更に別の方式では、評価対象の劣位エントリのキャッシュデータの使用が完了する時刻の予測値(使用完了予測時刻)に基づいて評価する。1つの劣位エントリのキャッシュデータを使用しているRIP部120が複数ある場合は、個々のRIP部120ごとに、使用完了予測時刻を求め、その使用完了予測時刻からペナルティ値を求める。この方式では、キャッシュデータの使用完了予測時刻が現在時刻に近いほど、そのキャッシュデータをすぐに追い出した場合のペナルティが高くなる。これは、使用完了予測時刻が現在時刻に近いほど、対象エントリのためにその使用の完了を待つ時間が短いので、すぐに追い出さない方が損が少ない(すなわちペナルティが低い)ためである。なお、この方式のためには、キャッシュ管理部130は、RIP部120ごとに、当該RIP部120に現在キャッシュデータを提供しているキャッシュエントリと、そのキャッシュデータのうち提供済の割合(すなわちRIP部120から見れば読み出し完了率)とを例えば定期的に記録し、その読み出し完了率の時間的な変化から、読み出し完了予測時刻を求めればよい。
また、S128で計算した空き容量が、対象エントリのキャッシュデータを収容するのに十分な大きさかどうかを判定し(S130)、まだ不十分であれば、S126に戻り、スコアの低い別の劣位エントリが残っている間は、S126、S128、S324の処理を繰り返す。このような繰り返しによりS130の判定結果がYESとなると、キャッシュ管理部130は、S126で抽出した追い出し対象の劣位エントリのすべてについて、S324で計算したペナルティの値があらかじめ定められた閾値より小さいかどうかを判定する(S326)。ある劣位エントリについてのペナルティが閾値より小さい場合、その劣位エントリのキャッシュデータをすぐに追い出しても、その追い出しによる不利益(例えば追い出したキャッシュデータを使用していたRIP部120が再度PDLデータをRIP処理することによるコスト)が、対象エントリのためのキャッシュエントリをすぐに確保することによる利益よりも少ない可能性が高い。逆に言えば、そのような閾値を実験やシミュレーションによりあらかじめ求めておく。
S326の判定で、領域解放対象の劣位エントリのペナルティがすべて閾値より小さければ、どの劣位エントリについてもキャッシュデータを即時追い出しても不利益が少ないということである。この場合、即時強制追い出し方式を採用する。すなわち、キャッシュ管理部130は、それら追い出し対象の各劣位エントリのキャッシュデータを使用中の各RIP部120にそのデータの使用中止の指示を通知し、それら各劣位エントリのキャッシュデータを追い出して、それらキャッシュデータがそれまで占めていたキャッシュ領域を解放する(S328)。そして、S132に進み、対象エントリのための領域をキャッシュメモリ140に確保し、要求元のRIP部120に領域確保の旨を示すコードと確保した領域のアドレスの情報を返す。
一方、S326の判定で、追い出し対象の劣位エントリのなかに1つでもペナルティが閾値以上のものがあれば、キャッシュデータをすぐに追い出すと不利益が多い劣位エントリが存在するということである。この場合、第3(使用完了後追い出し)方式を採用する。すなわち、キャッシュ管理部130は、追い出し対象のすべての劣位エントリのキャッシュデータを使用しているすべてのRIP部120がその使用を完了するのを待ち(S131)、それらすべての劣位エントリの領域が解放された後に、対象エントリのための領域確保を行う(S132)。
以上の例では、第2方式と第3方式を切り替えるのに、S326ですべてのペナルティ値が閾値より小さいか否か、という判定基準を用いたが、これは一例に過ぎない。この代わりに、ペナルティ値が閾値以上である劣位エントリの割合が、あらかじめ定められた割合閾値以下であれば、第2(即時強制追い出し)方式を採用するなどといった、他の判定基準も考えられる。
図25及び図26の例では、3つの方式を動的に切り替えて使用したが、3つの方式全てを用いる必要はない。別の例として、それら3つの方式のうちの2つを動的に切り替えて使用してもよい。例えば、第1(オーバーフロー)方式と第2(即時強制追い出し)方式とを動的に切り替える場合は、図25のS320及びS322のステップによりどちらの方式を使用するかを判定すればよい。第1方式と第3(使用完了後追い出し)方式とを動的に切り替える場合も同様である。また第2方式と第3方式とを動的に切り替える場合は、図26のS324及びS326のステップによりどちらの方式を使用するかを判定すればよい。
以上に例示した印刷文書変換システム100、またはこれを構成するジョブ管理部110、RIP部120及びキャッシュ管理部130は、例えば、汎用のコンピュータに上述の各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)を制御するHDDコントローラ、各種I/O(入出力)インタフェース、ローカル・エリア・ネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVDなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。
100 印刷文書変換システム、110 ジョブ管理部、112 ページ割当部、114 負荷監視部、120 RIP部、130 キャッシュ管理部、132 エントリ管理テーブル、140 キャッシュメモリ、200 ホストコンピュータ、210 印刷制御装置、220 プリンタエンジン。

Claims (10)

  1. キャッシュ装置と、複数のデータ処理装置と、を備え、
    前記複数のデータ処理装置の各々は、
    印刷文書データ内の各文書要素のページ記述言語のデータを処理してビットマップ形式又は中間言語形式の画像データを作成する画像データ作成手段と、
    前記画像データ作成手段が作成する前記画像データのための記憶領域を確保するための確保要求を前記キャッシュ装置に送信する確保要求送信手段と、
    を備え、
    前記キャッシュ装置は、
    前記各データ処理装置が作成したビットマップ形式又は中間言語形式の画像データを記憶するためのキャッシュメモリと、
    前記キャッシュメモリに画像データが記憶されている各文書要素について、それぞれ当該文書要素の画像データがいずれかのデータ処理装置により使用中であるか否かを示す使用状態情報と、当該文書要素のキャッシュ優先度と、を記憶する記憶手段と、
    前記データ処理装置から文書要素の画像データのための記憶領域を確保するための確保要求を受けた際に、当該文書要素よりもキャッシュ優先度が低く且ついずれかのデータ処理装置が使用中である文書要素を前記キャッシュメモリからの追い出し対象とすることにより、当該記憶領域を確保する領域確保手段と、
    を備える、
    ことを特徴とする印刷文書処理システム。
  2. 前記各データ処理装置は、
    前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、
    を更に備え、
    前記領域確保手段は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、
    ことを特徴とする請求項1に記載の印刷文書処理システム。
  3. 前記領域確保手段は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、
    ことを特徴とする請求項1に記載の印刷文書処理システム。
  4. 前記データ処理装置は、
    前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、
    を更に備え、
    前記領域確保手段は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、
    ことを特徴とする請求項1に記載の印刷文書処理システム。
  5. 前記データ処理装置は、
    前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、
    を更に備え、
    前記領域確保手段は、前記キャッシュ装置を管理するオペレーティングシステムが管理するメモリの空き容量に基づき、前記確保要求の対象の文書要素の画像データの記憶領域を、前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保できるか否か判定し、確保できる場合は第1の方式を、確保できない場合は第2の方式を採用し、
    前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、という方式であり、
    前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、という方式である、
    ことを特徴とする請求項1に記載の印刷文書処理システム。
  6. 前記データ処理装置は、
    前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、
    を更に備え、
    前記領域確保手段は、前記キャッシュ装置を管理するオペレーティングシステムが管理するメモリの空き容量に基づき、前記確保要求の対象の文書要素の画像データの記憶領域を、前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保できるか否か判定し、確保できる場合は第1の方式を、確保できない場合は第2の方式を採用し、
    前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、という方式であり、
    前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、という方式である、
    ことを特徴とする請求項1に記載の印刷文書処理システム。
  7. 前記データ処理装置は、
    前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、
    を更に備え、
    前記領域確保手段は、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出した場合に当該文書要素の画像データを使用していたデータ処理装置が被る損害の評価値を計算し、その評価値があらかじめ定められた閾値以下である場合は第1の方式を、そうでない場合は第2の方式を採用し、
    前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、という方式であり、
    前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、という方式である、
    ことを特徴とする請求項1に記載の印刷文書処理システム。
  8. 前記データ処理装置は、
    前記キャッシュメモリに記憶された画像データの使用が完了した場合に、前記キャッシュ装置に対して使用完了通知を送信する手段、
    を更に備え、
    前記領域確保手段は、前記キャッシュ装置を管理するオペレーティングシステムが管理するメモリの空き容量に基づき、前記確保要求の対象の文書要素の画像データの記憶領域を、前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保できるか否か判定し、確保できる場合は第1の方式を採用し、確保できない場合は更に前記領域確保手段は、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出した場合に当該文書要素の画像データを使用していたデータ処理装置が被る損害の評価値を計算し、その評価値があらかじめ定められた閾値以下である場合は第2の方式を、そうでない場合は第3の方式を採用し、
    前記第1の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐには前記キャッシュメモリから追い出さずに、前記キャッシュ装置を管理するオペレーティングシステムから前記キャッシュメモリに割り当てられたメモリ空間からはみ出して確保し、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択した文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、前記追い出し対象に選択した文書要素の画像データを前記キャッシュメモリから追い出す、という方式であり、
    前記第2の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記追い出し対象に選択した文書要素の画像データをすぐに前記キャッシュメモリから追い出し、画像データを追い出した文書要素についての画像データを使用中のデータ処理装置に対して、前記キャッシュメモリ内の当該文書要素の画像データの使用を中止し、当該文書要素のページ記述言語のデータから画像データを作成し直すことを指示する、という方式であり、
    前記第3の方式は、前記確保要求に応じてその対象の画像データのための記憶領域を確保するにあたり、前記各データ処理装置からの使用完了通知に基づき、前記追い出し対象に選択したすべての文書要素の画像データがいずれのデータ処理装置からも使用中でなくなったことが判明した後に、それら追い出し対象の文書要素の画像データの前記キャッシュメモリから追い出し、この追い出しの後、前記データ処理装置に対して確保成功の旨を応答する、という方式である、
    ことを特徴とする請求項1に記載の印刷文書処理システム。
  9. 各データ処理装置が作成したビットマップ形式又は中間言語形式の画像データを記憶するためのキャッシュメモリと、
    前記キャッシュメモリに画像データが記憶されている各文書要素について、それぞれ当該文書要素の画像データがいずれかのデータ処理装置により使用中であるか否かを示す使用状態情報と、当該文書要素のキャッシュ優先度と、を記憶する記憶手段と、
    前記データ処理装置から文書要素の画像データのための記憶領域を確保するための確保要求を受けた際に、当該文書要素よりもキャッシュ優先度が低く且ついずれかのデータ処理装置が使用中である文書要素を前記キャッシュメモリからの追い出し対象とすることにより、当該記憶領域を確保する領域確保手段と、
    を備える、ことを特徴とするキャッシュ装置。
  10. コンピュータを、
    各データ処理装置が作成したビットマップ形式又は中間言語形式の画像データを記憶するためのキャッシュメモリ、
    前記キャッシュメモリに画像データが記憶されている各文書要素について、それぞれ当該文書要素の画像データがいずれかのデータ処理装置により使用中であるか否かを示す使用状態情報と、当該文書要素のキャッシュ優先度と、を記憶する記憶手段、
    前記データ処理装置から文書要素の画像データのための記憶領域を確保するための確保要求を受けた際に、当該文書要素よりもキャッシュ優先度が低く且ついずれかのデータ処理装置が使用中である文書要素を前記キャッシュメモリからの追い出し対象とすることにより、当該記憶領域を確保する領域確保手段、
    として機能させるためのプログラム。
JP2010267562A 2010-11-30 2010-11-30 印刷文書処理システム、キャッシュ装置及びプログラム Expired - Fee Related JP5747489B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010267562A JP5747489B2 (ja) 2010-11-30 2010-11-30 印刷文書処理システム、キャッシュ装置及びプログラム
US13/110,590 US8810813B2 (en) 2010-11-30 2011-05-18 Print document processing system, cache apparatus, computer readable medium storing program, and print document processing method
AU2011202615A AU2011202615B2 (en) 2010-11-30 2011-06-02 Print document processing system, cache apparatus, program, and print document processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010267562A JP5747489B2 (ja) 2010-11-30 2010-11-30 印刷文書処理システム、キャッシュ装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2012116078A true JP2012116078A (ja) 2012-06-21
JP5747489B2 JP5747489B2 (ja) 2015-07-15

Family

ID=46126452

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010267562A Expired - Fee Related JP5747489B2 (ja) 2010-11-30 2010-11-30 印刷文書処理システム、キャッシュ装置及びプログラム

Country Status (3)

Country Link
US (1) US8810813B2 (ja)
JP (1) JP5747489B2 (ja)
AU (1) AU2011202615B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012118746A (ja) * 2010-11-30 2012-06-21 Fuji Xerox Co Ltd 印刷文書処理システム、キャッシュ装置及びプログラム
JP5288039B1 (ja) * 2012-11-06 2013-09-11 富士ゼロックス株式会社 印刷画像処理システムおよびプログラム
JP5344075B1 (ja) * 2012-10-11 2013-11-20 富士ゼロックス株式会社 印刷画像処理システムおよびプログラム
JP5408323B1 (ja) * 2012-10-11 2014-02-05 富士ゼロックス株式会社 印刷画像処理システムおよびプログラム
JP2014213526A (ja) * 2013-04-25 2014-11-17 ブラザー工業株式会社 印刷装置および印刷システム
JP2015157398A (ja) * 2014-02-24 2015-09-03 理想科学工業株式会社 画像処理装置
JP2016007848A (ja) * 2014-06-26 2016-01-18 キヤノン株式会社 制御装置、処理方法及ぶプログラム
JP2016207172A (ja) * 2015-04-28 2016-12-08 富士ゼロックス株式会社 データ処理装置及びプログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5545050B2 (ja) * 2010-06-09 2014-07-09 コニカミノルタ株式会社 画像処理装置、プログラム及び画像処理方法
CN103999058B (zh) * 2011-12-16 2017-02-22 国际商业机器公司 带驱动器系统服务器
US9292448B2 (en) * 2013-09-19 2016-03-22 Google Inc. Dynamic sizing of memory caches
US10810129B2 (en) * 2015-09-03 2020-10-20 International Business Machines Corporation Application memory organizer
US9892346B2 (en) * 2015-12-18 2018-02-13 Océ-Technologies B.V. Method of converting image data from source format into target format
JP6789716B2 (ja) * 2016-08-05 2020-11-25 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、及びプログラム
US10373029B2 (en) * 2017-07-31 2019-08-06 Kyocera Document Solutions Inc. Data processing method, data processing device that execute font processing efficiently using a plurality of cores of processor, and recording medium therefor
US11288191B1 (en) * 2020-12-23 2022-03-29 Intel Corporation Range based flushing mechanism

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689232A (ja) * 1992-09-08 1994-03-29 Fujitsu Ltd キャッシュメモリの制御方法
JPH11153990A (ja) * 1997-11-19 1999-06-08 Fuji Xerox Co Ltd プリンタ装置
JP2004042327A (ja) * 2002-07-09 2004-02-12 Kyocera Corp 画像形成装置の制御方法
JP2006072832A (ja) * 2004-09-03 2006-03-16 Nec Access Technica Ltd 画像処理システム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101576A (en) * 1992-07-31 2000-08-08 Fujitsu Limited Method for saving generated character image in a cache system including a backup cache
JP2000335022A (ja) 1999-05-31 2000-12-05 Toshiba Corp プリンタ制御装置
US7103723B2 (en) 2003-02-25 2006-09-05 Intel Corporation Priority-based code cache management
EP1698976A1 (en) 2005-03-03 2006-09-06 Siemens Aktiengesellschaft Priority-sensitive reallocation of buffer space
US20070240139A1 (en) * 2006-03-28 2007-10-11 Kyocera Mita Corporation Image processing device and image processing method
JP4364897B2 (ja) * 2006-11-09 2009-11-18 シャープ株式会社 データ転送装置
JP4942179B2 (ja) * 2006-12-11 2012-05-30 キヤノン株式会社 印刷制御装置及びその制御方法及びデバイスドライバ
JP4995057B2 (ja) * 2007-12-07 2012-08-08 キヤノン株式会社 描画装置、印刷装置、描画方法、及びプログラム
JP4771241B2 (ja) * 2009-07-17 2011-09-14 コニカミノルタビジネステクノロジーズ株式会社 バリアブル印刷システム
JP5663941B2 (ja) * 2010-04-30 2015-02-04 富士ゼロックス株式会社 印刷文書変換装置およびプログラム
US20120206759A1 (en) * 2011-02-11 2012-08-16 Jeremiah Elliott Data Capture System

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689232A (ja) * 1992-09-08 1994-03-29 Fujitsu Ltd キャッシュメモリの制御方法
JPH11153990A (ja) * 1997-11-19 1999-06-08 Fuji Xerox Co Ltd プリンタ装置
JP2004042327A (ja) * 2002-07-09 2004-02-12 Kyocera Corp 画像形成装置の制御方法
JP2006072832A (ja) * 2004-09-03 2006-03-16 Nec Access Technica Ltd 画像処理システム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012118746A (ja) * 2010-11-30 2012-06-21 Fuji Xerox Co Ltd 印刷文書処理システム、キャッシュ装置及びプログラム
JP5344075B1 (ja) * 2012-10-11 2013-11-20 富士ゼロックス株式会社 印刷画像処理システムおよびプログラム
JP5408323B1 (ja) * 2012-10-11 2014-02-05 富士ゼロックス株式会社 印刷画像処理システムおよびプログラム
US8861011B2 (en) 2012-10-11 2014-10-14 Fuji Xerox Co., Ltd. Print image processing system and non-transitory computer readable medium
US8976396B2 (en) 2012-10-11 2015-03-10 Fuji Xerox Co., Ltd. Print image processing system and non-transitory computer readable medium
JP5288039B1 (ja) * 2012-11-06 2013-09-11 富士ゼロックス株式会社 印刷画像処理システムおよびプログラム
US8705108B1 (en) 2012-11-06 2014-04-22 Fuji Xerox Co., Ltd. Non-transitory computer readable medium storing program for executing print image processing system
JP2014213526A (ja) * 2013-04-25 2014-11-17 ブラザー工業株式会社 印刷装置および印刷システム
JP2015157398A (ja) * 2014-02-24 2015-09-03 理想科学工業株式会社 画像処理装置
JP2016007848A (ja) * 2014-06-26 2016-01-18 キヤノン株式会社 制御装置、処理方法及ぶプログラム
JP2016207172A (ja) * 2015-04-28 2016-12-08 富士ゼロックス株式会社 データ処理装置及びプログラム

Also Published As

Publication number Publication date
JP5747489B2 (ja) 2015-07-15
AU2011202615B2 (en) 2014-02-06
AU2011202615A1 (en) 2012-06-14
US8810813B2 (en) 2014-08-19
US20120133964A1 (en) 2012-05-31

Similar Documents

Publication Publication Date Title
JP5747489B2 (ja) 印刷文書処理システム、キャッシュ装置及びプログラム
JP5691448B2 (ja) 印刷文書処理システム、キャッシュ装置、データ処理装置及びプログラム
JP5648449B2 (ja) 印刷文書処理システム、キャッシュ装置及びプログラム
JP5288039B1 (ja) 印刷画像処理システムおよびプログラム
JP4417153B2 (ja) 並行印刷システム
JP5663941B2 (ja) 印刷文書変換装置およびプログラム
JP5475307B2 (ja) ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及び装置
US8345298B2 (en) Print control apparatus, for performing a printing operation by reusing rendering completed data
JP5344075B1 (ja) 印刷画像処理システムおよびプログラム
JP5614266B2 (ja) 印刷文書処理システム、キャッシュ装置、データ処理装置及びプログラム
US8976396B2 (en) Print image processing system and non-transitory computer readable medium
US8934121B2 (en) Coordinated, distributed, reusable document component respository
JP2006344184A (ja) 画像形成装置
JP7158656B2 (ja) 画像形成装置、画像形成方法及び画像形成プログラム
JP2012008838A (ja) 印刷文書変換装置およびプログラム
JP2009039929A (ja) 画像形成装置
JP2015001882A (ja) 印刷画像処理システムおよびプログラム
JPH0895544A (ja) 文字処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141003

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: 20150414

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150427

R150 Certificate of patent or registration of utility model

Ref document number: 5747489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees