JP2000322257A - 条件分岐命令の投機的実行制御方法 - Google Patents

条件分岐命令の投機的実行制御方法

Info

Publication number
JP2000322257A
JP2000322257A JP11127888A JP12788899A JP2000322257A JP 2000322257 A JP2000322257 A JP 2000322257A JP 11127888 A JP11127888 A JP 11127888A JP 12788899 A JP12788899 A JP 12788899A JP 2000322257 A JP2000322257 A JP 2000322257A
Authority
JP
Japan
Prior art keywords
branch
instruction
conditional
prediction
speculative execution
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
Application number
JP11127888A
Other languages
English (en)
Inventor
Atsushi Torii
淳 鳥居
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
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP11127888A priority Critical patent/JP2000322257A/ja
Publication of JP2000322257A publication Critical patent/JP2000322257A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 投機的実行機能を備えるパイプラインプロセ
ッサにおいて、分岐予測失敗による消費電力効率の悪化
を防止するとともに、状態回復用ハードウェアを簡単化
した場合にも性能に対する影響を抑える。 【解決手段】 分岐予測が当たりにくい条件分岐命令を
判断し(ステップS102)、分岐予測が当たりにくい
条件分岐命令については後続命令の投機的実行を行わ
ず、分岐条件が確定するまで後続命令の実行を待機する
(ステップS116)。分岐条件検証結果を受け取った
後(ステップS117)、分岐条件が成立したかどうか
を判定し(ステップS118)、分岐条件が成立してい
れば条件分岐命令の次アドレスの命令から実行し(ステ
ップS109)、分岐条件が成立していなければ分岐飛
び先アドレスの命令から実行する(ステップS11
5)。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は条件分岐命令の投機
的実行制御方法に関し、特にパイプライン構造を採用し
ているマイクロプロセッサ(以下、パイプラインプロセ
ッサという)における条件分岐命令の投機的実行制御方
法に関する。
【0002】
【従来の技術】近年、高性能のパイプラインプロセッサ
は、1サイクルに複数の命令を同時に実行するスーパス
カラ機能を備え、命令レベルの並列処理を行うことによ
って、性能向上を実現している。さらに、命令レベルの
並列処理のさらなる向上のために、プログラムコードの
非順序実行(out-of-order execution)を導入してい
る。非順序実行とは、プログラムコードの順序に拘ら
ず、計算に必要なデータの揃った命令から実行を行うも
のである。さらに、実行可能な命令を増やすために、レ
ジスタの逆依存性などを解消するレジスタリネーミング
(register renaming),条件分岐命令を挟んでの非順
序実行を実現する分岐予測および投機的実行(speculat
ive execution)などの高度な機能が導入されている。
【0003】しかしながら、分岐予測および投機的実行
のような高度な命令実行機能を用いたときにも、分岐予
測が失敗した場合には、投機的実行が取り消されてしま
い(キャンセルされてしまい)、性能向上が制約されて
しまうという問題が生じる。分岐予測の手法は、条件分
岐命令に分岐条件成否確率情報を埋め込み、この分岐条
件成否確率情報に基づいて分岐予測を行う静的な分岐予
測手法と、分岐条件検証結果を履歴として記憶しておく
分岐予測テーブル(BHT:Branch History Table)
を用意して、分岐予測テーブルの分岐条件検証結果の履
歴に基づいて分岐予測を行う動的な分岐予測手法との2
つに大別される。
【0004】静的な分岐予測手法は、MIPS社のR4
000プロセッサ等で採用されているbranch likely命
令がその例として挙げられる。しかしながら、静的な分
岐予測、特にコンパイラによって条件分岐命令の分岐予
測を行うことは難しいという問題がある。
【0005】一方、動的な分岐予測手法は、近年の高性
能のパイプラインプロセッサのほとんど全てが採用して
いる。最も一般的な動的な分岐予測手法として、図10
に示すような4状態を2ビットで表し、分岐条件の確定
に応じて次の予測状態が決まる2ビット予測方式が挙げ
られる。図10では、強い成立予測状態21,弱い成立
予測状態22,弱い不成立予測状態23,および強い不
成立予測状態24の4状態で分岐予測を行い、分岐条件
が確定した時点で次の予測状態に遷移する。
【0006】図12は、分岐予測状態を保持する分岐予
測テーブルを用いて条件分岐命令の命令アドレスに依存
した分岐予測を行う分岐予測ユニットの一例を示す回路
ブロック図である。この分岐予測ユニットは、分岐予測
テーブル41と、アドレス加算器42aおよび42b
と、予測成否判定・次予測状態決定論理43と、分岐予
測管理テーブル44と、アドレスセレクタ45a, 45
b, 45cとから構成されている。なお、図12中、符
号11は条件分岐命令の内容信号線、16は分岐条件検
証結果信号線、17は後続命令取消要求信号線、18は
フェッチ要求アドレス信号線、20は条件分岐命令の命
令アドレス信号線をそれぞれ示す。
【0007】このような分岐予測ユニットでは、条件分
岐命令がフェッチされると、その条件分岐命令の命令ア
ドレス(プログラムカウンタ値)に対応する分岐予測テ
ーブル41の1エントリが分岐予測状態として読み出さ
れ、その分岐予測状態に応じて分岐予測を行う。この分
岐予測に従って、条件分岐命令の内容信号線11から計
算した分岐条件成立時のアドレスか分岐条件不成立時の
アドレスかがアドレスセレクタ45aで選択され、さら
に分岐予測アドレスとしてアドレスセレクタ45cにお
いても選択が行われ、フェッチ要求アドレスとして信号
線18を介して出力され、次の命令フェッチに用いられ
る。
【0008】一方、分岐予測管理テーブル44には、テ
ーブルインデックスアドレス,分岐予測状態および分岐
予測失敗時の回復アドレスが格納される。分岐予測失敗
時の回復アドレスとしては、アドレスセレクタ45bに
よってアドレスセレクタ45aとは逆側のアドレスが選
択される。
【0009】さて、条件分岐命令の実行が進み分岐条件
が確定されると、分岐条件検証結果が信号線16を介し
て分岐予測ユニットに通知される。すると、予測成否判
定・次予測状態決定論理43により、分岐予測の成否が
判定され、併せて次の分岐予測状態が決定され、分岐予
測テーブル41に書き戻される。
【0010】分岐予測が失敗した場合には、さらに分岐
予測管理テーブル44に格納された分岐予測失敗時の回
復アドレスがアドレスセレクタ45cで選択され、フェ
ッチ要求アドレスとして信号線18を介して出力され、
正しい命令フェッチに用いられる。
【0011】以上のような分岐予測手法が最も一般的な
動的な分岐予測手法であるが、履歴を記憶する分岐予測
テーブル41の容量には限りがあるので、複数の条件分
岐命令が1エントリに競合して格納される可能性があ
る。この場合は、履歴が正しく管理できなくなり、分岐
予測成功率の低下を招く。これを防ぐために、G−sh
are等の高度な分岐予測手法の提案も行われている
(Scott McFarling, Combining Branch Predictors, We
stern Research Laboratory Technical Note TN-36)。
また、動的な分岐予測手法およびその効果については、
C, H. Perleberg andA, J Smith, Branch Target Buffe
r Design and Optimization, IEEE Trans. onComputers
Vol.42 No.4 pages396-412, April 1993などにまとめ
られている。
【0012】ところで、分岐予測が失敗した場合には、
投機的に実行した命令の実行を取り消すための回復処理
が必要になる。特に、非順序実行(out-of-order)型の
スーパースカラ機能を備えるパイプラインプロセッサに
おける回復処理は、分岐命令の直後の実行状態を退避用
リソースに保持して、分岐予測失敗時には退避用リソー
スから一度に実行状態を元に戻すか、投機的実行の命令
による結果を退避用リソースに格納し、分岐予測が成功
した場合には退避用リソースから本来の実行用リソース
に転送し、分岐予測が失敗した場合には退避用リソース
の内容を破棄するといった処理が行われる。例えば、一
般的なスーパースカラ機能を備えるパイプラインプロセ
ッサでは、ROB(ReOrder Buffer)等と呼ばれるリソ
ースがこれらの役割を担っている。
【0013】なお、先行技術文献として、特開平07−
200293号公報,特開平10−133873号公報
等がある。特開平07−200293号公報に開示され
た投機的実行制御機能を有するプロセッサは、先行命令
の実行サイクルが延びることが検出された場合に投機的
実行を抑止するようにしたものであり、本発明とは投機
的実行を抑止する契機を異にするものである。また、特
開平10−133873号公報に開示された条件分岐命
令を投機的に実行するための方法は、複数の分岐予測方
式のうちの選択された1つを使用して条件分岐命令を投
機的に実行するためのものであり、投機的実行を抑止す
る本発明とは構成が異なっている。
【0014】
【発明が解決しようとする課題】上述した従来の分岐予
測手法では、分岐予測失敗時に生じる性能低下を最小限
に抑えるために、非常に高度な状態回復用ハードウェア
を用意する必要が生じるという問題点があった。その理
由は、条件分岐命令のうちには分岐予測が当たりにくい
ものが存在するにもかかわらず、必ず分岐条件が成立す
るかしないかの二者択一を行って後続命令の投機的なフ
ェッチおよび実行を行うため、分岐予測が当たりにくい
条件分岐命令に対しても投機的実行を行ってしまってい
たからである。
【0015】また、分岐予測が当たりにくい条件分岐命
令に対して分岐予測をして失敗した場合にも、投機的実
行およびその状態回復のための電力が余計にかかってお
り、電力効率の悪化を引き起こしているという問題点が
あった。
【0016】本発明の目的は、投機的実行機能を備える
パイプラインプロセッサにおいて、分岐予測失敗による
消費電力効率の悪化を未然に防止し、状態回復用ハード
ウェアを簡単化した場合にも性能に対する影響を抑える
ことができるようにした条件分岐命令の投機的実行制御
方法を提供することにある。
【0017】
【課題を解決するための手段】本発明の条件分岐命令の
投機的実行制御方法は、条件分岐命令をフェッチした際
に、分岐条件成立/分岐条件不成立を分岐予測し、分岐
予測状態に応じて分岐飛び先アドレスに位置する命令あ
るいは条件分岐命令の次アドレスに位置する命令から後
続命令を投機的にフェッチし、これらの命令を投機的に
実行し、当該条件分岐命令の分岐条件が確定した後に分
岐予測失敗であった場合には投機的に実行していた命令
の実行を取り消す投機的実行機能を備えるパイプライン
プロセッサにおいて、条件分岐命令に対して、分岐条件
成立を分岐予測する,分岐条件不成立を分岐予測する,
または分岐条件確定を待機するという処理のいずれかを
選択可能とし、分岐条件確定待機が選択されたときに
は、条件分岐命令の分岐条件が確定するまで当該条件分
岐命令の後続命令の投機的実行を抑止することを特徴と
する。
【0018】また、本発明の条件分岐命令の投機的実行
制御方法は、条件分岐命令に前記分岐条件確定待機をす
る/しないを指定する投機的実行抑止情報を付加し、投
機的実行抑止情報が有効である条件分岐命令をフェッチ
したときには、条件分岐命令の分岐条件が確定するまで
当該条件分岐命令の後続命令の投機的実行を抑止するこ
とを特徴とする。
【0019】さらに、本発明の条件分岐命令の投機的実
行制御方法は、条件分岐命令の分岐条件成立/分岐条件
不成立の履歴を履歴管理用ハードウェアに保持し、該履
歴管理用ハードウェアに保持された履歴を参照すること
によってフェッチした条件分岐命令の分岐条件成立/分
岐条件不成立を分岐予測し、分岐予測状態に応じて分岐
飛び先アドレスに位置する命令あるいは条件分岐命令の
次アドレスに位置する命令から後続命令を投機的にフェ
ッチし、これらの命令を投機的に実行し、当該条件分岐
命令の分岐条件が確定した後に分岐予測失敗であった場
合には投機的に実行していた命令の実行を取り消す投機
的実行機能を備えるパイプラインプロセッサにおいて、
条件分岐命令に対して、分岐条件成立を分岐予測する,
分岐条件不成立を分岐予測する,または分岐条件確定を
待機するという処理のいずれかを選択可能とするととも
に、分岐条件確定待機が選択されたときには、条件分岐
命令の分岐条件が確定するまで当該条件分岐命令の後続
命令の投機的実行を抑止するとともに、前記履歴管理用
ハードウェアから分岐予測状態として分岐条件確定待機
状態も併せて出力させ、分岐条件確定待機状態が出力さ
れたときにも、条件分岐命令の分岐条件が確定するまで
当該条件分岐命令の後続命令の投機的実行を抑止するこ
とを特徴とする。
【0020】さらにまた、本発明の条件分岐命令の投機
的実行制御方法は、前記履歴管理用ハードウェアに保持
された履歴の分岐予測状態が、分岐条件確定待機状態の
場合には条件分岐命令の分岐条件が確定するまで当該条
件分岐命令の後続命令の投機的実行を抑止し、分岐条件
確定待機状態以外の場合には分岐条件成立/分岐条件不
成立を分岐予測することを特徴とする。
【0021】また、本発明の条件分岐命令の投機的実行
制御方法は、前記投機的実行抑止情報に分岐条件確定待
機と指定された条件分岐命令をフェッチしたときでも、
前記履歴管理用ハードウェアに保持された履歴の分岐予
測状態が、分岐条件確定待機状態の場合には条件分岐命
令の分岐条件確定まで当該条件分岐命令の後続命令の投
機的実行を抑止し、分岐条件確定待機状態以外の場合に
は投機的実行を行うことを特徴とする。
【0022】さらに、本発明の条件分岐命令の投機的実
行制御方法は、前記パイプラインプロセッサに複数の実
行モードを用意し、特定モードの場合には条件分岐命令
の分岐条件確定待機を選択可能とし、特定モード以外の
場合には条件分岐命令の分岐条件確定待機を選択不能と
したことを特徴とする。
【0023】本発明の条件分岐命令の投機的実行制御方
法では、分岐予測が当たりにくい条件分岐命令を動的も
しくは静的に判定し、分岐予測が当たりにくいと判定さ
れた条件分岐命令は分岐条件が確定するまで、後続命令
の投機的なフェッチおよび実行を行わないという処理を
加える。これによって、投機的実行取消回数の低減を図
り、電力効率の向上を図るものである。併せて、投機的
実行取消回数が減ることから、状態回復を高速に行う必
要性が薄らぐことにより、状態回復用ハードウェアの簡
単化を図るものである。
【0024】本発明の条件分岐命令の投機的実行制御方
法では、条件分岐命令をフェッチした際に、その処理を
以下の3種類から選択するようにする。 1. 分岐条件成立予測:分岐条件成立を仮定して分岐成
立時飛び先プログラムカウンタ相対アドレス(以下、分
岐飛び先アドレスという)からの命令の投機的なフェッ
チおよび実行を進める。 2. 分岐条件不成立予測:分岐条件不成立を仮定して条
件分岐命令の次のアドレスからの命令の投機的なフェッ
チおよび実行を進める。 3. 分岐条件確定待機:分岐条件が確定するまで後続命
令の実行を待機する。
【0025】
【発明の実施の形態】以下、図面を参照して本発明をよ
り具体的に詳述するが、以下の開示は本発明の一実施の
形態にすぎず、本発明の技術的範囲を何ら限定するもの
ではない。
【0026】(1) 第1の実施の形態 図1は、本発明の第1の実施の形態に係る条件分岐命令
の投機的実行制御方法の処理手順を示すフローチャート
である。本実施の形態に係る条件分岐命令の投機的実行
制御方法は、条件分岐命令フェッチステップS101
と、分岐予測当たりにくい条件分岐命令判定ステップS
102と、分岐条件成立分岐予測判定ステップS103
と、投機的実行継続ステップS104と、分岐条件検証
結果受け取りステップS105と、分岐予測成功判定ス
テップS106と、分岐確定実行継続ステップS107
と、投機的実行取消ステップS108と、条件分岐命令
の次命令からの実行ステップS109と、条件分岐命令
の次命令からの投機的実行継続ステップS110と、分
岐条件検証結果受け取りステップS111と、分岐予測
成功判定ステップS112と、分岐確定実行継続ステッ
プS113と、投機的実行取消ステップS114と、分
岐飛び先命令からの実行ステップS115と、分岐条件
確定待機ステップS116と、分岐条件検証結果受け取
りステップS117と、分岐条件成立判定ステップS1
18とからなる。
【0027】本発明の第1の実施の形態に係る条件分岐
命令の投機的実行制御方法では、条件分岐命令をフェッ
チすると(ステップS101)、分岐予測が当たりにく
い条件分岐命令かどうかを判断し(ステップS10
2)、分岐予測が当たりにくい条件分岐命令でない場合
には、分岐条件成立と分岐予測されたかどうかを判断し
(ステップS103)、分岐条件成立と分岐予測された
場合には、分岐飛び先アドレスの命令から投機的実行を
継続する(ステップS104)。この後、分岐条件検証
結果を受け取ると(ステップS105)、分岐予測が成
功したかどうかを判断し(ステップS106)、分岐予
測が成功した場合には、分岐条件を確定し実行を継続す
る(ステップS107)。ステップS106で分岐予測
が成功しなかった場合には、投機的実行を取り消し(ス
テップS108)、条件分岐命令の次アドレスの命令か
ら実行を開始する(ステップS109)。ステップS1
03で分岐条件成立と分岐予測されなかった場合には、
分岐命令の次アドレスの命令から投機的実行を継続する
(ステップS110)。この後、分岐条件検証結果を受
け取ると(ステップS111)、分岐予測が成功かどう
かを判断し(ステップS112)、分岐予測が成功した
場合には、分岐条件を確定し実行を継続する(ステップ
S113)。ステップS112で分岐予測が成功しなけ
れば、投機的実行を取り消し(ステップS114)、分
岐飛び先アドレスの命令から実行を再開する(ステップ
S115)。一方、ステップS102で分岐予測が当た
りにくい条件分岐命令であると判断された場合、分岐条
件確定まで待機させ(ステップS116)、分岐条件検
証結果を受け取ると(ステップS117)、分岐条件が
成立していれば(ステップS118ではい)、分岐飛び
先アドレスの命令から実行を再開する(ステップS11
5)。分岐条件が成立していなければ(ステップS11
8でいいえ)、条件分岐命令の次アドレスの命令から実
行を再開する(ステップS109)。
【0028】ここで、第1の実施の形態に係る条件分岐
命令の投機的実行制御方法の処理手順を具体的に説明す
るために、図2に示すパイプラインステージを持った簡
単なパイプラインプロセッサを仮定する。図2で示した
パイプラインステージは、命令フェッチ(IF: Instru
ction Fetch),デコード発行(RD: Register & Deco
de),演算(ALU: Arithmetic Logic Unit),メモ
リアクセス(MEM: Memory Access),およびライト
バック(WB: Write Back)の5段から構成される。
【0029】図3は、図2に示したパイプラインステー
ジを持つパイプラインプロセッサの一例を示す回路ブロ
ック図である。このパイプラインプロセッサは、命令キ
ャッシュ1と、分岐予測ユニット2と、命令デコード発
行ユニット3と、レジスタファイル4と、ALU (Ari
thmetic Logic Unit)5と、データキャッシュ6と、分
岐検証ユニット7と、パイプラインレジスタ8とから、
その主要部が構成されている。なお、図3中、符号9は
命令コード信号線、10はレジスタアドレス信号線、1
1は条件分岐命令の内容信号線、12は制御コード信号
線、13はレジスタ読み出し値信号線、14はレジスタ
書き込み値信号線、15は即値データ信号線、16は分
岐条件検証結果信号線、17は後続命令取消要求信号
線、18はフェッチ要求アドレス信号線、19は後続命
令フェッチ発行抑止信号線、20は条件分岐命令の命令
アドレス(プログラムカウンタ値)信号線をそれぞれ示
す。
【0030】本例のパイプラインプロセッサでは、図2
に示したパイプラインステージ間にパイプラインレジス
タ8が配置され、命令デコード発行ユニット3によって
命令がデコードされ、命令毎に動作を指定した制御コー
ドを通知する制御コード信号線12,命令で参照するレ
ジスタファイル4のアドレスを指定したレジスタアドレ
ス信号線10,命令で直に指定された演算用の数値を格
納する即値データ信号線15に必要な信号が生成され
る。
【0031】分岐予測ユニット2は、条件分岐命令の分
岐条件の成否を予測する。また、分岐予測ユニット2
は、分岐条件検証結果と先の分岐予測との比較を行う。
ここで、分岐予測が失敗した場合には、後続命令取消要
求を信号線17を介して命令デコード発行ユニット3の
前段および後段に位置するパイプラインレジスタ8に出
力する。これにより、各パイプラインレジスタ8に格納
されていた値がリセットされて、後続命令の投機的実行
が取り消されることになる。
【0032】図4は、分岐予測ユニット2の内部構造の
一例を示す回路ブロック図である。この分岐予測ユニッ
ト2は、分岐予測テーブル41と、アドレス加算器42
aおよび42bと、予測成否判定・次予測状態決定論理
43と、分岐予測管理テーブル44と、アドレスセレク
タ45a, 45b, 45cと、予測状態比較論理46とか
ら構成される。なお、図4中、符号11は条件分岐命令
の内容信号線、16は分岐条件検証結果信号線、17は
後続命令取消要求信号線、18はフェッチ要求アドレス
信号線、19は後続命令フェッチ発行抑止信号線、20
は条件分岐命令の命令アドレス(プログラムカウンタ
値)信号線をそれぞれ示す。
【0033】分岐予測管理テーブル44は、条件分岐命
令の命令アドレス(テーブルインデックス)と、分岐予
測テーブル41から引いた分岐予測状態と、分岐予測状
態に応じてアドレスセレクタ45bで選択される分岐予
測失敗時の回復アドレスとを格納する。この分岐予測失
敗時の回復アドレスとしては、アドレスセレクタ45a
で選択されなかった方の値がアドレスセレクタ45bで
選択される。
【0034】予測状態比較論理46は、分岐予測テーブ
ル41から引かれた分岐予測状態に応じて後続命令の投
機的実行を行うか否かを判断する論理である。例えば、
分岐予測状態を図10に示す4状態で表す場合には、表
1に示す論理によって後続命令フェッチ発行抑止信号線
19を有効にする。なお、後続命令フェッチ発行抑止信
号線19は、条件分岐命令の分岐成否を分岐予測してか
ら分岐条件が確定するまでの間しか有効にはならない。
【0035】
【表1】
【0036】命令キャッシュ1および命令デコード発行
ユニット3は、後続命令フェッチ発行抑止信号線19が
有効な場合には、条件分岐命令の後続命令のフェッチお
よび発行を抑止し、後続命令の投機的実行を行わない。
【0037】分岐検証ユニット7は、条件分岐命令の実
行が進んで分岐条件が確定すると、分岐条件検証結果を
信号線16を介して分岐予測ユニット2に通知する。
【0038】この分岐条件検証結果信号線16の論理
を、表2に示す。
【0039】
【表2】
【0040】分岐予測ユニット2では、予測成否判定・
次予測状態決定論理43が、分岐条件検証結果を入力し
て分岐予測の成否を判定する。併せて、予測成否判定・
次予測状態決定論理43は、次の分岐予測状態を決定
し、分岐予測テーブル41に書き戻す。
【0041】分岐予測が失敗した場合には、予測成否判
定・次予測状態決定論理43は、さらに、アドレスセレ
クタ45cに分岐予測管理テーブル44に格納されてい
る分岐予測失敗時の回復アドレスを選択させ、フェッチ
要求アドレスとして信号線18を介して命令キャッシュ
1に送出させる。
【0042】また、予測成否判定・次予測状態決定論理
43は、条件分岐命令を予測して確定するまでの間、そ
の旨を分岐予測比較論理46に通知している。
【0043】次に、このような第1の実施の形態に係る
条件分岐命令の投機的実行制御方法の処理手順を、図1
ないし図4を参照しながら詳しく説明する。
【0044】条件分岐命令がフェッチされると(ステッ
プS101)、命令キャッシュ1は、条件分岐命令の命
令アドレスを信号線20を介して分岐予測ユニット2に
送出するとともに、条件分岐命令の内容を信号線11を
介して分岐予測ユニット2に送出する。
【0045】分岐予測ユニット2は、命令キャッシュ1
から信号線20を介して条件分岐命令の命令アドレスを
入力するとともに信号線11を介して条件分岐命令の内
容を入力すると、分岐予測テーブル41から分岐予測状
態を出力する。次に、分岐予測ユニット2は、分岐予測
管理テーブル44から分岐予測状態を引くとともに、分
岐予測状態が強い成立予測状態21または弱い成立予測
状態22であれば、アドレスセレクタ45aにより条件
分岐命令の分岐飛び先アドレスをアドレスセレクタ45
cに送出し、アドレスセレクタ45bにより条件分岐命
令の次アドレスを分岐予測失敗時の回復アドレスとして
分岐予測管理テーブル44に格納する。
【0046】次に、分岐予測ユニット2は、予測成否判
定・次予測状態決定論理43により、分岐予測管理テー
ブル44から引かれた分岐予測状態に基づいて条件分岐
命令が分岐予測が当たりにくい条件分岐命令かどうかを
判断する(ステップS102)。詳しくは、分岐予測状
態が弱い成立予測状態22または弱い不成立予測状態2
3であれば、分岐予測が当たりにくい条件分岐命令であ
ると判断し、それ以外であれば、分岐予測が当たりにく
い条件分岐命令でないと判断する。
【0047】ステップS102で分岐予測が当たりにく
い条件分岐命令ではないと判断された場合には、分岐予
測ユニット2は、予測成否判定・次予測状態決定論理4
3により、分岐予測管理テーブル44から引かれた分岐
予測状態に基づいて分岐条件成立と分岐予測されたかど
うかを判断する(ステップS103)。
【0048】ステップS103で分岐条件成立と分岐予
測された場合には、分岐予測ユニット2は、予測成否判
定・次予測状態決定論理43により、アドレスセレクタ
45cから条件分岐命令の分岐飛び先アドレスを信号線
18を介してフェッチ要求アドレスとして命令キャッシ
ュ1に送出して、分岐飛び先アドレスの命令からの投機
的実行を継続させる(ステップS104)。
【0049】分岐検証ユニット7は、条件分岐命令の実
行が進んで分岐条件が確定すると、条件分岐命令で指定
された分岐条件を制御コードとして命令デコード発行ユ
ニット3から信号線12を介して受け取るとともに、条
件判定に必要なレジスタの値をレジスタファイル4から
信号線13を介して受け取り、分岐条件を検証して、分
岐条件検証結果を信号線16を介して分岐予測ユニット
2に通知する。
【0050】分岐予測ユニット2は、分岐検証ユニット
7からの分岐条件検証結果を受け取ると(ステップS1
05)、予測成否判定・次予測状態決定論理43によ
り、分岐条件検証結果と分岐予測管理テーブル44の分
岐予測状態とを比較して分岐予測が成功したかどうかを
判断する(ステップS106)。
【0051】ステップS106で分岐予測が成功したと
判断された場合には、分岐予測ユニット2は、予測成否
判定・次予測状態決定論理43により、アドレスセレク
タ45cから分岐飛び先アドレス以降の命令アドレスを
信号線18を介してフェッチ要求アドレスとして命令キ
ャッシュ1に送出して実行を継続させる(ステップS1
07)。
【0052】ステップS106で分岐予測が成功しなか
ったと判断された場合には、分岐予測ユニット2は、予
測成否判定・次予測状態決定論理43により、後続命令
取消要求を信号線17を介して命令デコード発行ユニッ
ト3の前段および後段に位置するパイプラインレジスタ
8に送出して投機的実行を取り消す(ステップS10
8)。
【0053】次に、分岐予測ユニット2は、予測成否判
定・次予測状態決定論理43により、分岐予測管理テー
ブル44に分岐予測失敗時の回復アドレスとして格納さ
れている条件分岐命令の次命令のアドレスをアドレスセ
レクタ45cから信号線18を介してフェッチ要求アド
レスとして命令キャッシュ1に送出し、条件分岐命令の
次アドレスの命令からの実行を再開させる(ステップS
109)。
【0054】一方、ステップS103で分岐条件不成立
と分岐予測された場合には、分岐予測ユニット2は、予
測成否判定・次予測状態決定論理43により、アドレス
セレクタ45cから条件分岐命令の次アドレスをフェッ
チ要求アドレスとして信号線18を介して命令キャッシ
ュ1に送出し、条件分岐命令の次アドレスの命令から投
機的実行を継続させる(ステップS110)。
【0055】分岐検証ユニット7は、条件分岐命令の実
行が進んで分岐条件が確定すると、条件分岐命令で指定
された分岐条件を制御コードとして命令デコード発行ユ
ニット3から信号線12を介して受け取るとともに、条
件判定に必要なレジスタの値をレジスタファイル4から
信号線13を介して受け取り、分岐条件を検証して、分
岐条件検証結果を信号線16を介して分岐予測ユニット
2に通知する。
【0056】分岐予測ユニット2は、分岐検証ユニット
7からの分岐条件検証結果を受け取ると(ステップS1
11)、予測成否判定・次予測状態決定論理43によ
り、分岐条件検証結果と分岐予測管理テーブル44の分
岐予測状態とを比較して分岐予測が成功かどうかを判断
する(ステップS112)。
【0057】ステップS112で分岐予測が成功したと
判断された場合には、分岐予測ユニット2は、予測成否
判定・次予測状態決定論理43により、アドレスセレク
タ45cから分岐飛び先アドレス以降の命令アドレスを
フェッチ要求アドレスとして信号線18を介して命令キ
ャッシュ1に送出して実行を継続させる(ステップS1
13)。
【0058】ステップS112で分岐予測が成功しなか
ったと判断された場合には、分岐予測ユニット2は、予
測成否判定・次予測状態決定論理43により、後続命令
取消要求を信号線17を介して命令デコード発行ユニッ
ト3の前段および後段に位置するパイプラインレジスタ
8に送出して投機的実行を取り消す(ステップS11
4)。
【0059】次に、分岐予測ユニット2は、予測成否判
定・次予測状態決定論理43により、分岐予測管理テー
ブル44に分岐予測失敗時の回復アドレスとして格納さ
れている条件分岐命令の分岐飛び先命令のアドレスをア
ドレスセレクタ45cから信号線18を介してフェッチ
要求アドレスとして命令キャッシュ1に送出し、条件分
岐命令の分岐飛び先アドレスの命令から実行を再開させ
る(ステップS115)。
【0060】他方、ステップS102で分岐予測が当た
りにくい条件分岐命令であると判断された場合には、分
岐予測ユニット2は、予測状態比較論理46により、後
続命令フェッチ発行抑止信号を信号線19を介して命令
キャッシュ1および命令デコード発行ユニット3に送出
し、分岐条件確定まで待機させる(ステップS11
6)。
【0061】命令キャッシュ1および命令デコード発行
ユニット3は、後続命令フェッチ発行抑止信号線19が
有効な場合には、条件分岐命令の後続命令のフェッチお
よび発行を抑止し、後続命令の投機的実行を行わない。
【0062】分岐検証ユニット7は、条件分岐命令の実
行が進んで分岐条件が確定すると、条件分岐命令で指定
された分岐条件を制御コードとして命令デコード発行ユ
ニット3から信号線12を介して受け取るとともに、条
件判定に必要なレジスタの値をレジスタファイル4から
信号線13を介して受け取り、分岐条件を検証して、分
岐条件検証結果を信号線16を介して分岐予測ユニット
2に通知する。
【0063】分岐予測ユニット2は、分岐検証ユニット
7からの分岐条件検証結果を受け取ると(ステップS1
17)、予測成否判定・次予測状態決定論理43によ
り、分岐条件が成立したかどうかを判定する(ステップ
S118)。分岐条件が成立していれば、分岐予測ユニ
ット2は、予測状態比較論理46により、後続命令フェ
ッチ発行抑止信号を無効にして信号線19を介して命令
キャッシュ1および命令デコード発行ユニット3に出力
するとともに、予測成否判定・次予測状態決定論理43
により、アドレスセレクタ45cから条件分岐命令の分
岐飛び先アドレスをフェッチ要求アドレスとして信号線
18を介して命令キャッシュ1に送出し、分岐飛び先ア
ドレスの命令から実行を開始させる(ステップS11
5)。
【0064】ステップS118で分岐条件が成立してい
なければ、分岐予測ユニット2は、予測状態比較論理4
6により、後続命令フェッチ発行抑止信号を無効にして
信号線19を介して命令キャッシュ1および命令デコー
ド発行ユニット3に出力するとともに、予測成否判定・
次予測状態決定論理43により、分岐予測管理テーブル
44に分岐予測失敗時の回復アドレスとして格納されて
いる条件分岐命令の次アドレスをアドレスセレクタ45
cから信号線18を介してフェッチ要求アドレスとして
命令キャッシュ1に送出し、条件分岐命令の次アドレス
の命令からの実行を開始させる(ステップS109)。
【0065】次に、第1の実施の形態に係る条件分岐命
令の投機的実行制御方法について、より具体的に説明す
る。ここでは、図3に例示したパイプラインプロセッサ
が、図5に例示したサンプルコードを実行する場合の動
作について順を追って説明する。
【0066】図5は、図3に例示したパイプラインプロ
セッサで実行されるサンプルコードの一例を示す図であ
る。
【0067】図6は、図5に例示したサンプルコードを
実行した際に条件分岐命令の分岐予測を分岐条件不成立
と分岐予測して失敗した場合のパイプライン動作図であ
る。
【0068】図7は、図5に例示したサンプルコードを
実行した際に条件分岐命令を分岐予測が当たりにくい条
件分岐命令であると判断した場合のパイプライン動作図
である。
【0069】図8は、図5に例示したサンプルコードを
実行した際に条件分岐命令の分岐条件不成立と分岐予測
して成功した場合のパイプライン動作図である。
【0070】サイクルT1のタイミングでec番地に格
納されている(1)の条件分岐命令BEQがフェッチさ
れると、命令キャッシュ1は、条件分岐命令BEQの命
令アドレス(すなわち、ec番地)および内容を信号線
20および信号線11を介して分岐予測ユニット2に送
出する。
【0071】分岐予測ユニット2は、命令キャッシュ1
から入力された条件分岐命令BEQの命令アドレスおよ
び内容に基づいて分岐予測が当たりにくい条件分岐命令
かどうかを判断する。ここでは、分岐予測が当たりにく
い条件分岐命令であると判断されたものとする。
【0072】次に、分岐予測ユニット2は、条件分岐命
令の命令アドレスに基づいて、条件分岐命令の次アドレ
スをフェッチ要求アドレスとして信号線18を介して命
令キャッシュ1に出力するとともに、後続命令フェッチ
発行抑止信号を信号線19を介して命令キャッシュ1お
よび命令デコード発行ユニット3に出力する。
【0073】図6は、分岐条件不成立を分岐予測して条
件分岐命令の次アドレスをフェッチ要求アドレスとして
出力し、後続命令フェッチ発行抑止信号を出力しないと
したときに、後に分岐予測が失敗した場合の実行タイミ
ングを示している。(1)の条件分岐命令BEQがサイ
クルT3に達した時に、分岐検証ユニット7は、分岐条
件が成立していると判定し、その分岐条件検証結果を信
号線16を介して分岐予測ユニット2に通知する。
【0074】分岐予測ユニット2は、分岐条件検証結果
を受け取ると、分岐予測の成否を判定する。
【0075】図6は、分岐予測失敗の例であるので、後
続命令で投機的実行が開始された(2)の加算命令AD
D,(3)のロード命令LOAD,および(4)の加算
命令ADDの3命令がサイクルT4で取り消され、新た
にサイクルT5で(6)のメモリ格納命令STOREの
フェッチが開始される。したがって、投機的実行を開始
していた(2)の加算命令ADD,(3)のロード命令
LOAD,および(4)の加算命令ADDによって無駄
な電力が消費されたことになる。
【0076】次に、図7は、分岐予測ユニット2が後続
命令フェッチ発行抑止信号を出力した場合の実行タイミ
ングを示している。この場合は、(1)の条件分岐命令
BEQの分岐条件がサイクルT3で確定するまでの間、
後続命令のフェッチを行わないので、図6に示したよう
な、投機的実行の取り消しは生じない。したがって、無
駄な電力は消費されない。
【0077】最後に、図8では、分岐条件不成立を分岐
予測して条件分岐命令の次アドレスをフェッチ要求アド
レスとして出力し、後続命令フェッチ発行抑止信号を出
力しないとしたときに、後に分岐予測が成功した場合の
実行タイミングを示している。この場合は、投機的実行
を行っていた命令によって、条件分岐命令の存在による
実行効率の低下を防ぐことができる。
【0078】以上のように、第1の実施の形態によれ
ば、フェッチ要求アドレスの他に後続命令フェッチ発行
抑止信号を追加して出力することにより、分岐予測が当
たりにくい条件分岐命令に関しては投機的実行を行わな
いようにすることができ、分岐予測失敗の発生回数を抑
え、消費電力効率を向上させることが可能になる。第1
の実施の形態では、分岐予測に失敗した場合と分岐条件
確定待機の場合との実行速度は変わらないが、投機的実
行をより積極的に行う非順序実行型のスーパースカラ機
能を備えるパイプラインプロセッサでは、投機的実行の
取消および状態回復動作を省けることによって、分岐予
測失敗時より高速に処理できる可能性もある。また、分
岐予測失敗の発生回数が減ることによって、状態回復動
作を高速化する必要性が減少し、状態回復用ハードウェ
アの簡単化が可能となる。
【0079】ところで、分岐条件確定待機を含めた分岐
予測を行う手法は、本発明の第2の実施の形態から第7
の実施の形態に係る条件分岐命令の投機的実行制御方法
による分岐予測論理に基づいて行われる。以下、これら
の実施の形態について説明する。
【0080】(2) 第2の実施の形態 第2の実施の形態に係る条件分岐命令の投機的実行制御
方法は、条件分岐命令に分岐予測に基づく投機的実行を
行うか行わないかの情報を付加するものである。
【0081】図9は、第2の実施の形態に係る条件分岐
命令の投機的実行制御方法の最も簡単な一例である。図
9を参照すると、条件分岐命令の命令フィールドに1ビ
ットの投機的実行抑止ビットを付加している。すなわ
ち、条件分岐命令の命令フォーマットは、オペコード
と、分岐条件と、投機的実行抑止ビットと、分岐飛び先
アドレスとの各フィールドから構成され、投機的実行抑
止ビットは、コード生成時に当該条件分岐命令が分岐予
測が当たりにくいと判断された場合に有効とされる。
【0082】投機的実行抑止ビットが有効とされている
場合に限って、後続命令の投機的実行を行わず、先述の
図7に示したようなパイプライン動作を行う。すなわ
ち、当該条件分岐命令の命令フェッチ時には、命令キャ
ッシュ1および命令デコード発行ユニット3は、分岐予
測ユニット2からのフェッチ要求アドレスを受け取る
が、その後の命令フェッチ/発行動作は、条件分岐命令
の分岐条件が確定するまで行わない。
【0083】投機的実行抑止ビットの有効/無効は、命
令デコード発行ユニット3において、通常の命令デコー
ドと同等の操作を行うことによって調べられる。命令デ
コード発行ユニット3は、命令の発行を自ら司ってお
り、投機的実行抑止ビットが有効とされていた条件分岐
命令を発行後は、当該条件分岐命令が分岐検証ユニット
7に到達して、分岐条件が検証されるまで、後続命令の
発行を抑止することが可能である。
【0084】第2の実施の形態に係る条件分岐命令の投
機的実行制御方法によって、最も簡単に分岐条件確定待
機の指定を行うことが可能となり、条件分岐命令の分岐
予測成功率を向上させることができる。さらに、プログ
ラムの実行トレースを用いて、各条件分岐命令について
分岐予測に基づく投機的実行を行う/行わないを指定す
ることによって、コードの最適化が可能になる。
【0085】ところで、第2の実施の形態に係る条件分
岐命令の投機的実行制御方法における静的な分岐予測手
法では、命令セットの拡張が必要であること,コード生
成時に静的に予測するために分岐予測成功率の向上に限
界があること,時間経過によって分岐条件の成立/不成
立の傾向が変化する場合には対応できないことなどの問
題が残る。これらの問題に対応するためには、ハードウ
ェアによる分岐予測機構によって動的に条件分岐命令が
分岐予測が当たりにくいかどうかという判定を行う必要
がある。
【0086】(3) 第3の実施の形態 本発明の第3実施の形態に係る条件分岐命令の投機的実
行制御方法では、分岐条件の成否から決定される分岐予
測状態に応じて分岐条件確定待機状態を生成するもので
ある。
【0087】例えば、図10に示す4状態で分岐予測を
管理している場合には、分岐予測ユニット2内では、分
岐条件成立/分岐条件不成立を分岐予測し、分岐条件検
証結果に応じて新たな分岐予測状態に遷移させるという
動作を行いながら、分岐予測ユニット2内の予測状態比
較論理46によって、弱い成立予測状態22および弱い
不成立予測状態23の時には、命令キャッシュ1および
命令デコード発行ユニット3に対して後続命令フェッチ
発行抑止信号を有効にする。
【0088】後続命令フェッチ発行抑止信号の有効時に
は、先述の図7に示したようなパイプライン動作が行わ
れる。すなわち、弱い成立予測状態22および弱い不成
立予測状態23ということは、分岐予測が当たりにくい
状態であることを示しており、その場合には、後続命令
の投機的実行を行わないことによって、条件分岐命令の
分岐予測成功率を向上させることができる。
【0089】ところで、第3実施の形態に係る条件分岐
命令の投機的実行制御方法では、分岐予測状態として4
状態を用いたが、さらに分岐予測状態を増やすことによ
って、より的確に分岐予測が当たりにくい状態を判断す
ることが可能になる。
【0090】(4) 第4の実施の形態 本発明の第4実施の形態に係る条件分岐命令の投機的実
行制御方法では、図11に示すように、図10に示した
分岐予測状態に対して2状態を追加し、全体として6状
態としている。追加した2状態は、弱い成立予測状態2
2および弱い不成立予測状態23の中間に用意され、ご
く弱い成立予測状態25およびごく弱い不成立予測状態
26である。
【0091】分岐予測ユニット2は、ごく弱い成立予測
状態25およびごく弱い不成立予測状態26の時、なら
びに弱い成立予測状態22および弱い不成立予測状態2
3の時には、命令キャッシュ1および命令デコード発行
ユニット3に対して後続命令フェッチ発行抑止信号を有
効にする。
【0092】分岐予測状態の状態数をさらに増やしたり
状態遷移を工夫することによって、分岐予測が当たりに
くい条件分岐命令をより高い確度で判定することも、第
4の実施の形態に係る条件分岐命令の投機的実行制御方
法に含まれる。
【0093】(5) 第5の実施の形態 本発明の第5実施の形態に係る条件分岐命令の投機的実
行制御方法は、分岐予測が当たりにくい条件分岐命令を
より高い確度で見極めるために、分岐条件成立および分
岐条件不成立の分岐予測の予測正確度の履歴を、分岐予
測テーブルとは独立したテーブルによって保持しておく
方法である。第5実施の形態に係る条件分岐命令の投機
的実行制御方法では、分岐予測ユニット2は、従来のパ
イプラインプロセッサと全く同様に動作し、それとは独
立の予測正確度履歴管理ユニット(図示せず)を追加
し、条件分岐命令のアドレス毎に分岐予測成功率をハー
ドウェア的に保持しておく。この予測正確度履歴管理ユ
ニットからの出力によって投機的実行か分岐条件確定待
機かを決定し、投機的実行の場合には分岐予測ユニット
2からの出力に従って分岐条件成立および分岐条件不成
立の投機的実行を行うことも、第5の実施の形態に係る
条件分岐命令の投機的実行制御方法に含まれる。
【0094】(6) 第6の実施の形態 本発明の第6の実施の形態に係る条件分岐命令の投機的
実行制御方法は、分岐予測を行わず分岐条件の確定を待
機させるための方法として、条件分岐命令自身に投機的
実行抑止ビット10を静的に加えておく第2の実施の形
態に係る条件分岐命令の投機的実行制御方法と、動的に
している第3の実施の形態に係る条件分岐命令の投機的
実行制御方法との両者を合わせた方法である。第6の実
施の形態に係る条件分岐命令の投機的実行制御方法で
は、第2の実施の形態に係る条件分岐命令の投機的実行
制御方法と同様に、コード生成時に条件分岐命令の予測
が当たりにくいと判断した場合に、投機的実行を行わな
いと命令上で指定する。しかしながら、この条件分岐命
令に対する履歴が、強い成立予測状態21または強い不
成立予測状態24のときには、条件分岐命令の後続命令
の投機的実行を行う。一方、弱い成立予測状態22また
は弱い不成立予測状態23の時には、分岐条件の確定を
待機する。他方、投機的実行を行うと指定した命令につ
いては、弱い成立予測状態22および弱い不成立予測状
態23のときにも投機的実行を行う。これらの動作を、
表3に示す。
【0095】
【表3】
【0096】これによって、静的に分岐予測が当たりに
くい条件分岐命令で、かつ動的にも分岐予測が当たりに
くいと判断された条件分岐命令についてのみ投機的実行
を抑止することが可能になり、分岐予測が当たりにくい
条件分岐命令以外の条件分岐命令については投機的実行
を抑止する可能性が減少し、分岐予測成功率を保ちなが
ら、分岐予測失敗の発生回数を減らすことが可能にな
る。
【0097】(7) 第7の実施の形態 本発明の第7の実施の形態に係る条件分岐命令の投機的
実行制御方法は、プロセッサの実行モードに高速モー
ド,低消費電力モードなどの複数のモードを設け、高速
モードでは、条件分岐命令の後続命令の投機的実行を積
極的に行い、できる限りの処理速度向上を図るが、低消
費電力モードでは、分岐予測が当たりにくい条件分岐命
令の後続命令の投機的実行を行わずに分岐条件の確定を
待機するようにした方法である。これらの動作を、表4
に示す。
【0098】
【表4】
【0099】これらの実行モードを切り替えることによ
って、処理速度を保つ必要のある場合と電力効率を重視
する場合とで、それぞれ的確な条件分岐命令の投機的実
行制御を選択することが可能になる。
【0100】なお、上記各実施の形態では、説明の簡単
化のために、命令順序発行(in-order発行)のパイプラ
インプロセッサを仮定したが、命令非順序発行(out-of
-order発行)のスーパースカラ機能を備えるパイプライ
ンプロセッサでは、分岐予測失敗によって取り消される
命令数も多くなり、また状態回復に数サイクルかかる場
合も有り、投機的実行を行わない場合にはこの回復待ち
時間が不要となるので、本発明による効果をより一層得
ることが可能になる。
【0101】また、上記各実施の形態では、分岐予測失
敗の場合と分岐条件確定待機の場合との実行速度は変わ
らないが、投機的実行をより積極的に行う非順序実行型
のスーパースカラ機能を備えるパイプラインプロセッサ
では、分岐予測失敗による投機的実行の取り消しおよび
状態回復動作を省けることによって、分岐予測失敗の場
合より分岐条件確定待機の場合の方が高速に処理できる
可能性もある。また、分岐予測失敗による投機的実行取
消回数が減ることによって、状態回復動作を高速化する
必要性が減少し、状態回復用ハードウェアの簡単化が可
能となる。
【0102】さらに、上記各実施の形態は、既存の分岐
予測機構と組み合わせて利用できるため、近年提案され
ている高度な分岐予測機構に追加することによって、分
岐予測が当たりにくい条件分岐命令のみの投機的実行を
より容易に抑止することが可能になる。
【0103】
【発明の効果】以上説明したように本発明によれば、分
岐予測が当たりにくい条件分岐命令について投機的実行
を行わないことによって、投機的実行が取り消される回
数を削減し、電力効率を改善することが可能になる。そ
の理由は、分岐予測が当たりにくい条件分岐命令の場合
には、分岐条件確定まで待機させるようにしたからであ
る。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係る条件分岐命令
の投機的実行制御方法の処理手順を示すフローチャート
である。
【図2】第1の実施の形態に係る条件分岐命令の投機的
実行制御方法が適用されるパイプラインプロセッサのパ
イプラインステージの一例を示す図である。
【図3】図2に示したパイプラインステージを持つパイ
プラインプロセッサの一例を示す回路ブロック図であ
る。
【図4】図1中の分岐予測ユニットの内部構造の一例を
示す回路ブロック図である。
【図5】図3のパイプラインプロセッサが実行するサン
プルコードの一例を示す図である。
【図6】条件分岐命令の分岐予測を分岐条件不成立とし
て失敗した場合のパイプライン動作図である。
【図7】条件分岐命令を分岐予測が当たりにくいと判断
した場合のパイプライン動作図である。
【図8】条件分岐命令の分岐予測を分岐条件不成立とし
て成功した場合のパイプライン動作図である。
【図9】本発明の第2の実施の形態に係る条件分岐命令
の投機的実行制御方法で用いられる条件分岐命令の命令
フォーマットを示す図である。
【図10】一般的な2ビット分岐予測状態を示す状態遷
移図である。
【図11】6状態に拡張した分岐予測状態を示す状態遷
移図である。
【図12】従来の分岐予測ユニットの詳細回路ブロック
図である。
【符号の説明】
1 命令キャッシュ 2 分岐予測ユニット 3 命令デコード発行ユニット 4 レジスタファイル 5 ALU 6 データキャッシュ 7 分岐検証ユニット 8 パイプラインレジスタ 9 命令コード読み出し信号線 10 レジスタアドレス信号線 11 条件分岐命令の内容信号線 12 制御コード信号線 13 レジスタ読み出し値信号線 14 レジスタ書き込み値信号線 15 即値データ信号線 16 分岐条件検証結果信号線 17 後続命令取消要求信号線 18 フェッチ要求アドレス信号線 19 後続命令フェッチ発行抑止信号線 20 条件分岐命令の命令アドレス信号線 21 強い成立予測状態 22 弱い成立予測状態 23 弱い不成立予測状態 24 強い不成立予測状態 25 ごく弱い成立予測状態 26 ごく弱い不成立予測状態 41 分岐予測テーブル 42a,42b アドレス加算器 43 予測成否判定・次予測状態決定論理 44 分岐予測管理テーブル 45a,45b,45c アドレスセレクタ 46 予測状態比較論理 S101 条件分岐命令フェッチステップ S102 分岐予測当たりにくい条件分岐命令判定ステ
ップ S103 分岐条件成立分岐予測判定ステップ S104 投機的実行継続ステップ S105 分岐条件検証結果受け取りステップ S106 分岐予測成功判定ステップ S107 分岐確定実行継続ステップ S108 投機的実行取消ステップ S109 条件分岐命令の次命令からの実行ステップ S110 条件分岐命令の次命令からの投機的実行継続
ステップ S111 分岐条件検証結果受け取りステップ S112 分岐予測成功判定ステップ S113 分岐確定実行継続ステップ S114 投機的実行取消ステップ S115 分岐飛び先命令からの実行ステップ S116 分岐条件確定待機ステップ S117 分岐条件検証結果受け取りステップ S118 分岐条件成立判定ステップ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 条件分岐命令をフェッチした際に、分岐
    条件成立/分岐条件不成立を分岐予測し、分岐予測状態
    に応じて分岐飛び先アドレスに位置する命令あるいは条
    件分岐命令の次アドレスに位置する命令から後続命令を
    投機的にフェッチし、これらの命令を投機的に実行し、
    当該条件分岐命令の分岐条件が確定した後に分岐予測失
    敗であった場合には投機的に実行していた命令の実行を
    取り消す投機的実行機能を備えるパイプラインプロセッ
    サにおいて、条件分岐命令に対して、分岐条件成立を分
    岐予測する,分岐条件不成立を分岐予測する,または分
    岐条件確定を待機するという処理のいずれかを選択可能
    とし、分岐条件確定待機が選択されたときには、条件分
    岐命令の分岐条件が確定するまで当該条件分岐命令の後
    続命令の投機的実行を抑止することを特徴とする条件分
    岐命令の投機的実行制御方法。
  2. 【請求項2】 条件分岐命令に前記分岐条件確定待機を
    する/しないを指定する投機的実行抑止情報を付加し、
    投機的実行抑止情報が有効である条件分岐命令をフェッ
    チしたときには、条件分岐命令の分岐条件が確定するま
    で当該条件分岐命令の後続命令の投機的実行を抑止する
    ことを特徴とする請求項1記載の条件分岐命令の投機的
    実行制御方法。
  3. 【請求項3】 条件分岐命令の分岐条件成立/分岐条件
    不成立の履歴を履歴管理用ハードウェアに保持し、該履
    歴管理用ハードウェアに保持された履歴を参照すること
    によってフェッチした条件分岐命令の分岐条件成立/分
    岐条件不成立を分岐予測し、分岐予測状態に応じて分岐
    飛び先アドレスに位置する命令あるいは条件分岐命令の
    次アドレスに位置する命令から後続命令を投機的にフェ
    ッチし、これらの命令を投機的に実行し、当該条件分岐
    命令の分岐条件が確定した後に分岐予測失敗であった場
    合には投機的に実行していた命令の実行を取り消す投機
    的実行機能を備えるパイプラインプロセッサにおいて、
    条件分岐命令に対して、分岐条件成立を分岐予測する,
    分岐条件不成立を分岐予測する,または分岐条件確定を
    待機するという処理のいずれかを選択可能とするととも
    に、分岐条件確定待機が選択されたときには、条件分岐
    命令の分岐条件が確定するまで当該条件分岐命令の後続
    命令の投機的実行を抑止するとともに、前記履歴管理用
    ハードウェアから分岐予測状態として分岐条件確定待機
    状態も併せて出力させ、分岐条件確定待機状態が出力さ
    れたときにも、条件分岐命令の分岐条件が確定するまで
    当該条件分岐命令の後続命令の投機的実行を抑止するこ
    とを特徴とする条件分岐命令の投機的実行制御方法。
  4. 【請求項4】 前記履歴管理用ハードウェアに保持され
    た履歴の分岐予測状態が、分岐条件確定待機状態の場合
    には条件分岐命令の分岐条件が確定するまで当該条件分
    岐命令の後続命令の投機的実行を抑止し、分岐条件確定
    待機状態以外の場合には分岐条件成立/分岐条件不成立
    を分岐予測することを特徴とする請求項3記載の条件分
    岐命令の投機的実行制御方法。
  5. 【請求項5】 前記投機的実行抑止情報に分岐条件確定
    待機と指定された条件分岐命令をフェッチしたときで
    も、前記履歴管理用ハードウェアに保持された履歴の分
    岐予測状態が、分岐条件確定待機状態の場合には条件分
    岐命令の分岐条件確定まで当該条件分岐命令の後続命令
    の投機的実行を抑止し、分岐条件確定待機状態以外の場
    合には投機的実行を行うことを特徴とする請求項4記載
    の条件分岐命令の投機的実行制御方法。
  6. 【請求項6】 前記パイプラインプロセッサに複数の実
    行モードを用意し、特定モードの場合には条件分岐命令
    の分岐条件確定待機を選択可能とし、特定モード以外の
    場合には条件分岐命令の分岐条件確定待機を選択不能と
    したことを特徴とする請求項1,請求項2,請求項3,
    請求項4,または第5項記載の条件分岐命令の投機的実
    行制御方法。
JP11127888A 1999-05-10 1999-05-10 条件分岐命令の投機的実行制御方法 Pending JP2000322257A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11127888A JP2000322257A (ja) 1999-05-10 1999-05-10 条件分岐命令の投機的実行制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11127888A JP2000322257A (ja) 1999-05-10 1999-05-10 条件分岐命令の投機的実行制御方法

Publications (1)

Publication Number Publication Date
JP2000322257A true JP2000322257A (ja) 2000-11-24

Family

ID=14971152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11127888A Pending JP2000322257A (ja) 1999-05-10 1999-05-10 条件分岐命令の投機的実行制御方法

Country Status (1)

Country Link
JP (1) JP2000322257A (ja)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004107163A1 (ja) * 2003-05-28 2004-12-09 Fujitsu Limited 分岐予測機構を持つ命令制御装置及びその制御方法
JP2006521618A (ja) * 2003-03-27 2006-09-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐によるアクティビティモニタ
WO2008029450A1 (fr) * 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
JP2008102927A (ja) * 2006-10-19 2008-05-01 Internatl Business Mach Corp <Ibm> コンピュータ・プロセッサ・システムのための消費電力管理方法及びシステム
US7609582B2 (en) 2004-07-16 2009-10-27 Samsung Electronics Co., Ltd. Branch target buffer and method of use
US7636837B2 (en) 2003-05-28 2009-12-22 Fujitsu Limited Apparatus and method for controlling instructions at time of failure of branch prediction
JP2010015298A (ja) * 2008-07-02 2010-01-21 Nec Electronics Corp 情報処理装置及び命令フェッチ制御方法
JP2010152843A (ja) * 2008-12-26 2010-07-08 Nec Corp 分岐予測の信頼度見積もり回路及びその方法
KR100980076B1 (ko) * 2003-10-24 2010-09-06 삼성전자주식회사 저전력 분기 예측 시스템 및 분기 예측 방법
JP2010250858A (ja) * 2005-04-27 2010-11-04 Panasonic Corp 電力制御装置
JP2013502657A (ja) * 2009-08-19 2013-01-24 クアルコム,インコーポレイテッド 条件付き非ブランチング命令の非実行を予測するための方法および機器
JP2013254484A (ja) * 2012-04-02 2013-12-19 Apple Inc ベクトル分割ループの性能の向上
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
WO2018033693A1 (en) * 2016-08-17 2018-02-22 Arm Limited Memory dependence prediction

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006521618A (ja) * 2003-03-27 2006-09-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐によるアクティビティモニタ
US7636837B2 (en) 2003-05-28 2009-12-22 Fujitsu Limited Apparatus and method for controlling instructions at time of failure of branch prediction
WO2004107163A1 (ja) * 2003-05-28 2004-12-09 Fujitsu Limited 分岐予測機構を持つ命令制御装置及びその制御方法
KR100980076B1 (ko) * 2003-10-24 2010-09-06 삼성전자주식회사 저전력 분기 예측 시스템 및 분기 예측 방법
US7609582B2 (en) 2004-07-16 2009-10-27 Samsung Electronics Co., Ltd. Branch target buffer and method of use
JP2010250858A (ja) * 2005-04-27 2010-11-04 Panasonic Corp 電力制御装置
JPWO2008029450A1 (ja) * 2006-09-05 2010-01-21 富士通株式会社 分岐予測ミスリカバリ機構を有する情報処理装置
WO2008029450A1 (fr) * 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
JP2008102927A (ja) * 2006-10-19 2008-05-01 Internatl Business Mach Corp <Ibm> コンピュータ・プロセッサ・システムのための消費電力管理方法及びシステム
JP2010015298A (ja) * 2008-07-02 2010-01-21 Nec Electronics Corp 情報処理装置及び命令フェッチ制御方法
JP2010152843A (ja) * 2008-12-26 2010-07-08 Nec Corp 分岐予測の信頼度見積もり回路及びその方法
JP2015130206A (ja) * 2009-08-19 2015-07-16 クアルコム,インコーポレイテッド 条件付き非ブランチング命令の非実行を予測するための方法および機器
JP2013502657A (ja) * 2009-08-19 2013-01-24 クアルコム,インコーポレイテッド 条件付き非ブランチング命令の非実行を予測するための方法および機器
JP2013254484A (ja) * 2012-04-02 2013-12-19 Apple Inc ベクトル分割ループの性能の向上
US9116686B2 (en) 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
WO2018033693A1 (en) * 2016-08-17 2018-02-22 Arm Limited Memory dependence prediction
US10324727B2 (en) 2016-08-17 2019-06-18 Arm Limited Memory dependence prediction

Similar Documents

Publication Publication Date Title
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP5329410B2 (ja) 動的可変遅延に基づいてプロセッサ命令を実行するための方法および装置
JP5313279B2 (ja) 非アラインドメモリアクセス予測
US6697932B1 (en) System and method for early resolution of low confidence branches and safe data cache accesses
JP5137948B2 (ja) ローカル及びグローバル分岐予測情報の格納
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
US7222227B2 (en) Control device for speculative instruction execution with a branch instruction insertion, and method for same
US6192466B1 (en) Pipeline control for high-frequency pipelined designs
WO2008029450A1 (fr) Dispositif de traitement d&#39;informations comprenant un mécanisme de correction d&#39;erreur de prédiction d&#39;embranchement
US20020087849A1 (en) Full multiprocessor speculation mechanism in a symmetric multiprocessor (smp) System
US6687812B1 (en) Parallel processing apparatus
JP2000322257A (ja) 条件分岐命令の投機的実行制御方法
US20040133769A1 (en) Generating prefetches by speculatively executing code through hardware scout threading
JP2006318051A (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
JP2008530714A5 (ja)
KR102271992B1 (ko) 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법
US20130124828A1 (en) Reducing hardware costs for supporting miss lookahead
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
US20050223201A1 (en) Facilitating rapid progress while speculatively executing code in scout mode
US20040133767A1 (en) Performing hardware scout threading in a system that supports simultaneous multithreading
US20020152259A1 (en) Pre-committing instruction sequences
JP3518510B2 (ja) リオーダバッファの管理方法及びプロセッサ
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法