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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/458—Synchronisation, 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>は効果的に活用するこ
とが更に困難である。
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"という文
献を参照)プログラムの継起的な部分に在るループ外の
並列性を検出し且つスケジュールしたり、またループを
解いてループ・レベルの並列性をループ外に並列性に変
換することにより、ループ・レベルの並列性を活用した
りもする。
チしたロックステップ実行命令(lockstep executing i
nstructions)中で動作する複数のプロセッサから成
る。長い命令語は各命令中の幾つかの粒度の細かい演算
の開始を許容し、それによって多数の異なるプロセッサ
により並列の実行をするようスケジュールされるであろ
う演算を許容する。プロセッサのロックステップ演算は
プロセッサが同期していることを暗黙のうちに(implic
itly)保証するが、他方ではVLIW機械の速度は、走行中
に発生するところのコンパイル時に予想できなかったイ
ベントにより、いくつかの妥協をすることになる。例え
ばメモリ・バンク・アクセスの衝突は、ある演算に対し
要求されるオペランドがコンパイルの時点では判ってい
ないかも知れないから、必ず避けられるとは限らない。
そのような走行中のイベントは、ある長い命令中の演算
の1つの完了を遅延させる可能性があり、それは全命令
の完了を遅延させるだろう。
キテクチャーに拡大することは、ある1つのプロセッサ
が発展させ、もう1つのプロセッサが必要とするところ
のデータを、該もう1つのプロセッサが蓄積手段から読
み出そうと意図するときには、上記ある1つのプロセッ
サにより共用の蓄積手段に既に書き込んであることを保
証するために、並列プロセッサを同期させる手段が必要
である。また、共用の蓄積手段を使用してデータがプロ
セッサ間で受け渡されることを可能にするには、更にも
う1つの同期をとって、メモリ位置内のデータは、それ
を必要とするすべてのプロセッサにより、他のデータが
その位置へ書き込まれる前に既に読み出されていること
を保証することが必要である。
ム中に障壁(barriers)を設けることであって、これは
本出願と同一の出願人が1988年8月2日に出願した米国
特許出願第227,276号(特願平1−198085号すなわち特
開平2−110763号に相当する)に説明してある通り、共
用メモリに書き込むとか共用メモリから読み出すという
ようなプロセッサを横断するイベントの時間的な順序を
保証する。本発明においては、並列プロセッサはそれと
は別のやり方で同期を取っている;すなわちストリーム
を横断する従属データを同期させて通信することにより
同期を取っているのである。
ータの同期通信が可能な多数のチャネルを実装し、(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−ループを
含まない有向グラフ)として、継起的プログラムが先ず
始めに記述され、それらのノードが多数の命令ストリー
ムへとスケジュールされる。そうすると、ノード間のエ
ッジは、ストリーム内エッジであるか又はストリーム間
エッジであるか、のいずれかである。スケジュールの方
法としては、ストリーム内エッジがストリームの下流を
向いて、そのストリーム内エッジにより表されるデータ
従属性を暗黙のうちに強制する、というやり方によっ
て、ストリームの中でノードが順序付けられるようにな
っているのである。ストリーム間エッジは、ストリーム
を横断する(又はプロセッサを横断する)データ従属性
を表し、それはプロセッサ間のデータの転送を必要とす
る。
リームを横断するエッジを見分けて区別し、それにより
同期の過剰でないストリームを横断するエッジが、レジ
スタチャネルの形で実装される限定された数の同期デー
タ転送手段上で書き込み・読み出しの対としてスケジュ
ールされることを許容する。
ルしてストリームとする方法が、結果としてもたらされ
るストリーム間エッジの数をほぼ最小にするように選択
される、というものである。このことは、処理に対して
逆の順序でスケジューリングを決定することにより達成
され、特に、グラフ中で最高の高さをもつスケジュール
されていないノードを先ず初めに見分けて、続いてそれ
らのノードはストリーム間エッジの生成を最小にするよ
うにスケジュールされて他のストリームとなることによ
り達成される。この方法の更に別の特徴は、最高の高さ
を持つノードがスケジュールされた後に、これらのノー
ドからルートを持つサブグラフ(rooted subgraph)が
見分けられ、各サブグラフから同数のノードがノードの
高さの下がる順序でスケジュールされて、ルートとなる
ノード(rooting nodes)としてそれぞれ同じストリー
ムになる、というものである。上記コンパイルする方法
のもう1つの別の特徴は、同じ同期データ転送手段を再
使用するために、候補となるストリーム間エッジのうち
からの見分けを行うことである。
送手段への書き込みの阻止の可能性によって生じる事実
上は存在する同期(implicit synchronizations)を見
分けることと、それにより同期が過剰とされたそれらの
エッジのストリーム間エッジのうちから更に見分けを行
うこととによって特徴付けられる。
ッサを横断するデータ従属性の数を減少させ或いはそれ
を最小にすることによって生じる本発明の種々の特徴
は、マルチプロセッサが粒度の細かい並列性を典型的な
プログラムの中で効果的に活用することを可能にし、ま
た一方で、対応する並列プロセッサを同期させるために
は、限定された数のレジスタチャネルを実装することが
必要とされるのみである。
べる添付図面を引用した好適実施例の詳細な説明により
明らかにされるであろう。
ム(MIMD−Multiple Instruction stream Multiple Dat
a stream)の形で組織されているマルチプロセッサ10が
示される。このマルチプロセッサは、複数個(説明の便
宜上その数を4とする)のプロセッサP1−P4を有し、こ
れらのプロセッサは、それぞれが同数の命令ストリーム
S1−S4で与えられる継起的な命令を実行する。これらの
命令ストリームS1−S4は、適切な命令メモリ手段(図示
していない)からプロセッサP1−P4への入力である。同
じく図示していないが、各プロセッサはそれぞれが自分
自身の内部レジスタを持ち、また恐らくそれぞれが自分
自身のメモリを持っており、それらのメモリは、プロセ
ッサにより造り出されるデータを、該プロセッサに対す
る命令ストリームの中で下流方向への演算に関連して後
で使用するのに備えて、記憶しておく手段を与えるもの
である。
セスメモリ(RAM)12を含み、この共用RAM12は比較的多
数のメモリ位置を持っており、それらのメモリ位置は、
プロセッサP1−P4のどれからも、各プロセッサと共用メ
モリ12とを結ぶアドレス及びデータ・ライン14を介し
て、選択的に読み出し又は書き込みをすることのできる
ものである。
タ又はストリームを横断する従属データを、同期させる
ための他の手段を用いずにプロセッサ間で受け渡すのに
用いることはできない。その理由は、共用メモリ12が記
憶した値を、それぞれ書き込まれる(すなわちメモリ位
置が最初に満たされている)前には読み出されないこと
を保証し、また或るメモリ位置中に現在ある値が読み出
された(すなわちメモリ位置が最初に空になった)後ま
で該メモリ位置には新しい値を書き込まないことを保証
するための手段を、それ自身では持たないからである。
ル16が設けられて、相対的に速いほぼ同じ速度でプロセ
ッサP1−P4のどれからでもアクセスすることができ、そ
れにより各プロセッサからデータ・アドレス・制御ライ
ン18を介して該共用レジスタチャネル16の内部レジスタ
の1つにアクセスできる。しかしこれらのレジスタチャ
ネル16はまた、通信特性(communication attributes)
すなわちチャネルのセマンティクス(semantics of cha
nnels)をも有しており、同期させるという目的で、読
み出し又は書き込みを阻止できるようにしてある。共用
レジスタチャネル16の各々は、データ語を記憶する領域
20と同期ビット用の追加領域22とを持っており、領域20
には共用メモリ位置に格納できるのと同じ形式すなち同
じビット数のデータ語を記憶し、追加領域22の同期ビッ
トはレジスタチャネルが一杯になっているかそれとも空
であるかを示す。
通常の読み出し命令や書き込み命令を含み、また共用レ
ジスタチャネル16に向けて次の命令を含むことが好適で
ある: 「クリア」−同期ビットが“0"に設定され、これはレ
ジスタチャネルが空であることを示す; 「非破壊読み出し」−同期ビットが“1"すなわち該チ
ャネルが一杯であることを示しているときに、読み出し
ができる。非破壊読み出しによって同期ビットは不変の
ままとされ、次の読み出しを可能とする。同期ビットが
“0"である限り、該レジスタチャネルは読み出しを阻止
されている; 「破壊読み出し」−非破壊読み出しと同じであるが、
但し読み出しによって同期ビットが“0"に設定される点
が異なる; 「非破壊書き込み」−もし同期ビットが“0"ならば、
数値が書き込まれ、また同期ビットが“1"に設定され
て、レジスタチャネルが一杯であることを示す。同期ビ
ットが“1"である限り、該レジスタチャネルは書き込み
を阻止されている; 「破壊書き込み」−非破壊書き込みと同じであるが、
但したとえ同期ビットが“1"であっても、書き込みはな
される点が異なる。書き込み後には同期ビットは“1"と
なる。
パイルして生成され、それによって種々の異なるプロセ
ッサ上で並列に実行される演算のシーケンスを見分ける
ことにより、プログラム中の粒度の細かい並列性の利点
を活用する。このことは、継起的なプログラムにおける
演算と演算の間で、データの従属性又はイベントの従属
性を分析することを要求する。
ムのステップとして 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の中の最大の深さや最小の高さのノードが通常
は最初に実行され、また最小の深さや最大の高さのノー
ドが通常は最後に実行されるように、ノードが選択され
なければならないことは明らかであろう。
ではノードを○で表し、引用番号はN1−N17を用い、ま
たここではDAGの形のみが重要なので、演算の内容は除
いてある。各ノードには記号S1.1−S1.9及びS2.1−
S2.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つ
のエッジが、プロセッサ間で実行されることを必要とす
るデータ従属性を表すストリーム間のエッジ又はストリ
ームを横断するエッジである。
ノードをスケジュールするためのコンパイル方法のフロ
ーチャートであって、これは生成されるストリーム間エ
ッジの数を最少にするものである。ここではノードのス
ケジューリングが、ノードの深さではなくノードの高さ
に基づいて、逆の順序で決定される。こうして、第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によって、コンパイルの
過程が加速される。
及び第2命令ストリームS2を表す2つの列に、スケジュ
ーリングの順序に従って再配置したものである。ストリ
ームS1,S2中の演算はそれぞれ、プロセッサP1,P2により
ストリームの下流方向に向かう順序で実行される。同じ
列の中におけるノード間の有向エッジが幾つかあり、そ
れらが「ストリーム内」エッジと呼ばれ、すべてストリ
ームの下流の方に向かっている。列と列の間に生成され
た2つの有向エッジEが、「ストリームを横断する」エ
ッジとか「プロセッサを横断する」エッジとか又は「ス
トリーム間」エッジと名付けられるものである。2つの
ストリームに沿っての命令の実行は相互に関連して変動
しながら進行することもあるから、本発明によるエッジ
Eの同期は、ある限定された数のレジスタチャネルによ
って与えられ、もし必要ならばそのことにより、ストリ
ームS1の中でN14の結果が定まるのを待って書き込みが
終わるまで読み出しを阻止することによって、N15の直
前でストリームS2の実行を一時延期することを保証す
る。同様に、ストリームS1の実行は、ストリームS2の中
のN16の結果が定まるのを待って、N17の直前で一時延期
される。実際、同じレジスタチャネルが(2つの)スト
リーム間エッジEの両方を実行するために再度使用され
得る、と云うのは、これらのエッジの列と列の間を往き
来する順序は、N16がN15よりストリームの下流に位置す
ることによって保証されているからである。
説明するものである。これらの図にはそれぞれ、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より下
流方向にあって、ストリーム間エッジの実行の時間的順
序が保証されているから、この再使用は許されるのであ
る。
けれども、「事実上は存在する(“implicit")」同期
と呼ばれる追加的な同期を造出するところの更に別の状
態が示される。そこでは、第1のエッジ及び第2のエッ
ジはストリームSiからストリームSjに向けられ、ストリ
ームSi中でW2はW1より下流方向にあり、ストリームSj中
でR2はR1より下流方向にある。もし両方のエッジが共に
同じレジスタチャネルC1により実行されるならば、R1が
生起するまでW2へのC1を阻止する可能性が生じる。この
ことが、R1からW2に向かうストリーム間の事実上は存在
する同期Uによって表されるのである。
リーム間エッジ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に向かうように
することができる。
必然的な(implied)同期Tを示す。一般的にいえば、
必然的な同期Tは、一連の同期及び下流方向への動きの
シリーズの、始めから終わりの方向に向かっている。従
って第8b図には、W2からR2への同期と、Skに沿ってR2か
らW3への下流方向に向かう動きと、W3からR3への同期と
が存在する。すると必然的な同期Tは、第8aのルールに
従ってW1からR1に向かうエッジVを過剰な同期とする。
又はその代わりに、エッジVの同期の過剰なことは、一
連の下流方向に向かう動きとW1からR1への同期を直接強
制的に実行することとのシリーズを要求するルールによ
って、直接に論証することもできる。
する図である。この図では、第7図におけるようなC1の
再使用によるR1からW3へ向かう事実上は存在する同期U
と共に、W1からR1へのエッジ、W3からW4への下流方向に
向かう動き、及びW4からR4へのエッジが、R1からR4への
必然的な同期Tを造り出し、次にそれがエッジVを過剰
な同期とする。
の、本発明による更に別のコンパイル方法のフローチャ
ートであって、その入力はDAGであり、これは第4図に
おけると同様に、ステップ40で複数の命令ストリーム中
にスケジュールされ、その結果ストリーム間エッジEが
識別されている。次にステップ42で、第8b図におけるよ
うな必然的な同期が、第8b図におけると同様に3つ又は
それ以上のストリームの中のエッジ列を識別することに
より付加される。次いでステップ44で、過剰な同期が第
8a図、第8b図又は第9図の原理に従って識別され、その
結果としてストリーム間エッジは、同期過剰のものと同
期過剰でないものと2つのクラスに分割される。同期過
剰のエッジは、ステップ46で共用メモリ12へ書き込んで
読み出すことによりスケジュールされ、一方、同期過剰
でないエッジはレジスタチャネル割当てのために更に分
析される。
プ50に行く分岐が展開され、このステップ50で、チャネ
ル再使用のための同期過剰でないエッジの中の候補が、
第6a図、第6b図におけるような事実上は存在する同期を
生成しないで識別され、チャネルの再使用によりスケジ
ュールされる。最初の反復以外では、ステップ48での分
枝はステップ50をバイパスさせる。その理由は、チャネ
ル再使用のためのそのような候補は既に割り当てられて
いるからである。次にステップ52で、同期過剰でないエ
ッジの残りの数が割当てに使えるチャネルの残りの数を
上回っているかどうかを判定する。もし上回っていなけ
れば残っているエッジがステップ54でスケジュールされ
る。しかも、もし使えるチャネルより多くのエッジが残
っていたらステップ56へ行き、そこでチャネル再使用の
ためのもう1つの候補が識別される。そのような候補は
第7図のようなタイプのものである。次にそこで生成さ
れた事実上は存在する同期がステップ58で付加されて、
それからは以上のステップが繰り返され、付加された事
実上は存在する同期により、もう1つの必然的な同期が
付加されるステップ42からはじまり、ステップ44ではそ
こで同期過剰にされたエッジが識別され、ステップ46で
スケジュールされる。一般的にはこの過程によって、レ
ジスタチャネルの数が典型的なプログラムに対しては十
分であるという前提の下に、完全な同期がレジスタチャ
ネルへのエッジの割当てによって可能になるということ
は今や明らかになった。従って、本発明の原理の典型的
な継起的プログラムへの応用の実例が、第11図、第12図
に関連して以下に論じられる。
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"
から引用している。
リーム内で順次を付けたノードを持つ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)を割り当てられることを
必要とせず、むしろその代わりに期待される演算の時間
長に比例する高さの増分を持つ。従って各ノードは、最
も高い子供の高さをそのノードの高さの増分にプラスし
た値に等しい高さを持つであろう。
を持つところのマルチプロセッサの概略系統図であり、 第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……同期ビット用の追加記憶領域
Claims (8)
- 【請求項1】各ノードが1つの演算を表し;それらのノ
ードを結ぶエッジの各々は、そのエッジによって結ばれ
ているノードの間のデータの従属性を表し;プログラム
がそれらのノードとエッジとによるDAG(ループを含ま
ない有向グラフ)として記述される;ときに、データに
従属する演算のプログラムを、複数の並列な命令ストリ
ームのうちのどれか1つにスケジュールするためにコン
パイルする方法であって、 上記並列な命令ストリームの各々は、複数のデジタルプ
ロセッサのうちのどれか1つに演算を実行させるための
ものであり、また上記方法は更に、プロセッサとプロセ
ッサとの間のデータの転送を、複数のプロセッサ間デー
タ転送手段の上でスケジュールするものであるところの
コンパイル方法において、 該方法は次の諸ステップ、すなわち: − 上記DAGの各エッジは、そのエッジにより結ばれる
両端のノードの表す演算が、それぞれ別の命令ストリー
ム内に在るか、それとも同じ命令ストリーム内に在るか
に従って、ストリーム間エッジ、或いはストリーム内エ
ッジと呼ばれるものとし、上記並列な命令ストリームの
うちのどれか1つに上記プログラムの演算をスケジュー
ルするに当たり、各ストリーム内でもう1つ別の演算に
対するデータの従属性を持つ各演算は、そのストリーム
内で上記もう1つ別の演算の後にスケジュールされるよ
うに、演算をスケジュールするステップである第1スケ
ジューリングステップ; − 上記ストリーム間エッジのうちから同期が過剰なエ
ッジを見分けるステップである第1識別ステップ;及び − 同期が過剰ではないストリーム間エッジに対して、
上記プロセッサ間データ転送手段の上でデータの転送を
同期させることをスケジュールするステップである第2
スケジューリングステップ; を含むことを特徴とするコンパイル方法。 - 【請求項2】請求項1に記載のコンパイル方法におい
て、演算をスケジュールする上記第1スケジューリング
ステップは、ストリーム間エッジの数をほぼ最少にする
ようなやり方で実行されることを特徴とするコンパイル
方法。 - 【請求項3】請求項1に記載のコンパイル方法であっ
て、上記演算をスケジュールする第1スケジューリング
ステップを逆の順序で行う、すなわち最後に実行される
演算を最初にスケジュールするという順序で行う方法に
おいて、 該方法は次の諸ステップ、すなわち: − それが実行できるようになる以前に継起的に実行し
なければならない他の演算の数が最大であるところの演
算を第1演算と呼ぶとき、スケジュールされていない演
算のうちから複数の第1演算を見分けるステップである
第2識別ステップ;及び − 上記複数の第1演算のうちから種々の異なるストリ
ームに演算をスケジュールするとともに、スケジュール
された第1演算を表すノードからスケジュールされた演
算を表すノードに向かうストリーム間エッジの数をほぼ
最少にするステップである第3スケジューリングステッ
プ; を含むことを特徴とするコンパイル方法。 - 【請求項4】請求項3に記載のコンパイル方法におい
て、演算をスケジュールする上記第1スケジューリング
ステップは、次の諸ステップ、すなわち: − 上記DAGのサブグラフを見分けるステップであっ
て、各サブグラフは上記複数の第1演算のスケジュール
された演算のうちから或る特定の演算に対応するもので
あり、それらのサブグラフは上記特定の演算を表すノー
ドと、上記特定の演算と直接又は間接にデータの従属性
を持つ演算を表すノードとを含むものであるところのサ
ブグラフを見分けるステップである第3識別ステップ;
及び − もし可能ならば、各サブグラフのノードを同数だ
け、そのサブグラフ中の上記特定の演算と同じストリー
ムにスケジュールするステップであって、この同数のノ
ードをスケジュールするスケジューリングは、上記特定
の演算を表すノードからの距離が増加する順序で定めら
れるところのステップである第4スケジューリングステ
ップ; を更に含むことを特徴とするコンパイル方法。 - 【請求項5】請求項4に記載のコンパイル方法におい
て、該方法は、上記第4スケジューリングステップの後
で上記第2識別ステップを繰り返すことを更に含むこと
を特徴とするコンパイル方法。 - 【請求項6】請求項1に記載のコンパイル方法におい
て、上記第2スケジューリングステップが、同期が過剰
でない上記ストリーム間エッジのうちから、スケジュー
ルするための候補として一定の順序で定められなければ
ならないデータの従属性を表すエッジを、同じプロセッ
サ間データ転送手段を再使用することにより、見分ける
ステップである第4識別ステップを含むことを特徴とす
るコンパイル方法。 - 【請求項7】請求項6に記載のコンパイル方法におい
て、上記第4識別ステップは、同じプロセッサ間データ
転送手段を再使用することによりケジュールするための
候補を見分けるもので、この再使用は上記データ転送手
段への書き込みを阻止する可能性により「事実上は存在
する同期」を生じさせるものではないことを特徴とする
コンパイル方法。 - 【請求項8】請求項6に記載のコンパイル方法におい
て、 再使用されるデータ転送手段への読み出しを阻止する可
能性により、事実上は存在する同期を見分ける識別ステ
ップ;及び 上記事実上は存在する同期により同期が過剰となる更に
別のストリーム間エッジを見分ける識別ステップ; を更に含むことを特徴とするコンパイル方法。
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)
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)
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 |
-
1989
- 1989-08-29 US US07/400,178 patent/US5317734A/en not_active Expired - Lifetime
-
1990
- 1990-08-27 DE DE69031100T patent/DE69031100T2/de not_active Expired - Lifetime
- 1990-08-27 EP EP90202285A patent/EP0415497B1/en not_active Expired - Lifetime
- 1990-08-28 JP JP2224510A patent/JP2980178B2/ja not_active Expired - Lifetime
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 |