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

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

Info

Publication number
JP2980178B2
JP2980178B2 JP2224510A JP22451090A JP2980178B2 JP 2980178 B2 JP2980178 B2 JP 2980178B2 JP 2224510 A JP2224510 A JP 2224510A JP 22451090 A JP22451090 A JP 22451090A JP 2980178 B2 JP2980178 B2 JP 2980178B2
Authority
JP
Japan
Prior art keywords
scheduling
stream
operations
nodes
inter
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.)
Expired - Lifetime
Application number
JP2224510A
Other languages
English (en)
Other versions
JPH0397059A (ja
Inventor
グプタ ラジブ
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
Koninklijke Philips Electronics 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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics 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)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は一般的には、関係する命令の並列なストリー
ムを実行するための並列プロセッサを持つマルチプロセ
ッサを同期させる方法に関し、また、ストリームを精製
するためのコンパイルする方法にも関する。特に本発明
は、ストリーム間を横断する(cross−stream)イベン
ト又はデータの従属性をほぼ最小にする技術に関連し、
また、プロセッサ間に通信用チャネルを同期的に使っ
て、プロセッサ間のイベント又はデータの従属性を強制
することにも関連する。
〔従来の技術〕
継起的なプログラムを共同して実行するために並列プ
ロセッサを用いることにより実行速度を増大させ、それ
が単一のプロセッサの実行速度を超えるようにするため
には、プログラムの粒度の細かい並列性(fine−graine
d parallelism)、すなわち個別の演算レベルでの並列
性、を有効に活用して、並列演算が多数の異なるプロセ
ッサ上で同時に行われることを可能にすることが必要で
ある。一般にループ・レベルでの並列性(loop−level
parallelism)は市販のマルチプロセッサシステムで有
効に活用されているが、プロセッサの継起的な部分に存
在するループ外(又は非ループ)の並列性<extra−loo
p(or non−loop)parallelism>は効果的に活用するこ
とが更に困難である。
いわゆるVLIWというアーキテクチャー群<VERY LONG
INSTRUCTION WORD(VLIW)family of architectures>
は、プログラムの継起的な部分に存在する粒度の細かい
並列性を活用することができる。この型の既知の機械は
トレース・スケジューリングに基づくコンパイラを利用
して(トレース・スケジューリングについては例えばIE
EE Trans.on Computers誌Vol.7,No.C−30,1981年7月号
pp.478−490所載のJ.A.Fisher著“TRACE SCHEDULING:A
TECHNIQUE FOR GLOBAL MICROCODE COMPACTION"という文
献を参照)プログラムの継起的な部分に在るループ外の
並列性を検出し且つスケジュールしたり、またループを
解いてループ・レベルの並列性をループ外に並列性に変
換することにより、ループ・レベルの並列性を活用した
りもする。
しかしVLIW機械は、単一命令のストリームからフェッ
チしたロックステップ実行命令(lockstep executing i
nstructions)中で動作する複数のプロセッサから成
る。長い命令語は各命令中の幾つかの粒度の細かい演算
の開始を許容し、それによって多数の異なるプロセッサ
により並列の実行をするようスケジュールされるであろ
う演算を許容する。プロセッサのロックステップ演算は
プロセッサが同期していることを暗黙のうちに(implic
itly)保証するが、他方ではVLIW機械の速度は、走行中
に発生するところのコンパイル時に予想できなかったイ
ベントにより、いくつかの妥協をすることになる。例え
ばメモリ・バンク・アクセスの衝突は、ある演算に対し
要求されるオペランドがコンパイルの時点では判ってい
ないかも知れないから、必ず避けられるとは限らない。
そのような走行中のイベントは、ある長い命令中の演算
の1つの完了を遅延させる可能性があり、それは全命令
の完了を遅延させるだろう。
VLIWアーキテクチャーを複数の命令ストリームのアー
キテクチャーに拡大することは、ある1つのプロセッサ
が発展させ、もう1つのプロセッサが必要とするところ
のデータを、該もう1つのプロセッサが蓄積手段から読
み出そうと意図するときには、上記ある1つのプロセッ
サにより共用の蓄積手段に既に書き込んであることを保
証するために、並列プロセッサを同期させる手段が必要
である。また、共用の蓄積手段を使用してデータがプロ
セッサ間で受け渡されることを可能にするには、更にも
う1つの同期をとって、メモリ位置内のデータは、それ
を必要とするすべてのプロセッサにより、他のデータが
その位置へ書き込まれる前に既に読み出されていること
を保証することが必要である。
プロセッサを同期させる1つの方法は、命令ストリー
ム中に障壁(barriers)を設けることであって、これは
本出願と同一の出願人が1988年8月2日に出願した米国
特許出願第227,276号(特願平1−198085号すなわち特
開平2−110763号に相当する)に説明してある通り、共
用メモリに書き込むとか共用メモリから読み出すという
ようなプロセッサを横断するイベントの時間的な順序を
保証する。本発明においては、並列プロセッサはそれと
は別のやり方で同期を取っている;すなわちストリーム
を横断する従属データを同期させて通信することにより
同期を取っているのである。
HEPマルチプロセッサなるものは、プロセッサ間のデ
ータの同期通信が可能な多数のチャネルを実装し、(HE
PマルチプロセッサについてはREAL−TIME SIGNAL PROCE
SSING誌Vol.298,1981年8月号pp.241−248所載のB.J.Sm
ithによる“ARCHITE CTURE AND APPLICATIONS OF THE H
EP MULTIPROCESSOR COMPUTER SYSTEM"という文献、及び
1985年にMIT Pressが発光のJ.S.Kowalik編“PARALLEL M
IND COMPUTATION:HEP SUPERCOMPUTER AND ITS APPLICAT
IONS"という文献を参照)これは共用メモリの中および
レジスタのセットの中に各位置に同期ビットを追加する
ことによりデータ通信の同期を可能にしている。各命令
中の制御ビットは、読み出し演算が無条件であるのか、
又はその位置が「一杯になる」まで待たなければならな
いか、を指示する。しかしHEPマルチプロセッサでは、
同期ビットは一般的に、たとえ該ビットが正常な状態で
なかったとしても、プロセッサを一時停止させることは
ない。寧ろ処理過程が一時停止するが、プログラム計数
器及び命令は該処理過程中では不変のままにして置かれ
る。別の処理過程への実行のシフトと実行されなかった
命令とは、その処理過程がパイプラインを通してその次
のトリップをするときにのみ再度試みられる。その間に
も、他のストリームからの命令は発せられ、パイプライ
ンを一杯にし続けるようにしてある。その結果、ストリ
ームの数がシステム中のプロセッサの数を上回らない限
り、HEPのアプローチは特に有用ではない。更にまた、
数の無限大になる可能性のあるチャネルを共用メモリ中
に設けることは、レジスタ中に設けられたチャネルに比
べて相対的に低速であるから、イベント又はデータを同
期してプロセッサと通信するために有用ではない。これ
に対してレジスタ中に設けられたチャネルは、イベント
を同期させて通信するのには有用であるけれども、1つ
又はそれ以上の数のレジスタ又は機能を引用するところ
の典型的な命令中でアドレスされることができるように
するために、元来その数が限定されている。その結果と
して、典型的な継起的プログラムに対するVLIWアーキテ
クチャーのための既知のコンパイラ技術を応用したこと
により、同期を必要とするプロセッサを横断する従属イ
ベント又はデータの数は、そのような従属性を実現する
用意のある有用なチャネルの数を超えることがあるかも
知れない。
〔解決しようとする課題〕
本発明の目的は、プロセッサ間の高速同期通信のため
の比較的少ない数の手段を利用して、プロセッサを同期
させるためのマルチプロセッサの演算の方法を提供する
ことである。また、ストリームを横断するデータ(及び
イベントの)従属性をほぼ最小にするやり方で、並列命
令ストリームを生成するためのコンパイルする方法を提
供することも、本発明のもう1つの目的である。
〔課題解決の手段〕
これらの目的及びその他の目的は、プロセッサ間の同
期しているデータ従属性を伝達する比較的少ない数のレ
ジスタチャネルを設けることにより実現される。プロセ
ッサを横断する従属「データ」(この語はイベントの生
起を告知することも含む)は、1つのプロセッサによる
記憶手段への書き込み演算とそれに引き続くもう1つの
プロセッサによる記憶手段からの読み出し演算とにより
特徴付けられる。いわゆる「同期の過剰な」(“synchr
onization redundant")プロセッサを横断するデータ従
属性は、限定されたレジスタチャネルの資源を酷使しな
いように、在来形の(同期ビットを持たない)共用メモ
リへ最初に書き込み、該共用メモリから最後に読み出す
という同期をとらないやり方で伝達してもよいというの
が本発明の1つの特徴である。これら同期の過剰なデー
タ従属性を同期させることは、各々がある特定のプロセ
ッサを横断するデータ従属性に結び付く1つまたはそれ
以上の数のレジスタチャネルを通して実施することによ
り保証され、該特定のプロセッサを横断するデータ従属
性は、最初の書き込みより以前ではない上記もう1つの
プロセッサによる2番目の書き込みと、上記最後の読み
出しより以後ではない該もう1つのプロセッサによる最
後から2番目の読み出しと、で始まる1つまたはそれ以
上の数の書き込み・読み出しの対の、時間的なシーケン
スによって特徴付けられる。種々の書き込み又は読み出
しイベントの時間的な順序は、レジスタチャネルと種々
のプロセッサに対する書き込み又は読み出しの関連位置
とにより定められる。
コンパイルする方法においては、継起的プログラムか
らの演算は複数の並列ストリームへとスケジュールさ
れ、プロセッサを横断するデータ従属性の書き込みおよ
び読み出しも同じくスケジュールされる。これを達成す
るためには、演算を表すノードとデータ従属性を表す有
向エッジとのDAG(directed acyclic graph−ループを
含まない有向グラフ)として、継起的プログラムが先ず
始めに記述され、それらのノードが多数の命令ストリー
ムへとスケジュールされる。そうすると、ノード間のエ
ッジは、ストリーム内エッジであるか又はストリーム間
エッジであるか、のいずれかである。スケジュールの方
法としては、ストリーム内エッジがストリームの下流を
向いて、そのストリーム内エッジにより表されるデータ
従属性を暗黙のうちに強制する、というやり方によっ
て、ストリームの中でノードが順序付けられるようにな
っているのである。ストリーム間エッジは、ストリーム
を横断する(又はプロセッサを横断する)データ従属性
を表し、それはプロセッサ間のデータの転送を必要とす
る。
本発明のもう1つ別の特徴として、同期の過剰なスト
リームを横断するエッジを見分けて区別し、それにより
同期の過剰でないストリームを横断するエッジが、レジ
スタチャネルの形で実装される限定された数の同期デー
タ転送手段上で書き込み・読み出しの対としてスケジュ
ールされることを許容する。
本発明の更にもう1つの特徴は、ノードをスケジュー
ルしてストリームとする方法が、結果としてもたらされ
るストリーム間エッジの数をほぼ最小にするように選択
される、というものである。このことは、処理に対して
逆の順序でスケジューリングを決定することにより達成
され、特に、グラフ中で最高の高さをもつスケジュール
されていないノードを先ず初めに見分けて、続いてそれ
らのノードはストリーム間エッジの生成を最小にするよ
うにスケジュールされて他のストリームとなることによ
り達成される。この方法の更に別の特徴は、最高の高さ
を持つノードがスケジュールされた後に、これらのノー
ドからルートを持つサブグラフ(rooted subgraph)が
見分けられ、各サブグラフから同数のノードがノードの
高さの下がる順序でスケジュールされて、ルートとなる
ノード(rooting nodes)としてそれぞれ同じストリー
ムになる、というものである。上記コンパイルする方法
のもう1つの別の特徴は、同じ同期データ転送手段を再
使用するために、候補となるストリーム間エッジのうち
からの見分けを行うことである。
本発明はさらに、再使用されるプロセッサ間データ転
送手段への書き込みの阻止の可能性によって生じる事実
上は存在する同期(implicit synchronizations)を見
分けることと、それにより同期が過剰とされたそれらの
エッジのストリーム間エッジのうちから更に見分けを行
うこととによって特徴付けられる。
同期させることが強制的に必要であるところのプロセ
ッサを横断するデータ従属性の数を減少させ或いはそれ
を最小にすることによって生じる本発明の種々の特徴
は、マルチプロセッサが粒度の細かい並列性を典型的な
プログラムの中で効果的に活用することを可能にし、ま
た一方で、対応する並列プロセッサを同期させるために
は、限定された数のレジスタチャネルを実装することが
必要とされるのみである。
〔実施例〕
本発明のその他の目的や特徴及び効果等は、以下に述
べる添付図面を引用した好適実施例の詳細な説明により
明らかにされるであろう。
第1a図及び第1b図には、複数命令複数データストリー
ム(MIMD−Multiple Instruction stream Multiple Dat
a stream)の形で組織されているマルチプロセッサ10が
示される。このマルチプロセッサは、複数個(説明の便
宜上その数を4とする)のプロセッサP1−P4を有し、こ
れらのプロセッサは、それぞれが同数の命令ストリーム
S1−S4で与えられる継起的な命令を実行する。これらの
命令ストリームS1−S4は、適切な命令メモリ手段(図示
していない)からプロセッサP1−P4への入力である。同
じく図示していないが、各プロセッサはそれぞれが自分
自身の内部レジスタを持ち、また恐らくそれぞれが自分
自身のメモリを持っており、それらのメモリは、プロセ
ッサにより造り出されるデータを、該プロセッサに対す
る命令ストリームの中で下流方向への演算に関連して後
で使用するのに備えて、記憶しておく手段を与えるもの
である。
マルチプロセッサ10は更に、通常の共用ランダムアク
セスメモリ(RAM)12を含み、この共用RAM12は比較的多
数のメモリ位置を持っており、それらのメモリ位置は、
プロセッサP1−P4のどれからも、各プロセッサと共用メ
モリ12とを結ぶアドレス及びデータ・ライン14を介し
て、選択的に読み出し又は書き込みをすることのできる
ものである。
この共用メモリ12は、プロセッサを横断する従属デー
タ又はストリームを横断する従属データを、同期させる
ための他の手段を用いずにプロセッサ間で受け渡すのに
用いることはできない。その理由は、共用メモリ12が記
憶した値を、それぞれ書き込まれる(すなわちメモリ位
置が最初に満たされている)前には読み出されないこと
を保証し、また或るメモリ位置中に現在ある値が読み出
された(すなわちメモリ位置が最初に空になった)後ま
で該メモリ位置には新しい値を書き込まないことを保証
するための手段を、それ自身では持たないからである。
また一方で、ある限定された数の共用レジスタチャネ
ル16が設けられて、相対的に速いほぼ同じ速度でプロセ
ッサP1−P4のどれからでもアクセスすることができ、そ
れにより各プロセッサからデータ・アドレス・制御ライ
ン18を介して該共用レジスタチャネル16の内部レジスタ
の1つにアクセスできる。しかしこれらのレジスタチャ
ネル16はまた、通信特性(communication attributes)
すなわちチャネルのセマンティクス(semantics of cha
nnels)をも有しており、同期させるという目的で、読
み出し又は書き込みを阻止できるようにしてある。共用
レジスタチャネル16の各々は、データ語を記憶する領域
20と同期ビット用の追加領域22とを持っており、領域20
には共用メモリ位置に格納できるのと同じ形式すなち同
じビット数のデータ語を記憶し、追加領域22の同期ビッ
トはレジスタチャネルが一杯になっているかそれとも空
であるかを示す。
プロセッサの命令セットは、共用メモリ12に向けての
通常の読み出し命令や書き込み命令を含み、また共用レ
ジスタチャネル16に向けて次の命令を含むことが好適で
ある: 「クリア」−同期ビットが“0"に設定され、これはレ
ジスタチャネルが空であることを示す; 「非破壊読み出し」−同期ビットが“1"すなわち該チ
ャネルが一杯であることを示しているときに、読み出し
ができる。非破壊読み出しによって同期ビットは不変の
ままとされ、次の読み出しを可能とする。同期ビットが
“0"である限り、該レジスタチャネルは読み出しを阻止
されている; 「破壊読み出し」−非破壊読み出しと同じであるが、
但し読み出しによって同期ビットが“0"に設定される点
が異なる; 「非破壊書き込み」−もし同期ビットが“0"ならば、
数値が書き込まれ、また同期ビットが“1"に設定され
て、レジスタチャネルが一杯であることを示す。同期ビ
ットが“1"である限り、該レジスタチャネルは書き込み
を阻止されている; 「破壊書き込み」−非破壊書き込みと同じであるが、
但したとえ同期ビットが“1"であっても、書き込みはな
される点が異なる。書き込み後には同期ビットは“1"と
なる。
命令ストリームS1−S4は、継起的なプログラムをコン
パイルして生成され、それによって種々の異なるプロセ
ッサ上で並列に実行される演算のシーケンスを見分ける
ことにより、プログラム中の粒度の細かい並列性の利点
を活用する。このことは、継起的なプログラムにおける
演算と演算の間で、データの従属性又はイベントの従属
性を分析することを要求する。
第2a図は、次のような説明のための継起的なプログラ
ムのステップとして a[i]:=x*y+c/d z: =a[j]*5 に対する単一のDAG(ループを含まない有向グラフ)を
示す図である。
この図では、四角い枠が「ノード」と名付けられる演
算を表し、引用番号NIからN17までが付してあって、ノ
ード間の有向ラインは「エッジ」と名付けられ、データ
又はイベントの従属性を表す。特に、ノードNIからN9ま
では、説明のためのプログラムのステップに対し種々の
データを生成する演算を表し、ノードN10からN17まで
は、それらのデータについて継起的なプログラムのステ
ップを実行することを表す。この例ではノードN15がノ
ードN14からデータ値を受け取り、ノードN10からアドレ
ス値という形でデータを受け取る。またノードN15はノ
ードN10から受けた値をアドレスに割り当てて(書き込
んで)a[i]を造り出す。ノードN16はノードN13から
アドレスを受け取り、それを読み出してa[j]を評価
する。もしi=jならば、ノードN15はa[j]の値を
割り当てるのであるから、a[i]はノードN15により
既に割り当てられていたことが必要であり、従ってノー
ドN15からノードN16に向かうエッジ24は、イベント従属
であるところのデータ従属性の1つのタイプを表すこと
が示されている。ノードN17はグラフの最高の位置にあ
り、それはノードN16からa[j]の値を受け取り、ま
たノードN9からある1つの定数を受け取り、zを生成す
る最後の演算を評価する。
複数の命令ストリームへのノードのスケジューリング
は、DAG中のノードの高さ又は深さを参照してなされ
る。第2b図には、第2a図のグラフ中の各種ノードの深さ
及び高さが示されている。第2a図のグラフを家族の木に
なぞらえ、各エッジは子供のノードからその直後の親の
ノードに向かっているものとすれば、深さという観点で
は、ノードN17は1に等しい深さを持ち、その他の各ノ
ードは「その直接の親(の深さ)プラス1」の深さを持
つ。高さという観点では、ノードN1からノードN9までの
各ノードは1に等しい高さを持ち、その他の各ノードは
「1プラス一番高い子供の高さ」に等しい高さを持つ。
更に、複数の命令ストリーム中にスケジュールするため
に、DAGの中の最大の深さや最小の高さのノードが通常
は最初に実行され、また最小の深さや最大の高さのノー
ドが通常は最後に実行されるように、ノードが選択され
なければならないことは明らかであろう。
第3図は、第2a図と類似とDAGを示すもので、この図
ではノードを○で表し、引用番号はN1−N17を用い、ま
たここではDAGの形のみが重要なので、演算の内容は除
いてある。各ノードには記号S1.1−S1.9及びS2.1
2.8が付されており、これらは第1並列プロセッサ及
び第2並列プロセッサでそれぞれ実行するための第1命
令ストリーム及び第2命令ストリーム中のノードの、素
朴な(naive)割当て方法によるスケジューリングを示
している。
この素朴な方法では、既にスケジュールされる用意の
できているノードは最大の深さを持つものと、先ず初め
に識別され、命令ストリーム中に相互に割り当てられ
る。こうしてN3−N6はそれぞれ:N3が第1ストリームの
第1命令(S1.1)に、N4が第2ストリームの第1命令
(S2.1)に、N5が第1ストリームの第2命令(S1.2
に、N6が第2ストリームの第2命令(S2.2)に、とい
う順序で割り当てられる。それに続いて、スケジュール
される用意のできているノードの深さのその次のレベル
がノードN1,N2,N11,N12と識別され、これら識別された
ノードを命令ストリーム中へ交互に割り当てることが続
けられる。その後は、ノードの深さの次のレベルが識別
され割り当てられて、すべてのノードがスケジュールさ
れるまでこのスケジューリングが続けられる。この素朴
な方法の結果を検討すると、“E"とラベルを付けた8つ
のエッジが、プロセッサ間で実行されることを必要とす
るデータ従属性を表すストリーム間のエッジ又はストリ
ームを横断するエッジである。
第4図は、本発明の原理により複数命令ストリームに
ノードをスケジュールするためのコンパイル方法のフロ
ーチャートであって、これは生成されるストリーム間エ
ッジの数を最少にするものである。ここではノードのス
ケジューリングが、ノードの深さではなくノードの高さ
に基づいて、逆の順序で決定される。こうして、第1ス
テップ26ではDAG中の各ノードの高さが決定される。次
にステップ28で、スケジュールされる用意のできたノー
ドを高さの順にしたリストが生成される。その次にステ
ップ30で、スケジュールされる用意のあるノードがプロ
セッサ(またはストリーム)の数より少ないかどうかが
判定される。次にステップ32では、スケジュールされる
用意のあるノードの数が、プロセッサの数に達するまで
種々の異なるプロセッサ上にスケジュールされ、そのや
り方は、それが可能であるときは、ノードはその直後の
親と同じプロセッサにスケジュールされる、というもの
である。ステップ34では、前のステップで各プロセッサ
にノードがスケジュールされたかどうか、またそのよう
な各ノードはサブグラフのルート(親)<root(paren
t)>であるかどうかを判定する。もしそうであれば、
ステップ36が実行され、そこではこれらのノードをルー
トとする最小のサブグラフから最高のノードに等しい数
が、ルートとなるノードとして、同じプロセッサ上にス
ケジュールされる。もしステップ34の判定が否であれ
ば、通常はステップ36の次に来るステップ38にじかに行
く分枝がある。ステップ38では、スケジュールされるべ
きノードが残っているかどうかを判定する。もし残って
いるならばステップ28に戻る分枝があり、残っていなけ
ればスケジューリング過程を停止する。
このコンパイリング及びスケジューリングの方法を、
第2a図のDAGに応用すると、第5a図に示すように、Eと
ラベルを付された僅かに2つのストリーム間エッジだけ
が生成される。その方法は第5a図に関し以下に述べる説
明により更によく理解されよう:スケジュールされるべ
きノードの数は17あるのだから、まず始めに9つのノー
ドが第1ストリーム中のポジションS1.1−S1.9にスケ
ジュールされ、8つのノードが第2ストリーム中のポジ
ションS2.1−S2.8にスケジュールされる。先ず最初
に、ノードN17及びN16はスケジュールされる用意があ
る、と云うのは、N17は親を持たないからであり、N17が
スケジュールされれば、N16はスケジュールされ得るよ
うになるからである。これらのノードは、第1ストリー
ムの最終演算(S1.9)及び第2ストリームの最終演算
(S2.8)として、それぞれスケジュールされる。N16
は、ステップ34の判定を否とする単一サブグラフではな
く、2つのサブグラフのルートであり、ステップ38の判
定は然りとなり、その結果としてステップ28に戻る。ス
テップ28ではノードN15及びN14がスケジュールされる用
意ありと識別され、ステップ32でそれぞれS2.7及びS
1.8としてスケジュールされる。N14は再度、1つのサブ
グラフではなく2つのサブグラフのルートであるので、
ステップ34の判定は又しても否であり、結局ステップ28
に戻ることになり、そこでN10からN13までのノードの識
別はスケジュールされる用意ありとなる。ステップ32で
は、N10及びN11はそれぞれS2.6及びS1.7としてスケジ
ュールされる。再び、S1.8は2つのサブグラフのルー
トであるので、又してもステップ28に戻り、ノードN12
及びN13の識別はスケジュールされる用意ありとなる。N
12及びN13はそれぞれS1.6及びS2.5としてスケジュー
ルされる。その後、N1からN9までのノードがスケジュー
ルされる用意ありと識別され、類似の継起的なステップ
でN1からN9までは対になって: N1;N3がS2.4;S1.5として N2;N4がS2.3;S1.4として N5;N7がS1.3;S2.2として N6;N8がS1.2;S1.1として それぞれ割り当てられる。
プロセッサを横断するエッジが、ノードを逆順序でス
ケジュールすることにより、どのようにしてほぼ最小化
できるか、ということは今や明らかになった。と云うの
は、このアプローチがプロセッサ間に受け渡されるデー
タの量を最小にするように全体のサブグラフを割り当て
るのに役立つからである。その各々が自身のサブグラフ
のルートであるようなノードがスケジュールされると、
ルートであるノードがスケジュールされるにつれて、サ
ブグラフから同数の一番高いノードを同じプロセッサ上
にスケジュールするステップ36によって、コンパイルの
過程が加速される。
第5b図は、第5a図のノードを、第1命令ストリームS1
及び第2命令ストリームS2を表す2つの列に、スケジュ
ーリングの順序に従って再配置したものである。ストリ
ームS1,S2中の演算はそれぞれ、プロセッサP1,P2により
ストリームの下流方向に向かう順序で実行される。同じ
列の中におけるノード間の有向エッジが幾つかあり、そ
れらが「ストリーム内」エッジと呼ばれ、すべてストリ
ームの下流の方に向かっている。列と列の間に生成され
た2つの有向エッジEが、「ストリームを横断する」エ
ッジとか「プロセッサを横断する」エッジとか又は「ス
トリーム間」エッジと名付けられるものである。2つの
ストリームに沿っての命令の実行は相互に関連して変動
しながら進行することもあるから、本発明によるエッジ
Eの同期は、ある限定された数のレジスタチャネルによ
って与えられ、もし必要ならばそのことにより、ストリ
ームS1の中でN14の結果が定まるのを待って書き込みが
終わるまで読み出しを阻止することによって、N15の直
前でストリームS2の実行を一時延期することを保証す
る。同様に、ストリームS1の実行は、ストリームS2の中
のN16の結果が定まるのを待って、N17の直前で一時延期
される。実際、同じレジスタチャネルが(2つの)スト
リーム間エッジEの両方を実行するために再度使用され
得る、と云うのは、これらのエッジの列と列の間を往き
来する順序は、N16がN15よりストリームの下流に位置す
ることによって保証されているからである。
第6a図及び第6b図は、安全に再使用するための条件を
説明するものである。これらの図にはそれぞれ、3つの
命令ストリームSi,Sj,Skが示され、それらの命令ストリ
ームはレジスタチャネルへの書き込み/読み出しの対を
持っており、その各々が書き込み演算“W"から読み出し
演算“R"に向けられているところのストリーム間エッジ
“E"を、強制的に実行するか又は同期させる。この強制
的な実行は、書き込みが終わっていないならば読み出し
を阻止する、というチャネルのセマンティクスによるも
のである。第6a図では、第1のストリーム間エッジは、
ストリームSiでスケジュールされてW1から、そしてスト
リームSjでスケジュールされてR1へ、と方向付けられ
る、一方、第2のストリーム間エッジは、ストリームSj
でR1より下流方向でスケジュールされてW2から、そして
ストリームSkでスケジュールされてR2へ、と方向付けら
れる。W2はR1より後でなければならないから、各エッジ
は同じレジスタチャネルC1に割り当てられることがで
き、そこにはW2が時間的にW1の前に生起したり、R2が時
間的にR1の前に生起したりする可能性は全く無い。第6b
図には、3つのストリーム間エッジが描かれ、1番目の
エッジはW1からR1に向けられてC1に割り当てられ、2番
目のエッジはW2からR2へ向けられてC2に割り当てられ
(それはC1に割り当てられることも出来たのだが)、3
番目のエッジはW3からR3に向けられてそれに対しC1が再
使用される。W2がR1より下流方向にあり、W3がR2より下
流方向にあって、ストリーム間エッジの実行の時間的順
序が保証されているから、この再使用は許されるのであ
る。
第7図には、チャネルレジスタの再使用は許容される
けれども、「事実上は存在する(“implicit")」同期
と呼ばれる追加的な同期を造出するところの更に別の状
態が示される。そこでは、第1のエッジ及び第2のエッ
ジはストリームSiからストリームSjに向けられ、ストリ
ームSi中でW2はW1より下流方向にあり、ストリームSj中
でR2はR1より下流方向にある。もし両方のエッジが共に
同じレジスタチャネルC1により実行されるならば、R1が
生起するまでW2へのC1を阻止する可能性が生じる。この
ことが、R1からW2に向かうストリーム間の事実上は存在
する同期Uによって表されるのである。
第8a図は、第1のストリーム間エッジVが第2のスト
リーム間エッジEにより過剰に同期されている、という
単純な場合を示す。ここではエッジVとエッジEとはそ
れぞれ、ストリームSiの中のW1とW2とからストリームSj
の中のR1とR2とに向けられている。W2はW1より下流方向
にあり、R1はR2より下流方向にあるから、エッジEを強
制的に実行することは、エッジVが強制的に実行される
ということを保証するであろう。別の云い方をすれば、
W2とW1の後にいなければならないし、R1はR2の後にいな
ければならないから、R2はW2より後になるように強制す
ることは、R1がW1より後にあることを保証する。その結
果として、エッジVによって表されるデータの従属性は
レジスタチャネルによって強制的に実行される必要はな
く、その代わりにW1とR1は共用メモリ12に向かうように
することができる。
第8b図は、第2及び第3のエッジEにより造出される
必然的な(implied)同期Tを示す。一般的にいえば、
必然的な同期Tは、一連の同期及び下流方向への動きの
シリーズの、始めから終わりの方向に向かっている。従
って第8b図には、W2からR2への同期と、Skに沿ってR2か
らW3への下流方向に向かう動きと、W3からR3への同期と
が存在する。すると必然的な同期Tは、第8aのルールに
従ってW1からR1に向かうエッジVを過剰な同期とする。
又はその代わりに、エッジVの同期の過剰なことは、一
連の下流方向に向かう動きとW1からR1への同期を直接強
制的に実行することとのシリーズを要求するルールによ
って、直接に論証することもできる。
第9図は、上述のような型の同期の相互の影響を説明
する図である。この図では、第7図におけるようなC1の
再使用によるR1からW3へ向かう事実上は存在する同期U
と共に、W1からR1へのエッジ、W3からW4への下流方向に
向かう動き、及びW4からR4へのエッジが、R1からR4への
必然的な同期Tを造り出し、次にそれがエッジVを過剰
な同期とする。
第10図に示すのは、レジスタチャネル割当てのため
の、本発明による更に別のコンパイル方法のフローチャ
ートであって、その入力はDAGであり、これは第4図に
おけると同様に、ステップ40で複数の命令ストリーム中
にスケジュールされ、その結果ストリーム間エッジEが
識別されている。次にステップ42で、第8b図におけるよ
うな必然的な同期が、第8b図におけると同様に3つ又は
それ以上のストリームの中のエッジ列を識別することに
より付加される。次いでステップ44で、過剰な同期が第
8a図、第8b図又は第9図の原理に従って識別され、その
結果としてストリーム間エッジは、同期過剰のものと同
期過剰でないものと2つのクラスに分割される。同期過
剰のエッジは、ステップ46で共用メモリ12へ書き込んで
読み出すことによりスケジュールされ、一方、同期過剰
でないエッジはレジスタチャネル割当てのために更に分
析される。
ステップ48では、最初の反復又は最初の通過でステッ
プ50に行く分岐が展開され、このステップ50で、チャネ
ル再使用のための同期過剰でないエッジの中の候補が、
第6a図、第6b図におけるような事実上は存在する同期を
生成しないで識別され、チャネルの再使用によりスケジ
ュールされる。最初の反復以外では、ステップ48での分
枝はステップ50をバイパスさせる。その理由は、チャネ
ル再使用のためのそのような候補は既に割り当てられて
いるからである。次にステップ52で、同期過剰でないエ
ッジの残りの数が割当てに使えるチャネルの残りの数を
上回っているかどうかを判定する。もし上回っていなけ
れば残っているエッジがステップ54でスケジュールされ
る。しかも、もし使えるチャネルより多くのエッジが残
っていたらステップ56へ行き、そこでチャネル再使用の
ためのもう1つの候補が識別される。そのような候補は
第7図のようなタイプのものである。次にそこで生成さ
れた事実上は存在する同期がステップ58で付加されて、
それからは以上のステップが繰り返され、付加された事
実上は存在する同期により、もう1つの必然的な同期が
付加されるステップ42からはじまり、ステップ44ではそ
こで同期過剰にされたエッジが識別され、ステップ46で
スケジュールされる。一般的にはこの過程によって、レ
ジスタチャネルの数が典型的なプログラムに対しては十
分であるという前提の下に、完全な同期がレジスタチャ
ネルへのエッジの割当てによって可能になるということ
は今や明らかになった。従って、本発明の原理の典型的
な継起的プログラムへの応用の実例が、第11図、第12図
に関連して以下に論じられる。
第11図は典型的なプログラムのDAGである。これは、C
ACM 14(10),1971年10月,pp.669−675に所載の“ENTCA
F and ENTRE:Evaluation of Normalized Taylor Coeffi
cients of an Analytic Function"というプログラムの
内部ループのプログラムであって、そのDAGは、1985年C
arnegie−Mellon UniversityのPh.D学位論文であるThom
as L.Rodehefferによる“COMPILING ORDINARY PROGRAMS
FOR EXECUTION ON AN ASYNCHRONOUS MULTIPROCESSOR"
から引用している。
第12図は、第11図のDAGを、本発明の原理によりスト
リーム内で順次を付けたノードを持つ4個のストリーム
S1−S4に、再編成したものである。ここで、僅か11のス
トリーム間エッジのみが生成され、そのうち2つの同期
過剰であることに、注意されたい。9つの同期過剰でな
いストリーム間エッジが、C1を2回再使用し、C2を1回
再使用する、ということを考慮に入れると、僅かに6つ
のレジスタチャネルC1−C6により強制的に実行されてい
る。
一般的に云えば、未知のプログラムに対し、同期を保
証するのに必要なレジスタチャネルの最少の数は、各プ
ロセッサにより書き込まれ、そして各々を読み出すため
にはそれぞれ別のプロセッサによるべき種々の異なる値
に対して、十分な数が少なくとも必要なのである。この
ことは、Ncをチャネル数とし、pをプロセッサ数とする
とき、次の関数式すなわち: Nc≧p(p−1) により与えられる。
この同期を保証するのに必要なレジスタチャネルの最
少数は、チャネルがまだ読み出され終わっていないとい
う理由で、どのプロセッサも書き込みを阻止することを
保証するためには十分でないかも知れない。同期を保証
するのに必要なチャネルの最多数は、特定のプログラム
の関数であって、Nbをプログラム基本ブロック中のノー
ドの数とするとき、その上限は: Nc≦Nb(p−1)/2 となる。
本発明の原理を試験プログラムに応用した結果によれ
ば、典型的なプログラムの同期に対してはp(p−1)
個のレジスタチャネルで十分であることが、暗示されて
いる。
本発明は特定ものが詳細に記述されたが、このような
詳細から多数の変形、追加、除去等が本発明の意図及び
範囲内で更に可能である。例えば、ストリーム中へのス
ケジューリングの目的のために、各ノードは1つの高さ
の増分(incremental height)を割り当てられることを
必要とせず、むしろその代わりに期待される演算の時間
長に比例する高さの増分を持つ。従って各ノードは、最
も高い子供の高さをそのノードの高さの増分にプラスし
た値に等しい高さを持つであろう。
【図面の簡単な説明】
第1a図は、本発明の原理による、共用レジスタチャネル
を持つところのマルチプロセッサの概略系統図であり、 第1b図は、第1a図の共用レジスタ・チャネルの1つのビ
ットポジションの組立ての概略図であり、 第2a図は、データに従属する命令のある特定シーケンス
に対するDAG(ループを含まない有向グラフ)の説明的
な図であり、 第2b図は、第2a図のDAG中のノードの高さ及び深さを示
すチャートを示す図であり、 第3図は、第2a図のDAGから演算ラベルを除き、素朴な
割り当て方法による2つの並列命令ストリームの間のノ
ードのスケジューリングの結果を示す図であり、 第4図は、本発明による並列命令ストリームの間のノー
ドをスケジュールする方法を説明するフローチャートを
示す図であり、 第5a図は、第3図に類似のDAGを示す図であるが、これ
は第4図のフローチャートによる2つの並列命令ストリ
ームにスケジュールするノードのスケジューリングを示
しており、 第5b図は、第5a図のDAGを、スケジューリングによって
命令ストリームに再編成した図であり、 第6a図及び第6b図は、チャネルの安全な再使用を説明す
る並列命令ストリームを描いた図であり、 第7図は、チャネルの再使用により生じる「事実上は存
在する(“implicit")」同期を説明する並列命令スト
リームの概略図であり、 第8a図は、単純な同期の過剰を説明する命令ストリーム
の概略図であり、 第8b図は、必然的な(implied)同期に関連する過剰な
同期を説明する命令ストリームの概略図であり、 第9図は、必然的な同期及び事実上は存在する同期に関
連する過剰な同期を説明する命令ストリームの概略図で
あり、 第10図は、レジスタチャネルの割当てに関連する過剰な
同期を識別する本発明の方法を説明するフローチャート
を示す図であり、 第11図は、典型的なプログラムの内部ループのDAGの図
であり、 第12図は、第11図のDAGを並列の命令ストリームに再編
成したグラフを示す図である。 〔符号の説明〕 10……マルチプロセッサ 12……共用ランダムアクセスメモリ(shared RAM) 14……アドレス及びデータ・ライン 16……共用レジスタチャネル 18……データ・アドレス・制御ライン 20……データ語を記憶する領域 22……同期ビット用の追加記憶領域
フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 15/16 EPAT WPI

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】各ノードが1つの演算を表し;それらのノ
    ードを結ぶエッジの各々は、そのエッジによって結ばれ
    ているノードの間のデータの従属性を表し;プログラム
    がそれらのノードとエッジとによるDAG(ループを含ま
    ない有向グラフ)として記述される;ときに、データに
    従属する演算のプログラムを、複数の並列な命令ストリ
    ームのうちのどれか1つにスケジュールするためにコン
    パイルする方法であって、 上記並列な命令ストリームの各々は、複数のデジタルプ
    ロセッサのうちのどれか1つに演算を実行させるための
    ものであり、また上記方法は更に、プロセッサとプロセ
    ッサとの間のデータの転送を、複数のプロセッサ間デー
    タ転送手段の上でスケジュールするものであるところの
    コンパイル方法において、 該方法は次の諸ステップ、すなわち: − 上記DAGの各エッジは、そのエッジにより結ばれる
    両端のノードの表す演算が、それぞれ別の命令ストリー
    ム内に在るか、それとも同じ命令ストリーム内に在るか
    に従って、ストリーム間エッジ、或いはストリーム内エ
    ッジと呼ばれるものとし、上記並列な命令ストリームの
    うちのどれか1つに上記プログラムの演算をスケジュー
    ルするに当たり、各ストリーム内でもう1つ別の演算に
    対するデータの従属性を持つ各演算は、そのストリーム
    内で上記もう1つ別の演算の後にスケジュールされるよ
    うに、演算をスケジュールするステップである第1スケ
    ジューリングステップ; − 上記ストリーム間エッジのうちから同期が過剰なエ
    ッジを見分けるステップである第1識別ステップ;及び − 同期が過剰ではないストリーム間エッジに対して、
    上記プロセッサ間データ転送手段の上でデータの転送を
    同期させることをスケジュールするステップである第2
    スケジューリングステップ; を含むことを特徴とするコンパイル方法。
  2. 【請求項2】請求項1に記載のコンパイル方法におい
    て、演算をスケジュールする上記第1スケジューリング
    ステップは、ストリーム間エッジの数をほぼ最少にする
    ようなやり方で実行されることを特徴とするコンパイル
    方法。
  3. 【請求項3】請求項1に記載のコンパイル方法であっ
    て、上記演算をスケジュールする第1スケジューリング
    ステップを逆の順序で行う、すなわち最後に実行される
    演算を最初にスケジュールするという順序で行う方法に
    おいて、 該方法は次の諸ステップ、すなわち: − それが実行できるようになる以前に継起的に実行し
    なければならない他の演算の数が最大であるところの演
    算を第1演算と呼ぶとき、スケジュールされていない演
    算のうちから複数の第1演算を見分けるステップである
    第2識別ステップ;及び − 上記複数の第1演算のうちから種々の異なるストリ
    ームに演算をスケジュールするとともに、スケジュール
    された第1演算を表すノードからスケジュールされた演
    算を表すノードに向かうストリーム間エッジの数をほぼ
    最少にするステップである第3スケジューリングステッ
    プ; を含むことを特徴とするコンパイル方法。
  4. 【請求項4】請求項3に記載のコンパイル方法におい
    て、演算をスケジュールする上記第1スケジューリング
    ステップは、次の諸ステップ、すなわち: − 上記DAGのサブグラフを見分けるステップであっ
    て、各サブグラフは上記複数の第1演算のスケジュール
    された演算のうちから或る特定の演算に対応するもので
    あり、それらのサブグラフは上記特定の演算を表すノー
    ドと、上記特定の演算と直接又は間接にデータの従属性
    を持つ演算を表すノードとを含むものであるところのサ
    ブグラフを見分けるステップである第3識別ステップ;
    及び − もし可能ならば、各サブグラフのノードを同数だ
    け、そのサブグラフ中の上記特定の演算と同じストリー
    ムにスケジュールするステップであって、この同数のノ
    ードをスケジュールするスケジューリングは、上記特定
    の演算を表すノードからの距離が増加する順序で定めら
    れるところのステップである第4スケジューリングステ
    ップ; を更に含むことを特徴とするコンパイル方法。
  5. 【請求項5】請求項4に記載のコンパイル方法におい
    て、該方法は、上記第4スケジューリングステップの後
    で上記第2識別ステップを繰り返すことを更に含むこと
    を特徴とするコンパイル方法。
  6. 【請求項6】請求項1に記載のコンパイル方法におい
    て、上記第2スケジューリングステップが、同期が過剰
    でない上記ストリーム間エッジのうちから、スケジュー
    ルするための候補として一定の順序で定められなければ
    ならないデータの従属性を表すエッジを、同じプロセッ
    サ間データ転送手段を再使用することにより、見分ける
    ステップである第4識別ステップを含むことを特徴とす
    るコンパイル方法。
  7. 【請求項7】請求項6に記載のコンパイル方法におい
    て、上記第4識別ステップは、同じプロセッサ間データ
    転送手段を再使用することによりケジュールするための
    候補を見分けるもので、この再使用は上記データ転送手
    段への書き込みを阻止する可能性により「事実上は存在
    する同期」を生じさせるものではないことを特徴とする
    コンパイル方法。
  8. 【請求項8】請求項6に記載のコンパイル方法におい
    て、 再使用されるデータ転送手段への読み出しを阻止する可
    能性により、事実上は存在する同期を見分ける識別ステ
    ップ;及び 上記事実上は存在する同期により同期が過剰となる更に
    別のストリーム間エッジを見分ける識別ステップ; を更に含むことを特徴とするコンパイル方法。
JP2224510A 1989-08-29 1990-08-28 並列プロセッサで処理する並列な命令ストリームを同期させる方法 Expired - Lifetime JP2980178B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US400,178 1982-07-20
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

Publications (2)

Publication Number Publication Date
JPH0397059A JPH0397059A (ja) 1991-04-23
JP2980178B2 true 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)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68927946T2 (de) * 1988-08-02 1997-10-16 Philips Electronics Nv Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
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
AU4417297A (en) * 1996-09-20 1998-04-14 Comsat Corporation Demodulation of asynchronously sampled data by means of detection-transition sample estimation in a shared 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 コンパイラ並列化スケジュール方法
JP2002268895A (ja) * 2001-03-09 2002-09-20 Nec Corp 命令スケジューリング装置及び命令スケジューリング方法
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
US7140019B2 (en) * 2002-06-28 2006-11-21 Motorola, Inc. Scheduler of program instructions for streaming vector processor having interconnected functional units
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
US8271993B2 (en) * 2005-03-04 2012-09-18 Hewlett-Packard Development Company, L.P. Method and apparatus for facilitating pipeline throughput
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
US7856544B2 (en) * 2008-08-18 2010-12-21 International Business Machines Corporation Stream processing in super node clusters of processors assigned with stream computation graph kernels and coupled by stream traffic optical links
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
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
US20120109928A1 (en) * 2010-10-29 2012-05-03 Fujitsu Limited Synchronization scheme 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
US9513976B2 (en) * 2011-12-30 2016-12-06 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
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
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
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
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
JP6489985B2 (ja) * 2015-09-24 2019-03-27 ルネサスエレクトロニクス株式会社 プログラム開発支援装置およびプログラム開発支援ソフトウェア
US11151446B2 (en) 2015-10-28 2021-10-19 Google Llc Stream-based accelerator processing of computational graphs
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
US10990326B2 (en) 2017-05-31 2021-04-27 Fmad Engineering Kabushiki Gaisha High-speed replay of captured data packets
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2980178B2 (ja) 並列プロセッサで処理する並列な命令ストリームを同期させる方法
US5802374A (en) Synchronizing parallel processors using barriers extending over specific multiple-instruction regions in each instruction stream
Rau Iterative modulo scheduling: An algorithm for software pipelining loops
US6044222A (en) System, method, and program product for loop instruction scheduling hardware lookahead
EP0010934B1 (en) An information handling system
EP0449661B1 (en) Computer for Simultaneously executing plural instructions
US5887174A (en) System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots
JP2738692B2 (ja) 並列化コンパイル方法
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US5386562A (en) Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop
JP3687982B2 (ja) メモリ回路および機能ユニットのグループを備えた処理装置
Bala et al. Efficient instruction scheduling using finite state automata
Ly et al. Scheduling using behavioral templates
US5408658A (en) Self-scheduling parallel computer system and method
EP0403014A2 (en) Apparatus and method for collective branching in a multiple instruction stream multiprocessor
JP2001282549A (ja) プログラム変換装置及び方法並びに記録媒体
JPH07191847A (ja) 静的インタリーブを用いたマルチスレッドマイクロコンピュータ
EP0745241B1 (en) Exception recovery in a data processing system
US20080163181A1 (en) Method and apparatus for merging critical sections
US5274793A (en) Automatic logic generation method for pipeline processor
Beer Concepts, design, and performance analysis of a parallel prolog machine
JP3311381B2 (ja) コンパイラにおける命令スケジューリング処理方法
Lah et al. Tree compaction of microprograms
JP3675623B2 (ja) プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
Carver et al. Deterministic execution testing of concurrent Ada programs

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