JP5136404B2 - 演算処理装置、演算処理装置の制御方法 - Google Patents

演算処理装置、演算処理装置の制御方法 Download PDF

Info

Publication number
JP5136404B2
JP5136404B2 JP2008502591A JP2008502591A JP5136404B2 JP 5136404 B2 JP5136404 B2 JP 5136404B2 JP 2008502591 A JP2008502591 A JP 2008502591A JP 2008502591 A JP2008502591 A JP 2008502591A JP 5136404 B2 JP5136404 B2 JP 5136404B2
Authority
JP
Japan
Prior art keywords
branch
instruction
way
unit
destination address
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
Application number
JP2008502591A
Other languages
English (en)
Other versions
JPWO2007099604A1 (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 JPWO2007099604A1 publication Critical patent/JPWO2007099604A1/ja
Application granted granted Critical
Publication of JP5136404B2 publication Critical patent/JP5136404B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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, 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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, 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

Description

本発明は、コンピュータの分岐予測機構に関するものである。
コンピュータの分岐予測機構は、過去に実行された命令のメモリ上での記憶アドレス(以下、命令アドレスという)を基に分岐命令の実行履歴を管理することによって、次に分岐命令が実行される場合の分岐先を予測していた。
その場合、分岐予測機構は、過去に記憶元から分岐命令が取得(命令をフェッチするという)された命令アドレス(分岐元アドレス)の一部からセットアソアシアティブ方式の記憶装置のセットを決定する。そして、分岐予測機構は、分岐元アドレスのさらに他の部分をタグにして、当該セット内の1つのウェイに分岐先アドレスを記憶しておく。
そして、分岐予測機構は、命令のフェッチ段階で命令アドレスを利用して、上記記憶装置を検索する。そして、過去に実行済みの分岐命令で、その分岐先アドレスが記憶装置に記憶されている場合には、分岐予測機構は、その命令アドレスが命令は分岐命令であり、さらに、その分岐先への分岐が発生すると予測する。
そして、分岐予測機構は、該当するセット内のタグの内容がフェッチ中の命令アドレスの部分(タグに格納されるべき部分)と一致するウェイから分岐先アドレスを入手する。このようにして、分岐予測機構は、命令のフェッチと並行して、その命令が分岐命令であるか否か(分岐元の命令アドレスの部分をタグにして分岐先アドレスが記憶されているか否か)を判定することができる。
さらに、この技術では、コンピュータは、命令が分岐命令であった場合に予測される分岐先アドレスを入手できる。したがって、コンピュータがパイプライン処理を行っている場合であっても、現在の命令フェッチと並行して、事前に予測される分岐先から次のステージでの命令フェッチを準備することができる。
そして、現在フェッチ中の命令から得られた分岐先が予測された分岐先であった場合には、パイプライン処理を止めることなく各ステージを並列動作できる。一方、現在フェッチ中の命令から得られた分岐先が予測された分岐先でなかった場合には、正しい分岐先から命令フェッチを再開することになる。現在フェッチ中の分岐命令の命令アドレスに対応して上記記憶手段に分岐先が記憶されていなかった場合(分岐予測がヒットしなかったが分岐命令が実行された場合)も、分岐予測を利用できず、フェッチ後の分岐命令をデコードして得られた分岐先アドレスから命令フェッチを再開することになる。
このような従来の分岐予測機構への分岐先アドレスの登録においては、例えば、分岐元アドレスが上記記憶装置に記憶されていた場合(アドレスがヒットしたという)、分岐先アドレスとともにヒットしたウェイの番号を分岐命令に付加していた。そして、分岐命令の実行結果にしたがい、その番号のウェイに存在するデータを更新していた。すなわち、例えば、分岐予測が正しかった場合で、次にも同様にその分岐先に分岐する可能性が高い場合には、分岐予測機構は、そのウェイの情報を維持するとともに、そのウェイの情報が極力長期に保持されるように管理情報を更新していた。

また、アドレスがヒットしなかったにも拘わらず(分岐予測が外れて)、実際に分岐が発生し、分岐先を新たに記憶装置に記憶するべき場合には、分岐予測機構は、管理情報により予め決定されていた新規登録すべきウェイにその分岐先を記憶するとともに、そのウェイの情報が極力長期に保持されるように管理情報を更新していた。
本出願人は、すでに、このようなウェイの管理(分岐元アドレスから決定されるセット内において、どのウェイを優先的に保持すべきか)を効率的に実施するための提案を行っている(下記特許文献1参照)。この技術では、各ウェイにリプレースフラグおよびバリッドフラグという情報をそれぞれ1ビット設け、分岐先アドレスが新たに書き込まれたウェイへの次の書き換えが極力遅くなるように対応するリプレースフラグが更新される。
そして、新たに記憶すべき分岐先が発生した場合、現在の1組のリプレースフラグ(ウェイの数に対応するビットパターン)によって、次に記憶すべきウェイ(そのウェイの現在の分岐予測先情報は破棄されることになる)が決定されていた。
ところが、1回のフェッチにおいて、複数命令、例えば、4命令をフェッチする方式のコンピュータでは、以下のような問題が生じる。すなわち、その4命令中に複数の分岐命令が含まれている場合があり、そのいずれをも記憶装置に記憶する必要が生じる場合がある。これは、典型的には、例えば、4命令中で最初に現れた分岐命令が実行されず、第2番目に表れた分岐命令が実行された場合である。そのような場合、一般的には、実際に分岐が発生した分岐先が記憶装置登録される。
しかしながら、他の事情、例えば、グローバルヒストリによって分岐予測を行う分岐予測機構では、実際に分岐が発生した分岐先の他に、分岐が発生しなかった分岐先アドレスを記憶する必要が生じる場合がある。一例としては、2つの分岐命令によって2重のループが形成されている場合、グローバルヒストリによれば、現在実行されなかった分岐先が将来実行される分岐先として記憶手段に記憶される対象となる。なお、グローバルヒストリに関しては、本出願人によってすでに提案がなされている(下記特許文献2参照)。
同様に、スーパースカラマシンのように、複数本のパイプラインを備え、複数命令を同時にデコード/実行する場合にも、複数の分岐命令が同一のステージで検索される可能性がある。すなわち、それら複数の分岐命令の命令アドレスから生成されるセットが一致し、セット内のウェイを競合する場合がある。
また、複数命令をフェッチする方式でなくても、分岐予測が外れた場合で、グローバルヒストリから予測された分岐先と実際の分岐先の両方を記憶すべき場合もある。
特開2004−38298号公報 特開2004−38323号公報
上述のように、複数の分岐命令による複数の分岐先を記憶装置に記憶するとともに、リプレースフラグを管理すべきである。しかし、従来の技術では、次に新たな分岐先を格納できるウェイは1つだけ選択されていたため、1回の命令フェッチの結果について、複数の分岐先を記憶装置に記憶することができなかった。すなわち、複数の分岐先を新たに記憶装置に記憶する場合に、適切に複数のウェイを選択できていなかった。さらに困難な問題としては、そのような複数のウェイを選択する場合に、新たに書き換えられた複数のウェイの情報(分岐先アドレス)が極力長期間保持されるように、管理する技術は提案されていなかった。
したがって、複数の分岐先アドレスを記憶装置に登録する必要がある場合に、どちらかの情報が欠落する可能性があった。すなわち、分岐先がヒットしなかった場合、あるいは、分岐先の予測が外れた場合で、複数の分岐先を登録すべき場合に、情報の欠落が発生し、分岐予測の性能を低下させる原因となっていた。また、分岐先がヒットしたがグローバルヒストリによって複数の分岐先の登録が必要となる場合も同様である。本発明の目的は、このような従来の技術の問題を解決することにある。
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、少なくとも命令の記憶元から命令を取得する取得段階と前記命令を処理する実行段階とを含む実行サイクルを繰り返す、そのようなコンピュータの前記取得段階で複数命令を取得する取得部と、前記コンピュータによって次の実行段階で実行される命令が分岐命令であるか否かを過去に実行された命令の履歴情報にしたがって予測する分岐命令予測部と、前記取得された命令の少なくとも1つを前記実行段階で実行する実行部と、を備え前記分岐命令予測部は、前記実行された分岐命令の分岐先アドレスを、前記分岐命令の記憶元を参照するための命令アドレスから決定される複数の格納先のいずれかに前記履歴情報として記憶する履歴記憶部と、実行された分岐命令の分岐先アドレスまたは前記取得段階で取得された分岐命令の分岐先アドレスを前記履歴情報として記憶すべき場合に、前記複数の格納先のいずれかを選択するための選択情報を参照して格納先を選択する選択部と、選択された格納先に前記分岐先アドレスを記憶する記憶制御部と、前記格納先への記憶に対応して前記選択情報を更新する更新部と、を有し、前記選択部は、前記格納先に格納すべき分岐アドレスが複数ある場合に、第1の分岐先アドレスを前記格納先に記憶したときに前記更新手段によって更新された後の前記選択情報にしたがって第2の分岐先アドレスの格納先を選択するコンピュータの分岐予測装置である。
本発明によれば、第1の分岐先アドレスを前記格納先に記憶したときに生じる前記更新手段による更新の後の前記選択情報にしたがって第2の分岐先アドレスの格納先を選択するので、1回の実行サイクルにおいて複数の分岐先アドレスを登録する必要がある場合にも、選択情報にしたがった適正な格納先に格納できる。なお、ここで命令を処理するとは、命令に従った所定の処理を実行することをいい、例えば、条件付き分岐命令の場合には、条件の判定と判定結果に基づく分岐先への分岐または分岐しない処理を含む。
前記選択情報は、前記命令アドレスによって決定される前記複数の格納先への書き込み順を指定する、複数の格納先のそれぞれに対して1ビットの書き込み順情報を含み、前記選択部は、前記書き込み順情報にしたがって前記分岐先アドレスの格納先を選択するようにしてもよい。本発明によれば、複数の格納先のそれぞれに対して1ビット書き込み順情報によって格納先を選択できる。
前記履歴記憶部は、前記命令の取得段階において取得中の命令アドレスにしたがって前記複数の格納先からその命令が分岐命令であった場合の分岐先アドレスを検索し、前記選択部は、前記格納先に格納すべき分岐アドレスが複数ある場合で、かつ、第1の分岐先アドレスが前記履歴記憶部によって前記いずれかの格納先から検索されたものである場合に、その格納先を第1の格納先とするとともに、前記選択情報にしたがって第2の格納先を選択するようにしてもよい。
本発明によれば、複数の分岐先アドレスを格納する必要がある場合に、すでにいずれかの格納先から分岐アドレスが検索されていた場合には、その格納先を第1の格納先とし、さらに、前記選択情報にしたがって、第2の格納先を選択できる。
前記選択部は、前記格納先に格納すべき分岐アドレスが複数ある場合で、かつ、第1の分岐先アドレスが前記履歴記憶部によって前記いずれかの格納先から検索されたものでない場合に、前記選択情報にしたがって第1の格納先を選択するとともに、前記選択情報を更新し、前記更新された選択情報にしたがって第2の格納先を選択するようにしてもよい。
本発明によれば、複数の分岐先アドレスを格納する必要がある場合に、すでにいずれかの格納先から分岐アドレスが検索されていない場合には、選択情報にしたがって第1の格納先を選択するとともに、その選択にともなって選択情報を更新した上で、第2の格納先を選択できる。したがって、複数の分岐先アドレスを適正な格納先に格納できる。
前記選択情報は、前記複数の格納先ごとにその格納内容が有効か無効かを示すフラグ情報を有し、前記選択部は、前記フラグ情報によって格納内容が無効であると示されている格納先を優先して選択するようにしてもよい。格納内容が無効な格納先を優先して選択することで、効率的に格納先を管理できる。
本発明によれば、複数の分岐先アドレスを記憶装置に登録する必要がある場合に、情報が欠落することなく、分岐予測の性能低下を抑制できる。
本処理装置が有する4ウェイ・セット・アソシアティブ方式の分岐予測装置の概略構成を説明するための図(その1)である。 本処理装置が有する4ウェイ・セット・アソシアティブ方式の分岐予測装置の概略構成を説明するための図(その2)である。 分岐履歴記憶装置のセットを構成する各ウェイの構成を説明するための図である。 置換対象ウェイ選択部の概略構成を示す図である。 リプレースフラグによってウェイを選択する論理を説明するための図である。 無効なウェイが選択された場合に、リプレースフラグの反転の有無を決定する論理を示す図である。 分岐予測装置を含む処理装置のシステム構成図である。 16バイト単位でフェッチされた命令中で2つの分岐命令が存在する場合に、分岐予測の発生パターンを示す図である。 分岐命令の実行結果と、次の分岐命令の分岐予測結果との組合せを示す図である。 2つの分岐命令が存在し、1つ目がヒットした場合の分岐命令の実行結果と、次の予測結果の組合せを示す図である。 2つの分岐命令が存在し、2つ目がヒットした場合の分岐命令の実行結果と、次の予測結果の組合せを示す図である。 分岐が予測されなかった場合の実行結果と次の予測との組合せのパターンを示す図である。 分岐予測装置で実行される分岐履歴検索処理の概要を示す図である。 リプレースフラグにしたがって2つのウェイを選択する処理の詳細を示す図である。 2つの無効ウェイ選択処理の詳細を示す図である。 無効ウェイと有効ウェイ選択処理の詳細を示す図である。 有効な2つのウェイ選択処理の詳細を示す図である。 分岐命令格納処理のフローチャートである。 変形例に係る分岐予測装置で実行される分岐履歴検索処理の概要を示す図である。
符号の説明
101 アドレス生成ユニット
102 命令キャッシュ
103 デコーダ
120 演算ユニット
121 主記憶装置
122 プログラムカウンタ
123 命令フェッチ制御ユニット
124 命令キャッシュ制御ユニット
126 分岐リザベーションステーション
127 その他リザベーションステーション
128 命令完了管理ユニット
129 オペランドキャッシュ
130 分岐履歴記憶装置
131 データキャッシュ制御ユニット
140 グローバルヒストリ
以下、図面を参照して本発明の実施の形態に係る処理装置を説明する。
《第1実施形態》
以下、図1から図7の図面に基づいて本発明の第1実施形態に係る処理装置を説明する。
図1および図2は、本処理装置が有する4ウェイ・セット・アソシアティブ方式の分岐予測装置100の概略構成を説明するための図である。また、図7は、図1および図2に示した分岐予測装置100を組み込んだ処理装置のシステム構成図である。
図1および図2に示すように、分岐予測装置100は、主に、4つのウェイW0からW3を持つ分岐履歴記憶装置130、アドレス生成ユニット101、キャッシュメモリ102、デコーダ103、分岐履歴検索結果判定ユニット104、等価性判定部105、ヒットウェイ選択部106、置換対象ウェイ選択部107、分岐履歴検索結果判定部108、および、グローバルヒストリ140等を備える。これらはバス等を介して接続されている。
図3は、分岐履歴記憶装置130のセットを構成する各ウェイの構成を説明するための図である。分岐履歴記憶装置130は、SRAM等の比較的高速にアクセス可能な記憶装置である。4ウェイの分岐履歴記憶装置130は、1つのセット内に4つのウェイに対応するエントリを有する。図3に示すように、各エントリは、タグ部TGとデータ部DTを含む。タグ部TGは、命令アドレス(の一部)TG1、バリッドフラグV、リプレースフラグR、および、その他のフラグTG2からなる。データ部DTは、所定データとしての分岐先アドレスDT1からなる。
1つのセットは、アドレス生成ユニット101から出力される命令アドレスAの一部(例えば<15:5>)によって決定される。本実施形態では4ウェイなので、セットの決定により4つのエントリが指定されることになる。さらに、その4つのエントリのうち、命令アドレスAの一部(例えば<31:16>)によって一のエントリが決定される。この一のエントリを決定するために、命令アドレスTG1には命令アドレスの一部(例えば<31:16>)が格納されている。例えば、登録時に、命令アドレスAの一部<15:5>を使ってセットが決定され、残りの部分がセット内のいずれかのエントリ(4つのウェイに対応する4つのエントリのいずれか)のタグ部(命令アドレスTG1を含む)にデータとして格納されるようになっている。なお、命令アドレス<31:16>との記載は、命令アドレスTG1が命令アドレス(例えば32ビット)の一部31ビット目から16ビット目であることを意味する。
バリッドフラグは、エントリの有効又は無効を示すフラグである。例えば、バリッドフラグが”1”であればそのバリッドフラグを含むエントリが有効であること、バリッドフラグが”0”であればそのバリッドフラグを含むエントリが無効であることを示す。エントリが有効とは、ウェイに登録されたデータである分岐先アドレスが抹消されていないという意味である。バリッドフラグは、置換対象のウェイを選択するためにも用いられる。
リプレースフラグは、置換対象のウェイを選択するために用いられるフラグである。分岐先アドレスには、キャッシュメモリ102(または主記憶装置)からフェッチされた分岐命令の分岐先アドレスが格納される。
アドレス生成ユニット101は、命令アドレスA等を生成し出力するためのものである。アドレス生成ユニット101はプログラムカウンタ等を含む。キャッシュメモリ102は、SRAM等の比較的高速にアクセス可能な記憶装置である。デコーダ103は、キャッシュメモリ102(または主記憶装置)からフェッチされた分岐命令等をデコードするためのものである。
等価性判定部105は、アドレス生成ユニット101から出力される命令アドレスA(の一部)とタグ部TGの命令アドレスTG1とを比較し、一致する命令アドレスTG1が存在すればヒット信号(ヒットを示すビット)を出力する。ヒットウェイ選択部106は、各ウェイからのヒット信号に基づいてヒットしたウェイを指定するヒットウェイ選択信号を出力する。
分岐履歴検索結果判定ユニット104は、分岐予測装置から得られた分岐先アドレスがメモリ領域(キャッシュメモリ102または主記憶装置)からフェッチされた分岐命令の分岐先アドレスと等しいか、つまり、予測が正しかったかどうかを判定するためのものである。
置換対象ウェイ選択部107は、主に置換対象のウェイを選択するためのものである。図4に置換対象ウェイ選択部107の概略構成を示す。置換対象ウェイ選択部107は、各ウェイway0(W0)からway3(W3)それぞれから、同一アドレスAによって指定されるエントリに含まれるリプレースフラグR(replace_flag_way0,replace_flag_way1,replace_flag_way2,replace_flag_way3)およびバリッドフラグ(way0_valid,way1_valid,way2_valid,way3_valid)を取得する。置換対象ウェイ選択部107は最終的に、置換対象のウェイを指定する置換対象ウェイ選択信号(replace_way<1:0>)およびその選択信号によって指定されるウェイに書き込むリプレースフラグ(new_replace_flag)を出力する。
置換対象ウェイ選択部107は、ウェイW0からW3それぞれから取得されたリプレースフラグに基づいて、置換対象のウェイを選択する。図5は、それらリプレースフラグによってウェイが選択される論理を説明するための図である。同図は、ウェイway0からway3それぞれから左側のリプレースフラグ(例えば(way0,way1,way2,way3)=(0,0,0,0))が取得された場合には、置換対象のウェイとして右側の○が位置するウェイ(例えばウェイ0)が選択されることを示す。
例えば、図5において、リプレースフラグが(0,0,0,0)である場合を考える。この場合、図5によれば、置換対象としてway0が選択される。選択されたウェイのリプレースフラグは反転されるので、この場合リプレースフラグは、(1,0,0,0)となる。
そして、リプレースフラグが(1,0,0,0)の場合には、図5によれば、置換対象としてway1が選択される。そして、リプレースフラグは、(1,1,0,0)となる。
さらに、リプレースフラグが(1,1,0,0)の場合には、図5によれば、置換対象としてway2が選択される。そして、リプレースフラグは、(1,1,1,0)となる。
さらに、リプレースフラグが(1,1,1,0)の場合には、図5によれば、置換対象としてway3が選択される。そして、リプレースフラグは、(1,1,1,1)となる。
さらに、リプレースフラグが(1,1,1,1)の場合には、図5によれば、置換対象としてway0が選択される。そして、リプレースフラグは、(0,1,1,1)となる。
このように、図5の表にしたがって、ウェイを選択するとともに、リプレースフラグを反転した場合、選択されたウェイが次に選択される時期を可能な限り送らせて、LRUに近い効率を達成することができる。
例えば、単純に図5の表を最上段の行(0,0,0,0)と第8行目(0,0,0,1)との間で遷移する場合には、常に、選択されたウェイが次に選択される時期は最後(4番目)となる。また、第9行目(1,0,1,0)と最下段の行(1,0,1,1)との間で遷移する場合には、常に、選択されたウェイが次に選択される時期は最後(4番目)となる。
置換対象ウェイ選択部107は、ウェイW0からW3それぞれから取得されたバリッドフラグすべてが有効であれば、リプレースフラグに基づいて選択されたウェイ(図5の関係で定まるウェイ)を指定する置換対象ウェイ選択信号(replace_way<1:0>)を出力する。
また、置換対象ウェイ選択部107は、ウェイway0からway3それぞれから取得されたバリッドフラグに基づいて、置換対象のウェイを選択する。すなわち、置換対象ウェイ選択部107は、各ウェイから取得されたバリッドフラグのうち少なとも1つが無効であれば、バリッドフラグに基づいて選択されたウェイ(その無効なエントリを有するウェイ)を指定する置換対象ウェイ選択信号(replace_way<1:0>)を出力する。
また、置換対象ウェイ選択部107は、置換対象ウェイ選択信号(replace_way<1:0>)によって指定されるウェイに書き込むリプレースフラグ(new_replace_flag)を出力する。すなわち、置換対象ウェイ選択部107は、ウェイway0からW3それぞれから取得されるバリッドフラグすべてが有効であれば、置換対象ウェイ選択信号(replace_way<1:0>)によって指定されるウェイから取得されたリプレースフラグを反転したリプレースフラグ(new_replace_flag)を出力する。一方、置換対象ウェイ選択部107は、ウェイway0からway3それぞれから取得されたバリッドフラグのうち少なくとも1つが無効であれば、図6の表にしたがってリプレースフラグ(new_replace_flag)を出力する。
同図の各行は、左側部分のリプレースフラグの組(way0,way1,way2,way3)によってユニークに区別される。各行は、現在のそれぞれのウェイのリプレースフラグの状態を示している。また、表の右側部分のウェイの組(way0,way1,way2,way3)が、無効なウェイの位置に相当する。このようにして、各行の右側部分で、無効な位置に相当する表のエントリに、反転の有無が指定される。
今、ウェイway0からway3それぞれから左側のリプレースフラグの組(例えば(way0,way1,way2,way3)=(0,0,0,0))が取得され、かつ、置換対象ウェイ選択信号(replace_way<1:0>)によって無効なエントリを有するウェイとして右側部分のいずれかのウェイ(例えばway0のウェイ)が指定されたとする。すると、表の左側部分で(0,0,0,0)の組で指定される行において、表の右側部分においてway0の箇所には、”反転”が指定されている。したがって、この場合の選択信号によって指定されるウェイ0から取得されたリプレースフラグは反転され、リプレースフラグ(new_replace_flag)として出力されることになる。
また、例えば、同行のウェイ2の箇所には、”反転”が指定されていない(空欄である)。このような場合には、リプレースフラグは反転されることなく、そのままリプレースフラグ(new_replace_flag)として出力される。
例えば、(0,0,0,0)の状態で、バリッドフラグにしたがってway0が選択された場合には、図6より反転が指定されているので、リプレースフラグは、(1,0,0,0)となる。この場合、図5の表にしたがうと、次にWay0が選択されるのは、最も遅く(4番目に)なる。
また、 例えば、(0,0,0,0)の状態で、バリッドフラグにしたがってway1が選択された場合には、図6より反転が指定されているので、リプレースフラグは、(0,1,0,0)となる。この場合、図5の表にしたがうと、次にWay1が選択されるのは、第12行(0,1,0,0)=>第13行(0,1,0,1)=>第14行(1,1,0,1)と遷移した後である。この場合、最も遅い4番目の遷移より1つ前の3番目の遷移でway1が選択されることになる。
このような図5および図6の状態遷移は、論理ゲートによって実現できる。例えば、本出願人がすでに出願済みの特開2004−38298において図5および図6のリプレースフラグと出力との関係を実現する論理回路が示されている。
グローバルヒストリ140は、過去に実行された分岐命令ごとに分岐方向の履歴を記憶した記憶部を有し、過去の複数回の分岐の結果から分岐予測を管理する。すなわち、過去の複数回の分岐の履歴の規則性からそれぞれ分岐命令の将来の分岐の有無を予測する。
また、グローバルヒストリ140は、例えば、分岐命令ごとに最近の連続分岐成立回数および最近の連続分岐不成立回数を記憶する。そして、現在は分岐が成立したとすると、現在の連続分岐成立回数が前回の連続分岐成立回数を越えない場合には次も分岐成立(分岐する)と予測し、現在の分岐連続成立回数が前回の連続分岐成立回数と一致した場合には、次には分岐不成立(分岐しない)と予測する。また現在は分岐が成立しなかったとすると、現在の連続分岐不成立回数が前回の連続分岐不成立回数を超えない場合には、次も分岐不成立(分岐しない)と予測し、現在の分岐連続不成立回数が前回の連続分岐不成立回数と一致した場合には、次には分岐成立(分岐する)と予測する。
本実施形態のグローバルヒストリ140は、グローバルヒストリに基づく分岐予測を分岐履歴記憶装置130に送出し、分岐命令のウェイへの登録の要否を指示する。分岐履歴記憶装置130は、分岐命令の実行によって分岐先アドレスが確定した後、グローバルヒストリ140からの指示にしたがい、各分岐命令に付加された候補のウェイに格納する。
図7は、以上のような分岐予測装置を含む処理装置のシステム構成図である。本処理装置は、例えば、主記憶装置121に格納された命令を読み出して実行する、いわゆるプログラム内蔵方式のコンピュータである。
図7のように、この処理装置は、命令を実行する演算ユニット120と、演算ユニット120で実行される命令および演算ユニット120が処理するデータ等を格納する主記憶装置121と、演算ユニット120が実行すべき命令の主記憶装置121上のアドレスを指定するプログラムカウンタ122とを有している。このようなプログラムカウンタ122の制御に基づく処理装置の制御は周知である。
図7では、さらに具体的に、プログラムカウンタ122の生成するアドレスに基づいて命令のフェッチを制御する命令フェッチ制御ユニット123と、命令キャッシュ102を管理し命令フェッチ制御ユニット123からの命令フェッチ要求にしたがって命令をフェッチする命令キャッシュ制御ユニット124と、命令キャッシュ102からフェッチされた命令を保持する命令バッファ125と、命令バッファ125の命令をデコードするデコーダ103と、デコードされた命令の実行タイミングを制御するリザベーションユニット(分岐命令の実行を制御する分岐リザベーションユニット126およびレジスタ演算命令、アドレス演算命令の実行を制御するその他リザベーションユニット127)と、命令の実行完了を監視する命令完了管理ユニット128と、演算ユニット120で実行される命令のオペランドを高速に演算ユニット120に供給するオペランドキャッシュ129と、主記憶装置121とオペランドキャッシュ129との間でデータの授受を管理するデータキャッシュ制御ユニット131とを有している。
このうち、命令フェッチ制御ユニット123が図1のアドレス生成ユニット101に該当する。以下、本処理装置の制御手順を説明する。まず、プログラムカウンタ122からの命令アドレス(命令が格納された主記憶装置121上のアドレス)が命令フェッチ制御ユニット123に送出される。
命令フェッチユニット123は、命令キャッシュ制御ユニット124にその命令アドレスの命令取得を指示するとともに、分岐予測装置100に対して、分岐予測を指示する。すると命令キャッシュ102での命令取得処理と並行して、分岐予測装置100での分岐履歴記憶装置130の検索がなされる。
そして、分岐予測装置100は、現在の命令アドレスで分岐命令がヒットした場合には、その分岐先アドレスを命令フェッチ制御ユニット123に送出する。このとき、分岐予測装置100は、分岐先アドレスとともに、ヒットしたウェイについてのウェイの番号とリプレースフラグの値(以下、ウェイの情報という)を命令フェッチ制御ユニット123に送出する。
命令フェッチ制御ユニット123は、分岐予測装置100でヒットした分岐命令の分岐先アドレスによって、さらに、次の命令取得を命令キャッシュ制御ユニット124に指示する(このような処理は、通常、パイプラインのステージを形成する)。なお、分岐予測がヒットしなかった場合には、分岐しない次の命令アドレスを命令フェッチ制御ユニット123の内部で生成し、次の命令取得を命令キャッシュ制御ユニット124に指示する。
そして、命令フェッチ制御ユニット123は、命令キャッシュ制御ユニット124からフェッチされた命令群を命令バッファ125から参照する。そして、命令フェッチ制御ユニット123は、ヒットした場合にはヒットしたウェイの情報、またヒットしなかった場合には、図5および図6の表に示した論理にしたがって、次に分岐命令を格納すべきウェイの情報を命令バッファ125上の分岐命令に付与する。ウェイの情報が付与された命令は、それぞれデコーダ103に送出される。
その結果、命令はデコードされ、分岐リザベーションステーション126、その他リザベーションステーション127、および命令完了ユニット128に送出される。なお、命令がデコードされた後も、ウェイの情報は分岐命令とともに分岐リザベーションステーション126で維持されている。デコードされた命令は、その他リザベーションステーション127によってオペランドの処理等に基づいて、実行の待ち合わせを受ける。そして、オペランドが揃った時点で、各命令が演算ユニット120またはデータキャッシュ制御ユニット131で実行される。
一方、分岐命令については、分岐リザベーションステーション126によって命令の待ち合わせがなされる。そして、分岐命令の実行によって分岐するか否か、また分岐する場合には分岐先アドレスが確定したときに、完了報告が分岐リザベーションステーション126から、命令完了ユニット128および分岐予測装置100に送出される。このとき、分岐命令の命令アドレス、分岐先アドレス、および格納すべきウェイの情報(ウェイの番号とリプレースフラグ)が分岐予測装置100に送出される。
このとき、分岐リザベーションステーション126内の分岐履歴検索結果判定部108(図1参照)は分岐予測が正しかったか否かを判定する。すなわち、(a1)その命令アドレスにて分岐予測装置100によって分岐予測がヒットし(分岐履歴記憶装置130に分岐先アドレスが格納されていた)、(a2)フェッチされた分岐命令がその分岐先アドレスに分岐した場合に、分岐予測が正しかったことが分かる。あるいは、(b1)その命令アドレスにて分岐予測装置100がヒットせず、(b2)フェッチされた命令が分岐命令ではなかったかもしくは分岐命令であっても分岐しなかった場合に、分岐予測が正しかったことがわかる。
この場合、すでにキャッシュ制御ユニット124に依頼済みの命令フェッチは、そのまま続行されることになる。
また、分岐予測が正しくなかった場合には、すでに、キャッシュ制御ユニット124に依頼済みの命令フェッチおよびその後に続く一連の処理は中断されることになる。同時に分岐リザベーションステーション126からは、正しい分岐先からの再命令フェッチを行うよう、命令フェッチ制御ユニット123に指示が出される。
グローバルヒストリ140は、このような分岐命令の実行結果にしたがって、分岐予測装置100の分岐履歴記憶装置130に登録すべきか否かを判定する。そして、グローバルヒストリ140は、エントリの更新指示を分岐履歴記憶装置130に送出する。
分岐予測装置100は、グローバルヒストリ140からの更新指示にしたがい、セレクタ132を介して実行された分岐命令をウェイに格納する。このとき格納されるウェイは、分岐予測の時点で、命令バッファ125において分岐予測装置100によって各命令に付与されたウェイ番号のウェイである。さらに、分岐命令のウェイへの格納とともに、同じく命令に付与されたリプレースフラグを格納する。
以上述べたように、本実施形態の処理装置によれば、図5および図6のルールにしたがって、置換対象となる機会が順番に巡ってくることになる。つまり、最新の登録されたウェイができるだけ遅く置換対象として選択されるようになる。ただし、組合せによっては、最も遅い場合よりも1つだけ早く置換の機会が来る場合もあるが、すべての組合せで、「最も遅く置換の機会が来る」か、あるいは、「最も遅い順番よりも1つだけ早い順番で(例えば、4ウェイの場合に、3回目の書き換えタイミングで)置換の機会が来る」制御が実現され、完全なLRUではないが、それに近い状態で動作する。
すなわち、本実施形態の分岐予測装置100によれば、各ウェイに1ビットのリプレースフラグを用意し、取り決めにしたがってリプレースフラグ、およびバリッドフラグからエントリの置換の制御を行い、またリプレースフラグを更新することで、LRUに近い動作での分岐履歴記憶装置130のエントリの入れ替えが実現される。このために必要な情報は、ウェイにつき1ビットのフラグのみである。また、その情報を外部に出すときは、さらに1ビットに圧縮される。これは、従来のLRUのような方法と比べて、格段に低コストとなることを意味する。
《第2実施形態》
以下、図8から図14の図面に基づいて、本発明の第2実施形態に係る処理装置を説明する。上記第1実施形態では、図5および図6に示したテーブルに基づいて、新規に書き込まれたウェイが極力遅く書き換えられるように制御する分岐予測装置100の処理について説明した。本実施形態では、同一のフェッチステージで複数の命令がフェッチされる処理装置において、第1実施形態の場合と同様に、ウェイの管理を行う処理装置について説明する。本実施形態に置ける他の構成および作用は、第1実施形態の場合と同様である。そこで、同一の構成要素については、同一の符号を付してその説明を省略する。また、必要に応じて、図1から図7の図面を参照する。
本実施形態では、処理装置は、1命令4バイトの命令を実行する。また、処理装置は、16バイト、すなわち、1つの命令フェッチステージにおいて4命令をフェッチする(本実施形態では、このような処理を同時にフェッチするという)。
上記4命令は同一の命令アドレスで命令フェッチされるので、同一のセット(ラインともいう)内の4つのウェイを共有する。そして、取得した分岐命令が次回の命令フェッチにおいて取得され実行されると予測される場合、分岐予測装置100は、そのような分岐命令の分岐先アドレスをいずれかのウェイに格納する。この場合、分岐予測装置100は、まず、その分岐命令の分岐元アドレスの一部によって、内蔵する分岐履歴記憶装置130の4つのウェイを共有する1つのセットを決定する。そして、そのセット内の4つのウェイから書き換えられるべきウェイを決定する。
すなわち、セット内の各ウェイにそれぞれ1ビットのリプレースフラグとバリッドフラグが付与されており、リプレースフラグとバリッドフラグの現在の状態にしたがって、次に書き換えられるべきウェイが決定される。そして、分岐予測装置100は、そのウェイに対応するエントリに、タグ(分岐元アドレスの一部で、セットの決定に使用されなかった部分のビットを含む)を書き込むとともに、ウェイに分岐先アドレスを書き込む。さらに、分岐予測装置100は、現在のリプレースフラグの状態にしたがって、リプレースフラグの状態を設定する(反転する、または、反転しない)。この設定は、第1実施形態と同様、現在書き込まれたウェイが今後書き換えるタイミングが完全には最も遅くすることはできないが、極力遅くなる(最も遅い順番か、最も遅い順番より1回早い順番)、所定の規則にしたがっている。
本実施形態で想定する命令セットアーキテクチャの仕様では、同時にフェッチされる4命令中には、通常動作においては高々2個の分岐命令しか含まれないと仮定できる。したがって、本実施形態では、同一のフェッチステージで複数命令がフェッチされる命令アドレスに対応して、セット(ラインともいう)を共有する分岐命令の数は高々2個と仮定する。すなわち、分岐予測と命令の実行結果に基づいて、同一タイミング(同一のステージ)で、分岐予測手段が登録すべき分岐命令の数は、最大2個と仮定する。
このような命令の実行において、分岐予測装置100の処理の概要は、以下の通りである。
(1)現在フェッチ中の命令アドレスによる分岐履歴記憶装置130の検索により、分岐命令がヒットした場合には、分岐予測装置100は、ヒットしたウェイの情報をリプレースフラグの更新に使用する。
さらに、フェッチされた4命令中のヒットしなかった分岐命令で、グローバルヒストリ140の予測から今後分岐すると予測される分岐命令が存在する場合、現在のリプレースフラグの状態から図5にしたがって新たなウェイを選択する。
このとき、バリッドフラグにより無効なウェイが存在することが分かった場合には、分岐予測装置100は、無効なウェイを優先して選択し、図6の表にしたがって、リプレースフラグの反転の有無を決定する。そして、グローバルヒストリ140の指示にしたがい、分岐予測装置100は、そのヒットしなかった分岐命令の分岐先アドレスをそのウェイに格納するとともに、リプレースフラグを更新する。
(2)現在フェッチ中のアドレスによる分岐履歴記憶装置130の検索により、分岐命令がヒットせず、かつ、2つの命令(これを第1の候補、および第2の候補と呼ぶ)を分岐履歴記憶装置130に記憶すべき場合には、分岐予測装置100は、まず、現在のリプレースフラグおよびバリッドフラグから第1の候補を格納すべきウェイを決定し、リプレースフラグを仮に書き換える。次に、第1の候補の選択によって仮に書き換えられた状態のリプレースフラグの組合せとバリッドフラグから、第2の候補を格納すべきウェイを決定し、リプレースフラグをさらに仮に書き換える。そして、最終的には、グローバルヒストリ140の指示にしたがい、実際に格納するか否かが決定され、リプレースフラグが書き換えられる。
<分岐予測装置100の処理概要>
分岐予測装置100は、命令フェッチに際して分岐履歴記憶装置130に登録された分岐履歴を利用して分岐予測を実行する。上述のように、命令フェッチは、16バイト(4命令)単位で行われる。したがって、分岐予測装置100は、16バイト内に含まれる分岐命令を検索することになる。分岐予測装置100は、命令アドレスの一部を用いて分岐履歴記憶装置130にアクセスし、4ウェイ分のデータを取得する。これらのデータには、上記リプレースフラグおよびバリッドフラグも含まれている。
この分岐履歴記憶装置130には、分岐する分岐命令が格納されている。分岐予測装置100は、分岐履歴記憶装置130の検索時、該当するセットの4つのウェイに対応する4つのエントリ(タグが格納されている)を、命令アドレスの一部(タグとなるべきビット部分)と比較する。そして、エントリのタグがそのビット部分と一致した時点(分岐命令が分岐履歴記憶装置130でヒットした時点)で、分岐予測装置100は、分岐先に分岐するとみなす。
したがって、分岐を予測しなかった場合も、新たに分岐履歴記憶装置130に登録すべき分岐命令がフェッチされた4命令中に存在する場合がある。
第1に、4つの命令中に分岐しない分岐命令が存在する場合である。この場合、たとえ現在の処理(ステージ)でその分岐命令が分岐しなくても、次回分岐することがグローバルヒストリ140により予測され、登録指示が出される場合がある。 第2に、分岐予測が誤った場合である。これは、分岐予測装置100が分岐予測を誤った結果、分岐履歴記憶装置130がヒットせず、かつ、フェッチされた4命令中の分岐命令が分岐した場合である。この場合、分岐予測装置100は、分岐が予測されず分岐した分岐命令を次に「分岐する分岐命令」として無条件で登録するすなわち、分岐予測装置100は、リプレースフラグにより予め決定され、命令に負荷されていたウェイの情報に従ってエントリにタグおよび分岐先アドレスを格納する。
図8に、16バイト単位でフェッチされた命令中で2つの分岐命令が存在する場合に、分岐予測の発生パターンを示す。2つの分岐命令のうち、例えば1つ目の分岐命令が分岐すれば、当然2つ目の分岐命令は実行されない。本実施形態では、分岐予測装置100は、16バイト中の最初の分岐命令がヒットした時点で、2つ目の分岐命令の予測は必要ないものとして処理する。
図9に、分岐命令の実行結果と、次の分岐命令の分岐予測結果との組合せを示す。図9では、”分岐する(Taken)”を”Tk”で示し、”分岐しない(NotTaken)”を”N_tk”で示している。図のように、フェッチされた2つの分岐命令が分岐予測装置100の処理対象となるのは、1つ目の分岐命令が分岐しなかった場合である。以下、図8の(1−1)、(1−2),および(2)のそれぞれについて、図9から図12とともに説明する。
(1−1)現在のフェッチステージで、フェッチされた16バイト中に2つの分岐命令が存在し、1つ目がヒットしたとする。図10に、この場合の2つ目の分岐命令の実行結果と、次の予測結果の組合せを示す。この場合、ヒットしたウェイには、1つ目の分岐命令が登録されており、ヒットしなかった2つ目の分岐命令の処理が問題となる。
図10において、パターン7は、1つ目の分岐命令がヒットし、かつ、分岐した場合である。本実施形態の分岐予測装置100は、分岐履歴検索時に書き換えるウェイの情報を一旦命令フェッチ制御ユニット123に送出し、命令のデコードおよび実行後に分岐リザベーションステーション126から戻されたウェイの情報にしたがって分岐先アドレスをウェイに格納する。このため、1つ目の分岐命令で分岐すると、2つ目の分岐命令をウェイに格納する機会はこの時点では消滅する。
また、図10において、”ヒットした”にも拘わらず、実行結果が”N_Tk”というのは、分岐予測を誤ったことを示す。
図10の場合に、2つ目の分岐命令の登録動作が生じるのは、パターン2、3、5、および6である。このうち、パターン2、3については、1つ目の分岐命令が”次の予測”において”N_Tk”の場合であり、1つ目の分岐命令のヒットしたウェイが書き換えられても構わない場合である。
一方、パターン5、6については、1つ目の分岐命令の”次の予測”が”Tk”であるので、予測上は、1つ目の分岐命令の実行が優先することとなる。このため、1つ目の分岐命令のヒットしたウェイを2つ目の分岐命令によって書き換えたくない場合である。この場合に、2つ目の分岐命令の登録を抑止するか、2つ目の分岐命令を登録するための別のウェイ(同一セット内ウェイ)を準備する必要がある。
(1−2)次に、フェッチされた16バイト中に2つの分岐命令が存在し、2つ目がヒットしたとする。図11に、この場合の2つ目の分岐命令の実行結果と、次の予測結果の組合せを示す。この場合、ヒットしたウェイには、2つ目の分岐命令が登録されており、ヒットしなかった1つ目の分岐命令の処理が問題となる。
図11において、パターン7は、1つ目の分岐命令がヒットしなかったが、分岐した場合であり、この場合には、2つ目の分岐命令は実行されない。また、図11においても、”ヒットした”にも拘わらず、実行結果が”N_Tk”というのは、分岐予測を誤ったことを示す。
図11で、1つ目の分岐命令の登録が必要になるのは、パターン4から7である。このうち、パターン5、6については、ヒットした二つ目の分岐命令のウェイの情報しかなかった場合、ヒットしたウェイに1つ目の分岐命令を登録してしまうと、一旦登録できたとしても、直ちに、2つ目の分岐命令の再登録によって上書きされることになる。
また、パターン4については、2つ目の分岐命令が今回はヒットした(分岐すると予測された)けれども次には分岐しないと予測された結果、エントリの消去動作が発生する。つまりこの場合には、ヒットした二つ目の分岐命令のウェイの情報しかなかった場合、ヒットしたウェイに1つ目の分岐命令を登録してしまうと、2つ目の分岐命令の消去動作によって、せっかく登録した一つ目の分岐命令が消去されてしまうことになる。
これらの問題を回避するために、図10のパターン5、6および図11のパターン4−6については、一つ目のヒットしなかった分岐命令について、ヒットしたウェイとは異なる場所に分岐先アドレスを登録する必要がある。これには、リプレースフラグで決定されるウェイを使用することが考えられる。
すなわち、命令フェッチによって得られた4つの命令でヒットした分岐命令は、そのままヒットしたウェイを使用するように設定される。具体的には、分岐予測装置100は、ヒットした分岐命令にヒットしたウェイの情報を付加してデコーダ103に送出する。
また、ヒットしなかったがフェッチされた4つの命令に含まれており、次に分岐が予測される分岐命令は、リプレースフラグにしたがって選択されるウェイを使用するように設定される。具体的には、分岐予測装置100は、ヒットしなかった分岐命令にリプレースフラグとバリッドフラグにしたがって選択されたウェイの情報を付加してデコーダ103に送出する。
さらに、4つの命令がデコードされ、実行された結果にしたがって、分岐予測装置100は、ウェイの情報(リプレースフラグ、バリッドフラグ等)と格納内容とを更新する。具体的には、分岐予測装置100は、不図示のグローバルヒストリ140の予測にしたがって、次に分岐が予測される分岐先アドレスのウェイへの登録、リプレースフラグの変更、およびヒットしたウェイのバリッドフラグを変更する。
例えば、デコードされた4つの命令中に2つ分岐命令が含まれ、このうち、後の分岐命令がヒットした場合を考える。この場合に、グローバルヒストリ140の予測内容が、ヒットしなかった最初の分岐命令が次に分岐する分岐命令であり、ヒットした分岐命令は次に分岐が予測されない、というものであったとする(図11のパターン4の場合)。このような場合、ヒットした分岐命令が格納されていたウェイは、バリッドフラグがオフされ、無効なウェイ(未使用のウェイ)にされる。登録は順番に行われるので二つ目の分岐命令のための消去動作によって一つ目が消去されるのを防ぐため、次に分岐が予測される一つ目の分岐命令のために、ヒットしたウェイ以外のウェイを用意する必要がある。
また、図11のパターン7のように、ヒットしなかった最初の分岐命令を実行した結果それが分岐し、分岐予測が外れた場合には、その分岐命令を登録するウェイを用意する必要がある。また、図11のパターン5、6のように、ヒットしたウェイの分岐先アドレスへの次回の分岐が予測されるとともに、ヒットしなかった最初の分岐命令が次に分岐されると予測された場合も、ヒットしたウェイの他、さらになるウェイを用意する必要がある。
(2)次に、図8の最後のパターン(分岐が予測されなかった場合である。図8において(2)で示されている)について説明する。この場合の実行結果と次の予測との組合せのパターンを図12に示す。今、同時フェッチされた4命令中に2つの分岐命令が含まれている場合を想定する。このうち、パターン2、3および4においては、登録動作が生じるのは2つの分岐命令のうち、1つ目あるいは2つ目だけであるので、登録すべきウェイは1つでよい。
一方、パターン5、6のとき、次に分岐が予測されるのは、同時にフェッチされた4命令中の1つ目の分岐命令である。しかし、パターン5では、グローバルヒストリ140が2つ目の分岐命令の分岐をも予測している。またパターン6では、二つ目の分岐命令について予測が“N_Tk”であったにも関わらず実行結果が“ Tk ”であったため、登録動作が生じる。
このような場合が生じるのは、実行されるプログラム中に2重のループがあって、1つ目の分岐命令が内側の小さなループを形成し、2つ目の分岐命令が外側の大きなループを形成する場合が考えられる。この場合、2つ目の分岐命令は、1つ目の分岐命令(内側の小さなループを形成する分岐命令)がN_Tkとなったときに実行されることになる。したがって、このような場合には、グローバルヒストリ140から、分岐するとの予測(登録する旨の指示)が送出される。このような場合、それぞれの分岐命令を登録するウェイを用意する必要がある。以下、バリッドフラグの状態を場合分けして説明する。
(a)無効なウェイが2つ以上存在する場合
無効なウェイが存在する場合には、無効なウェイを優先して使用する。分岐予測装置100は、無効なウェイのうち、ウェイ番号の若い方から2つウェイを取得する。すなわち、無効なウェイが存在する場合のリプレースラグの操作論理(図6)にしたがって、2回分のウェイの取得操作を行った結果、更新されたリプレースフラグを2つ送出する。
例えば、読み出したリプレースフラグが(way0、wayl、way2、way3)=(0,0,0,1)だったとする。また、無効なウェイがway0,way1,way3であったとする。
このとき、1つ目の分岐命令を登録すべき候補のウェイ(第一候補)は、例えば、番号の若い順に選択すると、way0となる。また、2つ目の分岐命令を登録すべき候補のウェイ(第二候補)は、waylとなる。リプレースフラグの反転の有無は、図6の操作表にしたがう。
例えば、読み出したリプレースフラグが(0,0,0,1)であって、無効なウェイであるway0を使用した場合には、図6より、リプレースフラグの反転が必要となる。このため、第一候補として,登録用ウェイ番号way0および、リプレースフラグ1(0の反転)を命令フェッチ制御ユニット123に送出する。
このとき、分岐予測装置100は、一旦、wayoのリプレースフラグは1になったと仮定し、さらに次のウェイの選択を続行する。すなわち、リプレースフラグは、(way0,wayl,way2,way3)=(1,0,0,1)と仮定される。分岐予測装置100は、この仮定に基づいて第二候補の反転の有無を決定する。すなわち、リプレースフラグが(1,0,0,1 )であって、無効なウェイであるwaylを使用した場合、図6より、リプレースフラグの反転は必要ない。
そこで、分岐予測装置100は、第二候補として、登録用ウェイ番号way1および、リプレースフラグ0を送出する。すなわち、以上の処理によって分岐予測装置100は、
第一候補:way0,リプレースフラグ=1;
第二候補:way1,リプレースフラグ=0:
を決定し、命令フェッチ制御ユニット123に送出する。
すると、命令フェッチ制御ユニット123は、命令バッファ125を参照し、分岐命令が存在する場合に、第一候補、第二候補の順に、ウェイ番号およびリプレースフラグを分岐命令に付与する。
(b)無効なウェイが1つだけ存在する場合
この場合、分岐予測装置100は、無効なウェイを第一候補として決定する。次に、分岐予測装置100は、無効なウェイが存在する場合のリプレースフラグ操作表(図6)にしたがって、操作を行った後のリプレースフラグの組合せを仮定する。そして、分岐予測装置100は、仮定されたリプレースフラグの組合せから、第二候補を決定する。
例えば、読み出したリプレースフラグが(way0,way1,way2、way3)=(0,0,0,1)だったとする。また、無効なウェイがway0であったとする。
このとき、1つ目の分岐命令用のウェイ(第一候補)はway0となる。リプレースフラグの操作(仮定)は、操作表にしたがう。リプレースフラグが(0,0,0,1)のときは、way0を使用した場合、リプレースフラグの反転が必要となる(図6参照)。そこで、分岐予測装置100は、第一候補として、登録用ウェイ番号way0および,リプレースフラグ1(0の反転)を送出する。
このとき、分岐予測装置100は、一旦、way0のリプレースフラグは1になったと仮定し、リプレースフラグは(way0,way1,way2,way3)=(1,0,0,1)となる。
分岐予測装置100は、この仮定に基づいて第二候補を決定する。本例では、1つの無効なウェイを使用すれば、残りのウェイはすべて有効なウェイである。この場合には、分岐予測装置100は、リプレースフラグによるウェイの決定表(図5参照)から、置換対象のウェイとしてway2を選択し、これを第二候補とする。この場合には、分岐予測装置100は、選択したway2のリプレースフラグを反転して送出する(バリッドフラグは有効であるので、図6の論理にしたがうことなく、リプレースフラグが無条件に反転される)。すなわち、以上の処理によって分岐予測装置100は、
第一候補:way0,リプレースフラグ=1;
第二候補:way2,リプレースフラグ=1;
を決定し、命令フェッチ制御ユニット123に送出する。
(c)無効なウェイがない場合
この場合、分岐予測装置100は、リプレースフラグによるウェイの決定表(図5)から、候補を選択する。例えば、読み出したリプレースフラグが(way0,way1,way2,way3)=(0,0,0,1)だったとする。
分岐予測装置100は、リプレースフラグによるウェイの決定表(図5)から、置換対象のウェイとしてway3を選択し、これを第一候補とする。way3のリプレースフラグは、無条件に反転して送出されるので、その後のリプレースフラグの状態は、(way0,way1,way2,way3)=(0、0、0、0)となると仮定される。
分岐予測装置100は、この仮定されたリプレースフラグに基づいて第二候補を決定する。すなわち、分岐予測装置100は、図5の表から置換対象のウェイとしてway0を選択し、第二候補とする。このとき、way0のリプレースフラグは無条件に反転して送出される。すなわち、以上の処理によって分岐予測装置100は、
第一候補:way3、リプレースフラグ=0
第二候補:way0、リプレースフラグ=1
を決定し、命令フェッチ制御ユニット123に送出する。
以上のように、分岐履歴記憶装置130の読み出し時点で、分岐予測装置100は、2つの候補ウェイ(第一候補、第二候補)を決定し、命令フェッチ制御ユニット123に送出する。
命令フェッチ制御ユニット123は、フェッチされた順に分岐命令に第一候補、および第二候補の情報(ウェイ番号およびリプレースフラグ)を付与する。これらの情報は、命令に付加された状態で、分岐リザベーションユニット126に保持される。そして、分岐命令の実行結果とともに、第一候補の情報が付加された分岐命令または第二候補の情報が付加された分岐命令が分岐予測装置100に戻される。
このとき、グローバルヒストリ140からは、次に分岐が予測された分岐か否かの指示が分岐予測装置100に通知される。分岐予測装置100は、グローバルヒストリ140の予測にしたがって、分岐命令に付与された番号のウェイに分岐命令を登録する。
<処理フロー>
図13から図18の図面により、分岐予測装置100の処理を説明する。図13から図17は、分岐予測装置100で実行される分岐履歴検索処理を示している。一方、図18は、一旦分岐予測装置100から、分岐予測結果と、ウェイの情報が命令フェッチ制御ユニット123に送出され、分岐命令のデコードおよび実行後に分岐リザベーションユニット126から、分岐命令(ウェイの情報が付加された分岐命令)が戻された後の処理を示している。
これらの処理は、基本的には、図5および図6に示された論理にしたがって、高々2個のウェイを選択する処理である。したがって、図5および図6の論理を実現する論理回路を2回駆動させる制御回路(論理ゲートの組合せ)により、以下の処理が実現される。
図13のように、分岐予測装置100は、命令フェッチ制御ユニット123からの分岐予測指示にしたがい、命令アドレスを基に、分岐履歴記憶装置130のセットを決定する。そして、決定されたセットを構成するウェイに対応するエントリからタグを読み出す(S1)。
次に、分岐予測装置100は、分岐命令がいずれかのウェイでヒットしたか否かを判定する(S2)。すなわち、分岐予測装置100は、ヒットタグの内容が、タグを構成すべき命令アドレスの一部、例えば、命令アドレス<31:16>と一致した場合には、ヒットしたと判定する。
ヒットした場合には、分岐先アドレスを命令フェッチ制御ユニット123に送出する。さらに、分岐予測装置100は、現在のバリッドフラグおよびリプレースフラグの設定にしたがいウェイを選択する(S4)。
すなわち、無効なウェイがあった場合には、そのウェイを優先して選択する。その際に、図6の表にしたがって、リプレースフラグの反転の有無を決定する。また、無効なウェイがない場合には、現在のリプレースフラグの設定を元に、図5の表にしたがって、ウェイを選択する。すでに、第1実施形態で説明したにように、リプレースフラグから図5の選択および図6の反転の有無を決定する処理は、論理ゲートの組合せによって実現できる。
そして、分岐予測装置100は、ウェイ(ヒットしたウェイとS3で選択されたウェイ、または、S4で選択された2つのウェイ)の情報を命令フェッチ制御ユニット123に送出する(S5)。
一方、S2の判定で、分岐命令がいずれのウェイにおいても、ヒットしなかった場合、分岐予測装置100は、リプレースフラグにしたがって2つのウェイを選択する(S4)。そして、分岐予測装置100は、選択された2つのウェイの情報を命令フェッチ制御ユニット123に送出する(S6)。
図14に、分岐予測装置100がリプレースフラグにしたがって2つのウェイを選択する処理(図13のS5、2ウェイ選択処理という)の詳細を示す。この処理では、分岐予測装置100は、まず、無効なウェイが2つ存在するか否かを判定する(S51)。該当するセットに2つ以上の無効なウェイが存在する場合には、分岐予測装置100は、2つの無効ウェイ選択処理を実行する(S52)。
また、無効なウェイが2つ存在しない場合、分岐予測装置100は、まず、無効なウェイが1つ存在するか否かを判定する(S53)。該当するセットに1つの無効なウェイが存在する場合には、分岐予測装置100は、無効ウェイと有効ウェイ選択処理を実行する(S54)。
また、該当するセットに無効なウェイが存在しない場合には、分岐予測装置100は、有効な2つのウェイ選択処理を実行する(S55)。
図15に、2つの無効ウェイ選択処理(図14のS52)の詳細を示す。この処理では、分岐予測装置100は、ウェイのバリッドフラグを参照し、第1の無効ウェイを選択する(S521)。どの無効なウェイを選択するかについて特に制限はない。例えば、ウェイの番号の若い順に選択してもよい。
次に、分岐予測装置100は、図6の表の論理にしたがって、リプレースフラグの反転の有無を仮決定する(S522)。さらに、分岐予測装置100は、ウェイのバリッドフラグを参照し、第二の無効ウェイを選択する(S523)。そして、S522で仮決定されたリプレースフラグの状態と、図6の表の論理にしたがって、さらに、リプレースフラグの反転の有無を仮決定する(S524)。なお、これらのウェイの情報(番号とリプレースフラグ)は、図6のS6の処理で送出される。反転の有無が仮決定されたリプレースフラグは、分岐命令の実行後、分岐履歴の格納において、反転が確定する。
図16に、無効ウェイと有効ウェイ選択処理(図14のS54)の詳細を示す。この処理では、分岐予測装置100は、ウェイのバリッドフラグを参照し、無効ウェイを選択する(S541)。
次に、分岐予測装置100は、図6の表の論理にしたがって、リプレースフラグの反転の有無を仮決定する(S542)。次に、分岐予測装置100は、仮決定されたウェイの状態にしたがって、有効なウェイを1つ選択する(S543)。そして、選択されたウェイのリプレースフラグを仮に反転する(S524)。なお、仮に反転されたリプレースフラグは、分岐命令の実行後、分岐履歴の格納において、反転が確定する。
図17に、有効な2つウェイ選択処理(図14のS55)の詳細を示す。この処理では、分岐予測装置100は、現在のリプレースフラグを参照し、第一のウェイを選択する(S551)。
次に、分岐予測装置100は、選択された第一のウェイのリプレースフラグを仮に反転する(S552)。次に、分岐予測装置100は、仮反転されたウェイの状態にしたがって、有効な第二のウェイを1つ選択する(S553)。そして、選択された第二のウェイのリプレースフラグを仮に反転する(S554)。
図18に、分岐命令格納処理のフローチャートを示す。この処理では、分岐予測装置100は、実行が完了した分岐命令またはフェッチされて分岐しなかった分岐命令と、その分岐命令に付加されているウェイの情報(ウェイの番号、仮決定された反転の有無)を分岐リザベーションステーション126から取得する(S11)。
次に、分岐予測装置100は、グローバルヒストリ140から、その分岐命令が次に分岐するか否かの情報(グローバルヒストリ140の予測)を取得する(S12)。なお、グローバルヒストリ140による予測そのものは、本実施形態の処理と直接関係がないので、その説明を省略する。
そして、分岐予測装置100は、その分岐命令が次に分岐すると予測されているか否かを判定する(S13)。そのウェイのバリッドフラグをクリアし、無効なウェイとする(S14)。S13の判定で、次に分岐すると判定された場合、分岐予測装置100は、分岐履歴(分岐先アドレス)をその分岐命令に付加されている情報で指定されたウェイに格納する(S15)。このとき、その命令アドレスの一部がタグとしてエントリに格納される。
次に、分岐予測装置100は、分岐命令に付加されている情報にしたがってリプレースフラグを設定する(S16)。この時点で、仮設定されたリプレースフラグの内容が確定することになる。
以上述べたように、本実施形態の分岐処理装置100によれば、1回のフェッチにおいて複数命令をフェッチするような装置においても、LRUに近い効率でリプレースフラグを管理することができる。すなわち、LRUほど最適の選択はできないが、図5および図6の表にしたがって、書き換えたウェイを可能な限り後の時点(第1実施形態の場合と同様、最悪でも4つのウェイに対して最後に書き換えられたウェイが3回目のアクセスで書き換えられる場合がある)で書き換えるにようにウェイの書き換えを制御できる。
《変形例》
上記第2実施形態では、1回のフェッチで2つ以上の分岐命令が存在することがあり得る処理装置において、図5および図6のテーブルにしたがって、書き換えるべきウェイを選択する処理を示した。この処理では、2つ分岐命令の分岐先アドレスを格納するウェイとして、まず、1つのウェイを選択し、その後、仮にリプレースフラグを設定した上で、第2番目のウェイを決定した。
しかし、このような複雑な処理を実行する代わりに、以下のような処理を行ってもよい。
例えば、ヒットしたウェイの番号を元にウェイ番号を生成してウェイを選択するようにしてもよい。
例えば、4つのウェイ番号を示す2ビットの信号をway<l:0>とすれば、”00”、”01”、”10”、”11”のビットパターンが存在する。例えば、ヒットしたウェイが存在する場合には、一方のビットway<l>を反転するという処理を構成すればよい。この場合、ヒットしたウェイが”00”であれば、上位ビットを反転し”10”を生成してウェイを選択すればよい。このようなビットの操作は、ハードウェア(論理ゲート)で簡易に実現できる。
また、これは例えば、上記第1実施形態および第2実施形態で用いたバリッドフラグを優先してもよい。すなわち、ヒットしたウェイが存在する場合で、2つ目のウェイを選択する場合(図13のS4)、まず、バリッドフラグから無効なウェイが存在するか否かを判定するようにしてもよい。そして、無効なウェイが存在する場合には、その無効なウェイを2つ目のウェイとして、選択するようにし、無効なウェイが存在しない場合には、上記のようなビットの反転によってヒットしたウェイ以外のウェイを選択するようにしてもよい。このような制御にすることで、無効なウェイを有効に利用するとともに、ヒットしたウェイの上書きを極力低減することができる。
また、ヒットしなかった場合には、リプレースフラグで決定されるウェイを通常通り一つの候補とし、そのウェイの番号を元にして、前述のヒットしたウェイ番号がある場合と同様の処理を行ってもよい。つまり、リプレーフラグで決定された4つのウェイ番号を示す2ビットの信号をway<l:0>とすれば、”00”、”01”、”10”、”11”のビットパターンが存在する。ここから、一方のビットway<l>を反転するという処理などでもう一つのウェイ番号を構成すればよい。例えば、元のリプレースフラグによる一つ目の分岐命令のためのウェイが”00”であれば、上位ビットを反転し”10”を生成して二つ目の分岐命令のためのウェイとすればよい。
図19に、このような変形例に係る分岐履歴検索処理のフローチャートを示す。図19の処理で、図13と同様の処理については、図13と同一の符号を付している。
すなわち、図19のように、分岐予測がヒットした場合には、分岐予測装置100は、ヒットしたウェイの情報を基に、ヒットしたウェイ以外のウェイを
つ選択する(S4A)。
一方、ヒットしなかった場合には、分岐予測装置100は、2ウェイ選択処理を実行する(S5A)。この場合の2ウェイ選択処理は、図14と同様の処理でもよい。また、2ウェイ選択処理として、上述のように、バリッドフラグとリプレースフラグとで決定されるウェイを通常通り一つの候補とし、そのウェイの番号を元にして、前述のヒットしたウェイ番号がある場合と同様のビット反転処理を行って2つ目の候補としてもよい。

Claims (6)

  1. 少なくとも命令の記憶元から命令得と前記取得した命令行とを繰り返すコンピュータの前記取得において複数命令を取得する取得部と、
    前記コンピュータによって次の実行で実行される命令が分岐命令であるか否かを過去に実行された命令の履歴情報にしたがって予測する分岐命令予測部と、
    前記取得された命令の少なくとも1つを前記実行で実行する実行部と、を備え
    前記分岐命令予測部は、
    前記実行された命令または前記取得された命令に含まれる分岐命令の分岐先アドレスを、前記命令の記憶元を参照するための命令アドレスから決定される複数のウェイのいずれかに前記履歴情報として記憶する履歴記憶部と、
    実行された分岐命令の分岐先アドレスまたは前記取得で取得された分岐命令の分岐先アドレスを前記履歴情報として記憶すべき場合に、前記複数のウェイのいずれかを選択するための選択情報を参照してウェイを選択する選択部と、
    選択されたウェイに前記分岐先アドレスを記憶する記憶制御部と、
    前記ウェイへの記憶に対応して前記選択情報を更新する更新部と、を有し、
    前記選択部は、分岐命令を含む命令の取得から前記取得した命令の実行の完了までに前記ウェイに格納すべき分岐アドレスが複数ある場合に、前記複数の分岐先アドレスのうちの第1の分岐先アドレスを前記ウェイに記憶したときに前記更新によって更新された後の前記選択情報にしたがって、前記複数の分岐先アドレスのうちの第2の分岐先アドレスのウェイを選択し、
    前記履歴記憶部は、前記第1の分岐先アドレスと前記第2の分岐先アドレスとを前記選択されたウェイにそれぞれ記憶する演算処理装置。
  2. 前記選択情報は、前記命令アドレスよって決定される前記複数のウェイへの書き込み順を指定する、複数のウェイのそれぞれに対して1ビットの書き込み順情報を含み、
    前記選択部は、前記書き込み順情報にしたがって前記分岐先アドレスのウェイを選択する請求項1に記載の演算処理装置。
  3. 記選択部は、前記ウェイに格納すべき分岐アドレスが複数ある場合で、かつ、第1の分岐先アドレスが前記履歴記憶部によって前記いずれかのウェイから検索されたもので
    ある場合に、そのウェイを第1のウェイとするとともに、前記選択情報にしたがって第2のウェイを選択する請求項1または2に記載の演算処理装置。
  4. 前記選択部は、前記ウェイに格納すべき分岐アドレスが複数ある場合で、かつ、第1の分岐先アドレスが前記履歴記憶部によって前記いずれかのウェイから検索されたものでない場合に、前記選択情報にしたがって第1のウェイを選択するとともに、前記選択情報を更新し、前記更新された選択情報にしたがって第2のウェイを選択する請求項1または2に記載の演算処理装置。
  5. 前記選択情報は、前記複数のウェイごとにその格納内容が有効か無効かを示すフラグ情報を有し、
    前記選択部は、前記フラグ情報によって格納内容が無効であると示されているウェイを優先して選択する請求項1から4のいずれかに記載の演算処理装置。
  6. 少なくとも命令の記憶元から命令得と前記取得した命令行とを繰り返す演算処理装置が有する取得部が前記取得で複数命令を取得
    前記演算処理装置が有する分岐命令予測部が、前記演算処理装置によって次の実行で実行される命令が分岐命令であるか否かを過去に実行された命令の履歴情報にしたがって予測
    前記演算処理装置が有する実行部が、前記取得された命令の少なくとも1つを前記実行で実行し、
    さらに、前記分岐命令予測部が、
    実行された分岐命令の分岐先アドレスまたは前記取得で取得された分岐命令の分岐先アドレスを前記履歴情報として記憶すべき場合に、前記複数のウェイのいずれかを選択するための選択情報を参照してウェイを選択
    前記選択されたウェイに前記分岐先アドレスを記憶
    前記ウェイへの記憶に対応して前記選択情報を更新
    さらに、前記選択において、分岐命令を含む命令の取得から前記取得した命令の実行の完了までに前記ウェイに格納すべき分岐アドレスが複数ある場合に、前記複数の分岐先アドレスのうちの第1の分岐先アドレスを前記ウェイに記憶したときに前記更新された後の前記選択情報にしたがって、前記複数の分岐先アドレスのうちの第2の分岐先アドレスのウェイを選択し、前記第1の分岐先アドレスと前記第2の分岐先アドレスとを前記選択されたウェイにそれぞれ記憶する、演算処理装置の制御方法。
JP2008502591A 2006-02-28 2006-02-28 演算処理装置、演算処理装置の制御方法 Expired - Fee Related JP5136404B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303769 WO2007099604A1 (ja) 2006-02-28 2006-02-28 コンピュータの分岐予測装置

Publications (2)

Publication Number Publication Date
JPWO2007099604A1 JPWO2007099604A1 (ja) 2009-07-16
JP5136404B2 true JP5136404B2 (ja) 2013-02-06

Family

ID=38458728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008502591A Expired - Fee Related JP5136404B2 (ja) 2006-02-28 2006-02-28 演算処理装置、演算処理装置の制御方法

Country Status (4)

Country Link
US (1) US8578140B2 (ja)
EP (1) EP1990713B1 (ja)
JP (1) JP5136404B2 (ja)
WO (1) WO2007099604A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5549734B2 (ja) * 2010-08-18 2014-07-16 富士通株式会社 試験方法、演算処理装置、試験プログラム、試験プログラム生成方法、試験プログラム生成装置、及び試験プログラム生成プログラム
GB2526943B (en) 2011-12-20 2016-04-27 Imagination Tech Ltd Method and apparatus for compressing and decompressing data
JP6273718B2 (ja) * 2013-08-13 2018-02-07 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6205966B2 (ja) * 2013-08-15 2017-10-04 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
CN105590178A (zh) * 2014-10-21 2016-05-18 阿里巴巴集团控股有限公司 一种资源处理方法与设备
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) * 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US20190369999A1 (en) * 2018-06-04 2019-12-05 Advanced Micro Devices, Inc. Storing incidental branch predictions to reduce latency of misprediction recovery
US20230214222A1 (en) * 2021-12-30 2023-07-06 Arm Limited Methods and apparatus for storing instruction information

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689173A (ja) * 1992-09-09 1994-03-29 Fujitsu Ltd ブランチ・ヒストリーを持つ命令実行処理装置
JPH10133874A (ja) * 1996-11-01 1998-05-22 Mitsubishi Electric Corp スーパスカラプロセッサ用分岐予測機構
JPH10171652A (ja) * 1996-10-07 1998-06-26 Internatl Business Mach Corp <Ibm> ブランチ・ヒストリ・テーブルを更新するための方法および装置
JP2000172503A (ja) * 1998-12-10 2000-06-23 Fujitsu Ltd 複数のウェイを持つブランチヒストリを備える情報処理装置
US20020188834A1 (en) * 2001-05-04 2002-12-12 Ip First Llc Apparatus and method for target address replacement in speculative branch target address cache
JP2004038298A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd セットアソシアティブ方式の記憶装置及びキャッシュメモリ装置
EP1624369B1 (en) * 2004-08-04 2011-12-14 VIA Technologies, Inc. Apparatus for predicting multiple branch target addresses

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4211222B4 (de) * 1991-04-05 2009-05-28 Kabushiki Kaisha Toshiba, Kawasaki Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5802602A (en) * 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
JP3798998B2 (ja) 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689173A (ja) * 1992-09-09 1994-03-29 Fujitsu Ltd ブランチ・ヒストリーを持つ命令実行処理装置
JPH10171652A (ja) * 1996-10-07 1998-06-26 Internatl Business Mach Corp <Ibm> ブランチ・ヒストリ・テーブルを更新するための方法および装置
JPH10133874A (ja) * 1996-11-01 1998-05-22 Mitsubishi Electric Corp スーパスカラプロセッサ用分岐予測機構
JP2000172503A (ja) * 1998-12-10 2000-06-23 Fujitsu Ltd 複数のウェイを持つブランチヒストリを備える情報処理装置
US20020188834A1 (en) * 2001-05-04 2002-12-12 Ip First Llc Apparatus and method for target address replacement in speculative branch target address cache
JP2004038298A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd セットアソシアティブ方式の記憶装置及びキャッシュメモリ装置
EP1624369B1 (en) * 2004-08-04 2011-12-14 VIA Technologies, Inc. Apparatus for predicting multiple branch target addresses

Also Published As

Publication number Publication date
US20080320288A1 (en) 2008-12-25
WO2007099604A1 (ja) 2007-09-07
EP1990713A1 (en) 2008-11-12
EP1990713B1 (en) 2013-04-10
US8578140B2 (en) 2013-11-05
JPWO2007099604A1 (ja) 2009-07-16
EP1990713A4 (en) 2009-06-17

Similar Documents

Publication Publication Date Title
JP5136404B2 (ja) 演算処理装置、演算処理装置の制御方法
US6073213A (en) Method and apparatus for caching trace segments with multiple entry points
US6230260B1 (en) Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6216206B1 (en) Trace victim cache
US6076144A (en) Method and apparatus for identifying potential entry points into trace segments
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
CN104679481B (zh) 一种指令集转换系统和方法
US20150186293A1 (en) High-performance cache system and method
JP3760041B2 (ja) 分岐予測する情報処理装置
JPS5991546A (ja) 中央処理装置
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US9753855B2 (en) High-performance instruction cache system and method
US20130185545A1 (en) High-performance cache system and method
TW201638774A (zh) 一種基於指令和資料推送的處理器系統和方法
US20180060075A1 (en) Method for reducing fetch cycles for return-type instructions
JPH08320788A (ja) パイプライン方式プロセッサ
JP2007272280A (ja) データ処理装置
JP2010102623A (ja) キャッシュメモリ及びその制御方法
US20050278514A1 (en) Condition bits for controlling branch processing
JP3741945B2 (ja) 命令フェッチ制御装置
JP4052887B2 (ja) 記憶装置、分岐履歴記憶装置及びその制御方法
JPH10116229A (ja) データ処理装置
JP2002024008A (ja) データ処理装置およびプログラム変換装置
JP4008946B2 (ja) キャッシュメモリ及びその制御方法
US11586444B2 (en) Processor and pipeline processing method for processing multiple threads including wait instruction processing

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120326

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: 20121016

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: 20121029

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151122

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees