JP3284522B2 - プログラム生成装置 - Google Patents

プログラム生成装置

Info

Publication number
JP3284522B2
JP3284522B2 JP24957593A JP24957593A JP3284522B2 JP 3284522 B2 JP3284522 B2 JP 3284522B2 JP 24957593 A JP24957593 A JP 24957593A JP 24957593 A JP24957593 A JP 24957593A JP 3284522 B2 JP3284522 B2 JP 3284522B2
Authority
JP
Japan
Prior art keywords
procedure
image processing
processing
parallel
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP24957593A
Other languages
English (en)
Other versions
JPH07104987A (ja
Inventor
文夫 長坂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP24957593A priority Critical patent/JP3284522B2/ja
Priority to SG1996003287A priority patent/SG73378A1/en
Priority to DE69431386T priority patent/DE69431386T2/de
Priority to EP94115655A priority patent/EP0652511B1/en
Priority to US08/318,448 priority patent/US5752036A/en
Publication of JPH07104987A publication Critical patent/JPH07104987A/ja
Application granted granted Critical
Publication of JP3284522B2 publication Critical patent/JP3284522B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

【発明の詳細な説明】
【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】
【課題を解決するための手段】本発明は、画像形成のた
めの一連の画像処理手続を表現したソースコードを生成
する装置において、前記一連の画像処理手続の中から、
独立実行可能な画像処理手続を検出する独立手続検出手
段と、前記検出された独立実行可能な画像処理手続の個
数を数える手続計数手段と、前記計数手段の出力に基づ
いて、前記一連の画像処理手続の中から、並列処理単位
の粒度として適当な個数の一連の前記独立実行可能な画
像処理手続からなる手続集合を抽出する手続集合抽出手
段と、前記抽出された手続集合が1つの並列処理単位で
あることを意味するソースコードを生成する並列構文
ースコード生成手段と、を備えたことを特徴とする。
【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…共通メモリ
フロントページの続き (56)参考文献 特開 平3−161882(JP,A) 国際公開91/15831(WO,A1) Leler,W.,PIX the latest NeWS,IEEE D igest of Papers CO MPCON Spring ’89,米 国,IEEE,1989年 2月27日,P. 239−242 Faigle,C.et al,MO VIE model for open systems based hig h performance dist ributed computing, IEEE Proc.of the 1 st Symp.on High Pe rformance Distribu ted Compuging,米国,I EEE,1992年 9月 9日,P.37− 56 Birk,Y. ,On−line control and deadlo ck−avoidance in a page−parallel mult iprocessor rasteri zer,「IEEE Trans.on Parallel and Dist ributed Systems」V, 米国,IEEE Trans.on P arallel and Distri buted Systems,1993年 2月28日,Vol.4,No.2,P. 155−163 (58)調査した分野(Int.Cl.7,DB名) G06F 9/06 - 9/44 G06F 15/16

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】画像形成のための一連の画像処理手続を表
    現したソースコードを生成する装置において、 前記一連の画像処理手続の中から、独立実行可能な画像
    処理手続を検出する独立手続検出手段と、 前記検出された独立実行可能な画像処理手続の個数を数
    える手続計数手段と、 前記計数手段の出力に基づいて、前記一連の画像処理手
    続の中から、並列処理単位の粒度として適当な個数の一
    連の前記独立実行可能な画像処理手続からなる手続集合
    を抽出する手続集合抽出手段と、 前記抽出された手続集合が1つの並列処理単位であるこ
    とを意味するソースコードを生成する並列構文ソースコ
    ード生成手段と、 を備えたことを特徴とするプログラム生成装置。
  2. 【請求項2】請求項1記載の装置において、 前記独立実行可能な画像処理手続とは、先行する画像処
    理手続に依存しない画像処理手続であることを特徴とす
    るプログラム生成装置。
  3. 【請求項3】請求項1記載の装置において、 前記一連の画像処理手続の中から、画素生成を伴う画像
    処理手続を検出する画素生成手続検出手段をさらに備
    え、 前記手続集合抽出手段が、前記画素生成手続検出手段の
    出力に基づいて、前記画素生成を伴う画像処理手続の1
    個以上が前記手続集合に含まれるように、前記手続集合
    を抽出することを特徴とするプログラム生成装置。
  4. 【請求項4】請求項2記載の装置において、 前記独立手続検出手段の出力に基づいて、先行する画像
    処理手手続に依存する画像処理手続と、これに先行する
    一連の1個以上の前記手続集合とが、逐次に実行される
    関係であることを意味するソースコードを生成する逐次
    構文ソースコー 生成手段をさらに備えたことを特徴と
    するプログラム生成装置。
  5. 【請求項5】画像形成のために順次に呼び出される画像
    処理手続のソースコードを生成する装置において、 呼び出された画像処理手続が独立実行可能な画像処理手
    続であるかチェックする独立手続チェック手段と、 前記独立手続チェック手段の出力を受けて、連続して呼
    び出された前記独立実行可能な画像処理手続の個数を数
    える手続計数手段と、 前記手続計数手段の出力に基づいて、並列処理単位の粒
    度として適当な個数の前記独立実行可能な画像処理手続
    が連続して呼び出されたことを検出する粒度検出手段
    と、 前記粒度検出手段の出力に応答して、前記連続して呼び
    出された適当な個数の独立実行可能な画像処理手続が1
    つの並列処理単位であることを意味するソースコードを
    生成する並列構文ソースコード生成手段と、 を備えたことを特徴とするプログラム生成装置。
  6. 【請求項6】画像形成のための一連の画像処理手続を表
    現したソースコードを生成する方法において、 前記一連の画像処理手続の中から、独立実行可能な画像
    処理手続を検出する独立手続検出ステップと、 前記検出された独立実行可能な画像処理手続の個数を数
    える手続計数ステップと、 前記計数手段の出力に基づいて、前記一連の画像処理手
    続の中から、並列処理単位の粒度として適当な個数の一
    連の前記独立実行可能な画像処理手続からなる手続集合
    を抽出する手続集合抽出ステップと、 前記抽出された手続集合が1つの並列処理単位であるこ
    とを意味するソースコードを生成する並列構文ソースコ
    ード生成ステップと、 を備えたことを特徴とするプログラム生成方法。
JP24957593A 1993-10-05 1993-10-05 プログラム生成装置 Expired - Lifetime JP3284522B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP24957593A JP3284522B2 (ja) 1993-10-05 1993-10-05 プログラム生成装置
SG1996003287A SG73378A1 (en) 1993-10-05 1994-10-05 Apparatus and method for generating a program for parallel processing
DE69431386T DE69431386T2 (de) 1993-10-05 1994-10-05 Verfahren und Gerät zur Erzeugung eines Programms für parallele Verarbeitung
EP94115655A EP0652511B1 (en) 1993-10-05 1994-10-05 Apparatus and method for generating a program for parallel processing
US08/318,448 US5752036A (en) 1993-10-05 1994-10-05 Apparatus for generating a program for parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24957593A JP3284522B2 (ja) 1993-10-05 1993-10-05 プログラム生成装置

Publications (2)

Publication Number Publication Date
JPH07104987A JPH07104987A (ja) 1995-04-21
JP3284522B2 true JP3284522B2 (ja) 2002-05-20

Family

ID=17195053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24957593A Expired - Lifetime JP3284522B2 (ja) 1993-10-05 1993-10-05 プログラム生成装置

Country Status (1)

Country Link
JP (1) JP3284522B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3211648B2 (ja) * 1995-12-07 2001-09-25 富士ゼロックス株式会社 描画プログラム生成装置および描画プログラム生成方法
JP2817687B2 (ja) * 1995-12-28 1998-10-30 富士ゼロックス株式会社 画像形成装置
JP2910649B2 (ja) * 1995-12-28 1999-06-23 富士ゼロックス株式会社 画像形成装置および画像形成方法
JP4818389B2 (ja) 2009-04-07 2011-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列処理によりデータ処理を行う印刷装置および制御方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Birk,Y. ,On−line control and deadlock−avoidance in a page−parallel multiprocessor rasterizer,「IEEE Trans.on Parallel and Distributed Systems」V,米国,IEEE Trans.on Parallel and Distributed Systems,1993年 2月28日,Vol.4,No.2,P.155−163
Faigle,C.et al,MOVIE model for open systems based high performance distributed computing,IEEE Proc.of the 1st Symp.on High Performance Distributed Compuging,米国,IEEE,1992年 9月 9日,P.37−56
Leler,W.,PIX the latest NeWS,IEEE Digest of Papers COMPCON Spring ’89,米国,IEEE,1989年 2月27日,P.239−242

Also Published As

Publication number Publication date
JPH07104987A (ja) 1995-04-21

Similar Documents

Publication Publication Date Title
US5752036A (en) Apparatus for generating a program for parallel processing
Van Den Bos et al. PROCOL: A parallel object language with protocols
EP0718760B1 (en) Method and apparatus for generating platform-standard object files containing machine-independent code
Sneed Encapsulation of legacy software: A technique for reusing legacy software components
US5546583A (en) Method and system for providing a client/server interface in a programming language
JP2000155686A (ja) 分散システム中におけるプログラム実行方法及びその装置、分散システム中におけるプログラム実行手順を記憶したコンピュ―タ読み書き可能な記憶媒体及びコンピュ―タシステム
JPH11242597A (ja) Javaバイトコードデータのフローグラフの生成方法
JP2000029714A (ja) 分散システム中における実行用プログラムコンポ―ネントのパッケ―ジ方法、実行用プログラムコンポ―ネントのパッケ―ジプログラムを記憶したコンピュ―タ読み書き可能な記憶媒体及びコンピュ―タシステム
JP2000505225A (ja) ソフトウェアコードの生成方法及び装置
US8214815B2 (en) Reducing the run-time cost of invoking a server page
JPH09114611A (ja) 印刷処理装置および方法
JPH10198539A (ja) 画像形成装置および画像形成方法
JP3284522B2 (ja) プログラム生成装置
JPH06274608A (ja) マルチプロセッサ画像処理装置
US20160124727A1 (en) Method for Checking and/or Transformation of a Computer Program with First-Class Static Functions
JP3284523B2 (ja) プログラム生成装置
JP2991242B2 (ja) マルチプロセッサコンピュータシステム使用方法
JPH08263299A (ja) プログラム変換方法
US6449050B1 (en) Code generator for printer driver
Wiedmann A performance comparison between an APL interpreter and compiler
US5765148A (en) Database processing apparatus and database processing method for variable length objects, and computer-readable memory medium for storing database processing program
Cargill Implementation of the Blit debugger
JP2002132502A (ja) 言語機能解釈による分散オブジェクト自動生成システム及び方法
JPH0683597A (ja) オブジェクト指向プログラム開発装置およびオブジェクト指向プログラム開発方法
JPH0660047A (ja) マルチプロセッサ処理装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080308

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090308

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090308

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100308

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100308

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110308

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120308

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120308

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130308

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140308

Year of fee payment: 12

EXPY Cancellation because of completion of term