JPH0588910A - Parallel processing program compiler - Google Patents

Parallel processing program compiler

Info

Publication number
JPH0588910A
JPH0588910A JP24957391A JP24957391A JPH0588910A JP H0588910 A JPH0588910 A JP H0588910A JP 24957391 A JP24957391 A JP 24957391A JP 24957391 A JP24957391 A JP 24957391A JP H0588910 A JPH0588910 A JP H0588910A
Authority
JP
Japan
Prior art keywords
processors
processor
parallel
execution
program
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
JP24957391A
Other languages
Japanese (ja)
Other versions
JP3246668B2 (en
Inventor
Yoshihiro Hayashi
喜弘 林
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.)
Nitto Seiko Co Ltd
Original Assignee
Nitto Seiko Co 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 Nitto Seiko Co Ltd filed Critical Nitto Seiko Co Ltd
Priority to JP24957391A priority Critical patent/JP3246668B2/en
Publication of JPH0588910A publication Critical patent/JPH0588910A/en
Application granted granted Critical
Publication of JP3246668B2 publication Critical patent/JP3246668B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To provide the parallel processing program compiler which compiles a parallel processing program in a high-level language where parallel execution can be described without taking the number of processors and inter-processor communication into consideration. CONSTITUTION:A function dividing means 7 converts the parallel processing program in the high-level language, which includes parallel execution statements where processings to be simultaneously executed are collected, to plural programs of processor units. A processor number and coupling system determining means 8 determines the number of required processors and a network among processors based on the conversion result of the function dividing means 7. An instruction code generating means 9 converts, the programs of processor units, which are converted by the function dividing means 7, into instruction codes.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、並列実行の記述が可能
な高水準言語による並列処理プログラムをコンパイルす
る並列処理プログラムコンパイル装置に関するものであ
る。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a parallel processing program compiling apparatus for compiling a parallel processing program in a high level language capable of describing parallel execution.

【0002】[0002]

【従来の技術】従来のコンパイル装置は、並列処理プロ
グラムをコンパイルする機能を有していなかった。した
がって、複数のプロセッサを用いて1つの仕事をさせる
場合、設計者が予めプロセッサの数やプロセッサ間のネ
ットワークを決定し、それに基づいて各プロセッサ毎に
プログラムを作成して、各プログラムをコンパイル装置
によりコンパイルしていた。
2. Description of the Related Art A conventional compiling device does not have a function of compiling a parallel processing program. Therefore, when a plurality of processors are used to perform one job, the designer decides the number of processors and the network between the processors in advance, creates a program for each processor based on the determined number, and the compile device executes each program. Was compiling.

【0003】[0003]

【発明が解決しようとする課題】従来のプログラム開発
方式では、設計者が予めプロセッサの数やプロセッサ間
のネットワークを決定し、それに基づいて各プロセッサ
毎にプログラムを作成するので、プロセッサ間の通信処
理の記述に誤りがあるなどすると、各プロセッサが同時
に通信待ちになってしまう、いわゆるデッドロック等が
発生してシステムが動作不能になったり(並列処理プロ
グラムの場合、その原因求明は非常に困難である。)、
ネットワークの最適化が図れずハードウエアや通信効率
に無駄を生じたりすることがあった。また設計者に過大
な負担がかかり、開発効率が悪かった。
In the conventional program development method, the designer decides the number of processors and the network between the processors in advance, and creates a program for each processor based on this, so that communication processing between the processors is performed. If there is an error in the description of the above, each processor will wait for communication at the same time, so-called deadlock will occur and the system will become inoperable (in the case of a parallel processing program, it is very difficult to determine the cause). ,),
In some cases, the network could not be optimized, resulting in waste of hardware and communication efficiency. In addition, the designer was overloaded and the development efficiency was poor.

【0004】本発明はかかる事情に鑑みて成されたもの
であり、プロセッサの数やプロセッサ間の通信を考慮す
ることなく並列実行の記述が可能な高水準言語による並
列処理プログラムをコンパイルできる並列処理プログラ
ムコンパイル装置を提供することを目的とする。
The present invention has been made in view of the above circumstances, and is capable of compiling a parallel processing program in a high-level language capable of describing parallel execution without considering the number of processors and communication between processors. An object is to provide a program compiling device.

【0005】[0005]

【課題を解決するための手段】本発明は、同時に実行す
る処理をまとめた並列実行文を含む高水準言語による並
列処理プログラムを複数の各プロセッサ単位のプログラ
ムに変換する機能分割手段と、この機能分割手段による
変換結果に基づいて必要なプロセッサの数とプロセッサ
間のネットワークとを決定する決定手段と、前記機能分
割手段により変換された各プロセッサ単位のプログラム
を命令コードに変換する命令コード生成手段とを設けた
ことを特徴としている。
SUMMARY OF THE INVENTION According to the present invention, there is provided a function dividing means for converting a parallel processing program in a high level language including a parallel execution statement in which processings to be executed at the same time into a program for each of a plurality of processors, and this function. Determining means for determining the required number of processors and a network between the processors based on the conversion result by the dividing means; and instruction code generating means for converting the program of each processor unit converted by the function dividing means into an instruction code. It is characterized by the provision of.

【0006】[0006]

【作用】機能分割手段は、同時に実行する処理をまとめ
た並列実行文を含む高水準言語による並列処理プログラ
ムを複数の各プロセッサ単位のプログラムに変換する。
決定手段は、機能分割手段による変換結果に基づいて必
要なプロセッサの数とプロセッサ間のネットワークとを
決定する。命令コード生成手段は、機能分割手段により
変換された各プロセッサ単位のプログラムを命令コード
に変換する。
The function dividing means converts a parallel processing program in a high-level language including a parallel execution statement in which processing to be executed simultaneously is put into a program for each of a plurality of processors.
The deciding means decides the number of processors and the network between the processors, based on the conversion result by the function dividing means. The instruction code generation means converts the program of each processor unit converted by the function division means into an instruction code.

【0007】[0007]

【実施例】以下、本発明の実施例を図面を用いて詳細に
説明する。図1は本発明の一実施例における並列処理プ
ログラムコンパイル装置を備えた並列処理システム設計
支援装置の概略構成図で、この並列処理システム設計支
援装置は、入力手段1と、シミュレータ2と、並列処理
プログラムコンパイル装置3と、マルチプロセッサシミ
ュレータ4とにより構成されている。
Embodiments of the present invention will be described in detail below with reference to the drawings. FIG. 1 is a schematic configuration diagram of a parallel processing system design support apparatus including a parallel processing program compiling apparatus according to an embodiment of the present invention. The parallel processing system design support apparatus includes an input unit 1, a simulator 2, and parallel processing. It is composed of a program compiling device 3 and a multiprocessor simulator 4.

【0008】入力手段1は、入力機能と表示機能とを有
していると共に、図形表現型言語を計算機処理に有利な
テキスト型言語に自動変換する機能を有している。シミ
ュレータ2は、入力手段1を用いて入力される設計者の
指示に基づいて、入力手段1によりテキスト型言語に変
換された並列処理プログラムを実行して、文法チェック
等を行うと共に、各プロセスの実行時間等を計測するこ
とにより並列処理プログラムコンパイル装置3による機
能分割に必要なデータを生成して入力手段1に表示させ
る。さらにシミュレータ2は、入力手段1を用いて入力
される設計者の指示に基づいて、並列処理プログラムコ
ンパイル装置3により機能分割された各プロセッサ毎の
プログラムを実行して、各プロセッサの動作時間や同期
待ち時間等を計測することにより並列処理プログラムコ
ンパイル装置3による最適プロセッサ数および結合方式
の決定に必要なデータを生成すると共に入力手段1に表
示させる。
The input means 1 has an input function and a display function, and also has a function of automatically converting a graphic expression type language into a text type language advantageous for computer processing. The simulator 2 executes a parallel processing program converted into a text type language by the input means 1 based on an instruction of the designer input using the input means 1 to perform grammar check and the like, and to execute each process. Data necessary for function division by the parallel processing program compiling device 3 is generated by measuring the execution time and the like, and is displayed on the input means 1. Further, the simulator 2 executes a program for each processor whose function is divided by the parallel processing program compiling device 3 based on the instruction of the designer input using the input means 1 so that the operating time and synchronization of each processor are executed. By measuring the waiting time and the like, data necessary for determining the optimum number of processors and the coupling method by the parallel processing program compiling device 3 is generated and displayed on the input means 1.

【0009】並列処理プログラムコンパイル装置3は、
入力手段1を用いて入力される設計者の指示に基づい
て、テキスト型の高水準言語で記述された並列処理プロ
グラムをコンパイルして複数のプロセッサを作動させる
ための命令コードを生成すると共に、最適なプロセッサ
の数とプロセッサ間の結合方式を決定する。マルチプロ
セッサシミュレータ4は、入力手段1を用いて入力され
る設計者の指示に基づいて、並列処理プログラムコンパ
イル装置3により生成された各プロッセッサ毎の命令コ
ードを実行し、各プロセッサやプロセッサ間の結合方式
の効率等を計測して入力手段1に表示させる。
The parallel processing program compiling device 3 is
Based on a designer's instruction input using the input means 1, a parallel processing program written in a text-type high-level language is compiled to generate an instruction code for operating a plurality of processors, and the optimum. The number of different processors and the coupling scheme between the processors. The multiprocessor simulator 4 executes the instruction code of each processor generated by the parallel processing program compiling device 3 based on the instruction of the designer input using the input means 1, and connects each processor and the coupling between the processors. The efficiency of the method is measured and displayed on the input means 1.

【0010】この並列処理システム設計支援装置は、例
えばワークステーションあるいはパーソナルコンピュー
タ等により実現される。図2は並列処理プログラムコン
パイル装置3の構成図で、並列処理プログラムコンパイ
ル装置3は、機能分割手段7と、プロセッサ台数・結合
方式決定手段8と、,命令コード生成手段9とにより構
成されており、機能分割手段7は、非再帰化処理手段1
0と、剥離処理手段11と、1ループ化処理手段12と
により構成されている。
This parallel processing system design support device is realized by, for example, a workstation or a personal computer. FIG. 2 is a block diagram of the parallel processing program compiling device 3. The parallel processing program compiling device 3 is composed of a function dividing means 7, a number of processors / coupling method determining means 8, and an instruction code generating means 9. The function dividing means 7 is the non-recursive processing means 1
0, peeling processing means 11, and 1-loop processing means 12.

【0011】機能分割手段7は、入力手段1によりテキ
スト型に変換された並列処理プログラムを各プロセッサ
毎のプログラムに分割する。プロセッサ台数・結合方式
決定手段8は、機能分割手段7の分割結果に基づいてプ
ロセッサの台数およびプロセッサ間の結合方式を決定
し、ネットリストを生成する。
The function dividing means 7 divides the parallel processing program converted into the text type by the input means 1 into a program for each processor. The number-of-processors / coupling-method determining unit 8 determines the number of processors and the coupling method between the processors based on the division result of the function dividing unit 7, and generates a netlist.

【0012】命令コード生成手段9は、機能分割手段7
により機能分割されたプログラムをコンパイルしてプロ
セッサを駆動するための命令コードを生成する。図3は
シミュレータ2の構成図で、シミュレータ2は、コマン
ド解析手段14と、字句解析手段15と、構文解析手段
16と、実行手段17と、データ生成手段18とにより
構成されており、実行手段17は切換手段19を備えて
いる。
The instruction code generating means 9 is a function dividing means 7.
The function-divided program is compiled to generate an instruction code for driving the processor. FIG. 3 is a block diagram of the simulator 2. The simulator 2 is composed of a command analysis unit 14, a lexical analysis unit 15, a syntax analysis unit 16, an execution unit 17, and a data generation unit 18, and the execution unit. 17 includes a switching means 19.

【0013】コマンド解析手段14は、入力手段1を介
して供給される設計者からの指示を解析し、シミュレー
ションを制御する。字句解析手段15は、入力手段1に
よりテキスト型に変換された並列処理プログラムあるい
は並列処理プログラムコンパイル装置3の機能分割手段
7により機能分割されたプログラムを読み込んで字句を
解読し、つづりの間違いをチェックする。
The command analysis means 14 analyzes the instruction from the designer supplied via the input means 1 and controls the simulation. The lexical analysis unit 15 reads the parallel processing program converted into the text type by the input unit 1 or the program whose function is divided by the function dividing unit 7 of the parallel processing program compiling device 3, decodes the lexical token, and checks spelling errors. To do.

【0014】構文解析手段16は、字句解析手段15か
らの単語を受け取って文法を解析し、文法の間違いをチ
ェックする。実行手段17は、構文解析手段16から解
析結果を受け取り、構文に従って各種の演算処理を行
う。データ生成手段18は、プログラムの処理時間等を
計測し、プログラムの効率を予測して並列処理プログラ
ムコンパイル装置3の機能分割手段7による機能分割の
ためのデータあるいは並列処理プログラムコンパイル装
置3のプロセッサ台数・結合方式決定手段8によるプロ
セッサ台数や結合方式の決定のためのデータを生成する
と共に、その結果を入力手段1に表示させる。
The syntactic analysis means 16 receives the words from the lexical analysis means 15 and analyzes the grammar to check for grammatical errors. The execution unit 17 receives the analysis result from the syntax analysis unit 16 and performs various arithmetic processes according to the syntax. The data generation means 18 measures the processing time of the program, predicts the efficiency of the program, data for function division by the function division means 7 of the parallel processing program compiling device 3, or the number of processors of the parallel processing program compiling device 3. -Generates data for determining the number of processors and the coupling method by the coupling method determining means 8 and displays the result on the input means 1.

【0015】切換手段19は、実行手段17があるプロ
セスの演算を実行中に同期待ちになり、続行条件が成立
しないときに、実行中のプロセス情報を退避させ、別の
プロセスの演算に切り換える。図4はマルチプロセッサ
シミュレータ4の構成図で、マルチプロセッサシミュレ
ータ4は、スケジューリング手段21と、プロセッサエ
ミュレーション手段22と、メモリ管理手段23と、並
列性解析手段24とにより構成されている。
The switching means 19 waits for synchronization while the execution means 17 is executing an operation of a certain process, and when the continuation condition is not satisfied, saves the information of the process being executed and switches to the operation of another process. FIG. 4 is a configuration diagram of the multiprocessor simulator 4. The multiprocessor simulator 4 includes a scheduling unit 21, a processor emulation unit 22, a memory management unit 23, and a parallelism analysis unit 24.

【0016】スケジューリング手段21は、入力手段1
を介して入力される設計者の指示に基づいて、プロセッ
サの数や結合方式の種類やプロセッサのシミュレーショ
ン順位等を決定した後、並列処理プログラムコンパイル
装置3の命令コード生成手段9により生成された命令コ
ードおよびプロセッサ台数・結合方式決定手段8により
生成されたネットリストを読み込んでシミュレーション
を制御する。
The scheduling means 21 is an input means 1
Instructions generated by the instruction code generation means 9 of the parallel processing program compiling device 3 after determining the number of processors, the type of coupling method, the simulation order of the processors, etc., based on the designer's instruction input via The simulation is controlled by reading the code and the number of processors / net list generated by the coupling method determination means 8.

【0017】プロセッサエミュレーション手段22は、
スケジューリング手段21により呼び出され、プロセッ
サの動作を命令サイクル単位で実行する。またこの間に
ハードウエアレベルの実行状態および通信路毎のアクセ
ス状態の各種時間を計測する。メモリ管理手段23は、
プロセッサエミュレーション手段22により呼び出さ
れ、例えば4Gバイトの仮想記憶25と例えば4Mバイ
トの主記憶26との対応をとると共に、ネットリストに
基づいてプロセッサ間通信の制御を行う。
The processor emulation means 22 includes
Called by the scheduling means 21, the operation of the processor is executed in the unit of instruction cycle. During this period, various times of the hardware level execution state and the access state of each communication path are measured. The memory management means 23
Called by the processor emulation means 22, the virtual memory 25 of, for example, 4 Gbytes is associated with the main memory 26 of, for example, 4 Mbytes, and the interprocessor communication is controlled based on the netlist.

【0018】並列性解析手段24は、スケジューリング
手段21により呼び出され、各プロセッサのソフトウェ
アレベルの実行時間を計測すると共に、システムの効率
を演算し、結果を入力手段1に表示させる。次に動作を
説明する。先ず、上記並列処理システム設計支援装置を
用いた設計法の概略について述べる。
The parallelism analyzing means 24 is called by the scheduling means 21, measures the software-level execution time of each processor, calculates the efficiency of the system, and displays the result on the input means 1. Next, the operation will be described. First, an outline of a design method using the above parallel processing system design support device will be described.

【0019】設計者は、並列アルゴリズムを論理的な処
理単位である手続き毎に設計する。このとき、手続きは
必ずしも物理的なプロセッサと1対1に対応していな
い。また、手続き外部との通信は引数によって表され
る。しかも、この段階では引数は他の変数と全く同様に
扱われ、引数の仕様や引数への代入に関しての同期は一
切不要である。並列処理の記述に関しては、同時に実行
する処理をまとめて1つの並列実行文として記述する。
つまり、1つの並列実行文内の処理がすべて終了される
まで自動的に同期がとられかつ実行終了段階ですべての
変数の値が更新されることを保証する並列アルゴリズム
(以下「同期化並列アルゴリズム」という)として記述
する。この記述レベルを以下PDL(Procedur
eDescription Level)という。
The designer designs the parallel algorithm for each procedure which is a logical processing unit. At this time, the procedure does not necessarily have a one-to-one correspondence with the physical processor. Communication with the outside of the procedure is represented by an argument. Moreover, at this stage, the argument is treated exactly like any other variable, and synchronization regarding the specification of the argument and the assignment to the argument is completely unnecessary. With regard to the description of parallel processing, processing to be executed simultaneously is collectively described as one parallel execution statement.
In other words, a parallel algorithm that guarantees automatic synchronization until all the processing in one parallel execution statement is completed and that the values of all variables are updated at the execution end stage (hereinafter referred to as “synchronization parallel algorithm”). ")). This description level is referred to as PDL (Procedur
eDescription Level).

【0020】並列処理プログラムコンパイル装置3は、
シミュレータ2によりシミュレーションされたPDL記
述に基づいて、各プロセッサ単位の処理を設計する。先
ず、並列性を考慮して同期化並列アルゴリズムを可能な
数のプロセス(並列実行文中で呼び出され、並列実行文
を直接あるいは間接的に含まない手続き)に機能分割す
る。このとき、逐次実行されている部分は各プロセスに
そのまま複写され、並列実行文についてはできるだけプ
ロセス間の処理時間が均一になるように振り分ける。そ
して、あらかじめ一組の論理型変数を用意しておき、分
割前に並列実行文の間である条件が成立するまで処理を
ストップさせるための同期文とこれらの論理型変数への
代入文を組み合わせた通信文を発生させて、各プロセス
間の同期をとる。これらの一連の処理は、多数のプロセ
スが張り合わされた状態であったものが強制的に引き剥
がされて、別々の手続きになるようすを表していること
から、剥離処理と呼ぶ。そして、最初に実行する手続き
のみが並列実行文を含む記述(以下「並列プロセス」と
いう)に変換する。すなわち、PDL記述の段階におけ
るフローグラフが図5のようである場合、剥離処理後の
フローグラフは図6のようになる。この状態で、各プロ
セス間の処理時間および稼働率が設計仕様を満足すれ
ば、各プロセスを各々1つのプロセッサに割り付ける。
設計仕様を満足していない場合、特にプロセス間の処理
時間の格差が激しい場合は、プロセス中に1つのループ
文のみ含むように分割し、同期文を発生する。この場合
1つのループ文とは、あるループ文が他のループ文を完
全に含む構造(入れ子構造)になっていないループ文の
数である。したがって、2つのループ文が入れ子構造を
構成している場合は、1つのループ文として扱う。そし
て、処理時間が均等化されるように各プロセス間の比率
を求め、その比率にできるだけ近づくようにBerns
teinの条件を用いてプロセスを分割する。このプロ
セッサ単位の記述レベルをSDL(Structure
Description Level)と呼ぶ。もし
この段階で設計仕様を明らかに満足しない場合は、PD
L設計からやり直す必要がある。
The parallel processing program compiling device 3 is
The processing for each processor is designed based on the PDL description simulated by the simulator 2. First, in consideration of parallelism, the synchronization parallel algorithm is functionally divided into a number of processes (procedures that are called in parallel execution statements and do not directly or indirectly include parallel execution statements). At this time, the portions that are sequentially executed are copied to each process as they are, and the parallel execution statements are distributed so that the processing time between the processes is as uniform as possible. Then, prepare a set of logical variables in advance, and combine a synchronization statement to stop processing until a certain condition is satisfied between parallel execution statements before splitting and an assignment statement to these logical variables. The communication message is generated to synchronize the processes. This series of processes is called a peeling process because it represents a process in which a large number of processes are stuck together and are forcibly peeled off so that separate procedures are performed. Then, only the procedure to be executed first is converted into a description including a parallel execution statement (hereinafter referred to as “parallel process”). That is, when the flow graph at the PDL description stage is as shown in FIG. 5, the flow graph after the peeling process is as shown in FIG. In this state, if the processing time between each process and the operating rate satisfy the design specifications, each process is assigned to one processor.
When the design specifications are not satisfied, particularly when there is a large difference in processing time between processes, the process is divided so that only one loop statement is included in the process, and a synchronization statement is generated. In this case, one loop statement is the number of loop statements in which one loop statement is not a structure (nested structure) that completely includes another loop statement. Therefore, when two loop statements form a nested structure, they are treated as one loop statement. Then, the ratio between the processes is calculated so that the processing times are equalized, and Berns is adjusted so as to be as close as possible to the ratio.
Divide the process using the condition of tain. The description level for each processor is set to SDL (Structure).
It is called a description level). If the design specifications are not clearly satisfied at this stage, PD
It is necessary to start over from the L design.

【0021】さらに並列処理プログラムコンパイル装置
3は、シミュレータ2によりシミュレーションされたS
DL記述に基づいて各プロセッサ間の通信状態を判断
し、通信の頻繁に行われているプロセッサ同士をすべて
結合する。しかも、通信が必要なプロセッサのうちどの
プロセッサとも通信できないプロセッサ(孤立プロセッ
サ)がないように結合し、これをネットワークとする。
そして、SDL記述をプロセッサ固有の命令コードに変
換する。また決定したネットワークを、結合するプロセ
ッサの論理番号の組からなるネットリストに変換する。
さらにネットリストから、各プロセッサが直接あるいは
間接に通信すべきプロセッサの論理番号リストをプロセ
ッサ毎に生成し、命令コード中に付加する。なお、ネッ
トワーク中で直接結合していないプロセッサ同士が通信
を行うためには、第3のプロセッサを経由して通信を行
う必要がある(間接通信)。そのために、各プロセッサ
は他の全てのプロセッサにデータを転送するために必要
な中継用プロセッサの候補を記憶する必要がある。この
段階で、再度設計仕様を検討し、これを満足しない場合
は設計のやり直しをする必要がある。ネットワークに対
して、軽度なものならば標準的なネットワークに変更す
ることも可能であるが、重度なものではPDL設計を変
更する必要がある。
Further, the parallel processing program compiling device 3 is an S simulated by the simulator 2.
The communication state between the processors is determined based on the DL description, and all the processors that are frequently communicating are connected. Moreover, the processors are connected so that there is no processor (isolated processor) that cannot communicate with any of the processors that require communication, and this is used as a network.
Then, the SDL description is converted into a processor-specific instruction code. Further, the determined network is converted into a netlist including a set of logical numbers of the processors to be combined.
Further, a logical number list of processors to be directly or indirectly communicated with by each processor is generated from the netlist for each processor and added to the instruction code. In addition, in order for the processors not directly coupled in the network to communicate with each other, it is necessary to perform the communication via the third processor (indirect communication). Therefore, each processor needs to store candidates for the relay processor necessary for transferring data to all the other processors. At this stage, it is necessary to reexamine the design specifications and, if they are not satisfied, redesign. It is possible to change the network to a standard network if it is mild, but it is necessary to change the PDL design if it is severe.

【0022】次に、上記並列処理システム設計支援装置
を用いた設計法の詳細について述べる。設計者は、図形
表現型の高水準言語により記述されたPDL記述の並列
プログラムを入力手段1に入力する。これにより入力手
段1は、図形表現型の言語をテキスト型の言語に変換
し、図外の記憶手段に格納する。
Next, the details of the design method using the parallel processing system design support apparatus will be described. The designer inputs into the input means 1 a parallel program of PDL description written in a graphic representation high-level language. As a result, the input unit 1 converts the graphic representation type language into a text type language and stores it in a storage unit (not shown).

【0023】次に設計者は、入力手段1に並列プログラ
ムのシミュレーションを行う旨の指示を入力する。これ
によりシミュレータ2の字句解析手段15は、図7のよ
うに、記憶手段からPDL記述の並列プログラムaを逐
次読み出し、単語を文章中から切り出して、予め記憶手
段に記憶されている記号表bからシンボルに対応した属
性を探し出した後、シンボルと属性とをシンボル・属性
リストcとして出力する。なお記号表bは、プログラム
言語の種類に応じて作成しておく。
Next, the designer inputs to the input means 1 an instruction to simulate a parallel program. As a result, the lexical analysis means 15 of the simulator 2 sequentially reads out the parallel program a of PDL description from the storage means, cuts out words from the sentence, and extracts from the symbol table b stored in advance in the storage means, as shown in FIG. After finding the attribute corresponding to the symbol, the symbol and the attribute are output as a symbol / attribute list c. The symbol table b is created according to the type of programming language.

【0024】次に構文解析手段16は、図8のように、
字句解析手段15から1文単位でシンボル・属性リスト
cを受け取り、予め記憶手段に記憶されている文法規則
表dからシンボル・属性リストcに対応した文の種類を
特定し、構文解析表eを作成する。なお文法規則表d
は、プログラム言語の種類に応じて作成しておく。次に
実行手段17は、図9のように、構文解析手段16から
構文解析表eを受け取り、解析結果に従った処理を予め
記憶手段に記憶されている実行関数表fから探し出し、
実行する。このとき、処理に必要なデータを予め記憶手
段に記憶されている処理管理表gから取り出し、結果を
処理管理表gの対応する箇所に書き込む。
Next, the syntactic analysis means 16, as shown in FIG.
The symbol / attribute list c is received for each sentence from the lexical analysis unit 15, the type of sentence corresponding to the symbol / attribute list c is specified from the grammar rule table d stored in the storage unit in advance, and the syntax analysis table e is obtained. create. Grammar rule table d
Is created according to the type of programming language. Next, the execution means 17, as shown in FIG. 9, receives the syntax analysis table e from the syntax analysis means 16, finds the processing according to the analysis result from the execution function table f stored in the storage means in advance,
Run. At this time, the data required for the process is taken out from the process management table g stored in advance in the storage means, and the result is written in the corresponding part of the process management table g.

【0025】一方データ生成手段18は、図10のよう
に、構文解析手段16から構文解析表eを受け取り、対
応するアセンブリコードを等価コード表hに作成して、
その等価コードの実行時間を予め記憶手段に記憶されて
いる命令コード表iとアドレッシングモード表jとを参
照しながら計算し、現在実行中のプロセスの時間表kに
実行時間を加算する。
On the other hand, the data generating means 18 receives the syntactic analysis table e from the syntactic analyzing means 16 and creates the corresponding assembly code in the equivalent code table h as shown in FIG.
The execution time of the equivalent code is calculated with reference to the instruction code table i and the addressing mode table j stored in advance in the storage means, and the execution time is added to the time table k of the process currently being executed.

【0026】シミュレーションが終了すると、結果が入
力手段1に表示される。結果が仕様を満足していれば、
次の段階に進む。仕様を満足していなければ、PDL記
述の段階から設計をやり直す。次に設計者は、入力手段
1に並列プログラムをPDL記述からSDL記述に変換
する旨の指示を入力する。これにより並列処理プログラ
ムコンパイル装置3は、設計者の指示に基づいて記憶手
段から並列プログラムを逐次読み出し、機能分割手段7
により機能分割を行う。この機能分割は、PDL記述で
表された同期化並列アルゴリズムをSDL記述で表され
る並列プロセスに変換するものであって、再帰プロセス
の非再帰化処理と、剥離処理と、1ループ化処理とから
なり、以下に詳細を説明する。なお、以下の説明で用い
る用語の定義を下記表1、2に示す。
When the simulation is completed, the result is displayed on the input means 1. If the results meet the specifications,
Go to the next stage. If the specifications are not satisfied, redesign from the PDL description stage. Next, the designer inputs an instruction to convert the parallel program from the PDL description to the SDL description in the input means 1. As a result, the parallel processing program compiling device 3 sequentially reads the parallel program from the storage means based on the designer's instruction, and the function dividing means 7
The function is divided by. This function division is to convert the synchronization parallel algorithm expressed in the PDL description into the parallel process expressed in the SDL description, and includes the non-recursive process of the recursive process, the separation process, and the one-loop process. The details are described below. The definitions of terms used in the following description are shown in Tables 1 and 2 below.

【0027】[0027]

【表1】 [Table 1]

【0028】[0028]

【表2】 [Table 2]

【0029】非再帰化処理手段10は、並列プログラム
中の並列実行文を含む再帰手続きである再帰プロセスを
通常の再帰手続きに変換する。すなわち再帰プロセス
は、再帰呼び出しが実行される回数分のプロセスが生成
され、これらの処理が同時に実行されるものであり、実
行するまで発生するプロセスの数が確定しないため、機
能分割を困難にすることから、機能分割を実行するに当
たり、再帰プロセスを普通の再帰手続きに変換する必要
がある。この再帰プロセスの非再帰化処理により、図1
1(A)のようなプロセスモデルが図11(B)のよう
なプロセスモデルに変換される。具体的には、下記
(1)、(2)の処理を実行する。
The non-recursive processing means 10 converts a recursive process, which is a recursive procedure including parallel execution statements in a parallel program, into an ordinary recursive procedure. In other words, in the recursive process, processes are generated by the number of times the recursive call is executed, these processes are executed at the same time, and the number of processes that occur until execution is not fixed, which makes functional division difficult. Therefore, it is necessary to convert the recursive process into an ordinary recursive procedure in order to execute the function division. By the non-recursive processing of this recursive process, FIG.
The process model as shown in FIG. 1 (A) is converted into the process model as shown in FIG. 11 (B). Specifically, the following processes (1) and (2) are executed.

【0030】(1)並列実行文を含む手続きがその並列
実行文から呼び出している手続きによってさらに呼び出
されている場合、該当する全ての手続きAに対して手続
き名をA’に変えて複製をとり、並列実行文を逐次実行
文に置き換える。 (2)並列実行文中で呼び出しされているすべての手続
きに対して呼び出している手続き名をAからA’に置き
換える。
(1) When a procedure including a parallel execution statement is further called by a procedure called from the parallel execution statement, copy the procedure by changing the procedure name to A'for all the corresponding procedures A. , Replace parallel execution statements with sequential execution statements. (2) Replace the procedure names called from A to A'for all the procedures called in the parallel execution statement.

【0031】剥離処理手段11は、分割処理と、同期機
構・通信プロトコルの発生処理と、被分割集合の手続き
化処理と、インライン展開処理とからなる剥離処理を行
う。分割処理は、最大の実行文を持つ並列実行文と同数
の文の集合に、各処理量が均等化されるようにmin−
max原理に基づいて処理を分割するものである。具体
的には、下記(1)〜(5)の処理を行う。
The peeling process means 11 performs a peeling process including a dividing process, a synchronization mechanism / communication protocol generating process, a divided set procedural process, and an inline expanding process. The division processing is performed by min- min so that each processing amount is equalized to a set of statements having the same number as the parallel execution statement having the largest execution statement.
The processing is divided based on the max principle. Specifically, the following processes (1) to (5) are performed.

【0032】(1)変数型の分割・合成処理により、従
属型並列処理の前後に変換部を発生させる。 (2)従属型並列処理を構成するすべての並列実行文
(下記数1)を1文単位の集合(下記数2)に分割し、
この最大要素数mi を被分割手続き数とする。 (3)各文の実行時間に対するmin−max原理に基
づいて、集合(下記数2)をmi 個の集合(下記数3)
にまとめる。
(1) By the variable type division / synthesis processing, a conversion unit is generated before and after the subordinate parallel processing. (2) Divide all parallel execution statements (Formula 1 below) that constitute dependent parallel processing into a set (Formula 2 below) in units of one sentence,
This maximum number of elements m i is the number of divided procedures. (3) Based on the min-max principle for the execution time of each statement, the set (Equation 2 below) is a set of m i pieces (Equation 3 below).
Put together.

【0033】(4)従属型並列処理を含んでいた実行部
をmi 個コピーし、その中に下記数3の要素を埋め込
む。 (5)各処理に対して、埋め込みが起こった基本ブロッ
ク内で他の処理に分配された変数定義が使用されている
場合は送受信用の代入文を発生させる。
(4) Copy m i execution units including the subordinate parallel processing, and embed the elements of the following expression 3 therein. (5) For each process, if a variable definition distributed to another process is used in the basic block in which embedding has occurred, an assignment statement for transmission / reception is generated.

【0034】[0034]

【数1】 [Equation 1]

【0035】[0035]

【数2】 [Equation 2]

【0036】[0036]

【数3】 [Equation 3]

【0037】同期機構・通信プロトコルの発生処理は、
分割後の各集合に対して通信プロトコルを生成するもの
である。具体的には、下記(1)〜(3)の処理を行
う。 (1)変数の分類を行い、すべての受信・放送変数ak
に対して同期変数fk を生成し、通信変数vk とする。
このとき、同期変数の受信側および送信側の要素数はそ
の変数を受信および送信している手続きの数に合わせ
る。
The generation process of the synchronization mechanism / communication protocol is
A communication protocol is generated for each set after division. Specifically, the following processes (1) to (3) are performed. (1) Variables are classified and all received / broadcast variables a k
Then, a synchronization variable f k is generated for the communication variable v k .
At this time, the number of elements on the receiving side and the transmitting side of the synchronization variable is adjusted to the number of procedures receiving and transmitting the variable.

【0038】(2)下記〜の規則にしたがって、受
信点・放送点・中継点にそれぞれ同期機構・通信プロト
コルを発生させる。このとき、正論理または負論理で統
一し、しかも初期値の挿入は1つの変数につき1回とす
る。なお、受信点とは並列実行文中で受信変数が使用さ
れる場所をいい、放送点とは並列実行文中で放送変数が
使用される場所をいい、中継点とは代入文両辺に中継変
数が存在する場所をいう。
(2) In accordance with the following rules (1) to (3), a synchronization mechanism and a communication protocol are generated at the receiving point, the broadcasting point, and the relay point, respectively. At this time, the positive logic or negative logic is unified, and the initial value is inserted once for each variable. Note that the receiving point refers to the location where the receiving variable is used in the parallel execution statement, the broadcasting point refers to the location where the broadcasting variable is used in the parallel execution statement, and the relay point is the relay variable on both sides of the assignment statement. The place to do.

【0039】受信(放送)点が制御構造の実行文中に
あれば、受信(放送)点に受信(放送)プロトコルを発
生させる。制御構造に属さない場合、受信(放送)点が
1つ以上存在すれば受信(放送)プロトコルを、それ以
外は同期機構を発生させる。 中継点に中継プロトコルを発生させる。
If the receiving (broadcasting) point is in the execution statement of the control structure, the receiving (broadcasting) protocol is generated at the receiving (broadcasting) point. If it does not belong to the control structure, a reception (broadcast) protocol is generated if there is at least one reception (broadcast) point, and a synchronization mechanism is generated otherwise. Generate a relay protocol at the relay point.

【0040】制御構造の有無により同期変数の値変化
に差がでてはならない。 (3)同期変数f endを生成し、他のすべての実行
文を下記数4で挟む。
There should be no difference in the change in the value of the synchronization variable depending on the presence or absence of the control structure. (3) Synchronization variable f End is generated and all other executable statements are sandwiched by the following expression 4.

【0041】[0041]

【数4】 [Equation 4]

【0042】被分割集合の手続き化処理は、被分割集合
を実行部とする手続きを生成し、これらの手続きを呼び
出す1つの並列実行文を生成し、これを元の実行部と置
き換えるものである。具体的には、下記(1)〜(4)
の処理を行う。 (1)生成された通信変数の複製をとる。また、各被分
割集合の同期変数f endの複製を変数名が重ならぬよ
うにとる。
The procedural processing of the divided set is performed by dividing the divided set.
Create a procedure whose execution part is and call these procedures.
Generate one parallel statement to issue and place it as the original execution part.
It will be replaced. Specifically, the following (1) to (4)
Process. (1) Copy the generated communication variable. Also, each subdivided
Synchronization variable f of split set Variable names do not overlap in end replication
Sea urchin

【0043】(2)下記〜の規則にしたがって、被
分割集合を実行部とする手続き宣言部を生成する。この
とき変数と変数型との対応をとる。 受信変数となっているものおよび同期文中に現れた論
理型変数は入力変数とする。 放送変数となっているものおよび定義された論理型変
数は出力変数とする。
(2) According to the following rules (1) to (3), a procedure declarative part having a divided set as an execution part is generated. At this time, the correspondence between variables and variable types is taken. The receive variables and the logical variables that appear in the synchronization statement are input variables. Broadcast variables and defined logical variables are output variables.

【0044】中継変数となっているものについては、
受信点と放送点とにおける変数名を変更した後で入出力
変数とする。 自動的に生成された変数は内部変数とする。 (3)複製された通信変数を引数として、生成された手
続きをすべて呼び出す1つの並列実行文を生成する。こ
のとき、それぞれの手続き宣言部の入出力変数に対応し
て入出力引数を生成する。
Regarding the relay variables,
After changing the variable names at the receiving point and the broadcasting point, they are used as input / output variables. The automatically generated variables are internal variables. (3) One parallel execution statement that calls all the generated procedures using the copied communication variable as an argument is generated. At this time, input / output arguments are generated corresponding to the input / output variables of each procedure declaration part.

【0045】(4)生成された並列実行文に各手続きか
らの同期変数f endi に対し下記数5の終了判定文
を加えた逐次実行文を元の実行部と置き換える。
(4) A synchronization variable f from each procedure is added to the generated parallel execution statement. The sequential execution statement in which the end determination statement of the following Expression 5 is added to end i is replaced with the original execution unit.

【0046】[0046]

【数5】 [Equation 5]

【0047】インライン展開処理は、展開前の手続きが
カーネルでなければ、手続きを呼び出している手続きに
対して、手続き呼び出し文を展開後の実行部で置き換え
るものである。具体的には、下記(1)〜(5)の手続
きを実行する。なお、カーネルとは最初に実行される手
続きをいう。 (1)手続き呼び出し文を対応する手続きの実行部で置
き換える。
The inline expansion processing replaces the procedure call statement with the expanded execution unit for the procedure calling the procedure unless the procedure before expansion is the kernel. Specifically, the following procedures (1) to (5) are executed. The kernel is the procedure that is first executed. (1) Replace the procedure call statement with the execution part of the corresponding procedure.

【0048】(2)実行部に含まれる内部変数を、変数
名が重複する場合は名前を変更し、重複しない場合はそ
のまま定義する。 (3)変数の型が存在しない場合は変数型の定義を行っ
た後、変数を型に対応させる。 (4)実行部に含まれる入出力変数を入出力引数で、変
更された内部変数を変更後の名前でそれぞれ置き換え
る。
(2) The internal variable included in the execution unit is renamed when the variable name is duplicated, and is defined as it is when the variable name is not duplicated. (3) If the variable type does not exist, the variable type is defined and then the variable is associated with the type. (4) The input / output variables included in the execution unit are replaced with the input / output arguments, and the changed internal variables are replaced with the changed names.

【0049】剥離処理により生成されたカーネルは、複
数の並列実行文が逐次的に実行される構造を持つことに
なる。剥離処理では、各並列実行文毎にはプロセスに対
する処理量の均等化を考慮している。しかし、カーネル
から呼び出されている全てのプロセスに対する処理量の
均等化については考慮していない。したがって、生成さ
れた並列プロセス全体としての各プロセスの処理量の均
等化を行うことにより、最適なシステムとなる。そこ
で、並列実行文間でプロセスの処理量の比により、それ
ぞれのプロセスの実行プロセッサ数を決定する必要があ
る。そこでは、各プロセスの処理をn分割する必要が生
じる。そして、これが可能なものは、手続き内にループ
文を含んでいる場合である。このループ文に着目した分
割法を適用可能とするために、すべての手続きを1ルー
プ化する必要が生じる。この1ループ化処理は下記
(1)〜(6)の手順により実現される。
The kernel generated by the peeling process has a structure in which a plurality of parallel execution statements are sequentially executed. In the peeling process, the equalization of the processing amount for the processes is considered for each parallel execution statement. However, it does not consider the equalization of the processing amount for all processes called from the kernel. Therefore, by optimizing the processing amount of each of the generated parallel processes as a whole, an optimum system is obtained. Therefore, it is necessary to determine the number of executing processors of each process based on the ratio of the processing amount of the process between the parallel execution statements. There, it becomes necessary to divide the processing of each process into n. And this is possible when the procedure contains a loop statement. In order to be able to apply the division method focusing on this loop statement, it is necessary to make all procedures into one loop. This one-loop processing is realized by the following procedures (1) to (6).

【0050】(1)2つ以上のループ文を含む手続きの
実行部をループ文の終了部分で分割する。 (2)分割した文の集合の間にデータ依存関係が存在す
る場合、その変数を記憶する。 (3)下記〜の規則にしたがい、分割した文の集合
を実行部とする手続き宣言部を生成する。
(1) The execution part of the procedure including two or more loop statements is divided at the end part of the loop statement. (2) If there is a data dependency between the sets of divided sentences, the variable is stored. (3) According to the following rules (1) to (3), a procedure declarative part having a set of divided statements as an execution part is generated.

【0051】データ依存関係が存在する変数が実行部
で使用されているものは入力変数とする。 データ依存関係が存在する変数が実行部で定義されて
いるものは出力変数とする。 データ依存関係が存在する変数が実行部で使用・定義
されているものについては、変数名を分離して入出力変
数とする。さらに、実行部の使用箇所と定義箇所の変数
名を入出力変数名で置き換える。
A variable having a data dependency is used as an input variable when it is used in the execution unit. A variable that has a data dependency is defined in the execution part as an output variable. For variables that have data dependencies that are used and defined in the execution part, separate the variable names into input / output variables. Furthermore, the variable names of the used part and the defined part of the execution part are replaced with the input / output variable names.

【0052】データ依存関係が存在しない変数は局所
変数とする。 (4)実行部の使用・定義箇所をそれぞれ受信・放送点
と見做して同期機構・通信プロトコルを発生させる。 (5)各手続きに同期変数f endを生成して、下記
数4で実行部をはさむ。
Variables having no data dependency are local variables. (4) The use / definition of the execution unit is regarded as the reception / broadcast point, and the synchronization mechanism / communication protocol is generated. (5) Synchronous variable f for each procedure end is generated and the execution unit is sandwiched by the following expression 4.

【0053】(6)元のプロセスを呼び出している箇所
に分割した手続き呼び出し文を生成する。 次に設計者は、入力手段1に機能分割処理後のプログラ
ムのシミュレーションを行う旨の指示を入力する。これ
によりシミュレータ2の字句解析手段15は、図7のよ
うに、記憶手段から並列プログラムaを逐次読み出し、
単語を文章中から切り出して、記号表bからシンボルに
対応した属性を探し出した後、シンボルと属性とをシン
ボル・属性リストcとして出力する。
(6) Generate a procedure call statement that is divided into parts that call the original process. Next, the designer inputs to the input means 1 an instruction to simulate the program after the function division processing. As a result, the lexical analysis unit 15 of the simulator 2 sequentially reads the parallel program a from the storage unit as shown in FIG.
The word is cut out from the sentence, the attribute corresponding to the symbol is searched from the symbol table b, and then the symbol and the attribute are output as the symbol / attribute list c.

【0054】次に構文解析手段16は、図8のように、
字句解析手段15から1文単位でシンボル・属性リスト
cを受け取り、文法規則表dからシンボル・属性リスト
cに対応した文の種類を特定し、構文解析表eを作成す
る。次に実行手段17は、図9のように、構文解析手段
16から構文解析表eを受け取り、解析結果に従った処
理を実行関数表fから探し出し、実行する。このとき、
処理に必要なデータを処理管理表gから取り出し、結果
を処理管理表gの対応する箇所に書き込む。また実行手
段17は、構文解析手段16から受け取った構文解析表
eの文がwait文であれば切換手段19を起動する。
Next, the syntactic analysis means 16, as shown in FIG.
The symbol / attribute list c is received for each sentence from the lexical analysis unit 15, the type of sentence corresponding to the symbol / attribute list c is specified from the grammar rule table d, and the syntax analysis table e is created. Next, as shown in FIG. 9, the execution means 17 receives the syntax analysis table e from the syntax analysis means 16, finds the processing according to the analysis result from the execution function table f, and executes it. At this time,
The data required for processing is taken out from the processing management table g, and the result is written in the corresponding location of the processing management table g. Further, the execution means 17 activates the switching means 19 if the sentence of the syntax analysis table e received from the syntax analysis means 16 is a wait statement.

【0055】これにより切換手段19は、図12のよう
に、構文解析表eの条件部を参照し、条件がT(Tru
e)であれば何もせずに処理を続行する。条件がF(F
alse)であれば、現在の状態をプロセス管理表mに
記入した後、タイムホイールnを1ステップ進めて次に
実行すべきプロセス名を取得し、プロセス管理表mに従
って実行すべきプログラムに切り換える。
As a result, the switching means 19 refers to the condition part of the syntax analysis table e as shown in FIG. 12, and the condition is T (Tru).
If it is e), the process is continued without doing anything. The condition is F (F
If “alse”, the current state is entered in the process management table m, the time wheel n is advanced by one step to obtain the process name to be executed next, and the process is switched to the program to be executed according to the process management table m.

【0056】すなわち図13のように、第iプロセスを
実行し(ステップS1)、同期待ちか否かを判断し(ス
テップS2)、同期待ちであれば処理続行の条件が不成
立であるか否かを判断し(ステップS3)、不成立であ
れば第iプロセスを退避させ(ステップS4)、iに1
を加えてiとし(ステップS5)、第iプロセスを呼び
出して(ステップS6)、ステップS1に戻る。ステッ
プS2で同期待ちでなければステップS1に戻る。ステ
ップS3で条件不成立でなければステップS1に戻る。
That is, as shown in FIG. 13, the i-th process is executed (step S1), and it is determined whether or not it is waiting for synchronization (step S2). If it is waiting for synchronization, it is determined whether or not the condition for continuing processing is not satisfied. (Step S3), if not established, the i-th process is saved (step S4), and i is set to 1
To i (step S5), the i-th process is called (step S6), and the process returns to step S1. If the synchronization is not waited in step S2, the process returns to step S1. If the condition is not satisfied in step S3, the process returns to step S1.

【0057】一方データ生成手段18は、図10のよう
に、構文解析手段16から構文解析表eを受け取り、対
応するアセンブリコードを等価コード表hに作成して、
その等価コードの実行時間と同期待ち時間とを、予め記
憶手段に記憶されている命令コード表iとアドレッシン
グモード表jとを参照しながら計算し、現在実行中のプ
ロセスの時間表kに実行時間と同期待ち時間とに分けて
加算する。
On the other hand, the data generating means 18 receives the syntactic analysis table e from the syntactic analyzing means 16 and creates the corresponding assembly code in the equivalent code table h as shown in FIG.
The execution time and the synchronization waiting time of the equivalent code are calculated with reference to the instruction code table i and the addressing mode table j stored in advance in the storage means, and the execution time is shown in the time table k of the process currently being executed. And synchronization waiting time are added separately.

【0058】シミュレーションが終了すると、結果が入
力手段1に表示される。結果が仕様を満足していれば、
次の段階に進む。仕様を満足していなければ、PDL記
述の段階から設計をやり直す。次に設計者は、入力手段
1にプロセッサ台数およびプロセッサ間の結合方式を決
定し、プロセッサを作動させるための命令コードを生成
する旨の指示を入力する。これにより並列処理プログラ
ムコンパイル装置3のプロセッサ台数・結合方式決定手
段8は、シミュレータ2のデータ生成手段18により生
成されたデータを参照して、プロセッサの台数およびプ
ロセッサ間の結合方式を決定すると共に、中継用プロセ
ッサリストを生成する。
When the simulation is completed, the result is displayed on the input means 1. If the results meet the specifications,
Go to the next stage. If the specifications are not satisfied, redesign from the PDL description stage. Next, the designer determines the number of processors and the coupling method between the processors in the input means 1 and inputs an instruction to generate an instruction code for operating the processors. As a result, the number-of-processors / coupling method determining unit 8 of the parallel processing program compiling apparatus 3 refers to the data generated by the data generating unit 18 of the simulator 2 and determines the number of processors and the coupling method between the processors. Generate a relay processor list.

【0059】結合方式の決定は、下記(1)〜(3)の
手順で行う。 (1)すべてのプロセッサの組(p i ,p j
に対して結合力を計算し、結合力行列F=(Fij)を求
める。ここで結合力とは、プロセス間の通信量であり、
変数のサイズと処理実行中に送受信した回数とにより決
定することができ、本実施例では下記数6を結合力関数
とする。この関数は、プロセスが実行中に通信した情報
量に比例した量であると見做すことができる。
The determination of the coupling method is performed by the following procedures (1) to (3). (1) A set of all processors (p a i , p a j )
The binding force is calculated with respect to and the binding force matrix F = (F ij ) is obtained. Here, the cohesion is the amount of communication between processes,
It can be determined by the size of the variable and the number of transmissions and receptions during the process execution. In the present embodiment, the following equation 6 is used as the binding force function. This function can be regarded as an amount proportional to the amount of information that the process communicates during execution.

【0060】[0060]

【数6】 [Equation 6]

【0061】(2)得られた結合力行列Fのすべての要
素に対し、そのヒストグラムをとる。 (3)ヒストグラムがいくつかの分布に分割される場合
は、結合力の大きな分布から順に分布に属するプロセッ
サの組をネットワークとして直接結合し、ネットリスト
を作成する。このとき、通信が必要なプロセッサのうち
どのプロセッサとも直接あるいは間接的に結合せず孤立
するプロセッサが存在しなくなるまで分布を採用する。
また、分布が分割しない場合は、この分布に属するすべ
てのプロセッサをネットワークとして直接結合し、ネッ
トリストを作成する。
(2) Histograms of all the elements of the obtained binding force matrix F are taken. (3) When the histogram is divided into several distributions, a set of processors belonging to the distribution is directly connected as a network in order from the distribution with the largest binding force to create a netlist. At this time, the distribution is adopted until there is no isolated processor that is not directly or indirectly coupled to any of the processors that need communication.
If the distribution is not divided, all processors belonging to this distribution are directly connected as a network to create a netlist.

【0062】このように結合方式を決定することによ
り、プロセス間の通信量の小さなものについては直接結
合させずに中継させることで、通信用の回路の増大を抑
えることができ、通信量の大きなものについては直接結
合させることで、中継に伴う通信のオーバヘッドを減少
させることができる。以上の手順でネットワークが決定
すると、とりあえずプロセッサ間の通信は可能となる
が、これは単に線がつながったに過ぎない。つまり、す
べてのプロセッサが互いに接続された場合を除いて、直
接通信のできないプロセッサの組が存在する。このプロ
セッサ同士は、第3者を経由しないと通信することがで
きない。ところが、どのプロセッサを経由すれば通信を
行うことが可能であるのかといっった情報はまだ決定さ
れていない。したがって、この情報を決定する必要があ
る。これはネットリストが与えられれば、決定すること
は可能である。この問題は、与えられた2点間の最短経
路を決定する問題として知られ、ダイクストラ(Dij
kstra)法等の解法が有名である。本実施例では、
ダイクストラ法を用いて通信経路を決定しているので、
詳細なアルゴリズムの説明は省略する。自分以外のプロ
セッサへ通信するための情報としては、そのプロセッサ
へ通信するために、直接通信すべきプロセッサのリスト
を記憶しておけばよい。また、最短経路が複数存在して
も差し支えなく、これをすべて記憶しておけば、特定の
通信路のみが混雑することを防ぐことが可能となる。
By determining the coupling method in this way, by relaying a small communication amount between processes without directly coupling, it is possible to suppress an increase in the communication circuit and to increase the communication amount. By directly connecting objects, communication overhead associated with relaying can be reduced. When the network is determined by the above procedure, communication between the processors is possible for the time being, but this is merely a line connection. That is, there is a set of processors that cannot directly communicate with each other unless all the processors are connected to each other. The processors cannot communicate with each other without passing through a third party. However, information as to which processor it is possible to communicate with has not yet been determined. Therefore, it is necessary to determine this information. This can be determined given the netlist. This problem is known as the problem of determining the shortest path between two given points.
The solution methods such as the kstra) method are famous. In this example,
Since the communication route is determined using the Dijkstra method,
A detailed description of the algorithm is omitted. As the information for communicating with a processor other than itself, a list of processors to communicate directly with in order to communicate with that processor may be stored. Further, even if there are a plurality of shortest routes, there is no problem, and if all of them are stored, it becomes possible to prevent only a specific communication path from becoming congested.

【0063】また並列処理プログラムコンパイル装置3
の命令コード生成手段9は、機能分割手段7により機能
分割されたプログラムをコンパイルして、プロセッサを
作動させるための命令コードを生成する。次に設計者
は、入力手段1に並列処理プログラムコンパイル装置3
により生成された命令コードおよびネットリストを用い
てシミュレーションを行う旨の指示を入力する。これに
よりマルチプロセッサシミュレータ4がシミュレーショ
ンを行う。マルチプロセッサシミュレータ4は、図14
のように、(A)の共有メモリ型や、(B)の木構造型
や、(C)の配列型や、(D)のトーラス型や、(E)
の超立方体型(ハイパーキューブ型)等の代表的なネッ
トワークを実現可能であり、ネットワークの性能を比較
できるようになされている。
The parallel processing program compiling device 3
The instruction code generation means 9 of 1 compiles the program whose functions have been divided by the function division means 7 to generate an instruction code for operating the processor. Next, the designer attaches the parallel processing program compiling device 3 to the input means 1.
An instruction to perform simulation is input using the instruction code and the netlist generated by. This causes the multiprocessor simulator 4 to perform a simulation. The multiprocessor simulator 4 is shown in FIG.
Like (A) shared memory type, (B) tree structure type, (C) array type, (D) torus type, (E)
It is possible to realize a typical network such as the hypercube type, and to compare the network performance.

【0064】スケジューリング手段21は、設計者の指
示に基づいて、プロセッサの数、ネットワークの種類、
プロセッサのシミュレーション順位等を決定した後、並
列処理プログラムコンパイル装置3のコード生成手段9
が生成したコードおよびプロセッサ台数・結合方式決定
手段8が決定したネットリストを読み込んで、シミュレ
ーションの制御を行う。すなわち図15のように、初期
設定時には、メモリ管理手段23に通信網情報と初期値
データとを渡し、タイムホイールpにプロセッサの実行
順序を設定する。そしてシミュレーション時には、タイ
ムホイールpの実行プロセッサのプロセッサ番号をプロ
セッサエミュレーション手段22に渡し、タイムホイー
ルpのポインタを1つ進める。
The scheduling means 21 uses the number of processors, the type of network, and
After determining the processor simulation order and the like, the code generation means 9 of the parallel processing program compiling device 3 is executed.
The generated code and the net list determined by the number of processors / connection method determination means 8 are read to control the simulation. That is, as shown in FIG. 15, at the time of initialization, the communication network information and the initial value data are passed to the memory management means 23, and the execution order of the processors is set in the time wheel p. Then, at the time of simulation, the processor number of the executing processor of the time wheel p is passed to the processor emulation means 22, and the pointer of the time wheel p is advanced by one.

【0065】プロセッサエミュレーション手段22は、
スケジューリング手段21により呼び出され、対象とす
るプロセッサの動作を命令サイクル単位で実行する。こ
の間にハードウェアレベルの実行状態(演算中、命令呼
び出し、ローカルメモリ読み出し・書き込み・呼び出し
待ち・書き込み待ち、共有メモリ呼び出し・書き込み、
呼び出し待ち、書き込み待ち、I/O呼び出し・書き込
み・呼び出し待ち・書き込み待ち)および通信路毎のア
クセス状態(呼び出し・書き込み・呼び出し待ち・書き
込み待ち)の時間を計測する。すなわち図16のよう
に、命令コードすなわちアセンブリ言語で書かれたプロ
グラムqを実行する。例えば、mov a,doを読み
込み、aに対するアドレスを出力してメモリ管理手段2
3からデータdata(a)を受理する。そして命令が
movであることから、プロセッサデータファイルrの
レジスタファイル中のdoへデータdata(a)を代
入した後、ポインタを1つ進める。このとき同時に、各
サイクルに要した時間を、命令サイクル時間表sを参照
してプロセッサデータファイルr中の時間情報部に記入
する。
The processor emulation means 22 is
Called by the scheduling means 21, the operation of the target processor is executed in the unit of instruction cycle. During this time, the hardware-level execution state (during operation, instruction call, local memory read / write / call wait / write wait, shared memory call / write,
It measures the time of call waiting, write waiting, I / O call / write / call waiting / write wait) and the access status (call / write / call wait / write wait) of each communication path. That is, as shown in FIG. 16, the instruction code, that is, the program q written in the assembly language is executed. For example, the memory management means 2 is read by reading mov a, do and outputting the address for a.
The data data (a) from 3 is received. Since the instruction is mov, the data data (a) is assigned to do in the register file of the processor data file r, and then the pointer is advanced by one. At the same time, the time required for each cycle is entered in the time information section in the processor data file r with reference to the instruction cycle time table s.

【0066】メモリ管理手段23は、プロセッサエミュ
レーション手段22から呼び出され、仮想空間すなわち
仮想記憶25と物理空間すなわち主記憶26との対応を
とる。同時に、I/O空間を介してネットワークによる
プロセッサ間の通信の制御を行う。すなわち図17のよ
うに、初期設定時にはスケジューリング手段21により
通信網の形態情報を受け取り、各ポートに対してアクセ
ス可能なプロセッサを示す属性をセットすることによっ
て、通信網tを設定する。このポートは属性にセットさ
れた1組のプロセッサのみがアクセス可能であり、これ
によって通信を行うことが可能である。そしてシミュレ
ーションが開始されると、メモリ管理手段23はプロセ
ッサから指定されたプロセッサ番号とアドレスとによっ
て、対応するデータをプロセッサエミュレーション手段
22に返す。なおuはプロセッサデータ、vは共有デー
タである。
The memory management means 23 is called from the processor emulation means 22, and establishes a correspondence between the virtual space or virtual memory 25 and the physical space or main memory 26. At the same time, it controls communication between the processors via the network via the I / O space. That is, as shown in FIG. 17, at the time of initial setting, the configuration information of the communication network is received by the scheduling means 21, and the attribute indicating the processor accessible to each port is set to set the communication network t. This port can be accessed by only one set of processors set in the attribute, and communication can be performed by this. When the simulation is started, the memory management means 23 returns the corresponding data to the processor emulation means 22 according to the processor number and address designated by the processor. Note that u is processor data and v is shared data.

【0067】並列性解析手段24は、スケジューリング
手段21により呼び出され、各プロセッサのソフトウェ
アレベルの実行状態に関する時間を計測する。すなわち
マルチプロセッサシミュレータ4には、各プロセッサ毎
に10個のシステム変数が用意されており、この変数を
設定することにより、変数が設定されている間の時間を
独立に計測することが可能となる。設計者は、この変数
を用いることによって任意の処理の実行時間を計測する
ことが可能となる。10個のシステム変数のうち、pr
b0〜prb2はシステムで予約されており、それぞ
れ、処理実行中、通信中、待機中の時間の計測を行う。
処理実行中は、プロセッサが自分の与えられた仕事を実
行している時間であり、通信中は、処理に必要なデータ
の送受信または他のプロセッサへの中継処理を行ってい
る時間であり、待機中は、何もせずにただ待っている時
間である。それぞれのシステム変数に対する計測を実行
すると共に、計測された結果をハードウェアレベルの結
果と合わせて集計し、データファイルとして出力する。
The parallelism analyzing means 24 is called by the scheduling means 21 and measures the time relating to the software level execution state of each processor. That is, in the multiprocessor simulator 4, ten system variables are prepared for each processor, and by setting these variables, the time during which the variables are set can be independently measured. .. The designer can measure the execution time of an arbitrary process by using this variable. Pr out of 10 system variables
b0 to prb2 are reserved by the system, and measure the time during processing execution, communication, and standby, respectively.
While the process is being executed, it is the time when the processor is executing its assigned work, while during the communication, it is the time when the data necessary for the process is being sent or received or is being relayed to another processor, and is waiting. The inside is just waiting time without doing anything. Measurement is performed for each system variable, and the measured results are totaled together with the hardware level results and output as a data file.

【0068】シミュレーションが終了すると、結果が入
力手段1に表示される。結果が仕様を満足していれば、
設計を終了する。仕様を満足していなければ、PDL記
述の段階から設計をやり直す。なお、通信の効率が満足
できない場合は、図14(A)〜(E)のような既存の
ネットワークと効率を比較し、既存のネットワークで仕
様を満足すればそれを採用する。
When the simulation is completed, the result is displayed on the input means 1. If the results meet the specifications,
Finish the design. If the specifications are not satisfied, redesign from the PDL description stage. If the communication efficiency cannot be satisfied, the efficiency is compared with the existing network as shown in FIGS. 14A to 14E, and if the existing network satisfies the specifications, it is adopted.

【0069】以上の手順で開発された並列処理プログラ
ムを実行する並列処理プロセッサは、例えば図18のよ
うに、ローカルメモリ280 〜28n-1 を有する複数の
プロセッサ290 〜29n-1 が通信網により結合し、通
信路を介して他の複数のプロセッサ290 〜29n-1
の通信を行うものである。通信網は、複数のプロセッサ
290 〜29n-1 同士の結合状態を示すネットリストに
よりデータバス30と双方向メモリブロック310 〜3
n-1 との対応を切り換える汎用スイッチ32と、汎用
スイッチ32を制御するネットワークコントローラ33
とからなる。通信は、結合可能な複数のプロセッサ29
0 〜29n-1 のみがアクセス可能な複数の双方向メモリ
ブロック310 〜31n-1 の書き込みにより行われる。
またこの通信網は、すべてのプロセッサ290 〜29
n-1 がアクセス可能な共有メモリ34を持ち、共有メモ
リ34を介してもプロセッサ290 〜29n-1 同士は通
信可能である。プロセッサ290 〜29n-1 同士の通信
におけるハードウェアレベルでの排他制御は自動的に行
われているものとし、さらにソフトウェア的には、各プ
ロセッサ290 〜29n-1 は非分割の読み書きサイクル
のtas(Testand Set)命令を備えている
ものとする。図19はメモリ空間(仮想空間)の全体構
成図で、メモリ空間は大きく3つの部分(ローカルメモ
リ空間、共有メモリ空間、I/O空間)に分かれてい
る。ローカルメモリ空間は、それぞれ対応するプロセッ
サ290 〜29n-1 のみがアクセス可能な領域であり、
各プロセッサ290 〜29n-1 毎に存在する。ローカル
メモリ空間は、さらにプロセッサ290 〜29n-1 固有
の例外ベクタ領域(プロセッサ290 〜29n-1 によっ
ては存在しない場合もある)、PE結合情報部、ユーザ
領域からなっている。共有メモリ空間は、すべてのプロ
セッサ290 〜29n-1 がアクセス可能な領域であり、
ネットワークコントローラ33により排他制御され、同
時には1つのプロセッサ290 〜29n-1 のみがアクセ
ス可能である。I/O空間は多数のメモリブロックから
なっており、各ブロックは特定の1組のプロセッサのみ
がアクセス可能である。その排他制御は、各プロセッサ
290 〜29n-1 の結合状態を表すネットリストにした
がって、ネットワークコントローラ33が行う。この領
域は、各ブロック毎に同時にアクセス可能である。PE
(プロセッサ)結合情報部は、ローカルメモリ空間中に
存在し、図20のように、プロセッサ290 〜29n-1
の論理番号、ネットワークの種類、ネットワーク用パラ
メータ、そのプロセッサが直接I/Oを介して通信可能
なプロセッサの番号とそのI/Oアドレス等を格納す
る。ユーザ領域は、図21のように、プロセッサ290
〜29n-1 が実行するプログラムを格納する領域とプロ
セッサ290 〜29n-1 のみがアクセスするデータを格
納する領域とからなる。なお例外ベクタ領域は、各プロ
セッサ290 〜29n-1 により異なるため、その構造の
説明を省略する。I/O空間は、図22のように、1ブ
ロック16バイトで構成され、これを介して1組のプロ
セッサが通信を行うことができる。1ブロックは、さら
に属性領域、送受信バッファ、予備領域からなる。プロ
セッサ290 〜29n-1 がアクセス可能な領域は送受信
バッファおよび予備領域であり、属性領域はネットワー
クコントローラ33のみがアクセス可能である。
[0069] parallel processor for executing parallel processing program developed by the above procedure, for example as shown in FIG. 18, a plurality of processors 29 0 ~29 n-1 having a local memory 28 0 ~28 n-1 It is connected by a communication network and communicates with a plurality of other processors 29 0 to 29 n-1 via a communication path. The communication network includes a data bus 30 and bi-directional memory blocks 31 0 to 3 0 to 3 according to a netlist showing the coupling state of the processors 29 0 to 29 n-1.
A general-purpose switch 32 that switches the correspondence with 1 n-1 and a network controller 33 that controls the general-purpose switch 32.
Consists of. The communication is performed by a plurality of processors 29 that can be combined.
This is performed by writing in a plurality of bidirectional memory blocks 31 0 to 31 n-1 accessible only to 0 to 29 n-1 .
In addition, this communication network includes all the processors 29 0 to 29
The n-1 has the accessible shared memory 34, and the processors 29 0 to 29 n-1 can communicate with each other through the shared memory 34. It is assumed that the exclusive control at the hardware level in the communication between the processors 29 0 to 29 n-1 is automatically performed, and in terms of software, each of the processors 29 0 to 29 n-1 is a non-divided read / write. It is assumed that the cycle has a tas (Test and Set) instruction. FIG. 19 is an overall configuration diagram of a memory space (virtual space). The memory space is roughly divided into three parts (local memory space, shared memory space, I / O space). The local memory space is an area that can be accessed only by the corresponding processors 29 0 to 29 n−1 .
It exists for each of the processors 29 0 to 29 n-1 . Local memory space is further (may not be present depending on the processor 29 0 ~29 n-1) Processor 29 0 ~29 n-1 unique exception vector area, become PE binding information unit, from the user area. The shared memory space is an area accessible by all the processors 29 0 to 29 n−1 ,
Exclusive control is performed by the network controller 33, and only one processor 29 0 to 29 n-1 can access at the same time. The I / O space consists of many memory blocks, and each block can be accessed only by a specific set of processors. The exclusive control is performed by the network controller 33 in accordance with a net list indicating the connection state of the processors 29 0 to 29 n-1 . This area can be accessed simultaneously for each block. PE
The (processor) connection information section exists in the local memory space, and as shown in FIG. 20, the processors 29 0 to 29 n-1.
, A network type, a network parameter, the number of a processor with which the processor can communicate directly via I / O, its I / O address, and the like are stored. The user area is the processor 29 0 as shown in FIG.
To 29 only the area and the processor 29 0 through 29 n-1 to n-1 stores a program to be executed is composed of the area for storing data to be accessed. Since the exception vector area differs depending on the processors 29 0 to 29 n-1 , description of its structure is omitted. The I / O space is made up of 1 block of 16 bytes as shown in FIG. 22, through which a set of processors can communicate. One block further includes an attribute area, a transmission / reception buffer, and a spare area. Areas accessible by the processors 29 0 to 29 n-1 are a transmission / reception buffer and a spare area, and an attribute area is accessible only by the network controller 33.

【0070】以下、上記並列処理プログラムコンパイル
装置の主要な動作について、具体的な動作を説明する。 (具体的実施例1)再帰プロセスの非再帰化処理につい
て、下記数7に示すガウス関数を含む不定積分値を求め
る手続きIntGauss( ) の非再帰化処理を用いて
説明する。
Specific operations of the main operation of the parallel processing program compiling apparatus will be described below. (Specific Example 1) The non-recursive process of the recursive process will be described by using the non-recursive process of IntGauss (), which is a procedure for obtaining an indefinite integral value including a Gaussian function shown in Expression 7 below.

【0071】[0071]

【数7】 [Equation 7]

【0072】不定積分値Gm は、mの偶数・奇数によ
り、下記数8のように2つの場合に分かれる。
The indefinite integral value G m is divided into two cases as shown in the following equation 8 depending on whether m is an even number or an odd number.

【0073】[0073]

【数8】 [Equation 8]

【0074】ここで、上記数8の値は下記数9〜数11
により計算できる。
Here, the value of the above expression 8 is the following expression 9 to expression 11
Can be calculated by

【0075】[0075]

【数9】 [Equation 9]

【0076】[0076]

【数10】 [Equation 10]

【0077】[0077]

【数11】 [Equation 11]

【0078】Gm の値を求める手続きをIntGaus
s( ) 、En の値を求める手続きをIntEGauss
( ) 、On の値を求める手続きをIntOGauss
( ) 、On の積分値を求める手続きをIntIOGau
ss( ) とすると、プログラムは図23〜図26のよう
になる。なお図24の網かけ部分は並列実行文である。
手続きIntEGauss( ) において、手続きInt
OGauss( ) および手続きIntIOGauss
( ) は並列実行文中で呼び出されているため、プロセス
である。さらに、手続きIntOGauss( ) は手続
きIntEGauss( ) を呼び出しているため、手続
きIntEGauss( ) は再帰手続きである。したが
って、手続きIntEGauss( ) は再帰プロセスで
ある。
The procedure for obtaining the value of G m is IntGaus.
s (), IntEGauss a procedure for determining the value of E n
(), IntOGauss a procedure for determining the value of O n
(), IntIOGau procedures for obtaining the integral value of O n
If ss (), the program becomes as shown in FIGS. The shaded portion in FIG. 24 is a parallel execution statement.
In the procedure IntEGauss (), the procedure Int
OGauss () and procedure IntIOGauss
() Is a process because it is called in the parallel execution statement. Further, since the procedure IntOGauss () calls the procedure IntEGauss (), the procedure IntEGauss () is a recursive procedure. Therefore, the procedure IntEGauss () is a recursive process.

【0079】再帰プロセスに対する非再帰化処理は、下
記(1)(2)の原理に基づいて行う。 (1)再帰プロセスAの並列実行文を順次実行文とした
手続きA’を新たに生成する。 (2)再帰プロセスAから呼び出される手続きに対し
て、再帰プロセスAを呼び出す手続き名をすべてA’に
変更する。
The non-recursive process for the recursive process is performed based on the following principles (1) and (2). (1) A procedure A ′ is newly generated in which the parallel execution statements of the recursive process A are sequentially executed statements. (2) For the procedure called from the recursive process A, all the procedure names that call the recursive process A are changed to A '.

【0080】すなわち、非再帰化処理後の手続きInt
EGauss( ) は図27のようになる。また新たに生
成された手続きIntEGauss1( ) を図28に示
し、修正された手続きIntOGauss( ) を図29
に示す。なお図29において網かけ部分は変更箇所を示
す。 (具体的実施例2)機能分割からネットワークの決定ま
での処理について、図30のプログラムのように高速フ
ーリエ変換におけるバタフライ演算を実行する手続きc
alcを用いて説明する。なお、この例では再帰プロセ
スは存在せず、また、全ての手続きは1ループ化されて
いるため、再帰プロセスの非再帰化処理および1ループ
化処理を行う必要がないので、説明を省略する。
That is, the procedure Int after the non-recursive processing
EGaus () is as shown in FIG. FIG. 28 shows the newly generated procedure IntEGGauss1 (), and FIG. 29 shows the modified procedure IntOGauss ().
Shown in. 29. In FIG. 29, the shaded portion shows the changed portion. (Specific Example 2) Regarding the processing from function division to network determination, a procedure c for executing a butterfly operation in the fast Fourier transform as in the program of FIG. 30.
A description will be given using alc. In this example, there is no recursive process, and all procedures are in one loop, so it is not necessary to perform the non-recursive process and the one-loop process of the recursive process, and therefore the description thereof is omitted.

【0081】(1)分割処理 図30のプログラムからは図31のようなフローグラフ
が得られる。このフローグラフの節は各実行文を表し、
複数の分岐すなわち破線で囲んだ部分は並列実行を表
す。分割処理を施した結果、図32のようなフローグラ
フになる。 (2)同期機構・通信プロトコルの発生処理 変数の分類処理による手続きcalcに対する変数の分
類結果は、図33のようになる。変数yre,yim,
xre,ximは、この手続き中では独立した変数であ
るが、手続きcalcを呼び出している手続きcfft
中ではどちらも変数zre,zimであるため、この両
者は同一変数として扱われる。したがって、変数yr
e,yim,xre,ximは中継変数となる。続い
て、分類結果を基に孤立変数以外の全ての変数に対し
て、同期変数を発生させ、通信変数とする。このように
して得られた通信変数を図34に示す。また、同期機構
・通信プロトコルの発生処理後のプログラムの処理実行
部分を図35〜図38に示す。なお図35〜図38にお
いて、網かけ部分は並列処理プログラムコンパイル装置
3の機能分割手段7の剥離処理手段11により生成され
た同期機構・通信プロトコルを表す。
(1) Division processing A flow graph as shown in FIG. 31 is obtained from the program shown in FIG. This flow graph section represents each executable statement,
A plurality of branches, that is, a part surrounded by a broken line represents parallel execution. As a result of the division processing, a flow graph as shown in FIG. 32 is obtained. (2) Synchronous mechanism / communication protocol generation process The variable classification result for the procedure calc by the variable classification process is as shown in FIG. Variables yre, yim,
xre and xim are independent variables in this procedure, but the procedure cfft calling the procedure calc
Since both are variables zre and zim in the inside, both are treated as the same variable. Therefore, the variable yr
e, yim, xre, and xim are relay variables. Then, based on the classification result, a synchronization variable is generated for all variables other than the isolated variable and used as communication variables. The communication variables obtained in this way are shown in FIG. The processing execution part of the program after the generation processing of the synchronization mechanism / communication protocol is shown in FIGS. 35 to 38, the shaded portion represents the synchronization mechanism / communication protocol generated by the separation processing means 11 of the function dividing means 7 of the parallel processing program compiling device 3.

【0082】(3)非分割集合の手続き化処理およびイ
ンライン展開処理 同期機構・通信プロトコルの発生が行われた後、この集
合を処理実行部とする手続きを生成する。そして、この
手続きcalcに対してインライン展開処理が実行され
る。 (4)ネットワークの決定 ネットワークの決定に必要な結合力分布を求めるため
に、シミュレータ2により再度シミュレーションを行
う。シミュレーションの結果得られた結合力行列を図3
9に示し、これにより作成された結合力分布を図40に
示す。なお図39において、P0はシステム全体の管
理、P1〜P7は三角関数表作成、P8〜P11はバタ
フライ演算、P12〜P14はビットリバース演算であ
る。この結合力分布から、結合力が8以上(図39中*
印部)のプロセッサの組(ネット)については直接結合
し、これをネットワークとする。この結果として得られ
たネットワークを図41にグラフの形で示す。このグラ
フの節はプロセッサを表し、実線の枝は通信路を表す。
また破線の枝は、直接は結合していないが通信を行って
いること、つまり、これらの間の通信には第3のプロセ
ッサが必要であることを表す。
(3) Procedural processing and inline expansion processing of non-divided set After the generation of the synchronization mechanism / communication protocol, a procedure having this set as a process execution unit is generated. Then, inline expansion processing is executed for this procedure calc. (4) Network determination In order to obtain the cohesive force distribution necessary for network determination, the simulator 2 performs simulation again. The binding force matrix obtained as a result of the simulation is shown in FIG.
9 and the binding force distribution created thereby is shown in FIG. In FIG. 39, P0 is management of the entire system, P1 to P7 are trigonometric table creation, P8 to P11 are butterfly operations, and P12 to P14 are bit reverse operations. From this binding force distribution, the binding force is 8 or more (*
The set of processors (indicated by the mark) is directly connected to form a network. The resulting network is shown in graphical form in FIG. The nodes of this graph represent processors, and the solid line branches represent communication paths.
Moreover, the broken line branch indicates that communication is performed although not directly coupled, that is, that a third processor is required for communication between these.

【0083】なお上記実施例では、プロセッサ同士を直
接結合する範囲を決定するに際して、通信の必要なプロ
セッサ同士が直接あるいは間接的にすべて結合される最
大の結合力を基準にしたが、この基準になる結合力は入
力手段1を用いて設計者がもっと小さい値を設定できる
ように構成してもよい。また上記実施例では、必ず1ル
ープ化処理を実行するように構成したが、1ループ化処
理は設計者が入力手段1を用いて指示した場合にのみ実
行するように構成してもよい。
In the above embodiment, when determining the range in which the processors are directly coupled, the maximum coupling force with which all the processors that need communication are directly or indirectly coupled is used as a standard. The binding force may be configured so that the designer can set a smaller value by using the input means 1. Further, in the above embodiment, the one-loop processing is always executed, but the one-loop processing may be executed only when the designer gives an instruction using the input means 1.

【0084】[0084]

【発明の効果】以上説明したように本発明によれば、同
時に実行する処理をまとめた並列実行文を含む高水準言
語による並列処理プログラムを複数の各プロセッサ単位
のプログラムに変換する機能分割手段と、この機能分割
手段による変換結果に基づいて必要なプロセッサの数と
プロセッサ間のネットワークとを決定する決定手段と、
機能分割手段により変換された各プロセッサ単位のプロ
グラムを命令コードに変換する命令コード生成手段とを
設けたので、各プロセッサ毎の処理を自動的に生成でき
ることから、効率のよい並列処理システムを容易に設計
できる。また各プロセッサの同期待ちを自動的に生成で
きることから、デッドロックの発生がなく、確実な動作
の並列処理システムを迅速に設計できる。また各プロセ
ッサ間の通信網をプログラムの性質を考慮して自動的に
生成できることから、効率のよい並列処理システムを容
易に設計できるという優れた効果を奏する。
As described above, according to the present invention, a function dividing means for converting a parallel processing program in a high-level language including a parallel execution statement in which processings to be executed simultaneously are converted into a program for each processor unit. Deciding means for deciding the number of required processors and a network between the processors based on the conversion result by the function dividing means
Since the instruction code generating means for converting the program for each processor converted by the function dividing means into the instruction code is provided, the processing for each processor can be automatically generated, so that an efficient parallel processing system can be easily realized. Can be designed. In addition, since the synchronization wait of each processor can be automatically generated, a deadlock does not occur, and a parallel processing system with reliable operation can be quickly designed. In addition, since the communication network between the processors can be automatically generated in consideration of the characteristics of the program, it is possible to easily design an efficient parallel processing system.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の一実施例における並列処理プログラム
コンパイル装置を備えた並列処理システム設計支援装置
の概略構成図である。
FIG. 1 is a schematic configuration diagram of a parallel processing system design support apparatus including a parallel processing program compiling apparatus according to an embodiment of the present invention.

【図2】並列処理プログラムコンパイル装置の構成図で
ある。
FIG. 2 is a configuration diagram of a parallel processing program compiling device.

【図3】シミュレータの構成図である。FIG. 3 is a configuration diagram of a simulator.

【図4】マルチプロセッサシミュレータの構成図であ
る。
FIG. 4 is a configuration diagram of a multiprocessor simulator.

【図5】PDL記述によるプロセスモデルのフローグラ
フである。
FIG. 5 is a flow graph of a process model by PDL description.

【図6】剥離処理後のプロセスモデルのフローグラフで
ある。
FIG. 6 is a flow graph of a process model after peeling processing.

【図7】字句解析手段の動作説明図である。FIG. 7 is an operation explanatory diagram of lexical analysis means.

【図8】構文解析手段の動作説明図である。FIG. 8 is an operation explanatory diagram of the syntax analysis unit.

【図9】実行手段の動作説明図である。FIG. 9 is a diagram for explaining the operation of the executing means.

【図10】データ生成手段の動作説明図である。FIG. 10 is a diagram illustrating the operation of the data generating means.

【図11】非再帰化処理前後のプロセスモデルのフロー
グラフである。
FIG. 11 is a flow graph of a process model before and after non-recursive processing.

【図12】切換手段の動作説明図である。FIG. 12 is a diagram for explaining the operation of the switching means.

【図13】切換手段の動作を説明するためのフローチャ
ートである。
FIG. 13 is a flowchart for explaining the operation of the switching means.

【図14】マルチプロセッサシミュレータにより実現可
能なネットワークの構成図である。
FIG. 14 is a configuration diagram of a network that can be realized by a multiprocessor simulator.

【図15】スケジューラ手段の動作説明図である。FIG. 15 is a diagram for explaining the operation of the scheduler means.

【図16】プロセッサエミュレーション手段の動作説明
図である。
FIG. 16 is an operation explanatory diagram of a processor emulation means.

【図17】スケジューラ手段の動作説明図である。FIG. 17 is a diagram for explaining the operation of the scheduler means.

【図18】並列処理プロセッサの実モデルの構成図であ
る。
FIG. 18 is a configuration diagram of an actual model of a parallel processing processor.

【図19】仮想空間の構成図である。FIG. 19 is a configuration diagram of a virtual space.

【図20】PE結合情報部の構成図である。FIG. 20 is a configuration diagram of a PE connection information part.

【図21】ユーザ領域の構成図である。FIG. 21 is a configuration diagram of a user area.

【図22】I/O空間の構成図である。FIG. 22 is a configuration diagram of an I / O space.

【図23】PDL記述によるプログラムの説明図であ
る。
FIG. 23 is an explanatory diagram of a program in PDL description.

【図24】PDL記述によるプログラムの説明図であ
る。
FIG. 24 is an explanatory diagram of a program in PDL description.

【図25】PDL記述によるプログラムの説明図であ
る。
FIG. 25 is an explanatory diagram of a program in PDL description.

【図26】PDL記述によるプログラムの説明図であ
る。
FIG. 26 is an explanatory diagram of a program in PDL description.

【図27】非再帰化処理後のプログラムの説明図であ
る。
FIG. 27 is an explanatory diagram of a program after the non-recursive process.

【図28】非再帰化処理後のプログラムの説明図であ
る。
FIG. 28 is an explanatory diagram of a program after non-recursive processing.

【図29】非再帰化処理後のプログラムの説明図であ
る。
FIG. 29 is an explanatory diagram of a program after the non-recursive process.

【図30】PDL記述によるプログラムの説明図であ
る。
FIG. 30 is an explanatory diagram of a program in PDL description.

【図31】PDL記述によるプロセスモデルのフローグ
ラフである。
FIG. 31 is a flow graph of a process model based on PDL description.

【図32】分割処理後のプロセスモデルのフローグラフ
である。
FIG. 32 is a flow graph of a process model after division processing.

【図33】変数の分類結果の説明図である。FIG. 33 is an explanatory diagram of a variable classification result.

【図34】通信変数の説明図である。FIG. 34 is an explanatory diagram of communication variables.

【図35】同期機構・通信プロトコルを埋め込んだプロ
グラムの説明図である。
FIG. 35 is an explanatory diagram of a program in which a synchronization mechanism / communication protocol is embedded.

【図36】同期機構・通信プロトコルを埋め込んだプロ
グラムの説明図である。
FIG. 36 is an explanatory diagram of a program in which a synchronization mechanism / communication protocol is embedded.

【図37】同期機構・通信プロトコルを埋め込んだプロ
グラムの説明図である。
FIG. 37 is an explanatory diagram of a program in which a synchronization mechanism / communication protocol is embedded.

【図38】同期機構・通信プロトコルを埋め込んだプロ
グラムの説明図である。
FIG. 38 is an explanatory diagram of a program in which a synchronization mechanism / communication protocol is embedded.

【図39】結合力行列の説明図である。FIG. 39 is an explanatory diagram of a binding force matrix.

【図40】結合力分布の説明図である。FIG. 40 is an explanatory diagram of a bond strength distribution.

【図41】ネットワークの説明図である。FIG. 41 is an explanatory diagram of a network.

【符号の説明】[Explanation of symbols]

3 並列処理プログラムコンパイル装置 7 機能分割手段 8 プロセッサ台数・結合方式決定手段 9 コード生成手段 3 parallel processing program compiling device 7 function dividing means 8 number of processors / coupling method determining means 9 code generating means

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】 同時に実行する処理をまとめた並列実行
文を含む高水準言語による並列処理プログラムを複数の
各プロセッサ単位のプログラムに変換する機能分割手段
と、この機能分割手段による変換結果に基づいて必要な
プロセッサの数とプロセッサ間のネットワークとを決定
する決定手段と、前記機能分割手段により変換された各
プロセッサ単位のプログラムを命令コードに変換する命
令コード生成手段とを設けたことを特徴とする並列処理
プログラムコンパイル装置。
1. A function division means for converting a parallel processing program in a high-level language including a parallel execution statement in which processing to be executed simultaneously is converted into a program for each of a plurality of processors, and based on a conversion result by the function division means. A determining means for determining the required number of processors and a network between the processors, and an instruction code generating means for converting a program for each processor converted by the function dividing means into an instruction code are provided. Parallel processing program compiling device.
JP24957391A 1991-09-27 1991-09-27 Parallel processing program compilation device Expired - Fee Related JP3246668B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24957391A JP3246668B2 (en) 1991-09-27 1991-09-27 Parallel processing program compilation device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24957391A JP3246668B2 (en) 1991-09-27 1991-09-27 Parallel processing program compilation device

Publications (2)

Publication Number Publication Date
JPH0588910A true JPH0588910A (en) 1993-04-09
JP3246668B2 JP3246668B2 (en) 2002-01-15

Family

ID=17195018

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24957391A Expired - Fee Related JP3246668B2 (en) 1991-09-27 1991-09-27 Parallel processing program compilation device

Country Status (1)

Country Link
JP (1) JP3246668B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516481B2 (en) 2003-12-05 2009-04-07 International Business Machines Corporation Program development supporting apparatus, method, program and recording medium
CN111814415A (en) * 2020-07-09 2020-10-23 长沙海格北斗信息技术有限公司 Efficient regression testing method for chip verification

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516481B2 (en) 2003-12-05 2009-04-07 International Business Machines Corporation Program development supporting apparatus, method, program and recording medium
CN111814415A (en) * 2020-07-09 2020-10-23 长沙海格北斗信息技术有限公司 Efficient regression testing method for chip verification

Also Published As

Publication number Publication date
JP3246668B2 (en) 2002-01-15

Similar Documents

Publication Publication Date Title
Herrera et al. Systematic embedded software generation from SystemC
US9367658B2 (en) Method and apparatus for designing and generating a stream processor
US20080294411A1 (en) Systems and Methods for Logic Verification
Gajski et al. Essential issues in codesign
JP2001202397A (en) Architecture design supporting system for system-on-chip and architecture generating method
JPH11513512A (en) Method of manufacturing digital signal processor
US6067415A (en) System for assisting a programmer find errors in concurrent programs
Williamson et al. Synthesis of parallel hardware implementations from synchronous dataflow graph specifications
JPH10171848A (en) Method for designing architecture system
US7496869B1 (en) Method and apparatus for implementing a program language description of a circuit design for an integrated circuit
US8041551B1 (en) Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
JPH0588912A (en) Multiprocessor simulator
US20230116546A1 (en) Method for compilation, electronic device and storage medium
US9223910B1 (en) Performance and memory efficient modeling of HDL ports for simulation
JP3246668B2 (en) Parallel processing program compilation device
JP2927583B2 (en) Parallel processing programming simulator
US6853968B2 (en) Simulation of data processing apparatus
JP3311761B2 (en) Parallel processing program simulator
Pino et al. Interface synthesis in heterogeneous system-Level DSP design tools
JP2004021907A (en) Simulation system for performance evaluation
JPH08180094A (en) Architecture simulator
US20020170037A1 (en) Apparatus and method for controlling event ordering in a mixed- language simulator
JP2007018313A (en) Circuit design program, circuit design device and circuit design method
KR101099491B1 (en) Method for analyzing power consumption
JPH09237191A (en) Programming supporting device, programming supporting method and medium recording programming supporting program

Legal Events

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