首页 / 专利库 / 软件 / 服务粒度 / Program generator

Program generator

阅读:321发布:2021-11-12

专利汇可以提供Program generator专利检索,专利查询,专利分析的服务。并且PURPOSE:To efficiently perform the automatic generation of the source code of a page descriptive language having a parallel processing syntax as a language specification, properly adjusting processing granularity. CONSTITUTION:When a printer driver 11 calls each image operation, a calling side program refers to the branch table to an image processing processing procedure performing the service for an OS by a fixed procedure. A granularity detection means 48 counts the calling via this branch table and holds the code output till grading becomes sufficiently large as a processing unit. A parallelized location detection means 49 detects the processing accompanied with a picture element generation from each image processing procedure and selects a location whose processing granularity is sufficiently large and which does not depend on a processing preceded by the picture element. The printer driver 11 outputs a complex sentence to be a processing unit in accordance with the grammar of a parallel syntax at the location selected by the parallelized location detection means. As a result of the processing, the source code including the parallel execution part is outputted in accordance with the grammar of a page descriptive language.,下面是Program generator专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】 図形、文字により構成される文書の印刷に際し、”印刷を行なうアプリケーションプログラムが処理する画像操作手順を”、プログラム言語の文法に従ったソースコードにより書き出す装置であって、 前記の一連の画像操作手順の中から、前置の画像操作には依存せず、独立して処理を行なう事ができる位置を検出する並列化位置検出手段と、 前記の一連の画像操作手順の中で、個々の操作が呼び出す画像処理手続きを数え、並列処理に適切な処理単位の大きさ(粒度)を測定する粒度検出手段とにより構成され、 取り出された並列化位置と、予め定めた粒度の値を、いずれも満たした場合、プログラム言語の文法に定められた一定の構文を生成する事を特徴とする、プログラム生成装置。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【産業上の利用分野】本発明は、目的とする処理の内容を、予め定められたプログラム言語の文法に従って、ソースコードとして書き出す技術(ソースコードの自動生成)に関連する。 特にパーソナルコンピュータの印刷処理において、文書の毎ページあたりの文字、図形等の画像操作の手順を、ページ記述言語と呼ぶプログラム言語の文法に従って書き下す手段に関連する。

    【0002】

    【従来の技術】

    1. 並列処理 処理速度を向上させる技術の一つに並列処理がある。 並列処理を行なうためには、次の2つの段階が必要である。

    【0003】(1)目的とする処理の内容の中から、並列に実行することができる部分、できない部分を取り出し、処理系に識別できる記述によって伝える処理。

    【0004】(2)実際にプロセッサ資源等を複数用いて、並列実行する処理。

    【0005】本発明で行うプログラム言語のソースコード自動生成は、(1)で用いられる技術である。

    【0006】2. ソースコードの自動生成 機械によるソースコード自動生成の技術は、これまで科学技術計算などの分野に広く応用されてきた。 例えば、
    並列FORTRANコンパイラ等を処理系として、行列計算等に多く使用される「多重化されたDOループを分解し、並列に実行可能なソースコードを作り出す」技術がある。
    特開平3-188529号公報、特開平2-132525号公報は、共有変数の扱いなどのプログラム言語の特徴に従い、効率の良い並列化ソースコードをどのように作り出すかを課題とした発明である。

    【0007】並列処理プログラムのソースコード自動生成では、並列実行したときと逐次実行したときで結果に差異がないことを保証する必要がある。

    【0008】3. ページ記述言語 ページ記述言語と呼ばれるプログラム言語がある。 このプログラム言語は、図形または文字についての記述手順を表したプログラムのソースコードを入として、画素データを出力する。 出力先のデバイスは、プリンタであっても良いし、CRTやファクシミリ装置であっても良い。 例えば、ページ記述言語は、直線の画素を作り出すための命令語を持っているので、使用者が{直線命令の命令語、開始位置の座標データ、終了位置の座標データ}という程度の情報を与えれば、ページ記述言語の翻訳実行プログラムは、画素を作り出す操作を行う。 このために、アプリケーションプログラムにとり、表示または印刷の処理では、画素データを毎回作り出す操作より、ページ記述言語のソースコードを出力する操作の方が簡単である。

    【0009】4. ページ記述言語文法に従ったソースコード生成 アプリケーションプログラムが、ページ記述言語の文法に従ってソースコードを生成する技術は、科学技術計算分野で用いられるソースコード機械生成の技術と似ている。 しかしページ記述言語には次に示すような特徴がある。

    【0010】(ア)繰り返し操作で作られる規則的な図形が、人の作成する文書に現われる確率は低い。 従って多くの場合、生成されたソースコードの中に、繰り返し制御のループが現われることは無い。

    【0011】(イ)画素発生操作の中に、先行して行われた処理結果に依存する操作と依存しない操作がある。
    例えば、領域を指定して画素を重ね合わせる、あるいは輝度反転する、といった操作では、下地に置かれた画素のデータによって処理結果が異なる。 この類の操作では、少なくとも先行して行われた画像と重なり合いのある領域については、逐次操作する必要がある。

    【0012】ページ記述言語を用いたソースコード生成は、以上の特徴を考慮して行なわなければならない。 出願人の特開平3-815831号公報は空間的な重なり合いを持たない図形・文字は、並列して画素発生処理を行う事ができるというアイデアに基づく。 この発明では図形グループ検出と呼ぶ図形どうしの重なり合いを検出する手段を用い、「互いに重なり合いを持たず、独立して処理可能な部分」を取り出す事によって、並列実行を記述するソースコード(または中間コード)を取り出している。
    さらに特開平3-815831号公報ではページ記述言語の文法として、並列構文の記述を前提としておらず、一度ソースコードを生成した後、ソースコードを読み取り解析して、並列実行可能な部分毎に独立した(複数の)ソースコードないし中間コードファイルを出力している。

    【0013】

    【発明が解決しようとする課題】 (1)特開平3-815831号公報の図形グループ検出手段は、生成済みのソースコードの全体について、一つ一つの操作の記述を読み取り、操作対象の領域を割り出す。
    これは多くの処理時間を必要とする。 言わば並列処理の前処理段階で時間がかかる事になり、処理対象の規模によっては、並列実行しても期待したほど処理時間が短縮されないという問題点を持っていた。

    【0014】(2)「先行する操作に依存する命令」が含まれていないソースコードでは、領域どうし重なり合う画像でも、操作単位で並行して実行して問題を生じない。 このような場合には、図形グループ検出にかかる処理時間は、全く意味の無い処理時間となってしまっていた。

    【0015】(3)並列処理の単位となる個々の図形グループは、大きさや処理工数がまちまちであり、並列実行時に均等な負荷分散とはならず、実行効率の上から更なる改善の余地を持っていた。

    【0016】本発明はこのような従来発明の問題点に鑑みて考案されたもので、その目的は、処理の並列化に際し、無駄な処理手順の発生を抑える事で、並列処理の効果をより効率よく引き出す印刷装置を提供することである。

    【0017】

    【課題を解決するための手段】本発明は、図形、文字により構成される文書の印刷に際し、”印刷を行なうアプリケーションプログラムが処理する画像操作手順を”、
    プログラム言語の文法に従ったソースコードにより書き出す装置であって、前記の一連の画像操作手順の中から、前置の画像操作には依存せず、独立して処理を行なう事ができる位置を検出する並列化位置検出手段と、前記の一連の画像操作手順の中で、個々の操作が呼び出す画像処理手続きを数え、並列処理に適切な処理単位の大きさ(粒度)を測定する粒度検出手段とにより構成され、取り出された並列化位置と、予め定めた粒度の値を、いずれも満たした場合、プログラム言語の文法に定められた一定の構文を生成する事を特徴とする。

    【0018】

    【作用】

    (1)アプリケーションあるいはプリンタドライバによる個々の画像操作において、呼び出し側プログラムは、
    画像処理手続きを、オペレーティングシステムのサービスする分岐テーブルを介して、呼び出す。

    【0019】(2)粒度検出手段は、この分岐テーブルを介した呼び出しを計数し、予め定めた値を越えた場合、粒度大と判定する。 また実際のソースコード出力を遅延する。

    【0020】(3)並列化位置検出手段は、個々の画像処理手続きから、画素生成を伴う処理を検出し、この画素生成が先行する処理に依存する場合、依存有りと判定する。 (4)アプリケーションあるいはプリンタドライバは、
    粒度検出手段が粒度大であると判定し、かつ並列化位置検出手段が依存無しと判定した場合、プログラム言語の文法に従い、並列処理を行う構文を作成する。 また、列化位置検出手段が依存有りと判定した場合は、逐次処理を行う構文を作成する。

    【0021】

    【実施例】次に本発明の説明に好適な実施例を示し説明する。

    【0022】1. 動作環境 実施例の動作環境は、次のような条件を満たす環境である。

    【0023】(1)複数台のパーソナルコンピュータ(以下PCと略)ないしはワークステーション(以下W
    Sと略)が、ローカルエリアネットワーク(以下ネットワークと略)によって接続されている。 ネットワークとして、例えばIEEE-802.xで規定された仕様が現在広く普及している。 ネットワークの機械的、電気的な接続のほかに、プロトコルと呼ぶ伝送手続きに関する規定がある。 本実施例は伝送プロトコルとして、TCP/IPを用いた。 TCP/IPは複数プロトコルの総称であるが、現在広く普及しており多くの公知資料に解説されている。

    【0024】(補)TCP/IPについて解説した公知資料。

    【0025】Douglas Comer "INTERNETWORKING WITH TC
    P/IP: PRINCIPLES, PROTOCOLS, ANDARCHITECTURE",Pren
    tice-Hall, Inc. 1988 (2)前記の条件に含まれるPC、WSの中の少なくとも1台の装置の使用者が、アプリケーションプログラムを利用する。 更に、利用者はこのアプリケーションプログラムにおいて、印刷処理を行なう。

    【0026】(3)前記の条件に含まれるPC、WSの上で、オペレーティングシステム(以下OSと略)が、
    アプリケーションプログラムの実行、停止を管理する。
    OSは各PC、WS毎に独自の仕様で良い。 しかし、いずれのOSもネットワーク上でTCP/IPのプロトコルを扱うことを前提とする。 またいずれのOSもいわゆるマルチタスク処理によって、複数の処理プログラムが、CP
    U資源を時分割して利用する事を許すことを前提とする。

    【0027】2. 実施例の構成、処理手順の概略 図1は、本発明の並列処理印刷装置の全体の構成の概略を示す図である。 構成及び処理手順は以下の通りである。

    【0028】(1)使用者が、アプリケーション1を利用し印刷処理を行なう。 アプリケーション1が、並列処理ページ記述言語(以下並列処理PDLと略)で書かれたソースコード2を出力する。 最近のグラフィカルユーザインターフェース機能を重視したOSの一部には、プリンタ制御に関する機能をアプリケーションに負担させない様に設計されたものがある。 この場合、アプリケーション1が、OSの提供するプリンタドライバと呼ぶ組み込みソフトウェアの機能(関数、手続き)を呼び出す。 呼び出されたプリンタドライバ11中の関数/手続きが、並列処理PDLで書かれたソースコード2を出力する。

    【0029】(2)並列言語コンパイラ3は、アプリケーション1(またはプリンタドライバ11)が出力したソースコード2を入力し、オブジェクトコード4を出力する。 オブジェクトコード4は、仮想機械に対する機械語及び必要なパラメータから構成されたデータ列である。

    【0030】(3)仮想機械5は、オブジェクトコード4を入力し、その機械語命令を解釈し、実行し、画素を発生する。

    【0031】(4)印刷装置6は、仮想機械5が生成した画素データを受信し、1ページ単位に印刷処理を行なう。

    【0032】以上の処理において、(1)、(2)は逐次実行される。 従ってアプリケーション1と並列言語コンパイラ3は、同一のコンピュータで実行しても構わない。 この時、アプリケーション1と並列言語コンパイラ3の間の通信7は、プロセス間通信と呼ぶ手段で行なう。

    【0033】一方、(3)は複数のPC、WSを利用して並列に実行する。 同一のプロセッサ装置が、並列言語コンパイラ3と、少なくとも一つの仮想機械5を実行しても構わない。 この場合、並列言語コンパイラ3と仮想機械5の間の通信はやはりプロセス間通信である。

    【0034】あるいは、並列言語コンパイラ3と仮想機械5が、それぞれ別のプロセッサ装置で実行されても良い。 この時は、並列言語コンパイラ3と仮想機械5の間の通信8は、ネットワークを利用して行なう。 また仮想機械5と他の仮想機械5の間の通信9、10もネットワークを利用して行なう。

    【0035】(補)プロセス間通信とネットワークによる通信に関する公知資料 W. Richard Stevens ”UNIX
    NETWORK PROGRAMING”, Pren
    tice Hall, Inc. 1990 (補)プロセスの説明 プロセスは、OSが複数の処理プログラムに割り当てるCPU時間、メモリ領域等資源の管理単位である。 プロセスは、プロセスの識別子と実行管理・メモリ管理のための情報を含むプロセスヘッダと、中断の際に現在のプロセッサのレジスタの状態を保存するための領域と、オブジェクト領域、スタック領域からなる管理単位である。 本実施例が前提とするOSは、複数のプログラムを同時に実行する。 一つのプログラムは一つ以上のプロセスで構成される。 そこで、複数プログラムの実行とは、
    プロセッサ、メモリ等の資源を時分割により、複数のプロセスにスケジュールする処理であると言い換えて良い。 プログラムとプログラムの間の通信は、実際には一つのプログラムを構成するいずれかのプロセスと、他のプロセスの間で行なわれるので、プロセス間通信という用語を用いた。 この用語は、上記文献等の公知資料でも用いられる。

    【0036】3. 本実施例の実装技術の中で公知の部分 次の技術は公知である。

    【0037】(1)アプリケーションまたはプリンタドライバによってPDLのソースコードを自動生成する技術(公知資料 Apple Computer, Inc.によるLaseWriter
    プリンタドライバプログラム他)。

    【0038】(2)並列言語向けのコンパイラ(公知資料 M. Ben-Ari "PRINCIPLES OF CONCURRENT PROGRAMMIN
    G", Prentice-Hall International, Inc. その他、複数の並列言語に関する教科書)。

    【0039】(3)ページ記述言語を、複数のプロセッサ装置により並列に実行する方法(公知資料 出願人、
    特開平3-815831号公報)。

    【0040】(4)仮想機械を用いたプログラムの実行(公知資料 中田育男 ”コンパイラ”,産業図書,1981
    その他、複数のコンパイラに関する教科書)。

    【0041】4. 本実施例の特徴 本実施例の特徴について、まず特開平3-815831号公報と同じ部分を挙げ、次に異なる部分を挙げる。

    【0042】特開平3-815831号公報と同じ処理上の特徴 (ア)複数のプロセッサ装置が、ページ記述言語で書かれたソースコードの内容を解釈し、画素を発生し、1台のプリンタを用いて印刷するまでの過程を協調して並列実行する。

    【0043】(イ)処理(ア)で、複数のプロセッサ装置のCPUのアーキテクチャおよび、オペレーティングシステムは異なっていても良い。 各プロセッサ装置のアーキテクチャの違いを、仮想機械を用いる事で吸収する。

    【0044】(ウ)処理(ア)で、複数のプロセッサ装置はネットワークによって相互に接続されている。

    【0045】特開平3-815831号公報と異なる処理上の特徴 (1)特開平3-815831号公報では、アプリケーション1
    がPDLの言語仕様に従いソースコードを出力するが、
    この時PDLの言語仕様は並列処理記述を含まない。 言い換えれば、並列PDLではない。 これに対し、本実施例は並列処理PDLの言語仕様を定義し、アプリケーション1は、並列PDLで記述されたソースコード2を出力する。

    【0046】(2)特開平3-815831号公報では、並列P
    DLを用いないため、PDLのコンパイラ前処理が、ソースコードを解析し、並列に実行可能な部分を取り出す処理を行なった。 これに対し、本実施例の並列言語コンパイラ3は、並列記述に従い一つの機械語コード列を発生する。 すなわち並列に実行できる部分は、ソースコードの中で予め指定されているので、この指定に従い処理を並列化するための複数の特別な機械語をオブジェクトコードに挿入する。

    【0047】5. 本実施例の特徴を実現する技術 本実施例の特徴は、4. (1)で述べた通り、アプリケーション(またはプリンタドライバ)が、並列処理PD
    Lの文法に従って、画像処理の内容を記述したソースコードを生成する点にある。 この特徴を実現する上で、中心となる技術は次の2つである。

    【0048】(1)粒度検出手段48 (2)並列化位置検出手段49 ページ記述言語の特徴から、「先行する画像処理結果に依存した画像操作の手続き/関数」を検出する処理が必要である。 この処理は並列化位置検出手段49に従属する。 具体的に、ページ記述言語のどの命令語が、先行する処理に依存するか判断するためには、依存する命令語を内部で記録として持てば良い。 プログラム言語の命令語は、高々数十〜百数十個に過ぎないため、命令語を辞書として持ち、ここに判別用のフラグを付加することは、実装上も容易である。 また既存技術である。

    【0049】手段48、49の動作は、図4を用い6B
    −2節で説明する。

    【0050】6. 本実施例の特徴を実現する技術の詳細。

    【0051】次に5で述べた本実施例の特徴となる技術について、詳細に説明する。

    【0052】6A. 並列PDLの言語仕様 (1)簡単な例による説明 本実施例の並列処理PDLでは、言語Pascalのサブセットに並列構文及び画像処理のための拡張を加えた言語を定義して用いた。 この言語の文法の拡張部分を説明するために、図2に簡単なソースコードの例を示した。 述語「begin」と述語「end」により囲まれた文を説明のため「複文」と呼ぶ。 図2のソースコード中で並列実行の対象となるのは、述語「proceed」21と述語22で囲まれた複数の文である。 述語「//」23で始まる文は、可能であれば他のプロセッサ装置に分散され、並列に実行される。 他のプロセッサ装置が使用できない場合、同じプロセッサ装置上で実行される。 述語「//」23に続く文は、単一の文または複文である。 複文を使用する時は24のように記述する。 述語「otherwise」25で始まる文(これも文または複文である)は、分散されず必ず自プロセッサ装置の上で実行される。 述語「otherwis
    e」25は、省略できず、なにも行なわない場合は空文(空白の文)を書く。

    【0053】(2)構文解析処理プログラムの説明 上記に説明した部分は、言語の仕様の中で、特に並列構文に関する仕様である。 構文を解析する処理プログラムを開発する有力な公知技術に、コンパイラ・コンパイラと呼ぶ技術がある。 コンパイラ・コンパイラは、言語の構文上の仕様を書いたテキストを入力して、構文解析プログラムのソースコードを出力するソフトウェアの名称である。 広く知られたものにYACCがある。 YACCはUNIXオペレーティングシステムの標準ツールとして使用される事が多い。 本実施例においても並列言語コンパイラ3の構文解析処理プログラムは、YACCを用いて開発した。
    (1)に示した並列記述の構文について、YACCの入力として与えた解析のルールの記述を図3に示した。 但しここで「//」文は「when_stm」文で表される。 これは周知の通り、YACCで使用出来る記号の制限に従ったためである。 また「proceed -end」文は文30で示される。 すなわち「proceed - end」文は、予約語PROCEEDで開始され、予約語ENDで終わり、when_body、opt_otherを構成要素に持つ。 構成要素when_bodyは予約語WHENで始まり、statementを構成要素に持つ。 ここで主な予約語に対応する文字列は次の通りである。

    【0054】予約語PROCEED = 文字列'proceed' 予約語END = 文字列'end' 予約語WHEN = 文字列'//' (注)UNIXオペレーティングシステムはUNIX Syste
    m Laboratories, Inc.が開発し、ライセンスしている。

    【0055】6B. アプリケーション1及びプリンタドライバ11のの動作 本実施例の装置での印刷処理は、並列言語コンパイラ3
    に何らかの入力を与える事で開始される。 この入力は、”並列PDL”の文法に従って記述されたソースファイルでなければならない。 このソースファイルを作り出す手段が、アプリケーション1またはプリンタドライバ11である。 以下公知の部分(6B−1)と考案した部分(6B−2)に分けて説明する。

    【0056】6B−1. 公知技術の部分 本実施例では、アプリケーションプログラムを使用する装置として、広く普及している市販のパーソナルコンピュータ用いた。 この装置の場合、印刷時にPDLのソースコードを作り出すのは、アプリケーション1ではなく、プリンタドライバ11と呼ぶ独立したサービスプログラムである。 このパーソナルコンピュータのOSの機能から見て、プリンタドライバ11はOSのサービスプログラムとして組み込まれたプリントマネージャ41と呼ぶ機能の下層プログラムと見なすことができる。

    【0057】プリンタドライバ11は、個々のプリンタの構成上の特徴に合わせてプリンタの種類毎に開発され、供給されるソフトウェアである。 従って本実施例では、本実施例の並列処理印刷装置の仕様に合わせたプリンタドライバ11を開発し、前記の市販パーソナルコンピュータに実装した。

    【0058】図4は、アプリケーション1、プリントマネージャ41、プリンタドライバ11の関係を説明する図である。 構成は次の通りである。

    【0059】(ア)このパーソナルコンピュータのOS
    の構成要素の中で、印刷と表示に関係する部分だけを4
    2に示す。

    【0060】(イ)実際の画素発生を行なう手続き/関数により構成された手段を、画像処理群43に示す。 画像処理群43は、予め用意された標準手続き44と、変更可能手続き45から構成される。

    【0061】(ウ)プリントマネージャ41は、プリンタドライバ11のプログラムを、ハードディスク装置等の補助記憶装置から、プロセッサの主記憶領域に読み込み、実行可能な状態に置く。

    【0062】(エ)デバイスドライバ46は、シリアルインターフェースの制御ICなど、物理的なデバイス4
    7を制御する手段である。

    【0063】動作は次の通りである。

    【0064】(1)アプリケーション1は、図形、文字の画素を作り出し、CRT装置に表示する際、画像処理群43の手続き/関数を個々に呼び出して用いる。

    【0065】(2)アプリケーション1は、図形、文字の画素を作り出し、印刷装置に印刷する際、プリントマネージャ41の機能を呼び出し、印刷に必要なプリンタドライバの初期設定他の処理を行なう。 (必要であればシリアルインターフェース等の実際のハードウェアに対する設定も行なう)。 プリンタドライバ11は、初期設定として、変更可能手続き45を、自分独自の処理手続き群で差し替える。

    【0066】(3)アプリケーション1は、印刷を行なう場合、(2)に続き、(1)の表示と同一の手順で画像処理群43の手続き/関数を個々に呼び出し、印刷する。 この時、画像処理群43の処理分岐プログラムは、
    標準手続き44に代替して、変更可能手続き45の処理へ分岐する。 既に上記(2)の操作が行なわれているので、この結果プリンタドライバ11が用意した処理手続きが使用される。

    【0067】(4)プリンタドライバ11は、変更可能手続き45として差し替えた手続き群を用いて、PDL
    のソースコードを生成する。 次に、デバイスドライバ4
    6を呼び出し、PDL処理手段へのデータ転送を行なう。

    【0068】より具体的に言えば、例えばPDL処理手段が印刷装置に組み込まれており、この印刷装置が、このパーソナルコンピュータとシリアルインターフェースで接続されていれば、デバイスドライバ46は物理デバイス47としてシリアルインターフェースの制御装置を指定し、データ転送を行なう。

    【0069】または図1で説明した本実施例の構成の様に、PDL処理のための仮想機械がWSに実装されているとき、デバイスドライバ46は物理デバイス47としてネットワーク制御装置を指定し、データ転送を行なう。 WSはこれを受信し、実行した後、処理結果として得た画素データを印刷装置6に転送し、印刷処理を行う。

    【0070】6B−2. 本実施例に特有の部分 本実施例では並列PDLのソースコードを出力するために、プリンタドライバ11に2つの手段を組み込んだ。

    【0071】(1)粒度検出手段48 この手段の目的は、並列実行する処理の単位が、処理を分散するために必要な時間と、実際に画素発生を行なうために必要な時間の比率から考え、適切なサイズに収まる様に管理する点にある。 本実施例の構成では、あるプロセッサ装置から他のプロセッサ装置に処理内容を転送するために、数10から百数10ミリ秒を必要とする。
    一方、直線発生、曲線発生等の、PDLソースコードに現われる一つの文の処理時間は数ミリ秒である。 従って仮に、1命令単位に処理の並列化を行なうと、処理速度はかえって遅くなる。 しかし、100から500命令程度を単位として処理の並列化を行なうとこの問題は回避できる。 この様な、並列に実行しようとする単位の大きさを「粒度」と呼ぶ。

    【0072】図5を用いてこの処理を説明する。

    【0073】(S51)1ページに対するソースコード生成処理は、ページ開始命令によって開始され、ページ終了命令を検出するまで行なわれる。

    【0074】(S52)プリンタドライバ11はできるだけ多くの部分の並列処理を前提としてソースコードを作るため、プログラム宣言部分に続いて、proceed文を出力する。 粒度検出手段48は、画像処理手続き群43
    の、変更可能手続き45に含まれる個々の手続き/関数の呼び出しに先立って処理される。

    【0075】(S53)粒度検出手段48は、計数処理S53によって、手続き呼び出しがある都度、カウンタ55を+1する。

    【0076】(S54)粒度検出手段48は、カウンタ55の値が100以上かを調べる。 100以上であれば、粒度検出手段48は、「充分粒度の大きな手続き呼び出しが行なわれた」と判断し、粒度フラグ56を=1
    とする。 フラグ56は、次に述べる手段で処理並列化の判断基準となる。

    【0077】粒度検出手段48は、これで処理を終える。

    【0078】(2)並列化位置検出手段49 この手段の目的は、画素発生の操作が、先行して行なわれた処理に依存するものか判断し、並列化の構文を生成するか否か判断する点にある。

    【0079】本実施例のPDLで、画像発生の点から見て、各命令は大きく2つのグループに分けて考える事ができる。 一つは画素の発生を伴う命令である。 例えば塗りつぶし、イメージ反転、ストローク発生等である。 他の一つは、実際の画素の発生を生じない命令であり、例えば、描画ペンサイズの指定、塗りつぶしのために領域図形の指定、ストローク発生のための、曲線形状の形成等である。

    【0080】「ある領域を指定して、画像の白黒を反転する」という操作が指定された時、先行する画像発生の様々な手続きによって形成された図形形状が下地にあれば、この形状のパターンにより操作の結果が異なる。 この様な画像処理の手続きを実行する場合、実行が必ず先行する命令の後に、(すなわち順次処理として)行なわれる様にプログラムのソースコードを出力する必要がある。 並列化位置検出手段49は、この条件を満たすものである事が重要である。 この点を図6を用いて説明する。

    【0081】(S61)並列化位置検出手段49は、最初に命令の性質を判断する。

    【0082】(S62)画素生成を伴わない命令であれば、並列化位置検出手段49は、実際の処理手続きを呼び出し、ソースコードとして用いる手続き文を生成する。 但しこの時、手続き文は直ちに出力されるのではなく、一時的にバッファ60に格納される。

    【0083】(S63)一方、S61で画素生成を伴う命令であると判断できた場合、並列化位置検出手段49
    は、さらにこの命令が先行する画素の配置に依存する命令か否か判断する。

    【0084】(S64)先行する画素に依存する場合、
    この直前に発行された「画素生成を伴う手続き文」の直後の位置で、並列記述を終了する必要がある。 そこで並列化位置検出手段49は「otherwise文」及び「end;
    文」を発行する。 次に並列化位置検出手段49は、現在バッファ60にあるソースコードを出力し、今回の命令述語を出力する。 更に、次回以降の並列実行に備え、
    「proceed文」を出力する。 この結果、ソースコード上は、一度並列実行が終了し、先行する画素に依存する操作が逐次処理された後、再び並列記述が開始されるという内容の記述が行なわれる。

    【0085】(S65)先行する画素に依存しない操作の場合、並列化位置検出手段49は、現在の処理内容の粒度を検査する。 すなわち、粒度検出手段48が設定したフラグ56の値を調べる。 フラグ56が真(ここでは=1が真)でないとき、粒度は充分な大きさに至っていないので、S62以降の処理に戻る。

    【0086】(S66)粒度が充分大きい場合、並列化位置検出手段49は、既にバッファ60に格納されている処理と今回の述語を含めた、一つの並列実行の単位があると判断する。 そこで並列化位置検出手段49は、
    「// begin」文を出力し、バッファ60の内容を出力し、今回の命令の述語を出力した後、「end;文」を出力し、一つの並列実行の単位となる複文のソースコードを出力する。 また並列化位置検出手段49は、フラグ56
    及びカウンタ54を、次回以降の使用に備えリセットする。

    【0087】(補)「ストローク発生」は、このページ記述言語において、「線の太さを伴わず定義された、図形の輪郭または線分、曲線」に対し、現在の指定ペンサイズにより、太さを与える操作を示す。

    【0088】(3)出力されるソースコードの例 図7は、図5、6の流れ図の処理に従い生成されるソースコードの例を示す。

    【0089】S52が71のプログラム開始部分を出力する。 手続き文生成処理S62は生成したソースコード中の記述をバッファ60に蓄積する。 バッファ60に蓄積された命令語数が充分多くなり(処理単位の粒度が大きくなり)、先行して配置された画素に依存しない命令で、かつ画素の操作を伴う手続きが呼び出された時、並列化位置検出手段49は「// begin」文を出力し、バッファ60の内容、「end;」文の順に記述72を出力する。 手段49は、この繰り返しにより、以下記述73
    等、複数の「// begin --- end;」形式の複文を出力する。

    【0090】しかし、先行画素に依存する手続きが一回でも呼び出された時、並列化位置検出手段49は、S6
    4を用い、「otherwise; end;」文を出力し、一つの並列実行単位74を終結する。

    【0091】このときバッファ60には、画素の操作を伴う命令が、この時点以前の最後に出力されて以来のソースコード形式により保存されている。 並列化位置検出手段49は、この内容を出力する。 この操作の結果出力された処理単位77は、74の「proceed -- end 」文の外にあり、先行する「proceed -- end 」文が終了するまで待って逐次処理される。 従って、前置の画素に依存する命令であっても、正しい処理結果が得られる。

    【0092】更に手段49は、次の並列実行構文に備え、「proceed文」75を出力する。 この繰り返しにより、再び並列実行単位74の生成が行われる。

    【0093】1ページ当たりの全ての記述が完結した場合、プリンタドライバ11は、構文76を出力する。 複数ページの印刷はこの繰り返しである。

    【0094】6C. 並列言語コンパイラ3の実装と動作 コンパイラ3は、字句解析処理、構文解析処理、コード生成処理から構成される。 前述した様に、本実施例では
    yaccを用い構文解析部分のソースコードを作成し、コンパイラを開発した。 この手段によるコンパイラの開発は、広く普及しており周知の技術である。 また字句解析処理、コード生成処理についても、公知の各種コンパイラプログラムと同様で、特別な構成を持たない。

    【0095】本実施例のコンパイラ3は、特定のプロセッサの機械語を出力せず、代わりに仮想機械を設定し、
    仮想機械の機械語を出力する。 この方法も広く普及している。 コンパイラ3は、N台のプロセッサ装置を使用し並列実行する場合でも、1つの仮想機械語のオブジェクトコードを出力する。 一つの仮想機械語のオブジェクトコードは、実行段階で処理を多重化するために専用に設計された仮想機械語を含む。 以下に例を挙げてこれを説明する。

    【0096】本実施例が画像操作に使用する手続きの例を示す。

    【0097】(a)直接画素の操作を行わない手続き newpath() … 領域定義の開始命令 penSize() … 描画ペンサイズの指定命令 penPat() … 描画パターンの指定命令 polygon() … 多形、曲線の定義命令 line() … 直線の定義命令 oval() … だ円輪郭の定義命令 他 (b)画素の操作を伴う手続き strokepath() … 輪郭、線の画素発生命令 fillpath() … 領域の塗りつぶし命令 invert() … 領域の画素の輝度反転命令 他。

    【0098】図8に簡単な並列実行文を含むソースコードの例を挙げた。 この例はコンパイラ3の処理結果を説明する目的で示したものであり、並列実行の粒度は、本実施例の並列化位置検出手段49で設定した粒度に比較し小さい。 領域80に示した図は、図8のリストに従い実行した結果得られる図形を示した図である。

    【0099】コンパイラ3がこれを入力として処理した時、出力されるオブジェクトコードを、アセンブラ書式で書き表したリストを図9に示す。 コンパイラ3は、例えば手続き文81を、アセンブラ形式で書いた時91で示される複数の仮想機械語のコード列に翻訳する。

    【0100】(補)簡単に仮想機械語を説明する。 PUSH
    C(00)は定数をスタックメモリの最上位に置く。 NEG(17)
    はスタックメモリ最上位の値の符号を反転する。 TRAP(2
    a)はソフトウェア割り込みを用い、各手続き呼び出しのディスパッチテーブルを参照し分岐を発生する。 ADDSP
    (30)はスタックポインタの値に定数を加える。

    【0101】実行段階で処理を多重化するために、コンパイラ3が出力する機械語は次の3種類である。

    【0102】(1)FORK(2f) // 文または、// begin -- end; 複文が開始される位置でコンパイラ3が生成する機械語である。

    【0103】(2)EXIT(2d) // 文または、// begin -- end; 複文が終了する位置でコンパイラ3が生成する機械語である。

    【0104】(3)WAIT(2e) proceed -- end; 文が終了する位置でコンパイラ3が生成する機械語である。

    【0105】6D. 仮想機械の動作 仮想機械5はコンパイラ3が出力したオブジェクトコード4を入力として、仮想機械語の命令語を”逐次”実行するインタープリタである。

    【0106】(ア)仮想機械の構成とその動作 (1)起動 仮想機械5の構成図を図10に示す。 仮想機械5はOS
    の管理下で実行される一つのプロセスである。 仮想機械5は通信ソケット101を介して、外部プログラムと通信する。 コンパイラ3は、コンパイル操作終了後、オブジェクトコード4をファイルとして記録し、オブジェクトコード4の仮想機械語を、仮想機械5伝える。 後処理の関係から、全ての仮想機械語は一時的に受信バッファ110に蓄積される。

    【0107】これを受信した仮想機械5は、プロセス複製手段102は自分と同一の処理を行うプロセス103
    を複製する。 この後、プロセス103が、実際に仮想機械語オブジェクトコード4を実行する。 この方法は、複数の要求を単一のプロセスで受領し、マルチタスク処理する場合の最も一般的な公知技術である。

    【0108】(2)実行 プロセス103は、通信ソケット130を介して、オブジェクトコード4の仮想機械語を逐次読み取り、実行制御手段104に渡す。 実行制御手段104は、仮想機械のスタック管理、プログラムポインタ管理を行う核となる部分で、個々の機械語の実処理への分岐を発生する。
    実行制御手段104は、個々の機械語の意味を解釈し、
    一般の制御語(スタック操作命令、演算子、ジャンプ命令)の場合、ディスパッチャを通し処理105を実行する。 また、画像操作命令(本実施例では命令語TRAP(2a)
    で開始される)の場合は画像処理ライブラリ106に含まれる個々の手続きを実行する。

    【0109】(イ)処理を並列化する機械語とその動作 実行制御手段104は特別な場合の命令語として、6C
    で述べたFORK(2f)、EXIT(2d)、WAIT(2e)を実行する。 これら各命令はそれぞれ対応するP_FORK処理107、P_EX
    IT処理108、P_WAIT処理109で構成される。

    【0110】(1)P_FORK処理107 P_FORK処理107は、プロセスの複製と等価な処理を仮想機械語のレベルで行う。 すなわちP_FORK処理107
    は、受信バッファ110を参照し、先頭から終了までの仮想機械語の命令語のデータ列を、他プロセッサ上に実装された別の仮想機械5に転送する。 図1を用いれば、
    これは通信9で示される。

    【0111】既に述べた通り、仮想機械5はインタープリタであるから、アーキテクチャの異なる他のマシンに対しても、容易に実装できる。 なぜなら、そのマシンのOSの管理下で、そのマシン固有の開発言語(例えばC
    言語やPascal言語)でインタープリタプログラムを記述し、コンパイル後、実装するだけで良いからである。 また仮想機械5と他の仮想機械との間の通信は、ネットワークを利用したソケット間の通信であり、今日広く使用されている技術にすぎない。

    【0112】他プロセッサ上に実装された別の仮想機械5は、仮想機械語を受信し受信バッファ110に蓄積し、実行する。 このとき仮想機械語を送付してきた相手が、コンパイラ3であるか、別の仮想機械5であるかは判断出来ない。 仮想機械5は単純に実行する。

    【0113】図9に戻り機械語の説明を行う。

    【0114】P_FORK処理107(すなわちFORK(2c)仮想機械語)の処理を実行した実行制御手段104は、仮想機械語の転送が正しく完了した時、処理結果として値「0」をスタック最上段に置く。 図9の命令92の後、
    処理が正しく完了すればスタック最上段の値=0である。 命令93はスタック最上段の値=0の時、アドレス相対ジャンプを行う。 ここでは16進数で+2a先のアドレスに、処理が分岐する。 従ってP_FORK処理107が正しく完了した後、この仮想機械5の実行制御手段10
    4は、16進数表示で0033番地から処理を続ける。
    この結果、処理単位94(図8の処理単位82)は他の仮想機械5が実行し、この仮想機械5は次の実行文(0
    033番地)以後の処理へ移る。

    【0115】通信障害、仮想機械の未実装などの理由で、 P_FORK処理107が正しく実行されなかった場合、スタック最上段の値は=1となる。 このとき命令語93の分岐は実行されない。 よって000a番地以後の機械語を逐次処理することになる。 また通信障害、仮想機械の未実装などの事象はエラーとして検出され、エラー時にはP_EXIT処理108は無視される。 従ってP_FORK
    処理107に失敗した場合は、図9に示すような並列処理を含む機械語列であっても、逐次処理される。

    【0116】(2)P_EXIT処理108 (1)で仮想機械語を受け取った別の仮想機械5では、
    初期値としてスタック最上段の値が「1」とされる。 図9の例では、命令93の分岐は発生しない。 この結果、
    この仮想機械5は処理単位94(図8の処理単位82)
    を実行する。

    【0117】処理単位94の最後の命令はEXIT(2d)である。 この命令を検出した時、実行制御手段104はP_EX
    IT処理108を実行する。 この処理は、処理結果として画像メモリ111の全ての内容を、仮想機械語命令の発信元となった仮想機械5に返信する。 この後、実行制御手段104は、処理終了と見なし、通信ソケットを閉じ、プロセスの実行を終了する。

    【0118】(3)P_WAIT処理109 最初に仮想機械語命令の発信元となった仮想機械5は、
    命令語95の位置で同期的な待ち状態に入る。 すなわち実行制御手段104が、P_WAIT処理109を呼び出すと、P_WAIT処理109は処理を分散した他の仮想機械5
    が処理結果を返すまで待機する。 処理結果が返信された場合、P_WAIT処理109は、結果として返された画像メモリ111の内容を、自プロセス内の画像メモリ111
    に複写する。

    【0119】この複写は、受け取った値を自メモリに値に論理和として重ね合わせて良い。 なぜなら、前述した並列化位置検出手段49が、前置画素に影響される命令語を並列化しない様に作用するためである。 このとき、
    唯一の制限事項は、重ね合わせ処理の順序である。 並列処理により得た”独立した図形”を重ね合わせる場合、
    ソースコード中で記述が現れた順番に従い重ね合わせる。 図8の例で言えば、第1の「// begin -- end」文から得た画像を下に、第2の「// begin -- end」文から得た画像を上に置く。 この結果、領域80の画像に示す様に、斜線部分に、曲線が上書きされる。

    【0120】(ウ)印刷動作 以上の処理手順によりプログラム中の全ての画像操作の処理結果が画像メモリ111に記録された。 図8の例に示す様に、ページ記述の最後で実行される画像操作の命令は「showpage」文83である。 この文は図9の記述9
    6に翻訳される。 仮想機械5はこの命令を検出したとき、画像メモリ111の内容を印刷装置6に転送する。
    この処理によって、1ページに対する印刷処理の流れが完了する。

    【0121】7. 並列化位置検出手段49の第2の実施例 並列化位置検出手段49について、別の実施例を挙げて説明する。 装置全体の構成は、図1に示したものと同じである。 また処理の前提条件も等しい。

    【0122】現在では、パーソナルコンピュータにおいても、主記憶装置と、ハードディスク等の補助記憶装置の容量が拡大した。 一時的であれば、出力すべきソースコード全体を、主記憶装置ないし補助記憶装置に記録する事も可能である。

    【0123】前記の実施例に比較し、バッファ60を充分大きな領域として確保出来る場合、図11、12に示す処理手順が考えられる。

    【0124】(1)並列化位置検出手段49、図11 プリンタドライバ11は、ページ開始から終了までの処理において、ページ記述言語の各手続き文の生成を行う。 生成結果のソースコードを、バッファ60に記録する。 このとき粒度検出手段48は、手続き(の命令語)
    が画素生成を伴う処理か判断する(S111)。 画像処理を伴う場合、さらに、この命令語が先行する画像処理に依存するか検査する(S112)。 先行する画像処理に依存しない場合には、「構文上で、この位置が並列処理の候補になる」と判断する。 粒度検出手段48は、この候補位置のリストを、バッファ60に記録する。

    【0125】(2)粒度検出手段48、図12 粒度検出手段48は、バッファ60に記録されたソースコードと、並列化位置の候補リストを、ページ終了まで、順次読み取る。 このとき、命令語を計数し、粒度を判定する(S121)。 粒度が予め定めた値より大きい場合、並列化位置の候補リストに従い、ソースコード上へ、並列化の構文を書き加える(S122)。 この処理は、ソースコードを一度生成した後、書き加えを行うが、バッファ60を主記憶装置に配置した場合、充分高速に処理できる。

    【0126】8. 並列化位置検出手段49の第3の実施例 並列化位置検出手段49について、さらに別の実施例を挙げて説明する。 装置全体の構成は、図1に示したものと同じである。 また処理の前提条件も等しい。 この実施例では、プログラム言語の備えるユーザ記述サブルーチンの機能を利用する。 プログラム言語により呼び方は異なるものの、サブルーチンを記述できる仕様を持つものは多い。 本実施例のページ記述言語は、Pascalに拡張を加えたため、ユーザの処理内容を「procedure」ないし「function」として定義できる。 図13を用いて処理の流れを説明する。 この実施例では、第2のバッファとして、バッファ130を用いる。

    【0127】(1)並列化位置検出手段49 プリンタドライバ11は、ページ開始から終了までの処理において、ページ記述言語の各手続き文の生成を行う。 生成結果のソースコードを、バッファ130に記録する。 このとき粒度検出手段48は、手続き(の命令語)が画素生成を伴う処理か判断する(S131)。 画像処理を伴う場合、さらに、この命令語が先行する画像処理に依存するか検査する(S132)。 先行する画素に依存する命令語を発見した場合、プリンタドライバ1
    1は、バッファ130に記録されたソースコードを包含するサブルーチン(procedure)を、バッファ60に作成する(S133)。 この後、次の処理に備え、バッファ130をクリアする。 他方、先行する画素に依存しない場合は、並列化位置の候補リストを、バッファ60に作成する(S134)。

    【0128】(2)粒度検出手段48 並列処理手段48は、手段49の第2の実施例の場合に類似している。 ただし、粒度の大小を判定し、並列化位置を取り出し、並列構文を生成するのは、(1)で作成したサブルーチン内部の処理に限られる。 この結果、逐次処理すべき記述は、サブルーチンの外に有り、これとは独立に、並列実行の構文を含んだ一つないし複数のサブルーチンが作られる。

    【0129】プリンタドライバ11は、処理順序に従い、ソースコード内の主プログラム部で、サブルーチン呼び出し部分と、逐次処理部分の記述を行う。 Pascal型言語では、主プログラムは、ソースコードの最終部に配置される文法であるため、この様な処理に適している。

    【0130】9. 第1の実施例の拡張 (1)ページ記述言語の仕様への依存性 以上に示した手段49の第2、第3の実施例から明らかな様に、「先行する画像処理結果に依存した画像処理の命令語を検出する手段」を設けることが、ページ記述言語の並列化処理において重要である。

    【0131】仮に、「全ての命令語は、先行する画像の処理結果に依存しない」というページ記述言語仕様を設計した場合について述べる。 この仕様の言語では、画像処理結果は、先行処理の画素を無視して、全て上書きされる処理となる。 この場合は次の2点が必要である。

    【0132】・6Dの(3)で述べた重ね合わせ順序の整合性を維持する ・並列構文の挿入位置は、少なくとも画素生成を行う命令語までを一単位とする ページ記述言語の処理は、「画像の定義→画素の発生」
    という手順の繰り返しを特徴とする。 従って少なくとも、画素生成を伴う命令語を検出できる処理が必要である。

    【0133】(2)ソースコード生成の拡張 ページ記述言語のソースコードは、プリンタドライバ等のソフトウェアにより機械生成される場合がほとんどである。 ページ記述言語のコンパイラ/インタープリンタは、機械生成されたソースコードを直接受け取る。 この点から、ソースコードが文字列によって記述されなければならない、という必然性は低い。

    【0134】ソースコードにおいて、文字列による予約語を用いるよりも、予約語に適切な符号を割り当て、いわゆるバイナリコードの記述を採用する方法がある。 コード長の短縮、コード転送時間短縮、情報の隠蔽の点から、バイナリコードの方が有利である。 ソースコードが、文字列以外のデータ形式により記述された場合でも、コンパイラ側は、字句解析処理の変更で対応できる。 また仮想機械は何ら変更を受けない。 従って、本実施例のソースコード記述手段を変更する事は容易である。

    【0135】(3)粒度検出手段48の必要性 粒度検出手段48は、並列処理の粒度を処理系の特性に合わせて調整する。 第1の実施例の様な疎結合の処理系では、処理分散のオーバーヘッドが無視できないので、
    個々の処理単位はある程度大きな方が良い。 一方で、極端に大きな処理単では、並列化の個数が減少し、処理速度改善の効果が減ずる。 従って、処理内容とのバランスが重要である。 すでに述べた様に、疎結合の並列処理ページ記述言語処理系では、命令語数にして100程度が適当である。

    【0136】粒度検出手段48を除く事は可能である。
    この場合は、画像操作の命令語一つ一つが並列実行の単位となる。 しかし、これはむしろ「粒度=1」で粒度検出手段48が実行された結果と見なす事ができる。 これは特に細粒度の処理である。 細粒度の処理は、処理をマルチプロセッサに分散するための処理時間が極めて短い密結合の装置に適する。 この装置について、11節で第2の実施例として挙げる。

    【0137】10. 第1の実施例の装置全体について生じる効果 本実施例の印刷装置において、アプリケーション(またはプリンタドライバ)が、並列処理PDLの文法に従い、上記の通り効率よく、画像を記述したソースコードを生成する。 並列処理PDLのコンパイラは、この記述結果をソースファイルとして入力し、仮想機械の機械語を出力する。 これを入力として、インタープリタが画像の発生を並列に実行する。 この結果、印刷処理全体を通して次に挙げる効果が生じた。

    【0138】(1)一般のページプリンタは、処理速度に関し購入時点での性能がそのまま変わらない。 しかし、並列処理PDLを搭載したプリンタは、ネットワーク上のWSに並列処理の仮想機械を実装すると、その分だけ速くなる。 オフィスのWS数拡大に伴い、個々のプリンタの速度向上を図ることが出来る。

    【0139】(2)エンドユーザ(消費者)が、新たに高速なページプリンタを購入しても、速いのはその1台だけである。 しかし、並列処理PDL対応のページプリンタを使用しているユーザは、ネットワークに速いWS
    を導入した時、これに仮想機械を実装すると、全ての並列PDLプリンタが速くなるという恩恵を受ける事が出来る。

    【0140】(3)並列処理によって生じる一般的なメリットがある。 ピーク時負荷の特定装置への集中を防ぐ。 処理速度が改善される。

    【0141】11. 第2の実施例 本発明を細粒度の並列処理システムに用いた好適な実施例を図14を用いて説明する。

    【0142】(1)構成 ページプリンタ146は、電子写真式のプリントエンジン145を持つ装置である。 ページプリンタ146の画像処理装置は、複数個のマイクロプロセッサユニット1
    41が、システムバス142を介してバス結合された方式である。 各マイクロプロセッサは、システムバス14
    2を通して、共通のメモリ147にアクセスすることが出来る。 各マイクロプロセッサは、第1の実施例と同様の仮想機械のインタープリタ・プログラムを処理する。
    パーソナルコンピュータ144は、通信経路143によって、ページプリンタ146の画像処理装置に接続される。

    【0143】(2)動作 パーソナルコンピュータ144の使用者が、アプリケーション・プログラムから印刷処理を行う。 アプリケーション・プログラムは、オペレーティングシステムのサービスを用い、プリンタドライバが用意する印刷処理用の画像操作(関数/手続き)を呼び出す。 プリンタドライバは、呼び出しを受けた手続き中の処理として、ページ記述言語のソースコードを作成する。 この生成手順は6
    B−1に述べた処理と等しい。

    【0144】次にプリンタドライバは、デバイスドライバの機能を呼び出し、生成済みのソースコードを、通信経路143により、ページプリンタ146に送る。 ページプリンタ146は、受信したソースコードをコンパイルし、仮想機械語によるオブジェクトコードを作り出す。 このオブジェクトコードは、複数マイクロプロセッサを用い実装された、仮想機械で実行される。

    【0145】(3)第1の実施例との違い ページプリンタ146では、複数のマイクロプロセッサが、共通メモリ147とシステムバス142を用いて、
    極めて高速に相互間通信出来る。 この場合、処理並列化のための通信時間は短いので、画像操作を伴う一つの命令語毎に並列処理しても良い。

    【0146】そこでプリンタドライバ側では、画像操作が行われる度に、並列構文を発生しても良い。 先に述べた通り、これは「粒度=1」で粒度検出手段48が実行される特別の場合である。 しかし、この実施例の様な密結合のマルチプロセッサ装置であっても、処理を並列化する処理時間は0ではない。 これは、仮想機械語P_FORK
    (2f)の処理時間から考え当然である。 P_FORK(2f)の処理は、この実施例でも6D(1)の処理と同様である。 但し、ネットッワークを利用した通信に代わり、システムバス142を用いた通信が行われる。 並列化処理時間は、主としてプログラムの走行ステップ数と、バス調停時間により決まる。 この時間は数百マイクロ秒から、数ミリ秒である。

    【0147】この事から、やはり粒度検出手段48は必要であり、適切な処理粒度を処理対象の系によって決める必要があると言える。

    【0148】(4)第2の実施例の拡張 この実施例では、マイクロプロセッサユニット141のアーキテクチャは均一である。 この場合、仮想機械と実機械を一致させても問題は生じない。 実際のマイクロプロセッサには、FORK(2f)、EXIT(2d)、WAIT(2e)等の特殊な機械語が組み込まれていない。 しかし、これはライブラリ関数として実装すれば良い。 画像処理の各種手続きの命令語も同様である。 この変更は、実施例のコンパイラ部分の変更で実現出来る。 本発明のコード生成処理自体は、変更を受ける事は無い。

    【0149】

    【発明の効果】上記の実施例が明らかにした様に、本発明の構成上の特徴から次の効果が生じる。

    【0150】(1)並列化位置検出手段は「先行する操作に依存する命令」が含まれる時だけ逐次処理のソースコードを生成するため、並列化のための処理で消費される時間を最小に抑え、ソースコード生成を効率良く行う。

    【0151】(2)粒度検出手段は、並列処理の単位となる一連の操作に含まれる述語の数を調整して、適切な粒度の並列化ソースコードを生成する。 この結果、言語の翻訳・実行処理系は、効率の良い並列実行を行う事ができる。

    【図面の簡単な説明】

    【図1】 アプリケーション及びプリンタドライバの処理の説明図。

    【図2】 並列構文の説明図。

    【図3】 構文定義の説明図。

    【図4】 印刷装置の全体構成の説明図。

    【図5】 粒度検出手段48の処理の流れ図。

    【図6】 並列化位置検出手段49の処理の流れ図。

    【図7】 プログラム生成結果の説明図。

    【図8】 コンパイラ動作の例を説明する図。

    【図9】 コンパイラ動作の例を説明する図。

    【図10】 仮想機械の説明図。

    【図11】 並列化位置検出手段49の処理の流れ図。

    【図12】 粒度検出手段48の処理の流れ図。

    【図13】 並列化位置検出手段49の処理の流れ図。

    【図14】 第2の実施例の構成図。

    【符号の説明】

    1…アプリケーションプログラム 2…並列言語で記述されたソースコード 3…並列言語コンパイラ 4…仮想機械語によるオブジェクトコード 5…仮想機械(を構成するプロセス) 6…印刷装置 11…プリンタドライバ 42…オペレーティングシステム 43…画像処理手続き群 44…標準手続き 45…変更可能手続き 46…デバイスドライバ 47…物理デバイス 48…粒度検出手段 49…並列化位置検出手段 60…一時バッファ 141…マイクロプロセッサユニット 142…システムバス 143…通信経路 144…パーソナルコンピュータ 145…電子写真方式プリントエンジン 146…ページプリンタ 147…共通メモリ

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈