JP3967363B2 - 分岐予測装置および分岐予測方法 - Google Patents

分岐予測装置および分岐予測方法 Download PDF

Info

Publication number
JP3967363B2
JP3967363B2 JP2006183524A JP2006183524A JP3967363B2 JP 3967363 B2 JP3967363 B2 JP 3967363B2 JP 2006183524 A JP2006183524 A JP 2006183524A JP 2006183524 A JP2006183524 A JP 2006183524A JP 3967363 B2 JP3967363 B2 JP 3967363B2
Authority
JP
Japan
Prior art keywords
address
branch
predicted
instruction
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
JP2006183524A
Other languages
English (en)
Other versions
JP2006260608A (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
Priority to JP2006183524A priority Critical patent/JP3967363B2/ja
Publication of JP2006260608A publication Critical patent/JP2006260608A/ja
Application granted granted Critical
Publication of JP3967363B2 publication Critical patent/JP3967363B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

この発明は、分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定をおこなう分岐予測装置および分岐予測方法に関し、特に、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができる分岐予測装置および分岐予測方法に関する。
パイプライン処理手法以降の高度な命令処理手法を採用した情報処理装置においては、一つの命令の実行を待たずに、投機的に後続命令の処理を開始することで性能の向上を図ってきた。
しかし、分岐命令を実行する場合には、命令を実行した後でないと次に実行する命令アドレスが判明しないため、後続命令の処理を開始することができない。そこで、次に実行する命令アドレスを予測することによって、分岐命令を実行する前に後続命令の処理の開始を可能とする技術が注目されている。
たとえば、特開平6−89173号公報には、ブランチヒストリを用いて次に実行する命令アドレスを予測する技術が開示されている。この従来技術では、過去に実行した分岐命令アドレスとその分岐先アドレスとを対応させてブランチヒストリに登録し、ブランチヒストリに登録された分岐命令を新たに実行する場合には、その分岐命令に対応する分岐先アドレスを用いて次に実行する命令アドレスを予測している。
また、特開2000−172507号公報には、サブルーチンリターン命令の分岐先アドレスの予測精度を高める技術が開示されている。サブルーチンリターン命令では、分岐先アドレスが変化するため、ブランチヒストリに登録された過去の分岐先アドレスが実際の分岐先と異なることが多く、予測がはずれる率が高い。そこで、この従来技術では、サブルーチンリターンアドレスを保存したリターンアドレススタックのリターンアドレスとブランチヒストリの分岐先アドレスが一致した場合に、そのアドレスを後続命令の予測アドレスとすることによって、予測精度を向上させている。
ただし、このような分岐予測技術を用いて投機的に後続命令の処理をおこなう場合には、予測がはずれたときに、既に実行された後続命令の処理を無効とする必要がある。このため、実際の分岐先アドレスが算出された時点で、予測分岐先アドレスと実際の分岐先アドレスを比較し、両者が一致しているか否かを判定する必要がある。しかも、この判定は、処理性能を低下させないためには、実際の分岐先アドレスの計算と同じパイプラインステージでおこなわれる必要がある。
しかしながら、近年の高クロック化にともない、実際の分岐先アドレスの計算と、計算された実際の分岐先アドレスと予測分岐先アドレスとの比較をパイプラインの1サイクルでおこなうことが困難となってきている。この結果、実際の分岐先アドレスの計算と、計算された実際の分岐先アドレスと予測分岐先アドレスとの比較をパイプラインの別のサイクルでおこなうことが必要となり、処理性能が低下するという問題が発生している。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができる分岐予測装置および分岐予測方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、分岐命令のアドレスと該分岐命令の予測分岐先アドレスとを対応させて記憶した予測分岐先アドレス記憶手段を用いて予測した予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測装置であって、前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成手段と、前記予測相対アドレス生成手段により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定手段とを備え、前記予測相対アドレス生成手段は、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする。
また、本発明は、分岐命令のアドレスと該分岐命令の予測分岐先アドレスとを対応させて記憶した予測分岐先アドレス記憶手段を用いて予測した予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測方法であって、前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成ステップと、前記予測相対アドレス生成ステップにより生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定ステップとを有し、前記予測相対アドレス生成ステップは、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする。
かかる発明によれば、予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成し、生成した予測相対アドレスを、分岐命令の実相対アドレスと比較することにより判定を行う場合に、予測分岐先アドレスから基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることとしたので、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができる。
本発明によれば、予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成し、生成した予測相対アドレスを、分岐命令の実相対アドレスと比較することにより判定を行う場合に、予測分岐先アドレスから基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることとしたので、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができるという効果を奏する。
以下に添付図面を参照して、この発明に係る分岐予測装置および分岐予測方法の好適な実施の形態を詳細に説明する。なお、実施の形態1では、この発明を、基本的なパイプライン処理をおこなう情報処理装置に適用した場合について説明し、実施の形態2では、この発明を、アウトオブオーダ制御を採用した情報処理装置に適用した場合について説明する。
(実施の形態1)
まず、本実施の形態1に係る予測分岐先アドレス正否判定の原理、すなわち、予測された分岐先アドレスが実際の分岐先アドレスと一致しているか否かの判定の原理について説明する。図1は、本実施の形態1に係る予測分岐先アドレス正否判定の原理を説明するための説明図である。
同図(a)に示すように、従来の予測分岐先アドレス正否判定では、命令フェッチ部によってフェッチされた分岐命令を命令デコーダがデコードし、命令に含まれるディスプレイスメントを切り出す。ここで、ディスプレイスメントとは、分岐先アドレスから分岐命令アドレスを引いた相対アドレスであり、分岐命令では、ディスプレイスメントによって分岐先アドレスを指定することが多い。
そして、切り出されたディスプレイスメントに分岐命令アドレスを加えて実際の分岐先アドレスを算出し、算出された実際の分岐先アドレスと予測分岐先アドレスを比較することによって予測分岐先アドレスの正否を判定している。このため、命令デコーダによるディスプレイスメントの切り出しから予測分岐先アドレスの正否の判定までに、加算と比較の二つの演算が必要となる。
一方、同図(b)に示すように、本実施の形態1に係る予測分岐先アドレス正否判定では、命令デコーダの処理と並行して予測分岐先アドレスから分岐命令アドレスを引き、予測分岐先アドレスに対するディスプレイスメントである予測ディスプレイスメントを求める。
そして、この予測ディスプレイスメントを命令デコーダが切り出したディスプレイスメントと比較することによって予測分岐先アドレスの正否を判定することとしている。このため、命令デコーダによるディスプレイスメントの切り出しから予測分岐先アドレスの正否の判定までに、比較演算だけが必要であり、加算演算は不要となる。
このように、本実施の形態1では、実際の分岐先アドレスと予測分岐先アドレスを比較することによって予測分岐先アドレスの正否を判定する替わりに、予測ディスプレイスメントを命令デコーダの処理と並行して求め、この予測ディスプレイスメントを命令デコーダが切り出したディスプレイスメントと比較することによって予測分岐先アドレスの正否の判定をおこなう。このため、命令デコーダによる命令デコード後、比較器による処理のみによって予測分岐先アドレスの正否の判定をおこなうことができ、より高速に判定をおこなうことができる。
次に、本実施の形態1に係る分岐予測装置の構成について説明する。図2は、本実施の形態1に係る分岐予測装置の構成を示す機能ブロック図である。同図に示すように、この分岐予測装置200は、ブランチヒストリ201と、オフセット記憶部202と、予測分岐先アドレス記憶部203と、加算器204と、減算器205と、比較器206とを有する。
ブランチヒストリ201は、過去に実行された分岐命令の分岐先アドレスを記憶した記憶部であり、1次キャッシュから取り出された命令データに分岐命令が含まれる場合に、その分岐命令の分岐先アドレスを予測するために用いられる。
図3は、ブランチヒストリ201のエントリのデータ構造の一例を示す図である。同図に示すように、ブランチヒストリ201のエントリは、制御情報と、分岐命令アドレスと、予測分岐先アドレスとから構成される。
制御情報は、過去にこの分岐命令が実行された時に分岐が成立したか否かなどの情報を管理した情報である。分岐命令アドレスは、分岐命令の命令アドレスであり、ブランチヒストリ201の索引として用いられる。また、予測分岐先アドレスは、過去にこの分岐命令が実行された時の分岐先アドレスであり、次にこの分岐命令を実行する場合に、分岐先アドレスの予測値として用いられる。
オフセット記憶部202は、分岐命令アドレスから命令フェッチアドレスを引いて得られるオフセットを一時的に記憶する記憶部である。図4は、オフセットの一例を示す図である。同図において、1回にフェッチされる命令データの長さは8バイトであり、この命令データの中に、順に2バイト命令、4バイトの分岐命令、2バイト命令の3つの命令が含まれている。この例では、分岐命令アドレスは命令フェッチアドレス+2であり、オフセットは2となる。
このオフセットは、ブランチヒストリ201を命令フェッチアドレスで索引することによってオフセット記憶部202にセットされる。すなわち、ブランチヒストリ201は、命令フェッチアドレスの他に、フェッチされる命令データに含まれる命令が全て最小命令長であると仮定した場合の全ての命令アドレスで索引される。そして、これらのアドレスのいずれかと一致する分岐命令アドレスがブランチヒストリ201に登録されている場合に、その分岐命令アドレスと命令フェッチアドレスの差がオフセットとしてオフセット記憶部202にセットされる。
たとえば、1回にフェッチされる命令データの長さが8バイトであり、最小命令長が2バイトである場合には、フェッチされたデータに含まれる命令が全て2バイト命令であると仮定すると、ブランチヒストリ201は、命令フェッチアドレス、命令フェッチアドレス+2、命令フェッチアドレス+4、命令フェッチアドレス+6の四つのアドレスで索引される。そして、命令フェッチアドレス+2のアドレスの命令が分岐命令であるとすると、2がオフセット記憶部202にセットされる。
予測分岐先アドレス記憶部203は、分岐命令の予測分岐先アドレスを記憶する記憶部であり、予測分岐先アドレスは、ブランチヒストリ201を索引することによってオフセットとともに得られる。
加算器204は、二つの入力値を加算し、加算結果を出力する処理部であり、ここでは、命令フェッチアドレスとオフセットを加えて分岐命令アドレスを算出するために用いられる。
減算器205は、二つの入力値の間で減算をおこない、その結果を出力する処理部であり、ここでは、予測分岐先アドレスから分岐命令アドレスを引き、予測ディスプレイスメントを算出するために用いられる。
比較器206は、二つの入力値を比較し、両者が一致しているか否かを出力する処理部であり、ここでは、減算器205が出力した予測ディスプレイスメントと命令デコーダが命令から切り出したディスプレイスメントを比較することによって、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定するために用いられる。
このように、この比較器206がディスプレイスメントおよび予測ディスプレイスメントを用いて、実際の分岐先アドレスと予測分岐先アドレスが一致するか否かを判定することとしたので、ディスプレイスメントの切り出しの後に実際の分岐先アドレスを計算する必要がなく、より高速に予測分岐先アドレス正否の判定をおこなうことができる。
なお、図2において、IA、IT、IM、IB、IR、EおよびDはパイプラインのステージ名であり、IA(Instruction Address)は、命令フェッチアドレスを生成するステージを示し、IT(Tag Read)は、キャッシュのタグを読み出すステージを示し、IM(Tag Match)は、キャッシュのタグと命令フェッチアドレスのマッチングをとるステージを示している。
また、IB(Buffer Read)は、命令フェッチアドレスとタグがマッチしたキャッシュの命令データを読み出すステージを示し、IR(Result)は、命令データが命令バッファにセットされるステージを示している。同様に、E(Pre-Decode)は、命令バッファから1つの命令を切り出すステージを示し、D(Decode)は、切り出された命令をデコードするステージを示している。
したがって、図2は、分岐予測装置200の機能構成を示すと同時に、各機能部がパイプラインのどのステージで動作するかということも示している。具体的には、ITステージおよびIMステージではブランチヒストリ201の索引がおこなわれ、IMステージからIBステージにかけてオフセットおよび予測分岐先アドレスが得られ、IBステージの後半で加算器204が動作して分岐命令アドレスが得られることを示している。
また、IRステージでは減算器205が動作して予測ディスプレイスメントが得られ、Dステージでは比較器206が動作し、予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定がおこなわれることを示している。
さらに、図2は、命令をデコードするために動作する命令フェッチアドレス生成部、1次キャッシュ、命令バッファ、命令切り出し部および命令デコーダが、パイプラインのどのステージで動作するかということも示しており、特に、Dステージでは、1サイクルステージで命令のデコードと予測分岐先アドレス正否の判定がおこなわれることを示している。なお、同図は、IRステージとEステージが同じサイクルステージである場合を示しているが、これらのステージは、別のサイクルステージとなる場合もある。
次に、本実施の形態1に係る分岐予測装置200による予測分岐先正否判定の処理手順について説明する。図5は、本実施の形態1に係る分岐予測装置200による予測分岐先アドレス正否判定の処理手順を示すフローチャートである。
同図に示すように、この分岐予測装置200は、命令フェッチアドレス生成部が生成した命令フェッチアドレスを用いてブランチヒストリ201を索引し、オフセットおよび予測分岐先アドレスを取得する(ステップS501)。
そして、取得したオフセットと命令フェッチアドレスを加算器204が加算して分岐命令アドレスを算出し(ステップS502)、減算器205が予測分岐先アドレスから分岐命令アドレスを引いて予測ディスプレイスメントを算出する(ステップS503)。
そして、比較器206が予測ディスプレイスメントと実際のディスプレイスメントを比較し、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定する(ステップS504)。
上述してきたように、本実施の形態1では、ブランチヒストリ201を索引して予測分岐先アドレスとともにオフセットを取得し、命令フェッチアドレスとオフセットを加算して分岐命令アドレスを算出し、予測分岐先アドレスから分岐命令アドレスを引いて予測ディスプレイスメントを算出し、この予測ディスプレイスメントを、命令デコーダによって命令から切り出されたディスプレイスメントと比較することによって予測分岐先アドレスの正否を判定することとしたので、予測分岐先アドレスの正否判定のために実際の分岐先アドレスを計算する必要がなくなり、分岐命令のデコードと分岐先アドレス正否の判定をパイプラインの1サイクルステージで高速におこなうことができる。
なお、上記実施の形態1では、ブランチヒストリ201に予測分岐先アドレスを登録したが、予測分岐先アドレスのかわりに予測ディスプレイスメントを登録することもできる。また、ブランチヒストリ201に予測分岐先アドレスと予測ディスプレイスメントの両方を登録することもできる。
その他、上記実施の形態1では、ブラチヒストリ201を索引することによってオフセットを得ることとしたが、命令バッファの分岐命令をプリデコードすることによってオフセットを得ることもできる。
(実施の形態2)
ところで、上記実施の形態1では、本発明を基本的なパイプライン処理に適用した場合を示したが、最近の情報処理装置では、命令の実行順序を変更し、実行可能な命令から処理をおこなうアウトオブオーダ制御が採用されている。そこで、本実施の形態2では、本発明を、アウトオブオーダ制御をおこなう情報処理装置に適用した場合について説明する。
図6は、本実施の形態2に係る分岐予測装置の構成を示す機能ブロック図である。なお、アウトオブオーダ制御では、命令フェッチ要求をおこなった順番と命令バッファに命令データがセットされる順番が一致するとは限らない。たとえば、先に命令フェッチ要求を受けた命令データが1次キャッシュにない場合には、後から命令フェッチ要求を受けた命令データであっても、その命令データが1次キャッシュにあれば、先に命令バッファにセットされる可能性がある。
したがって、命令データが命令バッファにセットされるタイミングは、命令フェッチ要求時点での命令データの格納場所によって異なる。そこで、図6は、分岐予測装置のうち、命令データの格納場所に動作タイミングが依存しないパイプラインのステージ、すなわち、命令バッファに命令データがセットされた後のEステージおよびDステージで動作する機能部について示している。
同図に示すように、この分岐予測装置600は、EステージおよびDステージで動作する機能部として、予測分岐先アドレス記憶部601と、命令フェッチアドレス記憶部602と、減算器603と、ラッチ604と、オフセット記憶部605と、加算器606と、比較器607とを有する。
予測分岐先アドレス記憶部601は、図2に示した予測分岐先アドレス記憶部203と同様に、分岐命令の予測分岐先アドレスを記憶する記憶部であり、オフセット記憶部605は、図2に示したオフセット記憶部202と同様に、オフセットを記憶する記憶部である。ただし、アウトオブオーダ制御では、複数の命令フェッチ要求が並行して処理されるため、両者とも複数のデータを記憶することができる。
命令フェッチアドレス記憶部602は、命令フェッチアドレスを記憶する記憶部であり、この命令フェッチアドレス記憶部602も、複数の命令フェッチアドレスを記憶することができる。
減算器603は、二つの入力値の間で減算をおこない、その結果を出力する処理部であり、ここでは、予測分岐先アドレスから命令フェッチアドレスを引き、オフセットが加えられた予測ディスプレイスメントを算出するために用いられる。
ラッチ604は、同期をとるために一時的にデータを保持する記憶部であり、ここでは、オフセットが加えられた予測ディスプレイスメントを比較器607に入力する前に一時的に保持するために用いられる。
加算器606は、二つの入力値を加算し、加算結果を出力する処理部であり、ここでは、命令デコーダが分岐命令をデコードして出力する実際のディスプレイスメントにオフセットを加算するために用いられる。
比較器607は、二つの入力値を比較し、両者が一致しているか否かを出力する処理部であり、ここでは、予測ディスプレイスメントと実際のディスプレイスメントを、それぞれオフセットが加えられた値で比較することによって、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定するために用いられる。
選択信号は、複数の命令バッファから次に実行する命令を選択する信号であり、この選択信号によって予測分岐先アドレス記憶部601、オフセット記憶部605および命令フェッチアドレス記憶部602から次に実行する分岐命令の予測分岐アドレス、オフセットおよび命令フェッチアドレスが選択される。
また、この選択信号は、1次キャッシュ、2次キャッシュ、主記憶などの記憶部に命令データのフェッチを要求した時刻と、それぞれの記憶部から命令バッファに命令データが書き込むまでに必要な時間に基づいて生成される。
なお、オフセットの値は、ディスプレイスメントと比較して非常に小さく、加算器606は、インクリメンタ程度の構成で作ることができる。このため、この加算器606は、全ビット加算器に比べて圧倒的に速く加算をおこなうことができる。また、多くのRISC(Reduced Instruction Set Computer)型のCPUでは、命令のデコードは非常に簡単であり、命令語からのディスプレイスメント部分の切り出しを高速におこなうことができる。したがって、RISC型のCPUでは、図6に示した比較器607までの処理をDステージで完了することができる。
上述してきたように、本実施の形態2では、複数の分岐命令に対応する予測分岐先アドレス、オフセットおよび命令フェッチアドレスを記憶し、次に処理する分岐命令に対応する予測分岐先アドレス、オフセットおよび命令フェッチアドレスを選択信号を用いて選択し、予測ディスプレイスメントと実際のディスプレイスメントを、それぞれにオフセットが加えられた値で比較することによって予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定することとしたので、アウトオブオーダ制御を採用した情報処理装置でも、RISC型のCPUであれば、分岐先アドレス正否の判定をパイプラインのDステージで完了することができる。
一方、多くのCISC型のCPUでは、命令のデコードが複雑であり、ディスプレイスメントの切り出しに時間がかかる。したがって、図6に示した分岐予測装置600の構成では、比較器607までの処理をDステージで完了することができない。そこで、CISC型のCPUの場合の分岐予測装置の構成について説明する。
図7は、本実施の形態2に係る分岐予測装置の変形例の構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図6に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
図7に示すように、この分岐予測装置700は、EステージおよびDステージで動作する機能部として、予測分岐先アドレス記憶部601と、命令フェッチアドレス記憶部602と、減算器603と、ラッチ604と、オフセット記憶部605と、減算器701と、比較器702とを有する。
減算器701は、二つの入力値の間で減算をおこない、その結果を出力する処理部であり、ここでは、減算器603が予測分岐先アドレスから命令フェッチアドレスを引いた値から、さらにオフセットを引いて予測ディスプレイスメントを算出するために用いられる。
比較器702は、二つの入力値を比較し、両者が一致しているか否かを出力する処理部であり、ここでは、減算器701が出力する予測ディスプレイスメントと命令デコーダの出力する実際のディスプレイスメントを比較することによって、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定するために用いられる。
このように、分岐予測装置700は、予測分岐先アドレス、オフセットおよび命令フェッチアドレスを用いて、予測ディスプレイスメントを命令のデコードと並行して算出し、分岐命令をデコードして実際のディスプレイスメントが得られると直ちに予測ディスプレイスメントと比較することとしたので、CISC型のCPUでも、分岐命令のデコードと分岐先アドレス正否の判定をパイプラインの1つのサイクルステージで高速におこなうことができる。
(付記1)分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定をおこなう分岐予測装置であって、
前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成手段と、
前記予測相対アドレス生成手段により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定をおこなう予測正否判定手段と、
を備えたことを特徴とする分岐予測装置。
(付記2)前記予測相対アドレス生成手段は、前記予測分岐先アドレスから分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする付記1に記載の分岐予測装置。
(付記3)前記予測相対アドレス生成手段は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測手段と、分岐命令アドレスから命令フェッチアドレスを引いたオフセットを生成するオフセット生成手段と、前記分岐先予測手段により生成された予測分岐先アドレスから前記オフセットおよび命令フェッチアドレスを引いて前記予測ディスプレイスメントを算出する予測ディスプレイスメント算出手段とを備えたことを特徴とする付記2に記載の分岐予測装置。
(付記4)前記予測ディスプレイスメント算出手段は、命令フェッチアドレスに前記オフセットを加算して分岐命令アドレスを算出し、算出された該分岐命令アドレスを前記分岐先予測手段により生成された予測分岐先アドレスから引いて予測ディスプレイスメントを算出することを特徴とする付記3に記載の分岐予測装置。
(付記5)順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを記憶する複数分岐命令アドレス情報記憶手段と、前記複数分岐命令アドレス情報記憶手段から特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択手段とをさらに備え、前記予測ディスプレイスメント算出手段は、前記分岐命令アドレス情報選択手段により選択された命令フェッチアドレス、オフセットおよび予測分岐先アドレスを用いて前記予測ディスプレイスメントを算出することを特徴とする付記3に記載の分岐予測装置。
(付記6)前記予測相対アドレス生成手段は、命令フェッチアドレスから前記予測ディスプレイスメントを索引するブランチヒストリであることを特徴とする付記2に記載の分岐予測装置。
(付記7)前記予測相対アドレス生成手段は、前記予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、命令アドレスから命令フェッチアドレスを引いたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記1に記載の分岐予測装置。
(付記8)前記予測相対アドレス生成手段は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測手段と、前記分岐先予測手段により生成された予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを算出するオフセット加算予測ディスプレイスメント算出手段とを備えたことを特徴とする付記7に記載の分岐予測装置。
(付記9)順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを記憶する複数分岐命令アドレス情報記憶手段と、前記複数分岐命令アドレス情報記憶手段から特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択手段とをさらに備え、前記オフセット加算予測ディスプレイスメント算出手段は、前記分岐命令アドレス情報選択手段により選択された命令フェッチアドレスおよび予測分岐先アドレスを用いて前記オフセット加算予測ディスプレイスメントを算出し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、前記分岐命令アドレス情報選択手段により選択されたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記8に記載の分岐予測装置。
(付記10)前記予測相対アドレス生成手段は、命令フェッチアドレスから前記オフセット加算予測ディスプレイスメントを索引するブランチヒストリであることを特徴とする付記7に記載の分岐予測装置。
(付記11)分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定をおこなう分岐予測方法であって、
前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成工程と、
前記予測相対アドレス生成工程により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定をおこなう予測正否判定工程と、
を含んだことを特徴とする分岐予測方法。
(付記12)前記予測相対アドレス生成工程は、前記予測分岐先アドレスから分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする付記11に記載の分岐予測方法。
(付記13)前記予測相対アドレス生成工程は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測工程と、分岐命令アドレスから命令フェッチアドレスを引いたオフセットを生成するオフセット生成工程と、前記分岐先予測工程により生成された予測分岐先アドレスから前記オフセットおよび命令フェッチアドレスを引いて前記予測ディスプレイスメントを算出する予測ディスプレイスメント算出工程とを含んだことを特徴とする付記12に記載の分岐予測方法。
(付記14)前記予測ディスプレイスメント算出工程は、命令フェッチアドレスに前記オフセットを加算して分岐命令アドレスを算出し、算出された該分岐命令アドレスを前記分岐先予測工程により生成された予測分岐先アドレスから引いて予測ディスプレイスメントを算出することを特徴とする付記13に記載の分岐予測方法。
(付記15)順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスから、特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択工程をさらに備え、前記予測ディスプレイスメント算出工程は、前記分岐命令アドレス情報選択工程により選択された命令フェッチアドレス、オフセットおよび予測分岐先アドレスを用いて前記予測ディスプレイスメントを算出することを特徴とする付記13に記載の分岐予測方法。
(付記16)前記予測相対アドレス生成工程は、命令フェッチアドレスから前記予測ディスプレイスメントをブランチヒストリ用いて索引することを特徴とする付記12に記載の分岐予測方法。
(付記17)前記予測相対アドレス生成工程は、前記予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、命令アドレスから命令フェッチアドレスを引いたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記11に記載の分岐予測方法。
(付記18)前記予測相対アドレス生成工程は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測工程と、前記分岐先予測工程により生成された予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを算出するオフセット加算予測ディスプレイスメント算出工程とを含んだことを特徴とする付記17に記載の分岐予測方法。
(付記19)順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスから、特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択工程をさらに備え、前記オフセット加算予測ディスプレイスメント算出工程は、前記分岐命令アドレス情報選択工程により選択された命令フェッチアドレスおよび予測分岐先アドレスを用いて前記オフセット加算予測ディスプレイスメントを算出し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、前記分岐命令アドレス情報選択工程により選択されたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記18に記載の分岐予測方法。
(付記20)前記予測相対アドレス生成工程は、命令フェッチアドレスから前記オフセット加算予測ディスプレイスメントをブランチヒストリを用いて索引することを特徴とする付記17に記載の分岐予測方法。
以上のように、本発明に係る分岐予測装置および分岐予測方法は、分岐予測を行う情報処理装置に有用であり、特に、予測分岐先アドレスの正否判定を高速におこないたい場合に適している。
本実施の形態1に係る予測分岐先アドレス正否判定の原理を説明するための説明図である。 本実施の形態1に係る分岐予測装置の構成を示す機能ブロック図である。 ブランチヒストリのエントリのデータ構造の一例を示す図である。 オフセットの一例を示す図である。 本実施の形態1に係る分岐予測装置による予測分岐先アドレス正否判定の処理手順を示すフローチャートである。 本実施の形態2に係る分岐予測装置の構成を示す機能ブロック図である。 本実施の形態2に係る分岐予測装置の変形例の構成を示す機能ブロック図である。
符号の説明
200,600,700 分岐予測装置
201 ブランチヒストリ
202,605 オフセット記憶部
203,601 予測分岐先アドレス記憶部
204,606 加算器
205,603,701 減算器
206,607,702 比較器
602 命令フェッチアドレス記憶部
604 ラッチ

Claims (2)

  1. 分岐命令のアドレスと該分岐命令の予測分岐先アドレスとを対応させて記憶した予測分岐先アドレス記憶手段を用いて予測した予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測装置であって、
    前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成手段と、
    前記予測相対アドレス生成手段により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定手段とを備え、
    前記予測相対アドレス生成手段は、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、
    前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする分岐予測装置。
  2. 分岐命令のアドレスと該分岐命令の予測分岐先アドレスとを対応させて記憶した予測分岐先アドレス記憶手段を用いて予測した予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測方法であって、
    前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成ステップと、
    前記予測相対アドレス生成ステップにより生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定ステップとを有し、
    前記予測相対アドレス生成ステップは、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、
    前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする分岐予測方法。
JP2006183524A 2006-07-03 2006-07-03 分岐予測装置および分岐予測方法 Expired - Fee Related JP3967363B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006183524A JP3967363B2 (ja) 2006-07-03 2006-07-03 分岐予測装置および分岐予測方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006183524A JP3967363B2 (ja) 2006-07-03 2006-07-03 分岐予測装置および分岐予測方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002191276A Division JP3851235B2 (ja) 2002-06-28 2002-06-28 分岐予測装置および分岐予測方法

Publications (2)

Publication Number Publication Date
JP2006260608A JP2006260608A (ja) 2006-09-28
JP3967363B2 true JP3967363B2 (ja) 2007-08-29

Family

ID=37099685

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006183524A Expired - Fee Related JP3967363B2 (ja) 2006-07-03 2006-07-03 分岐予測装置および分岐予測方法

Country Status (1)

Country Link
JP (1) JP3967363B2 (ja)

Also Published As

Publication number Publication date
JP2006260608A (ja) 2006-09-28

Similar Documents

Publication Publication Date Title
JP3599409B2 (ja) 分岐予測装置
US6898699B2 (en) Return address stack including speculative return address buffer with back pointers
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
JPH06110683A (ja) マイクロプロセッサの拡張ブランチターゲット方法及びその装置
JPH02166520A (ja) データ処理装置
JP2009048633A (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
JP2006520964A5 (ja)
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
US20190369999A1 (en) Storing incidental branch predictions to reduce latency of misprediction recovery
WO2012127666A1 (ja) 演算処理装置、情報処理装置及び演算処理方法
JP2001236224A (ja) 分岐予測テーブル汚染の低減方法
JP3967363B2 (ja) 分岐予測装置および分岐予測方法
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
JP3851235B2 (ja) 分岐予測装置および分岐予測方法
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP5696210B2 (ja) プロセッサ及びその命令処理方法
WO2004068337A1 (ja) 情報処理装置
JP2006040173A (ja) 分岐予測装置および分岐予測方法
JP2001100994A (ja) モードを変更する分岐命令を制御する命令処理装置および方法
JP2020027533A (ja) 演算処理装置及び演算処理装置の制御方法
JPH07262006A (ja) 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ
US8909905B2 (en) Method for performing plurality of bit operations and a device having plurality of bit operations capabilities
JPH06131180A (ja) 命令処理方式および命令処理装置
JP2001236225A (ja) 演算装置及び分岐予測方法並びに情報処理装置
JP3102846B2 (ja) ロードアドレスキャッシュ装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060727

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070412

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070530

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130608

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130608

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees