(57)【特許請求の範囲】
【請求項１】
ａ．複数のエントリを含む分岐履歴テーブルを保持するステップと、
ｂ．複数の分岐命令に対する静的予測情報を保持するステップと、
ｃ．前記複数の分岐命令結果を予測するステップであって、予測された各結果が少なくとも部分的に、（i）複数の分岐命令の所定の１つに対応する静的予測情報と、（ii）前記分岐履歴テーブル内のエントリとの排他的論理和に対応しているステップと、
ｄ．前記複数の分岐命令の各々を実行後、静的予測情報が正しかったかどうかに応じて、前記分岐履歴テーブル内のエントリを少なくとも部分的に更新するステップと
を含んでなるマイクロプロセッサにおいて実行される複数の分岐命令結果を予測する方法。
【請求項２】
ａ．複数のエントリを含む分岐履歴テーブルと、
ｂ．複数の分岐命令に対応する静的予測情報を格納する１以上のデータ格納位置と、
ｃ．（i）前記１以上のデータ格納位置のアドレス指定された１つから導かれる静的予測情報を受取るための入力と、（ii）前記分岐履歴テーブルの少なくとも１つのエントリから導かれる情報を受取るための入力と、（iii）前記複数の分岐命令の１つが引き取られているかどうかを示す分岐予測出力とを含む第１論理ゲートと、
ｄ．（i）前記１以上のデータ格納位置のアドレス指定された１つから導かれる静的予測情報を受取るための入力と、（ii）分岐命令内で識別された分岐が引き取られたかどうかを示す情報を受取るための入力と、（iii）分岐命令に対応する前記静的予測情報が正しかったかどうかを示す分岐履歴更新出力とを含む第２論理ゲートと
を含んでなり、
前記分岐履歴更新出力が、前記分岐履歴テーブルによって受取られる、複数の分岐命令内で識別された分岐が引き取られるかどうかを予測するためのマイクロプロセッサ内の装置。
【請求項３】
前記分岐履歴テーブル内の前記複数エントリの各々が飽和型アップ／ダウンカウンタを含んでいる請求項２に記載の装置。
【請求項４】
マイクロプロセッサ内の分岐履歴テーブル内の干渉を低減する方法であって、
ａ）i）分岐命令においてエンコードされた示唆と、
ii）ある分岐履歴テーブル内のエントリと
の少なくとも一部に対応して、コンピュータプログラム内の複数の分岐命令の結果を予測するステップと、
ｂ）与えられた分岐命令の実行後に、前記与えられた分岐命令においてエンコードされた前記示唆が正確であるかどうかに対応して、前記分岐履歴テーブル内のエントリを少なくとも部分的に更新するステップと
を含んでなる方法。
【請求項５】
前記分岐履歴テーブル内の１以上のエントリのそれぞれが、２以上の分岐命令に対応する請求項４に記載の方法。
【請求項６】
ａ）前記分岐履歴テーブル内の所定のエントリに対応して、与えられた分岐命令の結果を少なくとも部分的に予測するステップと、
ｂ）前記分岐命令の実行後に、前記分岐履歴テーブル内の所定のエントリを更新するステップと
を含んでなる請求項４に記載の方法。
【請求項７】
ａ）飽和型のアップカウンタまたはダウンカウンタによって、前記分岐履歴テーブル内のエントリのそれぞれを保持するステップと、
ｂ）与えられた分岐命令を実行後に、
i）もし、前記与えられた分岐命令においてエンコードされた前記示唆が正確であれば、前記分岐履歴テーブル内の所定の飽和型のアップカウンタまたはダウンカウンタを増加させるステップと、
ii）もし、前記与えられた分岐命令においてエンコードされた前記示唆が不正確であれば、前記分岐履歴テーブル内の所定の飽和型のアップカウンタまたはダウンカウンタを減少させるステップと
をさらに含む請求項４に記載の方法。
【請求項８】
ａ）シフトレジスタによって、前記分岐履歴テーブル内のエントリのそれぞれを保持するステップと、
ｂ）与えられた分岐命令の実行後に、前記与えられた分岐履歴命令においてエンコードされた前記示唆が正確であるかどうかの表示を前記分岐履歴テーブルのシフトレジスタへとシフトするステップと
をさらに含む請求項４に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサにおける分岐履歴テーブルの維持およびその使用に係り、特に、マイクロプロセッサが実行する複数の分岐命令結果を予測する処理を通じて、マイクロプロセッサにおける分岐履歴テーブルの情報を維持し、かつ、この分岐履歴テーブルの使用に供するマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術に関する。
【０００２】
【従来の技術】
近時のコンピュータ、例えば、アウトオブオーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）型実行装置および／またはパイプライン式実行装置を通じて命令を実行するコンピュータは、「投機的に（ｓｐｅｃｕｌａｔｉｖｅｌｙ）」命令を実行するものが大多数である。すなわち、これらが依存する命令を完全に実行する前に、大多数が命令ストリームにおける分岐結果の判明前に命令を実行している。これらのコンピュータのマイクロプロセッサは、高性能を実現するために、様々な技術を駆使して、命令ストリームで誤って予測される分岐処理を最小化している。これらの技術は、通常「分岐予測」形式の処理を行っている。分岐予測は、最も多発する「引き取られる（ｔａｋｅｎ）」または「引き取られない（ｎｏｔ  ｔａｋｅｎ）」のいずれかの分岐命令を最適化するものである。
【０００３】
分岐予測は、通常、２通りのタイプの情報の一方に基づいた処理である。すなわち、（１）静的予測情報があり、また（２）動的予測情報がある。この静的予測情報は、コンピュータプログラムの実行前に生成され、命令のタイプ、命令ストリームにおける位置および反復命令等の要因に基づくものである。また、動的予測情報は、コンピュータプログラムの実行中に生成され、通常、所定の分岐および／またはその他の分岐命令の従前の結果の履歴に基づくものである。
【０００４】
動的予測情報は、多数のエントリを含む分岐履歴テーブルに格納される。この分岐履歴テーブルが十分大きい場合は、コンピュータプログラムの各分岐命令についての異なる履歴を維持できると考えられる。しかしながら、マイクロプロセッサチップ領域は多大な処理（コスト）を伴う供給源である。他の重要なマイクロプロセッサにおけるエレメントの空間を設けるために、分岐履歴テーブルを縮小すると仮定した場合、分岐履歴テーブルのエントリを共有することが多いため、競合する分岐履歴間の干渉が多大な問題となる。
【０００５】
【発明が解決しようとする課題】
このような上記従来例では、競合する履歴が分岐履歴テーブルの一つのエントリを共有すると、所定の任意の分岐命令の履歴を他の分岐命令によって破損することが多い。この結果、予測を誤った分岐結果となることがある。分岐結果が予測を誤ったものであると、多大なコストを要することになる。例えば、命令パイプラインが失速したり、命令実行装置が停止したり、またキャッシュやレジスタでのデータを瞬時的に消去せざるを得なくなる等がある。これらの結果は、情報処理における全てを許容できない遅延が発生する。
【０００６】
本発明は、このような従来の技術における課題を解決するものであり、より正確な分岐予測が可能になり、かつ、この結果で誤って予測された分岐によって生起する遅延を少なくできる、マイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術の提供を目的とする。
【０００７】
【課題を解決するための手段】
上記課題を達成するために、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術では、まずその理解を容易にするために、大部分の分岐が「略常に引き取られる（ａｌｍｏｓｔ  ａｌｗａｙｓ  ｔａｋｅｎ）」か、または、「略常に引き取られない（ａｌｍｏｓｔ  ａｌｗａｙｓ  ｎｏｔ  ｔａｋｅｎ）」のいずれかであることを認識する必要がある。これらの分岐を「適切な（行儀の良い，  ｗｅｌｌ−ｂｅｈａｖｅｄ）」分岐と呼称することがある。また、分岐の結果が切り替わる場合は、「略常に引き取られる」から「略常に引き取られない」を認識する必要がある。また、この逆に切り替わることが多いことを認識する必要がある。さらに、分岐予測体系が、典型的には大部分の分岐が適切な分岐であるという前提に基づくことに留意することも重要である。この結果、静的分岐予測体系および多くの動的分岐予測体系の目標は、分岐の支配的な結果がどのようなものであるかを予測することになる。
【０００８】
このような認識において、一つのタイプの適切な分岐（例えば、「略常に引き取られる」分岐）の予測精度は、分岐が分岐履歴テーブルエントリを他のタイプの適切な分岐（例えば、「略常に引き取られない」分岐）と共有する場合に、その精度が低下することになる。
【０００９】
ヒューレット・パッカード社のＰＡ−８ｘ００ファミリーのマイクロプロセッサ（例えば、ＰＡ−８０００，ＰＡ−８２００およびＰＡ−８５００）の分岐予測体系は、適切な分岐についての前記したことが正しいと推定している。ヒューレット・パッカード社は、米国カリフォルニア州にあるＰａｌｏ  Ａｌｔｏに拠点があり、ＰＡ−８ｘ００ファミリーのマイクロプロセッサの詳細が、Ｄ．  Ｈｕｎｔ氏による「Ａｄｖａｎｃｅｄ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｆｅａｔｕｒｅｓ  ｏｆ  ｔｈｅ  ６４−ｂｉｔ  ＰＡ−８０００」（１９９５年３月５日）、Ｌ．  Ｇｗｅｎｎａｐ氏による「ＨＰ  Ｐｕｍｐｓ  Ｕｐ  ＰＡ−８ｘ００  Ｆａｍｉｌｙ：  ＰＡ−８２００  ｉｎ  ２Ｑ９７，  ＰＡ−８５００  ｉｎ  ２Ｑ９８  Ａｉｍ  ｔｏ  Ｇｒａｂ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｌｅａｄ」（１９９６年１０月２８日）およびＧ．  Ｌｅｓａｒｔｒｅ氏とＤ．  Ｈｕｎｔ氏とによる「ＰＡ−８５００：  Ｔｈｅ  Ｃｏｎｔｉｎｕｉｎｇ  Ｅｖｏｌｕｔｉｏｎ  ｏｆ  ｔｈｅ  ＰＡ−８０００  Ｆａｍｉｌｙ」（１９９７年２月２３日）に記載されている。この論文での全ての開示内容を、本明細書中で参照するものとする。
【００１０】
ＰＡ−８ｘ００ファミリーのマイクロプロセッサのコードを生成するコンパイラは、大部分の分岐命令における「示唆（ヒント）」をエンコードすることが可能である。これらのヒントは静的予測情報形式であり、所定の分岐が略引き取られるまたは略引き取られないことを、コンパイラで確実に実行できるかについての指標である。ＰＡ−８０００マイクロプロセッサのコンパイラについては、Ａ．Ｈｏｌｌｅｒ氏による「Ｃｏｍｐｉｌｅｒ  Ｏｐｔｉｍｉｚａｔｉｏｎｓ  ｆｏｒ  ｔｈｅ  ＰＡ−８０００」により詳細に記載されている。この論文での全ての開示内容を、本明細書中で参照するものとする。
【００１１】
本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術では、分岐履歴テーブルの一つのエントリを共有する二つまたはこれ以上の適切な分岐が、ここに格納される履歴情報を破損しないことを確実に行うために、これらのコンパイラによって生成された示唆（または、その他あらゆる静的予測情報）を利用している。
【００１２】
分岐命令の実行後の分岐命令によって、分岐が引き取られることになるかまたは引き取られないことになるかについての指標は、分岐命令のコンパイラによって生成される示唆との排他的論理和を行い、この排他的論理和の結果を用いて分岐履歴テーブル中の適切なエントリを更新する。さらに、（１）コンパイラによって生成される示唆と、（２）分岐履歴テーブルの適切なエントリから読み取られる動的予測情報との排他的論理和に対応して分岐命令の結果を予測している。
【００１３】
この二つの適切な分岐は、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術を使用して、分岐履歴テーブルのエントリを共有できるが、（この二つの適切な分岐が、略引き取られる分岐と略引き取られない分岐とを含むとしても、）ここに格納される履歴情報を破損することはない。
【００１４】
本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術において、これらおよびこの他の重要な利点、並びに、その目的は、添付の記載内容、図面および請求の範囲においてさらに説明され、かつこれらから明白になるものである。
【００１５】
【発明の実施の形態】
次に、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法およびその装置の例示的および現時点で好適な実施の形態を、図面を参照して詳細に説明する。
図１は、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法およびその装置の実施形態にかかる構成を示すブロック図であり、マイクロプロセッサにおける、複数の分岐命令において識別される分岐が引き取られるかまたは引き取られないかを予測する装置２００を図示している。
【００１６】
装置２００は、通常、分岐履歴テーブル２１４と、複数の分岐命令に対応する静的予測情報を格納する一つまたは複数のデータ格納手段（命令メモリ）２０４と、第１論理ゲート２１６および第２論理ゲート２１２とを備えている。分岐履歴テーブル２１４は、複数のエントリを含んでいる。第１論理ゲート２１６は、一つまたは複数の命令メモリ２０４中のアドレスが指定された一つから導出される静的予測情報２２０を受け取る入力と、分岐履歴テーブル２１４における少なくとも一つのエントリから導出される情報２２６を受け取る入力と、前記した複数の分岐命令中の一つが引き取られるかまたは引き取られないかを示す分岐予測出力２２４とを有している。
【００１７】
第２論理ゲート２１２は、一つまたは複数の命令メモリ２０４中のアドレスが指定された一つから導出される静的予測情報２２０を受け取る入力と、分岐命令において識別された分岐が引き取られるかまたは引き取られないかを示す情報２２２を受け取る入力と、分岐命令に対応する前記した静的予測情報が正確であるかどうかを示す分岐履歴更新出力２１８とを有している。この分岐履歴更新出力２１８を、分岐履歴テーブル２１４が受け取る。
【００１８】
図２は、マイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法に係る処理手順を示すフローチャートであり、マイクロプロセッサの分岐履歴テーブル２１４において干渉を排除する処理方法３００（前記した装置２００を利用する場合もある）が図示されている。
この処理方法３００は、通常、コンピュータプログラムにおける複数の分岐命令の結果を予測するステップ３０２と、所定の分岐命令の実行後に分岐履歴テーブル２１４におけるエントリを更新するステップ３０４とを有している。分岐命令の結果は、前記の分岐命令においてエンコードされた示唆および分岐履歴テーブル２１４におけるエントリの少なくとも一部に対応して予測される（ステップ３０２）。分岐履歴テーブル２１４は、前記の所定の分岐命令においてエンコードされた示唆が正確であるかどうかの少なくとも一部に対応して更新される（ステップ３０４）。
【００１９】
図３は、マイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法に係る他の処理手順を示すフローチャートであり、マイクロプロセッサにおいて実行される複数の分岐命令の結果を予測する処理方法４００（上記記載の装置２００を利用する場合もある）が図示されている。
【００２０】
前記した処理方法４００は、通常、（１）複数のエントリを含む分岐履歴テーブル２１４を維持するステップ４０２と、（２）複数の分岐命令の静的予測情報を維持するステップ４０４と、（３）前記した複数の分岐命令の結果を予測するステップ４０６と、（４）前記した複数の分岐命令のそれぞれを実行後に分岐履歴テーブル２１４におけるエントリを更新するステップ４０８とを有している。分岐命令の結果は、（１）静的予測情報２２０と、（２）分岐履歴テーブル２１４とにおけるエントリの少なくとも一部に対応して予測される（ステップ４０６）。分岐履歴テーブル２１４は、静的予測情報２２０が正確であるかどうかの少なくとも一部に対応して更新される。
【００２１】
ここまで処理方法３００，４００および装置２００を、概略的に説明してきたが、次に、前記した処理方法３００，４００および装置２００をより詳細に説明する。
【００２２】
図４は、分岐予測ハードウェアの構成を示すブロック図であり、ヒューレット・パッカード社のＰＡ−８０００およびＰＡ−８２００マイクロプロセッサに存在する分岐予測ハードウェア１００の高度な模式図を図示している。
これらは、本発明で開示される処理方法３００，４００および装置２００を好適に実施するために有用なものである。一般的に、これらのコンピュータの分岐予測ハードウェア１００は、命令取出ユニット１０２と、命令メモリ１０４と、命令実行ユニット１０６と、分岐履歴テーブル１１０とを備えている。
【００２３】
命令取出ユニット１０２は、命令メモリ１０４、分岐履歴テーブル１１０および命令実行ユニット１０６からの入力に対応して実行するための命令のアドレスを生成する。これらの第１入力（すなわち、命令メモリ１０４からの入力）によって、命令取出ユニット１０２は、すでにアドレスが指定された命令が分岐命令であったかどうかを決定することができる。この決定で分岐命令であった場合、その第２入力（すなわち、分岐履歴テーブル１１０からの入力）は、前記した分岐命令によって識別される分岐が略引き取られるか略引き取られないかを、命令取出ユニット１０２が決定する動的予測情報を供給する。
【００２４】
その第３入力（すなわち、命令実行ユニット１０６で受け取る入力）は、分岐が引き取られたかまたは引き取られなかったかについての標識を示す。命令取出ユニット１０２が分岐命令の結果を誤って予測したことを決定すると、命令パイプラインをクリアする処理が行うか、またはその誤った予測から回復する処理を行う必要がある。
【００２５】
命令取出ユニット１０２によって生成されるアドレスは、命令メモリ１０４および分岐履歴テーブル１１０の両方に付与される。パイプライン式命令を実行するために、保持ユニット１０８はいくつかのエントリであり、この保持ユニットによって分岐履歴テーブル１１０における適切なエントリが、命令実行ユニット１０６におけるパイプラインを通じて分岐命令の処理に続いてアドレスが指定される。
【００２６】
分岐が引き取られたかまたは引き取られなかったかについての同様の標識が、分岐履歴テーブル１１０にも付与される。これは、保持ユニット１０８によってアドレスが指定される分岐履歴テーブル１１０のエントリに格納されるデータに対する、インクリメント、デクリメントまたは追加の際に必要なものである。
【００２７】
ＰＡ−８０００マイクロプロセッサにおいて、分岐履歴テーブル１１０におけるそれぞれのエントリは、一つまたは複数の分岐の引き取られたまたは引き取られない履歴を格納する３ビットシフトレジスタによって維持される。分岐が引き取られる場合、論理「１」が適切なシフトレジスタに移動する。分岐が引き取られない場合、論理「０」が適切なシフトレジスタに移動する。アドレスが指定されたシフトレジスタの履歴ビット中の任意の二つが論理「１」を保持する場合、分岐履歴テーブル１１０によって生成される分岐予測は論理「１」である（すなわち、略引き取られる）。保持しない場合、分岐予測は論理「０」である（すなわち、略引き取られない）。
【００２８】
ＰＡ−８２００マイクロプロセッサにおいて、分岐履歴テーブル１１０におけるそれぞれのエントリは、２ビット飽和型アップ／ダウンカウンタによって維持される。分岐が引き取られる場合、適切なカウンタがインクリメントされる。分岐が引き取られない場合、適切なカウンタがデクリメントされる。すなわち、すでにカウンタがその最大回数に到達していると（すなわち、飽和状態）、追加のインクリメントの試みはこのカウンタに対する作用を及ぼさない。同様に、カウンタがその最小回数に到達していると（すなわち、飽和状態）、追加のデクリメントの試みはこのカウンタに対する作用を及ぼさない。分岐履歴テーブル１１０によって生成される分岐予測は、カウンタの最上位のビット（ＭＳＢ）と等しい。
【００２９】
ＰＡ−８０００マイクロプロセッサおよびＰＡ−８２００マイクロプロセッサの両方の分岐履歴テーブル１１０に関する課題としては、一つのエントリを二つ以上の分岐が共有し、さらに、これらの分岐中の一つが略引き取られる場合、別の一つは略引き取られず、競合が生じて、不正確な分岐命令の結果が予測されることがある。
【００３０】
次に、本発明の好適な実施形態を図示している図１を参照すると、命令取出ユニット２０２と、命令メモリ２０４と、命令実行ユニット２０６と、保持ユニット２０８と、分岐履歴テーブル２１４とにおいて、これらの構成要素が、図４に図示されるものと同様に作用し、また、図４に図示されるものと実質的に同一であることが判明する。
【００３１】
図４において、命令取出ユニット２０２の一出力は、命令アドレスである。このアドレスを命令メモリ２０４に付与し、ここに格納される命令を検索する。さらに、このアドレスを分岐履歴テーブル２１４に付与して、アドレスで指定された分岐命令に関する履歴予測情報を検索する。
【００３２】
保持ユニット２０８は、命令取出ユニット２０２によって生成される命令アドレスをラッチする一つまたは複数のレジスタを有している。分岐予測は、典型的には、アウトオブオーダ型コンピュータシステムおよび／またはパイプライン式コンピュータシステムにおいてのみ必要であるため、保持ユニット２０８は、引き取り命令（多くの場合、単なる分岐命令）のアドレスを維持する複数のレジスタを備えることが多い。
【００３３】
このように分岐命令がアドレスを指定された後（例えば、分岐命令を命令実行ユニット２０６のパイプラインを通じて処理した後）に、分岐履歴テーブル２１４における適切なエントリをアドレス指定して数サイクルごとに更新しても良い。命令の実行時または取り消し（ｒｅｔｉｒｅ）時に保持ユニット２０８においてエントリをクリアする処理手段、またはこれを実行するための処理手段を設けても良い。
【００３４】
命令メモリ２０４は、マイクロプロセッサに対して内部または外部にあるキャッシュであっても良く、メインメモリの一部を使用しても良い。また、命令メモリ２０４がキャッシュとメインメモリとの組み合わせを含むことも可能である。
【００３５】
命令実行ユニット２０６は、任意の一つまたは複数の整数算術論理演算装置（整数ＡＬＵ）、浮動小数点乗算累算装置（ＦＭＡＣ）、シフト／マージ装置、除算／平方根装置（ｄｉｖｉｄｅ／ＳＱＲＴ）、命令再順序付けバッファ（ＩＲＢ）または他の実行装置であっても良い。命令実行ユニット２０６は、分岐命令において識別される分岐が引き取られたか、引き取られなかったかを示す信号２２２を生成する。
【００３６】
好適な実施形態では、静的予測情報は、命令メモリ２０４における一または複数のデータ格納手段に保存され（ステップ４０４）（図３参照）、命令メモリ２０４において保存される各種命令と関連して格納されるプリデコードビットとして保存される。したがって、デコードユニット２１０は、適切なプリデコードビット２２０を読み取り、これを第２論理ゲート２１２および第１論理ゲート２１６に対してルーティングする。保持ユニット２２８は、保持ユニット２０８とおそらく同様に、命令実行ユニット１０６において、静的情報がパイプラインを通じた分岐命令の処理に続いて第２論理ゲート２１２に付与される。
【００３７】
第２論理ゲート２１２は、分岐履歴更新信号２１８を分岐履歴テーブル２１４に提供する。第２論理ゲート２１２に対する入力は、デコードユニット２１０からの静的予測情報２２０と、分岐命令において識別される分岐が引き取られたか引き取られなかったかを示す命令実行ユニット２０６からの信号２２２とを有している。好適な実施形態では、第２論理ゲート２１２は、単一の排他的論理和ゲート（ＸＯＲゲート）である。例えば、静的予測情報２２０は、複数のビットを含む場合、または分岐履歴テーブル２１４において維持される予測履歴情報が静的予測情報２２０およびその達成以外の要因に基づく場合、第２論理ゲート２１２は、より複雑なＸＯＲゲートまたは他の論理ゲートの構成となる場合がある。
【００３８】
分岐履歴テーブル２１４は、複数のエントリを含んでいる。このエントリは、それぞれ多数の方法で維持される（ステップ４０２）（図３参照）。例えば、飽和型アップ／ダウンカウンタ、シフトレジスタまたはデータをラッチする他の処理手段によってエントリを維持しても良い。好適な実施形態では、２ビットのアップ／ダウン飽和型カウンタ（ＨＰ−８２００等）または３ビットのシフトレジスタ（ＨＰ−８０００等）のいずれかによって、分岐履歴テーブルのそれぞれのエントリを維持する。
【００３９】
２ビットカウンタの分岐履歴テーブル２１４を想定すると、分岐履歴更新信号２１８（または下記の表１中の単なる「更新信号」）は、次の表に示されるように、その現在の状態から次の状態にカウンタを動作させる。
【００４０】
【表１】
0003594506.tif 000002
【００４１】
カウンタがすでに最大回数（カウント値）の場合、追加したインクリメント信号（上記の例における論理「１」）はカウンタの動作に影響を及ぼさない（すなわち、カウンタが飽和状態であり、そのインクリメントを行わない）。同様に、カウンタがすでに最小回数の場合、追加したデクリメント信号（上記の例における論理「０」）はカウンタの動作に影響を及ぼさない。
【００４２】
分岐履歴テーブル２１４が多数の２ビットカウンタを備える場合、第１論理ゲート２１６に出力される情報２２６は、アドレスが指定されたカウンタの最上位のビット（ＭＳＢ）のみを含む場合がある。一方、分岐履歴テーブル２１４におけるエントリを３ビットシフトレジスタによって維持する場合、第１論理ゲート２１６に出力される情報２２６に、シフトレジスタのビットの総和のＭＳＢを含む場合がある。
【００４３】
分岐履歴テーブル２１４の読み取りおよび／または書き込みを行う制御論理は、当分野において周知であり、本発明の開示における説明範囲を越えるものである。図１に図示される分岐履歴テーブル２１４は、このような制御論理を包含するとみなされるものである。
【００４４】
第１論理ゲート２１６は、分岐命令が引き取られるか、または引き取られないかを示す分岐予測出力２２６を命令取出ユニット２０２に供給する。分岐予測出力２２６は、動的予測情報を有している。したがって、命令取出ユニット２０２によってアドレスが指定される分岐命令の結果は、静的予測情報２２０および動的予測情報２２６の両方に対応して予測される。なお、これは実行中のコンピュータプログラムが静的予測情報とコンパイルされていないことがない限りである。この場合、命令取出ユニット２０２によってアドレスが指定される分岐命令の結果は、動的予測情報２２６に対応して予測される。
【００４５】
第１論理ゲート２１６に対する入力は、デコードユニット２１０からの静的予測情報２２０および分岐履歴テーブル２１４における少なくとも一つのエントリから導出される情報２２６を有している。好適な実施形態では、第１論理ゲート２１６は一つのＸＯＲゲートである。しかし、再び、例えば静的予測情報２２０が複数のビットを含む場合、または分岐命令の結果の予測が静的予測情報２２０および分岐履歴テーブル２１４において維持される情報２２６以外の要因に基づく場合、第１論理ゲート２１６は、より複雑なＸＯＲゲートまたは論理ゲートの別様の構成を含む場合がある。
【００４６】
コンピュータシステムが、静的予測情報を含まないコンピュータプログラムを実行できることが望ましい場合、命令取出ユニット２０２は、次にコンピュータプログラムが静的予測情報を有するか有しないかを示す信号を送出する分岐予測モード標識（図示せず）を含むか、または含まないかに対応することがある。コンピュータプログラムが静的予測情報を含まない場合、信号２２０を論理「０」に駆動可能であり、これにより、第２論理ゲート２１２および第１論理ゲート２１６の出力２１８，２２４が単独で命令実行ユニット２０６によって付与されて引き取られる、または引き取られない情報２２２に左右される。このモードでは、二つ以上の分岐によって共有される分岐履歴テーブル２１４におけるエントリが、競合する結果を有する分岐によって更新され、誤った分岐予測の確率が高くなることに注意する必要がある。
【００４７】
図１に示される装置２００は、分岐履歴テーブル２１４が、多数の２ビットの飽和型アップ／ダウンカウンタを備え、論理「０」の示唆では分岐が略引き取られることを示し、論理「１」の示唆では分岐が略引き取られないことを示し、論理「１」信号は分岐命令において識別される分岐が実際に引き取られたことを示し、論理「０」信号は分岐が実際に引き取られなかったことを示すと想定すると、図１に示される装置２００が以下の動作を行う。
【００４８】
第１の適切な分岐が引き取られると示唆が与えられ（示唆０）、実際に引き取られる（結果１）と、分岐履歴テーブル２１４における適切なカウンタはインクリメントされる（０  ＸＯＲ  １＝１）。同様に、第２分岐が引き取られないと示唆が与えられ（示唆１）、実際に引き取られない（結果０）と、分岐履歴テーブル２１４における適切なカウンタはインクリメントされる（１  ＸＯＲ  ０＝１）。第１および第２分岐が分岐履歴テーブルにおける同一のエントリ（例えば、カウンタ）を共有する場合、これらの分岐の履歴は相互に干渉しない。例えば、カウンタが初期値「００」を保持し、第１分岐が示唆を付与するように引き取られ、そして第２分岐が示唆を付与するように引き取られなかった直後に、インクリメントされることが想定される。
【００４９】
二度のインクリメント後に、カウンタは「１０」の値を保持する。第１分岐が再び引き取られるように示唆され（示唆０）、カウンタのＭＳＢが「１」として読み取られると、第１論理ゲート２１６は「１」の分岐予測（０  ＸＯＲ  １＝１）を生成し、これは命令取出ユニット２０２によって引き取られることを意味することになる。また、第２分岐が引き取られないように再び示唆が付与され（示唆１）、カウンタのＭＳＢが「１」として読み取られると、第１論理ゲート２１６は「０」の分岐予測（１  ＸＯＲ  １＝０）を生成し、これは命令取出ユニット２０２によって引き取られないことを意味している。
【００５０】
もちろん、示唆が常に正しければ分岐予測は単独で示唆に依存し、装置２００は不要になる。しかしながら、次に、第１および第２分岐がその第１実行中に正確に示唆され、分岐履歴テーブルにおいて共有されるカウ２タが「１０」の状態であると想定する。第１分岐がその機能を切り替えて略引き取られないようにすると、その不正確な示唆（示唆０）はその引き取られないという結果（結果０）と排他的論理和が行われ、カウンタがデクリメントされる（０  ＸＯＲ  ０＝０）。カウンタが「０１」状態であると、次の第１分２の予測は略引き取られないことになって、正確なものとなる（カウンタのＭＳＢはこのとき「０」であり、「０」の示唆と排他的論理和が行われると、示唆にかかわらず、この結果、引き取られない予測の論理「０」を生成する）。
【００５１】
以下要約する。、本明細書中に開示される処理方法３００，４００および装置２００の第一の利点は、分岐履歴テーブル２１４におけるエントリを共有する二つの適切な分岐が正確に示唆されると、この分岐中の一方が略引き取られ、他方が略引き取られなくとも二つの分岐の動的予測履歴は互いに干渉しない。また、分岐が正確に示唆されないが、（１）分岐履歴テーブル２１４におけるエントリをその他いかなる分岐とも共有しないか、または（２）これを繰り返し（または、分岐履歴テーブル２１４におけるそのエントリを共有する分岐よりもはるかに多く）実行する（ステップ３０２および４０６／図２および図３参照）と、分岐履歴テーブル２１４に格納される動的情報によって、命令取出ユニット２０２は不正確な示唆の代わりに分岐の結果の正確な予測を行う。適切な分岐が互いに干渉するのは、二つの分岐が分岐履歴テーブル２１４におけるエントリを共有し、一方が正確に示唆され、他方が不正確に示唆されるときのみである。
【００５２】
これは、従来の分岐予測方式と対照的であり、一方が略引き取られ、一方が略引き取られない二つの適切な分岐は、分岐履歴テーブル２１４におけるエントリを共有する場合に、常に相互干渉が生じることになる。
【００５３】
本発明の例示的および現時点での好適な実施形態をこれまで詳細に説明したが、進歩的な概念をその他様々に具体化して利用し得ること、さらに、請求の範囲が先行技術によって制限されるものを除いて、かかる変形例を含むと解釈されるその意図を理解できるものである。
【００５４】
以下に本発明の実施の形態を要約する。
１．マイクロプロセッサが実行する複数の分岐命令結果を予測する分岐命令予測方法（４００）において、
複数のエントリを含む分岐履歴テーブル（２１４）を維持するステップ（４０２）と、
複数の分岐命令の静的予測情報を維持するステップ（４０４）と、
それぞれの結果が、前記静的予測情報（２２０）と前記分岐履歴テーブルにおけるエントリとの少なくとも一部に対応して、予測される前記複数の分岐命令の結果を予測するステップ（４０６）と、
前記複数の分岐命令のそれぞれを実行した後に、前記静的予測情報が正確であるかを、少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップ（４０８）と、
を有するマイクロプロセッサが実行する複数の分岐命令結果を予測する分岐命令予測方法（４００）。
【００５５】
２．前記分岐履歴テーブルにおける各エントリを飽和型アップ／ダウンカウンタで維持するステップと、
前記複数の分岐命令中の所定の一つを実行した後に、前記複数の分岐命令中の前記所定の一つについての前記静的予測情報（２２０）が正確である場合は、前記分岐履歴テーブル（２１４）における所定の飽和型アップ／ダウンカウンタをインクリメントするステップ、および前記複数の分岐命令中の前記所定の一つについての前記静的予測情報（２２０）が不正確である場合には、前記分岐履歴テーブル（２１４）における所定の飽和型アップ／ダウンカウンタをデクリメントするステップと、
をさらに有する上記１記載の分岐命令予測方法（４００）。
【００５６】
３．前記分岐履歴テーブル（２１４）における各エントリをシフトレジスタによって維持するステップと、
前記複数の分岐命令中の所定の一つを実行した後、前記分岐履歴テーブルの所定のシフトレジスタに、前記複数の分岐命令中の前記所定の一つの前記静的予測情報（２２０）が正確であるかの標識（２２２）をシフトするステップと、
をさらに有する上記１記載の分岐命令予測方法（４００）。
【００５７】
４．前記複数の分岐命令中の所定の一つの前記結果を予測するステップ（４０６）は、
前記複数の分岐命令中の前記所定の一つに対応する静的予測情報（２２０）と、前記分岐履歴テーブル（２１４）におけるエントリと、の排他的論理和（２１６）の少なくとも一部に対応して、前記複数の分岐命令中の前記所定の一つの前記結果を予測するステップを有する上記１記載の分岐命令予測方法（４００）。
【００５８】
５．前記分岐履歴テーブル（２１４）におけるエントリを更新するステップ（４０８）は、
前記複数の分岐命令中の所定の一つに対応する静的予測情報（２２０）と、前記分岐命令中の前記所定の一つを実行して、分岐が引き取られるか引き取られないかについての標識（２２２）と、の排他的論理和（２１２）の少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップを有する上記４記載の分岐命令予測方法（４００）。
【００５９】
６．前記分岐履歴テーブル（２１４）におけるエントリを更新するステップ（４０８）は、
前記複数の分岐命令中の所定の一つに対応する静的予測情報（２２０）と、前記分岐命令中の前記所定の一つを実行して、分岐が引き取られるか引き取られないかについての標識（２２２）と、の排他的論理和（２１２）の少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップを有する上記１記載の分岐命令予測方法（４００）。
【００６０】
７．マイクロプロセッサの分岐履歴テーブル（２１４）において干渉を排除する干渉排除方法（３００）において、
コンピュータプログラムにおける複数の分岐命令の結果を、前記分岐命令においてエンコードされた示唆と、分岐履歴テーブルにおけるエントリと、の少なくとも一部に対応して、予測するステップ（３０２）と、
所定の分岐命令の実行後、前記所定の分岐命令において前記エンコードされた示唆が正確であるかの少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップ（３０４）と、
を有するマイクロプロセッサの分岐履歴テーブル（２１４）における干渉を排除する干渉排除方法（３００）。
【００６１】
８．所定の分岐命令の前記結果を予測するステップ（３０２）は、
前記所定の分岐命令においてエンコードされた示唆（２２０）と、前記分岐履歴テーブル（２１４）におけるエントリと、の排他的論理和（２１６）の少
なくとも一部に対応して、前記所定の分岐命令の前記結果を予測するステップを有する上記７記載の干渉排除方法（３００）。
【００６２】
９．前記分岐履歴テーブル（２１４）におけるエントリを更新するステップ（３０４）が、
前記所定の分岐命令においてエンコードされた示唆（２２０）と、前記所定の分岐命令を実行して、分岐が引き取られるか引き取られないかについての標識（２２２）と、の排他的論理和（２１２）の少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリーを更新するステップを有する上記７記載の干渉排除方法（３００）。
【００６３】
１０．マイクロプロセッサにおける、複数の分岐命令において識別される分岐が引き取られるか引き取られないかを予測する分岐命令予測装置（２００）において、
複数のエントリを含む分岐履歴テーブル（２１４）と、
複数の分岐命令に対応する静的予測情報を格納する少なくとも一つのデータ格納手段（２０４）と、
前記少なくとも一つのデータ格納手段中のアドレスが指定された一つから導出される静的予測情報（２２０）を受け取る入力と、前記分岐履歴において少なくとも一つのエントリから導出される情報（２２６）を受け取る入力と、前記複数の分岐命令中の一つが引き取られるか引き取られないかを示す分岐予測出力（２２４）と、を有する第１論理ゲート（２１６）と、
前記少なくとも一つのデータ格納手段中のアドレスが指定された一つから導出される静的予測情報を受け取る入力と、分岐命令において識別される分岐が引き取られるか引き取られないかを示す情報（２２２）を受け取る入力と、前記分岐命令に対応する静的予測情報が正確であるかを示す分岐履歴更新出力（２１８）と、を有する第２論理ゲート（２１２）と、
を備えて前記分岐履歴更新出力を前記分岐履歴テーブルが受け取る分岐命令予測装置（２００）。
【００６４】
１１．前記第１論理ゲート（２１６）と前記第２論理ゲート（２１２）とが排他的論理和である上記１０記載の分岐命令予測装置（２００）。
【００６５】
【発明の効果】
以上の説明から明らかなように、本発明のマイクロプロセッサの分岐履歴テーブルに対する干渉を排除する方法およびその装置によれば、より正確な分岐予測が可能になり、かつこの結果で誤って予測された分岐によって生起する遅延を少なくできるようになる。
【図面の簡単な説明】
【図１】本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法およびその装置の実施形態にかかる構成を示すブロック図である。
【図２】実施形態での処理方法にかかる処理手順を示すフローチャートである。
【図３】実施形態での処理方法にかかる他の処理手順を示すフローチャートである。
【図４】実施形態にあって分岐予測ハードウェアの構成を示すブロック図である。
【符号の説明】
１００  分岐予測ハードウェア
１０２，２０２  命令取出ユニット
１０４  命令メモリ
１０６，２０４，２０６  命令実行ユニット
１０８，２０８，２２８  保持ユニット
１１０  分岐履歴テーブル
２００  装置
２１０  デコードユニット
２１２  第２論理ゲート
２１４  分岐履歴テーブル
２１６  第１論理ゲート
３００，４００  処理方法
【図１】
0003594506.tif 000003
【図２】
0003594506.tif 000004
【図３】
0003594506.tif 000005
【図４】
0003594506.tif 000006