JPH0380337A - 並列化装置 - Google Patents

並列化装置

Info

Publication number
JPH0380337A
JPH0380337A JP2107575A JP10757590A JPH0380337A JP H0380337 A JPH0380337 A JP H0380337A JP 2107575 A JP2107575 A JP 2107575A JP 10757590 A JP10757590 A JP 10757590A JP H0380337 A JPH0380337 A JP H0380337A
Authority
JP
Japan
Prior art keywords
task
tasks
processor
program
processing
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.)
Granted
Application number
JP2107575A
Other languages
English (en)
Other versions
JP3039953B2 (ja
Inventor
Kazuhiro Umekita
梅北 和弘
Masatsugu Kametani
亀谷 雅嗣
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPH0380337A publication Critical patent/JPH0380337A/ja
Application granted granted Critical
Publication of JP3039953B2 publication Critical patent/JP3039953B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、複数のプロセッサを有し、プロセッサ間で通
信を行う通信機構とプロセッサ間で待合せをしながら処
理を進める同期機構とを有するマルチプロセッサシステ
ムが並列処理可能なオブジェクトプログラムを実行すべ
きプログラムから生成する並列化装置に関する。
〔従来の技術〕
従来、マルチプロセッサシステムで並処列理を行う場合
、プログラムをジョブやスレッド等の大きな単位に分割
し、フラグチエツクやトークン制御等の方法により、タ
スク間の先行関係をすべて満たすことを確認することを
前提としたタスクのスケジューリングを行っていた。
なお、この種の装置として関連するものには、例えば特
開昭63−184841号公報に記載されているものが
ある。
〔発明が解決しようとする課題〕
上記従来技術は、プログラムを大きな単位に分割し、並
列化スケジュールするため、プログラムが本来もってい
る並列性をひき出すことができず、効果的な並列処理が
できないという問題点があつた。
さらに、フラグチエツクやトークン制御でタスクの先行
関係を管理するため、並列化スケジュールを作成するの
に非常に多くの時間を要していた。
本発明の目的は、複数のプロセッサを有し、プロセッサ
間で通信を行う通信機構とプロセッサ間で待合せをしな
がら処理を進める同期機構とを有するマルチプロセッサ
システムが高効率な並列処理を行うことができるオブジ
ェクトプログラムを高速に、かつ、プロセッサの種類に
よらず普遍的に、種々のソースプログラムに対応して生
成する並列化装置を提供することである。
本発明の他の目的は、前記マルチプロセッサの同期処理
によるオーバーヘッドを小さくするタスクスケジュール
結果を得る並列化装置を提供することである。
本発明の他の目的は、前記マルチプロセッサの同期処理
によるオーバーヘッドを小さくした、前記マルチプロセ
ッサ中の各プロセッサが実行すべきオブジェクトプログ
ラムを、各プロセッサに割付ける並列化装置を提供する
ことである。
本発明の他の目的は、前記マルチプロセッサの並列処理
に起因するオーバーヘッドを考慮に入れて、プログラム
の前記マルチプロセッサでの実行時間をほぼ最小にでき
る、前記マルチプロセッサ中の各プロセッサが実行すべ
きオブジェクトプログラムを、各プロセッサに割付ける
並列化装置を提供することである。
本発明の他の目的は、種々のプロセッサに対応でき、高
い汎用性をもつ並列化装置を提供することにある。
本発明の他の目的は、もどのプログラムの構造を変えず
に、タスク間リレーションを容易に見つけ出すことがで
き、高速にタスクスケジュールする並列化装置を提供す
ることである。
〔課題を解決するための手段〕 上記第1の目的を達成するため、本発明の第1の並列化
装置は、複数のプロセッサを有し、プロセッサ間で通信
を行う通信機構とプロセッサ間で待合せをしながら処理
を進める同期機構とを有するマルチプロセッサシステム
が並列処理可能なオブジェクトプログラムを実行すべき
プログラムから生成する並列化装置において、実行すべ
きプログラムをタスクに分割し、タスクがどのタスクか
らの結果データから影響をうけるか、またはタスクが出
力する結果データが、どのタスクの実行に影響を与える
かを前記プログラム中のオペランドデータを調べること
によって、タスク間リレーション情報と、タスクを構成
するマシン命令の処理時間を加算することによりタスク
処理時間情報とを生成するタスク分割手段と、上記タス
ク分割手段が出力したタスク処理時間、タスク間リレー
ション情報をもとに、前記マルチプロセッサシステムに
おいて、並列に実行できるタスクをそれぞれ別のプロセ
ッサで実行させるため、先行関係に矛盾がおこらないよ
うに、各プロセッサで実行すべきタスク群とその処理シ
ーケンス情報を生成すると共に前記同期機構による待合
せ処理をどの時点で行うべきかという同期情報を生成す
るタスクスケジュール手段と、前記タスクスケジュール
手段が生成した、前記マルチプロセッサ中の各プロセッ
サに割付けるべきタスクとその処理シーケンスを、前記
マルチプロセッサ中の各プロセッサが実行すべきオブジ
ェクトプログラムとして定義して、各プロセッサに割付
ける機能を持つ並列化コンパイル手段とを有する。
上記第2の目的を達成するため本発明の第2の並列化装
置は、前記本発明の第1の並列化装置において、タスク
スケジュールした後、タスクを結合することによって、
同期機構による待合せ処理回数を減らすことができ、前
記マルチプロセッサでの並列処理実行時間を短縮できる
タスクを結合してそれを1つのタスクとするためのタス
ク結合情報を生成する機能を有するタスクスケジュール
手段を有する。
上記第3の目的を達成するため本発明の第3の並列化装
置は、前記本発明の第2の並列化装置において、生成さ
れたタスク結合情報をもとに、タスクを結合するタスク
スケジュール手段を有する。
上記第4の目的を達成するため本発明の第4の並列化装
置は、前記本発明の第2の並列化装置において、前記タ
スクスケジュール手段が生成したタスク結合情報をもと
に、タスクを結合して、これを新たなタスクとして生成
するタスク分割手段を有する。
上記第5の目的を達成するため本発明の第5の並列化装
置は、前記本発明の第1〜第4の並列化装置において、
プログラムを種々のプロセッサの各命令を一般的に表現
する仮想マシンコードから成るプリオブジェクトプログ
ラムに変換するプリコンパイラを有する。
上記第6の目的を達成するため本発明の第6の並列化装
置は、前記本発明の第5の並列化装置において、関数形
式であらわされたデータに一対一に対応するデータに変
換できる仮想マシンコードを有する。
〔作用〕
本発明の第1の並列化装置によれば、複数のプロセッサ
を有し、プロセッサ間で通信を行う通信機構とプロセッ
サ間で待合せをしながら処理を進める同期機構とを有す
るマルチプロセッサシステムが並列処理可能なオブジェ
クトプログラムを実行すべきプログラムから生成する並
列化装置においてタスク分割手段は、実行すべきプログ
ラムをタスクに分割し、タスクがどのタスクからの結果
データから影響をうけるか、またはタスクが出力する結
果データが、どのタスクの実行に影響を与えるかを前記
プログラム中のオペランドデータを調べることによって
、タスク間リレーション情報と、タスクを構成するマシ
ン命令の処理時間を加算することによりタスク処理時間
情報とを生成する。
タスクスケジュール手段は上記タスク分割手段が出力し
たタスク処理時間、タスク間リレーション情報をもとに
、前記マルチプロセッサシステムにおいて並列に実行で
きるタスクをそれぞれ別のプロセッサで実行させるため
、先行関係に矛盾がおこらないように、各プロセッサで
実行すべきタスク群とその処理シーケンス情報を生成す
ると共に前記同期機構による待合せ処理をどの時点で行
うべきかという同期情報を生成する。
並列化コンパイル手段は、前記タスクスケジュール手段
が生成した、前記マルチプロセッサ中の各プロセッサに
割付けるべきタスクとその処理シーケンスを、前記マル
チプロセッサ中の各プロセッサが実行すべきオブジェク
トプログラムとして定義して、各プロセッサに割付ける
本発明の第2の並列化装置によれば、前記本発明の第1
の並列化装置において、タスクスケジュール手段は、タ
スクスケジュールした後、タスクを結合することによっ
て、同期機構による待合せ処理回数を減らすことができ
、前記マルチプロセッサでの並列処理実行時間を短縮で
きるタスクを結合してそれを1つのタスクとするための
タスク結合情報を生成する。
本発明の第3の並列化装置によれば、前記本発明の第2
の並列化装置において、生成されたタスク結合情報をも
とに、タスクスケジュール手段がタスクを結合する。
本発明の第4の並列化装置によれば、前記本発明の第2
の並列化装置において、タスク分割手段が、前記タスク
スケジュール手段が生成したタスク結合情報をもとに、
タスクを結合して、これを新たなタスクとして生成する
本発明の第5の並列状態によれば、前記本発明の第1〜
第4の並列化装置において、プリコンパイラが、プログ
ラムを種々のプロセッサの各命令を一般的に表現する仮
想マシンコードから成るプリオブジェクトプログラムに
変換する。
本発明の第6の並列化装置によれば、前記本発明の第5
の並列化装置において、仮想マシンコードによって、関
数形式で表されたデータを一対一に対応させる。
〔実施例〕
この発明の実施例を、図面を参照しながら説明する。
く第1実施例〉 第1図に本発明の第1実施例を示す。本実施例の並列化
装置10はプリコンパイル手段2.核システムルーチン
3.タスク分割手段4.タスクスケジュール手段5.並
列化コンパイル手段6から或っている。
また1本発明の並列化装置10によって、並列処理可能
となったオブジェクトコードおよびシーケンスを実行す
る並列処理装置(ターゲットマシン)9は、複数のプロ
セッサを備えており、各プロセッサで実行される各タス
クの実行が終了したことをチエツクし、タスク間先行関
係に矛膚なく並列処理を進めるためのプロセッサ間同期
機構および、プロセッサ間でのデータ授受を確実に行う
ための通信機構を備えている。
前者(プロセッサ間同期機構)の例として、特開昭63
−45670号に示されるプロセッサ間同期装置を用い
ることができ、後者(通信機構)の例として高速・高効
率で任意のプロセッサからランダムアクセス可能な共有
メモリを用いることができる。
このような共有メモリを実現するには、各プロセッサと
この共有メモリとを接続するバスを、例えば特開昭62
−154057号、特開昭53−47866号に示され
る高速かつ高効率な信号制御回路を用いて制御すればよ
い、ターゲットマシン9の一例を第28図に示す1本実
施例では、このターゲットマシン9においては、複数の
プロセッサで共通に用いるデータは共有メモリ上におき
、特定の1プロセツサでのみ用いるデータは該プロセッ
サのローカルメモリまたはレジスタ上に配置することと
する。
ソースプログラム1をターゲットマシン9で並列処理で
きるようにするため、本発明の並列化装置10は次のよ
うに動作する。
プリコンパイル手段2はソースプログラム1を核システ
ムルーチン3の規定する仮想マシンコードに変換し、タ
スク分割手段4に送る。
仮想マシンコードとは、並列化するために必要な条件を
満たし、かつプロセッサの命令を一般的に表現したマシ
ンコードである。並列化するために必要な条件を満たす
ため、本例では関数形式で表されたデータを一対一で変
換する機能をもっている仮想マシンコードを用いる。プ
ログラムを仮想マシンコードに変換する方法として、例
えば次のような方法がある。ソースプログラムを記述し
ているステートメントと核システムルーチンどの対応を
示すテーブル(以下SNテーブルと称す)を用意し、プ
リコンパイル手段2は、SNテーブルと核システムルー
チンによって、プログラム1を仮想マシンコードに変換
する。
SNテーブルは例えばプリコンパイル手段にもたせても
よい、核システムルーチンはそれぞれ、ある処理を行う
ための仮想マシンコードによって構成されており、この
ような核システムルーチンの集合を核言語と呼ぶ。
このようにして、プリコンパイル手段2は、ソースプロ
グラム1を仮想マシンコードに変換し、タスク分割手段
4に送る。
タスク分割手段4は、プリコンパイル手段2から送られ
てきた仮想マシンコード群をタスクと呼ぶ単位に分割し
、各タスクの処理時間、タスク間先行関係のデータを生
成する。タスク間先行関係は次のように定義される。す
なわち、あるタスクQにおいて、別のタスクPの実行結
果を用いる場合には、タスクQの実行開始前に、タスク
Pは終了していなければならず、このような場合タスク
PとQの間には先行関係があると言う、また、タスクP
をタスクQのアセンプントタスク、タスクQをタスクP
のデイセンプントタスクと呼ぶことにする。
この関係にある時、第5図に示すように先行関係を矢印
で示すこととし、このようなタスクの先行関係を示す図
をタスクリレーショングラフと呼ぶことにする。タスク
分割手段4は、次の各場合に応じて、それぞれに示した
方法によって、第6図に示すようにタスク間先行関係を
示すテーブル(タスクリレーションテーブル)を生成す
ることができる。
1)ソースプログラム1が関数形式で記述されている場
合、プリコンパイル手段2から出力される仮想マシンコ
ードは関数形式になっているから、各タスクTの実行に
必要なデータを出力するタスクAが該タスクTのアセン
プントタスクとなり、タスク間リレーションテーブルを
生成できる。
2)ソースプログラム1が非関数形式で書かれている場
合 a)ソースプログラムレベルのプログラム書換えを行わ
ない場合 例えば、プリコンパイル手段2にソースプログラム1中
のステートメントとこれを関数形式にした時の対応テー
ブルをもたせ、このテーブルとプリコンパイルした仮想
マシンフードをタスク分割手段4に送り、この両方によ
って、各タスクTの実行に必要なデータを出力するタス
クAが該タスクTのアセンプントタスクとなり、タスク
間リレーションテーブルを生成できる。
b)ソースプログラムレベルのプログラム書換えを行う
場合。
以下に示すような方法でタスクモジュールとして最小単
位とみなせるレベルでソースプログラムを関数形式化し
、(1)に帰着させる。
i)ソースプログラムがメモリ変数のみを用いている場
合(レジスタ変数を用いない場合) これは、ソースプログラムがレジスタ演算を用いずすべ
てメモリ演算のみで構成されている場合である。ここで
、メモリとして共有メモリを選べば、このメモリ上のデ
ータは任意のプロセッサからアクセスすることができる
。ソースプログラムを関数形式に変換する関数形式にす
る一方法として、異なる変数、定数には同一名をつけな
い方法があり、第2図にその例を示す。第2図において
a=b+cとはrb+cを実行し、その結果をaに代入
する」の意味である。
このような関数形式に変換するアルゴリズムとして、例
えば、次のような変換アルゴリズムを用いる方法がある
即ち、等号の左辺に同一変数または定数名を示す文字(
列)がm回(m≧2)記述されていた場合、i (2≦
i≦m)回目の式の等号左辺を第1回目の変数または定
数名を示す文字列Nlと異なる文字(列)Niに変更し
、この式の次の式から(i+1)回目に等号左辺に同一
文字列Ni が現れる式まで(この式を含む)の式にお
ける等号右辺の該同一文字列は文字列Ntに書換える。
以上の操作を2≦i≦mの各iについて行えばよい、こ
れにより、ソースプログラムは関数表現となり(1)に
帰着する。
五)ソースプログラムがレジスタ変数を用いている場合 次の(イ)、(ロ)いずれかの方法をとる。
イ)レジスタ演算をすべてメモリ演算に変換する。
この時−(2)  (b)  (i)に帰着される。
口)メモリからロードして、メモリにストアする型をと
るようにし、これをタスクの最小単位とする。これを実
現するためには、この型を満足するようにソースプログ
ラムを区切るか、または単に区切っただけでは実現でき
ない場合はメモリからのロード、メモリへのストア命命
を追加、挿入する。これにより、(2)−(b)−(i
)に帰着される。
タスク分割手段4におけるタスク分割方法として、例え
ば次の方法がある。
ソースプログラムlはプリコンパイル手段2によって、
仮想マシンコードに変換されている。タスク分割手段4
においては、この1仮想マシンコ一ド単位にまで展開さ
れた仮想マシンコード群を1仮想マシンコードを1つの
タスクとしてタスクに分割し、第3図に示すタスク登録
テーブル(タスク地と各タスクに含まれる仮想マシンコ
ード、各タスク処理時間を示すテーブル)にタスク内容
(即ち、そのタスクに含まれる仮想マシンコード)を登
録する0次に第4図に示す仮想マシンコード−実マシン
コード対照テーブルにおいて、用いようとするターゲッ
トマシン上の実プロセツサの欄を参照することにより、
そのタスクを実行するのに要する処理時間をタスク処理
時間として、タスク登録テーブルのタスク処理時間とし
て、タスク登録テーブルのタスク処理時間の欄に登録す
る。
仮想マシンコード−実マシンコード対照テーブルは、各
仮想マシンコードに対応する実プロセツサのマシンコー
ドおよびその処理時間を、各仮想マシンコードごとに、
各実プロセツサごとに示している。第3図に示すタスク
登録テーブルにおいては、実プロセツサがプロセッサA
であった場合の例を示しである。
タスク分割手段4のタスクリレーションテーブル生成法
は先述の通りであり、第7図に示すタスクリレーション
グラフを有するタスク群のタスクリレーションテーブル
を第6図に示す。
第7図において、丸印11の内側の数字はタスク番号、
丸印11横の数字はタスク処理時間、丸印13はタスク
間先行関係を示している。ここで、タスク&Oのタスク
は、処理実行の開始を示すタスクで、その処理時間はO
である。
第6図では各タスクに対するアセンプントタスクを示す
ことにより、タスク間リレーションを示したが、各タス
クに対し、デイセンプントタスクを示すことによって、
タスクリレーションテーブルを構成することもできるし
、タスクリレーションテーブル中にアセンプントタスク
、デイセンプントタスクの両方を示していてもよい。
このように、タスク分割手段4は、プリコンパイル手段
2が出力した仮想マシンコード群をタスクに分割し、各
タスクの内容および各タスクの処理時間を示すテーブル
(タスク登録テーブル)および、タスク間リレーション
を示すテーブル(タスクリレーションテーブル)を生威
し、タスク処理時間およびタスク間リレーション情報を
タスクスケジュール手段5に送る。
タスク分割の手段として、本実施例では1仮想マシンコ
ードをlタスクとしたが、プリコンパイル前の1ステー
トメントまたは複数のステートメントを1タスクとし、
該ステートメントがブリコシバイルされた仮想マシンコ
ード(群)を1タスクとして、タスク登録テーブルに登
録してもよいし、複数のマシンコードを1タスクとして
もよい。
各タスクの処理時間、タスク間リレーションも先に述べ
た方法で、いずれも同様に生成できる。
タスクスケジュール手段5は、タスク間の先行関係を満
たしつつ与えられたタスク群を、ターゲットマシン9で
並列処理した際に、全体の処理時間が、与えられたタス
ク条件、タスク処理時間条件、タスク間先行関係条件の
下で実現することができる最小処理時間(クリティカル
・パスの処理時間)に近づくように、タスクを並列化す
る。
このようなタスクスケジュール手段を実現するためには
、例えば次のアルゴリズムを用いればよい。
まず、与えられたタスクをマスクの先行関係が許す限り
、できるだけ早く(即ち、タスクの処理可能な条件が出
そろったら直ちに)処理するようにタスクを初期配置す
る。第7図に示すタスク間リレーション、タスク処理時
間を有するタスクを、この初期配置した結果を第8図に
示す、第8図において、長方形200はタスクを意味し
、線201は同期処理を示す。同期処理とは、並列処理
において、各プロセッサが処理しているタスクが、とも
に並列処理を行うプロセッサ全てにおいて終了するまで
次の処理を待ち、上記、ともに並列処理を行うプロセッ
サ全てにおいてタスクの処理が終了したことを確認した
後に次の処理に進むための待ち合わせ処理のことである
。任意の同期から。
次の同期までをレベルと呼び、先に実行されるレベルを
上位のレベル、後に実行されるレベルを下位のレベルと
呼ぶこととする。
本発明においては、第8図に示すように時間順にレベル
1.レベル2.レベル3.・・・レベルnとレベル番号
を付けることとする。よって、レベルlが最上位のレベ
ル、レベルnが最下位のレベルとなる。従って、同一レ
ベルに配置されたタスクは並列に処理可能であり、レベ
ルnで実行されるタスクBのアセンプントタスクAが存
在する場合は、該アセンプントタスクAはnよりも上位
のレベルになければならない。
先述の初期配置を行うためには、例えば次のアルゴリズ
ムを用いればよい。
まず、主の初期値を1として、タスクリレーションテー
ブルにおいて、タスクOをアセンプントタスクにもつタ
スクを第9図に示すレベルファイルのレベルi (=1
)に登録する。タスクをレベルに配置、登録する際は第
8,9図に示すように処理時間の大きいタスクから順に
左から配置、登録する。
次に、レベル1〜iに登録したタスク以外のタスクにつ
いて、アセンプントタスクを調べ、該アセンプントタス
クのすべてがレベル1〜iにあれば、該タスクをレベル
(i+1)に登録する。そして、i == i + 1
として、上記アルゴリズムで次のレベルの登録に進み、
レベルに登録されないタスクがなくなったら(即ち、全
てのタスクがレベル登録テーブルに登録されたら)終了
する。
以上がタスク初期配置のアルゴリズムの一例である。初
期配置結果は、必ずしも総処理時間を最短にするものに
はなっていないので、更に総処理時間の短縮を図る。そ
のためには、例えば次のアルゴリズムを用いればよい。
タスクが初期配置されたレベルを第ルベル(最上位)〜
第nレベル(最下位)と定義し、任意のレベルiに属す
るタスクのうち、最左方のタスク(即ち、該レベルで最
大のタスク)Tizの処理時間をST1、該レベルに属
するタスクのうち、左から2番目のタスクT’izの処
理時間をST2とし、レベルiより下位のあるレベルj
に属するタスクのうち最大のタスクT J tの処理時
間をDTIと定義する。
まず、1=n−1として、レベルiに属するタスクのう
ち最左方向のタスクT i tがレベル(i+工)より
下位でレベルnまでのいずれかのレベルに、タスク間リ
レーション条件を満たしながら移動可能か否かを調べる
。タスク間リレーション条件上移動可能な場合、移動先
のレベルをjとして、各jに対し上記定義のSTI、S
T2.DTIによって STI>DTIのとき; E=DT1−8T2STI≦
DTIのとき; E=ST1−8T2で与えられるEを
評価し、このうちE≧0となるものがあった時、タスク
Tllはレベルiから移動可能とし、Eを最大にするレ
ベルjヘタスクTztを移動する。移動不可能な場合は
、レベルiの最左端タスクがレベルjへ移動不可能にな
った場合の処理(後述)へ進む、Eを最大にするレベル
jが複数ある場合には、なるべく下位のレベルへタスク
T 1tを移動し、この移動によって新たにレベルiで
最左端となったタスクについても同様の操作を行う。レ
ベルiの最左端のタスクについて、レベルiからレベル
jへの移動が不可能になった時、レベルiの残りのタス
クについて、タスク処理時間の大きいタスクから順に、
全体の処理時間を増加させない範囲で、タスク間リレー
ションが許す限りできるだけ下位のレベルに移動する。
この移動ができない場合は、そのタスクを移動せずにそ
のレベルにおく。
こうして、レベルiに属するすべてのタスクについての
判断が終了したならば、i = n −2として上記の
操作をくり返し、1=n−3,n−4゜・・・lと順次
操作を行う。
上記操作によって、タスク間リレーションを満たし、か
つ初期配置より全体の処理時間を短縮するか変化なしと
いう条件で、全タスクをできるだけ下位のレベルに移動
させることができる。これを下方スィーブアルゴリズム
と呼ぶ0次に、上記アルゴリズムと同様のアルゴリズム
で、今度は、タスク間リレーションを満たし、かつ第1
回目下方スイープアルゴリズムによるスケジュール結果
よりも全体の処理時間を短縮するか変化なしという条件
で、全タスクをできるだけ上位のレベルに移動する。こ
れを上方スイープアルゴリズムと呼ぶ。上方スィーブは
下方スイープに比べ、タスクを移動する方向が異なるだ
けであるから、下方スイープアルゴリズムにおいて、タ
スクの移動方向のみを上方に変え、あとは同様のアルゴ
リズムを用いることにより上方スイープアルゴリズムを
実現できる。この下方スイープアルゴリズム、上方スイ
ープアルゴリズムを交互に実行することによって、全体
の処理時間をクリティカルバスの処理時間に近づけてゆ
き、上方スイープ、下方スイープいずれのアルゴリズム
によっても、それ以上、処理時間の短縮が行われなくな
った時点で上方。
下方スイープアルゴリズムの実行を終了すれば、与えら
れたタスク条件、タスク間リレーション条件、タスク処
理時間の条下の下で、全体の処理時間をほぼ最小にでき
る準最適をタスクスケジュール結果を得ることができる
。このアルゴリズムを用いて、第8図に示すタスクの初
期配置から、タスクを移動し、スケジュールした結果を
第10図に示す。第8図に示す初期スケジュール結果に
比べ、第10図に示すスケジュール結果では、全体の処
理時間を短縮することができる。
以上のスケジューリングでは、全てのプロセッサが同時
に同期する(−斉同期)条件でのスケジューリングを行
ったので、これを−斉同期によるスケジューリングと呼
ぶ。
一方、いくつかのプロセッサでチームを構成し、関連す
るタスクは、このチームで処理し、チーム内のプロセッ
サ間で同期をとり、必要に応じて、チーム間の同期をと
る同期方式をチーム同期と呼び、チーム同期を用いるス
ケジューリング方式を、チーム同期を用いたスケジュー
リングと呼ぶ。
第10図に示した一斉同期によるスケジューリング結果
をもとに、チーム同期を用いたスケジューリングを行っ
た結果を第11図に示す、第11図において、プロセッ
サ0,1がチームA、プロセッサ2,3がチームBを構
成し、時刻tO〜t1においては、チームAがタスク2
,5,1を担当し、チームBがタスク3,4,6,7,
8,9を担当し、同期はそれぞれチームAの中だけ(チ
ーム同期14)、チームBの内だけ(チーム同期15)
で行う、このようにチーム同期を用い全体の処理時間が
できるだけクテイカルバスの処理時間に近づくようにス
ケジュールを作成することを、チーム同期を用いたスケ
ジューリングと呼ぶ。第10図と第11図を比較してわ
かるようにチーム同期を用いたスケジューリングでは、
−斉同期を用いたスケジューリングに比べ全体の処理時
間をさらに短くすることができる。チーム同期を用いた
スケジューリングを行うためにはタスクの初期スケジュ
ールを行った後に、例えば、次のアルゴリズムを用いれ
ばよい、タスクの初期スケジュールを行う方法として、
例えば先述の一斉同期を用いたスケジューリングを用い
ることができる。タスクの初期スケジュール結果が、レ
ベル1〜nまで存在するとする。
このスケジュール結果において、クリティカルバスが各
レベルiの最長時間のタスクを通っているか否かを、上
位レベルから下位レベルへ順にチエツクしてゆく1通っ
ている場合は、次のレベルのチエツクに進み、通ってい
ない場合は、このレベルiとレベル(i+1)を仮に結
合し、このレベル内のタスクのうち先行関係を有するタ
スクを集めてチームを構成し、各チームについて先に述
べた一斉同期を用いたスケジューリングのアルゴリズム
を用いてスケジュールを行う、スケジュール後の各チー
ムの処理時間のうち最長のものをチーム構成前の処理時
間と比較し、処理時間が短縮されていれば、これをチー
ムとして登録し、早く登録したチームからプロセッサ0
,1,2.・・・の順に必要な数だけのプロセッサを割
当てる。処理時間が短縮されない場合、後述の処理Uに
うつる。
処理時間が改善された場合は、レベルi、i+1゜i+
2の一斉同期3レベルに含まれるタスクについて、先に
登録したチームに関係なく、改めてタスク間先行関係で
結びついたタスクを集めてチームを構成し、上述の操作
を行う、処理時間が短縮されれば更に次のレベルを追加
し、あらたにチームを構成し、同様の検討を行う、処理
時間の短縮がなされなくなると、次に示す処理Uに移る
[処理U:構構成たチームの上位のレベルを順次追加し
てゆき、上記と同様にチームを構成し、全体の処理時間
の短縮を図る。] この結果、全体の処理時間が短縮されなくなったところ
で、再び構成されたチームの下位レベルについて、クリ
ティカルパルが該各レベルの最長処理タスクを通ってい
るか否かを判定し、その結果に従い、上述の操作を繰り
返す。
さて、チーム同期によるスケジューリングの開始に先立
って行われる初期スケジュールは、例えば、次の方法に
よってもよい。
すなわち、まず−斉同期を用いたスケジューリングを行
い、−斉同期によるスケジューリング結果が、レベル1
〜nまで存在するとする。この結果をもとに、まず主の
初期値をlとし、レベル主とレベル(i+1)を仮に結
合し、このレベル内のタスクのうち先行関係を有するタ
スクを集めてチームを構成し、各チームについて先に述
へた一斉同期を用いたスケジューリングのアルゴリズム
を用いてスケジュールする。各チームのスケジュール後
の処理時間をスケジュール前と比較し、処理時間が短縮
されていれば、これをチームとして登録し、早く登録し
たチームからプロセッサ0゜■、2.・・・の順に必要
な数だけのプロセッサを割当てる。処理時間が改善され
ない場合、i=i+1とし上述の操作をくり返す、処理
時間が改善された場合は、レベルi、i+1.i+2の
一斉同期3レベルに含まれるタスクについて、先に登録
したチームに関係なく、改めてタスク間先行関係で結び
ついたタスクを集めてチームを構成し、上述の操作を行
う。処理時間が短縮されれば更に次のレベルを追加し、
あらたにチームを構成し、同様の検討を行う。処理時間
の短縮がなされなくなった所で、その時点でのチームを
最終的にチームとして登録し、その次のレベルをjとし
た時、i=jとして上述のアルゴリズムを(り返してゆ
き、レベルnまでの検討が終了した時点で、初期スケジ
ューリングの終了とする。
以上のような一斉同期またはチーム同期を用いたスケジ
ューリングアルゴリズムを実行するタスクスケジュール
手段5によって、タスク分割手段4から出力され、タス
ク条件、タスク処理時間条件、タスク間接続関係条件の
下で、全体の処理時間をほぼ最小にでき、クリティカル
パスの処理時間に近づけることができる。このスケジュ
ーリングの結果、各レベルに含まれるタスクを示したレ
ベルファイルと各プロセッサが処理すべきタスク2同期
の種類を処理すべき順に示すプロセッサファイルと共有
変数名、そのアドレスを示す共有変数ファイルが生成さ
れる。第10図に示したスケジュール結果に対応するレ
ベルファイルを第22図に示し、プロセッサアイルを第
19図に示す、第19図においてSoは一斉同期命令を
示す。チーム同期命令等他の同期命令が入る場合も、第
19図と同様のプロセッサファイルが構成される。
例えば、第11図に示すチーム同期を用いたスケジュー
リング結果に対応するプロセッサファイルを第25図に
示す、第25図において、Soは一斉同期命令を、Sl
はプロセッサOとプロセッサ1からなるチームのチーム
同期命令を、Ssはプロセッサ2とプロセッサ3から成
るチームのチーム同期命令を示す。
上記スケジュール後、タスクスケジュール手段5は、で
きるだけ使用するプロセッサ台数が減るように、あるレ
ベルにおいであるプロセッサに割当てられているタスク
を、タスクが割当てられていないプロセッサの存在する
他のレベルに、タスク間先行関係が許す条件下で全体の
処理時間が長くならないよう移動し、タスクが割当てら
れていないプロセッサが存在する上記レベルに割当てて
もよい0例えば第12図に示すように、プロセッサ4の
レベルn+1に割当てられているタスクTを、プロセッ
サ3のレベルnに移動すれば、全体の処理時間を増加さ
せずに、使用するプロセッサ数を減らすことができる。
また、使用するプロセッサ台数が減るように、あるプロ
セッサに割当てられているタスクを、タスク間先行関係
が許し、かつ全体の処理時間が長くならない範囲で、他
のプロセッサに割当てられているプロセッサに結合して
もよい。
例えば、第13図に示すように、プロセッサ4のレベル
n+1に割当てられているタスクTを、プロセッサ3の
レベルnに割当てられているタスクPに結合し、プロセ
ッサ5のレベルn+1に割当てられているタスクSをプ
ロセッサ3のレベルn+1に割当てられているタスクQ
に結合することができる。これは、タスク間の先行関係
が、タスクT、Sのこのような移動を許す場合にのみ成
立する。
このとき、使用するプロセッサ台数を5台から3台に減
らすことができる。このタスクスケジュール手段5によ
って、上記マルチプロセッサシステムが高効率な並列処
理を行うためのタスクスケジュールを高速に生成するこ
とができる。上述のタスクスケジュール手段5に、更に
以下に述べるタスク結合情報生成機能をもたせてもよい
さて、上述のタスクスケジュール手段5によって、第I
4図に示すタスク(丸印;大中の記号がタスク名)、タ
スク処理時間(タスク横に表示した数字)、タスク間先
行関係(タスク間を結ぶ矢印)を有するタスク群を上述
のタスクスケジュール手段5によってスケジュールする
と第16図に示す結果が得られる。第16図において、
T P T tはレベルiに属するタスクの処理時間の
うち、最大のタスク処理時間を示し、T CT tは、
レベルiの並列処理を行うために要する時間(例えば、
同期オーバーヘッド、通信オーバーヘッド等)を示す、
今、第16図に示すスケジューリング結果を実行する場
合、全体の処理時間T1は、nをレベル数として で与えられる。従って、全体の処理時間Tiを、与えら
れたタスク条件、タスク処理時間条件、タスク間接続関
係条件で最小にするためには、すでに実行しているわけ (スケジューリングアル 必要がある。このためには各T CT i を小さくす
るか、またはレベル数を減らせばよい。ターゲットマシ
ン9では、同期処理はハードウェア化されており、T 
CT tは最小化されているので、レベをできるだけ小
さくする。ターゲットマシン9においてはT CT i
はほとんど同期オーバーヘッドであるから、 ΣT CT tを減らすためには、 i=l 同期 回数nを減らせばよい、従って、2つ以上のレベルにわ
たって、該レベルに存在するタスクのうち、結合しても
 ΣT P T tを増加させないタスク結合i=1 小さくシ、全体の処理時間を短縮する。第16図に示す
スケジューリング結果を例とすれば、レベル1とレベル
2を結合し、その中でタスクla。
タスク1bを結合しタスク1とし、タスク2aとタスク
2bを結合しタスク2とする0次に、レベル3とレベル
4とレベル5とを結合し、その中でタスク4aとタスク
4bとタスク4cとを結合してタスク4とし、タスク3
aとタスク3bとを結合してタスク3とする。その結果
、新たに生成されたタスク1〜4は、第17図に示すよ
うにスケジューリングできる。その結果、第17図に示
すスケジューリング結果に従って処理を実行した場合、
全体の処理時間Tzは、第16図に示すT1に比べΔτ
分だけ短縮することができる効果がある。このタスク結
合は、タスク内容およびタスク処理時間を変化させるの
みならずタスク間リレーション関係も変化させる。第1
7図に示したようなタスク結合を行った場合、第14図
に示すタスク間リレーションは第15図に示すタスク間
リレーションを有することになる。タスクスケジュール
手段5は、このように、タスクを結合することによって
全体の処理時間を短縮するこどのできるタスクのタスク
結合情報を生成する。ただし、タスクスケジュール手段
5はスケジュールのみを行い、タスク結合情報を生成し
なくてもよい、このようなタスク結合を適用することに
より、全体の処理時間を短縮することができるタスク間
関係条件、タスク処理時間条件の一例を第18図に示す
第18図において、レベルiとレベル(i + 1)を
結合しようとする場合、レベルiに属する任意のタスク
Aaのレベル(i + 1)におけるデイセンプントタ
スクB−は1つのみであり、かつ該デイセンプントタス
クBJのレベルiにおけるアセンプントタスクはタスク
A4のみである場合、このタスクA、とB−を結合して
も、ΣT P T t をi=1 増加させることはなく、かつ、ΣT CT i を減ら
i=1 すことができるので、タスク結合可とする。この決定を
判断するアルゴリズムの一例を第20図に示フローチャ
ート形式で示す、第20図はスケジュール手段5による
タスクスケジューリングが終了した状態を5TARTと
している。また、チーム同期もチーム内では一斉同期と
みなせるため、このタスク結合アルゴリズムは、−斉同
期のみによるスケジューリングにもチーム同期を用いた
スケジューリングにも用いることができる。また、第2
0図において「タスクAJ とタスクBJ を結合」と
あるのは、例えば、第21図に示すタスクリンクファイ
ル(タスクの結合情報を示すファイル)を生成すること
である。第2上図は第16図に示すスケジュール結果に
上記アルゴリズムを適用することによって生成されるタ
スクリンクファイルである。また、タスクスケジュール
手段5によって第16図に対応するプロセッサファイル
が生成され、これを第24図に示す。第24図中、So
は一斉同期命令を示す。タスクスケジュール手段5は第
21図に示すようなタスクリンクファイルを生成した時
にはこれを参照することにより、第24図に示すプロセ
ッサファイルにおいて、リンクされたタスクとタスクど
の間にある同期命令を削除する。こうして得られたプロ
セッサファイルを第23図に示す。タスクスケジュール
手段5がタスク結合情報を生成しない時は、同期命令を
削除しない。第23図においては、Soは一斉同期命令
を示す、第23図に示すプロセッサファイルに従ってタ
スクを実行すると、第17図に示す結果となり、タスク
結合前に比べ全体の処理時間をΔTだけ短縮することが
できる効果がある。
以上示したようにタスクスケジュール手段5は、タスク
、タスク処理時間、タスク間リレーションを入力として
、タスクスケジューリング結果(レベルファイル)、各
プロセッサが実行すべきタスクと同期処理情報(プロセ
ッサファイル)、共通変数テーブルを生威し、さらに、
タスク結合情報(タスクリンクファイル)を生成しても
よい、このうちプロセッサファイルと共通変数テーブル
が並列化コンパイル手段6に送られる。並列化コンパイ
ル手段6では、タスク登録テーブルを参照し、タスク同
期命令を仮想マシンコードに変換し、さらに、仮想マシ
ンコード−実マシンコード変換テーブルによって、仮想
マシンコードを実マシンコードに変換する。
この結果、各プロセッサごとに実行すべき実マシンコー
ドが実行順に並んだファイル(オブジェクトプログラム
)が生成され、ターゲットマシン9に送られる。ターゲ
ットマシン9では、送られてきたオブジェクトプログラ
ムに従って並列処理を行う。
本発明の並列化装置によれば、ソースプログラムを小さ
な単位(タスク)に分解するためソースプログラムに含
まれる並列処理可能部の多くを並列化でき2ターゲツト
マシン9でソースプログラムを並列処理した際に全体の
処理時間が、与えられたタスク条件、タスク処理時間、
タスク先行関係条件下で実現することができる最小処理
時間に近づくようタスクを並列化することができるため
、並列処理効率の高い並列処理可能なオブジェクトコー
ドおよびシーケンスを得ることができる効果がある。さ
らに、レベルの概念を用いたスケジューリングアルゴリ
ズムをタスクスケジュールさらにレベルという概念を用
いたスケジューリングアルゴリズムをタスクスケジュー
ル手段5に用いているため、極めて高速にスケジューリ
ングを行うことができる効果がある。
また、本発明の並列化装置によれば、プリコンパイル手
段2.タスク分割手段4.タスクスケジュール手段5は
、プロセッサの種類によらない仮想マシンコードを取り
扱っていて、実マシンコードに応じて変更する必要があ
るのは、並列化コンパイル手段6のみである。従って、
本発明の並列化袋[10はターゲットマシン9上のプロ
セッサの変化に容易に対応できるという効果がある。
く第2実施例〉 第26図は本発明の第2実施例を示している。
第2実施例の並列化装置30はプリコンパイル手段23
と、該システムルーチン24と、タスク分割手段25と
、タスクスケジュール手段26と、並列化コンパイル手
段27とから成っている。
また1本実施例の並列化装置30によって並列化された
プログラムを実行するターゲットマシン31は、第1実
施例のターゲットマシン9と同様のものでよい。
本実施例の並列化装置30は問題(ソースプログラム)
22をプリコンパイル手段23によってプリコンパイル
し、仮想マシンコードに変換する所まで、第1実施例と
同様である。タスク分割手段25は、プリコンパイル手
段23から送られてきた仮想マシンコード群を、1仮想
マシンコードを1タスクとして、タスクに分割し、第I
実施例の所で示した方法と同様の方法によって、タスク
登録テーブル、タスクリレーションテーブルを生威し、
タスク、タスク処理時間およびタスク間リレーション情
報をタスクスケジュール手段26に送る。タスクスケジ
ュール手段26では、タスク分割手段25から送られた
タスク、タスク処理時間、タスク間リレーション情報を
もとに、第1実施例と同様にして、タスク間先行関係を
満たしつつ、与えられたタスク群を、複数のプロセッサ
を有するターゲットマシン31で並列処理した際に、全
体の処理時間が、与えられたタスク条件、タスク処理時
間条件、タスク間先行関係条件の下で実現可能な最小処
理時間(クリティカルパスの処理時間)に近づくように
、タスクを並列化する。
タスクスケジュール手段26は第1実施例と同様の方法
をとるから、出力されるテーブル、ファイルも第1.実
施例と同様である。
すなわち、タスクスケジュール手段26はタスり結合情
報(タスクリンクファイル)を出力する。
このタスク結合情報をタスク分割手段25に送り、タス
ク分割手段25において、このタスク結合情報をもとに
タスクの再生成を行う。すなわち。
タスクリンクファイルに結合を指示されたタスクは1つ
のタスクとする。タスクT1〜T、をこの順に結合し、
タスクNTとするために1次の操作(1)、(2)  
を行う。
1)タスク登録テーブルにおいて、タスクNTのタスク
内容(仮想マシンコード)をOPI。
OF2.−、OPn (但しOPiはタスクTtの仮想
マシンコード)として登録し、タスクNTのタスク処理
時間TPT(NT)をTPTはタスクTtのタスク処理
時間)として登録する。
2)タスク間リレーションテーブルにおいて、i)アセ
ンプントタスクでタスク間リレーションを示している場
合。
AT(Tl)、 AT(TZ)、・・・、 AT(T、
)のうち、’rl、’rz、・・・T、I以外のタスク
をタスクNTのアセンプントタスクとして、タスクリレ
ーションテーブルに登録する。
(但し、 A T (T i)はタスクTiのアセンプ
ントタスクを示す) 五)デイセンプントタスクでタスク間リレーションを示
している場合 DT(Tz)、 DT(Tz)、 −、DT(Tn)の
うち、T1.Ti、・・・DT(T、)以外のタスクを
タスクNTのデイセントプントタスクとしてタスクリレ
ーションテーブルに登録する。
(但し、DT(Ti)はタスクT、のデイセンプントタ
スクを示す。) in)アセンプントタスク、デイセンプントタスクの両
方でタスク間リレーションを示している場合。
AT(Tz)、 AT(Tz)−−、AT(Tn)のう
ち、Tz、Tz、・・・Tfi以外のタスクをタスクN
Tのアセンプントタスクとしてタスク間リレーションテ
ーブルに登録し、DT(T1)。
DT(T2)、=、DT(T−)のうちT t p T
 x p・・・Tn以外のタスクをタスクNTのデイセ
ンプントタスクとしてタスク間リレーションテーブルに
登録する。
以上のように、タスク登録テーブル、タスク間リレーシ
ョンテーブルを変更することによってタスクの再生成を
行い、この再生成されたタスクのタスク処理時間情報、
タスク間リレーション情報がタスクスケジュール手段2
6に送られ、先と同様のアルゴリズムで全体の処理時間
がクリティカルパスの処理時間にできるだけ近づくよう
スケジュールする。
このように、タスクスケジュールとタスク結合。
再生成をくり返す、そして、上記操作をくり返しても並
列処理オーバーヘッドを含めた全体の処理時間がそれ以
上短縮できなくなった時、このくり返しを中止し、タス
クスケジュール手段26で生成されたプロセッサファイ
ルおよび共通変数テーブルが並列化コンパイル手段27
に送られる。並列化コンパイル手段27以降の動作は、
実施例1と同様である。
本実施例の並列化装置を用いることによる効果を以下に
述べる。
一般に、ソースプログラムを複数のタスクに分割し、全
体の処理時間が最小になるように並列処理スケジュール
する場合、並列処理に起因するオーバーヘッド(同期オ
ーバーヘッド等)がないと仮定した場合、ソースプログ
ラムをできるだけ小さなタスクに分割した方が、並列処
理できるタスクが増して、全体の処理時間短縮に有利で
あるが、実際の並列処理システムでは並処処理オーバー
ヘッドが存在するため、タスクを小さく分解しすぎると
、同期処理9通信等の並列処理オーバーヘッド原因とな
る動作の回数が増し、並列処理オーバーヘッドを含めた
全体の処理時間はかえって増大する。そこで1本発明の
並列化装置を用いれば、まずタスクを最小単位にまで分
解して並列化スケジュールするため、並列処理オーバー
ヘッドがないとした場合の最適スケジュール結果が得ら
れ、その結果に比べて、並列処理オーバーヘッドがない
とした場合の全体の処理時間が増さない範囲でタスクの
結合、再生を行って1タスクの大きさ(処理時間)を大
きくして再び並列化スケジュールすることをくり返すた
め、並列処理オーバーヘッドを含めた全体の処理時間を
、はぼ最小にすることができる効果がある。
また、本発明の並列化装置によれば、実マシンコードに
応じて変更する必要があるのは、並列化コンパイル手段
27のみである。
従って、本発明の並列化装置30は、ターゲットマシン
31上のプロセッサの変化に容易に対応できるという効
果がある。
く第3実施例〉 本発明の第3実施例を第27図に示す、第3実施例の並
列化装置219は制御用言語コンパイラ202、核シス
テムルーチン(核言語)206゜タスクデイバイター2
07.タスクスケジューラ208、並列化コンパイラ2
13から成っており、演算用言語コンパイラA203.
演算用言語コンパイラB204.AI用言語コンパイラ
205はそれぞれ必要に応じてあってもよい。また、シ
リアルコンパイラ212があってもよい、並列化コンパ
イラ213としては、完全並列コンパイラ214、ベク
トル化コンパイラ2159機能分散コンパイラ216の
うち、少なく1つを有していればよい。
また、本実施例の並列化袋!219によって並列化され
たプログラムを実行するターゲットマシン217は、第
1実施例のターゲットマシン9と同様のものでよい、タ
ーゲットマシン217はシステムモニタ218.ホスト
モニタ211によってモニタすることができる。タスク
スケジューラ208はプロセス管理同言語であるスケジ
ューリング言語209とBASIC言語210を用いて
記述されている。
制御用言語で書かれたソースプログラムは制御用言語コ
ンパイラ202によって、演算用言語Aで書かれたソー
スプログラムは演算用言語コンパイラA203によって
、演算用言語Bで書かれたソースプログラムは演算用用
語コンパイラB204によって、AI用言語で書かれた
ソースプログラムはAI用言語コンパイラ205によっ
て、それぞれ核システムルーチン(核言語)206の規
定する仮想マシンコードに従って、仮想マシンコードに
変換される。タスクスケジューラ208からタスクデイ
バイダー207への経路220がない場合、タスクデイ
バイダー207は第1実施例におけるタスク分割手段4
と同様の動作をし、タスクスケジューラ208は第I実
施例におけるタスクスケジュール手段5と同様の動作を
し、並列化コンパイラ213が、完全並列コンパイラ2
14を有しており、かつこの機能が選択された時は、並
列化コンパイラ213は、第1実施例における並列化コ
ンパイル手段6と同様の動作をする。
以上のような操作をへてターゲットマシン217にて高
効率な並処列理可能となったオブジェクトコードおよび
シーケンスは並列化コンパイラ21・3からターゲット
マシン217に送られ、並列処理が実行される。
並列化コンパイラ213がベクトル化コンパイラ215
を有しており、かつこの機能が選択された場合には、タ
ーゲットマシン217でベクトル処理が可能なように、
タスクスケジューラ208から並列化コンパイラ213
に送られてきたプロセッサファイルおよび共通変数テー
ブルを並列化コンパイラ213はベクトル化された実マ
シンコードおよびシーケンスに変換し、ターゲットマシ
ン217に送り、ターゲットマシン217は、これに基
づきベクトル処理を行う。
並列化コンパイラ213が機能分解コンパイラ216を
有しており、かつ、この機能が選択された場合には、タ
ーゲットマシン217で機能分散処理が可能なように並
列化コンパイラ213はタスクスケジューラ208から
送られてきたプロセッサファイルおよび共通変数テーブ
ルを実マシンコードおよびシーケンスに変換し、ターゲ
ットマシン217に送り、ターゲットマシン217は、
これに基づき機能分散処理を行う。
ターゲットマシンがシリアル処理を行う時には、シリア
ルコンパイラ212によって、タスクスケジューラ20
8からシリアル処理用に出力されたプロセッサファイル
から、シリアル処理用実マシンコードおよびシーケンス
を生成し、ターゲットマシン217に送る。
シリアル処理を行う場合、または機能分散処理を行う場
合は、タスクデイバイダー207から、タスクスケジュ
ーラ208を介さずに、シリアルコンパイラ212、並
列化コンパイラ213にタスク情報、タスク間リレーシ
ョン情報を送ってもよい。
また、タスクスケジューラ208からタスクデイバイダ
ー207への経路220が存在する場合は、第3実施例
のタスクデイバイダー207は、第2実施例のタスク分
割手段25と同様の動作を行い、第3実施例のタスクス
ケジューラ208は、第2実施例のタスクスケジュール
手段26と同様の動作を行う、その他の動作は、上述の
第3実施例における経路220がない場合と同様である
本実施例に示す並列化装置は第工、第2実施例に示した
効果に加え、次の効果がある。
即ち、制御用言語、演算用言語A−B、AI用言語等、
複数の言語に対応でき、ターゲットマシンがシリアル処
理を行う時にも対応できる効果がある。その上、ターゲ
ットマシンでベクトル処理。
機能分散処理を行う場合にも対応できるという効果があ
る。
く第4実施例〉 第28図は本発明の第4実施例を示している。
本発明の並列化装置70は情報処理装置111および記
憶装置112を有しており、インターフェイス71を介
して、ターゲットマシン73に接続されている。
第1〜第3実施例で述べたような本発明の並列化装置の
アルゴリズムを記述したプログラムは、本並列化装置7
0中の記憶装置112中にありこのアルゴリズムが情報
処理装置111によって実行されて、ターゲットマシン
73にて並列処理可能となったオブジェクトコードおよ
びシーケンスはインターフェイス71を介してターゲッ
トマシン73の外部拡張チャネル97を通じて、ターゲ
ットマシン73に送られる1本例では、特開昭63−1
01957号に示される並列処理装置をターゲットマシ
ン73としている。
外部拡張チャネル97を用いれば、本並列化装置70か
ら、直接、共有メモリ106〜108にアクセスできる
ので5本発明の並列化装置によって生成されたオブジェ
クトコードおよびシーケンス(オブジェクトプログラム
)を共有メモリ106〜108に送ることができ、これ
に従ってプロセッサ77〜82は並列処理機構87〜9
2の制御を受けながら、並列処理を実行することができ
る効果がある。プロセッサ77〜82間の通信は、第1
実施例で述べたように、信号制御回路93〜96によっ
て、高速・高効率のランダムアクセスが可能なバスによ
って、各・プロセッサ77〜82に接続された共有メモ
リ106〜108を用いて行う、ターゲットマシン73
中のプロセッサ数が。
第28図と異なる場合でも本実施例と同様に動作し、同
様の効果が得られる。また、プロセッサ77〜82は、
第29図に示すように、CPt1250 。
CPUローカルメモリ251.バッファ252を有して
いる。従って、各プロセッサが実行するオブジェクトコ
ードおよびシーケンスの情報を共有メモリ106〜10
8ではなく、各プロセッサの有するCPUローカルメモ
リ上に有していてもよい。また、外部拡張チャネル84
〜86を用いても、本発明の並列化装置70によって生
成された、オブジェクトコードおよびシーケンスをター
ゲットマシン73に送ることもできる。
本発明の並列化装置70として例えばパーソナルコンピ
ュータやワークステーション等を用いることができ、こ
れらをマルチユースで用いてもよい。またターゲットマ
シン中の単数または複数のプロセッサを並列化装置70
として用いてもよい。
本実施例に示す並列化装置は、第1〜第3実施例の効果
に加えて、ターゲットマシン73が高効率の並列処理を
行うためのオブジェクトおよびシーケンスを得ることが
できるという効果がある。
〔発明の効果〕
本発明の第1の並列化装置によれば、複数のプロセッサ
を有し、プロセッサ間で通信を行う通信機構とプロセッ
サ間で待合せをしながら処理を進める同期機構とを有す
るマルチプロセッサシステムが高効率な並列処理を行う
ことができるオブジェクトプログラムを高速に、かつ、
プロセッサの種類によらず普遍的に、種々のソースプロ
グラムに対応して生成することができるという効果があ
る。
本発明の第2の並列化装置によれば、前記マルチプロセ
ッサの同期処理によるオーバーヘッドを小さくするタス
クスケジュール結果が得られるという効果がある。
本発明の第3の並列化装置によれば、前記マルチプロセ
ッサの同期処理によるオーバーヘッドを小さくした、前
記マルチプロセッサ中の各プロセッサが実行すべきオブ
ジェクトプログラムを、各プロセッサに割付けることが
できる。
本発明の第4の並列化装置によれば、前記マルチプロセ
ッサの並列処理に起因するオーバーヘッドを考慮に入れ
てプログラムの前記マルチプロセッサでの実行時間をほ
ぼ最小にできる、前記マルチプロセッサ中の各プロセッ
サが実行すべきオブジェクトプログラムを、各プロセッ
サに割付けられる効果がある。
本発明の第5の並列化装置は、種々のプロセッサに対応
でき、高い汎用性をもつ効果がある。
本発明の第6の並列化装置によれば、もどのプログラム
の構造を変えずに、タスク間リレーションを容易に見つ
け出すことができ、高速にタスクスケジュールができる
効果がある。
【図面の簡単な説明】
第1図は本発明の第1実施例を示す図、第2図は、関数
形式表現の一例を示す図、第3図は、タスク登録テーブ
ルの一例を示す図、第4図は、仮想マシンコード−実マ
シンコード対照テーブルの一例を示す図、第5図は、タ
スク間先行関係を示す図、第6図は、タスクリレーショ
ンテーブルの一例を示す図、第7図、第14図、第15
図は、タスクリレーショングラフの一例を示す図、第8
図は、並列化スケジュールにおけるタスクの初期配置の
一例を示す図、第9図、第22図は、レベルファイルの
一例を示す図、第10図、第16図。 第エフ図は、−斉同期を用いた並列化スケジュールの一
例を示す図、第11図は、チーム同期を用いた並列化ス
ケジュールの一例を示す図、第12図、第13図は使用
するプロセッサ数を減らすためのタスクの移動の一例を
示す図、第18図はタスク結合条件の一例を示す図、第
19図、第23図、第24図、第25図は、プロセッサ
ファイルの一例を示す図、第20図は、タスク結合判定
アルゴリズムの一例を示すフローチャート、第21図は
、タスクリンクファイ゛ルの一例を示す図、第26図は
本発明の第2実施例を示す図、第27図は本発明の第3
実施例を示す図、第28図は本発明の第4実施例を示す
図、第29図は、プロセッサ77〜82の簡単な説明図
。 1・・・ソースプログラム、2・・・プリコンパイル手
段。 3・・・核システムルーチン、4・・・タスク分割手段
、5・・・タスクスケジュール手段、6・・・並列化コ
ンパイル手段、9・・・ターゲットマシン、10・・・
並列化装置、11・・・タスク番号、12・・・タスク
処理時間、13・・・タスク間先行関係、14・・・プ
ロセッサ0゜1間開期、15・・・プロセッサ2,3間
開期、16・・・−斉同期、22・・・ソースプログラ
ム、23・・・プリコンパイル手段、24・・・核シス
テムルーチン、25・・・タスク分割手段、26・・・
タスクスケジュール手段、27・・・パラレルコンパイ
ル手段、3o・・・並列化装置、70・・・並列化装置
、71・・・インターフェイス、73・・・ターゲット
マシン、77〜82・・・プロセッサ、84〜86・・
・外部拡張チャネル、87〜92・・・並列処理機構、
93〜96・・・信号制御回路、97・・・外部拡張チ
ャネル、106〜108・・・共有メモリ、111・・
・情報処理装置、112・・・記憶装置、200・・・
タスク、20i・・・同期処理、202・・・制御用言
語コンパイラ、203・・・演算用言語コンパイラA、
204・・・演算用言語コンパイラB、205・・・A
I用言語コンパイラ、206・・・核システムルーチン
、207・・・タスクデイバインダー 208・・・タ
スクスケジューラ、209・・・スケジューリング言語
、210・・・BASIC言語、211・・・ホストモ
ニタ、212・・・シリアルコンパイラ、213・・・
並列化コンパイラ、214・・・完全並列コンパイラ、
215・・・ベクトル化コンパイラ、216・・・機能
分散コンパイラ、217・・・ターゲットマ、シン、2
18・・・システムモニタ、219・・・並列化装置、
250・・・CPU、251・・・CPUローa−b+
c       7.−g 、  b+cO,”(1+
I   =:〉72□e−Tt+1(1=(Ax2  
  T3= j−T2x2ンーX]゛ロア゛フA (1トr4叡郭ヘノ 関摩丈脣〉ブに1りIろ)a7”りA 第 回 区 葉 9 第 1ρ (2) カ 11 回 第 2 区 禎 3 図 め 15 ■ q (2) 第 2θ 図 % 、21  図 タス7す〉7フマイル 第2Z(2) し代ルアー?イル 第 27 (2)

Claims (1)

  1. 【特許請求の範囲】 1、複数のプロセッサと、該プロセッサ間の通信を行う
    通信機構と、プロセッサ間で待合せをしながら処理を進
    める同期機構とを有するマルチプロセッサシステムの実
    行すべきプログラムから並列処理可能なオブジェクトプ
    ログラムを生成する並列化装置において、 前記実行すべきプログラムをタスクに分割しタスクがど
    のタスクからの結果データから影響をうけるか、または
    タスクが出力する結果データが、どのタスクの実行に影
    響を与えるかを前記プログラム中のオペランドデータを
    調べることによつて、タスク間リレーション情報と、タ
    スクを構成するマシン命令の処理時間を加算することに
    よりタスク処理時間情報とを生成するタスク分割手段と
    、 上記タスク分割手段が出力した前記タスク処理時間情報
    とタスク間リレーション情報に基づいて、先行関係に矛
    盾がおこらないように、並列に各プロセッサで実行すべ
    きタスク群とその処理シーケンス情報を生成すると共に
    前記同期機構の待合せ処理を行う時点を決定し同期情報
    を生成してタスクスケジュールするタスクスケジュール
    手段と、 前記タスクスケジュール手段が生成した各プロセッサに
    割付けるべきタスク群とその処理シーケンスとを各プロ
    セッサが実行すべきオブジェクトプログラムとして定義
    して、各プロセッサに割付ける機能を持つ並列化コンパ
    イル手段とを 有することを特徴とする並列化装置。 2、前記タスクスケジュール手段が、タスクスケジュー
    ルした後、同期機構による待合せ処理回数を減らすよう
    に前記マルチプロセッサでの並列処理実行時間を短縮で
    きるようにタスクを再結合し、それを1つのタスクとす
    るためのタスク結合情報を生成する機能を有するもので
    ある請求項1に記載の並列化装置。 3、前記タスクスケジュール手段が、生成されたタスク
    結合情報をもとに、タスクを結合するものである請求項
    2に記載の並列化装置。 4、前記タスク分割手段が前記タスクスケジュール手段
    が生成したタスク結合情報をもとに、タスクを結合して
    これを新たなタスクとして生成するものである請求項2
    に記載の並列化装置。 5、前記並列化装置が、プログラムを種々のプロセッサ
    の各命令を一般的に表現する仮想マシンコードから成る
    プリオブジエクトプログラムに変換するプリコンパイル
    を有する請求項1から4のいずれかに記載の並列化装置
    。 6、前記プリコンパイラが関数形式であらわされたデー
    タに一対一に対応するデータに変換できる仮想マシンコ
    ードを有する請求項5に記載の並列化装置。
JP02107575A 1989-04-28 1990-04-25 並列化装置 Expired - Fee Related JP3039953B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP10765489 1989-04-28
JP1-107654 1989-04-28

Publications (2)

Publication Number Publication Date
JPH0380337A true JPH0380337A (ja) 1991-04-05
JP3039953B2 JP3039953B2 (ja) 2000-05-08

Family

ID=14464663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02107575A Expired - Fee Related JP3039953B2 (ja) 1989-04-28 1990-04-25 並列化装置

Country Status (4)

Country Link
US (1) US5452461A (ja)
EP (1) EP0400328B1 (ja)
JP (1) JP3039953B2 (ja)
DE (1) DE69029956T2 (ja)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0644484A2 (en) * 1993-09-21 1995-03-22 Microsoft Corporation Pre-emptive multi-tasking with co-operative groups of tasks
JPH1015785A (ja) * 1996-06-28 1998-01-20 Hitachi Ltd 生産計画方法及び生産計画システム
JPH11134307A (ja) * 1997-10-31 1999-05-21 Toshiba Corp プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
US6948172B1 (en) 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
JP2007133620A (ja) * 2005-11-10 2007-05-31 Fujitsu Ltd マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置
JP2008508584A (ja) * 2004-07-30 2008-03-21 コミッサリア タ レネルジー アトミーク タスク処理のスケジューリング方法及びこの方法を適用するための装置
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置
WO2010047174A1 (ja) * 2008-10-24 2010-04-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ソース・コード処理方法、システム、及びプログラム
JP2010113384A (ja) * 2008-11-04 2010-05-20 Fujitsu Ltd 設計支援プログラム、設計支援装置、および設計支援方法
JP2010134614A (ja) * 2008-12-03 2010-06-17 Internatl Business Mach Corp <Ibm> 並列化処理方法、システム、及びプログラム
JP2012510661A (ja) * 2008-12-01 2012-05-10 ケーピーアイティ クミンズ インフォシステムズ リミテッド 逐次コンピュータプログラムコードを並列処理する方法及びシステム
US8996278B2 (en) 2011-07-20 2015-03-31 Toyota Jidosha Kabushiki Kaisha Control device for internal combustion engine
JP5720699B2 (ja) * 2011-01-07 2015-05-20 富士通株式会社 マルチタスクスケジューリング方法、およびマルチコアプロセッサシステム
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
JP2017010077A (ja) * 2015-06-16 2017-01-12 富士通株式会社 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
JP2017073000A (ja) * 2015-10-07 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017073083A (ja) * 2015-10-09 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017224046A (ja) * 2016-06-13 2017-12-21 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2021501949A (ja) * 2017-11-03 2021-01-21 コーヒレント・ロジックス・インコーポレーテッド マルチ・プロセッサ・システム用プログラミングの流れ

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2921190B2 (ja) * 1991-07-25 1999-07-19 日本電気株式会社 並列実行方式
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
EP0635784B1 (de) * 1993-07-23 1999-08-25 Siemens Aktiengesellschaft Multiprozessorsystem
JP3190773B2 (ja) * 1993-09-30 2001-07-23 日本電気株式会社 言語処理プログラムのコンパイル処理方法
SG73378A1 (en) * 1993-10-05 2000-06-20 Seiko Epson Corp Apparatus and method for generating a program for parallel processing
JPH0887341A (ja) * 1994-09-16 1996-04-02 Fujitsu Ltd 自動縮退立ち上げ機能を有したコンピュータシステム
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
JP3444671B2 (ja) * 1994-11-08 2003-09-08 富士通株式会社 並列コード変換処理方法とそのシステム
US6199093B1 (en) * 1995-07-21 2001-03-06 Nec Corporation Processor allocating method/apparatus in multiprocessor system, and medium for storing processor allocating program
US6487580B1 (en) * 1995-09-25 2002-11-26 International Business Machines Corporation Method and system for managing concurrently executable computer processes
US5774728A (en) * 1995-12-27 1998-06-30 International Business Machines Corporation Method and system for compiling sections of a computer program for multiple execution environments
US6178542B1 (en) 1997-02-24 2001-01-23 Lucent Technologies Inc. Hardware-software co-synthesis of embedded system architectures using quality of architecture metrics
US6117180A (en) * 1997-02-24 2000-09-12 Lucent Technologies Inc. Hardware-software co-synthesis of heterogeneous distributed embedded systems for low overhead fault tolerance
US6110220A (en) * 1997-02-24 2000-08-29 Lucent Technologies Inc. Concurrent hardware-software co-synthesis of hard real-time aperiodic and periodic specifications of embedded system architectures
US6112023A (en) * 1997-02-24 2000-08-29 Lucent Technologies Inc. Scheduling-based hardware-software co-synthesis of heterogeneous distributed embedded systems
US6230303B1 (en) 1997-02-24 2001-05-08 Lucent Technologies Inc. Proximity-based cluster allocation for hardware-software co-synthesis of heterogeneous distributed embedded systems
US6289488B1 (en) 1997-02-24 2001-09-11 Lucent Technologies Inc. Hardware-software co-synthesis of hierarchical heterogeneous distributed embedded systems
US6075935A (en) * 1997-12-01 2000-06-13 Improv Systems, Inc. Method of generating application specific integrated circuits using a programmable hardware architecture
US6086628A (en) * 1998-02-17 2000-07-11 Lucent Technologies Inc. Power-related hardware-software co-synthesis of heterogeneous distributed embedded systems
US6097886A (en) * 1998-02-17 2000-08-01 Lucent Technologies Inc. Cluster-based hardware-software co-synthesis of heterogeneous distributed embedded systems
US6324639B1 (en) * 1998-03-30 2001-11-27 Matsushita Electric Industrial Co., Ltd. Instruction converting apparatus using parallel execution code
JPH11296381A (ja) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
WO2000002107A2 (de) * 1998-07-03 2000-01-13 Siemens Aktiengesellschaft Verfahren und anordnung zum entwurf einer steuerung für einen gesamtprozess
US6363472B1 (en) * 1998-09-03 2002-03-26 Telefonaktiebolaget L M Ericsson (Publ) Method and system for minimizing effect of replacing programming languages in telephony systems
US6415384B1 (en) 1998-10-30 2002-07-02 Lucent Technologies Inc. Hardware/software co-synthesis of dynamically reconfigurable embedded systems
US6550059B1 (en) * 1999-10-04 2003-04-15 Advanced Micro Devices, Inc. Method for generating optimized vector instructions from high level programming languages
US6539542B1 (en) * 1999-10-20 2003-03-25 Verizon Corporate Services Group Inc. System and method for automatically optimizing heterogenous multiprocessor software performance
US6708331B1 (en) * 2000-05-03 2004-03-16 Leon Schwartz Method for automatic parallelization of software
JP2002116917A (ja) * 2000-10-05 2002-04-19 Fujitsu Ltd オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ
JP3810631B2 (ja) * 2000-11-28 2006-08-16 富士通株式会社 情報処理プログラムを記録した記録媒体
US6684395B2 (en) * 2000-12-28 2004-01-27 Intel Corporation Multiple image dynamic bind and load procedure for a multi-processor
US7069556B2 (en) * 2001-09-27 2006-06-27 Intel Corporation Method and apparatus for implementing a parallel construct comprised of a single task
KR100439245B1 (ko) * 2001-10-20 2004-07-05 신기황 콘크리트 구조물용 신축이음장치
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
US7103881B2 (en) * 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
ATE556372T1 (de) * 2003-02-20 2012-05-15 Koninkl Philips Electronics Nv Übersetzung einer reihe von computeranweisungen
EP1652072A4 (en) * 2003-07-11 2008-12-31 Computer Ass Think Inc METHOD AND APPARATUS FOR PROCESSING PARALLEL ACTIONS
US20050193378A1 (en) * 2004-03-01 2005-09-01 Breault Richard E. System and method for building an executable program with a low probability of failure on demand
US8230426B2 (en) * 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
US20060179436A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for providing a task change application programming interface
EP1859346B1 (en) * 2005-03-04 2012-01-11 Hewlett-Packard Development Company, L.P. A method and apparatus for facilitating pipeline throughput
CN1316359C (zh) * 2005-06-09 2007-05-16 上海交通大学 用户指导的程序半自动并行化方法
CA2638453C (en) 2006-03-14 2010-11-09 Transgaming Technologies Inc. General purpose software parallel task engine
US8769703B2 (en) * 2006-04-27 2014-07-01 Unisys Corporation System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system
US20070256076A1 (en) * 2006-04-27 2007-11-01 Thompson James W System and method for separating multiple workloads processing in a single computer operating environment
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
US8352711B2 (en) * 2008-01-22 2013-01-08 Microsoft Corporation Coordinating chores in a multiprocessing environment using a compiler generated exception table
US7516448B1 (en) * 2008-06-30 2009-04-07 International Business Machines Corporation Method for improving irreducible region commoning compile speed
US10002161B2 (en) * 2008-12-03 2018-06-19 Sap Se Multithreading and concurrency control for a rule-based transaction engine
US20100223213A1 (en) * 2009-02-27 2010-09-02 Optillel Solutions, Inc. System and method for parallelization of machine learning computing code
JP2010204979A (ja) * 2009-03-04 2010-09-16 Renesas Electronics Corp コンパイル方法及びコンパイラ
US20120005682A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Holistic task scheduling for distributed computing
EP2458501A1 (en) * 2010-11-30 2012-05-30 France Telecom Method of operating a communication device and related communication device
US9823991B2 (en) * 2010-12-06 2017-11-21 International Business Machines Corporation Concurrent workload simulation for application performance testing
RU2011117765A (ru) 2011-05-05 2012-11-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ реализации двухпроходного планировщика задач линейной сложности
US9727377B2 (en) * 2011-07-14 2017-08-08 Siemens Aktiengesellschaft Reducing the scan cycle time of control applications through multi-core execution of user programs
CN102929214A (zh) * 2011-08-11 2013-02-13 西门子公司 一种嵌入式多处理单元并行处理系统及其运行方法
DE102013224702A1 (de) * 2013-12-03 2015-06-03 Robert Bosch Gmbh Steuergerät für ein Kraftfahrzeug
JP6435939B2 (ja) * 2015-03-18 2018-12-12 富士通株式会社 データ分類プログラム、データ分類方法およびデータ分類装置
JP6427053B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
CN109359939A (zh) * 2018-09-26 2019-02-19 中国平安人寿保险股份有限公司 业务数据校验方法、装置、计算机设备和存储介质
CN111427417B (zh) * 2020-03-19 2023-08-22 珠海豹趣科技有限公司 一种时间获取方法、装置及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3702005A (en) * 1971-05-24 1972-10-31 United Data Services Execution time analyzer
JPS6184740A (ja) * 1984-10-03 1986-04-30 Hitachi Ltd 汎用オブジエクトコ−ド生成方式
US4636948A (en) * 1985-01-30 1987-01-13 International Business Machines Corporation Method for controlling execution of application programs written in high level program language
JPH0754501B2 (ja) * 1985-12-27 1995-06-07 株式会社日立製作所 アクセス要求信号処理回路
JPH0731661B2 (ja) * 1986-10-20 1995-04-10 株式会社日立製作所 プロセツサ
JPS6345670A (ja) * 1986-08-13 1988-02-26 Hitachi Ltd プロセツサ間同期装置
JPS6347866A (ja) * 1986-08-15 1988-02-29 Hitachi Ltd 信号制御回路
US4843540A (en) * 1986-09-02 1989-06-27 The Trustees Of Columbia University In The City Of New York Parallel processing method
DE3752059T2 (de) * 1986-10-29 1997-08-14 United Technologies Corp Ereignisgesteuertes Exekutivprogramm
JPH01108638A (ja) * 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JP2738692B2 (ja) * 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
US5093916A (en) * 1988-05-20 1992-03-03 International Business Machines Corporation System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0644484A2 (en) * 1993-09-21 1995-03-22 Microsoft Corporation Pre-emptive multi-tasking with co-operative groups of tasks
EP0644484A3 (ja) * 1993-09-21 1995-04-26 Microsoft Corp
US6052707A (en) * 1993-09-21 2000-04-18 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
US6948172B1 (en) 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
JPH1015785A (ja) * 1996-06-28 1998-01-20 Hitachi Ltd 生産計画方法及び生産計画システム
JPH11134307A (ja) * 1997-10-31 1999-05-21 Toshiba Corp プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
JP2012181852A (ja) * 2004-07-30 2012-09-20 Commissariat A L'energie Atomique & Aux Energies Alternatives タスク処理のスケジューリング方法及びこの方法を適用するための装置
JP2008508584A (ja) * 2004-07-30 2008-03-21 コミッサリア タ レネルジー アトミーク タスク処理のスケジューリング方法及びこの方法を適用するための装置
JP2007133620A (ja) * 2005-11-10 2007-05-31 Fujitsu Ltd マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置
US8595712B2 (en) 2008-10-24 2013-11-26 International Business Machines Corporation Source code processing method, system and program
WO2010047174A1 (ja) * 2008-10-24 2010-04-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ソース・コード処理方法、システム、及びプログラム
US8407679B2 (en) 2008-10-24 2013-03-26 International Business Machines Corporation Source code processing method, system and program
JP5209059B2 (ja) * 2008-10-24 2013-06-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ソース・コード処理方法、システム、及びプログラム
JP2010113384A (ja) * 2008-11-04 2010-05-20 Fujitsu Ltd 設計支援プログラム、設計支援装置、および設計支援方法
JP2012510661A (ja) * 2008-12-01 2012-05-10 ケーピーアイティ クミンズ インフォシステムズ リミテッド 逐次コンピュータプログラムコードを並列処理する方法及びシステム
JP2015207318A (ja) * 2008-12-01 2015-11-19 ケーピーアイティ テクノロジーズ リミテッド 逐次コンピュータプログラムコードを並列処理する方法及びシステム
JP2010134614A (ja) * 2008-12-03 2010-06-17 Internatl Business Mach Corp <Ibm> 並列化処理方法、システム、及びプログラム
US8438553B2 (en) 2008-12-03 2013-05-07 International Business Machines Corporation Paralleling processing method, system and program
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
JP5720699B2 (ja) * 2011-01-07 2015-05-20 富士通株式会社 マルチタスクスケジューリング方法、およびマルチコアプロセッサシステム
US8996278B2 (en) 2011-07-20 2015-03-31 Toyota Jidosha Kabushiki Kaisha Control device for internal combustion engine
JP2017010077A (ja) * 2015-06-16 2017-01-12 富士通株式会社 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
JP2017073000A (ja) * 2015-10-07 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017073083A (ja) * 2015-10-09 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017224046A (ja) * 2016-06-13 2017-12-21 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2021501949A (ja) * 2017-11-03 2021-01-21 コーヒレント・ロジックス・インコーポレーテッド マルチ・プロセッサ・システム用プログラミングの流れ
US11755382B2 (en) 2017-11-03 2023-09-12 Coherent Logix, Incorporated Programming flow for multi-processor system

Also Published As

Publication number Publication date
JP3039953B2 (ja) 2000-05-08
DE69029956D1 (de) 1997-03-27
EP0400328A1 (en) 1990-12-05
DE69029956T2 (de) 1997-09-18
US5452461A (en) 1995-09-19
EP0400328B1 (en) 1997-02-19

Similar Documents

Publication Publication Date Title
JPH0380337A (ja) 並列化装置
Buttazzo et al. Hard real-time computing systems
CN100449478C (zh) 用于实时多线程处理的方法和装置
Lundstrom Controllable Multiple-Instruction, Multiple-Data Stream (MIMD) Architecture
WO1994022077A2 (en) Apparatus and method for parallel computation
JPH0223894B2 (ja)
US5367684A (en) Register allocation using an improved register candidate usage matrix
CN112711478B (zh) 基于神经网络的任务处理方法、装置、服务器和存储介质
JP2590045B2 (ja) 分散処理制御方法及び分散処理システム
US4319321A (en) Transition machine--a general purpose computer
Vasudevan et al. G-charm: an adaptive runtime system for message-driven parallel applications on hybrid systems
ADELI et al. Parallel structural analysis using threads
Samadi et al. Time-predictable task-to-thread mapping in multi-core processors
Welch et al. Reengineering computer-based systems for enhanced concurrency and layering
EP4398101A1 (en) Task scheduling execution method, and generation method and apparatus for task scheduling execution instruction
Al-Mouhamed Multiprocessor system for realtime robotics applications
KR102267920B1 (ko) 매트릭스 연산 방법 및 그 장치
Moreno et al. Petri nets and Java. Real-Time Control of a flexible manufacturing cell
Benders et al. Task level behavioral hardware description
Burgess et al. An Execution Harness for Transputer-Based Embedded Systems—
Yao et al. Mapping Petri nets to parallel programs in CC++
JPH02125335A (ja) 並列論理型言語処理系におけるゴール管理処理方式
Ohiwa et al. Design and Implementation of Multi Agent Simulation Library MasCUDA for Parallel Processing with GPU
Gracon et al. A high performance computing system for time critical applications
Burgess et al. Transputer and occam Research: New Directions 25 25 J. Kerridge, Ed. IOS Press, 1993

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees