JP6537372B2 - 画像形成装置、画像形成装置の制御方法、及びプログラム - Google Patents

画像形成装置、画像形成装置の制御方法、及びプログラム Download PDF

Info

Publication number
JP6537372B2
JP6537372B2 JP2015129996A JP2015129996A JP6537372B2 JP 6537372 B2 JP6537372 B2 JP 6537372B2 JP 2015129996 A JP2015129996 A JP 2015129996A JP 2015129996 A JP2015129996 A JP 2015129996A JP 6537372 B2 JP6537372 B2 JP 6537372B2
Authority
JP
Japan
Prior art keywords
page
processing
cpu
interpreter
forming apparatus
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.)
Active
Application number
JP2015129996A
Other languages
English (en)
Other versions
JP2017013279A (ja
Inventor
秀一 竹中
秀一 竹中
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 JP2015129996A priority Critical patent/JP6537372B2/ja
Priority to US15/189,935 priority patent/US10262247B2/en
Publication of JP2017013279A publication Critical patent/JP2017013279A/ja
Application granted granted Critical
Publication of JP6537372B2 publication Critical patent/JP6537372B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1849Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives
    • 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/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1803Receiving particular commands
    • G06K15/1806Receiving job control commands
    • 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/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1835Transforming generic data
    • G06K15/1836Rasterization
    • 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/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1856Generation of the printable image characterized by its workflow
    • G06K15/1857Generation of the printable image characterized by its workflow involving parallel processing in the same printing apparatus
    • 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/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1867Post-processing of the composed and rasterized print image
    • G06K15/1889Merging with other data
    • 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/408Handling exceptions, e.g. faults
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/21Intermediate information storage
    • H04N1/2104Intermediate information storage for one or a few pictures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/004Generic data transformation
    • G06K2215/0042Rasterisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0082Architecture adapted for a particular function
    • G06K2215/0085Error recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/21Intermediate information storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3225Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document
    • H04N2201/3232Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document of a page, copy or picture number
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/328Processing of the additional information
    • H04N2201/3284Processing of the additional information for error correction

Landscapes

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

Description

本発明は、画像形成装置、画像形成装置の制御方法、及びプログラムに関するものである。
近年、ハードウェア技術の向上により、複数の演算処理を同時並列で実行可能とするマルチコアCPUが開発され、普及が進んでいる。コピー、ファックス等の複数の機能を有する複合機においても、マルチコアCPUが搭載されるようになってきている。マルチコアCPUを搭載する複合機においては、印刷処理をマルチスレッド制御することで、並列実行するための技術が開発されてきている。印刷処理は、受信した印刷データをラスタ画像へ変換する画像処理の負荷が高く、これをマルチスレッド処理することで、印刷処理の高速化を実現する技術が提案されてきている。
画像処理は、印刷データの内容を解釈する言語解釈処理、ディスプレイリスト(以降DL)と呼ばれる中間データに変換するDL生成処理、生成されたDLをラスタ画像へ変換するレンダリング処理により実現される。これをマルチスレッド処理する技術として、印刷データの処理をページ単位で区切り、各スレッドに割り当てて言語解釈、DL生成、レンダリング処理する、ページ並列技術がある(例えば特許文献1)。
特開2013−14039号公報
印刷データには、ページ記述言語(PDL)としてPostScript(以下PS)が採用されることがあるが、PSのオペレーターの中には、erasepageなどのページの描画内容を無効化し、該ページを出力しないようにするオペレーター(描画命令)が存在する。これらのページ描画を無効化するオペレーターが含まれると、それ以降のページを正しく制御するために、ページの辻褄合わせをするページ整順処理を行わなければならない。
例えば、2ページ目のPSデータにerasepageオペレーターが含まれていると、3ページ目は2枚目の出力結果として、4ページ目は3枚目の出力結果として処理しなければならない。特許文献1に記載のページ並列技術は、各スレッドへ処理対象とするページを割り当てるジョブ制御部に、ページの描画を無効化するオペレーターを検知する手段が無い。このため、ページ整順処理ができず、結果として、2枚目の出力結果に3ページ目の描画結果を割り当てることができず、白紙になってしまったり、2枚目以降の出力結果のレイアウトがずれてしまったりするなどの不具合が発生してしまう。
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、印刷データから中間データを生成する際に、無効ページを検知した場合でも、正常なページ数情報に従う描画処理を行える仕組みを提供することである。
上記目的を達成する本発明の画像形成装置は以下に示す構成を備える。
印刷データを処理する画像形成装置において、前記印刷データを解釈して中間データを生成する複数のインタプリタと、各インタプリタからのページ要求と中間データ完了通知とに応じて処理すべきページ数情報をそれぞれのインタプリタに指定して並列処理させる制御手段と、生成された中間データから出力すべき各ページの画像データを生成する生成手段と、を備え、指定されたページが無効ページであるといずれか一方のインタプリタが解釈した場合、前記並列処理を停止して、いずれか1つのインタプリタが、当該無効ページから後続する最終ページまで当該インタプリタが管理するページ数情報を用いて中間データを生成することを特徴とする。
本発明によれば、印刷データから中間データを生成する際に、無効ページを検知した場合でも、正常なページ数情報に従う描画処理を行うことができる。
画像形成装置の構成を説明するハードウェアブロック図である。 画像形成装置のソフトウェアモジュール構成図である。 描画オブジェクトの記述例とその描画内容を示す図である。 通常データへのページ並列処理の簡易シーケンス図である。 通常データへのページ並列処理の簡易シーケンス図である。 画像形成装置の制御方法を説明するフローチャートである。 画像形成装置の制御方法を説明するフローチャートである。 画像形成装置の制御方法を説明するフローチャートである。 本実施形態を示すページ並列処理の簡易シーケンス図である。 共通管理されるデータベースの一例を示す図である。 画像形成装置の制御方法を説明するフローチャートである。 画像形成装置の制御方法を説明するフローチャートである。 画像形成装置の制御方法を説明するフローチャートである。
次に本発明を実施するための最良の形態について図面を参照して説明する。
<システム構成の説明>
〔第1実施形態〕
<画像形成装置のハードウェアブロック図>
図1は、本実施形態の画像形成装置の構成を説明するハードウェアブロック図である。なお、本実施形態に示す画像形成装置は、入力される所定のページ記述言語に基づく印刷データ(PDLデータ)を処理するため、以下の構成を備える。
図1において、100はコントローラユニットで、画像信号やデバイス情報の入出力を制御する。中央演算装置(CPU)101は補助記憶装置103に記憶されたプログラムを主記憶装置102に読み出し、実行する。さらに、システムバス109に接続される各デバイスをCPU101が統括的に制御する。CPU101は並列処理を実現するために、ハードウェアとしてプロセッサを複数有するマルチコアシステムを採用する。また、マイクロプロセッサとして、複数のプロセッサコアを備えているものでもよい。ハイパースレッディングのようなプロセッサ内のレジスタやパイプラインの空き時間を有効利用して1つのプロセッサをあたかも複数のプロセッサであるかのように見せる技術が利用出来るものを用いても良い。主記憶装置102は、CPU101の主メモリ、ワークメモリとして機能する。
補助記憶装置103は大容量データを一時的あるいは長期的に保持する目的でも使用される。本発明の実施形態においては、パイプライン並列を実施する際にバッファ領域にデータを保存するが、この保存先が主記憶装置102または、補助記憶装置103となる。Network104はネットワーク105に接続し、画像形成装置外部との印刷データやデバイス情報の入出力を担う。
RIP106は中間データであるDLをラスタイメージに展開する。また、RIP106はCPU101により主記憶装置102および補助記憶装置103上に生成されたDLを高速かつ、CPU101の実行と並列に、処理するものである。
デバイスI/F107はCPU101の指示に基づき、画像信号の送出、デバイス動作指示、デバイス情報の受信を行う。コントローラユニット100はデバイスI/F107を介して、プリンタエンジン108に接続される。プリンタエンジン108はコントローラユニット100からの画像信号を媒体上に出力する出力機であり、電子写真方式、インクジェット方式の何れでも構わない。
<画像形成装置のソフトウェアモジュール図>
図2は、本実施形態における画像形成装置のソフトウェアモジュール構成図である。図2に記載した各ソフトウェアモジュールは、プログラムとして補助記憶装置103に格納され、主記憶装置102にロードされCPU101により実行されるものである。
ページ並列制御部200は、PSインタプリタ201を複数スレッド立ち上げ、スレッド制御を行う。印刷処理を並列処理するために、印刷データのページ単位に区切り、各スレッドへ処理対象とするページを割り当てる役割も担う。尚、本実施形態ではスレッドを2つ立ち上げたものを想定しているため、PSインタプリタ201は2つ存在しているが、CPU101のプロセッサコアが並列制御できる数だけスレッドを立ち上げ、PSインタプリタ201を割り当てる構成としてもよい。なお、ページ並列制御部200は、各PSインタプリタ201からのページ要求と中間データ完了通知とに応じて処理すべきページ数情報をそれぞれのインタプリタに指定して並列処理させる。
PSインタプリタ201は、PDL言語解釈部202と、DL生成部203からなり、印刷データを解釈して、中間データとしてDLを生成する。PDL言語解釈部202は、印刷データにページ記述言語により記述されているデータ内容を解釈する。DL生成部203は、PDL言語解釈部202により解釈された結果から、中間データとしてDLを生成する。
バッファ204は、複数のPSインタプリタ201から生成されるDLをバッファリングする。ページ並列技術を採用すると、各スレッドが処理を完了する順番はページ順にはならず、あるページより先のページの処理が先に完了する場合がある。
しかし、印刷データはページ順に出力する必要があるため、未処理のページが完了するまでのバッファ領域として、このバッファ204を使用する。バッファ領域は主記憶装置102の一部を確保して使用するが、バッファリングできるほどの領域がない場合は、補助記憶装置103の一部を代替として用いる構成としても良い。レンダリング部205は、図1に示したRIP106に相当し、DLを展開してラスタ画像を生成する。つまり、レンダリング部205は、複数のPSインタプリタ201により生成された中間データから出力すべき各ページの画像データを生成する。
<印刷データの記述例と描画内容>
図3の(A)、(B)は、印刷データに記述される描画オブジェクトの記述例とその描画内容を示す図である。
図3の(A)では、ページ記述言語であるPostScriptを用いた印刷データの記述例の一例である。
Page1の部分では、斜めの線分を定義している。Page2では、「I am string.」という文字列を定義している。Page3では、市松模様のパターンオブジェクトを定義している。Page4では、Page2と同様に「I am string.」という文字列を定義している。PostScriptのページの区切れ目には「showpage」オペレーターが用いられるが、それ以外にも、描画内容を無効化する「erasepage」オペレーターが用いられることもある。図3の(A)の例では、Page3で用いられている。
図3の(B)は、図3の(A)で記述された描画オブジェクトの描画内容を示している。データの内容としては、4ページ分記述されているが、Page3には「erasepage」オペレーターが用いられている為、出力はされない。
<ページ並列処理のシーケンス>
本実施形態では、印刷データのページ記述言語としてPostScriptを採用した時のページ並列処理を対象としているPostScriptは印刷処理のための情報を、印刷データのあらゆる箇所に、ページを跨いで記述可能である。その為、PostScriptの印刷処理に対してページ並列技術を採用する場合、マルチスレッド処理する各スレッドは、データの先頭からデータを言語解釈していく必要がある。以下、図4を参照して、各インタプリタからのページ要求と中間データ完了通知を含む中間データ生成処理を説明する。
そのため本実施形態では、図4Aの(a)に示す通り、PSインタプリタ201は2つの動作モードで処理を進める。1つ目はページスキップ処理であり、このときPSインタプリタ201は、PDL言語解釈部202を用いた、言語解釈処理のみしか行わない。もう一つはページ描画処理であり、このときPSインタプリタ201はPDL言語解釈部202を用いた言語解釈処理と、DL生成部203を用いたDL生成処理の両方を行う。
DL生成処理を行わない分、ページスキップ処理は処理が早く進むため、描画対象とするページの直前のページまでは、ページスキップ処理で処理を進め、描画対象ページはページ描画処理で処理をする。ページスキップ処理もページ描画処理も言語解釈処理を行うため、データの先頭から処理対象ページまでは言語解釈処理は必ず行われ、該処理対象ページに必要な情報が不足することはなく、正常に印刷処理をすることができる。
図4Aの(b)は、本発明の実施形態における、通常データへのページ並列処理の簡易シーケンス例を示している。ページ並列制御部200により、スレッドB1、スレッドB2が立ち上げられ、各スレッドにPSインタプリタ201が割り当てられる。処理が開始されると、PSインタプリタ201はページ並列制御部200へ処理対象とするページ番号を問い合わせる。ページ並列制御部200は、各スレッドの並列性を考慮して、それぞれのスレッドへ割り当てる処理対象のページ番号を通知する。
図4Aの(b)の例では、スレッドB1にまず2ページ目を、スレッドB2に1ページ目を処理するように指示している。ページ並列制御部200から処理対象ページが通知されると(Return1、2)、PSインタプリタ201は処理対象ページまではページスキップ処理、処理対象ページはページ描画処理を行う。スレッドB2は1ページ目が処理対象ページであるため、最初からページ描画処理を行う。スレッドB1は2ページ目が処理対象ページであるため、1ページ目はページスキップ処理、2ページ目はページ描画処理を行う。スレッドB2は1ページ目のページ描画処理が終わると、ページ並列制御部200へDL生成完了を通知した後、次の処理対象とするページ番号を問い合わせる。
ページ並列制御部200は、図4Aの(b)の例では、このタイミングではまだ3ページ目の処理が指示できていないため、次の処理対象ページとして3ページ目をスレッドB2へ通知する(Return3)。以下、同様にPSインタプリタ201はスレッドB1、B2のそれぞれにおいて、ページ並列制御部200へ処理対象ページの問い合わせ、ページスキップ処理、ページ描画処理、DL生成通知を最終ページになるまで繰り返す。これにより、ページ並列処理が実現される。
図4Bの(c)は、本発明の実施形態における、erasepageが3ページ目に含まれる場合の、ページ並列処理の簡易シーケンス図を示している。ページ並列制御部200により、スレッドB1、スレッドB2が立ち上げられ、各スレッドにPSインタプリタ201が割り当てられる。
しかし、3ページ目にerasepageが存在するため、4ページ目以降のページ処理はページ並列処理を停止し、どちらかのスレッドに処理を引き継ぎ、片方のスレッドは処理を停止する。これは、ページ並列制御部200には無効ページを検知する手段が無いため、ページ制御のためのカウンタ値に不整合が発生し、正しく処理を継続できなくなってしまうためである。
一方で、PSインタプリタは無効ページを検知する手段をそれぞれ備える構成であるため、検知した時にシングルスレッド動作へ移行することにより、内部的にページ制御のためのページカウント値を制御し、ページカウンタ値の不整合を丸める事ができる。
そこで、図4Bの(c)の例では、3ページ目の処理をページスキップ処理していたスレッドB1が以降のページ処理を引き継ぎ、3ページ目の処理をページ描画処理していたスレッドB2は処理を停止させている。ここで、後続する4ページ目以降の処理はシングルスレッドとして動作するため、以降の処理はページ並列制御部200へ処理対象とするページ番号の問い合わせは行わず、DL生成完了通知のみで、自律的にページ制御を行う。
また、スレッドB1は3ページ目のページスキップ処理の言語解釈処理により、erasepageオペレーターを検知することができるため、スレッドB2の処理状況に関わらず、即座にシングルスレッド処理へ移行することができる。スレッドB1はページスキップ処理中にerasepageオペレーターを検知すると、スレッドB2の処理が停止することを待たずに、自律的に4ページ目以降の処理を引き継ぎ、処理を進める。
尚、このシングルスレッド処理へ移行した後も、erasepageを検知した場合は、該ページを出力しないように制御する必要がある。その場合は、シングルスレッド処理中に検知したerasepageの存在するページ数をPSインタプリタ201が内部的にカウントすることで、ページ辻褄合わせのためのページ整順処理をすることが可能である。詳細は図7の説明にて詳しく説明する。
<ページ制御部のページ制御>
図5は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、図2に示したページ並列制御部200における、ページ並列処理のページ制御例である。なお、各ステップは、CPU101が記憶される制御プログラムを実行することで実現される。
以下、本制御を実行するために必要な構成について説明する。図2に示したページ並列制御部200では、ページ制御のための内部ページカウンタ値としてPhysicalPageCountを持っている。このPhysicalPageCountは出力物の何枚目(物理ページ)にどのページの描画結果をレイアウトするかを制御するための物理ページ数を意味している。
例えば、erasepageが3ページ目に含まれるデータであれば、物理ページ1枚目には1ページ目の論理ページが、2枚目には2ページ目の論理ページが割り当てられる。
しかし、物理ページ3枚目には4ページ目の論理ページが割り当てられるように制御する必要がある。
そのためには、物理ページ(PhysicalPageCount)と論理ページのカウント値を明確に分けてページ制御を進めていく必要がある。尚、本実施形態では、論理ページを意味するLogicalPageCountはPSインタプリタ201で管理している。後ほど図6の説明で詳しく説明する。印刷データがNetwork104を介して受信すると、CPU101により、本処理が開始される。
まず、S1000において、CPU101は、図示しないホストより印刷データを、Network104を介して受信する。次に、S1001において、CPU101は、初期化処理としてPhysicalPageCountに「0」を設定する。次に、S1002において、CPU101は、後ほど説明する図6に示されるスレッドB1、B2を立ち上げ、PSインタプリタ201を割り当てる。
次に、S1003において、CPU101は、S1002にて立ち上げたPSインタプリタ201からの通信を待つ。ここでは、PSインタプリタ201からの処理対象に対してページの問い合わせであるのか、DL生成完了通知であるのかのどちらかの通信を待っている。このどちらかの通信をPSインタプリタ201のスレッドから受信すると、S1004へ処理を進める。
次に、S1004において、CPU101は、S1003においてPSインタプリタ201から受信した通信が、処理対象ページの問い合わせであるかどうかを判定する。ここで、処理対象ページの問い合わせであるとCPU101が判断した場合は、S1005へ処理を進める。一方、処理対象ページの問い合わせではなく、つまりDL生成完了通知であるとCPU101が判断した場合は、S1007へ処理を進める。
次に、S1005において、CPU101は、PhysicalPageCount値に「1」を加算し、次の処理対象ページとする物理ページ数を進める。
次に、S1006において、CPU101は、PSインタプリタ201へ、内部ページカウンタ値で物理ページ数を示すPhysicalPageCountの値を処理対象ページとして通知する。その後、S1003へ処理を戻す。
一方、S1007で、CPU101は、S1003においてPSインタプリタ201から受信した通信が、DL生成完了通知であるかどうか判定する。DL生成完了通知であるとCPU101が判定した場合は、S1008へ処理を進める。一方、DL生成完了通知でないとCPU101が判断した場合はS1003へ戻り処理を繰り返す。
次に、S1008において、CPU101は、バッファ204のバッファ領域へ生成されたDLをスプールする。次に、S1009において、CPU101は、S1003において、PSインタプリタ201から受信したDL生成完了通知のページ番号までの全DL生成が完了しているか否かを判定する。ここで、全DL生成が完了しているとCPU101が判断した場合は、S1010へ処理を進める。
一方、全DL生成が完了していないとCPU101が判定した場合は、S1003へ戻り、処理を繰り返す。次に、S1010において、CPU101は、バッファ204にスプールされている全DLをページ順に従い、レンダリング部205へ転送する。
次に、S1011において、CPU101は、印刷データに含まれる全ページ分のDLを転送したか判定する。この判定には、S1002で立ち上げたスレッドB1、B2が停止しているか、で判定することが可能である。ここで、印刷データに含まれる全ページ分のDLを転送したとCPU101が判断した場合は、S1012へ進む。
一方、印刷データに含まれる全ページ分のDLを転送できていないとCPU101が判断した場合は、S1003へ戻り、処理を繰り返す。
次に、S1012において、CPU101は、自身のスレッドAを停止し、本処理を終了する。以上の処理により、ページ並列制御部200による、ページ並列処理のページ制御が実施される。
<PSインタプリタの並列DL生成制御>
図6は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、PSインタプリタ201のスレッドB1、B2における並列DL生成制御例である。なお、各ステップは、CPU101が記憶される制御プログラムを実行することで実現される。
以下、本制御を実行するために必要な構成および概要について説明する。図2に示したPSインタプリタ201は内部ページカウンタとして、LogicalPageCount、TargetPageCount、NonePageCountの3つのカウンタ値を持っている。LogicalPageCountは図5で説明した論理ページを意味するカウンタ値であり、印刷データの言語解釈のページが進むに従い、カウントアップされる。
TargetPageCountはページ描画処理の対象となるページ番号を意味する。NonePageCountはページスキップ処理、またはページ描画処理により検知したerasepageが含まれるページの数をカウントするカウンタ値である。
PSインタプリタ201はページ並列制御部200から処理対象とするページ数を受け取ると、TargetPageCountに値を格納して、処理を開始する。LogicalPageCountがTargetPageCountよりも小さい間は、LogicalPageCountをカウントアップしながら、ページスキップ処理を進める。そして、LogicalPageCountがTargetPageCountと等しくなったとき初めてページ描画処理を行い、DL生成を実行する。DL生成が終わると、ページ並列制御部200へDL生成したページ番号とともに完了通知を行い、次の処理対象となるページ番号を問い合わせる。
しかし、この処理中にerasepageを含むページを検知すると、NonePageCount値を加算して、シングルスレッド処理へ移行する。シングルスレッド処理へ移行するスレッドは、スレッドB1、B2のどちらでも構わない。図5のS1002にて、ページ並列制御部200からスレッドB1、B2が立ち上げられると、本処理が開始される。
まず、S1101において、CPU101は、初期化処理として、内部ページカウンタ値のLogicalPageCountを「1」に設定する。次に、S1102において、CPU101は、初期化処理として、内部ページカウンタ値のTargetPageCountを「1」に設定する。次に、S1103において、CPU101は、初期化処理として、内部ページカウンタ値のNonePageCountを「0」に設定する。
次に、S1104において、CPU101は、ページ並列制御部200のS1003へ処理対象ページのページ番号を問い合わせる。ページ並列制御部200から、処理対象ページのページ番号が通知されると、S1105へ処理を進める。
次に、S1105において、CPU101は、内部ページカウンタ値のTargetPageCountに、S1104で通知された処理対象ページのページ番号(PhysicalPageCount)の値を格納する。次に、S1106において、CPU101は、PDL言語解釈部202により、LogicalPageCountのページ番号の印刷データの言語解釈を実行する。
次に、S1107において、CPU101は、S1106において、言語解釈した結果、LogicalPageCountのページ番号の印刷データ(PDL)があるかどうか判定する。ここで、対象ページの印刷データが無いということは、印刷データに含まれる全ページの処理が完了したことを意味する。よって、印刷データがないとCPU101が判断した場合はS1117へ処理を進め、終了処理を行う。一方、印刷データがあるとCPU101が判断した場合は、S1108へ処理を進め、処理を継続する。
次に、S1108において、CPU101は、S1106の言語解釈の結果、無効ページを意味するオペレーター、erasepageが含まれていたか、判定する。ここで、含まれていたとCPU101が判断した場合は、S1114へ進み、シングルスレッド移行処理を進める。一方、含まれていないとCPU101が判断した場合は、S1109へ進み、通常処理を進める。
次に、S1109において、CPU101は、LogicalPageCountのページ番号がページスキップ処理するページか判定する。ここでは、LogicalPageCountがTargetPageCountより小さいかで判定するものとする。そして、LogicalPageCountがTargetPageCountより小さいとCPU101が判断した場合は、ページスキップ処理をする必要があるため、S1110へ処理を進める。一方、小さくない(つまり等しい)とCPU101が判断した場合、ページ描画処理をする必要があるため、S1111へ処理を進める。
次に、S1110において、CPU101は、LogicalPageCountの値に「1」を加算し、言語解釈処理対象のページ数をカウントアップし、S1106へ戻り、処理を繰り返す。
次に、S1111において、CPU101は、DL生成部203により、言語解釈結果からDLを生成する。次に、S1112において、CPU101は、TargetPageCountのページ番号のDL生成処理が完了したことをページ並列制御部200のS1003へ通知する。
次に、S1113において、CPU101は、LogicalPageCountの値に「1」を加算し、言語解釈処理対象のページ数をカウントアップする。カウントアップ後は、S1104へ戻り、処理を繰り返す。
次に、S1114において、CPU101は、S1108にて無効ページを示すオペレーターを検知した、としてNonePageCountに「1」を加算する。
次に、S1115において、CPU101は、該スレッドがシングルスレッド処理へ移行するスレッドかどうか判定する。ここで、シングルスレッド処理へ移行するスレッドはスレッドB1、B2のどちらでもよい。どちらか片方のスレッドを停止して、以降の処理をシングルスレッドで処理するように制御する。シングルスレッドへ移行して、以降のページの処理を引き継ぐ場合、S1116へ処理を進める。シングルスレッド処理へ移行せず、該スレッドの処理を停止する場合、S1117へ処理を進める。
次に、S1116において、CPU101は、シングルスレッド処理へ移行する処理を行う。この処理の詳細は、後ほど図7を用いて詳しく説明する。次に、S1117において、CPU101は、自身のスレッドを停止して、本処理を停止する。以上の処理により、PSインタプリタ201による、スレッドB1、B2における並列DL生成制御が実施される。
<PSインタプリタのシングルスレッド処理>
図7は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、PSインタプリタ201による、スレッドB1、またはスレッドB2におけるシングルスレッド処理例である。なお、各ステップは、CPU101が記憶される制御プログラムを実行することで実現される。以下、CPU101が実行するモジュールを主体として動作を説明する。
以下、本制御を実行するために必要な構成および概要について説明する。S1116でシングル処理へ移行すると、ページ並列制御部200によりS1002で立ち上げられたスレッドB1、B2は、どちらか一方のみで残りのページの処理を継続する。また、シングル処理移行後は、ページ並列制御部200へはDL生成完了通知のみで、処理対象ページの問い合わせは行わない。内部的にページカウンタ値のカウントアップを開始し、無効ページ検知に伴うページカウンタ値の不整合の発生を防ぐ。図6のS1116の処理が開始されると、本処理が開始される。
まずS1201において、CPU101は、LogicalPageCountの値に「1」を加算し、言語解釈処理対象のページ数をカウントアップする。次に、S1202において、CPU101は、PDL言語解釈部202により、LogicalPageCountのページ番号の印刷データの言語解釈を実行する。
次に、S1203において、CPU101は、S1203において、言語解釈した結果、LogicalPageCountのページ番号の印刷データ(PDL)があるかどうか判定する。対象ページの印刷データが無いということは、印刷データに含まれる全ページの処理が完了したことを意味する。よって、印刷データがないとCPU101が判断した場合は本処理を終了する。一方、印刷データがあるとCPU101が判断した場合は、S1204へ処理を進め、処理を継続する。
次に、S1204において、CPU101は、S1203の言語解釈の結果、無効ページを意味するオペレーター、erasepageが含まれていたか、判定する。ここで、含まれていたとCPU101が判断した場合は、S1205へ処理を進める。一方、含まれていないとCPU101が判断した場合は、S1206へ処理を進める。
次に、S1205において、CPU101は、S1205にて無効ページを示すオペレーターを検知した、としてNonePageCountに「1」を加算する。その後、S1201へ戻り、処理を繰り返す。
次に、S1206において、CPU101は、DL生成部203により、言語解釈結果からDLを生成する。
次に、S1207において、CPU101は、DL生成が完了したことをページ並列制御部200へ通知する。この時、通知するページ番号はS1202で言語解釈対象ページを示すLogicalPageCountから無効ページの数を示すNonePageCountを減算することにより、無効ページに起因するページカウンタ値の差異の辻褄を合わせる。
以上の処理により、PSインタプリタ201による、スレッドB1、またはスレッドB2におけるシングルスレッド処理が正常に実施される。
本実施形態におけるマルチコアシステムを採用したCPU101を備える画像形成装置では、マルチスレッドで印刷処理を実行時に無効ページを検知した際、直ちにシングルスレッド処理に移行し、以後の処理を引き継ぐ。そして、シングルスレッド処理へ移行後は、ページ並列制御部200へ処理対象のページを問い合わせる必要はなく、自律的にページカウンタ値を制御して処理を進める。
これにより、無効ページを含む印刷データを処理する場合に、ページ並列制御部200が無効ページを検知する手段を持たない事による、ページ制御の不整合を回避することができる。
〔第2実施形態〕
第1実施形態では、無効ページを含むページ以降の処理はシングルスレッド処理となるため、マルチコアシステムを採用するCPU101の並列演算リソースを、シングルスレッド移行後は活用することができなくなってしまう。そこで、第2実施形態では、シングルスレッド移行後に、ページ並列技術とは並列処理の単位が異なる、別の並列処理(パイプライン並列)を採用することで、並列演算リソースの無駄のない活用を実現する。
図8は、本実施形態を示す画像形成装置における描画例を示す簡易シーケンス図である。本実施形態を示す画像形成装置の無効ページ検出後のシングルスレッド移行処理に加えて、パイプライン並列処理も採用した際の簡易シーケンス図である。ページ並列技術とは並列処理の単位が異なる、別の並列処理、パイプライン並列とは、PSインタプリタ201の処理の言語解釈処理とDL生成処理とを前段と後段の処理に分け、スレッドに分けてパイプライン並列処理する技術である。
図8の例では、3ページ目に無効ページがあり、4ページ以降の処理をシングルスレッド処理へ移行する。その際、DL生成処理用のスレッドを新たにスレッドB3として立ち上げ、スレッドB1の4ページ目の言語解釈処理後に、DL生成処理を割り当てる。スレッドB1はスレッドB3のDL生成処理の完了を待たず、次の5ページ目の言語解釈処理を直ちに開始する。以降、最終ページまでスレッドB1は言語解釈処理、スレッドB3はDL生成処理を実施し、パイプラインに並列処理を実施する。
以上、シングルスレッド処理移行前はページ並列処理、シングルスレッド移行後はパイプライン並列処理を採用することで、CPU101の並列演算リソースを無駄なく活用することが可能となる。
〔第3実施形態〕
第1実施形態、第2実施形態では、無効ページを含むページ以降の処理がシングルスレッド処理となるため、無効ページよりも先のページが先行して処理されることがない。そのため、PSインタプリタ201内部だけでシンプルにページ辻褄合わせのページ整順制御が可能である。その他の解決手段として、第3実施形態では無効ページによる辻褄合わせのためのページ整順制御を、ページ並列制御部200側で実施する例を示す。こちらは、無効ページが検出されても、マルチスレッドでページ並列処理を続行することを可能である。しかし、無効ページよりも先のページが先行して処理されることがあるため、図11に示すような各スレッドの処理状況を管理するテーブルを持つ必要がある。合わせて、無効ページが具体的に何ページ目に存在していたかを、同ページ管理テーブルで管理しながら処理を進める必要もある。
<ページ管理テーブル>
図9は、本実施形態を示す画像形成装置におけるページ管理テーブルを示す図である。本例では、ページ並列制御部200とPSインタプリタ201間で共有管理されるページ管理テーブルについて説明する。前述の通り、本実施形態では無効ページであるオペレーターが検出されても、ページ並列制御部200にて処理ページの整順処理を行うため、シングルスレッド移行しない。これを実現するためには、無効ページがページ番号の何番目に存在していたかを管理し、かつ、マルチスレッドで動作している各スレッドの処理状況を把握する必要がある。ページ並列制御部200によるページ整順処理は、各スレッドで動作しているPSインタプリタ201からの、DL生成完了通知のタイミングで、ページ管理テーブルの情報を参照後、出力ページ割り当て処理することで実現される。
ページ並列制御部200は、PSインタプリタ201スレッドからDL生成完了通知を受けると、ページ管理テーブルを参照して、他方のスレッドの処理状況を確認する。他方のスレッドの処理が、DL生成完了通知を受けたページ番号より前のページ番号の処理をしている場合、そのページに無効ページが含まれていたかどうかは判定できていない。そのため、DL生成完了したページであっても、最終的に出力ページ枚数の何ページ目に割り当てるべきか、この段階ではまだ決定できない。よって、レンダリング部205への転送は行わず、バッファ領域へ該DLをバッファリング(保管)して、次のページの処理を進める。
一方、他方のスレッドの処理が、DL生成完了ページよりも先のページ番号を処理している場合、他方のスレッドが処理しているページよりも1つ後ろのページまでは言語解釈処理が完了しており、無効ページが含まれていたかどうかの判定は完了している。
よって、この場合は出力ページ割り当て処理を行い、ページ管理テーブルの情報から、バッファ領域に保持されている各DLを最終的に出力ページの何ページ目に割り当てるかを決定する。
ページ管理テーブルは「PageID」、「Status」、「Output」「OutputPage」の4つのフィールドを持つ。「PageID」は印刷データに含まれる論理ページを一意に決めるためのページIDである。「Status」は、PSインタプリタ201により、そのページが処理完了(Complete)、処理中(Running)、未処理(−)であるかどうかの処理状態の情報を持つ。「Output」はそのページが無効ページであるかどうか(True/False)の情報を持つ。例えばerasepageを含むページである場合はFalseとなる。「OutputPage」は、出力ページのページ番号何番目(枚目)の情報を持つ。該ページが無効ページである場合、noneの値となる。
図9の(A)は論理ページ2ページ目と6ページ目が処理中であり、4ページ目ら無効ページが含まれることがわかっている状態のときのページ管理テーブルを示している。PageIDが1のページは既にPSインタプリタ201による言語解釈処理が完了しており、無効ページは含まれていないため、最終的な出力ページ番号となる「OutputPage」フィールドを1とすることができる。しかし、PageIDが3および5のページは、2ページ目の言語解釈処理が完了していないため、2ページ目が無効ページかどうかは判定出来ず、この段階ではまだ最終的な出力ページ番号は決定できない。
図9の(B)は、図9の(A)の状態から、PageIDが2のページの処理が完了した状態になったときのページ管理テーブルを示している。PageIDが5のページまで、言語解釈処理が全て完了しているため、「OutputPage」のフィールドを更新することができる。この例ではPageIDが2で新たに無効ページが検知されたため、PageIDが3のページは、「OutputPage」は2、PageIDが5のページは「OutputPage」は3となる。
図9の(C)は更に処理が進み、PageIDが6以外のページは言語解釈処理が完了している状態を示している。この場合、PageIDが6より後のページの言語解釈処理が完了していても、図9の(A)のPageIDが2のページと同様、PageIDが6のページが無効ページかどうか判定できていないため、「OutputPage」フィールドは更新できない。
図9の(D)は全ページの言語解釈処理が完了したときのページ管理テーブルの情報を示している。この状態になって、PageIDが6から最終ページの8のページまでの「OutputPage」を決定することができる。この例ではPageIDが6で再度無効ページが検知されたため、PageIDが7の「OutputPage」は4、PageIDが8の「OutputPage」は5となる。
<ページ並列制御部のページ制御>
図10は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、ページ並列制御部200における、ページ並列処理のページ制御例である。なお、各ステップは、CPU101が記憶される制御プログラムを実行することで実現される。また、本実施形態のページ並列制御部200では第1実施形態と同様、ページ制御のための内部ページカウンタ値としてPageCountを持っている。第1実施形態では、PhysicalPageCountを持ち、出力物の何枚目(物理ページ)にどのページの描画結果をレイアウトするかを制御するための物理ページ数を制御していた。しかし、本実施形態では、ページ管理テーブルで出力ページ制御するため、本実施形態ではPhysicalPageCountは必要ない。
また、本実施形態のページ並列制御部200はさらに、各スレッドの処理状況、及び無効ページが存在するページ番号を管理する、PSインタプリタ201と共有管理のページ管理テーブルを持つ。印刷データがNetwork104を介して受信されると、CPU101により、本処理が開始される。
まずS2001において、CPU101は、初期化処理としてPageCountに「0」を設定する。次に、S2002において、CPU101は、図9にて説明したページ管理テーブルを生成し、初期化処理を行う。次に、S2003において、CPU101は、後ほど説明する図11に示されるスレッドB1、B2を立ち上げ、PSインタプリタ201を割り当てる。
次に、S2004において、CPU101は、S2003にて立ち上げたPSインタプリタ201からの通信を待つ。ここでは、PSインタプリタ201からの処理対象に対してページの問い合わせか、無効ページ検知通知、DL生成完了通知のどれかの通信を待っている。この3つの通知のどれかの通知をPSインタプリタ201のスレッドから受信すると、S2005へ処理を進める。
次に、S2005において、CPU101は、S2004においてPSインタプリタ201から受信した通信が、処理対象ページの問い合わせだったかどうか判定する。処理対象ページの問い合わせだったとCPU101が判断した場合は、S2006へ処理を進める。一方、処理対象ページの問い合わせではなかったとCPU101が判断した場合は、S2008へ処理を進める。次に、S2006において、CPU101は、PageCount値に「1」を加算し、次の処理対象ページとするページ数を進める。
次に、S2007において、CPU101は、PSインタプリタ201へ、内部ページカウンタ値のPageCountの値を処理対象ページとして通知する。その後、S2004へ処理を戻す。
次に、S2008において、CPU101は、S2004においてPSインタプリタ201から受信した通信が、無効ページ通知であったか判定する。無効ページ通知であったとCPU101が判断した場合、S2009へ処理を進める。一方、無効ページ通知でないとCPU101が判断した場合、つまりDL生成完了通知であった場合はS2010へ処理を進める。
次に、S2009において、CPU101は、S2008にて無効ページとして通知を受けた対象ページを無効ページとして、ページ管理テーブルを更新する。「Status」フィールドをCompleteへ、「Output」フィールドを「False」へ更新する。
次に、S2010において、CPU101は、S2008にてDL生成完了通知を受けた対象ページの情報をページ管理テーブルへ反映させる。「Status」フィールドをCompleteへ、「Output」フィールドをTrueへ更新する。
次に、S2011において、CPU101は、ページ管理テーブルを参照して、S2008にてDL生成完了通知を受けたページ番号までの全てのDL(言語解釈)処理が、完了しているか判定する。ここで、全てのDL(言語解釈)処理が完了しているとCPU101が判断した場合は、S2013へ処理を進める。一方、全てのDL(言語解釈)処理が完了していないとCPU101が判断した場合は、S2012へ処理を進める。
次に、S2012において、CPU101は、バッファ204のバッファ領域へ生成されたDLをスプールする。スプールが完了すると、S2004へ処理を戻す。次に、S2013において、CPU101は、ページ管理テーブルを参照して、出力ページ制御処理を行う。この処理の詳細については、図12を用いて後ほど詳しく説明する。
次に、S2014において、CPU101は、バッファ204にスプールされているDLを、ページ管理テーブルの「OutputPage」の順に従い、レンダリング部205へ転送する。
次に、S2015において、CPU101は、印刷データに含まれる全ページ分のDLを転送したか判定する。この判定には、S2003で立ち上げたスレッドB1、B2が停止しているか、で判定することが可能である。ここで、印刷データに含まれる全ページ分のDLを転送したとCPU101が判断した場合は、S2016へ進む。一方、印刷データに含まれる全ページ分のDLを転送できていないとCPU101が判断した場合は、S2004へ戻り、処理を繰り返す。
次に、S2016において、CPU101は、自身のスレッドAを停止し、本処理を終了する。以上の処理により、ページ並列制御部200による、ページ並列処理のページ制御が実施される。
<PSインタプリタの並列DL生成制御>
図11は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、Sインタプリタ201のスレッドB1、B2における並列DL生成制御例である。なお、各ステップは、CPU101が記憶される制御プログラムを実行することで実現される。
第1実施形態と同様、PSインタプリタ201は内部ページカウンタとして、LogicalPageCount、TargetPageCount、NonePageCountの3つのカウンタ値を持っている。それぞれのカウンタの意味は第1実施形態と同様である。
第1実施形態とは異なり、本実施形態ではPSインタプリタはページ制御のページ整順処理は行わず、ページ並列制御部200から指示される処理対象ページまで処理を進め、正常にDL生成が完了したか、無効ページを検知したかをページ並列制御部200へ通知する。
そして、ページ並列制御部200への通知が終わると、次の処理対象とするページを問い合わせる。これらの処理を繰り返し、印刷データに含まれる全ページの処理が終わると、自身のスレッドを停止して処理を終了する。図10のS2003にて、ページ並列制御部200からスレッドB1、B2が立ち上げられると、本処理が開始される。
まずS2101において、CPU101は、初期化処理として、内部ページカウンタ値のLogicalPageCountを「1」に設定する。次に、S2102において、CPU101は、初期化処理として、内部ページカウンタ値のTargetPageCountを1に設定する。次に、S2103において、CPU101は、初期化処理として、内部ページカウンタ値のNonePageCountを「0」に設定する。
次に、S2104において、CPU101は、ページ並列制御部200へ処理対象ページのページ番号を問い合わせる。ページ並列制御部200から、処理対象ページのページ番号が通知されると、S2105へ処理を進める。
次に、S2105において、CPU101は、内部ページカウンタ値のTargetPageCountに、S2104で通知された処理対象ページのページ番号(PageCount)の値を格納する。次に、S2106において、CPU101は、PDL言語解釈部202により、LogicalPageCountのページ番号の印刷データの言語解釈を実行する。
次に、S2107において、CPU101は、S2106において言語解釈した結果、LogicalPageCountのページ番号の印刷データ(PDL)がないかどうか判定する。なお、対象ページの印刷データが無いということは、印刷データに含まれる全ページの処理が完了したことを意味する。よって、印刷データがないとCPU101が判断した場合はS2114へ処理を進め、終了処理を行う。一方、印刷データがあるとCPU101が判断した場合は、S2108へ処理を進め、処理を継続する。
次に、S2108において、CPU101は、LogicalPageCountがTargetPageCountより小さいか判定する。ここで、小さいとCPU101が判断した場合は、ページスキップ処理であるため、S2109へ進まず、S2106へ戻り、処理を繰り返す。一方、小さくない(つまり等しい)とCPU101が判断した場合、ページ描画処理をする必要があるため、S2109へ処理を進める。
次に、S2109において、CPU101は、S2106の言語解釈の結果、無効ページを意味するオペレーター、erasepageが含まれていたか、判定する。ここで、含まれていたとCPU101が判断した場合は、S2110へ進む。一方、含まれていないとCPU101が判断した場合は、S2111へ進む。
次に、S2110において、CPU101は、TargetPageCountが示すページは無効ページであることをページ並列制御部200へ通知する。次に、S2111において、CPU101は、DL生成部203により、言語解釈結果からDLを生成する。次に、S2112において、CPU101は、TargetPageCountのページ番号のDL生成処理が完了したことをページ並列制御部200のS2004へ通知する。
次に、S2113において、CPU101は、LogicalPageCountの値に1を加算し、処理対象のページ数をカウントアップする。カウントアップ後はS2104へ戻り、処理を繰り返す。
次に、S2114において、CPU101は、自身のスレッドを停止して、本処理を停止する。以上の処理により、PSインタプリタ201による、スレッドB1、B2における並列DL生成制御が実施される。
<PSインタプリタのシングルスレッド処理>
図12は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、ページ並列制御部200による、スレッドAにおける出力ページ制御処理例である。なお、各ステップは、CPU101が記憶される制御プログラムを実行することで実現される。
出力ページ制御処理において、ページ並列制御部200は、図9に示したページ管理テーブルを持ち、また、内部ページカウンタとしてMinPageCount、MaxPageCount、FixedPageCountのカウンタ値を持っている。MinPageCountは本処理が開始した時点における、ページ管理テーブルの「OutputPage」のフィールドが決定しているPageIDの最大値である。MaxPageCountはページ管理テーブル上で、PSインタプリタ201によるDL処理が完了しているページ番号の最大値である。FixedPageCountは「OutputPage」フィールドに格納されている値の最大値である。本処理開始時点でページ管理テーブルを参照してMinPageCountを決定し、MinPageCountの「OutputPage」フィールドの値をFixedPageCountへ格納する。
PSインタプリタ201からDL生成完了通知が来たときの処理完了ページよりも先のDL生成処理が完了しているか、ページ管理テーブルを参照して判定する。先のページのDL生成が完了している場合は、「Status」フィールドがCompleteとなっている最大のPageIDを、FixedPageCountに格納する。先のページのDL生成が完了していない場合は、DL生成完了通知の処理完了ページをFixedPageCountに格納する。
以降、MinPageCountからMaxPageCountまで、「Output」フィールドがTrueかFalseかでOutputPageの値を決定していく。図10のS2013の処理が開始されると、本処理が開始される。
まずS2201において、CPU101は、ページ管理テーブルを参照して、内部ページカウンタのMinPageCountを決定する。MinPageCountには、ページ管理テーブルの情報から「OutputPage」フィールドが決定しているPageIDの最大値を格納する。図9の例で言えば、(A)ではPageIDが1のページが、(B)、(C)ではPageIDが5のページが、(D)ではPageIDが8のページが最大値なので、この値をMinPageCountへ格納することになる。
次に、S2202において、CPU101は、ページ管理テーブルを参照して、FixedPageCountを決定する。FixedPageCountはMinPageCountへ格納されたPageIDの「OutputPage」フィールドの値が格納される。図9の例で言えば、(A)では1が、(B)、(C)では3が、(D)では5が、それぞれ格納されることになる。
次に、S2203において、CPU101は、ページ管理テーブルを参照して、図10のS2004でPSインタプリタ201から受信した、DL生成完了のページ番号より先のPageIDのDL生成処理が完了しているか判定する。ここで、先のDL生成処理が完了しているとCPU101が判断した場合は、S2204へ進む。一方、先のDL生成処理が完了していないとCPU101が判断した場合は、S2205へ進む。
ここでは、MaxPageCountへ値を格納するために、どの値を採用するかを判定している。前述の通り、MaxPageCountはページ管理テーブル上で、PSインタプリタ201によるDL処理が完了しているページ番号の最大値である。
S2004では、CPU101は、PSインタプリタ201から受信した、DL生成完了のページ番号が、ページ管理テーブル上でもDL生成処理が完了しているページ番号の最大値なのか。それとも既にそれ以上のページ番号の処理が完了しているのかを、判定する。なお、DL生成完了のページ番号より先のDL生成処理が完了しているかは、ページ管理テーブルの「Status」フィールドがCompleteとなっているもので、PageIDが最大である値を参照することで判定できる。
よって、既にそれ以上のページ番号の処理が完了しているとCPU101が判断した場合、S2204において、CPU101は、ページ管理テーブルの「Status」フィールドがCompleteとなっており、PageIDが最大である値をMaxPageCountの値として格納する。
一方、S2205では、CPU101は、S2004でPSインタプリタ201から通知された値が、DL処理が完了しているページ番号の最大値となるので、CPU101は、その値をMaxPageCountへ格納する。
以降、S2206からS2009はMinPageCountからMaxPageCountまで、PageID値を1ずつカウントアップしながら、ページ管理テーブルの「OutputPage」の値を決定する処理を繰り返す。
次に、S2206において、CPU101は、「Output」フィールドがTrueであるかどうか判定する。ここで、TrueであるとCPU101が判断した場合はS2208へ、Falseであると判断した場合はS2207へ進む。
次に、S2207において、CPU101は、「OutputPage」の値をnoneへ設定する。次に、S2208において、CPU101は、FixedOutputPageの値を1つインクリメントする。次に、S2209において、CPU101は、「OutputPage」の値を、FixedOutputPageの値に設定する。S2206からS2209までのステップをMinPageCountからMaxPageCountまで処理すると、本処理を終了する。以上の処理により、ページ並列制御部200による、スレッドAにおける出力ページ制御処理が実施される。
本実施形態におけるマルチコアシステムを採用したCPU101を備える画像形成装置は、ページ管理テーブルを用いつつ、マルチスレッドで印刷処理を実行し、無効ページを検知した際のページ整順処理を行う。第1実施形態と異なり、本発明の課題を解決しながらも、無効ページを検知以降もマルチスレッド処理が可能であるため、並列性、処理パフォーマンスは本実施形態の方が良い。
なお、本発明の実施形態では、無効ページを意味するPDLコマンドとして、PostScriptのerasepageオペレーターを例として挙げた。しかし、本発明の適用範囲は、このオペレーターに限定されるものではなく、他のPDLで同様の意味をもつものに対しても適用可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えばASIC)によっても実現可能である。
100 コントローラユニット

Claims (6)

  1. 印刷データを処理する画像形成装置において、
    前記印刷データを解釈して中間データを生成する複数のインタプリタと、
    各インタプリタからのページ要求と中間データ完了通知とに応じて処理すべきページ数情報をそれぞれのインタプリタに指定して並列処理させる制御手段と、
    生成された中間データから出力すべき各ページの画像データを生成する生成手段と、
    を備え、
    指定されたページが無効ページであるといずれか一方のインタプリタが解釈した場合、前記並列処理を停止して、いずれか1つのインタプリタが、当該無効ページから後続する最終ページまで当該インタプリタが管理するページ数情報を用いて中間データを生成することを特徴とする画像形成装置。
  2. 前記いずれか1つのインタプリタは、無効ページから後続するページから最終ページまで中間データを生成したことを前記制御手段に通知することを特徴とする請求項1記載の画像形成装置。
  3. 前記中間データを生成しないインタプリタは、中間データの生成を停止することを特徴とする請求項1記載の画像形成装置。
  4. 前記印刷データは、所定のページ記述言語で記述されていることを特徴とする請求項1乃至3のいずれか1項に記載の画像形成装置。
  5. 印刷データを処理する画像形成装置の制御方法において、
    複数のインタプリタを用いて前記印刷データを解釈して中間データを生成する生成工程と、
    各インタプリタからのページ要求と中間データ完了通知とに応じて処理すべきページ数情報をそれぞれのインタプリタに指定して並列処理させる制御工程と、
    生成された中間データから出力すべき各ページの画像データを生成する生成工程と、
    を備え、
    指定されたページが無効ページであるといずれか一方のインタプリタが解釈した場合、前記並列処理を停止して、いずれか1つのインタプリタが、当該無効ページから後続する最終ページまで当該インタプリタが管理するページ数情報を用いて中間データを生成することを特徴とする画像形成装置の制御方法。
  6. 請求項に記載の画像形成装置の制御方法をコンピュータに実行させることを特徴とするプログラム。
JP2015129996A 2015-06-29 2015-06-29 画像形成装置、画像形成装置の制御方法、及びプログラム Active JP6537372B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015129996A JP6537372B2 (ja) 2015-06-29 2015-06-29 画像形成装置、画像形成装置の制御方法、及びプログラム
US15/189,935 US10262247B2 (en) 2015-06-29 2016-06-22 Image forming apparatus for converting print data into intermediate data, method for controlling image forming apparatus, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015129996A JP6537372B2 (ja) 2015-06-29 2015-06-29 画像形成装置、画像形成装置の制御方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017013279A JP2017013279A (ja) 2017-01-19
JP6537372B2 true JP6537372B2 (ja) 2019-07-03

Family

ID=57601182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015129996A Active JP6537372B2 (ja) 2015-06-29 2015-06-29 画像形成装置、画像形成装置の制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US10262247B2 (ja)
JP (1) JP6537372B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892346B2 (en) * 2015-12-18 2018-02-13 Océ-Technologies B.V. Method of converting image data from source format into target format

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5847460B2 (ja) * 2011-07-01 2016-01-20 キヤノン株式会社 画像形成装置、データ処理方法及びプログラム
US8913269B2 (en) * 2012-09-28 2014-12-16 Konica Minolta Laboratory U.S.A., Inc. Method for printing PDF files containing corrupted pages
JP6094442B2 (ja) * 2013-10-02 2017-03-15 富士ゼロックス株式会社 印刷管理装置、プログラム及び印刷システム
US9146698B2 (en) * 2013-10-02 2015-09-29 Fuji Xerox Co., Ltd. Print management apparatus, non-transitory computer readable medium, and printing system

Also Published As

Publication number Publication date
JP2017013279A (ja) 2017-01-19
US10262247B2 (en) 2019-04-16
US20160379098A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
JPWO2012020478A1 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
JP5482528B2 (ja) 印刷文書変換装置及びプログラム
JP2008140046A (ja) 画像処理装置、画像処理プログラム
JP2012081626A (ja) 画像形成装置、画像処理方法、プログラム
US5710873A (en) Apparatus and method for maximizing a rate of image data transfer in a printing system
JP6136020B2 (ja) 画像形成装置及び並列処理の制御方法並びに制御プログラム
JP6746326B2 (ja) 印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム
JP2014078153A (ja) 印刷画像処理システムおよびプログラム
JP5534426B2 (ja) 画像形成装置およびそのプログラム
JP6537372B2 (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
JP2011167857A (ja) 画像形成装置、画像形成方法、および画像形成プログラム
JP6188735B2 (ja) 印刷装置、印刷装置の制御方法、およびプログラム
JP2011046034A (ja) 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体
JP6666036B2 (ja) 印刷データ処理装置、印刷データ処理方法、およびプログラム
JP5847460B2 (ja) 画像形成装置、データ処理方法及びプログラム
JP5232728B2 (ja) 画像形成装置
JP2015022685A (ja) 画像形成装置
JP5799968B2 (ja) 印刷システム
JP5589582B2 (ja) 画像処理装置及びプログラム
JP5704318B2 (ja) 画像形成方法および画像形成装置
JP5656000B2 (ja) 画像形成装置およびそのプログラム
JPH07200211A (ja) プリンタ装置
JP2007328737A (ja) ホスト装置、データ処理装置及びデータ処理システム
JP7186541B2 (ja) 画像処理装置、その制御方法、及びプログラム
JP2009053829A (ja) 情報処理装置、情報処理プログラム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20180306

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190417

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190604

R151 Written notification of patent or utility model registration

Ref document number: 6537372

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151