(57)【特許請求の範囲】
【請求項１】
分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段と、
要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第１の選択制御処理と、前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理と、前記第２の選択制御処理にて選択された前記分岐予測情報に基づいて分岐予測結果を生成処理する予測結果生成処理と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段に対してアクセスする制御を行うパイプラインアクセス制御手段と、
を有すると共に、
前記パイプラインアクセス制御手段は、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御手段と、
前記インデックス情報制御手段にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第１の選択制御処理を行選択により行う第１の選択制御手段と、
前記インデックス情報制御手段にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第１の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第２の選択制御処理を列選択により行う第２の選択制御手段と、
を含むことを特徴とする分岐予測装置。
【請求項２】
請求項１に記載の分岐予測装置において、
前記インデックス情報制御手段は、
前記分岐命令に先行する他の分岐命令に対応するものであって前記一期間に実行される前記予測結果生成処理にて生成された前記分岐予測結果に基づいて、前記他の期間における前記インデックス情報の値を計算すること、
を特徴とする分岐予測装置。
【請求項３】
請求項１又は請求項２に記載の分岐予測装置において、
前記インデックス情報制御手段は、
N個前の前記分岐命令から分岐予測ターゲットとなる分岐命令までに実行され通過したN個の分岐命令のパスの情報に関する実行パス履歴情報に基づいて、前記分岐予測ターゲットとなる分岐命令に対応する前記インデックス情報の値の計算を行うこと、
を特徴とする分岐予測装置。
【請求項４】
請求項１乃至請求項３のうちいずれか一項に記載の分岐予測装置において、
前記インデックス情報制御手段は、
拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットを構成するシフトレジスタの出力の所定の部分を、前記第１の選択制御手段による行選択の入力とする構成を含むものであることを特徴とする分岐予測装置。
【請求項５】
請求項１乃至請求項４のうちいずれか一項に記載の分岐予測装置において、
前記第２の選択制御手段は、
前記インデックス情報の値に基づいて、一つの分岐予測グループの中から少なくとも２つの各分岐予測情報を選択する第１の列選択手段、
を含むことを特徴とする分岐予測装置。
【請求項６】
請求項５に記載の分岐予測装置において、
前記第１の列選択手段は、
拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットを構成するシフトレジスタの一部の値が複製されることで前記インデックス情報のうちの列選択情報が格納される列選択情報一時格納部と、
前記第１の選択制御手段にて選択された一つの分岐予測グループに関する情報を一時格納する分岐予測グループ情報一時格納部と、
前記列選択情報一時格納部の列選択情報の値と、前記分岐予測グループ情報一時格納部の一つの分岐予測グループに関する情報とに基づいて、前記一つの分岐予測グループの中から少なくとも２つの各分岐予測情報を選択する第１の列選択論理回路部と、
を含むことを特徴とする分岐予測装置。
【請求項７】
請求項５に記載の分岐予測装置において、
前記第２の選択制御手段は、
前記予測結果生成処理により生成された分岐予測結果情報に基づいて、前記第１の列選択手段にて選択された各分岐予測情報のうち一つの分岐予測情報を選択する第２の列選択手段、
含むことを特徴とする分岐予測装置。 
【請求項８】
分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を含み、前記分岐予測情報蓄積処理手段に対してパイプライン処理によるアクセスが可能なパイプライン化分岐履歴情報蓄積処理ユニットと、
前記分岐予測情報又は前記分岐予測グループの選択を行うためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行い、プロセッサパイプラインのフェッチステージで処理を行うための第１のインデックス情報制御ユニットと、
前記インデックス情報を制御し、プロセッサパイプラインのコミットステージで処理を行うための第２のインデックス情報制御ユニットと、
を含み、
前記パイプライン化分岐履歴情報蓄積処理ユニットは、
前記第１のインデックス情報制御ユニットにて計算された前記一期間に対応する前記インデックス情報の値に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第１の選択制御処理を行選択により行う第１の選択制御手段と、
前記第１のインデックス情報制御ユニットにて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第１の選択制御処理が行われる前記一期間と異なる前記他の期間に、前記第１の選択制御処理によって選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理を列選択により行う第２の選択制御手段と、
前記第２の選択制御手段にて選択された前記分岐予測情報に基づいて、分岐予測結果を生成処理する予測結果生成手段と、
を含み、
前記第１のインデックス情報制御ユニットは、
前記第１の選択制御手段による第１の選択制御処理と、前記第２の選択制御手段による第２の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うこと、
を特徴とするハイブリッド分岐予測装置。
【請求項９】
請求項８に記載のハイブリッド分岐予測装置において、
前記第１のインデックス情報制御ユニットは、
前記フェッチステージにて投機実行に利用され、前記フェッチステージにて利用された命令キャッシュインデックスと、前記予測結果生成手段の出力とに基づいて制御すること、
を特徴とするハイブリッド分岐予測装置。
【請求項１０】
請求項８又は請求項９に記載のハイブリッド分岐予測装置において、
前記第２のインデックス情報制御ユニットは、
前記コミットステージにて、前記フェッチステージに利用された命令キャッシュインデックスと、実行ステージでの結果とに基づいて制御し、前記分岐予測情報による分岐予測が失敗し、プロセッサパイプラインの巻き戻しが行われる際に、前記コミットステージにて巻戻先保存処理に利用されること、
を特徴とするハイブリッド分岐予測装置。
【請求項１１】
請求項８乃至請求項１０のうちいずれか一項に記載のハイブリッド分岐予測装置において、
前記第２のインデックス情報制御ユニットは、
実行ステージでの実行結果と予測結果とが異なり、前記コミットステージにてプロセッサパイプライン処理の巻き戻し処理が行われる際に、前記インデックス情報を、前記第１のインデックス情報制御ユニットにコピーする処理を行うこと、
を特徴とするハイブリッド分岐予測装置。
【請求項１２】
請求項８乃至請求項１１のうちいずれか一項に記載のハイブリッド分岐予測装置において、
前記パイプライン化分岐履歴情報蓄積処理ユニット、前記第１のインデックス情報制御ユニット、及び前記第２のインデックス情報制御ユニットは、それぞれ複数形成され、
各々の各前記第１のインデックス情報制御ユニットは、
それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐履歴情報蓄積処理ユニットの各々の各分岐予測情報の各インデックス情報を各々生成すること、
を特徴とするハイブリッド分岐予測装置。
【請求項１３】
請求項１２に記載のハイブリッド分岐予測装置において、
各々の各前記第２のインデックス情報制御ユニットは、
それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐履歴情報蓄積処理ユニットの各々の各分岐予測情報の各インデックス情報を各々生成すること、
を特徴とするハイブリッド分岐予測装置。
【請求項１４】
請求項１２に記載のハイブリッド分岐予測装置において、
各々の各前記第１のインデックス情報制御ユニットは、
各々異なる命令数分の分岐履歴情報と、分岐命令キャッシュインデックス情報とに基づいて制御されること、
を特徴とするハイブリッド分岐予測装置。
【請求項１５】
命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、
前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、請求項１乃至請求項７のうちいずれか一項に記載の分岐予測装置と、
前記各装置を制御する制御装置と、
を含むことを特徴とするプロセッサ。
【請求項１６】
命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、
前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、請求項８乃至請求項１４のうちいずれか一項に記載のハイブリッド分岐予測装置と、
前記各装置を制御する制御装置と、
を含むことを特徴とするプロセッサ。
【請求項１７】
分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行う分岐予測方法であって、
少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第１の選択制御処理と、
前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理と、
前記第２の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、
を含み、
前記第１の選択制御処理と、前記第２の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して行うと共に、
前記第１の選択制御処理は、
前記分岐予測グループを行選択により選択制御する行選択処理、
を含み、
前記第２の選択制御処理は、
一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、
を含み、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御ステップを含み、
第１の期間に、第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第１の期間に対応する前記インデックス情報の値に基づいて、前記分岐予測グループを選択する第１の行選択処理を行う第１のステップと、
前記第１の期間の後の第２の期間に、前記第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第２の期間に対応する前記インデックス情報の値に基づいて、一又は複数の前記分岐予測情報を選択する第１の列選択処理と、前記第１の分岐命令の次に処理される第２の分岐命令に関し前記分岐予測グループを選択する第２の行選択処理と、を並行して処理を行う第２のステップと、
前記第２の期間の後の第３の期間に、前記第１の分岐命令に関して前記第１の列選択処理にて選択された前記分岐予測情報に基づいて、前記第１の分岐命令に関する分岐予測結果を生成する第１の分岐予測結果生成処理と、前記第２の分岐命令に関し一又は複数の前記分岐予測情報を選択する第２の列選択処理と、前記第２の分岐命令の次に処理される第３の分岐命令に関し前記分岐予測グループを選択する第３の行選択処理と、を並行して処理を行う第３のステップと、
を含むことを特徴とする分岐予測方法。
【請求項１８】
請求項１７に記載の分岐予測方法において、
前記第３のステップでは、
前記第３の行選択処理の後に、前記第１の分岐予測結果生成処理にて生成された第１の分岐予測結果情報に基づいて、前記第３の期間の後の第４の期間における第４のステップに処理されるべき前記分岐予測情報蓄積処理手段のインデックス情報の値を先行して計算する処理を行うこと
を特徴とする分岐予測方法。
【請求項１９】
請求項１８に記載の分岐予測方法において、
前記第３のステップでは、
計算された前記インデックス情報の値に基づいて、前記第４の期間に処理されるべき第３の列選択処理のためのインデックス情報の値を抽出し、特定の列選択情報一時格納部に保持する処理を行うこと、
を特徴とする分岐予測方法。
【請求項２０】
請求項１８に記載の分岐予測方法において、
前記第３のステップでは、
計算された前記インデックス情報の値を、前記第４の期間に処理されるべき第４の行選択処理のためのインデックス情報の値として保持する処理を行うこと、
を特徴とする分岐予測方法。
【請求項２１】
請求項１９に記載の分岐予測方法において、
前記第４のステップでは、
前記第２の分岐命令に関して生成される第２の分岐予測結果情報を生成する第２の分岐予測結果生成処理と、
前記第３の行選択処理にて各々の前記分岐予測グループの中から選択されたいずれか一つの前記分岐予測グループと、前記列選択情報一時格納部の値と、に基づいて、少なくとも２つの各分岐予測情報を選択する第３の列選択第１処理と、
前記第２の分岐予測結果生成処理にて生成された前記第２の分岐予測結果情報に基づいて、前記第３の列選択第１処理にて選択された各前記分岐予測情報のうち、一つの分岐予測情報を選択する第３の列選択第２処理と、
を行うことを特徴とする分岐予測方法。
【請求項２２】
分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行うための分岐予測制御プログラムであって、
前記分岐予測装置に、
少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第１の選択制御処理と、
前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理と、
前記第２の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、
を含む処理を実行させ、
前記分岐予測装置に、
前記第１の選択制御処理と、前記第２の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して実行させると共に、
前記第１の選択制御処理は、
前記分岐予測グループを行選択により選択制御する行選択処理、
を含み、
前記第２の選択制御処理は、
一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、
を含み、
前記分岐予測装置に、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御ステップを実行させると共に、
第１の期間に、第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第１の期間に対応する前記インデックス情報の値に基づいて、前記分岐予測グループを選択する第１の行選択処理を行う第１のステップと、
前記第１の期間の後の第２の期間に、前記第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第２の期間に対応する前記インデックス情報の値に基づいて、一又は複数の前記分岐予測情報を選択する第１の列選択処理と、前記第１の分岐命令の次に処理される第２の分岐命令に関し前記分岐予測グループを選択する第２の行選択処理と、を並行して処理を行う第２のステップと、
前記第２の期間の後の第３の期間に、前記第１の分岐命令に関して前記第１の列選択処理にて選択された前記分岐予測情報に基づいて、前記第１の分岐命令に関する分岐予測結果を生成する第１の分岐予測結果生成処理と、前記第２の分岐命令に関し一又は複数の前記分岐予測情報を選択する第２の列選択処理と、前記第２の分岐命令の次に処理される第３の分岐命令に関し前記分岐予測グループを選択する第３の行選択処理と、を並行して処理を行う第３のステップと、
を含む処理を実行させることを特徴とする分岐予測制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラムに関する。
【背景技術】
【０００２】
コンピュータアーキテクチャにおける分岐予測（Ｂｒａｎｃｈ  Ｐｒｅｄｉｃｔｉｏｎ）とは、プログラム実行過程にて条件分岐命令が分岐するか否かを予測するプロセッサ内の機能である。プロセッサは、分岐するか否かが実際に決まる前に、分岐予測機能によって命令をフェッチして実行する。特に、パイプライン処理プロセッサでは、パイプラインを途切れさせないよう命令を次々にフェッチするため、分岐予測が必要となる。
【０００３】
この種の分岐予測を行う分岐予測装置の関連技術として、例えば以下に示す第１の関連技術（非特許文献１）、第２の関連技術（特許文献１）などが挙げられる。
【０００４】
第１の関連技術では、動的分岐予測方式の分岐予測装置の構成の一例が開示されている。この第１の関連技術を図１５に示す。図１５は、分岐予測装置の第１の関連技術の一例を示すブロック図である。
【０００５】
同図に示す分岐予測装置７００において、分岐予測結果は、パターン履歴テーブル７２０−１、７２０−２、７２０−３の読み出し結果を利用して生成する。具体的には、パターン履歴テーブル７２０−１、７２０−２、７２０−３のインデックス情報は、ハッシュ論理回路部７１０−１、７１０−２、７１０−３を利用して生成する（非特許文献第７頁〜第８頁）。同図において、ハッシュ論理回路部７１０−１、７１０−２、７１０−３は、グローバル分岐履歴（情報格納部）７０２からのグローバル分岐履歴情報と、命令カウンタ７４０からの対象の命令に対応する分岐命令アドレスとに基づいて、ハッシュ論理の演算を行う。
【０００６】
第１の関連技術の分岐予測装置７００は、複数種類のパターン履歴テーブル７２０−１（Ｍｅｔａ：大局分岐予測装置）、パターン履歴テーブル７２０−２（Ｇ１：「ｅ−ｇｓｋｅｗ」型分岐予測装置）、パターン履歴テーブル７２０−３（Ｇ１：「ｅ−ｇｓｋｅｗ」型分岐予測装置）、パターン履歴テーブル７２０−３（ＢＩＭ：ｂｉｍｏｄａｌ分岐予測装置）による各分岐予測結果を予測結果生成論理７３０にて選択により最終分岐予測結果を出力する、「２Ｂｃ−ｇｓｋｅｗ」型のハイブリッド分岐予測装置を構成している。
【０００７】
第２の関連技術（特許文献１）では、分岐予測装置は、パターン履歴テーブルであるタグ付きＰＨＴ（Ｐａｔｔｅｒｎ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ）ユニットの直前にハッシュ論理回路部としてのＸＯＲ回路を備えている（特許文献１図２）。ＸＯＲ回路は、プログラムカウンタが示す実行する分岐命令アドレスと、ＧＨＲユニットの内容との排他的論理和を計算する。ＧＨＲ（Ｇｌｏｂａｌ  Ｈｉｓｔｏｒｙ  Ｒｅｇｉｓｔｅｒ）ユニットは、最近実行した分岐命令について分岐したか否かに関する履歴を記録しておくレジスタである。計算された排他的論理和は、タグ付きＰＨＴ（Ｐａｔｔｅｒｎ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ）ユニットにインデックスとして供給される。タグ付きＰＨＴユニットは、ＸＯＲ回路の出力である各インデックスに対して、タグとカウント値とを格納するＲＡＭである。カウント値が０及び１の場合には、分岐しないと予測し、カウント値が２及び３の場合には、分岐すると予測する。
【非特許文献１】Ａｎｄｒｅ  Ｓｅｚｎｅｃ  ,ｅｔ  ａｌ,  「Ｄｅｓｉｇｎ  Ｔｒａｄｅｏｆｆｓ  ｆｏｒ  ｔｈｅ  Ａｌｐｈａ  ＥＶ８    Ｃｏｎｄｉｔｉｏｎａｌ  Ｂｒａｎｃｈ  Ｐｒｅｄｉｃｔｏｒ」、  Ｉｎ  ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２９ｔｈ  ＩＥＥＥ―ＡＣＭ    Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ    Ａｒｃｈｉｔｅｃｔｕｒｅ、２５−２９  ｍａｙ  ２００２
【特許文献１】特開２００３−５９５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、第１の関連技術、第２の関連技術のいずれも、パターン履歴テーブルの直前にハッシュ論理回路部を設けているため、パターン履歴テーブルに対するアクセス処理を行う際に、分岐予測に関する処理の遅延を悪化させ、プロセッサの処理速度が低下する、という改善すべき点があった。
【０００９】
また、第１の関連技術の分岐予測装置においては、ハッシュ論理回路部７１０−１、７１０−２、７１０−３が命令カウンタ７４０からの分岐命令アドレスに基づいて演算を行う際には、命令カウンタ７４０からの分岐命令アドレスがフェッチステージの直前まで判明しないため、プロセッサパイプライン処理のフェッチステージに先立って、ハッシュ論理回路部７１０−１、７１０−２、７１０−３の演算を予め前倒しして演算することができず、ハッシュ論理回路部７１０−１、７１０−２、７１０−３そのものの存在が、処理速度の高速化を妨げていた。
【００１０】
加えて、プロセッサパイプライン処理のフェッチステージ開始後に、判明後の当該分岐命令アドレスに基づいて、ハッシュ論理回路部７１０−１、７１０−２、７１０−３にて複雑なハッシュ論理の演算を行うと、演算処理に時間がかかり、ハッシュ論理回路部の演算による遅延によりパターン履歴テーブルに対するアクセス処理を含む分岐予測の遅延を悪化させ、フェッチステージそのものの遅延につながり、結果としてプロセッサの遅延を悪化させる。このため、分岐予測の遅延にハッシュ論理回路部７１０−１、７１０−２、７１０−３の遅延が含まれるため、分岐予測の遅延によってプロセッサ全体のクロックサイクルが制限され、プロセッサの処理速度に悪影響を及ぼす、という改善すべき点があった。
【００１１】
本発明は、上記した関連技術の改善すべき点を解決することを課題としてなされたものであって、その目的とするところは、ハッシュ論理回路部をパターン履歴テーブルの直前に設けることなく、プロセッサの処理速度に悪影響を与えるような分岐予測の遅延を防止できる分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的は、主たる独立請求項に記載の特徴の組み合わせにより達成され、また、下位請求項は、発明の更なる有利な具体例を規定する。この発明の概要は、必要な特徴すべてを列挙しているものではなく、よってここには記載されない独立請求項及び下位請求項並びにこれらの特徴群の下位結合（サブコンビネーション）も発明になり得る。
【００１３】
本発明の分岐予測装置は、分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段と、
要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第１の選択制御処理と、前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理と、前記第２の選択制御処理にて選択された前記分岐予測情報に基づいて分岐予測結果を生成処理する予測結果生成処理と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段に対してアクセスする制御を行うパイプラインアクセス制御手段と、
を有すると共に、
前記パイプラインアクセス制御手段は、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御手段と、
前記インデックス情報制御手段にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第１の選択制御処理を行選択により行う第１の選択制御手段と、
前記インデックス情報制御手段にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第１の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第２の選択制御処理を列選択により行う第２の選択制御手段と、
を含むことを特徴としている。
【００１４】
本発明のハイブリッド分岐予測装置は、分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を含み、前記分岐予測情報蓄積処理手段に対してパイプライン処理によるアクセスが可能なパイプライン化分岐履歴情報蓄積処理ユニットと、前記分岐予測情報又は前記分岐予測グループの選択を行うためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行い、プロセッサパイプラインのフェッチステージで処理を行うための第１のインデックス情報制御ユニットと、前記インデックス情報を制御し、プロセッサパイプラインのコミットステージで処理を行うための第２のインデックス情報制御ユニットと、を含み、前記パイプライン化分岐履歴情報蓄積処理ユニットは、前記第１のインデックス情報制御ユニットにて計算された前記一期間に対応する前記インデックス情報の値に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第１の選択制御処理を行選択により行う第１の選択制御手段と、前記第１のインデックス情報制御ユニットにて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第１の選択制御処理が行われる前記一期間と異なる前記他の期間に、前記第１の選択制御処理によって選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理を列選択により行う第２の選択制御手段と、前記第２の選択制御手段にて選択された前記分岐予測情報に基づいて、分岐予測結果を生成処理する予測結果生成手段と、を含み、前記第１のインデックス情報制御ユニットは、前記第１の選択制御手段による第１の選択制御処理と、前記第２の選択制御手段による第２の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うこと、を特徴としている。
【００１５】
本発明のプロセッサは、命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、上述の分岐予測装置又はハイブリッド分岐予測装置と、前記各装置を制御する制御装置と、を含むことを特徴としている。
【００１６】
本発明の分岐予測方法は、分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行う分岐予測方法であって、少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第１の選択制御処理と、前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理と、前記第２の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、を含み、前記第１の選択制御処理と、前記第２の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して行うと共に、前記第１の選択制御処理は、前記分岐予測グループを行選択により選択制御する行選択処理、を含み、前記第２の選択制御処理は、一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、を含み、前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御ステップを含み、第１の期間に、第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第１の期間に対応する前記インデックス情報の値に基づいて、前記分岐予測グループを選択する第１の行選択処理を行う第１のステップと、前記第１の期間の後の第２の期間に、前記第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第２の期間に対応する前記インデックス情報の値に基づいて、一又は複数の前記分岐予測情報を選択する第１の列選択処理と、前記第１の分岐命令の次に処理される第２の分岐命令に関し前記分岐予測グループを選択する第２の行選択処理と、を並行して処理を行う第２のステップと、前記第２の期間の後の第３の期間に、前記第１の分岐命令に関して前記第１の列選択処理にて選択された前記分岐予測情報に基づいて、前記第１の分岐命令に関する分岐予測結果を生成する第１の分岐予測結果生成処理と、前記第２の分岐命令に関し一又は複数の前記分岐予測情報を選択する第２の列選択処理と、前記第２の分岐命令の次に処理される第３の分岐命令に関し前記分岐予測グループを選択する第３の行選択処理と、を並行して処理を行う第３のステップと、を含むことを特徴としている。
【００１７】
本発明の分岐予測プログラムは、分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行うための分岐予測制御プログラムであって、前記分岐予測装置に、少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第１の選択制御処理と、前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理と、前記第２の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、を含む処理を実行させ、前記分岐予測装置に、前記第１の選択制御処理と、前記第２の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して実行させると共に、前記第１の選択制御処理は、前記分岐予測グループを行選択により選択制御する行選択処理、を含み、前記第２の選択制御処理は、一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、を含み、前記分岐予測装置に、前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御ステップを実行させると共に、第１の期間に、第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第１の期間に対応する前記インデックス情報の値に基づいて、前記分岐予測グループを選択する第１の行選択処理を行う第１のステップと、前記第１の期間の後の第２の期間に、前記第１の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第２の期間に対応する前記インデックス情報の値に基づいて、一又は複数の前記分岐予測情報を選択する第１の列選択処理と、前記第１の分岐命令の次に処理される第２の分岐命令に関し前記分岐予測グループを選択する第２の行選択処理と、を並行して処理を行う第２のステップと、前記第２の期間の後の第３の期間に、前記第１の分岐命令に関して前記第１の列選択処理にて選択された前記分岐予測情報に基づいて、前記第１の分岐命令に関する分岐予測結果を生成する第１の分岐予測結果生成処理と、前記第２の分岐命令に関し一又は複数の前記分岐予測情報を選択する第２の列選択処理と、前記第２の分岐命令の次に処理される第３の分岐命令に関し前記分岐予測グループを選択する第３の行選択処理と、を並行して処理を行う第３のステップと、を含む処理を実行させることを特徴としている。
【００１８】
本発明の作用及び他の利得は、以下に説明する「発明を実施するための最良の形態」から明らかにされる。
【発明の効果】
【００１９】
本発明によれば、分岐予測情報蓄積処理手段の直前にハッシュ論理回路部がないので、分岐予測の遅延を防止でき、パイプラインアクセス制御手段が前記第１の選択制御処理と第２の選択制御処理との２ステージに分けて、パイプライン処理により分岐予測情報蓄積処理手段に対するアクセス処理を行うことで、分岐予測における処理速度の高速化を図ることができ、分岐予測装置の性能が向上する。
【発明を実施するための最良の形態】
【００２０】
なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また、実施の形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。    
【００２１】
以下、本発明の好適な実施の形態の一例について、図面を参照して具体的に説明する。
〔第１の実施の形態〕
先ず、本発明の分岐予測装置の構成について、概略構成から説明し、続いて詳細構成について説明することとする。
【００２２】
（分岐予測装置の概略構成）
本実施の形態の分岐予測装置の概略構成について、図１及び図６を参照しつつ説明する。図１は、本発明における第１実施の形態の分岐予測装置の概略構成の一例を示すブロック図である。図６は、分岐予測装置の分岐予測情報蓄積処理手段へのアクセスに関するパイプライン処理を説明するための説明図である。
【００２３】
分岐予測装置１は、図１に示すように、分岐命令に関する分岐予測情報（分岐すると予測するか、分岐しないと予測するかを示す情報）と、直前の分岐の成立の可否（成立／非成立）を示す分岐成立可否情報とをグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段６と、要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第１の選択制御処理（例えば図６に示す符号２３０ＣＡの処理）と、前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理（例えば図６に示す符号２３０ＲＡの処理）と、前記第２の選択制御処理にて選択された前記分岐予測情報に基づいて分岐予測結果を生成処理する予測結果生成処理（例えば図６に示す符号２３０Ｇの処理）と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段６に対してアクセスする制御を行うパイプラインアクセス制御手段２と、を含んで構成される。-
【００２４】
さらに、パイプラインアクセス制御手段２は、前記分岐予測情報蓄積処理手段６に対してアクセスし、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第１の選択制御手段４と、第１の選択制御手段４にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御手段５と、第２の選択制御手段５にて選択された前記分岐予測情報に基づいて分岐予測結果を生成する予測結果生成手段７と、第１の選択制御手段４による第１の選択制御処理・第２の選択制御手段５による第２の選択制御処理・予測結果生成手段７による予測結果生成処理によるパイプライン処理を制御する分岐予測生成パイプライン制御手段として機能するインデックス情報制御手段３と、を含んで構成される。
【００２５】
さらに、パイプラインアクセス制御手段２は、前記第１の選択制御処理と、前記第２の選択制御処理と、を含む処理をパイプライン化して処理する制御を行うことができる。
【００２６】
インデックス情報制御手段３は、前記分岐予測情報蓄積処理手段６の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間（例えば図６に示すＴ２＝０の期間）おいて、前記一期間の以降に実行される他の期間（例えば図６に示すＴ２＝１の期間）での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うものである。
【００２７】
また、インデックス情報制御手段３は、前記分岐命令に先行する他の分岐命令に対応するものであって前記一期間（例えば図６に示すＴ２＝０の期間）に実行される前記予測結果生成処理にて生成された前記分岐予測結果に基づいて、前記他の期間（例えば図６に示すＴ２＝１の期間）における前記インデックス情報の値を計算するものである。
【００２８】
さらに、インデックス情報制御手段３は、N個前の前記分岐命令から分岐予測ターゲットとなる分岐命令までに実行され通過したN個の分岐命令のパスの情報に関する実行パス履歴情報（例えば図３に示すＤ２）に基づいて、前記分岐予測ターゲットとなる分岐命令に対応する前記インデックス情報の値の計算を行うものである。
【００２９】
またさらに、インデックス情報制御手段３は、一例として、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット（例えば図２に示す符号１０）を構成するシフトレジスタの出力を、第１の選択制御手段４による行選択の入力とする構成とすることが好ましい。
【００３０】
第１の選択制御手段４は、インデックス情報制御手段３にて計算された前記一期間例えば図６に示すＴ２＝０の期間）に対応する前記インデックス情報の値に基づいて、前記第１の選択制御処理（例えば図６に示す符号２３０ＣＡの処理）を行選択により行うものである。
【００３１】
第２の選択制御手段５は、インデックス情報制御手段３にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第１の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第２の選択制御処理を列選択により行うものである。
【００３２】
上述のような構成を有する分岐予測装置１において、概略以下のように動作する。すなわち、分岐予測装置１は、インデックス情報制御手段３により、第１の選択制御手段４による第１の選択制御処理・第２の選択制御手段５による第２の選択制御処理・予測結果生成手段７による予測結果生成処理によるパイプライン処理を制御する。
【００３３】
この際、インデックス情報制御手段３が、前記分岐予測情報蓄積処理手段６の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間おいて、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する。これにより、インデックス情報を前倒しして計算処理が可能となる。
【００３４】
また、インデックス情報制御手段３は、前記分岐命令に先行する他の分岐命令に対応するものであって前記一期間に実行される前記予測結果生成処理にて生成された前記分岐予測結果に基づいて、前記他の期間における前記インデックス情報の値を計算する。
【００３５】
ここで、第１の選択制御手段４は、インデックス情報制御手段３にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第１の選択制御処理を行選択により行う。また、第２の選択制御手段５は、インデックス情報制御手段３にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第１の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第２の選択制御処理を列選択により行う。
【００３６】
さらに、インデックス情報制御手段３は、N個前の前記分岐命令から分岐予測ターゲットとなる分岐命令までに実行され通過したN個の分岐命令のパスの情報に関する実行パス履歴情報に基づいて、前記分岐予測ターゲットとなる分岐命令に対応する前記インデックス情報の値の計算を行う。これにより、実行パス履歴情報をインデックス計算に取り入れることで、複雑なハッシュ論理の構成を導入することなく、分岐予測精度を向上させることができる。
【００３７】
また、インデックス情報制御手段３は、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットを構成するシフトレジスタの出力を、前記第１の選択制御手段による行選択の入力とする構成を含むものである。これにより、レジスタの値を直接、行選択の入力とすることで、レジスタの値の変化点が固定され、予測精度の低下を防止できる。
【００３８】
このように、分岐予測情報を選択する処理をパイプライン処理で行うことにより、分岐予測における処理を高速に行うことができる。また、分岐予測処理における遅延は、プロセッサのクリティカルパスに入ることはないので、プロセッサ全体としての処理速度の向上に寄与できる分岐予測装置の提供が可能である。
【００３９】
以上のように分岐予測情報を選択する処理をパイプライン処理で行うことにより、分岐予測における処理を高速に行うことができる。また、分岐予測処理における遅延は、プロセッサのクリティカルパスに入ることはないので、プロセッサ全体としての処理速度の向上に寄与できる分岐予測装置の提供が可能である。
【００４０】
（詳細構成）
図２には、これらの各手段の詳細構成の一例が開示されている。分岐予測装置１の詳細構成について、図２を参照しつつ説明する。図２は、本実施の形態の分岐予測装置の詳細構成の一例を示すブロック図である。
【００４１】
本実施の形態の分岐予測装置１は、グローバル分岐履歴などの分岐履歴情報Ｄ１、実行パス履歴情報Ｄ２を利用したものであり、図２に示すように、インデックス情報制御手段３の一例である拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０と、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０の情報に基づいて、分岐予測情報蓄積処理手段６の一例であるパターン履歴テーブル２２に対するパイプライン処理によるアクセス処理を行うパイプライン化パターン履歴テーブル２０と、パイプライン化パターン履歴テーブル２０からの出力に基づいて予測結果を生成する予測結果生成手段７の一例である予測結果生成論理３０Ａと、を含んで構成される。
【００４２】
拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０は、図２に示すように、シフトレジスタ１１と、論理回路１２と、を含んで構成される。
【００４３】
シフトレジスタ１１は、過去数命令分の分岐履歴情報、および、その分岐命令アドレスのハッシュ値を一時格納する。
【００４４】
論理回路１２は、シフトレジスタ１１内の一時格納される情報を更新する機能（情報更新機能）を含む。論理回路１２の入力としては、巻き戻り先のハッシュ値、（例えば図示しない＜各分岐命令に対応する分岐先アドレスを格納した＞ＢＴＢからの）対象となる分岐命令の命令アドレス、予測結果生成論理３０Ａの直前の分岐予測論理の出力、および、シフトレジスタ１１の出力を用いる。このため、論理回路１２は、巻き戻り先のハッシュ値を入力する機能と、対象となる分岐命令アドレスを入力する機能と、直前の分岐予測論理の出力を入力する機能と、シフトレジスタの出力を入力する機能とを含む。
【００４５】
巻き戻り先のハッシュ値は、分岐予測結果が間違っていたことがわかった場合に選択される。
分岐命令アドレス、予測結果生成論理３０Ａの出力、および、シフトレジスタ１１の出力は、その一部をハッシュ値の再計算に活用する。
【００４６】
パイプライン化パターン履歴テーブル２０は、分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段の一例であるパターン履歴テーブル２２と、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０のシフトレジスタ１１からの出力に基づいて、前記パターン履歴テーブル２２に格納された分岐予測情報のグループ群の中から特定のグループを行選択により選択する行選択論理２１と、前記行選択論理２１にて選択され前記パターン履歴テーブル２２から出力される分岐予測情報の特定のグループを一時保持する分岐予測グループ情報一時格納部の一例である第１のパイプラインレジスタ２３と、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０の論理回路１２からの出力（インデックス情報のうちの列選択情報）を複製することによって一時保持する列選択情報一時格納部の一例であるコピーレジスタ２７と、このコピーレジスタ２７からの情報に基づいて、第１のパイプラインレジスタ２３に格納された特定のグループの複数の分岐予測情報の中から、特定のいくつかの分岐予測情報を列選択により選択する第１の列選択論理回路部としての第１の列選択論理２４と、予測結果生成論理３０Ａからの出力に基づいて、第１の列選択論理２４にて選択されたいくつかの分岐予測情報の中から特定の分岐予測情報を列選択により選択する第２の列選択論理回路部としての第２の列選択論理２５と、この第２の列選択論理２５の出力を一時保持する分岐予測情報一時格納部の一例である第２のパイプラインレジスタ２６と、を含んで構成される。
【００４７】
ここで、コピーレジスタ２７（列選択情報一時格納部）と第１のパイプラインレジスタ２３（分岐予測グループ情報一時格納部）と第１の列選択論理２４（第１の列選択論理回路部）とにより「第１の列選択手段５ａ」ということもできる。「第１の列選択手段５ａ」は、インデックス情報の値に基づいて、一つの分岐予測グループの中から少なくとも２つの各分岐予測情報を選択することができる。
また、第２の列選択論理２５と第２のパイプラインレジスタ２６とにより「第２の列選択手段５ｂ」ということもできる。「第２の列選択手段５ｂ」は、前記予測結果生成処理により生成された分岐予測結果情報に基づいて、前記第１の列選択手段にて選択された各分岐予測情報のうち一つの分岐予測情報を選択することができる。
【００４８】
パターン履歴テーブル２２は、1ビットの分岐予測情報（分岐すると予測するか、分岐しないと予測するかを示す情報）と、直前の分岐の成立の可否（成立／非成立）を示す1ビットの情報（分岐成立可否情報）の合計２ビットを格納する。この情報は２段階の読み出し処理を実現するため、いくつかのグループ（分岐予測グループ）により構成される。
行選択処理により、適切な分岐予測グループが選択される。列選択処理により、分岐予測グループ内から適切な分岐予測情報が選択される。
【００４９】
コピーレジスタ２７は、論理回路１２のハッシュ値をコピーした情報を、第１の列選択論理２４に入力するために一時保持するものである。すなわち、列選択情報一時格納部の一例であるコピーレジスタ２７は、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０を構成するシフトレジスタ１１の一部の値が複製されることで前記インデックス情報のうちの列選択情報を格納することができる。
【００５０】
行選択論理２１は、シフトレジスタ１１からの出力を直接デコードしパターン履歴テーブル２２の適切な分岐予測グループを読み出す。読み出されたパターン履歴テーブル２２のエントリは、第１のパイプラインレジスタ２３に格納される。
【００５１】
第１のパイプラインレジスタ２３の値は、コピーレジスタ２７の値に基づいて、第１の列選択論理２５にて選択される。すなわち、分岐予測グループ情報一時格納部の一例である第１のパイプラインレジスタ２３は、前記第１の選択制御手段にて選択された一つの分岐予測グループに関する情報を一時格納することができる。
【００５２】
第１の列選択論理２５は、次の分岐命令の値にふさわしい値を選択する。すなわち、第１の列選択論理回路部としての第１の列選択論理２５は、前記列選択情報一時格納部の列選択情報の値と、前記分岐予測グループ情報一時格納部の一つの分岐予測グループに関する情報とに基づいて、前記一つの分岐予測グループの中から少なくとも２つの各分岐予測情報を選択することができる。
【００５３】
第２の列選択論理２６の出力は、予測結果生成論理３０Ａの出力によって選択され、第２のパイプラインレジスタ２６に格納される。
【００５４】
ここで、本実施の形態に記載の構成要件と、本発明に記載の構成要件との対応関係について述べると、第１の選択制御手段４の一例として行選択論理２１が挙げられる。第２の選択制御手段５の一例として、第１のパイプラインレジスタ２３、第１の列選択論理２４、第２の列選択論理２５、第２のパイプラインレジスタ２６、コピーレジスタ２７による構成などが挙げられる。予測結果生成手段７の一例として予測結果生成論理３０Ａなどが挙げられる。分岐予測情報蓄積処理手段の一例としてパターン履歴テーブル２２などが挙げられる。
【００５５】
以上のような構成からなる図２における分岐予測装置１において、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０は、長い分岐履歴の情報（例えばグローバル分岐履歴情報Ｄ１）と実行パス履歴情報Ｄ２を効率的にハッシュする。実行パス履歴情報Ｄ２が入力されることで、分岐予測精度を向上させることができる。
【００５６】
また、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０のシフトレジスタ１１の出力は、パターン履歴テーブル２２の行選択論理２１の入力となっている。これにより、行選択論理２１は、対象の分岐命令に関する分岐予測情報の集合を読み出すため、分岐予測の遅延が削減される。
【００５７】
加えて、列選択の情報もパイプラインレジスタからの出力を直接適用するため遅延が削減される。  
【００５８】
さらに、パターン履歴テーブル２２の読み出し処理は、行選択と列選択の２ステップにパイプライン化して処理されるため、分岐予測精度を損なうことなく処理速度を向上させることができる。
【００５９】
このようにして、本実施の形態では、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットを活用し、実行パス履歴情報Ｄ２を用いたインデックスを作成し、かつ、パターン履歴テーブルへのアクセスをパイプライン化している。このため、低遅延で高精度な分岐予測を実現することできる。
【００６０】
（拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットの詳細構成）
次に、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０の詳細構成について、図３を参照しつつ説明する。図３は、図１の分岐予測装置の拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットの内部構成の一例を示すブロック図である。
【００６１】
図３を参照すると、図２に示す、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットの詳細な構成例が示されている。
【００６２】
拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０は、図３に示すように、新規分岐履歴情報Ｄ１などの分岐履歴情報を一時保持する分岐履歴情報一時記憶手段としての分岐履歴レジスタ１３と、実行パス履歴情報を一時保持する実行パス履歴情報一時記憶手段としての実行パス履歴レジスタ１４と、新規分岐履歴情報Ｄ１の論理値と第７レジスタ（Ｃ７）１１ｈの出力の論理値との２入力値に基づいて排他的論理和演算（２入力値が異なる場合に「１」、２入力値が同じ場合に「０」を出力）を行う第１の排他的論理和（ＸＯＲ：ｅｘｃｌｕｓｉｖｅ―ＯＲ）演算回路部１５ａと、前記第１の排他的論理和演算回路部１５ａの出力を一時保持する第１レジスタ（Ｃ０）１１ａと、第１レジスタ（Ｃ０）１１ａに新たに新データが入力されるとそれまで保持されていた第１レジスタ（Ｃ０）１１ａの旧データがシフトして入力される第２レジスタ（Ｃ１）１１ｂと、第２レジスタ（Ｃ１）１１ｂの出力の論理値と実行パス履歴レジスタ１４の出力の論理値との２入力値に基づいて排他的論理和演算を行う第２の排他的論理和演算回路部１５ｂと、前記第２の排他的論理和演算回路部１５ｂの出力を一時保持する第３レジスタ（Ｃ２）１１ｃと、第３レジスタ（Ｃ２）１１ｃに新たに新データが入力されるとそれまで保持されていた第３レジスタ（Ｃ２）１１ｃの旧データがシフトして入力される第４レジスタ（Ｃ３）１１ｄと、第４レジスタ（Ｃ３）１１ｄに新たに新データが入力されるとそれまで保持されていた第４レジスタ（Ｃ３）１１ｄの旧データがシフトして入力される第５レジスタ（Ｃ４）１１ｅと、第５レジスタ（Ｃ４）１１ｅに新たに新データが入力されるとそれまで保持されていた第５レジスタ（Ｃ４）１１ｅの旧データがシフトして入力される第６レジスタ（Ｃ５）１１ｆと、第６レジスタ（Ｃ５）１１ｆに新たに新データが入力されるとそれまで保持されていた第６レジスタ（Ｃ５）１１ｆの旧データがシフトして入力される第７レジスタ（Ｃ６）１１ｇと、分岐履歴レジスタ１３の出力の論理値と新規パス履歴情報Ｄ２の論理値との２入力値に基づいて排他的論理和演算を行う第３の排他的論理和演算回路部１５ｃと、前記第３の排他的論理和演算回路部１５ｃの出力の論理値と前記第７レジスタ（Ｃ６）１１ｇの出力の論理値の２入力値に基づいて排他的論理和演算を行う第４の排他的論理和演算回路部１５ｄと、前記第４の排他的論理和演算回路部１５ｄの出力を一時保持する第８レジスタ（Ｃ７）１１ｈと、を含んで構成される。
【００６３】
ここで、第１レジスタ（Ｃ０）１１ａと、第２レジスタ（Ｃ１）１１ｂと、第３レジスタ（Ｃ２）１１ｃと、第４レジスタ（Ｃ３）１１ｄと、第５レジスタ（Ｃ４）１１ｅと、第６レジスタ（Ｃ５）１１ｆと、第７レジスタ（Ｃ６）１１ｇと、第８レジスタ（Ｃ７）１１ｈとにより、図１に示す拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０のシストレジスタ１１が構成される。
【００６４】
また、分岐履歴レジスタ１３と、実行パス履歴レジスタ１４と、第１の排他的論理和演算回路部１５ａと、第２の排他的論理和演算回路部１５ｂと、第３の排他的論理和演算回路部１５ｃと、第４の排他的論理和演算回路部１５ｄとにより、図１に示す拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０の論理回路１２が構成される。
【００６５】
さらに、各排他的論理和演算回路部の出力が入力される第１レジスタ（Ｃ０）１１ａと、第３レジスタ（Ｃ２）１１ｃと、第８レジスタ（Ｃ７）１１ｈとは、分岐履歴情報Ｄ１や実行パス履歴情報Ｄ２に基づいて可変となる。
また、第２レジスタ（Ｃ１）１１ｂと、第４レジスタ（Ｃ３）１１ｄと、第５レジスタ（Ｃ４）１１ｅと、第６レジスタ（Ｃ５）１１ｆと、第７レジスタ（Ｃ６）１１ｇとは、各々ビットシフトにより値が可変する。
【００６６】
またさらに、第１レジスタ（Ｃ０）１１ａと、第２レジスタ（Ｃ１）１１ｂと、第８レジスタ（Ｃ７）１１ｈの値は、コピーレジスタ２７にコピーされる。このため、シフトレジスタ１１は、行選択論理２１に入力される第１レジスタ部と、コピーレジスタ２７にコピーされる第２レジスタ部とを含む。
【００６７】
実行パス履歴レジスタ１４は、N個前の分岐命令からターゲットの分岐命令までに通過したN分岐命令のパスの情報に関する履歴を格納する。実行パス履歴情報により、高い分岐予測精度を実現する.
【００６８】
図３に示す論理回路１２の構成例では、１５ビットの分岐履歴情報Ｄ１と１０ビットの実行パス履歴情報Ｄ２の合計２５ビットをハッシュ論理を用いて圧縮し、８ビットのインデックス情報を生成する。このビット長などは可変であり、ビットをハッシュすることが可能である。
【００６９】
第１レジスタ（Ｃ０）１１ａ〜第８レジスタ（Ｃ７）１１ｈに格納された情報の１サイクル先の状態は、ＸＯＲの入力を受け取るレジスタ以外は単純なビットシフトである。
たとえば、図３に示す各レジスタ１１ａ〜１１ｈのうち、Ｃ０、Ｃ２、Ｃ３、Ｃ４、Ｃ５は、次のサイクルでのＣ１、Ｃ３、Ｃ４、Ｃ５、Ｃ６の内容である。つまり、Ｃ０、Ｃ２、Ｃ３、Ｃ４、Ｃ５は、次のサイクルでは、シフトしたＣ１、Ｃ３、Ｃ４、Ｃ５、Ｃ６となる。
【００７０】
したがって、このＣ０、Ｃ２、Ｃ３、Ｃ４、Ｃ５のレジスタ値を行アクセスのインデックス情報として利用することにより、パターン履歴テーブルの時間を分岐予測精度を損なうことなく1サイクル手前に開始することができる。
【００７１】
このため、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタ１０では、１サイクル後のレジスタの値の大部分が取得可能であることを活用し、前のサイクルのインデックス情報と後のサイクルのインデックス情報とを含むインデックス情報を損なわない形でパターン履歴テーブルへのアクセスを1サイクル前倒しをして開始する。これにより、分岐予測結果生成過程における、パターン履歴テーブルへのアクセスを２ステージ（予測結果生成処理を含めると３ステージ）のパイプライン化を行うことができる。
【００７２】
また、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタ１０を用いて遅延を増大させない形で実行パス履歴情報Ｄ２をパターン履歴テーブルのインデックス計算に導入し、複雑なハッシュ論理を導入した場合と同程度の分岐予測精度を実現できる。これにより、分岐予測精度を落さずにハッシュ論理を除去することができる。従って、分岐予測精度を維持したまま、分岐予測の遅延をプロセッサのクリティカルパスに入らないようし、分岐予測における処理の遅延を削減できる。
【００７３】
（プロセッサのパイプライン構造について）
ここで、本実施の形態の特徴であるパターン履歴テーブルへのアクセスに関するパイプライン構造について説明するに先立って、プロセッサのパイプライン構造の各ステージについて、図４を参照しつつ説明する。図４は、分岐予測装置を含むプロセッサのパイプライン構造を説明するための説明図である。
【００７４】
前記分岐予測装置１は、図４に示すパイプライン構造を持つプロセッサ上で利用されることを想定している。図４では、Ｔ＝０〜Ｔ＝９の計８構成のパイプライン構造であるが、このような８構成以外のプロセッサにも適用可能である。
【００７５】
プロセッサのパイプライン処理は、図４に示すように、第１の命令１１０、第２の命令１２０、第３の命令１３０、第４の命令１４０の４命令が、それぞれ、フェッチステージ（フェッチ処理）、デコードステージ（デコード処理）、オペランドリードステージ（オペランドリード処理）、実行ステージ（実行処理）、メモリアクセスステージ（メモリアクセス処理）、書き戻しステージ（書き戻し処理）、コミットステージ（コミット処理、）、リタイアステージ（リタイア処理）の計８ステージを有する。
【００７６】
具体的には、第１の命令１１０に関しては、Ｔ１＝０でフェッチステージ１１０Ｆ（第１のフェッチ処理）、Ｔ１＝１でデコードステージ１１０Ｄ（第１のデコード処理）、Ｔ１＝２でオペランドリードステージ１１０ＯＰ（第１のオペランドリード処理）、Ｔ１＝３で実行ステージ１１０ＥＸ（第１の実行処理）、Ｔ１＝４でメモリアクセスステージ１１０ＭＡ（第１のメモリアクセス処理）、Ｔ１＝５で書き戻しステージ１１０ＷＲ（第１の書き戻し処理）、Ｔ１＝６でコミットステージ１１０ＣＯ（第１のコミット処理）、Ｔ１＝７でリタイヤステージ１１０ＲＥ（第１のリタイア処理）を処理するように構成される。
【００７７】
第２の命令１２０に関しては、Ｔ１＝１でフェッチステージ１２０Ｆ（第２のフェッチ処理）、Ｔ１＝２でデコードステージ１２０Ｄ（第２のデコード処理）、Ｔ１＝３でオペランドリードステージ１２０ＯＰ（第２のオペランドリード処理）、Ｔ１＝４で実行ステージ１２０ＥＸ（第２の実行処理）、Ｔ１＝５でメモリアクセスステージ１２０ＭＡ（第２のメモリアクセス処理）、Ｔ１＝６で書き戻しステージ１２０ＷＲ（第２の書き戻し処理）、Ｔ１＝７でコミットステージ１２０ＣＯ（第２のコミット処理）、Ｔ１＝８でリタイヤステージ１２０ＲＥ（第２のリタイア処理）を処理するように構成される。  
【００７８】
第３の命令１３０に関しては、Ｔ１＝２でフェッチステージ１３０Ｆ（第３のフェッチ処理）、Ｔ１＝３でデコードステージ１３０Ｄ（第３のデコード処理）、Ｔ１＝４でオペランドリードステージ１３０ＯＰ（第３のオペランドリード処理）、Ｔ１＝５で実行ステージ１３０ＥＸ（第３の実行処理）、Ｔ１＝６でメモリアクセスステージ１３０ＭＡ（第３のメモリアクセス処理）、Ｔ１＝７で書き戻しステージ１３０ＷＲ（第３の書き戻し処理）、Ｔ１＝８でコミットステージ１３０ＣＯ（第３のコミット処理）、Ｔ１＝９でリタイヤステージ１３０ＲＥ（第３のリタイア処理）を処理するように構成される。  
【００７９】
第４の命令１４０に関しては、Ｔ１＝３でフェッチステージ１４０Ｆ（第４のフェッチ処理）、Ｔ１＝４でデコードステージ１４０Ｄ（第４のデコード処理）、Ｔ１＝５でオペランドリードステージ１４０ＯＰ（第４のオペランドリード処理）、Ｔ１＝６で実行ステージ１４０ＥＸ（第４の実行処理）、Ｔ１＝７でメモリアクセスステージ１４０ＭＡ（第４のメモリアクセス処理）、Ｔ１＝８で書き戻しステージ１４０ＷＲ（第４の書き戻し処理）、Ｔ１＝９でコミットステージ１４０ＣＯ（第４のコミット処理）、Ｔ１＝１０でリタイヤステージ１４０ＲＥ（第４のリタイア処理）を処理するように構成される。  
【００８０】
このため、Ｔ１＝０（第１プロセッサ期間）では、プロセッサは、第１の命令１１０に関するフェッチステージ１１０Ｆの処理のみを実行する。
【００８１】
Ｔ１＝１では、プロセッサは、第１の命令１１０に関するデコードステージ１１０Ｄの処理と、第２の命令１２０に関するフェッチステージ１２０Ｆの処理とを同時に実行する。
【００８２】
Ｔ１＝２では、プロセッサは、第１の命令１１０に関するオペランドリードステージ１１０ＯＰの処理と、第２の命令１２０に関するデコードステージ１２０Ｄの処理と、第３の命令１３０に関するフェッチステージ１３０Ｆの処理とを同時に実行する。
【００８３】
Ｔ１＝３では、プロセッサは、第１の命令１１０に関する実行ステージ１１０ＥＸの処理と、第２の命令１２０に関するオペランドリードステージ１２０ＯＰの処理と、第３の命令１３０に関するデコードステージ１３０Ｄの処理と、第４の命令に関するフェッチステージ１４０Ｆの処理とを同時に実行する。
【００８４】
Ｔ１＝４では、プロセッサは、第１の命令１１０に関するメモリアクセスステージ１１０ＭＡの処理と、第２の命令１２０に関する実行ステージ１２０ＥＸの処理と、第３の命令１３０に関するオペランドリードステージ１３０ＯＰの処理と、第４の命令に関するデコードステージ１４０Ｄの処理とを同時に実行する。
【００８５】
Ｔ１＝５では、プロセッサは、第１の命令１１０に関する書き戻しステージ１１０ＷＲの処理と、第２の命令１２０に関するメモリアクセスステージ１２０ＭＡの処理と、第３の命令１３０に関する実行ステージ１３０ＥＸの処理と、第４の命令に関するオペランドリードステージ１４０ＯＰの処理とを同時に実行する。
【００８６】
Ｔ１＝６では、プロセッサは、第１の命令１１０に関するコミットステージ１１０ＣＯの処理と、第２の命令１２０に関する書き戻しステージ１２０ＷＲの処理と、第３の命令１３０に関するメモリアクセスステージ１３０ＭＡの処理と、第４の命令に関する実行ステージ１４０ＥＸの処理とを同時に実行する。
【００８７】
Ｔ１＝７では、プロセッサは、第１の命令１１０に関するリタイアステージ１１０ＲＥの処理と、第２の命令１２０に関するコミットステージ１２０ＣＯの処理と、第３の命令１３０に関する書き戻しステージ１３０ＷＲの処理と、第４の命令に関するメモリアクセスステージ１４０ＭＡの処理とを同時に実行する。  
【００８８】
Ｔ１＝８では、プロセッサは、第２の命令１２０に関するリタイアステージ１２０ＲＥの処理と、第３の命令１３０に関するコミットステージ１３０ＣＯの処理と、第４の命令１４０に関する書き戻しステージ１４０ＷＲの処理とを同時に実行する。
【００８９】
Ｔ１＝９では、プロセッサは、第３の命令１３０に関するリタイアステージ１３０ＲＥの処理と、第４の命令１４０に関するコミットステージ１４０ＣＯの処理とを同時に実行する。
【００９０】
Ｔ１＝１０では、プロセッサは、第４の命令１４０に関するリタイアステージ１４０ＲＥの処理のみを実行する。
【００９１】
以上のようなパイプライン処理を行うプロセッサにおいて、分岐予測装置は、図４に示すフェッチステージ１１０Ｆ、２１０Ｆ、３１０Ｆ、４１０Ｆにおいて分岐予測結果を生成する。
【００９２】
（パターン履歴テーブルへのアクセスに関するパイプライン構造について）
次に、パターン履歴テーブルへのアクセスに関するパイプライン構造のステージの概要について、図５を参照しつつ説明する。図５は、図１の分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。図５では、説明の都合上、第１の分岐命令２１０、第２の分岐命令２２０、第３の分岐命令２３０の３つのみを挙げているが、これ以上の分岐命令に対応する分岐予測の処理が順次パイプライン処理される。
【００９３】
パターン履歴テーブルへのアクセスに関するパイプライン構造は、図５に示すように、第１の分岐命令２１０、第２の分岐命令２２０、第３の分岐命令２３０が、それぞれ、パターン履歴テーブルの分岐予測グループを行選択論理により選択するアクセス処理を行うパターン履歴テーブル行アクセスのステージの処理（第１の選択制御処理）、行選択論理により選択された分岐予測グループから分岐予測情報を第１、第２の列選択論理２４、２５により選択するアクセス処理を行うパターン履歴テーブル列アクセスのステージの処理（第２の選択制御処理）、選択された分岐予測情報に基づいて、分岐予測結果を生成する処理を行う分岐予測結果生成のステージの処理（予測結果生成処理）の計３ステージを有する。ここに、分岐予測結果生成のステージは、他のステージの期間より短い期間で処理されるようになっている。
【００９４】
より詳細には、第１の分岐命令２１０に関しては、Ｔ２＝―２でパターン履歴テーブル行アクセス２１０ＣＡのステージの処理（第１の行選択処理）、Ｔ２＝―１でパターン履歴テーブル列アクセス２１０ＲＡのステージの処理（第１の行選択処理）、Ｔ２＝０で分岐予測結果生成２１０Ｇのステージの処理（第１の分岐予測結果生成処理）を処理するように構成される。
【００９５】
ここで、Ｔ２の値は、前述したプロセッサのパイプライン処理のＴ１の値と相関する値としている。すなわち、プロセッサのパイプライン処理のＴ１＝０の前のＴ２＝−２のタイミングの段階で、分岐予測に関する前処理が行われる。
【００９６】
第２の分岐命令２２０に関しては、Ｔ２＝―１でパターン履歴テーブル行アクセス２２０ＣＡのステージの処理（第２の行選択処理）、Ｔ２＝０でパターン履歴テーブル列アクセス２２０ＲＡのステージの処理（第２の列選択処理）、Ｔ２＝１で分岐予測結果生成２２０Ｇのステージの処理（第２の分岐予測結果生成処理）を処理するように構成される。
【００９７】
第３の分岐命令２３０に関しては、Ｔ２＝０でパターン履歴テーブル行アクセス２３０ＣＡのステージの処理（第３の行選択処理）、Ｔ２＝１でパターン履歴テーブル列アクセス２３０ＲＡのステージの処理（第３の列選択処理）、Ｔ２＝２で分岐予測結果生成２３０Ｇのステージ（第３の分岐予測結果生成処理）を処理するように構成される。
【００９８】
このため、Ｔ２＝―２（第１の期間・第１のステップ）では、分岐予測装置は、第１の分岐命令２１０に関するパターン履歴テーブル行アクセス２１０ＣＡのステージの処理（第１の行選択処理）のみを実行する（第１のステップ）。
【００９９】
Ｔ２＝―１（第２の期間・第２のステップ）では、分岐予測装置は、第１の分岐命令２１０に関するパターン履歴テーブル列アクセス２１０ＲＡのステージの処理（第１の列選択処理）と、第２の分岐命令２２０に関するパターン履歴テーブル行アクセス２２０ＣＡのステージの処理（第２の行選択処理）とを同時に実行する（第２のステップ）。
【０１００】
Ｔ２＝０（第３の期間・第３のステップ）では、分岐予測装置は、第１の分岐命令２１０に関する分岐予測結果生成２１０Ｇのステージの処理（第１の分岐予測結果生成処理）と、第２の分岐命令２２０に関するパターン履歴テーブル列アクセス２２０ＲＡのステージの処理（第２の列選択処理）と、第３の分岐命令２３０に関するパターン履歴テーブル行アクセス２３０ＣＡのステージの処理（第３の行選択処理）とを同時に実行する（第３のステップ）。
【０１０１】
Ｔ２＝１（第４の期間・第４のステップ）では、分岐予測装置は、第２の分岐命令２２０に関する分岐予測結果生成２２０Ｇのステージの処理（第２の分岐予測結果生成処理）と、第３の分岐命令２２０に関するパターン履歴テーブル列アクセス２３０ＲＡのステージの処理（第３の列選択処理）とを同時に実行する（第４のステップ）。
【０１０２】
Ｔ２＝２（第５の期間・第５のステップ）では、分岐予測装置は、第３の分岐命令２３０に関する分岐予測結果生成２３０Ｇのステージの処理（第２の分岐予測結果生成処理）のみを実行する（第５のステップ）。
【０１０３】
以上、パイプライン処理のステージ内容について説明したが、以下には、このようなパイプライン処理を実現するための分岐予測装置の動作とともに、さらに詳細な処理手順について説明することとする。
【０１０４】
（分岐予測装置の動作＜処理手順＞の説明）
分岐予測装置における各種の処理手順について、図２、図３、図６、及び図７を参照しつつ説明する。先ず、「分岐予測方法の基本的構成」を説明し、続いて、「分岐予測手順」、分岐予測手順後の「更新手順」について説明する。
【０１０５】
ここで、本実施の形態に係る分岐予測方法の基本的構成について説明する。本実施の形態に係る分岐予測方法は、分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報（分岐すると予測するか、分岐しないと予測するかを示す情報）と、直前の分岐の成立の可否（成立／非成立）を示す分岐成立可否情報とをグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行うものである。
【０１０６】
本実施の形態に係る分岐予測方法の基本的構成としては、上述したパイプライン処理のステージを用いて説明すると、少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第１の選択制御処理（例えば図５に示す符号２３０ＣＡ）と、前記第１の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第２の選択制御処理（例えば図５に示す符号２３０ＲＡ）と、前記第２の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理（例えば図５に示す符号２３０Ｇ）と、を含み、前記第１の選択制御処理と、前記第２の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して行うことができる。
【０１０７】
この際、前記第１の選択制御処理は、前記分岐予測グループを行選択により選択制御する行選択処理、を含む。前記第１の選択制御処理は、一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、を含む。
【０１０８】
加えて、本実施の形態に係る分岐予測方法は、その具体的構成としては、第１の期間に、第１の分岐命令に関し、前記分岐予測グループを選択する第１の行選択処理を行う第１のステップ（例えば図５、図６に示すＴ２＝−２にて行われるステップ）と、前記第１の期間の後の第２の期間に、前記第１の分岐命令に関し、一又は複数の前記分岐予測情報を選択する第１の列選択処理を行う第２のステップ（例えば図５、図６に示すＴ２＝−１にて行われるステップ）と、前記第２の期間の後の第３の期間に、前記第１の分岐命令に関し、前記第１の列選択処理にて選択された前記分岐予測情報に基づいて、前記第１の分岐命令に関する分岐予測結果を生成する第１の分岐予測結果生成処理を行う第３のステップ（例えば図５、図６に示すＴ２＝−１にて行われるステップ）と、を含むものである。
【０１０９】
この際、前記第２のステップ（Ｔ２＝−１）では、前記第１の列選択処理（例えば図５、図６に示す符号２１０ＲＡ）と、前記第１の分岐命令の次に処理される第２の分岐命令に関し前記分岐予測グループを選択する第２の行選択処理（例えば図５、図６に示す符号２２０ＣＡ）と、を並行して処理を行うことができる。
また、前記第３のステップ（Ｔ２＝−２）では、前記第１の分岐予測結果生成処理（例えば図５、図６に示す符号２１０Ｇ）と、前記第２の分岐命令に関し一又は複数の前記分岐予測情報を選択する第２の列選択処理（例えば図５、図６に示す符号２２０ＲＡ）と、前記第２の分岐命令の次に処理される第３の分岐命令に関し前記分岐予測グループを選択する第３の行選択処理（例えば図５、図６に示す符号２３０ＣＡ）と、を並行して処理を行うことができる。
【０１１０】
ここで、図５、図６に示すパイプライン処理において、Ｔ２＝−２の第１の期間に行われる処理を第１のステップ、Ｔ２＝−１の第２の期間に行われる処理を第２のステップ、Ｔ２＝０の第３の期間に行われる処理を第３のステップ、Ｔ２＝１の第４の期間に行われる処理を第４のステップ、Ｔ２＝２の第５の期間に行われる処理を第５のステップと称呼することができる。また、各ステップで行われる各処理（パターン履歴テーブル行アクセスなど）を各ステージと称呼することができる。
【０１１１】
（分岐予測手順について）
先ず、分岐予測手順に関して図２、図３、図６、及び図７を参照しつつ説明する。本実施の形態の分岐予測装置が搭載されたプロセッサにおいて、本例では、図５、図６に示す第３の分岐命令の分岐予測に関連する処理にて分岐予測結果生成２３０Ｇのステージの処理（「Ｔ２＝２」・第５のステップ内の処理）にて分岐予測結果を生成するための手順を、「Ｔ２＝０」（第３のステップ）、「Ｔ２＝１」（第４のステップ）、「Ｔ２＝２」（第５のステップ）の順に説明する。
【０１１２】
先ず、図６に示すように、Ｔ２＝２ステージにおける分岐予測結果生成処理２３０Ｇにて生成された分岐予測結果に基づいて、分岐命令をフェッチするのが「Ｔ２＝２」（第５のステップ）であるから、分岐命令をフェッチする２サイクル前（「Ｔ２＝０」・第３のステップ）から分岐予測に関連する処理を開始する。この「Ｔ２＝０」（第３のステップ）の開始時点では、T２＝―２に開始した第１の分岐命令の分岐予測に関連する処理にて第１の分岐予測結果生成処理、及びＴ２＝―１に開始した第２の分岐命令の分岐予測に関連する処理にて第２の分岐予測結果生成処理が終了していない。
【０１１３】
＜Ｔ２＝０（第３のステップ）＞
図６に示すＴ２＝０の第３の期間において、分岐予測装置は、図３に示すシフトレジスタ１１を構成する第１レジスタ（Ｃ０）１１ａ、第３レジスタ（Ｃ２）１１ｃ、第４レジスタ（Ｃ３）１１ｄ、第５レジスタ（Ｃ４）１１ｅ、第６レジスタ（Ｃ５）１１ｆの次のサイクル（Ｔ２＝１）で変更しない値を行選択論理２１に入力し、パターン履歴テーブルから分岐情報グループを読み出す処理を行う（図７に示すステップＳ１０１）＜行選択処理＞。
【０１１４】
次に、図６に示すＴ２＝０の第３の期間において、分岐予測装置は、図３に示す拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０のシフトレジスタ１１（１１ａ〜１１ｈ）において、次のサイクル（Ｔ２＝１）の値を計算する（図７に示すステップＳ１０２）＜次サイクル値計算処理＞。この値の計算は、図６に示す第１の分岐命令に関連する処理であるＴ２＝―２の分岐予測結果生成処理２１０Ｇにて生成された分岐予測結果を利用して計算を行う・・・「手順1」。
また、この分岐予測結果は、図1に示す予測結果生成論理３０Ａの出力に対応する。
【０１１５】
さらに、図６に示すＴ２＝０の第３の期間において、分岐予測装置は、計算された値（計算結果）を、次のサイクル（Ｔ２＝１）におけるシフトレジスタ１１の入力値とする処理を行う（図７に示すステップＳ１０３）＜次サイクル値入力処理＞。
【０１１６】
加えて、図６に示すＴ２＝０の第３の期間において、分岐予測装置は、計算された値（計算結果）が、次のサイクル（Ｔ２＝１）におけるシフトレジスタ１１の入力値として入力された値のうちで、シフトレジスタ１１を構成する第１レジスタ（Ｃ０）１１ａ、第２レジスタ（Ｃ１）１１ｂ、第８レジスタ（Ｃ７）１１ｈに各々格納される値は、コピーレジスタ２７に入力する処理を行う（図７に示すステップＳ１０４）＜コピーレジスタ値入力処理＞。
【０１１７】
このようにして、図６に示すＴ２＝０の第３の期間において、分岐予測装置は、第３の分岐命令に関するパターン履歴テーブルの行アクセス２３０ＣＡのステージの処理（第３の行選択処理）を行う。
【０１１８】
＜Ｔ２＝１（第４のステップ）＞
図６に示すＴ２＝１の第４の期間において、分岐予測装置は、コピーレジスタ２７の値に基づいて、第１のパイプラインレジスタ２３の出力である分岐情報グループの中から、２つの分岐予測情報を第１の列選択論理２４にて選択する処理を行う（図７に示すステップＳ１０５）＜列選択第１処理（第３の分岐命令に限ると第３の列選択第１処理）＞。
【０１１９】
さらに、図６に示すＴ２＝１の第４の期間において、分岐予測装置は、第２の分岐命令に関連する分岐予測結果生成処理２２０Ｇの分岐予測結果（図1の予測結果生成論理３０Ａの出力に相当）に基づいて、前記第１の列選択論理２４にて選択された２つの値の各分岐予測情報の中からひとつの値の分岐予測情報を、第２の列選択論理２５にて選択する処理を行う（図７に示すステップＳ１０６）＜列選択第２処理（第３の分岐命令に限ると第３の列選択第２処理）＞・・・（手順２）。
ここで、この部分の遅延は、大きくないため、次のステップの演算を前倒しして処理することも可能である。
ここで得られた結果を第２のパイプラインレジスタ２６へ格納する。
【０１２０】
このようにして、列選択第１処理、列選択第２処理により、図６に示すＴ２＝１の第４の期間において、分岐予測装置は、第３の分岐命令に関するパターン履歴テーブルの列アクセス２３０ＲＡのステージの処理（第３の列選択処理）を行う。
【０１２１】
＜Ｔ２＝２（第５のステップ）＞
次に、図６に示すＴ２＝２の第５の期間において、分岐予測装置は、第２のパイプラインレジスタ２６に格納された分岐予測結果情報に基づき、第３の分岐命令に関する分岐予測結果生成２３０Ｇのステージの処理（第３の分岐命令に限ると第３の分岐予測結果生成処理）による分岐予測結果を生成する（図７に示すステップＳ１０８）＜分岐予測結果生成処理＞。
【０１２２】
次に、図６に示すＴ２＝２の第５の期間において、予測結果生成論理３０Ａにて生成された前記分岐予測結果情報が、以降の処理（さらに次のサイクルでの前記手順１、手順２、同様の処理＜さらに次のサイクルでの値の計算、このサイクルでの第２の列選択などの処理＞）に必要となるため、分岐予測装置は、前記分岐予測結果情報を、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０、第２の列選択論理２５に各々送信する処理を行う（図７に示すステップＳ１０９）＜分岐予測結果情報送信処理＞。
【０１２３】
以上のパス（行選択処理、列選択処理、分岐予測結果生成処理）は、各ステージが十分に単純な作業に落とし込まれているためプロセッサのクリティカルパスに入ることはない。
【０１２４】
以上まとめると、前記第３のステップでは、前記第３の行選択処理の後に、前記第１の分岐予測結果生成処理にて生成された第１の分岐予測結果情報に基づいて、前記第３の期間の後の第４の期間における第４のステップに処理されるべき前記分岐予測情報蓄積処理手段のインデックス情報の値を先行して計算する処理を行うことができる。
【０１２５】
また、前記第３のステップでは、計算された前記インデックス情報の値に基づいて、前記第４の期間に処理されるべき第３の列選択処理のためのインデックス情報の値を抽出し、特定の列選択情報一時格納部に保持する処理を行うこともできる。
【０１２６】
さらに、前記第３のステップでは、計算された前記インデックス情報の値を、前記第４の期間に処理されるべき第４の行選択処理のためのインデックス情報の値として保持する処理を行うこともできる。
【０１２７】
一方、前記第４のステップでは、前記第２の分岐命令に関して生成される第２の分岐予測結果情報を生成する第２の分岐予測結果生成処理と、前記第３の行選択処理にて各々の前記分岐予測グループの中から選択されたいずれか一つの前記分岐予測グループと、列選択情報一時格納部の値と、に基づいて、少なくとも２つの各分岐予測情報を選択する第３の列選択第１処理と、前記第２の分岐予測結果生成処理にて生成された前記第２の分岐予測結果情報に基づいて、前記第３の列選択第１処理にて選択された各前記分岐予測情報のうち、一つの分岐を選択する第３の列選択第２処理と、を含むことができる。
【０１２８】
（更新手順について）
次に、更新手順に関して、図８を参照しつつ説明する。図８は、本実施の形態の分岐予測装置において、更新手順を説明するための説明図である。
【０１２９】
先ず、分岐命令がコミットステージに到達した場合には、以下の処理が存在する。すなわち、分岐予測が成功したか否かを判定する（ステップＳ１１１）＜分岐予測成功判定処理＞。
【０１３０】
分岐予測が成功した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリの直前の分岐の成立／非成立を示す1ビットの情報（分岐成立可否情報）を更新する処理を行う（ステップＳ１１２）＜分岐成立可否情報更新処理＞。
【０１３１】
一方、分岐予測が失敗した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリを参照して次の２ビット値を再計算する処理を行う（ステップＳ１１３）＜再計算処理＞。
【０１３２】
再計算後の値に関し、履歴ビットと成立／非成立が一致したか否かを判定する（ステップＳ１１４）＜履歴ビット一致判定処理＞。
再計算後の値は、履歴ビットと成立／非成立が一致した場合には、その一致した値を、新しい予測ビットの値とする処理を行う。この際に、予測ビットと反対の論理の値を履歴ビットに書き込む処理を行う（ステップＳ１１５）＜予測ビット書き込み処理＞。
履歴ビットと成立／非成立が一致していない場合には、履歴ビットに分岐命令の実行結果を書き込む処理を行う（ステップＳ１１６）＜実行結果書き込み処理＞。
【０１３３】
効果的なパイプライン化手法により、パイプライン化を図りながらも、分岐予測精度を向上させることができる。
【０１３４】
以上のように本実施の形態によれば、行選択、列選択、分岐予測結果生成の各処理をパイプライン処理により実施することで、パターン履歴テーブルに対するアクセスに関する処理速度を向上させ、分岐予測における処理を高速に行うことができる。
【０１３５】
また、拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットの値を直接、パターン履歴テーブルの行選択論理の入力としているので、ハッシュ論理の遅延を省略できる。さらに、インデックス情報制御手段の一例である拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットは、シフトレジスタの出力を行選択論理の入力とする構成により、レジスタの値が直接行選択論理に入力されることで、レジスタの値の変化点が固定されているので、分岐予測精度を損なうことなく、２ステージに分けてパターン履歴テーブルにアクセスできる。
【０１３６】
さらに、インデックス情報制御手段としての拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットによるインデックス情報の計算は、実行パス履歴情報を考慮して計算されることで、複雑なハッシュ論理を導入することなく、分岐予測精度が向上する。
【０１３７】
また、インデックス情報制御手段が、分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間おいて、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する。そして、第１の選択制御手段は、インデックス情報制御手段３にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第１の選択制御処理を行選択により行う。また、第２の選択制御手段は、インデックス情報制御手段にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第１の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第２の選択制御処理を列選択により行う。これにより、インデックス情報を前倒しして計算処理が可能となる。
【０１３８】
また、分岐予測処理における遅延は、プロセッサのクリティカルパスに入ることはないので、プロセッサ全体としての処理速度の向上に寄与できる分岐予測装置の提供が可能である。  
【０１３９】
このように、分岐予測情報蓄積処理手段の直前にハッシュ論理がないので、分岐予測の遅延を防止でき、パイプラインアクセス制御手段が前記第１の選択制御処理と第２の選択制御処理との２ステージに分けて、パイプライン処理により分岐予測情報蓄積処理手段に対するアクセス処理を行うことで、分岐予測における処理速度の高速化を図ることができ、分岐予測装置の性能が向上する。
【０１４０】
また、予測精度を高くしようとして、インデックス情報のビット数を増大させたとしても、行選択、列選択の２ステージによるパイプライン処理を行うことで、処理速度の遅延が生じない。
【０１４１】
［第２の実施の形態］
次に、本発明にかかる第２の実施の形態について、図９に基づいて説明する。なお、以下には、前記第１の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図９は、本発明の「分岐予測装置」を「ハイブリッド分岐予測装置」に適用した第２の実施の形態の一例を示すブロック図である。
【０１４２】
本第２の実施の形態では、上述の第１の実施の形態の「分岐予測装置」を、「ハイブリッド分岐予測装置」に適用した例を開示している。図２に示す分岐予測装置は、図８に示すように、ハイブリッド分岐予測装置の一部として利用される。
【０１４３】
本実施の形態にかかるハイブリッド分岐予測装置は、その基本的構成として、分岐命令に関する分岐予測情報（分岐すると予測するか、分岐しないと予測するかを示す情報）と、直前の分岐の成立の可否（成立／非成立）を示す分岐成立可否情報とをグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を含み、前記分岐予測情報蓄積処理手段に対してパイプライン処理によるアクセスが可能なパイプライン化分岐履歴情報蓄積処理ユニット（例えば図１０に示す符号２０−１）と、前記分岐予測情報又は前記分岐予測グループの選択を行うためのインデックス情報により前記パイプライン処理によるアクセスを制御し、プロセッサパイプラインのフェッチステージで処理を行うための第１のインデックス情報制御ユニット（例えば図１０に示す符号１０Ｂ−１）と、前記インデックス情報を制御し、プロセッサパイプイラインのコミットステージで処理を行うための第２のインデックス情報制御ユニット（例えば図１０に示す符号１０Ａ−１）と、を含む。
【０１４４】
前記パイプライン化分岐予測情報蓄積処理ユニット（例えば図１０に示す符号２０−１）は、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択処理する制御を行う第１の選択制御手段（例えば図１０に示す符号２１）と、前記第１の選択制御手段にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択処理する制御を行う第２の選択制御手段（例えば図１０に示す符号２３、２４、２５、２６、２７からなる構成）と、前記第２の選択制御手段にて選択された前記分岐予測情報に基づいて、分岐予測結果を生成処理する予測結果生成手段（例えば図１０に示す符号３０Ｂ）と、を含む。
【０１４５】
前記第１のインデックス情報制御ユニット（例えば図１０に示す符号１０Ｂ−１）は、前記第１の選択制御手段による第１の選択制御処理と、前記第２の選択制御手段による第２の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うことが好ましい。
【０１４６】
本実施の形態のハイブリッド分岐予測装置３００は、図９に示すように、その具体的構成として、巻戻り先保存用に利用される第２のインデックス情報制御ユニットの一例であるコミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３と、投機的実行用に利用される第１のインデックス情報制御ユニットの一例であるフェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―１、１０Ｂ―２、１０Ｂ―３と、図２に示す構成と同様構成を有するパイプライン化分岐予測情報蓄積処理ユニットの一例であるパイプライン化パターン履歴テーブル２０−１、２０−２、２０−３と、命令カウンタ４０と、分岐予測情報蓄積処理ユニットの一例であるパターン履歴テーブル５０と、これらのパイプライン化パターン履歴テーブル２０−１、２０−２、２０−３及びパターン履歴テーブル５０の各出力に基づいて予測結果を生成する予測結果生成手段の一例である予測結果生成論理３０Ｂと、を含んで構成される。
【０１４７】
ここで、本実施の形態において、図９に示すパイプライン化したパイプライン化パターン履歴テーブル２０−１、２０−２、２０−３は、それぞれ、前記第１の実施の形態の図２に示すパイプライン化パターン履歴テーブル２０に対応する。このため、より詳細には、図１０に示すような構成となる。
【０１４８】
また、図９に示す巻戻り先保存用のコミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３は、図２に示す拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０に対応する。さらに、図９に示す投機的更新用のフェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ−１、１０Ｂ−２、１０Ｂ−３は、図２に示す拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０に対応する。
【０１４９】
予測結果生成論理３０Ｂは、パイプライン化パターン履歴テーブル２０−２、２０−３とパターン履歴テーブル５０との各出力に基づいて、多数決によっていずれか一つの出力を決定する多数決処理部としての多数決回路３２と、この多数決回路３２の出力とパターン履歴テーブル５０の出力とパイプイライン化パターン履歴テーブル２０−１との各出力のうちいずれか一つを選択する分岐予測結果選択部としてのセレクタ回路３３と、を含んで構成される。
【０１５０】
ここで、図９における１０Ｂ―１→２０―１→３３、１０Ｂ―２→２０―２→３２→３３、１０Ｂ−３→２０―３→３２→３３の各パスの遅延も同程度になる。
また、ひとつの入力の命令カウンタ４０がそのままパターン履歴テーブル５０の入力となっている。ここで、パターン履歴テーブル５０は、他のパターン履歴テーブルよりも小さく遅延が短い上に、この遅延は、もともとハッシュ関数などの遅延が含まれないため、この部分の遅延がプロセッサのクリティカルパスに入ることはない。
【０１５１】
「拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット」は、巻戻先保存用のコミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３と、投機実行用のフェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ−１、１０Ｂ−２、１０Ｂ−３の２種類のタイプがそれぞれ用意されている。
【０１５２】
投機実行用のフェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―１、１０Ｂ―２、１０Ｂ―３は、フェッチステージで利用した命令キャッシュインデックスと予測結果生成論理の出力を用いて更新する。
【０１５３】
巻戻先保存用のコミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３は、コミットステージで、フェッチ時に利用した命令キャッシュインデックスと実行ステージでの結果を用いて更新する。もし、実行ステージでの実行結果が予測結果と異なる場合にはコミットステージにおいてパイプラインの巻き戻しが実行される。
【０１５４】
「巻き戻し」の時には、巻戻先保存用のコミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３は、巻戻先保存用のコミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３内の各々の内容を、各々の投機実行用のフェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―１、１０Ｂ―２、１０Ｂ―３に各々コピーする。これにより、分岐予測の正しさを保証する。
【０１５５】
コミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３、フェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―１、１０Ｂ―２、１０Ｂ―３は、異なる長さの分岐履歴をハッシュし、パイプライン化パターン履歴テーブル２０―１、２０―２、２０―３のインデックス情報を生成する。
【０１５６】
たとえば、パイプライン化したパイプライン化パターン履歴テーブル２０−１、２０―２、２０―３の容量がそれぞれ５１２バイトだった場合には、コミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、フェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―１では、直前の４命令分の分岐履歴情報と分岐命令キャッシュインデックスの下位２ビットをハッシュの入力として活用する。
【０１５７】
コミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―２、フェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―２では、直前の１２命令分の分岐履歴情報と分岐命令キャッシュインデックスの下位２ビットをハッシュの入力として活用する。
【０１５８】
コミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―３、フェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―３では、直前の２４命令分の分岐履歴情報と分岐命令キャッシュインデックスの下位２ビットをハッシュの入力として活用する。
【０１５９】
各々のパイプライン化パターン履歴テーブルユニット２０―１、２０―２、２０−３、５０は、１ビットの分岐予測情報と、直前の分岐の成立／非成立を示す1ビットの情報の合計２ビットを格納する。
【０１６０】
パイプライン化パターン履歴テーブルユニット２０―１、２０―２、２０−３、パターン履歴テーブル５０から読み出された分岐予測情報は多数決回路３２、および、セレクタ回路３３の入力として利用される。
【０１６１】
ここで、フェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―１は、「第１のインデックス情報制御ユニット」ということもできる。この「第１のインデックス情報制御ユニット」は、前記第１の選択制御手段による第１の選択制御処理と、前記第２の選択制御手段による第２の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うことができる。
【０１６２】
また、「第１のインデックス情報制御ユニット」は、前記フェッチステージにて投機実行に利用され、前記フェッチステージにて利用された命令キャシュインデックスと、前記予測結果生成手段の出力とに基づいて制御することができる。さらに、各々の各「第１のインデックス情報制御ユニット」は、それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐予測情報格納ユニットの各々の各分岐予測情報の各インデックス情報を各々生成することができる。加えて、各々の各「第１のインデックス情報制御ユニット」は、各々異なる命令数分の分岐履歴情報と、分岐命令キャッシュインデックス情報とに基づいて制御されることができる。  
【０１６３】
一方、コミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１は、「第２のインデックス情報制御ユニット」ということもできる。この「第２のインデックス情報制御ユニット」は、前記コミットステージにて、前記フェッチステージに利用された命令キャッシュインデックスと、実行ステージでの結果とに基づいて制御し、前記分岐予測情報による分岐予測が失敗し、プロセッサパイプラインの巻き戻しが行われる際に、前記コミットステージにて巻戻先保存処理に利用されることもできる。
【０１６４】
また、「第２のインデックス情報制御ユニット」は、実行ステージでの実行結果と予測結果とが異なり、前記コミットステージにてプロセッサパイプライン処理の巻き戻し処理が行われる際に、前記インデックス情報を、前記第１のパイプライン制御ユニットにコピーする処理を行うことができる。さらに、各々の各「第２のインデックス情報制御ユニット」は、それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐予測情報格納ユニットの各々の各分岐予測情報の各インデックス情報を各々生成することができる。
【０１６５】
（更新手順について）
ここで、更新手順に関しては、分岐命令がコミットステージに到達した場合には、以下の処理が存在する。すなわち、分岐予測が成功した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリの直前の分岐の成立／非成立を示す1ビットの情報（分岐成立可否情報）を更新する＜分岐成立可否情報更新処理＞。
【０１６６】
一方、分岐予測が失敗した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリを参照して次の２ビット値を再計算する＜再計算処理＞。
【０１６７】
再計算後の値は、履歴ビットと成立／非成立が一致した場合には、その一致した値を、新しい予測ビットの値とする。このときには、予測ビットと反対の論理の値を履歴ビットに書き込む＜予測ビット書き込み処理＞。
履歴ビットと成立／非成立が一致していない場合には、履歴ビットには分岐命令の実行結果を書き込む＜実行結果書き込み処理＞。
【０１６８】
投機実行用の拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ｂ―１、１０Ｂ―２、１０Ｂ―３の値は、巻戻先保存用の拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット１０Ａ―１、１０Ａ―２、１０Ａ―３の値にて上書き処理される。
【０１６９】
以上のように本実施の形態によれば、前記第１の実施の形態と同様の作用効果を奏しながらも、複数の異なるパターン履歴テーブルを利用したハイブリッド分岐予測装置にも適用できる。
【０１７０】
ここで、上記実施の形態において、予測結果生成論理として、単純な多数決回路、あるいは、単純なセレクト回路などとしてもよい。また、上記実施の形態において、複数のパターン履歴テーブルの代替として、単一のパターン履歴テーブルとしてもよい。
【０１７１】
その他の構成およびその他のステップ並びにその作用効果については、前述した第１の実施の形態の場合と同一となっている。
【０１７２】
［第３の実施の形態］
次に、本発明にかかる第３の実施の形態について、図１１に基づいて説明する。以下には、前記第１の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図１１は、本発明の分岐予測装置、ハイブリッド分岐予測装置をプロセッサに適用した第３の実施の形態の一例を示すブロック図である。
【０１７３】
本実施の形態では、上述の第１の実施の形態の分岐予測装置又は上述の第２の実施の形態のハイブリッド分岐予測装置を搭載したプロセッサの例を開示している。
【０１７４】
本実施の形態にかかるプロセッサは、基本的構成として、命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置（例えば図１１に示す符号４１１、４１２、４１３、４１４、４１５、４１６、４１７、４１８などの構成）と、前記プロセッサパイプライン処理における分岐命令の分岐予測を行う上述の第１の実施の形態の分岐予測装置又は上述の第２の実施の形態のハイブリッド分岐予測装置と、各装置を制御する制御装置（例えば図１１に示す符号４３２）と、を含むものである。
【０１７５】
本実施の形態のプロセッサ４００は、パイプライン処理を行うパイプラインプロセッサであり、図１１に示すように、その具体的構成として、命令キャッシュから命令を取り出す命令フェッチ処理を行う命令フェッチ処理ユニット４１１と、命令フェッチ処理ユニット４１１にてフェッチされた命令のデコード処理を行うデコード処理ユニット４１２と、レジスタオペランドのレジスタ値を読み出す処理を行う（レジスタから必要とされるオペランドをアクセスする）オペランドリード処理ユニット４１３と、デコード処理ユニット４１２でのデコード結果とオペランドリード処理ユニット４１３にて読み出されたレジスタ値に基づいて、命令を実行する（オペランドを組み合わせて結果もしくはメモリアドレスを生成する）実行処理ユニット（演算処理ユニット）４１４と、実行処理ユニット４１４にて計算されたアドレスに対応するメモリの値をデータキャッシュから読み出す処理を行う（必要に応じてデータオペランドを取りにメモリにアクセスする）メモリアクセス処理ユニット４１５と、書き戻し処理を行う書き戻し処理ユニット４１６と、コミット処理を行うコミット処理ユニット４１７と、リタイア処理を行うリタイア処理ユニット４１８と、本発明の特徴的構成である分岐予測装置又はハイブリッド分岐予測装置である分岐予測処理ユニット４２１と、を含んで構成される。
【０１７６】
さらに、プロセッサ４００は、図１１に示すように、アドレス変換処理を行うアドレス変換処理ユニット４２２と、各部の処理に必要な各データ格納ユニット・各処理に必要な各処理ユニットを含む記憶ユニット４３１と、プロセッサにおけるパイプライン処理などを行うこれらの各部の制御を司る制御ユニット４３２と、各部の処理に必要な各クロックを生成するクロック生成処理ユニット４３３と、他の装置との各種インターフェース機能を含む外部インターフェースユニット４３４と、を含んで構成される。
【０１７７】
アドレス変換処理ユニット４２２は、命令フェッチ処理又はメモリアクセス処理に先立って行われる。
【０１７８】
実行処理ユニット４１４は、ロード／ストア命令の場合には、実行アドレスの計算を行う。また、分岐命令の場合には、分岐先アドレスを計算する。実行処理ユニット４１４は、一又は複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ：算術論理演算ユニット）、一又は複数のＦＰＵ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｕｎｉｔ：浮動小数点演算ユニット）などを含む。
【０１７９】
以上のように本実施の形態によれば、前記第１の実施の形態又は第２の実施の形態と同様の作用効果を奏することのできるプロセッサを構成でき、パターン履歴テーブルへのアクセス処理に関し分岐予測精度を保ったままパイプライン化した処理を行うことで分岐予測を高速に行うことができ、処理速度の高速化を図ることのできるプロセッサを提供できる。
【０１８０】
なお、スーパースカラプロセッサの場合、Ｏｕｔ−ｏｆ−ｏｒｄｅｒ実行などの制御を行う不図示のＯｕｔ−ｏｆ−ｏｒｄｅｒ実行制御処理ユニットを備えてよい。Ｏｕｔ−ｏｆ−ｏｒｄｅｒ実行制御処理ユニットは、プロセッサパイプラインステージのうち、例えば「実行」ステージなどの部分に関しては、命令順の並びに関係なく実行できる機能を有する。
【０１８１】
その他の構成およびその他のステップ並びにその作用効果については、前述した実施の形態の場合と同一となっている。
【０１８２】
（各種変形例）
また、本発明にかかる装置及び方法は、そのいくつかの特定の実施の形態に従って説明してきたが、本発明の主旨および範囲から逸脱することなく本発明の本文に記述した実施の形態に対して種々の変形が可能である。
例えば、上記構成部材の数、位置、形状等は上記実施の形態に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。すなわち、上記実施の形態では、パイプライン化パターン履歴テーブルが３個、パターン履歴テーブルが１個、コミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットが３個、フェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットが３個、の場合を示したが、本発明は、これらの個数を制限するものではない。
【０１８３】
また、前記実施の形態では、パターン履歴テーブルに対するアクセスのパイプライン化において、パターン履歴テーブル行アクセス処理（Ａステージ）、パターン履歴テーブル列アクセス処理（Ｂステージ）、分岐予測結果生成処理（Ｃステージ）としたが、これに限らず、パターン履歴テーブル列アクセス処理（Ａステージ）、パターン履歴テーブル行アクセス処理（Ｂステージ）、分岐予測結果生成処理（Ｃステージ）とするパイプラインアクセス手法であってもよい。
【０１８４】
また、分岐予測におけるパイプライン構造としては、図５、図６に示す３ステージのものに限らず、図１２に示すような２ステージのパイプライン構造、図１３に示すような４ステージのパイプライン構造であってもよい。
【０１８５】
図１２に示すパイプライン構造では、第１の分岐命令５１０、第２の分岐命令５２０が、それぞれ、行選択を行うステージの処理（例えば符号５２０ＣＡ）と、列選択及び予測結果生成を行うステージの処理（例えば符号５２０ＲＡ）の計２ステージを有する。
【０１８６】
また、図１３に示すパイプライン構造では、第１の分岐命令６１０、第２の分岐命令６２０、第３の分岐命令６３０、第４の分岐命令６４０が、それぞれ、行選択を行うステージの処理（例えば符号６４０ＣＡ）と、列選択第１処理を行うステージの処理（例えば符号６４０ＲＡＩ）と、列選択第２処理を行うステージの処理（例えば符号６４０ＲＡＩＩ）と、予測結果生成を行うステージの処理（例えば符号６４０Ｇ）の計２ステージを有する。
【０１８７】
このように、パターン履歴テーブルに対するパイプラインアクセス処理の手法は、３ステージのパイプラインアセクス処理に限らず、３以上の複数ステージのパイプライン構造であってもよい。
【０１８８】
さらに、パターン履歴テーブルに対するアクセスをパイプライン化して処理を行うパイプラインアクセス制御手段（第１のパイプラインアクセス制御手段）を設ける場合に限らず、パイプラインアクセス手法として、パターン履歴テーブル第１行アクセス処理、パターン履歴テーブル第２行アクセス処理、パターン履歴テーブル第１列アクセス処理、パターン履歴テーブル第２列アクセス処理、第１分岐予測結果生成処理、第２分岐予測結果生成処理、・・、のようなスーパーパイプライン方式（第２のパイプラインアクセス処理手段）であってもよい。
【０１８９】
さらにまた、パターン履歴テーブルに対するパイプラインアクセス手法は、シングルスカラ方式に限らず、複数例えば２ウエイの並列処理（複数のパイプライン処理が同時に動作する処理）を含むスーパスカラ方式（第３のパイプラインアクセス処理手段）であってもよい。具体的には、パターン履歴テーブル第１行アクセス処理、パターン履歴テーブル第２行アクセス処理をＡステージで、パターン履歴テーブル第１列アクセス処理、パターン履歴テーブル第２列アクセス処理をＢステージで処理するようにしてもよい。
【０１９０】
加えて、パイプラインアクセス処理の各ステージで独立のクロックを用意し、ウェーブパイプライン方式で構成する場合であってもよい（第４のパイプラインアクセス処理）。
【０１９１】
また、分岐予測情報蓄積処理手段の一例であるパターン履歴テーブルは、分岐予測情報と、直前の分岐の成立の可否を示す分岐成立可否情報とを対応づけたパターン履歴情報として格納したものに限らず、他の種々の情報を格納したテーブルであってもよい。
【０１９２】
本発明の「分岐予測装置」を、「２ｂｃ−ｇｓｋｅｗ形式」に類似のハイブリッド分岐予測装置に適用した例について説明したが、他の形式の種々のハイブリッド分岐予測装置に適用してもよい。例えば、３以上（例えば、４、５など）の分岐予測を行ってそれらの多数決を用いるもの全てに適用可能である。
【０１９３】
また、本発明の特徴的構成のパイプライン化パターン履歴テーブルユニットの分岐予測情報の分岐予測手法には、種々の各予測手法を具現化した各種テーブルであってもよい。
【０１９４】
さらに、ハイブリッド分岐予測装置には、本発明の特徴的構成であるパイプライン化処理可能な分岐予測装置に加え、種々の分岐予測装置を組み合わせて多数決によって予測するようにしてもよい。また、ハイブリッド分岐予測装置におけるパイプライン化処理可能な各分岐予測装置は、複数種類の分岐予測を行うもので構成し、多数決で最終予測結果を決定するものであってもよい。
【０１９５】
さらに、前記実施の形態では、「パイプラインアクセス制御手段」が、パターン履歴テーブルから分岐予測情報を読み出す読出し処理のアクセスに関してパイプライン処理を行う例を示したが、「パイプラインアクセス制御手段」が、書き込み処理のアクセスに関してパイプライン処理を行う構成としてもよい。
【０１９６】
また、「拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット」は、分岐履歴情報と、実行パス履歴情報と、に基づいてインデックス情報を更新する構成としたが、これに加えて、他の種々の履歴情報を考慮して更新処理を行うよう、レジスタ及びＸＯＲ回路を拡張した構成としても構わない。
【０１９７】
加えて、前記第２の実施の形態では、一のパイプライン化パターン履歴テーブルユニットに対して、コミットステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット、フェッチステージ更新拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニットの２つの「拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット」を用いる構成としたが、他の種々の機能や共通する機能を有する、３以上の「拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット」を用いる構成としてもよい。
【０１９８】
さらにまた、パターン履歴テーブルを２ステージで選択する際に、行選択により一つの分岐予測グループを選択し、列選択により分岐予測情報を選択する構成としたが、これに限るものではなく、列選択により一つの分岐予測グループを選択し、行選択により分岐予測情報を選択する構成としてもよい。
【０１９９】
さらに、分岐予測情報蓄積処理手段の一例であるパターン履歴テーブルの情報を読み出す処理過程において、行選択を、１つの行を選択することによって分岐予測グループを選択する場合に限らず、複数行を同時選択することで分岐予測グループを選択する場合であってもよい。
【０２００】
加えて、複数行を同時選択することで分岐予測グループを選択する場合、列選択において、一つの列を選択することによって、分岐予測グループの中から複数の分岐予測情報を読み出すような構成であってもよい。
【０２０１】
上述の実施の形態では、１つのプロセッサ内に分岐予測装置を搭載する構成としたが、マルチプロセッサに分岐予測装置を搭載する構成、分岐予測装置を搭載したプロセッサが複数よりなるマルチプロセッサによる構成であってもよい。
【０２０２】
また、前記実施の形態の「分岐予測装置」、「ハイブリッド分岐予測装置」が搭載されるプロセッサとしては、通常のパイプライン処理が可能なパイプラインプロセッサに限らず、スーパースカラ処理が可能なプロセッサ、スーパーパイプライン処理が可能なプロセッサであってもよい。
【０２０３】
さらに、プロセッサは、ＲＩＳＣ型、ＣＩＳＣ命令をプロセッサ内部で複数のＲＩＳＣ命令に分割して実行するＣＲＩＳＣ型、ＣＩＳＣ型のいずれであってもよい。
また、「プロセッサ」は、通常のプロセッサに加えて、マルチプロセッサ、複数のＣＰＵを１チップ集積化したデュアルプロセッサなどを包含する総称である。このため、本実施の形態の「分岐予測装置」や「ハイブリッド分岐予測装置」を含む「プロセッサ」には、そのプロセッサを含むマルチプロセッサ、そのプロセッサと他の種々のプロセッサを含むマルチプロセッサ、そのプロセッサを含むデュアルプロセッサなどが含まれる。
【０２０４】
この際、マルチプロセッサは、集中共有メモリ方式、分散共有メモリ方式のいずれであってもよい。
【０２０５】
プロセッサは、デコード処理（命令の解釈）などの制御部の機能の一部をハードウエア的に実現するハードワイヤド方式、該制御部の機能の一部をソフトウエア的に実現するマイクロコード方式のいずれであってもよい。
【０２０６】
また、プロセッサは、汎用プロセッサ、各種処理の専用プロセッサであってもよい。
【０２０７】
また、分岐予測装置を含むプロセッサと、他の装置との間の通信構造に際し、いずれか一方又は双方に形成されるインタフェースの種類は、今後開発される如何なるインタフェースであっても構わない。  
【０２０８】
さらに、各手順に示されるステップは、記載された手順に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。また、手順（ステップ）が実行される順序を変更することもできる。さらに、必要に応じて、説明した特定の手順（ステップ）を、組み合わされた手順（ステップ）として除去、追加、または再配置することができる。
【０２０９】
さらに、装置の各手段、各機能、各ステージ、各ステップの手順の機能は、専用のハードウエア（例えば専用の半導体回路等）によりその機能を達成してもよいし、一部をソフトウエア的に処理してもよい。すなわち、全機能のうち一部の機能をハードウエアで処理し、全機能のうちさらに他の機能をソフトウエアで処理するようにしてもよい。
専用のハードウエアの場合、各部を集積回路例えばＬＳＩにて形成されてよい。これらは個別に１チップ化されても良いし、一部または全部を含むように１チップ化されても良い。また、ＬＳＩには、各種画像処理回路など他の機能ブロックが含まれていても良い。さらには、集積回路化の手法はＬＳＩに限るものではなく、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【０２１０】
さらに、パターン履歴テーブルへのアクセスにパイプライン処理を行う手法は、必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。このため、方法にかかる発明も、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。この場合、方法を実現するための一例として分岐予測装置、プロセッサなども含めることができる。
【０２１１】
ところで、このような分岐予測装置は、単独で存在する場合もあるし、ある機器（例えばプロセッサ）に組み込まれた状態で利用されることもあるなど、発明の思想としてはこれに限らず、各種の態様を含むものである。従って、ソフトウェアであったりハードウェアであったりするなど、適宜、変更可能である。発明の思想の具現化例として分岐予測装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用されるといわざるをえない。
【０２１２】
さらにこの場合、一部がソフトウェアであって、一部がハードウェアで実現されている場合であってもよく、一部のソフトウェアに相当する部分を記憶媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。また、上記の説明において、上述した各ステップの動作内容、各処理、各ステージ及び各部の構成要素をプログラム化し、分岐予測装置、ハイブリッド分岐予測装置ないしはコンピュータに実行させてもよい。
【０２１３】
加えて、上述のプロセッサなどが搭載される電子機器としては、サーバは、例えばパーソナルコンピュータに限らず、各種サーバー、ＥＷＳ（エンジニアリングワークステーション）、中型コンピュータ、メインフレームなどが挙げられる。情報端末は、以上の例に加えて、携帯型情報端末、各種モバイル端末、ＰＤＡ、携帯電話機、ウエアラブル情報端末、種々の（携帯型などの）テレビ・ＤＶＤレコーダ・各種音響機器及びそのリモコン、各種情報通信機能を搭載した家電機器、ネットワーク機能を有するゲーム機器等などが挙げられる。
【０２１４】
さらに、上記各実施の形態には種々の段階が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。つまり、上述の各実施の形態同士、あるいはそれらのいずれかと各変形例のいずれかとの組み合わせによる例をも含む。この場合において、本実施形態において特に記載しなくとも、各実施の形態及びそれらの変形例に開示した各構成から自明な作用効果については、当然のことながら実施の形態の作用効果として含めることができる。逆に、本実施の形態に記載されたすべての作用効果を奏することのできる構成が、本発明の本質的特徴部分の必須構成要件であるとは限らない。また、実施の形態に示される全構成要件から幾つかの構成要件が削除された構成による実施の形態並びにその構成に基づく技術的範囲も発明になりうる。
【０２１５】
そして、各実施の形態及びそれらの変形例を含むこれまでの記述は、本発明の理解を容易にするために、本発明の多様な実施の形態のうちの一例の開示、すなわち、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、例証するものであり、制限するものではなく、適宜変形及び／又は変更が可能である。本発明は、その技術思想、またはその主要な特徴に基づいて、様々な形で実施することができ、各実施の形態及びその変形例によって本発明の技術的範囲が限定的に解釈されてはならないものである。
従って、上記に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物を含む趣旨である。
【産業上の利用可能性】
【０２１６】
本発明は、コンピュータ、半導体、通信装置を製造する製造業、その他これに類する産業に適用可能であり、より詳細には、パイプライン化されたプロセッサといった用途に適用できる。
【図面の簡単な説明】
【０２１７】
【図１】本発明の第１の実施の形態による分岐予測装置の構成の一例を示すブロック図である。
【図２】本発明の第１の実施の形態による分岐予測装置の構成の一例を示すブロック図である。
【図３】図２の分岐予測装置の拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタの内部構成の一例を示すブロック図である。
【図４】図２の分岐予測装置を含むプロセッサのパイプライン構造を説明するための説明図である。
【図５】図２の分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。
【図６】図２の分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。
【図７】本発明の第１の実施の形態による分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン処理の動作過程（処理手順）を説明するための説明図である。
【図８】本発明の第１の実施の形態による分岐予測装置において、更新手順を説明するための説明図である。
【図９】本発明の第２の実施の形態による分岐予測装置（ハイブリッド分岐予測ユニット）の全体構成の一例を示すブロック図である。
【図１０】図９の分岐予測装置の詳細構成の一例を示すブロック図である。
【図１１】本発明の第３の実施の形態によるプロセッサの全体構成の一例を示すブロック図である。
【図１２】本発明のその他の実施の形態による分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。
【図１３】本発明のその他の実施の形態による分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。
【図１４】分岐予測装置においてパイプライン処理を行わない場合の比較例の処理を説明するための説明図である。
【図１５】分岐予測装置の第１の関連技術の構成の一例を示すブロック図である。
【符号の説明】
【０２１８】
１  分岐予測装置
２  パイプラインアクセス制御手段
３  インデックス情報制御手段
４  第１の選択制御手段
５  第２の選択制御手段
５ａ  第１の列選択手段  
５ｂ  第２の列選択手段  
６  分岐予測情報蓄積処理手段
７  予測結果生成手段
１０  拡張―Ｆｏｌｄｅｄ―Ｉｎｄｅｘ―レジスタユニット
１１  シフトレジスタ部
１２  論理回路ユニット
１３  分岐履歴レジスタ
１４  実行パス履歴レジスタ
１５  排他的論理和回路部
２０  パイプライン化パターン履歴テーブルユニット
（パイプライン化分岐履歴情報蓄積処理ユニット）
２１  行選択論理部（行選択手段）
２２  パターン履歴テーブル
２３  第１のパイプラインレジスタ（分岐予測グループ情報一時格納部）
２４  第１の列選択論理（第１の列選択論理回路部）
２５  第２の列選択論理
２６  第２のパイプラインレジスタ
２７  コピーレジスタ（列選択情報一時格納部）
３０Ａ  予測結果生成論理
３００  ハイブリッド分岐予測装置
１０Ａ―１、１０Ａ―２、１０Ａ―３  コミットステージ更新拡張―Ｆｏｌｄｅｄ―
―Ｉｎｄｅｘ―レジスタユニット（第１のインデックス制御ユニット）
１０Ｂ―１、１０Ｂ―２、１０Ｂ―３  フェッチステージ更新拡張―Ｆｏｌｄｅｄ―
―Ｉｎｄｅｘ―レジスタユニット（第２のインデックス制御ユニット）
３０Ｂ  予測結果生成論理部
３２    多数決回路
３３    セレクタ回路
４００  プロセッサ
４２１  分岐予測処理ユニット
【図１】
0005145809.tif 000002
【図２】
0005145809.tif 000003
【図３】
0005145809.tif 000004
【図４】
0005145809.tif 000005
【図５】
0005145809.tif 000006
【図６】
0005145809.tif 000007
【図７】
0005145809.tif 000008
【図８】
0005145809.tif 000009
【図９】
0005145809.tif 000010
【図１０】
0005145809.tif 000011
【図１１】
0005145809.tif 000012
【図１２】
0005145809.tif 000013
【図１３】
0005145809.tif 000014
【図１４】
0005145809.tif 000015
【図１５】
0005145809.tif 000016