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

複数パス並列処理方法

Info

Publication number
JPH03214235A
JPH03214235A JP838490A JP838490A JPH03214235A JP H03214235 A JPH03214235 A JP H03214235A JP 838490 A JP838490 A JP 838490A JP 838490 A JP838490 A JP 838490A JP H03214235 A JPH03214235 A JP H03214235A
Authority
JP
Japan
Prior art keywords
instruction
processing
processing system
instructions
executed
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
Application number
JP838490A
Other languages
English (en)
Other versions
JP2866421B2 (ja
Inventor
Yasuhiro Nakatsuka
康弘 中塚
Kenichi Kurosawa
黒沢 憲一
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

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

Claims (1)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105002A (ja) * 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> 計算機システム
US7065636B2 (en) 2000-12-20 2006-06-20 Intel Corporation Hardware loops and pipeline system using advanced generation of loop parameters

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105002A (ja) * 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> 計算機システム
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
JP2866421B2 (ja) 1999-03-08

Similar Documents

Publication Publication Date Title
JP2818249B2 (ja) 電子計算機
JP5283810B2 (ja) プロセッサおよびコプロセッサを含むコンピュータ・システム
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
US8006072B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
KR0133238B1 (ko) 컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법
JP2022539844A (ja) 静止再構成可能データ・プロセッサ
EP1023659B1 (en) Efficient processing of clustered branch instructions
US5555384A (en) Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction
CN103809936A (zh) 编译或运行时执行分叉-合并数据并行程序的系统和方法
JP2004512599A (ja) ディジタル信号処理装置
JP2003029986A (ja) プロセッサ間レジスタ継承方法及びその装置
JPH0622035B2 (ja) ベクトル処理装置
US20110078418A1 (en) Support for Non-Local Returns in Parallel Thread SIMD Engine
US20150121037A1 (en) Computing architecture and method for processing data
JPH0749781A (ja) インタロックハードウェアの単純化方法及び装置
US20020035677A1 (en) Method and apparatus for pre-processing instructions for a processor
JPH0760388B2 (ja) パイプライン制御回路
KR20050123163A (ko) 프로세싱 시스템, 프로세싱 시스템 프로그래밍 방법 및컴파일러 프로그램 제품
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
JPH03214235A (ja) 複数パス並列処理方法
EP2159690A1 (en) Information processing unit and method for controlling register
CN116841614B (zh) 乱序访存机制下的顺序向量调度方法
CN1690899B (zh) 控制装置
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
JP3008223B2 (ja) プロセッサ間の同期処理装置

Legal Events

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