本発明は並列に関連する命令ストリームの実行を行う並列プロセッサを有するマルチプロセッサ装置および前記ストリームを発生するコンパイル方法、特に、かかるプロセッサによる実行を正しくブランチングする装置および方法に関するものである。単一プロセッサにより得られる処理速度以上の増大処理速度を達成する命令レベルパラレリズムを開発するマルチプロセッサは,極めて長い命令語(VLIW)マシンアーキテクチュアに対し既知である。論理的なVLIWマシンは多重並列プロセッサで構成し、このプロセッサはロックステップで作動し、各々が各プロセッサに対する可能な異なる個別の命令よりなる長い命令の単一ストリームからフェッチした命令を実行し得るようにする。メモリアクセスコンフリクトのような不可避のイベントによる個別の命令の任意の1プロセッサによる実現の実行時間遅延は全プロセッサに対する全体の次の長い命令の送出を遅延する。(MIMD)アーキテクチュアによって、長い命令を個別のまたは複数のストリームに区分けし得るようにする。独立にすることによって、1ストリームにおける実行時間遅延によるも他のストリームの実行を直ちに遅延する必要はないことを意味する。かかる独立性は完全に行うことはできない。その理由は、プロセッサを命令ストリームのバリア点で周期的に同期化し得る機構を設ける必要がある。"命令を前記ユニットから受けるまで、機能停止、または遊休状態とする。4,344,134号、第4,365,292号および第4,212,303号に記載されている。従来、並列プロセッサのロックステップ操作は分岐命令の実行、即ち、条件の評価、合成値のテスト、テストの結果に基づく、または結果により規定される命令アドレスへの選択的なジャンプのような分岐の実行に必要である。このロックステップ操作によって種々のプロセッサが同一の分岐またはジャンプをとり得るようにする。4,356,292号、第3欄第48−53頁参照)。48-53).本発明の目的は、複数のプロセッサによる集合分岐に使用すべき条件の評価およびテストの命令を、プロセッサの1つのみに“特定の比較”命令としてスケジュールするようにしたデジタル処理装置を提供せんとするにある。プロセッサを結合する手段を適宜設けて、特定の比較命令の結果を利用して、集合分岐に含まれる他のプロセッサに通過せしめるようにする。これら他のプロセッサの各々によって“特定のジャンプ”命令を実行し、この命令は、特定のジャンプ命令が実行される際に前記プロセッサの命令ストリームに次の命令の位置またはアドレスを決める通過特定比較結果を利用し得るようにする。used.評価されたプロセッサの命令ストリームでは、この命令に次ぐ、または、この命令から下流の特定の比較命令は一般にそれ自体のジャンプ命令の実行のためのプロセッサによって局部的に発生する比較結果を用いる“レギュラー(正規の)ジャンプ”命令を発生する。集合分岐の実行に含まれる全てのプロセッサが同一の実行分岐をとるようにするためにはプロセッサを同期化させる必要がある。ここに云う“同期化”とは、命令ストリーム間のデータまたは論理依存性が、同一の特定の比較結果に基づいて各ジャンプ命令が評価されるように充分に解決されることを意味するものとする。これがため、特定の比較結果が通過した後まで、特定のジャンプは実行し得ず、かつ、最後の集合分岐に含まれるプロセッサ全部が最後の特定の比較結果を用いるまで新たな特定の比較結果を通過し得なくなる。passes.固定バリアが複数の命令ストリームに介在して、最後のプロセッサがバリアに到達するまでプロセッサが固定バリアで遊休状態となる種類のあらかじめ既知の“同期化”を強制的に行う場合には、上述した出願に記載されているような“ファジイバリア”によってあらかじめ既知の固定バリアの結果的な遅延がなくても、同期化の必要なレベルを提供することができる。processor,命令を並列プロセッサ実行用の並列ストリームにスケジュールするために、これらストリームを交互に関連する“陰影”領域および“非陰影”領域に分割する。“陰影領域”には他のストリームの命令から独立したデータ(または、さもなくば、書込みおよび読出し陰影リソースで固有に同期化してバリア同期化を必要としないようにして)である命令を含むと共に非陰影領域では原理的にバリア同期化を必要とする命令を含むようになる。その理由は、代表的には他のプロセッサの命令ストリームの直前の非陰影領域において、これらが他のプロセッサによって生じるデータを用いるからである。processors.本発明の原理によれば、各プロセッサがその命令ストリームの陰影および非陰影領域を識別する手段と、相互のプロセッサが同期化を欲する際に示される相互のプロセッサから“ウオント−イン”信号を受ける手段とを有するファジイバリア手段を設ける。-アウト”信号と、プロセッサの実行を選択的に停止または遊休する信号を選択的に発生する状態マシンを設ける。second非陰影領域間に陰影領域を介在させるようにする。other非陰影領域に相当する第2非陰影領域でスケジュールする。area.ファジイバリア手段は、最後のプロセッサが少なくとも関連する陰影領域に入るまで、同期化前に関連する陰影領域の終端に到達するプロセッサが停止する型の同期化を行う。最後のプロセッサがかようにエントリされると、同期化が起こり、プロセッサが次に続く非陰影領域およびその次に続く陰影領域に自由に通過し得るようになり、これら領域で、エントリ時に同期化の要求を示す他のプロセッサに向けられたウオント−アウト信号をこれらプロセッサが個別に発生し得るようになる。従って、従来の固定バリア法に対し、これらプロセッサは同期化を待機しながら陰影領域で命令の実行を継続するようになる。陰影領域の終端にプロセッサが到達する際に同期化がいまだ発生していない場合にはウオント−アウト信号を発生し続けながらプロセッサを停止する。プロセッサの全部がウオント−アウト信号を発生する場合には同期化が生じ、この同期化によってウオント−アウト信号をリセットせしめるようにする。これがため、1つのプロセッサの命令ストリームの非陰影領域の特定の比較命令をスケジュールし、かつ、命令ストリームの次に続く関連の非陰影領域の正規のジャンプ命令および特定のジャンプ命令をスケジュールすることによって、特定の比較がまず最初評価されるまで任意のジャンプを実行せしめないようにし、直前の非陰影領域を全部のプロセッサが通過しなければ特定の比較を評価せしめないようにする。through.バリア同期化に対し、この結果を得るためには、一般に、1つのプロセッサにより特定の比較結果を評価する際、集合分岐に含まれる全部のプロセッサにかかる結果をほぼ同時に通過させる必要がある。従って、特に、データ変換手段を設けて、書込み兼読取り共用メモリまたは共用レジスタチャネルによる場合よりも一層迅速に特定の比較結果ワードを通過させるようにし、このデータ変換手段によって、更にこれら共用リソースが矛盾するか、または、ブロックされる可能性を回避し得るようにする。blocked.ファジイバリアに関する前述した特許出願に詳細に記載されているように、命令ストリームの陰影領域(例えば陰影領域が第1および第2非陰影領域間に介在すること)の命令回数は同期化を待機しながら非遊休命令実行のクッションを提供するため、命令を非陰影領域でスケジュールしてかかる領域の命令の大きさまたは回数を最大とする方法に従って、命令をコンパイルする必要がある。これがため、集合分岐命令に適用するように、前記特許出願に従うコンパイル方法において、直列命令コードを個別の並列ストリームに分離し、ここで、関連する非陰影領域および陰影領域が、識別され、1つのストリームの非陰影領域の特定の比較命令と、および集合分岐に含まれる他の命令ストリームの次に続く非陰影領域の特定のジャンプ命令と識別する。recording,ダウンストリームデータ依存性と妥協することなく早期に実行することができる。図面につき本発明の実施例を説明する。invention,これは、複数命令ストリームの複数データストリーム(MIMD)構成のプロセッサアレイを具える。4個のプロセッサをP1、P2、P3およびP4で示すが、その後は図示の便宜上および単一のチップに集積化し得る程度の数との兼合いで選定することができる。processors10に対称に接続して、個別の命令ストリームをこれらのプロセッサP1〜P4で並列に処理する場合のスケジューリング操作に融通性を持たせるのが好適である。streams,I2、I3およびI4をそれぞれ有する。第1図の多重プロセッサには共用のメモリ兼レジスタチャネルリソース12をも設け、これらのリソースはアドレス入力ライン14および各プロセッサP1〜P4への双方向データライン16を有する。メモリ12はその1部分を成す適当なクロスバー(図示せず)を利用して任意のメモリ位置に書込んだり、または、読取る事のできるように共用する。I1〜I4は所望に応じ共用メモリ12からライン18を経て取出される逐次命令に対するキャッシュとして作動する。desired.これら共用リソースに含めるのが好適な限定数のレジスタチャネルは共用リソース12の共用メモリ部分を用いて得られる速度よりもさらに速い速度でデータをプロセッサ間に通過させる手段を構成する。各レジスタチャネルの書込みおよび読出しはレジスタに類似するプロセッサにより行うことができる。各レジスタチャネルはチャネルの性質を有する関連する通信プロトコルまたは同期ビットを有し、これは例えばレジスタチャネルが満杯であるか、または空であるかを示す。この種のレジスタチャネルはプロセッサ間を固有に同期させる。その理由は、レジスタチャネルが他のプロセッサにより書込まれた後でないと、プロセッサがそのレジスタチャネルを読取ることができないからである。moreover,これらのレジスタチャネルでのブロック化を回避する戦略により遅延が生じるので、集合分岐およびその同期化の双方のために専用ハードウエアを利用する一層積極的な解決策が必要である。各プロセッサP1〜P4の制御ユニット22は各命令メモリI1〜I4からの命令をライン26で受取り、各命令メモリ並びに共用メモリ兼レジスタチャネルにアドレスにアドレスをライン14を経て送出する。16は各プロセッサのALU24に双方向に結合する。各プロセッサP1〜P4はバリアユニット28および分岐ユニット30の形態の専用ハードウエアをも具える。28は前述した特許出願に記載されているようなプロセッサの命令ストリームで設定されるファジイバリアに対してプロセッサP1〜P4を座標同期させるようにする。instruction28によって与えられるファジイバリアの同期化によりプロセッサP1〜P4に与えるようにする。processor,他の各プロセッサから同様の入力を受ける。バリアユニット28も同様に第1図で双方向結合ライン32で示されるように互いに接続する。28と、他のプロセッサのユニット28および30との間の相互作用および各プロセッサ内でのこの種ユニットと、実行手段12との間の相互作用を理解するには第3および6図を参照するのが最良である。best.第3図は各プロセッサP1−P4に対する例証となる命令のストリームS1〜S4を示し、これらの命令の実行は下方向に進める。ストリームS1、S2およびS3は、プロセッサP1、P2およびP3が2つの集合分岐ユニットに逐次含まれるように関連する命令を含み、また、ストリームS4がプロセッサP4によりさせるのに無関係な命令を含むようにする。このような状況の下では、集合分岐に含まれないプロセッサP4は後に説明する方法でバリアユニット28により“マスクアウト”する。branch.ストリームに含まれる命令は第6図にフローチャートによって示してあるコンパイル処理により取出すのが好適である。コンパイラ”に記載されているような極めて長い命令ワード(VLIW)コンパイリングの技術を用いる並列ストリームコードを取出すようにする。to.また、本発明の原理によれば、ストリームコードをステップ36(第6図)で発生して、分岐条件のテストおよび評価をプロセッサの1つのみで(第3図のS1のような)“特定の比較”(CMPSP)命令としてスケジュールし、次に関連する“特定のジャンプ”(JMPSP)命令を(第3図のS2およびS3の領域42のような)集合分岐に含まれる他のプロセッサの全部にスケジュールし、この他のプロセッサには分岐ユニット30を経てプロセッサP1により行われる特定の比較の結果を供給する。ProcessorP2およびP3は受信したCMPSP結果を用いてこれにより示された実行分岐をとる、即ち、次の命令のアドレスを決めるようにする。instruction.ストリームS2およびS3におけるJMPSP命令のスケジューリングに相当するストリームS1では、“正規のジャンプ”(JMPR)命令をスケジュールし、これによりプロセッサP1を命令して、部分的に発生したCMPSP結果を用いてどの分岐をとるかを決めるようにする。because,集合分岐に含まれるプロセッサP1〜P3の各々は同一の分岐をとる必要があるが、これを同時に行う必要はない。CMPSP結果が分岐ユニット30に通知された後にのみJMPSPを実行するように、および最後のCMPSP結果が含まれるプロセッサ全部によって用いられるまで次のCMPSP結果を分岐ユニット30に通知しないようにするためにバリア同期化を必要とする。reduction.このバリア同期化は、命令ストリームの識別された“陰影領域”および“非陰影領域”に対し作動するバリアユニット28によって行う。従って、ステップ38は、関連する陰影領域および非陰影領域が個別の命令ストリームで確立されるステップ36の後に行う。前述した特許出願に示すように、これは、命令が存在する領域を記述する1ビットが含まれる命令を有するようにすることによって、または、ストリームに領域境界命令をスケジュールすることによって行うことができる。陰影領域は独立の命令および/またはバリア同期化を必要としない命令のみを含む。12,同期化するからである。非陰影領域は他のプロセッサにより生成される数学的、または、論理的データに依存する命令を含み、この他のプロセッサはバリア同期化を必要としない場合に必ずしも得られるものではない。synchronization.これら陰影領域および非陰影領域に対し確立されるファジイバリアの性質は、各々がその関連する陰影領域に少なくとも到達する際にのみ、含まれるプロセッサを同期化する必要があることである。processors,同期化を待機しながら、陰影領域での命令の実行を継続する。プロセッサが陰影領域の終端に到達する際に、同期化が生じない場合には、プロセッサが停止するか、または、遊休して、他の最後のプロセッサが陰影領域に到達するのを待機する。最後のプロセッサがかかる領域に到達する場合には同期化が起こり、プロセッサの全部を次に続く非陰影領域で命令を実行させ、その後、同様に同期化であると思われる次に続く非陰影領域に通過するようになる。これがため、第1および第2非陰影領域間にシーケンシャルに介在する陰影領域のため、ファジイバリア同期化によって、任意のプロセッサが第2非陰影領域で命令を実行する前に、含まれるプロセッサの全部によって完全に実行する必要がある。従って、関連する非陰影領域40の第1組がストリームS1、S2およびS3(第3図)に、ストリームS1のみの領域40にスケジュールされたCMPSP命令とともに確立されるようになる。関連するJMPR命令およびJMPSP命令は、ストリームS1のJMPR命令、並びに、ストリームS2およびS3のJMPSP命令とともに、ストリームS1、S2およびS3の第2の関連する非陰影領域42でスケジュールする。非陰影領域40および42間にはストリームS1、S2およびS3の各々の陰影領域44を介在させるようにする。S3.更に、コンパイル方法に従って、陰影領域44における命令の回数は、ストリームコードを記録して、データ依存性と折衷することなく早期に安全に実行し得るこれら後に発生する命令を早期に発生する陰影領域に移動させることによって、ステップ46で最大とする。これがため、含まれるプロセッサ間の遊休しない同期化に対するクッションを増大することができる。このリオーダーリング法は前述した特許出願に一層詳細に記載されている。最終ステップ48ではリオーダされたストリームコードを組合わせるようにする。code.本発明の原理によれば、分岐ユニット30を簡単化するために、1組のプロセッサのみを集合分岐の任意の陰影領域中に含めるようにする。他のプロセッサをスケジュールして次の集合分岐に対するCMPSP命令を実行することができる。S2でスケジュールする次に続く陰影領域50および非陰影領域52による第2の集合分岐を第3図に更に示す。CMPSP結果を用いるようにする。S2でスケジュールされ、JMPSPがストリームS1およびS3でスケジュールされる次に続く陰影領域54および非陰影領域56に対する作動は、前述した第1集合分岐から明らかである。プロセッサP4は第3図に“マスクドアウト”であり、関連しない陰影領域を経て作動するため、これを、“マスクドイン”時に関連する処理に同期化し、結合することができる。coupled.更に、プロセッサの全部の分岐を集合する必要はなく、1つ以上のプロセッサをプログラムの内容の範囲内で個別に分岐し得る瞬時が存在することは明らかである。かかる状態のため、正規の比較命令(CMPR)を発生し、その結果を次のJMPR命令により部分的に用いて分岐ユニット30を経て他のプロセッサに通過せしめないようにする。instruction.分岐ユニット30の作動を第1および2図につき説明する。CMPSPをALU24で評価し、マルチビット結果ワードを並列入力“cc"として分岐ユニット30に供給する。"1"の場合にCMPSP結果ワードの位置をプロセッサにより分岐ユニットに供給し、その出力を前記結果ワードの“エネーブル”として用いるようにする。"scc-out"を発生させるが“B"のみによって単一ビットの第2出力“en−out"を発生し、これら第1および第2出力は共に0iを含む。en-outによって3つの並列入力scc−inおよび3つの信号ビット入力en−inを形成する。3つの入力scc−inの関連するビットはORゲート62に供給し、入力en−inをORゲート64への入力とし、このORゲート64の出力によってORゲート62のアレイの並列出力に対するラッチ68をエネーブルし得るようにする。これがため、他のプロセッサにより評価された特定の比較結果を含むようになる。CMPSP(ここでBは論理“1"となる)を評価したプロセッサにおいて、ラッチ66の出力がマルチプレクサ70によりその出力端子sccに通過するが、他のプロセッサからCMPSP結果(ここでBは論理“0"に保持される)を受けるプロセッサでは、ラッチ68の出力はマルチプレクサ70により出力端子sccに通過する。70.バリアユニット28の作動を第1、4および5図につき説明する。各プロセッサのバリアユニット28は他のプロセッサの各々のバリアユニットからウォントイン信号を受けるとともに、このプロセッサの制御ユニット22からマスク信号Mおよび領域確認信号Iを受ける。マスクレジスタ72にロードされたマスク信号Mはこのプロセッサの命令ストリームの命令から制御ユニット22によって取出し、他のプロセッサがバリア同期化で上記プロセッサに含まれることを示す。in"されることを示す1ビットの1論理状態と、関連する他のプロセッサが“マスクドアウト”される状態を示す逆の論理状態とを有する。マスクレジスタ72の並列出力および他のバリアユニットからのウォントイン信号を一致回路74に供給して、これにより“マスクドイン”された他のプロセッサ全部がウォントイン信号を発生した際に出力側にMATCH信号を発生し得るようにする。74は前述した特許出願に記載されており当業者が容易に実施し得るものである。OUT)信号と、このプロセッサの制御ユニット22に向けられ、このプロセッサによる他の命令実行を選択的に停止または遊休する遊休信号(上記状態ダイアグラムには“STALL"として示す)とを発生する。ウォントアウト信号が発生し、この信号はこれを発生するプロセッサが同期化されておらず、同期化を必要としている場合に論理“1"となり、この発生状態または論理“1"の状態を上記状態ダイアグラムに“WANT−OUT"として示す。22,この信号は、プロセッサが陰影領域で作動する際に論理“1"となり、プロセッサが陰影領域の終端で停止されているか、または非陰影領域で作動する際に論理“0"となる。synchronization.状態“0"では、状態マシン76はウォントアウトを発生せず、停止もしない。この状態マシンはI(非陰影領域)が真実である限り状態“0"に保持される。true,遷移78を状態2とし、遷移80を状態1とする。遷移78ではウォントアウトが遷移中ほじされるとともに不連続となるか、または同期化の発生を示す状態2にリセットされるようになる。遷移80では、ウォントアウトは遷移中保持されるとともにプロセッサが陰影領域にあり、同期化を必要とすることを示す状態1に到達する際にも保持されるようになる。MATCHが真実である限り、状態1に保持されている。陰影領域が終端に到達する前に、MATCHが真実となる場合には遷移82は、状態1からウォントアウトが遷移中保持される状態2に移行し、同期化の発生により状態2に到達する際にリセットされるようになる。to.Iが真実である限り状態2は保持されるが、非陰影領域にエンカウンタすると、Iが真実となり、遷移84は状態2から状態1に移行する。region,正確に86は直接状態1から状態2に移行する。この遷移中ウォントアウトは保持され、状態0に到達するとリセットされるようになる。0.しかし、状態1にある間に、陰影領域が同期化の発生前に終端する(Iが真実でMATCHが真実)と、遷移88は状態3に移行する。この遷移中ウォントアウトが保持されるが、STALLが作動するようになり、この条件は状態3に中保持されるようになる。3.MATCHが真実である限り、状態マシン76は状態3に保持されるようになる。90は、状態3からプロセッサが新たに次の非陰影領域に進むようになる状態0に移行する。この遷移中ウォントアウトは保持されるとともに状態0に到達するとリセットされるようになる。held.バリアユニット28が分岐ユニット30と関連して同期化し、集合分岐を達成する必要があることは明らかである。above,要旨を変更しない範囲内で種々の変形および変更が可能である。unit30は一体化することができ、および/または形成されたハードウエアは全てのCMPSP命令が、同一のプロセッサでスケジュールすることにより簡単化することができる。第6図は本発明コンパイル方法のフローチャートを示す説明図である。特定のジャンプ命令を実行する手段を具え、この特定のジャンプ命令が前記第2プロセッサで遭遇する際に前記第2プロセッサがこのプロセッサに得られた特定の比較結合に依存して実行分岐するようにしたことを特徴とするデジタル処理装置。processor.【請求項2】前記第1プロセッサは、さらに前記特定の比較結果に依存する前記第2ストリームの前記特定のジャンプ命令に関連して、前記第1ストリームの正規のジャンプ命令を実行する手段を具えることを特徴とする請求項1に記載のデジタル処理装置。instructionプロセッサを同期化する同期化手段をさらに具えることを特徴とする請求項1に記載のデジタル処理装置。命令の前記第3ストリームを実行する第3プロセッサを具え、この第3プロセッサは第3ストリームで遭遇する際、特定の比較結果に依存して特定の比較命令を実行する手段を具えることを特徴とする請求項1に記載のデジタル処理装置。the.【請求項5】前記データ変換手段は前記第1、第2および第3プロセッサ間に結合されて、前記第1プロセッサからほぼ同時に前記第2および第3プロセッサに前記特定の比較結果を通過せしめるようにしたことを特徴とする請求項4に記載のデジタル処理装置。thirdプロセッサを同期化する同期化手段をさらに具えることを特徴とする請求項5に記載のデジタル処理装置。processors.【請求項7】前記同期化手段は前記第1プロセッサおよび前記第2プロセッサ間に結合され、前記第1プロセッサが同期化を要求することを第1プロセッサから第2プロセッサに知らせる信号を通信する通信手段を具えることを特徴とする請求項3に記載のデジタル処理装置。regionに記載のデジタル処理装置。to.【請求項9】前記第1プロセッサおよび前記第2プロセッサ間に結合され、前記第1プロセッサが同期化を要求することを第1プロセッサから第2プロセッサに知らせる信号を通信する通信手段をさらに具えることを特徴とする請求項8に記載のデジタル処理装置。that.【請求項10】分岐命令が比較命令および関連するジャンプ命令を具え、命令の並列ストリームの関連する実行をスケジュールするようにした分岐命令を具える直列命令コードをコンパイルするに当たり、一方のストリームに比較命令をスケジュールする第1スケジューリングと、他方のストリームに関連するジャンプ命令をスケジュールする第2スケジューリングとを有するストリームに前記直列命令コードを分離するようにしたことを特徴とする直列命令コードをコンパイルする方法。.【請求項11】前記比較命令および前記ジャンプ命令間のストリームで他の命令をスケジュールする第3スケジューリングを更に具えることを特徴とする請求項10に記載の直列命令コードをコンパイルする方法。instruction.【請求項12】前記第3スケジューリングには、前記ストリームの命令をリオーダ(再配列)して前記他の命令を前記比較命令および前記関連するジャンプ命令間に位置させるようにしたことを特徴とする請求項11に記載の直列命令コードをコンパイルする方法。occurring12に記載の直列命令コードをコンパイルする方法。