JP2866421B2 - 複数パス並列処理方法 - Google Patents

複数パス並列処理方法

Info

Publication number
JP2866421B2
JP2866421B2 JP838490A JP838490A JP2866421B2 JP 2866421 B2 JP2866421 B2 JP 2866421B2 JP 838490 A JP838490 A JP 838490A JP 838490 A JP838490 A JP 838490A JP 2866421 B2 JP2866421 B2 JP 2866421B2
Authority
JP
Japan
Prior art keywords
instruction
processing
processing system
flag
instructions
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 - Fee Related
Application number
JP838490A
Other languages
English (en)
Other versions
JPH03214235A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP838490A priority Critical patent/JP2866421B2/ja
Publication of JPH03214235A publication Critical patent/JPH03214235A/ja
Application granted granted Critical
Publication of JP2866421B2 publication Critical patent/JP2866421B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は、複数の命令を同時処理するための複数パス
並列処理方法に関するものである。
[従来の技術] 演算処理の高速化のために、複数の命令を同時実行す
るようにした処理装置の例として、特開昭63−49843
号、米国特許4,766,566号、及びヨーロッパ特許8711075
1.2号に記載されたものがあり、これらの特許は同一内
容のものを各国に対して出願したものである。この特許
出願における主張は、近年スーパスカラという名前で呼
ばれている並列化方式であり、アドレスが連続する2つ
の命令を同時に実行するものである。米国特許4,766,56
6号のFig.2−7に記載されているように、同時に実行さ
れる2つの命令は単一の命令バッファに納められてお
り、これらが同時に実行される。この方式では、分岐が
生じたときに連続した命令の実行はできないから、一方
の実行ユニットで分岐命令が実行されたときに命令バッ
ファをキャンセルして分岐発生時の処理を行っている。
[発明が解決しようとする課題] 上記従来技術には、分岐命令による本質的な並列度の
減少という問題があった。即ち、一方の実行ユニットの
分岐命令によって、命令バッファがキャンセルされてし
まい、このとき2つの実行ユニットが独立して動作でき
ない。従って、命令の並列度の抽出時に最適化を行う範
囲がエントリと分岐命令との間のみに限定されてしま
う。ここでエントリとは分岐命令の飛先あるいは分岐命
令の直後の命令を指す。分岐命令は5命令に1度以上の
割合で出現するといわれており、この状態では最適化は
ほとんど意味を持たない。2倍のハードウェア物量を投
入した割に2命令同時実行による性能向上の効果は少な
い、あるいは殆どないという結果となる。
本発明の目的は、この分岐命令による並列度の減少を
解決し、分岐命令自身の並列化も可能とする複数パス並
列処理方法を提供するにある。
[課題を解決するための手段] 上記の目的を達成するために、本発明においては、パ
イプライン構成された命令取り出し手段、デコード手段
及び命令実行手段から成るところの互いに独立動作可能
な処理系を複数個設け、さらに1つの処理系がその命令
を実行したときに他の処理系の動作を開始及び停止させ
るための分裂命令及び融合命令と、命令の実行がどこま
で進んだかを示すフラグと、該フラグを参照して各処理
系による命令の実行を制御する条件休止命令とを設け
た。
[作用] 1つの処理系により分裂命令が実行されると、他の処
理系の命令取り出し手段が上記分裂命令によってセット
される命令アドレス、あるいはすでにセットされている
命令アドレスに従い命令用キャッシュメモリをアクセス
する。これにより、それぞれの命令取り出し手段は異な
るプログラムカウンタを持つため、基本的に独立に動作
し、従ってそれぞれの側で処理中の命令列の内部での分
岐があっても、各処理系における並列処理を継続でき
る。
一方、このようにして独立に動作し始めた各処理系を
再び1本に絞り込む必要性もでてくる。このときは1つ
の命令実行手段により融合命令を実行することにより、
他の処理系の命令取り出し手段の動作を停止させる。こ
れにともない命令実行手段も停止される。即ちパイプラ
インが絞り込まれる。融合命令によって停止したパイプ
ラインは動作中のパイプラインによる分裂命令あるいは
一定時間ごとに行われるタイマチェック機構によっての
み再開される。
2つの処理系の処理の間にデータの依存関係がある場
合は、コンパイラが有する実行順序の情報に従って実行
コードの中に実行順序の制御のための命令、即ち条件休
止命令を埋め込む。複数の処理系の処理のパスにはそれ
ぞれ同期用のフラグがあって、これらは分裂命令によっ
てその値を増加させられる。そして、条件休止命令は各
処理系のフラグの内容とそのときの自処理系の処理結果
によって次の処理を待つか否かを判断し、これらによっ
て必要なデータが得られた後に当該処理が行われるよう
に各処理系の処理の実行制御を行う。
[実施例] 以下、本発明の一実施例を詳細に説明する。第1図は
本発明を応用したプロセッサのブロック図である。命令
フェッチユニット100及び102は、それぞれの内部に独立
動作するプログラムカウンタを持ち、信号線111及び112
を用いて命令用キャッシュメモリ101に対して命令フェ
ッチ要求を出す。キャッシュメモリ101はこれらの片方
の交互にあるいは両方を同時に受け付ける。対応するデ
ータは同時に受け付けられた場合にはそのまま、交互に
受け付けられた場合にはキャッシュメモリ101の内部に
バッファリングされて、各サイクルごとに信号線114及
び115へ出力される。それぞれが独立に動作可能なデコ
ーダやシーケンサから成る制御ブロック103及び104は、
キャッシュメモリ101からの命令をデコードした情報を
もとに、信号線118及び119を用いて下記の命令実行部を
並列に制御したり、分岐命令などの情報をもとに信号線
113及び116とデータ線122及び128を用いて命令フェッチ
ユニット100及び102をも制御する。制御ブロック103及
び104は信号線117によって相互に接続されており、例え
ば両者の同期をとるときなどにこの信号が利用される。
命令実行部は1つのレジスタファイル106と2つの実行
ユニット105及び107から構成される。レジスタファイル
106の一部と実行ユニット105は制御信号118によって、
レジスタファイル106の一部と実行ユニット107は制御信
号119によってそれぞれ制御される。制御信号118と119
によって制御されるレジスタファイル106の各部分の間
には共通部分があってもなくてもよい。実行ユニット10
5及び107はそれぞれ独立したソースデータバス120及び1
21を持ち、またそれぞれ演算結果をファイル106へ格納
するためのターゲットデータバス124及び126を持ってい
る。メモリアクセスは、実行ユニット105及び107が計算
したメモリアドレスをメモリアクセスコントローラ108
及び110へ渡し、これらコントローラ108及び110はデー
タ用キャッシュメモリ109に対してアクセス要求129及び
130を出すことにより行われる。キャッシュメモリ109は
これらの信号を交互あるいは同時に受け付け、ロード/
ストア専用バス125を介してレジスタファイル106に対し
てデータの供給を行う。
第1図における左右のリソースは特殊な場合を除いて
独立に動作可能であり、プログラムの並列性を抽出し同
時に実行するのに適した構成となっている。極端な場合
を考えると、左右で全く別のプログラムを実行させるこ
ともできる。一方、第1図において左右で共有されてい
る命令用キャッシュメモリ101、レジスタファイル106及
びデータ用キャッシュメモリ109の内部構造は、プロセ
ッサの実現方法や使用目的によって多少異なる可能性が
ある。即ちキャッシュメモリ101,109の内部は2つのキ
ャッシュメモリから構成されてもよいし、1つのマルチ
ポートキャッシュメモリから構成されてもよい。また、
フェッチ要求を交互に受け付けることができる1つのキ
ャッシュメモリで構成し、命令取り出しユニットに得ら
れた命令をバッファリングする手段を持ち、あたかも毎
サイクルフェッチしたように見せかけるという方法もあ
る。レジスタファイル106の内部は左右で完全に共有さ
れたレジスタファイルでもよいし、全く独立した2つの
レジスタファイルから構成されてもよい。無論部分的に
共有する形態のものも考えられる。共有される部分に
は、左右に分配される独立したバス120,121をもつ必要
がある。
次に、このようにして実現されたシステムの動作を第
2図を用いて説明する。クロック信号K1はマシンサイク
ルの前半で高レベル、後半で低レベルの信号であり、こ
の1サイクルで各部が決められた処理を行う。命令用キ
ャッシュメモリ101の出力信号114,115はそれぞれ2命令
分のビット幅を持っており、それゆえに命令読み出しは
2サイクルに一度行えばよい。出力信号114は制御ブロ
ック103でデコードされ、次のステージの信号118とな
る。この信号によって更に次のステージにおいてデータ
120がそのまた次のステージにおいてデータ124が制御さ
れる。このように1つの命令を一連の処理に分割するこ
とによって命令の並列処理化を図るパイプラインを構成
する。右半分を動作させる信号線115,119,121,126に関
しても同様であるが、ここでは動作していないものとす
る。
これらの信号、即ち第1図の右半分を動作させるため
に、このプロセッサは特別な命令あるいは命令コード内
に埋め込まれた特別なフィールドを有する。このような
命令をここでは分裂命令(Fission Branch Instructio
n)と呼ぶことにする。この分裂命令がタイムスロットS
1に実行ユニット105で実行されたとすると、第2図にお
ける制御信号201がオンとなり、命令フェッチユニット1
02が動作可能となる。ユニット102は分裂命令によって
セットされるアドレス、あるいは既にセットされている
アドレスに従い命令用キャッシュメモリ101をアクセス
する。これにより第1図の右半分のパイプラインも動作
開始することになる。第1図の右半分と左半分は独立に
動作する。
一方、このようにして独立に動作し始めたパイプライ
ンを再び一本に絞り込む必要もある。そのため、分裂の
場合と同様にこのプロセッサは特別な命令あるいは命令
コード内に埋め込まれた特別なフィールドを有する。こ
のような命令を融合命令(Fusion Branch Instructio
n)と呼ぶことにする。この融合命令がタイムスロットS
2に実行ユニット105で実行されたとすると、第2図にお
ける制御信号202がオンとなり、命令フェッチユニット1
00が動作を停止する。これにともない制御ブロック103
及び実行ユニット105も停止され、左半分のパイプライ
ンが完全に停止する。即ちパイプラインが右半分のみに
絞り込まれる。融合命令によって停止したパイプライン
は、動作中のパイプラインによる分裂命令あるいは一定
時間ごとに行われるタイマチェック機構によってのみ再
開される。また、この融合命令によって並列処理が停止
されているとき、従来のスーパスカラ方式により停止さ
れた処理系を利用するようにすることもできる。並列処
理が停止されている場合は命令フェッチユニット100
(または102)が停止状態にある。この状態をもとに命
令キャッシュ101は実行状態の命令フェッチユニット102
(または100)からのアドレスをもとに連続する2つの
命令を114および115へ出力して命令実行する。先に命令
キャッシュ101の構成がインプリメント依存であること
を説明したが、このケースでは連続命令を両パイプライ
ンへ投入する機能も有する。また、このとき、スパース
カラ実行可能かどうかの判定および不可能なときの待ち
合わせは信号117で制御する。このスーパスカラ状態は
次に分裂命令を実施した段階で解消される。これは、命
令フェッチユニット100および102が動作状態となるため
に判定可能である。デコーダ&シーケンサ103,104以降
のパイプラインには入力される命令が並列実行であるか
スパースカラ実行であるかは関係ないため、分裂命令や
融合命令が突然現れてもパイプラインが乱れることはな
い。
次に、このようなプロセッサを用いた場合の効果的な
プログラミングについて第3図及び第4図を用いて説明
する。ここでは、比較の対象として連続アドレスの2命
令を同時に処理するスーパスカラマシンをとりあげる。
スーパスカラマシンはハードウェア物量が制約された条
件、たとえば集積度が低いLSIを用いて実現する場合な
どに有効な方式であるが、連続アドレスの2命令という
制約条件があるために並列度が向上しないという問題点
がある。この方式による高速化の割合は、せいぜい1か
ら2割程度と推定される。
第3図では実行サイクル数の異なる8命令(OP301〜O
P308)を両者で実行した場合を示している。簡単のため
に各命令の間にデータの競合関係はないものとする。OP
301,OP304,OP305,OP308は実行に2サイクル要する命令
であり、残りの命令は1サイクルにて実行可能とする。
第3図の左側はスーパスカラマシンの例を示している。
スーパスカラマシンは連続アドレスの2命令を同時に処
理するため、それらの命令は同時に実行が開始される。
そのため同時実行される命令の処理時間が異なると、と
ころどころ空きが生じ、全体の実行にタイムスロットT1
〜T8の8サイクルを要する。一方、第3図右側に示した
本発明による複数パス並列処理方法においてはこのよう
な制約がないため、タイムスロットT1〜T6の6サイクル
にて実行を終了する。
以上は分岐のない簡単な場合の比較であるが、より重
要な相違点として、並列化の割合が本質的に異なること
があげられる。即ちスーパスカラマシンにおいては連続
の2命令が必ずしも同時に実行可能と出来ないので、最
適化コンパイラを用いてコードを生成したとしても並列
化不可能な部分は本質的になくならない。分岐命令など
がそのよい例である。スーパスカラマシンにおいては分
岐は一度に1つしか実行できず、しかも分岐の入り口と
次の分岐命令との間の少ないコードの範囲内でしか並列
度を抽出できない。分岐命令は5命令に1度出現すると
言われており、平均4命令の間で並列度を抽出すること
になる。第4図に分岐命令を含むコードの例を示す(OP
401〜OP408)。OP403及びOP408は条件分岐命令であり、
それぞれOP401,OP404へ分岐する。OP403は7回分岐を行
い1回は分岐しない。OP408は5回分岐を行い1回は分
岐しない。従ってOP401からOP403は8回、OP404からOP4
08は6回実行される。条件分岐命令において分岐する場
合にはその実行に4サイクルを要し、分岐しない場合及
びその他の命令は1サイクルにて実行が終了するものと
する。第4図(a)に示したパイプラインの本数が1本
の従来型のアーキテクチャをとった場合(シングルモー
ド)は、実行命令が54、分岐が12回あるため、全体で90
サイクル要することになる。第4図(b)に示したスー
パスカラモードの場合には、OP401と402、OP404と405お
よびOP406と407がそれぞれ並列可能であり実行される命
令対の数は34、分岐はシングルモードと同様に12回ある
ので、全体で70サイクルとなる。これに対し、第4図
(c)に示した本発明による複数パス並列処理方法を用
いれば2つのループを別々のパイプラインに割り当てる
ことができるため、分岐命令も含めて並列化が可能とな
る。即ちOP401〜403をプロセッサの左半分のパイプライ
ンに割り当て、残りを右半分に割り当てる。プロセッサ
の左半分のパイプラインの実行時間は命令数が24、分岐
回数が7であるため、全部で45サイクルとなる。また、
プロセッサの右半分のパイプラインの実行時間は命令数
が30、分岐回数が5であるため、全部でやはり45サイク
ルとなる。従って全体の実行時間は45サイクルとなり、
シングルモードの90サイクルと比較して2倍の並列度を
抽出したことになる。無論、分裂分岐に伴うオーバーヘ
ッドはあるが、ループ回数が大きくなればこの影響は十
分無視できる程度になる。これが本発明がスーパスカラ
モードに対して本質的に優れている理由である。
さて、このような複数パス並列処理方法を用いた場合
において、2つのパス即ち2つのパイプラインの間にデ
ータの依存関係がある場合についても考慮しなければな
らない。何故ならば、このような状況が生じる可能性は
極めて高く、これに対する対策なくしては複数パス並列
処理方法の本質的な高性能性を導きだすことは不可能と
なるからである。第5図は複数パス並列処理方法による
あるプログラムの流れを示したものである。本プロセッ
サのパイプラインは分岐命令501によって2つに分かれ
るが、それぞれパスは互いに関連をもって動作する。即
ち手続き504において第1番目のレジスタあるいはメモ
リに対して書き込み(W1)が行われ、それをもう一方の
パスの手続き509で参照する(R1)。手続き509はさらに
第2番目のレジスタあるいはメモリに対して書き込み
(W2)を行い、それを手続き512で参照する(R2)。ま
た、同時に手続き508では第3番目のレジスタあるいは
メモリに対して書き込み(W3)を行い、それを手続き51
3で参照する(R3)。その後、融合命令によってパイプ
ラインの一本化が行われる。第5図のプログラムの流れ
はデータの依存関係によって、その実行順序が規定され
る。即ち手続き504は手続き509より先に、手続き508は
手続き513より先に、そして手続き509は手続き512より
先にそれぞれ実行されなければならない。このような実
行順序はハードウェアでは制御不可能であるが、このプ
ログラムのコードを生成するコンパイラは実行順序の情
報を持っているため、コード中に実行順序制御のための
命令を埋め込むことができる。この命令を条件休止命令
(Increment and Conditional Pause)と呼ぶことにし
て、その動作について説明する。前述の説明の通り、手
続き504は手続き509より早く実行されなければならな
い。そこで、条件休止命令506,507を用いて同期をと
る。2つのパスにはそれぞれ同期用のフラグ502,503が
あって、これらは分裂命令501によってリセットされ、
条件休止命令によってその値を増加させられる。条件休
止命令507は手続き509の実行を手続き504の実行終了ま
で待たせる働きをするものである。手続き504の実行終
了時には、条件休止命令506が実行されており、フラグ5
02は1となっている。条件休止命令507はフラグ503を1
にしてフラグ502と比較する。このとき、条件休止命令5
07はフラグ502の内容を信号線515を用いて参照できる。
もしもフラグ502が0の場合、即ちフラグ502がフラグ50
3と等しくない時には、条件休止命令507はパイプライン
を停止して条件休止命令506の実行終了を待つ。条件休
止命令510と511に関しても同様であるが、手続き512及
び513はそれぞれ手続き509及び508が終了していないと
実行開始不能であるので、相手のフラグと値が等しくな
い場合にパイプラインを停止するという判定条件を持つ
条件休止命令を使用する。このようにして誤動作なく目
的のプログラムを並列に実行できる。
[発明の効果] 本発明によれば、命令取り出し部分を複数もつことに
より、分岐命令による並列度の減少を解決し、分岐命令
自身をも並列化できるので、問題プログラムから並列度
を100%抽出することができる。また、複数の命令実行
部の同期をとるための命令とハードウェアを採用するこ
とにより、誤動作なく命令の実行順序を制御できる。
【図面の簡単な説明】
第1図は本発明の方法を適用した処理装置の一実施例を
示すブロック図、第2図は第1図の処理装置におけるパ
イプライン制御の説明図、第3図及び第4図は従来方法
と本発明の方法によったときの処理例を示す図、第5図
は命令間にデータ依存関係があるときの実行順序制御方
法の説明図である。 100,102…命令フェッチユニット、103,104…制御ブロッ
ク、105,107…実行ユニット、502,503…フラグ。

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】メモリから命令を取り出す命令取り出し手
    段、該手段により取り出された命令のデコード手段、及
    び該手段によりデコードされた命令の実行手段より成る
    ところの独立動作可能な処理系の複数個と、分裂命令及
    び融合命令とを設けるとともに、1つの処理系により処
    理中の命令列に同時処理可能な命令が存在するときに
    は、当該処理系で分裂命令を実行させることにより他処
    理系による同時並列処理を開始し、複数の処理系による
    同時並列処理を1つの処理系の処理へまとめるときに
    は、当該1つの処理系によって上記融合命令を実行させ
    ることにより上記1つの処理系以外の上記同時並列処理
    を行っていた処理系の動作を停止することを特徴とする
    複数パス並列処理方法。
  2. 【請求項2】前記複数の処理系によって同時並列処理を
    行う場合に、複数の処理系の各々にフラグを設け、さら
    に上記処理系の処理対象とする命令列の中に条件休止命
    令を挿入するとともに、同時並列処理の開始を指示する
    前記分裂命令によって各処理系の上記フラグをクリア
    し、各処理系が上記条件休止命令を実行したときには自
    処理系のフラグを+1更新しかつ他処理系のフラグを調
    べ、もし自処理系と他処理系のフラグの値が異なるとき
    はその値が一致するまで自処理系の次の命令の処理を休
    止することを特徴とする請求項1記載の複数パス並列処
    理方法。
  3. 【請求項3】前記融合命令が実行されたときに、該融合
    命令を実行した処理系で継続される処理のスーパスカラ
    実行可能なアドレスの連続する複数の命令を、上記融合
    命令により動作を停止された処理系も用いて同時並列処
    理することを特徴とする請求項1記載の複数パス並列処
    理方法。
JP838490A 1990-01-19 1990-01-19 複数パス並列処理方法 Expired - Fee Related JP2866421B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP838490A JP2866421B2 (ja) 1990-01-19 1990-01-19 複数パス並列処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP838490A JP2866421B2 (ja) 1990-01-19 1990-01-19 複数パス並列処理方法

Publications (2)

Publication Number Publication Date
JPH03214235A JPH03214235A (ja) 1991-09-19
JP2866421B2 true JP2866421B2 (ja) 1999-03-08

Family

ID=11691723

Family Applications (1)

Application Number Title Priority Date Filing Date
JP838490A Expired - Fee Related JP2866421B2 (ja) 1990-01-19 1990-01-19 複数パス並列処理方法

Country Status (1)

Country Link
JP (1) JP2866421B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
US7065636B2 (en) 2000-12-20 2006-06-20 Intel Corporation Hardware loops and pipeline system using advanced generation of loop parameters

Also Published As

Publication number Publication date
JPH03214235A (ja) 1991-09-19

Similar Documents

Publication Publication Date Title
EP0243892B1 (en) System for guaranteeing the logical integrity of data
US9747107B2 (en) System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor
EP0450658B1 (en) Parallel pipelined instruction processing system for very long instruction word
JP2786574B2 (ja) コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US5555384A (en) Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction
WO1990014629A2 (en) Parallel multithreaded data processing system
JPH0766329B2 (ja) 情報処理装置
JP2000020326A (ja) プロセッサにおけるレジスタ内容の継承装置
JP2008139964A (ja) データプロセッサ
JPH02195432A (ja) データ処理システム及び方法
GB2519801A (en) Computing architecture and method for processing data
JP2866421B2 (ja) 複数パス並列処理方法
KR20050123163A (ko) 프로세싱 시스템, 프로세싱 시스템 프로그래밍 방법 및컴파일러 프로그램 제품
JP3789937B2 (ja) ベクトルプロセッサのためのチャンク連鎖
EP0279953A2 (en) Computer system having mixed macrocode and microcode instruction execution
JP3008223B2 (ja) プロセッサ間の同期処理装置
JPH0512751B2 (ja)
JP3743155B2 (ja) パイプライン制御型計算機
JPH09237186A (ja) ループ制御装置およびプロセッサ
JP3668643B2 (ja) 情報処理装置
JPH0769825B2 (ja) 並列処理装置
JP2853460B2 (ja) データロード方法及びそれを用いた演算プロセッサ
JPH08272608A (ja) パイプライン処理装置
JP2853458B2 (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
JP2001022581A (ja) データ処理装置及びコンピュータ読み取り可能な記憶媒体

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees