JPH01133138A - 並列計算機及びその制御方法 - Google Patents

並列計算機及びその制御方法

Info

Publication number
JPH01133138A
JPH01133138A JP62290711A JP29071187A JPH01133138A JP H01133138 A JPH01133138 A JP H01133138A JP 62290711 A JP62290711 A JP 62290711A JP 29071187 A JP29071187 A JP 29071187A JP H01133138 A JPH01133138 A JP H01133138A
Authority
JP
Japan
Prior art keywords
instruction
instructions
execution unit
elementary
sequence
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
JP62290711A
Other languages
English (en)
Other versions
JP2729795B2 (ja
Inventor
Hiroshi Watanabe
坦 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP62290711A priority Critical patent/JP2729795B2/ja
Publication of JPH01133138A publication Critical patent/JPH01133138A/ja
Application granted granted Critical
Publication of JP2729795B2 publication Critical patent/JP2729795B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

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

Description

【発明の詳細な説明】 [産業上の利用分野コ 本発明は、複数の処理ユニット又は機能ユニットを備え
てプログラムの諸部分を並列に実行する並列計算機と、
そのための並列化コンパイラに関し、特に、各処理ユニ
ットのための制御情報の集合が一つの命令語を形成する
型の並列計算機と、並列化を意識せずに作られたプログ
ムをこのような並列計算機のための命令語の列に変換す
るコンパイラに関する。
[従来の技術] 複数の機能ユニットを単一の命令が同時に制御し、それ
によりプログラムを並列に実行する型の並列計算機と、
そのための並列化コンパイラは、1986年The M
IT Press発行、 J、R,E11is著、「プ
ルドッグ:VLIVアーキテクチャのためのコンパイラ
」(Bulldog:A  Compiler  fo
r  VLIW  Architectures)で論
じられている。このVLIld型計算機では、各命令は
それぞれが一つの機能ユニットに対応付けられた固定数
のフィールドからなり、各フィールドが対応する機能ユ
ニットの動作を制御する。多数の機能ユニットがあるの
で、命令は非常に長く、ここからVLIりという名称(
Very LongInstruction ’Jor
d)が与えられている。複数の機能ユニットが共有する
レジスタバンクを設けることも示唆されている。
この型の並列計算機に対しては、各機能ユニットがいつ
動作し、データ転送がどこからどこへいつ行なわれるべ
きかを、逐一明示的にプログラムしなければならない。
このようなプログラムを人手で作成するのは極めて困難
であり、したがって。
効率良く並列化を行なえるコンパイラを用意することが
不可欠である。前記VLIW型計算機のためのコンパイ
ラは、トレーススケジューリングと呼ばれる方法を用い
て、大域的なフロー解析と実行頻度予測を行ない、中間
コードプログラム中の多数の基本ブロックの連鎖、すな
わちトレースの内部での並列化を行ない、それにより、
非常に高度な並列化を達成する。
[発明が解決しようとする問題点コ 前記のVLIW計算機では、各命令がそれぞれ各機能ユ
ニットに固定的に対応付けられた一定数のフィールドか
らなるため、命令が非常に長く、しかも、実際に同時に
動作する機能ユニットの個数に関係なく、すなわち、同
時に実行しうる要素的演算が少ないためにいくつかの機
能ユニットが休止する場合でも、命令長は常に一定であ
る。その結果、プログラムが占める記憶領域が必要以上
に広くなり、かつ、命令列取出しのための総記憶アクセ
ス時間もそれに対応して増大する。
また、レジスタバンクは、諸機能ユニットにより共有さ
れるので、それへのアクセス競合が処理の遅れを生じる
ことのないように、レジスタバンクへのアクセス回数を
減らすことが望ましい。
更に、VLIlil計算機用のコンパイラでは、高度な
並列化の達成のためのトレーススケジューリングが、コ
ンパイラを複雑化し、かつ、コンパイル時間を長くして
いる。しかし、実用上はそれほど高度な並列化を必要と
しない場合が多く、そのような場合には、もっと単純で
、しかも効率のよいコンパイラが望ましい。
本発明の主たる目的は、命令データ量を圧縮して、それ
により、プログラムのために必要な記憶領域と記憶アク
セス時間を削減することにある。
本発明の第2の目的は、共有レジスタ群へのアクセス回
数を減らし、それにより、処理の遅れを防止することに
ある。
本発明の第3の目的は、実用上多くの場合に充分な程度
の並列化を効率よく行なえるような、単純な構造のコン
パイラを提供することにある。
[問題点を解決するための手段] 命令データ量の圧縮のために、本発明の並列計算機には
、命令中の要素命令の実行ユニットへの分配を制御する
命令供給制御機構が設けられる。
この機構は、特定の要素命令(分配先指定要素命令)を
実行した実行ユニットによりその内部状態が設定され、
この内部状態に従って各命令中の要素命令を実行ユニッ
トに分配する。並列化コンパイラは、同時に実行しうる
複数の要素命令を併合して単一の命令を形成しつつ命令
列を生成する並列化過程において、要素命令数を異にす
る二つの命令が隣接する所に分配先指定要素命令を挿入
する。
好ましい実施例においては、共有されるレジスタファイ
ルのレジスタは相対番地により指定され、各実行ユニッ
トはアキュムレータを有し、並列化コンパイラは、並列
化過程において、任意多数の仮想実行ユニットを想定し
、実行ユニット内にデータを保持しておかねばならない
区間の要素命令列である断片的要素命令列を−っの仮想
実行ユニットに割り当てて、その後に、各仮想実行ユニ
ットを実在実行ユニットに割付ける。
[作用] 命令供給制御機構が指定する要素命令の分配先は、必要
に応じて命令中に置かれる分配先指定要素命令により変
更される。したがって、実際に実行すべき有意の要素命
令のみから各命令を構成し、実行すべき有意の要素命令
がない実行ユニットのためのフィールドを省略すること
ができる。その結果、固定数のフィールドからなる命令
を用いる従来装置に比して、命令データ量が圧縮される
また、実施例に採用されたレジスタの相対番地指定も、
各要素命令の長さを短縮し、それにより、命令データ量
の圧縮に寄与する。
実施例において、アキュムレータの設置は、レジスタか
ら取出したデータや中間演算結果を保持し、それにより
、レジスタファイルへのアクセス回数を低減する。更に
、コンパイラによる並列化過程において、任意多数の仮
想実行ユニットにそれぞれ断片的要素命令列を割当てて
、然る後に各仮想実行ユニットを実在実行ユニットに割
付ける手順は、要素命令列の生成と並列化を分離すると
ともに、並列化の手続きを簡明なものとし、それにより
、コンパイラの構造を単純化するとともに、並列化処理
の効率を改善する。
[実施例コ 第1図は、本発明による並列計算機の一実施例の構成を
示す。この計算機は、4台の同型の実行ユニット1,2
,3.4と、多数のレジスタからなり前記諸実行ユニッ
トにより共有されるレジスタファイル5を備える。これ
ら実行ユニットのそれぞれは、また、主記憶アクセス制
御機構6を介して、データの読出し又は書込みのために
主記憶7にアクセスすることができる。主記憶7は、ま
た、プログラムを保持する。命令シーケンス制御機構8
は、図示されていないが、プログラムカウンタと、プロ
グラムカウンタの値に基づいて主記憶7の読出位置を指
示する命令番地レジスタとを有し、プログラムを構成す
る相次ぐ命令を主記憶7から順次読出して、FIFo型
の命令バッファ9に格納する。各命令は、後で詳述する
ように。
一般に複数の要素命令からなり、これらの要素命令が異
なる実行ユニットで同時に実行される。命令供給器10
は、命令供給制御ベクトル11の指示の下に、命令バッ
ファ9から相次ぐ命令を順次読出して、各命令内の要素
命令を実行ユニット1〜4に分配する。
命令供給制御ベクトル11は、4ビツト長のレジスタで
あり、その各ビット位置はスロットと呼ばれ、第1ない
し第4スロツトは実行ユニット1ないし4への要素命令
の供給の要否を示す。すなわち、第にスロット(1≦に
≦4)は、その値が1の時に実行ユニットkに供給され
るべき要素命令があることを示し、その値がOの時に実
行ユニットkに供給されるべき要素命令力1ないことを
示す。命令供給制御ベクトル11の内容は、後で詳述す
るPROC命令を実行した実行ユニットにより、そのP
ROC命令が指定する値に設定され、それにより、命令
に含まれる要素命令の個数を、並列化の可能な要素命令
の個数に応じてダイナミックに変更することを可能にし
、その結果、固定数の要素命令からなる命令を使用する
従来装置と比較して、プログラムのためのデータ量、し
たがって、必要な記憶容量及び命令読出しのための記憶
アクセスが減少する。また、命令供給制御ベクトル11
は、初期状態設定時の他に、各種の分岐、副プログラム
の呼出しとそれからの復帰などの順序制御要素命令が、
いずれかの実行ユニットで実行されると、分岐が生じた
か否かにかかわりなく、予め定められた値(本実施例で
は1100)にリセットされる。この自動リセット機能
により、後述するように、分岐等の順序側後が関連する
プログラムを簡素化することができる。
実行ユニット1〜4のそれぞれは、図示されていないが
、命令解読・実行回路、アドレス計算器、算術・論理演
算器等を備え、通常の汎用プロセッサと同程度の命令レ
パートリを持つ。特に、各実行ユニットは、通常のプロ
セッサが必要とする各種レジスタとしてはレジスタファ
イル5を用いるけれども、アキュムレータ(Ace)は
内蔵しており、そこに演算結果又はレジスタファイル5
から読出したデータが保持されることにより、レジスタ
ファイル5への所要アクセス回数が削減される。
レジスタファイル5は、大きな容量を持ち、諸実行ユニ
ットからの中間結果や使用頻度の高いデータを保持する
のに主として使用され、それにより、主記憶7へのアク
セス回数を減らし、かつ、諸実行ユニット間の交信のた
めのオーバヘッドを削減する。レジスタファイル5は、
このような多数の汎用レジスタに加えて、スタックとス
タックポインタ、後述する相対番地のための領域レジス
タ群などの、特殊目的レジスタ群を含む。
要素命令のフォーマットの例を、第2図(a)。
(b)に示す。本実施例における各要素命令は、16ビ
ツトの固定長である。第2図(a)は、オペランドの番
地を指定する型の代表的な要素命令のフォーマットであ
る。大容量のレジスタファイルを短い要素命令で扱い、
それにより、プログラムのための記憶領域と記憶アクセ
ス時間を削減するために、相対番地が用いられる。7ビ
ツトのオペレータ部101は、演算種別、番地モードな
どを指定する。3ビツトの領域レジスタ部102は、レ
ジスタファイル5中で領域レジスタとして予め定められ
た複数(最大8個)のレジスタの一つを指定し、各領域
レジスタには、レジスタファイル5のある領域の先頭番
地、すなわち相対番地のためのベース番地が、然るべき
要素命令によって設定される。6ビツトの変位部103
は、前記先頭番地から所望番地までの変位を示す。した
がって、このフォーマットにおいては、指定されたレジ
スタ番地は、領域レジスタ部102で指定された領域レ
ジスタの内容と変位部1o3の値の和で与えられる。
多様な番地モードが用いられ、それらの一つがオペレー
タ部101により指定される。指定された番地モードに
従って、指定されたレジスタの内容又はこの内容が指す
レジスタか主記憶位置の内容、若しくは実行ユニット内
の値(Aceの内容)又はこの値が指すレジスタか主記
憶位置の内容等が。
オペランドとして処理される。順序制御要素命令につい
ては、実行ユニット内の値又は指定されたレジスタの内
容、若しくはこの値又は内容と当該命令の番地の和が、
分岐先番地を与える。更に。
即値番地(immediate address)のた
めに、第2図(b)のフォーマットが用いられる。この
フォーマットは、領域レジスタ部と変位部の代りに、そ
れ自体がオペランドとして扱われる9ビツトの即値オペ
ランド部104を持つ。この番地モードの採用も、レジ
スタファイル5へのアクセス回数の削減に寄与する。
平行して実行しつる複数の要素命令が一個の命令を構成
し、このような命令の列がプログラムを形成する。第2
図(C)は命令列の一例を示す。
図において、IJK (J =1+ 2.3.・・・;
1≦に≦4)は、第1ステツプにおいて第に実行ユニッ
トにより実行されるべき要素命令を表し、一つの行、す
なわち同一ステップにおいて実行されるべき要素命令群
が、一つの命令を構成する。例えば。
第1ステツプでは、第1ないし第4実行ユニットのすべ
てに要素命令が供給される。第2ステツプでは、第1、
第2及び第3実行ユニットには要素命令が供給されるが
、第4実行ユニットは、要素命令の供給を受けず、した
がって、以前の内部状態を維持する。
実際には、主記憶7及び命令バッファ9の内部において
、第2図(Q)に示されるような、各命令が分離・[f
された配置が実現されているわけではなく、すべての要
素命令が間隙なく詰込まれている。命令シーケンス制御
機構8は、命令バッファ9に一定量の空所が生じると、
そこに入るだけの要素命令列を主記憶7からそこへ読出
し、命令供給器10は、命令供給制御ベクトル11が示
す個数の要素命令を命令バッファ9の先頭から読出して
、それらを命令供給制御ベクトル11が指す実行ユニッ
ト(1〜4)に順番に供給する。要素命令を受けた各実
行ユニットは、その実行を終了すると、命令シーケンス
制御機構8に終了信号を送り、命令シーケンス制御機構
8は、命令供給制御ベクトルが示すすべての実行ユニッ
トから終了信号を受けると1図示されていないプログラ
ムカウンタを歩進させるとともに、命令供給器1゜に次
の命令の読出しを指示する6 ある実行ユニットで分岐等の順序制御要素命令が実行さ
れると、その結果が命令シーケンス制御機構8に報告さ
れて1図示されていないプログラムカウンタに分岐先番
地が設定され、それの旧内容はスタックに保持される。
命令シーケンス制御機構8は、続いて、命令バッファ9
をクリアし。
それから、プログラムカウンタの新内容が指す主記憶番
地及びその後続番地から新しい命令列を読出し、命令バ
ッファ9に書込む。したがって、いずれかの実行ユニッ
トにおいて生じた分岐は、全実行ユニットに対してその
効力を生じ、リセットされた命令供給制御ベクトル11
の指す実行ユニット群が、分岐先の命令に含まれる要素
命令群を実行することになる。
第3図は、本発明の並列化コンパイラによる処理の一例
を示すフローチャートである。与えられたソースプログ
ラムは、まず、構文解析と意味解析を受けて、中間コー
ドとして表現される(ステップ21)。それから、コン
パイラは、中間コードとして表現されたプログラムの制
御の流れ、すなわち処理の順序関係を調べて、基本ブロ
ックを抽出し、それらの基本ブロックを結ぶ有向グラフ
としてプログラムを表現する(ステップ22)。
ここまでは、従来のコンパイラと同様である。基本ブロ
ックとは、途中で制御の流入も流出もない最長区間の命
令列である。換言すれば、一つの基本ブロックは、順序
制御命令の次の命令、又は他のブロックの順序制御命令
の分岐先命令で始まり、次の順序制御命令、又は他のブ
ロックの順序制御命令の分岐先命令の直前の命令で終わ
る。
次いで、任意多数個の仮想実行ユニットを想定して、各
基本ブロック内の処理と基本ブロック間のつなぎの処理
(分岐とその関連処理)を、これら仮想実行ユニットに
対する要素命令の列に展開する(ステップ23)。その
際に、断片的要素命令列とここで呼ぶ一連の要素命令に
一つの仮想実行ユニットを割当てる。断片的要素命令列
とは。
実行ユニット内にデータを(引続き利用するために)保
存しておかなければならない区間の要素命令列をいい、
典型的には、レジスタファイル又は主記憶から実行ユニ
ットにデータを取出す要素命令(例えば、後述するLO
AD)で始まり、次の同種命令の直前の命令で終る。例
えば、データを主記憶又はレジスタファイルから実行ユ
ニットに読出し、これを用いて何らかの処理を行ない、
その結果を主記憶又はレジスタファイルに格納する操作
系列は、断片的要素命令列である。通常、一つの基本ブ
ロックは、一つ又は複数の断片的要素命令列を含む。し
かし、一つの断片的要素命令列が複数の基本ブロックに
またがって形成されることもありうる。
次に、ある要素命令で得られた結果を他の要素命令で使
うというようなデータ受渡し関係に着目して、要素命令
間の前後関係を解析しくステップ24)、その前後関係
を損うことなく並列に実行できる要素命令を可能な限り
並列化することにより、各基本ブロック内で要素命令を
並列化し、同時に、実在の実行ユニットへの割当てを行
なう。
具体的には、まず、各仮想実行ユニットを一つの実在実
行ユニットに割付けることにより、断片的要素命令列の
並列化を行ない1次に、実在実行ユニットが空いていれ
ば、断片的要素命令列の一部を切離して、それの並列化
を試る。(ステップ25)。更に、並列度に余裕がある
場合には、各基本ブロックの先頭部分の要素命令で先行
基本ブロックの要素命令と並列化できるものがあれば、
そのように並列化を行ない、あるいは、各基本ブロック
の末尾部分の要素命令で後続基本ブロックの要素命令と
並列化できるものがあれば、そのように並列化を行ない
、それにより、基本ブロック間で要素命令を融合する(
ステップ26)。最後に、以上のように並列化された要
素命令群が、マシンコードに変換された後、オブジェク
トプログラムとして出力される(ステップ27)。要素
命令列生成処理と並列化処理が分離されているので、並
列化コンパイラの構造を簡明・単純にすることができる
第4図は、本発明の並列化コンパイラによる処理を例示
するために採用されたソースプログラムであり、これは
、文字列テキストから特定の文字列パタンを探索するプ
ログラムの一部である。図において、記号−一の右の文
字列は注釈である。
第5a〜50図(以下第5図と総称する)は、連結され
て、第3図におけるステップ23の処理により第4図の
ソースプログラムから作成された。
仮想実行ユニットに対する要素命令の列(断片的要素命
令列の列)を示す。この図でも、記号−一の右の文字列
は注釈である。各要素命令の形式は、ラベル部と、それ
に続くオペレータ部と、末尾のオペランド部とを含み、
通常は、オペランドの前に仮想実行ユニット名が置かれ
る。ラベルは必要に応じて記入される。図示の例では、
L]、O,L2o等がラヘルテアリ、LOADAD、5
TORE等がオペレータであり、EOI、EO2等が仮
想実行ユニット名である。仮想実行ユニット名を持たな
い要素命令゛は、孤立的で、仮想実行ユニツトの割当て
を要しない要素命令である。オペランドとしてのレジス
タは、前に第2図(a)を参照して説明したように、相
対番地で記述される。ただし、第5図においては、領域
レジスタの指定は、記号〈〉の中に記されている。また
、オペランド部に記された記号#とそれに続く数字は、
第2図(b)に示す即値オペランドとして与えられる定
数を表わす。
第5図の左端の丸付き数字は、基本ブロックを示す。例
えば1行1〜11が基本ブロック■を構成し、行12〜
14が基本ブロック■を構成し、行15〜,16が基本
ブロック■を構成し、以下同様である。
第5図に現われる各要素命令が示す演算の概要は、次の
通りである。LOAD系要素全要素命令般に、レジスタ
から実行ユニットへのデータの取込みを示す。行1のL
OADAD  EOI、8<LB>は、領域レジスタL
Bの内容に8を加えた値を仮想実行ユニットEOIに置
くことを示し、行3(7)LOADSB  EOI、2
<5TKR>は。
領域レジスタ5TKRの内容から2を減じた値をEol
 (のAcc)に置くことを示し、行4のLOADX 
 EO2は、EO2内のデータが示す番地のレジスタの
内容をEO2に取出すことを示す。
5TORE系要素命令は、一般に、実行ユニッ1〜内(
Acc内)のデータのレジスタへの転送を示す。ただし
、実行ユニットはクリアされない。行11の5TORE
1は、定数1のレジスタへの書込みを示し、行15の5
TOREOPは、間接番地モードでの定数Oの書込みを
示し、行54の5TOREPは、間接番地モードでのデ
ータ転送を示す。行25のGETRは、実行ユニット内
のデータが指す主記憶位置の内容を指定されたレジスタ
に読出すことを示し、行26のCOMF IRMGは、
前記読出しの完了の確認を指示する。
ADDは、指定されたレジスタの内容と実行ユニット内
のデータを加算してその和を実行ユニットに残すことを
示し、ADDQは、即値番地モードでの同様な加算を示
す。SUBは、実行ユニット内のデータからの減算を示
す6行20のANDQ  EO6,2#11は、EO6
内のデータの末尾2ビツトと2進定数11のAND演算
を示し、その結果、E06内のデータは、末尾の2ビツ
トを残して消去される6行28のEXTRACTは、実
行ユニット内のデータから指定されたレジスタの内容が
示す位置のバイトを抽出して、抽出したバイトを実行ユ
ニット内の最下位位置に残すことを示す、COMFは、
指定されたオペランドと実行ユニット内のデータの比較
を示す。
BRは無条件分岐を示し、BLEとBNEとBEQは、
それに先立って実行されたCOMPの結果による条件付
き分岐を示す。BLEは、実行ユニット内のデータが指
定されたオペランドより小さいか又はそれと等しい場合
に分岐を生じ、BNEは、それらが等しくない場合に分
岐を生じ、BEQは、それらが等しい場合に分岐を生じ
る。RETURN  5TKRは、スタックポインタを
用いて呼出し元ルーチンに戻ることを示す。これらは、
順序制御要素命令である。
第6a、6b図(以下第6図と総称する)は、連結され
て、第3図のステップ25及び26の処理により第5図
の要素命令列から作られた命令列を示す。第6図では、
各要素命令はそれを実行すべき実行ユニットの表示を持
たず、その代りに、各要素命令が記された欄位置が、そ
れを実行すべき実行ユニットに対応する。すなわち、図
の左端の欄に記された要素命令群は実行ユニット1に割
当てられ、次欄の要素命令群は実行ユニット2に割当て
られ、以下同様である。各水平行に並んだ要素命令列は
一つの命令を構成し、これらの要素命令は並行して実行
される。ただし、既述のように、計算機の内部では、相
次ぐ命令は間隙なく並べられ、命令供給制御ベクトル1
1を用いて各命令が切出される。
要素命令の並列化に際して、まず、仮想実行ユニットE
OIを第1実行ユニットに割付け、それにより、第5図
の行1,2の要素命令を第1実行ユニットに割当てる。
次に、EO2を第2実行ユニットに割付ける。EO2の
第3要素命令は領域レジスタLBを使い、このレジスタ
の値はEOIの第2要素命令で設定されるけれども、後
者が前者よりも早い時点で実行される限りは、Eolの
要素命令列とEO2の要素命令列は並列化することがで
きる。EO3とEO4の両要素命令列も、それらの最後
の要素命令がLBを使用する点を除けば、実行時点に制
限がないから、EO2の場合と同じ条件の下で、EOI
の要素命令列と並列化することができる。ところで、プ
ログラムの実行開始時には、命令供給制御ベクトル11
が1100にリセットされ、したがって、第1及び第2
実行ユニットのみが使用できる。そこで、第2ステツプ
以降で4個の要素命令を並列に実行するために、第1ス
テツプで第2実行ユニットに要素命令PROC2#11
11を与える。なお、要素命令PROCの機能は後で詳
述する。基本ブロック■の最後の命令5TORE 1は
、レジスタLBの設定の後である限り、どの実行ユニッ
トによりどの時点で実行されても支障がないので、第1
実行ユニットの空きステップに入れる。こうして、基本
ブロック■内での並列化が終わる1次の基本ブロック■
の先頭の要素命令は、ラベルLIOを持ち、後方の要素
命令(行50)の分岐先なので。
この要素命令を含む命令は、第1及び第2実行ユニット
のみを使用しなければならない。その準qδとして、第
4ステツプ(第6図行85)で空いている実行ユニット
にPROC2#1100を与える。他の空き実行ユニッ
トには、何の動作も指示しない要素命令NULLを与え
る。このようにして、初期処理部の並列化が終り、第6
図の行82〜85の命令列が完成する。
ラベルLIOで始まる基本ブロック■の要素命令列は、
ひとまず、使用可能な実行ユニットの一つ(この例では
第2実行ユニット)に割当てる。
次の基本ブロック■の要素命令5TOREOP及びRE
TURNは、同時に実行することができ、かつ、どの実
行ユニットにより実行されてもよいが、基本ブロック■
の最後の要素命令BLEの後でなければならない。した
がって、これらを、基本ブロック■の要素命令列の後に
、第1及び第2実行ユニットへ適宜割当てる。次の基本
ブロック■は、先頭にラベルL20を持つ、しかし、こ
こへの分岐は、先行する基本ブロック■の末尾のBLE
によってのみ生じ、他の基本ブロックからの分岐は生じ
ない。したがって、基本ブロック■は。
もしも他の条件が満たされれば、基本ブロック■と並列
化することができる。基本ブロック■は一括して仮想実
行ユニットEO6に割当てられているが、それは、TE
XT (TI)f7)番地ATEXTIの計算(行17
〜19)と、この番地データを用いて行なうTEXT 
(TI)の謹白バイト位置DISPの計算(行20,2
1)と、DISPの値がOでないときの分岐(行22,
23)との、三つの操作からなる。ATEXTIは、次
の基本ブ07り■のLOAD  ATEXT<LB> 
(行24)で使われるだけの局所的変数であり、l0S
Pもそのまた次の基本ブロック■のEXTRACT (
行28)で使われるだけである。また、基本ブロック■
の要素命令のオペランドは、基本ブロック■による操作
の影響を受けない。したがって、基本ブロック■の要素
命令は、基本ブロック■及び■より前に実行される基本
ブロック■の要素命令と並列に実行できる。以上の理由
から、基本ブロック■の先頭の4要素命令(行17〜2
0)を基本ブロック■の要素命令と並列化する。このよ
うにして、第6図の行86−90の命令列が生成される
基本ブロック■において、先頭のLOADはレジスタフ
ァイルの内容を変えないが1次のGETRはレジスタフ
ァイルの内容を変える。したがって、基本ブロック■の
先頭のLOADを基本ブロック■の末尾のBNEと並列
化する。他方、基本ブロック■(7)STORE  E
O6,DISP<LB>(行21)によりレジスタファ
イルに転送されるデータは、この基本ブロック■を唯一
の分岐元とする基本ブロック■において、第2要素命令
EXTRACTで使用されるのみであるから、基本ブロ
ック■の第1要素命令LOADと同時に実行しても支障
はない。なお、この5TOREにより転送されるべきデ
ータ(行20のANDQにより実行ユニット内に得られ
たデータ)は1行22゜23の要素命令COMP、BN
Eによっては破壊されない。このようにして、第6図の
行91〜94の命令列と行95〜97の命令列が生成さ
れる。
基本ブロック■〜■は、PIがOよりも大きいか否かの
判定(行30,31)と、PATN (PI)とTEX
T (TI)の比較(行33〜35)と、C0MPP 
(pr)のPIへの代入(行37〜40)とを含み、特
に、基本ブロック■と■は同じ仮想実行ユニットに割当
てられているが、これら三つの操作が扱うオペランドを
調べると、行33の要素命令が行30の要素命令で読込
まれたデータを使用する点を除けば、これら三つの操作
を逐次的に実行しなければならない理由はない。
したがって、行33のADDの前に行30と同じLOA
D  PI<LB>を付加することにより、これら三つ
の操作を3台の実行ユニットに別々に実行させることが
できる。本並列計算機では、実行すべき要素命令の個数
が増しても、並列化によりステップ数が減少すれば処理
速度は上るので、前記のような並列化が行なわれる。た
だし、動作すべき実行ユニット群に第3実行ユニットが
加わるので、PROC2#1110の挿入が必要である
。行32のBLEと行36のBEQは、分岐先を同じく
する条件付き分岐なので、同時に実行しても混乱は生じ
ず、いずれか一方、又は双方の分岐条件が満たされると
、L60への飛越しが生じる。ただし、これらの実行の
結果、命令供給制御ベクトル11 (第1図)がリセッ
トされるので、次の命令では第1及び第2実行ユニット
しか使用できない。行41のBRは1行40の5TOR
Eと同時に、任意の使用可能な実行ユニットに実行させ
ることができる。このようにして、第6図の行98〜1
03の命令列が生成される。この例では、基本ブロック
■が第3実行ユニットに割当てられ、LOAD  PI
<LB>が付加された基本ブロック■と行41のBRが
第1実行ユニットに割り当てられ、基本ブロック■が第
2実行ユニットに割当てられている。
基本ブロック[相]と0は、PIとPATNLが等しい
か否かの判定(行42,43)と、PI及びTIのそれ
ぞれへの1の加算(行45,46及び行47〜49)と
を行なうが、これらは並列に実行できる。ただし、行4
5のADDQの前に1行42と同じLOAD  PI<
LB>の付加が必要である。逆に、第2実行ユニットで
は、このLOAD  PI<LB>を省略することがで
きる。というのは、行42のLOADのオペランドは、
第2実行ユニットで実行された行40の5TOREによ
りPI<LB)に書込まれたデータであり。
このデータは、第2実行ユニット内に残っているからで
ある。行5oのBRは行49の5TOREと並列に実行
できる。このようにして、第6図の行104〜108の
命令列が生成される。
最後の基本ブロック@においては、関数値の計算と設定
(行51〜54)と、領域レジスタLBの内容の更新(
行55,56)が行なねれるが、後者の最初の要素命令
LOADSBは、未だLBの内容を変えないので、前者
の最後の要素命令5TORFPと並列に実行できる。ま
た、行57のRETURNは、行56の5TOREと同
時に実行してよい。このようにして、第6図の行109
〜112の命令列が生成される。
以上のように、この例では、第5図に示された57ステ
ツプの処理が、本発明による並列化コンパイラにより、
31ステツプに縮少される。特に。
最も高い頻度で実行される第5図の行30〜41の12
ステツプは、並列化により、第6図の行98〜103の
6ステツプに縮少される。
各実行ユニットへの要素命令の供給を制御し、それに対
応して後続する命令の長さを規定する要素命令は、一般
に、 P ROC2#e □e 2e 3e 。
の形式を持ち、第1図に示された命令供給制御ベクトル
11の第1ないし第4スロツトに、elないしC4をそ
れぞれ設定する。ここに、eK(1≦に≦4)は、0又
は1の定数である。命令供給制御ベクトル11の機能は
、既に第1図を参照しつつ説明した。要するに、命令供
給制御ベクトル11の第にスロットは、それが1に設定
されると、以後の命令が第に実行ユニット用の要素命令
を含むことを示し、それが0に設定されると、以後の命
令が第に実行ユニット用の要素命令を含まないことを示
す。命令列の途中で、−時的に、並列に実行できる要素
命令の数が予定数に満たなくなったときには、何の動作
も指示せず、したがって実行ユニットの状態を変えない
NULL命令を、適宜挿入すればよい。しかし、このよ
うな状態がしばらく続く場合には、適当なPROC要素
命令を与えるのがよい。
既述のように、命令供給制御ベクトル11は。
分岐その他の順序制御要素命令が実行されると、自動的
に1100にリセットされる。したがって。
他の命令からの分岐先となる命令列の先頭命令は必ず2
個の要素命令で構成されるように、コンパイルしなけれ
ばならない。その代償として1分岐先の命令列の命令長
を考慮することなしに、つまり、分岐元の命令にPRO
C要素命令を置くことなしに、任意の命令長のルーチン
からどのルーチンにでも飛越すことができる。
分岐先が同じであれば、複数の条件付き分岐要素命令を
単一の命令に含めることができ、第6図の行102はそ
の一例である。このような命令が実行されると、それら
の条件付き分岐要素命令のいずれか一つについてでも条
件が満たされさえすれば特定番地への分岐が生じる。す
なわち、条件式の論理和による分岐を単一の命令により
実現することが出来る。
第5図の行12〜14は、限界値検出処理である。この
ような限界値検出あるいは異常検出の処理を他の処理と
並列化することにより、それらの検出を早期に行なうこ
とができる。
第1図における実行ユニット1〜4.レジスタファイル
5.主記憶アクセス制御機構6.命令シーケンス制御機
構8.命令バッファ9.命令供給器10.命令供給制御
ベクトル11のすべてを、単一の半導体チップ上に集積
すれば、これら構成要素間の信号伝達時間が短縮され、
その結果、総合処理速度は一層向上する。
第1図に示した実施例では、4台の実行ユニットが設け
られているが、その台数は任意である。
しかし、通常の手続き型言語で書かれたプログラムにつ
いては、多くの場合、実現可能な並列度は2ないし4で
あるから、4台の実行ユニットは、集積回路化の容易さ
を含めて、実用的な観点から適正な規模といえる。
すべての実行ユニットが同一の機能を持つことは、プロ
グラムの並列化を容易にする効果がある。
しかし、変形として、整数演算用、浮動小数点演算用な
ど、機能の異なる複数の実行ユニットを設けてもよい。
そのように変形された実施例に対しては、並列化コンパ
イラは、第3図のステップ23において、各機能につい
て任意多数の仮想実行ユニットがあると想定して断片的
要素命令列を作り、ステップ25における基本ブロック
内並列化において、各仮想実行ユニットを対応する機能
の実在実行ユニットに割付ける。
なお、並列化コンバイリングは、単一の仮想実行ユニッ
ト(機能の異なる実行ユニットを含む並列計算機の場合
は各機能ごとに単一の仮想実行ユニット)を想定しても
、行な°うことができる。この方法によれば、例えば第
5図の例で、仮想実行ユニットの表示がすべて除かれて
いる。この場合には、各断片的要素命令列の境界を示す
適当な記号を挿入するのがよい。並列化の最初の段階に
おける断片的要素命令列の実行ユニットへの割当ては、
この境界記号に基づいて行なうことができる。
境界記号を用いないと、並列化処理に際して、要素命令
列を走査・解析して一つの断片的要素命令列を抽出する
処理と、それの実行ユニットへの割当てを、交互に反復
する必要がある。
[発明の効果] 本発明によれば、並列計算機のための命令の長さが可変
となり、それにより、むだなフィールドを除いて、命令
データ量を圧縮することができ、したがって、プログラ
ムのために費される記憶領域と記憶アクセス時間を節減
できる。更に、好ましい実施例によれば、相対レジスタ
番地の採用により、命令データ量は一層圧縮される。
加えて、好ましい実施例によれば、アキュムレータの設
置によりレジスタファイルへのアクセス回数が減少し、
更に、任意多数の仮想実行ユニットを想定した要素命令
列の生成と、それに続く、仮想実行ユニットの実在実行
ユニットへの割付けとに分けられたコンパイル手順は、
コンパイラの構造を簡潔化するとともに、並列化処理の
効率を改善する。
【図面の簡単な説明】
第1図は本発明の並列計算機の一実施例のブロックダイ
ヤグラム、第2図は第1図の計算機で用いられる要素命
令と命令の形式を示す図、第3図は本発明の制御方法に
よる並列化コンパイラのフローチャート、第4図は第3
図のコンパイラにより並列化されて第1図の計算機によ
り実行されるべきソースプログラムの一例を示す図、第
58図ないし第5c図は第4図のソースプログラムから
生成された要素命令列を示す図、第6a図と第6b図は
第5a〜50図の要素命令列の並列化により得られた命
令列を示す図である。

Claims (1)

  1. 【特許請求の範囲】 1、各命令が可変個数の要素命令からなる一連の命令と
    データを格納する記憶装置と、複数のレジスタからなる
    レジスタファイルと、前記記憶装置とレジスタファイル
    を共有する複数の要素命令実行ユニットと、前記記憶装
    置から前記命令を逐次取出して各命令中の前記要素命令
    を前記実行ユニットに分配する命令供給手段と、特定の
    要素命令を実行した前記実行ユニットにより設定される
    内部状態に従って前記命令供給手段に要素命令の分配先
    を指示する命令供給制御手段とを備えた並列計算機。 2、特許請求の範囲1において、前記命令供給制御手段
    は前記複数の実行ユニットのいずれか一つが順序制御要
    素命令を実行したことに応答して予め定められた内部状
    態に設定される並列計算機。 3、特許請求の範囲1又は2において、前記レジスタフ
    ァイル中のレジスタは相対番地で指定される並列計算機
    。 4、特許請求の範囲1、2又は3において、前記複数の
    実行ユニットのそれぞれはアキュムレータを有する並列
    計算機。 5、特許請求の範囲1ないし4の一つにおいて、前記複
    数の実行ユニットは同一の機能を有する並列計算機。 6、特許請求の範囲1ないし4の一つにおいて、前記複
    数の実行ユニットの少なくとも一つは他と異なる機能を
    有する並列計算機。 7、特許請求の範囲1ないし6の一つにおいて、前記複
    数の実行ユニット、レジスタファイル、命令供給手段及
    び命令供給制御手段が単一のチップ上に集積回路として
    形成された並列計算機。 8、各命令が可変個数の要素命令からなる一連の命令と
    データを格納する記憶装置と、複数のレジスタからなる
    レジスタファイルと、前記記憶装置とレジスタファイル
    を共有する複数の要素命令実行ユニットと、前記憶装置
    から前記命令を逐次取出して各命令中の前記要素命令を
    前記実行ユニットに分配する命令供給手段と、特定の要
    素命令を実行した前記実行ユニットにより設定された内
    部状態に従って前記命令供給手段に要素命令の分配先を
    指示する命令供給制御手段とを備えた並列計算機を制御
    するための、ソースプログラムを前記要素命令の列に変
    換するステップと、同時に実行されても支障を生じない
    複数の要素命令を併合して単一の命令を形成しつつ、前
    記要素命令列から一連の命令を作る並列化ステップと、
    前記一連の命令中で要素命令数の異なる二つの命令が隣
    接する所に前記命令供給制御手段の内部状態の変更を命
    する前記特定の要素命令を挿入するステップと、前記諸
    ステップを経て得られた命令列を前記記憶装置に格納す
    るステップとを有する制御方法。 9、特許請求の範囲8において、前記変換ステップは、
    実行ユニット内にデータを保持しておかなければならな
    い区間の要素命令列である断片的要素命令列を識別する
    ステップを含み、前記並列化ステップは、一つの前記断
    片的要素命令列を一つの前記実行ユニットに割当てると
    ともにその断片的要素命令列と少なくとも部分的に同時
    に実行されても支障の生じない他の断片的要素命令列を
    他の前記実行ユニットに割当てるステップを含む制御方
    法。 10、特許請求の範囲9において、前記断片的要素命令
    列識別ステップはそれぞれの断片的要素命令列を異なる
    仮想実行ユニットに割当てるステップを含み、前記実行
    ユニット割当てステップにおける断片的要素命令列の実
    行ユニットへの割当ては前記仮想実行ユニットを前記実
    行ユニットに割付けることにより行なわれる制御方法。 11、特許請求の範囲9又は10において、前記実行ユ
    ニット割当てステップは前記断片的要素命令列中の分離
    可能な要素命令を同時実行によって支障が生じない他の
    要素命令を含む命令に併合するステップを含む制御方法
    。 12、特許請求の範囲9、10又は11において、前記
    並列化ステップは、制御の流入も流出も途中で生じない
    最長区間の要素命令列である基本ブロックごとに前記の
    実行ユニット割当てを行なうステップと、隣接する二つ
    の基本ブロックの一方の要素命令を同時実行によって支
    障が生じない他方の基本ブロックの要素命令を含む命令
    に併合するステップとを含む制御方法。 13、特許請求の範囲8ないし12の一つにおいて、前
    記並列化ステップは同一の分岐先を持つ複数の条件付き
    分岐要素命令を単一の命令に含めるステップを含む制御
    方法。
JP62290711A 1987-11-19 1987-11-19 並列計算機及びその制御方法 Expired - Lifetime JP2729795B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62290711A JP2729795B2 (ja) 1987-11-19 1987-11-19 並列計算機及びその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62290711A JP2729795B2 (ja) 1987-11-19 1987-11-19 並列計算機及びその制御方法

Publications (2)

Publication Number Publication Date
JPH01133138A true JPH01133138A (ja) 1989-05-25
JP2729795B2 JP2729795B2 (ja) 1998-03-18

Family

ID=17759531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62290711A Expired - Lifetime JP2729795B2 (ja) 1987-11-19 1987-11-19 並列計算機及びその制御方法

Country Status (1)

Country Link
JP (1) JP2729795B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520068A (ja) * 1991-07-09 1993-01-29 Mitsubishi Electric Corp 並列演算処理装置
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5819955A (ja) * 1981-07-29 1983-02-05 Toshiba Corp 画像メモリ装置
JPS58146952A (ja) * 1982-02-26 1983-09-01 Toshiba Corp 並列計算機方式
JPS6148037A (ja) * 1984-08-13 1986-03-08 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 浮動小数点演算装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5819955A (ja) * 1981-07-29 1983-02-05 Toshiba Corp 画像メモリ装置
JPS58146952A (ja) * 1982-02-26 1983-09-01 Toshiba Corp 並列計算機方式
JPS6148037A (ja) * 1984-08-13 1986-03-08 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 浮動小数点演算装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520068A (ja) * 1991-07-09 1993-01-29 Mitsubishi Electric Corp 並列演算処理装置
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
US6401190B1 (en) 1995-03-17 2002-06-04 Hitachi, Ltd. Parallel computing units having special registers storing large bit widths
US6965981B2 (en) 1995-03-17 2005-11-15 Renesas Technology Corporation Processor including a plurality of computing devices

Also Published As

Publication number Publication date
JP2729795B2 (ja) 1998-03-18

Similar Documents

Publication Publication Date Title
US5303357A (en) Loop optimization system
US5669001A (en) Object code compatible representation of very long instruction word programs
US4466061A (en) Concurrent processing elements for using dependency free code
US5878267A (en) Compressed instruction format for use in a VLIW processor and processor for processing such instructions
US4468736A (en) Mechanism for creating dependency free code for multiple processing elements
CA1114518A (en) Central processor unit for executing instructions with a special operand specifier
JP3327818B2 (ja) プログラム変換装置及び記録媒体
US6944853B2 (en) Predicated execution of instructions in processors
EP1023659B1 (en) Efficient processing of clustered branch instructions
US20040123071A1 (en) Cellular engine for a data processing system
JPH0778741B2 (ja) オブジエクト・モジユール生成方法
US5852741A (en) VLIW processor which processes compressed instruction format
JPH11194950A (ja) オブジェクト変換装置及びオブジェクト変換方法及びプログラム記録媒体
US20050283588A1 (en) Instruction control apparatus, function unit, program conversion apparatus, and language processing apparatus
EP0889405A1 (en) Software debugging method
JP2003044273A (ja) データ処理装置及びデータ処理方法
EP0843848B1 (en) Vliw processor which processes compressed instruction format
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
JPH01133138A (ja) 並列計算機及びその制御方法
EP0096574B1 (en) System and method of renaming data items for dependency free code
US5506974A (en) Method and means for concatenating multiple instructions
JP2828219B2 (ja) オブジェクト・コード互換性を与える方法、オブジェクト・コード互換性並びにスカラ・プロセッサ及びスーパスカラ・プロセッサとの互換性を与える方法、ツリー命令を実行するための方法、データ処理システム
EP0180077B1 (en) A data processing machine for compiling computer programs
US20040237075A1 (en) Compiler device, method, program and recording medium
US20020156992A1 (en) Information processing device and computer system