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