JPH02287626A - パイプライン方式の分岐命令制御装置 - Google Patents
パイプライン方式の分岐命令制御装置Info
- Publication number
- JPH02287626A JPH02287626A JP1107449A JP10744989A JPH02287626A JP H02287626 A JPH02287626 A JP H02287626A JP 1107449 A JP1107449 A JP 1107449A JP 10744989 A JP10744989 A JP 10744989A JP H02287626 A JPH02287626 A JP H02287626A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- address
- register
- memory
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[発明の目的]
(産業上の利用分野)
本発明はパイプライン方式の分岐命令制御ll装置、特
に分岐命令の履歴情報にしたがって命令の分岐の有無を
予測し命令を実行することにより、分岐によるパイプラ
インの乱れを最小にした分岐命令制御装置にvAするも
のである。
に分岐命令の履歴情報にしたがって命令の分岐の有無を
予測し命令を実行することにより、分岐によるパイプラ
インの乱れを最小にした分岐命令制御装置にvAするも
のである。
(従来の技術)
近年においては、命令の実行処理のためにパイプライン
方式を採用してマイクロプロセッサなど、データ処理装
置の高性能化を図っている。該パイプライン方式の基本
構成は、命令フェッチ段、命令デコード段、実行アドレ
ス計算段、オペランドフェッチ段、命令実行段の5つの
段(ステージ)からなっている。
方式を採用してマイクロプロセッサなど、データ処理装
置の高性能化を図っている。該パイプライン方式の基本
構成は、命令フェッチ段、命令デコード段、実行アドレ
ス計算段、オペランドフェッチ段、命令実行段の5つの
段(ステージ)からなっている。
このようなパイプライン方式において、各段ごとに別の
命令が処理され、バイブラインの乱れなしに命令が処理
されている状態で最大の性能が得られる。しかしながら
、分岐命令の分岐が成功した場合には、分岐命令以時の
命令のうち、既に処理が進行していたものも無効にされ
、分岐先の命令から、その処理を再開しなければならず
、これによってバイブラインの乱れを生じ、性能の低下
を招いていた。
命令が処理され、バイブラインの乱れなしに命令が処理
されている状態で最大の性能が得られる。しかしながら
、分岐命令の分岐が成功した場合には、分岐命令以時の
命令のうち、既に処理が進行していたものも無効にされ
、分岐先の命令から、その処理を再開しなければならず
、これによってバイブラインの乱れを生じ、性能の低下
を招いていた。
この問題を改善する方法として、分岐予測による分岐命
令処理方式が既に提案されている。この方式によれば、
分岐命令の過去の履歴に基づく分岐予測情報によって分
岐が成功するか否かを予測し、成功の予測をした場合に
は当該分岐命令の実行以前に分岐先命令の処理を先行さ
せ、バイブラインの乱れを少なくしようとするものであ
る。
令処理方式が既に提案されている。この方式によれば、
分岐命令の過去の履歴に基づく分岐予測情報によって分
岐が成功するか否かを予測し、成功の予測をした場合に
は当該分岐命令の実行以前に分岐先命令の処理を先行さ
せ、バイブラインの乱れを少なくしようとするものであ
る。
上記従来の分岐命令処理方式の1つとしては、バイブラ
インの実行アドレス計算段で求めた分岐先アドレスから
分岐先命令のフェッチを開始するようにしたものが知ら
れている。
インの実行アドレス計算段で求めた分岐先アドレスから
分岐先命令のフェッチを開始するようにしたものが知ら
れている。
まノζ、従来技術による別の分岐命令処理方式としては
、分岐命令のアドレスと分岐先アドレスとの対応表を用
意しておき、命令フェッチ段あるいは命令デコード段に
おいて前記対応表を引いて分岐先のアドレスを得ている
。そして分岐が成功Jると予測された場合には、得られ
た前記分岐先のアドレスから命令フェッチを開始するよ
うにしたものが知られている。
、分岐命令のアドレスと分岐先アドレスとの対応表を用
意しておき、命令フェッチ段あるいは命令デコード段に
おいて前記対応表を引いて分岐先のアドレスを得ている
。そして分岐が成功Jると予測された場合には、得られ
た前記分岐先のアドレスから命令フェッチを開始するよ
うにしたものが知られている。
第7図は、従来技術による前者の命令処理方式において
分岐予測が成功した場合のバイブラインの流れを示し、
第8図は従来技術による後者の命令処理方式において分
岐予測が成功した場合のバイブラインの流れを示す。
分岐予測が成功した場合のバイブラインの流れを示し、
第8図は従来技術による後者の命令処理方式において分
岐予測が成功した場合のバイブラインの流れを示す。
(発明が解決しようとする課題)
第7図から判るように、前者の命令処理方式においては
、実際に分岐が行なわれた場合、分岐予測が成功しても
2サイクルの空き(遊び)ができて1ノまう問題が生じ
る。
、実際に分岐が行なわれた場合、分岐予測が成功しても
2サイクルの空き(遊び)ができて1ノまう問題が生じ
る。
また第8図に示す後者の命令!18理方式においては、
確かに分岐予測が成功した場合には、図示のように確か
に空きがなくなる。しかしながら、この方式においては
、データ量の多い分岐先アドレスや分岐先命令を対応表
中に格納しておかなければならないため、ハードウェア
が大となってしまう。したがって、対応表のエントリ数
を十分大きくすることは物理的、経済的に困難となる。
確かに分岐予測が成功した場合には、図示のように確か
に空きがなくなる。しかしながら、この方式においては
、データ量の多い分岐先アドレスや分岐先命令を対応表
中に格納しておかなければならないため、ハードウェア
が大となってしまう。したがって、対応表のエントリ数
を十分大きくすることは物理的、経済的に困難となる。
一方、エントリ数を少なくしてしまうと、後者の命令処
理方式では、分岐命令によって対応表が引かれた場合に
、エラーの比率が高くなり分岐予測が不能となる事態も
生ずると共に、分岐によるバイブラインの乱れが多くな
り二律背反になっていた。
理方式では、分岐命令によって対応表が引かれた場合に
、エラーの比率が高くなり分岐予測が不能となる事態も
生ずると共に、分岐によるバイブラインの乱れが多くな
り二律背反になっていた。
本発明は上記の問題を解決するもので、少ないハードウ
ェア山で、分岐によるバイブラインの乱れを最小に抑え
る分岐命令制1lll装置を提供することを目的として
いる。
ェア山で、分岐によるバイブラインの乱れを最小に抑え
る分岐命令制1lll装置を提供することを目的として
いる。
[発明の構成]
(課趙を解決するための手段)
このため本発明の特徴は、バイブライン方式のマイクロ
プロセッサにおいて、主記憶装置の内容の一部を格納し
−Cいるキャッシュメモリと、該キャッシュメモリに格
納している分岐命令ごとの分岐予測情報を格納する分岐
情報メモリと、前記分岐情報メモリから読み出した分岐
予測情報によって前記キャッシュメモリからの分岐命令
の分岐が成功すると判断した際に、その分岐先アト1ノ
スを計算する分岐アドレス生成手段とを具備したことで
ある。
プロセッサにおいて、主記憶装置の内容の一部を格納し
−Cいるキャッシュメモリと、該キャッシュメモリに格
納している分岐命令ごとの分岐予測情報を格納する分岐
情報メモリと、前記分岐情報メモリから読み出した分岐
予測情報によって前記キャッシュメモリからの分岐命令
の分岐が成功すると判断した際に、その分岐先アト1ノ
スを計算する分岐アドレス生成手段とを具備したことで
ある。
(作用)
上述の如きバイブライン方式の分岐命令制御装置におい
ては、分岐情報メモリからの分岐予測情報に基づいて、
分岐命令が実行される前に分岐先アドレスを分岐アドレ
ス生成手段によって求めてから、分岐先命令のフェッチ
を行うようにして、分岐命令によるバイブラインの乱れ
を最小に抑制している。
ては、分岐情報メモリからの分岐予測情報に基づいて、
分岐命令が実行される前に分岐先アドレスを分岐アドレ
ス生成手段によって求めてから、分岐先命令のフェッチ
を行うようにして、分岐命令によるバイブラインの乱れ
を最小に抑制している。
(実施例)
第1図は本発明によるバイブライン方式の分岐命令制御
装置の全体的な構成を示す。
装置の全体的な構成を示す。
前記分岐命令制御装置は、・主記憶装置の内容の一部を
格納づるキャッシュメモリ101、Ill小命令単位ご
とに分岐予測情報を格納する分岐情報メモリ102、フ
ェッチアト1ノスセレクタ103、フェッチアト1ノス
レジスタ104、加算器105、命令バッファ106、
分岐先アドレスを生成する分岐アドレス生成回路107
、命令デコーダ108、実効アドレスの計算を行なう実
効アドレス生成回路109、オペランドフェッチ回路1
10、命令実行回路111、実際の分岐情報から分岐予
測が成功したか否かを断定する分岐確定回路112、第
1の命令レジスタ113、第2の命令レジスタ114、
第3の命令レジスタ115、および各レジスタ116,
117,118,119.120で構成されている。
格納づるキャッシュメモリ101、Ill小命令単位ご
とに分岐予測情報を格納する分岐情報メモリ102、フ
ェッチアト1ノスセレクタ103、フェッチアト1ノス
レジスタ104、加算器105、命令バッファ106、
分岐先アドレスを生成する分岐アドレス生成回路107
、命令デコーダ108、実効アドレスの計算を行なう実
効アドレス生成回路109、オペランドフェッチ回路1
10、命令実行回路111、実際の分岐情報から分岐予
測が成功したか否かを断定する分岐確定回路112、第
1の命令レジスタ113、第2の命令レジスタ114、
第3の命令レジスタ115、および各レジスタ116,
117,118,119.120で構成されている。
次に、このように構成された本発明の分岐命令制御装置
の動作を説明する。
の動作を説明する。
キャッシュメモリ101は、フェッチアドレスレジスタ
104に格納されているアドレス情報から対応するデー
タをレジスタ119に出力する。
104に格納されているアドレス情報から対応するデー
タをレジスタ119に出力する。
この場合に、前記メモリ101からのデータ長は4バイ
トとする。レジスタ119は前記メモリ101から与え
られたデータの内容を命令バッファ106および分岐ア
ドレス生成回路107に出りすると共に新たなデータが
キャッシュメモリ101に保持される。
トとする。レジスタ119は前記メモリ101から与え
られたデータの内容を命令バッファ106および分岐ア
ドレス生成回路107に出りすると共に新たなデータが
キャッシュメモリ101に保持される。
一方、フェッチアドレスレジスタ104のアドレスはレ
ジスタ116に転送され、そこからのアドレス値が分岐
アドレス生成回路に向けて出力される。分岐情報メモリ
102には、キャッシュメモリ101に格納されている
データの最小命令単位ごとに分岐予測情報を格納してお
き、フェッチアドレスレジスタ104のアドレスから、
キャッシュメモリ101がアクセスされるのと同じタイ
ミングでその内容が読み出される。この場合、最小命令
単位は2バイトとし、分岐予測情報は“1”の1ビツト
で表わされ、“1″のときは分岐の成功を予測し0″の
ときは不成功を予測するものとする。
ジスタ116に転送され、そこからのアドレス値が分岐
アドレス生成回路に向けて出力される。分岐情報メモリ
102には、キャッシュメモリ101に格納されている
データの最小命令単位ごとに分岐予測情報を格納してお
き、フェッチアドレスレジスタ104のアドレスから、
キャッシュメモリ101がアクセスされるのと同じタイ
ミングでその内容が読み出される。この場合、最小命令
単位は2バイトとし、分岐予測情報は“1”の1ビツト
で表わされ、“1″のときは分岐の成功を予測し0″の
ときは不成功を予測するものとする。
キャッシュメモリ101のデータサイズは4バイトであ
るから、該メモリ101への1回のアクセスで2ピツト
の分岐予測情報が読み出されることになる。レジスタ1
20は、分岐情報メモリ102からの分岐予測情報を命
令バッファ106および分岐アドレス生成回路107へ
送り、新たなデータが入力されるまでその内容を保持す
る。
るから、該メモリ101への1回のアクセスで2ピツト
の分岐予測情報が読み出されることになる。レジスタ1
20は、分岐情報メモリ102からの分岐予測情報を命
令バッファ106および分岐アドレス生成回路107へ
送り、新たなデータが入力されるまでその内容を保持す
る。
分岐情報メモリ102は、レジスタ118にアドレスが
、そしてレジスタ117に該分岐情報メモリ102に格
納すべき値が設定されると、前記アドレスで指定された
前記メモリ102の内容をレジスタ117の内容で置換
する。
、そしてレジスタ117に該分岐情報メモリ102に格
納すべき値が設定されると、前記アドレスで指定された
前記メモリ102の内容をレジスタ117の内容で置換
する。
分岐アドレス生成回路107はレジスタ119からの命
令、レジスタ116からの命令に対応するアドレス、お
よび分岐予測情報とを受けるが、前記命令中に分岐命令
が含まれ、前記分岐予測情報により分岐の予測をした場
合に、分岐先アドレスを計弾し、その値を線p1を介し
てフェッチアドレスセレクタ103に出力すると共に、
線Ω2に1”を出力する。
令、レジスタ116からの命令に対応するアドレス、お
よび分岐予測情報とを受けるが、前記命令中に分岐命令
が含まれ、前記分岐予測情報により分岐の予測をした場
合に、分岐先アドレスを計弾し、その値を線p1を介し
てフェッチアドレスセレクタ103に出力すると共に、
線Ω2に1”を出力する。
第2図は分岐アドレス生成回路107の詳細な構成を示
す。この回路107において、分岐命令が格納されてい
るアドレスと前記分岐命令中の変位値を加算して分岐先
のアドレスを求める。但しこの場合、分岐先アドレスが
決まる相対分岐命令のみに限る。レジスタ116の1ビ
ツト位置が′0”のときはレジスタ119の4バイト全
部が有効であり、“1Hのときはレジスタ119の下位
2バイトのみが有効にされる。一方、レジスタ120の
上位1ビツトはレジスタ119の上位2バイトの命令に
対する分岐予測情報を示し、レジスタ120の下位1ビ
ツトはレジスタ119の下位2バイトの命令に対する分
岐予測情報を示している。、したがってレジスタ116
の1ビツト位置が“1′であると、レジスタ119の上
位2バイトの命令の分岐が予測され、論理ゲートの出力
によりゲート24をオンにするのでレジスタ119の上
位2バイトの命令が分岐命令デコーダ26に入力される
ようになっている。
す。この回路107において、分岐命令が格納されてい
るアドレスと前記分岐命令中の変位値を加算して分岐先
のアドレスを求める。但しこの場合、分岐先アドレスが
決まる相対分岐命令のみに限る。レジスタ116の1ビ
ツト位置が′0”のときはレジスタ119の4バイト全
部が有効であり、“1Hのときはレジスタ119の下位
2バイトのみが有効にされる。一方、レジスタ120の
上位1ビツトはレジスタ119の上位2バイトの命令に
対する分岐予測情報を示し、レジスタ120の下位1ビ
ツトはレジスタ119の下位2バイトの命令に対する分
岐予測情報を示している。、したがってレジスタ116
の1ビツト位置が“1′であると、レジスタ119の上
位2バイトの命令の分岐が予測され、論理ゲートの出力
によりゲート24をオンにするのでレジスタ119の上
位2バイトの命令が分岐命令デコーダ26に入力される
ようになっている。
一方、レジスタ116の1ビツト位置が1″でレジスタ
120の下位ビットが“1”のとき、レジスタ119の
下位2バイトの命令の分岐の成立が予測され、各論理ゲ
ート21.22.23を介して出力される信号によりレ
ジスタ119の下位2バイトの命令がデコーダ26に入
力されるようになっている。
120の下位ビットが“1”のとき、レジスタ119の
下位2バイトの命令の分岐の成立が予測され、各論理ゲ
ート21.22.23を介して出力される信号によりレ
ジスタ119の下位2バイトの命令がデコーダ26に入
力されるようになっている。
分岐命令デコーダ26は入力された上記各命令が相対分
岐命令であるか否かを判定し、そうである場合には、I
II j 2に“1″を出力づると共に、デコーダ26
に入力された命令データから変位値を割出して加算器2
7へ与える。加算器27は、レジスタ28にある分岐命
令のアドレスとデコーダ26からの変位値とを加算して
分岐先アドレスを生成しそれを1lin+ に出力する
。
岐命令であるか否かを判定し、そうである場合には、I
II j 2に“1″を出力づると共に、デコーダ26
に入力された命令データから変位値を割出して加算器2
7へ与える。加算器27は、レジスタ28にある分岐命
令のアドレスとデコーダ26からの変位値とを加算して
分岐先アドレスを生成しそれを1lin+ に出力する
。
第1図に戻って、命令バッファ106はFIFO(ファ
ーストイン・ファーストアウト)型メモリであり、レジ
スタ119からの命令とレジスタ120からの分岐予測
情報を順に命令デコーダ108に出力している。
ーストイン・ファーストアウト)型メモリであり、レジ
スタ119からの命令とレジスタ120からの分岐予測
情報を順に命令デコーダ108に出力している。
命令デコーダ108は、次いで命令をデコードし、それ
が分岐命令であれば、分岐命令のアドレス、次の命令の
アドレス、および分岐予測情報を第1の命令レジスタ1
13に出力し、実効アドレス生成回路109がその命令
を受けて実効アドレスの計算を行なう。この場合に分岐
命令であると、分岐先のアドレスを計算し第2の命令レ
ジスタ114に入れる。
が分岐命令であれば、分岐命令のアドレス、次の命令の
アドレス、および分岐予測情報を第1の命令レジスタ1
13に出力し、実効アドレス生成回路109がその命令
を受けて実効アドレスの計算を行なう。この場合に分岐
命令であると、分岐先のアドレスを計算し第2の命令レ
ジスタ114に入れる。
次に命令実行回路111はオペランドフェッチ回路11
0の出力に従って命令を実行するが、実際に分岐する場
合には線A3に゛′1゛°1′°を、分岐しない場合に
は″07J出力信号を出し、分岐確定回路112は該出
力信号と第3の命令レジスタ115の内容とを受ける。
0の出力に従って命令を実行するが、実際に分岐する場
合には線A3に゛′1゛°1′°を、分岐しない場合に
は″07J出力信号を出し、分岐確定回路112は該出
力信号と第3の命令レジスタ115の内容とを受ける。
なお、前記各命令レジスタ113.114.115は各
バイブラインステージ109,110゜111の分岐命
令の情報を格納するが、その詳細は第3図に示すように
分岐予測情報部31、分岐先アドレス部32、分岐命令
に続く次の命令のアドレス部33、分岐命令アドレス部
34で構成されている。
バイブラインステージ109,110゜111の分岐命
令の情報を格納するが、その詳細は第3図に示すように
分岐予測情報部31、分岐先アドレス部32、分岐命令
に続く次の命令のアドレス部33、分岐命令アドレス部
34で構成されている。
さて、分岐確定回路11′2は第3の命令レジスタ11
5の分岐予測情報と線p3上の実際の分岐情報とが一致
するか否かを判定する。
5の分岐予測情報と線p3上の実際の分岐情報とが一致
するか否かを判定する。
第4図は、分岐確定回路112の詳細な構成を示し、排
他的NOR回路(XNOR)42が画情報の一致を検出
している。両者が一致すれば分岐予測が成功したことに
なるので、線Q4に゛11n出力を与え、不成功の場合
には“O11出力を与える。XNOR回路42の出力は
、線94を介して前記アドレスセレクタ103(第1図
)およびゲート43へ与えられるので、その出力がO)
lで分岐予測が外れた場合にはゲート43を開けて第3
の命令レジスタ115の分岐アドレスをレジスタ118
に格納して分岐予測情報を変更している。
他的NOR回路(XNOR)42が画情報の一致を検出
している。両者が一致すれば分岐予測が成功したことに
なるので、線Q4に゛11n出力を与え、不成功の場合
には“O11出力を与える。XNOR回路42の出力は
、線94を介して前記アドレスセレクタ103(第1図
)およびゲート43へ与えられるので、その出力がO)
lで分岐予測が外れた場合にはゲート43を開けて第3
の命令レジスタ115の分岐アドレスをレジスタ118
に格納して分岐予測情報を変更している。
新しい分岐予測情報は線Q3がら97を介してレジスタ
117に格納される。
117に格納される。
セレクタ41を介して分岐が成立した場合には第3の命
令レジスタ115の分岐先アドレス32が出力され、分
岐不成立の場合には次の命令アト1ノス33が線g5を
介してフェッチアドレスセレクタ103へ与える。
令レジスタ115の分岐先アドレス32が出力され、分
岐不成立の場合には次の命令アト1ノス33が線g5を
介してフェッチアドレスセレクタ103へ与える。
加算器105は、フェッチアト1ノスレジスタ104が
4バイト境界であれば、その値に4を加算したものを前
記フェッチアドレスセレクタ103に出力し、そうでな
いときは2を加算したものを線Ω8を介してフェッチア
ドレスレジスタに出力する。
4バイト境界であれば、その値に4を加算したものを前
記フェッチアドレスセレクタ103に出力し、そうでな
いときは2を加算したものを線Ω8を介してフェッチア
ドレスレジスタに出力する。
フェッチアドレスセレクタ103は線Ω2およびQ4を
介して3つのアドレス入力の線91.Q5.98の内の
1つのフェッチアドレスレジスタに出力するように制御
する。fI Q 4が0′°のとぎは実行した分岐命令
の予測が不成功の場合であり、Ha Q 5に出力され
ている実際の分岐先アドレスをフェッチアドレスレジス
タ104に出力する。
介して3つのアドレス入力の線91.Q5.98の内の
1つのフェッチアドレスレジスタに出力するように制御
する。fI Q 4が0′°のとぎは実行した分岐命令
の予測が不成功の場合であり、Ha Q 5に出力され
ている実際の分岐先アドレスをフェッチアドレスレジス
タ104に出力する。
線ぷ4が“1”で線92が“1”のときは、分岐アドレ
ス生成回路107で求まった分岐予測光のアドレスより
、分岐予測光の命令フェッチを行うため、II D t
に出力されている分岐予測光アト1ノスをフェッチア
ドレスレジスタ104に出力する。
ス生成回路107で求まった分岐予測光のアドレスより
、分岐予測光の命令フェッチを行うため、II D t
に出力されている分岐予測光アト1ノスをフェッチア
ドレスレジスタ104に出力する。
I D 4が“1′°で線Ω2が“○″のときは、加算
器105からの線Ω8をフェッチアドレスレジスタ10
4に出力する。
器105からの線Ω8をフェッチアドレスレジスタ10
4に出力する。
次に、第1図の分岐制御I装置の動作をキャッシュメモ
リ101と分岐情報メモリ102が第5図のように設定
された例を挙げて説明づる。第5図では、キャッシュメ
モリ101にはアドレスの1000番地から1006番
地までの命令ti、t2.13.8RA6.14.15
,16.17が格納されている。ここで、BRA6はそ
の変位値が6でる相対分岐命令とする。夫々の命令に対
応する分岐予測情報が第5図の分岐情報メモリ102に
格納されており、命令BRA6に対応した分岐予測情報
の値は“1”で分岐が成功すると予測されている。
リ101と分岐情報メモリ102が第5図のように設定
された例を挙げて説明づる。第5図では、キャッシュメ
モリ101にはアドレスの1000番地から1006番
地までの命令ti、t2.13.8RA6.14.15
,16.17が格納されている。ここで、BRA6はそ
の変位値が6でる相対分岐命令とする。夫々の命令に対
応する分岐予測情報が第5図の分岐情報メモリ102に
格納されており、命令BRA6に対応した分岐予測情報
の値は“1”で分岐が成功すると予測されている。
第6図には第5図のプログラムを実行したときのタイミ
ング図を示す。始めにフェッチアドレスレジスタ104
の値がi ooo’であると、サイクル1でそのアドレ
スの命令11.12がキャッシュメモリ101よりフェ
ッチされる。サイクル2では命令11と12は命令バッ
フ?106に格納され、命令■1が命令デコーダ108
でデコードされる。また、同時に1004番地より命令
I3とBRA6がフェッチされる。サイクル3では、サ
イクル2で分岐予測メモリから読み出した命令BRA6
の分岐予測情報が1″になっているので分岐アドレス生
成回路で分岐先アドレス100cl地が計算される。サ
イクル4では、前のサイクルに分岐アドレス生成回路1
07で求められた分岐先アドレス1000番地が7エツ
チアドレスレジスタ104に格納されており、分岐先の
命令16.17がフェッチされる。サイクル5では、分
岐先命令16.17が命令バ、ソファに格納され、分岐
命令BRA6が命令デコーダ108でデコードされる。
ング図を示す。始めにフェッチアドレスレジスタ104
の値がi ooo’であると、サイクル1でそのアドレ
スの命令11.12がキャッシュメモリ101よりフェ
ッチされる。サイクル2では命令11と12は命令バッ
フ?106に格納され、命令■1が命令デコーダ108
でデコードされる。また、同時に1004番地より命令
I3とBRA6がフェッチされる。サイクル3では、サ
イクル2で分岐予測メモリから読み出した命令BRA6
の分岐予測情報が1″になっているので分岐アドレス生
成回路で分岐先アドレス100cl地が計算される。サ
イクル4では、前のサイクルに分岐アドレス生成回路1
07で求められた分岐先アドレス1000番地が7エツ
チアドレスレジスタ104に格納されており、分岐先の
命令16.17がフェッチされる。サイクル5では、分
岐先命令16.17が命令バ、ソファに格納され、分岐
命令BRA6が命令デコーダ108でデコードされる。
サイクル6では、分岐先命令I6が命令デコーダでデコ
ードされる。サイクル8で、分岐命令BRA6は実行回
路111で実行されると同時に、分岐確定回路で分岐予
測が成功したか否かが確認される。予測が成功した場合
は現在の命令シーケンスのまま処理を接続され、次のサ
イクル9で分岐先の命令I6が命令実行回路111で実
行されるので、この場合の分岐の空きは0である。分岐
予測が不成功である場合は、フェッチアドレスレジスタ
104に実際の分岐先が設定され、次のサイクルから命
令フェッチが行なわれるため、図示しないが分岐の空き
は4となる。
ードされる。サイクル8で、分岐命令BRA6は実行回
路111で実行されると同時に、分岐確定回路で分岐予
測が成功したか否かが確認される。予測が成功した場合
は現在の命令シーケンスのまま処理を接続され、次のサ
イクル9で分岐先の命令I6が命令実行回路111で実
行されるので、この場合の分岐の空きは0である。分岐
予測が不成功である場合は、フェッチアドレスレジスタ
104に実際の分岐先が設定され、次のサイクルから命
令フェッチが行なわれるため、図示しないが分岐の空き
は4となる。
以上説明してきた実施例では、分岐アドレス生成回路1
07は相対分岐命令しかその分岐アドレスを求めること
ができなかったが、絶対分岐命令についても分岐アドレ
スを求めることが可能な様に機能を拡張してもよい。
07は相対分岐命令しかその分岐アドレスを求めること
ができなかったが、絶対分岐命令についても分岐アドレ
スを求めることが可能な様に機能を拡張してもよい。
さらに、実施例では最小命令単位が2バイトで、キャッ
シュメモリ101から一度に読み出されるデータのサイ
ズが4バイトの例を挙げたが、これらの値は固定される
ものでない。
シュメモリ101から一度に読み出されるデータのサイ
ズが4バイトの例を挙げたが、これらの値は固定される
ものでない。
さらに、実施例では最近1回の分岐の方向を示した1ビ
ツトの分岐予測情報を分岐情報メモリ102に格納して
おき、同じ方向に分岐すると予測したが、過去複数回の
分岐の方向のlll歴を分岐情報メモリ102に格納し
ておき、それに基づいて分岐予測を行うようにしてもよ
い。
ツトの分岐予測情報を分岐情報メモリ102に格納して
おき、同じ方向に分岐すると予測したが、過去複数回の
分岐の方向のlll歴を分岐情報メモリ102に格納し
ておき、それに基づいて分岐予測を行うようにしてもよ
い。
[発明の効果]
以上、本発明の詳細な説明してきたが1本発明によるパ
イプライン方式の分岐命令制御装置において、分岐予測
が成功した場合の分岐の空きは最小でOにすることが可
能である。また、分岐予測情報を記憶しておくメモリは
、分岐の過去の履歴情報だけでよく、従来の方法のよう
にデータ員の多い分岐先アドレスの値、分岐先の命令を
記憶しておく必要がないのでハードウェア員が低減され
る。本発明による実施例においては、キャッシュメモリ
に格納された命令の2バイト毎に1ビツトのデータを用
意するので、キャッシュメモリに比べ、16分の1の記
憶容量でよい。従って、本発明によれば、比較的少量の
ハードウェアにより、分岐予測の方式を用いて高速に分
岐処理することが可能となる。
イプライン方式の分岐命令制御装置において、分岐予測
が成功した場合の分岐の空きは最小でOにすることが可
能である。また、分岐予測情報を記憶しておくメモリは
、分岐の過去の履歴情報だけでよく、従来の方法のよう
にデータ員の多い分岐先アドレスの値、分岐先の命令を
記憶しておく必要がないのでハードウェア員が低減され
る。本発明による実施例においては、キャッシュメモリ
に格納された命令の2バイト毎に1ビツトのデータを用
意するので、キャッシュメモリに比べ、16分の1の記
憶容量でよい。従って、本発明によれば、比較的少量の
ハードウェアにより、分岐予測の方式を用いて高速に分
岐処理することが可能となる。
第1図は本発明による分岐命令制御装置の全体的な構成
図、 第2図は第1図の分岐アドレス生成回路の詳細図、 第3図は第1図の各命令レジスタの構成図、第4図は第
1図の分岐確定回路の詳細図、第5図は第1図のキャッ
シュメモリおよび分岐情報メモリの内容説明図、 第6図は第1図の装置の動作を説明する動作図、第7図
および第8図は従来技術によるパイプライン式の分岐命
令制御の分岐成立時の動作タイミング図、をそれぞれ示
す。 101・・・キャッシュメモリ 102・・・分岐情報メモリ 103.104・・・フェッチアドレスセレクタ105
・・・m尊器 106・・・命令バッファ 107・・・分岐アドレス生成回路 108・・・命令デコーダ 109・・・実効アドレス生成回路 110・・・オペランドフェッチ回路 111・・・命令実行回路 112・・・分岐確定回路 113・・・第1の命令レジスタ 114・・・第2の命令レジスタ 115・・・第3の命令レジスタ 116〜120・・・各レジスタ
図、 第2図は第1図の分岐アドレス生成回路の詳細図、 第3図は第1図の各命令レジスタの構成図、第4図は第
1図の分岐確定回路の詳細図、第5図は第1図のキャッ
シュメモリおよび分岐情報メモリの内容説明図、 第6図は第1図の装置の動作を説明する動作図、第7図
および第8図は従来技術によるパイプライン式の分岐命
令制御の分岐成立時の動作タイミング図、をそれぞれ示
す。 101・・・キャッシュメモリ 102・・・分岐情報メモリ 103.104・・・フェッチアドレスセレクタ105
・・・m尊器 106・・・命令バッファ 107・・・分岐アドレス生成回路 108・・・命令デコーダ 109・・・実効アドレス生成回路 110・・・オペランドフェッチ回路 111・・・命令実行回路 112・・・分岐確定回路 113・・・第1の命令レジスタ 114・・・第2の命令レジスタ 115・・・第3の命令レジスタ 116〜120・・・各レジスタ
Claims (1)
- パイプライン方式によって命令を実行処理する処理装置
において、主記憶装置に記憶された内容の一部を格納す
るキャシュメモリと、前記キャシュメモリの最小命令単
位ごとに対応する分岐予測情報を格納する分岐情報メモ
リと、分岐先アドレスを計算する分岐アドレス生成回路
手段とを具備し、前記キャシュメモリから読み出された
命令のうちに分岐命令があった場合、前記分岐情報メモ
リから読み出した分岐予測情報によつて、前記分岐命令
が成功すると判断した際に、その分岐命令のデコード前
に前記分岐アドレス生成回路手段によつて分岐先アドレ
スを計算し、前記分岐情報メモリからの分岐予測情報に
したがつて、前記分岐命令の実行前に分岐先の命令を前
記キャッシュメモリからフェッチすることを特徴とする
パイプライン方式の分岐命令制御装置。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1107449A JPH02287626A (ja) | 1989-04-28 | 1989-04-28 | パイプライン方式の分岐命令制御装置 |
| EP19900106292 EP0394711A3 (en) | 1989-04-28 | 1990-04-02 | Branch instruction control unit based on a pipeline method |
| KR1019900006027A KR930003124B1 (ko) | 1989-04-28 | 1990-04-28 | 파이프라인방식의 분기명령제어장치 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1107449A JPH02287626A (ja) | 1989-04-28 | 1989-04-28 | パイプライン方式の分岐命令制御装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02287626A true JPH02287626A (ja) | 1990-11-27 |
Family
ID=14459438
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1107449A Pending JPH02287626A (ja) | 1989-04-28 | 1989-04-28 | パイプライン方式の分岐命令制御装置 |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP0394711A3 (ja) |
| JP (1) | JPH02287626A (ja) |
| KR (1) | KR930003124B1 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5724565A (en) * | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
| US7676650B2 (en) | 2002-06-28 | 2010-03-09 | Fujitsu Limited | Apparatus for controlling instruction fetch reusing fetched instruction |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0650465B2 (ja) * | 1989-10-16 | 1994-06-29 | 株式会社東芝 | 分岐制御回路 |
| US5784604A (en) * | 1992-10-09 | 1998-07-21 | International Business Machines Corporation | Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging |
| US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
| US6253316B1 (en) | 1996-11-19 | 2001-06-26 | Advanced Micro Devices, Inc. | Three state branch history using one bit in a branch prediction mechanism |
| US5954816A (en) * | 1996-11-19 | 1999-09-21 | Advanced Micro Devices, Inc. | Branch selector prediction |
| US5995749A (en) * | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
| US6108774A (en) * | 1997-12-19 | 2000-08-22 | Advanced Micro Devices, Inc. | Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits |
| US6230260B1 (en) | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
| US6502188B1 (en) | 1999-11-16 | 2002-12-31 | Advanced Micro Devices, Inc. | Dynamic classification of conditional branches in global history branch prediction |
| CN106843816B (zh) * | 2017-01-23 | 2019-06-18 | 青岛专用集成电路设计工程技术研究中心 | 一种分支预测控制方法及装置 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5759253A (en) * | 1980-09-29 | 1982-04-09 | Nec Corp | Branch instruction prefetch system |
| JPS61289429A (ja) * | 1985-06-18 | 1986-12-19 | Matsushita Electric Ind Co Ltd | 演算処理装置 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB8728493D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Jump prediction |
-
1989
- 1989-04-28 JP JP1107449A patent/JPH02287626A/ja active Pending
-
1990
- 1990-04-02 EP EP19900106292 patent/EP0394711A3/en not_active Withdrawn
- 1990-04-28 KR KR1019900006027A patent/KR930003124B1/ko not_active Expired - Fee Related
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5759253A (en) * | 1980-09-29 | 1982-04-09 | Nec Corp | Branch instruction prefetch system |
| JPS61289429A (ja) * | 1985-06-18 | 1986-12-19 | Matsushita Electric Ind Co Ltd | 演算処理装置 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5724565A (en) * | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
| US7676650B2 (en) | 2002-06-28 | 2010-03-09 | Fujitsu Limited | Apparatus for controlling instruction fetch reusing fetched instruction |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0394711A2 (en) | 1990-10-31 |
| EP0394711A3 (en) | 1992-09-16 |
| KR900016865A (ko) | 1990-11-14 |
| KR930003124B1 (ko) | 1993-04-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CA1325288C (en) | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system | |
| JP3182438B2 (ja) | データプロセッサ | |
| JPH0527971A (ja) | 情報処理装置 | |
| KR930003124B1 (ko) | 파이프라인방식의 분기명령제어장치 | |
| JPH0650465B2 (ja) | 分岐制御回路 | |
| JPS62102344A (ja) | バツフア・メモリ制御方式 | |
| US5421026A (en) | Data processor for processing instruction after conditional branch instruction at high speed | |
| US20080065870A1 (en) | Information processing apparatus | |
| JP2814683B2 (ja) | 命令処理装置 | |
| JP2591325B2 (ja) | 分岐制御装置 | |
| JPS6047618B2 (ja) | 情報処理装置 | |
| JPH0248733A (ja) | 情報処理装置 | |
| JPH04340145A (ja) | キャッシュメモリ装置 | |
| JP2001154845A (ja) | キャッシュミスした後のメモリバスアクセス制御方式 | |
| JP2545594B2 (ja) | オペランドデータ先取り方式 | |
| JPH02254541A (ja) | 条件分岐命令の制御方式 | |
| JPH03113535A (ja) | パイプライン制御機構 | |
| JPH03250221A (ja) | 分岐予測方式 | |
| JPS6020245A (ja) | デ−タ処理装置の命令制御回路 | |
| JPH01193938A (ja) | 命令先読み装置 | |
| JPH0540629A (ja) | 情報処理装置 | |
| JPH01126733A (ja) | 情報処理装置 | |
| JPH027128A (ja) | 情報処理装置 | |
| JPH01239638A (ja) | 分岐予測を行う情報処理装置 | |
| JPH06314196A (ja) | 情報処理方法および装置 |