JPH0760385B2 - 分岐予測機能を有するデ−タ処理装置 - Google Patents
分岐予測機能を有するデ−タ処理装置Info
- Publication number
- JPH0760385B2 JPH0760385B2 JP62164344A JP16434487A JPH0760385B2 JP H0760385 B2 JPH0760385 B2 JP H0760385B2 JP 62164344 A JP62164344 A JP 62164344A JP 16434487 A JP16434487 A JP 16434487A JP H0760385 B2 JPH0760385 B2 JP H0760385B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- address
- register
- prediction
- 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
Links
Landscapes
- Advance Control (AREA)
Description
【発明の詳細な説明】 [産業上の利用分野] この発明は分岐予測機能を有するデータ処理装置に関
し、特に、パイプライン機能を有し、分岐命令の少なく
とも1つ前に実行される命令の番地により分岐するか否
かを予測する分岐予測機能を有するデータ処理装置に関
する。
し、特に、パイプライン機能を有し、分岐命令の少なく
とも1つ前に実行される命令の番地により分岐するか否
かを予測する分岐予測機能を有するデータ処理装置に関
する。
[従来の技術] 計算機の命令には大きく分けて非分岐命令、無条件分岐
命令および条件分岐命令がある。条件分岐命令は、ある
一定の条件が成立していると分岐を起こす命令であり、
パイプライン方式の計算機にとって高速化のための障害
となっている。そこで、条件分岐命令が与えられたと
き、分岐するか否かを予測する分岐予測方式が採用され
ている。このような分岐予測方法については、米国電気
電子学会(IEEE)のコンピュータ部会(COMPUTER SOCIE
TY)が発行した“コンピュータ(COMPUTER)"1984年1
月号に記載されている。
命令および条件分岐命令がある。条件分岐命令は、ある
一定の条件が成立していると分岐を起こす命令であり、
パイプライン方式の計算機にとって高速化のための障害
となっている。そこで、条件分岐命令が与えられたと
き、分岐するか否かを予測する分岐予測方式が採用され
ている。このような分岐予測方法については、米国電気
電子学会(IEEE)のコンピュータ部会(COMPUTER SOCIE
TY)が発行した“コンピュータ(COMPUTER)"1984年1
月号に記載されている。
第5図は従来の分岐予測機能を有するデータ処理装置の
概略ブロック図である。まず、第5図を参照して、従来
の分岐予測機能を有するデータ処理装置構成について説
明する。命令レジスタ1はデータバスに出力された命令
を記憶するものである。命令レジスタ1に記憶された命
令は命令デコーダ2に与えられる。命令デコーダ2は命
令をデコードして、演算指示信号や分岐変位やそのデコ
ードされた命令の命令長を出力するものである。実行機
構3は命令デコーダによって命令がデコードされた結
果、出力される演算指示信号に基づいて命令を実行する
ものである。
概略ブロック図である。まず、第5図を参照して、従来
の分岐予測機能を有するデータ処理装置構成について説
明する。命令レジスタ1はデータバスに出力された命令
を記憶するものである。命令レジスタ1に記憶された命
令は命令デコーダ2に与えられる。命令デコーダ2は命
令をデコードして、演算指示信号や分岐変位やそのデコ
ードされた命令の命令長を出力するものである。実行機
構3は命令デコーダによって命令がデコードされた結
果、出力される演算指示信号に基づいて命令を実行する
ものである。
分岐予測機構20は命令のアドレスに対応して分岐予測ビ
ットを記憶するものである。この分岐予測ビットは、命
令が実行されたとき、分岐を起こすか否かを予測するた
めのものである。そして、分岐予測機構20は命令がデコ
ードされたとき、その命令に対応するアドレスから分岐
予測ビットを読出し、比較器5と次フェッチ命令アドレ
ス指定部6に与える。分岐すると予測してプリブランチ
を行なった場合には、比較器5は分岐予測ビットに基づ
く予測結果と、分岐すると予測した条件分岐命令の実行
機構3による実行結果とを比較して、一致しないとき、
分岐予測失敗信号を次フェッチ命令アドレス指定部6に
与える。次フェッチ命令アドレス指定部6は比較器5に
よって分岐の予測の失敗が判別されたとき、分岐予測失
敗信号に基づいて、正しい方向の命令をメモリから読出
す。この次フェッチ命令アドレス指定部6は加算器61と
デコード用プログラムカウンタ62とセーブレジスタ63と
を含む。加算器61は命令を実行するごとに、命令長をデ
コード用プログラムカウンタ62の内容に加算して、次に
フェッチすべき命令のアドレス信号を出力するものであ
る。次フェッチ命令アドレス指定部6は分岐予測機構20
から分岐予測ビットが与えられたときには、デコード用
プログラムカウンタ62のアドレスデータをセーブレジス
タ63にセーブし、加算器61によってデコード用プログラ
ムカウンタ62の計数しているアドレスデータに分岐変位
を加算させる。デコード用プログラムカウンタ62のアド
レスデータをセーブレジスタ63にセーブするのは、分岐
予測が失敗したときには、セーブしたアドレスデータが
再びデコード用プログラムカウンタ62にロードし、その
アドレスデータに命令長を加算して、次のアドレスの命
令をフェッチするためである。
ットを記憶するものである。この分岐予測ビットは、命
令が実行されたとき、分岐を起こすか否かを予測するた
めのものである。そして、分岐予測機構20は命令がデコ
ードされたとき、その命令に対応するアドレスから分岐
予測ビットを読出し、比較器5と次フェッチ命令アドレ
ス指定部6に与える。分岐すると予測してプリブランチ
を行なった場合には、比較器5は分岐予測ビットに基づ
く予測結果と、分岐すると予測した条件分岐命令の実行
機構3による実行結果とを比較して、一致しないとき、
分岐予測失敗信号を次フェッチ命令アドレス指定部6に
与える。次フェッチ命令アドレス指定部6は比較器5に
よって分岐の予測の失敗が判別されたとき、分岐予測失
敗信号に基づいて、正しい方向の命令をメモリから読出
す。この次フェッチ命令アドレス指定部6は加算器61と
デコード用プログラムカウンタ62とセーブレジスタ63と
を含む。加算器61は命令を実行するごとに、命令長をデ
コード用プログラムカウンタ62の内容に加算して、次に
フェッチすべき命令のアドレス信号を出力するものであ
る。次フェッチ命令アドレス指定部6は分岐予測機構20
から分岐予測ビットが与えられたときには、デコード用
プログラムカウンタ62のアドレスデータをセーブレジス
タ63にセーブし、加算器61によってデコード用プログラ
ムカウンタ62の計数しているアドレスデータに分岐変位
を加算させる。デコード用プログラムカウンタ62のアド
レスデータをセーブレジスタ63にセーブするのは、分岐
予測が失敗したときには、セーブしたアドレスデータが
再びデコード用プログラムカウンタ62にロードし、その
アドレスデータに命令長を加算して、次のアドレスの命
令をフェッチするためである。
第6図は分岐予測機能を説明するための図である。次
に、第5図および第6図を参照して、従来の条件分岐命
令が与えられたときの分岐予測方法について説明する。
デコード用プログラムカウンタ62のアドレスデータがア
ドレス信号としてアドレスバスに出力され、図示しない
メモリのある番地から命令が読出されて命令レジスタ1
にロードされる。この命令はデコーダ2によってデコー
ドされ、演算指示信号と命令長とが出力される。実行機
構3はその演算指示信号に基づいて処理動作を実行す
る。
に、第5図および第6図を参照して、従来の条件分岐命
令が与えられたときの分岐予測方法について説明する。
デコード用プログラムカウンタ62のアドレスデータがア
ドレス信号としてアドレスバスに出力され、図示しない
メモリのある番地から命令が読出されて命令レジスタ1
にロードされる。この命令はデコーダ2によってデコー
ドされ、演算指示信号と命令長とが出力される。実行機
構3はその演算指示信号に基づいて処理動作を実行す
る。
一方、加算器61は命令デコーダ2によデコードされた命
令長をデコード用プログラムカウンタ62の内容に加算
し、次にフェッチすべき命令のアドレス信号をアドレス
バスに出力する。デコード用プログラムカウンタ62から
出力されたアドレス信号が条件分岐命令に対応している
場合には、そのアドレスの一部に対応して記憶されてい
る分岐予測ビットが読出されて次フェッチ命令アドレス
指定部6に与えられる。その命令が分岐すると予測さ
れ、かつその命令をデコードした結果それが条件分岐命
令であることが判明した場合には、次フェッチ命令アド
レス指定部6はその命令が分岐するものと判断し、デコ
ード用プログラムカウンタ62の内容をセーブレジスタに
セーブする。そして、加算器61はデコード用プログラム
カウンタ62の内容に命令デコーダ2によってデコードさ
れた分岐変位を加算する。すなわち、第6図に示すよう
に、条件分岐命令のアドレスaに対し、分岐変位bが加
算され、分岐先アドレスa+bを示すアドレス信号が出
力される。このアドレス信号に基づいて、メモリから分
岐先の命令が読出される。一方、実行機構3は条件分岐
命令を実行するが、この条件分岐命令はある一定の条件
が満されていれば分岐するが、条件が満されていない場
合には分岐しない命令である。たとえば、Z(ゼロ)フ
ラグが立っていれば分岐するという条件を持つ条件分岐
命令を実行する場合は、Zフラグが立っていれば分岐す
るが、Zフラグが立っていなければ分岐しない。実行機
構3が条件分岐命令を実行した結果、分岐しなかった場
合には、分岐しなかったことを示す実行結果信号が比較
器5に与えられる。この比較器5には分岐予測機構20か
ら分岐予測情報が与えられているので、比較器5は両者
が一致しないことを判別して、分岐予測失敗信号を次フ
ェッチ命令アドレス指定部6に与える。次フェッチ命令
アドレス指定部6は条件分岐命令を実行した結果、分岐
しなかった場合には、第6図に示す条件分岐命令の次の
アドレスa+cの命令を実行する必要がある。しかし、
デコード用プログラムカウンタ62は上述したごとく、条
件分岐命令が分岐すると予測し、分岐先のアドレスa+
bを示すアドレス信号を出力している。このため、次フ
ェッチ命令アドレス指定部6はデコード用プログラムカ
ウンタ62の内容をキャンセルし、セーブレジスタ63にセ
ーブしたもとのアドレスaを読出して、デコード用プロ
グラムカウンタ62にロードする。さらに、加算器61は命
令長cをデコード用プログラムカウンタ62の内容に加算
し、アドレスa+cを示すアドレス信号を出力させる。
それによって、メモリからアドレスa+cに対応する命
令が読出されて、実行機構3によって実行される。
令長をデコード用プログラムカウンタ62の内容に加算
し、次にフェッチすべき命令のアドレス信号をアドレス
バスに出力する。デコード用プログラムカウンタ62から
出力されたアドレス信号が条件分岐命令に対応している
場合には、そのアドレスの一部に対応して記憶されてい
る分岐予測ビットが読出されて次フェッチ命令アドレス
指定部6に与えられる。その命令が分岐すると予測さ
れ、かつその命令をデコードした結果それが条件分岐命
令であることが判明した場合には、次フェッチ命令アド
レス指定部6はその命令が分岐するものと判断し、デコ
ード用プログラムカウンタ62の内容をセーブレジスタに
セーブする。そして、加算器61はデコード用プログラム
カウンタ62の内容に命令デコーダ2によってデコードさ
れた分岐変位を加算する。すなわち、第6図に示すよう
に、条件分岐命令のアドレスaに対し、分岐変位bが加
算され、分岐先アドレスa+bを示すアドレス信号が出
力される。このアドレス信号に基づいて、メモリから分
岐先の命令が読出される。一方、実行機構3は条件分岐
命令を実行するが、この条件分岐命令はある一定の条件
が満されていれば分岐するが、条件が満されていない場
合には分岐しない命令である。たとえば、Z(ゼロ)フ
ラグが立っていれば分岐するという条件を持つ条件分岐
命令を実行する場合は、Zフラグが立っていれば分岐す
るが、Zフラグが立っていなければ分岐しない。実行機
構3が条件分岐命令を実行した結果、分岐しなかった場
合には、分岐しなかったことを示す実行結果信号が比較
器5に与えられる。この比較器5には分岐予測機構20か
ら分岐予測情報が与えられているので、比較器5は両者
が一致しないことを判別して、分岐予測失敗信号を次フ
ェッチ命令アドレス指定部6に与える。次フェッチ命令
アドレス指定部6は条件分岐命令を実行した結果、分岐
しなかった場合には、第6図に示す条件分岐命令の次の
アドレスa+cの命令を実行する必要がある。しかし、
デコード用プログラムカウンタ62は上述したごとく、条
件分岐命令が分岐すると予測し、分岐先のアドレスa+
bを示すアドレス信号を出力している。このため、次フ
ェッチ命令アドレス指定部6はデコード用プログラムカ
ウンタ62の内容をキャンセルし、セーブレジスタ63にセ
ーブしたもとのアドレスaを読出して、デコード用プロ
グラムカウンタ62にロードする。さらに、加算器61は命
令長cをデコード用プログラムカウンタ62の内容に加算
し、アドレスa+cを示すアドレス信号を出力させる。
それによって、メモリからアドレスa+cに対応する命
令が読出されて、実行機構3によって実行される。
[発明が解決しようとする問題点] 従来の分岐予測機能を有するデータ処理装置は上述のご
とく構成されているので、分岐の予測が失敗した場合に
は、セーブレジスタ63にセーブしたアドレスをデコード
用プログラムカウンタ62に転送し、そのアドレスに命令
長を加算するための処理を必要とし、処理が複雑になっ
てしまうという問題点があった。
とく構成されているので、分岐の予測が失敗した場合に
は、セーブレジスタ63にセーブしたアドレスをデコード
用プログラムカウンタ62に転送し、そのアドレスに命令
長を加算するための処理を必要とし、処理が複雑になっ
てしまうという問題点があった。
そこで、本出願人は、命令をフェッチ,デコードし、そ
の命令の番地を使って分岐予測機構より分岐予測ビット
を読出し、その分岐予測ビットが分岐することを示し、
かつその命令がデコードされた結果、条件分岐命令であ
ることが判明すれば、条件分岐命令の分岐条件を反転
し、かつ分岐変位と命令長とを入替えて実行機構に移す
ことを特徴とするデータ処理装置を提案した(特願昭61
-204500号)。
の命令の番地を使って分岐予測機構より分岐予測ビット
を読出し、その分岐予測ビットが分岐することを示し、
かつその命令がデコードされた結果、条件分岐命令であ
ることが判明すれば、条件分岐命令の分岐条件を反転
し、かつ分岐変位と命令長とを入替えて実行機構に移す
ことを特徴とするデータ処理装置を提案した(特願昭61
-204500号)。
しかしながら、条件分岐命令がフェッチ,デコードされ
て、分岐予測を行なうため、その予測結果が求まるまで
は、分岐条件の反転および分岐変位と命令長との入替え
を行なうべきか否かを決定することができないため、処
理上無駄な時間が存在するという問題点があった。
て、分岐予測を行なうため、その予測結果が求まるまで
は、分岐条件の反転および分岐変位と命令長との入替え
を行なうべきか否かを決定することができないため、処
理上無駄な時間が存在するという問題点があった。
それゆえに、この発明は上述のような問題点を解消する
ためになされたもので、分岐することが予測される条件
分岐命令がフェッチ,デコードされた場合には、直ちに
分岐条件の反転および分岐変位と命令長との入替えを行
なうようなデータ処理装置を提供することを目的とす
る。
ためになされたもので、分岐することが予測される条件
分岐命令がフェッチ,デコードされた場合には、直ちに
分岐条件の反転および分岐変位と命令長との入替えを行
なうようなデータ処理装置を提供することを目的とす
る。
[問題点を解決するための手段] この発明は、命令取出手段が命令を取出し、命令実行手
段が取出された命令をパイプライン処理の原理で実行
し、分岐予測手段が取出された命令により分岐を起こす
か否かを予測し、分岐命令が取出されたとき、入替手段
が分岐予測手段の予測結果に基づいて、分岐先の命令ま
での変位と分岐命令の命令長とを入替えるような分岐予
測機能を有するデータ処理装置において、分岐命令の少
なくとも1つ前に実行される命令によって分岐命令の分
岐予測を行なうように構成したものである。
段が取出された命令をパイプライン処理の原理で実行
し、分岐予測手段が取出された命令により分岐を起こす
か否かを予測し、分岐命令が取出されたとき、入替手段
が分岐予測手段の予測結果に基づいて、分岐先の命令ま
での変位と分岐命令の命令長とを入替えるような分岐予
測機能を有するデータ処理装置において、分岐命令の少
なくとも1つ前に実行される命令によって分岐命令の分
岐予測を行なうように構成したものである。
[作用] この発明における分岐予測機能を有するデータ処理装置
は、分岐予測を分岐命令の1つ前に実行される命令の番
地を用いて行うので、分岐することが予測された場合に
は、その分岐命令をフェッチ,デコードしたとき、直ち
に分岐命令と命令長との入替動作を行なうことができ
る。
は、分岐予測を分岐命令の1つ前に実行される命令の番
地を用いて行うので、分岐することが予測された場合に
は、その分岐命令をフェッチ,デコードしたとき、直ち
に分岐命令と命令長との入替動作を行なうことができ
る。
[発明の実施例] 以下、この発明の一実施例を図について説明する。第1
図はこの発明の一実施例の概略ブロック図である。第2
図は第1図に示す分岐予測機構4の記憶内容を説明する
ための図である。次に、第1図および第2図を参照し
て、この発明の一実施例の構成について説明する。
図はこの発明の一実施例の概略ブロック図である。第2
図は第1図に示す分岐予測機構4の記憶内容を説明する
ための図である。次に、第1図および第2図を参照し
て、この発明の一実施例の構成について説明する。
第1図において、命令レジスタ1と命令デコーダ2と実
行機構3と加算器61とデコード用プログラムカウンタ62
は第5図に示した従来のものと同じものが用いられる。
分岐予測機構4は分岐命令の1つ前に実行される命令の
アドレスに対応して分岐予測ビットを記憶するものであ
る。この分岐予測ビットは命令が実行されたとき、分岐
を起こすのか否かを予測するためのものである。レジス
タ10は命令デコーダ2によってデコードされた命令の命
令長をロードするものであり、レジスタ11は同じく命令
デコーダ2によってデコードされた命令の分岐変位ある
いは命令長をロードするものである。ここで、その命令
が無条件分岐命令または条件分岐命令である場合には、
分岐変位がロードされ、その命令が非分岐命令である場
合には、命令長がロードされる。セレクタ12は分岐予測
機構4から読出された分岐予測ビットおよび命令が非分
岐命令か無条件分岐命令か条件分岐命令かの情報に基づ
いて、レジスタ10の出力とレジスタ11の出力とを切換え
るものである。すなわち、非分岐命令または分岐するこ
とが予測されない条件分岐命令が読出されたときには、
レジスタ10の出力を選択して命令長を加算器61に与え、
無条件分岐命令または分岐することが予測される条件分
岐命令が読出されたときには、レジスタ11の出力を選択
して分岐変位を加算器61に与える。
行機構3と加算器61とデコード用プログラムカウンタ62
は第5図に示した従来のものと同じものが用いられる。
分岐予測機構4は分岐命令の1つ前に実行される命令の
アドレスに対応して分岐予測ビットを記憶するものであ
る。この分岐予測ビットは命令が実行されたとき、分岐
を起こすのか否かを予測するためのものである。レジス
タ10は命令デコーダ2によってデコードされた命令の命
令長をロードするものであり、レジスタ11は同じく命令
デコーダ2によってデコードされた命令の分岐変位ある
いは命令長をロードするものである。ここで、その命令
が無条件分岐命令または条件分岐命令である場合には、
分岐変位がロードされ、その命令が非分岐命令である場
合には、命令長がロードされる。セレクタ12は分岐予測
機構4から読出された分岐予測ビットおよび命令が非分
岐命令か無条件分岐命令か条件分岐命令かの情報に基づ
いて、レジスタ10の出力とレジスタ11の出力とを切換え
るものである。すなわち、非分岐命令または分岐するこ
とが予測されない条件分岐命令が読出されたときには、
レジスタ10の出力を選択して命令長を加算器61に与え、
無条件分岐命令または分岐することが予測される条件分
岐命令が読出されたときには、レジスタ11の出力を選択
して分岐変位を加算器61に与える。
命令デコーダ2の出力には、分岐条件コードレジスタ7
とレジスタ13とレジスタ14とが接続される。分岐条件コ
ードレジスタ7は命令デコーダ2によってデコードされ
た条件分岐命令の分岐条件コードをロードする。レジス
タ13は同じくデコードされた無条件分岐命令および条件
分岐命令の分岐変位あるいは非分岐命令に対しては命令
長をロードし、レジスタ14はデコードされた命令の命令
長をロードする。レジスタ13および14の各出力はセレク
タ15に与えられる。セレクタ15は分岐予測機構の分岐予
測ビットおよび命令が非分岐命令か無条件分岐命令か条
件分岐命令かの情報に基づいて、レジスタ13と14との出
力を切換える。すなわち、非分岐命令または分岐するこ
とが予測されない条件分岐命令または無条件分岐命令で
あれば、レジスタ13にロードされたデータを選択し、分
岐することが予測される条件分岐命令である場合には、
レジスタ14にロードされた命令長を選択する。このセレ
クタ15によって選択された出力は実行機構3に与えられ
る。
とレジスタ13とレジスタ14とが接続される。分岐条件コ
ードレジスタ7は命令デコーダ2によってデコードされ
た条件分岐命令の分岐条件コードをロードする。レジス
タ13は同じくデコードされた無条件分岐命令および条件
分岐命令の分岐変位あるいは非分岐命令に対しては命令
長をロードし、レジスタ14はデコードされた命令の命令
長をロードする。レジスタ13および14の各出力はセレク
タ15に与えられる。セレクタ15は分岐予測機構の分岐予
測ビットおよび命令が非分岐命令か無条件分岐命令か条
件分岐命令かの情報に基づいて、レジスタ13と14との出
力を切換える。すなわち、非分岐命令または分岐するこ
とが予測されない条件分岐命令または無条件分岐命令で
あれば、レジスタ13にロードされたデータを選択し、分
岐することが予測される条件分岐命令である場合には、
レジスタ14にロードされた命令長を選択する。このセレ
クタ15によって選択された出力は実行機構3に与えられ
る。
分岐条件コードレジスタ7は4ビットで構成されてい
て、上位3ビットで分岐条件を表わし、最下位1ビット
でその分岐条件が成立されたときに分岐するのか、それ
とも不成立のときに分岐するのかを表わす。たとえば、
0000はZ(ゼロ)フラグ成立、つまり演算の結果が0と
なると分岐することを表わすのに対して、0001はZフラ
グ不成立、つまり演算結果が0でないと分岐することを
表わす。この分岐条件コードレジスタ7の最下位ビット
の出力はセレクタ9に与えられるとともに、インバータ
8によって反転されてセレクタ9に与えられる。セレク
タ9は分岐することが予測されない条件分岐命令の場合
には、分岐条件コードレジスタ7の最下位ビットを選択
し、分岐することが予測される条件分岐命令であれば、
インバータ8の出力を選択して実行機構3に与える。非
分岐命令または無条件分岐命令の場合には、分岐条件コ
ードレジスタ7にどのようなデータが入っていても、実
行機構3はこのデータを無視する。
て、上位3ビットで分岐条件を表わし、最下位1ビット
でその分岐条件が成立されたときに分岐するのか、それ
とも不成立のときに分岐するのかを表わす。たとえば、
0000はZ(ゼロ)フラグ成立、つまり演算の結果が0と
なると分岐することを表わすのに対して、0001はZフラ
グ不成立、つまり演算結果が0でないと分岐することを
表わす。この分岐条件コードレジスタ7の最下位ビット
の出力はセレクタ9に与えられるとともに、インバータ
8によって反転されてセレクタ9に与えられる。セレク
タ9は分岐することが予測されない条件分岐命令の場合
には、分岐条件コードレジスタ7の最下位ビットを選択
し、分岐することが予測される条件分岐命令であれば、
インバータ8の出力を選択して実行機構3に与える。非
分岐命令または無条件分岐命令の場合には、分岐条件コ
ードレジスタ7にどのようなデータが入っていても、実
行機構3はこのデータを無視する。
第3図は条件分岐命令とアドレスとの関係を説明するた
めの図である。第3図において、番地aは条件分岐命令
の1つ前に実行される命令のアドレスであり、番地a+
xは条件分岐命令のアドレスであり、番地a+x+yは
条件分岐命令の次の命令のアドレスであり、番地a+x
+bは条件分岐命令が分岐する場合の分岐先のアドレス
である。
めの図である。第3図において、番地aは条件分岐命令
の1つ前に実行される命令のアドレスであり、番地a+
xは条件分岐命令のアドレスであり、番地a+x+yは
条件分岐命令の次の命令のアドレスであり、番地a+x
+bは条件分岐命令が分岐する場合の分岐先のアドレス
である。
第4A図および第4B図はこの発明の一実施例の動作を説明
するための図である。次に、第1図ないし第4B図を参照
して、この発明の一実施例の動作について説明する。第
1図において、命令が命令レジスタ1に取込まれてか
ら、実行機構3で実行されるまでの概略を、まず下記の
表1に従い説明する。
するための図である。次に、第1図ないし第4B図を参照
して、この発明の一実施例の動作について説明する。第
1図において、命令が命令レジスタ1に取込まれてか
ら、実行機構3で実行されるまでの概略を、まず下記の
表1に従い説明する。
命令1がまず命令レジスタ1に取込まれる。次に命令1
は命令デコーダ2でデコードされ、条件分岐命令である
ことが判明すると、分岐予測を行なう。分岐すると予測
されると分岐先より命令2を取込み、分岐しないと予測
するとメモリ番地上の続く命令を命令2として取込む。
分岐すると予測すると分岐変位を入替え、条件を反転し
て命令1を実行機構3に移す。ここで実行されて、最終
的にプログラムカウンタが計算されて、その番地がデコ
ーディングプログラムカウンタの示す番地と異なれば、
命令2をキャンセルし命令を取直す。以上が大まかな命
令の流れである。結果的に、分岐予測に失敗した場合
は、デコーディングプログラムカウンタとプログラムカ
ウンタの値が異なって、命令を取直し、成功した場合は
それらが一致して、取直しはしなくてもよくそのまま命
令デコーダ2でデコードされる。そして、命令2は命令
1の実行終了を待って命令デコーダ2へ移る。命令1の
実行結果によっては、命令レジスタ2の命令2をキャン
セルして命令3を命令レジスタ2に取直す。
は命令デコーダ2でデコードされ、条件分岐命令である
ことが判明すると、分岐予測を行なう。分岐すると予測
されると分岐先より命令2を取込み、分岐しないと予測
するとメモリ番地上の続く命令を命令2として取込む。
分岐すると予測すると分岐変位を入替え、条件を反転し
て命令1を実行機構3に移す。ここで実行されて、最終
的にプログラムカウンタが計算されて、その番地がデコ
ーディングプログラムカウンタの示す番地と異なれば、
命令2をキャンセルし命令を取直す。以上が大まかな命
令の流れである。結果的に、分岐予測に失敗した場合
は、デコーディングプログラムカウンタとプログラムカ
ウンタの値が異なって、命令を取直し、成功した場合は
それらが一致して、取直しはしなくてもよくそのまま命
令デコーダ2でデコードされる。そして、命令2は命令
1の実行終了を待って命令デコーダ2へ移る。命令1の
実行結果によっては、命令レジスタ2の命令2をキャン
セルして命令3を命令レジスタ2に取直す。
命令2が分岐命令の場合は、命令デコーダ2でデコード
されて分岐予測が行なわれ、処理は命令1と同様に続
く。
されて分岐予測が行なわれ、処理は命令1と同様に続
く。
以下に、詳細に説明する。
まず、デコード用プログラムカウンタ62の内容がアドレ
ス信号としてアドレスバスに出力され、図示しないメモ
リのある番地から命令が読出されて命令レジスタ1にロ
ードされる。命令レジスタ1にロードされた命令は命令
デコーダ2によってデコードされ、演算指示信号が実行
機構3に与えられるとともに、デコードされた命令の命
令長がレジスタ10および14にロードされる。実行機構3
は与えられた演算指示信号に基づいて実行処理を行な
う。同時に、加算器61はセレクタ12によって選択された
命令長または分岐変位をデコード用プログラムカウンタ
62の内容に加算し、次に実行すべき命令のアドレスを示
すアドレス信号を出力する。このアドレス信号に基づい
て、メモリから次に実行すべき命令が読出されて命令レ
ジスタ1にロードされる。次に、メモリの番地aから条
件分岐命令の1つ前の命令が読出されたものとする。こ
の番地aの命令がフェッチされると、命令はデコードさ
れる。そして、分岐予測機構4に格納されているその命
令のアドレスaに対応する分岐予測ビットによって、次
のa+x番地の命令が分岐するか否かが予測される。こ
こで、予測ビットが分岐することを示している場合に
は、次に番地a+xの命令がフェッチされ、デコードさ
れたとき、その命令が条件分岐命令であることが判明し
たとき、入替機構により分岐変位と命令長とが入替えら
れる。ここで、入替機構はレジスタ10および11,セレク
タ12,レジスタ13および14ならびにセレクタ15を含む概
念上の機構である。分岐予測ビットが分岐することを示
している場合には、セレクタ12はレジスタ11の出力を選
択し、セレクタ15はレジスタ14の出力を選択し、セレク
タ9はインバータ8の出力を選択する。セレクタ12はレ
ジスタ11の出力を選択するので、加算器61は分岐変位b
をデコード用プログラムカウンタ62の内容に加算する。
それによって、その条件分岐命令の分岐先アドレスa+
x+bを指し示すアドレス信号が出力される。このアド
レス信号に基づいて、メモリ上の条件分岐命令の分岐先
から次に実行すべき命令が読出される。すなわち、非分
岐命令または分岐することが予測されない条件分岐命令
では、レジスタ10にロードされている命令長yが加算器
61によってデコード用プログラムカウンタ62の内容に加
算されるが、無条件分岐命令または分岐することが予測
される条件分岐命令の場合には、レジスタ11にロードさ
れた分岐変位bが加算器61によってデコード用プログラ
ムカウンタ62の内容に加算される。一方、セレクタ15は
分岐することが予測される条件分岐命令の場合には、レ
ジスタ14の命令長yを選択し、非分岐命令,無条件分岐
命令または分岐することが予測されない条件分岐命令の
場合には、レジスタ13の出力を選択する。このように、
分岐することが予測される条件分岐命令の命令長と分岐
変位とが入替えられる。
ス信号としてアドレスバスに出力され、図示しないメモ
リのある番地から命令が読出されて命令レジスタ1にロ
ードされる。命令レジスタ1にロードされた命令は命令
デコーダ2によってデコードされ、演算指示信号が実行
機構3に与えられるとともに、デコードされた命令の命
令長がレジスタ10および14にロードされる。実行機構3
は与えられた演算指示信号に基づいて実行処理を行な
う。同時に、加算器61はセレクタ12によって選択された
命令長または分岐変位をデコード用プログラムカウンタ
62の内容に加算し、次に実行すべき命令のアドレスを示
すアドレス信号を出力する。このアドレス信号に基づい
て、メモリから次に実行すべき命令が読出されて命令レ
ジスタ1にロードされる。次に、メモリの番地aから条
件分岐命令の1つ前の命令が読出されたものとする。こ
の番地aの命令がフェッチされると、命令はデコードさ
れる。そして、分岐予測機構4に格納されているその命
令のアドレスaに対応する分岐予測ビットによって、次
のa+x番地の命令が分岐するか否かが予測される。こ
こで、予測ビットが分岐することを示している場合に
は、次に番地a+xの命令がフェッチされ、デコードさ
れたとき、その命令が条件分岐命令であることが判明し
たとき、入替機構により分岐変位と命令長とが入替えら
れる。ここで、入替機構はレジスタ10および11,セレク
タ12,レジスタ13および14ならびにセレクタ15を含む概
念上の機構である。分岐予測ビットが分岐することを示
している場合には、セレクタ12はレジスタ11の出力を選
択し、セレクタ15はレジスタ14の出力を選択し、セレク
タ9はインバータ8の出力を選択する。セレクタ12はレ
ジスタ11の出力を選択するので、加算器61は分岐変位b
をデコード用プログラムカウンタ62の内容に加算する。
それによって、その条件分岐命令の分岐先アドレスa+
x+bを指し示すアドレス信号が出力される。このアド
レス信号に基づいて、メモリ上の条件分岐命令の分岐先
から次に実行すべき命令が読出される。すなわち、非分
岐命令または分岐することが予測されない条件分岐命令
では、レジスタ10にロードされている命令長yが加算器
61によってデコード用プログラムカウンタ62の内容に加
算されるが、無条件分岐命令または分岐することが予測
される条件分岐命令の場合には、レジスタ11にロードさ
れた分岐変位bが加算器61によってデコード用プログラ
ムカウンタ62の内容に加算される。一方、セレクタ15は
分岐することが予測される条件分岐命令の場合には、レ
ジスタ14の命令長yを選択し、非分岐命令,無条件分岐
命令または分岐することが予測されない条件分岐命令の
場合には、レジスタ13の出力を選択する。このように、
分岐することが予測される条件分岐命令の命令長と分岐
変位とが入替えられる。
また、命令デコーダ2によってデコードされた条件分岐
命令は分岐条件コード“0000"を有しているものとす
る。命令デコーダ2によってデコードされた命令の分岐
条件コード“0000"は分岐条件コードレジスタ7にロー
ドされる。この分岐条件コードレジスタ7の上位3ビッ
トは実行機構3に与えられ、最下位1ビットはインバー
タ8によって反転されて、セレクタ9を介して実行機構
3に与えられる。すなわち、分岐条件コード“0000"の
最下位1ビットがインバータ8によって反転され、分岐
条件コード“0001"として実行機構3に与えられる。こ
れはZフラグが立っていなければ分岐することを示して
いる。
命令は分岐条件コード“0000"を有しているものとす
る。命令デコーダ2によってデコードされた命令の分岐
条件コード“0000"は分岐条件コードレジスタ7にロー
ドされる。この分岐条件コードレジスタ7の上位3ビッ
トは実行機構3に与えられ、最下位1ビットはインバー
タ8によって反転されて、セレクタ9を介して実行機構
3に与えられる。すなわち、分岐条件コード“0000"の
最下位1ビットがインバータ8によって反転され、分岐
条件コード“0001"として実行機構3に与えられる。こ
れはZフラグが立っていなければ分岐することを示して
いる。
実行機構3は、図示しないが加算器とプログラムカウン
タとを有していて、プログラムカウンタは条件分岐命令
のアドレスa+xを指定し、加算器はレジスタ14にロー
ドされた命令長yをプログラムカウンタに加算する。一
方、命令レジスタ1にはメモリから条件分岐命令に続い
て実行されるべき命令が読出されてロードされている。
今の場合、条件分岐命令が分岐すると予測されたのであ
り、命令レジスタ1にはメモリ上のアドレスa+x+b
の命令がロードされている。実行機構3でZフラグが立
っていなかった場合には、分岐条件コード“0001"を有
しているので、分岐変位が命令長に置換えられた条件分
岐命令が実行機構3で実行され、アドレスa+x+yに
分岐する。これは、もともとの条件分岐命令に対する分
岐を起こすという予測が結果的に誤っていたことにな
る。このため、命令レジスタ1にロードされていたメモ
リ上のアドレスa+x+bに位置する命令はキャンセル
され、メモリ上のアドレスa+x+yの命令が読出さ
れ、この命令が命令レジスタ1にロードされる。一方、
実行機構3でZフラグが立っていた場合には、分岐条件
コード“0001"を持つ条件分岐命令は実行機構3で実行
されても分岐しない。これは、もともとの条件分岐命令
に対する分岐を起こさないという予測が結果的に正しか
ったことになる。このため、命令レジスタ1にロードさ
れていたメモリ上のアドレスa+x+bに位置する命令
は有効であり、そのまま実行機構3の方へ移され、処理
される。
タとを有していて、プログラムカウンタは条件分岐命令
のアドレスa+xを指定し、加算器はレジスタ14にロー
ドされた命令長yをプログラムカウンタに加算する。一
方、命令レジスタ1にはメモリから条件分岐命令に続い
て実行されるべき命令が読出されてロードされている。
今の場合、条件分岐命令が分岐すると予測されたのであ
り、命令レジスタ1にはメモリ上のアドレスa+x+b
の命令がロードされている。実行機構3でZフラグが立
っていなかった場合には、分岐条件コード“0001"を有
しているので、分岐変位が命令長に置換えられた条件分
岐命令が実行機構3で実行され、アドレスa+x+yに
分岐する。これは、もともとの条件分岐命令に対する分
岐を起こすという予測が結果的に誤っていたことにな
る。このため、命令レジスタ1にロードされていたメモ
リ上のアドレスa+x+bに位置する命令はキャンセル
され、メモリ上のアドレスa+x+yの命令が読出さ
れ、この命令が命令レジスタ1にロードされる。一方、
実行機構3でZフラグが立っていた場合には、分岐条件
コード“0001"を持つ条件分岐命令は実行機構3で実行
されても分岐しない。これは、もともとの条件分岐命令
に対する分岐を起こさないという予測が結果的に正しか
ったことになる。このため、命令レジスタ1にロードさ
れていたメモリ上のアドレスa+x+bに位置する命令
は有効であり、そのまま実行機構3の方へ移され、処理
される。
なお、デコードした結果、無条件分岐命令であれば、直
前の命令による分岐予測にかかわらず、分岐先より命令
をプリフェッチする。デコードした結果、非分岐命令で
あれば、分岐予測にかかわらず、プログラム上の次に位
置する命令をプリフェッチする。
前の命令による分岐予測にかかわらず、分岐先より命令
をプリフェッチする。デコードした結果、非分岐命令で
あれば、分岐予測にかかわらず、プログラム上の次に位
置する命令をプリフェッチする。
[発明の効果] 以上のように、この発明によれば、分岐予測を分岐命令
の1つ前に実行される命令の番地を用いて行なうので、
分岐することが予測された場合には、その分岐命令をフ
ェッチおよびデコードしたとき、直ちに分岐変位と命令
長との入替動作を行なうことができるため、より高速な
データ処理装置が実現できる。
の1つ前に実行される命令の番地を用いて行なうので、
分岐することが予測された場合には、その分岐命令をフ
ェッチおよびデコードしたとき、直ちに分岐変位と命令
長との入替動作を行なうことができるため、より高速な
データ処理装置が実現できる。
第1図はこの発明の一実施例の概略ブロック図である。
第2図は第1図に示す分岐予測機構の記憶内容を示す図
である。第3図は条件分岐命令とアドレスとの関係を説
明するための図である。第4A図および第4B図はこの発明
の一実施例の動作を説明するための図である。第5図は
従来の分岐予測機能を有するデータ処理装置の概略ブロ
ック図である。第6図は従来の分岐予測機能を説明する
ための図である。 図において、1は命令レジスタ、2は命令デコーダ、3
は実行機構、4は分岐予測機構、7は分岐条件コードレ
ジスタ、8はインバータ、9,12および15はセレクタ、1
0,11,13および14はレジスタ、61は加算器、62はデコー
ド用プログラムカウンタを示す。 なお、各図中、同一符号は同一または相当する部分を示
す。
第2図は第1図に示す分岐予測機構の記憶内容を示す図
である。第3図は条件分岐命令とアドレスとの関係を説
明するための図である。第4A図および第4B図はこの発明
の一実施例の動作を説明するための図である。第5図は
従来の分岐予測機能を有するデータ処理装置の概略ブロ
ック図である。第6図は従来の分岐予測機能を説明する
ための図である。 図において、1は命令レジスタ、2は命令デコーダ、3
は実行機構、4は分岐予測機構、7は分岐条件コードレ
ジスタ、8はインバータ、9,12および15はセレクタ、1
0,11,13および14はレジスタ、61は加算器、62はデコー
ド用プログラムカウンタを示す。 なお、各図中、同一符号は同一または相当する部分を示
す。
Claims (1)
- 【請求項1】命令を取出す命令取出手段と、 前記命令取出手段によって取出された命令をパイプライ
ン処理の原理で実行する命令実行手段と、 前記命令取出手段によって取出された命令により分岐を
起こすか否かを予測する分岐予測手段と、 前記命令取出手段によって分岐命令が取出されたとき、
前記分岐予測手段の予測結果に基づいて、分岐先の命令
までの変位と分岐命令の命令長とを入替える入替手段と
分岐条件を反転する手段とを備えた分岐予測機能を有す
るデータ処理装置において、 前記分岐予測手段は、分岐命令の少なくとも1つ前に実
行される命令によって分岐命令の分岐予測を行なうよう
にした、分岐予測機能を有するデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62164344A JPH0760385B2 (ja) | 1987-06-30 | 1987-06-30 | 分岐予測機能を有するデ−タ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62164344A JPH0760385B2 (ja) | 1987-06-30 | 1987-06-30 | 分岐予測機能を有するデ−タ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS648445A JPS648445A (en) | 1989-01-12 |
JPH0760385B2 true JPH0760385B2 (ja) | 1995-06-28 |
Family
ID=15791384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62164344A Expired - Fee Related JPH0760385B2 (ja) | 1987-06-30 | 1987-06-30 | 分岐予測機能を有するデ−タ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0760385B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2629613B2 (ja) * | 1994-09-02 | 1997-07-09 | 日本電気株式会社 | 分岐予測装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS55143653A (en) * | 1979-04-25 | 1980-11-10 | Nec Corp | Branch prefetch computer |
JPS58123141A (ja) * | 1982-01-19 | 1983-07-22 | Nec Corp | 高速計数分岐実行方式 |
-
1987
- 1987-06-30 JP JP62164344A patent/JPH0760385B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPS648445A (en) | 1989-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6647489B1 (en) | Compare branch instruction pairing within a single integer pipeline | |
US6662295B2 (en) | Method and system dynamically presenting the branch target address in conditional branch instruction | |
US4858104A (en) | Preceding instruction address based branch prediction in a pipelined processor | |
US6338136B1 (en) | Pairing of load-ALU-store with conditional branch | |
JP3658101B2 (ja) | データ処理装置 | |
US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
EP0471191B1 (en) | Data processor capable of simultaneous execution of two instructions | |
JPH0545985B2 (ja) | ||
EP0094535B1 (en) | Pipe-line data processing system | |
US5418917A (en) | Method and apparatus for controlling conditional branch instructions for a pipeline type data processing apparatus | |
EP0093430B1 (en) | Pipeline data processing system | |
EP0133477A2 (en) | Pipeline-controlled type information processing system | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
JP3578883B2 (ja) | データ処理装置 | |
JPH07219769A (ja) | マイクロプロセッサ | |
US5440704A (en) | Data processor having branch predicting function | |
JPH0760385B2 (ja) | 分岐予測機能を有するデ−タ処理装置 | |
US5361338A (en) | Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand | |
US5269008A (en) | Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer | |
JPH0760386B2 (ja) | 分岐予測機能を有するデータ処理装置 | |
JP2778610B2 (ja) | パイプライン演算制御方法およびシステム | |
JP3568737B2 (ja) | 条件実行命令を備えるマイクロプロセッサ | |
JPS62159230A (ja) | 命令先取り装置 | |
JPH0793151A (ja) | 命令供給装置 | |
JP2503223B2 (ja) | 先行制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |