JPS6411973B2 - - Google Patents

Info

Publication number
JPS6411973B2
JPS6411973B2 JP10344080A JP10344080A JPS6411973B2 JP S6411973 B2 JPS6411973 B2 JP S6411973B2 JP 10344080 A JP10344080 A JP 10344080A JP 10344080 A JP10344080 A JP 10344080A JP S6411973 B2 JPS6411973 B2 JP S6411973B2
Authority
JP
Japan
Prior art keywords
instruction
branch
buffer register
instructions
branch destination
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
Application number
JP10344080A
Other languages
English (en)
Other versions
JPS5729152A (en
Inventor
Kazuyuki Shimizu
Yoshuki Mizushima
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 JP10344080A priority Critical patent/JPS5729152A/ja
Publication of JPS5729152A publication Critical patent/JPS5729152A/ja
Publication of JPS6411973B2 publication Critical patent/JPS6411973B2/ja
Granted 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

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

【発明の詳細な説明】 本発明は情報処理装置に関し、特に、1つまた
は複数の命令バツフアレジスタと、該命令バツフ
アレジスタのどの位置から命令を取り出すべきか
を指示するポインタを有し、該ポインタで指示さ
れた位置から命令を順次取り出して処理を行なう
情報処理装置に関する。
第1図に代表的な分岐命令の形式を示す。図
中、OPは、命令の動作コードを示し、マスクフ
イールドM1は分岐条件を示す。
分岐先アドレスは(X2)+(B2)+D2の和によ
つて求められる。( )は、レジスタの内容を示
す。
第2図aは、パイプライン制御方式における従
来の分岐命令の動作を示し、第2図aのD,R,
A,B1,B2,E1,E2,CK,Wは、それぞれパイ
プラインの各ステートを示しており、2サイクル
毎に異なつた命令がパイプラインに入る事がで
き、そして複数の命令を平行処理できるようにさ
れている。
Dは、命令の解読(デコード)を行なうステー
ト、Rはオペランドアドレスを求めるためのイン
デツクス(X2)、ベース(B2)の各レジスタ読
み出しステート、Aは読み出されたレジスタの内
容から(X2)+(B2)+D2の論理演算を行ない、
記憶装置にアクセスするためのアドレスを求める
ステート、B1,B2は、求められたアドレスを使
つて記憶装置にアクセスするステートである。た
だし、分岐命令の場合のB2ステートは、分岐決
定を行なうステートでもある。E1,E2は、求め
られたオペランドデータを使つて演算を行なうス
テート、CKはデータのチエツクを行なうステー
ト、Wは各種レジスタに書き込みを行なうステー
トである。
従来は、分岐先命令の取り出しを分岐命令の
D,R,A,B1,B2のステートの中で行ない、
分岐先命令を命令バツフアに取り込むのがE1
テートであるため、第2図aに示すように分岐命
令と分岐先命令との間隔は5サイクルであつた。
本発明は分岐命令の性能を高めるため、命令バ
ツフアの中の命令先頭位置を示す指標を各々の命
令バツフアに対応して持ち、現在の命令位置から
数命令後の命令を解読して、分岐命令であつた場
合、分岐先命令を先取りすることにより、分岐命
令を高速に処理することを目的とする。そして、
そのため本発明は、1つまたは複数の命令バツフ
アレジスタと、該命令バツフアレジスタのどの位
置から命令を取り出すべきかを指示するポインタ
を有し、該ポインタで指示された位置から命令を
順次取り出し、通常、2サイクルにつき1命令ま
たは1サブ命令を処理するよう構成した情報処理
装置において、上記各命令バツフアレジスタ内の
命令の先頭位置を示す命令バツフアレジスタ内命
令位置フラグと、後続命令の先頭位置を示す後続
命令位置フラグをもうけ、命令語を記憶部より読
出すごとに少なくとも該読出された命令語の一部
のビツトのデコード結果と、当該時点の後続命令
位置フラグの値と、すでにセツトされている命令
バツフアレジスタ内命令位置フラグの状況によつ
て新たな命令語中の命令先頭位置を検出し、対応
する命令バツフアレジスタの命令バツフアレジス
タ内命令位置フラグをセツトするとともに、通常
命令が上記ポインタにしたがつて取り出されるサ
イクルの間隙のサイクルで、現取り出し中の命令
の次命令または数命令後の命令を上記ポインタと
上記命令バツフアレジスタ内命令位置フラグの値
によつて求めて先行取り出ししてデコードし、該
先行取り出しした命令が分岐命令の場合は通常パ
スの命令とは1サイクルずれて同一の命令選択、
デコードおよびアドレス計算のためのハードウエ
アを共用しつつ、分岐先命令の先取りを行ない、
さらに上記1サイクルずれて計算された分岐先命
令のアドレスに命令バツフア長を加えて上記分岐
先命令に後続する命令を先取りすることを特徴と
する。
以下、本発明を図面により説明する。
第2図bは本発明における分岐命令の動作を示
す図であり、図中、分岐先命令の先取りシーケン
スにおけるDPステートは分岐先命令の先取りの
ための分岐命令解読ステート、RPステートは分
岐先命令のアドレスを求めるためのインデツク
ス、ベースレジスタの読み出しステート、iはア
ドレス発生ステート、B1,B2は、記憶装置から
の読み出しステートである。第2図bに示すよう
に、現在の命令位置が命令0であり、命令0から
数命令後の命令が、分岐命令であつた場合、命令
0の1サイクル後に、分岐命令の先取りのために
DPステートを始める。DPステートで解読された
分岐命令が、分岐しない分岐命令(例えば条件分
岐命令においてマスクがオール“0”の場合)で
ある場合には、RPステートには進まない。それ
以外の場合、PR,i,B1,B2と進め分岐先命令
を先取りしておく。この場合、前後の命令、命令
0〜3には、何等影響を及ぼさない。第3図によ
り後述するように、4つの命令バツフアレジスタ
IWR,IWRC,IBR1,IBR0がもうけられてお
り、この先取り動作以前に取り込んでおいた第3
図の命令バツフアレジスタIWRの内容は、IWRC
に退避させておく。
続いて先取りした分岐先命令をIWRに取り込
む。従がつて分岐命令に後続する命令は、
IWRC,IBR1,IBR0に入つており、先取りし
た分岐先命令は、IWRに入つている事になる。
分岐命令を実行する時、先取りした分岐先命令
が有効であれば(アドレス例外等がなければ、)、
分岐命令の後続命令3の1サイクル後に分岐先命
令を始める。そして分岐命令のB2ステートで処
理装置内の分岐条件とM1フイールドを比較し、
分岐するか否かを決定する。
従がつて分岐を判断するB2ステートまでは、
1サイクル毎に命令を実行することになる。B2
ステートで分岐判断が決定すれば、分岐判断に従
がつて分岐先の命令または命令3のいずれかをキ
ヤンセルし、以後残つた片方の命令を続行する。
分岐命令が無条件分岐であれば、分岐命令の2サ
イクル後に、分岐先命令を開始する。先取りした
分岐先命令が無効であれば、第2図aの動作と同
じになる。
以上述べた分岐先命令の先取り動作を行なうこ
とによつて従来5サイクルかかつていた分岐命令
が3サイクル又は2サイクルに短縮できる。
さらに、先取りした分岐先命令が、有効である
場合には、分岐命令の分岐先アドレス発生ステー
ト(第2図bのAステート)において分岐命令に
より示される分岐先アドレス(X2)+(B2)+D2
にさらに命令バツフア長Lを加えて次の命令取り
出しを行なう。実際にはRステートでD2+Lを
やつておいて、Aステートで(X2)及び(B2)
と加算する。即ち、本来分岐命令2のAステート
では分岐先命令のアドレス計算を行なうのに対
し、本発明では分岐先命令は先取りシーケンス
DP,RP,iにより既に求まつているので、ここ
では該分岐先命令に続く、さらに次の命令のアド
レス計算を行なうのである。このことは、分岐後
の命令が命令バツフアに大量に入つていることに
なり、命令処理を間断なく行なう事ができる。
なお、上述の如く分岐命令のR及びAステート
で、D2+L+(X2)+(B2)を行なう以外に、後
述の如く、先取りシーケンス時に求めたD2
(X2)+(B2)をTARレジスタに保持しておき、
分岐命令のAステートでは単にその保持した値に
Lを加えるのみでもよい(第2図c参照)。
次に、第3図は第2図bに示すタイムチヤート
を実行するための本発明による実施例の命令バツ
フア部のブロツク図であり、図中、1〜4は各々
8バイト長の命令バツフアレジスタ、5〜8は4
つの命令バツフアレジスタ内の命令位置を示すフ
ラグ(IPF)で1命令バツフアレジスタに対して
4つのフラグを持つものである。フラグ5が命令
バツフアレジスタIWR1に、フラグ6が命令バ
ツフアレジスタIWRC2にフラグ7が命令バツフ
アレジスタIBR1に、フラグ8が命令バツフアレ
ジスタIBR0にそれぞれ対応する。9は次に記憶
装置から読出してくる8バイトに対して命令の先
頭位置を予想するフラグ(NEXT IPF)である。
10〜12は4つの命令バツフアレジスタのどの
位置から命令を取り出すかを指示するポインタ
(NSIP)であり、このポインタは1つの命令を
パイプラインに入れるたびに、さらに次の命令を
選択するために移行していく。13は後続命令先
頭位置検出回路、14は命令位置検出回路、15
は命令選択発生回路、16はセレクタ、18は命
令レジスタ、17はデコーダである。
まず、記憶装置からIWR1に入力された8バ
イトのデータを2バイト単位に区切り、各2バイ
トの先頭の2ビツトとNEXT IPF9の値とを命
令位置検出回路14に入力し命令の位置を検出
し、IPF5のip12〜ip15にセツトする。この
場合、NEXT IPF9は最初N12のポインタが
セツトされている。2バイト単位で区切つたの
は、命令の最小長が2バイトであるためであり、
各2バイトの先頭の2ビツトを識別するのは各命
令中の先頭位置にあるOPコードの最初の2ビツ
トにより命令長が識別されるためである。このよ
うにして、例えば、IWR1に2バイト長の命令
が4個入力されれば、ip12〜ip15はすべて
“1”となり、IWR1に4バイト長の命令が2個
入力されればip12とjp14が“1”となり、
IWR1に2バイト長の命令が1個と6バイト長
の命令が1個入力されればip12とip13が
“1”となる。
NEXT IPF9は次にIWR1に読出してくる命
令の先頭位置を示すものであり、IPF5内のip1
2〜ip15と現在のIWR1の上記各2ビツトに
よつて作成される。例えば、IPF5内のip14が
“1”、ip15が“0”で、かつ、ip14に対応す
るIWR1内の2ビツトが当該命令が6バイト長
であることを示しているとき、後続命令先頭位置
検出回路13の制御により、NEXT IPF9にお
いてはN13が“1”にセツトされる。つまり、
この例ではIWR1に、ip14に対応する位置か
ら4バイト分の命令が入力されているが、残りの
2バイトは次の記憶装置からの読出しでip12に
対応する位置にセツトされるとともに、その次の
命令はip13に対応する位置から始まることを示
している。IPF5内のip12〜ip15は、IWR1
の内容がIWRC2およびIBR1,IBR0とシフト
するのに同期して、IPF6,IPF7,IPF8へシ
フトしていく。したがつて、IPF5〜8は4つの
命令バツフアレジスタ内のそれぞれの命令位置を
示していることになる。
通常、命令を実行する場合には、実行すべき命
令はNSIP10〜12に示される命令バツフアレ
ジスタIWR,IWRC,IBR1,IBR0のいずれか
の位置からセレクタ16を通して選択される。セ
レクタ16はNSIP10〜12を入力とする命令
選択発生回路15により制御される。この選択動
作は2サイクル毎に行なわれ、選択された命令は
順次パイプラインに入れられ、第2図b図示のD
ステートより処理が開始される。
一方、分岐先命令を先取りする場合において
は、NSIP10〜12とともにIPF5〜8の内容
を命令選択発生回路15に入力し、セレクタ16
を通して命令バツフアから命令を選択し、デコー
ダ17に入力し、分岐可能な命令かどうかを解析
する。そして、分岐可能な命令であつた場合、2
サイクルの間隙をぬつて、第2図b図示のDPス
テートより命令デコードを始め、分岐先アドレス
を計算して記憶装置に対して命令取り出しを行な
う。これらの動作を行なうことにより分岐先命令
の先取りを高速に行なうことが可能となる。
次に、第4図は、本発明による実施例の命令バ
ツフア部と実効アドレス計算部のブロツク図であ
り、命令を命令バツフアに取込んでから実行アド
レスを求めるまでを図示したものである。第4図
においては、第3図において図示した各種ポイン
タ、フラグ等を省略している。第4図において、
第3図と同一番号のものは同一物、20はパイプ
ライン、21はデコーダ、22は汎用レジスタ、
23はインデツクスレジスタ(XR)、24はベ
ースレジスタ(BR)、25はデイスプレースメ
ントレジスタ(DR)、26はアドレス計算加算
器、27は実効アドレスレジスタ、28は先取ア
ドレスレジスタ(TAR)、29はセレクタであ
る。第1図に示す命令のOP部は命令レジスタ1
8内のA0に入り、以下同様にM1はA1に、X
2はA2に、B2はA3に、D2はA4に入る。
X2,B2で示されるレジスタを各々汎用レジス
タ22から読み出し、それぞれXR23,BR2
4に入力し、またD2は直接A4からDR25に
入力し、アドレス計算加算器26により加算する
ことにより、実効アドレスが得られる。アドレス
計算加算器26から出力された実効アドレスは記
憶装置へ送られ、命令の先行読出しが行なわれ
る。
また先取りシーケンスDP,RP,iで求めた分
岐先アドレスはTARレジスタ28に保持され、
分岐命令2のAステートにおいてセレクタ29を
介してアドレス計算加算器26に与えられ、また
所定値(今の場合一回の先取りバイト量8バイ
ト)がDR25を介して与えられ、分岐先命令に
後続する命令を先取りする。
また、第2図cにおいて、EAG出力でメモリ
アクセスした命令が命令バツフアレジスタ中に入
つて使用できるようになるまでには3サイクル必
要である。従つて分岐命令2のAステートで得た
分岐先命令に後続する命令アドレスに対応してそ
の命令が実行可能になるのは分岐先命令3のB1
ステート以後である。しかし、前述の如く命令バ
ツフアレジスタは8バイト構成であり、分岐先命
令3が2バイト長あればそれに続く命令は同一の
命令バツフアレジスタ中に入つている。故に該後
続命令は第2図cの命令4に示す如く、分岐先命
令3の2サイクル後に直ちに実行可能である。ま
た、もしも分岐先命令3が4バイト長または6バ
イト長であるとすると、その後続命令は次の8バ
イトを取つてくる必要がある。しかし一般に4バ
イト長または6バイト長の命令は複数フロー(1
フローとはD,R,A……Wの一連の流れをい
う)の実行を必要とするため、第2図cの命令4
の代りに命令3の第2フローが行なわれることに
なる。従つて該分岐先命令に続く命令の先取りに
は充分余裕がある。
上記したように、本発明によれば、命令バツフ
ア内の現在の命令位置から数命令後の命令を解続
して分岐命令であつた場合には、分岐先命令を先
取りし、さらに該分岐先命令に後続する命令の先
取りも行なうようにしたので、従来方式と比較し
て分岐命令を高速に処理することができ、情報処
理装置の性能向上を計ることができる。
【図面の簡単な説明】
第1図は分岐命令の形式を示す図、第2図aは
従来の分岐命令の動作を示す図、第2図b,cは
本発明における分岐命令の動作を示す図、第3図
は本発明による実施例の命令バツフア部のブロツ
ク図、第4図は本発明による実施例の命令バツフ
ア部と実効アドレス計算部のブロツク図である。 第3図において、1〜4は命令バツフアレジス
タ、5〜8は命令バツフアレジスタ内の命令位置
を示すフラグ、9は次に読出してくる命令の先頭
位置を予想するフラグ、10〜12は命令バツフ
アレジスタのどの位置から命令を取り出すかを指
示するポインタ、13は後続命令先頭位置検出回
路、14は命令位置検出回路、15は命令選択発
生回路、16はセレクタ、18は命令レジスタ、
17はデコーダ、26はアドレス計算加算器、2
8は先取りアドレス保持レジスタである。

Claims (1)

  1. 【特許請求の範囲】 1 1つまたは複数の命令バツフアレジスタと、
    該命令バツフアレジスタのどの位置から命令を取
    り出すべきかを指示するポインタを有し、該ポイ
    ンタで指示された位置から命令を順次取り出し、
    通常、2サイクルにつき1命令または1サブ命令
    を処理するよう構成した情報処理装置において、 上記各命令バツフアレジスタ内の命令の先頭位
    置を示す命令バツフアレジスタ内命令位置フラグ
    と、後続命令の先頭位置を示す後続命令位置フラ
    グをもうけ、命令語を記憶部より読出すごとに少
    なくとも該読出された命令語の一部のビツトのデ
    コード結果と、当該時点の後続命令位置フラグの
    値と、すでにセツトされている命令バツフアレジ
    スタ内命令位置フラグの状況によつて新たな命令
    語中の命令先頭位置を検出し、対応する命令バツ
    フアレジスタの命令バツフアレジスタ内命令位置
    フラグをセツトするとともに、通常命令が上記ポ
    インタにしたがつて取り出されるサイクルの間隙
    のサイクルで、現取り出し中の命令の次命令また
    は数命令後の命令を上記ポインタと上記命令バツ
    フアレジスタ内命令位置フラグの値によつて求め
    て先行取り出ししてデコードし、該先行取り出し
    した命令が分岐命令の場合は通常パスの命令とは
    1サイクルずれて同一の命令選択、デコードおよ
    びアドレス計算のためのハードウエアを共用しつ
    つ、分岐先命令の先取りを行ない、 さらに上記1サイクルずれて計算された分岐先
    命令のアドレスに命令バツフア長を加えて上記分
    岐先命令に後続する命令を先取りすることを特徴
    とする命令先取りを行なう情報処理装置。
JP10344080A 1980-07-28 1980-07-28 Information processor prefetching instruction Granted JPS5729152A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10344080A JPS5729152A (en) 1980-07-28 1980-07-28 Information processor prefetching instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10344080A JPS5729152A (en) 1980-07-28 1980-07-28 Information processor prefetching instruction

Publications (2)

Publication Number Publication Date
JPS5729152A JPS5729152A (en) 1982-02-17
JPS6411973B2 true JPS6411973B2 (ja) 1989-02-28

Family

ID=14354088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10344080A Granted JPS5729152A (en) 1980-07-28 1980-07-28 Information processor prefetching instruction

Country Status (1)

Country Link
JP (1) JPS5729152A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
KR940000968B1 (ko) * 1989-08-28 1994-02-07 니뽄 덴끼 가부시끼가이샤 마이크로프로세서
JPH0784782A (ja) * 1993-09-09 1995-03-31 Nec Corp 情報処理装置

Also Published As

Publication number Publication date
JPS5729152A (en) 1982-02-17

Similar Documents

Publication Publication Date Title
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
EP1157329B1 (en) Methods and apparatus for branch prediction using hybrid history with index sharing
US5276882A (en) Subroutine return through branch history table
JPS63175934A (ja) デ−タ処理装置
JP2001243069A (ja) 分岐予測装置及び分岐予測方法
JPS634208B2 (ja)
JP3599499B2 (ja) 中央処理装置
JPS6411973B2 (ja)
JPS586972B2 (ja) 情報処理装置
US20030018883A1 (en) Microcode branch prediction indexing to macrocode instruction addresses
JPS6058489B2 (ja) 分岐命令先行制御方式
JP2503223B2 (ja) 先行制御方式
JP3558481B2 (ja) データ処理装置
JP2812610B2 (ja) パイプライン制御方式
JP3493110B2 (ja) 高速分岐処理装置
JP2001022577A (ja) 情報処理装置
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
JP2591325B2 (ja) 分岐制御装置
JPH01271842A (ja) 情報処理装置
JPS61273637A (ja) 情報処理装置
JPH07175650A (ja) 演算処理装置
JP2689894B2 (ja) マイクロプログラム制御型情報処理装置
JPH0774992B2 (ja) データ処理装置
JP3523407B2 (ja) 情報処理装置
JPH0581015A (ja) パイプライン演算制御方法およびシステム