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
Links
- 238000000034 method Methods 0.000 title claims description 46
- 230000001360 synchronised effect Effects 0.000 claims abstract description 27
- 238000012546 transfer Methods 0.000 claims abstract description 13
- 230000001419 dependent effect Effects 0.000 claims description 22
- 230000000903 blocking effect Effects 0.000 claims description 5
- 230000002441 reversible effect Effects 0.000 claims description 5
- 230000002123 temporal effect Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000001066 destructive effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- UKFTXGSXCYEAKH-UHFFFAOYSA-N dicyanomercury 1,3,5,7-tetrazatricyclo[3.3.1.13,7]decane Chemical compound N#C[Hg]C#N.N#C[Hg]C#N.C1N2CN3CN1CN(C2)C3 UKFTXGSXCYEAKH-UHFFFAOYSA-N 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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)
Abstract
め要約のデータは記録されません。
Description
平行プロセッサを持つマルチプロセッサの同期を取る方
l去に関し、ストリーム生成用のコンパイル方法にも関
する。特に本発明は、ストリームに跨がるイベント又は
データ従属性をほぼ最小にする技術に関し、またプロセ
ッサ間のイベント又はデータ従属性をプロセッサ間の通
信用チャネルを使って同期的に実行することに関する。
同的に実行するための二二プロセッサのそれを超える実
行速度の増加は、異なるプロセッサ上で同時に行われる
平行操作を可能とするプログラ.ムの微粒子平行性(f
ine−grained parallelism)の
有効な開発に依存する。ループ・レベルの(loopl
evel)平行性は一般的に市販のマルチプロセッサ・
システムで有効に開発されているが、その一方でプログ
ラムの逐次的な部分に現れる超ループ(ループ外または
非ループ) [extra−loop(out−ofl
oop or non−1oop)]平行性は有効に明
確化することがさらに困難である。
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所載、を参照)、またルー
プを巻き戻してループ・レベルの平行性を超ループ平行
性に変換することによりループ・レベルの平行性も開発
している。
チしたロックステップ(lockstep)実行命令中
に動作するマルチプル・プロセッサから或る。長い命令
語は、異なるプロセッサによる平行実行用にスケジュー
ルされる動作を許して、各命令中の数個の微粒子動作の
開始を許す。プロセッサのロックステップ動作はプロセ
ッサが同期していることを暗黙に保証しているが、一方
でVLIW機械の速度は、走行中に発生するコンパイル
時には予想できなかったイベントにより、いくつかの妥
協をする。例えばメモリ・バンク・アクセスの衝突は、
ある操作に対し要求される操作対象がコンパイル時には
解っていないかも知れないから、必ず避けられるとは限
らない。そのような走行中のイベントは、ある長い命令
中の動作の1つの完了を遅延させる可能性があり、それ
は全命令の完了を遅延させるだろう。
・アーキテクチュアへの拡大は、ある1つのプロセッサ
により展開され他のプロセッサにより必要とされるデー
タを、該他のプロセッサが蓄積手段から読み出そうと意
図する時には既に始めのプロセッサにより共用の蓄積手
段に書き込んであることを保証するために、平行プロセ
ッサの同期を取る手段が要求される。データがプロセッ
サ間を受け渡されることを可能にするための共用蓄積手
段の使用もまた、メモリ位置内のデータがそれを必要と
する総てのプロセッサにより、他のデータがそこへ書き
込まれる前に既に読み出されていることを保証するため
に、更にもうlっの同期を取ることを要求する。
中に障壁(barriers)を設けることで、これは
同じ出願人によりl988年8月2日に出願された米国
特許出願第227, 276号(特願平1−19808
5号すなわち特開平2−110763号に相当)に説明
してある通り、共用メモリに書き込むとか共用メモリか
ら読み出すというようなプロセッサに跨がるイベントの
一時的指令を保証するものである。本発明では平行プロ
セッサは別のやり方で同期を取っている、すなわちこれ
らのプロセッサの同期を取るためにプロセッサ間の従属
データのストリームに跨がる通信を用いることによる。
“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つの特徴は、
最大の高さを持つノードがスケジュールされた後に該ノ
ードから枝分かれした(rooted)サブグラフが識
別され、各サブグラフから同数のノードがノードの高さ
の小さくなる順序でルーティング・ノードとして同じそ
れぞれのストリーム中へスケジュールされることである
。コンパイル方法のもう1つの特徴は、同じ同期データ
転移手段の再使用のための候補のストリーム間エッジの
中での識別である。
手段への書き込みの阻止の可能性によりもたらされる暗
黙の同期の識別と、それにより同期が冗長とされたスト
リーム間エッジの中でのまた別の識別とによって特徴付
けられる。
タ従属性の数を減らすか又は最小にすることによる本発
明の種々の特徴は、典型的なプログラム中でマルチプロ
セッサが微粒子平行性を効果的に開発することを可能な
ものとし、一方ではそれに対する平行プロセッサの同期
を採るためには、.限定された数のレジスタ・チャネル
のみが要求されるのである。
添付図面を引用した好適実施例の詳細な説明により明ら
かにされよう。
マルチプル・データ・ストリーム(MIMD)形体で組
織されたマルチプロセッサlOは、複数個のプロセッサ
PI−P4(説明上その数を4とする)を、同じ数の命
令ストリームS l−8 4中の逐次的な命令をそれぞ
れ実行するために、有している。ストリームSl−84
は適切な命令記憶手段(図示していない)からプロセッ
サPL−P4への入力である。
レジスタと恐らく自分自身のメモリとを持ち、それらが
該プロセッサのために命令ストリーム中のダウンストリ
ーム操作に関し後の使用に備えてプロセッサにより造り
出されたデータを蓄積しておく手段を与える。
を持つ普通の共用ランダムアクセスメモリ12を含み、
該共用メモi川2は各プロセッサと共用メモリ比とを結
ぶアドレス及びデータ・ラインl4を介してプロセッサ
P .−P.のどれかにより選択的に読み出したり書き
込んだりすることができる。
ムに跨がる従属データを、同期を取るための他の手段を
用いずにプロセッサ間で受け渡すことはできない。その
理由は、共用メモI川2は記憶した値をそれが書き込ま
れる(すなわちメモリ位置が最初に満たされている)前
には読み出さないことを保証し、新しい値をあるメモリ
位置中に現在ある値が読み出された(すなわちメモリ位
置が最初に空になった)後まで該メモリ位置には書き込
まないことを保証する暗黙の手段を持たないからである
。これに反して、ある限定された数の共用レジスタ・チ
ャネルl6がプロセッサP ,−P 4のどれからでも
ほぼ同等の相対的に速い速度でアクセスされるように設
けられていて、各プロセッサは該速度でそれぞれのプロ
セッサからデータ、アドレス及び制御ライン18を介し
てその内部レジスタの1つにアクセスし得るものである
。しかし該レジスタ・チャネルl6は通信特性(com
mun icat ionattributes)すな
わちチャネルのセマンティクス(semantics
of channels)も持っており1同期の目的の
ために読み出し又は書き込みを阻止することを許す。共
用レジスタ・チャネル16の各々は、データ語を記憶す
るための、共用メモリ位置に格納できるのと同じ形式す
なわちビット数の等しい領域20と、これにプラスして
レジスタ・チャネルが一杯か空かを示す同期ビット用の
追加領域22とを持っている。
通の読み出し及び書き込み命令を持ち、また共用レジス
タ・チャネル16のために次の命令を持つことを好適と
する。
特定のレジスタ・チャネルが空であることを示す。
チャネルが一杯であることを示している時、読み出しが
できる。同期ビットは非破壊読み出しによって不変のま
まで、ついぎの読み出−しを可能なものとする。同期ビ
ットが“0”である限り該レジスタ・チャネルは読み出
しを阻止される。
し読み出しによって同期ビットが“0”にセットされる
。
、数値が書き込まれ同期ビットが“l”にセットされて
、レジスタ・チャネルが一杯であることを示す。同期ビ
ットが“1′である限り該レジスタ・チャネルは書き込
みを阻止される。
但し例え同期ビットが“l”であっても書き込みはなさ
れる。書き込み後は同期ビットは“1”である。
パイルすることにより生成され、それによって異なるプ
ログラム上で平行に実行することのできる動作のシーク
エンスを識別することによりプログラム中の微拉子平行
性の利点を享受するのである。このことは逐次プログラ
ムにおける操作の間のデータ又はイベント従属性の分析
を必要とする。
]傘 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人よ
り多い親を持つことができる更に一般化された非巡回グ
ラフにも、本発明は同じく適用できる。
回グラフ(DAC)を示し、この図ではノードを○で表
して引用番号はNl−N17を用い、今はDACの形体
のみが重要なのだから、動作の内容は除いてある。各ノ
ードには記号S+.+ Sr.9及びS2. l一S
2,8が付されており、これらはそれぞれ第1及び第2
平行プロセッサでそれぞれ実行するための第1及び第2
命令ストリーム中のノードのナイーブな割当て方法によ
るスケジューリングを示している。
る用意のあるノードは最大の深さを持つと識別され、命
令ストリーム中に交互に割り当てられる。こうしてN3
−N6はそれぞれ:第1ストリームの第I命令(S+.
+)、第2ストリームの第1命令(S2、1)、第1ス
トリームの第2命令(St.t)、第2ストリームの第
2命令(32. 2)の順序で割り当てられる。次いで
、その次にスケジュールされる用意のあるノードの深さ
のレベルが、ノードNl. N2, Nil,Nl2と
識別され、識別されたノードの命令ストリーム中への交
互割り当てが続けられる。その後は、ノードの深さの次
のレベルが識別され、すべてのノードがスケジュールさ
れるまでスケジュールが続けられる。該ナイーブな方法
の結果を検討すると、“E”とラベルを付された8つの
エッジは、プロセッサ間で実行されることを要求される
データ従属性を表すストリーム間またはストリームに跨
がるエッジである。
ムヘノードをスケジュールするためのコンパイル方法の
フロウチャートであって、これは生成されるストリーム
間エッジの数を最小にするものである。在ではノードの
スケジューリングはトップから始まり、とりわけノード
の深さではなくノードの高さに基づいて、逆の順序で決
定される。こうして第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としてスケジュールされる。
又してもステップ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によって、コンパイル過程は加速される。
序で、それぞれが第1及び第2命令ストリームS,、S
2を表す2つの列に再配置したものである。
1、P2によりダウンストリームの順序で実行される。
ストリーム内」エッジと呼ばれ、すべてダウンストリー
ムの方向である。列間に方向付けられて生成された2つ
のエッジEが、「ストリームに跨がる」エッジとか「プ
ロセッサに跨がる」エッジとか「ストリーム間Jエッジ
といわれるものである。2つのストリームに沿っての実
行の進行は相互に関連して変動するものであるから、本
発明によればエッジEの同期はある限定された数のレジ
スタ・チャネルによって与えられ、それはもし必要なら
ば、ストリームSI中のN14の結果が定められるのを
待ってN15の直前でストリームS2の実行を一時延期
することを、書き込みが終わるまで読み出しを阻止する
ことによって、保証する。
Nl6の結果が定められるのを待ってNl7の直前で一
時延期される。実際、同じレジスタ・チャネルが(2つ
の)ストリーム間エッジEの両方を実行するために再度
使用され得る、と云うのは、これらのエッジの列間を往
き来する順序は、Nl6がN15からダウンストリーム
の位置にあることにより保証されているからである。
のである。各図には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からのダウンストリームで
あって、ストリーム間エッジの実行の時間的順序が保証
されているから、この再使用は許されるのである。
れる更に別の状態であるが、「暗黙の」同期と呼ばれる
もう1つの同期を造り出すものである。そこでは、第1
エッジおよぼ第2エッジはSiからSjに向けられ、W
2はSi中でWlからのダウンストリームであり、R2
はSj中でR1からのダウンストリームである。もし両
方のエッジが共に同じレジスタ・チャネルCIにより実
行されるならば、Rlが生起するまでW2へのC1を阻
止する可能性が生じる。このことがR1からW2に向か
うストリーム間の暗黙の同期Uによって表されている。
ストリーム間エッジ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が共用メモリ比に向かうことがで
きる。
事実上の同期Tを示す。一般的に、事実上の同期Tは一
連の同期及びダウンストリームの動きの始めから終わり
に向かっている。従って第8b図には、W2からR2へ
の同期と、Skに沿ったR2からW3へのダウンストリ
ームの動きと、W3からR3への同期とがある。すると
事実上の同期Tは第8a図のルールに従ってW1からR
lへ向かうエッジ■を同期の冗長なものとする。これに
代わってVの同期冗長性は一連のダウンストリームの動
きと直接w1からR1への同期の実行とを必要とするル
ールによっても直接に確立できる。
のである。在では、第7図におけるようなClの再使用
によるR1からW3へ向かう暗黙の同期Uが、W1から
R1へのエッジ、W3からW4へのダウンストリームの
動き及びW4からR4へのエッジと共に、RlからR4
への事実上の同期Tを造り出し、次にそれがエッジVを
同期の冗長なものとする。
ためのまた別のコンパイル方法のフロウチャートであっ
て、それへの入力は方向付けられた非巡回グラフ(DA
C)であり、これは第4図におけると同様にステップ4
0で複数の命令ストリーム中へスケジュールされ、その
結果のストリーム間エッジEが識別されている。次にス
テップ42で、第8b図におけるような事実上の同期が
、第8−b図におけると同様に3つ又はそれ以上のスト
リームの中のエッジ列を識別することにより付加される
。次いでステップ44で、同期の冗長性が第8a図、第
8b図又は第9図の原理に従って識別され、その結果と
してストリーム間エッジは、同期冗長と非同期冗長と2
つのクラスに分割される。同期冗長エッジはステップ4
6で共用メモリ12へ書き込みそれから読み出すことに
よりスケジュールされ、一方非同期冗長エッジはレジス
タ・チャネル割当てのために更に分析される。
50に行く分岐が展開され、該ステップ50中でチャネ
ル再使用のための非同期冗長エッジの中の候補が、第6
a図、第6b図におけるような暗黙の同期を生成しない
で、識別され、チャネルの再使用によりスケジュールさ
れる。最初の反復以外ではステップ48中の分枝はステ
ップ50をバイパスさせる。その理由はチャネル再使用
のためのそのような候補は既に割当てられているからで
ある。次にステップ52で、非同期冗長エッジの残りの
数が割当てに使えるチャネルの残りの数を上回っている
かどうかを判定する。もし上回っていなければ残ってい
るエッジがステップ54でスケジュールされる。しかし
若し使えるチャネルより多くのエッジが残っていたらス
テップ56へ行き、そこでチャネル再使用のためのもう
lつの候補が識別される。
されて、それからは以上のステップが繰り返され、付加
された暗黙の同期によりもう1つの事実上の同期が付加
されるステップ42からはじまり、ステップ44ではそ
こで同期冗長にされたエッジが識別され、ステップ46
でスケジュールされる。一般的にこの過程によって、レ
ジスタ・チャネルの数が典型的なプログラムに対しては
十分であるという前提の下に、完全な同期がエッジのレ
ジスタ・チャネルへの割当てによって可能になるという
ことは今や明らかになった。従って、本発明の原理の典
型的な逐次プログラムへの応用の実例が、第■1図、第
12図に関連して以下に論じられる。
グラフ(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”
から引用している。
を付けたノードを持つ本発明の原理による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つの増加高を割り当て
られるを要せず寧ろ動作が採る期待時間長に比例する増
加高を持つ。
に等しい高さを持つであろう。
ネルを持つマルチプロセッサの概略系統図であり、 第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、動作を表すノードの方向付けられた非巡回グラフ及
びデータ従属性を表すエッジとして記述することができ
、 複数のそれぞれのディジタル・プロセッサ による実行のため及び複数のプロセッサ間データ転移手
段上の同期データ転移をスケジュールするために、複数
の平行命令ストリーム中へデータ従属動作をスケジュー
ルするためのコンパイル方法であって、該方法は 上記グラフのノードを上記複数のストリー ム中へスケジュールし、上記グラフの各エッジはストリ
ーム内エッジかストリーム間エッジかのいずれかで記述
可能であり、上記ノードはストリーム内エッジが同一方
向に方向付けられるというやり方でスケジュールされて
いるよう最初にスケジュールすることと、 上記ストリーム間エッジの中の同期の冗長 なエッジを最初に識別することと、 同期の冗長でないストリーム間エッジを、 上記プロセッサ間データ転移手段上の同期データ転移と
して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つ又はそれ以上の書き込
み・読み出し対の一時的なシークエンスによって、他の
ストリームに跨がるデータ従属性を実現させることと を含むことを特徴とする方法。
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)
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)
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)
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
Cited By (4)
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 |