Nothing Special   »   [go: up one dir, main page]

JPWO2005103886A1 - 分岐予測装置、その方法、及びプロセサ - Google Patents

分岐予測装置、その方法、及びプロセサ Download PDF

Info

Publication number
JPWO2005103886A1
JPWO2005103886A1 JP2006512575A JP2006512575A JPWO2005103886A1 JP WO2005103886 A1 JPWO2005103886 A1 JP WO2005103886A1 JP 2006512575 A JP2006512575 A JP 2006512575A JP 2006512575 A JP2006512575 A JP 2006512575A JP WO2005103886 A1 JPWO2005103886 A1 JP WO2005103886A1
Authority
JP
Japan
Prior art keywords
branch
bit width
instruction
prediction
register
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.)
Granted
Application number
JP2006512575A
Other languages
English (en)
Other versions
JP4213181B2 (ja
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2005103886A1 publication Critical patent/JPWO2005103886A1/ja
Application granted granted Critical
Publication of JP4213181B2 publication Critical patent/JP4213181B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

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)

Abstract

分岐命令の出現頻度を検出し、分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルのインデックスの計算に用いる分岐ヒストリレジスタのなかで有効とするビット幅を、検出した出現頻度を基に動的に変更する。

Description

本発明は、最近の分岐命令の分岐結果を複数、格納する分岐ヒストリレジスタ、及びインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルを用いて分岐予測を行う技術に関する。
パイプライン機能を有するプロセサでは、性能を最大限に発揮させるために、分岐命令が分岐するか否かを分岐予測装置により予測して先に処理を進めるようになっている。その予測がはずれた場合、後戻りさせなくてはならない。これは、先に進めた分の処理は無駄になり、後戻りさせるための処理を別に行わなければならないことを意味する。そのようなペナルティが発生することから、予測精度はプロセサの性能に大きく影響する。このため、分岐予測装置では、より高い精度で予測を行えるようにすることが強く望まれている。
従来の分岐予測装置としては、例えば特許文献1に記載された2レベル型分岐予測装置がある。その型の分岐予測装置は、比較的に高い予測精度が得られると注目されている。
図1Aは、2レベル型の従来の分岐予測装置で行われる分岐予測を説明する図である。
分岐ヒストリレジスタ702は、最近の分岐命令における分岐結果を複数、履歴として格納するレジスタである。1分岐命令の分岐結果は1ビットの値で表現される。例えば分岐不成立は「0」、分岐成立は「1」で表現される。その分岐結果は、1ビットずつシフトしながらレジスタ702に格納する。それにより、レジスタ702には、最近のそのビット数分の分岐結果が格納されるようになっている。例えばビット数が4ビットであり、現在の内容が「1001」である状態で分岐成立の分岐命令を実行した場合には、その内容は「0011」に更新される。
排他的論理和(XOR)演算回路703は、分岐ヒストリテーブル704に格納された内容と分岐命令アドレス値701との排他的論理和を算出する。その排他的論理和は、分岐ヒストリテーブル704のインデックスとして使われる。
分岐ヒストリテーブル704には、インデックス毎に、分岐命令による分岐が成立する確度を示す予測情報である状態が格納されている。その状態(予測情報)は2ビットで表現され、その2ビットで表現される値は大きくなるほど、分岐が成立する確度が高いことを示している。それにより、その値が「11」或いは「10」のときは分岐命令による分岐が成立すると予測し、その値が「01」或いは「00」のときは分岐が成立しないと予測する。
図1Bは、分岐ヒストリテーブル704に格納した状態の更新方法を説明する図である。
その状態としての値は、実際の分岐結果に応じて更新するようになっている。その更新は、図1Bに示すように、分岐が成立した場合には「11」を上限に値をインクリメントし、分岐が成立しなかった場合には「00」を下限に値をデクリメントすることで行っている。そのような更新を行うことにより、実行するプログラムに応じて分岐ヒストリテーブル704を最適化し、予測精度を常に高く維持させるようにしている。
ところで、プロセサの性能はベンチマークテストを行って計測するのが普通である。そのテスト用のソフトウェアとしては、SPEC(Standard Performance Evaluation Corporation)ベンチマークやTPC(Transaction Processing Performance Council)−Cベンチマークなどが知られている。
SPECベンチマークには、プロセサの性能を表す指標として、整数演算の性能評価用のSPECintや、浮動小数点数演算の性能評価用のSPECfpなどがある。一方のTPC−Cベンチマークは、トランザクション処理システムをシミュレートしてプロセサの性能を評価するものである。
図2は、分岐ヒストリレジスタ702のビット幅と分岐予測のミス率の関係をベンチマーク別に説明する図である。そのミス率は平均値である。
その図2に示すように、2レベル型の分岐予測装置では、分岐ヒストリレジスタ702のビット幅(数)が大きいほどSPECベンチマークでのミス率は低下し、TPC−Cベンチマークでのミス率は高くなる。それにより、その分岐予測装置を搭載したプロセサでは、分岐ヒストリレジスタ702のビット幅(数)が大きいほどSPECベンチマークでの性能が向上し、TPC−Cベンチマークでの性能が低下するという両立困難な問題点があった。
それぞれのベンチマークの特徴として、SPECベンチマークには、最近の分岐命令の分岐/非分岐の履歴に強く依存した命令列が存在するが、分岐命令数自体は比較的に多くないという特徴がある。他方のTPC−Cベンチマークには、最近の分岐命令の分岐/非分岐の履歴には殆ど依存しないが、分岐命令数自体は比較的に非常に多いという特徴がある。このことから、そのような特徴に応じて分岐ヒストリレジスタ702のビット幅を変更することが考えられる。
分岐ヒストリテーブル704のインデックスは、上述したように、分岐ヒストリレジスタ702の値と分岐命令アドレス値701のXORとしている(G−share)。このため、分岐ヒストリレジスタ702のビット幅が大きいほど、同じアドレス値701の分岐命令の予測情報が分岐ヒストリテーブル704内を占める領域が大きくなり、他の分岐命令と共有せずに格納できる分岐命令の数が減少する。それにより、分岐ヒストリレジスタ702のビット幅を大きくすると、分岐命令数が比較的に少ないSPECベンチマークでは、共有せずに予測情報を格納できる分岐命令数が少なくとも最近の分岐命令の履歴パターン(分岐/非分岐の組み合わせ)毎に予測情報を独立に格納できるようになって予測精度が向上すると考えられる。他方のTPC−Cベンチマークでは、分岐命令数が比較的に多いため、予測情報を独立に格納できる分岐命令数が減少して予測精度が低下すると考えられる。
特許文献2には、複数の方法で分岐予測を行えるようにして、そのうちの一つを実際の分岐予測に用いる分岐予測装置が記載されている。特許文献3には、モジュールが各種の処理を行う際のパフォーマンスを測定して、コンフィグレーションを変更するプロセサが記載されている。
それら特許文献2、3に記載された技術は何れも、分岐予測では分岐予測ミス率に着目している。しかし、そのミス率は、分岐予測装置自体の予測精度が低いことが原因で大きくなる場合がある。このため、上述したようなプログラム(ベンチマーク)の持つ特徴(分岐命令の出現頻度)に対応するうえでは、不適切となる可能性がある。
特開2003−5956号公報 特開平10−240526号公報 特開2002−163150号公報
本発明は、実行するプログラムに係わらず、常に高い予測精度を維持可能な分岐予測装置、及びそれを搭載したプロセサを提供することを目的とする。
本発明の分岐予測装置は、最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行うことを前提とし、異なるアドレスの分岐命令の出現頻度を検出する頻度検出手段と、頻度検出手段が検出した出現頻度に基づいて、分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更するビット幅変更手段と、を具備する。
本発明の分岐予測方法は、最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行うことを前提としたものであり、異なるアドレスの分岐命令の出現頻度を検出し、該検出した出現頻度に基づいて、分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更する。
本発明のプロセサは、最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行うことを前提とし、異なるアドレスの分岐命令の出現頻度を検出する頻度検出手段と、頻度検出手段が検出した出現頻度に基づいて、分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更するビット幅変更手段と、を具備する。
本発明では、異なるアドレスの分岐命令の出現頻度を検出し、最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタのなかで有効とするビット幅(数)を、検出した出現頻度を基に動的に適宜、変更する。
異なるアドレスの分岐命令の出現頻度はプログラムによって異なり、その出現頻度によって分岐ヒストリレジスタの最適なビット幅も変化する。このため、その出現頻度を基に分岐ヒストリレジスタのヒット幅を動的に適宜、変更することにより、そのビット幅を最適化することができる。その結果、実行するプログラムに係わらず、常に高い予測精度を維持することができるようになり、プロセサの性能は常に最大限に発揮できることとなる。
2レベル型の従来の分岐予測装置で行われる分岐予測を説明する図である。 分岐ヒストリテーブル704に格納した状態の更新方法を説明する図である 分岐ヒストリレジスタ702のビット幅と分岐予測のミス率の関係をベンチマーク別に説明する図である。 本実施の形態による分岐予測装置の構成を説明する図である。 本実施の形態による分岐予測装置を搭載したプロセサの構成を説明する図である。 ベンチマークと分岐予測ミス率の関係を説明する図である。 ベンチマークと分岐命令キャッシュミス率の関係を説明する図である。 本実施の形態による分岐予測装置の動作の流れを示すフローチャートである。 分岐ヒストリレジスタの有効とするビット幅の動的な変更を行った場合のベンチマークと分岐予測ミス率の関係を説明する図である。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図3は、本実施の形態による分岐予測装置の構成を説明する図であり、図4は、その分岐予測装置を搭載したプロセサの構成を説明する図である。
そのプロセサは、図4に示すように、命令フェッチ部100、命令実行部200、2次キャッシュ部300、及びシステムインターフェース部400、を備えた構成となっている。
命令フェッチ部100は、分岐予測装置1、命令キャッシュ2、及び命令バッファ(IBF)101を備えている。その命令フェッチ部100は、命令実行部200とは独立して動作し、分岐予測装置1による分岐予測に従って、将来実行すると予測される命令列をなぞるように命令キャッシュ2から取り出してIBF101に取り込む。命令キャッシュ2への命令のプリフェッチは、ハードウェア、或いはソフトウェアによって行われる。
命令実行部200は、IBF101にプリフェッチされた命令を取り出して実行するものである。IWR(Instruction Word Register)部201には、例えばIBF101から4命令がまとめてセットされる。
そのIWR部201は、IBF101から取り出した命令をデコードし、実行に必要な資源を決定して命令を発行する発行制御回路3(図3)を備えている。その発行制御回路3は、命令識別子(IID)を割り当てて命令を発行する。発行した命令は、ロード・ストア用リザベーション・ステーション(RSLS:Reservation Station for Lord and Store)202、アドレス生成用リザベーション・ステーション(RSA:Reservation Station for Address generaion)203、整数演算用リザベーション・ステーション(RSE:Reservation Station for Execution)204、浮動小数点演算用リザベーション・ステーション(RSF:Reservation Station for Floating point)205、及び分岐用リザベーション・ステーション(RSB:Reservation Station for Branch)4(図3)の何れかに送出される。
RSLS202は、ロード命令はフェッチキューFQでデータキャッシュ206を制御して実行する。ストア命令は、ストアデータキューSDQでデータの書き込みを制御する。
演算器207は、アドレス生成演算器(AG)、及び整数演算器(EX)をそれぞれ2つ備えたものである。RSA203は、アドレス生成演算器に命令を実行させてアドレスを生成させる。生成されたアドレスは、RSLS202のストアデータキューにエントリされる。RSE204は、整数演算器に命令を実行させる。
浮動小数点演算器(FL)208も同様に2つ用意されている。RSF205は、浮動小数点演算器208に命令を実行させる。
RSB4には、分岐命令が発行される。そのRSB4は、分岐確定、分岐予測情報の更新、分岐予測失敗時の再命令フェッチなどの処理を行う。分岐確定は、命令に割り当てられた命令識別子を手がかりにして演算動作を監視することで行う。
次に、命令フェッチ部100を構成する分岐予測装置1について、図3を参照して詳細に説明する。
分岐命令キャッシュ13は、分岐命令アドレス別に、命令の種類を示すタグ情報や分岐先アドレスを格納するものである。それらの情報は、プログラムカウンタ12から出力された値(アドレス)によって読み出される。命令フェッチ制御回路11は、分岐命令キャッシュ13から読み出された情報を入力し、次にプリフェッチする命令の種類等を認識する。分岐先アドレスの有無から、キャッシュミスが発生したか否か判定する。プログラムカウンタ12から出力された値によって命令キャッシュ2から読み出された命令は、IBF101を介してIWR部201の発行制御回路3に送られる。キャッシュミスの発生は、RSB4に直接、或いは間接的に通知する。分岐予測ミスが判明した時のRSB4による再命令フェッチは、RSB4がプログラムカウンタ12等の内容を直接、更新するか、或いは命令フェッチ制御回路11を制御して行わせる。
分岐ヒストリレジスタ14は、最近の分岐命令における分岐結果を複数、履歴として格納する。命令フェッチ制御回路11は、例えばRSB4からの分岐確定の通知により、その内容を更新する。その更新は、分岐ヒストリテーブル15の対応する状態の更新と併せて行う。
分岐ヒストリテーブル15は、インデックス毎に、分岐命令による分岐が成立する確度を示す予測情報である状態が格納されている。その状態(予測情報)は2ビットで表現される値である。そのインデックスは、プログラムカウンタ12から出力されたアドレスと、分岐ヒストリレジスタ14の値との排他的論理和(XOR)により計算される。
分岐ヒストリレジスタ14から読み出された値はマスク回路16、及び排他的論理和(XOR)演算回路17にそれぞれ出力される。そのマスク回路16は、分岐ヒストリレジスタ14の総ビット幅分のうち、状況によってマスクすべきとするビット幅(以降「マスク対象ビット幅」と呼ぶ)分の論理積演算回路を備えた構成である。それら論理積演算回路は、分岐ヒストリレジスタ14の対応するビットの値と、分岐ヒストリレジスタモードレジスタ部(以降「モードレジスタ部」と略記)21が出力する信号の値を反転した値の論理積を出力する。それにより、排他的論理和(XOR)演算回路17には、分岐ヒストリレジスタ14の総ビット幅のうち、マスク回路16に出力されないビット幅分の値が出力される。例えば、分岐ヒストリレジスタ14の総ビット幅は10ビット、マスク対象ビット幅は8ビットである。
XOR演算回路17は、分岐ヒストリレジスタ14、或いはマスク回路16から入力する値と、プログラムカウンタ12から読み出されたアドレス値との排他的論理和をビット単位でとり、その結果をインデックスとして分岐ヒストリテーブル15に出力する。命令フェッチ制御回路11は、そのインデックスにより分岐ヒストリテーブル15から読み出された状態(予測情報)に従って分岐命令による分岐が発生するか否か予測する。命令キャッシュ2に格納された命令は、その予測結果に従ってプリフェッチされ、IBF101を介して発行制御回路11に送られる。プリフェッチされる命令は、分岐不成立と予測すれば、プログラムカウンタ12が示すアドレスに格納された命令であり、分岐成立と予測すれば、分岐命令キャッシュ13に格納されている対応の分岐先アドレスに格納された命令である。
分岐命令数カウンタ部18は、実行が完了した分岐命令数をカウントするためのものである。
比較器18aは、所定値(ここでは65536)と加算器18bの出力値を比較し、それらが一致する場合に出力信号をHにするものである。その加算器18bは、RSB4が出力する分岐命令の完了通知により、レジスタ18dの値とそのRSB4が出力する値(ここでは1)を加算し、その加算結果を出力する。その加算結果は、比較器18aの他に、論理積演算回路18cに出力される。その論理積演算回路18cは、その加算結果と、比較器18aの出力信号を反転した信号との論理積をビット単位でとる。レジスタ18dには、その結果が格納される。論理積演算回路18cに比較器18aの出力信号が反転されて入力されることから、その出力信号がHとなるとレジスタ18dに格納される値は0となる。このようなことから、分岐命令数カウンタ部18は、比較器18aが出力信号をHに変化させてから次にHに変化させるまでの間、RSB4が分岐命令の完了通加を出力した回数をカウントする。 分岐命令キャッシュミス数カウンタ部19は、所定値の分岐命令を実行する間に、分岐命令キャッシュ13で発生したキャッシュミス数をカウントするためのものである。
比較器19aは、所定値(ここでは512)と加算器19bの出力値を比較し、その出力値が所定値より大きい場合に出力信号をHにするものである。その加算器19bは、RSB4が出力する分岐命令のキャッシュミス通知により、レジスタ19dの値とそのRSB4が出力する値(ここでは1)を加算し、その加算結果を出力する。その加算結果は、比較器19aの他に、論理積演算回路19cに出力される。その論理積演算回路19cは、その加算結果と、分岐命令数カウンタ部18の比較器18aの出力信号を反転した信号との論理積をビット単位でとる。レジスタ19dには、その結果が格納される。論理積演算回路19cに比較器18aの出力信号が反転されて入力されることから、その出力信号がHとなるとレジスタ19dに格納される値は0となる。このようなことから、分岐命令数カウンタ部19は、比較器18aが出力信号をHに変化させてから次にHに変化させるまでの間、RSB4が分岐命令のキャッシュミス通知を出力した回数をカウントする。
分岐命令キャッシュミス率閾値越えフラグバッファ部(以降「バッファ部」と略記)20は、比較器18aが出力信号をHとした際の比較器19aの信号値を過去、複数分保存するためのものである。ここでは、過去4回分、保存すると想定する。
シフタ20aは、レジスタ20bが保持している値を1ビット、シフトするものである。レジスタ20bは、比較器18aの出力信号がHとなると、シフタ20aがシフトした後の値を保持する。比較器19aの信号は、シフトする値のないビットの値としてレジスタ20bに入力されて保持される。それにより、レジスタ20bの4ビットの各値が「0110」、比較器19aの信号値が「1」の状態で比較器18aの出力信号がHとなった場合には、レジスタ20bには新たに「1101」が保持されることになる。
比較器22は、レジスタ20bの値と4ビットの値「0000」を比較し、それらが一致している場合に出力信号をHとするものである。同様に比較器23は、レジスタ20bの値と4ビットの値「1111」を比較し、それらが一致している場合に出力信号をHとするものである。比較器22の出力信号がHとなることは、分岐命令を65536個実行する間に512個より多くのキャッシュミスが発生する状況が連続して4回以上、継続したことを意味する。比較器23の出力信号がHとなることは、分岐命令を65536個実行する間に512個以下のキャッシュミスが発生する状況が連続して4回以上、継続したことを意味する。
モードレジスタ部21は、論理積演算回路21a、論理和演算回路21b、及びレジスタ21cを備えている。比較器22の出力信号は、反転されて論理積演算回路21bに入力される。論理積演算回路21bは、その反転された出力信号と、レジスタ21cの値の論理積を算出する。それにより、その算出結果は、レジスタ21cの値が「1」であり、且つ比較器22の出力値が「0」の場合に「1」となる。
論理積演算回路21の算出結果は論理和演算回路21bに出力され、その演算回路21bによって、比較器23の出力値との論理和が算出される。レジスタ21cには、その算出結果が保持される。その算出結果は、論理積演算回路21a、及び比較器23の各出力値の一方が「1」の場合に「1」となる。
上記マスク回路16には、レジスタ21cに保持された値が反転されて入力される。その値は、比較器23の出力値が「1」となるか、或いはレジスタ21cに「1」が保持された状態で比較器22の出力値が「0」となった場合に「1」となる。「1」となった値が「0」となるのは、比較器23の出力値が「0」となり、且つ比較器23の出力値が「1」となった場合である。
このようにして、本実施の形態では、分岐命令キャッシュ13におけるキャッシュミスの発生に注目して、分岐ヒストリレジスタ14のなかで有効とするビット幅を動的に変化させるようにしている。これは、以下のような理由からである。
図5は、ベンチマークと分岐予測ミス率の関係を説明する図である。その関係は、分岐ヒストリレジスタ14のビット幅が7ビットの場合のものである。
分岐予測ミス率の観点では、SPECベンチマークには最近の分岐命令の分岐/非分岐の履歴に強く依存するという特徴があることから、分岐命令が実際に分岐するか否かの予測は複雑なものとなる。そのため、分岐予測ミス率は、SPECベンチマークの種類によって大きく異なり、分岐予測ミス率が低いものから高いものまである。
一方、TPC−Cベンチマークの場合には、最近の分岐命令の分岐/非分岐にはあまり依存せず、分岐命令が実際に分岐するか否かの予測は比較的に単純なものとなる。しかし、異なるアドレスの分岐命令の出現頻度が高いため、分岐命令キャッシュ13に対応するタグ情報等を格納できないことが発生し易く、また、分岐ヒストリテーブル15も容量不足により、状態(予測情報)を独立に格納できる分岐命令数が減少する。それにより、分岐予測ミス率は高くなってしまうことが多いのが実状である。このようなことから、プログラムがSPECベンチマーク、TPC−Cベンチマークの何れであるかを見分けるのは非常に困難である。
ベンチマーク以外のプログラムでは、2レベル型分岐予測装置が行う分岐予測そのものの精度が低いことがありうる。分岐予測ミス率では、そのような相性の関係を正確に判断することは非常に困難である。このようなことからも、異なるアドレスの分岐命令の出現頻度を表す指標(情報)として採用することは非常に困難である。分岐予測ミス率に着目して分岐ヒストリレジスタ14のビット幅を変更する場合、その変更制御を安定的に行えない可能性があることがシミュレーションによって判明している。具体的には、分岐予測ミス率が高いことからビット幅をより小さくするとそのミス率が低下し、その低下によってビット幅をより大きくするというように、ビット幅を頻繁に変更するようなことが発生してしまう可能性がある。そのような不安定性は望ましくない。
分岐命令キャッシュ13のキャッシュミス率の観点では、SPECベンチマークには分岐命令数が比較的に少ないという特徴があるため、そのキャッシュミス率は低い値を示すと言える。逆にTPC−Cベンチマークでは、分岐命令数が比較的に多いという特徴があるため、そのキャッシュミス率は高い値を示すと言える。このようなことから、そのキャッシュミスに着目することにより、プログラム中に存在する異なるアドレスの分岐命令の出現頻度を正確に予測することができる。
図6は、ベンチマークと分岐命令キャッシュミス率の関係を説明する図である。
図6に示すように、SPECベンチマークとTPC−Cベンチマークとでは、分岐命令キャッシュミス率に明確な差が存在している。このため、分岐命令キャッシュミスに着目することにより、分岐命令の出現頻度に応じたビット幅の動的な変更を正確に行うことができる。それにより、プログラムとしてSPECベンチマーク、及びTPC−Cベンチマークを考慮する場合には、その両方で最大限の性能を発揮させることができる。
図8は、分岐ヒストリレジスタ14の有効とするビット幅の動的な変更を行った場合のベンチマークと分岐予測ミス率の関係を説明する図である。分岐命令キャッシュミスに着目してビット幅を動的に変更することにより、図8に示すように、その変更を行わない場合(図5)と比較して、各ベンチマークの分岐予測ミス率はより低く抑えられている。そのため、ベンチマークの種類に係わらず、より性能が発揮できていることが判る。
図7は、本実施の形態による分岐予測装置1の動作の流れを示すフローチャートである。分岐ヒストリレジスタ14の有効とするビット幅の動的な変更に着目して、それに係わる各部の動作、及びその一連の流れを示したものである。次に図7を参照して、分岐予測装置1の動作について詳細に説明する。
先ず、ステップS1では、RSB4が次の命令をフェッチして実行する。その命令は発行制御回路3が発行したものであり、フェッチした命令の実行後はステップS2に移行して、その命令が分岐命令か否か判定する。実行した命令が分岐命令であった場合、判定はYESとなってステップS3に移行する。そうでない場合には、判定はNOとなって上記ステップS1に戻る。
ステップS3では、分岐命令数カウンタ部18に分岐命令の完了通知を出力し、加算器18bによりレジスタ18dに保持された値をインクリメントさせる。続くステップS4では、分岐命令キャッシュミスが発生したか否か判定する。そのミスの発生が命令フェッチ制御回路11から通知された場合、判定はYESとなり、ステップS5でキャッシュミス通知を分岐命令キャッシュミス数カウンタ部19に出力し、加算器19bによりレジスタ19dに保持された値をインクリメントさせる。その後はステップS6に移行する。一方、そうでない場合には、判定はNOとなり、次にそのステップS6に移行する。
ステップS6〜S12は、各カウンタ部18、19、バッファ部20、モードレジスタ部21、比較器22、23が自動的に動作することで実現される。
先ず、ステップS6では、比較器18aが加算器18bの加算結果を所定値である65536と比較する。それにより、それらが一致すると比較した場合、判定はYESとなってステップS7に移行し、そうでない場合には、判定はNOとなり、ここで一連の動作は終了する。
ステップS7では、比較器19aが加算器19bの加算結果を所定値である512と比較する。それにより、加算結果が512より大きいと比較した場合、判定はYESとなってステップS8に移行し、1ビットの出力値を「1」にセットする。その後はステップS10に移行する。そうでない場合には、判定はNOとなってステップS9に移行し、その出力値を「0」にセットする。それにより、出力値を「0」に維持させたままの状態でステップS10に移行する。
ステップS10では、比較器22、23により、バッファ部20bのレジスタ20bに保持された4ビットの値が「0000」「1111」及びその他の何れであるか判定する。その値が「0000」と判定した場合、ステップS11でモードレジスタ部21のレジスタ21cに0を保持させた後、ステップS13に移行する。その値が「1111」と判定した場合には、ステップS12でそのレジスタ21cに1を保持させた後、ステップS13に移行する。その値がそれら以外と判定した場合には、次にそのステップS13に移行する。
ステップS13では、RSB4が分岐命令数カウンタ部18に分岐命令の完了通知、分岐命令キャッシュミス数カウンタ部19にキャッシュミス通知をそれぞれ出力することにより、それらのレジスタ18d、19dの値を0にする。その後、一連の動作が終了する。
なお、本実施の形態では、分岐命令キャッシュミス率が4回以上、連続して閾値(分岐命令65536個のなかでキャッシュミス数が512より大きいミス率)を越えたか否かにより、分岐ヒストリレジスタ14のビット幅をより小さくさせるようにしているが、そのような回数の条件を設けなくとも良い。つまり、そのミス率が閾値を越えた場合にビット幅を直ちにより小さくさせるようにしても良い。或いは、予め定めた回数のなかで閾値を越えた回数をカウントし、カウントした回数が所定値より大きい場合にビット幅をより小さくさせるようにしても良い。ミス率が閾値を越えたか否かではなく、その大きさによりビット幅をより小さくすべきか否か判定するようにしても良い。それら以外の方法を採用しても良い。これはビット幅をより大きくする場合でも同様である。
異なるアドレスの分岐命令の出現頻度を表す情報として、分岐命令キャッシュミス率に注目しているが、それ以外の情報に注目しても良い。例えば命令キャッシュミス率と分岐命令の出現頻度の積を求め、それをキャッシュミス率の代わりに用いても良い。キャッシュミス率については、分岐命令キャッシュ13とは異なる種類のキャッシュのものであっても良い。つまり採用するキャッシュの種類に応じたもので良い。
異なるアドレスの分岐命令の出現頻度はプログラムによって異なり、実行させるプログラムが、コンテキストスイッチにより順次、変わる場合もある。このことから、コンテキスト単位でその出現頻度の検出結果や有効とする(適用させる)分岐ヒストリレジスタ14のビット幅情報を保存して、コンテキストの変更に対応するようにしても良い。そのようにした場合には、より早く性能を最大限に発揮させることができるようになり、分岐ヒストリテーブル15を汚さずに済む。
出現頻度を考慮すべき分岐命令は、分岐命令のアドレスが異なるものである。そのアドレスによって分岐ヒストリテーブル15のインデックスは変化する。このことから、分岐命令のアドレスのインデックス毎に、異なるアドレスの分岐命令の出現頻度の検出結果や有効とする(適用させる)分岐ヒストリレジスタ14のビット幅情報を保存し、フェッチする命令のアドレスのインデックスに応じて適用する分岐ヒストリレジスタ14のビット幅を変更しても良い。
分岐ヒストリレジスタ14のなかで有効とするビット幅は2段階で変更しているが、より他段階で変更するようにしても良い。その場合には、異なるアドレスの分岐命令の出現頻度によって段階的に順次ビット幅を変更するか、或いはその出現頻度の大きさに応じて変更すべきビット幅を選択すれば良い。

Claims (6)

  1. 最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行う分岐予測装置において、
    異なるアドレスの分岐命令の出現頻度を検出する頻度検出手段と、
    前記頻度検出手段が検出した出現頻度に基づいて、前記分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更するビット幅変更手段と、
    を具備することを特徴とする分岐予測装置。
  2. 請求項1記載の分岐予測装置であって、
    前記ビット幅変更手段は、前記頻度検出手段が検出する出現頻度が所定値を越えた場合に前記ビット幅を必要に応じてより小さくし、該出現頻度が該所定値以下の場合に必要に応じて該ビット幅をより大きくする。
  3. 請求項1記載の分岐予測装置であって、
    前記ビット幅変更手段は、前記頻度検出手段が検出した複数の出現頻度を基に、前記ビット幅を動的に変更する。
  4. 請求項1記載の分岐予測装置であって、
    前記頻度検出手段は、前記出現頻度として、分岐命令の有無を示すタグ情報を格納したキャッシュにおけるキャッシュミス率を検出する。
  5. 最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行う分岐予測方法において、
    異なるアドレスの分岐命令の出現頻度を検出し、
    該検出した出現頻度に基づいて、前記分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更する、
    ことを特徴とする分岐予測方法。
  6. 最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行うプロセサにおいて、
    異なるアドレスの分岐命令の出現頻度を検出する頻度検出手段と、
    前記頻度検出手段が検出した出現頻度に基づいて、前記分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更するビット幅変更手段と、
    を具備することを特徴とするプロセサ。
JP2006512575A 2004-04-21 2005-04-20 分岐予測装置、その方法、及びプロセサ Active JP4213181B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004125465 2004-04-21
JP2004125465 2004-04-21
PCT/JP2005/007557 WO2005103886A1 (ja) 2004-04-21 2005-04-20 分岐予測装置、その方法、及びプロセサ

Publications (2)

Publication Number Publication Date
JPWO2005103886A1 true JPWO2005103886A1 (ja) 2008-03-13
JP4213181B2 JP4213181B2 (ja) 2009-01-21

Family

ID=35197153

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006512575A Active JP4213181B2 (ja) 2004-04-21 2005-04-20 分岐予測装置、その方法、及びプロセサ

Country Status (7)

Country Link
US (1) US7827393B2 (ja)
EP (1) EP1739549B1 (ja)
JP (1) JP4213181B2 (ja)
KR (1) KR100785723B1 (ja)
CN (1) CN100520713C (ja)
DE (1) DE602005027338D1 (ja)
WO (1) WO2005103886A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7523298B2 (en) * 2006-05-04 2009-04-21 International Business Machines Corporation Polymorphic branch predictor and method with selectable mode of prediction
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
CN101533344B (zh) * 2008-03-10 2011-04-06 王得安 一种用以储存目标地址的分支目标缓冲器系统及方法
CN101763248A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 用于多模式分支预测器的系统和方法
CN102053818B (zh) * 2009-11-05 2014-07-02 无锡江南计算技术研究所 分支预测方法及装置
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
JPH0628184A (ja) * 1991-08-26 1994-02-04 Internatl Business Mach Corp <Ibm> ブランチ予測方法及びブランチプロセッサ
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
JP3760041B2 (ja) * 1996-12-09 2006-03-29 松下電器産業株式会社 分岐予測する情報処理装置
JPH10240526A (ja) 1997-02-27 1998-09-11 Fujitsu Ltd 分岐予測装置
US6427206B1 (en) * 1999-05-03 2002-07-30 Intel Corporation Optimized branch predictions for strongly predicted compiler branches
JP2002163150A (ja) 2000-11-28 2002-06-07 Toshiba Corp プロセッサ
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
JP4027620B2 (ja) 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7461243B2 (en) * 2005-12-22 2008-12-02 Sun Microsystems, Inc. Deferred branch history update scheme

Also Published As

Publication number Publication date
EP1739549B1 (en) 2011-04-06
DE602005027338D1 (de) 2011-05-19
EP1739549A4 (en) 2008-04-30
EP1739549A1 (en) 2007-01-03
JP4213181B2 (ja) 2009-01-21
KR100785723B1 (ko) 2007-12-18
KR20070009594A (ko) 2007-01-18
US7827393B2 (en) 2010-11-02
WO2005103886A1 (ja) 2005-11-03
CN1947093A (zh) 2007-04-11
CN100520713C (zh) 2009-07-29
US20070005945A1 (en) 2007-01-04

Similar Documents

Publication Publication Date Title
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US10209993B2 (en) Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes
CN100487641C (zh) 预测提示指令的运行时间更新
JP5579930B2 (ja) 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置
US8078852B2 (en) Predictors with adaptive prediction threshold
TWI386850B (zh) 用於主動式分支目標位址快取記憶體管理之方法以及裝置
CN111886580B (zh) 用于控制分支预测的装置和方法
US7831817B2 (en) Two-level branch prediction apparatus
US10613869B2 (en) Branch target address provision
US7085920B2 (en) Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction
CN112543916B (zh) 多表分支目标缓冲器
US8832418B2 (en) Efficient branch target address cache entry replacement
US10664280B2 (en) Fetch ahead branch target buffer
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
EP1853995B1 (en) Method and apparatus for managing a return stack
US7827393B2 (en) Branch prediction apparatus, its method and processor
CN114546485A (zh) 用于预测子程序返回指令的目标的取指单元
JP3725547B2 (ja) 限定ラン分岐予測
US10324727B2 (en) Memory dependence prediction
GB2592661A (en) An apparatus and method for performing branch prediction
JP2007293814A (ja) プロセッサ装置とその処理方法
US20230195467A1 (en) Control flow prediction
JP4002288B2 (ja) 情報処理装置
CN117130666A (zh) 配置方法、分支预测器、指令识别器和电子设备
JP2006163548A (ja) 不安定状態を利用する予測器、プロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080722

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081028

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081029

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111107

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4213181

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111107

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121107

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121107

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131107

Year of fee payment: 5