JPH04329472A - 並列実行命令列生成方式 - Google Patents

並列実行命令列生成方式

Info

Publication number
JPH04329472A
JPH04329472A JP12849891A JP12849891A JPH04329472A JP H04329472 A JPH04329472 A JP H04329472A JP 12849891 A JP12849891 A JP 12849891A JP 12849891 A JP12849891 A JP 12849891A JP H04329472 A JPH04329472 A JP H04329472A
Authority
JP
Japan
Prior art keywords
vector
loop
executed
clause
instruction string
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
JP12849891A
Other languages
English (en)
Other versions
JP2870218B2 (ja
Inventor
Yoshiki Senoo
妹尾 義樹
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP12849891A priority Critical patent/JP2870218B2/ja
Publication of JPH04329472A publication Critical patent/JPH04329472A/ja
Application granted granted Critical
Publication of JP2870218B2 publication Critical patent/JP2870218B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は並列実行命令列生成方式
に関し、特に高級言語で記述されたソースプログラムか
らオブジェクトプログラムを生成するコンパイラの自動
ベクトル化技術および自動並列化技術に係わる並列実行
命令列生成方式に関する。
【0002】
【従来の技術】従来のCRAY−XMPに代表されるベ
クトル型のマルチプロセッサにおいては、IF文を含む
ループがあった場合に、ベクトル実行及び並列実行が可
能であるとコンパイラが判断すれば、単一のループを複
数のプロセッサでベクトル実行するオブジェクトコード
をコンパイラが生成する事ができる。この際に、たとえ
ばN回の繰り返しを有するループを2台のプロセッサで
実行させるコードを生成する場合にはNを機械的に2等
分して(Nが奇数の場合には一方が他方より1多い)、
それぞれをベクトル実行するコードを生成する。この際
のベクトル実行は通常のIF文のベクトル化と同様の方
法を用いる。図5に例を示す。Iの値が1から200ま
で実行されるFORTRAN言語で記述されたDOルー
プがについて、Iが1から100までの繰り返しをプロ
セッサ#1で、Iが101から200までの繰り返しを
プロセッサで実行するオブジェクトコードが生成される
。実行の様子を説明するためにオブジェクトコードの構
成がFORTRAN言語の実行イメージで記述してある
。この際に各プロセッサで実行されるコードはそれぞれ
ループ長100で実行されるベクトル命令列として生成
される。IF文は通常はマスク命令を用いて実行される
。機種とIF文の形態によってはベクトル収集/拡散命
令を用いてIF文を実行するオブジェクトコードが生成
される場合もある。IF文がマスク命令により実現され
た場合のプロセッサ#1で実行されるオブジェクト命令
列の例を図6に示す。
【0003】
【発明が解決しようとする課題】上記のようなベクトル
化及び並列化を行うオブジェクトコードを生成した場合
には、その実行において、全体の繰り返し回数を2つに
分けて2台のプロセッサで実行するために、各プロセッ
サで実行するベクトル長が短くなるという問題点がある
。図5の例では、ソースコードにおけるベクトル長が2
00であるにもかかわらず、各プロセッサで実行される
ベクトル長は100となっている。
【0004】
【課題を解決するための手段】本発明の並列実行命令列
生成方式は、ベクトル命令の実行が可能な複数のプロセ
ッサを有する電子計算機システムにおいて、高級言語で
記述されたソースプログラムより、オブジェクトプログ
ラムを生成するコンパイラにおいて、ある条件1が成立
すればステートメント集合2を実行し、そうでなければ
ステートメント集合3を実行するIF〜THEN〜EL
SE型の条件実行ブロックを含むベクトル実行可能なル
ープに対して、前記ループに、ループの繰り返し間にま
たがるデータ依存関係がなく、ループの各繰り返しが並
列実行可能であることを判定する並列化判定手段4と、
前記条件1が成立して、前記ステートメント集合2を実
行するループの繰り返しを選択して、ベクトル実行する
ベクトル命令列5を生成するベクトル命令列生成手段6
と、前記条件1が成立せずに、前記ステートメント集合
3を実行するループの繰り返しを選択して、ベクトル実
行するベクトル命令列7を生成するベクトル命令列生成
手段8と、前記ベクトル命令列5と、前記ベクトル命令
列6とを並列に別プロセッサで実行させる並列実行制御
命令列9を生成する並列実行制御命令列生成手段10と
、を有する。
【0005】
【作用】ある条件1が成立すればステートメント集合2
を実行し、そうでなければステートメント集合3を実行
するIF〜THEN〜ELSE型の条件実行ブロックを
含むベクトル実行可能なループに対して、前記条件1が
成立する場合のループ繰り返しとそうでない場合の繰り
返しとを別々のプロセッサでベクトル実行する命令列を
生成する。
【0006】
【実施例】次に、本発明について図面を参照して説明す
る。図1は、本発明の並列実行命令列生成方式の一実施
例の構成を示すブロック図である。本実施例の並列実行
命令列生成方式は、IF〜THEN〜ELSEブロック
を有しかつベクトル実行が可能なループを含み高級言語
で記述されたソースプログラム1と、コンパイラ2と、
オブジェクトコードである命令列からなるオブジェクト
プログラム3とから構成されている。
【0007】コンパイラ2はベクトル命令列生成部21
と並列実行可能性判定部22とTHEN節命令列生成部
23とELSE節命令列選択部24と並列実行制御命令
列選択部25とを含んで構成されている。
【0008】またオブジェクトプログラム3は並列実行
制御命令列とTHEN節命令列とELSE節命令列とを
含んで構成される。
【0009】次に、このように構成された本実施例の並
列実行命令列生成方式の動作について説明する。
【0010】コンパイラ2によってソースプログラム1
が読み込まれると、ソースプログラム1中のIF〜TH
EN〜ELSE型の条件実行ブロックを含むベクトル化
可能なループに対して、並列実行可能性判定部22によ
って、ループの繰り返し間にデータ依存関係がなく、ル
ープの各繰り返しが並列実行可能であるかどうかが判定
される。並列実行が可能であれば、ベクトル命令生成部
21によって単一プロセッサのためのコード生成と同様
の方法でベクトル実行命令列が生成される。ただし、こ
のベクトル実行命令列はベクトル実行オブジェクトを生
成する前段階の中間テキストであり、レジスタ割当や各
種最適化はまだ施されていないものであるとする。
【0011】次に、THEN節命令列選択部23によっ
て、上記ベクトル実行命令列を、THEN節を実行し、
ELSE節は実行しないように最構成し、ベクトル化さ
れたTHEN節命令列32が生成される。
【0012】さらに、ELSE節命令列選択部24によ
って、上記ベクトル実行命令列を、ELSE節を実行し
、THEN節は実行しないように最構成し、ベクトル化
されたELSE節命令列33が生成される。
【0013】最後に並列実行制御命令列生成部25によ
って、一方のプロセッサではTHEN節命令列を実行し
、他方のプロセッサではELSE節を実行するための制
御命令を並列に実行するための並列実行制御命令列31
が生成される。
【0014】例えば、コンパイラ2によって、図2に示
すようなFORTRAN言語で記述されたソースプログ
ラム11(図1ではソースプログラム1に対応する)中
に含まれるループ111からは、図3に示すような構造
のオブジェクトプログラム31が生成される。このオブ
ジェクトプログラムは2つのプロセッサの両方にロード
され、両方のプロセッサで並列に実行される。
【0015】図3において、並列実行制御命令列31は
、同一オブジェクトコードを実行する2つのプロセッサ
において、それぞれのプロセッサに別の処理をさせるた
めの制御を行う部分であり、この例ではP#がそれぞれ
のプロセッサの識別番号(1or2)を保持しているも
のとする。この並列実行制御命令列31によってP#の
値が1のプロセッサはTHEN節命令列を、P#の値が
2つのプロセッサはELSE節命令列を実行するように
制御できる。
【0016】図4にTHEN節命令列とELSE節命令
列のオブジェクトプログラムの構造を示す。THEN節
命令列はIF文で示される論理式を評価し、論理式が真
である場合に対応するマスクを生成し、このマスクを用
いてTHEN節の命令列をマスク演算によりベクトル実
行する命令列である。ELSE節命令列はIF文で示さ
れる論理式を評価し、論理式が偽である場合に対応する
マスクを生成し、このマスクを用いてELSE節の命令
列をマスク演算によりベクトル実行する命令列である。
【0017】この例ではループ回転数(ベクトル長)が
200のループに対して、ベクトル長を200に保った
まま並列実行するオブジェクトコードが生成されている
【0018】
【発明の効果】以上説明したように本発明の並列実行命
令列生成方式は、ベクトル命令の実行が可能な複数のプ
ロセッサを有する電子計算機システムにおいて、高級言
語で記述されたソースプログラムより、オブジェクトプ
ログラムを生成するコンパイラにおいて、ある条件1が
成立すればステートメント集合2を実行し、そうでなけ
ればステートメント集合3を実行するIF〜THEN〜
ELSE型の条件実行ブロックを含むベクトル実行可能
なループに対して、前記ループに、ループの繰り返し間
にまたがるデータ依存関係がなく、ループの各繰り返し
が並列実行可能であることを判定する並列化判定手段4
と、前記条件1が成立して、前記ステートメント集合2
を実行するループの繰り返しを選択して、ベクトル実行
するベクトル命令列5を生成するベクトル命令列生成手
段6と、前記条件1が成立せずに、前記ステートメント
集合3を実行するループの繰り返しを選択して、ベクト
ル実行するベクトル命令列7を生成するベクトル命令列
生成手段8と、前記ベクトル命令列5と、前記ベクトル
命令列6とを並列に別プロセッサで実行させる並列実行
制御命令列9を生成する並列実行制御命令列生成手段1
0と、を設けることにより、ベクトル長を短くすること
なしにIF〜THEN〜ELSE型の条件ブロックを並
列実行できるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の構成を示すブロック図。
【図2】図1中のソースプログラムにおけるループの一
例を示す図。
【図3】図2に示すソースプログラムから図1のコンパ
イラにより生成されるオブジェクトプログラムの構成を
示す図。
【図4】本発明の一実施例により生成されたオブジェク
トコードの構成例を示す図。
【図5】従来方式による並列化例を示す図。
【図6】従来方式によるオブジェクトコードの構成例を
示す図。
【符号の説明】
1,11    ソースプログラム 2    コンパイラ 3    オブジェクトプログラム 21  ベクトル命令列生成部 22  並列実行可能性判定部 23  THEN節命令列生成部 24  ELSE節命令列生成部 25  並列実行制御命令列生成部 31  並列実行制御命令列 32  THEN節命令列 33  ELSE節命令列 111  IF〜THEN〜ELSE条件ブロックを含
むループ例

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  ベクトル命令の実行が可能な複数のプ
    ロセッサを有する電子計算機システムにおいて、高級言
    語で記述されたソースプログラムよりオブジェクトプロ
    グラムを生成するコンパイラにおいて、ある条件1が成
    立すればステートメント集合2を実行し、そうでなけれ
    ばステートメント集合3を実行するIF〜THEN〜E
    LSE型の条件実行ブロックを含むベクトル実行可能な
    ループに対して、前記ループに、ループの繰り返し間に
    またがるデータ依存関係がなく、ループの各繰り返しが
    並列実行可能であることを判定する並列化判定手段4と
    、前記条件1が成立して、前記ステートメント集合2を
    実行するループの繰り返しを選択して、ベクトル実行す
    るベクトル命令列5を生成するベクトル命令列生成手段
    6と、前記条件1が成立せずに、前記ステートメント集
    合3を実行するループの繰り返しを選択して、ベクトル
    実行するベクトル命令列7を生成するベクトル命令列生
    成手段8と、前記ベクトル命令列5と、前記ベクトル命
    令列6とを並列に別プロセッサで実行させる並列実行制
    御命令列9を生成する並列実行制御命令列生成手段10
    と、を有することによって、前記条件1が成立する場合
    のループ繰り返しとそうでない場合の繰り返しとを別々
    のプロセッサでベクトル実行する命令列を生成すること
    を特徴とする並列実行命令列生成方式。
JP12849891A 1991-04-30 1991-04-30 並列実行命令列生成方式 Expired - Fee Related JP2870218B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12849891A JP2870218B2 (ja) 1991-04-30 1991-04-30 並列実行命令列生成方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12849891A JP2870218B2 (ja) 1991-04-30 1991-04-30 並列実行命令列生成方式

Publications (2)

Publication Number Publication Date
JPH04329472A true JPH04329472A (ja) 1992-11-18
JP2870218B2 JP2870218B2 (ja) 1999-03-17

Family

ID=14986231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12849891A Expired - Fee Related JP2870218B2 (ja) 1991-04-30 1991-04-30 並列実行命令列生成方式

Country Status (1)

Country Link
JP (1) JP2870218B2 (ja)

Also Published As

Publication number Publication date
JP2870218B2 (ja) 1999-03-17

Similar Documents

Publication Publication Date Title
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
Dubey et al. Single-program speculative multithreading (SPSM) architecture: compiler-assisted fine-grained multithreading.
US9038042B2 (en) Staged loop instructions
US5710902A (en) Instruction dependency chain indentifier
US5317743A (en) System for compiling iterated loops based on the possibility of parallel execution
US6446258B1 (en) Interactive instruction scheduling and block ordering
JPH05143332A (ja) 命令スケジユーラを備えたコンピユータ・システム及び入力命令シーケンスを再スケジユールする方法
JPH01108638A (ja) 並列化コンパイル方式
Nguyen et al. Lazy sequentialization for the safety verification of unbounded concurrent programs
Yip et al. The ForeC synchronous deterministic parallel programming language for multicores
Kessler Scheduling expression DAGs for minimal register need
JP3179536B2 (ja) ディジタルコンピュータの操作方法
Kazi et al. Coarse-grained speculative execution in shared-memory multiprocessors
Marzulo et al. Talm: A hybrid execution model with distributed speculation support
US7073169B2 (en) Compiler device with branch instruction inserting unit
Nicolau et al. Realistic scheduling: compaction for pipelined architectures
KR20150040663A (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
JP2870218B2 (ja) 並列実行命令列生成方式
Littin et al. Block based execution and task level parallelism
Peiler Priority-based compilation of SCCharts
Waduge Taming Irregular Control-Flow with Targeted Compiler Transformations
Vandierendonck The Cilk and Cilk++ Programming Languages
Fürtler et al. SPOT—development tool for software pipeline optimization for VLIW-DSPs used in real-time image processing
von Hanxleden et al. A balanced code placement framework
Prokesh et al. A Strategy for Generating Time-Predictable Code

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19981201

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

Free format text: PAYMENT UNTIL: 20080108

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090108

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100108

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees