(57)【特許請求の範囲】
【請求項１】
印刷のための制御装置であって、
複数ページ分のＰＤＬデータのうちの１ページ目のＰＤＬデータから昇順に、それぞれが異なる１ページ分のＰＤＬデータを利用して１ページ分の中間コードデータを生成するための中間コード生成処理を、並列的に実行可能なＬ個（前記Ｌは２以上の整数）のプロセッサを備え、
前記Ｌ個のプロセッサのそれぞれは、
当該プロセッサによって実行される前記中間コード生成処理の処理対象であるＭページ目（前記Ｍは２以上の整数）のＰＤＬデータを利用して、前記Ｍページ目の前記中間コード生成処理を実行すべき際に、前記Ｍページ目の前記中間コード生成処理に含まれる以下の各処理、即ち、
前記Ｌ個のプロセッサのうちの少なくとも１個のプロセッサが、１ページ目のＰＤＬデータからＭ−１ページ目のＰＤＬデータまでのＭ−１ページ分のＰＤＬデータに含まれる各設定コマンドを実行した結果として、前記Ｍ−１ページ目までの設定データが生成済みであるのか否かを判断する判断処理と、
前記判断処理において、前記Ｍ−１ページ目までの前記設定データが生成済みでないと判断する第１の場合に、設定コマンドが未だに実行されていない最小ページであるＮページ目（前記Ｎは１以上前記Ｍ−１以下の整数）のＰＤＬデータに含まれる描画コマンドを実行せずに、前記Ｎページ目の前記ＰＤＬデータに含まれる設定コマンドを実行して、前記Ｎページ目までの前記設定データを生成する第１の生成処理と、
前記判断処理において、前記Ｍ−１ページ目までの前記設定データが生成済みであると判断する第２の場合に、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行せずに、前記Ｍ−１ページ目までの前記設定データを用いて、前記Ｍページ目の前記ＰＤＬデータに含まれる設定コマンド及び描画コマンドを実行して、前記Ｍページ目までの設定データと、前記Ｍページ目の中間コードデータと、を生成する第２の生成処理と、
を実行する制御装置。
【請求項２】
前記Ｌ個のプロセッサのうちの第１のプロセッサは、前記第２の場合に、前記Ｌ個のプロセッサのうちの第２のプロセッサであって、前記第１のプロセッサとは異なる前記第２のプロセッサが、前記Ｍ−１ページ目のＰＤＬデータを利用した前記第２の生成処理を実行して生成した前記Ｍ−１ページ目までの前記設定データを用いて、前記Ｍページ目の前記ＰＤＬデータを利用した前記第２の生成処理を実行する、請求項１に記載の制御装置。
【請求項３】
前記Ｎは、２以上前記Ｍ−１以下の整数であり、
前記Ｌ個のプロセッサのうちの第１のプロセッサは、前記第１の場合に、前記Ｌ個のプロセッサのうちの第２のプロセッサであって、前記第１のプロセッサとは異なる前記第２のプロセッサが、Ｎ−１ページ目のＰＤＬデータを利用した前記第１の生成処理を実行して生成した前記Ｎ−１ページ目までの設定データを用いて、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行する、請求項１又は２に記載の制御装置。
【請求項４】
前記Ｎは、２以上前記Ｍ−１以下の整数であり、
前記Ｌ個のプロセッサのうちの第１のプロセッサは、前記第１の場合に、前記Ｌ個のプロセッサのうちの第２のプロセッサであって、前記第１のプロセッサとは異なる前記第２のプロセッサが、Ｎ−１ページ目のＰＤＬデータを利用した前記第２の生成処理を実行して生成した前記Ｎ−１ページ目までの設定データを用いて、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行する、請求項１又は２に記載の制御装置。
【請求項５】
前記Ｌ個のプロセッサのうちの第１のプロセッサは、前記第１の場合に、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行した後に、当該第１の生成処理で生成された前記Ｎページ目までの前記設定データを用いて得られる前記Ｍ−１ページ目までの前記設定データを用いて、前記Ｍページ目の前記ＰＤＬデータを利用した前記第２の生成処理を実行する、請求項１から４のいずれか一項に記載の制御装置。
【請求項６】
前記Ｌ個のプロセッサのうちの第１のプロセッサは、前記第１の場合において、
前記Ｌ個のプロセッサのうち、前記第１のプロセッサ以外のＬ−１個のプロセッサのいずれも、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行していない場合に、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行し、
前記Ｌ−１個のプロセッサのうちの第２のプロセッサが、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行中であり、前記Ｎページ目までの前記設定データが生成済みでない場合に、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行せずに、前記第２のプロセッサによって生成された前記Ｎページ目までの前記設定データを用いて得られる前記Ｍ−１ページ目までの前記設定データを用いて、前記Ｍページ目の前記ＰＤＬデータを利用した前記第２の生成処理を実行する、請求項１から５のいずれか一項に記載の制御装置。
【請求項７】
前記制御装置は、さらに、前記Ｌ個のプロセッサによって共用されるメモリを備え、
前記Ｌ個のプロセッサのそれぞれは、
前記第１の場合において、前記第１の生成処理を実行して前記Ｎページ目までの前記設定データを生成した際に、前記Ｎページ目までの前記設定データが前記メモリに記憶されていない場合に、前記Ｎページ目までの前記設定データを前記メモリに記憶させ、
前記第２の場合において、前記第２の生成処理を実行して前記Ｍページ目までの前記設定データを生成した際に、前記Ｍページ目までの前記設定データが前記メモリに記憶されていない場合に、前記Ｍページ目までの前記設定データを前記メモリに記憶させ、
前記Ｌ個のプロセッサのそれぞれは、前記判断処理において、
前記Ｍ−１ページ目までの前記設定データが前記メモリに記憶されている場合に、前記Ｍ−１ページ目までの前記設定データが生成済みであると判断し、
前記Ｍ−１ページ目までの前記設定データが前記メモリに記憶されていない場合に、前記Ｍ−１ページ目までの前記設定データが生成済みでないと判断する、請求項１から６のいずれか一項に記載の制御装置。
【請求項８】
前記Ｌは、３以上の整数であり、
前記Ｌ個のプロセッサのうちの第１のプロセッサは、前記第２の場合に、
前記Ｌ個のプロセッサのうちの第２のプロセッサであって、前記第１のプロセッサとは異なる前記第２のプロセッサが、Ｋページ目（前記Ｋは１以上前記Ｍ−１以下の整数）のＰＤＬデータを利用した前記第２の生成処理を実行して生成した前記Ｋページ目までの設定データと、
前記Ｌ個のプロセッサのうちの第３のプロセッサであって、前記第１及び第２のプロセッサとは異なる前記第３のプロセッサが、前記Ｋページ目のＰＤＬデータを利用した前記第１の生成処理を実行して生成した前記Ｋページ目までの前記設定データと、
のうち、先に生成された前記Ｋページ目までの前記設定データを用いて得られる前記Ｍ−１ページ目までの前記設定データを用いて、前記Ｍページ目の前記ＰＤＬデータを利用した前記第２の生成処理を実行する、請求項１から７のいずれか一項に記載の制御装置。
【請求項９】
前記描画コマンドは、前記中間コードデータに記述されるべきテキストを指示するコマンドを含み、
前記設定コマンドは、前記テキストの文字サイズを指示するコマンドを含む、請求項１から８のいずれか一項に記載の制御装置。
【請求項１０】
印刷のための制御装置のためのコンピュータプログラムであって、
前記制御装置は、Ｌ個（前記Ｌは２以上の整数）のプロセッサを備え、
前記コンピュータプログラムは、前記Ｌ個のプロセッサに、
複数ページ分のＰＤＬデータのうちの１ページ目のＰＤＬデータから昇順に、それぞれが異なる１ページ分のＰＤＬデータを利用して１ページ分の中間コードデータを生成するための中間コード生成処理を、並列的に実行させ、
前記コンピュータプログラムは、さらに、前記Ｌ個のプロセッサのそれぞれに、
当該プロセッサによって実行される前記中間コード生成処理の処理対象であるＭページ目（前記Ｍは２以上の整数）のＰＤＬデータを利用して、前記Ｍページ目の前記中間コード生成処理を実行すべき際に、前記Ｍページ目の前記中間コード生成処理に含まれる以下の各処理、即ち、
前記Ｌ個のプロセッサのうちの少なくとも１個のプロセッサが、１ページ目のＰＤＬデータからＭ−１ページ目のＰＤＬデータまでのＭ−１ページ分のＰＤＬデータに含まれる各設定コマンドを実行した結果として、前記Ｍ−１ページ目までの設定データが生成済みであるのか否かを判断する判断処理と、
前記判断処理において、前記Ｍ−１ページ目までの前記設定データが生成済みでないと判断する第１の場合に、設定コマンドが未だに実行されていない最小ページであるＮページ目（前記Ｎは１以上前記Ｍ−１以下の整数）のＰＤＬデータに含まれる描画コマンドを実行せずに、前記Ｎページ目の前記ＰＤＬデータに含まれる設定コマンドを実行して、前記Ｎページ目までの前記設定データを生成する第１の生成処理と、
前記判断処理において、前記Ｍ−１ページ目までの前記設定データが生成済みであると判断する第２の場合に、前記Ｎページ目の前記ＰＤＬデータを利用した前記第１の生成処理を実行せずに、前記Ｍ−１ページ目までの前記設定データを用いて、前記Ｍページ目の前記ＰＤＬデータに含まれる設定コマンド及び描画コマンドを実行して、前記Ｍページ目までの設定データと、前記Ｍページ目の中間コードデータと、を生成する第２の生成処理と、
を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書によって開示される技術は、印刷のための制御装置に関する。特に、複数個のプロセッサを備える制御装置に関する。
【背景技術】
【０００２】
特許文献１には、印刷装置が開示されている。印刷装置は、第１のＣＰＵと第２のＣＰＵとを備える。第１のＣＰＵ及び第２のＣＰＵのそれぞれは、印刷データを中間段階のデータに変換する処理と、中間段階のデータをビットマップデータに変換する処理と、の両方を実行可能である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２５１８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本明細書では、複数個のプロセッサが、適切な手法を利用して、中間コードデータを生成するための技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される技術は、印刷のための制御装置である。制御装置は、複数ページ分のＰＤＬデータのうちの１ページ目のＰＤＬデータから昇順に、それぞれが異なる１ページ分のＰＤＬデータを利用して１ページ分の中間コードデータを生成するための中間コード生成処理を、並列的に実行可能なＬ個（Ｌは２以上の整数）のプロセッサを備える。Ｌ個のプロセッサのそれぞれは、当該プロセッサによって実行される中間コード生成処理の処理対象であるＭページ目（前記Ｍは２以上の整数）のＰＤＬデータを利用して、Ｍページ目の中間コード生成処理を実行すべき際に、Ｍページ目の中間コード生成処理に含まれる以下の各処理、即ち、（Ａ）Ｌ個のプロセッサのうちの少なくとも１個のプロセッサが、１ページ目のＰＤＬデータからＭ−１ページ目のＰＤＬデータまでのＭ−１ページ分のＰＤＬデータに含まれる各設定コマンドを実行した結果として、Ｍ−１ページ目までの設定データが生成済みであるのか否かを判断する判断処理と、（Ｂ）判断処理において、Ｍ−１ページ目までの設定データが生成済みでないと判断する第１の場合に、設定コマンドが未だに実行されていない最小ページであるＮページ目（Ｎは１以上Ｍ−１以下の整数）のＰＤＬデータに含まれる描画コマンドを実行せずに、Ｎページ目のＰＤＬデータに含まれる設定コマンドを実行して、Ｎページ目までの設定データを生成する第１の生成処理と、（Ｃ）判断処理において、Ｍ−１ページ目までの設定データが生成済みであると判断する第２の場合に、Ｎページ目のＰＤＬデータを利用した第１の生成処理を実行せずに、Ｍ−１ページ目までの設定データを用いて、Ｍページ目のＰＤＬデータに含まれる設定コマンド及び描画コマンドを実行して、Ｍページ目までの設定データと、Ｍページ目の中間コードデータと、を生成する第２の生成処理と、を実行する。
【０００６】
上記の制御装置では、Ｍ−１ページ目までの設定データが生成済みでない場合に、Ｎページ目のＰＤＬデータに含まれる描画コマンドが実行されない。従って、制御装置は、Ｎページ目のＰＤＬデータに含まれる設定コマンドを迅速に実行して、Ｎページ目までの設定データを迅速に生成し得る。さらに、Ｍ−１ページ目までの設定データが生成済みである場合に、Ｎページ目のＰＤＬデータを利用した第１の生成処理が実行されない。従って、例えば、第１のプロセッサが、Ｎページ目のＰＤＬデータに含まれる設定コマンドを実行した後に、第１のプロセッサとは異なる第２のプロセッサが、Ｎページ目のＰＤＬデータに含まれる設定コマンドを再び実行することを抑制し得る。上記の技術によると、制御装置は、適切な手法を利用して、中間コードデータを生成し得る。
【０００７】
なお、上記の制御装置のための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も、新規で有用である。
【図面の簡単な説明】
【０００８】
【図１】通信システムの構成の一例を示す。
【図２】複数ページ分のＰＤＬデータの一例を示す。
【図３】ＰＤＬ処理のフローチャートを示す。
【図４】設定コマンド処理のフローチャートを示す。
【図５】両方コマンド処理のフローチャートを示す。
【図６】比較例の各処理と第１実施例の各処理との一例を示す。
【図７】比較例の各処理と第２実施例の各処理との一例を示す。
【図８】第２実施例の各処理の別の例を示す。
【発明を実施するための形態】
【０００９】
（第１実施例）
（システムの構成）
図１に示されるように、通信システム２は、ＰＣ（プリンタ１０の周辺装置）６と、プリンタ１０と、を備える。ＰＣ６及びプリンタ１０は、ＬＡＮ４を介して、相互に通信可能である。
【００１０】
（プリンタ１０の構成）
プリンタ１０は、操作部１２と、表示部１４と、印刷実行部１６と、ネットワークインターフェイス１８と、制御装置２０と、を備える。上記の各部１２〜２０は、バス線（符号省略）に接続されている。操作部１２は、複数のキーによって構成される。ユーザは、操作部１２を操作することによって、様々な指示をプリンタ１０に与えることができる。表示部１４は、様々な情報を表示するためのディスプレイである。印刷実行部１６は、インクジェット方式、レーザ方式等の印刷機構を備え、制御装置２０からの指示に従って印刷を実行する。ネットワークインターフェイス１８は、ＬＡＮ４に接続されている。
【００１１】
制御装置２０は、複数個のプロセッサＰＲ１，ＰＲ２と、メモリ３０と、を備える。本実施例では、制御装置２０は、２個のプロセッサＰＲ１，ＰＲ２を備える。後述の第２実施例では、制御装置２０は、３個のプロセッサＰＲ１，ＰＲ２，ＰＲ３を備える。プロセッサＰＲ１等の各プロセッサは、メモリ３０に格納されているプログラム４８に従って、様々な処理を実行する。各プロセッサは、並列的（同時的）に処理を実行可能である。
【００１２】
メモリ３０は、ＲＯＭ、ＲＡＭ、ハードディスク等によって構成される。メモリ３０は、ＰＲ１用メモリ領域４１と、ＰＲ２用メモリ領域４２と、記憶領域４６と、共用メモリ領域５０と、を備える。ＰＲ１用メモリ領域４１は、第１のプロセッサＰＲ１のみによって利用されるメモリ領域である。ＰＲ２用メモリ領域４２は、第２のプロセッサＰＲ２のみによって利用されるメモリ領域である。なお、ＰＲ３用メモリ領域４３は、後述の第２実施例の第３のプロセッサＰＲ３のみによって利用されるメモリ領域である。記憶領域４６は、プロセッサＰＲ１等の各プロセッサによって実行されるプログラム４８を格納している。
【００１３】
共用メモリ領域５０は、プロセッサＰＲ１等の各プロセッサによって共用されるメモリ領域である。共用メモリ領域５０は、共通処理ページカウンタ６０（以下では「ＣＰＣ（Common Process page Counter）６０」と呼ぶ）と、共通設定データカウンタ６２（以下では「ＣＳＣ（Common Setting data Counter）６２」と呼ぶ）と、設定コマンド処理フラグ６４（以下では「ＳＰＦ（Setting command Process Flag）６４」と呼ぶ）と、設定データ５２と、を格納している。
【００１４】
ＣＰＣ６０は、図３のＰＤＬ（Page Description Language；ページ記述言語）処理の処理対象のページを示すカウンタである。ＣＳＣ６２は、どのページまでの設定データ（詳しくは後述する）が生成済みであるのかを示すカウンタである。ＳＰＦ６４は、いずれかのプロセッサＰＲ１等が図４の設定コマンド処理を実行しているのか否かを示すフラグである。設定データ５２は、プロセッサＰＲ１等が後述の設定コマンドを実行することによって生成されるデータである。
【００１５】
（ＰＤＬデータの構造）
ＰＤＬは、ページという概念を利用してデータを記述するためのあらゆる言語を含む概念である。ＰＤＬの例として、例えば、ＰＤＦ（Portable Document Format）、ＰＳ（Post Script）等を挙げることができる。また、ワープロソフト、表計算ソフト、描画ソフト等で利用されている言語のうち、ページという概念を利用してデータを記述する言語も、ＰＤＬの一例である。
【００１６】
ユーザは、ＰＣ６に格納されているアプリケーションを利用して、ＰＤＬデータを生成することができる。そして、ユーザは、ＰＤＬデータによって表わされる画像の印刷を望む場合に、ＰＤＬデータをプリンタ１０に送信するための操作をＰＣ６の操作部に加えることができる。この場合、ＰＣ６は、ＰＤＬデータをプリンタ１０に送信する。
【００１７】
図２には、複数ページ分のＰＤＬデータの一例が示されている。１ページ目のＰＤＬデータは、アルファベット「Ａ」〜「Ｅ」を示す５行分のテキストデータを含む。１ページ目のＰＤＬデータに含まれる１行目のテキストデータは、テキスト「Ａ」を示す描画コマンドと、文字サイズ「１０ｐｔ」を示す設定コマンドと、を含む。従って、プリンタ１０は、１行目のテキストデータを読み込むことによって、文字サイズ「１０ｐｔ」でテキスト「Ａ」を記述すべきことを知ることができる。
【００１８】
１ページ目のＰＤＬデータに含まれる２行目のテキストデータは、テキスト「Ｂ」を示す描画コマンドを含む。ただし、２行目のテキストデータは、文字サイズを示す設定コマンドを含まない。この場合、プリンタ１０は、直前の行（本例では１行目）と同じ文字サイズ「１０ｐｔ」でテキスト「Ｂ」を記述すべきことを知ることができる。同様に、１ページ目のＰＤＬデータに含まれる３行目のテキストデータは、テキスト「Ｃ」を示す描画コマンドを含むが、文字サイズを示す設定コマンドを含まない。この場合、プリンタ１０は、文字サイズ「１０ｐｔ」でテキスト「Ｃ」を記述すべきことを知ることができる。このように、同じ文字サイズが２行以上に亘って継続して利用される場合には、後ろの行には、文字サイズを示す設定コマンドが記述されないことがあり得る。
【００１９】
同様に、プリンタ１０は、１ページ目のＰＤＬデータに含まれる４行目及び５行目のテキストデータを読み込むことによって、文字サイズ「２０ｐｔ」でテキスト「Ｄ」、「Ｅ」を記述すべきことを知ることができる。
【００２０】
２ページ目のＰＤＬデータは、アルファベット「Ｆ」〜「Ｇ」を示す３行分のテキストデータを含む。２ページ目のＰＤＬデータに含まれる１行目のテキストデータは、テキスト「Ｆ」を示す描画コマンドを含むが、文字サイズを示す設定コマンドを含まない。この場合、プリンタ１０は、直前のページ（即ち１ページ目）のＰＤＬデータの最後の行（即ち「Ｅ」）と同じ文字サイズ「２０Ｐｔ」でテキスト「Ｆ」を記述すべきことを知ることができる。このように、同じ文字サイズが２ページ以上に亘って継続して利用される場合には、後ろのページには、文字サイズを示す設定コマンドが記述されないことがあり得る。
【００２１】
同様に、プリンタ１０は、２ページ目のＰＤＬデータに含まれる２行目及び３行目のテキストデータを読み込むことによって、文字サイズ「２０ｐｔ」でテキスト「Ｇ」を記述すべきこと、及び、文字サイズ「３０ｐｔ」でテキスト「Ｈ」を記述すべきこと、を知ることができる。
【００２２】
なお、描画コマンドは、テキスト形式のデータに限られず、ベクトル形式のデータであってもよいし、画像形式のデータ（即ち、ＪＰＥＧ等のビットマップデータ）であってもよい。また、設定コマンドは、文字サイズに限られず、文字の書体（即ち、Times New Roman等）であってもよいし、文字の装飾（即ち、太字、網掛け等）であってもよいし、文字の色であってもよいし、ページのサイズ（即ち、Ａ４、Ｂ４等の印刷媒体のサイズ）であってもよい。
【００２３】
また、後で詳しく説明するが、例えば、プロセッサＰＲ１は、１ページ目のＰＤＬデータを利用して、１ページ目の中間コードデータを生成し、次いで、１ページ目の中間コードデータを利用して、１ページ目のビットマップデータを生成する。そして、プロセッサＰＲ１は、１ページ目のビットマップデータを印刷実行部１６に供給する。これにより、印刷実行部１６は、１ページ目のビットマップデータに基づいて、印刷を実行する。同様に、例えば、プロセッサＰＲ２は、２ページ目のＰＤＬデータから、２ページ目の中間コードデータを経て、２ページ目のビットマップデータを生成して、印刷実行部１６に供給する。
【００２４】
上述したように、本実施例では、プリンタ１０は、ＰＤＬデータから、中間コードデータを経て、ビットマップデータを生成する。中間コードデータは、プリンタ１０のベンダによって予め決められている中間言語で記述されたデータである。中間言語は、例えば、プリンタ１０のベンダによって独自に開発された言語であってもよいし、公知の言語であってもよい。
【００２５】
中間コードデータを利用せずに、ＰＤＬデータからビットマップデータを直接的に生成する手法（以下では「直接的な手法」と呼ぶ）が考えられる。直接的な手法では、複数種類のＰＤＬデータ（例えば、ＰＳ（Post Script）、ＰＤＦ（Portable Document Format等）に従った印刷を実現するためには、複数種類のＰＤＬデータのそれぞれについて、当該種類のＰＤＬデータからビットマップデータを直接的に生成するためのプログラムが必要である。この場合、多くのプログラムを格納可能な大容量のメモリをプリンタに搭載しなければならない。
【００２６】
一方において、中間コードデータを利用する本実施例の構成では、複数種類のＰＤＬデータのそれぞれについて、当該１種類のＰＤＬデータから、共通の中間言語で記述された中間コードデータを生成するためのプログラムが必要である。そして、中間コードデータからビットマップデータを生成するためのプログラムが必要である。この構成によると、複数種類のＰＤＬデータについて、中間コードデータからビットマップデータを生成するためのプログラムを共通化することができる。従って、複数種類のＰＤＬデータからビットマップデータを生成するためのトータルのプログラム量は、直接的な手法と比べて、少なくて済む。
【００２７】
（ＰＤＬ処理；図３）
続いて、図３を参照しながら、各プロセッサＰＲ１，ＰＲ２が実行するＰＤＬ処理について説明する。各プロセッサＰＲ１，ＰＲ２は、ＰＣ６からＰＤＬデータ（図２参照）を受信すると、ＰＤＬ処理を並列的に実行する。即ち、プロセッサＰＲ１がＰＤＬ処理を実行している間に、プロセッサＰＲ２もＰＤＬ処理を実行可能である。以下では、プロセッサＰＲ１を主体として各処理の内容を説明するが、プロセッサＰＲ２も同様に処理を実行する。
【００２８】
Ｓ１０において、プロセッサＰＲ１は、共用メモリ領域５０からＣＰＣ６０（共通処理ページカウンタ（図１参照））の値を読み込み、ＣＰＣ６０の値を処理ページ番号として決定する。なお、ＣＰＣ６０の初期値は「１」である。例えば、プロセッサＰＲ１が「Ｍ」を処理ページ番号として決定するということは、プロセッサＰＲ１がＭページ目のＰＤＬデータをＳ１４〜Ｓ２４の処理対象として決定することを意味する。
【００２９】
次いで、Ｓ１２において、プロセッサＰＲ１は、Ｓ１０で読み込まれたＣＰＣ６０の値に「１」を加算して、新たなＣＰＣ６０の値（例えば「２」）を算出する。そして、プロセッサＰＲ１は、上記の新たなＣＰＣ６０の値を共用メモリ領域５０に書き込む。この結果、例えば、他のプロセッサＰＲ２がＳ１０の処理を実行する際に、上記の新たなＣＰＣ６０の値（例えば「２」）を処理ページ番号として決定する。この例では、プロセッサＰＲ２は、２ページ目のＰＤＬデータをＳ１４〜Ｓ２４の処理対象として決定する。この説明から明らかなように、各プロセッサＰＲ１，ＰＲ２は、複数ページ分のＰＤＬデータのうちの１ページ目のＰＤＬデータから昇順に、異なる１ページ分のＰＤＬデータを利用して、Ｓ１４〜Ｓ２４の各処理を実行する。
【００３０】
次いで、Ｓ１４において、プロセッサＰＲ１は、共用メモリ領域５０からＣＳＣ６２（共有設定データカウンタ（図１参照））の値を読み込み、Ｓ１０で決定された処理ページ番号「Ｍ」がＣＳＣ６２の値より大きいのか否かを判断する。なお、ＣＳＣ６２の初期値は「１」である。処理ページ番号「Ｍ」がＣＳＣ６２の値より大きい場合（Ｓ１４でＹＥＳの場合）には、Ｓ１６に進み、処理ページ番号「Ｍ」がＣＳＣ６２の値に等しい場合（Ｓ１４でＮＯの場合）には、Ｓ２０に進む。なお、処理ページ番号「Ｍ」がＣＳＣ６２の値より大きい場合（Ｓ１４でＹＥＳの場合）は、処理ページ番号「Ｍ」が示すページの１ページ前までの設定データ（即ちＭ−１ページ目までの設定データ）が生成済みでないことを意味し、処理ページ番号「Ｍ」がＣＳＣ６２の値に等しい場合（Ｓ１４でＮＯの場合）は、処理ページ番号「Ｍ」が示すページの１ページ前までの設定データ（即ちＭ−１ページ目までの設定データ）が生成済みであることを意味する。
【００３１】
Ｓ１６では、プロセッサＰＲ１は、共用メモリ領域５０からＳＰＦ６４（設定コマンド処理フラグ（図１参照））の値を読み込み、ＳＰＦ６４の値が「１」であるのか否かを判断する。ＳＰＦ６４の値が「１」である場合（Ｓ１６でＹＥＳの場合）には、Ｓ１４に進み、ＳＰＦ６４の値が「０」である場合（Ｓ１６でＮＯの場合）には、Ｓ１８に進む。
【００３２】
ＳＰＦ６４の値が「１」である場合（Ｓ１６でＹＥＳの場合）には、他のプロセッサＰＲ２が、Ｓ１８の設定コマンド処理を実行している。このような状況では、プロセッサＰＲ１は、Ｓ１８の設定コマンド処理を実行せずにＳ１４に戻り、この結果、他のプロセッサＰＲ２の設定コマンド処理が終了するまで待機する。
【００３３】
一方において、ＳＰＦ６４の値が「０」である場合（Ｓ１６でＮＯの場合）には、他のプロセッサＰＲ２が、Ｓ１８の設定コマンド処理を実行していない。このような状況では、プロセッサＰＲ１は、Ｓ１８の設定コマンド処理を実行する。
【００３４】
（設定コマンド処理；図４）
設定コマンド処理では、Ｓ４０において、プロセッサＰＲ１は、共用メモリ領域５０内のＳＰＦ６４の値を「０」から「１」に変更する。次いで、Ｓ４２において、プロセッサＰＲ１は、共用メモリ領域５０からＣＳＣ６２の値を読み込み、ＣＳＣ６２の値（例えば「１」）を自己設定データカウンタ（以下では「ＯＳＣ（Own Setting data Counter）」と呼ぶ）の値として決定する。さらに、プロセッサＰＲ１は、ＯＳＣの値（例えば「１」）をＰＲ１用メモリ領域４１内に書き込む。ＯＳＣは、現在の設定コマンド処理の処理対象のページ番号（例えば「１」）を示すカウンタである。
【００３５】
次いで、Ｓ４４において、プロセッサＰＲ１は、共用メモリ領域５０から設定データ５２を読み込むことによって、設定データ５２を取得する。後で説明するが、図４のＳ６０又は図５のＳ９８では、共用メモリ領域５０に設定データ５２が書き込まれる。例えば、Ｓ４２で決定されたＯＳＣの値が「Ｎ」である場合には、通常、共用メモリ領域５０にＮ−１ページ目までの設定データ５２が書き込まれている。従って、Ｓ４４では、プロセッサＰＲ１は、共用メモリ領域５０からＮ−１ページ目までの設定データ５２（例えば、文字サイズ「２０ｐｔ」、文字の装飾「太字」、文字の色「黒」）を取得して、当該設定データ５２をＰＲ１用メモリ領域４１に書き込む。なお、ＯＳＣの値（即ち「Ｎ」）が「１」である場合には、共用メモリ領域５０に未だに設定データが書き込まれていない。この場合、プロセッサＰＲ１は、Ｓ４４をスキップする。
【００３６】
次いで、Ｓ４６において、プロセッサＰＲ１は、Ｓ４２で決定されたＯＳＣの値が示す１ページ分のＰＤＬデータを読み込む。プロセッサＰＲ１は、１ページ分のＰＤＬデータを読み込む過程で、１個のコマンドを読み込む毎に、Ｓ４８以降の処理を実行する。なお、以下では、Ｓ４８以降の処理の処理対象の１個のコマンドのことを「特定のコマンド」と呼ぶ。例えば、Ｓ４６で読み込まれるＰＤＬデータが、図２の１ページ目のＰＤＬデータである場合には、プロセッサＰＲ１は、まず、１行目のテキストデータに含まれる描画コマンドであるテキスト「Ａ」を特定のコマンドとして、Ｓ４８以降の処理を実行する。その後、プロセッサＰＲ１は、１行目のテキストデータに含まれる設定コマンドである文字サイズ「１０ｐｔ」を特定のコマンドとして、Ｓ４８以降の処理を実行する。
【００３７】
Ｓ４８では、プロセッサＰＲ１は、特定のコマンドがページの終了を示すコマンドであるのか否かを判断する。特定のコマンドがページの終了を示すコマンドである場合（Ｓ４８でＹＥＳの場合）には、Ｓ５８に進み、特定のコマンドがページの終了を示すコマンドでない場合（Ｓ４８でＮＯの場合）には、Ｓ５０に進む。
【００３８】
Ｓ５０では、プロセッサＰＲ１は、特定のコマンドが設定コマンドであるのか否かを判断する。特定のコマンドが設定コマンドである場合（Ｓ５０でＹＥＳの場合）には、Ｓ５２に進む。特定のコマンドが設定コマンドでない場合（Ｓ５０でＮＯの場合）には、Ｓ５４に進む。
【００３９】
Ｓ５２では、プロセッサＰＲ１は、設定コマンド（即ち特定のコマンド）を実行して、設定データを生成する。例えば、ＰＣ６から受信されたＰＤＬデータが、特定の種類（例えばＰＳ）のＰＤＬで記述されたＰＤＬデータである場合には、プロセッサＰＲ１は、まず、当該特定の種類のＰＤＬデータから中間コードデータを生成するためのプログラムを利用して、設定コマンドを記述しているプログラムコードを解析して、設定コマンドの内容（例えば文字サイズ「３０ｐｔ」）を解釈する。次いで、プロセッサＰＲ１は、解釈済みの内容に対応する設定データを、ＰＲ１用メモリ領域４１内に生成する。
【００４０】
例えば、図２の１ページ目のＰＤＬデータが設定コマンド処理の処理対象である場合には、プロセッサＰＲ１は、Ｓ４６において、１行目のテキストデータに含まれる設定コマンド（文字サイズ「１０ｐｔ」）を読み込むと、Ｓ５２において、文字サイズ「１０ｐｔ」に対応する設定データを、ＰＲ１用メモリ領域４１内に生成する。その後、プロセッサＰＲ１は、Ｓ４６において、４行目のテキストデータに含まれる設定コマンド（文字サイズ「２０ｐｔ」）を読み込むと、Ｓ５２において、文字サイズ「１０ｐｔ」に対応する設定データに代えて、文字サイズ「２０ｐｔ」に対応する設定データを、ＰＲ１用メモリ領域４１内に生成する。即ち、プロセッサＰＲ１は、Ｓ５２において、特定の設定の種類（上記の例では「文字サイズ」）に対応する新たな設定データを生成する際に、上記の特定の設定の種類に対応する古い設定データがＰＲ１用メモリ領域４１内に既に記憶されている場合には、古い設定データを消去して、新たな設定データをＰＲ１用メモリ領域４１内に記憶させる。ただし、この場合、プロセッサＰＲ１は、ＰＲ１用メモリ領域４１内の他の設定の種類に対応する設定データ（例えば、文字の装飾「太字」、文字の色「黒」）を変更しない。
【００４１】
また、例えば、図２の２ページ目のＰＤＬデータが設定コマンド処理の処理対象である場合には、プロセッサＰＲ１は、Ｓ４６において、３行目のテキストデータに含まれる設定コマンド（文字サイズ「３０ｐｔ」）を読み込むと、Ｓ５２において、文字サイズ「２０ｐｔ」に対応する設定データに代えて、文字サイズ「３０ｐｔ」に対応する設定データを、ＰＲ１用メモリ領域４１内に生成する。このように、プロセッサＰＲ１は、Ｎ−１ページ目までの設定データ（文字サイズ「２０ｐｔ」）を用いて、Ｎページ目のＰＤＬデータに含まれる設定コマンドを実行することができる。
【００４２】
設定コマンドから設定データが生成されると、プロセッサ（ＰＲ１及び／又はＰＲ２）は、後の処理において、設定コマンドの内容を利用すべき際に、設定コマンドを再び実行する必要がなく、設定データを読み出せば足りる。上述したように、プロセッサは、設定コマンドの内容を解釈するためには、特定の種類のＰＤＬデータから中間コードデータを生成するためのプログラムを利用して、設定コマンドを記述しているプログラムコードを解析する必要があり、比較的に長時間を要する。これに対し、本実施例のように設定データを生成しておけば、プロセッサは、プログラムコードを解析する必要がなく、設定データを読み出せば、設定コマンドの内容を知ることができる。即ち、プロセッサは、後の処理において、設定コマンドの内容を比較的に短時間で取得することができる。
【００４３】
一方において、Ｓ５４では、プロセッサＰＲ１は、特定のコマンドが描画コマンドであるのか否かを判断する。特定のコマンドが描画コマンドである場合（Ｓ５４でＹＥＳの場合）には、Ｓ４６に戻る。即ち、プロセッサＰＲ１は、描画コマンドを実行しない。一方において、特定のコマンドが描画コマンドでない場合（Ｓ５４でＮＯの場合）には、Ｓ５６に進み、プロセッサＰＲ１は、コマンドに応じた処理を実行する。Ｓ５６を終えると、Ｓ４６に戻る。
【００４４】
また、Ｓ５８では、プロセッサＰＲ１は、共用メモリ領域５０からＣＳＣ６２の値を読み込む。そして、プロセッサＰＲ１は、Ｓ４２で決定されたＯＳＣの値がＣＳＣ６２の値以上であるのか否かを判断する。上述したように、Ｓ４２では、ＯＳＣの値＝ＣＳＣ６２の値と決定される。従って、Ｓ５８では、通常、ＯＳＣの値がＣＳＣ６２の値以上である（Ｓ５８でＹＥＳ）と判断され、Ｓ６０に進む。ただし、プロセッサＰＲ１がＳ４６〜Ｓ５６の処理を実行している過程で、他のプロセッサＰＲ２が後述の図５のＳ１００の処理を実行して、ＣＳＣ６２の値がインクリメントされる可能性がある。この場合、ＯＳＣの値がＣＳＣ６２の値より小さい（Ｓ５８でＮＯ）と判断され、Ｓ６０及びＳ６２をスキップしてＳ６４に進む。
【００４５】
Ｓ６０では、プロセッサＰＲ１は、ＰＲ１用メモリ領域４１内の設定データを、共用メモリ領域５０に書き込む。例えば、文字サイズ「２０Ｐｔ」に対応する設定データが共用メモリ領域５０内に記憶されており、文字サイズ「３０Ｐｔ」に対応する設定データがＰＲ１用メモリ領域４１内に記憶されている場合には、Ｓ６０において、プロセッサＰＲ１は、文字サイズ「２０Ｐｔ」に対応する設定データに代えて、文字サイズ「３０Ｐｔ」に対応する設定データを、共用メモリ領域５０内に記憶させる。これにより、共用メモリ領域５０内には、図４の設定コマンド処理の処理対象のページ（即ちＣＳＣ６２の値が示すページ）までの設定データが記憶される。
【００４６】
次いで、Ｓ６２において、プロセッサＰＲ１は、ＣＳＣ６２の値に「１」を加算して、新たなＣＳＣ６２の値（例えば「２」）を算出する。そして、プロセッサＰＲ１は、上記の新たなＣＳＣ６２の値を共用メモリ領域５０に書き込む。Ｓ６２を終えると、Ｓ６４において、プロセッサＰＲ１は、共用メモリ領域５０内のＳＰＦ６４の値を「１」から「０」に変更する。これにより、設定コマンド処理が終了して、図３のＳ１４に戻る。
【００４７】
図３のＳ１４において、処理ページ番号「Ｍ」がＣＳＣ６２の値に等しい（Ｓ１４でＮＯ）、即ち、処理ページ番号「Ｍ」が示すページの１ページ前までの設定データ（即ちＭ−１ページ目までの設定データ）が生成済みである、と判断される場合には、Ｓ２０において、プロセッサＰＲ１は、両方コマンド処理を実行する。
【００４８】
（両方コマンド処理；図５）
両方コマンド処理では、Ｓ８０において、プロセッサＰＲ１は、共用メモリ領域５０から設定データを読み込むことによって、設定データを取得する。これにより、プロセッサＰＲ１は、処理ページ番号「Ｍ」が示すページの１ページ前までの設定データ（即ちＭ−１ページ目までの設定データ）を取得することができる。例えば、処理ページ番号が「２」である場合には、プロセッサＰＲ１は、図２の１ページ目のＰＤＬデータまでの設定データ（即ち、文字サイズ「２０Ｐｔ」）を取得することができる。プロセッサＰＲ１は、共用メモリ領域５０からＭ−１ページ目までの設定データを取得して、当該設定データをＰＲ１用メモリ領域４１に書き込む。これにより、プロセッサＰＲ１は、ＰＲ１用メモリ領域４１内のＭ−１ページ目までの設定データを用いて、両方コマンド処理（特に、Ｓ８４〜Ｓ９４の処理）を実行することができる。なお、処理ページ番号が「１」である場合には、共用メモリ領域５０に未だに設定データが書き込まれていない。この場合、プロセッサＰＲ１は、Ｓ８０をスキップする。
【００４９】
次いで、Ｓ８２において、プロセッサＰＲ１は、図３のＳ１０で決定された処理ページ番号「Ｍ」が示す１ページ分のＰＤＬデータを読み込む。プロセッサＰＲ１は、１ページ分のＰＤＬデータを読み込む過程で、１個のコマンドを読み込む毎に、Ｓ８４以降の処理を実行する。Ｓ８４〜Ｓ９４の処理は、図４のＳ４８〜Ｓ５６の処理とほぼ同様である。ただし、上述したように、図４の設定コマンド処理では、特定のコマンドが描画コマンドである場合（図４のＳ５４でＹＥＳの場合）には、プロセッサＰＲ１は、描画コマンドを実行しない。これに対し、両方コマンド処理では、特定のコマンドが描画コマンドである場合（図５のＳ９０でＹＥＳの場合）には、Ｓ９２において、プロセッサＰＲ１は、描画コマンドを実行して中間コードデータを生成する。なお、本実施例では、中間コードデータは、ベクタ形式のデータである。
【００５０】
Ｓ９２では、例えば、ＰＣ６から受信されたＰＤＬデータが、特定の種類（例えばＰＳ）の中間言語で記述されたＰＤＬデータである場合には、プロセッサＰＲ１は、まず、当該特定の種類のＰＤＬデータから中間コードデータを生成するためのプログラムを利用して、描画コマンドを記述しているプログラムコードを解析して、描画コマンドの内容（例えば、テキスト「Ａ」）を解釈する。次いで、プロセッサＰＲ１は、ＰＲ１用メモリ領域４１内のＭ−１ページ目までの設定データに従って、解釈済みの内容に対応する中間コードデータを、ＰＲ１用メモリ領域４１内に生成する。
【００５１】
例えば、図２の２ページ目のＰＤＬデータが両方コマンド処理の処理対象である場合には、プロセッサＰＲ１は、Ｓ８２において、１行目のテキストデータに含まれる描画コマンド（テキスト「Ｆ」）を読み込むと、Ｓ９２において、ＰＲ１用メモリ領域４１内のＭ−１ページ目までの設定データ（文字サイズ「２０ｐｔ」）に従って、文字サイズ「２０ｐｔ」のテキスト「Ａ」を示す中間コードデータを生成する。Ｓ９２を終えると、Ｓ８２に戻る。
【００５２】
また、Ｓ８４において、特定のコマンドがページの終了を示すコマンドである場合（Ｓ８４でＹＥＳの場合）には、Ｓ９６において、プロセッサＰＲ１は、共用メモリ領域５０からＣＳＣ６２の値を読み込む。そして、プロセッサＰＲ１は、図３のＳ１０で決定された処理ページ番号「Ｍ」がＣＳＣ６２の値以上であるのか否かを判断する。上述したように、図３のＳ１４では、処理ページ番号「Ｍ」＝ＣＳＣ６２の値と判断される（Ｓ１４でＮＯと判断される）。従って、図５のＳ９６では、通常、処理ページ番号「Ｍ」がＣＳＣ６２の値以上である（Ｓ９６でＹＥＳ）と判断され、Ｓ９８に進む。Ｓ９８及びＳ１００の処理は、図４のＳ６２及びＳ６４の処理と同様である。
【００５３】
ただし、プロセッサＰＲ１がＳ８２〜Ｓ９４の処理を実行している過程で、他のプロセッサＰＲ２が図４のＳ６２の処理を実行して、ＣＳＣ６２の値がインクリメントされる可能性がある。この場合、処理ページ番号がＣＳＣ６２の値より小さい（Ｓ９６でＮＯ）と判断され、Ｓ９８〜Ｓ１００をスキップして両方コマンド処理を終了する。両方コマンド処理が終了すると、１ページ分の中間コードデータが完成する。この場合、図３のＳ２２に進む。
【００５４】
図３のＳ２２では、プロセッサＰＲ１は、中間コードデータからビットマップデータを生成するためのプログラムを利用して、Ｓ２０の両方コマンド処理で生成されたベクタ形式の１ページ分の中間コードデータから、多階調（例えば２５６階調）の１ページ分のビットマップデータを生成する。
【００５５】
Ｓ２２では、プロセッサＰＲ１は、さらに、１ページ分のビットマップデータを印刷実行部１６に供給する。これにより、印刷実行部１６は、１ページ分のビットマップデータに従って、１枚の印刷媒体に画像を印刷する。
【００５６】
次いで、Ｓ２４において、プロセッサＰＲ１は、ＰＣ６から受信されたＰＤＬデータに含まれる全てのページについて、Ｓ２２の処理が終了したのか否かを判断する。ここでＮＯの場合にはＳ１０に戻り、ＹＥＳの場合にはＰＤＬ処理を終了する。
【００５７】
上述したように、本実施例では、プロセッサＰＲ１，ＰＲ２は、ＰＤＬ処理を並列的に実行する過程で、共用メモリ領域５０に記憶されている設定データ５２を共用する。従って、例えば、プロセッサＰＲ１は、プロセッサＰＲ２によって生成された設定データを用いて、Ｓ１８の設定コマンド処理及び／又はＳ２０の両方コマンド処理を実行し得るし、プロセッサＰＲ２は、プロセッサＰＲ１によって生成された設定データを用いて、Ｓ１８の設定コマンド処理及び／又はＳ２０の両方コマンド処理を実行し得る。
【００５８】
（比較例；図６の左側の図）
ところで、上記の本実施例の構成とは異なり、２個以上のプロセッサが設定データを共用しない構成（以下では「比較例の構成」と呼ぶ）が考えられる。図６の左側の図は、比較例の構成のプロセッサ１０１，１０２が実行する各処理の一例を示す。（Ｐ１）、（Ｐ２）等は、ページ番号を意味する。例えば、「（Ｐ１）設定コマンド処理」は、１ページ目のＰＤＬデータを利用して、設定コマンド処理（図３のＳ１８）を実行することを意味し、「（Ｐ１）両方コマンド処理」は、１ページ目のＰＤＬデータを利用して、両方コマンド処理（図３のＳ２０）を実行することを意味する。また、例えば、「（Ｐ１）ＢＭＰ処理」は、１ページ目の中間コードデータから１ページ目のビットマップデータを生成して、印刷実行部１６に供給するためのＢＭＰ処理（図３のＳ２２）を実行することを意味する。
【００５９】
なお、図６では、どの処理で生成された設定データをどの処理で利用するのかを破線の矢印で示す。例えば、図６の比較例の構成では、プロセッサ１０１は、（Ｐ１）両方コマンド処理を実行し、次いで、（Ｐ１）ＢＭＰ処理を実行し、次いで、（Ｐ１）両方コマンド処理で生成された１ページ目までの設定データを用いて、（Ｐ２）設定コマンド処理を実行する。従って、（Ｐ１）両方コマンド処理から（Ｐ２）設定コマンド処理に向けて、破線の矢印が示されている。図６の比較例の構成から明らかなように、プロセッサ１０１は、プロセッサ１０２によって生成された設定データを利用せずに、プロセッサ１０１自身が生成した設定データを利用する。プロセッサ１０２も同様である。即ち、プロセッサ１０１，１０２は、設定データを共用しない。
【００６０】
（本実施例；図６の右側の図）
図６の右側の図は、本実施例のプロセッサＰＲ１，ＰＲ２が実行する各処理（図３のＰＤＬ処理）の一例を示す。なお、図６の右側の本実施例のおける個々の処理の所要時間（即ち図６の縦方向の長さ）は、図６の左側の比較例のおける対応する処理の所要時間に等しい。
【００６１】
プロセッサＰＲ１は、まず、図３のＳ１０で処理ページ番号「Ｍ」として「１」を決定する。この場合、Ｍ＝１及びＣＳＣ６２の値＝１（初期値）であるために、プロセッサＰＲ１は、図３のＳ１４でＮＯと判断する。従って、プロセッサＰＲ１は、（Ｐ１）両方コマンド処理を実行し、次いで、（Ｐ１）ＢＭＰ処理を実行する。
【００６２】
プロセッサＰＲ１が（Ｐ１）両方コマンド処理を実行している間に、プロセッサＰＲ２は、図３のＳ１０で処理ページ番号「Ｍ」として「２」を決定する。この場合、Ｍ＝１及びＣＳＣ６２の値＝２であるために、プロセッサＰＲ２は、図３のＳ１４でＹＥＳと判断する。そして、プロセッサＰＲ２は、設定コマンドが未だに実行されていない最小ページである１ページ目のＰＤＬデータを用いて、（Ｐ１）設定コマンド処理を実行する。プロセッサＰＲ２の（Ｐ１）設定コマンド処理は、描画コマンドが実行されないために、プロセッサＰＲ１の（Ｐ１）両方コマンド処理よりも短時間で終了する。従って、プロセッサＰＲ２は、（Ｐ１）設定コマンド処理の図４のＳ６０において、１ページ目のＰＤＬデータまでの設定データを、共用メモリ領域５０に記憶させる。
【００６３】
さらに、プロセッサＰＲ２は、（Ｐ１）設定コマンド処理の図４のＳ６２において、ＣＳＣ６２の値を「１」から「２」にインクリメントする。従って、（Ｐ１）設定コマンド処理を終えると、Ｍ＝２及びＣＳＣ６２の値＝２であるために、プロセッサＰＲ２は、図３のＳ１４でＮＯと判断し、（Ｐ２）両方コマンド処理を実行する。この構成によると、プロセッサＰＲ２は、２ページ目のＰＤＬデータを利用した両方コマンド処理を実行する際に、プロセッサＰＲ２自身によって生成された１ページ目までの設定データを利用することができる（図５のＳ８０）。この場合、プロセッサＰＲ２は、（Ｐ２）両方コマンド処理において、２ページ目のＰＤＬデータまでの設定データを、共用メモリ領域５０に記憶させる（図５のＳ９８）。そして、プロセッサＰＲ２は、（Ｐ２）両方コマンド処理の図５のＳ１００において、ＣＳＣ６２の値を「２」から「３」にインクリメントする。
【００６４】
プロセッサＰＲ２が（Ｐ２）ＢＭＰ処理を実行している間に、プロセッサＰＲ１は、図３のＳ１０で処理ページ番号「Ｍ」として「３」を決定する。この段階では、共用メモリ領域５０には、（Ｐ２）までの設定データが記憶されており、ＣＳＣ６２の値＝「３」である。従って、プロセッサＰＲ１は、図３のＳ１４でＮＯと判断し、（Ｐ３）両方コマンド処理を実行する。この際に、プロセッサＰＲ１は、プロセッサＰＲ２の（Ｐ２）両方コマンド処理で生成された２ページ目までの設定データを利用することができる（図５のＳ８０）。従って、比較例の構成と比較すると、プロセッサＰＲ１は、（Ｐ２）設定コマンド処理を実行せずに済む。
【００６５】
同様に、プロセッサＰＲ２は、（Ｐ６）両方コマンド処理を実行する際に、プロセッサＰＲ１の（Ｐ５）設定コマンド処理で生成された５ページ目までの設定データを利用することができる（図５のＳ８０）。従って、比較例の構成と比較すると、プロセッサＰＲ２は、（Ｐ５）設定コマンド処理を実行せずに済む。
【００６６】
（本実施例の効果）
本実施例では、各プロセッサＰＲ１，ＰＲ２は、Ｍページ目のＰＤＬデータを利用して、Ｍページ目の中間コードデータを生成すべき際に、以下の各処理を実行する。即ち、各プロセッサＰＲ１，ＰＲ２は、Ｍ−１ページ目までの設定データが生成済みであるのか否かを判断する（図３のＳ１４）。各プロセッサＰＲ１，ＰＲ２は、Ｍ−１ページ目までの設定データが生成済みでないと判断する場合（Ｓ１４でＹＥＳの場合）に、設定コマンドが未だに実行されていない最小ページであるＮページ目（Ｎは１以上Ｍ−１以下の整数）のＰＤＬデータを利用して、設定コマンド処理（図３のＳ１８、図４参照）を実行する。設定コマンド処理では、描画コマンドが実行されないために、各プロセッサＰＲ１，ＰＲ２は、Ｎページ目のＰＤＬデータに含まれる設定コマンドを迅速に実行して、Ｎページ目までの設定データを迅速に生成することができる。
【００６７】
一方において、各プロセッサＰＲ１，ＰＲ２は、Ｍ−１ページ目までの設定データが生成済みであると判断する場合（Ｓ１４でＮＯの場合）に、Ｎページ目のＰＤＬデータを利用した設定コマンド処理を実行せずに、Ｍページ目のＰＤＬデータを利用して、両方コマンド処理（図３のＳ２０、図５参照）を実行する。Ｎページ目のＰＤＬデータを利用した設定コマンド処理が実行されないために、プロセッサＰＲ１，ＰＲ２のうちの一方が、Ｎページ目のＰＤＬデータに含まれる設定コマンド処理を実行した後に、プロセッサＰＲ１，ＰＲ２のうちの他方が、Ｎページ目のＰＤＬデータに含まれる設定コマンドを再び実行することを抑制することができる。
【００６８】
例えば、図６の右側の本実施例における図の例では、プロセッサＰＲ１は、（Ｐ３）両方コマンド処理を実行する際に、プロセッサＰＲ２の（Ｐ２）両方コマンド処理で生成された設定データを利用することができる。プロセッサＰＲ２によって実行済みである設定コマンドを、プロセッサＰＲ１が再び実行することを抑制することができる。なお、このケースでは、Ｍ＝３であり、プロセッサＰＲ１、プロセッサＰＲ２が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００６９】
また、例えば、プロセッサＰＲ２は、（Ｐ６）両方コマンド処理を実行する際に、プロセッサＰＲ１の（Ｐ５）両方コマンド処理で生成された設定データを利用することができる。プロセッサＰＲ１によって実行済みである設定コマンドを、プロセッサＰＲ２が再び実行することを抑制することができる。このケースでは、Ｍ＝６であり、プロセッサＰＲ２、プロセッサＰＲ１が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００７０】
また、例えば、プロセッサＰＲ１は、（Ｐ４）設定コマンド処理を実行する際に、プロセッサＰＲ２の（Ｐ３）設定コマンド処理で生成された設定データを利用することができる。このケースでは、Ｎ＝４であり、プロセッサＰＲ１、プロセッサＰＲ２が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００７１】
本実施例では、比較例の構成と比べて、各プロセッサＰＲ１，ＰＲ２の処理負荷を低減することができる。さらに、比較例の構成と比べて、各プロセッサＰＲ１，ＰＲ２は、ＰＤＬ処理を迅速に実行して、ビットマップデータを印刷実行部１６に迅速に供給することができる。この結果、印刷実行部１６が印刷を迅速に実行することができるために、印刷済みの印刷媒体をユーザに迅速に提供することができる。
【００７２】
（対応関係）
図３のＰＤＬ処理のＳ１４〜Ｓ２０が、「中間コード生成処理」の一例である。図３のＳ１４の判断処理、図３のＳ１８の設定コマンド処理、図３のＳ２０の両方コマンド処理が、それぞれ、「判断処理」、「第１の生成処理」、「第２の生成処理」の一例である。また、図３のＳ１４でＹＥＳの場合、ＮＯの場合が、それぞれ、「第１の場合」、「第２の場合」の一例である。
【００７３】
（第２実施例）
本実施例では、プロセッサＰＲ１，ＰＲ２に加えて、プロセッサＰＲ３が利用される点が、第１実施例とは異なる。メモリ３０には、ＰＲ３用メモリ領域４３がさらに設けられている。本実施例では、３個のプロセッサＰＲ１，ＰＲ２，ＰＲ３が図３のＰＤＬ処理を並列的に実行する。ＰＤＬ処理の内容は、第１実施例と同様である。
【００７４】
（比較例及び本実施例の処理（ケースＡ）の一例）
図７の左側の図は、比較例の構成のプロセッサ２０１，２０２，２０３が実行する各処理の一例を示す。図７の右側の図は、本実施例のプロセッサＰＲ１，ＰＲ２，ＰＲ３が実行する各処理（ケースＡ）の一例を示す。図７の符号（（Ｐ１）、（Ｐ２）等）及び破線（さらには後述の図８の符号及び破線）は、図６の場合と同様である。なお、図７の右側の本実施例における各処理の所要時間（即ち図７の縦方向の長さ）は、図７の左側の比較例における対応する処理の所要時間に等しい。
【００７５】
比較例の構成では、プロセッサ２０１，２０２，２０３が設定データを共用しない。従って、例えば、プロセッサ２０３が、３ページ目のＰＤＬデータを利用して、中間コードデータを生成すべき際に、プロセッサ２０３は、（Ｐ１）設定コマンド処理及び（Ｐ２）設定コマンド処理を実行した後に、（Ｐ３）両方コマンド処理を実行する。
【００７６】
これに対し、本実施例の構成では、プロセッサＰＲ３が、３ページ目のＰＤＬデータを利用して、中間コードデータを生成すべき際に、プロセッサＰＲ２が、（Ｐ１）設定コマンド処理を実行しているために、ＳＰＦ６４の値が「１」に設定されている（図４のＳ４０参照）。従って、プロセッサＰＲ３は、図３のＳ１６でＹＥＳと判断して、（Ｐ１）設定コマンド処理を実行せずに、プロセッサＰＲ２の（Ｐ１）設定コマンド処理が終了するまで待機する。このために、プロセッサＰＲ２及びプロセッサＰＲ３が同じ設定コマンド処理を実行するのを抑制することができる。プロセッサＰＲ３が（Ｐ１）設定コマンド処理を実行しないために、比較例の構成と比べて、プロセッサＰＲ３の処理負荷を低減させることができる。なお、プロセッサＰＲ３は、プロセッサＰＲ２の（Ｐ１）設定コマンド処理が終了するまで待機している間に、例えば、ＰＤＬ処理以外の処理を実行し得る。
【００７７】
プロセッサＰＲ２の（Ｐ１）設定コマンド処理において、プロセッサＰＲ２は、１ページ目までの設定データを共用メモリ領域５０に書き込み（図４のＳ６０）、ＣＳＣ６２の値を「１」から「２」に変更し（Ｓ６２）、ＳＰＦ６４の値を「１」から「０」に変更する（Ｓ６４）。
【００７８】
これを契機に、プロセッサＰＲ３は、図３のＳ１６でＮＯと判断して、（Ｐ２）設定コマンド処理を実行する。この際に、プロセッサＰＲ３は、プロセッサＰＲ２の（Ｐ１）設定コマンド処理で生成された１ページ目までの設定データを利用することができる（図４のＳ４４）。プロセッサＰＲ３の（Ｐ２）設定コマンド処理において、プロセッサＰＲ３は、２ページ目までの設定データを共用メモリ領域５０に書き込み（図４のＳ６０）、ＣＳＣ６２の値を「２」から「３」に変更する（Ｓ６２）。なお、このケースでは、Ｎ＝２であり、プロセッサＰＲ３、プロセッサＰＲ２が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００７９】
また、比較例の構成では、第１のプロセッサが、４ページ目のＰＤＬデータを利用して、中間コードデータを生成すべき際に、第１のプロセッサは、（Ｐ２）設定コマンド処理及び（Ｐ３）設定コマンド処理を実行した後に、（Ｐ４）両方コマンド処理を実行する。
【００８０】
これに対し、本実施例の構成では、プロセッサＰＲ１が、４ページ目のＰＤＬデータを利用して、中間コードデータを生成すべき際に、プロセッサＰＲ３の（Ｐ２）設定コマンド処理で２ページ目までの設定データが生成済みであり、ＣＳＣ６２の値が「３」である。従って、プロセッサＰＲ１は、（Ｐ２）設定コマンド処理を実行しない。プロセッサＰＲ３によって実行済みである設定コマンドを、プロセッサＰＲ１が再び実行することを抑制することができる。そして、プロセッサＰＲ１は、（Ｐ３）設定コマンド処理を実行する。この際に、プロセッサＰＲ１は、プロセッサＰＲ３の（Ｐ２）設定コマンド処理で生成された２ページ目までの設定データを利用することができる（図４のＳ４４）。なお、このケースでは、Ｎ＝３であり、プロセッサＰＲ１、プロセッサＰＲ３が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００８１】
同様に、本実施例の構成では、プロセッサＰＲ２は、（Ｐ３）設定コマンド処理を実行せずに、プロセッサＰＲ１の（Ｐ３）設定コマンド処理が終了するまで待機する。このために、プロセッサＰＲ１及びプロセッサＰＲ２が同じ設定コマンド処理を実行するのを抑制することができる。そして、プロセッサＰＲ２は、（Ｐ４）設定コマンド処理を実行する。この際に、プロセッサＰＲ２は、プロセッサＰＲ１の（Ｐ３）設定コマンド処理で生成された３ページ目までの設定データを利用することができる（図４のＳ４４）。なお、このケースでは、Ｎ＝４であり、プロセッサＰＲ２、プロセッサＰＲ１が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００８２】
同様に、本実施例の構成では、プロセッサＰＲ３は、（Ｐ４）設定コマンド処理を実行せずに、プロセッサＰＲ２の（Ｐ４）設定コマンド処理が終了するまで待機する。このために、プロセッサＰＲ２及びプロセッサＰＲ３が同じ設定コマンド処理を実行するのを抑制することができる。そして、プロセッサＰＲ３は、（Ｐ５）設定コマンド処理を実行する。この際に、プロセッサＰＲ３は、プロセッサＰＲ２の（Ｐ４）設定コマンド処理で生成された４ページ目までの設定データを利用することができる（図４のＳ４４）。なお、このケースでは、Ｎ＝５であり、プロセッサＰＲ３、プロセッサＰＲ２が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００８３】
（本実施例の処理（ケースＢ）の一例）
図８は、本実施例のプロセッサＰＲ１，ＰＲ２，ＰＲ３が実行する各処理（ケースＢ）の一例を示す。ケースＢでは、プロセッサＰＲ１は、（Ｐ４）両方コマンド処理を実行する際に、プロセッサＰＲ３の（Ｐ３）両方コマンド処理で生成された３ページ目までの設定データを利用することができる（図５のＳ８０）。なお、このケースでは、プロセッサＰＲ１、プロセッサＰＲ３が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００８４】
また、プロセッサＰＲ２は、（Ｐ４）設定コマンド処理を実行する際に、プロセッサＰＲ３の（Ｐ３）両方コマンド処理で生成された３ページ目までの設定データを利用することができる（図４のＳ４４）。なお、このケースでは、Ｎ＝４であり、プロセッサＰＲ２、プロセッサＰＲ３が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」の一例である。
【００８５】
なお、図８のケースＢでは、プロセッサＰＲ２の（Ｐ２）両方コマンド処理において、２ページ目までの設定データが生成され、プロセッサＰＲ３の（Ｐ２）設定コマンド処理において、同じ２ページ目までの設定データが生成される。この場合、プロセッサＰＲ１は、前者の設定データと後者の設定データとのうち、先に生成された後者の設定データを用いて得られる３ページまでの設定データ（即ち、後者の設定データを利用したプロセッサＰＲ１の（Ｐ３）設定コマンド処理で生成される３ページまでの設定データ）を用いて、（Ｐ４）両方コマンド処理を実行する。即ち、プロセッサＰＲ２の両方コマンド処理において、Ｋページ目（Ｋは１以上Ｍ−１以下の整数；ケースＢの例ではＫ＝２）までの設定データが生成され、プロセッサＰＲ３の設定コマンド処理において、Ｋページ目までの設定データが生成される場合には、プロセッサＰＲ１は、先に生成されたＫページ目までの設定データを用いて得られるＭ−１ページ目（ケースＢの例ではＭ＝４）までの設定データを用いて、両方コマンド処理を実行する。この構成によると、プロセッサＰＲ２は、（Ｐ４）両方コマンド処理を実行する際に、プロセッサＰＲ２又はプロセッサＰＲ３によって生成された２ページ目までの設定データを用いて得られる３ページまでの設定データを利用することができる。なお、プロセッサＰＲ１、プロセッサＰＲ２、プロセッサＰＲ３が、それぞれ、「第１のプロセッサ」、「第２のプロセッサ」、「第３のプロセッサ」の一例である。
【００８６】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００８７】
（変形例１）上記の第１実施例では、プロセッサの数が２であり（即ちＬ＝２であり）、上記の第２実施例では、プロセッサの数が３である（即ちＬ＝３である）。これに代えて、プロセッサの数が４以上であってもよい。即ち、Ｌは、２以上の整数であればよい。
【００８８】
（変形例２）上記の各実施例では、制御装置２０は、プリンタ１０に搭載されているが、ＦＡＸデータの印刷を実行するＦＡＸ装置に搭載されていてもよいし、印刷機能を備える多機能機に搭載されていてもよい。一般的に言うと、制御装置２０は、印刷のための制御装置であればよい。
【００８９】
（変形例３）上記の各実施例では、プリンタ１０が、複数個のプロセッサＰＲ１，ＰＲ２，ＰＲ３を備えており、各プロセッサＰＲ１，ＰＲ２，ＰＲ３が、図３のＰＤＬ処理を並列的に実行する。これに代えて、ＰＣ６が、複数個のプロセッサを備えており、各プロセッサが、図３のＰＤＬ処理を並列的に実行してもよい。この場合、各プロセッサは、図３のＳ２２の処理を実行する際に、ビットマップデータをプリンタ１０に供給してもよい。本変形例では、ＰＣ６、プリンタ１０が、それぞれ、「制御装置」、「印刷実行部」の一例である。
【００９０】
（変形例４）上記の各実施例では、例えば、プロセッサＰＲ１は、１ページ分の中間コードデータを生成した後に、当該１ページ分の中間コードデータから１ページ分のビットマップデータを生成して、当該１ページ分のビットマップデータを印刷実行部１６に供給する（図３のＳ２２）。即ち、中間コードデータを生成したプロセッサが、ビットマップデータを生成する生成処理と、ビットマップデータを印刷実行部１６に供給する供給処理と、を実行する。これに代えて、中間コードデータを生成したプロセッサとは異なるプロセッサが、上記の生成処理及び／又は上記の供給処理を実行してもよい。
【００９１】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００９２】
２：通信システム、１０：プリンタ、２０：制御装置、３０：メモリ、５０：共用メモリ領域、６０：共通処理ページカウンタ（ＣＰＣ）、６２：共通設定データカウンタ（ＣＳＣ）、６４：設定コマンド処理フラグ（ＳＰＦ）、ＰＲ１，ＰＲ２，ＰＲ３：プロセッサ
【図１】
0005853537.tif 000002
【図２】
0005853537.tif 000003
【図３】
0005853537.tif 000004
【図４】
0005853537.tif 000005
【図５】
0005853537.tif 000006
【図６】
0005853537.tif 000007
【図７】
0005853537.tif 000008
【図８】
0005853537.tif 000009