説明

プリンタ制御装置

【課題】処理速度が速く、複数のプロセスを同時に並列処理可能であり、かつ該並列処理を高信頼に実行可能なプリンタ制御装置を提供する。
【解決手段】複数のMPUコア101〜104を備え、受信処理プログラムAP1を実行する第1のプロセス、データ解析処理プログラムAP2を実行する第2のプロセス、画像描画処理プログラムAP3を実行する第3のプロセス、及びビデオ信号送信処理プログラムAP3を実行する第4のプロセスを、MPUコア101〜104へそれぞれ割り当てるとともに、前記各プロセス間の情報を伝達するFIFOバッファ式の通信手段を備え、MPUコア101〜104における前記各プロセスの処理結果を前記FIFOバッファ式の通信手段により伝達することにより、前記各プロセスを同時に並列実行させるプリンタ制御装置である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストコンピュータからの印刷用データを受信し、印刷用画像データに描画処理し、該印刷用画像データを、接続するプリンタエンジンに転送して印刷を実行するためのプリンタ制御装置に関する。
【背景技術】
【0002】
プリンタ制御装置(プリンタコントローラ)は、ページ記述言語(PDL(Page Description Language))で記述されたデータが入力されると、印刷用画像データを描画処理し、該印刷用画像データに基づいて印刷用媒体上に画像を印刷する印刷制御処理を行っている。さらにプリンタ制御装置内では、データ受信処理、受信データ解析処理、暗号化データの復号化処理、データの暗号化処理、ベクトル形式フォントデータの画像描画処理、図形描画処理、画像描画処理、画像データ形式変換処理、データ圧縮処理、データ伸張処理、色補正処理、シャープネス処理、ノイズ除去処理等の画像補正処理、解像度変換処理など、種々のプログラムによる演算処理を実行して、印刷用画像データを生成する。このような画像形成装置におけるデータ処理においては、処理内容の複雑さにもよるが、一般に多くのプログラム制御によるMPU(Micro Processing Unit)での演算が必要であり、印刷処理の高速化を図るためには、これらの演算処理をできる限り高速化する必要がある。
【0003】
印刷処理の高速化する方法として、例えば、単一のMPUコアを持つCPU(Central Processing Unit)を使用し、マルチタスク処理により印刷のスループットを高める技術(例えば、特許文献1参照)が知られている。
また、複数のMPUコア内蔵のCPUまたは複数のCPUをSMP(Symmetric Multi Processor:対称型マルチプロセッサ)方式でマイクロカーネルを用いたマルチスレッド処理を行う方法や、ASMP(Asymmetric Multi Processor:非対称型マルチプロセッサ)方式で、個々のMPUコア毎に別々のプログラムを対応させて並列実行させる技術が提案されている(例えば、特許文献2〜4参照)。
【0004】
さらに、並列処理コンピュータとして、VME(VERSA Module Eurocard)バス等を使用し、共有メモリを介してCPUボード間の通信を可能としたマルチCPU分散処理システムや、ネットワークを介してコンピュータ間の通信を可能としたマルチCPU分散処理システムが既に知られている(例えば、特許文献5及び6参照)。
一方、コンピュータハードウェアを仮想マシンとしてプログラミングし、一台のコンピュータ内に論理的に複数の仮想マシンを存在させて、それぞれ独立したコンピュータとしての仮想マシンを並列に実行できる仮想化技術が既に知られている。
【0005】
また、メモリ同一空間で複数のカーネルを動作させるソフトウェア手法として、ナノカーネル、ADEOS(Adaptive Domain Environment for Operating Systems)等が知られている(例えば、特許文献7参照)。
【0006】
一方、プログラムを高速化して実行する方式として、MPUの内部処理を、命令フェッチ、命令デコード、命令実行のように、処理を並列したパイプライン方式とすることによる並列同時処理の概念が知られている。
【0007】
特許文献1では、物理MPU上に、1以上の複数の論理プロセッサをソフトウェア的に実現する手段が記載されている。3つの論理プロセッサそれぞれにタスク(TK1、TK2、TK3)が割り当てられて、ある時刻にはいずれか一つの論理プロセッサ上で定められたタスクが必ず一つ実行されているので、論理プロセッサから見ると、見かけ上、論理プロセッサによる処理時間に無駄がない。また、それぞれの論理プロセッサはそれぞれ論理的に独立したタスクを実行するため、論理プロセッサから見た場合、見かけ上は、他の論理プロセッサへ切り替えられても、一般のマルチタスク方式におけるタスク切り替え発生前のレジスタ群の内容退避と、タスク切り替え後のレジスタ群の内容回復が不要になる。このため、論理プロセッサから見ると、タスク切り替え時のオーバーヘッド時間を無くすことができる。しかし実現上、論理プロセッサは物理プロセッサ上でプログラムにより実行するため、物理プロセッサ側から見ると、レジスタの退避、回復処理は必須となる。このため、実質的なタスク切り替えに関わるコンテクストスイッチ処理のオーバーヘッド時間の削減とはならないことに加え、一つの論理プロセッサが一つのタスクを実行する時間区間では、他のタスクを実行すべき論理プロセッサが停止状態を余儀なくされる。よって、こうした複数の論理プロセッサ全体のスループットは大きく低下し、コンピュータシステム全体を効率よく実行することが困難となる。
【0008】
特許文献2では、ハードウェア条件として、SMP構成のマルチプロセッサを用い、マルチスレッド動作よりもシングルMPUコアの動作の方が高速である場合には、マルチスレッドを複数のMPUコアに分配せずに、シングルMPUコア上でマルチスレッドに分解しないまま、シングルスレッド処理を実行する手段として、いわゆるマイクロカーネルと呼ばれるプログラム階層上の手段を開示している。
【0009】
ASMP方式では、実行するOSとその応用ソフトがMPUコアに専従して静的に割り振られるため、応用プログラムに事象待ちが発生すると、その事象が発生するまで、対応するMPUは処理するタスクが無く、アイドルタスクを実行する状態になるが、特許文献3では、ASMP方式を基礎としてマルチプロセッサシステムのスループット向上をするために、こうしたASMP方式で発生するアイドルタスク実行の無駄なCPU時間を、別の仮想マシン上の処理を分割して実行させようとする技術が提案されている。しかしながら、並列タスク分解の処理手段としてのアルゴリズムは開示されていない。
【0010】
特許文献4は、マルチプロセッサを高速に効率よく走らせるMPUのキャッシング方式に関し、SMP方式、ASMP方式に切り替えて、それに適合するキャッシング動作機能を開示している。マルチプロセッサ内部のキャッシング動作方式そのものを、SMPとASMPのマルチプロセッサ動作におけるキャッシング動作振る舞いが異なる性質に着目して、高速動作のための手段としたものである。
【0011】
なお、特許文献4に記載された従来の分散メモリ構成を用いてMPUによるプログラム処理を同時並列実行させるハードウェアは、バスインタフェイスにより複数の各MPUボードが接続されるという構成のため、ハードウェア構造が複雑になり、またプリント基板上ではシステムバスの転送周波数を上げることが、高周波におけるプリント基板配線を伝送路と見た場合の物理的性質(表皮効果によるプリント基板上配線パターンの高周波抵抗成分の増大、システムバス伝送路上の特性インピーダンス不整合によるデジタル信号波形の歪みの発生)により、誤りのない高速デジタル信号伝送が極めて難しくなり、システムバス高速動作のためにクロック周波数を上げるためのプリント基板上の配線実装が困難になる。
【0012】
こうしたバス転送高速化が困難なハードウェア配線実装による構成では、MPU基板の共通システムバスの転送速度がボトルネックとなって、各MPU基板の処理能力に限界を生じさせることや、システムバス上に共有メモリを置くので、複数の各MPU基板からの共有メモリアクセスの調停をするために共有メモリへのアクセスが遅れ、システムバスの転送速度と各MPU基板の処理速度に限界制約が加わり、システム全体で印刷処理スループットを向上させることが難しくなる。
また、開発時のプロセッサごとのプログラムデバッグ作業において、デバッガがMPU毎に複数必要になるとともに、プログラム処理の同期停止が出来ないか著しく困難になるなど、開発上のデバッグ作業が困難になるという問題もある。
【0013】
また、特許文献4には、描画管理タスクが空描画を実行することで、印刷環境パラメータを、対応する頁の画像描画処理に先行して取得し、その先行取得した印刷環境パラメータを描画処理に与えるプログラム論理が開示されている。このプログラム論理によれば、ページ毎に印刷環境パラメータが高頻度で変化する条件下においては印刷速度の向上効果が得られる。例えば、ラインプリンタに適用されるPDLでは、カーソル位置やフォントサイズなどの印刷環境パラメータがページ内で変化し、先行ページの印刷環境パラメータ値が確定しないと、それに従属して、後続ページの印刷環境パラメータ値も確定できないため、ページの順番に従って、それぞれのページの空描画を行なうことにより、各ページ先頭の印刷環境パラメータを、各ページ画像の描画処理前に求めておけば、後続ページの画像描画処理をマルチプロセッサに分配して並列に処理できるようになり、該並列処理の効果で、印刷速度が向上する。
【0014】
しかしながら、印刷環境パラメータがページ毎に変化しないPDLでは、前記空描画を行なうことにより、かえって描画処理性能が低下してしまう。例えば近年良く使われるPDL(例えば、HPPCL6、PostScript3、PDF、RPCS等)の印刷環境のパラメータは、ジョブ先頭でデフォルト値を設定する応用や、各ページ先頭で印刷環境をあらかじめ確定させる応用もあり、こうした近年利用されているPDLの印刷応用に対して、ページの空描画は画像描画処理の高速化に寄与できない。また、jpeg、gif、tif、bmp形式等のページ単位の画像データを受信して印刷する場合も印刷環境パラメータが変化せず、空描画によって印刷スループットは逆に低下する。さらに、近年では古典的なラインプリンタ用PDLの市場での利用が減少しているという状況がある。
【0015】
特許文献5には、ネットワーク接続により、マルチMPUを同時並列実行させるハードウェアとして、LANケーブルとネットワークインタフェイスカードにより複数の各パソコンMPUを接続する構成が開示されている。しかしながら、このような構成とした場合、システムの小型化が困難になる可能性があり、またネットワーク上では、接続されるパソコンの台数が増えるほど通信データが衝突して通信のリトライが発生し、通信効率を上げにくくなり、実効データ転送速度が飽和する上限限界が現れると考えられる。このため、ネットワークケーブル上のデータ転送速度の限界がボトルネックとなり、各MPUの処理能力を一定以上向上させることができず、その結果、各パソコン上のMPU処理速度も上限の限界制約が加わり、印刷処理スループットの向上が困難となり得る。
【0016】
特許文献6にも、複数のパソコンを用いて画像描画処理を並列に実行するハードウェア構成が開示されている。特許文献6において、並列の描画処理を行なうコンピュータは、カラープリンタのインク、C(シアン)、M(マゼンタ)、Y(イエロー)、K(黒)の全4原色に合わせた色毎に並列したメモリへの画像描画を実行するものである。この方式によれば、カラー1ページ分の画像描画が、インクの原色数分だけ並列に処理されるので、1ページ分のカラーページ描画処理と印刷を高速化することができる。しかしながら、1ページ分の並列化は、原色数分(本例では4色)以上の並列化ができず、このためCMYKのうち最も時間のかかる描画処理が完了するまで他のMPUの描画処理が待ち状態となり、無駄時間をアイドルするという問題がある。さらに、個々の単一ページの描画を並列処理で高速化するという原理上、複数ページの描画を高速化することが不可能となる問題がある。
【0017】
特許文献7には、複数OSの同時実行を可能とし、GNU/Linux環境のドライバソフト、アプリケーションソフトなど、豊富なソフトウェア資源を利用可能にし、uITRON等のRTOS(Real Time Operating System)を配下において、最悪応答時間内のリアルタイム応答性を保証できるOSの構造、及び複数のOSがシステム内で同時に走行可能なOSの仮想化の概念が開示されている。
【0018】
さらに、現在市場で使われている仮想化技術ソフトには、Xen、MicrosoftHyper−V等、多数の製品があるが、いずれも仮想マシンを、同時に独立性を持って走行できるように効率化が図られているので、仮想マシン間の連携動作によるコンピュータシステム全体を最適に高速化することは、構造的に困難な性質が伴うと考えられる。
【発明の概要】
【発明が解決しようとする課題】
【0019】
従来の単一のMPUコアを内蔵するCPUを用いたプリンタ制御装置内の処理は、デバイスの終了待ち時にタスク切り替えを行い、別のタスクをMPUコア内で実行させるという方式をとっているため、デバイス待ちの発生していないシステムの状態で実行されるタスクは一つのみで、他に実行可能状態のタスクがあっても、複数のタスクの同時実行ができず、それ以上スループットを上げられない状態が発生してしまうという問題があった。
【0020】
また、SMP方式によるマルチプロセッサの制御は、一つのプロセスと呼ばれる処理の単位を、同時並列処理するためにマルチスレッドに分解し、個々のスレッド実行をMPUコアに割り当て、同時並列処理を実行する方式であるが、プロセスの処理を過去の演算結果を用いて実行する場合、演算結果が求められた後に処理を行なうという時間的従属性を伴うことから、時間的に不可分なプロセスの処理を並列同時スレッド処理に分割できないため、処理のスループットが上げられないという問題があった。
【0021】
一方、ASMP方式によるマルチプロセッサの制御においては、マルチプロセッサのそれぞれのMPUコアへ、別々の専従したプログラムを対応させて実行させる。すなわち、基本的には各MPUコアが独立した無関係のプログラム処理を実行させる構造である。従って、相互に依存関係を持つ複数のプログラムを並列に同時走行させて、システム全体のスループットを上げることは出来ないという問題があった。
【0022】
また、ナノカーネル、ADEOS等のソフトウェア手法を用いて、マルチMPUシステムを動作させるには、命令ポインタを複数制御して、同一のメモリ空間内で複数スレッドを並列実行させる。このため、相互のスレッドで共用するメモリ空間上の変数が内容破壊を起こすことを原因にしてプログラム暴走を招いたり、複数のOSを同一空間で同時に実行させるというプログラム論理の複雑さを原因とするプログラム論理不良の不具合が発生しやすくなり、プログラム実行の信頼性及び安全性の保証が難しいという問題がある。
【0023】
共有メモリ式分散処理システムでは、前述の特許文献4と同一の基本方式をとるため、共有メモリと、複数のMPUボードを接続するインタフェイス(例えば、VMEバス)では、特許文献4と同様に、インタフェイス上のデータ伝送路が、その電気的物理的性質により配線長が延びるほどの転送速度が低下し、バス上でのデータ波形がインピーダンス不整合により周波数が高くなるほど歪み易くデータの伝送が正しく行われない場合があり、また、伝送路の金属膜表面の表皮効果により周波数が高くなるほど抵抗成分が大きくなるため、高速になるほど信号を伝送しにくくなるという問題があり、MPU間インタフェイスバスの速度に限界が生じることによって、一定以上の並列処理による高速化を実現できないという問題がある。
【0024】
前述の共有メモリ式分散処理システム、及びネットワーク式分散処理システムも、前述のSMP構成のマルチプロセッサ方式と同様に、プロセスの処理が過去の時刻に演算した結果を用いて現在の処理を行なう場合において、プロセスそのものは、一旦演算した結果が求まった後、その演算結果を利用して処理を実行するという時間的な従属性を伴うため、時間的に不可分なプロセスの処理を並列同時スレッド処理に分割できず、処理のスループットが落ちてしまうという問題がある。
【0025】
一方、従来のMPU内部のパイプライン処理は、MPUの命令フェッチ、命令デコード、命令実行の並列処理がMPU内部のハードウェア処理を、MPU内部のパイプライン処理と呼ばれるハードウェアによる並列処理により、MPUが読み込む機械語命令を高速に実行するものであって、一般のプログラム処理では、こうしたパイプライン処理を意識せず、また該パイプライン処理を直接制御することはできないので、プログラムの並列処理には利用できない。
【0026】
本発明は、以上に述べてきた課題に鑑みてなされたものであって、複数MPUコアをASMP方式により制御することで複数のプロセスを同時に並列処理可能とし、かつ従来の単一MPUコア内蔵のCPU上のマルチタスク方式、および複数MPUコアを持つSMPによるマルチスレッド方式よりも処理速度を速くし、かつ該並列処理を高信頼に実行可能なプリンタ制御装置を提供することを目的とする。
【課題を解決するための手段】
【0027】
上記課題を解決するために、本発明に係るプリンタ制御装置は、以下のとおりである。
〔1〕 複数のMPUコアを有するCPUを備え、非対称型マルチプロセッサ(ASMP)方式により、ホストコンピュータからのPDLを所定の単位のデータブロックとして受信する受信処理プログラムを実行する第1のプロセス、受信した前記データブロックを描画コマンド列に変換するデータ解析処理プログラムを実行する第2のプロセス、前記描画コマンド列をビットマップ画像に変換する画像描画処理プログラムを実行する第3のプロセス、及び前記ビットマップ画像をビデオ信号に変換して印刷エンジンへ送信するビデオ信号送信処理プログラムを実行する第4のプロセスを、前記複数のMPUコアへそれぞれ割り当てるとともに、
前記各プロセス間の情報を伝達するFIFO式バッファのデータ通信手段を備え、該FIFO式バッファのデータ通信手段により、前記MPUコアにおける一つのプロセスの処理結果を、次段のプロセスを実行する前記MPUコアへ伝達することにより、前記各プロセスを同時に並列実行させることを特徴とするプリンタ制御装置である。
〔2〕 仮想化技術によって物理マシン上に作成された複数の仮想マシンと、前記複数の仮想マシンのそれぞれの並列実行を管理する仮想マシンモニタとを備え、
前記各プロセスが前記仮想マシン上に応用プログラムとして実装されるとともに、
前記仮想マシン間の情報が、前記仮想マシンモニタの制御下において、前記FIFO式バッファのデータ通信手段により伝達されることを特徴とする前記〔1〕に記載のプリンタ制御装置。
〔3〕 前記仮想マシン間の共有メモリを有する仮想マシンモニタを備え、前記FIFO式バッファのデータ通信手段のデータ送受信手順を、前記仮想マシン内に置かれたRTOS(Real Time Operating System)上のシステムコール関数を拡張したライブラリ関数として有し、
前記仮想マシンモニタ制御下において前記ライブラリ関数を実行し、前記共有メモリ上におけるバッファメモリ領域の割り当て及びその開放、並びに前記バッファメモリを用いたデータ送受信を実行して、前記各プロセスの実行同期をとることを特徴とする前記〔2〕に記載のプリンタ制御装置である。
【発明の効果】
【0028】
本発明によれば、従来の単一MPUコアを持つCPU上のマルチタスク方式、および複数MPUコアを持つSMPによるマルチスレッド方式よりも処理速度が速く、複数のプロセスを同時に並列処理可能であり、かつ該並列処理を高信頼に実行可能なプリンタ制御装置を提供することができる。
また、それぞれのプロセス処理が、仮想化技術のソフトウェア構造により、それぞれの仮想マシン内で、同時にかつ安全に並列実行されるので、並列処理の効果で印刷スループットがより向上するとともに、仮想マシン内で安全にプログラムを実行することによってシステムが誤動作しにくい、安全な印刷システムとすることができ、印刷システム全体の信頼性を向上させるプリンタ制御装置を提供することができる。
さらに、既存のRTOSをそのまま利用可能であるため、前記応用プログラムのプログラミングが容易なプリンタ制御装置を提供することができる。
【図面の簡単な説明】
【0029】
【図1】本発明のプリンタ制御装置全体のハードウェア構成の一例を説明する概略構成図である。
【図2】各MPUコアと実行するプログラムの対応関係を示す説明図である。
【図3】本発明のプリンタ制御装置のソフトウェア全体構造の一例を示す説明図である。
【図4】プログラム処理の同時並列実行の概念を説明する説明図である。
【図5】ブートプログラムの論理を示すフローチャートである。
【図6】各MPUコアでRTOS(Real Time Operating System)を自動実行する流れを示すフローチャートである。
【図7】受信処理プログラム実行の流れを示すフローチャートである。
【図8】データ解析処理プログラム実行の流れを示すフローチャートである。
【図9】画像描画処理プログラム実行の流れを示すフローチャートである。
【図10】ビデオ信号送信処理プログラム実行の流れを示すフローチャートである。
【図11】RTOSに拡張付加するシステムコール関数名称、機能、引数を示した表である。
【発明を実施するための形態】
【0030】
以下、本発明に係るプリンタ制御装置について図面を参照して説明する。なお、本発明は以下に示す実施例の実施形態に限定されるものではなく、他の実施形態、追加、修正、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【0031】
本発明のプリンタ制御装置は、複数のMPUコアを有するCPUを備え、それら複数のMPUコアを非対称型マルチプロセッサ(ASMP)方式を用いて、ホストコンピュータからのPDLを所定の単位のデータブロックとして受信する受信処理プログラムを実行する第1のプロセス、受信した前記データブロックを描画コマンド列に変換するデータ解析処理プログラムを実行する第2のプロセス、前記描画コマンド列をビットマップ画像に変換する画像描画処理プログラムを実行する第3のプロセス、及び前記ビットマップ画像をビデオ信号に変換して印刷エンジンへ送信するビデオ信号送信処理プログラムを実行する第4のプロセスを、前記CPU内部の前記複数MPUコアそれぞれへプロセス実行を割り当てるとともに、前記各プロセス間の情報を伝達するFIFO式バッファリングのデータ通信手段を備え、各MPUコアにおける前記各プロセスの処理結果を、前記FIFO式バッファリングのデータ通信手段により、次段のプロセスを実行するMPUコアへ、処理対象となる情報を伝達することにより、前記各プロセスを、各MPUコア毎に同時に並列実行させる。
また、仮想化技術によって物理マシン上に作成した複数の仮想マシンを備え、前記各プロセスを、前記仮想マシン上に応用プログラムとして実行するとともに、前記仮想マシン間の情報を、前記FIFO式バッファリングのデータ通信手段により、次段のプロセスを実行する仮想マシンへ伝達させる。
さらに、前記複数の仮想マシンは、仮想マシンモニタによりそれらの実行を制御され、仮想マシン間の共有メモリを用いて、前記FIFO式バッファリングのデータ通信手段の送受信手順を、前記仮想マシン内に置かれたRTOS(Real Time Operating System)上のシステムコール関数を拡張したライブラリ関数として有し、該ライブラリ関数を用いて前記仮想マシンモニタとソフトウェア実行のためのインタフェイス(関数の呼び出しと、関数呼び出しにかかわり引数の入出力を可能にすること)をとり、前記共有メモリを介して前記仮想マシン間のデータの送受信を実行し、前記各プロセスの実行順番を正しく保証する実行同期をとる。
【0032】
図1に、本発明のプリンタ制御装置のハードウェアの全体回路構成を示す。
高速マルチコアCPU(Central Processing Unit)10は、ワンチップ内に複数のMPUコア101〜104(図1では、MPUコア1、MPUコア2、MPUコア3、及びMPUコア4の4個のMPUコア)がCPUパッケージに内蔵され、それぞれのMPUコア101〜104が並列にプログラムを実行することが出来る。高速マルチコアCPU10の内部には、それぞれのMPUコアの実行を高速化するための命令キャッシュメモリ及びデータキャッシュメモリを備える。
【0033】
高速マルチコアCPU10は、その外部端子にそれぞれのコアをリセット及びリセット解除するリセット用信号線(図示せず)を備える。高速マルチコアCPU10とメインメモリ11は、高速メモリバス12で直接接続され、高速メモリバス12と高速I/Oバス13a、13bとを独立・分離化して設けることで、メモリバスとI/Oバスとを共有するバス構成で発生するバス調停によるデータ転送遅れのオーバーヘッドを無くしている。
【0034】
メインメモリ11には、ブートプログラムを記憶するROM130及びRAM131で構成し、ハードディスク20からローディングするプリンタ制御に必要な「受信処理プログラム」、「データ解析プログラム」、「画像描画プログラム」、及び「ビデオ信号送信プログラム」、並びにRTOSをRAM上にローディングして配置する。
図1に示す実施態様では、ブリッジLSI−1(14)によって、従来のパソコンハードウェア基本構成で共用されていたCPUとメインメモリ間の高速メモリバス12と、高速I/Oバス13aとを分離することで、双方のバス転送速度を高速化できるバス構造としている。またブリッジLSI−1(14)から、PCIexpressインタフェイス15aによりネットワークインタフェイス基板16を接続し、PCIexpressインタフェイス15bにより印刷エンジンインタフェイス基板17を接続する。
【0035】
さらにブリッジLSI−2(18)によって、PCIexpressバス15a及び15bと、Serial−ATAバス19を分離し、双方のバス系転送速度を高速化できるバス構成とし、ブリッジLSI−2(18)からS−ATA(SerialATA)バス19を引き出し、ハードディスク20を接続する。ハードディスク20へは、前述の各種プログラムファイルと、プログラム実行に必要なデータファイルを記憶する。ハードディスク20内は、4個の仮想マシン(VM1、VM2、VM3、VM4)の記憶と実行用に、4つのパーティション(記憶領域)201〜204を有し、それぞれのVMパーティション201〜204内に、必要なRTOS、アプリケーションプログラム、及びデータをファイルとして記憶する。
【0036】
図2に、高速マルチコアCPU10内の4個のMPUコア101〜104に関連づけられ、実行されるそれぞれのプログラムとの対応関係を示す。
図2に示す実施態様においては、仮想化技術を応用して、4つの物理CPUと4つの論理CPUとを1:1で対応させているが、本実施態様のように物理CPU数と論理CPU数とは1:1には限定されず、仮想化技術により、物理CPU数以上の論理CPUをプログラムにより論理的に生成・実行することも可能である。
たとえば、ページ画像描画処理プログラムは、本実施態様では、一つの論理CPU上で実行されるが、このページ描画処理プログラムを複数の論理CPUに割り当てて並列処理させることもプログラム次第で可能である。この原理は、物理CPUの個数が変わるハードウェア変更があっても、論理CPUの個数を変更するプログラム修正を容易とする利点を有する。
【0037】
図2の実施態様では、論理CPU1(111)に対応したMPUコア1(101)は、受信処理プログラム(AP1)を実行する第1のプロセス、論理CPU2(112)に対応したMPUコア2(102)はデータ解析処理プログラム(AP2)を実行する第2のプロセス、論理CPU3(113)に対応したMPUコア3(103)は画像描画処理プログラム(AP3)を実行する第3のプロセス、論理CPU4(114)に対応したMPUコア4(104)はビデオ信号送信処理プログラム(AP4)を実行する第4のプロセスをそれぞれ割り当てることにより、すなわち、異なる処理プログラムをそれぞれ独立したMPUコアに専従して割り当て、さらにMPUコア毎に実行するプロセスそれぞれを、RTOS制御下でマルチタスク方式をとることにより、一個のMPUコアを持つCPUによるマルチタスク処理方式では得られない、より高速化した並列プログラムの同時実行が実現する。
【0038】
図3に、本発明のプリンタ制御装置における複数プロセスの同時並行処理を実現するソフトウェア構造を示す。
図3に示すソフトウェア基本構造は、インテル社の最新仮想化技術であるIntel(R) Virtualization Technology(Intel(R) VT)を実装したCPU上に、仮想化技術を適用し、仮想化されたコントローラハードウェア上に、4つの独立した仮想マシン(VM1(201)〜VM4(204))を置き、それらの仮想マシン毎に図2に示した4つの処理をアプリケーションプログラム(AP1〜AP4)として割り当てて実行する。なお、図3中の点線は、各メモリレイヤの分離概念を示している。各仮想マシン間は、仮想マシンモニタ(VMM)21中のVM間通信関数210とVM間共有メモリ211を用いて命令やデータをFIFO(First In First Out)式バッファを使用して送受信し、図2及び図4に示した並列処理を実現する。
【0039】
仮想マシンモニタ(VMM)21は、Intel x86系CPU構造内に新たに定義されたVMXRootと呼ばれるメモリレイヤ(層)(Intel x86MPU)41の中に保護され、全仮想マシン(VM)の実行を管理するプログラムとして実行する。
図3に示すソフトウェア構造では、プロテクトモードと呼ばれるIntel社のCPUハードウェアの持つメモリ保護機能を利用して、メモリの記憶内容破壊やデータを誤って命令として実行されることを防ぐように、リング0メモリレイヤ(Intel x86MPU)42にRTOS24を置き、リング3メモリレイヤ(Intel x86MPU)43に応用プログラムAP1〜AP4を置く。また、それぞれ独立した仮想マシン(VM)を4個(VM1(201)〜VM4(204))持ち、それぞれの仮想マシン(VM)内にRTOS24を置き、仮想マシン(VM)内の応用プログラムAP1〜AP4は、RTOS24の用意するシステムコールを呼び出して、それぞれの応用プログラムAP1〜AP4が、RTOS24制御下で、マルチタスク動作できる。
【0040】
図4に、図2及び図3で示したプログラムAP1〜AP4が、時間的に並列実行される概念を示す。
論理CPU1(111)に対応したMPUコア1(101)で実行される受信処理プログラム(AP1)、論理CPU2(112)に対応したMPUコア2(102)で実行されるデータ解析処理プログラム(AP2)、論理CPU3(113)に対応したMPUコア3(103)で実行される画像描画処理プログラム(AP3)、論理CPU4(114)に対応したMPUコア4(104)で実行されるビデオ信号送信処理プログラム(AP4)は、本発明のプリンタ制御装置において、同時に並列実行される。
図4に示すように、各プロセス(具体的には、受信処理1,2,3・・・、データ解析処理1,2,3・・・、画像描画処理1,2,3・・・、ビデオ信号送信処理1,2,3・・・)は、その実行時間にばらつきを生じる。この各プロセスの処理の時間差のばらつきを吸収するように、各プロセス間のデータをFIFO式バッファリングで送受信して、可能な限り並列処理の同時刻で同時実行させる。
【0041】
すなわち、受信処理プログラムAP1は、コンピュータ30から受信したデータブロックをVM間共有メモリ領域211にFIFO式にバッファリングして格納して、受信データブロックの先頭アドレスと長さを、VM間通信関数210を呼び出してMPUコア2(102)のデータ解析処理プログラムAP2へ渡す。データ解析処理プログラムAP2は、FIFO式バッファから受け取った受信データブロックを描画コマンド群に変換し、FIFO式でバッファリングしてVM間共有メモリ211へ記憶した後、画像描画プログラムAP3に渡し、受け取った受信データブロックのメモリ領域をVM間共有メモリ211から削除する。
次に画像描画プログラムAP3は、VM間共有メモリ211上の1メモリブロック分の描画コマンド群をバッファリングしたFIFO式バッファから順番に入力して、ビットマップ形式の画像描画演算を実行して、VM間共有メモリ211へ、1頁分の描画済み画像データをビットマップ形式で記憶し、VM共有メモリ211上の描画コマンド群を削除する。次にビデオ信号送信処理プログラムAP4は、1頁分の描画済みビットマップ画像データをバッファリングされたFIFO式バッファから順番に入力して、印刷エンジンインタフェイス基板17を制御して、印刷エンジン31へビデオ信号に変換して送信し、1ページ分の画像データをVM間共有メモリ211から削除する。そして印刷エンジン31は、受信したビデオ信号による画像を、用紙に印刷する。
こうして、MPUコア1〜4(101〜104)の各プログラムAP1〜AP4が同時かつ並列に実行され、一連の印刷工程が高速に実行される。
【0042】
ここで、本発明のプリンタ制御装置において印刷スループットが向上する原理を説明する。
最新のCPUは、集積回路の内部配線微細化に伴い、内部クロック周波数をその限界まで上げられるので、MPU内の演算速度が向上する。現在では、高密度微細集積化製造法の進歩により、CPUパッケージ内部には複数のMPUコアを配置実装出来るようになり、MPU内部配線が微細化するので、より安定したより高速のプログラム処理が可能となっており、従来のプリント基板上にMPU間の共通バスを置くような分散メモリ型の複数MPU基板構成に比較し、はるかに安定して高速のマルチプロセッサ動作が出来るようになっている。
CPU内部に複数のMPUコアを実装する構成では、SMP方式及びASMP方式があるが、SMP方式の計算機では、実行する1プロセスを、並列処理が可能な部分をマルチスレッドと呼ばれるプログラムコード(一連の機械語)に分解して、複数のスレッドを同時並列に実行することで、システムスループットの改善を図る。マイクロカーネルと呼ばれるOSカーネルでは、こうしたマルチスレッド処理を可能にするOSのシステムコールを、応用プログラムから呼び出せるシステムコールを実現している。SMP方式のマルチプロセッサ構成とマイクロカーネルによるOSを使用すれば、マルチスレッドに分解できる並列処理部分が多いほど、そのスループットは向上する。しかし、応用プログラム全体の処理は、一般には並列処理できない処理部分が多い。
【0043】
例えば、下記の式(1)〜(3)の並列計算について考える。
X=A+B ・・・式(1)
Y=C×D ・・・式(2)
Z=X/Y ・・・式(3)
式(1)及び式(2)は、独立に計算できるので、並列処理が可能である。しかしながら、式(3)は、式(1)と式(2)の両方の計算結果であるX及びYの値が確定するまで処理を待たなければならない。こうした過去の演算結果について時間的従属関係を持つ処理は原理的に並列計算ができず、時間的従属関係を持ちながら順番に処理する必要がある。よって、並列処理の割合が少ないほど、SMP方式のスループットは低下する。
また上記の例では、式(1)の加算のステップと式(2)の乗算のステップでは、通常、加算よりも乗算のほうが演算時間がかかるため、式(1)と式(2)の並列処理では、処理終了までの時間差が発生する。すなわち、式(1)を実行するスレッドが終了した時点で式(2)は演算中であるため、式(3)の演算は、式(1)及び式(2)の両方が終了してから演算を開始する。このため、式(2)と式(1)との演算時間の差分は、式(1)を実行しているスレッドのMPUコアの待ち状態を生じ、これがマルチスレッド並列処理のオーバーヘッド時間になる。
【0044】
また、CPUで実行するプログラムは、キャッシュメモリに実行する機械語がメインメモリから読み込まれていれば、メインメモリにアクセスしない分、処理が高速化する。すなわち、キャッシュメモリへのヒット率が高いほど、プログラム処理のスループットが向上する。しかしながら、マルチスレッドの処理が、キャッシュメモリに入りきれない場合は、メインメモリへのアクセスが発生するので、SMP方式計算機の処理スループットは低下する。このように、キャッシュメモリのヒット率を上げることが、プログラムの高速化処理のポイントの一つになる。
【0045】
一方、ASMP方式を利用すれば、MPUコアのそれぞれに特定のプロセスを専従させるように割り当てて処理できるので、キャッシュメモリ容量を十分に大きくとり、かつMPUコア内部の論理による分岐予測を最大限利用するとMPUキャッシュメモリのヒット率を向上でき、SMP方式よりもさらに高速のプログラム処理が可能となる。また、マルチコアMPUでは、高速メモリバス(FSB)のクロック周波数も現在1GHzを越え非常に高くなっているので、ASMP方式でアクセスされる共有メモリも、現時点での最速アクセスが可能となる。
このように、SMP方式とASMP方式のマルチプロセッサでは、キャッシュアクセス動作に異なる性質が見られ、ASMP方式のほうがキャッシュヒット率が高くなる応用の可能性が出てくる。
【0046】
本発明のプリンタ制御装置では、ASMP方式により、CPU内部のMPUコアへ、RTOSをベースに置く各プロセスをそれぞれ個別のMPUコアに対応させて割り当てるが、各プロセスは、過去の演算結果への依存関係があるために、受信処理プログラム(AP1)、データ解析処理プログラム(AP2)、画像描画処理プログラム(AP3)、ビデオ信号送信処理プログラム(AP4)の順番で実行される必要がある。すなわち、図4に示すように、各プロセスに対し、次段のプロセスを一周期の処理時間分ずらし遅らせて実行すること、及び各プロセスの処理結果をFIFO式バッファを用いる仮想マシン(VM)間通信により次段のプロセスへ伝達することにより、同時並列処理を高効率化している。
【0047】
なお、ASMP方式のマルチプロセッサにおいても、SMP方式と同様に、メインメモリがMPUコア間で共有されるため、メインメモリへの同時アクセスによるバス調停が発生する。ここでは、各MPUコアからメインメモリの間の高速メモリバス(FSB)が高速I/Oバスと独立して分離され、かつメモリバスも複数チャネル化し、さらにメモリバスクロック周波数そのものも非常に高くなっているので、従来よりもメモリアクセス速度が著しく向上している。
このため、各プログラム処理を各MPUコアに割り振って同時並列処理させることにより、印刷スループット全体を著しく向上することができる。
本発明のプリンタ制御装置のASMP方式の印刷スループットは、従来のASMP方式に対して、4つのプロセスが完全に並列に動作できるので、最大約4倍程度の性能向上が見込まれる。
仮想マシンのそれぞれのメインメモリ上の仮想化メモリ領域を、MPUコアから独立にアクセス可能なバス構造をとれるハードウェア方式とすることも考えられる。この方式とすることにより、共通のメインメモリに置かれるために競合してしまう仮想メモリへのアクセスを調停する時間オーバーヘッドがなくなり、システムはさらに高速化する。
【0048】
本発明のプリンタ制御装置におけるプロセスの同時並列実行の信頼性について説明する。
ナノカーネルやADEOS等のプログラム手法を用いると、MPUの実行ポインタを複数有し、同一のメモリ空間で複数のカーネルを使って、複数のプログラムスレッドを同時に実行できるようになる。この方式によれば、マルチMPUでそれぞれMPUコアに一つのカーネルを割り当てて実行できるので、単一MPUのマルチタスク手法において2個以上のタスクが同時実行できずに実行効率が上がらないという問題を解決できる。
しかしながら、こうしたナノカーネルやADEOSの技術によると、複数のカーネル及びそれに伴うプログラムスレッドが同一メモリ空間で動作するので、一旦、メモリの内容破壊が起こると、システム内の全てのプログラムが暴走などの誤動作が起こりやすいというリスクを伴う。
そこで、本発明のプリンタ制御装置では、各プロセスを、仮想化技術を用い、独立した仮想マシン内で応用プログラムとして実行することにより、各応用プログラムが並列処理されることにより高速化でき、かつ応用プログラムを仮想マシン内に保護して実行することができるため、より信頼性の高い同時並列処理が可能になる。
【0049】
次いで、図4で示したプログラムAP1〜AP4が、時間的に並列実行されるプログラム論理を、図5〜図10に示すフローチャートにより説明する。
図5は、ブートプログラムの論理を示すフローチャートである。
ブート処理は、仮想マシンVM1(201)〜VM4(204)のそれぞれが、その実行プログラム実体(機械語コードによるプログラム)を持ち、それぞれの仮想マシン(VM)に対して仮想化したROM内に記憶し、MPUコアがハードウェア的にリセットを解除された瞬間に、それぞれの仮想マシン(VM)でブート処理が起動する。リセットが解除されると、ブート処理はCPU_ID変数に、関数vmc_read_cpuid()を実行することで、プログラム自身が、どのMPUコアで実行されているのかを認識する(S001)。すなわち、起動されたブート処理プログラムは、最初はプログラム自身がどのMPUコアで実行されているかがわからないので、仮想マシンモニタ21内に用意した関数、vmc_read_cpuid()を実行して初めて自身がどのMPUコア及びどの仮想マシン(VM)で実行されているかを認識し、それにより各仮想マシン(VM)で実行するように対応させて、各応用プログラムを実行できるようになる。
【0050】
ブート処理プログラムの論理先頭アドレスは、メインメモリ中の特定のアドレスにリセット解除例外(割り込み)ベクトルとして記憶されており、リセット解除後に、プログラムはその論理先頭アドレスから実行を開始する。CPU_IDが求まると、ブート処理は、次に、そのCPU_IDに対応する仮想マシン(VM)用の初期化処理を実行する(S002)。この仮想マシン(VM)用の初期化処理は、各仮想マシン(VM)用に必要な初期化処理を記述するもので、その処理内容は仮想マシン(VM)毎に異なっても良いし、全ての仮想マシン(VM)で同一でも良い。
【0051】
次に「ブート処理」は、CPU_IDに対応する仮想マシン(VM)で実行するRTOSを、ハードディスク(HD)から、VM内のメインメモリ(RAM)へローディングし(S003)、そのロードしたRTOSの先頭番地へ実行をジャンプさせる(S004)。ここでRTOSは、VM毎に異なるプログラム処理内容のものでも良く、または同じプログラム処理内容であっても良い。
【0052】
各仮想マシン(VM)内で、それぞれのRTOSは、その先頭番地から起動されると、図6に示したフローチャートの論理により、プログラムを実行する。図6は、それぞれの仮想マシン(VM)で、プログラムが自動実行される流れを示すフローチャートである。
図6ではRTOSのシェルとして、UNIX(登録商標)系OSのCシェルの実装を仮定している。実行する仮想マシン(VM)のハードディスク・パーティション内に、(例えばMS−DOSのautoexec.batに該当する).cshrcファイルが存在するかを判断し(S101)、.cshrcファイルがあれば、RTOSは.cshrcに記述されたスクリプトを実行し(S102)、プログラム処理を動作させる。.cshrcファイルが無ければ.cshrcのスクリプト実行は行わない。次いでRTOSのシェルは、コマンドの入力を待ち(S103)、入力されたコマンドを実行し、次の入力コマンドを待つループ状態に入る(S103〜S104)。
【0053】
本実施態様では、ファイル.cshrc内の記述例は、以下のとおりである。
なお、/* */で囲まれた文は、コメントを意味する。
【0054】
VM1の.cshrcファイル内記述:
recv_data /* 受信処理の実行(図7に示す処理の実行)*/
(recv_dataは、受信処理プログラム(図7に示す処理)の先頭アドレスのラベル名称を意味する。)
【0055】
VM2の.cshrcファイル内記述:
transform_PDL /* データ解析処理の実行(図8に示す処理の実行)*/
(transform_PDLは、データ解析処理プログラム(図8に示す処理)の先頭アドレスのラベル名称を意味する。)
【0056】
VM3の.cshrcファイル内記述:
Render_raster_image /* 画像描画処理の実行(図9に示す処理の実行)*/
(Render_raster_imageは、画像描画処理プログラム(図9に示す処理)の先頭アドレスのラベル名称を意味する。)
【0057】
VM4の.cshrcファイル内記述:
send_raster_image /* ビデオ信号送信処理の実行(図10に示す処理の実行)*/
(send_raster_imageは、ビデオ信号送信処理プログラム(図10に示す処理の先頭アドレスのラベル名称を意味する。)
【0058】
本実施態様では、VM1(201)〜VM4(204)の各仮想マシンは並列に実行されるので、個別のRTOS制御下において各プロセスAP1〜AP4が応用プログラムとして並列に実行される。
【0059】
図7は、受信処理プログラム(AP1)の流れを示すフローチャートである。
本実施態様において、受信処理プログラム(AP1)は、前述のブート処理とRTOSの実行により仮想マシンの一番(VM1)に実行が割り当てられてプログラムが動作する。
受信処理が起動されると、ホストコンピュータ(パソコン)30から送信されたデータを受信するための受信データバッファ領域(VM間共有メモリ211内)の割り当てを、受信バッファデータ長を引数にして関数vmc_malloc()の実行により、仮想マシンモニタ21へ要求し(S201)、仮想マシンモニタ(VMM)から割り当てられたメモリブロックの先頭アドレスを関数の戻り値として返し、該アドレスを受信バッファ先頭アドレスとする。
受信バッファのメモリ領域が確保されると、受信バッファ内にホストデータが受信されるのを待ち(S202)、データ受信が終わると、その受信データ長を受信処理へ引数で返す。
次に受信処理は、関数vmc_send_to_VM()の実行で、データ解析処理の走る仮想マシンVM2へ、受信されたバッファのデータを先頭アドレスと受信データ長の引数で渡す(S203)。
受信データは、引き続き受信を継続するためにS201へ戻り、「受信バッファのメモリ確保」、「データを受信」、「データ解析処理へ受信データを渡す」という処理順番で、受信バッファとして最大で割り当て可能なメモリ領域を使いつくすまで連続した受信とその受信データのバッファリングを可能とする。
ただし、ここで割り当てられた受信バッファのメモリ領域は、データ解析処理がそれをとりこむと、同メモリ領域を開放するので、受信データバッファが格納されるメモリ領域は動的に変化し、通常は、受信データでメモリ領域が全て使い尽くされることは無い。
【0060】
図8は、データ解析処理プログラム(AP2)の流れを示すフローチャートである。
データ解析処理は、受信バッファから受信データを指定された受信データ長分入力して、入力された受信データを画像描画するための描画コマンド群に変換して、その描画コマンド群を描画コマンドバッファに格納して、画像描画処理へ渡す。
データ解析処理は、関数vmc_malloc()を実行して、描画コマンド群を格納するのにある程度のたとえば1ページ分の描画に十分な容量程度のバッファをVM間共有メモリに確保する(S301)。次にFIFO式にバッファリングされる受信バッファ内容のデータ解析処理として、以下に示すループ処理を行う。
ステップS302では、描画コマンドバッファが、データ解析処理の進行により描画コマンドで満杯になった場合に、解析処理のループを抜けてS307へ進む。
ステップS307では、vmc_send_to_VM()関数を呼び出して、描画コマンドバッファの先頭アドレスとデータ長を仮想マシンVM3へ送信し、全ての受信データを解析処理するためにステップS301へ戻り、新たな描画コマンドバッファの割り当てをVMMから受ける。受信バッファを1ブロック取り出すと(S303)、それを描画コマンド群に変換して(S304)、読みきった受信バッファを開放する処理(S305)を、全ての受信バッファ分、描画コマンドへ変換処理されるまで繰り返す(S306)。こうして全ての受信バッファ分の描画コマンド群がバッファに完成すると、その描画コマンドバッファのアドレスと、バッファ長をVM3へ送信する(S307)。
次にデータ解析処理は、次描画コマンドバッファ作成のために、描画コマンドバッファを確保し(S301)、描画コマンドバッファが満杯になっていないことを確認(S302)すると、VM1から受信データが到着するのを待つ(S303)。
こうして、データ解析処理は、描画コマンドバッファをバッファ単位でVM間共有メモリ211へキューイングして行く。
S302で全ての受信バッファの解析処理を終える前に、描画コマンドバッファが満杯になった場合は、ステップS307へ分岐し、描画コマンドバッファの内容を、仮想マシンVM3へ送信して、次の描画バッファの確保(S301)を行う。
【0061】
前記キューイングされた描画コマンドバッファを読み出して、ページ単位の画像をVM間共有メモリへ描画し、そのページ画像データをキューイングするのが、図9にフローチャートで示す画像描画処理である。
図9の画像描画処理は、VM3内で実行される。画像描画処理は、1ページのビットマップ形式画像用のバッファ領域を確保し(S401)、関数vmc_recv_from_VM()を実行して、描画コマンド群を格納したバッファを1ブロックずつ読み出して(S402)、次いで、描画コマンドバッファから一つずつ描画コマンドを読み出し、その描画コマンドを実行して、画像オブジェクトを画像メモリ上に描画する処理を、1バッファ分の描画コマンドバッファ内の描画コマンドすべての描画を終えるまで繰り返す(S403〜S404)。
1バッファ分の描画コマンドバッファ内のすべての描画処理を終了すると、1ページ分の画像描画が完了すると判定(S406)されるまで、その描画コマンドバッファのメモリ領域を開放し(S405)、次の描画コマンドバッファの取得(S402)へ戻る。こうして描画の終了した1ページ分の画像データは、関数vmc_send_to_VM()を実行して、VM4へ渡される(S407)。画像描画処理は、次ページの画像描画のために、画像メモリバッファを確保して(S401)、次ページの画像描画処理のサイクルへ戻る。
こうして、画像描画処理の描画したページ単位のビットマップ形式画像データは、次々にVM間共有メモリへキューイングされる。
【0062】
このキューイングされたビットマップ形式画像データをページ単位で読み出して、印刷エンジンへビデオ信号に変換して、印刷エンジンへ送信するのが、図10にフローチャートで示すビデオ信号送信処理である。
図10のビデオ信号送信処理は、仮想マシンVM4内で実行される。ビデオ信号送信処理は、関数vmc_recv_from_VM()を実行して(S501)、描画されたビットマップ形式のページ画像を取り出して、エンジンインタフェイス基板17を制御して、1ページ分の画像データの全ての送信が終了するまで、ラスター形式のビデオ信号を印刷エンジン31へ送信する(S502、S503)。1頁の画像データを送信終了する毎に、送信済みの画像データバッファを開放する(S504)。
こうして、図4で示したパイプライン処理が、仮想マシンVM1(201)からVM4(204)の処理に分けられ、連携して並列実行されて印刷処理が進む。
【0063】
なお、図5〜図10に示したフローチャートで使われるvmcの名前で始まる関数は、RTOS上のシステムコール関数で、VMM仮想マシンモニタ21とインタフェイスをとるためにRTOS機能に追加するものであり、図11の表に記載された機能を実行するものを、RTOSの関数ライブラリを拡張して用意する。ここでの拡張関数は、既存RTOSをそのまま利用できるプログラミング環境で、VMM仮想マシンモニタ211をアクセスするシステムコール関数を追加して拡張するだけなので、応用プログラムのプログラミングが容易になる。
【0064】
以上のように、本発明のプリンタ制御装置によれば、従来の単一コアMPU上のマルチタスク方式、および複数MPUコアSMPによるマルチスレッド方式よりも処理速度が速く、複数のプロセスを同時に並列処理可能であり、かつ該並列処理を独立に分離した仮想マシン内で実行することで、より高信頼に実行することができ、印刷スループットがより向上するとともに、システム誤動作が少なく、安全な構造で信頼性の高い印刷を実行できる。
また、本発明のプリンタ制御装置は、複数の画像データを描画する機能を持つ各種電子装置の制御に応用可能である。
【符号の説明】
【0065】
10 高速マルチコアCPU
11 メインメモリ
17 プリンタエンジンインタフェイス基盤
20 ハードディスク
21 仮想マシンモニタ
22 Intel(R) VT
23 コントローラハードウェア
24 RTOS(Real Time Operating System)
30 コンピュータ
31 印刷エンジン
101〜104 MPUコア1〜4
111〜114 理論CPU1〜4
201〜204 仮想マシンVM1〜VM4
【先行技術文献】
【特許文献】
【0066】
【特許文献1】特開2009−64388号公報
【特許文献2】特開2002−278778号公報
【特許文献3】特開2009−163527号公報
【特許文献4】特許第3820645号公報
【特許文献5】特開平11−259258号公報
【特許文献6】特開2002−351640号公報
【特許文献7】特表2008−506187号公報

【特許請求の範囲】
【請求項1】
複数のMPUコアを有するCPUを備え、非対称型マルチプロセッサ(ASMP)方式により、ホストコンピュータからのPDLを所定の単位のデータブロックとして受信する受信処理プログラムを実行する第1のプロセス、受信した前記データブロックを描画コマンド列に変換するデータ解析処理プログラムを実行する第2のプロセス、前記描画コマンド列をビットマップ画像に変換する画像描画処理プログラムを実行する第3のプロセス、及び前記ビットマップ画像をビデオ信号に変換して印刷エンジンへ送信するビデオ信号送信処理プログラムを実行する第4のプロセスを、前記複数のMPUコアへそれぞれ割り当てるとともに、
前記各プロセス間の情報を伝達するFIFO式バッファのデータ通信手段を備え、該FIFO式バッファのデータ通信手段により、前記MPUコアにおける一つのプロセスの処理結果を、次段のプロセスを実行する前記MPUコアへ伝達することにより、前記各プロセスを同時に並列実行させることを特徴とするプリンタ制御装置。
【請求項2】
仮想化技術によって物理マシン上に作成された複数の仮想マシンと、前記複数の仮想マシンのそれぞれの並列実行を管理する仮想マシンモニタとを備え、
前記各プロセスが前記仮想マシン上に応用プログラムとして実装されるとともに、
前記仮想マシン間の情報が、前記仮想マシンモニタの制御下において、前記FIFO式バッファのデータ通信手段により伝達されることを特徴とする請求項1に記載のプリンタ制御装置。
【請求項3】
前記仮想マシン間の共有メモリを有する仮想マシンモニタを備え、前記FIFO式バッファのデータ通信手段のデータ送受信手順を、前記仮想マシン内に置かれたRTOS(Real Time Operating System)上のシステムコール関数を拡張したライブラリ関数として有し、
前記仮想マシンモニタ制御下において前記ライブラリ関数を実行し、前記共有メモリ上におけるバッファメモリ領域の割り当て及びその開放、並びに前記バッファメモリを用いたデータ送受信を実行して、前記各プロセスの実行同期をとることを特徴とする請求項2に記載のプリンタ制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2011−152685(P2011−152685A)
【公開日】平成23年8月11日(2011.8.11)
【国際特許分類】
【出願番号】特願2010−15054(P2010−15054)
【出願日】平成22年1月27日(2010.1.27)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】