JPH0397059A - 並列プロセッサで処理する並列な命令ストリームを同期させる方法 - Google Patents

並列プロセッサで処理する並列な命令ストリームを同期させる方法

Info

Publication number
JPH0397059A
JPH0397059A JP2224510A JP22451090A JPH0397059A JP H0397059 A JPH0397059 A JP H0397059A JP 2224510 A JP2224510 A JP 2224510A JP 22451090 A JP22451090 A JP 22451090A JP H0397059 A JPH0397059 A JP H0397059A
Authority
JP
Japan
Prior art keywords
stream
processor
data
scheduling
streams
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
JP2224510A
Other languages
English (en)
Other versions
JP2980178B2 (ja
Inventor
Rajiv Gupta
ラジブ グプタ
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.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
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 Philips Gloeilampenfabrieken NV filed Critical Philips Gloeilampenfabrieken NV
Publication of JPH0397059A publication Critical patent/JPH0397059A/ja
Application granted granted Critical
Publication of JP2980178B2 publication Critical patent/JP2980178B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Landscapes

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

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は一般的には、平行関連命令ストリームの実行用
平行プロセッサを持つマルチプロセッサの同期を取る方
l去に関し、ストリーム生成用のコンパイル方法にも関
する。特に本発明は、ストリームに跨がるイベント又は
データ従属性をほぼ最小にする技術に関し、またプロセ
ッサ間のイベント又はデータ従属性をプロセッサ間の通
信用チャネルを使って同期的に実行することに関する。
平行プロセッサを用いることによる逐次プログラムを共
同的に実行するための二二プロセッサのそれを超える実
行速度の増加は、異なるプロセッサ上で同時に行われる
平行操作を可能とするプログラ.ムの微粒子平行性(f
ine−grained parallelism)の
有効な開発に依存する。ループ・レベルの(loopl
evel)平行性は一般的に市販のマルチプロセッサ・
システムで有効に開発されているが、その一方でプログ
ラムの逐次的な部分に現れる超ループ(ループ外または
非ループ) [extra−loop(out−ofl
oop or non−1oop)]平行性は有効に明
確化することがさらに困難である。
〔従来の技術〕
アーキテクチュアの、極めて長い命令語族[VeryL
ong Instruction Word(VLIW
) family]はプログラムの逐次的な部分に現れ
る微粒子平行性を開発することができる。既知のこの種
の機械はトレース・スケジューリングに基づくコンパイ
ラをプログラムの逐次的な部分に現れる超ループ平行性
を検索しスケジュールするのに用いており(例えば、J
. A. Fisher著“TRACE SCHEDU
LING: A TECHN.IQUEFOR GLO
BAL MICROCODE COMPACTION”
, IEEE Trans.on Computers
誌Vo I. 7, No. C−30. 1981年
7月号pp.478−490所載、を参照)、またルー
プを巻き戻してループ・レベルの平行性を超ループ平行
性に変換することによりループ・レベルの平行性も開発
している。
しかしVLIW機械は、単一命令ストリームからフエツ
チしたロックステップ(lockstep)実行命令中
に動作するマルチプル・プロセッサから或る。長い命令
語は、異なるプロセッサによる平行実行用にスケジュー
ルされる動作を許して、各命令中の数個の微粒子動作の
開始を許す。プロセッサのロックステップ動作はプロセ
ッサが同期していることを暗黙に保証しているが、一方
でVLIW機械の速度は、走行中に発生するコンパイル
時には予想できなかったイベントにより、いくつかの妥
協をする。例えばメモリ・バンク・アクセスの衝突は、
ある操作に対し要求される操作対象がコンパイル時には
解っていないかも知れないから、必ず避けられるとは限
らない。そのような走行中のイベントは、ある長い命令
中の動作の1つの完了を遅延させる可能性があり、それ
は全命令の完了を遅延させるだろう。
VLIWアーキテクチュアのマルチプル命令ストリーム
・アーキテクチュアへの拡大は、ある1つのプロセッサ
により展開され他のプロセッサにより必要とされるデー
タを、該他のプロセッサが蓄積手段から読み出そうと意
図する時には既に始めのプロセッサにより共用の蓄積手
段に書き込んであることを保証するために、平行プロセ
ッサの同期を取る手段が要求される。データがプロセッ
サ間を受け渡されることを可能にするための共用蓄積手
段の使用もまた、メモリ位置内のデータがそれを必要と
する総てのプロセッサにより、他のデータがそこへ書き
込まれる前に既に読み出されていることを保証するため
に、更にもうlっの同期を取ることを要求する。
プロセッサの同期を取るlっの方法は、命令ストリーム
中に障壁(barriers)を設けることで、これは
同じ出願人によりl988年8月2日に出願された米国
特許出願第227, 276号(特願平1−19808
5号すなわち特開平2−110763号に相当)に説明
してある通り、共用メモリに書き込むとか共用メモリか
ら読み出すというようなプロセッサに跨がるイベントの
一時的指令を保証するものである。本発明では平行プロ
セッサは別のやり方で同期を取っている、すなわちこれ
らのプロセッサの同期を取るためにプロセッサ間の従属
データのストリームに跨がる通信を用いることによる。
HEP マルチプロセッサ(B. J. Smith,
“ARCH ITECTUREAND APPLiCA
TIONS OF THE HEP MULTIPRO
CESSORCOMPUTER SYSTEM”,RE
AL−TIME SIGNAL PROCESSING
誌Vol. 298. ■981年8月号pp, 24
1−248所載、及びJ.S.Kowalik編“PA
RALLEL MIMD COMPUTATION: 
HEPSUPERCOMPUTER AND rTs 
APPLICATION″MrT ’Press,19
85年発行を参照)は、プロセッサ間のデータの同期通
信の可能な多数のチャネルを、共用メモリの中およびレ
ジスタのセットの中の各位置に同期ビットを付加するこ
とにより装備している。各命令中の制御ビットが、読み
出し操作は無条件か又は該位置が「満杯」になるまで待
たなければならないかを指示する。しかしHEPマルチ
プロセッサでは、同期ビットは一般的に、例え該ビット
が正常な状態になかったとしても、プロセッサを一時停
止させることはない。寧ろプロセスは、プログラム・カ
ウンタ及び該プロセス中では不変の命令をそのままにし
て、一時停止する。別のプロセスへや実行のシフト及び
実行されない命令は、そのプロセスがパイプラインを通
してその次のトリップをするときにのみ再度試みられる
。一方、他のストリームからの命令はパイプラインを満
杯にし続けるように発せられる。その結果としてHEP
のアプローチはストリームの数がシステム中のプロセッ
サの数を上回らない限り特に有用ではない。
更に、共用メモリ中に設けられた可能性として無限のチ
ャネルは、プロセッサ同期イベント又はデータを通信す
るためには、レジスタ中に設けられたチャネルに比して
相対的に低速であるが故に、有用ではない。これに対し
てレジスタ中に設けられたチャネルは同期イベントを通
信するためには有用だけれども、1つ又はそれ以上のレ
ジスタや機能を引用する典型的な命令中でアドレスされ
得るために元来その数が限定されている。結果として、
典型的逐次プログラム用のVLIWアーキテクチュアの
ための既知のコンパイラ技術の応用の結果としての同期
を必要とするプロセッサに跨がる従属イベント又はデー
タの数は、そのような従属性を実現する用意のある有用
なチャネルの数を超えるかも知れない。
〔解決しようとする課題〕
本発明の目的はプロセッサを同期させるためのマルチプ
ロセッサの操作方法を、プロセッサ間の高速同期通信用
の比較的少ない数の手段を用いて提供することである。
また、平行命令ストリームを、ストリームに跨がるデー
タやイベント従属性をほぼ最小にするやり方で、生成す
るためのコンパイル方法を提供することも本発明のもう
1つの目的である。
〔課題解決の手段〕
これら及びその他の目的は、プロセッサ間の同期データ
従属性を伝達する比較的少ない数のレジスタ・チャネル
を設けることにより実現される。
プロセッサに跨がる従属「データ」 (この語はイベン
トの生起の告知をも含むことを意味する)は、1つのプ
ロセッサによる記憶手段への書き込み操作とそれに引き
続くもう1つのプロセッサによる記憶手段からの読み出
し操作とにより特徴付けられる。いわゆる「同期の冗長
なJ(“synchron ization redu
ndant”)プロセッサに跨がるデータ従属性は、限
定されたレジスタ・チャネル資源を酷使しないように、
在来形の(同期ビットを持たない)共用メモリへ最初に
書き込み、該共用メモリから最後に読み出すという非同
期的なやり方で伝達してもよいというのが本発明の1つ
の特徴である。
これら同期の冗長なデータ従属性の同期は、各々がある
特定のプロセッサに跨がるデータ従属性に結び付く1つ
またはそれ以上のレジスタ・チャネルを通して実施する
ことにより保証され、該特定のプロセッサに跨がるデー
タ従属性は、最初の書き込みより早くではない上記もう
1つのプロセッサによる2番目の書き込みと上記最後の
読み出しより遅くではない該もう1つのプロセッサによ
る最後から2番目の読み出しとで始まる1つまたはそれ
以上の書き込み・読み出しの対の一時的なシークエンス
によって特徴付けられる。種々の書き込み又は読み出し
イベントの一時的な順序は、レジスタ・チャネルと種々
のプロセッサに対する書き込み又は読み出しの関連位置
とにより定められる。
コンパイル方法においては、逐次的プログラムからの操
作は複数の平行ストリームへとスケジュールされ、プロ
セッサに跨がるデータ従属性の書き込みおよび読み出し
も同じくスケジュールされる。これを達成するために、
逐次的プログラムは先ず始めにノードの指向非巡回グラ
フが動作を表すものとし、指向エッジがデータ従属性を
表すものとして記述され、該ノードは多数の命令ストリ
ームへとスケジュールされる。そうするとノード間のエ
ッジは、ストリーム内エッジかストリーム間エッジかの
いずれかである。スヶジューリングは、ストリーム中で
ノードが、ストリーム内エッジはダウンストリームを指
向してストリーム内エッジにより表されるデータ従属性
を暗黙に実施されるようなやり方で順序付けられるよう
になっている。ストリーム間エッジはプロセッサ間のデ
ータの転移を要求するストリームに跨がる(又はプロセ
ッサに跨がる)データ従属性を表す。
本発明のもう1つの特徴として、同期の冗長なストリー
ムに跨がるエッジは識別されて、非同期の冗長なストリ
ームに跨がるエッジがレジスタ・チャネルの形体を採る
限定された数の同期データ転移手段上の書き込み・読み
出しの対としてスケジュールされることを許す。
本発明の更にもう1つの特徴として、ノードをストリー
ムへとスケジュールする方法は、結果としてのストリー
ム間エッジの数をほぼ最小にするように選択される。こ
のことは、処理に対して逆の順序でスケジューリングを
決定することにより達成され、特に最初にグラフ中で最
大の高さを持つスケジュールされていないノードを識別
して該ノードはストリーム間エッジの生成を最小にする
やり方で他のストリーム中へスケジュールされることに
より達或される。この方法のさらにもう1つの特徴は、
最大の高さを持つノードがスケジュールされた後に該ノ
ードから枝分かれした(rooted)サブグラフが識
別され、各サブグラフから同数のノードがノードの高さ
の小さくなる順序でルーティング・ノードとして同じそ
れぞれのストリーム中へスケジュールされることである
。コンパイル方法のもう1つの特徴は、同じ同期データ
転移手段の再使用のための候補のストリーム間エッジの
中での識別である。
本発明はさらに、再使用されたプロセッサ間データ転移
手段への書き込みの阻止の可能性によりもたらされる暗
黙の同期の識別と、それにより同期が冗長とされたスト
リーム間エッジの中でのまた別の識別とによって特徴付
けられる。
同期をとっての実行を要求するプロセッサに跨がるデー
タ従属性の数を減らすか又は最小にすることによる本発
明の種々の特徴は、典型的なプログラム中でマルチプロ
セッサが微粒子平行性を効果的に開発することを可能な
ものとし、一方ではそれに対する平行プロセッサの同期
を採るためには、.限定された数のレジスタ・チャネル
のみが要求されるのである。
〔実施例〕
本発明のその他の目的、特徴及び効果は、以下に述べる
添付図面を引用した好適実施例の詳細な説明により明ら
かにされよう。
第1a図及び第1b図の、マルチプル命令ストリーム・
マルチプル・データ・ストリーム(MIMD)形体で組
織されたマルチプロセッサlOは、複数個のプロセッサ
PI−P4(説明上その数を4とする)を、同じ数の命
令ストリームS l−8 4中の逐次的な命令をそれぞ
れ実行するために、有している。ストリームSl−84
は適切な命令記憶手段(図示していない)からプロセッ
サPL−P4への入力である。
同じく図示していないが各プロセッサは自分自身の内部
レジスタと恐らく自分自身のメモリとを持ち、それらが
該プロセッサのために命令ストリーム中のダウンストリ
ーム操作に関し後の使用に備えてプロセッサにより造り
出されたデータを蓄積しておく手段を与える。
マルチプロセッサIOはまた、比較的多数のメモリ位置
を持つ普通の共用ランダムアクセスメモリ12を含み、
該共用メモi川2は各プロセッサと共用メモリ比とを結
ぶアドレス及びデータ・ラインl4を介してプロセッサ
P .−P.のどれかにより選択的に読み出したり書き
込んだりすることができる。
該共用メモリl2は、プロセッサに跨がる又はストリー
ムに跨がる従属データを、同期を取るための他の手段を
用いずにプロセッサ間で受け渡すことはできない。その
理由は、共用メモI川2は記憶した値をそれが書き込ま
れる(すなわちメモリ位置が最初に満たされている)前
には読み出さないことを保証し、新しい値をあるメモリ
位置中に現在ある値が読み出された(すなわちメモリ位
置が最初に空になった)後まで該メモリ位置には書き込
まないことを保証する暗黙の手段を持たないからである
。これに反して、ある限定された数の共用レジスタ・チ
ャネルl6がプロセッサP ,−P 4のどれからでも
ほぼ同等の相対的に速い速度でアクセスされるように設
けられていて、各プロセッサは該速度でそれぞれのプロ
セッサからデータ、アドレス及び制御ライン18を介し
てその内部レジスタの1つにアクセスし得るものである
。しかし該レジスタ・チャネルl6は通信特性(com
mun icat ionattributes)すな
わちチャネルのセマンティクス(semantics 
of channels)も持っており1同期の目的の
ために読み出し又は書き込みを阻止することを許す。共
用レジスタ・チャネル16の各々は、データ語を記憶す
るための、共用メモリ位置に格納できるのと同じ形式す
なわちビット数の等しい領域20と、これにプラスして
レジスタ・チャネルが一杯か空かを示す同期ビット用の
追加領域22とを持っている。
プロセッサの命令セットは、共用メモリ比に向けての普
通の読み出し及び書き込み命令を持ち、また共用レジス
タ・チャネル16のために次の命令を持つことを好適と
する。
「クリア」 :同期ビットが“0”にセットされ、ある
特定のレジスタ・チャネルが空であることを示す。
「非破壊読み出し」 二同期ビットが“1”であって該
チャネルが一杯であることを示している時、読み出しが
できる。同期ビットは非破壊読み出しによって不変のま
まで、ついぎの読み出−しを可能なものとする。同期ビ
ットが“0”である限り該レジスタ・チャネルは読み出
しを阻止される。
「破壊読み出い :非破壊読み出しと同様であるが、但
し読み出しによって同期ビットが“0”にセットされる
「非破壊書き込み」 :もし同期ビットが“0”ならば
、数値が書き込まれ同期ビットが“l”にセットされて
、レジスタ・チャネルが一杯であることを示す。同期ビ
ットが“1′である限り該レジスタ・チャネルは書き込
みを阻止される。
「破壊書き込み」 :非破壊書き込みと同様であるが、
但し例え同期ビットが“l”であっても書き込みはなさ
れる。書き込み後は同期ビットは“1”である。
命令ストリームS I−8 4は逐次プログラムをコン
パイルすることにより生成され、それによって異なるプ
ログラム上で平行に実行することのできる動作のシーク
エンスを識別することによりプログラム中の微拉子平行
性の利点を享受するのである。このことは逐次プログラ
ムにおける操作の間のデータ又はイベント従属性の分析
を必要とする。
第2a図は、次の説明的な逐次プログラムのステップ a[i]:  = Xs y + c/dz:=a[j
]傘 5 のための単一の方向付けられた非巡回グラフ(DAC)
を示す、。
在では四角い箱が「ノード」と名付けられる動作を表し
、引用番号NlからN17までが打ってあり、ノード間
の方向付けられた線が「エツジ」と名付けられるデータ
又はイベント従属性を表す。特にノードNlからN9ま
では説明的なプログラム・ステップのための種々のデー
タを生成する動作を表し、ノードNIOからN17まで
は該データ上の逐次プログラム・ステップの実行を表す
。この例ではN15がNl4からデータ値を受け取り、
アドレスNIOからアドレス値の形でデータを受け取る
。N15は該値をアドレスに割当て(書き込み)、a[
i]を造り出す。N16はNl3からアドレスを受け取
り、該アドレスを読み出して、a[jlを評価する。も
しi=jならばNl5はa[jlの値を割り当てるが故
に、a[i]は既にNl5により割り当てられているこ
とが必要であるから、N15からN16に向かうエッジ
24はイベント従属であるところのデータ従属性のタイ
プを表すことを示している。N17はN16からa[H
の値をまたN9からある定数を受け取り、2を生戒する
最後の動作を評価するのだから、グラフの頂上にある。
複数の命令ストリームへのノードのスケジューリングは
、DAG中のノードの高さ又は深さを参照してなされる
。第2b図には、第2a図のグラフ中の各種ノードの深
さ及び高さを掲げる。該グラフを家族の木になぞらえ、
各エッジは子供のノードからその直接の親のノードに向
かっているものとすれば、深さという目的に対してはN
17は1に等しい深さを持ち、その他の各ノードはその
直接の親プラス1の深さを持つ。高さの目的に対しては
N1からN9までの各ノードは1に等しい高さを持ち、
その他の各ノードは1プラス一番高い子供の高さに等し
い高さを持つ。更に続いて、ノードは複数の命令ストリ
ーム中へのスケジューリングのために、通常は最初に実
行されるDAG中の最大の深さや最小の高さのノード及
び通常は最後に実行される最小の深さや最大の高さのノ
ードで選択されなければならない。以下の議論は第2a
図の木にのみ基づいているけれども、ある特定のデータ
が2回又はそれ以上使われるという1人の子供が1人よ
り多い親を持つことができる更に一般化された非巡回グ
ラフにも、本発明は同じく適用できる。
第3図は、第2a図のそれと類似の方向付けられた非巡
回グラフ(DAC)を示し、この図ではノードを○で表
して引用番号はNl−N17を用い、今はDACの形体
のみが重要なのだから、動作の内容は除いてある。各ノ
ードには記号S+.+  Sr.9及びS2. l一S
2,8が付されており、これらはそれぞれ第1及び第2
平行プロセッサでそれぞれ実行するための第1及び第2
命令ストリーム中のノードのナイーブな割当て方法によ
るスケジューリングを示している。
このナイーブな方l去では、先ず既にスケジュールされ
る用意のあるノードは最大の深さを持つと識別され、命
令ストリーム中に交互に割り当てられる。こうしてN3
−N6はそれぞれ:第1ストリームの第I命令(S+.
+)、第2ストリームの第1命令(S2、1)、第1ス
トリームの第2命令(St.t)、第2ストリームの第
2命令(32. 2)の順序で割り当てられる。次いで
、その次にスケジュールされる用意のあるノードの深さ
のレベルが、ノードNl. N2, Nil,Nl2と
識別され、識別されたノードの命令ストリーム中への交
互割り当てが続けられる。その後は、ノードの深さの次
のレベルが識別され、すべてのノードがスケジュールさ
れるまでスケジュールが続けられる。該ナイーブな方法
の結果を検討すると、“E”とラベルを付された8つの
エッジは、プロセッサ間で実行されることを要求される
データ従属性を表すストリーム間またはストリームに跨
がるエッジである。
第4図は、本発明の原理によりマルチプル命令ストリー
ムヘノードをスケジュールするためのコンパイル方法の
フロウチャートであって、これは生成されるストリーム
間エッジの数を最小にするものである。在ではノードの
スケジューリングはトップから始まり、とりわけノード
の深さではなくノードの高さに基づいて、逆の順序で決
定される。こうして第1ステップ26ではDAG中の各
ノードの高さが決定される。次にステップ2gで、スケ
ジュールされる用意のあるノードの高さの順のリストが
生成される。その次にステップ3oで、スケジュールさ
れる用意のあるノードがプロセッサ(またはストリーム
)の数より少ないかどうかが判定される。ステップ32
では、スケジュールされる用意のあるノードの数がプロ
セッサの数に達するまで異なるプロセッサ上に、それが
可能な場合にはノードはその直接の親(単数又は複数)
と同じプロセッサにスケジュールされるというやり方で
、スケジュールされる。ステップ34では、前のステッ
プで各プロセッサにノードがスケジュールされたかどう
か、またそのような各ノードはサブグラフの技分かれ(
親)であるかどうかを判定する。もしそうであればステ
ップ36が実行され、そこではこれらのノードで枝分か
れした最小のサブグラフから最高のノードに等しい数が
同じプロセッサ上に技分かれノードとしてスケジュール
される。もしステップ34の判定がそうでなければ、通
常はステップ36に続くステップ38に直接行く分枝か
ある。ステップ38ではスケジュールされるべきノード
が残っているかどうかを判定する。もしそうならステッ
プ28に戻る分枝があり、そうでなければスケジューリ
ング処理は停止する。
このコンパイリング及びスケジ゛ユーリングの方法を第
2a図の方向付けられた非巡回グラフへ応用すると、第
5a図に示すように、Eとラメルを付された僅かに2つ
のストリーム間エッジが生成される。その方法は第5a
図に関し次に述べるステップにより更によく理解されよ
う:スケジュールされるべきノードの数はl7あるのだ
から、まず始めに9つのノードが第1ストリーム中のポ
ジション31.1一81、9にスケジュールされ、8つ
のノードが第2ストリーム中のポジションS2.l  
Sz.aにスケジュールされる。最初に、ノードN17
及びN16がスケジュールされる用意がある、と云うの
は、Nl7は親を持たないからであり、Nl7がスケジ
ュールされれば、Nl6はスケジュールされ得るように
なるからである。これらのノードはそれぞれ第1ストリ
ームの最終動作(Sl.9)及び第2ストリームの最終
動作(32. 8)としてスケジュールされる。N16
は、ステップ34の判定を否とする単一サブグラフでは
なく、2つのサブグラフに枝分かれし、ステップ38の
判定は然りでその結果ステップ28に戻る。ステップ2
8ではノードNl5及びN14がスケジュールされる用
意ありと識別され、ステップ32でそれぞれS2,7及
び31.8としてスケジュールされる。Nl4は再度、
1つのサブグラフではなく2つのサブグラフに枝分かれ
するので、ステップ34の判定は又しても否であり、結
局ステップ28に戻ることになり、そこでのNIOから
Nl3までのノードの識別はスケジュールされる用意あ
りとなる。ステップ32では、NIO及びNilはそれ
ぞれS2.6及びS1,7としてスケジュールされる。
再び、S11は2つのサブグラフに枝分かれするので、
又してもステップ28に戻り、ノードNl2及びN13
の識別はスケジュールされる用意ありとなる。N12及
びN13はそれぞれS1,6及びS2,5としてスケジ
ュールされる。その後、NlからN9までのノードがス
ケジュールされる用意ありと識別され、類似の逐次ステ
ップでNlからN9までは対になって Nl, N3  が S2.,、S1,5  としてN
2、N4  が S,,3、S1.,としてN5、N7
  が S1,3、S2.2  としてN6、N8  
が S1,2、S1.1  として割り当てられる。
プロセッサに跨がるエッジが、ノードを逆順序でスケジ
ュールすることにより、どのようにほぼ最小化できるか
は今や明らかになった、と云うのは、このアプローチが
プロセッサ間に受け渡されるデータの量を最小にするよ
うに全体のサブグラフを割り当てる傾向をもつからであ
る。その各々がそれ自身のサブグラフに枝分かれするノ
ードがスケジュールされると、枝分かれノードがスケジ
ュールされるのにつれてサブグラフから同数の一番高い
ノードを同じプロセッサ上にスケジュールするステップ
36によって、コンパイル過程は加速される。
第5b図は、第5a図のノードをスケジューリングの順
序で、それぞれが第1及び第2命令ストリームS,、S
2を表す2つの列に再配置したものである。
ストリームS1、S2中の動作はそれぞれプロセッサP
1、P2によりダウンストリームの順序で実行される。
同じ列中でノード間に方向付けられた種々のエッジが「
ストリーム内」エッジと呼ばれ、すべてダウンストリー
ムの方向である。列間に方向付けられて生成された2つ
のエッジEが、「ストリームに跨がる」エッジとか「プ
ロセッサに跨がる」エッジとか「ストリーム間Jエッジ
といわれるものである。2つのストリームに沿っての実
行の進行は相互に関連して変動するものであるから、本
発明によればエッジEの同期はある限定された数のレジ
スタ・チャネルによって与えられ、それはもし必要なら
ば、ストリームSI中のN14の結果が定められるのを
待ってN15の直前でストリームS2の実行を一時延期
することを、書き込みが終わるまで読み出しを阻止する
ことによって、保証する。
同様に、ストリームSlの実行は、ストリームS2中の
Nl6の結果が定められるのを待ってNl7の直前で一
時延期される。実際、同じレジスタ・チャネルが(2つ
の)ストリーム間エッジEの両方を実行するために再度
使用され得る、と云うのは、これらのエッジの列間を往
き来する順序は、Nl6がN15からダウンストリーム
の位置にあることにより保証されているからである。
第6a図及び第6b図は安全な再使用の条件を描いたも
のである。各図には3つの命令ストリームSi、Sj,
 Skが描かれ、それらのストリームは、各々が書き込
み動作“W″から読み出し動作“r”に向けられたスト
リーム間エッジ“E”を実行するかまたは同期を取るレ
ジスタ・チャネルへの書き込み/読み出し対を持ってい
る。この実行は書き込みが終わらないと読み出しを阻止
するチャネルのセマンティクスに依るものである。第6
a図では、最初のストリーム間エッジは、Siでスケジ
ュールされてW1からSjでスケジュールされてR1へ
向かう、一方、2番目のエッジはSjでスケジュールさ
れてW2からストリームSkでスケジュールされてRl
からR2へのダウンストリームへ向かう。W2はRlの
後でなければならないから各エッジは同じレジスタ・チ
ャネルClへ割当てられることができ、そこにはIIV
2が時間的にWtの前に生起したり、R2が時間的にR
lの前に生起したりする可能性は全く無い。第6b図に
は、3つのストリーム間エッジが描かれ、1番目のエッ
ジはWlからR1へ向けられてClに割り当てられ、2
番目のエッジはW2からR2へ向けられてC2に割り当
てられ(それはCIに割り当てられることも出来たのだ
が)、3番目のエッジはW3からR3へ向けられてそれ
に対しCIが再使用される。W2がRlからのダウンス
トリームであり、W3がR2からのダウンストリームで
あって、ストリーム間エッジの実行の時間的順序が保証
されているから、この再使用は許されるのである。
第7図に示すのは、チャネル・レジスタの再使用が許さ
れる更に別の状態であるが、「暗黙の」同期と呼ばれる
もう1つの同期を造り出すものである。そこでは、第1
エッジおよぼ第2エッジはSiからSjに向けられ、W
2はSi中でWlからのダウンストリームであり、R2
はSj中でR1からのダウンストリームである。もし両
方のエッジが共に同じレジスタ・チャネルCIにより実
行されるならば、Rlが生起するまでW2へのC1を阻
止する可能性が生じる。このことがR1からW2に向か
うストリーム間の暗黙の同期Uによって表されている。
第8a図は、1番目のストリーム間エッジVが2番目の
ストリーム間エッジEにより冗長に同期されている単純
な場合を示す。在ではエツジVとEはストリームSi中
のWlとW2をそれそ゛れストリームSj中のRlとR
2へ向けている。W2はWlからダウンストリームであ
り、RlはR2からダウンストリームであるから、Eの
実行はVが実行されることを保証する。云い方を変えれ
ば、W2はtV1の後になければならないしRlはR2
の後になければならないから、R2をW2の後になるよ
う強制することはRlがWtの後にあることを保証する
。その結果として、■によって表されるデータ従属性は
レジスタ・チャネルによって実行される必要はなく、そ
の代わりにW1とRlが共用メモリ比に向かうことがで
きる。
第8b図は、第2及び第3エッジEにより造り出された
事実上の同期Tを示す。一般的に、事実上の同期Tは一
連の同期及びダウンストリームの動きの始めから終わり
に向かっている。従って第8b図には、W2からR2へ
の同期と、Skに沿ったR2からW3へのダウンストリ
ームの動きと、W3からR3への同期とがある。すると
事実上の同期Tは第8a図のルールに従ってW1からR
lへ向かうエッジ■を同期の冗長なものとする。これに
代わってVの同期冗長性は一連のダウンストリームの動
きと直接w1からR1への同期の実行とを必要とするル
ールによっても直接に確立できる。
第9図は、上述のタイプの同期の相互作用を説明するも
のである。在では、第7図におけるようなClの再使用
によるR1からW3へ向かう暗黙の同期Uが、W1から
R1へのエッジ、W3からW4へのダウンストリームの
動き及びW4からR4へのエッジと共に、RlからR4
への事実上の同期Tを造り出し、次にそれがエッジVを
同期の冗長なものとする。
第IO図は、本発明によるレジスタ・チャネル割当ての
ためのまた別のコンパイル方法のフロウチャートであっ
て、それへの入力は方向付けられた非巡回グラフ(DA
C)であり、これは第4図におけると同様にステップ4
0で複数の命令ストリーム中へスケジュールされ、その
結果のストリーム間エッジEが識別されている。次にス
テップ42で、第8b図におけるような事実上の同期が
、第8−b図におけると同様に3つ又はそれ以上のスト
リームの中のエッジ列を識別することにより付加される
。次いでステップ44で、同期の冗長性が第8a図、第
8b図又は第9図の原理に従って識別され、その結果と
してストリーム間エッジは、同期冗長と非同期冗長と2
つのクラスに分割される。同期冗長エッジはステップ4
6で共用メモリ12へ書き込みそれから読み出すことに
よりスケジュールされ、一方非同期冗長エッジはレジス
タ・チャネル割当てのために更に分析される。
ステップ48では最初の反復又は最初の通過でステップ
50に行く分岐が展開され、該ステップ50中でチャネ
ル再使用のための非同期冗長エッジの中の候補が、第6
a図、第6b図におけるような暗黙の同期を生成しない
で、識別され、チャネルの再使用によりスケジュールさ
れる。最初の反復以外ではステップ48中の分枝はステ
ップ50をバイパスさせる。その理由はチャネル再使用
のためのそのような候補は既に割当てられているからで
ある。次にステップ52で、非同期冗長エッジの残りの
数が割当てに使えるチャネルの残りの数を上回っている
かどうかを判定する。もし上回っていなければ残ってい
るエッジがステップ54でスケジュールされる。しかし
若し使えるチャネルより多くのエッジが残っていたらス
テップ56へ行き、そこでチャネル再使用のためのもう
lつの候補が識別される。
そのような候補は第7図のようなタイプのものである。
次にそこで生成された暗黙の同期がステップ58で付加
されて、それからは以上のステップが繰り返され、付加
された暗黙の同期によりもう1つの事実上の同期が付加
されるステップ42からはじまり、ステップ44ではそ
こで同期冗長にされたエッジが識別され、ステップ46
でスケジュールされる。一般的にこの過程によって、レ
ジスタ・チャネルの数が典型的なプログラムに対しては
十分であるという前提の下に、完全な同期がエッジのレ
ジスタ・チャネルへの割当てによって可能になるという
ことは今や明らかになった。従って、本発明の原理の典
型的な逐次プログラムへの応用の実例が、第■1図、第
12図に関連して以下に論じられる。
第11図は典型的なプログラムの方向付けられた非巡回
グラフ(DAC)である。これは、CACM 14(t
o).1971年lO月pp.669−675所載“E
NTCAF and BNTRE:Evaluatio
n of Normalized Taylor Co
efficientsof an Analytic 
Function”というプログラムの内部ループのも
のであって、そのDACは、l985年Carnegi
e−Mellon UniversityのPh. D
学位論文ThomasL. Rodeheffer,“
COMPILING ORDINARY PROGRA
MS FOREXECUTION ON AN ASY
NCHRONOUS MULTIPROCESSOR”
から引用している。
第12図は、第11図のDACを、ストリーム内で順序
を付けたノードを持つ本発明の原理による4つのストリ
ームに再編成したものである。僅かに11のストリーム
間エッジが生成され、そのうち2つは同期の冗長なもの
であることに、蔓で注意されたい。9つの非同期冗長ス
トリーム間エッジが、僅かに6つのレジスタ・チャネル
Cl−C6により、CIを2回再使用し、C2を1回再
使用して実行されている。
一般的に云えば、未知のプログラムに対し、同期を保証
するのに必要なレジスタ・チャネルの最少数は、少なく
とも各プロセッサにより書き込まれるべき、そして各々
を読み出す為には別のプロセッサによるべき異なる値に
対して十分な数が必要なのである。このことは、Ncを
チャネル数とし、pをプロセッサ数とするとき、 Nc≧p(p−1) という関係で与えられる。
この最少数は、チャネルが未だ読み出され終わっていな
いという理由でどのプロセッサも書き込みを阻止するこ
とを保証するためには十分でないかも知れない。同期を
保証するのに必要なチャネルの最多数は特定のプログラ
ムの関数で、その上限は、Nbをプログラム基本ブロッ
ク中のノードの数とするとき、 Nc≦Nb(p−1)/2 となる。
本発明の原理を試験プログラムに応用した結果は、典型
的なプログラムの同期に対してl)(1)−1)個のレ
ジスタ・チャネルで十分であることが暗示している。
本発明は特定の詳細が記述されたが、このような詳細か
ら多数の変形、追加、除外等が本発明の意図及び範囲内
で可能である。例えば、ストリーム中へのスケジューリ
ングの目的のために各ノードは1つの増加高を割り当て
られるを要せず寧ろ動作が採る期待時間長に比例する増
加高を持つ。
こうして各ノードはその増加高プラス最高の子供の高さ
に等しい高さを持つであろう。
【図面の簡単な説明】
第1a図は、本発明の原理による、共用レジスタ・チャ
ネルを持つマルチプロセッサの概略系統図であり、 第1b図は、第1a図の共用レジスタ・チャネルの1つ
のビット・ポジションの組織の概略図であり、第2a図
は、データ従属命令のある特定列の方向付けられた非巡
回グラフの説明的な図であり、第2b図は、第2a図の
グラフ中のノードの高さ及び深さを示すチャートであり
、 第3図は、第2a図の方向付けられた非巡回グラフから
動作ラベルを除き、割当てのナイーブな方法による2つ
の平行命令ストリームの間のノードのスケジューリング
の結果を示す図であり、第4図は、本発明による平行命
令ストリームの間のノードのスケジューリング方法を説
明するフロウチャートであり、 第5a図は、第3図に類似の方向付けられた非巡回グラ
フであるが、第4図のフロウチャートによる2つの平行
命令ストリームヘスケジューリングのノードのスケジュ
ーリングを示すものであり、第5b図は、第5a図の方
向付けられた非巡回グラフを命令ストリームへ再配置し
たものの図であり、第6a図及び第6b図は、チャネル
の安全な再使用を説明する平行命令ストリームを描いた
図であり、第7図は、チャネルの再使用によりもたらさ
れる暗黙の同期を説明する平行命令ストリームの概略図
であり、 第8a図は、単純な同期の冗長性を説明する命令ストリ
ームの概略図であり、 第8b図は、事実上の同期に関連する冗長な同期を説明
する命令ストリームの概略図であり、第9図は、事実上
の及び暗黙の同期に関連する冗長な同期を説明する命令
ストリームの概略図であり、 第10図は、レジスタ・チャネルの割当てに関連する冗
長な同期を識別する本発明の方法を説明するフロウチャ
ートであり、 第11図は、典型的なプログラムの内部ループの方向付
けられた非巡回グラフの図であり、第12図は、第11
図の方向付けられた非巡回グラフを平行命令ストリーム
へ再配置したものの図である。 IO・・・マルチプロセッサ l2・・・共用ランダムアクセスメモリl4・・・デー
タ・ライン 16・・・共用レジスタ・チャネル l8・・・制御ライン 20・・・データ語記憶領域 22・・・同期ビット記憶領域 24・・・エッジ FIG. I a FIG. I b .Ω N FIG. 6 b FIG. 10 S よ? FIG. II

Claims (1)

  1. 【特許請求の範囲】 1、動作を表すノードの方向付けられた非巡回グラフ及
    びデータ従属性を表すエッジとして記述することができ
    、 複数のそれぞれのディジタル・プロセッサ による実行のため及び複数のプロセッサ間データ転移手
    段上の同期データ転移をスケジュールするために、複数
    の平行命令ストリーム中へデータ従属動作をスケジュー
    ルするためのコンパイル方法であって、該方法は 上記グラフのノードを上記複数のストリー ム中へスケジュールし、上記グラフの各エッジはストリ
    ーム内エッジかストリーム間エッジかのいずれかで記述
    可能であり、上記ノードはストリーム内エッジが同一方
    向に方向付けられるというやり方でスケジュールされて
    いるよう最初にスケジュールすることと、 上記ストリーム間エッジの中の同期の冗長 なエッジを最初に識別することと、 同期の冗長でないストリーム間エッジを、 上記プロセッサ間データ転移手段上の同期データ転移と
    して2番目にスケジュールすることとを含むことを特徴
    とする方法。 2、上記最初にスケジュールすることは、ストリーム間
    エッジの数をほぼ最少にするようなやり方で実行される
    ことを特徴とする請求項1に記載の方法。 3、上記最初にスケジュールすることは、逆の順序で決
    定されており、且つ 上記グラフのスケジュールされていないノ ードの中で、相対的に最大の高さを持つ複数のノードを
    2番目に識別することと、 上記2番目に識別された複数から異なるス トリーム中へノードをスケジュールし、一方、スケジュ
    ールされたノードに向けた結果としてのストリーム間エ
    ッジの数をほぼ最少化するよう3番目にスケジュールす
    ることとを含むことを特徴とする請求項1に記載の方法
    。 4、上記最初にスケジュールすることは更に、3番目に
    スケジュールされた複数のノードに対し該ノードで枝分
    かれするすべてのサブグラフを3番目に識別することと
    、 もし可能ならば、それぞれ3番目に識別さ れたサブグラフと同数のノードを、該それぞれのサブグ
    ラフを枝分かれする3番目にスケジュールされたノード
    と同じそれぞれのストリーム中へスケジュールし、それ
    は上記3番目にスケジュールされたノードからノード高
    の下降する順に決定されるよう4番目にスケジュールす
    ることと を含むことを特徴とする請求項3に記載の方法。 5、上記4番目にスケジュールすることの後、上記2番
    目に識別することを繰り返すことを更に含むことを特徴
    とする請求項4に記載の方法。 6、上記2番目にスケジュールすることは、同期の冗長
    でない上記ストリーム間エッジの中で、同じプロセッサ
    間データ転移手段の再使用によりスケジュールすること
    の候補として一定の順序で決定されなければならないデ
    ータ従属性を表すエッジを識別するよう2番目に識別す
    ることを含むことを特徴とする請求項1に記載の方法。 7、上記2番目に識別することは同じプロセッサ間デー
    タ転移手段の再使用によりスケジュールすることに対す
    る候補の識別であって、該再使用は上記データ転移手段
    上で書き込むことを阻止する可能性による暗黙の同期を
    生じさせないものであることを特徴とする請求項6に記
    載の方法。 8、再使用されたプロセッサ間データ転移手段上で読み
    出すことを阻止する可能性による暗黙の同期を識別する
    よう3番目に識別することと、 上記暗黙の同期により同期の冗長とされた ストリーム間エッジを更に識別するよう4番目に識別す
    ることと を更に含むことを特徴とする請求項6に記載の方法。 9、動作を表すノードの方向付けられた非巡回グラフ及
    びデータ従属性を表すエッジとして記述することができ
    、 複数のそれぞれのディジタル・プロセッサ による実行のために、複数の平行命令ストリーム中へデ
    ータ従属動作をスケジュールするためのコンパイル方法
    であって、 上記グラフのノードを上記複数のストリー ム中へスケジュールし、上記グラフの各エッジはストリ
    ーム内エッジかストリーム間エッジかのいずれかで記述
    可能であり、上記ノードはストリーム内エッジが同一方
    向に方向付けられるというやり方でスケジュールされて
    いるよう最初にスケジュールすることを含み、また 該最初にスケジュールすることはストリー ム間エッジの数を最少化するためのやり方で実行される
    ことを特徴とする方法。 10、上記最初にスケジュールすることは、逆の順序で
    決定されており、且つ 上記グラフのスケジュールされていないノ ードの中で、該グラフ中において相対的に最大の高さを
    持つ複数のノードを最初に識別することと、 上記最初に識別された複数から異なるスト リーム中へノードをスケジュールし、一方、スケジュー
    ルされたノードに向けた結果としてのストリーム間エッ
    ジの数を最少化するよう2番目にスケジュールすること
    とを含むことを特徴とする請求項9に記載の方法。 11、2番目にスケジュールされた複数のノードに対し
    該各ノードで枝分かれするすべてのサブグラフを2番目
    に識別することと、 もし可能ならば、それぞれ2番目に識別さ れたサブグラフと同数のノードを、該それぞれのサブグ
    ラフを枝分かれする3番目にスケジュールされたノード
    と同じそれぞれのストリーム中へスケジュールし、それ
    は上記3番目にスケジュールされたノードからノード高
    の下降する順に決定されるよう3番目にスケジュールす
    ることと を含むことを特徴とする請求項10に記載の方法。 12、上記3番目にスケジュールすることの後、上記最
    初に識別することを繰り返すことを更に含むことを特徴
    とする請求項11に記載の方法。 13、ストリームに跨がるデータ従属性を持つ第1命令
    ストリーム及び第2命令ストリームでそれぞれ特定され
    る逐次動作を実行するための第1平行プロセッサ及び第
    2平行プロセッサと、該プロセッサによりアクセスでき
    る1つのレジスタ・チャネルであって該レジスタ・チャ
    ネルには既に書き込まれているかどうかを示す同期ビッ
    トによって特徴付けられているレジスタ・チャネルと、
    上記プロセッサにアクセスでき同期ビットを持たないメ
    モリ手段とを持つマルチプロセッサの中で、 ストリームに跨がる複数の従属データを同 期ファッションにより上記プロセッサ間で受け渡す方法
    は、 上記第1プロセッサにとって入手可能な第 1のストリームに跨がる従属データを、該第1プロセッ
    サによって上記メモリ手段に、最初に書き込むことと、 上記第1プロセッサにとって入手可能な第 2のストリームに跨がる従属データを、上記最初に書き
    込むことより早くない時期に、該第1プロセッサによっ
    て上記レジスタ・チャネルに、2番目に書き込むことと
    、 もし必要ならば、上記2番目に書き込むこ とが行われたことを上記同期ビットが示すまで、上記第
    2プロセッサが待機することと、上記レジスタ・チャネ
    ルから第2のストリ ームに跨がる従属データを、上記第2プロセッサによっ
    て最初に読み出すことと、 上記メモリから第1のストリームに跨がる 従属データを上記最初に読み出すことより早くない時期
    に、上記第2プロセッサによって2番目に読み出すこと
    と を含むことを特徴とする方法。 14、ストリームに跨がるデータ従属性を持つ第1命令
    ストリーム、第2命令ストリーム及び第3命令ストリー
    ムでそれぞれ特定される逐次動作を実行するための第1
    平行プロセッサ、第2平行プロセッサ及び第3平行プロ
    セッサと、 該プロセッサによりアクセスできる第1レ ジスタ・チャネル及び第2レジスタ・チャネルであって
    、該レジスタ・チャネルには既に書き込まれているかど
    うかを示す同期ビットによって各々特徴付けられている
    第1レジスタ・チャネル及び第2レジスタ・チャネルと
    、上記プロセッサにアクセスでき同期ビット を持たないメモリ手段とを持つマルチプロセッサの中で
    、 ストリームに跨がる複数の従属データを同 期ファッションにより上記プロセッサ間で受け渡す方法
    は、 上記第1プロセッサにとって入手可能な第 1のストリームに跨がる従属データを、該第1プロセッ
    サによって上記メモリ手段に、最初に書き込むことと、 上記第1プロセッサにとって入手可能な第 2のストリームに跨がる従属データを、上記最初に書き
    込むことより早くない時期に、該第1プロセッサによっ
    て上記第1レジスタ・チャネルに、2番目に書き込むこ
    とと、 もし必要ならば、上記2番目に書き込むこ とが行われたことを上記第1レジスタ・チャネルの上記
    同期ビットが示すまで、上記第2プロセッサが最初に待
    機することと、 上記第1レジスタ・チャネルから第2のス トリームに跨がる従属データを、上記第2プロセッサに
    よって最初に読み出すことと、 上記第2プロセッサにとって入手可能な第 3のストリームに跨がる従属データを、上記2番目に読
    み出すことより早くない時期に、該第2プロセッサによ
    って上記第2レジスタ・チャネルに、3番目に書き込む
    ことと、 もし必要ならば、上記3番目に書き込むこ とが行われたことを上記第2レジスタ・チャネルの上記
    同期ビットが示すまで、上記第3プロセッサが2番目に
    待機することと、 上記第2レジスタ・チャネルから第3のス トリームに跨がる従属データを、上記第3プロセッサに
    よって2番目に読み出すことと、上記メモリ手段から第
    1のストリームに跨 がる従属データを上記2番目に読み出すことより早くな
    い時期に、上記第3プロセッサによって3番目に読み出
    すことと を含むことを特徴とする方法。 15、ストリームに跨がるデータ従属性を持つ複数の命
    令ストリームでそれぞれ特定される逐次動作を実行する
    ための複数の平行プロセッサと、上記プロセッサ間で受
    け渡される同期データのための該プロセッサによりアク
    セスできる複数のレジスタ・チャネルと、上記プロセッ
    サ間で受け渡される非同期データのための上記プロセッ
    サにアクセスできるメモリ手段とを持つマルチプロセッ
    サの中で、 ストリームに跨がる複数の従属データを同 期ファッションにより上記プロセッサ間で受け渡す方法
    は、 上記第1プロセッサにとって入手可能な第 1のストリームに跨がる従属データを、上記プロセッサ
    のうちの1つによって上記メモリ手段に、最初に書き込
    むことと、 上記メモリ手段から上記第1のストリーム に跨がる従属データを、上記プロセッサとは別のもう1
    つのプロセッサによって最後に読み出すことと、 上記最初に書き込むことより早くない時期 に1つのレジスタ・チャネルに2番目に書き込むことと
    共に始まり、上記最後に読み出すことより遅くない時期
    に同じ又は別のレジスタ・チャネルから最後の1つ前に
    読み出すことと共に終わる、1つ又はそれ以上の書き込
    み・読み出し対の一時的なシークエンスによって、他の
    ストリームに跨がるデータ従属性を実現させることと を含むことを特徴とする方法。
JP2224510A 1989-08-29 1990-08-28 並列プロセッサで処理する並列な命令ストリームを同期させる方法 Expired - Lifetime JP2980178B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/400,178 US5317734A (en) 1989-08-29 1989-08-29 Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
US400,178 1989-08-29

Publications (2)

Publication Number Publication Date
JPH0397059A true JPH0397059A (ja) 1991-04-23
JP2980178B2 JP2980178B2 (ja) 1999-11-22

Family

ID=23582531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2224510A Expired - Lifetime JP2980178B2 (ja) 1989-08-29 1990-08-28 並列プロセッサで処理する並列な命令ストリームを同期させる方法

Country Status (4)

Country Link
US (1) US5317734A (ja)
EP (1) EP0415497B1 (ja)
JP (1) JP2980178B2 (ja)
DE (1) DE69031100T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002268895A (ja) * 2001-03-09 2002-09-20 Nec Corp 命令スケジューリング装置及び命令スケジューリング方法
JP2012500432A (ja) * 2008-08-18 2012-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ストリーム処理コンピュータ・アーキテクチャを実装する方法及びシステム
KR20180073669A (ko) * 2015-10-28 2018-07-02 구글 엘엘씨 계산 그래프들의 스트림-기반 가속기 프로세싱

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0353819B1 (en) * 1988-08-02 1997-04-09 Koninklijke Philips Electronics N.V. Method and apparatus for synchronizing parallel processors using a fuzzy barrier
US5418915A (en) * 1990-08-08 1995-05-23 Sumitomo Metal Industries, Ltd. Arithmetic unit for SIMD type parallel computer
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5371684A (en) 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
JP2772304B2 (ja) * 1992-04-10 1998-07-02 富士通株式会社 並列処理の負荷均一化方法
US5819088A (en) * 1993-03-25 1998-10-06 Intel Corporation Method and apparatus for scheduling instructions for execution on a multi-issue architecture computer
US5642501A (en) * 1994-07-26 1997-06-24 Novell, Inc. Computer method and apparatus for asynchronous ordered operations
US5614914A (en) * 1994-09-06 1997-03-25 Interdigital Technology Corporation Wireless telephone distribution system with time and space diversity transmission for determining receiver location
JP2908739B2 (ja) * 1994-12-16 1999-06-21 インターナショナル・ビジネス・マシーンズ・コーポレイション 多重プロセッサ・システムにおけるcpuのモニタリング・システム及び方法
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
US5742821A (en) * 1995-11-08 1998-04-21 Lucent Technologies Inc. Multiprocessor scheduling and execution
US5887174A (en) * 1996-06-18 1999-03-23 International Business Machines Corporation System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US6215821B1 (en) * 1996-08-07 2001-04-10 Lucent Technologies, Inc. Communication system using an intersource coding technique
EP0920764A4 (en) * 1996-09-20 2006-03-01 Comsat Corp DEMODULATION OF ASYCHRONOUS PASSED DATA BY DETECTION TRANSMISSION ASSESSMENT IN A DIVIDED MULTI-CARRIER ENVIRONMENT
US6278754B1 (en) * 1996-09-20 2001-08-21 Comsat Corporation Demodulation of asynchronously sampled data by means of detection-transition sample estimation in a shared multi-carrier environment
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
US6317774B1 (en) * 1997-01-09 2001-11-13 Microsoft Corporation Providing predictable scheduling of programs using a repeating precomputed schedule
JP3730740B2 (ja) * 1997-02-24 2006-01-05 株式会社日立製作所 並列ジョブ多重スケジューリング方法
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
JPH11134197A (ja) * 1997-10-29 1999-05-21 Fujitsu Ltd Vliw方式計算機用のコンパイル装置及び方法並びにコンパイル実行プログラムを格納した記録媒体
US6075935A (en) * 1997-12-01 2000-06-13 Improv Systems, Inc. Method of generating application specific integrated circuits using a programmable hardware architecture
US6044456A (en) * 1998-01-05 2000-03-28 Intel Corporation Electronic system and method for maintaining synchronization of multiple front-end pipelines
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6718541B2 (en) * 1999-02-17 2004-04-06 Elbrus International Limited Register economy heuristic for a cycle driven multiple issue instruction scheduler
US6457173B1 (en) * 1999-08-20 2002-09-24 Hewlett-Packard Company Automatic design of VLIW instruction formats
US7062767B1 (en) * 2000-09-05 2006-06-13 Raza Microelectronics, Inc. Method for coordinating information flow between components
JP2002116915A (ja) * 2000-10-10 2002-04-19 Fujitsu Ltd コンパイラ並列化スケジュール方法
US7140019B2 (en) * 2002-06-28 2006-11-21 Motorola, Inc. Scheduler of program instructions for streaming vector processor having interconnected functional units
US7159099B2 (en) * 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
US7415601B2 (en) * 2002-06-28 2008-08-19 Motorola, Inc. Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
US7581215B1 (en) * 2003-06-30 2009-08-25 Sun Microsystems, Inc. Dependency analysis system and method
CA2439137A1 (en) * 2003-08-08 2005-02-08 Ibm Canada Limited - Ibm Canada Limitee Improved scheduling technique for software pipelining
US7290122B2 (en) * 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
US20050289530A1 (en) * 2004-06-29 2005-12-29 Robison Arch D Scheduling of instructions in program compilation
US7392516B2 (en) * 2004-08-05 2008-06-24 International Business Machines Corporation Method and system for configuring a dependency graph for dynamic by-pass instruction scheduling
US20060048123A1 (en) * 2004-08-30 2006-03-02 International Business Machines Corporation Modification of swing modulo scheduling to reduce register usage
US7444628B2 (en) * 2004-08-30 2008-10-28 International Business Machines Corporation Extension of swing modulo scheduling to evenly distribute uniform strongly connected components
US7624386B2 (en) 2004-12-16 2009-11-24 Intel Corporation Fast tree-based generation of a dependence graph
JP4749431B2 (ja) * 2005-03-04 2011-08-17 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. パイプラインスループットを促進するための方法及び装置
EP1975791A3 (en) * 2007-03-26 2009-01-07 Interuniversitair Microelektronica Centrum (IMEC) A method for automated code conversion
US8117606B2 (en) 2007-06-04 2012-02-14 Infosys Technologies Ltd. System and method for application migration in a grid computing environment
US7860900B2 (en) * 2008-02-25 2010-12-28 Microsoft Corporation Consistently signaling state changes
US7945768B2 (en) * 2008-06-05 2011-05-17 Motorola Mobility, Inc. Method and apparatus for nested instruction looping using implicit predicates
US20090313616A1 (en) * 2008-06-16 2009-12-17 Cheng Wang Code reuse and locality hinting
US9106233B1 (en) * 2009-02-25 2015-08-11 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for synchronization
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US9032067B2 (en) 2010-03-12 2015-05-12 Fujitsu Limited Determining differences in an event-driven application accessed in different client-tier environments
WO2011159309A1 (en) 2010-06-18 2011-12-22 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction
US20120109928A1 (en) * 2010-10-29 2012-05-03 Fujitsu Limited Synchronization scheme for distributed, parallel crawling of interactive client-server applications
US8832065B2 (en) 2010-10-29 2014-09-09 Fujitsu Limited Technique for coordinating the distributed, parallel crawling of interactive client-server applications
US9400962B2 (en) 2010-10-29 2016-07-26 Fujitsu Limited Architecture for distributed, parallel crawling of interactive client-server applications
US8447849B2 (en) * 2010-11-09 2013-05-21 Cisco Technology, Inc. Negotiated parent joining in directed acyclic graphs (DAGS)
US9208054B2 (en) 2011-02-14 2015-12-08 Fujitsu Limited Web service for automated cross-browser compatibility checking of web applications
US9367658B2 (en) * 2011-06-22 2016-06-14 Maxeler Technologies Ltd. Method and apparatus for designing and generating a stream processor
WO2013101199A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing extended memory semantics with atomic memory operations
US8880951B2 (en) 2012-04-06 2014-11-04 Fujitsu Limited Detection of dead widgets in software applications
FR3021433B1 (fr) * 2014-05-21 2016-06-24 Kalray Systeme de synchronisation inter-processeurs
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
JP6489985B2 (ja) * 2015-09-24 2019-03-27 ルネサスエレクトロニクス株式会社 プログラム開発支援装置およびプログラム開発支援ソフトウェア
US10990326B2 (en) 2017-05-31 2021-04-27 Fmad Engineering Kabushiki Gaisha High-speed replay of captured data packets
US11392317B2 (en) * 2017-05-31 2022-07-19 Fmad Engineering Kabushiki Gaisha High speed data packet flow processing
US11036438B2 (en) 2017-05-31 2021-06-15 Fmad Engineering Kabushiki Gaisha Efficient storage architecture for high speed packet capture
US10423358B1 (en) 2017-05-31 2019-09-24 FMAD Engineering GK High-speed data packet capture and storage with playback capabilities
GB2580348A (en) 2019-01-03 2020-07-22 Graphcore Ltd Compilation method
CN112148455B (zh) * 2020-09-29 2021-07-27 星环信息科技(上海)股份有限公司 一种任务处理方法、设备及介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4553203A (en) * 1982-09-28 1985-11-12 Trw Inc. Easily schedulable horizontal computer
US4698752A (en) * 1982-11-15 1987-10-06 American Telephone And Telegraph Company At&T Bell Laboratories Data base locking
US4837676A (en) * 1984-11-05 1989-06-06 Hughes Aircraft Company MIMD instruction flow computer architecture
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US4891787A (en) * 1986-12-17 1990-01-02 Massachusetts Institute Of Technology Parallel processing system with processor array having SIMD/MIMD instruction processing
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US4989131A (en) * 1988-07-26 1991-01-29 International Business Machines Corporation Technique for parallel synchronization

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002268895A (ja) * 2001-03-09 2002-09-20 Nec Corp 命令スケジューリング装置及び命令スケジューリング方法
JP2012500432A (ja) * 2008-08-18 2012-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ストリーム処理コンピュータ・アーキテクチャを実装する方法及びシステム
KR20180073669A (ko) * 2015-10-28 2018-07-02 구글 엘엘씨 계산 그래프들의 스트림-기반 가속기 프로세싱
US11151446B2 (en) 2015-10-28 2021-10-19 Google Llc Stream-based accelerator processing of computational graphs

Also Published As

Publication number Publication date
DE69031100T2 (de) 1998-02-12
EP0415497B1 (en) 1997-07-23
DE69031100D1 (de) 1997-09-04
EP0415497A2 (en) 1991-03-06
US5317734A (en) 1994-05-31
JP2980178B2 (ja) 1999-11-22
EP0415497A3 (en) 1993-03-10

Similar Documents

Publication Publication Date Title
JPH0397059A (ja) 並列プロセッサで処理する並列な命令ストリームを同期させる方法
US5386562A (en) Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop
EP0010934B1 (en) An information handling system
US9038042B2 (en) Staged loop instructions
Fisher Trace scheduling: A technique for global microcode compaction
Rau Iterative modulo scheduling: An algorithm for software pipelining loops
EP0353819B1 (en) Method and apparatus for synchronizing parallel processors using a fuzzy barrier
Baer A survey of some theoretical aspects of multiprocessing
US5828886A (en) Compiling apparatus and method for promoting an optimization effect of a program
US6044222A (en) System, method, and program product for loop instruction scheduling hardware lookahead
KR950006616B1 (ko) 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법
Bala et al. Efficient instruction scheduling using finite state automata
JP3687982B2 (ja) メモリ回路および機能ユニットのグループを備えた処理装置
US7140019B2 (en) Scheduler of program instructions for streaming vector processor having interconnected functional units
JPH0256640A (ja) 共通ブロックへのアクセス競合軽減方法
Darabi et al. A verification technique for deterministic parallel programs
Lah et al. Tree compaction of microprograms
JP3311381B2 (ja) コンパイラにおける命令スケジューリング処理方法
Tang et al. Automatically partitioning threads for multithreaded architectures
Tang et al. How “hard” is thread partitioning and how “bad” is a list scheduling based partitioning algorithm?
Dhamdhere et al. Characterization of program loops in code optimization
EP0244928A1 (en) Improvements relating to control flow in computers
Feo et al. Developing a high-performance FFT algorithm in Sisal for a vector supercomputer
JPS58149567A (ja) ベクトル・レングス制御範囲融合処理方式
Shieh et al. Fine grain mapping strategy for multiprocessor systems

Legal Events

Date Code Title Description
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20080917

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20080917

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100917

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100917

Year of fee payment: 11

S303 Written request for registration of pledge or change of pledge

Free format text: JAPANESE INTERMEDIATE CODE: R316304

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

Free format text: PAYMENT UNTIL: 20100917

Year of fee payment: 11

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

EXPY Cancellation because of completion of term