(57)【特許請求の範囲】
【請求項１】
ページ記述言語で記述されたＰＤＬデータに含まれる１ページ分のページデータ毎に含まれる設定コマンド及び描画コマンドを取得して１ページ分の中間コードデータを生成するコード変換処理を、互いに異なるページデータに対して実行する、第１制御部及び第２制御部を備え、
前記第１制御部が、処理順番がＮ番目（Ｎは２以上の自然数）のページデータに対する前記コード変換処理を実行する場合に、前記第１制御部は、前記処理順番が前記Ｎ番目より前の順番であるＫ番目（ＫはＮより小さな自然数）のページデータであって、前記第２制御部によって前記コード変換処理の対象とされる前記Ｋ番目のページデータに含まれる設定コマンドを、前記第２制御部が前記Ｋ番目のページデータに対する前記コード変換処理を終了する前に取得し、その取得結果に基づいて、前記Ｎ番目のページデータに対する前記コード変換処理を実行する、制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記第１制御部は、前記第２制御部がコード変換処理の対象とするページデータに含まれる前記設定コマンドを読み取ることで前記取得を実行する、制御装置。
【請求項３】
請求項１または請求項２に記載の制御装置であって、
前記第１制御部及び前記第２制御部の各々が前記コード変換処理を実行すべきページデータの処理順番をカウントする第１カウント部と、
前記第１制御部が前記設定コマンドを取得したページデータの処理順番をカウントする第２カウント部と、を備え、
前記第１制御部は、前記第１カウント部がカウントした処理順番が、前記第２カウント部がカウントした処理順番よりも大きい場合に、前記第２制御部が前記コード変換処理の対象とするページデータに含まれる設定コマンドを取得し、前記第１カウント部がカウントした処理順番が、前記第２カウント部がカウントした処理順番以下である場合に、前記第１カウント部がカウントした処理順番のページデータに対する前記コード変換処理を実行する、制御装置。
【請求項４】
請求項１から請求項３のいずれか一項に記載の制御装置であって、
前記第１制御部及び前記第２制御部は、１ページ分の前記中間コードデータ毎に１ページ分の描画データを生成する描画処理を実行し、
１ページ分のページデータに対し、前記第１制御部及び前記第２制御部のいずれかが単独で、前記コード変換処理と前記描画処理とを実行する、制御装置。
【請求項５】
請求項１から請求項４のいずれか一項に記載の制御装置であって、
前記第１制御部及び前記第２制御部は、１ページ分の前記中間コードデータ毎に１ページ分の描画データを生成する描画処理を実行し、
前記第１制御部が前記Ｎ番目の中間コードデータに対する前記描画処理を実行し、前記第２制御部が前記Ｋ番目の中間コードデータに対する前記描画処理を実行する場合であって、前記Ｋ番目の中間コードデータに対する前記描画処理が終了する前に、前記Ｎ番目の中間コードデータに対する前記描画処理が終了した場合、前記第１制御部は、前記Ｋ番目の中間コードデータの未処理分の一部を、前記第２制御部に代わって描画処理を実行する、制御装置。
【請求項６】
請求項５に記載の制御装置であって、
前記Ｋ番目のページデータに対する前記コード変換処理が終了する前に、前記Ｎ番目のページデータに対する前記コード変換処理が終了した場合、前記Ｎ番目の描画データを保持する保持部を備え、
前記Ｋ番目のページデータに対する前記コード変換処理が終了し、その描画データを出力した後に、前記保持部が保持した前記Ｎ番目の描画データを出力する、制御装置。
【請求項７】
請求項１から請求項６のいずれか一項に記載の制御装置であって、
前記第１制御部及び前記第２制御部の少なくとも一方の制御部は、前記処理順番が連続したページデータに含まれる複数の前記設定コマンドを、連続して取得する、制御装置。
【請求項８】
請求項１から請求項７のいずれか一項に記載の制御装置であって、
前記第１制御部及び前記第２制御部の少なくとも一方の制御部が、処理順番が最後のページデータに対する前記コード変換処理を開始したことに基づき、他方の制御部は前記設定コマンドの取得を停止する、制御装置。
【請求項９】
請求項１から請求項８のいずれか一項に記載の制御装置と、
前記制御装置が生成した前記描画データに基づき画像形成を行う形成部と、
を備える、印刷装置。
【請求項１０】
第１制御部と第２制御部とを備える制御装置に処理を実行させるためのコンピュータプログラムであって、
第１制御部及び前記第２制御部に、ページ記述言語で記述されたＰＤＬデータに含まれる１ページ分のページデータ毎に含まれる設定コマンド及び描画コマンドを取得して１ページ分の中間コードデータを生成するコード変換処理を、互いに異なるページデータに対して実行させ、
前記第１制御部に、処理順番がＮ番目（Ｎは２以上の自然数）のページデータに対する前記コード変換処理を実行させる場合に、前記第１制御部に、前記処理順番が前記Ｎ番目より前の順番であるＫ番目（ＫはＮより小さな自然数）のページデータであって、前記第２制御部によって前記コード変換処理の対象とされる前記Ｋ番目のページデータに含まれる設定コマンドを、前記第２制御部による前記Ｋ番目のページデータに対する前記コード変換処理が終了する前に取得させ、その取得結果に基づいて、前記Ｎ番目のページデータに対する前記コード変換処理を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページデータを中間コードデータに変換する技術に関する。
【背景技術】
【０００２】
従来より、印刷データを受信する処理、その印刷データ（ＰＤＬデータ）を中間段階のデータ（中間コードデータ）に変換する処理を制御する第一のＣＰＵと、中間段階のデータを印刷機構に出力可能なビットマップデータに変化する処理を制御する第二のＣＰＵとを有する印刷装置がある（特許文献１参照）。この印刷装置は、印刷作業の高速化を図るために、各ＣＰＵが実行すべき処理を相互に肩代わりさせるようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２５１８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、上記従来の印刷装置では、通常は、第一のＣＰＵが、上記印刷データに含まれるページデータについて中間コードデータへの変換処理（コード変換処理）を単独で実行し、その第一のＣＰＵが過負荷状態になったときに初めて、第二のＣＰＵが、第一のＣＰＵに代わって、未処理のページデータについてコード変換処理を実行する。即ち、従来では、各ＣＰＵが過負荷状態になることを抑制しつつコード変換処理を実行することについては十分に考慮されていなかった。
【０００５】
本明細書では、複数の制御部それぞれが過負荷状態になることを抑制しつつ、コード変換処理を実行することが可能な技術を開示する。
【課題を解決するための手段】
【０００６】
上記の目的を達成するための手段として、制御装置は、ページ記述言語で記述されたＰＤＬデータに含まれる１ページ分のページデータ毎に含まれる設定コマンド及び描画コマンドを取得して１ページ分の中間コードデータを生成するコード変換処理を、互いに異なるページデータに対して実行する、第１制御部及び第２制御部を備え、前記第１制御部が、処理順番がＮ番目（Ｎは２以上の自然数）のページデータに対する前記コード変換処理を実行する場合に、前記第１制御部は、前記処理順番が前記Ｎ番目より前の順番であるＫ番目（ＫはＮより小さな自然数）のページデータであって、前記第２制御部によって前記コード変換処理の対象とされる前記Ｋ番目のページデータに含まれる設定コマンドを取得し、その取得結果に基づいて、前記Ｎ番目のページデータに対する前記コード変換処理を実行する。
【０００７】
この制御装置によると、第１制御部及び第２制御部は、互いに異なるページデータに対して、コード変換処理を実行する。従って、第１制御部及び第２制御部それぞれが過負荷状態になることを抑制しつつ、コード変換処理を実行することができる。
【０００８】
また、第１制御部が、処理順番がＮ番目のページデータに対するコード変換処理を実行する場合に、処理順番Ｎ番目より前の順番であるＫ番目のページデータであって、第２制御部によってコード変換処理の対象とされるＫ番目のページデータに含まれる設定コマンドを取得し、その取得結果に基づいて、Ｎ番目のページデータに対するコード変換処理を実行する。このため、第１制御部がコード変換処理の対象とするページデータにおいて、それよりも処理順番が前の順番であって、第２制御部がコード変換処理の対象とするページデータに含まれる設定コマンドを、第１制御部が利用することによりコード変換処理が可能である場合に、複数の制御部を利用してコード変換処理を実行することができる。
【０００９】
上記制御装置は、前記第１制御部が、前記第２制御部が前記Ｋ番目のページデータに対する前記コード変換処理を終了する前に、前記Ｋ番目のページデータに含まれる設定コマンドを取得する構成でもよい。
【００１０】
この制御装置によると、第１制御部がコード変換処理の対象とするページデータにおいて、第２制御部がコード変換処理の対象とするページデータに含まれる設定コマンドを、第１制御部が利用することによりコード変換処理が可能である場合でも、第２制御部がＫ番目のページデータに対するコード変換処理を終了するのを待たずに、そのＫ番目のページデータに含まれる設定コマンドを取得可能であるので、第１制御部はＮ頁目のページデータのコード変換処理を迅速に開始することが可能になる。
【００１１】
上記制御装置は、前記第１制御部が、前記第２制御部がコード変換処理の対象とするページデータに含まれる前記設定コマンドを読み取ることで前記取得を実行する構成でもよい。
【００１２】
この制御装置によると、第１制御部自身が、Ｋ番目のページデータに含まれる設定コマンドを読み取ることで取得する。このため、例えば当該設定コマンドの読み取りを第２制御部が行い、その読み取り結果を、第１制御部が受けることで取得する場合に比べて、第１制御部は、第２制御部による設定コマンドの読み取りを待つことなく、コード変換処理を迅速に行うことができる。しかも、第１制御部は、自己に不要な描画コマンドの実行を省略して処理負担を軽減することができる。
【００１３】
制御装置は、前記第１制御部及び前記第２制御部の各々が前記コード変換処理を実行すべきページデータの処理順番をカウントする第１カウント部と、前記第１制御部が前記設定コマンドを取得したページデータの処理順番をカウントする第２カウント部と、を備え、前記第１制御部は、前記第１カウント部がカウントした処理順番が、前記第２カウント部がカウントした処理順番よりも大きい場合に、前記第２制御部が前記コード変換処理の対象とするページデータに含まれる設定コマンドを取得し、前記第１カウント部がカウントした処理順番が、前記第２カウント部がカウントした処理順番以下である場合に、前記第１カウント部がカウントした処理順番のページデータに対する前記コード変換処理を実行してもよい。
【００１４】
この制御装置によると、カウント部を利用するという比較的に簡単な方法により、コード変換処理を、複数の制御部を利用して効率良く実行することができる。
【００１５】
上記制御装置は、前記第１制御部及び前記第２制御部が、１ページ分の前記中間コードデータ毎に１ページ分の描画データを生成する描画処理を実行し、１ページ分のページデータに対し、前記第１制御部及び前記第２制御部のいずれかが単独で、前記コード変換処理と前記描画処理とを実行する構成でもよい。
【００１６】
この制御装置によると、１ページ分のページデータに対し、コード変換処理と描画処理とを、別々の制御部に分担させる構成に比べて、処理が簡易になる。また、例えば各制御部ごとに専用のメモリを備える場合には、メモリ間でのデータの受け渡しによる処理負担を軽減することができる。
【００１７】
上記制御装置は、前記第１制御部及び前記第２制御部が、１ページ分の前記中間コードデータ毎に１ページ分の描画データを生成する描画処理を実行し、前記第１制御部が前記Ｎ番目の中間コードデータに対する前記描画処理を実行し、前記第２制御部が前記Ｋ番目の中間コードデータに対する前記描画処理を実行する場合であって、前記Ｋ番目の中間コードデータに対する前記描画処理が終了する前に、前記Ｎ番目の中間コードデータに対する前記描画処理が終了した場合、前記第１制御部は、前記Ｋ番目の中間コードデータの未処理分の一部を、前記第２制御部に代わって描画処理を実行する構成でもよい。
【００１８】
この制御装置によると、処理順番がＫ番目のページデータに対する描画処理が終了する前に、処理順番がＮ番目のページデータに対する描画処理が終了した場合でも、処理順番が入れ替わることを抑制することができる。
【００１９】
上記制御装置は、前記Ｋ番目のページデータに対する前記コード変換処理が終了する前に、前記Ｎ番目のページデータに対する前記コード変換処理が終了した場合、前記Ｎ番目の描画データを保持する保持部を備え、前記Ｋ番目のページデータに対する前記コード変換処理が終了し、その描画データを出力した後に、前記保持部が保持した前記Ｎ番目の描画データを出力する構成でもよい。
【００２０】
この制御装置によると、描画データを、ページデータと同じ順番（Ｋ番目、Ｎ番目の順）で出力することができる。
【００２１】
上記制御装置は、前記第１制御部及び前記第２制御部の少なくとも一方の制御部が、前記処理順番が連続したページデータに含まれる複数の前記設定コマンドを、連続して取得する構成でもよい。
【００２２】
この制御装置によると、設定コマンドを連続して取得するため、処理負担を軽減することが出来る。
【００２３】
上記制御装置は、前記第１制御部及び前記第２制御部の少なくとも一方の制御部が、処理順番が最後のページデータに対する前記コード変換処理を開始したことに基づき、他方の制御部は前記設定コマンドの取得を停止する構成でもよい。
【００２４】
この制御装置によると、不要な設定コマンドを取得することを抑制することができる。
【００２５】
上記制御装置と、当該制御装置が生成した前記描画データに基づき画像形成を行う形成部と、を備える、印刷装置とすることが好ましい。
【００２６】
この印刷装置によると、制御装置を備えた印刷装置において、第１制御部及び第２制御部それぞれが過負荷状態になることを抑制しつつ、コード変換処理を実行することができる。
【００２７】
なお、この発明は、制御装置、制御方法、印刷装置、印刷方法、これらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体等の種々の態様で実現することができる。
【図面の簡単な説明】
【００２８】
【図１】一実施形態に係る通信システムの概略図
【図２】ＰＤＬ処理を示すフローチャート
【図３】設定コマンド取得処理を示すフローチャート
【図４】コード変換処理を示すフローチャート
【図５】描画・援助処理を示すフローチャート
【図６】援助処理を示すフローチャート
【図７】プロセッサコア各々のページデータに対する処理のタイムチャート
【図８】プロセッサコア各々がカウントするカウント値の推移を示す図
【図９】変形例における、プロセッサコア各々がカウントするカウント値の推移を示す図
【発明を実施するための形態】
【００２９】
本発明の一例である一実施形態について図１〜図８を参照しつつ説明する。
［通信システムの構成］
図１は、本実施形態の通信システム２の概略図を示す。通信システム２は、プリンタ１０（印刷装置の一例）と外部装置７０とを備える。プリンタ１０と外部装置７０とは、有線または無線の通信方式により相互に通信可能である。なお、プリンタ１０は、印刷機能に加えて、更に、スキャナ機能、ファクシミリ機能のいずれか１つを備える構成でもよい。外部装置７０は、プリンタ１０と別体に構成されているデバイスであって、例えば、ＰＣ、ＰＤＡ、サーバ、テレビ、記憶装置（例えばＵＳＢメモリなどの搬送型メモリ、固定型メモリ）、他のプリンタ等である。
【００３０】
１．プリンタの構成
図１に示すように、プリンタ１０は、デュアルコアプロセッサ１１と、ネットワークインターフェイスＩ／Ｆと、記憶部１６と、印刷部５０と、を備える。なお。デュアルコアプロセッサ１１及び記憶部１６が「制御装置」の一例である。
【００３１】
１−１．デュアルコアプロセッサ
デュアルコアプロセッサ１１は、第１プロセッサコア１２（第１制御部の一例）と第２プロセッサコア１４（第２制御部の一例）とを備える。第１プロセッサコア１２と第２プロセッサコア１４とは、並列的（同時的）に処理を実行することができる。
【００３２】
１−２．ネットワークインターフェイス
ネットワークインターフェイスＩ／Ｆは、図示省略のＬＡＮに接続されている。プリンタ１０は、ネットワークインターフェイスＩ／ＦとＬＡＮを介して、外部装置７０と通信可能である。
【００３３】
１−３．記憶部
記憶部１６は、バッファ領域１８と、第１中間コード記憶領域２２−１と、第２中間コード記憶領域２２−２と、第１描画データ記憶領域２６−１と、第２描画データ記憶領域２６−２と、プログラム記憶領域３０と、処理情報記憶領域３８と、その他の記憶領域４０と、を備える。
【００３４】
バッファ領域１８は、例えばネットワークインターフェイスＩ／Ｆを介して受信したＰＤＬデータ２０を記憶する。ＰＤＬデータ２０は、ページ記述言語で記述されたデータである。ＰＤＬデータ２０は、１または複数ページ分のページデータを含み得る。バッファ領域１８は、複数ページ分のページデータを同時に記憶可能である。
【００３５】
なお、「ページ記述言語」という用語は、ページという概念を利用してデータを記述するためのあらゆる言語を含む概念である。ページ記述言語の例として、例えば、ＰＤＦ（Portable Document Format）、ＰＳ（Post Script）等を挙げることができる。また、ワープロソフト、表計算ソフト、描画ソフト等で利用されている言語のうち、ページという概念を利用してデータを記述する言語も、ページ記述言語と呼ぶことができる。
【００３６】
第１中間コード記憶領域２２−１及び第２中間コード記憶領域２２−２（以下、両者を区別しないときは「中間コード記憶領域２２」ということがある）は、ＰＤＬデータ２０に含まれる１ページ分のページデータから１ページ分の中間コードデータ２４が生成された場合に、その１ページ分の中間コードデータ２４を記憶する。中間コードデータ２４は、プリンタ１０のベンダによって採用された中間言語で記述されたデータである。なお、上記の「中間コードデータ」は、例えば、中間言語で記述された中間コードデータと言い換えることができる。また、上記の「描画データ」は、例えば、ビットマップ形式の描画データと言い換えることができる。
【００３７】
中間コード記憶領域２２は、複数ページ分の中間コードデータ２４を同時に記憶可能である。第１中間コード記憶領域２２−１は、主として第１プロセッサコア１２が生成した中間コードデータ２４を記憶し、第２中間コード記憶領域２２−２は、主として第２プロセッサコア１４が生成した中間コードデータ２４を記憶する。
【００３８】
第１描画データ記憶領域２６−１及び第２描画データ記憶領域２６−２（以下、両者を区別しないときは「描画データ記憶領域２６」ということがある）は、１ページ分の中間コードデータ２４から１ページ分の描画データ２８が生成された場合に、その１ページ分の描画データ２８を記憶する。描画データ２８は、多階調（例えば２５６階調）のビットマップ形式のデータである。
【００３９】
描画データ記憶領域２６は、中間コード記憶領域２２と異なり、第１描画データ記憶領域２６−１及び第２描画データ記憶領域２６−２にそれぞれ１ページ分の描画データ２８のみを記憶可能である。第１描画データ記憶領域２６−１は、主として第１プロセッサコア１２が生成した描画データ２８を記憶し、第２描画データ記憶領域２６−２は、主として第２プロセッサコア１４が生成した描画データ２８を記憶する。
【００４０】
プログラム記憶領域３０は、第１プロセッサコア用メインプログラム３１と、第２プロセッサコア用メインプログラム３２と、コード変換処理用プログラム３３と、描画処理用プログラム３４と、その他のプログラム３５と、を記憶する。第１プロセッサコア用メインプログラム３１は、第１プロセッサコア１２が後述する図２及び図３に示される各処理を実行するためのプログラムである。第２プロセッサコア用メインプログラム３２は、第２プロセッサコア１４が後述する図２及び図３に示される各処理を実行するためのプログラムである。
【００４１】
コード変換処理用プログラム３３は、第１プロセッサコア１２及び第２プロセッサコア１４がページデータから中間コードデータ２４を生成するコード変換処理（図４）を実行するためのプログラムである。描画処理用プログラム３４は、第１プロセッサコア１２及び第２プロセッサコア１４が中間コードデータ２４から描画データ２８を生成する描画処理（図５、図６）を実行するためのプログラムである。その他のプログラム３５は、上記の各プログラム３１〜３４以外のプログラムである。その他のプログラム３５は、例えば、外部装置７０と通信するためのプログラム、印刷部５０を制御するためのプログラム等を含む。
【００４２】
処理情報記憶領域３８は、後述する共有カウント値Ｘ、取得ページ順番Ｙ１，Ｙ２、処理対象ページ順番Ｚ１，Ｚ２、バンドカウント値Ｗ及びバンドエンドカウント値ＷＥなど、各種のカウント値を記憶する。
【００４３】
１−４．印刷部
印刷部５０は、ページメモリ５２と印刷機構５４とを備える。ページメモリ５２は、１ページ分の印刷データ２９を記憶するためのメモリである。印刷データ２９は、例えば２階調（ドットのＯＮ／ＯＦＦ）のような少階調のビットマップ形式のデータである。第１プロセッサコア１２及び第２プロセッサコア１４は、第１描画データ記憶領域２６−１及び第２描画データ記憶領域２６−２に記憶された１ページ分毎の描画データ２８を印刷データ２９に変換し、印刷処理順番に従ってページメモリ５２に書き込まれる。
【００４４】
印刷機構５４は、インクジェット方式又は電子写真方式（例えばレーザ方式、ＬＥＤ方式）の印刷機構である。本実施形態では、印刷機構５４は、デュアルコアプロセッサ１１（第１プロセッサコア１２と第２プロセッサコア１４との少なくとも一方）によって制御される。ただし、印刷部５０がデュアルコアプロセッサ１１以外の独自のプロセッサを備えており、そのプロセッサが印刷機構５４を制御してもよい。
【００４５】
印刷部５０は、１ページ分の描画データ２８毎に、当該１ページ分の描画データ２８から生成される印刷データ２９に従って印刷処理を実行することによって、当該１ページ分の描画データ２８が表す画像が形成された１ページ分の印刷媒体を生成する。
【００４６】
［ＰＤＬデータから印刷データを生成するまでの処理］
第１プロセッサコア１２と第２プロセッサコア１４（以下、両者を区別しないときは「プロセッサコア１３」ということがある）はいずれも、ＰＤＬデータ２０から中間コードデータ２４を生成するコード変換処理と、中間コードデータ２４から描画データ２８を生成する描画処理とを実行することができる。
【００４７】
１．コード変換処理
プロセッサコア１３は、ＰＤＬデータ２０に含まれる、１ページ分のページデータ毎に、当該ページデータに対するコード変換処理を実行することによって、１ページ分の中間コードデータ２４を生成する。コード変換処理は、ページデータから設定コマンドと描画コマンドを読み取って、これらのコマンドを実行することにより、中間コードデータ２４を生成する処理である。
【００４８】
また、１ページ分のページデータは、ページの先頭データからページエンドデータまで関連性（連続性）を有していることが多い。このため、１ページ分のページデータに対するコード変換処理について、複数の制御部（第１プロセッサコア１２と第２プロセッサコア１４）で分散（協働）して実行する構成よりも、１つの制御部（第１プロセッサコア１２と第２プロセッサコア１４のいずれか一方）が単独で実行する構成の方が好ましい。
【００４９】
「設定コマンド」には、例えばページサイズ情報、ページフォーマット情報、文字サイズ情報、文字装飾情報、使用フォント設定コマンド、フォントダウンロードデータ、ベクトル形状指示コマンド、イメージデータ、カラー設定情報、パターン設定情報の少なくともいずれか１つが含まれる。「描画コマンド」には、例えば、文字データの描画コマンド、ベクトル形状データの描画コマンド、イメージデータの描画コマンドの少なくも１つが含まれる。
【００５０】
また、各ページデータには、当該ページデータに対してコード変換処理を行うための設定コマンドが全て含まれているとは限らない。例えばページ順番が前の順番のページデータと同じ設定コマンドを使用する場合（例えば同じ文字サイズやイメージを使用する場合）には、データ量削減等のために、当該設定コマンドは前の順番のページデータのみに含める場合がある。この場合、各ページデータは、前の順番のページデータに含まれる設定コマンドを利用しなければコード変換処理を実行することができない。
【００５１】
２．描画処理
プロセッサコア１３は、１ページ分の中間コードデータ２４毎に、当該中間コードデータ２４に対する描画処理を実行することによって、１ページ分の描画データ２８を生成する。描画処理は、前述したように、中間コードデータ２４を、多階調のビットマップ形式のデータ（描画データ２８）を生成する処理である。
【００５２】
また、１ページ分の中間コードデータ２４は、上記ページデータに比べて、ページの先頭データからページエンドデータまでの関連性が低い。このため、１ページ分の中間コードデータ２４に対する描画処理について、複数の制御部（第１プロセッサコア１２と第２プロセッサコア１４）で分散して実行することが比較的に容易に可能である。例えば後述の図５に示す描画・援助処理のように、１ページ分の中間コードデータ２４を、所定量のデータ（いわゆるバンド）単位で分割し、その分割した複数のデータを、互いに異なる制御部に分散して描画処理させることができる。
【００５３】
［第１プロセッサコアと第２プロセッサコアとが実行する処理の一例］
１．概要
第１プロセッサコア１２と第２プロセッサコア１４とは、基本的には、ＰＤＬデータ２０に含まれる、互いに異なるページデータに対してコード変換処理及び描画処理を実行する。
【００５４】
また、第１プロセッサコア１２及び第２プロセッサコア１４の一方のプロセッサコア１３は、処理順番がＮ（Ｎ＞１の自然数）番目のページデータに対するコード変換処理を実行する場合、他方のプロセッサコア１３がコード変換処理の対象（以下、単に「処理対象」ということがある）とし、且つ、処理順番がＮ番目より前のＫ（Ｋ＜Ｎの自然数）番目のページデータに対して設定コマンド取得処理を実行する。そして、一方のプロセッサコア１３は、設定コマンド取得処理により取得した設定コマンドに基づいてＮ番目のページデータに対するコード変換処理を実行する。
【００５５】
「設定コマンド取得処理」は、一方のプロセッサコア１３が、Ｎ番目のページデータに対するコード変換処理を実行する場合、他方のプロセッサコア１３の処理対象であるＮ番目よりも前のＫ番目のページデータの設定コマンドを取得するための処理である。
【００５６】
「処理順番」とは、ＰＤＬデータ２０に含まれる複数のページデータについてデュアルコアプロセッサ１１でコード変換処理を行う順番をいう。この処理順番は、例えば片面印刷の場合にはページデータのページ順番に一致し得るが、例えば両面印刷の場合には当該ページ順番に一致しないことがある。例えば２ページ目、４ページ目、１ページ目、３ページ目．．．の順番で印刷媒体の両面に印刷する、いわゆる２４１３印刷の場合には、処理順番は、２ページ目、４ページ目、１ページ目、３ページ目．．．となることがある。
【００５７】
２．具体的処理内容
図２はＰＤＬ処理を示すフローチャートであり、図３は設定コマンド取得処理を示すフローチャートであり、図４はコード変換処理を示すフローチャートであり、図５は描画・援助処理を示すフローチャートであり、図６は援助処理を示すフローチャートである。図７はプロセッサコア１３各々のページデータに対する処理のタイムチャートであり、図８はプロセッサコア１３各々がカウントするカウント値の推移を示す図である。
【００５８】
印刷ジョブを受け付けて、その印刷ジョブに含まれるＰＤＬデータ２０がバッファ領域１８に記憶されると、第１プロセッサコア１２及び第２プロセッサコア１４の一方が、共有カウント値Ｘをゼロに初期化する。「共有カウント値Ｘ」は、第１プロセッサコア１２及び第２プロセッサコア１４に、各々がコード変換処理を実行すべきページデータの処理順番を指示するためのカウント値である。
【００５９】
また、第１プロセッサコア１２及び第２プロセッサコア１４は、プログラム記憶領域３０からコード変換処理用プログラム３３及び描画用プログラム３４を読み出して、図１に示すＰＤＬデータ変換処理を実行する。以下、第１プロセッサコア１２がＰＤＬデータ変換処理を実行する場合を例に挙げて説明するが、第２プロセッサコア１４も同様にＰＤＬ処理を実行する。また、コード変換処理の処理順番は、ＰＤＬデータ２０のページ順番に一致するものとする。
【００６０】
第１プロセッサコア１２は、まず第１取得ページ順番Ｙ１及び第１処理対象ページ順番Ｚ１をゼロに初期化する（Ｓ１）。「第１取得ページ順番Ｙ１」（「第２カウント部がカウントした処理順番」の一例）は、第１プロセッサコア１２が設定コマンドを取得したページデータのページ順番（ページ数）である。なお、「第２取得ページ順番Ｙ２」は、第２プロセッサコア１４が設定コマンドを取得したページデータのページ順番である。
【００６１】
「第１処理対象ページ順番Ｚ１」（「第１カウント部がカウントした処理順番」の一例）は、第１プロセッサコア１２が、上記共有カウント値Ｘにより指示された処理対象のページデータのページ順番である。なお、「第２処理対象ページ順番Ｚ２」は、第２プロセッサコア１４が、上記共有カウント値Ｘにより指示された処理対象のページデータのページ順番である。
【００６２】
次に第１プロセッサコア１２は、第１処理対象ページ順番Ｚ１を更新する（Ｓ３）。具体的には、共有カウント値Ｘを読み取り、第１処理対象ページ順番Ｚ１を、当該共有カウント値Ｘの値に一致させ、その後に、共有カウント値Ｘに「１」を加える。このとき第１プロセッサコア１２は「第１カウント部」として機能する。
【００６３】
続いて第１プロセッサコア１２は、処理対象のページデータ（Ｎ番目のページデータ）に対するコード変換処理と、当該処理対象のページデータより処理順番が前のページデータ（Ｋ番目のページデータ）に対する設定コマンド取得処理のいずれを実行すべきかを判断する（Ｓ５）。
【００６４】
具体的には、Ｓ３で更新後の第１処理対象ページ順番Ｚ１が、第１取得ページ順番Ｙ１と一致する場合には（Ｓ５：ＮＯ）、Ｓ１３に進み、コード変換処理をすべきであると判断する。更新後の第１処理対象ページ順番Ｚ１が、第１取得ページ順番Ｙ１よりも大きい場合には（Ｓ５：ＹＥＳ）、Ｓ７に進み、設定コマンド取得処理をすべきであると判断する。これにより、カウント値を利用するという比較的に簡単な方法により、コード変換処理を、第１プロセッサコア１２及び第２プロセッサコア１４を利用して効率良く実行することができる。
【００６５】
２−１．設定コマンド取得処理
設定コマンド取得処理をすべきであると判断した場合（Ｓ５：ＹＥＳ）、第１プロセッサコア１２は、バッファ領域１８に記憶されている第１取得ページ順番Ｙ１のページデータに対し、図３に示す設定コマンド取得処理を実行する（Ｓ７）。このとき、第１取得ページ順番Ｙ１のページデータは、第２プロセッサコア１４の処理対象になっている。
【００６６】
設定コマンド取得処理では、第１プロセッサコア１２は、第１取得ページ順番Ｙ１のページデータに含まれるコマンドを読み取る（Ｓ１０１）。そして、そのコマンドがページデータの終わり（改ページ）を示すものでなければ（Ｓ１０３：ＮＯ）、第１プロセッサコア１２は、現在読取対象のコマンドが設定コマンドであれば（Ｓ１０５：ＹＥＳ）、当該設定コマンドを実行し（Ｓ１０７）、Ｓ１０１に戻る。
【００６７】
一方、第１プロセッサコア１２は、現在読取対象のコマンドが設定コマンドではなく（Ｓ１０５：ＮＯ）描画コマンドであれば（Ｓ１０９：ＹＥＳ）、当該描画コマンドを実行せずに破棄、換言すれば読み捨てて（Ｓ１１１）、Ｓ１０１に戻る。更に、現在読取対象のコマンドが設定コマンドでも描画コマンドでも無ければ（Ｓ１０５：ＮＯ、Ｓ１０９：ＮＯ）、例えばコメントコマンドなどの画像処理に影響しないコマンドであるその他のコマンドに従った処理を実行し（Ｓ１１３）、Ｓ１０１に戻る。
【００６８】
そして、第１プロセッサコア１２は、上記Ｓ１０１からＳ１１３までの処理を繰り返し実行し、現在読取対象のコマンドがページデータの終わりを示すものであれば（Ｓ１０３：ＹＥＳ）、本設定コマンド取得処理を終了し、図２のＳ９に進む。
【００６９】
第１プロセッサコア１２は、第１取得ページ順番Ｙ１に「１」を加算する（Ｓ９）。このとき、第１プロセッサコア１２は「第２カウント部」として機能する。次に、第１プロセッサコア１２は、印刷ジョブの終わりであるかどうかを判断する（Ｓ１１）。具体的には、共有カウント値Ｘの値が、ＰＤＬデータ（印刷ジョブ）の全ページ数と同じであれば印刷ジョブの終わりであると判断し（Ｓ１１：ＹＥＳ）、本ＰＤＬ処理を終了する。一方、共有カウント値Ｘの値が、ＰＤＬデータの全ページ数と相違すれば印刷ジョブの終わりでないと判断し（Ｓ１１：ＮＯ）、Ｓ５に戻る。
【００７０】
２−２．コード変換処理
コード変換処理をすべきであると判断した場合、具体的には、第１処理対象ページ順番Ｚ１が、Ｓ９で加算後の第１取得ページ順番Ｙ１と一致する場合（Ｓ５：ＮＯ）、第１プロセッサコア１２は、バッファ領域１８に記憶されている第１処理対象ページ順番Ｚ１のページデータに対し、図４に示すコード変換処理を実行する（Ｓ１３）。
【００７１】
コード変換処理では、第１プロセッサコア１２は、第１処理対象ページ順番Ｚ１のページデータに含まれるコマンドを読み取る（Ｓ２０１）。そして、そのコマンドがページデータの終わりを示すものでなければ（Ｓ２０３：ＮＯ）、第１プロセッサコア１２は、現在読取対象のコマンドが設定コマンドであれば（Ｓ２０５：ＹＥＳ）、当該設定コマンドを実行し（Ｓ２０７）、Ｓ２０１に戻る。
【００７２】
一方、第１プロセッサコア１２は、現在読取対象のコマンドが設定コマンドではなく（Ｓ２０５：ＮＯ）描画コマンドであれば（Ｓ２０９：ＹＥＳ）、上記設定コマンド取得処理や本コード変換処理にて取得した設定コマンドの実行結果に従って、中間コードデータ２４を作成し、第１中間コード記憶領域２２−１に記憶し（Ｓ２１１）、Ｓ２０１に戻る。更に、現在読取対象のコマンドが設定コマンドでも描画コマンドでも無ければ（Ｓ２０５：ＮＯ、Ｓ２０９：ＮＯ）、その他のコマンドに従った処理を実行し（Ｓ２１３）、Ｓ２０１に戻る。
【００７３】
そして、第１プロセッサコア１２は、上記Ｓ２０１からＳ２１３までの処理を繰り返し実行し、現在読取対象のコマンドがページデータの終わりを示すものであれば（Ｓ２０３：ＹＥＳ）、本コード変換処理を終了し、図２のＳ１５に進む。
【００７４】
図７、図８に示した例によれば、第１プロセッサコア１２と第２プロセッサコア１４とは、共有カウント値に応じて処理対象ページ順番を決定することにより、１つの印刷ジョブに含まれるＰＤＬデータについて、互いに異なるページデータに対して、コード変換処理を実行する。従って、第１プロセッサコア１２及び第２プロセッサコア１４のいずれかが過負荷状態になるまで単独でコード変換処理を行う技術に比べて、第１プロセッサコア１２及び第２プロセッサコア１４それぞれが過負荷状態になることを抑制しつつ、コード変換処理を実行することができる。しかも、第１プロセッサコア１２と第２プロセッサコア１４とは、コード変換処理を並列的（同時期）に実行するため、ＰＤＬデータ全体に対するコード変換処理を迅速に終了させることができる。
【００７５】
また、第１プロセッサコア１２は、処理対象であるページ順番「２，４，６，８」のページデータに対するコード変換処理を実行する場合、それらより前のページ順番「１，３，５，７」のページデータに対して設定コマンド取得処理を実行する。そして、その設定コマンド取得処理で取得した設定コマンドを実行しつつ、ページ順番「２，４，６，８」のページデータに対するコード変換処理を実行する。このため、ページ順番「２，４，６，８」のページデータが、それよりも処理順番が前の順番のページデータであって、第２プロセッサコア１４の処理対象であるページデータに含まれる設定コマンドを利用することによりコード変換処理が可能である場合でも、第１プロセッサコア１２及び第２プロセッサコア１４を利用してコード変換処理を実行することができる。
【００７６】
更に、例えば第１プロセッサコア１２が処理対象とするページ順番「８」のページデータが、それより前のページ順番「７」のページデータに含まれる設定コマンドを利用することによりコード変換処理が可能になる場合には、次のことがいえる。即ち、第２プロセッサコア１４が当該ページ順番「７」のページデータに対するコード変換処理を終了するのを待たずに、第１プロセッサコア１２は、「７」のページデータに対する設定コマンド取得処理を実行することにより、ページ順番「８」のページデータのコード変換処理を迅速に開始することが可能になる。
【００７７】
また、設定コマンド取得処理において、第１プロセッサコア１２自身が、第２プロセッサコア１４の処理対象であるページデータに含まれる設定コマンドを読み取ることで取得する。このため、例えば当該設定コマンドの読み取りを第２プロセッサコア１４が行い、その読み取り結果を、第１プロセッサコア１２が受けることで取得する場合に比べて、第１プロセッサコア１２は、第２プロセッサコア１４による設定コマンドの読み取りを待つことなく、コード変換処理を迅速に行うことができる。しかも、第１プロセッサコア１２は、自己に不要な描画コマンドの実行を省略して処理負担を軽減することができる。
【００７８】
２−３．描画・援助処理
コード変換処理を終了すると（Ｓ１３）、第１プロセッサコア１２は、第１中間コード記憶領域２２−１に記憶されている第１処理対象ページ順番Ｚ１の中間コードデータ２４に対し、図５に示す描画・援助処理を実行する（Ｓ１５）。
【００７９】
描画・援助処理では、第１プロセッサコア１２は、バンドカウント値Ｗをゼロに初期化し、バンドエンドカウント値ＷＥを、処理対象のページデータの全バンド数に設定する（Ｓ３０１）。第１プロセッサコア１２は、例えばコード変換処理を通じて全バンド数を把握することができる。そして、バンドカウント値Ｗがバンドエンドカウント値ＷＥに達していなければ（Ｓ３０３：ＮＯ）、第１プロセッサコア１２は、現在のバンドカウント値に対応するバンドの中間コードデータ２４を第１中間コード記憶領域２２−１から読み出して、描画データ２８を生成し（Ｓ３０５）、第１描画データ記憶領域２６−１に記憶する。
【００８０】
次に、第１プロセッサコア１２は、バンドカウント値Ｗに「１」を加算し（Ｓ３０７）、第２プロセッサコア１４から援助の伝達の有無を判断する（Ｓ３１１）。この援助の伝達の有無は、処理情報記憶領域３８に記憶されている。ここでいう「援助」とは、第１プロセッサコア１２及び第２プロセッサコア１４の一方のプロセッサコア１３が処理対象とするページ順番の中間コードデータ２４に対する描画処理の一部を、他方のプロセッサコア１３に実行することをいう。プロセッサコア１３は、援助が可能となった場合には、援助フラグを処理情報記憶領域３８に記憶する。
【００８１】
第１プロセッサコア１２は、処理情報記憶領域３８を参照して、第２プロセッサコア１４からの援助の伝達が無いと判断すれば（Ｓ３１１：ＮＯ）、Ｓ３０３に戻る。一方、第２プロセッサコア１４からの援助の伝達が有ると判断すれば（Ｓ３１１：ＹＥＳ）、第１プロセッサコア１２は、現在処理対象ページ順番（以下、「援助対象ページ順番」という）の中間コードデータ２４のうち未処理のバンド群を２分割（２等分割がより好ましい）し、分割後の一方のバンド群（以下、「援助バンド群」という）の関連情報を、第２プロセッサコア１４に伝達する（Ｓ３１３）。
【００８２】
具体的には、第１プロセッサコア１２は、当該関連情報を、第２中間コード記憶領域２２−２に転送する。なお、「関連情報」には、援助バンド群の開始バンドカウント値、援助バンド群の全バンド数、及び、援助バンド群の中間コードデータ２４が含まれる。
【００８３】
次に、第１プロセッサコア１２は、バンドエンドカウント値ＷＥを新たに設定する（Ｓ３１５）。具体的には、第１プロセッサコア１２は、Ｓ３０１で設定したバンドエンドカウント値ＷＥから、援助バンド群の全バンド数を差し引いたバンド数を、新たにバンドエンドカウント値ＷＥとする。
【００８４】
次に、そのバンドエンドカウント値ＷＥに、バンドカウント値Ｗが達しているかどうかを判断する（Ｓ３１７）。即ち、分割後の他方のバンド群（以下、「非援助バンド群」という）に対する描画処理が終了したかどうかを判断する（Ｓ３１７）。非援助バンド群に対する描画処理が終了していなければ（Ｓ３１７：ＮＯ）、第１プロセッサコア１２は、現在のバンドカウント値に対応するバンドの中間コードデータ２４を第１中間コード記憶領域２２−１から読み出して、描画データ２８を生成し（Ｓ３１９）、第１描画データ記憶領域２６−１に記憶する。次いで、第１プロセッサコア１２は、バンドカウント値Ｗに「１」を加算し（Ｓ３２１）、Ｓ３１７に戻る。
【００８５】
一方、非援助バンド群に対する描画処理が終了すれば（Ｓ３１７：ＹＥＳ）、第２プロセッサコア１４から援助終了の伝達の有無を判断する（Ｓ３２３）。第２プロセッサコア１４は、援助バンド群に対する描画処理が終了した場合に、援助終了フラグを処理情報記憶領域３８に記憶する。即ち、第１プロセッサコア１２は、非援助バンド群に対する描画処理が終了しても、第２プロセッサコア１４が援助バンド群に対する描画処理を終了するまで待機する（Ｓ３２３：ＮＯ）。
【００８６】
第１プロセッサコア１２は、処理情報記憶領域３８を参照して、第２プロセッサコア１４からの援助終了の伝達が有ると判断すれば（Ｓ３２３：ＹＥＳ）、本描画・援助処理を終了し、図２のＳ１７に進む。第１プロセッサコア１２は、描画処理で生成した描画データ２８を印刷データ２９として印刷部５０に送信する（Ｓ１７）。なお、第１プロセッサコア１２は、上記援助を受けていれば、自己が描画処理して生成した描画データ２８、及び、第２プロセッサコア１４が援助バンドを描画処理して生成した描画データ２８を印刷データ２９として印刷部５０に送信する。
【００８７】
そして、第１プロセッサコア１２は、第１取得ページ順番Ｙ１に「１」を加算する（Ｓ１９）。このとき、第１プロセッサコア１２は「第２カウント部」として機能する。次に、第１プロセッサコア１２は、印刷ジョブの終わりであると判断し（Ｓ２１：ＹＥＳ）、本ＰＤＬ処理を終了する。一方、印刷ジョブの終わりでないと判断し（Ｓ２１：ＮＯ）、Ｓ３に戻る。
【００８８】
２−４．援助処理
図５のＳ３０３において、バンドカウント値Ｗがバンドエンドカウント値ＷＥに達した場合（Ｓ３０３：ＹＥＳ）、即ち、第１プロセッサコア１２が、援助を受けずに、自己の処理対象ページ順番に対する描画処理を終了した場合には、第１プロセッサコア１２は、図６に示す援助処理を実行する（Ｓ３２３）。
【００８９】
援助処理では、第１プロセッサコア１２は、まず、自己の処理対象のページデータの処理順番が、第２プロセッサコア１４の処理対象のページデータの処理順番より前かを判断する。具体的には、第１プロセッサコア１２は、自己の処理対象ページ順番Ｚ１が、第２プロセッサコア１４の処理対象ページ順番Ｚ２よりも小さいかどうかで判断する（Ｓ４０１）。
【００９０】
第１プロセッサコア１２の処理対象ページ順番Ｚ１の方が第２プロセッサコア１４の処理対象ページ順番Ｚ２よりも小さくなければ（Ｓ４０１：ＮＯ）、第１プロセッサコア１２は、第２プロセッサコア１４の描画処理を援助する必要がないので、本援助処理を終了し、図２のＳ１７に進む。
【００９１】
一方、第１プロセッサコア１２の処理対象ページ順番Ｚ１の方が第２プロセッサコア１４の処理対象ページ順番Ｚ２よりも小さければ（Ｓ４０１：ＹＥＳ）、第１プロセッサコア１２は、第２プロセッサコア１４に支援の伝達をする（Ｓ４０３）。そして、第２プロセッサコア１４からの援助バンド群の関連情報を読み取り（Ｓ４０５）、援助バンド群の全バンド数がゼロであれば（Ｓ４０７：ＹＥＳ）、結局、支援不要であるとしてＳ４１７に進む。
【００９２】
援助バンド群の全バンド数がゼロでなければ（Ｓ４０７：ＮＯ）、第１プロセッサコア１２は、第２プロセッサコア１４の描画処理を支援する。具体的には、第１プロセッサコア１２は、バンドカウント値Ｗを、援助バンド群の開始バンドカウント値に設定し、バンドエンドカウント値ＷＥを、開始バンドカウント値に援助バンド群の全バンド数を加算した値に設定する（Ｓ４０９）。
【００９３】
次に、第１プロセッサコア１２は、バンドカウント値Ｗがバンドエンドカウント値ＷＥに達した、即ち、援助バンド群に対する描画処理が終了したかどうかを判断する（Ｓ４１１）。援助バンド群に対する描画処理が終了していなければ（Ｓ４１１：ＮＯ）、第１プロセッサコア１２は、現在のバンドカウント値に対応するバンドの中間コードデータ２４を第１中間コード記憶領域２２−１から読み出して、描画データ２８を生成し（Ｓ４１３）、第１描画データ記憶領域２６−１に記憶する。次いで、第１プロセッサコア１２は、バンドカウント値Ｗに「１」を加算し（Ｓ４１５）、Ｓ４１１に戻る。
【００９４】
援助バンド群に対する描画処理が終了すれば（Ｓ４１１：ＹＥＳ）、第１プロセッサコア１２は、第２プロセッサコア１４に援助終了を伝達する（Ｓ４１７）。そして、第１プロセッサコア１２は、処理対象ページ順番Ｚ１が第２プロセッサコア１４の処理対象ページ順番Ｚ２よりも小さいかどうかを判断する（Ｓ４１９）。第１プロセッサコア１２の処理対象ページ順番Ｚ１が第２プロセッサコア１４の処理対象ページ順番Ｚ２よりも小さくなければ（Ｓ４１９：ＮＯ）、第１プロセッサコア１２は、本援助処理、描画・援助処理を終了し、図２のＳ１７に進む。
【００９５】
第１プロセッサコア１２の処理対象ページ順番Ｚ１が第２プロセッサコア１４の処理対象ページ順番Ｚ２よりも小さければ（Ｓ４１９：ＹＥＳ）、第２プロセッサコア１４がまだ非援助バンド群の描画処理を終了していない。このため、第１プロセッサコア１２は、自己の処理対象ページ順番Ｚ１の描画データ２８を第１描画データ記憶領域２６−１に保持したまま待機する。このとき第１プロセッサコア１２は「保持部」として機能する。これにより、描画データ２８を、ページデータと同じページ順番で印刷部５０に与えて印刷処理をさせることができる。
【００９６】
図７、図８に示した例によれば、第１プロセッサコア１２が、ページ順番「２」に対する描画処理を終了する前に、第２プロセッサコア１４が、ページ順番「３」に対する描画処理を終了している。この原因の一例としては、ページ順番「３」の中間コードデータ２４のデータ量が、ページ順番「２」に比べて少ない場合などが挙げられる。
【００９７】
そこで、第２プロセッサコア１４は、ページ順番「２」に対する描画処理の一部を援助している。これにより、ページ順番「２」に対する描画処理が終了する前に、ページ順番「３」に対する描画処理が終了した場合でも、ページデータのページ順番（処理順番）が入れ替わることを抑制することができる。
【００９８】
さらに、図７、図８に示した例によれば、第２プロセッサコア１４がページ順番「３」に対する印刷データ２９を印刷部５０へ送信する際に、ページ順番「３」よりも後に描画処理の終了したページ順番「２」に対する印刷データ２９が第１プロセッサコア１２によって送信されるまで、ページ順番「２」の送信を待機している。従って、印刷データ２９を、ページデータの処理順番と同じ順番で印刷（出力）することができる。
【００９９】
また、１ページ分のページデータに対し、第１プロセッサコア１２及び第２プロセッサコア１４のいずれが単独でコード変換処理及び描画処理を実行する。より具体的には、第１プロセッサコア１２は、処理対象であるページ順番「２，４，６，８」のページデータに対し、コード変換処理だけでなく、描画処理も実行する。従って、１ページ分のページデータに対し、コード変換処理と描画処理とを、別々の制御部に分担させる構成に比べて、処理が簡易になる。また、例えば各制御部ごとに専用のメモリを備える場合には、メモリ間でのデータの受け渡しによる処理負担を軽減することができる。
【０１００】
＜他の実施形態＞
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような種々の態様も本発明の技術的範囲に含まれる。
【０１０１】
（１）上記の実施例では、ＰＤＬデータ２０に含まれる複数のページデータのそれぞれに対するコード変換処理及び描画処理は、昇順で実行される（ページ番号の小さい方から順に実行される）。しかしながら、コード変換処理及び描画処理は、降順で実行されてもよい（ページ番号の大きい方から順に実行されてもよい）。
【０１０２】
（２）上記実施形態では、設定コマンド取得処理において、一方のプロセッサコア１３が、Ｎ番目のページデータに対するコード変換処理を実行する場合、当該一方のプロセッサコア１３自らが、Ｋ番目のページデータから設定コマンドを読み取ることで当該設定コマンドを取得した。しかし、他方のプロセッサコア１３がＫ番目のページデータから読み取った設定コマンドを、一方のプロセッサコア１３が取得することで当該設定コマンドを取得してもよい。
【０１０３】
例えば他方のプロセッサコア１３が、Ｋ番目のページデータに対するコード変換処理を実行する際に当該Ｋ番目のページデータから読み取った設定コマンドを、所定の記憶領域（例えばその他の記憶領域４０）に記憶し、一方のプロセッサコア１３が、所定の記憶領域に記憶された設定コマンドを読み取る。
【０１０４】
（３）また、２つのプロセッサコア１３の一方は、設定コマンド取得処理をせずに、前の順番のページ順番に対するコード変換処理が終了するまで待って、そのコード変換処理により取得して設定コマンドを利用して、自己の処理対象のページデータに対するコード変換処理を実行してもよい。但し、上記実施形態の構成であれば、コード変換処理を効率良く実行することができる。
【０１０５】
（４）上記実施形態に対し、２つのプロセッサコア１３の一方が、ページ順番が最後のページデータに対するコード変換処理を開始したことに基づき、他方のプロセッサコア１３は設定コマンド取得処理を停止するようにしてもよい。図７，８の例において、第２プロセッサコア１４は、共有カウント値Ｘから処理対象ページ順番を取得する際に、第１プロセッサコア１２の処理対象が最終ページ（８ページ）であることを把握することができる。
【０１０６】
そこで、第２プロセッサコア１４は、８ページに対する設定コマンド取得処理を実行しない。これにより、不要な設定コマンドを取得することを抑制することができる。なお、最終ページ情報は、例えばＰＤＬデータのヘッダ情報から取得することが可能である。
【０１０７】
（５）図９は変形例における、プロセッサコア１３各々がカウントするカウント値の推移を示す図である。この変形例では、前述した援助処理を実行しない。このため、第１プロセッサコア１２がページ順番「２」に対する描画処理を終了する前に、第２プロセッサコア１４がページ順番「３」に対する描画処理を終了すると、第２プロセッサコア１４は、次にページ順番「４」に対するコード変換処理を開始する。
【０１０８】
一方、第１プロセッサコア１２は、ページ順番「２」に対する描画処理を終了すると、処理対象はページ順番「５」になるが、そのコード変換処理を行うために、ページ順番「３」及び「４」に対する設定コマンド取得処理を連続して行う。これにより、第１プロセッサコア１２は、ページ順番「５」に対するコード変換処理を早期に開始することができる。
【０１０９】
（６）上記の実施例では、第１プロセッサコア１２と第２プロセッサコア１４とを備えるデュアルコアプロセッサ１１を利用しているが、第１プロセッサコア１２と第２プロセッサコア１４とが独立して設けられている構成（２つのチップを備える構成）を採用してもよい。また、３つ以上のプロセッサコアを備える構成を採用してもよい。例えば、４つのプロセッサコアが利用される場合には、２つのプロセッサコアが中間コードデータ２４を生成し、他の２つの処理部が並行して同じページの描画データ２８を生成してもよい。
【０１１０】
更に、プロセッサコア１３のような汎用品に限らず、例えばＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）で構成された制御回路などを利用してもよい。
【０１１１】
（７）上記の実施例では、ＰＤＬデータ２０から描画データ２８を生成する主体がプリンタ１０である。しかしながら、プリンタ１０以外のデバイスにも、上記の実施例の技術を適用することができる。例えば、コピー機、ファクシミリ、多機能機、ＰＣ、サーバ等に適用することができる。具体的には、外部装置７０に上記の実施例の技術を適用してもよい。即ち、外部装置７０が、少なくとも第１プロセッサコア１２と第２プロセッサコア１４を備え、それらに図２から図６に示したＰＤＬ処理を実行させ、これにより生成した描画データ２８を、プリンタ１０に送信するのである。
【０１１２】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものである。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１１３】
１０...プリンタ
１２...第１プロセッサコア
１４...第２プロセッサコア
２０...ＰＤＬデータ
２４...中間コードデータ
２８...描画データ
５０...印刷部
【図１】
0005488912.tif 000002
【図２】
0005488912.tif 000003
【図３】
0005488912.tif 000004
【図４】
0005488912.tif 000005
【図５】
0005488912.tif 000006
【図６】
0005488912.tif 000007
【図７】
0005488912.tif 000008
【図８】
0005488912.tif 000009
【図９】
0005488912.tif 000010