JPH0315771B2 - - Google Patents

Info

Publication number
JPH0315771B2
JPH0315771B2 JP56047482A JP4748281A JPH0315771B2 JP H0315771 B2 JPH0315771 B2 JP H0315771B2 JP 56047482 A JP56047482 A JP 56047482A JP 4748281 A JP4748281 A JP 4748281A JP H0315771 B2 JPH0315771 B2 JP H0315771B2
Authority
JP
Japan
Prior art keywords
instruction
address
register
pointer
value
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 - Lifetime
Application number
JP56047482A
Other languages
English (en)
Other versions
JPS57162032A (en
Inventor
Yoshihiro Mizushima
Kazuyuki Shimizu
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP4748281A priority Critical patent/JPS57162032A/ja
Publication of JPS57162032A publication Critical patent/JPS57162032A/ja
Publication of JPH0315771B2 publication Critical patent/JPH0315771B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

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

【発明の詳細な説明】 本発明は電子計算機等における命令先行制御方
式に係り、特に複数の命令を同時並行処理するこ
とができるパイプライン先行制御方式をとる処理
装置におけるブランチ連係(BRANCH AND
LINK)命令の先行制御に関するものである。
一般に電子計算機等によるデータ処理や計算処
理において、プログラム命令の実行速度を高速化
するために、先行制御方式がとられているが、特
に科学計算等の莫大な情報量を処理するために複
数の命令を同時並行処理するパイプライン先行制
御方式が用いられている。
通常このパイプライン先行制御方式において
は、1命令の実行サイクルを複数のサイクルに分
割し、その複数のサイクルの先頭から数サイクル
の処理が進むと、次の命令と並行して処理可能と
しているものであるが、比較的頻繁に使われる命
令としてその実行対象となる命令中にブランチ
(分岐)処理とその分岐した後の処理後に分岐前
の次命令に戻るためのブランチ連係命令(BAL)
がある。このブランチ連係命令(BRANCH
AND LINK)の実行において連係情報として現
プログラム状態語PSWからの情報(更新された
次の命令アドレス命令長コード(ILC)、条件コ
ード(CC)、プログラムマスクビビツトなど)を
命令で指定された汎用レジスタ(GPR)に格納
することを行なうが、連係情報の一部である“更
新された次の命令アドレス”は、ブランチ連係命
令の次の命令アドレスを示さなければならない。
しかし先行制御を行なつているため命令アドレス
レジスタ(IAR)は、現在実行中の命令アドレス
よりも数命令先を示しているので先行する命令長
だけ、修正しなければならない。このためブラン
チ連係命令全体の実行サイクルが長くなつてい
た。
本発明は、上記連係情報の発生を早くし、ブラ
ンチ連係命令の実行サイクルを短縮させることを
目的としたものである。
上記目的を達成する為に、本発明は、複数の領
域に区分けされた命令先取りバツフア(IBR)を
複数個と、前記命令先取りバツフア(IBR)に対
応して設けられた前記複数の領域毎に命令の記憶
状態を示すポインタ(NSIP)を有すると供に、
前記命令先取りバツフアに命令がパイプラインに
先行して格納され、前記命令先取りバツフアに先
行して格納された命令アドレスを保持する命令ア
ドレスレジスタ(IAR)を有するパイプライン制
御計算機に於いて、前記領域内の命令がパイプラ
イン内に取り込まれた時に前記ポインタ
(NSIP)の値を更新し、且つ前記ポインタ
(NSIP)の値を前記命令読出しのための先行し
た命令アドレスを示す命令アドレスレジスタ
(IAR)の値と同期して更新せしめ、前記命令先
取りバツフア(IBR)からパイプライン内に取り
込まれた命令が、ブランチ・アンド・リンク命令
(BAL)である場合には、パイプライン内に次命
令を取り込まず且つ、前記ポインタ(NSIP)の
値を更新せず、先行した命令アドレスレジスタ
(IAR)の値より、ポインタ(NSIP)の値から
求めた命令先取りバツフア(IBR)内にある残り
バイト数を減算して戻り先アドレスを算出してか
らポインタ(NSIP)の更新を実行することを特
徴とする。
以下本発明を実施例によつて詳細に説明する。
第1図は本発明の背景となる命令制御の説明図
である。図において、MEMはメモリ装置側を、
CPUは処理装置側を示し、メモリMEMには、複
数の命令群1〜7、1′〜3′やデータ(図示して
いない)が格納されている。処理装置CPUには、
現在の命令実行状況を示す現プログラム状態語
PSWを格納するレジスタ、パイプライン先行制
御を行なうために命令を保持する命令バツフアレ
ジスタIBR、複数の命令を並行処理するパイプラ
インPL、演算ユニツトALU、インデツクスレジ
スタX、ベースレジスタB、汎用レジスタGPR
等を備えている。現プログラム状態語PSWには、
次に実行すべき命令のアドレスを示す命令アドレ
スレジスタIAR、その命令の命令長コードICL
(例えば2byte命令、4byte命令等)、実行中の命令
の結果による条件コードCC、プログラムマスク
ビツトPMBなどから構成されている。この構成
において、例えば実行中の命令を(1)とすると、命
令バツフアレジスタIBRに先行制御として数ステ
ツプの命令が格納される(本例では命令(1)〜(4)が
格納されている)。そして現プログラム状態語
PSWの命令アドレスは矢線10で示すアドレス
a5を指示している。
ここで命令が本発明に係るブランチ連係命令
BALであるとし、その分岐先が命令(1)′以降であ
るときに後述する如く、現プログラム状態語の命
令アドレスIARを矢線11で示すアドレスb1に変
更する処理、分岐した後に再び実行中の命令(1)の
次命令(2)に戻るための次命令2のアドレスa2を汎
用レジスタGPR等に格納する処理が必要となる。
第2図はこのブランチ連係命令の構成例(1)及び
汎用レジスタに格納される次命令アドレス等の構
成例2を示す。図において、ブランチ連係命令1
は命令機能を示すオペランド部OP、汎用レジス
タ番号を指定する第1オペランド部R1、第2オ
ペランド部としてインデツクスレジスタ番号を示
す番号指定X2、ベースレジスタ番号を示す番号
指定B2、番地指定用D2から成り、メモリ装置内
のデータと処理装置内のレジスタ内容との演算を
行なう通称RX命令で構成されて、分岐先のアド
レスをインデツクスレジスタXの内容とベースレ
ジスタBの内容と固定値D2によりメモリの一番
地を指定可能とする。即ち分岐先の命令アドレス
を第1図の演算ユニツトで算出し、現プログラム
状態語PSWの命令アドレスレジスタの内容を更
新可能とする。一方次命令アドレス(分岐前のブ
ランチ連係命令の次命令アドレス)は、現プログ
ラム状態語の命令アドレス(例えば第1図のa5
から命令バツフアレジスタの命令数(2〜4の3
命令)を減算することにより求められ命令長コー
ドICL、条件コードCC、プログラムマスクビツ
トMASKとともに汎用レジスタ2に格納される。
普通の処理命令は第3図に示す如く、複数の命令
を同時並行して実行されていく。即ち第3図にお
いて、先に説明したように、各命令31〜35が
それぞれ複数の処理サイクルで処理される。D〜
Wは各サイクルでの各ステート(状態)を示し、
Dは命令の解読(デコード)を行なうステート、
Rはオペランドアドレスを求めるためのレジスタ
読み出しステート、A,Bは読み出されたレジス
タの内容から記憶装置にアクセスするためのオペ
ランドアドレスを発生し、メモリアクセスユニツ
トに対し、アクセス要求を出すステート、B2
求められたアドレスを使つて記憶装置にアクセス
するステート、E1,E2は読み出されたオペラン
ドデータを使つて演算を行なうステート、ストア
命令の場合は記憶装置にオペランドデータを格納
するステート、CKはデータのチエツクを行なう
ステート、Wは演算の行なわれた結果を各種レジ
スタに書き込みを行なうステートである。そして
各サイクル中2サイクル毎に異つた命令がパイプ
ラインに入る事が出来、図中のt方向、即ち時間
の経過方向にDステート、Rステートの2サイク
ル処理後に次命令が並行処理される。
しかし、かかる先行制御の下にブランチ連係命
令の場合には先に説明したように、現処理命令の
次命令アドレスを算出しあらかじめ汎用レジスタ
に格納しておかなければならない。この制御を第
4図の従来のブランチ連係命令の動作制御図によ
り説明する。第4図において、A1は先行制御で
先に実行している命令の処理ステートを示し、ブ
ランチ連係命令BALが命令A1のDステート、R
ステートの2サイクル実行後、先行してパイプラ
インPLに入力されたことを示す。ここでブラン
チ連係命令BALはデコードステートD、レジス
タ読出しステートRでブランチ連係命令であるこ
とが解決されて、第2図で説明した如く、次命令
アドレスの算出のために(1)〜(3)の3フローに展開
して実行される。
(1)のフローはブランチ先の命令アドレスを求め
て、ブランチ先命令を記憶装置から取り出すフロ
ーで、(2)のフローはダミーフロー、(3)のフローで
連係情報を求め、演算ユニツトを経由して命令で
指定された汎用レジスタ(GPR)に書き込む動
作を行なう。“更新された次の命令アドレス”を
求める方法として従来は(3)のフローで示すように
先行した命令アドレスを示す命令アドレスレジス
タ(IAR)から何バイト先行しているかを示すカ
ウンタ(HCTR)の値を引きそれにブランチ連
係命令自身の命令長を加えることによつて求めて
いた。即ち、ブランチ連係命令が実行されると、
それ以前の命令で例えば汎用レジスタGPRA、
GPRBの内容がベースレジスタBR、インデツク
スレジスタXRに格納されているので、ブランチ
連係命令の第2オペランド部分の固定値D2をデ
イスプレイスメントレジスタDRに格納し、分岐
先の実効アドレス発生アダーEAGで各レジスタ
の内容を加算することにより分岐先の命令アドレ
スを出力する。この分岐先の命令アドレスは実効
アドレスレジスタEAR、ワークアドレスレジス
タへと送られるとともにメモリアクセスユニツト
MAUへ分岐先命令アドレスを送出し、メモリ装
置からの該当のアドレスの命令を受け取つて命令
ワードレジスタへ格納される。次に現プログラム
状態語PSWにより、ブランチ連係命令の次命令
アドレスを算出するためにダミーフロー(2)を設け
ていた。A/Wはサイクルを遅らせるための底ち
ステート(Wait State)である。
次のフロー(3)のIARは命令取り出しを行なうの
に使われるレジスタで最後に取り出された命令群
の先頭アドレスを示しており、現在実行中の命令
アドレスよりも先行したアドレスを示している
(第1図参照)。HCTRは、この先行した命令ア
ドレスと現在実行中の命令アドレスとの差を保持
しているカウンタでIAR−HCTRが現在実行中
の命令アドレスである。
HCTRは命令の終了時点でその命令長(ILC)
だけ減算されるようになつており、ブランチ連係
命令で、次のアドレスを求める場合、この減算さ
れたHCTRを使うため前の命令においてHCTR
が更新されるまでフロー(3)を遅らせていた。そし
てフロー(3)で現プラグラム状態語PSWの命令ア
ドレス(即ち、先行した命令アドレスを示す)の
命令アドレスレジスタIAR、ブランチ連係命令の
命令長BLを格納したコンスタントレジスタKR、
更新されたハーフワードカウンタHCTRの内容
を格納したデイスプレスメントレジスタDRによ
り実効アドレス発生アダ−EAGを介してその出
力を実行アドレスレジスタEAR、ワークアドレ
スレジスタWAR、第2オペランドレジスタ2Rへ
順次移される。
この第2オペランドレジスタ2Rには現プログ
ラム状態語PSWのILC、CC、MASKの制御情報
も入力されて演算ユニツトALU内をシストして
汎用レジスタGPRに格納されていた。ここで一
番の問題となるのは、ハーフワードカウンタ
HCTRの更新待ち、即ち先の命令の命令長の減
算処理が終るまでフロー(3)に移れないことであ
る。従がつてブランチ先の命令を開始するのが遅
くなり、ブランチ連係命令の性能を悪くする要因
となつていた。
本発明においては、従来の方法とは全く違う手
段で命令アドレスを発生することによつてブラン
チ連係命令の処理速度、性能の向上を計るように
したものである。
第5図は、本発明の一実施例である先行制御方
式の命令バツフアレジスタの構成図である。図に
おいて、IBR1〜IBR3は命令バツフアレジスタで
各バツフアレジスタは8バイト構成のものを示
す。NSIP0−3、NSIP4−7、NSIP8−11は各
バツフアレジスタの各2バイトに対応させて、例
えば1ビツト単位の指示ポインタを示す。
SECは選択回路でポインタNSIP0−11で制御
されパイプラインPLに入力される。そして、複
数の命令バツフアレジスタIBR1〜IBR3に対し
各々2バイト単位にポインタ(NSIP)を持た
せ、このポインタは命令バツフアの内容が命令バ
ツフアレジスタ3→2→1とシフトするのに同期
してシフトするようにしておく。命令バツフアレ
ジスタ内の命令がパイプラインに取り込まれたな
らば、前記ポインタNSIPが次の命令の先頭に移
る様に構成されている。
つまり、選択回路SECは、NSIP0−11を入力
し、前記ポインタが“1”になつているもの、即
ち、ポインタが“1”に対応する位置の命令バツ
フアレジスタIBRから命令をパイプラインPLに
取り込む。そして、前記命令がパイプラインPL
に取り込まれたら、パイプラインPLかの制御信
号により、前記ポインタNSIPが次の命令の先頭
に移る。
本発明の主なる特徴は、従来使つていた
HCTRの代わりにこのポインタを使つて先行し
た命令のアドレスと現在実行中の命令アドレスと
の差を求め、これを先行した命令アドレス
(IAR)から引くことによつて、ブランチ連係命
令(ブランチ・アンド・リンク命令(BAL))の
後続の命令アドレスを求めようとしたものであ
る。
具体的には、IARは最後に取り出された命令バ
ツフア群の先頭を示している。このIARの値から
命令バツフアレジスタIBR1〜IBR3にある。バイ
ト数から既にパイプラインに取り込まれたバイト
数を除いた残りのバイト数を引けば、後続の命令
の先頭アドレスを求めることを出来るのである。
(上記演算については、後述する。) この演算の最中には、パイプラインに後続の命
令を入力しない。又、ポインタNSIPの更新を停
止する。即ち、前記命令先取りバツフア(IBR)
からパイプライン内に取り込まれた命令が、ブラ
ンチ・アンド・リンク命令(BAL)である場合
には、次命令を次サイクルで前記命令先取りバツ
フアレジスタに取り込まず、先行した命令アドレ
ス(IAR)の値よりポインタ(NSIP)の値から
求めた命令バツフアレジスタIBR1〜IBR3内にあ
る残りバイト数を減算して戻り先アドレスを算出
してからポインタの更新を実行するのである。
パイプラインPLに命令が取り込まれた際に、
命令のオペコードをデコードするが、そのデコー
ド処理により、命令がBAL命令かどうかが判る。
その結果によつて、パイプラインPLから、ポイ
ンタNSIPへの制御信号を停止すれば、ポインタ
は更新されない。
一例を述べると、命令バツフアレジスタのバイ
ト数を各々8バイトとし、後述のブランチ連係命
令のアドレス修正値を発生する時点において
(B1ステート)、もしポインタの値が2であつた
とすると(この時、ポインタは既にブランチ連係
命令の次の命令を指している)、既にパイプライ
ンに取り込まれたバイト数は4バイトである。従
がつて命令バツフアレジスタIBR1〜3上にある
残りのバイト数は、16−4=12バイトということ
になる。この値を、IARから引けばブランチ連係
命令に後続する命令の先頭アドレスを求めること
が出来。IAR−12の演算は演算ユニツトを使つて
行なう。
この本発明のブランチ連係命令における先行制
御方式を第6図で説明する。第6図は本発明の先
行制御方式の動作制御の説明図である。図におい
て第4図に用いた符号と同じものは同一物を示
す。従来の制御(第4図)と異なるのは、ブラン
チ連係命令の次命令アドレスを求める所にある。
第5図で説明したポインタ(NSPI)によりバ
ツフアレジスタIBRにある実行時の命令の位置情
報(即ちポインタ(NSPI)値)アドレス修正値
回路に入力し、該回路減算すべき命令のバイト数
(あるいはワード数)を第1オペランドレジスタ
1Rへ出力し、一方現プログラム状態語PSWの先
行した命令アドレスの格納されている命令アドレ
スレジスタIAR、命令語長ILC、条件コードCC、
マスクビツトMASK等を第2オペランドレジス
タ2Rへ格納する。この命令サイクルは先のカウ
ンタ(HCTR)により命令実行終了時まで待つ
ことなく、ポインタNSIPの制御でどの時点でも
アドレスの補正値を発生可能とし、従来の方式の
如くダミーフローは必要なくなる。そして演算ユ
ニツトでは、IAR−アドレス修正値の演算を行な
い結果を結果レジスタ(RR)に出力し、その値
を第2図イで示すR1部で示されるレジスタに書
き込む。
以上の動作を行なうことにより従来3フロー必
要としていたものが、1フローで出来、本実施例
ではサイクル数も3サイクル短縮することが出来
る。
以上説明したように、本発明によれば複数の命
令を同時に並行的に処理する先行制御方式におい
て、複数の命令バツフアレジスタとその命令を取
り出す指示ポインタにより、ブランチ連係情報の
一部である命令アドレスを容易に求めることがで
き、且つ命令実行速度を高速とできる。従つて計
算機の処理速度向上が図れ、情報処理等にきわめ
て有益であり、計算機の大型化つまり情報量拡大
も図れる。
【図面の簡単な説明】
第1図は本発明の背景となる命令制御の説明
図、第2図は一例としてのブランチ連係命令の構
成図イと汎用レジスタの構成図ロ、第3図はパイ
プライン先行制御の一例を示す説明図、第4図は
従来のブランチ連係命令の動作制御図、第5図は
本発明の先行制御方式の命令バツフアレジスタの
構成図、第6図は本発明の先行制御方式の動作制
御の説明図である。 IBR:命令バツフアレジスタ、NSIP:指示ポ
インタ、SEL:選択回路、PL:パイプライン。

Claims (1)

  1. 【特許請求の範囲】 1 複数の領域に区分けされた命令先取りバツフ
    ア(IBR)を複数個と、前記命令先取りバツフア
    (IBR)に対応して設けられた前記複数の領域毎
    に命令の記憶状態を示すポインタ(NSIP)を有
    すると供に、前記命令先取りバツフアに命令がパ
    イプラインに先行して格納され、前記命令先取り
    バツフアに先行して格納された命令アドレスを保
    持する命令アドレスレジスタ(IAR)を有するパ
    イプライン制御計算機に於いて、 前記領域内の命令がパイプライン内に取り込ま
    れた時に前記ポインタ(NSIP)の値を更新し、
    且つ前記ポインタ(NSIP)の値を前記命令読出
    しのための先行した命令アドレスを示す命令アド
    レスレジスタ(IAR)の値と同期して更新せし
    め、 前記命令先取りバツフア(IBR)からパイプラ
    イン内に取り込まれた命令が、ブランチ・アン
    ド・リンク命令(BAL)である場合には、パイ
    プライン内に次命令を取り込まず且つ、前記ポイ
    ンタ(NSIP)の値を更新せず、先行した命令ア
    ドレスレジスタ(IAR)の値より、ポインタ
    (NSIP)の値から求めた命令先取りバツフア
    (IBR)内にある残りバイト数を減算して戻り先
    アドレスを算出してからポインタ(NSIP)の更
    新を実行することを特徴とする先行制御方式。
JP4748281A 1981-03-31 1981-03-31 Advance controlling system Granted JPS57162032A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4748281A JPS57162032A (en) 1981-03-31 1981-03-31 Advance controlling system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4748281A JPS57162032A (en) 1981-03-31 1981-03-31 Advance controlling system

Publications (2)

Publication Number Publication Date
JPS57162032A JPS57162032A (en) 1982-10-05
JPH0315771B2 true JPH0315771B2 (ja) 1991-03-01

Family

ID=12776343

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4748281A Granted JPS57162032A (en) 1981-03-31 1981-03-31 Advance controlling system

Country Status (1)

Country Link
JP (1) JPS57162032A (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5576446A (en) * 1978-12-06 1980-06-09 Toshiba Corp Pre-fetch control system

Also Published As

Publication number Publication date
JPS57162032A (en) 1982-10-05

Similar Documents

Publication Publication Date Title
US4725947A (en) Data processor with a branch target instruction storage
JP3105960B2 (ja) 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法
JP2951064B2 (ja) パイプラインプロセッサを動作する方法及びパイプラインプロセッサ
JP3187090B2 (ja) 高性能プロセッサのためのバイト比較操作方法
JP3055980B2 (ja) マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
JPH06110685A (ja) 高性能プロセッサにおける分岐予想方法
JP3182438B2 (ja) データプロセッサ
JP7048612B2 (ja) ベクトル生成命令
KR100303712B1 (ko) 파이프라인기계에서의어드레스파이프라인을위한방법및장치
EP0094535B1 (en) Pipe-line data processing system
JPH06131179A (ja) 分岐を除去することによりコンピュータ性能を改善する方法
JP3599499B2 (ja) 中央処理装置
JPH0315771B2 (ja)
JPH02214937A (ja) データ処理装置
JPH0760384B2 (ja) 命令実行方法およびデータ処理装置
JPS60129839A (ja) 情報処理装置
JP2503223B2 (ja) 先行制御方式
JPS6411973B2 (ja)
JPH01187634A (ja) 情報処理装置
JPH02254541A (ja) 条件分岐命令の制御方式
JPS586972B2 (ja) 情報処理装置
JP3523407B2 (ja) 情報処理装置
JPS6047618B2 (ja) 情報処理装置
JPS61273637A (ja) 情報処理装置