(57)【要約】【課題】分岐予測処理時における消費電力を低減することができる情報処理装置を提供する。【解決手段】シングルループエントリ１３は、分岐が成立した最新の分岐命令について、その命令アドレスと分岐先アドレスとの対応情報である第１の対応情報を格納する。ブランチヒストリテーブル１４は、分岐が成立した最新を含む過去の複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応情報である第２の対応情報を格納する。分岐予測装置１は、演算器７で演算される命令列がループしているか否かを判断し、命令列がループしている場合には、ブランチヒストリテーブル１４へのクロックの供給を停止し、シングルループエントリ１３の第１の対応情報を検索した結果に基づいて分岐予測を行う。【選択図】図１
2010277529.tif 000002
【特許請求の範囲】
【請求項１】
演算の実行が完了した命令であって、分岐が成立した最新の分岐命令について、その命令アドレスと分岐先アドレスとの対応情報である第１の対応情報を格納する第１の分岐履歴記憶部と、
前記演算の実行が完了した命令であって、分岐が成立した最新を含む過去の複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応情報である第２の対応情報を格納する第２の分岐履歴記憶部と、
メモリからフェッチする命令の命令アドレスを用いて、前記第１の分岐履歴記憶部の第１の対応情報又は前記第２の分岐履歴記憶部の第２の対応情報を検索した結果に基づいて分岐予測を行う分岐予測制御部であって、前記命令列がループしている場合には、前記第２の分岐履歴記憶部へのクロックの供給を停止し、前記第１の分岐履歴記憶部の前記第１の対応情報を検索した結果に基づいて分岐予測を行う分岐予測制御部とを備える
ことを特徴とする情報処理装置。
【請求項２】
前記分岐予測制御部が、前記演算の実行が完了した分岐命令の命令アドレスが前記第１の対応情報に含まれる命令アドレスと一致する回数をカウント値としてカウントし、前記カウントしたカウント値が閾値を超える場合には、演算を実行中の命令列がループしていると判断する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記分岐予測制御部が、前記第２の分岐履歴記憶部へのクロックの供給が停止されている場合において、演算を実行中の命令列がループしているか否かを判断し、前記演算を実行中の命令列がループしていない場合には、前記第２の分岐履歴記憶部へのクロックの供給の停止を解除する
ことを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記分岐予測制御部が、前記分岐予測が失敗した場合には、前記演算を実行中の命令列がループしていないと判断する
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記分岐予測制御部が、前記分岐予測が成功し、かつ、前記第１の対応情報に含まれる分岐先アドレスが演算の実行が完了した分岐命令の分岐先アドレスと一致しない場合には、前記演算を実行中の命令列がループしていないと判断する
ことを特徴とする請求項３記載の情報処理装置。
【請求項６】
演算の実行が完了した命令であって、分岐が成立した最新の分岐命令について、その命令アドレスと分岐先アドレスとの対応情報である第１の対応情報を、第１の分岐履歴記憶部に格納し、
前記演算の実行が完了した命令であって、分岐が成立した最新を含む過去の複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応情報である第２の対応情報を、第２の分岐履歴記憶部に格納し、
メモリからフェッチする命令の命令アドレスを用いて、前記第１の分岐履歴記憶部の第１の対応情報又は前記第２の分岐履歴記憶部の第２の対応情報を検索した結果に基づいて分岐予測を行う分岐予測制御部が、前記演算を実行中の命令列がループしているか否かを判断し、
前記分岐予測制御部が、前記演算を実行中の命令列がループしている場合には、前記第２の分岐履歴記憶部へのクロックの供給を停止し、前記第１の分岐履歴記憶部の前記第１の対応情報を検索した結果に基づいて分岐予測を行う
ことを特徴とする分岐予測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分岐予測を行う情報処理装置及び分岐予測方法に関する。
【背景技術】
【０００２】
パイプライン制御方式を実行するプロセッサは、メモリから命令実行部への命令列の読出し（命令フェッチ）を効率的に行うために、分岐を予測する機構である分岐予測機構を備える。特に、アウトオブオーダ制御を実行するプロセッサにおいては、命令実行に大きく先行して命令フェッチが行われることがあるので、分岐予測機構の重要性が高い。
【０００３】
例えば、ブランチ・ヒストリのエントリを、命令アドレスに対応付けられて、命令フェッチ長と命令語最小単位長とから規定される個数のブロックで構成する命令実行処理装置が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−０８９１７３号公報
【特許文献２】特開２００４−３８３３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
分岐予測機構においては、分岐予測処理の際に消費される消費電力をできるだけ小さくする必要がある。
【０００６】
本発明は、分岐予測処理時における消費電力を低減することができる情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００７】
開示される情報処理装置は、第１の分岐履歴記憶部と、第２の分岐履歴記憶部と、分岐予測制御部とを含む分岐予測機構を備える。第１の分岐履歴記憶部は、命令列に含まれる命令であって、分岐が成立した最新の分岐命令について、その命令アドレスと分岐先アドレスとの対応情報である第１の対応情報を格納する。第２の分岐履歴記憶部は、命令列に含まれる命令であって、分岐が成立した最新を含む過去の複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応情報である第２の対応情報を格納する。分岐予測制御部は、命令列に含まれる、フェッチされる命令の命令アドレスを用いて、第１の分岐履歴記憶部の第１の対応情報又は第２の分岐履歴記憶部の第２の対応情報を検索した結果に基づいて分岐予測を行う。特に、分岐予測制御部は、命令列がループしている場合には、第２の分岐履歴記憶部へのクロックの供給を停止し、第１の分岐履歴記憶部の第１の対応情報を検索した結果に基づいて分岐予測を行う。
【発明の効果】
【０００８】
開示される情報処理装置によれば、分岐予測処理において、演算される命令列がループする場合には、消費電力を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置の構成例を示す図である。
【図２】分岐予測装置が通常動作モードにおいて行う処理を説明する図である。
【図３】分岐予測装置における、通常動作モードから低消費電力モードへの切り替え処理を説明する図である。
【図４】分岐制御装置の処理を説明する図である。
【図５】分岐予測の成功又は失敗に応じた分岐予測処理動作の状態の遷移を説明する図である。
【発明を実施するための形態】
【００１０】
プロセッサの消費電力を低減するための方法として、一定時間命令実行に使用されない演算資源に対して、命令を実行しない時間帯について、クロックの供給を停止することが考えられる。
【００１１】
本発明者は、ブランチ・ヒストリ（以下、ブランチヒストリテーブルという）のエントリを検索することによりフェッチした命令が分岐命令か否かを予測する分岐予測機構について検討した。この分岐予測機構は、エントリの個数が多いほど予測の精度が増す。このため、ブランチヒストリテーブルとしては、大容量のデータを保持することができるＲＡＭ（Random Access Memory）を用いることが考えられる。そして、大容量のＲＡＭのような演算資源へのクロックを停止すれば、消費電力を大きく低減することができる。
【００１２】
しかし、分岐予測機構において、ブランチヒストリテーブルは、命令フェッチの度に参照される。命令フェッチは命令の実行に先行して頻繁に行われる。従って、ブランチヒストリテーブルが使用されない時間は、殆ど存在しない。換言すれば、ブランチヒストリテーブルは、データの更新時だけでなく、データの参照時にも参照されるため、クロックの供給を停止することは難しい。
【００１３】
一方、プログラム内において頻繁に出現する構造として、複数の命令で１つの命令列を構成し、当該命令列又はその一部を繰り返し実行する構造がある。この明細書では、命令列又はその一部が繰り返し実行されることを「命令がループしている」又は「命令がループに入る」と言い、繰り返し実行される複数の命令を「ループ」と言う。また、一旦ループした命令列が繰り返し実行されなくなることを「ループから外れる」と言う。
【００１４】
本発明者は、ループに含まれる分岐命令を検出して格納した複数の命令バッファを用いて、当該ループに含まれる複数の命令を繰り返し実行することにより、命令バッファから直接命令を供給して実行できるようにした命令フェッチ制御装置について検討した。この検討対象の命令フェッチ制御装置においては、命令バッファには既に命令が格納されている。従って、新たにメモリから命令フェッチをする必要がない。この結果、命令バッファに格納された命令を、直接実行することができる。これにより、この検討対象の命令フェッチ制御装置においては、ブランチヒストリテーブルを参照する必要がなくなる。従って、命令バッファを用いている期間は、ブランチヒストリテーブルへのクロックの供給を停止することができると考えられる。
【００１５】
しかし、この検討対象の命令フェッチ装置によれば、ループに含まれる命令の個数が予め用意された複数の命令バッファの個数を超えると、命令バッファのみを用いてループを実現することができない。換言すれば、ブランチヒストリテーブルへのクロックの供給を停止することができるのは、予め用意された複数の命令バッファに格納することができる長さのループについてのみである。このため、電力削減の機会が限定される。
【００１６】
以下に開示される図１の情報処理装置によれば、分岐予測処理時における消費電力を、命令列におけるループの長さとは無関係に、低減することができる。
【００１７】
図１は、情報処理装置の構成の一例を示す図である。
【００１８】
図１の情報処理装置は、分岐予測装置１、メモリ２、命令取得制御装置３、命令解析装置４、命令発行制御装置５、命令完了制御装置６、演算器７、分岐制御装置８を備える。図１の情報処理装置は、例えば、スーパースカラ方式かつアウトオブオーダ制御方式により演算を実行するコンピュータである。このために、図１の情報処理装置は、分岐予測機構を備える。分岐予測機構は、分岐予測装置１と命令取得制御装置３と分岐制御装置８とを備える。
【００１９】
分岐予測装置１は、分岐予測処理を実行する。分岐予測処理は、命令取得制御装置３がメモリ２からフェッチする命令が分岐するか否かを予測する処理である。分岐予測装置１は、分岐予測部１１、管理部１２、シングルループエントリ１３、ブランチヒストリテーブル１４、カウンタ１５を備える。分岐予測部１１は、シングルループエントリ１３又はブランチヒストリテーブル１４を用いて、分岐予測処理を実行し、分岐予測処理の結果を分岐制御装置８に対して送信する。具体的には、分岐予測部１１は、命令取得制御装置３から、命令フェッチアドレスを取得し、取得した命令フェッチアドレスでシングルループエントリ１３又はブランチヒストリテーブル１４を検索して、分岐予測処理を実行する。具体的には、分岐予測部１１は、メモリ２からフェッチする命令の命令アドレスを用いて、シングルループエントリ１３の第１の対応情報又はブランチヒストリテーブル１４の第２の対応情報を検索した結果に基づいて、分岐予測を行う。命令フェッチアドレスは、命令取得制御装置３がメモリからフェッチする命令のアドレスである。
【００２０】
シングルループエントリ１３は、１個の第１の対応情報を格納する分岐履歴記憶部である。第１の対応情報は、分岐が成立した最新の分岐命令について、その命令アドレスと分岐先アドレスとの対応を示す対応情報である。
【００２１】
シングルループエントリ１３には、分岐命令の命令アドレスと分岐先アドレスとの対応情報が１個のみ格納される。換言すれば、１個のエントリのみがシングルループエントリ１３に存在する。
【００２２】
シングルループエントリ１３としては、例えばフリップフロップ回路が用いられる。具体的には、１個のエントリのビット幅に等しい個数のフリップフロップ回路が用意される。シングルループエントリ１３は、エントリが１個であるので、アドレスデコーダ等の周辺回路を持たない。従って、シングルループエントリ１３は、エントリが複数であって周辺回路を備えるブランチヒストリテーブル１４と比べて、消費電力が極めて小さい。
【００２３】
ブランチヒストリテーブル１４は、複数の第２の対応情報を格納する分岐履歴記憶部である。第２の対応情報は、過去に分岐が成立した複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応を示す対応情報である。
【００２４】
ブランチヒストリテーブル１４には、分岐が成立した分岐命令の命令アドレスと分岐先アドレス対応情報の複数の履歴を格納する。換言すれば、シングルループエントリ１３に格納する第１の対応情報を含む複数のエントリがブランチヒストリテーブル１４に存在する。
【００２５】
ブランチヒストリテーブル１４としては、例えばＳＲＡＭ（Static Random Access Memory）が用いられる。従って、ブランチヒストリテーブル１４は、複数のエントリを格納するので、エントリが１個であるシングルループエントリ１３よりも回路規模が大きい。また、ブランチヒストリテーブル１４は、書込み回路、読出し回路、アドレスデコーダ等の周辺回路を備える。このため、ブランチヒストリテーブル１４の消費電力は、エントリ数に依存するが、シングルループエントリ１３の消費電力よりも、例えば数百〜数万倍大きい。
【００２６】
通常動作モードにおいては、分岐予測部１１は、ブランチヒストリテーブル１４を検索する。通常動作モードは、ブランチヒストリテーブル１４にクロックが供給されている状態における分岐予測機構の動作モードである。分岐予測部１１は、管理部１２から、動作モードが低消費電力モードから通常動作モードに切り替わったことを示す通知を受信して、通常動作モードにおける処理を実行する。
【００２７】
低消費電力モードにおいては、分岐予測部１１は、シングルループエントリ１３を検索する。低消費電力モードは、ブランチヒストリテーブル１４にクロックが供給されていない状態における分岐予測機構の動作モードである。従って、低消費電力モードにおいて、ブランチヒストリテーブル１４は停止状態にある。分岐予測部１１は、管理部１２から、動作モードが通常動作モードから低消費電力モードに切り替わったことを示す通知を受信して、低消費電力モードにおける処理を実行する。
【００２８】
具体的には、通常動作モードでは、分岐予測部１１は、命令取得制御装置３から取得した命令フェッチアドレスとブランチヒストリテーブル１４の第２の対応情報に含まれる分岐命令アドレスとを比較して、両者が一致するエントリが存在するか否かを判断する。
【００２９】
この後、命令フェッチアドレスと第２の対応情報に含まれる分岐命令アドレスとが一致するエントリが存在する場合、分岐予測部１１は、命令フェッチアドレスから読出される命令が分岐命令であり、かつ、当該分岐命令について分岐が成立すると予測する。分岐予測部１１は、分岐が成立すると予測した場合、アドレスが一致したエントリの第２の対応情報に含まれる、分岐命令アドレスと対応付けられた分岐先アドレスを特定する。換言すれば、分岐予測部１１は、ブランチヒストリテーブル１４から対応する分岐先アドレスを読出す。
【００３０】
この後、分岐予測部１１は、分岐が成立するという予測と、特定した分岐先アドレスとを、分岐予測処理の結果として、分岐制御装置８に対して送信する。また、分岐予測部１１は、所定の制御信号と、特定した分岐先アドレスとを、分岐予測処理の結果として、命令取得制御装置３に対して送信する。命令取得制御装置３は、分岐予測部１１から送信された分岐先アドレスを受信し、受信した分岐先アドレスを次にフェッチする命令アドレスとする。
【００３１】
命令フェッチアドレスが第２の対応情報に含まれる分岐命令アドレスと一致するエントリが存在しない場合、分岐予測部１１は、命令フェッチアドレスから読出される命令が分岐命令ではないか、又は、命令フェッチアドレスから読出される命令が分岐命令であるが、当該分岐命令が分岐成立しないと予測する。分岐予測部１１は、この予測を、分岐予測処理の結果として、分岐制御装置８に対して送信する。
【００３２】
低消費電力モードでは、分岐予測部１１は、命令フェッチアドレスとシングルループエントリ１３の第１の対応情報に含まれる分岐命令アドレスとを比較して、両者が一致するか否かを判断する。
【００３３】
この後、命令フェッチアドレスと第１の対応情報に含まれる分岐命令アドレスとが一致する場合、分岐予測部１１は、分岐が成立すると予測する。分岐予測部１１は、分岐が成立すると予測した場合、第１の対応情報に含まれる、当該分岐命令アドレスと対応付けられた分岐先アドレスを特定する。換言すれば、分岐予測部１１は、シングルループエントリ１３から分岐先アドレスを読出す。
【００３４】
この後、分岐予測部１１は、分岐が成立するという予測と、特定した分岐先アドレスとを、分岐予測処理の結果として、分岐制御装置８に対して送信する。また、分岐予測部１１は、所定の制御信号と、特定した分岐先アドレスとを、分岐予測処理の結果として、命令取得制御装置３に対して送信する。命令取得制御装置３は、分岐予測部１１から送信された分岐先アドレスを受信し、受信した分岐先アドレスを次にフェッチする命令アドレスとする。
【００３５】
命令フェッチアドレスが第１の対応情報に含まれる分岐命令アドレスと一致しない場合、分岐予測部１１は、命令フェッチアドレスから読出される命令が分岐命令でないか、又は、命令フェッチアドレスから読出される命令が分岐命令であるが分岐が成立しないと予測する。分岐予測部１１は、この予測を、分岐予測処理の結果として、分岐制御装置８に対して送信する。
【００３６】
管理部１２は、通常動作モードにおいては、ブランチヒストリテーブル１４に対してクロックを供給し、かつ、シングルループエントリ１３に対してクロックを供給する。ブランチヒストリテーブル１４及びシングルループエントリ１３において、供給されたクロックは、動作クロックとして用いられる。
【００３７】
管理部１２は、低消費電力モードにおいては、シングルループエントリ１３に対してクロックを供給し、ブランチヒストリテーブル１４に対してはクロックの供給を停止する。低消費電力モードにおいては、シングルループエントリ１３がクロックを供給されて動作し、第１の対応情報が繰り返し用いられるのみである。従って、ブランチヒストリテーブル１４は参照されず、かつ、ブランチヒストリテーブル１４に対する第２の対応情報の追加は不要である。従って、ブランチヒストリテーブル１４に対するクロックの供給を停止しても、分岐予測処理には何ら支障はない。
【００３８】
また、管理部１２はカウンタ１５を備え、そのカウント値の登録処理及び更新処理を行う。具体的には、管理部１２は、演算器７による演算が完了した分岐命令の命令アドレスと、シングルループエントリ１３の第１の対応情報に含まれる分岐命令アドレスとを比較する。これにより、管理部１２は、演算が完了した分岐命令の命令アドレスと第１の対応情報に含まれる分岐命令アドレスとが一致する度に、カウンタ１５のカウント値をインクリメントする。
【００３９】
この後、管理部１２は、カウンタ１５のカウント値が閾値を超えるか否かを判断する。閾値は、予め設定され、例えば経験的に定まる。これにより、分岐予測機構の動作モードを通常動作モードから低消費電力モードに切り替えるタイミングを定めることができる。
【００４０】
カウンタ１５のカウント値が閾値を超えた場合、管理部１２は、命令列がループしていると判断する。演算される命令列が閾値を超える回数ループしている場合、管理部１２は、ブランチヒストリテーブル１４へのクロックの供給を停止する。これにより、分岐予測機構の動作モードが通常動作モードから低消費電力モードに切り替えられる。管理部１２は、動作モードが通常動作モードから低消費電力モードに切り替えられたことを分岐予測部１１に通知する。
【００４１】
なお、命令列が閾値を超える回数ループしていなければ、ブランチヒストリテーブル１４へのクロックの供給は停止されない。換言すれば、命令列が閾値を超える回数ループしている場合のみ、ブランチヒストリテーブル１４へのクロックの供給という観点から見て命令列がループしていると判断される。
【００４２】
動作モードが通常動作モードから低消費電力モードに切り替えられた場合、分岐予測部１１は、ブランチヒストリテーブル１４の第２の対応情報を検索せずに、シングルループエントリ１３の第１の対応情報の検索結果に基づいて分岐予測を行う。換言すれば、管理部１２及び分岐予測部１１は、分岐予測を行う制御部である。
【００４３】
更に、管理部１２は、低消費電力モードの場合、換言すれば、ブランチヒストリテーブル１４へのクロックの供給が停止されている場合において、演算が完了した分岐命令の命令アドレスと、シングルループエントリ１３の第１の対応情報に含まれる分岐命令アドレスとを比較する。アドレスが一致しない場合、演算される命令列がループから外れたと判断する。管理部１２は、命令列がループから外れた場合には、ブランチヒストリテーブル１４へのクロックの供給の停止を解除する。これにより、分岐予測機構の動作モードが、低消費電力モードから通常動作モードに切り替えられる。管理部１２は、命令列がループから外れた場合には、シングルループエントリ１３の第１の対応情報を更新し、カウンタ１５のカウンタ値をクリアする。管理部１２は、動作モードが低消費電力モードから通常動作モードに切り替えられたことを分岐予測部１１に通知する。
【００４４】
なお、１個の命令列が複数回ループする場合がある。この場合、例えば、命令列が最初のループから外れた時点で、シングルループエントリ１３の第１の対応情報が更新され（無効とされ）、カウンタ１５のカウンタ値がクリアされる。この後、命令列が次のループを開始すると、シングルループエントリ１３の第１の対応情報が参照され、カウンタ１５のカウンタ値がインクリメントされる。
【００４５】
更に、管理部１２は、分岐制御装置８から、分岐予測が成功したか失敗したかを示す情報と、分岐が成立したか否かついての判断結果とを受信する。具体的には、管理部１２は、分岐制御装置８から、分岐が成功したことを示す情報として、演算が完了した分岐命令アドレスと、演算が完了した分岐先アドレスとを受信する。管理部１２は、受信した分岐命令アドレスと分岐先アドレスとを対応付けた上で、シングルループエントリ１３の第１の対応情報として格納し、かつ、ブランチヒストリテーブル１４の第２の対応情報として格納する。また、管理部１２は、分岐予測が成功したか失敗したかを示す情報と、分岐が成立したか否かついての判断結果とに基づいて、シングルループエントリ１３の第１の対応情報又はブランチヒストリテーブル１４の第２の対応情報の更新処理を行う。
【００４６】
なお、管理部１２は、分岐が失敗した場合には、命令列がループしていないと判断するようにしても良い。また、管理部１２が、分岐が成功し、かつ、シングルループエントリ１３の第１の対応情報に含まれる分岐先アドレスが演算が完了した分岐命令の分岐先アドレスと一致しない場合には、命令列がループしていないと判断するようにしても良い。管理部１２は、命令列がループしていないと判断した場合には、カウンタ１５のカウンタ値をクリアする。
【００４７】
カウンタ１５は、演算が完了した命令の命令アドレスとシングルループエントリ１３の第１の対応情報に含まれる分岐命令アドレスとが一致した回数をカウントする。シングルループエントリ１３に格納される第１の対応情報は、カウンタ１５のカウント値がインクリメントされている間、換言すれば、演算器７で演算が実行される命令列がループしている間は、更新されない。従って、シングルループエントリ１３に格納される第１の対応情報は、命令列のループの長さに関係なく、１個である。
【００４８】
命令取得制御装置３は、メモリ２から命令をフェッチする。メモリ２は、命令及び命令実行に必要なデータが格納される記憶部である。フェッチされる命令は、演算器７で演算される命令列に含まれる複数の命令の中のいずれかの命令である。
【００４９】
命令取得制御装置３は、命令バッファ３１と、アドレス形成部３２と、セレクタ３３とを備える。命令バッファ３１は、フェッチされた命令を格納する。命令取得制御装置３は、フェッチする命令のアドレスを分岐予測装置１と分岐制御装置８に対して送信する。アドレス形成部３２は、現在の命令フェッチアドレスに連続する命令アドレスを形成する。セレクタ３３は、分岐予測装置１の分岐予測部１１から分岐先アドレスを取得する。セレクタ３３は、分岐予測が分岐成立であった場合は分岐予測部１１から取得した分岐先アドレスを、分岐予測が分岐不成立であった場合はアドレス形成部３２が形成した命令アドレスを選択する。命令取得制御装置３は、セレクタ３３が選択したアドレスを、次にメモリ２からフェッチする命令アドレスとする。
【００５０】
なお、図４を参照して後述するように、分岐制御装置８において、演算器７による分岐命令演算の結果、命令フェッチ時の分岐予測が正しかったか否かの判断が行われる。分岐予測が失敗した場合は、予測に基づいて処理していた命令列は誤りであったことを意味するため、正しい命令列を再度メモリ２からフェッチして処理をやり直す必要がある。
【００５１】
アドレス形成部３２は、分岐予測が失敗した場合の再命令フェッチアドレスとして、分岐予測が失敗した分岐命令演算器７による演算が完了した命令アドレスの次の命令のアドレスに連続する命令アドレスを形成する。セレクタ３３は、分岐不成立の分岐予測が失敗して演算結果が分岐成立であった場合には命令演算器７の演算の結果得られた分岐先アドレスを、分岐成立の分岐予測が失敗して演算結果が分岐不成立であった場合にはアドレス形成部３２により形成された命令アドレスを選択する。
【００５２】
命令解析装置４は、命令取得制御装置３の命令バッファ３１から命令を読出し、読出した命令を解析（デコード）する。命令の解析結果は、当該命令が分岐命令であるか否かを示す情報を含む。命令解析装置４は、命令の解析結果と解析した命令とを命令発行制御装置５に送信する。
【００５３】
命令発行制御装置５は、解析された命令を演算器７に対して発行する（即ち、送信する）とともに、命令の解析結果を演算器７に対して送信する。また、命令発行制御装置５は、演算器７に対して発行された命令を識別する情報を、命令完了制御装置６に対して送信する。また、命令発行制御装置５は、解析された命令が分岐命令である場合には、分岐制御装置８を起動する制御信号を、分岐制御装置８に対して送信する。この制御信号を受信した分岐制御装置８は、動作を開始する。
【００５４】
命令発行制御装置５は、演算器７に対して発行する命令の上限数を管理する。このために、命令発行制御装置５は、演算器７に対して命令を発行する都度、演算器７に対して発行した命令の数（発行数）を＋１だけインクリメントする。命令発行制御装置５は、演算器７への命令の発行数が上限数を超える場合、当該演算器７への命令を発行しない。これにより、命令発行制御装置５は、演算器７への命令の発行数が上限数を超えないようにすることができる。
【００５５】
命令発行制御装置５は、後述する命令完了制御措置６から、命令の実行が完了したことを示す通知を受信すると、演算器７への命令の発行数を−１だけデクリメントする。この結果、演算器７が命令発行制御装置５から命令の発行を受信することができる状態になる。
【００５６】
命令完了制御装置６は、演算器７から演算完了通知を受信すると、命令発行制御装置５から送信された、命令を識別する情報に基づいて、当該命令の演算が完了したか否かを判断する。命令完了制御装置６が、命令の実行が完了した場合、当該命令の実行が完了したことを命令発行制御装置５に通知する。
【００５７】
演算器７は、複数の命令を含む命令列について、予め定められた演算を実行する。例えば、演算器７は、命令発行制御装置５が発行した命令を受信し、受信した命令の演算の実行に必要なデータをメモリ２から読出す。演算器７は、受信した命令とメモリ２から読出したデータとに基づいて、予め定められた演算を実行する。演算器７は、命令解析装置４による解析の結果、当該命令が分岐命令であることを示す場合、その分岐条件と分岐先アドレスとを演算し、演算結果を分岐制御装置８に送信する。
【００５８】
分岐制御装置８は、演算器７から演算結果を受信して、演算が完了した分岐命令アドレスと、演算が完了した分岐先アドレスとを、分岐予測装置１の管理部１２に対して送信する。また、分岐制御装置８は、演算器７から演算結果を受信し、演算結果と分岐予測装置１から受信した分岐予測処理の結果とに基づいて、分岐予測装置１の分岐予測処理の結果が正しいか否か、即ち、分岐予測が成功したか失敗したかを判断する。分岐制御装置８は、分岐予測が成功したか失敗したかを示す情報を分岐予測装置１の管理部１２に対して送信する。
【００５９】
また、分岐制御装置８は、分岐予測が失敗した場合には、命令取得制御装置３に対して、再命令フェッチ要求を送信する。
【００６０】
図１の情報処理装置及び情報処理装置が備える各処理部の機能は、ＣＰＵとその上で実行されるプログラムにより実現される。前記プログラムは、コンピュータが読み取り可能な記録媒体、例えば半導体メモリ、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ等に格納することができ、これらの記録媒体に記録して提供され、又は、通信インタフェースを介してネットワークを利用した送受信により提供される。
【００６１】
図２は、図１に示す分岐予測装置が通常動作モードにおいて行う処理を説明する図である。
【００６２】
分岐予測装置１の管理部１２が、分岐制御装置８から、演算器７での演算が完了した分岐命令の命令アドレスａ２１と分岐先アドレスａ２２とを受信し、受信した分岐命令アドレスａ２１と分岐先アドレスａ２２とを、第２の対応情報として、ブランチヒストリテーブル１４に登録する（＃２１）。管理部１２は、分岐制御装置８から分岐命令アドレスａ２１と分岐先アドレスａ２２を受信する度に、受信した分岐命令アドレスａ２１と分岐先アドレスａ２２とを、新たな第２の対応情報として、ブランチヒストリテーブル１４に追加する。なお、分岐予測装置１の管理部１２は、図４を参照して後述するように、所定の条件下でブランチヒストリテーブル１４の第２の対応情報を更新する。
【００６３】
また、分岐予測装置１の分岐予測部１１が、命令取得制御装置３から命令フェッチアドレスａ２５を取得し、取得した命令フェッチアドレスａ２５をキーとして、ブランチヒストリテーブル１４を検索する（＃２２）。
【００６４】
命令フェッチアドレスａ２５とブランチヒストリテーブル１４の第２の対応情報に含まれる分岐命令アドレスとが一致する場合、分岐予測部１１は、命令フェッチアドレスａ２５から読出される命令が分岐命令であり、かつ、その分岐命令については分岐が成立すると予測する。分岐予測部１１が、第２の対応情報において命令フェッチアドレスａ２５と一致する分岐命令アドレスと対応付けられた分岐先アドレスを取得し、取得した分岐先アドレスを、予測した分岐先アドレスａ２３として命令取得制御装置３に対して送信する（＃２３）。
【００６５】
分岐予測部１１によって分岐成立と予測された場合、セレクタ３３が、分岐予測装置１から予測した分岐先アドレスａ２３を受信し、予測した分岐先アドレスａ２３を次の命令フェッチアドレスとして選択する。命令取得制御装置３は、セレクタ３３が選択した命令フェッチアドレスに基づいてメモリ２から命令をフェッチし、フェッチした命令を命令バッファ３１に格納する（＃２４）。
【００６６】
ブランチヒストリテーブル１４を検索した結果、命令フェッチアドレスａ２５が第２の対応情報に含まれる分岐命令アドレスと一致しない場合には、分岐予測部１１は、命令フェッチアドレスａ２５から読出される命令が分岐命令でない、又は、分岐命令であるが当該分岐命令についての分岐が不成立であると予測する。分岐予測部１１は、現在の命令フェッチアドレスａ２５と連続するアドレスを次の命令フェッチアドレスとするように命令取得制御装置３のアドレス形成部３２に対して指示する（＃２５）。従って、分岐予測部１１から出力された予測結果は、命令フェッチアドレスの選択に使用される。
【００６７】
この指示を受信したアドレス形成部３２が、現在の命令フェッチアドレスａ２５と連続するアドレスａ２４を形成してセレクタ３３に対して出力する。
【００６８】
分岐予測部１１によって分岐不成立と予測された場合、セレクタ３３が、アドレス形成部３２が形成したアドレスａ２４を、次の命令フェッチアドレスとして選択する。
【００６９】
図３は、図１に示す分岐予測装置における、通常動作モードから低消費電力モードへの切り替え処理を説明する図である。
【００７０】
図１の分岐予測装置１の管理部１２は、比較部１６、更新信号形成部１７、比較部１８を備える。また、分岐予測装置１の分岐予測部１１は、セレクタ１９を備える。
【００７１】
分岐予測装置１の管理部１２が、分岐制御装置８から、演算器７での演算が完了した分岐命令アドレスａ３１と演算が完了した分岐先アドレスａ３２とを受信し、受信した分岐命令アドレスａ３１と分岐先アドレスａ３２とを、第１の対応情報として、シングルループエントリ１３に登録する（＃３１）。なお、分岐命令アドレスａ３１及び分岐先アドレスａ３２は、処理＃２１における分岐命令アドレスａ２１及び分岐先アドレスａ２２と同一のアドレスである。
【００７２】
分岐予測装置１の比較部１８が、カウンタ１５のカウント値と閾値とを比較し、カウント値が閾値を超えているか否かを判断する。比較部１８で、カウント値が閾値を超えている場合には、管理部１２が、演算器７で演算される命令列がループしていると判断する。
【００７３】
演算器７で演算される命令列がループしている場合、管理部１２が、ブランチヒストリテーブル１４へのクロックの供給を停止し（＃３２）、これにより、分岐予測機構の動作モードを通常動作モードから低消費電力モードに切り替える。分岐予測機構の動作モードが低消費電力モードに切り替わった場合、管理部１２が、セレクタ１９に対して、シングルループエントリ１３の検索の結果出力される分岐先アドレスａ３３を選択するように指示する（＃３３）。
【００７４】
比較部１８が、カウント値が閾値を超えてない場合には、管理部１２が、演算器７で演算される命令列がループしていないと判断して、通常動作モードを続行する。即ち、管理部１２が、セレクタ１９に対して、ブランチヒストリテーブル１４の検索の結果出力される分岐先アドレスを選択するように指示する（＃３３）。
【００７５】
セレクタ１９が、管理部１２から指示された分岐先アドレスを選択する。分岐予測部１１が、選択された分岐先アドレスを、予測した分岐先アドレスａ３４として、命令取得制御装置３に対して送信する（＃３９）。
【００７６】
また、管理部１２が、分岐制御装置８から演算が完了した分岐命令アドレスａ３１を受信した場合、比較部１６が、受信された分岐命令アドレスａ３１とシングルループエントリ１３の第１の対応情報における分岐命令アドレスα１とを比較する（＃３４）。
【００７７】
受信した分岐命令アドレスａ３１と第１の対応情報における分岐命令アドレスα１とが一致する場合には、比較部１６が、比較結果一致信号Ｓ３１を出力する。比較結果一致信号Ｓ３１は、分岐命令アドレスａ３１と分岐命令アドレスα１とが一致することを示す信号である。管理部１２が、比較結果一致信号Ｓ３１に基づいて、カウンタ１５のカウント値をインクリメントする（＃３５）。
【００７８】
分岐命令アドレスａ３１と分岐命令アドレスα１とが異なる場合には、更新信号形成部１７が、比較結果一致信号Ｓ３１を反転させて、更新信号Ｓ３２を形成する。更新信号Ｓ３２は、シングルループエントリ１３の第１の対応情報を更新することを指示し、カウンタ１５をクリアすることを指示する信号である。
【００７９】
管理部１２が、更新信号形成部１７が形成した更新信号Ｓ３２に基づいて、分岐先アドレスａ３１と分岐先アドレスａ３２とを用いて、シングルループエントリ１３の第１の対応情報を更新する（＃３６）。また、管理部１２が、更新信号Ｓ３２に基づいて、カウンタ１５をクリアする（＃３７）。
【００８０】
分岐予測装置１の分岐予測部１１は、分岐予測機構の動作モードが低消費電力モードに切り替わった場合、以下に示す分岐予測処理を実行する。
【００８１】
分岐予測部１１は、命令取得制御装置３から命令フェッチアドレスを取得し、取得した命令フェッチアドレスをキーとして、シングルループエントリ１３を検索する。分岐予測部１１が、命令フェッチアドレスとシングルループエントリ１３に格納されている第１の対応情報が示す分岐命令アドレスα１とが一致する場合には、分岐予測部１１は、命令フェッチアドレスα１から読出される命令が分岐命令であり、かつ、その分岐命令については分岐が成立すると予測する。分岐予測部１１が、一致した分岐命令アドレスα１に対応する分岐先アドレスβ１を、予測した分岐先アドレスａ３３として、セレクタ１９に対して出力する（＃３８）。
【００８２】
前述したように、低消費電力モードにおいては、セレクタ１９が、管理部１２の指示に従って、分岐先アドレスａ３３を選択する。そして、分岐予測部１１が、選択された分岐先アドレスを、予測した分岐先アドレスａ３４として、命令取得制御装置３に対して送信する（＃３９）。
【００８３】
図３に示す処理においては、演算器７で演算される命令列がループしている場合には、シングルループエントリ１３を用いて予測された分岐先アドレスが選択される。一方、命令列がループしていない場合には、ブランチヒストリテーブル１４を用いて予測された分岐先アドレスが選択される。以上の処理により、選択された分岐先アドレスが、命令取得制御装置３による命令フェッチに使用される。これにより、命令列のループの実行中は、分岐予測機構の消費電力を低減することができる。
【００８４】
図４は、分岐制御装置の処理を説明する図である。
【００８５】
演算器７が、命令フェッチアドレスａ４４から読出される命令が分岐命令である場合には、その分岐命令の分岐条件と分岐先アドレスとを演算し、演算結果を分岐制御装置８に対して送信する。例えば、命令発行制御装置５が発行した分岐命令について、分岐成立条件が、レジスタＡの値とレジスタＢの値が等しいことである場合、演算器７が備える比較部７１が、レジスタＡの値とレジスタＢの値とを比較し（＃４１）、比較結果を分岐制御装置８に対して送信する。
【００８６】
分岐制御装置８が、演算器７から受信した演算結果と分岐成立条件とを比較して、両者が一致するか否かを判断する。分岐制御装置８が、演算器７から受信した演算結果と分岐成立条件とが一致する場合、分岐制御装置８は、分岐命令について分岐が成立すると判断する（＃４２）。
【００８７】
分岐制御装置８が、演算器７から受信した演算結果と分岐成立条件とが一致しない場合、分岐制御装置８は、分岐命令について分岐成立しないと判断する。具体的には、分岐制御装置８は、分岐命令について分岐が成立するという判断結果をＡＮＤ回路８４に入力する（＃４３）。なお、図４の例において、ＡＮＤ回路８４は反転信号を入力とする論理の回路である。
【００８８】
分岐制御装置８は、分岐命令について分岐が成立するか否かについての判断結果を、分岐予測装置１の管理部１２に対して送信する。具体的には、分岐制御装置８は、分岐命令について分岐が成立するという判断結果を、分岐予測装置１に対して送信して、分岐予測装置１のＡＮＤ回路１２１に入力する（＃４４）。
【００８９】
また、分岐制御装置８は、分岐予測装置１から分岐予測処理の結果を受信する。具体的には、分岐制御装置８は、分岐予測装置１の分岐予測部１１から、分岐が成立するか否かについて、予測と、分岐予測部１１が予測した分岐先アドレスａ４２とを受信する。分岐制御装置８は、図４に示す比較部８１、ＡＮＤ回路８２、ＡＮＤ回路８４、ＯＲ回路８３、インバータ回路８５を用いて、分岐命令について分岐が成立するか否かを判断する。この判断処理は、演算器７から受信した演算結果と分岐予測装置１から受信した分岐予測処理の結果とに基づいて、実行される。この判断処理は、以下の第１のケースから第３のケースのように、実行される。
【００９０】
第１のケースは、分岐予測装置１において分岐が成立すると予測され（＃４５）、分岐制御装置８において分岐命令が分岐成立であると判断され（＃４２）、比較部８１において、演算完了した分岐先アドレスａ４１と分岐予測装置１が予測した分岐先アドレスａ４２とが一致する場合（＃４６）である。この場合、分岐制御装置８が、分岐予測が成功したと判断する（＃４７）。具体的には、分岐予測装置１の分岐が成立するという予測結果と、分岐制御装置８の分岐命令が分岐成立であるという判断結果と、比較部８１の判断結果とが、ＡＮＤ回路８２に入力される。これに応じて、ＯＲ回路８３が、分岐予測が成功したことを示す情報を出力する。分岐制御装置８は、ＯＲ回路８３が出力した情報に基づいて、分岐予測が成功したと判断する。
【００９１】
第２のケースは、分岐予測装置１において分岐が不成立と予測された（＃４８）分岐命令について、分岐制御装置８において分岐が成立しないと判断された場合（＃４３）である。この場合、分岐制御装置８は、分岐予測が成功したと判断する（＃４７）。具体的には、分岐予測装置１による分岐が成立するという予測結果の反転信号（換言すれば、分岐不成立の予測）と、分岐制御装置８による分岐命令が分岐成立するという判断結果の反転信号（換言すれば、分岐不成立の判断）が、ＡＮＤ回路８４に入力される。これに応じて、ＯＲ回路８３が、分岐予測が成功したことを示す情報を出力する。分岐制御装置８は、ＯＲ回路８３が出力した情報に基づいて、分岐予測が成功したと判断する。
【００９２】
第３のケースは、第１のケース１又は第２のケース２以外の場合である。この場合、インバータ回路８５が、ＯＲ回路８３の出力を反転させて、分岐予測が失敗したことを示す情報を出力する。これに応じて、分岐制御装置８が、インバータ回路８５が出力した情報に基づいて、分岐予測が失敗したと判断する（＃４９）。
【００９３】
分岐制御装置８において、分岐予測が成功した場合には、先行して実行した命令列が正しかったことを意味する。従って、この場合には、命令取得制御装置３は、そのまま処理を続行する。一方、分岐制御装置８において、分岐予測が失敗した場合には、先行して実行した命令列が誤っていたことを意味する。従って、この場合には、分岐制御装置８は、命令取得制御装置３に対して、再命令フェッチ要求を送信する（＃４１０）。命令取得制御装置３は、分岐制御装置８から再命令フェッチ要求を受信した場合、先行してフェッチした命令の実行を全てキャンセルして、正しい命令アドレスの命令を、メモリ２から再度フェッチする。
【００９４】
命令取得制御装置３が備えるセレクタ３３は、分岐制御装置８において、分岐予測が失敗し（＃４９）、かつ、分岐が成立した場合には（＃４２）、演算器７の演算の結果得られた分岐先アドレスａ４１を、再命令フェッチのアドレスａ４３として選択する（＃４１１）。
【００９５】
セレクタ３３は、分岐制御装置８において、分岐予測が失敗し（＃４９）、かつ、分岐が不成立である場合には、演算が完了した分岐命令の命令アドレスａ４４の次の命令アドレスを、再命令フェッチのアドレスａ４３として選択する（＃４１１）。具体的には、命令取得制御装置３が備えるアドレス形成部３２が、演算が完了した分岐命令の命令アドレスａ４４に例えば所定値αを加えることにより、演算が完了した分岐命令の命令アドレスａ４４の次の命令アドレスを形成する。そして、セレクタ３３が、アドレス形成部３２によって形成された命令アドレスを、再命令フェッチのアドレスａ４３として選択する（＃４１１）。
【００９６】
次に、分岐予測装置１におけるブランチヒストリテーブル１４又はシングルループエントリ１３への対応情報の登録又は更新について説明する。
【００９７】
分岐予測装置１が備える管理部１２は、ＡＮＤ回路１２１、ＡＮＤ回路１２２、比較部１２３を備える。分岐予測装置１は、ＡＮＤ回路１２１、ＡＮＤ回路１２２、比較部１２３を用いて、ブランチヒストリテーブル１４又はシングルループエントリ１３へ対応情報を登録し、又は、登録された対応情報を更新する。
【００９８】
分岐制御装置８において、分岐予測が失敗し（＃４９）、かつ、分岐が成立する場合（＃４２）、分岐予測が失敗したという判断結果と、分岐が成立するという判断結果とがＡＮＤ回路１２１に入力される（＃４１２、＃４４）。ＡＮＤ回路１２１が、ブランチヒストリテーブル登録信号Ｓ４１を出力する。ブランチヒストリテーブル登録信号Ｓ４１は、ブランチヒストリテーブル１４への対応情報の登録を指示する制御信号である。分岐予測装置１の管理部１２が、ブランチヒストリテーブル登録信号Ｓ４１に基づいて、ブランチヒストリテーブル１４に、分岐が成立すると判断された命令の分岐先アドレスを含む対応情報を、新たに登録する。
【００９９】
分岐制御装置８において、分岐予測が失敗し、かつ、分岐が不成立である場合には、分岐予測装置１の管理部１２は、ブランチヒストリテーブル１４のエントリの更新又は削除を行うための所定の条件が満たされているか否かを判断する。所定の条件は、例えばそのエントリについて分岐予測が失敗した回数が予め定められた回数以上であることとされる。管理部１２は、ブランチヒストリテーブル１４のエントリの更新や削除を行うための所定の条件が満たされている場合には、ブランチヒストリテーブル１４のエントリの更新、削除を行う。
【０１００】
また、分岐制御装置８で分岐成立すると判断した場合（＃４２）、該判断結果がＡＮＤ回路１２２に入力される（＃４４）。比較部１２３が、演算が完了した分岐命令の命令アドレスａ４４と、シングルループエントリ１３の第１の対応情報が示す分岐命令アドレスとを比較する（＃４１３）。比較部１２３が、命令フェッチアドレスａ４４と第１の対応情報が示す分岐命令アドレスとが一致しないことを示す情報を、ＡＮＤ回路１２２に対して出力する。ＡＮＤ回路１２２が、分岐制御装置８による分岐が成立するという判断結果と、比較部１２３の出力結果とに基づいて、シングルループエントリ更新信号Ｓ４２を出力する。シングルループエントリ更新信号Ｓ４２は、シングルループエントリ１３の第１の対応情報を更新することを指示する制御信号である。管理部１２は、シングルループエントリ更新信号Ｓ４２に基づいて、シングルループエントリ１３の第１の対応情報を、演算が完了した分岐命令の命令アドレスと、該命令アドレスに対応する分岐先アドレスとを用いて更新する。
【０１０１】
図５は、分岐予測の成功又は失敗に応じた分岐予測処理動作の状態の遷移を説明する図である。
【０１０２】
演算器７が分岐命令の演算を完了する（＃５１）。分岐制御装置８が、分岐予測が成功し（＃５２）、かつ、分岐成立であると判断した場合（＃５３）、分岐予測装置１の管理部１２が、分岐が成立した分岐命令アドレスと、シングルループエントリ１３に登録された分岐命令アドレスとを比較して、両者が一致するか否かを判断する（＃５４）。
【０１０３】
分岐が成立した分岐命令アドレスとシングルループエントリ１３に登録された分岐命令アドレスとが一致しない場合には（＃５４  Ｎｏ）、管理部１２は、分岐が成立した分岐命令アドレスでシングルループエントリ１３の第１の対応情報を更新し、カウンタ１５をクリアする（＃５１５）。これは、分岐が成立した分岐命令アドレスとシングルループエントリ１３に登録された分岐命令アドレスとが一致しないことは、演算器７で演算される命令列が、シングルループエントリ１３に登録されている分岐命令によるループから外れて、例えば、新しい分岐命令によるループに入ったことを意味するからである。
【０１０４】
分岐が成立した命令アドレスと、シングルループエントリ１３に登録された分岐命令アドレスとが一致する場合には（＃５４  Ｙｅｓ）、管理部１２が、カウンタ１５のカウント値をインクリメントする（＃５５）。
【０１０５】
分岐予測装置１の管理部１２が、カウンタ１５のカウント値が閾値を超えたか否かを判断する（＃５６）。カウンタ１５のカウント値が閾値を超えていない場合には（＃５６  Ｎｏ）、管理部１２は、現在の動作モードを継続する（＃５１０）。カウンタ１５のカウント値が閾値を超えた場合には（＃５６  Ｙｅｓ）、管理部１２が、分岐予測機構の動作モードが通常動作モードであるか否かを判断する（＃５７）。分岐予測機構の動作モードが通常動作モードでない場合（＃５７  Ｎｏ）、すなわち低消費電力モードである場合には、管理部１２は、現在の動作モードを継続する（＃５１０）。
【０１０６】
分岐予測機構の動作モードが通常動作モードである場合（＃５７  Ｙｅｓ）、管理部１２が、ブランチヒストリテーブル１４に供給しているクロックを停止する（＃５８）。これにより、分岐予測機構の動作モードが通常動作モードから低消費電力モードに切り替わり、分岐予測装置１の分岐予測部１１が、ブランチヒストリテーブル１４ではなく、シングルループエントリ１３を用いて分岐予測処理を行う（＃５９）。
【０１０７】
分岐制御装置８が、分岐予測が成功し（＃５２）、かつ、分岐が不成立であると判断した場合（＃５１１）、管理部１２は、現在の動作モードを継続する（＃５１２）。
【０１０８】
分岐制御装置８が、分岐予測が失敗したと判断した場合には、分岐予測装置１の管理部１２が、以下に説明するように、カウンタ１５をクリアする。これは、分岐予測が失敗したことは、演算器７で演算される命令列が、シングルループエントリ１３に登録されている分岐命令によるループから外れて、例えば、新しい分岐命令によるループに入ったことを意味するからである。
【０１０９】
具体的には、分岐制御装置８が、分岐予測が失敗し（＃５１３）、かつ、分岐成立であると判断した場合（＃５１４）、管理部１２が、分岐が成立した分岐命令アドレスでシングルループエントリ１３の第１の対応情報を更新して、カウンタ１５をクリアし（＃５１５）、後述する＃５１６の処理を実行する。分岐制御装置８が、分岐予測が失敗し（＃５１３）、かつ、分岐が不成立であると判断した場合（＃５１７）、管理部１２が、カウンタ１５をクリアする（＃５１８）。
【０１１０】
この後、管理部１２が、現在の動作モードが通常動作モードであるか否かを判断する（＃５１６）。現在の動作モードが通常動作モードである場合（＃５１６  Ｙｅｓ）、管理部１２は、現在の動作モードを継続する（＃５１０）。現在の動作モードが通常動作モードでない場合（＃５１６  Ｎｏ）、すなわち低消費電力モードである場合には、管理部１２は、ブランチヒストリテーブル１４へのクロックの供給の停止を解除する（＃５１９）。これにより、分岐予測機構の動作モードが低消費電力モードから通常動作モードに切り替わり、分岐予測装置１の分岐予測部１１が、ブランチヒストリテーブル１４を用いて分岐予測処理を行う（＃５２０）。
【符号の説明】
【０１１１】
１  分岐予測装置
２  メモリ
３  命令取得制御装置
４  命令解析装置
５  命令発行制御装置
６  命令完了制御装置
７  演算器
８  分岐制御装置
１１  分岐予測部
１２  管理部
１３  シングルループエントリ
１４  ブランチヒストリテーブル
１５  カウンタ
【図１】
2010277529.tif 000003
【図２】
2010277529.tif 000004
【図３】
2010277529.tif 000005
【図４】
2010277529.tif 000006
【図５】
2010277529.tif 000007