JP2845646B2 - 並列演算処理装置 - Google Patents

並列演算処理装置

Info

Publication number
JP2845646B2
JP2845646B2 JP3222990A JP22299091A JP2845646B2 JP 2845646 B2 JP2845646 B2 JP 2845646B2 JP 3222990 A JP3222990 A JP 3222990A JP 22299091 A JP22299091 A JP 22299091A JP 2845646 B2 JP2845646 B2 JP 2845646B2
Authority
JP
Japan
Prior art keywords
branch
instruction
instructions
taken
processing
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
JP3222990A
Other languages
English (en)
Other versions
JPH0540627A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP3222990A priority Critical patent/JP2845646B2/ja
Priority to US07/842,208 priority patent/US5461722A/en
Publication of JPH0540627A publication Critical patent/JPH0540627A/ja
Application granted granted Critical
Publication of JP2845646B2 publication Critical patent/JP2845646B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の命令を並列に実
行する命令処理装置を備えた並列演算処理装置に係り、
特に、少なくとも2つの分岐命令を含む複数の命令を並
列に実行する場合に好適な並列演算処理装置に関する。
【0002】
【従来の技術】近年、命令を処理するパイプライン処理
装置をn個(nは2以上の整数)持つ命令処理装置を備
えた演算処理装置が開発されている。この演算処理装置
は、1つのロードモジュールの命令ストリームから命令
をn個ずつ取出し、その命令を、命令処理装置内のパイ
プライン処理装置で並列に実行していくことから、並列
演算処理装置と呼ばれる。この種の並列演算処理装置で
は、命令をn個ずつ間断なく処理していくことが性能向
上のポイントとなる。したがって、プログラムが(局所
的に)相互に独立な命令で構成されている場合に、最高
の処理性能が得られることになる。
【0003】さて、上記した並列演算処理装置で命令を
並列に実行する際に最も問題となるのが、プログラム中
の分岐命令である。例えば、ADD(加算)、BR1
(条件分岐)、SUB(減算)、およびBR2(条件分
岐)の4命令を並列に実行する場合を考える。ここで4
つの命令は、プログラム中では、図12に示すようにA
DD、BR1、SUBそしてBR2の順に配置されてい
るものとする。この命令の並びでは、逐次的な演算処理
装置であれば、ADD→BR1→SUB→BR2の順で
実行されることになる。この逐次的な実行の順序は、並
列演算処理装置においては各命令の優先度として取扱わ
れる。なお、ここでは、BR1命令はADD命令の結果
を分岐条件とし、BR2命令はADD命令より先に実行
されているCMP(比較)命令の結果を分岐条件として
いるものとする。
【0004】上記した4命令中には、BR1とBR2の
2つの分岐命令が含まれるため、次に処理すべき4命令
(次命令列)はBR1およびBR2の結果に依存する。
ここでは、可能性のある次命令列としては、以下に述べ
る3つの場合が考えられる。 (1)BR1が分岐不成立でBR2が分岐成立の場合 この場合、次命令列は、図12に示すように、BR2命
令で指定される分岐先アドレスTAR1のMP(乗算)
命令から始まる4命令となる。 (2)BR1が分岐成立の場合
【0005】この場合、次命令列は、図12に示すよう
に、BR1命令で指定される分岐先アドレスTAR2の
DV(除算)命令から始まる4命令となる。したがって
BR1命令より後のSUBおよびBR2命令の実行はキ
ャンセルされなければならない。 (3)BR1およびBR2が共に分岐不成立の場合 この場合、次命令列は、BR2命令に後続する4命令と
なる。
【0006】以上に、例を挙げて説明したように、並列
演算処理装置において、同一の実行ステップ中に複数個
の分岐命令が存在する場合の次命令列フェッチの処理
は、各分岐命令の分岐成立/不成立の組合わせによって
種々のケースがある。ここで、次命令列がどれになるか
は、複数個の分岐命令の分岐判定が全て終了した後でな
ければ確定できない。
【0007】このため従来の並列演算処理装置では、並
列に実行される全ての分岐命令の分岐判定の終了を待っ
た後、各分岐命令の分岐判定結果と各分岐命令の優先度
をチェックすることで次命令列を決定し、その次命令列
のフェッチを行っていた。しかし、並列に実行される全
ての分岐命令の分岐判定結果と各分岐命令の優先度をチ
ェックすることは煩雑であり、しかも、このチェックの
後でなければ次命令列のフェッチが行われないため、処
理の高速化が困難であった。そこで、並列演算処理装置
において次命令列を簡単にフェッチきるようにするため
に、次の2つの手法のいずれかを適用することも知られ
ている。
【0008】第1は、同一ステップで実行される分岐命
令が複数含まれないように、コンパイラによって、プロ
グラム自体を静的に構成する手法である。この第1の手
法では、本来同一ステップで実行されるはずの4命令が
上記のようにADD、BR1、SUB、およびBR2で
ある場合を例にとると、2つの分岐命令のうちの後側の
(即ち低い優先度の)BR2に代えてNOP(ノー・オ
ペレーション)命令が設定される。BR2は、後続の4
命令の先頭となる。
【0009】第1の手法によれば、同一ステップで実行
される分岐命令が1つに限定されるので、分岐成立時の
次命令列を簡単に決定でき、その次命令列を速やかにフ
ェッチできる。しかし第1の手法では、NOP命令が余
分に挿入されてプログラムが冗長となるため、高速処理
の障害となっていた。
【0010】第2は、同一ステップで実行される分岐命
令が複数ある場合、そのステップ内で、分岐命令の実行
を逐次的に行う手法である。この第2の手法では、同一
ステップにおいて同時に実行される分岐命令が1つに限
定されるので、次命令列は第1の手法同様簡単に決定で
きる。しかし第2の手法では、同一ステップ内で分岐命
令の逐次実行が行われるため、真の並列処理とはなら
ず、高速処理の障害となっていた。なお、第2の手法で
は、同一ステップ内で先に実行された分岐命令で分岐が
成立した場合には、低い優先度の分岐命令は実行されな
いことは勿論である。
【0011】
【発明が解決しようとする課題】上記したように、複数
の分岐命令が並列に実行されるのを許す従来の並列演算
処理装置では、次命令列のフェッチ処理が複雑で、しか
も次命令列のフェッチが遅れて高速処理が行えないとい
う問題があった。また、同一の実行ステップ中に分岐命
令が複数個含まれないようにプログラム自体を静的に構
成したり、同一ステップ中での複数の分岐命令の実行を
逐次的に行うようにした従来の並列演算処理装置では、
次命令列のフェッチ処理は簡略化されるものの、NOP
(ノー・オペレーション)となる命令が生じたり、逐次
的な実行による並列性の低下を招くため、やはり高速処
理が行えないという問題があった。
【0012】そこで本発明は、複数の分岐命令を並列に
実行することができ、しかも条件成立時の分岐処理が簡
単に且つ高速に行える並列演算処理装置を提供すること
を目的とする。
【0013】
【課題を解決するための手段】本発明に係る並列演算処
理装置は、複数の命令を並列に実行するために同数の処
理ユニットを有する命令処理装置と、上記命令処理装置
で少なくとも1つの分岐命令を含む複数の命令が並列に
実行された場合に、最も早く分岐成立が判明した分岐命
令のうち、プログラム上の並び順で決定される最も優先
度の高い分岐命令で指定される分岐先の命令から始まる
複数の命令を次に実行すべき命令列として先読みする先
読み手段と、分岐成立が判明した分岐命令の中で最も優
先度の高い分岐命令より後の命令の実行をキャンセルす
るキャンセル手段とを備えたことを特徴とするものであ
る。
【0014】
【作用】上記の構成によれば、2つ以上の分岐命令を含
む複数の命令も、命令処理装置で並列に処理される。こ
の命令処理装置の処理における最初の分岐成立判明時に
は、分岐が成立した分岐命令(複数の分岐命令で同時に
分岐成立が判明した場合には、最も優先度の高い分岐命
令、即ちプログラム上の実行順序の最も早い分岐命令)
によって指定される分岐先の命令から始まる複数の命令
が、次に実行すべき命令列(次命令列)として、先読み
手段により先読みされる。したがって、この分岐命令よ
り優先度が高い分岐命令が、その後の分岐判定で全て分
岐不成立となった場合には、先読みしておいた命令列を
命令処理装置に取込んで直ちに実行することができ、高
速分岐が可能となる。
【0015】また上記の構成によれば、先読みに用いら
れた分岐命令より優先度の高い分岐命令で遅れて分岐成
立が判明した場合には、上記の場合ほど高速分岐はでき
ないものの、複数の分岐命令が並列に実行されることか
ら、従来のように逐次的に行われる場合に比べれば高速
となる。
【0016】更に上記の構成によれば、分岐成立が判明
した場合には、分岐成立が判明した分岐命令の中で最も
優先度の高い分岐命令より後の命令の実行が、キャンセ
ル手段によってキャンセルされるため、複数の分岐命令
の並列実行を許す場合の不都合は生じない。
【0017】
【実施例】以下、本発明の一実施例を添付図面を参照し
ながら詳細に説明する。図1は本発明の第1実施例に係
る並列演算処理装置のブロック構成を示す。
【0018】同図において、各種プログラムが格納され
る主記憶などのプログラム格納装置11には、命令フェ
ッチ装置12が接続される。命令フェッチ装置12は、
後述するセレクタ23によって選択されたアドレスをも
とに、命令処理装置16で並列に実行すべき複数の命
令、例えば4命令を、プログラム格納装置11から毎サ
イクル取出す(フェッチする)。なお、命令フェッチ装
置12内に、プログラム格納装置11からの命令取出し
に用いたアドレスを保持するレジスタを設け、このレジ
スタの内容とセレクタ23によって選択されたアドレス
とが等しい場合には、命令取出しを省略するようにする
ことも可能である。
【0019】命令フェッチ装置12には、通常状態にお
いて同装置12によって取出された4命令を保持するた
めの命令レジスタ(IR)13、および分岐成立時に同
装置12によって取出された4命令を保持するための分
岐先命令レジスタ(BRIR)14の各入力が、共通に
接続される。命令レジスタ13および分岐先命令レジス
タ14の各出力は、2入力1出力のセレクタ(SEL)
15の入力に接続される。セレクタ15は、後述するセ
レクタ制御回路25から出力される選択信号Sに応じ
て、命令レジスタ13および分岐先命令レジスタ14の
うちのいずれか一方の出力を、次に実行すべき命令列
(4命令)として選択する。
【0020】セレクタ15の出力は、同セレクタ15に
よって選択された命令列を並列に実行するための命令処
理装置16に接続されている。命令処理装置16は、セ
レクタ15によって選択された命令列(4命令)のそれ
ぞれ先頭命令,2番目の命令,3番目の命令,4番目の
命令を例えばパイプライン方式で実行するパイプライン
処理装置16−0,16−1,16−2,16−3によ
り構成される。但し本実施例では、命令処理装置16で
並列処理される4命令が1つの処理単位であり、4命令
の処理が全て終了するまでは、次の4命令の処理は開始
されないものとする。命令処理装置16内のパイプライ
ン処理装置16−0〜16−3における新たな4命令の
処理開始は、後述するパイプラインレディ信号PRが論
理“1”となることにより可能となる。
【0021】パイプライン処理装置16−0〜16−3
は、命令をデコードするためのデコードステージDと、
アドレス計算、オペランドフェッチおよび演算等を行う
ための実行ステージEと、実行ステージEでの命令処理
の実行結果をレジスタ、メモリ等へ書込むための書込み
ステージWとの3つのパイプラインステージにより、命
令の実行を行う。パイプライン処理装置16−0〜16
−3は、実行ステージEにおける分岐命令の実行過程で
分岐成立を判定した場合に、次の命令処理が可能となる
までの間、論理“1”の分岐成立/不成立信号T/NT
0〜T/NT3を出力する。またパイプライン処理装置
16−0〜16−3は、自身の実行ステージEが終了す
る場合、次の命令処理が可能となるまでの間、論理
“1”の終了信号E0〜E3を出力する。
【0022】パイプライン処理装置16−0〜16−3
には、同装置16−0〜16−3で分岐命令が実行され
た場合に生成される分岐先アドレスを、システムクロッ
ク信号CLKに応じて保持するための分岐先アドレスレ
ジスタ(BRT0〜BRT3)17−0〜17−3が接
続される。分岐先アドレスレジスタ17−0〜17−3
の各出力は、4入力1出力のセレクタ(SEL)15の
入力に接続される。セレクタ18は、分岐制御を司る分
岐制御装置19から出力される2ビットの分岐先アドレ
ス制御信号C0に応じて、分岐先アドレスレジスタ17
−0〜17−3の出力(分岐先アドレス)のいずれか1
つを選択する。
【0023】分岐制御装置19は、パイプライン処理装
置16−0〜16−3から出力される分岐成立/不成立
信号T/NT0〜T/NT3の状態を記憶し、その記憶
内容をもとに、2ビットの分岐先アドレス制御信号C
0、1ビットの分岐先アドレス制御信号C1、および4
つの1ビットキャンセル信号CAN0〜CAN3を出力
する。分岐先アドレス制御信号C0は、セレクタ18等
を制御するのに用いられる。また、分岐先アドレス制御
信号C1は後述するセレクタ22,23等を制御するの
に用いられる。またキャンセル信号CAN0〜CAN3
は、パイプライン処理装置16−0〜16−3の命令実
行をキャンセルするのに用いられる。
【0024】さて図1において、実行中命令列(4命
令)の先頭命令のアドレスを設定するためのプログラム
カウンタ(PC)20の出力は、インクリメンタ(IN
C)21の入力に接続される。インクリメンタ21は、
プログラムカウンタ20の出力に所定の増分(ここでは
4命令分)を加算して、後続の命令列の先頭命令のアド
レス(次命令アドレス)を生成する。
【0025】インクリメンタ21の出力はセレクタ18
の出力と共に、2入力1出力のセレクタ(SEL)22
の入力に接続される。セレクタ22は、分岐制御装置1
9から出力される分岐先アドレス制御信号C1に応じ
て、インクリメンタ21の出力およびセレクタ18の出
力のうちのいずれか一方をプログラムカウンタ20に選
択出力する。
【0026】インクリメンタ21およびセレクタ18の
各出力はまた、2入力1出力のセレクタ(SEL)23
の入力に接続される。セレクタ23は、分岐制御装置1
9から出力される分岐先アドレス制御信号C1に応じ
て、インクリメンタ21の出力およびセレクタ18の出
力のうちのいずれか一方を命令フェッチ装置12に選択
出力する。このセレクタ23は、セレクタ22の出力を
プログラムカウンタ20の他、命令フェッチ装置12に
も接続することにより、セレクタ22で代用させること
ができる。
【0027】さて、パイプライン処理装置16−0〜1
6−3から出力される終了信号E0〜E3は、同信号E
0〜E3のAND(論理積)をとるためのアンドゲート
24の入力に接続される。アンドゲート24は、終了信
号E0〜E3が全て論理“1”の場合に、命令処理装置
16における4命令の並列実行処理(実行ステージE)
の終了を示す終了信号ENDを出力する。この終了信号
ENDは、システムクロック信号CLKおよび分岐制御
装置19から出力される分岐先アドレス制御信号C0,
C1と共に、セレクタ制御回路25に接続される。セレ
クタ制御回路25は、各信号END,C0,C1,CL
Kをもとに、選択信号Sおよびパイプラインレディ信号
PRを生成する。
【0028】分岐制御装置19から出力される分岐先ア
ドレス制御信号C1はインバータ26の入力とも接続さ
れる。このインバータ26の出力は、システムクロック
信号CLKと共に、命令レジスタ13のロード動作を制
御するためのアンドゲート27の入力に接続される。ま
た、分岐先アドレス制御信号C1は、システムクロック
信号CLKと共に、分岐先命令レジスタ14のロード動
作を制御するためのアンドゲート28の入力に接続され
る。一方、アンドゲート24から出力される終了信号E
NDは、システムクロック信号CLKと共に、プログラ
ムカウンタ20のロード動作を制御するためのアンドゲ
ート29の入力に接続される。図2は図1の分岐制御装
置19の内部構成を示す。
【0029】同図において、分岐制御装置19は、図1
のパイプライン処理装置16−0〜16−3から出力さ
れる分岐成立/不成立信号T/NT0〜T/NT3の状
態を、システムクロック信号CLKに応じてビット0〜
ビット3に保持するための4ビットのレジスタ(T/N
Tレジスタ)31、およびT/NTレジスタ31の出力
をもとに、パイプライン処理装置16−0〜16−3の
実行をキャンセルするためのキャンセル信号CAN0〜
CAN3を生成するキャンセル回路32を有する。キャ
ンセル回路32は、例えばデコーダにより構成されてお
り、その入力(T/NTレジスタ31の出力)と、出力
(キャンセル信号CAN0〜CAN3)との関係は、図
3に示す通りである。
【0030】分岐制御装置19は更に、4入力2出力の
優先度エンコーダ(プライオリティエンコーダ)33、
およびT/NTレジスタ31の4ビット出力をOR(オ
ア)し、そのOR信号を分岐先アドレス制御信号C1と
して出力するオアゲート(OR)34を有する。優先度
エンコーダ33は、(パイプライン処理装置16−0〜
16−3に対応する)T/NTレジスタ31のビット0
〜ビット3の4ビット出力を入力し、値が“1”のビッ
ト中で最も優先度の高いビットの位置(左側ほど高優先
度)を検出して、そのビット位置情報を分岐先アドレス
制御信号C0(2ビット)として出力する。
【0031】図4は図1のセレクタ制御回路25の内部
構成を示す。 同図において、セレクタ制御回路25
は、図1の分岐制御装置19から出力される1ビット分
岐先アドレス制御信号C1をビット0の位置に保持し、
2ビット分岐先アドレス制御信号C0を、ビット1,2
の位置に保持するための3ビットレジスタ41を有す
る。このレジスタ41は、図1のアンドゲート24から
出力される終了信号ENDに応じてクリヤされる。
【0032】セレクタ制御回路25はまた、レジスタ4
1のビット1,2の出力FC0と分岐先アドレス制御信
号C0とを比較し、FC0=C0の場合に論理“0”の
信号を、FC0≠C0の場合に論理“1”の信号を出力
する比較器(CMP)42、比較器42の出力とレジス
タ41のビット0の出力FC1とのANDをとるアンド
ゲート43、アンドゲート43の出力を受けて、そのレ
ベルを反転するインバータ44、およびインバータ44
の出力と終了信号ENDとのANDをとるアンドゲート
45を有する。アンドゲート45は、AND条件の成立
時に、図1の命令処理装置16が次に実行すべき4命令
が命令レジスタ13または分岐先命令レジスタ14に揃
っていることを示す論理“1”のタイミング信号TMを
出力する。このタイミング信号TMは、命令処理装置1
6において新たな命令列の実行を開始することが可能と
なったことを示すパイプラインレディ信号PRとして用
いられる。
【0033】セレクタ制御回路25は更に、アンドゲー
ト45から出力されるタイミング信号TMと分岐先アド
レス制御信号C1とのANDをとるアンドゲート46を
有する。アンドゲート46は、命令処理装置16におい
て新たな命令列の実行を開始することが可能となった時
点で、次に実行すべき4命令が命令レジスタ13または
分岐先命令レジスタ14のいずれに用意されているかを
示すための信号を出力する。このアンドゲート46の出
力信号は、図1のセレクタ15を制御するための選択信
号Sとして用いられる。
【0034】次に、上記のように構成された並列演算処
理装置の動作を説明する。なお本実施例では、命令処理
装置16で並列処理される4命令の中に含まれる分岐命
令は全て4命令外に分岐するという制約があるものとす
る。但し、この制約は説明を簡略化するために設けたも
ので、本発明の適用範囲を限定するものではない。
【0035】今、4命令が命令処理装置16に取込ま
れ、その先頭命令はパイプライン処理装置16−0によ
り、2番目の命令はパイプライン処理装置16−1によ
り、3番目の命令はパイプライン処理装置16−2によ
り、そして4番目の命令はパイプライン処理装置16−
3により、それぞれ並列に処理されているものとする。
ここで、命令処理装置16で並列処理されている命令
は、従来の技術の項で説明した場合と同様に、図12に
示すプログラム中のADD、BR1、SUBおよびBR
2の4命令であるものとする。この4命令についてオペ
ランドに関する依存関係はないものとする。また、BR
1命令は前記したように並列に処理されるADD命令の
結果を分岐条件とし、BR2命令は既に実行されている
CMP命令の結果を分岐条件とするものとする。
【0036】この場合、上記の4命令(の実行ステージ
E)は図5に示すように実行される。即ち、相互に依存
関係のないADD、SUBおよびBR2の3命令はサイ
クルT0で実行され、ADDの結果を分岐条件とするB
R1はT0の次のサイクルT1で実行される。もし、B
R2が直前のSUBの結果を分岐条件とするものであれ
ば、BR2はBR1と同様にT1で実行されることにな
る。
【0037】さて、上記の4命令が図5に示すように実
行されるものとすると、可能性のある次命令列として
は、従来の技術の項でも説明したように、(1)BR1
が分岐不成立でBR2が分岐成立の場合、(2)BR1
が分岐成立の場合、(3)BR1およびBR2が共に分
岐不成立の場合の3つの場合が考えられる。ここで、上
記の各場合(1)〜(3)の各サイクル毎の動作につい
て、図6乃至図8を参照して順に説明する。 (1)BR1が分岐不成立でBR2が分岐成立の場合 (1−1)サイクルT0
【0038】まずサイクルT0では、命令処理装置16
のパイプライン処理装置16−0,16−2,16−3
において、図5に示すようにADD,SUB,BR2の
処理(実行ステージE)が行われる。これにより、パイ
プライン処理装置16−0,16−2ではADD,SU
Bの処理結果が生成される。また、パイプライン処理装
置16−3ではBR2の指定する分岐先アドレスが生成
される。この分岐先アドレスは、図12から明らかなよ
うにMP命令を指す分岐先アドレスTAR1である。
【0039】パイプライン処理装置16−3で生成され
た分岐先アドレスTAR1は、分岐先アドレスレジスタ
(BRT3)17−3にロードされる。パイプライン処
理装置16−3ではまた、分岐成立が判定され、論理
“1”の分岐成立/不成立信号T/NT3が生成され
る。この論理“1”の分岐成立/不成立信号は、サイク
ルT0の終了時に分岐制御装置19内のT/NTレジス
タ31の対応ビット位置(ビット3)にラッチされる。
【0040】一方、ADD,SUBを処理中のパイプラ
イン処理装置16−0,16−2から分岐先アドレスレ
ジスタ17−0,17−2へのアドレスロードは、AD
D,SUBが分岐命令でない通常の命令であるため、行
われない。また、パイプライン処理装置16−0,16
−2から出力される分岐成立/不成立信号T/NT0,
T/NT2はいずれも“0”となる。更に、BR1の実
行が行われていないパイプライン処理装置16−1から
出力される分岐成立/不成立信号T/NT1も“0”で
ある。したがって、パイプライン処理装置16−0〜1
6−3での分岐成立の有無を記憶するためのT/NTレ
ジスタ31のビット0〜3の内容は、サイクルT0の終
了時では、“0001”となる。 (1−2)サイクルT1
【0041】サイクルT1では、命令処理装置16のパ
イプライン処理装置16−1において、パイプライン処
理装置16−0のADD処理の結果を分岐条件とするB
R1の処理が行われる。ここでは、BR1は分岐不成立
であるため、パイプライン処理装置16−1から出力さ
れる分岐成立/不成立信号T/NT1は“0”となる。
【0042】一方、分岐制御装置19においては、分岐
先命令を先頭とする4命令の先読みに必要な制御が、T
/NTレジスタ31にラッチされている値“0001”
に従って行われる。まず、T/NTレジスタ31の4ビ
ット出力は優先度エンコーダ33に導かれる。優先度エ
ンコーダ33はT/NTレジスタ31の4ビット出力を
エンコードし、値が“1”のビットのうち、最も優先度
の高い(最も左側の)ビットの位置を示す2ビットの情
報を、分岐先アドレス制御信号C0として出力する。し
たがって、T/NTレジスタ31の出力が“0001”
の例では、分岐先アドレス制御信号C0は、パイプライ
ン処理装置16−3に対応するビット3の位置を示す2
ビット情報、即ち“11”となる。
【0043】T/NTレジスタ31の4ビット出力は分
岐制御装置19内のオアゲート34にも導かれる。オア
ゲート34は、T/NTレジスタ31の4ビット出力の
いずれか1ビットでも“1”であれば、即ち先行するサ
イクル(T0)においてパイプライン処理装置16−0
〜16−3のいずれかで分岐成立が判定されたならば、
論理“1”の分岐先アドレス制御信号C1を出力する。
ここでは、T0においてパイプライン処理装置16−3
で分岐成立が判定され、T/NTレジスタ31のビット
3が論理“1”となっているため、分岐先アドレス制御
信号C1は“1”となる。
【0044】分岐制御装置19(内の優先度エンコーダ
33)から出力される2ビット分岐先アドレス制御信号
C0はセレクタ18に導かれる。セレクタ18は、信号
C0がそれぞれ“00”,“01”,“10”,“1
1”の場合に、対応する分岐先アドレスレジスタ17−
0,17−1,17−2,17−3の内容を選択する。
ここでは、信号C0が“11”であることから、分岐先
アドレスレジスタ17−3の内容、即ちT0におけるパ
イプライン処理装置16−3のBR2処理で分岐先アド
レスレジスタ17−3にロードされた(MP命令を指
す)分岐先アドレス(TAR1)が選択される。
【0045】分岐制御装置19(内のオアゲート34)
から出力される分岐先アドレス制御信号C1はセレクタ
22,23に導かれる。セレクタ22,23は、信号C
1が“0”の場合にインクリメンタ21の出力を選択
し、“1”の場合にセレクタ18の出力を選択する。こ
こでは、信号C1が“1”であることから、セレクタ1
8の出力、即ち分岐先アドレスレジスタ17−3にロー
ドされている(MP命令を指す)分岐先アドレス(TA
R1)が選択される。セレクタ22,23によって選択
された分岐先アドレス(TAR1)は、それぞれプログ
ラムカウンタ(PC)20,命令フェッチ装置12に導
かれる。
【0046】命令フェッチ装置12は、毎サイクル、セ
レクタ23から選択出力されるアドレスに従い、同アド
レスで指定される命令から始まる4命令をプログラム格
納装置11から先読みする。ここでは、セレクタ23か
ら選択出力されるアドレスが分岐先アドレスTAR1で
あることから、同アドレスTAR1で指定されるMP命
令から始まる4命令が先読みされる。命令フェッチ装置
12によって先読みされた4命令は、命令レジスタ(I
R)13および分岐先命令レジスタ(BRIR)14に
出力される。
【0047】命令レジスタ13は、分岐先アドレス制御
信号C1が“0”の場合に、アンドゲート27によりク
ロック信号CLKのタイミングでロード制御される。ま
た分岐先命令レジスタ14は、分岐先アドレス制御信号
C1が“1”の場合に、アンドゲート28によりクロッ
ク信号CLKのタイミングでロード制御される。ここで
は、分岐先アドレス制御信号C1が“1”であることか
ら、命令フェッチ装置12によって先読みされた4命令
(MP命令から始まる4命令)は、サイクルT1の終了
時に分岐先命令レジスタ14に選択的にロードされる。
【0048】さてサイクルT1では、パイプライン処理
装置16−1でBR1の処理が実行されることにより、
ADDから始まる4命令の処理(実行ステージE)が全
て終了する。この結果、サイクルT1では、パイプライ
ン処理装置16−0〜16−3から出力される終了信号
E0〜E3は全て“1”となり、アンドゲート24から
論理“1”の終了信号ENDが出力される。
【0049】アンドゲート24から出力される終了信号
ENDはシステムクロック信号CLKと共にアンドゲー
ト29に入力される。アンドゲート29は、終了信号E
NDが論理“1”の場合に、システムクロック信号CL
Kのタイミングで、プログラムカウンタ20のロード動
作を許可する。このとき、プログラムカウンタ20の入
力には、前記したようにセレクタ22によって選択出力
されている分岐先アドレスTAR1が導かれている。こ
のためサイクルT1の終了時には、セレクタ22によっ
て選択出力されている分岐先アドレスTAR1がプログ
ラムカウンタ20にロードされる。このプログラムカウ
ンタ20の内容(アドレスTAR1)は、次のサイクル
T2から処理が開始される4命令の先頭アドレス、即ち
MP命令から始まる新たな4命令の先頭アドレスを示
す。 (1−3)サイクルT2
【0050】さて、先のサイクルT1では、上記したよ
うにパイプライン処理装置16−1でのBR1の処理で
分岐不成立が判定されるため、分岐成立/不成立信号T
/NT1は“0”のままである。したがって、サイクル
T1の終了時における分岐成立/不成立信号T/NT0
〜T/NT3はサイクルT0の終了時と同様に“000
1”のままであり、分岐制御装置19内のT/NTレジ
スタ31の内容も、“0001”のままである。このよ
うに、T/NTレジスタ31の内容が“0001”と変
わらないことから、分岐先アドレス制御信号C1,C0
もサイクルT0の終了時と同様に、それぞれ“1”,
“11”のままである。
【0051】上記1ビット分岐先アドレス制御信号C1
は、システムクロック信号CLKに応じて、セレクタ制
御回路25内のレジスタ41のビット0にラッチされ
る。同時に、2ビット分岐先アドレス制御信号C0が、
レジスタ41のビット1,2にラッチされる。C1,C
0は、サイクルT1では、前記したようにそれぞれ
“1”,“11”である。したがってサイクルT2で
は、レジスタ41のビット0の出力FC1は“1”であ
り、ビット1,2の出力FC0は“11”である。ま
た、サイクルT2におけるC1,C0も、サイクルT1
と同じ“1”,“11”である。
【0052】レジスタ41のビット1,2の出力FC0
は、分岐先アドレス制御信号C0と共に、比較器42に
導かれる。比較器42は、FC0とC0とを比較する。
もし、FC0とC0が等しい場合には、即ち現サイクル
におけるC0の値と、先のサイクルにおけるC0の値と
が等しい場合には、比較器42は、より優先度の高い分
岐命令で新たに分岐成立が判明した命令は存在しないも
のとして、論理“0”の信号を出力する。本サイクルT
2では、FC0とC0は“11”で等しいことから、比
較器42からは論理“0”の信号が出力される。また、
サイクルT2では終了信号ENDは論理“1”となって
いる。このため、サイクルT2では、アンドゲート45
から論理“1”のタイミング信号TMが出力される。
【0053】アンドゲート45から出力されるタイミン
グ信号TMは、分岐先アドレス制御信号C1と共に、ア
ンドゲート46に供給される。アンドゲート46は信号
TM,C1が共に“1”の場合だけ、論理“1”の選択
信号Sを出力し、それ以外は論理“0”の選択信号Sを
出力する。本サイクルT2では、TM,C1が共に
“1”であることから、選択信号Sは“1”となる。
【0054】セレクタ15は、選択信号Sが“1”の場
合、分岐先命令レジスタ14の内容を命令処理装置16
に選択出力する。分岐先命令レジスタ14には、先のサ
イクルT1の終了時に、BR2で指定される分岐先アド
レスTAR1の命令MPから始まる4命令が既にロード
されている。したがって、分岐先命令レジスタ14の内
容が、サイクルT2においてセレクタ15によって選択
されることにより、命令フェッチ装置12によって先読
みされた分岐先命令MPから始まる4命令が速やかに命
令処理装置16に供給される。
【0055】さて、サイクルT2においてアンドゲート
45から出力される論理“1”のタイミング信号TM
は、パイプラインレディ信号PRとして命令処理装置1
6に導かれる。これにより、命令処理装置16は、セレ
クタ15から出力される新たな命令を取込んでその処理
を開始する。このとき、命令処理装置16に取込まれる
命令は、分岐先命令MPから始まる4命令であり、命令
処理装置16はこの4命令をパイプライン処理装置16
−0〜16−3によって遅滞なく速やかに処理する。命
令処理装置16−0〜16−3による新たな命令処理が
開始されると、終了信号E0〜E3は論理“0”とな
り、終了信号ENDも論理“0”となる。そして、終了
信号ENDが“0”となることにより、レジスタ31,
41の内容がクリヤされる。
【0056】なお、本実施例のような分岐先命令の先読
みを実施していなければ、終了信号ENDが出力された
後、サイクルT2において分岐先命令の読出しを行うこ
とになるため、1Tの遅れが生じる。もし、複数の分岐
命令を並列に処理しないならば、更に遅れることにな
る。
【0057】(2)BR1が分岐成立の場合 (2−1)サイクルT0 まず、サイクルT0では、前記した(1)のBR1分岐
不成立、BR2分岐成立の場合と同様な、ADD,SU
B,BR2の処理が行われる。もし、BR2が分岐成立
したなら、サイクルT0の終了時の分岐制御装置19内
T/NTレジスタ31の内容は“0001”となる。ま
た、分岐先アドレスレジスタ17−3にはMP命令を指
す分岐先アドレスTAR1がロードされる。
【0058】(2−2)サイクルT1 サイクルT1では、命令処理装置16のパイプライン処
理装置16−1においてBR1の処理が行われ、DV命
令を指す分岐先アドレスATR2が生成される。ここで
は、BR1は分岐成立であるため、パイプライン処理装
置16−1から出力される分岐成立/不成立信号T/N
T1は“0”から“1”に遷移する。また、パイプライ
ン処理装置16−1で生成された(BR1の指定する)
分岐先アドレス(DV命令を指す分岐先アドレスTAR
2)が分岐先アドレスレジスタ17−1にロードされ
る。
【0059】一方、分岐制御装置19においては、T/
NTレジスタ31にラッチされている値“0001”に
従って、前記した(1)の場合と同様に分岐先命令の先
読みを行うための制御が行われる。この場合には、分岐
先アドレス制御信号C0が“11”、分岐先アドレス制
御信号C1が“1”であるため、BR2処理で分岐先ア
ドレスレジスタ17−3にロードされた(MP命令を指
す)分岐先アドレス(TAR1)がセレクタ18,23
によって選択されて命令フェッチ装置12に出力され
る。そして、アドレスTAR1のMP命令から始まる4
命令が、命令フェッチ装置12によってプログラム格納
装置11から先読みされる。この先読みされた4命令
は、サイクルT1の終了時に分岐先命令レジスタ14に
ロードされる。
【0060】さて、サイクルT1の終了時における分岐
成立/不成立信号T/NT0〜T/NT3はサイクルT
0の終了時と異なって“0101”となる。したがっ
て、分岐制御装置19内のT/NTレジスタ31の内容
も“0101”となる。
【0061】(2−3)サイクルT2 サイクルT2では、先のサイクルT1においてBR2よ
り優先度の高いBR1が分岐成立となったことから、B
R1の分岐先命令(DV命令)から始まる4命令の処理
が必要となる。この4命令は未だ分岐先命令レジスタ1
4に読込まれていないので、サイクルT2では、以下に
述べるように上記の4命令の分岐先命令レジスタ14へ
の読込みが行われ、実際の処理開始は次のサイクルT3
からとなる。
【0062】まずサイクルT2では、分岐制御装置19
内のT/NTレジスタ31の内容が“0101”となっ
ている。このため、分岐制御装置19からはビット1
(に対応するパイプライン処理装置16−1)を示す、
値が“01”の分岐先アドレス制御信号C0、および論
理“1”の分岐先アドレス制御信号C1がそれぞれ出力
されている。したがってサイクルT2では、セレクタ1
8によって分岐先アドレスレジスタ17−1の内容(D
V命令を指すアドレスTAR2)が選択され、このセレ
クタ18の出力が更にセレクタ23によって選択され
る。この結果、BR1の指定する分岐先アドレスTAR
2が、セレクタ23から命令フェッチ装置12に出力さ
れる。
【0063】命令フェッチ装置12は、セレクタ23か
ら出力されたアドレスTAR2に従って、同アドレスT
AR2のDV命令から始まる4命令をプログラム格納装
置11から取出す。この命令フェッチ装置12によって
取出されたDV命令から始まる4命令は、分岐先アドレ
ス制御信号C1が“1”であることから、サイクルT2
の終了時に、分岐先命令レジスタ14にロードされる。
この結果、分岐先命令レジスタ14の内容が、サイクル
T0で分岐成立が判定されたBR2の指定するMP命令
から始まる4命令から、サイクルT1で分岐成立が判定
された(BR2より優先度が高い)BR1の指定するD
V命令から始まる4命令に書換えられる。
【0064】分岐制御装置19内のキャンセル回路32
は、T/NTレジスタ31において、値が“1”のビッ
トの中で最も優先度の高いビットがビット0〜ビット2
の間に存在する場合、次のビット位置以降に対応するパ
イプライン処理装置16−iの処理をキャンセルするた
めの制御を行う。したがってキャンセル回路32は、本
サイクルT2のようにT/NTレジスタ31の内容が
“0101”の場合には、即ち値が“1”のビットの中
で最も優先度の高いビットがビット1の場合には、ビッ
ト2,ビット3に対応するパイプライン処理装置16−
2,16−3のSUB処理,BR2処理をキャンセルす
るために、図3からも明らかなように、論理“1”のキ
ャンセル信号CAN2,CAN3を出力する。この結
果、パイプライン処理装置16−2,16−3では、対
応する命令処理の実行結果の書込み(レジスタ、メモ
リ、条件コードなどへのライトバック)が禁止される。
【0065】サイクルT2では、セレクタ制御回路25
内のレジスタ41のビット0の出力FC1は、サイクル
T1におけるC1が“1”であることから“1”とな
る。また、レジスタ41のビット1,2の出力FC0
は、サイクルT1におけるC0が“11”であることか
ら“11”となる。一方、サイクルT2におけるC1,
C0は、前記したようにそれぞれ“1”,“01”であ
る。
【0066】セレクタ制御回路25内の比較器42は、
FC0とC0とを比較する。サイクルT2においてFC
0とC0とは等しくない。この場合、比較器42は論理
“1”の信号を出力する。この比較器42の出力信号
は、レジスタ41のビット0の出力FC1と共に、アン
ドゲート43に供給される。アンドゲート43は、比較
器42の出力とFC1とが共に“1”の場合に論理
“1”の信号を出力する。このアンドゲート43から出
力される論理“1”の信号は、直前のサイクル(ここで
はT1)において、更にその前のサイクル(ここではT
0)で分岐成立が判明した分岐命令より優先度の高い分
岐命令で新たに分岐成立が判明したので、現サイクル
(ここではT2)においてその分岐先の命令から始まる
4命令が分岐先命令レジスタ14にフェッチされるのを
待つ必要があることを示す。アンドゲート43の出力が
“1”となると、サイクルT1においてADDから始ま
る4命令の処理(実行ステージE)が全て終了して、T
1以降、アンドゲート24から論理“1”の終了信号E
NDが出力されていても、アンドゲート45から論理
“1”のタイミング信号TM、即ちパイプラインレディ
信号PRが出力されるのが抑止される。
【0067】(2−4)サイクルT3 サイクルT2の終了時には、FC0とC0とは等しくな
る。この場合、比較器42の出力は“0”に遷移し、ア
ンドゲート43の出力も“0”に遷移する。この結果、
アンドゲート45のAND条件が成立し、アンドゲート
45から論理“1”のタイミング信号TM、即ちパイプ
ラインレディ信号PRが出力される。
【0068】アンドゲート45から論理“1”のタイミ
ング信号TMが出力されると、C1=“1”であること
から、アンドゲート46のAND条件が成立し、同ゲー
ト46から論理“1”の選択信号Sが出力される。
【0069】セレクタ15は、選択信号Sが“1”の場
合、分岐先命令レジスタ14の内容を命令処理装置16
に選択出力する。分岐先命令レジスタ14には、サイク
ルT2の終了時に、BR1で指定される分岐先アドレス
TAR2の命令DVから始まる4命令が既にロードされ
ている。したがって、サイクルT3では、分岐先命令レ
ジスタ14の内容がセレクタ15によって選択されるこ
とにより、分岐先命令DVから始まる4命令が命令処理
装置16に供給される。このとき、アンドゲート45か
らは論理“1”のタイミング信号TM、即ちパイプライ
ンレディ信号PRが出力され、命令処理装置16に供給
されている。この結果、DVから始まる4命令の処理が
命令処理装置16により開始される。命令処理装置16
による新たな命令処理が開始されると、終了信号END
は論理“0”となり、レジスタ31,41の内容がクリ
ヤされる。
【0070】(3)BR1およびBR2が共に分岐不成
立の場合 (3−1)サイクルT0 まず、サイクルT0では、前記した(1)の場合と同様
なADD,SUB,BR2の処理が行われる。但し、こ
こではBR2は分岐不成立となるため、サイクルT0の
終了時の分岐制御装置19内T/NTレジスタ31の内
容は“0000”となる。
【0071】(3−2)サイクルT1 サイクルT1では、命令処理装置16のパイプライン処
理装置16−1においてBR1の処理が行われる。ここ
では、BR1は分岐不成立であるため、パイプライン処
理装置16−1から出力される分岐成立/不成立信号T
/NT1は“0”のままである。
【0072】一方、分岐制御装置19においては、T/
NTレジスタ31にラッチされている値“0000”に
従ってBR2命令の次の命令からの4命令の先読みを行
うための制御が行われる。即ち分岐制御装置19(内の
ORゲート34)は、T/NTレジスタ31の出力“0
000”のORをとり、論理“0”のOR信号を分岐先
アドレス制御信号C1としてセレクタ22,23に出力
する。セレクタ23は、この論理“0”の分岐先アドレ
ス制御信号C1に応じ、インクリメンタ21の出力、即
ちプログラムカウンタ20の内容に4命令分の所定増分
が加算されたアドレス(BR2命令の次の命令のアドレ
ス)を命令フェッチ装置12に選択出力する。命令フェ
ッチ装置12は、セレクタ23から選択出力されたアド
レス(次命令アドレス)に従い、同アドレスの命令(B
R2の次の命令)から始まる4命令をプログラム格納装
置11から先読みする。この先読みされた4命令は、分
岐先アドレス制御信号C1が“0”であることから、サ
イクルT1の終了時に、命令レジスタ13にロードされ
る。
【0073】なお、サイクルT1の終了時における分岐
成立/不成立信号T/NT0〜T/NT3はサイクルT
0の終了時と同様に“0000”である。したがって、
分岐制御装置19内のT/NTレジスタ31の内容も、
“0000”のままである。
【0074】(3−3)サイクルT2 上記のサイクルT1でADDから始まる4命令の処理
(実行ステージE)は全て終了し、終了信号ENDが
“1”となる。これにより、サイクルT1の終了時に
は、プログラムカウンタ20のロード動作が許可され
る。このとき、分岐制御装置19内のT/NTレジスタ
31の内容が“0000”であることから、分岐制御装
置19から出力される分岐先アドレス制御信号C1は
“0”である。したがって、セレクタ22から、インク
リメンタ21の出力、即ちBR2命令の次の命令のアド
レスが選択され、同アドレスがプログラムカウンタ20
にロードされる。
【0075】サイクルT2では、セレクタ制御回路25
内のレジスタ41のビット0の出力FC1は、サイクル
T1におけるC1が“0”であることから“0”であ
る。このとき終了信号ENDは“1”である。したがっ
てサイクルT2では、アンドゲート45から論理“1”
のタイミング信号TMが出力される。
【0076】アンドゲート46から出力されるタイミン
グ信号TMは、分岐先アドレス制御信号C1と共に、ア
ンドゲート46に供給される。アンドゲート46は、信
号C1が“0”であることから、タイミング信号TMに
無関係に論理“0”の選択信号Sの出力を続ける。この
結果、セレクタ15は命令レジスタ13の内容を命令処
理装置16に選択出力する。命令レジスタ13には、先
のサイクルT1の終了時に、BR2の次の命令から始ま
る4命令が既にロードされている。したがって、アンド
ゲート45から出力される論理“1”のタイミング信号
TMがパイプラインレディ信号PRとして命令処理装置
16(内のパイプライン処理装置16−0〜16−3)
に導かれることにより、命令フェッチ装置12によって
先読みされたBR2の次の命令から始まる4命令の処理
が、命令処理装置16において開始される。
【0077】以上の第1実施例に係る並列演算処理装置
では、命令処理装置16で並列処理される4命令が1つ
の処理単位であり、4命令が全て実行終了するまでは次
の4命令の処理は開始されないものとして説明したが、
これに限るものではない。例えば、4命令全てが実行ス
テージEに入り、デコードステージDが全てレディ状態
となれば、後続の4命令の処理を開始させることも可能
である。このような並列演算処理装置の実施例につい
て、添付図面を参照して説明する。図9は本発明の第2
実施例に係る並列演算処理装置のブロック構成を示す。
【0078】図9の構成では、命令フェッチ装置12に
よって取出された4命令を保持するための唯一の命令レ
ジスタ(IR)53が、図1の2つのレジスタ13,1
4に代えて設けられる。命令レジスタ53の出力は、同
レジスタ53から供給される4命令を並列に処理する命
令処理装置56に接続される。命令処理装置56は、デ
コードステージD、実行ステージEおよび書込みステー
ジWの3ステージにより命令処理を行うパイプライン処
理装置56−0〜56−3により構成される。
【0079】命令処理装置56は、デコードステージD
がレディ状態となれば、処理中の4命令の終了を待たな
くても、命令レジスタ53から供給される新たな4命令
の処理をパイプライン式に実行する。この点で、命令処
理装置56は図1の命令処理装置16と異なり、図1の
並列演算処理装置に比べて一層の高速処理が可能とな
る。
【0080】パイプライン処理装置56−0〜56−3
の実行ステージEで分岐命令が実行された場合に生成さ
れる分岐先アドレスは、分岐先アドレスレジスタ17−
0〜17−3に供給される。また、パイプライン処理装
置56−0〜56−3では、分岐命令の実行過程で分岐
成立を判定した場合、論理“1”のアクティブな分岐成
立/不成立信号T/NT0〜T/NT3を出力する。こ
の分岐成立/不成立信号T/NT0〜T/NT3は、分
岐制御装置59に供給される。
【0081】分岐制御装置59は、パイプライン処理装
置56−0〜56−3から出力される分岐成立/不成立
信号T/NT0〜T/NT3の状態を記憶し、その記憶
内容をもとに、2ビットの分岐先アドレス制御信号C
0、1ビットの分岐先アドレス制御信号C1、および6
つの1ビットキャンセル信号CAN0E ,CAN0D 〜
CAN3E ,CAN3D を生成する。キャンセル信号C
AN0E 〜CAN3E は、パイプライン処理装置16−
0〜16−3の実行ステージEの結果をキャンセル(無
効化)するのに用いられる。また、キャンセル信号CA
N0D 〜CAN3D は、パイプライン処理装置16−0
〜16−3のデコードステージDの結果をキャンセル
(無効化)するのに用いられる。
【0082】上記した分岐制御装置59の内部構成を図
10に示す。図から明らかなように、分岐制御装置59
が図1の分岐制御装置19と異なる点は、キャンセル回
路32に代えて、キャンセル信号CAN0E ,CAN0
D 〜CAN3E ,CAN3Dを生成するキャンセル回路
62が設けられていることである。キャンセル回路62
は例えばデコーダにより構成されており、その入力(T
/NTレジスタ31の出力)と出力(キャンセル信号C
AN0E,CAN0D 〜CAN3E ,CAN3D )との
関係は、図11に示す通りである。この図11は、T/
NTレジスタ31の出力中に値が“1”のビットが存在
した場合に、値が“1”のビットの中で最も優先度の高
いビットの位置より後のビット位置に対応するパイプラ
イン処理装置56−iの実行ステージEをキャンセルす
るためのキャンセル信号CANiE が論理“1”に設定
され、更に全てのパイプライン処理装置56−0〜56
−3のデコードステージDをキャンセルするためのキャ
ンセル信号CAN0D 〜CAN3D が論理“1”に設定
されることを示す。
【0083】さて、図9の並列演算処理装置には、命令
レジスタ53のロード制御を司るアンドゲート55が設
けられる。アンドゲート55は、図示せぬパイプライン
制御装置から出力されるデコードステージ・インバリッ
ド信号DSIVとシステムクロック信号CLKとを入力
し、AND条件成立時に命令レジスタ53のロード動作
を許可する。上記信号DSIVは、パイプライン処理装
置56−0〜56−3のデコードステージDが全てレデ
ィ状態にある場合に論理“1”に設定される。
【0084】上記の構成では、パイプライン処理装置5
6−0〜56−3のデコードステージDが全てレディ状
態にあるならば、即ちデコードステージ・インバリッド
信号DSIVが論理“1”であるならば、アンドゲート
55はシステムクロック信号CLKのタイミングで命令
レジスタ53のロード動作を許可する。この結果、命令
フェッチ装置12によってプログラム格納装置11から
先読みされた4命令は、パイプライン処理装置56−0
〜56−3の実行ステージE以降に処理中の命令が存在
したとしても、命令レジスタ53にロードされる。命令
レジスタ53にロードされた4命令は、そのまま命令処
理装置56に供給され、パイプライン処理装置56−0
〜56−3のデコードステージDでの処理対象となる。
なお、命令フェッチ装置12の動作は、図1の構成の場
合と同様である。
【0085】さて、分岐制御装置59は、T/NTレジ
スタ31の4ビット出力に応じて2ビット分岐先アドレ
ス制御信号C0および1ビット分岐先アドレス制御信号
C1を生成する。また分岐制御装置59は、図10のキ
ャンセル回路62により、T/NTレジスタ31の4ビ
ット出力に応じてキャンセル信号CAN0E 〜CAN3
E ,キャンセル信号CAN0D 〜CAN3Dを生成す
る。
【0086】ここで、前記第1実施例における(2)の
例のように、サイクルT0でBR2の分岐成立が判明
し、サイクルT1でBR1の分岐成立が判明したものと
する。この場合、サイクルT1では、T/NTレジスタ
31の4ビット出力は“0001”であり、分岐先アド
レス制御信号C0は“11”、分岐先アドレス制御信号
C1は“1”となる。
【0087】したがってサイクルT1では、分岐先アド
レスレジスタ17−3の内容(分岐先アドレスTAR
1)がセレクタ18によって選択され、更にセレクタ2
3によって選択されて命令フェッチ装置12に供給され
る。命令フェッチ装置12は、このセレクタ23によっ
て選択出力された分岐先アドレスTAR1のMP命令か
ら始まる4命令をプログラム格納装置11から先読み
し、命令レジスタ53に出力する。これにより、もしサ
イクルT1においてパイプライン処理装置56−0〜5
6−3のデコードステージDがレディ状態にあれば、即
ちDSIV=1であれば、MP命令から始まる4命令
(分岐先の4命令)がサイクルT1の終了時に命令レジ
スタ53にロードされる。この命令レジスタ53にロー
ドされた4命令は命令処理装置56に供給され、次のサ
イクルT2におけるデコードステージDでの処理対象と
なる。
【0088】さて、サイクルT1でBR1の分岐成立が
判明すると、次のサイクルT2では、T/NTレジスタ
31の4ビット出力は“0101”、分岐先アドレス制
御信号C0は“01”となる。一方、分岐先アドレス制
御信号C1は“1”のままである。
【0089】したがってサイクルT2では、分岐先アド
レスレジスタ17−1の内容(分岐先アドレスTAR
2)がセレクタ18によって選択され、更にセレクタ2
3によって選択されて命令フェッチ装置12に供給され
る。命令フェッチ装置12は、このセレクタ23によっ
て選択出力された分岐先アドレスTAR2のDV命令か
ら始まる4命令をプログラム格納装置11から取出し、
命令レジスタ53に出力する。
【0090】分岐制御装置59内のキャンセル回路62
は、T/NTレジスタ31の出力が“0101”となる
サイクルT2では、図11から明らかなように、ビット
1より後のビット2,ビット3に対応するパイプライン
処理装置16−2,16−3の実行ステージEをキャン
セルするための論理“1”のキャンセル信号CAN2E
,CAN3E と、全てのパイプライン処理装置16−
0〜16−3のデコードステージDをキャンセルするた
めの論理“1”のキャンセル信号CAN0D 〜CAN3
D を出力する。これによりサイクルT2では、分岐が成
立した2つの分岐命令BR1,BR2の中で優先度が高
いBR1より後の命令SUBおよびBR2の実行ステー
ジEがキャンセルされる。同時に、BR1より低い優先
度のBR2の分岐成立判定に伴って、先のサイクルT1
で先読みされた分岐先アドレスTAR1のMP命令から
始まる4命令のデコードステージDがキャンセルされ
る。
【0091】さてサイクルT2の終了時には、サイクル
T2において命令フェッチ装置12によってプログラム
格納装置11から取出された、BR1の指定する分岐先
のDV命令から始まる4命令が、命令レジスタ53にロ
ードされる。この命令レジスタ53にロードされた4命
令は命令処理装置56に供給される。これにより、次の
サイクルT3では、DV命令から始まる4命令の処理が
開始される。
【0092】以上、本明細書および図面で詳細に示した
実施例は本発明を限定するものではない。本発明の主旨
および特許請求の範囲内での種々の変形は本発明の範囲
内である。
【0093】
【発明の効果】以上詳述したように本発明によれば、複
数の命令を並列に実行する並列演算処理装置に、少なく
とも1つの分岐命令を含む複数の命令が並列に実行され
た場合に、最も早く分岐成立が判明した分岐命令のう
ち、最も優先度の高い分岐命令で指定される分岐先の命
令から始まる複数の命令を次に実行すべき命令列として
先読みする先読み手段と、分岐成立が判明した分岐命令
の中で最も優先度の高い分岐命令より後の命令の実行を
キャンセルするキャンセル手段とを設けた構成とするこ
とにより、特に後から分岐判定が行われた分岐命令が存
在し、その分岐命令が分岐不成立となった場合、或いは
分岐成立となってもその分岐命令の優先度が低い場合に
は、先読みしておいた命令列により条件成立時の分岐処
理を高速に行うことができる。また、先読みが無駄とな
った場合でも、2つ以上の分岐命令を含む複数の命令を
並列に実行するのを許すことから、従来に比べれば高速
処理が可能となる。また、2つ以上の分岐命令を含む複
数の命令を並列に実行しても、分岐成立が判明した分岐
命令のうち、最も優先度の高い分岐命令より後の命令の
実行がキャンセルされるので、不要な命令処理を簡単に
且つ正しくキャンセルできる。
【図面の簡単な説明】
【図1】本発明の第1実施例に係る並列演算処理装置の
ブロック構成図。
【図2】図1に示す分岐制御装置19の内部構成を示す
図。
【図3】図2に示すキャンセル回路32の入力と出力の
関係を示す図。
【図4】図1に示すセレクタ制御回路25の内部構成を
示す図。
【図5】同実施例における命令実行順の一例を示す図。
【図6】図5に示す命令の実行で、BR1命令の分岐が
不成立でBR2命令の分岐が成立した場合の装置内各部
の各サイクル毎の状態を説明するための図。
【図7】図5に示す命令の実行で、BR1命令の分岐が
成立した場合の装置内各部の各サイクル毎の状態を説明
するための図。
【図8】図5に示す命令の実行で、BR1およびBR2
命令の分岐が共に不成立となった場合の装置内各部の各
サイクル毎の状態を説明するための図。
【図9】本発明の第2実施例に係る並列演算処理装置の
ブロック構成図。
【図10】図9に示す分岐制御装置59の内部構成を示
す図。
【図11】図10に示すキャンセル回路62の入力と出
力の関係を示す図。
【図12】分岐命令を含むプログラムの一例を示す図。
【符号の説明】
11…プログラム格納装置、12…命令フェッチ装置
(先読み手段)、13,53…命令レジスタ(IR)、
14…分岐先命令レジスタ(BRIR)、15,18,
22,23…セレクタ(SEL)、16,56…命令処
理装置、16−0〜16−3,56−0〜56−3…パ
イプライン処理装置(処理ユニット)、17−0〜17
−3…分岐先アドレスレジスタ(BRT0〜BRT
3)、19,59…分岐制御装置、20…プログラムカ
ウンタ(PC)、21…インクリメンタ(INC)、2
5…セレクタ制御回路、31…T/NTレジスタ(分岐
判定結果保持手段)、32,62…キャンセル回路、3
3…優先度エンコーダ(第1の検出手段)、34…オア
ゲート(OR、第2の検出手段)、42…比較器(CM
P)。

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数の命令を並列に実行するために同数
    の処理ユニットを有する命令処理装置と、 前記命令処理装置で少なくとも1つの分岐命令を含む複
    数の命令が並列に実行された場合に、最も早く分岐成立
    が判明した分岐命令のうち、プログラム上の並び順で決
    定される最も優先度の高い分岐命令で指定される分岐先
    の命令から始まる複数の命令を次に実行すべき命令列と
    して先読みする先読み手段と、 分岐成立が判明した分岐命令のうち、最も優先度の高い
    分岐命令より後の命令の実行をキャンセルするキャンセ
    ル手段とを具備することを特徴とする並列演算処理装
    置。
  2. 【請求項2】 前記先読み手段は、後から分岐成立が判
    明した分岐命令の中に、先に分岐成立が判明した分岐命
    令より優先度の高い分岐命令が存在する場合、この優先
    度の高い分岐命令で指定される分岐先の命令から始まる
    複数の命令を次に実行すべき命令列として、再度先読み
    することを特徴とする請求項1記載の並列演算処理装
    置。
  3. 【請求項3】 前記各処理ユニットで分岐命令の処理が
    行われた場合に、その分岐判定の結果を、各処理ユニッ
    トに対応して保持するための分岐判定結果保持手段と、 前記分岐判定結果保持手段の保持内容をもとに、分岐成
    立が判明した分岐命令の中で最も優先度の高い分岐命令
    を処理した処理ユニットを検出する第1の検出手段と、 前記分岐判定結果保持手段の保持内容をもとに、分岐成
    立が判明した分岐命令が存在するか否かを検出する第2
    の検出手段と、 前記第2の検出手段の検出結果により分岐成立が判明し
    た分岐命令が存在することが示されている場合には、前
    記第1の検出手段の検出結果によって示される処理ユニ
    ットでの分岐命令処理で生成された分岐先アドレスを選
    択し、前記第2の検出手段の検出結果により分岐成立が
    判明した分岐命令が存在しないことが示されている場合
    には、実行中の複数の命令の次の命令を指定する次命令
    アドレスを選択するアドレス選択手段とを更に備え、 前記先読み手段は、前記アドレス選択手段によって選択
    されたアドレスをもとに次に実行すべき命令列の先読み
    を行うことを特徴とする請求項2記載の並列演算処理装
    置。
  4. 【請求項4】 前記キャンセル手段は、前記分岐判定結
    果保持手段の保持内容をもとに、分岐成立が判明した分
    岐命令の中で最も優先度の高い分岐命令を検出し、その
    検出した分岐命令より後の命令の実行をキャンセルする
    ためのキャンセル信号を生成して、対応する処理ユニッ
    トに供給することを特徴とする請求項3記載の並列演算
    処理装置。
  5. 【請求項5】 前記第1の検出手段が、前記分岐判定結
    果保持手段に前記各処理ユニット毎に保持される各分岐
    判定結果を入力し、分岐成立を示す分岐判定結果の中で
    最も優先度の高い分岐命令の分岐判定結果の保持位置か
    ら、対応する処理ユニットを指定するための位置情報を
    生成する優先度エンコーダにより構成されていることを
    特徴とする請求項3記載の並列演算処理装置。
  6. 【請求項6】 前記第2の検出手段が、前記分岐判定結
    果保持手段に前記各処理ユニット毎に保持される各分岐
    判定結果をオアするオア手段により構成され、前記キャ
    ンセル手段が前記分岐判定結果保持手段に前記各処理ユ
    ニット毎に保持される各分岐判定結果を入力し、分岐成
    立を示す分岐判定結果の中で最も優先度の高い分岐命令
    の分岐判定結果の保持位置をもとに、分岐成立が判明し
    た分岐命令の中で最も優先度の高い分岐命令より後の命
    令の実行をキャンセルするためのキャンセル信号を生成
    するデコーダにより構成されていることを特徴とする請
    求項5記載の並列演算処理装置。
  7. 【請求項7】 前記アドレス選択手段は、前記優先度エ
    ンコーダから出力される位置情報に応じ、同情報で示さ
    れる処理ユニットでの分岐命令処理で生成された分岐先
    アドレスを選択する第1の選択手段と、この第1の選択
    手段によって選択された分岐先アドレスおよび実行中の
    複数の命令の次の命令を指定する次命令アドレスのうち
    のいずれか一方を、前記オア手段のオア結果に応じて選
    択する第2の選択手段とを備え、前記第2の選択手段に
    よって選択されたアドレスを前記先読み手段に供給する
    ようにしたことを特徴とする請求項6記載の並列演算処
    理装置。
JP3222990A 1990-09-05 1991-09-03 並列演算処理装置 Expired - Fee Related JP2845646B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3222990A JP2845646B2 (ja) 1990-09-05 1991-09-03 並列演算処理装置
US07/842,208 US5461722A (en) 1990-09-05 1991-09-04 Parallel processing apparatus suitable for executing in parallel a plurality of instructions including at least two branch instructions

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP23310390 1990-09-05
JP2-233103 1990-09-05
JP3222990A JP2845646B2 (ja) 1990-09-05 1991-09-03 並列演算処理装置

Publications (2)

Publication Number Publication Date
JPH0540627A JPH0540627A (ja) 1993-02-19
JP2845646B2 true JP2845646B2 (ja) 1999-01-13

Family

ID=26525204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3222990A Expired - Fee Related JP2845646B2 (ja) 1990-09-05 1991-09-03 並列演算処理装置

Country Status (2)

Country Link
US (1) US5461722A (ja)
JP (1) JP2845646B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266556A (ja) * 1993-03-15 1994-09-22 Fujitsu Ltd データ処理装置
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US5668737A (en) * 1995-03-22 1997-09-16 Pixel Magic, Inc. High-speed data processor and coding method
US6185674B1 (en) 1995-04-05 2001-02-06 International Business Machines Corporation Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
US5875294A (en) 1995-06-30 1999-02-23 International Business Machines Corporation Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
GB9521955D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US5809324A (en) * 1995-12-07 1998-09-15 Sun Microsystems, Inc. Multiple instruction dispatch system for pipelined microprocessor without branch breaks
US5999738A (en) * 1996-11-27 1999-12-07 Hewlett-Packard Company Flexible scheduling of non-speculative instructions
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US6260138B1 (en) 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
US6477562B2 (en) 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US7257814B1 (en) * 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US6912650B2 (en) * 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history
JP2004518183A (ja) * 2000-07-14 2004-06-17 クリアウオーター・ネツトワークス・インコーポレイテツド マルチスレッド・システムにおける命令のフェッチとディスパッチ
JP3800533B2 (ja) 2002-06-28 2006-07-26 富士通株式会社 プログラムカウンタ制御方法及びプロセッサ
WO2013147289A1 (en) * 2012-03-29 2013-10-03 Semiconductor Energy Laboratory Co., Ltd. Processor and electronic device
CN103268219B (zh) * 2013-05-28 2016-05-11 北京航空航天大学 基于流水线架构的海量文件指导型预取并行处理加速方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121488A (en) * 1986-06-12 1992-06-09 International Business Machines Corporation Sequence controller of an instruction processing unit for placing said unit in a ready, go, hold, or cancel state
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
JPH0244424A (ja) * 1988-08-05 1990-02-14 Agency Of Ind Science & Technol パイプライン計算機
JPH0769824B2 (ja) * 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式

Also Published As

Publication number Publication date
JPH0540627A (ja) 1993-02-19
US5461722A (en) 1995-10-24

Similar Documents

Publication Publication Date Title
JP2845646B2 (ja) 並列演算処理装置
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US5961637A (en) Split branch system utilizing separate set branch, condition and branch instructions and including dual instruction fetchers
US5706459A (en) Processor having a variable number of stages in a pipeline
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
JP2875909B2 (ja) 並列演算処理装置
US6510511B2 (en) Methods and apparatus for branch prediction using hybrid history with index sharing
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
KR20010109354A (ko) 프로세서내의 기록 트래픽을 감소시키는 시스템 및 방법
US6760835B1 (en) Instruction branch mispredict streaming
JP2000330787A (ja) 命令ループを実行するコンピュータシステムおよび命令ループ実行方法
KR100570906B1 (ko) 데이터처리기에서조건부분기실행을제어하기위한장치및방법
KR100986375B1 (ko) 피연산자의 빠른 조건부 선택
EP1770507A2 (en) Pipeline processing based on RISC architecture
JP2006517322A (ja) パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置
JPS634208B2 (ja)
JP3741870B2 (ja) 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
JP3708022B2 (ja) プロセッサ
KR100576560B1 (ko) 추측 레지스터 조정 방법 및 장치
US4935849A (en) Chaining and hazard apparatus and method
JP2006031697A (ja) 分岐ターゲットバッファと使用方法
KR970011209B1 (ko) 실행된 명령 스트림을 추적하기 위해 사용되는 신호를 발생하기 위한 회로를 포함하는 마이크로프로세서
JP2503223B2 (ja) 先行制御方式
US6772318B1 (en) Bypass control circuit
JPH06139071A (ja) 並列計算機

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081030

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees