JPH06274608A - マルチプロセッサ画像処理装置 - Google Patents

マルチプロセッサ画像処理装置

Info

Publication number
JPH06274608A
JPH06274608A JP6434493A JP6434493A JPH06274608A JP H06274608 A JPH06274608 A JP H06274608A JP 6434493 A JP6434493 A JP 6434493A JP 6434493 A JP6434493 A JP 6434493A JP H06274608 A JPH06274608 A JP H06274608A
Authority
JP
Japan
Prior art keywords
processing
load
processor
image
virtual machine
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.)
Pending
Application number
JP6434493A
Other languages
English (en)
Inventor
Fumio Nagasaka
文夫 長坂
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 JP6434493A priority Critical patent/JPH06274608A/ja
Publication of JPH06274608A publication Critical patent/JPH06274608A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【目的】 複数プロセッサを用いた画像処理装置におい
て、個々のプロセッサに分担させる処理の負荷の最適化
を図り、能力を最大限利用した処理を実現する。 【構成】 画像処理に関する基本操作の処理手順を含む
画像処理ライブラリ72が、個々の処理毎に処理時間算
定手段1を持つ。画像処理を行なう仮想機械プロセス6
は、実際の画像処理に先だって見積りモードでライブラ
リ呼び出しを実行し、処理単位について予め処理時間の
見積りを行なう。この値はカウンタ2に記録される。実
際のプロセッサへの処理分散は処理分散手段4がこの処
理時間の見積り値により各プロセッサの負荷が均等にな
る様に行なう。各プロセッサの負荷分担は、この見積り
値の累積値としてプロセッサ管理テーブル3に記録され
る。処理分散手段4は各プロセッサへの負荷配分、処理
結果受信を管理し、処理装置全体としては複数のプロセ
ッサの能力を効率よく利用した処理が実現される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、複数のプロセッサ間
で通信を行なうことによって処理の分散、および並列実
行、同期を実現し、所定の処理を行なうマルチプロセッ
サ装置に関する。特に画像処理技術に応用されるマルチ
プロセッサ装置の個々のプロセッサへの最適な負荷分散
を行なう技術に関連する。
【0002】
【従来の技術】以下の文中において、「プロセッサの負
荷」の意味を明らかにするため、説明を加える。
【0003】与えられた処理をプロセッサが行なう時、
処理開始から完了までに、のべ何マシンサイクルのプロ
セッササイクルを必要とするかによって、対象処理の処
理時間が決められる。通常、稼働中のプロセッサは停止
することなく、連続して、1マシンサイクル毎に1個な
いし数個の機械語命令を実行し続けるものであるから、
機械語実行という視点から見て、プロセッサに(電気的
な意味での)負荷の変動が起きる事は無い。
【0004】しかし、プロセッサを応用した情報処理装
置には、複数プログラムの実行や、入出力装置のプログ
ラム間の共用、あるいは周辺装置の資源としての最適利
用などを目的とするオペレーティングシステムを持つも
のが有る。これら特定の情報処理装置(特にコンピュー
タ装置)において、動作時間はオペレーティングシステ
ムが何らかの処理要求を受け付けて、この目的処理のた
めのプログラムを実行する時間と、次の処理要求を受け
取るまでの待機時間、あるいは並行して実行する他の処
理へ切り替えるためのプログラム切り替え処理時間など
の総和である。
【0005】今、待機時間およびオペレーティングシス
テムの動作時間(プログラム切り替え処理時間など)に
比較して、「要求される処理」の処理時間が長大である
時、この装置の負荷が大きいと表現する。
【0006】プロセッサ装置の負荷が大きい場合、新た
に別の処理要求を投入しても、これが処理され結果の得
られるまでの時間は長くなる不都合が生じる場合が多
い。極端にプロセッサ装置の負荷が高まった場合は、入
出力装置などの周辺装置を有効に利用するためのオペレ
ーティングシステムの処理にも遅滞を生じ、周辺装置の
性能を有効に利用できない不都合が生じる。特にこの傾
向はマイクロプロセッサ装置を使用したワークステーシ
ョン、パーソナルコンピュータ等において顕著である。
【0007】さらに従来の技術について説明する。
【0008】画像処理の応用分野に、ワークステーショ
ンあるいはパーソナルコンピュータを用いる場合、高密
度、多諧調のデータに対しては、現在のマイクロプロセ
ッサ装置の処理速度は充分とは言えない。処理速度不足
の問題点を改善する目的で発明された従来技術として、
「目的処理を複数の処理部分に分割して複数個のプロセ
ッサを用いて並列処理する事によって処理速度の高速化
を図る」技術がある。
【0009】この技術では各プロセッサにかかる負荷が
最適となるように、処理部分が分割されて各プロセッサ
に配置された時、最も処理速度が向上すると考えられ
る。今、マルチプロセッサ装置を構成する各プロセッサ
の処理能力がおよそ同等であるとすれば、各プロセッサ
に均等な負荷がかかった状態が最適負荷配分であると考
える事ができる。
【0010】もし、処理を複数の部分に分割して個々の
プロセッサに配置する以前に、各処理部分がどの程度の
負荷をプロセッサに与えるか知ることができれば、負荷
がほぼ均等になる様に処理を分散する事は容易である。
また、分散する個々の「処理単位」の必要処理時間がそ
れぞれ小さい場合、負荷配置(スケジューリング)は容
易である。この様な場合は「処理単位が細粒度であ
る。」と呼び、この反対の状態を「処理単位が粗粒度で
ある。」と呼ぶ。粗粒度の処理を最適に負荷配置する方
法は、あるプロセッサに「必要処理時間の大きい処理」
を連続して投入してしまう危険性があり、より難しいと
言える。
【0011】汎用の計算処理応用分野を考えると、一般
的には任意の処理について、その計算の負荷を事前に知
るという手段は、極めて困難である。そのため従来技術
は、各プロセッサ装置の処理の待ち行列の長さを観測す
る等の方法を用いて、先行して実行中の処理の負荷を、
言わば外部から観測することで、負荷判定を行なってい
た。この方法について述べた従来発明として、特開昭6
3−211060号公報がある。
【0012】
【発明が解決しようとする課題】しかし、この従来方法
は分散する予定の処理の負荷が事前では未知であるた
め、次の処理段階で負荷の最適分散が行なわれるか否か
は不定であるという問題点が有った。特に処理対象のプ
ログラムが処理の並列化を粗粒度で行なう場合、待ち行
列にある現在の処理要求の負荷が未知のまま「待ち行列
の長さ」だけを判断基準として、次の要求を配置する方
法は、危険性が大きい。
【0013】画像処理に限って説明する。
【0014】ある画像を複数個のプロセッサで並列に処
理しようとした時、処理の並列化の代表的な方法は、次
の2通りの方法であると考えられる。この内、本発明は
(2)の技術を対象とする。
【0015】(1)画像が画素データの配列として与え
られる形式の場合、この画素データの配列を複数の領域
に分割して、個々の領域毎に一つのプロセッサを割り当
てる方法。
【0016】(2)画像が図形形状の記述(曲線、多角
形など)の集合で与えられる場合、この記述を複数の操
作手順に分割し、個々の操作をそれぞれプロセッサに割
り当てる方法。
【0017】(2)の方法では、連続した操作の中で、
並列処理することの出来ない操作が存在する。たとえ
ば、特定の領域を塗りつぶす操作では、「領域を指定す
る操作」と「塗りつぶす操作」を平行して、独立のメモ
リを持つ別々のプロセッサに分けて操作出来ないことか
らも想像できる。このために、(2)の方法では処理単
位の粒度を小さくすることの出来ない場合が多い。最も
典型的な例は、所定の画像領域を回転、拡大、縮小する
場合である。これらの操作は、いずれも必要となる処理
時間が長い操作である。
【0018】図14は、並列実行時に様々な「粒度」を
持つ処理単位をプロセッサに分散する場合の問題点を説
明する図である。プロセッサが処理要求を受け取る待ち
行列41に、処理要求42、43、44らがエンキュウ
されている状態を示している。ここで説明のために、各
処理単位の必要処理時間を横方向の線分の長さによって
示した。また、処理要求とは”複数の操作からなるプロ
グラムのー部分であって、並列処理のためにプロセッサ
に割り当てられた単位”に対する実行の要求である。図
中、第1の待ち行列41の長さは3であるのに対し、第
2の待ち行列41の長さは5である。図から明らかなよ
うに、粒度に大きなばらつきのある場合、待ち行列の長
さからプロセッサの負荷の推移を評価することは出来な
い。
【0019】すなわち、従来発明である”各プロセッサ
の要求受け付け待ち行列の長さから、負荷判断を行な
い、処理の分散を行なう方法”は、複数の負荷の大きな
処理を特定のプロセッサに集中して配置してしまうこと
を予防できないという問題点を持つ。従来発明を用いる
と、あるプロセッサで実際に処理遅れが発生した後に、
過負荷であったことが検出されることになる。
【0020】本発明は、上記の従来発明の問題点を鑑み
てなされたものであり、マルチプロセッサによる並列処
理を画像処理分野に用いた場合に、各プロセッサへの負
荷の最適な分散を実現し、画像処理装置の処理能力を最
大限に利用する事を目的としている。
【0021】
【課題を解決するための手段】このような問題を解決す
るために本発明のマルチプロセッサ画像処理装置は、処
理対象の画像に関する一連の操作を複数の処理単位に分
割して、各処理単位を複数個のプロセッサに分散し、並
列に実行することによって処理速度の向上を図る装置に
おいて、画像処理に関する所定の処理要求を、複数個の
プロセッサの中から選択した一つのプロセッサにそれぞ
れ分散する処理分散手段と、予め定めた特定の画像操作
からなる実行時ライブラリと、この実行時ライブラリ中
の操作の一つ一つに対応した処理負荷の見積りを行う見
積り手段と、によって構成され、目的処理中に前記実行
時ライブラリに含まれる画像操作が呼び出される時、操
作開始に先立ち、負荷見積り手段が処理負荷を計算し、
この値を処理分散手段に通知し、また処理分散手段はこ
こで通知された値から処理単位を分散するプロセッサを
決定する事を特徴とする。
【0022】
【作用】並列処理の応用分野の内、画像処理に限って考
えた場合、直線発生、塗りつぶし等の典型的な幾つかの
処理は、処理対象領域等の情報を用いて負荷を算定する
事が可能である。そこで本発明では、マルチプロセッサ
による並列画像処理システムの各画像処理実行プログラ
ムライブラリ毎に処理時間算定手段を用意した。これに
よって、実際の処理以前に負荷を求める事ができる。
【0023】処理時間算定の計算は、画素発生の実際処
理よりは遥かに軽微であるため、全体の処理を妨げる事
は無い。また、事前に処理の負荷を知って処理分散を行
なう事で各プロセッサの現在の負荷、処理能力に最適な
方法で処理の配置を行なう事が可能となる。
【0024】
【実施例】本発明に好適な実施例について、以下に図を
用いて説明を加える。説明は以下の各節に従って行う。
【0025】1.本実施例の特徴(従来発明との違い) 1.1 本実施例の構成 1.1.1 装置全体の構成(図4、図3) 1.1.2 オブジェクトコード実行段階の構成(図
2) 1.1.3 仮想機械プロセスの構成(図2) 1.1.4 並列実行開始時の仮想機械プロセスの動作
概要(図2) 1.2 本実施例の特徴(図1、図5) 2.負荷検出動作 2.1 本実施例の負荷計算手段(図9、図10) 3.マルチプロセッサ画像処理装置の構成と処理分散 3.1 並列処理の記述方法 3.1.1 並列処理の記述の文法(図11、図12、
図13) 3.1.2 組み込み手続きの説明(図12) 3.2 並列記述の翻訳結果(図12、図13、図6、
図8) 3.3 処理負荷の見積り動作(図7) 4.他の実施例(図15) 1.本実施例の特徴(従来発明との違い) 本実施例の構成を明らかにするため、図4、図3、図
2、図1の順に説明を行う。処理手順の説明には図5を
用いる。本実施例の特徴となる部分は1.2節で述べ
る。
【0026】1.1 本実施例の構成 1.1.1 装置全体の構成(図4、図3) 図4は、一つの実施例として挙げるマルチプロセッサ画
像処理装置の処理手順の概要を説明した図である。使用
者は入力装置37を用いてエディタ401を操作し、プ
ログラム言語によって画像処理内容を記述したソースフ
ァイル404を作成する。次に使用者は、コンパイラ4
02を実行する。コンパイラ402は、ソースファイル
404を読み込み、プログラム言語による記述内容を翻
訳してオブジェクトファイル405を出力する。オブジ
ェクトファイル405は、所定の書式で書かれた一連の
機械語命令によって構成される。本実施例では、特定の
プロセッサの機械語を直接実行する方式に代えて、仮想
機械方式を用いた。オブジェクトファイル405は、こ
の仮想機械の機械語で構成される。仮想機械プロセス4
03は、オブジェクトファイル405を読み取り、その
機械語命令を実行する。仮想機械プロセス403は、命
令語として表示処理命令があれば、表示装置38に画像
を出力する。本実施例の仮想機械は、複数のプロセッサ
を用いて実現される。このための構成を以下に説明す
る。
【0027】図3は、一つの実施例として挙げるマルチ
プロセッサ画像処理装置の全体の構成を示す図である。
マイクロプロセッサユニット(以下MPU)31、RA
M32、ROM33を実装したプロセッサ基板34が、
システムバス35によって複数個接続される。入出力周
辺制御装置(以下I/O装置)36もシステムバス35
を介して接続される。
【0028】個々のプロセッサ基板34には、それぞれ
オペレーティングシステムが実装される。オペレーティ
ングシステムは、ROM32に格納され、電源立ち上げ
後、自動的に実行状態に入る。以後、一つのプロセッサ
基板34は、オペレーティングシステムに管理される独
立した処理装置とみなして、プロセッサエレメント20
0(PE200)と呼ぶ。
【0029】仮想機械プロセス403は、オペレーティ
ングシステムのファイル管理機能を用いて、オブジェク
トファイル405をRAM32に読み込んだ後、個々の
機械語命令を実行する。仮想機械プロセス403、エデ
ィタ401等のプログラム、またオペレーティングシス
テムも作業領域としてメモリ領域を消費する。この領域
はいずれもRAM32に配置される。個々のメモリの割
り当てはオペレーティングシステムが管理する。
【0030】オブジェクトファイル405の内容につい
て説明を補足する。
【0031】Fortran、Pascal等に代表される一般的な
プログラム言語では、文字の印字、データの入力など、
ユーザプログラムで一般的に用いられる基本操作を、使
用者がその都度書き下す不便を省くことを目的としてこ
れら基本操作をまとめたライブラリを用意する。ライブ
ラリは、所定の高級言語の文法で使用者が呼び出すこと
の出来る複数の基本的な操作(サブルーチン、プロシー
ジャ)の集合である。
【0032】本実施例の記述言語については後述する
が、上記に類似したライブラリを用意した。本実施例の
記述言語は、応用分野が画像の記述であることから、直
線描画、曲線描画、塗りつぶし、画像回転等の画像処理
の基本操作をライブラリ化した。使用者がソースファイ
ル404を記述した時、必要に応じてライブラリに含ま
れる関数、プロシージャの呼び出しを記述できる。この
結果、オブジェクトファイル405には、ライブラリ機
能の呼び出しを行なう機械語命令が含まれる。
【0033】1.1.2 オブジェクトコード実行段階
の構成(図2) 図2は本実施例のマルチプロセッサ画像処理装置におい
てプログラムの実行時の状態を説明した図である。
【0034】一つのプロセッサエレメント200の中で
は、オペレーティングシステム204(以下OS20
4)がプログラムの実行を管理する。OS204が管理
するプログラムの実行単位を、これ以後「プロセス」と
呼ぶ。「プロセス」は、オペレーティングシステムにお
ける、プロセッサ資源、メモリ資源割り当ての実行時の
単位である。すなわちプロセスは、プロセスの識別子及
び実行管理、メモリ管理のための情報を含むプロセスヘ
ッダと、中断の際に現在のプロセッサのレジスタの状態
を保存するための領域と、オブジェクトコード領域、ス
タック領域からなる管理単位である。
【0035】PE200に実装された個々のMPU31
は、OS204を実行する。OS204は、OS204
に組み込まれたスケジューラ205の定める手順で、複
数の応用プログラムを実行する。すなわち、スケジュー
ラ205は、I/O装置36への処理で待機状態に入っ
たプロセス、または割り当ての微小時間(ここでは5ms
ec)を経過したプロセスを一時的に停止し、スケジュー
ラ待ち行列206の末尾に追加する。次にスケジューラ
205は、スケジューラ待ち行列206の先頭にあるプ
ロセスを取り出し、停止状態から実行状態に切り替え
る。プロセスの切り替えは、OS204に組み込まれた
サービスプログラム207が処理する。この方式によっ
てOS204は、同時に複数のプログラムを実行する。
【0036】使用者は、図4に示したエディタ401、
コンパイラ402、仮想機械プロセス403らを、同時
にPE200で実行して良い。図2は、仮想機械プロセ
ス403の一つが実行中の状態を図示した。実行中の仮
想機械プロセス403を、仮想機械プロセス6として図
示する。また、他の実行中のプロセスを201で示す。
【0037】 1.1.3 仮想機械プロセスの構成(図2) 仮想機械プロセス6は、処理対象のオブジェクトファイ
ル405をメモリ上に読み込み実行する。メモリ上に展
開された一つのオブジェクトファイル405のデータを
ユーザ記述5として図示する。また、メモリ上に読み込
まれた他のオブジェクトファイル405のデータを、オ
ブジェクトコード202として図示する。仮想機械プロ
セス6の構成要素を2つに分けて説明する。一つは実際
の仮想機械語を読みとって実行する仮想機械のインター
プリタ7である。他の一つは実行時に仮想機械プロセス
6の中に確保されるシステムの資源8である。
【0038】インタープリタ7は命令語の内容を意味理
解し、必要な処理への分岐を制御するプログラムインタ
ーフェース71を持つ。また、インタープリタ7は画像
処理の個々の操作の処理プログラムからなるライブラリ
72と、処理分散手段4を持つ。プログラムインターフ
ェース71は、入力バッファからの待ち行列711と分
岐テーブル712を持つ。ユーザ記述5の中にソフトウ
ェア割り込みを引き起こす命令語があると、MPU31
の処理番地はプログラムインターフェース71の所定の
番地へジャンプする。インタープリタ7は、ソフトウェ
ア割り込みの種類と引数を検査し、この引数の指定に応
じた関数、プロシージャの処理番地を分岐テーブル71
2から決定する。次にインタープリタ7は、この番地へ
ジャンプする。この手順によって、MPU31の処理番
地はライブラリ内の関数、プロシージャに移動する。こ
の動作については、図6を用いて後述する。
【0039】システムの資源8は、プロセッサ間の通信
を制御する通信手段81、これに対する待ち行列82を
持つ。仮想機械プロセス6は、並列実行を行なう各プロ
セッサ毎に待ち行列82を作成する。この他システムの
資源8は、仮想機械プロセス6の作業メモリ、ファイル
からの入力バッファ等、OS204のサービスにより確
保した資源を含む。
【0040】1.1.4 並列実行開始時の仮想機械プ
ロセスの動作概要(図2) ユーザ記述5の中に、並列実行を引き起こす命令語が有
った場合の仮想機械プロセス6動作について説明する。
【0041】ユーザ記述5に処理の並列化を行なう記述
が有った場合、インタープリタ7はこれを解釈し、MP
U31の処理番地を処理分散手段4内の処理番地に書き
換える(すなわちジャンプする)。MPU31は処理分
散手段4を実行し、並列化する処理単位を受け取るPE
200の番号を決定する。続いて、MPU31は処理分
散手段4を実行し、並列化する処理単位をPE200に
対して割り当てた待ち行列82にエンキューする。この
後、MPU31は、通信手段81を実行する。通信手段
81は、システムバス35の空き時間を調停する装置2
03を制御し、システムバス35を用いて処理単位を指
定したPE200に転送する。この時、システムバス3
5の調停装置203の処理には、非同期的な時間の遅延
が伴う。そこで、MPU31は通信手段81の処理に入
った後、処理結果を待たず、再びOS204の処理番地
にジャンプする。ここで、MPU31はスケジューラ2
05の処理を実行し、この仮想機械プロセス6を休眠さ
せ、スケジューラ待ち行列206から取り出した次のプ
ロセスの処理番地にジャンプする(これによって次のプ
ロセスが<再>走行する)。
【0042】この結果起動された他のプロセスが、やが
て単位時間を経過するか、非同期の時間待ちで休眠する
か、いずれかの場合、更に他のプロセスが実行される。
この繰り返しの後、再びこの仮想機械プロセス6が実行
される。この時、OS204はMPU31の処理番地を
仮想機械プロセス6内部の前回休眠したプログラム番地
に書き換える。これによって先に中断した通信手段81
が再開される。通信手段81を呼び出したインタープリ
タ7は、並列実行の処理単位が他のPE200に転送済
みであれば、次の命令語を読み取り、処理を続ける。
【0043】1.2 本実施例の特徴(図1、図5) 本実施例の特徴を図1によって説明する。図1は、図2
の構成の中から、更に本実施例の特徴となる部分を取り
出し示した図である。
【0044】MPU31は、仮想機械プロセス6を実行
している時、ユーザ記述5の中に画像処理ライブラリ7
2の呼び出しの命令語があると、画像処理ライブラリ7
2の中の個々の処理にジャンプする。この結果、MPU
31は例えば{塗りつぶし、画像回転、拡大・縮小}等
の操作を実行する。本実施例では、これら個々の操作は
2通りの処理モードを持っている。すなわち、実際に画
像処理の操作を行なうモード(実行モード)と、画像処
理は行なわず、処理に要する時間を見積もる計算だけを
行ない、この結果を内部のカウンタ2に記録するモード
(見積りモード)である。この目的から、画像処理ライ
ブラリ72は、個々の操作毎に処理時間算定手段1を持
つ。
【0045】並列して実行される一つの処理単位は、複
数の仮想機械語命令からなるプログラムの記述である。
この中に、何回かの画像処理実行時ライブラリ72の呼
び出しが含まれているとき、あらかじめこの処理単位を
見積りモードで実行しておけば、この処理結果として、
処理時間の見積りの値がカウンタ2に積算される。処理
分散手段4は、このカウンタ2の値を処理分散先のプロ
セッサの決定に用いる。この時、処理分散手段4はどの
PE200にどの位の規模の処理を配置したか、その累
積を記録する目的でプロセッサ管理テーブル3を使用す
る。
【0046】処理分散手段4の処理の流れを図5を用い
て説明する。
【0047】処理分散手段4の実行に先だってユーザ記
述5の記述内容に従い、仮想機械プロセス6が、プロセ
ス複製S501と、見積りモードでの実行S502を処
理する(この処理手順は3節に述べる)。この結果、カ
ウンタ2には、処理時間の見積り値が記録されている。
処理分散手段4は、プロセッサ番号を初期設定し(S5
03)、プロセッサ管理テーブル3を参照して、負荷最
小のプロセッサの番号を記録する(S504)。この処
理は、プロセッサ番号を更新しつつ(S505)、全て
のプロセッサに対して行なわれる。これによって、負荷
最小であるプロセッサ番号が決定できるので、このプロ
セッサ番号を持つPE200に処理を分散する。すなわ
ちプロセッサ管理テーブル3のこのプロセッサ番号に該
当するフィールドに新たな負荷の値を加算し(S50
6)、処理単位をPE200に転送する(S507)。
【0048】以上の構成で、本実施例と従来発明の差で
あり、本実施例を特徴付けているのは、処理時間算定手
段1である。この動作を次に「2.1 本実施例の負荷
計算手段」で説明する。
【0049】2.負荷検出動作 従来技術が待ち行列の長さを負荷判定の指標としていた
のに対し、本実施例は、負荷を予め求めた後に、分散先
を決定する方法を採る。この点が従来技術と、本実施例
の差である。
【0050】 2.1 本実施例の負荷計算手段(図9、図10) 処理時間算定手段1の動作について説明する。
【0051】処理時間算定手段1は、画像処理実行時ラ
イブラリ72に含まれる処理(プロシージャ)一つにつ
き、一つずつ対応して組み込まれる。処理時間算定手段
1は、対応するプロシージャが呼び出された時、処理開
始から完了までにどの程度の処理時間を必要とするか求
める手段である。この時求める処理時間は、正確な値で
ある必要はない。また、処理時間算定手段1の目的は、
複数個のプロセッサに配置される処理の、それぞれの負
荷を知ることであるから、値は相対的な値で良い。更に
言えば、処理の規模、複雑さの程度に応じて、比例関係
を維持して数値を出力できれば目的を果たすことができ
る。
【0052】直線発生処理の場合の負荷の見積りを図9
の流れ図を用いて説明する。直線上の画素発生はBresen
hamのアルゴリズム(J.E.Bresenham、"Algorithm for C
omputer Control of a Digital Plotter、"IBM SystemJ
ournal、Vol.4、No.1、1965)を用いる。この時、画素
発生の処理時間は、ほぼ線分の長さに比例する。しか
し、線分が画像メモリの配置に対し、水平または垂直で
ある場合、画素発生手順は大幅に簡略化できる。そこ
で、直線発生の負荷見積りは、線分が水平の場合、線分
の長さ×重みM1とし(S901)、斜線の場合は線分
の長さ×重みM2とし(S902)、垂直の場合は線分
の長さ×重みM3と(S902)した。ここで{M1=
1.0、M2=9.0、M3=1.3}である。
【0053】次に画像の回転の場合を説明する。例え
ば、図10(a)で示した図形100が、座標軸101
に対し図示の位置関係に記述されているとする。これを
図10(b)に示した様に、座標軸101に対して角度
φをなす別の座標軸102の系に写像する操作を行な
う。本実施例では、「1.1.1 装置全体の構成」に
述べた通り、図形を{直線、曲線}と言った形状を表す
操作とそのパラメータを記述したソースファイル404
として与える。この方式で回転操作は、「アフィン変換
の操作の命令語」とこの引数として与える「行列の各要
素」で表される。アフィン変換の操作の対象は、曲線、
直線を与える記述(図形を発生する処理関数とその引
数)である。すなわち、実質的には、アフィン変換を経
て、曲線・直線発生の操作に対して与えるパラメータが
変更されるだけである。この結果、本実施例で実際に仮
想機械プロセス403を実行するプロセッサの負荷は、
アフィン変換後に変わった線分の長さに比例する。周知
の様にベジエ曲線、円弧、放物線はいずれも最終的に折
れ線近似として画素発生を行なう。このため、プロセッ
サ負荷は、実際に発生すべき直線(折れ線)の長さを求
めて、図9と同じ手順で決定できる。この値によるプロ
セッサ負荷は回転後の図形100を囲む矩形103の面
積に比例しない。
【0054】図形の拡大、縮小もアフィン変換によって
行なわれるので、負荷見積り方法は上記と同一である。
これに対し、所定領域の塗りつぶし操作は、単純に対象
領域の面積に比例する。従って、本実施例では面積を求
めることによって負荷を見積る。
【0055】3.マルチプロセッサ画像処理装置の構成
と処理分散 3.1 並列処理の記述方法 本実施例においては、図形発生を発生手順を示す一連の
「操作」と、この操作に対する「パラメータ」を与える
ことによって記述する。ここでプログラム言語の記述に
添って言えば、個々の「操作」は”関数”あるいは”プ
ロシージャ”と呼ばれる機構に相当する。また「操作に
対するパラメータ」は、関数、プロシージャへの”引
数”と見做すことができる。この様な、”図形発生手順
のプログラム記述への置き換え”は周知の技術である。
この種類の記述言語の典型的なものはページ記述言語と
呼ばれ、ページプリンタの制御に使用される。
【0056】そこで本実施例はページ記述言語の方法に
ならい、プログラム言語によって図形発生手順を記述す
ることにした。説明を容易にするため、言語の文法はお
よそプログラム言語Pascalの文法に準じている。これ
に、並列処理を記述する構文、及び複数個の図形記述の
ための標準手続きを組み込んだ。
【0057】3.1.1 並列処理の記述の文法(図1
1、図12、図13) 並列処理部分を記述する文法について説明する。周知の
ように、プログラム言語のコンパイラ・プログラムを作
成する方法は、様々な手段が開発され公知となってい
る。ここでは文法の説明のため本実施例で用いる図形記
述言語の並列記述の構文をバッカス記法に類似の記法で
図11に示した。バッカス記法は言語の構文を”生成規
則”と呼ぶ形の文法で記述するものである。図11は言
語全体の構文規則を示したものではなく、並列記述文
(cobegin - coend文)およびその周辺の構文規則を示
したものである。
【0058】図11の構文定義に従って、図12の様な
プログラム例を記述できる。ここでcobegin文121か
らcoend文122までが並列実行の対象となる。並列処
理の単位は、//記号123から次の//記号123まで、
または//記号123から、otherwaize文124までであ
る。本実施例のコンパイラは図6のプログラム部分に対
し、図13に示す機械語プログラムを生成する。但し図
13は、実際の機械語のオブジェクトコードを、ディス
アセンブルした形式によって記述している。[]内の16
進数数字は、仮想機械の命令語の値である。
【0059】図13のプログラムリストの中で、命令語
TRAP(図示131)について説明する。本実施例のコン
パイラの生成するコードでは、ライブラリに含まれる関
数及びプロシージャの呼び出しは一種のソフトウェア割
り込みによって行う。命令語TRAPは、このソフトウェア
割り込みを引き起こす命令語である。仮想機械はこの命
令語を実行すると、予め定められた特定のアドレスの値
にプログラムカウンタを書き換える。この番地に書かれ
たプログラムは、TRAP命令の引数を検査し、引数の値に
基づきライブラリ中の指定された操作を呼び出す内容で
ある。仮想機械はこのプログラムによって、ライブラリ
内の各種関数、プロシージャを呼び出し実行する。
【0060】132、133、134はライブラリ呼び
出しの実装の例である。ここでは、132が手続き(ま
たはプロシージャ)line()の呼び出しに対応し、133
が手続きstroke()に、また134が手続きfill()に対応
する。図12のソースコード中に現れるこれら手続きの
呼び出し文は、仮想機械語命令のBSR[0d](サブルーチ
ン呼び出し命令)に翻訳される。引数は、この時の実行
番地から、手続きの先頭番地への相対値として与えられ
る。
【0061】 3.1.2 組み込み手続きの説明(図12) ライブラリの中にどの様な機能を組み込むべきかは、処
理系開発の目的と、記述言語の仕様によって決まる事項
である。従って、本実施例が挙げる操作は、画像処理の
操作の一例に過ぎない。図12の記述ではライブラリに
含まれる操作の中から、{line()、stroke()、fill()}
を例として用いている。以下これらプロシージャについ
て説明する。
【0062】○手続きline(x1,y1,x2,y
2) このプロシージャは、4つの整数を引数として呼び出さ
れる。上記x1、y1、x2、y2には任意の整数を代入する
事ができる。このプロシージャは、現在処理中の線幅を
用いて、座標(x1,y1)から座標(x2,y2)まで直線上に画素
発生を行なう(この線分は、数学的な線分と異なり、画
素密度に応じた線幅を持つ)。
【0063】 ○手続きstroke(N,x1,y1,x2,y2, ... ,xN,yN) このプロシージャは、可変個数の整数を引数に持つ。但
し、引数の整数は2個で一対の座標値として評価され
(リスト中の(xi,yi))、全体の座標の個数は第1の引
数(N)として与える。故に、このプロシージャは、全
体で2N+1個の整数引数を持つ。このプロシージャは、N
個の座標からなる閉じた多角形領域を登録する(この
時、折れ線は線幅を持たないとして評価する)。
【0064】○手続きfill() このプロシージャは引数を持たず、直前に登録された領
域があれば、この領域内部を塗りつぶす。塗りつぶしの
パターンおよび、領域の線幅には、この時点でのパター
ン、線幅を用いる。
【0065】3.2 並列記述の翻訳結果(図12、図
13、図6、図8) 図12のソースコードの中で、特に121から122に
示される並列記述部分がどの様に機械語に翻訳され、実
行されるかを図13と図6を用いて説明する。一つの並
列記述文(//文123に続く文)は、機械語FORK[2c]に
始まりEXIT[2d]に終わる一連の記述に翻訳される。13
5は、文123で始まる一行の内容を翻訳した結果の機
械語である。すでに述べた通り、この機械語記述は仮想
機械プロセス403によって実行される。仮想機械プロ
セス403の処理は図6で示す永久ループである。
【0066】以下仮想機械プロセス403の処理を順次
説明する。
【0067】まず命令語がフェッチされる(S60
1)。この命令語がFORK[2c]であれば、プロセスの複製
が行なわれる(S501)。プロセスの複製は、現処理
中のユーザ記述5と全く同一のオブジェクトコードをメ
モリ上に複製し、このオブジェクトコードに関するプロ
グラムカウンタの記録を、現在処理番地に設定する処理
である。この時、FORK[2c]を実行したユーザ記述5の側
では、内部フラグを0とする。他方、複製された側は内
部フラグを1とする。
【0068】複製された側のユーザ記述は、転送バッフ
ァに置かれ、配置先のPE200が決定した時点で、処
理分散手段4によって転送される。転送先のPE200
では、仮想機械プロセス403がこのユーザ記述を受け
とって処理を継続する。処理分散手段4は、命令語EVAL
[2f]の処理で実行される。これは「3.3 処理負荷の
見積り動作」で述べる。
【0069】本実施例のコンパイラ402は、通常FORK
[2c]に続いてEVAL[2f]命令を配置する。これを読み取っ
た場合、仮想機械プロセス403は、次のプログラム番
地をスタックにプッシュし、見積りモード実行のための
内部フラグを「真」にする(S602)。見積りモード
については「1.2 本実施例の特徴」でやや述べた。
これに続いて実際の見積りモードの実行が行なわれる
(S603)。見積りモードの実行が完了すると、見積
りモード実行のための内部フラグを「偽」とし、プログ
ラムカウンタの値をスタックから取り出す(S60
4)。
【0070】これによって通常の実行状態に戻り、処理
が続く。次に実行される命令はBEQ[0c]である。この命
令は内部フラグが0のとき分岐し、非0の時、次の番地
以降の処理を指定する命令である。前述の様に、処理を
FORK[2c]命令で並列化した時、複製元となったユーザ記
述では内部フラグ=0である。従ってFORK[2c]を実行し
たユーザ記述の側は、分岐して次の実行に入る。すなわ
ち、図12のソースコードで言えば、//文123以後の
文はスキップして、次の//文123またはotherwise文
124を処理する。
【0071】次に、処理分岐の発生元となったPE20
0の側での仮想機械プロセス403の動作を更に説明す
る。FORK[2c]とBEQ[0c]命令の実行によって、処理分岐
の発生元となったユーザ記述5は、結局Otherwise文1
24からcoend文122までの範囲だけを実行する。本
実施例のコンパイラ402はcoend文122に対してWAI
T[2e]命令を発生する。仮想機械プロセス403は、WAI
T[2e]命令が有ると、WAIT処理を行なう(S605)。
これは、他の各PE200での処理結果が受信バッファ
の待ち行列に有るか検査し、全てのPE200から処理
結果が戻るまで待機する処理である。
【0072】処理の流れを図8に示した。仮想機械プロ
セス403は、受信バッファを検査し、処理結果の受信
有無を検査する(S803)。受信が無ければ仮想機械
プロセス403は休眠し(S804)、受信シグナルを
受けたOS204が、このプロセスを再起動(S80
5)するまで、他のプロセスが実行される。再起動後、
仮想機械プロセス403は、処理結果を取得し、処理終
了となったプロセッサ番号を検出する(S806)。ま
た処理単位に一意に与えられる処理番号を取り出し、こ
れからプロセッサ管理テーブルの該当するプロセッサの
項目にアクセスし、処理番号から処理負荷の値を検索
し、この値をプロセッサ負荷から減算しておく(S80
7)。仮想機械プロセス403が、分散した全ての処理
単位に対し、この処理を行なった場合(S808)、WA
IT処理は完了する。
【0073】他方、FORK[2c]命令によって、処理分岐さ
れた側の動作を説明する。処理分岐の結果、処理分散手
段4が、ユーザ記述(複製)を分散先のPE200に送
る。これを受け取ったPE200上の仮想機械プロセス
403は、図6の流れ図に添った処理を行なう。但し、
内部フラグは'=1'であり、またプログラムカウンタの
値は、FORK[2c]命令の直後の位置にある。内部フラグ=
1のとき、EVAL[2f]命令は何も行なわない。しかし仮想
機械プロセス403は、他の命令を通常通り処理する。
これにより分散先のPE200では、記述135を例に
とれば、EXIT[2d]命令までが通常通り処理される。
【0074】EXIT[2d]命令の処理の流れを図8に示し
た。仮想機械プロセス403は、EXIT[2d]命令を検出し
た後、処理結果と、処理単位毎に一意に決まる処理番号
を送信バッファに置く(S801)。次に仮想機械プロ
セス403は、これを、バス調停装置203を用いて、
システムバス35を介して、処理要求元のPE200に
送信する(S802)。
【0075】図6に戻って説明を続ける。
【0076】ユーザ記述の終了は、機械語命令HALT[10]
に翻訳される。これを検出した仮想機械プロセス403
は、一つのユーザ記述5について処理を終える。しかし
更に仮想機械インタープリタ7の待ち行列711に、別
のユーザ記述が要求としてエンキュウされていれば、今
度はこの記述を取り出し、同じ様に処理ループを続け
る。
【0077】3.3 処理負荷の見積り動作(図7) 負荷の検出方法については、既に「2.1 本実施例の
負荷計算手段」で述べた。ここでは、処理時間算定手段
1を呼び出す機械語命令EVAL[2f]の動作を図7によって
説明する。なお本実施例では仮想機械語命令としてEVAL
[2f]を定義し使用したが、この命令自体は複数の機械語
の組み合わせでマクロ定義できる。以下は、負荷見積り
の命令語を実装する上での例を説明するものである。
【0078】EVAL処理(S603)は、分散されたPE
200上では、内部フラグ=1であるため実行されな
い。これ以外のとき、仮想機械プロセス403は、負荷
カウンタ2を初期化し(S701)、続く機械語命令を
フェッチする(S702)。この機械語命令が、TRAP[2
a]であるとき、前述の処理時間算定手段1を実行する
(S703)。この処理結果は、負荷カウンタ2に加算
される(S704)。その他の命令は、通常処理され
る。しかし仮想機械プロセス403は、EXIT[2d]命令を
検出した場合、処理分散手段4を呼び出し、既にFORK[2
c]命令によって複製されていたユーザ記述を、他のPE
200に転送する(S705)。この時、処理負荷によ
って適切なプロセッサが選択される必要がある。この処
理は処理分散手段4の特徴であり、既に図5を用いて述
べた通りである。
【0079】4.他の実施例(図15) 再び図4をに戻り説明する。エディタ401とコンパイ
ラ402は、必ずしも本実施例の様にマルチプロセッサ
画像処理装置の上で実行される必要は無い。401、4
02を他のコンピュータで実行し、その処理結果として
得られるユーザプログラム404を、マルチプロセッサ
画像処理装置への入力として与えても良い。この時、マ
ルチプロセッサ画像処理装置側には、少なくとも仮想機
械プロセス403を実装する必要がある。また、処理時
間算定手段1を含んだ画像処理ライブラリ72が必要で
ある。
【0080】図15(a)は、本発明の別の実施例とし
て挙げる印刷装置の構成図である。パーソナルコンピュ
ータ151と通信経路154で接続した電子写真式のプ
リンタにおいて、マルチプロセッサ画像処理装置153
が画素発生を行ない、処理結果をプリントエンジン15
2に出力する。この構成を更に図15(b)を用いて説
明する。
【0081】コンピュータ151の使用者は、アプリケ
ーション155を使用し、ドキュメントの印刷操作を行
なう。この時、アプリケーション155はOS159の
用意するプリンタドライバ157を起動し、印刷処理を
行なう。プリンタドライバ157はアプリケーションの
指示に従い、画像記述のソースコードを生成し、続いて
コンパイルまでを行なう。この結果、プリンタドライバ
157は前の実施例に述べたような仮想機械の命令語か
らなるデータを作成する。次にプリンタドライバ157
が、このデータをデバイスドライバ158を用いて通信
経路154に送る。このデータはプリンタに組み込まれ
たマルチプロセッサ画像処理装置153によって受信さ
れる。
【0082】マルチプロセッサ画像処理装置153内の
仮想機械プロセス403は、画像処理ライブラリ72を
利用して前記実施例と同様に処理を行ない、処理結果を
プリントエンジン152に出力する。
【0083】以上2つの実施例に示した様に、本発明で
は負荷を見積もってからプロセッサに分散する手段が、
最適負荷分散を実現している。そこで、本発明の方法
を、各プロセッサがより独立して構成された処理装置に
用いる事が考えられる。前記実施例では、プロセッサ間
の通信をシステムバス35によって行なった。これに替
えて、プロセッサ間の通信をローカルエリアネットワー
ク(以下LAN)によって行なう事が考えられる。この
方式を用いた場合、LANによって接続された複数のワ
ークステーション(以下WS)を用意し、この上で前記
実施例のと等価な仮想機械プロセスを実行する。WSは
マルチタスク処理を行なうOSを実装しており、ここに
仮想機械プロセスを実装した場合、システムバス35に
替えてLANを用いる以外は、ほぼ前記実施例と同様の
処理が可能である。この構成では、複雑なドキュメント
の画像処理/印刷処理を、適当な負荷配分の元に複数台
のWSを用いて処理できるため、処理速度面で極めて優
秀な処理装置を実現できる。
【0084】
【発明の効果】以上の説明から明らかな様に、本発明の
マルチプロセッサ画像処理装置では、実行時ライブラリ
中の操作の一つ一つに対応した処理負荷の見積り手段が
備わっている事により、画像処理の実際の操作開始に先
立って処理負荷を見積もる事ができるため、現在待ち行
列にある処理要求も含めて個々のプロセッサの負荷を正
しく評価する事が可能となった。これにより、本発明で
はプロセッサに多大な負荷を与えるため分割して処理を
行なう事が不適当な画像の拡大・縮小、回転等の画像処
理分野において、各プロセッサへの処理の分散を適切な
負荷配分の下に行なうことに成功した。
【0085】言い替えれば、本発明は個々のプロセッサ
への負荷配分を均等化する有効手段を提供するものであ
り、いわゆる「粒度の大きな」並列処理において、マル
チプロセッサ装置の性能を最大限に引き出すことを可能
にする効果が有る。
【図面の簡単な説明】
【図1】 第1の実施例の特徴となる構成を示す図。
【図2】 プログラムの実行時の状態の説明図。
【図3】 マルチプロセッサ画像処理装置の全体の構成
を示す図。
【図4】 マルチプロセッサ画像処理装置の処理手順の
概要を説明した図。
【図5】 処理分散手段4の動作を説明した流れ図。
【図6】 仮想機械プロセスの動作を説明した流れ図。
【図7】 機械語EVALの動作を説明した流れ図。
【図8】 機械語EXIT及びWAITの動作を説明した流れ
図。
【図9】 直線発生時の負荷見積り方法を示した流れ
図。
【図10】 画像回転の例を説明する図。
【図11】 実施例で用いた並列記述言語の構文規則の
説明図。
【図12】 並列記述言語による記述例の説明図。
【図13】 図12の記述例をコンパイルした時の機械
語の説明図。
【図14】 粒度のばらつきの大きい場合の負荷分散の
問題点を説明した図。
【図15】 第2の実施例の構成図。
【符号の説明】 1…処理時間算定手段 2…負荷カウンタ 3…プロセッサ管理テーブル 4…処理分散手段 5…ユーザの記述によるオブジェクトコード 6…仮想機械プロセス 7…仮想機械インタープリタ 8…システムの資源 31…MPU 32…ROM 33…RAM 34…プロセッサ基板 35…システムバス 36…I/O装置 41…待ち行列 42…処理要求 71…プログラムインターフェース 72…画像処理実行時ライブラリ 81…通信手段 82…待ち行列 100…図形 101…座標 102…回転した座標 103…図形を囲む領域 121…cobegin文 122…coend文 123…並列記述文 124…otherwise文 135…翻訳された機械語の例 151…パーソナルコンピュータ 152…プリントエンジン 153…マルチプロセッサ画像処理装置 154…通信経路 155…アプリケーション 157…プリンタドライバ 158…デバイスドライバ 159…オペレーティングシステム 200…一つのプロセッサエレメント 201…プロセス 202…オブジェクトコード 203…バス調停装置 204…オペレーティングシステム 205…スケジューラ 206…スケジューラ待ち行列 207…サービスプログラム 401…エディタ 402…コンパイラ 403…仮想機械プロセス 404…ソースファイル 405…オブジェクトファイル 711…待ち行列 712…分岐テーブル

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 処理対象の画像に関する一連の操作を複
    数の処理単位に分割して、各処理単位を複数個のプロセ
    ッサに分散し、並列に実行することによって処理速度の
    向上を図る装置であって、 画像処理に関する所定の処理要求を、複数個のプロセッ
    サの中から選択した一つのプロセッサにそれぞれ分散す
    る処理分散手段と、 予め定めた特定の画像操作からなる実行時ライブラリ
    と、 前記実行時ライブラリ中の操作の一つ一つに対応した処
    理負荷の見積りを行う見積り手段と、によって構成さ
    れ、目的処理中に前記実行時ライブラリに含まれる画像
    操作が呼び出される時、操作開始に先立ち、負荷見積り
    手段が処理負荷を計算し、この値を処理分散手段に通知
    し、処理分散手段は前記の通知された値から処理単位を
    分散するプロセッサを決定する事を特徴とするマルチプ
    ロセッサ画像処理装置。
JP6434493A 1993-03-23 1993-03-23 マルチプロセッサ画像処理装置 Pending JPH06274608A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6434493A JPH06274608A (ja) 1993-03-23 1993-03-23 マルチプロセッサ画像処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6434493A JPH06274608A (ja) 1993-03-23 1993-03-23 マルチプロセッサ画像処理装置

Publications (1)

Publication Number Publication Date
JPH06274608A true JPH06274608A (ja) 1994-09-30

Family

ID=13255535

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6434493A Pending JPH06274608A (ja) 1993-03-23 1993-03-23 マルチプロセッサ画像処理装置

Country Status (1)

Country Link
JP (1) JPH06274608A (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09147010A (ja) * 1995-09-19 1997-06-06 Toshiba Corp ネットワークコンピュータシステム構築支援装置および支援方法
US6570571B1 (en) 1999-01-27 2003-05-27 Nec Corporation Image processing apparatus and method for efficient distribution of image processing to plurality of graphics processors
JP2006065460A (ja) * 2004-08-25 2006-03-09 Seiko Epson Corp 画像処理を並列処理で実行する際の負荷の割り付け
JP2006065459A (ja) * 2004-08-25 2006-03-09 Seiko Epson Corp 画像処理を並列処理で実行する際の負荷の割り付け
JP2007206255A (ja) * 2006-01-31 2007-08-16 Canon Inc 表示制御装置及び負荷分散方法
US7587716B2 (en) 2003-02-21 2009-09-08 Sharp Kabushiki Kaisha Asymmetrical multiprocessor system, image processing apparatus and image forming apparatus using same, and unit job processing method using asymmetrical multiprocessor
JP2010237936A (ja) * 2009-03-31 2010-10-21 Nec Personal Products Co Ltd 画像処理装置、画像処理方法およびプログラム
US7965373B2 (en) 2005-06-28 2011-06-21 Asml Netherlands B.V. Lithographic apparatus and device manufacturing method utilizing a datapath having a balanced calculation load
JP2011141206A (ja) * 2010-01-07 2011-07-21 Toshiba Corp パターン評価システム、パターン評価方法および半導体装置の製造方法
US8108661B2 (en) 2008-12-05 2012-01-31 Samsung Electronics Co., Ltd. Data processing apparatus and method of controlling the data processing apparatus
US8824010B2 (en) 2011-10-25 2014-09-02 Canon Kabushiki Kaisha Image formation processing apparatus and image processing method
US11700299B2 (en) 2019-02-05 2023-07-11 Mitsubishi Electric Corporation Information processing apparatus, information processing system, non-transitory computer-readable medium, and information processing method

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09147010A (ja) * 1995-09-19 1997-06-06 Toshiba Corp ネットワークコンピュータシステム構築支援装置および支援方法
US6570571B1 (en) 1999-01-27 2003-05-27 Nec Corporation Image processing apparatus and method for efficient distribution of image processing to plurality of graphics processors
US7587716B2 (en) 2003-02-21 2009-09-08 Sharp Kabushiki Kaisha Asymmetrical multiprocessor system, image processing apparatus and image forming apparatus using same, and unit job processing method using asymmetrical multiprocessor
JP4556554B2 (ja) * 2004-08-25 2010-10-06 セイコーエプソン株式会社 画像処理を並列処理で実行する際の負荷の割り付け
JP2006065459A (ja) * 2004-08-25 2006-03-09 Seiko Epson Corp 画像処理を並列処理で実行する際の負荷の割り付け
JP2006065460A (ja) * 2004-08-25 2006-03-09 Seiko Epson Corp 画像処理を並列処理で実行する際の負荷の割り付け
US7965373B2 (en) 2005-06-28 2011-06-21 Asml Netherlands B.V. Lithographic apparatus and device manufacturing method utilizing a datapath having a balanced calculation load
JP2007206255A (ja) * 2006-01-31 2007-08-16 Canon Inc 表示制御装置及び負荷分散方法
US8108661B2 (en) 2008-12-05 2012-01-31 Samsung Electronics Co., Ltd. Data processing apparatus and method of controlling the data processing apparatus
JP2010237936A (ja) * 2009-03-31 2010-10-21 Nec Personal Products Co Ltd 画像処理装置、画像処理方法およびプログラム
JP2011141206A (ja) * 2010-01-07 2011-07-21 Toshiba Corp パターン評価システム、パターン評価方法および半導体装置の製造方法
US8824010B2 (en) 2011-10-25 2014-09-02 Canon Kabushiki Kaisha Image formation processing apparatus and image processing method
US11700299B2 (en) 2019-02-05 2023-07-11 Mitsubishi Electric Corporation Information processing apparatus, information processing system, non-transitory computer-readable medium, and information processing method

Similar Documents

Publication Publication Date Title
US20230038061A1 (en) Convergence among concurrently executing threads
US8375392B2 (en) Data aware scheduling on heterogeneous platforms
US20100083185A1 (en) Computer program, multiprocessor system, and grouping method
EP0652511B1 (en) Apparatus and method for generating a program for parallel processing
Lampson et al. A processor for a high-performance personal computer
JPH06274608A (ja) マルチプロセッサ画像処理装置
JP2009515246A (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
US20030177288A1 (en) Multiprocessor system
JPH10198539A (ja) 画像形成装置および画像形成方法
Nozal et al. Load balancing in a heterogeneous world: CPU-Xeon Phi co-execution of data-parallel kernels
Ke et al. neoSYCL: a SYCL implementation for SX-Aurora TSUBASA
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
US10163179B2 (en) Method and apparatus for intelligent cloud-based graphics updates
Kaminsky Special feature: Developing a multiple-instructon-stream single-chip processor
US11467836B2 (en) Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core
CN103262039A (zh) 用于处理装置的同步操作的方法和系统
US9311156B2 (en) System and method for distributing data processes among resources
Collins et al. Flexible filters: load balancing through backpressure for stream programs
JPH06243112A (ja) マルチプロセッサ装置
US20130007765A1 (en) Software control device, software control method, and computer product
JP3284522B2 (ja) プログラム生成装置
Smith et al. PIPE: A high performance VLSI architecture
Tarakji et al. The development of a scheduling system GPUSched for graphics processing units
CN113238869A (zh) 一种计算加速方法、设备和系统及存储介质
JP3284523B2 (ja) プログラム生成装置