JPS6049340B2 - 分岐命令先取り方式 - Google Patents

分岐命令先取り方式

Info

Publication number
JPS6049340B2
JPS6049340B2 JP13545780A JP13545780A JPS6049340B2 JP S6049340 B2 JPS6049340 B2 JP S6049340B2 JP 13545780 A JP13545780 A JP 13545780A JP 13545780 A JP13545780 A JP 13545780A JP S6049340 B2 JPS6049340 B2 JP S6049340B2
Authority
JP
Japan
Prior art keywords
instruction
branch
buffer
register
address
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
JP13545780A
Other languages
English (en)
Other versions
JPS5759253A (en
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.)
NEC Corp
Original Assignee
Nippon Electric Co 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP13545780A priority Critical patent/JPS6049340B2/ja
Publication of JPS5759253A publication Critical patent/JPS5759253A/ja
Publication of JPS6049340B2 publication Critical patent/JPS6049340B2/ja
Expired 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
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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

【発明の詳細な説明】 本発明は情報処理装置における命令先取り方式に関する
従来の命令先取り方式においては、分岐命令を先取りし
たあと以下に述べる3つの処理のいずれかの処理を行な
つている。
(1):分岐命令は失敗するとみなして主記憶の該分岐
命令に後続して格納されている命令の先取りを行なう。
(2):分岐命令は成功するものとみなして該分岐命令
が指定する分岐先の命令を先取りする。(3):主記憶
の分岐命令に後続して格納されている命令の先取りと該
分岐命令が指定する分岐先の命令の先取りとの両方を並
行して行なう。
このような従来の命令先取り方式では、以前の分岐先ア
ドレスを記憶しておき、次に実行する分岐命令の分岐先
方向を予測して先取り動作を行なつているため、実行後
の分岐命令のアドレスと分岐先情報とを格納する格納手
段および先取りした分岐命令が該格納手段に含まれるか
否かを判定する判定回路が必要となり、装置の複雑化を
招く。このため、構成の簡単化を図ろうとすると、記憶
可能な分岐命令数が減少し、分岐先予測能力が低下する
という欠点がある。また、前記方式(1)または(2)
を採用した装置では、分岐方向を失敗するとみなしたと
きに成功したり、その反対が生することがあり、結局十
分な分岐先予測能力を期待できないという欠点がある。
また、前記方式(3)を採用した装置では、分岐方向を
成功するときと失敗するときとの両方の先取りを行なう
ため必ず一方向の先取りは無駄となる。この結果、不要
な動作実行のためにバッファメモリ等の装置内各回路を
使用しなくてはならず、装置の効率的な使用が行なわれ
ていないという欠点が生じる。本発明の目的は上述の欠
点を除去した命令先取り方式を提供することにある。
本発明の方式は、命令の先取りを行なう先行制御手段と
、複数のブロックを有し主記憶装置に記憶する情報の一
部を写しとしてブロック単位に保持するバッファメモリ
手段と、このバッファメモリ手段の少なくとも1つのブ
ロックに対応する少なくとも1つのブロックを有し分岐
命令実行により得られた分岐方向情報を前記バッファメ
モリ手段の該分岐命令を含むブロックに対応したブロッ
クに記憶する分岐方向制御記憶手段とを具備し、命令を
前記バッファメモリ手段から先取りするときに前記分岐
方向情報を該命令とともに読み出し該先取りした命令が
分岐命令であるときにはその分岐が成功するか否かを前
記分岐方向制御記憶手段に記憶された分岐方向情報を用
いて予測し該予測結果により該分岐命令の次に実行され
る可能性の高いとみなされる分岐方向の命令の先取りを
行なうようにしたことを特徴とする。
本発明はプログラム実行時に、複数回実行される任意の
分岐命令はその使われ方として実行の度に同じ方向に分
岐するような場合が多いことにもとづいており、分岐命
令実行時に決定された分岐方向を分岐方向制御記憶内に
記憶しておくことにより、次の実行に先立つてバッファ
メモリから先取りされた時、前回と同一方向に分岐する
可能性が高いためその分岐方向を予測することが可能で
あり、予測方向の命令を先取りしておくように動作する
次に、本発明について図面を参照して詳細に説明する。
第1図に示す本発明の一実施例は、演算制御部1、主記
憶装置5、先行制御部10、レジスタ11、および12
、分岐方向制御記憶20、セレクタ21、ディレクトリ
30、比較判定回路31、バッファメモリ40、セレク
タ41、アドレス変換バッファ50、レジスタ51およ
び52、命令レジスタ60、命令バッファ61、分岐方
向レジスタ70、分岐方向バッファ71、命令アドレス
レジスタ80、セレクタ81、カウンタ82、分岐アド
レスバッファ83、加算器90、ベースレジスタ91、
汎用レジスタ92およびセレクタ93から構成されてい
る。第2図を参照すると、前記先行制御部10は、命令
レジスタ60からの動作コードを解読し分岐命令である
ときには線109に分岐命令でないときには線110に
信号を出力するデコーダ103、線110からの分岐命
令でないことを示す信号を格納するフリップフロップ1
04、分岐方向レジスタ70からの信号701を格納す
るフリップフロップ105、前記演算制御部1からの分
岐方向正式決定信号1003と前記信号701とを比較
する比較回路106、この回路106での比較結果が不
一致であるときその信号1060を格納するフリップフ
ロップ107、前記信号1003を格納するフリップフ
ロップ108、アンドゲート群およびオアゲート群から
構成されている。
なお信号701は論理゜“0゛のとき分岐不成功を論理
゜“1゛のとき分岐成功をそれぞれ示す。また信号10
03,102およびフリップフロップ108の状態も論
理゜゜0゛のとき分岐不成功を論理“1゛のとき分岐成
功を示す。信号101は2桁の2値信号であり、゜“0
0゛のとき未使用であり“゜吐゛のとき分岐アドレスバ
ッファ83からの信号831を選択する指示であり゜゜
10゛のとき命令アドレスレジスタ80からの命令アド
レス801を選択する指示であり゜゜11゛のとき加算
器90からの加算結果901を選択する指示である。前
記アドレス変換バッファ50の詳細は特開昭48−17
224号公報を参照できる。第3図を参照すると、第1
図の比較判定回路31はディレクトリ30からのアドレ
ス情報301および302とレジスタ52からのアドレ
ス情報とを比較する比較回路3101および3102、
これらの比較回路3101および3102からの比較結
果に基づきコード化し第1図のセレクタ21および41
に対する選択指示信号を出力するエンコーダ3103お
よび前記比較回路3101および3102からの比較結
果信号の論理積をとり所望のデータがバッファメモリ4
0に存在せず主記憶装置5をアクセスする信号312を
作成するアンド回路3110から構成されている。
前記比較回路3101および3102は排他的論理和回
路3104および3107、反転回路3106および3
108およびアンド回路3105および3109から構
成されている。なお、本実施例においては、バッファメ
モリ40は2行で構成されており、また、アドレス変換
バッファ50は、バッファメモリ40の前段に位置づけ
られている。
しかしながら、バッファメモリの制御は本発明の要旨と
は直接関係な発明の詳細な説明は省く。次に本発明の動
作を詳細に説明する。
まず、命令レジスタ60内の命令コードが分岐命令以外
のコードを示しているときは、先行制御部10は線10
1に加算器91からのオペランドアドレス901をセレ
クタ93で選択するよう指示信号を出力する。
前記アドレス901はセレクタ93およびレジスタ51
を介してアドレス変換バッファ50に送られる。演算制
御部1にバッファメモリ40からオペランドデータが供
給されたあとで、先取りすべき命令アドレスを示してい
る命令アドレスレジスタ80の内容が分岐アドレスバッ
ファ83、セレクタ93およびレジスタ51を介してア
ドレス変換バッファ50に供給される。このバッファ5
0からのアドレスの指定によりバッファメモリ40から
読み出された次に実行すべき命令は命令バッファ61に
格納される。これと同時に該命令を含むブロックに対応
した分岐方向情報が分岐方向制御記憶20から読み出さ
れて分岐方向バッファ71に格納される。また、演算制
御部1による命令の実行終了後、次に実行される命令が
命令バッファ61から取り出されて命令レジスタ60に
格納され、命令アドレスレジスタ80の内容が+2/4
/6/8カウンタ82により更新される。次に命令レジ
スタ60内の命令コードが分岐命令を示しているときに
は、先行制御部10は次の制御を行なう。分岐方向レジ
スタ70の内容が分岐失敗、すなわちそれまでの命令の
流れと同一方向に命令が続くことを示している場合には
、演算制御部3へのオペランド供給が不要なことを除い
て先行制御部10は分岐命令以外の動作と同じ動作を行
ない命令アドレスレジスタ80の示すアドレスから次に
実行する命令および分岐方向情報の先取りを行なう。分
岐方向レジスタ70の内容が分岐成功すなわち、命令の
流れが変わることを示している場合には、加算器90に
より計算される分岐先アドレス901がセレクタ93お
よびレジスタ51を介してアドレス変換バッファ50に
与えられる。バッファメモリ40から読み出された分岐
先の命令が命令バッファ61に取り込まれるとともに、
分岐方向制御記憶20から分岐先命令を含むブロックに
対応した分岐方向情報が読み出され分岐方向バッファ7
1に取り込まれる。すなわち、先行制御部10は命令レ
ジスタ60に分岐命令が与えられると同じ命令が以前に
実行されたときの分岐方向(成功か失敗か)を示す分岐
方向レジスタ70の内容により以前と同じ方向に分岐す
る可能性が高いものとみなし分岐命令で示される分岐ア
ドレスである加算器90の出力を使用するかまたは命令
アドレスレジスタ80の内容を使用するか決定して命令
の先取りを行なう。
さらに、先行制御部10においては、命令レジスタ60
内に分岐命令が与えられると、その分岐命令を示すアド
レスが命令アドレスレジスタ80に残つている間にその
命令アドレスレジスタ80の内容が命令アドレスバッフ
ァ83に写しとして格納され、分岐命令の終了まで保持
される。演算制御部1が分岐命令の実行を行ない、分岐
の方向が正式に決定されると分岐方向正式決定信号10
03を先行制御部10に与える。該先行制御部10は命
令バッファ61内に先取りしている命令が最終的に決定
された分岐方向と同じ方向の命令であるか否かのチェッ
クをする。この動作を第2図を参照しながら説明する。
第1図の前記命令バッファ61内に先取りされている命
令の分岐方向情報は分岐方向レジスタ70に格納されて
いる。この情報は、信号701として1フリップフロッ
プ105に格納される。このフリップフロップ105の
内容は比較回路106で分岐方向正式決定信号1003
と比較され、前記テエツクが行なわれる。この比較結果
が不一致である楊合、すなわち前記分岐方向が異なつて
いる場・合には不一致信号1060がフリップフロップ
107に格納されるとともに信号101の上位桁を゜゜
1゛にする。これは、前記比較動作により分岐方向が異
なつていた場合に先取りした命令を無効として再度命令
を読み出すために決定された分岐ノ方向に従い命令アド
レスレジスタ80の内容(失敗方向)かまたは加算器9
0の出力(成功方向)をアドレス変換バッファ50に送
を指示をすることになる。このバッファ50からのアド
レス指定に応答してバッファメモリ40から命令がまた
分岐方向制御記憶20から分岐方向情報が取り出されて
命令バッファ61および分岐方向バッファ71にそれぞ
れに再設定される。次に、分岐命令の分岐方向が決定さ
れ、その結果は分岐方向情報としてレジスタ11に与え
られるとともに分岐アドレスバッファ83の示す該分岐
命令のアドレスがレジスタ51に与えられる。この結果
、バッファ50からのアドレス指定に応答して分岐方向
制御記憶20の該分岐命令を含むブロックに対応した部
分に準備された分岐方向情報が書き込まれる。このよう
にして、分岐命令実行のたびに、その分岐方向に関する
結果を分岐方向制御記憶20に貯えておき、先取りされ
た命令が分岐命令である場合には命令の先取りに伴つて
読み出される分岐方向情報に従い、効果の高い方向にの
み命令の先取りを行なうことができる。なお、本実施例
においては、分岐方向情報として分岐命令の実行結果が
成功か失敗かを示す情報のみを扱つているが、これは本
発明の一例にすぎない。本発明の分岐方向情報は、この
他に (a)分岐命令の次に実行される成功または失敗のどち
らも含む命令のアドレス情報(b)分岐命令の次に実行
される命令情報(C)分岐方向情報が有効か否かを示す
情報とが含まれ、これらの情報を用いた例も本発明を適
用できる。
これらの例を具現化した実施例を詳細に説明する。
(a)の゛゜次の命令のアドレス情報゛が含まれる場合
には、上述の実施例における分岐方向レジスタ70から
セレクタ91へのバスが必要となり、.先行制御部10
は、命令レジスタ60に分岐命令が与えられると、この
バスを有効としてアドレス変換バッファ50に分岐方向
レジスタ70内の次の命令のアドレス情報を与えて次に
実行すべき命令をバッファメモリ40から読み出して命
令パン4ファ61内に与えるよう制御する。また(b)
の゜゜次に実行される命令情報゛が含まれる場合には上
述の実施例における分岐方向レジスタ70から新たに設
けるセレクタ(図示せず)を介して命令バッファ61に
到るバスが必要となり先行制御部10は命令レジスタ6
0に分岐命令が与えられると、このバスを有効と判断し
て命令バッファ61に次に実行される命令情報を与える
ように制御する。最後に(b)の“有効か否かを示す情
報゛が含まれる場合には先行制御部10が本発明の示す
分岐方向予測による動作を行なうか否かを決定するため
にこの情報が用いられ、以上説明してきた各種子測動作
成は命令バッファ61への取り込み方法の全てと組み合
わせて使用することができる。さらに、上述の実施例で
は分岐方向情報が分岐命令を含むブロックに対して1つ
与える構成となつているが1つのブロックを複数個に分
割し、これらの各々に複数個の分岐方向情報を与える構
成にも本・発明を適用できる。これは特にブロックの大
きさに関連し大きなブロックとしたときに有効である。
但し、大きなブロックすなわち1つのブロックに複数の
分岐命令が含まれる場合には、ブロック当り1つの分岐
方向情報を与えるだけでよい。本発明には、バッファメ
モリ20と同一構造を有する分岐方向制御記憶20内に
分岐方向情報を保持させることにより簡単な回路を追加
して分岐命令の先取り方向を予測して有効な先取りを行
なうことができるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例を示す図、第2図は第1図の
先行制御部の詳細な構成を示す図および第3図は第1図
の比較判定回路31の詳細な構成を示す図である。 第1図から第3図において、1,2,3・・・・・・演
算制御部、4,5,6・・・・・・主記憶装置、10・
・・先行制御部、20・・・・・・分岐方向制御記憶、
30・・・・・ディレクトリ、31・・・・・・比較判
定回路、40・・・・・バッファメモリ、50・・・・
・アドレス変換バッファ、60・・・・命令レジスタ、
61・ ・・命令バッファ、70・・・・・・分岐方向
レジスタ、71・・・・・分岐方向バッファ、80・・
・・命令アドレスレジスタ、82・・・・・・+2/4
/6/8カウンタ、83・・・・命令アドレスバッファ
、90・・・・・・加算器、91・・・・・・ベースレ
ジスタ、92・・・・・・汎用レジスタ、11,12,
51,52・・・・・・レジスタ、21,41,81,
93・・・・・・セレクタ、101,311・・・・・
制御線、1−1,2−1,4−1,102,111,1
21,201,202,211,301,302,40
1,402,411,501,511,521,522
,601,602,603,604,611,701,
711,801,811,821,831,901,9
11,921・・・・・データ線、103・・・・・・
デコーダ、106・・・・・・比較回路、104,10
5,106,107,108・・・・・フリップフロッ
プ、3101,3102・・・・・・比較回路、310
3・・・・・エンコーダ、3108,3108・・・・
・排他的論理和回路、3105,3109,3110・
・・・・・アンド回路、3106,3108・・・・・
・反転回路。

Claims (1)

    【特許請求の範囲】
  1. 1 命令の先取りを行なう先行制御手段と、複数のブロ
    ックを有し主記憶装置に記憶される情報の一部を写しと
    してブロック単位に保持するバッファメモリ手段と、こ
    のバッファメモリ手段の少なくとの1つのブロックに対
    応する少なくとも1つのブロックを有し分岐命令実行に
    より得られた分岐方向情報を前記バッファメモリ手段の
    該分岐命令を含むブロックに対応したブロックに記憶す
    る分岐方向制御記憶手段とを具備し、命令を前記バッフ
    ァメモリ手段から先取りするときに前記分岐方向情報を
    該命令とともに読み出し該先取りした命令が分岐命令で
    あるときにはその分岐が成功するか否かを前記分岐方向
    制御記憶手段に記憶された分岐方向情報を用いて予測し
    該予測結果により該分岐命令の次に実行される可能性の
    高いとみなされる分岐方向の命令の先取りを行なうよう
    にしたことを特徴とする分岐命令先取り方式。
JP13545780A 1980-09-29 1980-09-29 分岐命令先取り方式 Expired JPS6049340B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13545780A JPS6049340B2 (ja) 1980-09-29 1980-09-29 分岐命令先取り方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13545780A JPS6049340B2 (ja) 1980-09-29 1980-09-29 分岐命令先取り方式

Publications (2)

Publication Number Publication Date
JPS5759253A JPS5759253A (en) 1982-04-09
JPS6049340B2 true JPS6049340B2 (ja) 1985-11-01

Family

ID=15152152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13545780A Expired JPS6049340B2 (ja) 1980-09-29 1980-09-29 分岐命令先取り方式

Country Status (1)

Country Link
JP (1) JPS6049340B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
JPS5991553A (ja) * 1982-11-17 1984-05-26 Nec Corp 実アドレス分岐ヒストリテ−ブルを有する命令先取り装置
JPS5991554A (ja) * 1982-11-17 1984-05-26 Nec Corp 分岐方向予測を行なう命令先取り装置
JPS59177653A (ja) * 1983-03-29 1984-10-08 Nec Corp 命令先取り制御方式
JPS5991552A (ja) * 1982-11-17 1984-05-26 Nec Corp セツトアソシアテイブ型分岐ヒストリテ−ブルを有する命令先取り装置
JPS6027945A (ja) * 1983-07-27 1985-02-13 Nec Corp 命令取出装置
JPS60164842A (ja) * 1984-02-08 1985-08-27 Nec Corp 命令先取り装置
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
JPH02287626A (ja) * 1989-04-28 1990-11-27 Toshiba Corp パイプライン方式の分岐命令制御装置

Also Published As

Publication number Publication date
JPS5759253A (en) 1982-04-09

Similar Documents

Publication Publication Date Title
US4604691A (en) Data processing system having branch instruction prefetching performance
EP0125855B1 (en) Buffer-storage control system
JPS6341093B2 (ja)
JPH02206837A (ja) パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置
JPS6313215B2 (ja)
JPH0241053B2 (ja)
JPH0248931B2 (ja)
CA1181865A (en) Microprogrammed control of extended integer instructions through use of a data type field in a central processor unit
US3958221A (en) Method and apparatus for locating effective operand of an instruction
US5146570A (en) System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
JPS6049340B2 (ja) 分岐命令先取り方式
JPH0682320B2 (ja) データ処理装置
EP0240606B1 (en) Pipe-line processing system and microprocessor using the system
US4812970A (en) Microprogram control system
JP3490005B2 (ja) 命令制御装置及びその方法
US5276853A (en) Cache system
JPS62501940A (ja) マイクロプログラム・コントロ−ラの改良
JPS6116334A (ja) デ−タ処理装置
JPH07200406A (ja) キャッシュシステム
JPS60231241A (ja) プログラム先行フエツチ制御方式
JPS59206947A (ja) マイクロプログラム制御装置
JPH09114733A (ja) キャッシュ記憶装置における非整列データ転送機構
JPS584449A (ja) 命令バッファ制御方式
JPS6047616B2 (ja) 情報処理装置
EP0101759B1 (en) Data processing system having branch instruction prefetching performance