(57)【特許請求の範囲】
【請求項１】
分岐先バッファ（ＢＴＢ）内の複数のエントリのうちの１つのエントリを割り当てる方法であって、
データ処理装置において実行すべき分岐命令を受信する段階と、
前記分岐先バッファが前記分岐命令に対応するエントリを含まないことを判定する段階と、
割り当てのための分岐先バッファ内のエントリを特定する段階であって、分岐先バッファ内の特定されたエントリは、以前に受信された第１分岐命令に対するターゲット識別子および第１予測値を備える、前記エントリを特定する段階と、
分岐履歴テーブル（ＢＨＴ）から複数の命令の実行中に蓄積された命令順序の変更結果に基づいて第２分岐命令に対応する第２予測値を供給する段階であって、前記分岐履歴テーブルは、複数の命令の実行中に蓄積された命令順序の変更結果に基づくものである、前記第２予測値を供給する段階と、
前記第１予測値と第２予測値との比較に基づいて前記分岐先バッファ内の前記特定されたエントリに前記第２分岐命令を割り当てるかどうかを判定する段階と
を備える方法。
【請求項２】
前記第２予測値が前記第１予測値と比べてより分岐する可能性大の予測を示す場合に前記分岐命令を前記特定されたエントリに割り当てる段階をさらに備える、請求項１に記載の方法。
【請求項３】
複数のビットを分岐履歴レジスタにシフトする段階であって、前記複数のビットの各ビットは、分岐命令の結果を示し、複数のビットのうちの１ビット以上は、前記分岐履歴テーブルをアドレス指定するためのインデックスを生成する際に用いられる、前記複数のビットをシフトする段階をさらに備える、請求項１に記載の方法。
【請求項４】
前記分岐命令の結果に基づいて前記分岐履歴テーブルを更新する段階をさらに備える、請求項１に記載の方法。
【請求項５】
前記特定されたエントリに前記分岐命令を割り当てるかどうかを判定する段階は、前記第２予測値が分岐する可能性が低いことを示す場合に前記特定されたエントリに前記分岐命令を割り当てないことをさらに備える、請求項１に記載の方法。
【請求項６】
前記第１予測値は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態の１つを示す２ビットの予測値を備える、請求項１に記載の方法。
【請求項７】
前記第２予測値は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態の１つを示す２ビットの予測値を備える、請求項１に記載の方法。
【請求項８】
データ処理システムにおいて分岐先バッファ（ＢＴＢ）内の複数のエントリのうちの１つのエントリを割り当てる方法であって、
前記データ処理システムにおいて処理すべき複数の命令を受信する段階であって、前記複数の命令は、１以上の分岐命令を備える、前記複数の命令を受信する段階と、
分岐履歴テーブル（ＢＨＴ）を生成する段階であって、前記分岐履歴テーブルは、前記複数の命令の実行中に蓄積された命令順序の変更結果に基づくものであり、前記蓄積された命令順序の変更結果は、第１分岐命令に対応する第１予測値を生成するのに用いられる、前記分岐履歴テーブルを生成する段階と、
前記データ処理システムにおいて処理すべき第１分岐命令を受信する段階と、
前記分岐先バッファが前記第１分岐命令に対応するエントリを含まないことを判定する段階と、
割り当てのために前記分岐先バッファ内のエントリを特定する段階であって、前記分岐先バッファ内の前記特定されたエントリは、第２分岐命令に対する第２予測値を備える、前記エントリを特定する段階と、
前記第１予測値と前記第２予測値との比較に基づいて前記分岐先バッファ内の前記特定されたエントリに前記第１分岐命令を割り当てるかどうかを判定する段階と、
前記第１予測値が前記第２予測値と比べてより分岐する可能性大の予測を示す場合に前記第１分岐命令を前記特定されたエントリに割り当て、前記第１予測値が前記第２予測値と比べてより分岐しない可能性大の予測を示す場合に前記エントリを前記第１分岐命令に割り当てない段階と
を備える方法。
【請求項９】
前記第１予測値は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態の１つを示す２ビットの予測値を備える、請求項８に記載の方法。
【請求項１０】
前記第２予測値は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態の１つを示す２ビットの予測値を備える、請求項８に記載の方法。
【請求項１１】
複数のビットを分岐履歴レジスタにシフトする段階であって、前記複数のビットの各ビットは、分岐命令の結果を示し、複数のビットのうち１ビット以上は、前記分岐履歴テーブルをアドレス指定するためのインデックスを生成する際に用いられる、前記複数のビットをシフトする段階をさらに備える、請求項８に記載の方法。
【請求項１２】
データ処理システムであって、
命令を実行する処理論理と、
前記処理論理に接続された分岐先バッファ（ＢＴＢ）であって、複数のエントリを有し、前記複数のエントリのうちの１つのエントリは、第１分岐命令に対応する第１予測値を備える、前記分岐先バッファと、
前記分岐先バッファに接続された分岐先バッファ制御回路であって、置換すべき複数のエントリのうちの１つのエントリを選択する、前記分岐先バッファ制御回路と、
前記処理論理に接続され、前記複数の命令の実行中に蓄積された命令順序の変更結果に基づいて第２分岐命令に対応する第２予測値を供給する分岐履歴テーブル（ＢＨＴ）と、
前記分岐先バッファに接続され、前記第１予測値を受信し、且つ前記分岐履歴テーブルに接続され、第２予測値を受信する分岐先バッファ置換割り当て論理であって、前記第１予測値と前記第２予測値との比較を実行し、該比較に基づいて前記複数のエントリのうちの１つのエントリを前記第２分岐命令に割り当てる、前記分岐先バッファ置換割り当て論理と
を備えるデータ処理システム。
【請求項１３】
前記第１予測値は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態の１つを示す２ビットの予測値を備える、請求項１２に記載のデータ処理システム。
【請求項１４】
前記第２予測値は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態の１つを示す２ビットの予測値を備える、請求項１２に記載のデータ処理システム。
【請求項１５】
前記第２予測値が前記第１予測値と比べてより分岐する可能性大の予測を示すと比較判定する場合、前記複数のエントリのうちの１つのエントリが前記第２分岐命令に割り当てられる、請求項１２に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的に半導体処理装置に関し、特に、分岐先バッファを有する半導体処理装置に関する。
【背景技術】
【０００２】
分岐予測は、処理装置が待機状態である場合に時間の無駄を省き、又は時間を短縮するように用いられる一般的な共通技術である。多くの場合、分岐命令の実行を早めるために、再利用することが予測された分岐情報を記憶するために用いられる分岐先バッファ（branch target buffer：ＢＴＢ）の使用が分岐予測に含まれる。ＢＴＢエントリは、ＢＴＢエントリ内に分岐命令と関連する情報をキャッシングすることにより、分岐先に配置された分岐先命令をフェッチする処理を高速化するように用いられる。分岐命令を実行する場合、分岐命令の宛先（分岐先命令）は、処理装置内の命令待ち行列（instruction queue）にロードされる。好ましくは、分岐先が速く得られて命令待ち行列に配置されるように、予測された分岐のエントリはＢＴＢ内に存在する。中央処理装置（central processing unit:ＣＰＵ）が待機状態にあるクロック周期では、ＢＴＢ内にない分岐先を得て読み出すのに時間がより長くかかる。従って、ＢＴＢ内で毎回ヒットする分岐があるようにＢＴＢがロードされることが好ましい。このことは、達成する可能性は低いが、ＢＴＢ外から分岐先を得なければならないことが数回であるが好ましい。分岐予測問題の概要、およびＢＴＢ設計の代替手段が、ジェイ・ケイ・エル・リー（Ｊ．Ｋ．Ｌ．Ｌｅｅ）およびエー・ジェイ・スミス（Ａ．Ｊ．Ｓｍｉｔｈ）の「分岐予測方法および分岐先バッファ設計」（１９８４年１月、コンピュータ、１７（１））により説明されている。
【０００３】
さらに、追加の分岐予測構成は、分岐性能を向上するためにＢＴＢと組み合わされてもよい。ＢＴＢエントリが任意の予測器に伴う分岐先情報を含むが、その情報は大きいため、制限された数のエントリのみが供給される。追加の分岐性能のため、１以上の追加の分岐予測器構成を、ＢＴＢと連動して用いて未処理の条件付き分岐命令の方向を予測するようにして、予測された分岐経路の推測したフェッチおよび任意の実行できるようにしてもよい。このような一般的に用いられる構成は、小型予測器の集合を含む分岐履歴テーブル（branch history table : BHT）である。分岐先情報が記憶されないので、ＢＨＴの容量は、一定の領域だけＢＴＢより増大させてもよい。ＢＨＴでは、以前の分岐結果の履歴は、各分岐又は分岐結果のグローバル履歴に対して記憶され、テーブルは、分岐予測を得るために検索される。ＢＨＴ予測器は、安価で精度良く作成される。ＢＨＴを用いた場合、ＢＴＢ内で分岐がヒットする場合の実行時間より実行時間が長くなるが、実行時間は、分岐予測を用いない場合の実効時間と比較して短縮される。ＢＨＴ方式の優れた検索、およびさらに複雑な構成は、エス・マックフィリング（Ｓ．ＭｃＦｒｌｉｎｇ）の「分岐予測器の組み合わせ」（ＤＥＣ  ＷＲＬ−ＴＮ−３６）において理解され得る。
【０００４】
説明されたＢＴＢおよびＢＨＴ構成に加えて、他の分岐向上技術は、信頼性予測器の利用である。信頼性予測器は、分岐予測が正しい可能性を判定するための信頼値を割り当てる。分岐予測の有効性をさらに増大するため、分岐予測器の信頼性メカニズムは、供給された信頼値に基づいて、分岐予測器から得られた予測を修正するように用いられてもよい。また、信頼性予測器は、動的な選択器として複合分岐予測手法で用いられてもよい。複合分岐予測手法では、複数の予測器が具体化され、複数の予測器のうちの一つの複数の予測器により各分岐の選択がなされる。この選択は、各分岐結果に対する最適な予測器を確定することを試みる信頼性予測器又は信頼性論理に基づいてもよい。信頼性予測器又は信頼性論理に関する追加情報は、イー・ジャコブス（Ｅ．Ｊａｃｏｂｓｅ）、イー・ロテンバーグ（Ｅ．Ｒｏｔｅｎｂｅｒｇ）、およびジェイ・イー・スミス（Ｊ．Ｅ．Ｓｍｉｔｈ）の「条件分岐予測に対する信頼性の割り当て」（ＭＩＣＲＯ−２９）において理解され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＢＴＢ内に分岐がある可能性を増加させる技術は、ＢＴＢが大きな記憶容量を有することである。ＢＴＢのサイズを増大させることは、処理装置を有する集積回路の面積を拡大させ、ＢＴＢの価格を上昇させる。面積の拡大を縮小することは好ましいが、それは特に低価格の処理装置に対して重要である。従って、処理装置が待機状態であるクロック周期において、分岐先結果をバッファにロードする状況を避けるか又は減少するため、ＢＴＢ内に追加の記憶装置を必要としない技術が必要である。
【図面の簡単な説明】
【０００６】
【図１】実施形態による分岐先バッファ（branch target buffer：ＢＴＢ）を有する処理装置のブロック図である。
【図２】図１の処理装置の動作を理解するのに有用なテーブルである。
【発明を実施するための形態】
【０００７】
本発明の態様及び実施形態のさらなる詳細は、単に一例として図面を参照しながら説明される。図面の要素は、簡潔かつ明確に説明され、必ずしも一定の縮尺で描かれていない。
【０００８】
一形態では、処理装置は、分岐先バッファ（branch target buffer：ＢＴＢ）を有し、ＢＴＢは、処理装置による使用が予測されると見込まれる分岐命令のアドレスを記憶するために用いられる。ＢＴＢエントリは、対応する分岐に対する予測因子に応じた分岐先情報を含む。ＢＴＢ内でミスした分岐に対するＢＴＢ内のエントリ割り当てでは、ＢＴＢ内の現状分岐は、置換される可能性が最も高いものとして特定され、置換候補と呼称される。置換候補は、将来において利用される可能性と関連がある。処理装置により直近に実行されたがＢＴＢ内に無い分岐は、現状分岐と呼称され、置換候補と自動的に置換せずに、置換候補と置換するものとして考慮される。記憶された置換候補の予測情報は、現状分岐の予測と比較され、割り当てする判定は、この比較に基づくものである。現状分岐が置換候補より用いる可能性が高いと判定される場合、割り当ては実行され、現状分岐は、置換候補と置き換えられる。置換候補が現状分岐より用いる可能性が高いと判定される場合、処理装置は割り当てを実行せず、置換候補がＢＴＢ内に保持される。また、予測の信頼性は、どちらが用いられる可能性が高いかを判定するのに用いられてもよい。このことは、図面および以下の記載を参照することでより良く理解される。
【０００９】
本明細書において、バスという用語は、複数の信号又は導電体を言及するために用いられ、複数の信号又は導電体は、データ、アドレス、コントロール、又はステータス等の様々な種類の情報のうちの１以上の情報を伝達するように用いられてもよい。本明細書において説明される導電体は、単一の導電体、複数の導電体、一方向の導電体、又は双方向の導電体に関して図示され又は記載される。しかしながら、異なる実施形態では、導電体の具体化が変更され得る。例えば、双方向の導電体ではなくて別個の一方向の導電体が用いられてもよく、その逆も同様である。また、複数の導電体は、シリアルで又は時分割多重方式で複数の信号を伝達する単一の導電体と置き換えてもよい。同様に、複数の信号を伝達する単一の導電体は、これら信号のサブセットを伝達する種々の異なる導電体に分割され得る。従って、信号を送信することに関して、多くの選択肢が存在する。
【００１０】
図１は、処理装置４０およびバス２２を備えるデータ処理システム１０を示す。さらに、データ処理システム１０は、図示しないメモリ、Ｉ／Ｏユニット、および種々の他の回路を備えてもよい。処理装置４０は、バス２２、ＢＴＢ１４、ＢＴＢ制御回路１６、論理１８、および分岐履歴テーブル（branch history table：ＢＨＴ）２０に接続された処理論理１２を備える。処理装置４０は、例えば超小型処理装置（microprocessor）、超小型制御回路（microcontroller）、デジタル信号処理装置等の処理装置のあらゆる種類のものでもよい。一実施形態では、処理装置４０は、処理装置コア（processor core）として言及されても良い。他の実施形態では、処理装置４０は、複数の処理装置のデータ処理システムにおける多くの処理装置のうちの１つでもよい。さらに、そのように例示されていないが、処理装置４０は、パイプライン型の処理装置でもよい。本発明の動作理解を明確にするため、処理装置４０は、図示しない追加の回路を備えてもよい。処理論理１２は、実行ユニットを有する。ＢＨＴ２０は、分岐履歴レジスタ２６および信頼性予測器２８を有する。処理論理１２は、ＢＴＢ制御回路１６に接続された、実行ユニット２４からの出力を有する。ＢＴＢ１４は、論理１８に接続された出力を有する。ＢＨＴ２０は、論理１８に接続された第１出力と、論理１８に接続された、信頼性予測器２８からの第２出力とを有する。論理１８は、ＢＴＢ制御回路１６に接続された出力を有する。この例では、３２個等の比較的少ない数の好適なエントリを有してもよい。例えば、これらエントリの１つは、ターゲットアドレス３０および予測３２の２つの部分を有するようなものとして図１に示される。各エントリは、ヒットと判定するためのタグ情報として用いられる図示されない分岐命令アドレスを有する。分岐命令アドレスは、ＢＴＢ内の記憶された各エントリのタグ情報との比較に基づいて、ＢＴＢ１４内にヒットが存在するかどうかを判定するために用いられる。また、エントリには、有効ビット等の図示されない追加ビットが存在してもよい。この例では、予測３２は、２ビットを有して４状態（強い分岐不成立状態（strongly not-taken）、弱い分岐不成立状態（weakly not-taken）、弱い分岐成立状態（weakly taken）、強い分岐成立状態（strongly taken））のうちの１状態を示す。これら４つの可能性は、ターゲットアドレスに対して共通に特定される。この２ビットの予測情報は、従来技術において、分岐する可能性があるか又は分岐する可能性がないかを予測し、且つ状況に応じてフェッチする命令を示すのを補助するように用いられている。ＢＴＢ１４において実行する分岐命令がヒットする場合、一致するエントリにより、分岐のターゲットアドレス（ターゲットアドレス３０）と、予測３２の状態に基づいて分岐する可能性があるかあるいは分岐する可能性がないのかに関する予測とが論理１８に供給される。論理１８は、この情報を処理論理１２に供給して、命令フェッチと分岐の予想されたパスの実行とを処理論理１２が指示できるようにする。
【００１１】
動作では、処理装置４０は、処理論理１２内の命令バッファに応じて命令を実行する。分岐命令（又は単に分岐）が復号化されて処理を開始する場合、分岐命令は、現状命令となる。各分岐の処理において、ＢＨＴ２０は、分岐の結果に基づいて、分岐履歴レジスタ２６とともに分岐により選択された予測因子を含む分岐履歴を更新する。分岐履歴レジスタ２６は、最後のＮ分岐の結果を記憶する。一実施形態では、分岐履歴レジスタ２６は、シフトレジスタとして具体化される。分岐命令が実行される毎に、分岐する可能性がない場合に「０」の値がレジスタにシフトされ、分岐する可能性がある場合に「１」の値がレジスタにシフトされる。最も古い値は、レジスタから削除される。従って、分岐履歴レジスタ２６は、分岐状態のグローバル履歴を供給する、つまり最後のＮの実行された分岐する可能性有り又は可能性無しの履歴を供給する。分岐履歴レジスタ２６のサイズは、異なる実施形態において変更してもよい。標準的な実施形態では、Ｎは、「０」（分岐予測レジスタが実施されない場合）から「１６」のような小さな最大数までの範囲にしてもよい。現状分岐がＢＴＢ１４に存在しない場合、ＢＨＴ２０は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態を示す４つの状態のうちの１つの状態を示す、現状分岐に対する２ビットの予測因子を供給する。ＢＨＴ２０は、現状分岐に対する２ビットの予測因子を論理１８に供給する。動作では、ＢＨＴ２０は、複数の予測因子を記憶し、一つの予測因子が、ＢＨＴから現状分岐のために選択される。このような選択は、分岐履歴２６に含まれる現状分岐の履歴の何れかに基づいて、現状分岐のプログラムカウンタ値に基づいて、プログラムカウンタ値と分岐履歴レジスタ２６との組み合わせに基づいて、又は当技術分野で周知のような種々の方法でなされてもよい。ＢＴＢ制御回路１６は、ＢＴＢ１４内のエントリから置換候補を特定する。ＢＴＢ１４は、置換候補に対する２ビットの予測因子を論理１８に供給する。論理１８は、現状分岐が置換候補よりも使用される可能性が高いかどうかを判定する。現状分岐が使用される可能性が高い場合、ＢＴＢ制御回路は、割り当てを実行し、置換候補を現状分岐と置き換える。ＢＴＢ制御回路は、処理論理１２に応答して動作して、処理論理１２からの現状分岐に関する必要な情報を受信する。置換候補が使用される可能性が高い場合、置換候補は割り当て状態ではなく、ＢＴＢ１４内に保持され、現状分岐に対するＢＴＢ１４内の割り当ては実行されない。
【００１２】
図２は、割り当て状態ではないか、又は割り当てを実行すべきかを判定する論理１８の原理の例を示す。図２には、置換候補に対する、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態の４つの予測因子を示すテーブルが示される。置換候補のこれら４つの可能性の各々に対して、現状分岐の同じ４つの可能性が存在してテーブル中に示される。従って、示される１６組の可能な組み合わせがあり、この組み合わせの各々に対応する判定は、テーブル中に示される。置換候補が分岐しない可能性大として予測される場合、判定は、現状分岐の予測に関係なく「割り当て」である。この場合、現状分岐は、可能性のある３つの分岐可能性よりも高い予測を有し、４つ目の可能性に絞られる。その理由は、現状分岐は置換候補よりも直近で可能性を示すものとして示されているためであり、判定は「割り当て」となる。置換候補が分岐する可能性小の予測を有する場合、判定は、４つの可能性に全てに対して常に「割り当て」である。この場合の異なる判定は、十分に可能性がある。置換候補に対する予測が分岐しない可能性が小であり、且つ現状分岐に対する予測が分岐する可能性が大である場合、予測は、置換候補に対して一つのカテゴリーの差でわずかに良好であるが、判定はまだ「割り当て」である。直近の現状分岐の実行は、わずかな差の予測よりも重要であると考えられる。置換候補の分岐に対して分岐する可能性が小である場合では、判定は、現状分岐が２つのカテゴリー差の分岐しない可能性が大である場合を除いて「割り当て」である。分岐しない可能性が小である現状分岐の一つのカテゴリー差に対して、判定は「割り当て」である。また、異なる判定は、この場合に適切と考えられる。分岐する可能性大の予測を有する置換候補の分岐の場合、「割り当て」の判定は、分岐しない可能性小および分岐しない可能性大の予測を有する現状分岐に対してのみである。置換候補に対して一つのカテゴリー差のみである上記の２つの場合では、判定は「割り当て」であるが、逆に判定してもよい。図２のエントリに対する「割り当て」又は「割り当てしない」の判定結果の代替例が、発明に、特に置換候補の分岐が一つのカテゴリー差の可能性を有するというより好適な結果を有する場合について予想される。判定は、論理１８により具体化されてもよく、また、幾つかの実施形態では、図２に図示されたテーブルのような複数のテーブルが、テーブル内の信頼できるエントリに対する異なる割り当て判定を用いて具体化されてもよく、また、動的選択処理が、論理１８により用いられて、ＢＴＢにおいて現状分岐がミスした場合に現状分岐に対して割り当て判定するときに複数のテーブルのいずれかを信頼するのかを判定してもよい。
【００１３】
さらに、割り当て判定に関する処理は、ＢＨＴ２０の信頼性予測器２８により供給される信頼性予測因子を考慮する。信頼性予測因子は、予測をさらに修正するように用いられる。図２のテーブルの例では、予測は、現状分岐に対する信頼性が高いと考慮される。例えば、信頼度が低い場合、分岐する可能性小の現状分岐および分岐する可能性大の置換候補の予測に対して、より好適な判定は「割り当てしない」でもある。信頼性が極めて低い場合では、置換候補および現状分岐が分岐する可能性小として予想される場合に「割り当てる」から「割り当てしない」に判定を切り替えてもよい。論理１８は、信頼性予測器２８により供給される信頼度に基づいて、図２に示されるテーブル中の１以上のエントリを変更するように用いられても良く、また幾つかの実施形態では１以上の複数の割り当て判定のテーブルを選択するように用いられても良い。信頼性予測器２８がＢＨＴ２０の一部分として示されているが、代替的な実施形態では、信頼性予測器２８は、独立的な構成として設けられてもよい。他の代替的な実施形態では、複数の予測器が単一のＢＨＴ２０の代わりに用いられても良く、信頼性予測器２８は、図２のテーブルエントリに基づいて論理１８により実行される選択処理に用いられる予測として、現状分岐に対する複数の予測器において複数の予測のうちの一つの予測を選択してもよい。さらに、他の実施形態では、複数の予測器の各々は、異なる置換判定のテーブルを有しても良く、また、信頼性予測器２８による現状分岐に用いられるべき特定の予測因子の選択では、割り当て判定をする場合に、論理１８による使用のための選択された特定の予測因子と関連する特定のテーブルを選択しても良い。
【００１４】
予測を供給する履歴手法では、一般的に、最も正確であると考えられ、追加の信頼性要素が判定する際のガイドを提供する。また、周知であり、且つ簡潔さ、および速さ等の利点を提供し得る予測を供給する他の技術がある。「割り当て」および「割り当てしない」の判定を行う場合に、記載された現状分岐の予測と置換候補の予測とを比較する処理は、信頼性手法により向上される履歴手法を用いることで利点を得てもよい。また、他の予測方式が効果的であってもよい。ＢＴＢ割り当ての改良は、置換候補とともに現状分岐の予測を得る他の処理を用いて達成されてもよい。どの様な選択方式が選択されても、ＢＴＢ内の現状のエントリをＢＴＢ内のミスした現状分岐の新たなエントリと置換するかどうかに関する判定のための置換候補および現状分岐の予測を比較することは、追加的な改良である。
【００１５】
上述により、分岐先バッファ（branch target buffer : BTB）内の複数のエントリのうちの１つのエントリを割り当てる方法が提供されることが理解されるべきである。この方法は、データ処理装置において実行すべき分岐命令を受信することを含む。さらに、この方法は、ＢＴＢが分岐命令に対応するエントリを含まないことを判定することを含む。さらに、この方法は、割り当てのためにＢＴＢ内のエントリを特定することを含み、ＢＴＢにおいて特定されたエントリは、以前に受信された分岐命令に対するターゲット識別子および分岐命令の第１予測値を備える。さらに、この方法は、第１予測値と第２予測値との比較に基づいて、分岐命令をＢＴＢ内の特定されたエントリに割り当てるかどうかを判定することを含む。この方法は、分岐履歴テーブル（branch history table : BHT）から生成される第２予測値によりさらに特徴付けられた判定するステップによりさらに特徴付けられる。方法は、第２予測値が第１予測値と比べてより分岐する可能性大を示す場合、特定されたエントリに予測分岐命令を割り当てることをさらに備えてもよい。方法は、複数のビットを分岐履歴レジスタにシフトすることを備え、複数のビットの各ビットは、分岐命令の結果を示し、複数のビットのうちの１以上のビットは、ＢＨＴをアドレス指定するためのインデックスを生成するのに用いられる。さらに、方法は、分岐命令の結果として命令順序の変更が生じた場合、ＢＨＴを更新することを備えてもよい。方法は、複数の以前の命令分岐の結果に基づく第２予測値により特徴付けられる。さらに、方法は、複数の以前の命令分岐の結果に基づく第２予測値により特徴付けられてもよい。さらに、方法は、多数の正しい予測に基づいて予測信頼値を生成すること、予測信頼値と第２予測値とを組み合わせて第３予測値を生成すること、および第３予測値を用いて、特定されたエントリに分岐命令を割り当てるかどうかを判定することを備えてもよい。さらに、方法は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態のうちの１つを示す２ビットの予測値を備える第１予測値により特徴付けられてもよい。さらに、方法は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態のうちの１つを示す２ビットの予測値を備える第２予測値により特徴付けられてもよい。
【００１６】
次に、データ処理システム内の分岐先バッファ（branch target buffer : BTB）に複数のエントリのうちの１つのエントリを割り当てる方法について説明する。方法は、データ処理システムにおいて実行されるべき複数の命令を受信することを含み、複数の命令は、１以上の分岐命令を備える。さらに、方法は、分岐履歴テーブル（branch history table: BHT）を生成することを含み、ＢＨＴは、複数の命令の命令実行中に蓄積される命令順序の変更結果に基づくものであり、蓄積された命令順序の変更結果は、第１予測値を生成するために用いられる。さらに、方法は、データ処理システムにおいて実行されるべき第１分岐命令を受信することを含む。さらに、方法は、ＢＴＢが第１分岐命令に対応するエントリを含まないかどうかを判定することを含む。方法は、割り当てのために、ＢＴＢ内のエントリを特定することを含み、ＢＴＢ内の特定されたエントリは、第２分岐命令に対する第２予測値を備える。さらに、方法は、第１予測値と第２予測値との比較に基づいて、ＢＴＢ内の特定されたエントリに第１分岐命令を割り当てるかどうかを判定することを含む。さらに、方法は、第１予測値が第２予測値と比べてより分岐する可能性大の予測を示す場合に、特定されたエントリに第１分岐命令を割り当て、第１予測値が第２予測値と比べてより分岐しない可能性大の予測を示す場合に、特定されたエントリに第２分岐命令を割り当てることを含む。さらに、方法は、データ処理システム内の多数の正しい予測に基づいて予測信頼値を生成し、予測信頼値と第１予測値とを組み合わせて第３予測値を生成し、第３予測値を用いて特定されたエントリに分岐命令を割り当てるかどうかを判定することを含む。さらに、方法は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態のうちの１つを示す２ビットの予測値を備える第１予測値により特徴付けられてもよい。さらに、方法は、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態のうちの１つを示す２ビットの予測値を備える第２予測値により特徴付けられてもよい。さらに、方法は、複数のビットを分岐履歴レジスタにシフトすることを含み、複数のビットの各ビットは、分岐命令の結果を示し、複数のビットの少なくとも１つは、ＢＨＴをアドレス指定するためのインデックスを生成するのに用いられる。
【００１７】
次に、データ処理システムを説明する。データ処理システムは、命令を実行する処理論理を含む。さらに、データ処理システムは、処理論理に接続された分岐先バッファ（branch target buffer : BTB）を含み、ＢＴＢは、複数のエントリを有し、複数のエントリのうちの１つのエントリは、第１分岐命令に対応する第１予測値を備える。さらに、データ処理システムは、ＢＴＢに接続されたＢＴＢ制御回路を含み、ＢＴＢ制御回路は、置換すべき複数のエントリのうちの１つのエントリを選択する。さらに、データ処理システムは、処理論理に接続された分岐履歴テーブル（branch history table : BHT）を含み、ＢＨＴは、複数の命令の実行中に蓄積された命令順序の変更結果に基づいて第２予測値を供給し、第２予測値は、第２分岐命令に対応する。さらに、データ処理システムは、ＢＴＢに接続され、第１予測値を受信し、ＢＨＴに接続され、第２予測値を受信するＢＴＢ置換割り当て論理を含み、ＢＴＢ置換割り当て論理は、第１予測値と第２予測値との比較を行い、その比較に基づいて複数のエントリのうちの１つのエントリに第２分岐命令を割り当てる。さらに、データ処理システムは、ＢＴＢ置換割り当て論理に接続された信頼性予測器を備え、信頼性予測器は、多数の正しい分岐予測に基づいて信頼性予測値を生成し、信頼性予測値が第２予測値と組み合わされることで第３予測値が生成され、第３予測値は、複数のエントリのうちの１つのエントリに第２分岐命令を割り当てるかどうかを判定するのに用いられる。さらに、データ処理システムは、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態のうちの１つを示す２ビットの予測値を備える第１予測値により特徴付けられてもよい。さらに、データ処理システムは、強い分岐不成立状態、弱い分岐不成立状態、弱い分岐成立状態、および強い分岐成立状態のうちの１つを示す２ビットの予測値を備える第２予測値により特徴付けられてもよい。さらに、データ処理システムは、第２予測値が第１予測値と比べてより分岐する可能性大を示すかどうかの比較判定により特徴付けられ、複数のエントリのうちの１つのエントリが第２分岐命令に割り当てられる。
【００１８】
本発明を具体化する装置の大部分は当業者に知られた電子部品および回路にて構成されるため、回路の詳細は、本発明の根本的なコンセプトの理解および認識に対する、および本発明の教示から不明瞭または混乱しないために必要であると思われる図示した内容よりも広い範囲について説明しない。
【００１９】
このように、本明細書において説明されるアーキテクチャは単なる例示に過ぎず、実際には同じ機能を実現する多くの他のアーキテクチャを用いることができることが理解し得る。要するに、同じ機能を実現するあらゆる構造の構成要素を効果的に「関連付ける」ことにより、所望の機能を実現することができる。従って、本明細書において特定の機能を実現するために組み合わされるいずれの２つの構成要素も、互いに「関連付ける」ことにより、所望の機能を、アーキテクチャまたは中間構成要素にかかわらず実現することができる。同様に、このようにして関連付けたいずれの２つの構成要素も、所望の機能を実現するために、互いに「動作可能に接続される」または「動作可能に連結される」ものとして見なすこともできる。
【００２０】
さらに、当業者は、上記動作の機能境界を単に例示的なものであるとして認識するだろう。複数の動作機能は、追加動作として分配された１つの動作、および１つの動作機能の少なくとも１つが組み合わされる。さらにまた、代替的な実施形態は、特有動作の複数の例を含み、動作順序は、様々な他の実施形態において変更されてもよい。
【００２１】
本発明において、本発明は、特定の実施形態を参照して説明されている。しかし、添付の特許請求の範囲に説明されるように、本発明の範囲から逸脱することなく様々な変形および変更がなされていてもよい。例えば、ＢＴＢ１４を３２個のエントリを有すると説明したが、異なる数が用いられてもよい。従って、本明細書および本図面は、限定的意味ではなく例示的意味として考えられるべきであり、このような全ての変形は、本発明の範囲内に含まれることを意図する。
【００２２】
特定の実施形態を参照しながら本発明を説明してきたが、添付の特許請求の範囲に記載する本発明の範囲から逸脱することなしに、本発明を種々に修正および変更することができる。例えば、ＢＴＢ１４は、３２のエントリを有するとして説明されたが、異なる数が用いられてもよい。従って、本明細書および図面は制限的な意味ではなく例示として捉えられるべきであり、全てのこのような変形は本発明の範囲に包含されるべきものである。特定の実施形態に関して本明細書において説明されるいずれの効果、利点、または問題解決法も、いずれかの請求項または全ての請求項の必須の、必要な、または基本的な特徴または要素であると解釈されるべきではない。
【００２３】
本明細書において用いられた「接続される」という用語は、直接的な接続または機械的な接続に制限されるべきではない。
特に記載がある場合以外は、「第１」、「第２」という用語は、こうした用語によって説明される要素を任意に区別するために使用されている。したがって、これらの用語がこうした要素の一時的あるいはその他の優先順位を必ずしも意味するとは限らない。
【図１】
0005504523.tif 000002
【図２】
0005504523.tif 000003