WO2021059906A1 - 分岐予測回路および命令処理方法 - Google Patents

分岐予測回路および命令処理方法 Download PDF

Info

Publication number
WO2021059906A1
WO2021059906A1 PCT/JP2020/033283 JP2020033283W WO2021059906A1 WO 2021059906 A1 WO2021059906 A1 WO 2021059906A1 JP 2020033283 W JP2020033283 W JP 2020033283W WO 2021059906 A1 WO2021059906 A1 WO 2021059906A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
instruction
branch
branch prediction
unit
Prior art date
Application number
PCT/JP2020/033283
Other languages
English (en)
French (fr)
Inventor
裕基 浅野
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US17/761,293 priority Critical patent/US20220350608A1/en
Publication of WO2021059906A1 publication Critical patent/WO2021059906A1/ja

Links

Images

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/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

Definitions

  • FIG. 8 is a diagram schematically showing a process for determining the result of branch prediction.
  • FIG. 9 is a diagram schematically showing the update process of UTAT and BTB in the branch prediction control unit 63.
  • the UTAT update process will be described.
  • the execution completion notification, taken / ntaken, TA, and the instruction address of the branch instruction are input from the branch instruction execution unit 50 to the branch prediction control unit 63.
  • the branch prediction control unit 63 compares the UTA included in the TA with the upper address of the instruction address of the branch instruction.
  • the branch prediction circuit of the present embodiment stores the UTA, which is the higher address of the branch destination address (BPA), which is the instruction address of the branch prediction destination, in the UTAT table. Further, the branch prediction circuit of the present embodiment BTB contains information that combines the instruction address for which the branch instruction was executed in the past, the LTA of the branch prediction destination address, and the UP indicating the storage destination of the UTA of the branch prediction destination address on the UTAT. Hold as. Since the address arrangement of the instruction is often local, the UTA is likely to require a small number of entries for the BTB. Therefore, the branch prediction circuit of the present embodiment can suppress the amount of data required for each BTB entry by storing the upper address of the branch prediction destination address as UTAT, and thus the amount of hardware required for branch prediction. Can be suppressed.
  • BPA branch destination address
  • the branch prediction circuit of the present embodiment refers to the UP when generating the BPA which is the address of the branch prediction destination, and when the UP is other than 0, the corresponding UTAT UTA and BTB LTA are connected to form the BPA. Generate. As described above, when UP is other than 0, it corresponds to branch prediction to a distant address in the memory address space.

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

[課題]必要なハードウェア量および処理速度の低下を抑制しつつ、幅広いアドレスの範囲で分岐予測を行うことができる分岐予測回路を提供する。 [解決手段]分岐予測回路を、分岐先アドレス保存部1と、上位アドレス保存部2と、アドレス生成部3と、分岐命令実行部4を備える構成とする。分岐先アドレス保存部1は、過去に実行した分岐命令の第1のアドレスと、次に実行する第2のアドレスの下位アドレスと、第2のアドレスの上位アドレスの参照先および参照の要否の情報を保存する。上位アドレス保存部2は、第2のアドレスの上位アドレスを保存する。アドレス生成部3は、新たに実行する命令の第3のアドレスが、第1のアドレスと一致したときに、第2のアドレスの上位アドレスの参照先および参照の要否の情報に基づいて、上位アドレスと下位アドレスと連結して第2のアドレスを生成する。分岐命令実行部4は、第2のアドレスの命令の投機実行を指示する。

Description

分岐予測回路および命令処理方法
 本発明は、プロセッサのパイプライン処理における分岐予測技術に関するものである。
 性能が重要なプロセッサでは、処理の並列度を高めるためパイプライン処理による命令の実行が行われている。命令を実行する際に、分岐命令が存在すると、その分岐命令が解決するまで次に実行する命令が確定しない。そのため、分岐命令が解決するまでの間、パイプラインが停止し性能が低下し得る。この性能低下を防いで性能を向上させるために、分岐予測機能を実装して分岐命令の結果を予測し、投機的に次の命令を実行する方法がとられている。
 分岐予測機能が予測した分岐結果と分岐命令の実行結果が異なる場合は投機的に実行した処理をすべてキャンセルしてやり直す必要がある。しかし、十分な予測精度があれば全体として性能を向上させることができる。分岐予測は、履歴として保持されている過去に実行した分岐命令の実行結果を基に行われる。そのため、予測精度を向上するためには、分岐命令の実行結果、すなわち、分岐命令の次に実行する命令のアドレスをより多くの場合について記憶しておくことが望ましい。しかし、そのような方法で予測精度を向上するためには、分岐予測の履歴を保持するハードウェア量の増大が問題となる。そのため、必要なハードウェア量を抑制しつつ予測精度を維持することできることが望ましい。そのような、ハードウェア量の増大を抑制し、予測精度を維持する技術としては、例えば、特許文献1のような技術が開示されている。
 特許文献1は、パイプライン処理を行うプロセッサにおける分岐予測システムに関するものである。特許文献1の分岐予測システムは、BTB(Branch Target Buffer)に、過去に実行した分岐命令の命令アドレスと、分岐予測先のアドレスの下位アドレスを関連づけて保持している。特許文献1の分岐予測システムは、命令フェッチするアドレスがBTBに保持している分岐命令の命令アドレスと一致したときに、分岐命令の命令アドレスの上位のアドレスと分岐先の下位アドレスを連結して分岐予測先のアドレスを生成し、分岐予測処理を行っている。特許文献1の分岐予測システムは、そのように、分岐先の下位アドレスのみを保持することで、ハードウェア量の増大を抑制しつつ、分岐予測処理を行っている。
特開平8-234980号公報
 しかしながら、特許文献1の技術は次のような点で十分ではない。特許文献1では、分岐命令の命令アドレスの上位アドレスと、BTBに保持している分岐先の下位アドレスを連結して、分岐予測先のアドレスを生成している。そのような構成のため、特許文献1では、分岐予測先が分岐命令の命令アドレスと上位アドレスが同一の領域、すなわち、メモリ空間上、近距離の場所の場合には予測精度を維持することができるが、離れた場所への分岐を予測することはできない。そのため、動的なメモリ確保を行う場合など、メモリ空間上離れた距離に配置された命令を実行する場合には分岐予測を行えないことで、処理速度が低下する恐れがある。
 本発明は、必要なハードウェア量および処理速度の低下を抑制しつつ、幅広いアドレスの範囲で分岐予測を行うことができる分岐予測回路を提供することを目的としている。
 上記の課題を解決するため、本発明の分予測回路は、分岐先アドレス保存手段と、上位アドレス保存手段と、アドレス生成手段と、分岐命令実行手段を備えている。分岐先アドレス保存手段は、過去に実行した分岐命令の第1のアドレスと、分岐命令の実行結果として次に実行する命令の第2のアドレスの下位アドレスと、第2のアドレスの上位アドレスの選択に用いる情報および上位アドレスの参照の要否を示す情報を関連づけて保存する。上位アドレス保存手段は、第2のアドレスの上位アドレスを保存する。アドレス生成手段は、新たに実行する命令の第3のアドレスが、分岐先アドレス保存手段が保存している第1のアドレスと一致したときに、上位アドレスの参照が要である場合に第2のアドレスの上位アドレスの選択に用いる情報に対応する上位アドレスを読み出し、分岐先アドレス保存手段が保存している下位アドレスと連結して第2のアドレスを生成する。また、アドレス生成手段は、上位アドレスの参照が否である場合に第3のアドレスの上位アドレスと分岐先アドレス保存手段が保存している下位アドレスを連結して第2のアドレスを生成する。分岐命令実行手段は、アドレス生成手段が生成した第2のアドレスの命令を投機実行する。
 本発明の分岐予測方法は、過去に実行した分岐命令の第1のアドレスと、分岐命令の実行結果として次に実行する命令の第2のアドレスの上位アドレスの選択に用いる情報および上位アドレスの参照の要否を示す情報と、第2のアドレスの下位アドレスとを関連づけて保存する。本発明の分岐予測方法は、第2のアドレスの上位アドレスを保存する。本発明の分岐予測方法は、新たに実行する命令の第3のアドレスが、保存している第1のアドレスと一致したときに、上位アドレスの参照が要である場合に第2のアドレスの上位アドレスの選択に用いる情報に対応する上位アドレスを読み出し、保存している下位アドレスと連結して第2のアドレスを生成する。本発明の分岐予測方法は、上位アドレスの参照が否である場合に第3のアドレスの上位アドレスと保存している下位アドレスを連結して第2のアドレスを生成する。本発明の分岐予測方法は、生成した第2のアドレスの命令を投機実行する。
 本発明によると、必要なハードウェア量および処理速度の低下を抑制しつつ、幅広いアドレスの範囲で分岐予測を行うことができる。
本発明の第1の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の命令フェッチ部における処理を模式的に示す図である。 本発明の第2の実施形態の上位アドレステーブル部の構成の例を示す図である。 本発明の第2の実施形態の分岐予測制御部の構成を示す図である。 本発明の第2の実施形態の分岐予測部におけるヒット判定処理を模式的に示す図である。 本発明の第2の実施形態の分岐予測先アドレスを算出する処理を模式的に示す図である。 本発明の第2の実施形態の分岐予測の結果を判断する際の処理を模式的に示す図である。 本発明の第2の実施形態の各データの更新処理を模式的に示す図である。 本発明と対比した構成におけるアドレスの例を示した図である。
 (第1の実施形態)
 本発明の第1の実施形態について図を参照して詳細に説明する。図1は、本実施形態の分岐予測回路の構成の概要を示した図である。本実施形態の分岐予測回路は、分岐先アドレス保存部1と、上位アドレス保存部2と、アドレス生成部3と、分岐命令実行部4を備えている。分岐先アドレス保存部1は、過去に実行した分岐命令の第1のアドレスと、分岐命令の実行結果として次に実行する命令の第2のアドレスの下位アドレスと、第2のアドレスの上位アドレスの選択に用いる情報および上位アドレスの参照の要否を示す情報を関連づけて保存する。上位アドレス保存部2は、第2のアドレスの上位アドレスを保存する。アドレス生成部3は、新たに実行する命令の第3のアドレスが、分岐先アドレス保存部1が保存している第1のアドレスと一致したときに、上位アドレスの参照が要である場合に第2のアドレスの上位アドレスの選択に用いる情報に対応する上位アドレスを読み出し、分岐先アドレス保存部1が保存している下位アドレスと連結して第2のアドレスを生成する。また、アドレス生成部3は、上位アドレスの参照が否である場合に第3のアドレスの上位アドレスと分岐先アドレス保存部1が保存している下位アドレスを連結して第2のアドレスを生成する。分岐命令実行部4は、アドレス生成部3が生成した第2のアドレスの命令を投機実行する。
 本実施形態の分岐予測回路は、分岐予測を行う際のアドレスを上位アドレスと下位アドレスに分けて保持し、分岐命令を実行する際に結合して実行先のアドレスを生成している。本実施形態の分岐予測回路は、上位アドレスを共通の情報として保存することができるため、アドレスの保存に必要なハードウェア量を抑制することができる。また、上位アドレスの参照の要否を示す情報を基に、分岐先のアドレスを生成しているので、アドレス空間上、近距離の予測の場合には、上位アドレステーブル上のデータを必要としない。そのため、上位アドレステーブルの更新の頻度を抑制することで処理速度の低下を抑制しつつ、アドレス空間上、近距離の予測の場合と、離れたアドレスへの分岐を予測する場合のいずれにおいても予測処理を行うことができる。その結果、本実施形態の分岐予測回路は、必要なハードウェア量および処理速度の低下を抑制しつつ、幅広いアドレスの範囲で分岐予測を行うことができる。
 (第2の実施形態)
 本発明の第2の実施形態について図を参照して詳細に説明する。図2は、本実施形態の分岐予測回路の構成を示したブロック図である。本実施形態の分岐予測回路は命令フェッチ部10と、命令キャッシュ部20と、デコーダ部30と、分岐命令スケジューラ部40と、分岐命令実行部50と、分岐予測部60を備えている。
 本実施形態の分岐予測回路は、パイプライン処理機能を有するプロセッサに実装され、分岐予測に関する処理を行う回路である。以下の説明は、本実施形態の分岐予測回路が64bitのアドレス空間に8Byteで配置された命令を実行するプロセッサに実装される場合を例に行う。本実施形態の分岐予測回路および実装先のプロセッサが処理する命令は、8Byte以外の表現であってもよく、また、アドレス空間は、64bit以外の設定であってもよい。
 命令フェッチ部10の構成について説明する。図3は、命令フェッチ部10における命令の処理を模式的に示した図である。命令フェッチ部10は、命令フェッチ(Instruction Fetch)機能を有する。命令フェッチ部10は、次に実行する命令のアドレスを選択し、選択したアドレスを命令キャッシュ部20および分岐予測部60に出力する。また、命令フェッチ部10は、さらにプログラムカウンタ11を備えている。プログラムカウンタ11は、コンピュータプログラムが実行を要求する命令のアドレスを保存している。
 命令フェッチ部10は、命令フェッチするアドレス、すなわち、処理を実行する命令のアドレスを3分類のアドレスのいずれかから選択する。3分類のうち1つ目は、逐次的に命令が進行する場合に選択するアドレスである。逐次的に命令が進行する場合には、プログラムカウンタ11の値を1回の命令の命令長である8Byte分カウントアップしたアドレスa1が選択される。3分類のうち2つ目は、分岐予測部60から投機実行の指示S1を受けた場合に選択する予測先アドレス(Branch Prediction Address:BPA)である。3分類のうち3つ目は、分岐予測部60から分岐予測失敗通知S2を受けた場合に選択する分岐予測失敗再開アドレスc1である。命令フェッチ部10は、選択したアドレスを命令フェッチアドレスとして命令キャッシュ部20および分岐先バッファ部61に出力する。また、命令フェッチ部10は、選択した命令アドレスを出力する際にプログラムカウンタ11を更新する。
 命令キャッシュ部20は、メモリから読み出された命令を一時的に保存するキャッシュメモリである。命令キャッシュ部20は、命令フェッチ部10から入力された命令アドレスに対応するデータがキャッシュに存在する場合には、保持している命令データを命令アドレスとともにデコーダ部30に出力する。命令キャッシュ部20は、命令フェッチ部10から入力された命令アドレスに対応するデータがキャッシュに存在しない場合には、メモリから対象のデータを読み出しキャッシュに保持するとともにデコーダ部30に出力する。
 デコーダ部30は、命令キャッシュ部20から入力された命令データを解析し、プロセッサが有する命令セットの仕様に合わせて分類し、命令スケジューラ(Reservation Station)に命令データとアドレスを登録する。デコーダ部30は、命令データが分岐命令を示すとき、分岐命令スケジューラ部40に命令データと命令アドレスを登録する。
 分岐命令スケジューラ部40は、実行を待つ分岐命令の命令スケジューラ(Reservation Station)である。分岐命令スケジューラ部40は、BRS(Branch Reservation Station)とも呼ばれる。分岐命令スケジューラ部40は、分岐命令実行部50の空きを確認し、実行可能なタイミングで分岐命令実行部50に命令データを出力する。
 分岐命令実行部50は、分岐命令を実行する。分岐命令実行部50は、BEP(Branch Execution Pipe)とも呼ばれる。分岐命令実行部50は、分岐命令を実行し、分岐する/分岐しない(以下、「taken/ntaken」という)の判断を行う。また、分岐命令実行部50は、分岐命令を実行し、taken/ntakenの結果を算出する際に、命令アドレス(Target Address:TA)を算出する。分岐命令実行部50は、taken/ntakenおよび命令アドレスの情報を分岐予測制御部63に出力する。
 分岐予測部60は、分岐予測に関する処理の制御と分岐予測の結果を判定する機能を有する。分岐予測部60は、分岐先バッファ部61と、上位アドレステーブル部62と、分岐予測制御部63をさらに備えている。
 分岐先バッファ部61は、過去に実行した分岐命令の命令アドレスと、分岐命令を実行した結果、得られる分岐命令の次に実行する命令、すなわち、分岐予測先の命令アドレスの下位アドレスであるLTA(Lower Target Address)を関連づけて保存している。分岐先バッファ部61は、BTB(Branch Target Buffer)とも呼ばれる。また、分岐先バッファ部61は、過去に実行した分岐命令の命令アドレスとLTAに、さらに上位アドレスの参照先を示す情報をUP(Upper target address table Pointer)として付加したデータを保存している。UPは、LTAに対応する上位アドレスのUTAT(Upper Target Address Table)上での格納位置を示す情報である。また、UPが0の場合は、過去に実行した分岐命令の命令アドレスと、分岐予測先の上位アドレスが同じであることを示すように設定されている。すなわち、UPが0の場合は、メモリ空間上において、新たに入力される命令アドレスと分岐予測先の上位アドレスが近い、近距離の分岐予測が行われる。
 分岐先バッファ部61は、過去に実行した分岐命令の命令アドレス、LTAおよびUPを関連づけたデータを、例えば、1024エントリ保存している。また、各エントリのことをBTBエントリとも呼ぶ。分岐先バッファ部61は、分岐先アドレス保存部と呼ぶこともできる。
 上位アドレステーブル部62は、分岐予測先の命令アドレスの上位アドレスであるUTA(Upper Target Address)を格納したデータテーブルを、UTATとして保存している。図4は、上位アドレステーブル部62のUTATの構成の例を示した図である。図4の例では、32bitのUTAが7個、UTATに保存されている。また、上位アドレステーブル部62は、上位アドレス保存部と呼ぶこともできる。
 分岐予測制御部63は、分岐先のアドレスを生成する機能と、分岐予測結果が実際の処理結果と一致するかを判定する機能を有する。分岐予測制御部63は、BPC(Branch Prediction Control)とも呼ばれる。分岐予測制御部63は、図5に示すようにBPAレジスタ101と、UTAポインタ102をさらに備えている。BPAレジスタ101は、分岐予測時に投機実行を行っている命令のアドレスを一時的に保持する。また、UTAポインタ102は、UTAの書き込み先の情報を保持している。図5の例では、BPAレジスタは61bit、UTAポインタは3bitのデータを保存できるように設定されている。また、分岐予測制御部63は、アドレス生成部と呼ぶこともできる。
 本実施形態の分岐予測回路の動作について説明する。始めに分岐予測を行う際の動作について説明する。命令キャッシュ部20は、プログラムカウンタ11から次に実行する命令のアドレスを読み出し、命令アドレスとして命令キャッシュ部20と分岐予測部60に出力する。
 命令フェッチ部10から命令フェッチアドレスが入力されると、分岐予測部60は、対応するBTBエントリを分岐先バッファ部61から読み出してヒット判定を行う。図6は、分岐予測部60におけるヒット判定処理を模式的に示した図である。図6では、BTB上において過去に実行した分岐命令の命令アドレスがtagとして示されている。分岐先バッファ部61は、図6に示すような命令フェッチアドレス[63:0]のうち[12:3]の部分をindexとして対応するエントリを読み出す。
 例えば、[12:3]が7であれば、分岐予測部60は、BTBの7番目のエントリを読み出す。BTBエントリを読み出すと、分岐予測部60は、新たに入力された命令アドレスである命令フェッチアドレスのtagと読み出したBTBエントリのtagの情報を比較し、ヒット判定を行う。
 命令フェッチアドレスと読み出したBTBエントリのtagの情報が一致した場合に、分岐予測部60は、ヒットと判定する。ヒットと判定すると、分岐予測部60は、ヒット判定の結果を投機実行指示として命令フェッチ部10と分岐予測制御部63に送る。
 ヒットしたと判定すると、分岐予測部60は、BTBエントリのUPを参照して、分岐予測先のアドレスであるBPAを生成する。図7は、分岐予測先のアドレスを算出する処理を模式的に示した図である。UPが0であるとき、上位アドレスが変化しない近距離の分岐予測として、分岐予測部60は、命令フェッチアドレスの上位32bitと読みだしたLTAを連結して、近距離予測アドレスであるBPAを生成する。
 また、UPが0以外のとき、分岐予測部60は、UPが示すUTATのエントリからUTAを読み出し、LTAと連結する。例えば、UPが3のとき、分岐予測部60は、UTATの3番目のエントリに保存されたUTAとLTAを連結する。分岐予測部60は、UTAとLTAを連結したアドレスに対し、命令アドレスアラインである最下位3bitに0を補完し、補完したアドレスを長距離予測アドレスであるBPAとする。
 BPAを生成すると、分岐予測部60は、ヒット判定の結果とBPAを命令フェッチ部10と分岐予測制御部63に出力する。ヒット判定の結果とBPAが入力されると、分岐予測制御部63は、入力されたBPAを分岐先レジスタに保存する。
 BPAが入力されると、命令フェッチ部10は、BPAに示されるアドレスを命令アドレスとして命令キャッシュ部20に送り、投機実行を開始させる。
 次に分岐処理および分岐予測結果の判定について説明する。命令フェッチ部10が命令アドレスを命令キャッシュ部20と分岐予測部60に出力し、命令アドレスが命令キャッシュ部20入力されると、命令キャッシュ部20は、入力された命令アドレスがキャッシュに存在するかを確認する。
 入力された命令アドレスに対応するデータがキャッシュにないとき、命令キャッシュ部20は、メモリから命令アドレスに対応するデータを読み出し、キャッシュメモリに保存する。また、命令キャッシュ部20は、命令アドレスと、メモリから読み出したデータをデコーダ部30に出力する。
 入力された命令アドレスに対応するデータがキャッシュに保存されているとき、命令キャッシュ部20は、命令アドレスに対応しているデータを命令データして命令アドレスとともにデコーダ部30に出力する。
 命令データおよび命令アドレスが入力されると、デコーダ部30は、入力された命令データを解析する。デコーダ部30は、命令データを命令セットの仕様に基づいて分類し、命令スケジューラに命令データと命令アドレスを登録する。命令データが分岐命令であるとき、デコーダ部30は、分岐命令スケジューラ部40に命令データと命令アドレスを登録する。
 命令データと命令アドレスが登録されると、分岐命令スケジューラ部40は、分岐命令実行部50の命令処理の空きを確認し、実行可能なタイミングで分岐命令実行部50に命令データを出力する。
 命令データが入力されると、分岐命令実行部50は、分岐命令を実行し、taken/ntakenの判断と、命令アドレスの算出を行う。分岐命令実行部50は、分岐命令の実行結果、すなわち、taken/ntakenの判断結果と、次に実行する命令アドレスの情報を分岐予測部60の分岐予測制御部63に出力する。
 分岐予測制御部63は、分岐命令の実行結果がtakenであれば命令アドレスが次に命令フェッチするアドレスと判断する。また、分岐予測制御部63は、分岐命令の実行結果がntakenであれば命令アドレスに8Byte加算したアドレスが次に命令フェッチするアドレスと判断する。
 次に命令フェッチするアドレスを判断すると、分岐予測制御部63は、次に命令フェッチすると判断したアドレスと、BPAレジスタに保存されているBPAを比較する。図8は、分岐予測の結果を判断する際の処理を模式的に示した図である。
 次に命令フェッチすると判断したアドレスと、BPAレジスタに保存されたBPAが一致しない場合について説明する。図8は、命令フェッチすると判断したアドレスと、BPAが一致しない場合の処理について示した図である。分岐予測制御部63は、分岐命令のアドレスと、BPAを比較し、命令フェッチすると判断したアドレスと、BPAが一致しない場合に分岐予測が失敗したと判断する。分岐予測が失敗したと判断すると、分岐予測制御部63は、分岐予測失敗通知と分岐予測失敗再開アドレスを命令フェッチ部10に通知する。また、分岐予測制御部63は、分岐予測失敗通知を命令キャッシュ部20、デコーダ部30、分岐命令スケジューラ部40および分岐命令実行部50に出力する。分岐予測失敗通知が入力されると、命令キャッシュ部20、デコーダ部30、分岐命令スケジューラ部40および分岐命令実行部50は、投機実行中の処理を破棄する。
 また、takenの実行結果が入力された際、分岐予測制御部63は、分岐命令の命令アドレスの上位アドレスと、UTAを比較する。分岐命令の命令アドレスの上位アドレスと、UTAが一致しないとき、分岐予測制御部63は、上位アドレステーブル部62にUTAの更新の要求を送りUTATを更新する。
 図9は、分岐予測制御部63におけるUTATおよびBTBの更新処理を模式的に示した図である。始めに、図9に示す処理のうち、UTATの更新処理について説明する。分岐命令の実行が完了すると、分岐命令実行部50から分岐予測制御部63に、実行完了通知、taken/ntaken、TAおよび分岐命令の命令アドレスが入力される。分岐命令の実行が完了すると、分岐予測制御部63は、TAに含まれるUTAと分岐命令の命令アドレスの上位アドレスを比較する。分岐予測制御部63は、命令実行の完了の通知と、takenの実行結果が入力された際に、分岐命令の命令アドレスの上位アドレスと、UTAの比較結果が一致しないとき、分岐予測制御部63は、UTA更新指示を生成する。UTA更新指示には、UTAのデータが付加されている。分岐予測制御部63は、生成したUTA更新指示を上位アドレステーブル部62に送る。また、分岐命令の実行完了通知が入力された際に、UTAポインタは、UTAポインタの値UWPを上位アドレステーブル部62に送るとともに、カウントアップを行う。また、UTA更新指示を生成した際に、分岐予測制御部63は、UPの値を生成する。UPの値は、UTATの更新指示を送る場合はUTAポインタの値が用いられる。UTATの更新指示を送らない場合は、UPの値は、0である。
 UTA更新指示およびUWPが入力されると、上位アドレステーブル部62は、UWPで指定されたエントリのUTAのデータを更新する。
 図9に示す処理のうち、BTBの更新処理について説明する。UTAの更新を要求する際、すなわち、分岐命令の実行の完了の通知と、takenの実行結果が入力された際に、分岐命令の命令アドレスの上位アドレスと、UTAの比較結果が一致しないとき、分岐予測制御部63は、BTBの更新を要求するBTB更新指示を生成する。BTB更新指示を生成すると、分岐予測制御部63は、分岐先バッファ部61にBTB更新指示を送る。また、BTB更新指示を送る際に、分岐予測制御部63は、生成したUPの値を分岐先バッファ部61に送る。
 BTB更新指示およびUPが入力されると、分岐先バッファ部61は、分岐命令の命令アドレスのindexに対応するエントリのtag、LTAおよびUPの値を更新する。tagおよびindex等は、図6に示す値と対応している。
 図10は、本実施形態と対比した例として、分岐先の命令アドレスを分割せずに保持している場合のデータ構成を模式的に示したものである。図10のように、命令アドレス1個あたりのデータ量が、112ビットのアドレスと分割しないでそのまま保持している場合に、1024エントリ分のデータ量は、約14000バイトとなる。一方で、本実施形態では、1アドレスあたり83ビットのBTB(図6)は、1024エントリ分で約10000バイト、UTAT(図4)は、32ビット7エントリ分で28バイトであるから、分岐予測先のアドレスの記憶に必要な容量を削減することができる。
 本実施形態では、UTAテーブルにUTAを7エントリ保持している場合について説明したが、エントリ数は7エントリ以外であってもよい。また、予測精度を向上させるために他の分岐予測方式と組み合わせてもよい。また、本実施形態では、LTAが29ビットである場合を例に説明したが、命令配置の局所性が高いプログラムを実行するプロセッサでは、本実施形態よりもUTAのビット幅を長くし、LTAを短く設定してもよい。そのような構成とすることでハードウェア量より抑制することができる。
 本実施形態の分岐予測回路は、分岐予測先の命令アドレスである分岐先アドレス(BPA)のうち上位アドレスであるUTAをUTATテーブルに保存している。また、本実施形態の分岐予測回路は、過去に分岐命令実行した命令アドレス、分岐予測先のアドレスのLTAおよび分岐予測先のアドレスのUTAのUTAT上の格納先を示すUPを組み合わせた情報をBTBとして保持している。命令のアドレス配置は、局所性があることが多いため、UTAは、BTBに対して少ないエントリ数で済む可能性が高い。よって、本実施形態の分岐予測回路は、分岐予測先のアドレスの上位アドレスをUTATとして保存することで各BTBエントリに必要なデータ量を抑制することができるため、分岐予測に必要なハードウェア量を抑制することができる。
 本実施形態の分岐予測回路は、分岐予測先のアドレスであるBPAを生成する際に、UPを参照し、UPが0以外のとき、対応するUTATのUTAとBTBのLTAを連結してBPAを生成する。このように、UPが0の以外の場合は、メモリアドレス空間上、離れたアドレスへの分岐予測に相当する。
 UPが0の場合は、メモリアドレス空間上、近距離の分岐予測に相当し、分岐予測回路は、分岐先アドレスの上位アドレスが命令アドレスの上位アドレスと同じであると判断する。UPが0の場合は、分岐予測回路は、命令アドレスの上位アドレスをUTAとして、BTBのLTAと連結してBPAを生成する。このように、本実施形態の分岐予測回路は、アドレス空間上、近距離のアドレスへの分岐予測と離れたアドレスへの分岐予測を行うことができる。以上のように、本実施形態の分岐予測回路は、必要なハードウェア量および処理速度の低下を抑制しつつ、幅広いアドレスの範囲で分岐予測を行うことができる。
 以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
 この出願は、2019年9月27日に出願された日本出願特願2019-176937を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 1  分岐先アドレス保存部
 2  上位アドレス保存部
 3  アドレス生成部
 4  分岐命令実行部
 10  命令フェッチ部
 11  プログラムカウンタ
 20  命令キャッシュ部
 30  デコーダ部
 40  分岐命令スケジューラ部
 50  分岐命令実行部
 60  分岐予測部
 61  分岐先バッファ部
 62  上位アドレステーブル部
 63  分岐予測制御部
 101  BPAレジスタ
 102  UTAポインタ

Claims (10)

  1.  過去に実行した分岐命令の第1のアドレスと、前記分岐命令の実行結果として次に実行する命令の第2のアドレスの下位アドレスと、前記第2のアドレスの上位アドレスの選択に用いる情報および前記上位アドレスの参照の要否を示す情報とを関連づけて保存する分岐先アドレス保存手段と、
     前記第2のアドレスの上位アドレスを保存する上位アドレス保存手段と、
     新たに実行する命令の第3のアドレスが、分岐先アドレス保存手段が保存している前記第1のアドレスと一致したときに、前記上位アドレスの参照が要である場合に前記第2のアドレスの上位アドレスの選択に用いる情報に対応する前記上位アドレスを読み出し、前記分岐先アドレス保存手段が保存している前記下位アドレスと連結して前記第2のアドレスを生成し、前記上位アドレスの参照が否である場合に前記第3のアドレスの上位アドレスと前記分岐先アドレス保存手段が保存している前記下位アドレスを連結して前記第2のアドレスを生成するアドレス生成手段と、
     前記アドレス生成手段が生成した前記第2のアドレスの命令を投機実行する分岐命令実行手段と
     を備える分岐予測回路。
  2.  前記上位アドレス保存手段は、前記第2のアドレスの上位アドレスをアドレステーブルとして保存し、
     前記第2のアドレスの上位アドレスの選択に用いる情報は、前記アドレステーブル上の順番を示す情報であることを特徴とする請求項1に記載の分岐予測回路。
  3.  前記第2のアドレスの上位アドレスの選択に用いる情報が所定の番号であったときに、前記上位アドレスの参照が要であることを示すように設定されていることを特徴とする請求項2に記載の分岐予測回路。
  4.  前記分岐命令実行手段は、前記第3のアドレスの命令の実行結果として得られた、前記第3のアドレスの命令の次に実行する命令の第4のアドレスと、前記第2のアドレスとを比較し、前記第4のアドレスと前記第2のアドレスが一致しなかったとき、
     前記第4のアドレスのデータで、前記分岐先アドレス保存手段と前記上位アドレス保存手段における前記第2のアドレスのデータを更新することを特徴とする請求項1から3いずれかに記載の分岐予測回路。
  5.  前記分岐命令実行手段は、前記第3のアドレスの命令の実行結果として得られた、前記第3のアドレスの命令の次に実行する命令の第4のアドレスと、前記第2のアドレスとを比較し、前記第4のアドレスと前記第2のアドレスが一致しなかったとき、
     前記第2のアドレスの命令の前記投機実行を破棄することを特徴とする請求項1から4いずれかに記載の分岐予測回路。
  6.  請求項1から5いずれかに記載の分岐予測回路と、
     実行する命令のアドレスを命令アドレスとして出力する命令フェッチ手段と、
     前記命令フェッチ手段が出力したアドレスの命令を実行する命令実行手段と
     を備え、
     前記分岐予測回路は、前記命令フェッチ手段が出力した前記アドレスを前記第3のアドレスとして用い、
     前記分岐予測回路が前記第2のアドレスを出力したとき、前記命令フェッチ手段は、前記第2のアドレスを前記命令アドレスとして出力するプロセッサ。
  7.  過去に実行した分岐命令の第1のアドレスと、前記分岐命令の実行結果として次に実行する命令の第2のアドレスの上位アドレスの選択に用いる情報および前記上位アドレスの参照の要否を示す情報と、前記第2のアドレスの下位アドレスとを関連づけて保存し、
     前記第2のアドレスの上位アドレスを保存し、
     新たに実行する命令の第3のアドレスが、保存している前記第1のアドレスと一致したときに、前記上位アドレスの参照が要である場合に前記第2のアドレスの上位アドレスの選択に用いる情報に対応する前記上位アドレスを読み出し、保存している前記下位アドレスと連結して前記第2のアドレスを生成し、前記上位アドレスの参照が否である場合に前記第3のアドレスの上位アドレスと保存している前記下位アドレスを連結して前記第2のアドレスを生成し、
     生成した前記第2のアドレスの命令を投機実行する分岐予測方法。
  8.  前記第2のアドレスの上位アドレスをアドレステーブルとして保存し、
     前記第2のアドレスの上位アドレスの選択に用いる情報は、前記アドレステーブル上の順番を示す情報であることを特徴とする請求項7に記載の分岐予測方法。
  9.  前記第2のアドレスの上位アドレスの選択に用いる情報が所定の番号であったときに、前記上位アドレスの参照が要であることを示すように設定されていることを特徴とする請求項8に記載の分岐予測方法。
  10.  前記第3のアドレスの命令の実行結果として得られた、前記第3のアドレスの命令の次に実行する命令の第4のアドレスと、前記第2のアドレスとを比較し、
     前記第4のアドレスと前記第2のアドレスが一致しなかったとき、
     前記第4のアドレスのデータを用いて、保存されている前記第2のアドレスのデータを更新することを特徴とする請求項7から9いずれかに記載の分岐予測方法。
PCT/JP2020/033283 2019-09-27 2020-09-02 分岐予測回路および命令処理方法 WO2021059906A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/761,293 US20220350608A1 (en) 2019-09-27 2020-09-02 Branch prediction circuit and instruction processing method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-176937 2019-09-27
JP2019176937A JP7152376B2 (ja) 2019-09-27 2019-09-27 分岐予測回路、プロセッサおよび分岐予測方法

Publications (1)

Publication Number Publication Date
WO2021059906A1 true WO2021059906A1 (ja) 2021-04-01

Family

ID=75166587

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/033283 WO2021059906A1 (ja) 2019-09-27 2020-09-02 分岐予測回路および命令処理方法

Country Status (3)

Country Link
US (1) US20220350608A1 (ja)
JP (1) JP7152376B2 (ja)
WO (1) WO2021059906A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220197657A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Segmented branch target buffer based on branch instruction type

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
US20090249048A1 (en) * 2008-03-28 2009-10-01 Sergio Schuler Branch target buffer addressing in a data processor
JP2013004101A (ja) * 2011-06-17 2013-01-07 Freescale Semiconductor Inc データプロセッサ内での分岐先バッファのアドレス指定
JP2014109953A (ja) * 2012-12-03 2014-06-12 Fujitsu Ltd 演算処理装置、演算処理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938761A (en) * 1997-11-24 1999-08-17 Sun Microsystems Method and apparatus for branch target prediction
US6622241B1 (en) * 2000-02-18 2003-09-16 Hewlett-Packard Development Company, L.P. Method and apparatus for reducing branch prediction table pollution
JP2004505345A (ja) * 2000-07-21 2004-02-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐ターゲットバッファを有するデータプロセッサ
US6948053B2 (en) * 2002-02-25 2005-09-20 International Business Machines Corporation Efficiently calculating a branch target address
US7873819B2 (en) * 2008-01-03 2011-01-18 Freescale Semiconductor, Inc. Branch target buffer addressing in a data processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
US20090249048A1 (en) * 2008-03-28 2009-10-01 Sergio Schuler Branch target buffer addressing in a data processor
JP2013004101A (ja) * 2011-06-17 2013-01-07 Freescale Semiconductor Inc データプロセッサ内での分岐先バッファのアドレス指定
JP2014109953A (ja) * 2012-12-03 2014-06-12 Fujitsu Ltd 演算処理装置、演算処理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KOBAYASHI, RYOTAROET AL.: "A Branch Target Buffer with a Two-level Table Scheme", TRANSACTIONS OF INFORMATION PROCESSING SOCIETY OF JAPAN, vol. 41, no. 5, 15 May 2000 (2000-05-15), pages 1351 - 1359 *

Also Published As

Publication number Publication date
JP7152376B2 (ja) 2022-10-12
JP2021056598A (ja) 2021-04-08
US20220350608A1 (en) 2022-11-03

Similar Documents

Publication Publication Date Title
US20050198480A1 (en) Apparatus and method of controlling instruction fetch
US8850167B2 (en) Loading/discarding acquired data for vector load instruction upon determination of prediction success of multiple preceding branch instructions
US9465615B2 (en) Method and apparatus for branch prediction
US20040059891A1 (en) Icache-based value prediction mechanism
WO2021059906A1 (ja) 分岐予測回路および命令処理方法
US7613910B2 (en) Information processing apparatus, method, and computer-readable recording medium for replacing an entry in a memory device
WO2012127666A1 (ja) 演算処理装置、情報処理装置及び演算処理方法
US10853076B2 (en) Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping
EP1622026B1 (en) Cache memory control unit and cache memory control method
JP3518510B2 (ja) リオーダバッファの管理方法及びプロセッサ
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
US20160034281A1 (en) Instruction processing system and method
WO2016043271A1 (ja) プロセッサおよびプロセッサシステム
JP3741945B2 (ja) 命令フェッチ制御装置
US9575761B2 (en) System and method for updating an instruction cache following a branch instruction in a semiconductor device
US9201655B2 (en) Method, computer program product, and hardware product for eliminating or reducing operand line crossing penalty
US11507377B2 (en) Arithmetic processing circuit and arithmetic processing method
US11586444B2 (en) Processor and pipeline processing method for processing multiple threads including wait instruction processing
US20240118900A1 (en) Arithmetic processing device and arithmetic processing method
US11507372B2 (en) Processing of instructions fetched from memory
JP2000181715A (ja) 命令制御装置及びその方法
US20140068192A1 (en) Processor and control method of processor
JP2006309335A (ja) 値予測装置、マルチプロセッサシステムおよび値予測方法
JPH06301538A (ja) 条件分岐命令処理装置
JPH04167026A (ja) 分岐制御装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20870307

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20870307

Country of ref document: EP

Kind code of ref document: A1