[go: up one dir, main page]

JP2011126210A - 印刷データ処理装置、印刷データ処理方法、およびプログラム - Google Patents

印刷データ処理装置、印刷データ処理方法、およびプログラム Download PDF

Info

Publication number
JP2011126210A
JP2011126210A JP2009288464A JP2009288464A JP2011126210A JP 2011126210 A JP2011126210 A JP 2011126210A JP 2009288464 A JP2009288464 A JP 2009288464A JP 2009288464 A JP2009288464 A JP 2009288464A JP 2011126210 A JP2011126210 A JP 2011126210A
Authority
JP
Japan
Prior art keywords
memory
processor
area
allocated
print 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.)
Pending
Application number
JP2009288464A
Other languages
English (en)
Inventor
Yuji Sato
悠史 佐藤
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2009288464A priority Critical patent/JP2011126210A/ja
Priority to US12/968,027 priority patent/US8614822B2/en
Publication of JP2011126210A publication Critical patent/JP2011126210A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/40Details not directly involved in printing, e.g. machine management, management of the arrangement as a whole or of its constitutive parts
    • G06K15/4005Sharing resources or data with other data processing systems; Preparing such data
    • G06K15/401Sharing memory space

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Record Information Processing For Printing (AREA)

Abstract

【課題】 並列処理中の複数のPDLコマンド解析処理でメモリ不足が発生すると、その並行処理中のPDLコマンド解析処理の一部を中止させてしまうので、複数のプロセッサの性能を十分に活かすことができない。
【解決手段】 メモリ管理手段により前記第1のプロセッサ、および前記第2のプロセッサの両方のプロセッサに割り当てられたメモリ領域が閾値を超えた場合(S1411)において、前記メモリ管理手段は前記両方のプロセッサの内、一方のプロセッサに対し、前記一方のプロセッサに割り当てられるメモリ領域がフォールバック閾値分になるよう、メモリの未使用領域からメモリ領域を割り当て、残りのメモリの未使用領域を、他方のプロセッサに割り当てる(S1416、またはS1417)。
【選択図】 図7

Description

本発明は、印刷データ処理装置、印刷データ処理方法、およびプログラムに関するものである。
画像形成装置のPDL処理は、PDLコマンド解析処理、中間データ(DL(Display List))生成とレンダリング処理からなる。また、DL格納用メモリが不足すると、一旦レンダリングし、画像を圧縮するFallback(フォールバック)処理により、DL格納用メモリを空け、サイズが大きいデータでも処理を継続できるようにしている。近年、ハードウェア技術の向上により、マルチコアのCPUが開発され、PC等では、複数のアプリケーションを同時実行可能となっている。
マルチファンクションプリンタ(MFP)においても、コピー、プリント等の複数の機能をストレスなく並列実行するために、マルチコアのCPUが搭載されるようになっている。マルチコアのCPUは、PDLをページ並列で処理するためにも利用することが可能である。
特許文献1には、PDLデータに対し、PDLコマンドの処理を複数のCPUによるページ並列処理をする場合に、並列処理中の複数のPDLコマンド解析処理へ、メモリを割り当てる方法が開示されている。そして複数のPDLコマンド解析処理を並行して実行しているとき、いずれかのPDLコマンド解析処理でメモリ不足が発生すると、その並行処理中のPDLコマンド解析処理を中止させる。その処理の中止に応じて、当該中止した処理に対応するメモリを解放し、その解放したメモリを残りのPDL解析部に割り当てて、その残りのPDL解析部による処理を継続させていた。
特開2008−143067
しかしながら、並列処理中の複数のPDLコマンド解析処理でメモリ不足が発生すると、その並行処理中のPDLコマンド解析処理の一部を中止させてしまうので、複数のプロセッサの性能を十分に活かすことができない。
本発明の一実施系に係る装置は、印刷データを受信する受信手段と、前記受信手段により受信された印刷データを基に中間データを生成し、生成した中間データをメモリ領域に格納する第1のプロセッサと、前記受信手段により受信された印刷データを基に中間データを生成し、生成した中間データをメモリ領域に格納する前記第1のプロセッサとは異なる第2のプロセッサと、前記第1のプロセッサ、または前記第2のプロセッサからメモリ獲得依頼を受けたことに応じて、メモリの未使用領域における所定サイズのメモリ領域を、獲得依頼したプロセッサに割り当てるメモリ管理手段とを有し、前記メモリ管理手段により前記第1のプロセッサ、および前記第2のプロセッサの両方のプロセッサに割り当てられたメモリ領域が閾値を超えた場合において、前記メモリ管理手段は前記両方のプロセッサの内、一方のプロセッサに対し、前記一方のプロセッサに割り当てられるメモリ領域がフォールバック閾値分になるよう、メモリの未使用領域からメモリ領域を割り当て、残りのメモリの未使用領域を、他方のプロセッサに割り当てることを特徴とする。
複数のプロセッサで、PDLのデータを処理する場合、各プロセッサにおいてメモリを効率的に使用することにより、複数のプロセッサの性能を十分に活かすことが可能になる。
本発明における画像形成装置102のシステム構成の一例を示した図 本発明における画像形成装置102のモジュール構成の一例を示した図 実施例1における印刷処理のフローチャートの一例を示した図 実施例1におけるPDLコマンド解析処理のフローチャートの一例を示した図 実施例1におけるレンダリングのフローチャートの一例を示した図 実施例1におけるメモリ確保におけるフローチャートの一例を示した図 実施例1における動的モード処理のフローチャートの一例を示した図 実施例1における固定モード処理のフローチャートの一例を示した図 実施例1におけるメモリFreeについてのフローチャートの一例を示した図 実施例1における本実施例におけるメモリ管理情報の構成の一例を示した図 実施例1におけるメモリ使用時の閾値との関係の一例を示した図 実施例2におけるメモリ確保と開放におけるフローチャートの一例を示した図 実施例2におけるメモリ使用時の閾値との関係の一例を示した図
以下、本発明を実施するための最良の形態について図面を用いて説明する。
ここで、本発明の各実施例で用いられる用語の定義について説明する。
中間データとは、レンダリング部が印刷データを描画する際に用いられるデータのことであり、印刷データを基に生成されるデータである。
フォールバックは、DL(中間データのことである)のサイズがある一定のデータサイズを超えた場合や、そのDLを処理するためのワーク領域が一定のデータサイズを超えるとわかった場合に、その時点で生成されたDLをレンダリングしラスタイメージとする。そして、そこまで作成したDLを一度クリアする。このラスタイメージを描画エリアのバックグラウンドイメージとして再びDLの一部に追加する処理のことである。
その後、1ページ分の中間データが生成された時点で、圧縮されたバックグラウンドイメージを伸長しレンダリングし、1ページ分の残りのDLもレンダリングし、2つのイメージデータを基に1ページ分のイメージを作成する。
通常、このバックグラウンドイメージは圧縮されるため、追加されるDLのサイズは元のDLサイズよりも小さくなる。そこで、この空いた領域に残りのDLを作成していくことにより限定されたメモリ空間で大きなサイズのDLを処理できる。
図1は、実施例1における画像形成装置102(印刷データ処理装置)のシステム構成の一例を示す図である。
102は画像形成装置であり、202は外部デバイスと情報の入出力を行うためのネットワークI/Fであり、外部デバイスから送信された印刷データを受信する。203は様々な情報を一時格納するRAMである。RAM203は、受信バッファ204、ワークメモリ205、フレームバッファ206、ラスタメモリ207、共有メモリ220からなる。
受信バッファ204は、ネットワークI/F202を介して受信した印刷データ(PDLとも呼ぶ)を格納するメモリである。ワークメモリ205は、入力された印刷データを中間コードに変換するときに一時的に使用するワークメモリである。フレームバッファ206は、プリンタ内部の中間コードなどを格納するフレームバッファである。ラスタメモリ207は、中間コードを展開したデータを格納するラスタメモリである。共有220は、CPU1 218、またはCPU2 219で動作するROM208内のプログラムからアクセス可能な共有メモリである。
ROM208は、画像形成装置102におけるCPU1 218またはCPU2 219の制御コードを格納するROMである。ROM208は、PDL解析部209、DL(中間データ)生成部210、展開処理部214、ページスケジューラ215、メモリ管理部216のプログラムからなる。これらのプログラムをコンピュータ(CPUやメモリ等を用いて)で実行することで、実施例1の印刷データ処理方法が実現される。よって、これらのプログラムを(一部分のプログラムでも構わない)を印刷データ処理プログラムと呼ぶ。
209は、受信バッファ204から読み出したデータが、複数種のPDLのどのPDLかを特定し、PDLデータを解析し、所定の処理に振り分けるPDL解析部である。210は、PDL解析部209において解析したデータから中間データを生成し、フレームバッファ206に格納するDL生成部である。展開処理部214は、フレームバッファ206に格納された中間データを展開したビットマップをラスタメモリ207に格納する展開処理部である。ページスケジューラ215は、CPU218とCPU219で動作するPDL解析部209、DL生成部210に、PDLデータの各ページの処理を依頼するページスケジューラである。メモリ管理部216は、CPU218とCPU219で動作するDL生成部210が使用するフレームバッファ206を管理するメモリ管理部216である。ROM208の各プログラムは、CPUが実行することで夫々の機能を実現する。
218、219は画像形成装置201の演算処理や制御を行う中央演算処理装置(CPU)である。本実施例では、218を第1のプロセッサ、またはプロセス1、219を第2のプロセッサ、またはプロセス2と呼ぶ。212はプリンタエンジン213との信号の入出力を行うエンジンI/Fである。213はイメージデータに基づいて、周知の電子写真プロセスによって感光ドラム上に潜像を形成し、用紙に転写して定着し印字を行うプリンタエンジンである。
図2は、本発明における画像形成装置102のモジュール構成の一例を示す図である。
302は、CPU1 218上で動作するモジュールを示しており、PDL解析部209とDL生成部210が動作することを示す。303は、CPU2 219上で動作するモジュールを示しており、PDL解析部209とDL生成部210が動作することを示す。
310は、ページスケジューラ215からCPU1 218のPDL解析部209への制御を示す。311は、ページスケジューラ215からCPU2 219のPDL解析部209への制御を示す。これらの制御については、関数コール、プロセス間通信等によりおこなう。
CPU1 218で動作するPDL解析部209は、ページスケジューラ215からの制御310に従い、受信バッファ204に格納されたPDLデータを読み込み処理を実行する。CPU1 218で動作するDL生成部210は、PDL解析部209から渡されたデータにより処理を実行する。また、DL生成部210は、メモリ管理部216にメモリ獲得依頼340を行い、フレームバッファ206からメモリを獲得し、DLを格納する。ページの処理が終了すると、展開処理部214にレンダリング依頼330をおこなう。CPU2 218のPDL解析部209、DL生成部210も同様の処理をおこなう。
展開処理部214は、DL生成部210からのレンダリング依頼330、331を受けると、フレームバッファ206に格納されたDLをレンダリングし、ビットマップを生成する。レンダリング終了後に、メモリ管理部216にメモリ解放依頼342を行う。メモリ管理部216は、DL生成部210からのメモリ獲得依頼340、341を受けると、フレームバッファ206の未使用領域のアドレスをDL生成部210に返し、使用領域に変更する。また、展開処理部214からメモリ解放依頼342を受けると、解放するアドレスのメモリを未使用領域に変更する。このようなモジュール構成により、PDLのページ並列処理を実現している。HDD217は記憶装置にデータを保存可能であり、また、SDDなど大容量記憶措置も含まれる。
図3は、本実施例におけるページスケジューリング処理のフローチャートの一例を示す図である。ステップS1001で、ネットワーク104に接続されたPC等から送信されたデータをネットワーク104経由して、ネットワークI/F202が受信し、受信バッファ204に格納する。ステップS1002で、ページスケジューラ215は、CPU1の処理状態Proc1Status、CPU2の処理状態Proc2Status、を初期化する。ステップS1003で、ジョブ処理中かを判定する。処理中の場合は、ステップS1004においてCPU1の処理状態Proc1Statusを判定する。処理中(Proc1StatusがTRUE)の場合、ステップS1007において、CPU2の処理状態Proc2Statusを判定する。CPU2の処理状態が処理中でない(Proc2StatusがFALSE)の場合、PDL解析部209にステップS1008のPDLコマンド解析処理を依頼する。そしてステップS1009でCPU2の処理状態を処理中(Proc2StatusをTRUE)と設定し、ステップS1003に戻る。
ステップS1007の段階で、CPU2の処理状態が処理中(Proc2StatusがTRUE)なっている場合は、ステップS1010において、CPU1のPDL解析のページ終了通知かを判断する。ステップS1010において、CPU1のPDL解析のページ処理中である場合、ステップS1012においてCPU2のPDL解析のページ終了通知かを判断する。ステップS1012において、CPU2のPDL解析のページ処理中である場合、ステップS1010にループする。ステップS1010においてCPU1のPDL解析のページ終了通知があった場合、ステップS1011で、CPU1を処理中でない(Proc1StatusをFALSE)と設定し、S1003にもどる。同様に、ステップS1012においてCPU2のPDL解析のページ終了通知があった場合、ステップS1013で、CPU2を処理中でない(Proc2StatusをFALSE)と設定し、ステップS1003にもどる。ステップS1003においてジョブ終了通知があったら終了する。
図4は、本実施例におけるPDL解析部209が実行するPDLコマンド解析処理のフローチャートの一例を示す図である。ステップS1101で、ページスケジューラ215からPDLコマンド解析処理依頼がきたら、ステップS1102で、受信バッファ204に格納されたデータのPDL解析を行う。ステップS1103で、ジョブが終了かを判定する。まだ終了していない場合、ステップS1104で、ページ終了かを判定する。ステップS1104で、ページ終了ではない場合、ステップS1105においてメモリ領域の確保要求をメモリ管理部に要求する。
ステップS1106においてメモリを確保できたかを判定し、できなかった場合、ステップS1107で今までに作成したDLのレンダリング処理をおこなう。その後ステップS1108において、もう一度メモリを確保する。メモリが確保できない場合、ステップS1107に戻りレンダリングを繰り返し、ステップS1108でメモリを確保する。ステップS1106やステップS1109でメモリが確保できた場合、S1110において、DL生成をおこない、ステップS1102のPDL解析に戻り、次のPDLコマンド解析処理をする。ステップS1003においてジョブが終了の場合、ステップS1111でジョブ終了通知を行う。ステップS1104において、ページ終了となった場合、ステップS1112においてレンダリングをおこないステップS1113においてページ終了通知をおこなう。
図5は本実施例におけるレンダリングのフローチャートの一例を示した図である。ステップS1201においてレンダリング依頼がきたら、ステップS1202においてレンダリング処理をおこなう。そして、ステップS1203においてメモリ管理部216にメモリ開放依頼をおこなう。
図6は本実施例におけるメモリ確保におけるフローチャートの一例を示した図である。ステップS1301において初期化を行い、ステップS1302においてメモリ獲得依頼待ちか判定する。メモリ獲得依頼の場合、ステップS1303においてFixedModeがTRUE、つまり、動的モードでメモリ獲得するか、固定モードでメモリ獲得するかを判定する。FixedModeがTRUEの場合、固定モードにしておき、FALSEの場合、動的モードでメモリを獲得する。動的モードとは、プロセッサからのメモリ獲得依頼に応じて、メモリの未使用領域を割り当てるモードである。固定モードとは、未使用領域を各プロセッサ毎に予め割り当て、各プロセッサは割り当てられたメモリ領域分しかメモリ領域を確保することができないモードである。
図7は、本実施例における動的モード処理のフローチャートの一例を示した図である。この処理は、メモリ管理部216によって行われる。まず、ステップS1401においてCurTime(例えば、0時1分)に現在の時間を代入する。ステップS1402において、プロセス1のメモリ確保かを判別し、プロセス1の場合ステップS1403を処理し、プロセス2の場合はステップS1407の処理をおこなう。ステップS1403において前回メモリ確保した時間であるPreTime1が0かどうかを判断する。0で無い場合(例えば、0時0分)、ステップS1404において、プロセス1にかかった時間Time1に前回メモリを確保してからの経過時間CurTime−Pretime1の値(上述の例の場合、1になる)を足す。
一方、ステップS1403においてPreTime1が0の場合、ステップS1405の処理をおこなう。ステップS1405においてプロセス1のメモリ使用量UsedSize1に1を加算し、開放されたメモリサイズであるFreeSizeに1減算をおこなう。そして、ステップS1406においてCurTimeをPreTime1に代入処理を行う。なお、UsedSize1、またはUsedSize2を1加算すると、それぞれのプロセッサに所定サイズのメモリ領域が割り当てられる。例えば、本実施例では1加算されると8kbyte分のメモリ領域が割り当てられる。
同様にプロセス2の場合ステップS1402において、プロセス2のメモリ確保と判別し、ステップS1407の処理をおこなう。ステップS1407において前回メモリ確保した時間であるPreTime2が0かどうかを判断する。0で無い場合、ステップS1408において、プロセス2にかかった時間であるTime2に、前回メモリを確保してからの経過時間CurTime−Pretime2の値を足す。
一方、ステップS1407においてPreTime2が0の場合、ステップS1409の処理をおこなう。ステップS1409においてプロセス2のメモリ使用量UsedSize2に1を加算し、開放されたメモリサイズであるFreeSizeに1減算をおこなう。そして、ステップS1410においてCurTimeをPreTime2に代入処理をおこなう。上記プロセス1またはプロセス2において、ステップS1406の代入処理、または、ステップS1410の代入処理をおこなった後、閾値判定をおこなう。
ステップS1411において、プロセス1とプロセス2の使用したメモリサイズの合計が閾値を越えたかを判断するために、UsedSize1+UsedSize2>=ChkThの判定をおこなう。即ち、第1のプロセッサ、および第2のプロセッサの両方のプロセッサに割り当てられたメモリ領域が閾値を越えていた場合、ステップS1412において固定モードにするために、FixedModeにTRUEを代入する。次にメモリ使用量の判定をおこなう。ステップS1413においてプロセス1のメモリの使用量とプロセス1に割り当てられたメモリ量がフォールバック閾値を越えるかを判定するためにUsedSize1+FreeSize>=FBThの処理をおこなう。
フォールバック閾値を越えている場合はステップS1414においてプロセス2のメモリの使用量とプロセス2に割り当てられたメモリ量がフォールバック閾値を越えるかを判定するためにUsedSize2+FreeSize>=FBThの処理をおこなう。
フォールバック閾値を越えている場合はステップS1415において、第1のプロセッサ、および第2のプロセッサがフォールバックするまでの時間の比較判定をおこなう。フォールバックするまでの時間(フォールバック閾値を越えるまでの時間)は下記数式によって算出される。はじめに、(第nのプロセッサが中間データを生成するために要した時間)/[(第nのプロセッサが中間データを生成するために利用したメモリのリソース量)によって処理速度を算出する。その算出した処理速度を用いて(第nのプロセッサがフォールバックを行うまでに必要とする残りのメモリ量)/(処理速度)をおこなうことによって、フォールバック閾値を越えるまでの時間が算出される。nは、1、または2である。なお、プロセス1のフォールバック閾値を越えるまでの時間と、プロセス2のフォールバック閾値を越えるまでの時間を算出し、比較する。
比較した結果、プロセス1の方が速いと決定された場合は、ステップS1416において、FreeSize1=FBSize−UsedSize1で、プロセス1にメモリを割り当てる。そして、FreeSize2=FreeSize−FreeSize1において、プロセス2にメモリを割り当てる。同様に、プロセス2の方が早いと決定された場合は、ステップS1417において、FreeSize2=FBSize−UsedSizeで、プロセス2にメモリを割り当てる。そして、FreeSize1=FreeSize−FreeSize2において、プロセス1にメモリを割り当てる。そして、ステップS1418においてそれぞれのメモリのアドレスを返す。
図8は、本実施例における固定モード処理のフローチャートの一例を示した図である。まず、ステップS1501において、プロセス1のメモリを確保したかを判別し、プロセス1の場合ステップS1502を処理し、プロセス2の場合はステップS1504の処理をおこなう。ステップS1502においてフォールバックの判定をおこなう。UsedSize1<FBThでフォールバック閾値よりも大きい場合、メモリ確保できない通知を返す。フォールバック閾値より小さい場合は、ステップS1503においてFreeSize1>0でメモリが空いているかを判定する。空いていない場合はステップS1506に進む。同様にして、ステップS1501において、プロセス2の場合はステップS1504の処理をおこなう。ステップS1504においてフォールバックの判定をおこなう。
UsedSize2<FBThでフォールバック閾値よりも大きい場合、メモリ確保できない通知を返す。フォールバック閾値より小さい場合は、ステップS1505においてFreeSize1>0でメモリが空いているかを判定する。空いていない場合はステップS1506に進む。ステップS1506でメモリが空いていない場合はFixedMode=FALSEで固定モードか動的モードかを判定し、動的モードになるまで待つ。動的モードになったときに、ステップS1507に進み、動的モード処理をおこなう。ステップS1503においてメモリが空いている場合はステップS1508においてUsedSize1をインクリメントし、FreeSize1とFreeSizeをデクリメントし、ステップS1509でアドレスを返す。同様にして、ステップS1505においてメモリが空いている場合はステップS1510においてUsedSize2をインクリメント、FreeSize2とFreeSizeのデクリメントをおこないステップS1511でアドレスを返す。
図9は、本実施例におけるメモリFreeについてのフローチャートの一例を示した図である。まず、ステップS1601において、メモリFreeの依頼待ちをおこなう。メモリFreeの依頼がきたら、ステップS1602において、プロセス1のメモリ開放かプロセス2のメモリ開放かを判断する。ステップS1602において、プロセス1のメモリ開放依頼の場合、ステップS1603においてメモリ開放処理をおこなう。そして、ステップS1604において、FreeSize=UsedSize1+FreeSizeをおこない、開放したサイズを加算する。
次にステップS1605において、FixedMode=FALSE、UsedSize1=0、Time1=0,PreTime1=0をおこない、動的モードにし、初期化をおこなう。同様にして、ステップS1602において、プロセス2のメモリ開放依頼の場合、ステップS1606においてメモリ開放処理をおこなう。そして、ステップS1607において、FreeSize=UsedSize2+FreeSizeをおこない、開放したサイズを加算する。次にステップS1608において、FixedMode=FALSE、UsedSize2=0、Time2=0,PreTime2=0をおこない、動的モードにし、初期化をおこなう。これにより、固定モードで両方のプロセッサに割り当てたメモリ領域は解除されることになる。そして、両方のプロセッサが確保したメモリ領域が閾値を越えなくなった場合、動的モードで両方のプロセッサにメモリ領域を割り当てていくことになる。
図10は、本実施例におけるメモリ管理情報の構成の一例を示した図である。メモリに対して、ProcessNum 409、Status 410、Address 411の3つの情報を保持している。AllocInfo 404上記がProcessNum 409、Status 410、Address 411情報を保持している。また、ProcessInfo 403として、UsedSize 405 FreeSize 406、Time 407、PreTime 408を持っている。そして、固定モードか動的モードかを判断するFixedMode 401と、メモリの空きサイズを表すFreeSize 402を持っている。
図11はメモリ使用時の閾値との関係の一例を示した図である。この例では、閾値をそれぞれChkTh=4、FBTh=7とし、ChkTh=4を越えた時点で、空いているメモリに対して割り当てをおこなう。空いているメモリに対してPage1、2をそれぞれ割り当て、メモリ管理情報の更新をする。
以上のように実施例1は、第1のプロセッサ、または第2のプロセッサの内、フォールバックを行うタイミングが早い方のプロセッサに対し、フォールバック閾値分のメモリ領域を割り当て、他方のプロセッサに残りの未使用領域全てを割り当てるものである。これにより、常に一定のメモリ領域分の中間データをフォールバックするので画質が安定する。
実施例1では、2つのプロセスにおいて、閾値を越えた場合にプロセス毎にメモリの割り当てをおこなっている。本実施例では、2つのプロセスにおいて、閾値を越えた場合にプロセス毎にメモリの割り当てをメモリ使用量の比率で割り当て、余ったメモリ領域をさらに任意のプロセスに割り当てる。なお、実施例1から変更がない構成や機能については実施例2では述べない。
図12は、本実施例における動的モード処理のフローチャートの一例を示した図である。まず、ステップS1701においてCurTimeに現在の時間を代入する。ステップS1702において、プロセス1のメモリ確保かを判別し、プロセス1の場合ステップS1703を処理し、プロセス2の場合はステップS1707の処理をおこなう。ステップS1703において前回メモリ確保した時間であるPreTime1が0かどうかを判断する。0で無い場合、ステップS1704において、プロセス1にかかった時間Time1に前回メモリを確保してからの経過時間CurTime−Pretime1の値を足す。一方、ステップS1703においてPreTime1が0の場合、ステップS1705の処理をおこなう。ステップS1705においてプロセス1のメモリ使用量UsedSize1に1を加算し、開放されたメモリサイズであるFreeSizeに1減算をおこなう。そして、ステップS1706においてCurTimeをPreTime1に代入処理を行う。同様にプロセス2の場合ステップS1702において、プロセス2のメモリ確保したと判別し、ステップS1707の処理をおこなう。ステップS1707において前回メモリ確保した時間であるPreTime2が0かどうかを判断する。0で無い場合、ステップS1708においてプロセス2にかかった時間Time2に現在メモリを確保した時間から前回メモリを確保した時間CurTime−Pretime2の値を足す。一方、ステップS1707においてPreTime2が0の場合、ステップS1709の処理をおこなう。ステップS1709においてプロセス2のメモリ使用量UsedSize2に1を加算し、開放されたメモリサイズであるFreeSizeに1減算をおこなう。そして、ステップS1710においてCurTimeをPreTime2に代入処理をおこなう。上記プロセス1またはプロセス2において、ステップS1706の代入処理、または、ステップS1710の代入処理をおこなった後、閾値判定をおこなう。ステップS1711において、プロセス1とプロセス2の使用したメモリサイズの合計が閾値を越えたかを判断するために、UsedSize1+UsedSize2>=ChkThの判定をおこなう。閾値を越えていた場合、ステップS1712において固定モードにするために、FixedModeにTRUEを代入する。次にメモリ使用量の判定をおこなう。ステップS1713においてプロセス1のメモリの使用量とプロセス1に割り当てられたメモリ量がフォールバック閾値を越えるかを判定するためにUsedSize1+FreeSize>=FBThの処理をおこなう。フォールバック閾値を越えている場合はステップS1714においてプロセス2のメモリの使用量とプロセス2に割り当てられたメモリ量がフォールバック閾値を越えるかを判定するためにUsedSize2+FreeSize>=FBThの処理をおこなう。フォールバック閾値を越えている場合はステップS1715において、フォールバックするまでの処理速度の判定をおこなう。処理速度は(第nのプロセッサが中間データを生成するために要した時間)/[(第nのプロセッサが中間データを生成するために利用したメモリのリソース量)によって算出しする。その算出した処理速度を用いて(第nのプロセッサがフォールバックを行うまでに必要とする残りのメモリ量)/(処理速度)をおこなうことによって、フォールバック閾値を越えるまでの時間が算出される。nは、1、または2である。
プロセス1のフォールバック閾値を越えるまでの時間と、プロセス2のフォールバック閾値を越えるまでの時間を算出し、比較する。プロセス1が速い場合は、ステップS1716において、FreeSize1=FBSize−UsedSize1で、プロセス1にメモリを割り当てる。次に、下記数式で、プロセス1にCPU1とCPU2のメモリを利用した比率によって、プロセス1、またはプロセス2に割り当てるメモリ量を算出する。その数式とは、FreeSize2=FreeSize1×UsedSize2/(UsedSize1+UsedSize2)である。そして、ステップS1717において(FreeSize−FreeSize1−FreeSize2)>0かを判別することにより、メモリに余り領域があるか判定する。
余り領域がある場合はステップS1718において、処理速度の速いプロセス1に、余ったメモリ領域をさらに割り当てる。同様に、ステップS1715において、プロセス1が遅い場合は、ステップS1719において、FreeSize2=FBSize−UsedSize2で、プロセス2にメモリを割り当てる。次にFreeSize1=FreeSize2×UsedSize1/(UsedSize1+UsedSize2)で、プロセス2にCPU1とCPU2の処理メモリの比によって、プロセス1とプロセス2にメモリを割り当てる。そして、ステップS1720において(FreeSize−FreeSize1−FreeSize2)>0かを判別することにより、メモリに余り領域があるか判定する。余り領域がある場合はステップS1721において、処理速度の速いプロセス2に、余ったメモリ領域をさらに割り当てる。
図13はメモリ使用時の閾値との関係の一例を示した図である。この例では、閾値をそれぞれChkTh=4、FBTh=7とし、ChkTh=4を越えた時点で、空いているメモリに対して割り当てをおこなう。プロセス1とプロセス2の処理速度の比率で、空いているメモリに対してPage1、2をそれぞれ割り当てる。図13ではPage1に割り当てられたメモリが4ブロックで、Page2に割り当てられたメモリが1ブロックとなる。しかし、メモリが3ブロック空いているので、上記3ブロックはPage1に割り当てられる。このようにすることによって、プロセス1の処理を中止せず、パフォーマンス向上することができる。
以上のように実施例1は、第1のプロセッサ、または第2のプロセッサの内、フォールバックを行うタイミングが早い方のプロセッサに対し、フォールバック閾値分のメモリ領域を割り当てる。そして、他方のプロセッサには、メモリの利用比率を基に割り当てるメモリ領域を算出し、算出したメモリ領域分割り当てる。さらに、未使用領域が残ったらフォールバックを行うタイミングが早い方のプロセッサに対し、残った未使用領域全てを割り当てる。これにより、フォールバックを行うタイミングが早い方のプロセッサはより多くのメモリ領域分の中間データをフォールバックすることができるので、より早く印刷を行うことができる。
209 PDL解析
210 DL生成部
214 展開処理部
215 ページスケジューラ
216 メモリ管理部
218 CPU1
219 CPU2

Claims (9)

  1. 印刷データを受信する受信手段と、
    前記受信手段により受信された印刷データを基に中間データを生成し、生成した中間データをメモリ領域に格納する第1のプロセッサと、
    前記受信手段により受信された印刷データを基に中間データを生成し、生成した中間データをメモリ領域に格納する前記第1のプロセッサとは異なる第2のプロセッサと、
    前記第1のプロセッサ、または前記第2のプロセッサからメモリ獲得依頼を受けたことに応じて、メモリの未使用領域における所定サイズのメモリ領域を、獲得依頼したプロセッサに割り当てるメモリ管理手段とを有し、
    前記メモリ管理手段により前記第1のプロセッサ、および前記第2のプロセッサの両方のプロセッサに割り当てられたメモリ領域が閾値を超えた場合において、
    前記メモリ管理手段は前記両方のプロセッサの内、一方のプロセッサに対し、前記一方のプロセッサに割り当てられるメモリ領域がフォールバック閾値分になるよう、メモリの未使用領域からメモリ領域を割り当て、
    残りのメモリの未使用領域を、他方のプロセッサに割り当てることを特徴とする印刷データ処理装置。
  2. 前記一方のプロセッサがフォールバック閾値分の中間コードを生成した場合に、前記一方のプロセッサが生成したフォールバック閾値分の中間コードをレンダリングし、
    レンダリングが行われることに応じて前記メモリ管理手段は、前記一方のプロセッサに割り当てていたメモリ領域を開放し、
    開放したメモリ領域を未使用領域とし、さらに、開放したメモリ領域を未使用領域としたことで、前記両方のプロセッサに割り当てられたメモリ領域が閾値を超えなくなった場合、前記メモリ管理手段は前記両方のプロセッサに割り当てられたメモリ領域が閾値を超えた場合に行われた未使用領域の割り当てを解除し、前記両方のプロセッサからの獲得依頼に応じてメモリ領域を割り当てることを特徴とする請求項1に記載の印刷データ処理装置。
  3. 前記メモリ管理手段は前記他方のプロセッサに対し、残りのメモリの未使用領域を割り当てる場合、残りのメモリの未使用領域全てを割り当てることを特徴とする請求項1または2に記載の印刷データ処理装置。
  4. 前記メモリ管理手段は前記他方のプロセッサに対し、残りのメモリの未使用領域を割り当てる場合、前記両方のプロセッサが中間コードを生成するために利用したメモリ領域の利用比率を基に、未使用領域から前記他方のプロセッサに割り当てるメモリ領域を割り当て、割り当てたメモリ領域を除いても未使用領域が残っている場合は、前記一方のプロセッサに未使用領域全てを割り当てることを特徴とする請求項1乃至3のいずれか1項に記載の印刷データ処理装置。
  5. 前記一方のプロセッサとは、前記両方のプロセッサの内、フォールバックを行うタイミングが早い方のプロセッサであることを特徴とする請求項1乃至4のいずれか1項に記載の印刷データ処理装置。
  6. 前記メモリ管理手段がフォールバックを行うタイミングが早い方のプロセッサを決定する際に、下記数式
    プロセッサがフォールバックを行うタイミング=(第nのプロセッサがフォールバックを行うまでに必要とする残りのリソース量)/[(第nのプロセッサが中間データを生成するために要した時間)/(第nのプロセッサが中間データを生成するために利用したメモリのリソース量)] (n=1、2)
    で、プロセッサがフォールバックを行うタイミングを算出し、フォールバックを行うタイミングが早い方のプロセッサを決定することを特徴とする請求項5に記載の印刷データ処理装置。
  7. 前記フォールバックとは、プロセッサが生成した中間コードのデータサイズが、予め定められたフォールバック閾値分のメモリ領域を超えた場合、プロセッサが生成した中間コードをレンダリングしてイメージデータを生成し、生成したイメージデータを圧縮し、圧縮したイメージデータを描画するための中間コードをメモリ領域に格納する処理のことである請求項1乃至6のいずれか1項に記載の印刷データ処理装置。
  8. 受信手段に、印刷データを受信させ、
    第1のプロセッサに、前記受信手段により受信された印刷データを基に中間データを生成させ、生成させた中間データをメモリ領域に格納させ、
    前記第1のプロセッサとは異なる第2のプロセッサに、前記受信手段により受信された印刷データを基に中間データを生成させ、生成させた中間データをメモリ領域に格納させ、
    メモリ管理手段に、前記第1のプロセッサ、または前記第2のプロセッサからメモリ獲得依頼を受けたことに応じて、メモリの未使用領域における所定サイズのメモリ領域を、獲得依頼したプロセッサに割り当てさせ、
    前記メモリ管理手段により前記第1のプロセッサ、および前記第2のプロセッサの両方のプロセッサに割り当てられたメモリ領域が閾値を超えた場合において、
    前記メモリ管理手段に、前記両方のプロセッサの内、一方のプロセッサに対し、前記一方のプロセッサに割り当てられるメモリ領域がフォールバック閾値分になるよう、メモリの未使用領域からメモリ領域を割り当てさせ、
    残りのメモリの未使用領域を、他方のプロセッサに割り当てさせることを特徴とする印刷データ処理方法。
  9. 受信手段に、印刷データを受信させ、
    第1のプロセッサに、前記受信手段により受信された印刷データを基に中間データを生成させ、生成させた中間データをメモリ領域に格納させ、
    前記第1のプロセッサとは異なる第2のプロセッサに、前記受信手段により受信された印刷データを基に中間データを生成させ、生成させた中間データをメモリ領域に格納させ、
    メモリ管理手段に、前記第1のプロセッサ、または前記第2のプロセッサからメモリ獲得依頼を受けたことに応じて、メモリの未使用領域における所定サイズのメモリ領域を、獲得依頼したプロセッサに割り当てさせ、
    前記メモリ管理手段により前記第1のプロセッサ、および前記第2のプロセッサの両方のプロセッサに割り当てられたメモリ領域が閾値を超えた場合において、
    前記メモリ管理手段に、前記両方のプロセッサの内、一方のプロセッサに対し、前記一方のプロセッサに割り当てられるメモリ領域がフォールバック閾値分になるよう、メモリの未使用領域からメモリ領域を割り当てさせ、
    残りのメモリの未使用領域を、他方のプロセッサに割り当てさせることを特徴とする印刷データ処理方法をコンピュータに実行させるためのプログラム。
JP2009288464A 2009-12-18 2009-12-18 印刷データ処理装置、印刷データ処理方法、およびプログラム Pending JP2011126210A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009288464A JP2011126210A (ja) 2009-12-18 2009-12-18 印刷データ処理装置、印刷データ処理方法、およびプログラム
US12/968,027 US8614822B2 (en) 2009-12-18 2010-12-14 Print data processing apparatus, print data processing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009288464A JP2011126210A (ja) 2009-12-18 2009-12-18 印刷データ処理装置、印刷データ処理方法、およびプログラム

Publications (1)

Publication Number Publication Date
JP2011126210A true JP2011126210A (ja) 2011-06-30

Family

ID=44150658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009288464A Pending JP2011126210A (ja) 2009-12-18 2009-12-18 印刷データ処理装置、印刷データ処理方法、およびプログラム

Country Status (2)

Country Link
US (1) US8614822B2 (ja)
JP (1) JP2011126210A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6188735B2 (ja) * 2015-01-16 2017-08-30 キヤノン株式会社 印刷装置、印刷装置の制御方法、およびプログラム
CN106557434A (zh) * 2016-10-28 2017-04-05 武汉斗鱼网络科技有限公司 一种界面缓存方法及系统
JP6766598B2 (ja) * 2016-10-31 2020-10-14 セイコーエプソン株式会社 画像処理装置、画像処理方法および制御プログラム
JP2019072968A (ja) * 2017-10-18 2019-05-16 キヤノン株式会社 画像形成装置、画像形成方法、及び、プログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5010515A (en) * 1987-07-28 1991-04-23 Raster Technologies, Inc. Parallel graphics processor with workload distributing and dependency mechanisms and method for distributing workload
US5129049A (en) * 1991-05-16 1992-07-07 Hewlett-Packard Company Method and apparatus for preventing print overruns
US5602976A (en) * 1993-02-23 1997-02-11 Adobe Systems Incorporated Method and apparatus for saving printer memory
US5793937A (en) * 1996-03-29 1998-08-11 Peerless Systems Corporation Fallback processing for page generation using memory reduction techniques
US6130759A (en) * 1997-08-26 2000-10-10 Hewlett-Packard Company Reducing memory fragmentation by coalescing and redistributing previously distributed page strips
WO2003009144A1 (en) * 2001-07-19 2003-01-30 Wind River Systems, Inc. Memory management system
US7715031B2 (en) * 2002-06-14 2010-05-11 Kyocera Mita Corporation Method and apparatus for generating an image for output to a raster device
US7286819B2 (en) * 2002-10-31 2007-10-23 Canon Kabushiki Kaisha Printing apparatus, print control method, and program product
US6918706B2 (en) * 2002-10-31 2005-07-19 Canon Kabushiki Kaisha Reducing a difference in picture quality between deteriorated and non-deteriorated images using a printing apparatus
US20040120007A1 (en) * 2002-12-19 2004-06-24 Jacobsen Dana A. Method and apparatus for forming a display list
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
JP4766657B2 (ja) * 2005-05-02 2011-09-07 キヤノン株式会社 画像処理装置及びその制御方法、プログラム
JP4738948B2 (ja) * 2005-09-13 2011-08-03 キヤノン株式会社 情報処理装置、画像処理方法、及びコンピュータプログラム
JP4923602B2 (ja) * 2006-02-10 2012-04-25 富士ゼロックス株式会社 画像形成処理シミュレーション装置及び画像形成処理シミュレーション方法
US8526049B2 (en) * 2006-03-31 2013-09-03 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for display list management
JP4942179B2 (ja) * 2006-12-11 2012-05-30 キヤノン株式会社 印刷制御装置及びその制御方法及びデバイスドライバ
US8782371B2 (en) * 2008-03-31 2014-07-15 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for memory management for rasterization
JP5257751B2 (ja) * 2008-04-07 2013-08-07 コニカミノルタビジネステクノロジーズ株式会社 画像処理システム及びメモリ管理方法並びにメモリ管理プログラム
US8854680B2 (en) * 2008-09-11 2014-10-07 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimal memory allocation units

Also Published As

Publication number Publication date
US8614822B2 (en) 2013-12-24
US20110149347A1 (en) 2011-06-23

Similar Documents

Publication Publication Date Title
US8625133B2 (en) Print data processing apparatus, print data processing method, and storage medium
US20140063529A1 (en) Image Forming Apparatus
JP5655392B2 (ja) 印刷画像処理装置及びプログラム
JP6784537B2 (ja) 画像形成装置、その制御方法、及びプログラム
JP2005352697A (ja) コンピュータシステム、及び該システムにおけるジョブの割り当て方法
US8792122B2 (en) Image forming apparatus, method for controlling image forming apparatus, and storage medium
JP2011126210A (ja) 印刷データ処理装置、印刷データ処理方法、およびプログラム
US6981134B2 (en) Method and system for processing using a CPU and digital signal processor
JP2013001059A (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
JP2010027007A (ja) 処理装置、要求装置、及びそれらの処理方法
JP2012135878A (ja) 画像処理装置、情報処理方法及びプログラム
JP6465384B2 (ja) 画像形成装置及び並列処理制御プログラム並びに並列処理制御方法
KR20120062854A (ko) 계산기 장치
JP5740913B2 (ja) 画像形成装置およびその制御方法
JP5424778B2 (ja) 印刷データ処理装置、印刷データ処理方法、プログラム
JP6372315B2 (ja) 画像処理装置及び並列処理制御プログラム並びに並列処理制御方法
JP5799968B2 (ja) 印刷システム
JP2008011513A (ja) パイプライン化されたデータフロー文書処理システムおよびその方法
US20160162221A1 (en) Printing using multiple print processing resources
JP2000311071A (ja) 出力制御装置および出力制御方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JP5766059B2 (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
JP2015022685A (ja) 画像形成装置
JP2015020404A (ja) 画像形成装置
JP2012093838A (ja) 画像処理システム、画像処理装置、画像処理方法、コンピュータプログラム
JPH09204277A (ja) 印刷処理システム