JP5423156B2 - 情報処理装置及び分岐予測方法 - Google Patents

情報処理装置及び分岐予測方法 Download PDF

Info

Publication number
JP5423156B2
JP5423156B2 JP2009132297A JP2009132297A JP5423156B2 JP 5423156 B2 JP5423156 B2 JP 5423156B2 JP 2009132297 A JP2009132297 A JP 2009132297A JP 2009132297 A JP2009132297 A JP 2009132297A JP 5423156 B2 JP5423156 B2 JP 5423156B2
Authority
JP
Japan
Prior art keywords
branch
instruction
address
correspondence information
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009132297A
Other languages
English (en)
Other versions
JP2010277529A (ja
Inventor
崇志 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009132297A priority Critical patent/JP5423156B2/ja
Priority to EP10162770A priority patent/EP2261797B1/en
Priority to US12/780,131 priority patent/US8595474B2/en
Priority to KR1020100049822A priority patent/KR101126001B1/ko
Priority to CN2010101939930A priority patent/CN101901133B/zh
Publication of JP2010277529A publication Critical patent/JP2010277529A/ja
Application granted granted Critical
Publication of JP5423156B2 publication Critical patent/JP5423156B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3246Power saving characterised by the action undertaken by software initiated power-off
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)

Description

本発明は、分岐予測を行う情報処理装置及び分岐予測方法に関する。
パイプライン制御方式を実行するプロセッサは、メモリから命令実行部への命令列の読出し(命令フェッチ)を効率的に行うために、分岐を予測する機構である分岐予測機構を備える。特に、アウトオブオーダ制御を実行するプロセッサにおいては、命令実行に大きく先行して命令フェッチが行われることがあるので、分岐予測機構の重要性が高い。
例えば、ブランチ・ヒストリのエントリを、命令アドレスに対応付けられて、命令フェッチ長と命令語最小単位長とから規定される個数のブロックで構成する命令実行処理装置が提案されている。
特開平6−089173号公報 特開2004−38337号公報
分岐予測機構においては、分岐予測処理の際に消費される消費電力をできるだけ小さくする必要がある。
本発明は、分岐予測処理時における消費電力を低減することができる情報処理装置の提供を目的とする。
開示される情報処理装置は、第1の分岐履歴記憶部と、第2の分岐履歴記憶部と、分岐予測制御部とを含む分岐予測機構を備える。第1の分岐履歴記憶部は、演算の実行が完了した命令であって、分岐が成立した最新の1個の分岐命令について、その命令アドレスと分岐先アドレスとの対応情報である第1の対応情報を格納する、1個の第1の対応情報を格納可能な記憶部である。第2の分岐履歴記憶部は、演算の実行が完了した命令であって、分岐が成立した最新の分岐命令を含む過去の複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応情報である第2の対応情報を格納する、複数の第2の対応情報を格納可能な記憶部である。分岐予測制御部は、メモリからフェッチされる命令の命令アドレスを用いて、第1の分岐履歴記憶部の第1の対応情報又は第2の分岐履歴記憶部の第2の対応情報を検索した結果に基づいて分岐予測を行う。特に、分岐予測制御部は、第1の分岐履歴記憶部に登録された分岐命令によって第1の分岐履歴記憶部に登録された分岐命令を含む命令列がループしている場合には、第2の分岐履歴記憶部へのクロックの供給を停止し、第1の分岐履歴記憶部の第1の対応情報を検索した結果に基づいて分岐予測を行う。
開示される情報処理装置によれば、分岐予測処理において、演算される命令列がループする場合には、消費電力を低減することができる。
情報処理装置の構成例を示す図である。 分岐予測装置が通常動作モードにおいて行う処理を説明する図である。 分岐予測装置における、通常動作モードから低消費電力モードへの切り替え処理を説明する図である。 分岐制御装置の処理を説明する図である。 分岐予測の成功又は失敗に応じた分岐予測処理動作の状態の遷移を説明する図である。
プロセッサの消費電力を低減するための方法として、一定時間命令実行に使用されない演算資源に対して、命令を実行しない時間帯について、クロックの供給を停止することが考えられる。
本発明者は、ブランチ・ヒストリ(以下、ブランチヒストリテーブルという)のエントリを検索することによりフェッチした命令が分岐命令か否かを予測する分岐予測機構について検討した。この分岐予測機構は、エントリの個数が多いほど予測の精度が増す。このため、ブランチヒストリテーブルとしては、大容量のデータを保持することができるRAM(Random Access Memory)を用いることが考えられる。そして、大容量のRAMのような演算資源へのクロックを停止すれば、消費電力を大きく低減することができる。
しかし、分岐予測機構において、ブランチヒストリテーブルは、命令フェッチの度に参照される。命令フェッチは命令の実行に先行して頻繁に行われる。従って、ブランチヒストリテーブルが使用されない時間は、殆ど存在しない。換言すれば、ブランチヒストリテーブルは、データの更新時だけでなく、データの参照時にも参照されるため、クロックの供給を停止することは難しい。
一方、プログラム内において頻繁に出現する構造として、複数の命令で1つの命令列を構成し、当該命令列又はその一部を繰り返し実行する構造がある。この明細書では、命令列又はその一部が繰り返し実行されることを「命令がループしている」又は「命令がループに入る」と言い、繰り返し実行される複数の命令を「ループ」と言う。また、一旦ループした命令列が繰り返し実行されなくなることを「ループから外れる」と言う。
本発明者は、ループに含まれる分岐命令を検出して格納した複数の命令バッファを用いて、当該ループに含まれる複数の命令を繰り返し実行することにより、命令バッファから直接命令を供給して実行できるようにした命令フェッチ制御装置について検討した。この検討対象の命令フェッチ制御装置においては、命令バッファには既に命令が格納されている。従って、新たにメモリから命令フェッチをする必要がない。この結果、命令バッファに格納された命令を、直接実行することができる。これにより、この検討対象の命令フェッチ制御装置においては、ブランチヒストリテーブルを参照する必要がなくなる。従って、命令バッファを用いている期間は、ブランチヒストリテーブルへのクロックの供給を停止することができると考えられる。
しかし、この検討対象の命令フェッチ装置によれば、ループに含まれる命令の個数が予め用意された複数の命令バッファの個数を超えると、命令バッファのみを用いてループを実現することができない。換言すれば、ブランチヒストリテーブルへのクロックの供給を停止することができるのは、予め用意された複数の命令バッファに格納することができる長さのループについてのみである。このため、電力削減の機会が限定される。
以下に開示される図1の情報処理装置によれば、分岐予測処理時における消費電力を、命令列におけるループの長さとは無関係に、低減することができる。
図1は、情報処理装置の構成の一例を示す図である。
図1の情報処理装置は、分岐予測装置1、メモリ2、命令取得制御装置3、命令解析装置4、命令発行制御装置5、命令完了制御装置6、演算器7、分岐制御装置8を備える。図1の情報処理装置は、例えば、スーパースカラ方式かつアウトオブオーダ制御方式により演算を実行するコンピュータである。このために、図1の情報処理装置は、分岐予測機構を備える。分岐予測機構は、分岐予測装置1と命令取得制御装置3と分岐制御装置8とを備える。
分岐予測装置1は、分岐予測処理を実行する。分岐予測処理は、命令取得制御装置3がメモリ2からフェッチする命令が分岐するか否かを予測する処理である。分岐予測装置1は、分岐予測部11、管理部12、シングルループエントリ13、ブランチヒストリテーブル14、カウンタ15を備える。分岐予測部11は、シングルループエントリ13又はブランチヒストリテーブル14を用いて、分岐予測処理を実行し、分岐予測処理の結果を分岐制御装置8に対して送信する。具体的には、分岐予測部11は、命令取得制御装置3から、命令フェッチアドレスを取得し、取得した命令フェッチアドレスでシングルループエントリ13又はブランチヒストリテーブル14を検索して、分岐予測処理を実行する。具体的には、分岐予測部11は、メモリ2からフェッチする命令の命令アドレスを用いて、シングルループエントリ13の第1の対応情報又はブランチヒストリテーブル14の第2の対応情報を検索した結果に基づいて、分岐予測を行う。命令フェッチアドレスは、命令取得制御装置3がメモリからフェッチする命令のアドレスである。
シングルループエントリ13は、1個の第1の対応情報を格納する分岐履歴記憶部である。第1の対応情報は、分岐が成立した最新の分岐命令について、その命令アドレスと分岐先アドレスとの対応を示す対応情報である。
シングルループエントリ13には、分岐命令の命令アドレスと分岐先アドレスとの対応情報が1個のみ格納される。換言すれば、1個のエントリのみがシングルループエントリ13に存在する。
シングルループエントリ13としては、例えばフリップフロップ回路が用いられる。具体的には、1個のエントリのビット幅に等しい個数のフリップフロップ回路が用意される。シングルループエントリ13は、エントリが1個であるので、アドレスデコーダ等の周辺回路を持たない。従って、シングルループエントリ13は、エントリが複数であって周辺回路を備えるブランチヒストリテーブル14と比べて、消費電力が極めて小さい。
ブランチヒストリテーブル14は、複数の第2の対応情報を格納する分岐履歴記憶部である。第2の対応情報は、過去に分岐が成立した複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応を示す対応情報である。
ブランチヒストリテーブル14には、分岐が成立した分岐命令の命令アドレスと分岐先アドレス対応情報の複数の履歴を格納する。換言すれば、シングルループエントリ13に格納する第1の対応情報を含む複数のエントリがブランチヒストリテーブル14に存在する。
ブランチヒストリテーブル14としては、例えばSRAM(Static Random Access Memory)が用いられる。従って、ブランチヒストリテーブル14は、複数のエントリを格納するので、エントリが1個であるシングルループエントリ13よりも回路規模が大きい。また、ブランチヒストリテーブル14は、書込み回路、読出し回路、アドレスデコーダ等の周辺回路を備える。このため、ブランチヒストリテーブル14の消費電力は、エントリ数に依存するが、シングルループエントリ13の消費電力よりも、例えば数百〜数万倍大きい。
通常動作モードにおいては、分岐予測部11は、ブランチヒストリテーブル14を検索する。通常動作モードは、ブランチヒストリテーブル14にクロックが供給されている状態における分岐予測機構の動作モードである。分岐予測部11は、管理部12から、動作モードが低消費電力モードから通常動作モードに切り替わったことを示す通知を受信して、通常動作モードにおける処理を実行する。
低消費電力モードにおいては、分岐予測部11は、シングルループエントリ13を検索する。低消費電力モードは、ブランチヒストリテーブル14にクロックが供給されていない状態における分岐予測機構の動作モードである。従って、低消費電力モードにおいて、ブランチヒストリテーブル14は停止状態にある。分岐予測部11は、管理部12から、動作モードが通常動作モードから低消費電力モードに切り替わったことを示す通知を受信して、低消費電力モードにおける処理を実行する。
具体的には、通常動作モードでは、分岐予測部11は、命令取得制御装置3から取得した命令フェッチアドレスとブランチヒストリテーブル14の第2の対応情報に含まれる分岐命令アドレスとを比較して、両者が一致するエントリが存在するか否かを判断する。
この後、命令フェッチアドレスと第2の対応情報に含まれる分岐命令アドレスとが一致するエントリが存在する場合、分岐予測部11は、命令フェッチアドレスから読出される命令が分岐命令であり、かつ、当該分岐命令について分岐が成立すると予測する。分岐予測部11は、分岐が成立すると予測した場合、アドレスが一致したエントリの第2の対応情報に含まれる、分岐命令アドレスと対応付けられた分岐先アドレスを特定する。換言すれば、分岐予測部11は、ブランチヒストリテーブル14から対応する分岐先アドレスを読出す。
この後、分岐予測部11は、分岐が成立するという予測と、特定した分岐先アドレスとを、分岐予測処理の結果として、分岐制御装置8に対して送信する。また、分岐予測部11は、所定の制御信号と、特定した分岐先アドレスとを、分岐予測処理の結果として、命令取得制御装置3に対して送信する。命令取得制御装置3は、分岐予測部11から送信された分岐先アドレスを受信し、受信した分岐先アドレスを次にフェッチする命令アドレスとする。
命令フェッチアドレスが第2の対応情報に含まれる分岐命令アドレスと一致するエントリが存在しない場合、分岐予測部11は、命令フェッチアドレスから読出される命令が分岐命令ではないか、又は、命令フェッチアドレスから読出される命令が分岐命令であるが、当該分岐命令が分岐成立しないと予測する。分岐予測部11は、この予測を、分岐予測処理の結果として、分岐制御装置8に対して送信する。
低消費電力モードでは、分岐予測部11は、命令フェッチアドレスとシングルループエントリ13の第1の対応情報に含まれる分岐命令アドレスとを比較して、両者が一致するか否かを判断する。
この後、命令フェッチアドレスと第1の対応情報に含まれる分岐命令アドレスとが一致する場合、分岐予測部11は、分岐が成立すると予測する。分岐予測部11は、分岐が成立すると予測した場合、第1の対応情報に含まれる、当該分岐命令アドレスと対応付けられた分岐先アドレスを特定する。換言すれば、分岐予測部11は、シングルループエントリ13から分岐先アドレスを読出す。
この後、分岐予測部11は、分岐が成立するという予測と、特定した分岐先アドレスとを、分岐予測処理の結果として、分岐制御装置8に対して送信する。また、分岐予測部11は、所定の制御信号と、特定した分岐先アドレスとを、分岐予測処理の結果として、命令取得制御装置3に対して送信する。命令取得制御装置3は、分岐予測部11から送信された分岐先アドレスを受信し、受信した分岐先アドレスを次にフェッチする命令アドレスとする。
命令フェッチアドレスが第1の対応情報に含まれる分岐命令アドレスと一致しない場合、分岐予測部11は、命令フェッチアドレスから読出される命令が分岐命令でないか、又は、命令フェッチアドレスから読出される命令が分岐命令であるが分岐が成立しないと予測する。分岐予測部11は、この予測を、分岐予測処理の結果として、分岐制御装置8に対して送信する。
管理部12は、通常動作モードにおいては、ブランチヒストリテーブル14に対してクロックを供給し、かつ、シングルループエントリ13に対してクロックを供給する。ブランチヒストリテーブル14及びシングルループエントリ13において、供給されたクロックは、動作クロックとして用いられる。
管理部12は、低消費電力モードにおいては、シングルループエントリ13に対してクロックを供給し、ブランチヒストリテーブル14に対してはクロックの供給を停止する。低消費電力モードにおいては、シングルループエントリ13がクロックを供給されて動作し、第1の対応情報が繰り返し用いられるのみである。従って、ブランチヒストリテーブル14は参照されず、かつ、ブランチヒストリテーブル14に対する第2の対応情報の追加は不要である。従って、ブランチヒストリテーブル14に対するクロックの供給を停止しても、分岐予測処理には何ら支障はない。
また、管理部12はカウンタ15を備え、そのカウント値の登録処理及び更新処理を行う。具体的には、管理部12は、演算器7による演算が完了した分岐命令の命令アドレスと、シングルループエントリ13の第1の対応情報に含まれる分岐命令アドレスとを比較する。これにより、管理部12は、演算が完了した分岐命令の命令アドレスと第1の対応情報に含まれる分岐命令アドレスとが一致する度に、カウンタ15のカウント値をインクリメントする。
この後、管理部12は、カウンタ15のカウント値が閾値を超えるか否かを判断する。閾値は、予め設定され、例えば経験的に定まる。これにより、分岐予測機構の動作モードを通常動作モードから低消費電力モードに切り替えるタイミングを定めることができる。
カウンタ15のカウント値が閾値を超えた場合、管理部12は、命令列がループしていると判断する。演算される命令列が閾値を超える回数ループしている場合、管理部12は、ブランチヒストリテーブル14へのクロックの供給を停止する。これにより、分岐予測機構の動作モードが通常動作モードから低消費電力モードに切り替えられる。管理部12は、動作モードが通常動作モードから低消費電力モードに切り替えられたことを分岐予測部11に通知する。
なお、命令列が閾値を超える回数ループしていなければ、ブランチヒストリテーブル14へのクロックの供給は停止されない。換言すれば、命令列が閾値を超える回数ループしている場合のみ、ブランチヒストリテーブル14へのクロックの供給という観点から見て命令列がループしていると判断される。
動作モードが通常動作モードから低消費電力モードに切り替えられた場合、分岐予測部11は、ブランチヒストリテーブル14の第2の対応情報を検索せずに、シングルループエントリ13の第1の対応情報の検索結果に基づいて分岐予測を行う。換言すれば、管理部12及び分岐予測部11は、分岐予測を行う制御部である。
更に、管理部12は、低消費電力モードの場合、換言すれば、ブランチヒストリテーブル14へのクロックの供給が停止されている場合において、演算が完了した分岐命令の命令アドレスと、シングルループエントリ13の第1の対応情報に含まれる分岐命令アドレスとを比較する。アドレスが一致しない場合、演算される命令列がループから外れたと判断する。管理部12は、命令列がループから外れた場合には、ブランチヒストリテーブル14へのクロックの供給の停止を解除する。これにより、分岐予測機構の動作モードが、低消費電力モードから通常動作モードに切り替えられる。管理部12は、命令列がループから外れた場合には、シングルループエントリ13の第1の対応情報を更新し、カウンタ15のカウンタ値をクリアする。管理部12は、動作モードが低消費電力モードから通常動作モードに切り替えられたことを分岐予測部11に通知する。
なお、1個の命令列が複数回ループする場合がある。この場合、例えば、命令列が最初のループから外れた時点で、シングルループエントリ13の第1の対応情報が更新され(無効とされ)、カウンタ15のカウンタ値がクリアされる。この後、命令列が次のループを開始すると、シングルループエントリ13の第1の対応情報が参照され、カウンタ15のカウンタ値がインクリメントされる。
更に、管理部12は、分岐制御装置8から、分岐予測が成功したか失敗したかを示す情報と、分岐が成立したか否かついての判断結果とを受信する。具体的には、管理部12は、分岐制御装置8から、分岐が成功したことを示す情報として、演算が完了した分岐命令アドレスと、演算が完了した分岐先アドレスとを受信する。管理部12は、受信した分岐命令アドレスと分岐先アドレスとを対応付けた上で、シングルループエントリ13の第1の対応情報として格納し、かつ、ブランチヒストリテーブル14の第2の対応情報として格納する。また、管理部12は、分岐予測が成功したか失敗したかを示す情報と、分岐が成立したか否かついての判断結果とに基づいて、シングルループエントリ13の第1の対応情報又はブランチヒストリテーブル14の第2の対応情報の更新処理を行う。
なお、管理部12は、分岐が失敗した場合には、命令列がループしていないと判断するようにしても良い。また、管理部12が、分岐が成功し、かつ、シングルループエントリ13の第1の対応情報に含まれる分岐先アドレスが演算が完了した分岐命令の分岐先アドレスと一致しない場合には、命令列がループしていないと判断するようにしても良い。管理部12は、命令列がループしていないと判断した場合には、カウンタ15のカウンタ値をクリアする。
カウンタ15は、演算が完了した命令の命令アドレスとシングルループエントリ13の第1の対応情報に含まれる分岐命令アドレスとが一致した回数をカウントする。シングルループエントリ13に格納される第1の対応情報は、カウンタ15のカウント値がインクリメントされている間、換言すれば、演算器7で演算が実行される命令列がループしている間は、更新されない。従って、シングルループエントリ13に格納される第1の対応情報は、命令列のループの長さに関係なく、1個である。
命令取得制御装置3は、メモリ2から命令をフェッチする。メモリ2は、命令及び命令実行に必要なデータが格納される記憶部である。フェッチされる命令は、演算器7で演算される命令列に含まれる複数の命令の中のいずれかの命令である。
命令取得制御装置3は、命令バッファ31と、アドレス形成部32と、セレクタ33とを備える。命令バッファ31は、フェッチされた命令を格納する。命令取得制御装置3は、フェッチする命令のアドレスを分岐予測装置1と分岐制御装置8に対して送信する。アドレス形成部32は、現在の命令フェッチアドレスに連続する命令アドレスを形成する。セレクタ33は、分岐予測装置1の分岐予測部11から分岐先アドレスを取得する。セレクタ33は、分岐予測が分岐成立であった場合は分岐予測部11から取得した分岐先アドレスを、分岐予測が分岐不成立であった場合はアドレス形成部32が形成した命令アドレスを選択する。命令取得制御装置3は、セレクタ33が選択したアドレスを、次にメモリ2からフェッチする命令アドレスとする。
なお、図4を参照して後述するように、分岐制御装置8において、演算器7による分岐命令演算の結果、命令フェッチ時の分岐予測が正しかったか否かの判断が行われる。分岐予測が失敗した場合は、予測に基づいて処理していた命令列は誤りであったことを意味するため、正しい命令列を再度メモリ2からフェッチして処理をやり直す必要がある。
アドレス形成部32は、分岐予測が失敗した場合の再命令フェッチアドレスとして、分岐予測が失敗した分岐命令演算器7による演算が完了した命令アドレスの次の命令のアドレスに連続する命令アドレスを形成する。セレクタ33は、分岐不成立の分岐予測が失敗して演算結果が分岐成立であった場合には命令演算器7の演算の結果得られた分岐先アドレスを、分岐成立の分岐予測が失敗して演算結果が分岐不成立であった場合にはアドレス形成部32により形成された命令アドレスを選択する。
命令解析装置4は、命令取得制御装置3の命令バッファ31から命令を読出し、読出した命令を解析(デコード)する。命令の解析結果は、当該命令が分岐命令であるか否かを示す情報を含む。命令解析装置4は、命令の解析結果と解析した命令とを命令発行制御装置5に送信する。
命令発行制御装置5は、解析された命令を演算器7に対して発行する(即ち、送信する)とともに、命令の解析結果を演算器7に対して送信する。また、命令発行制御装置5は、演算器7に対して発行された命令を識別する情報を、命令完了制御装置6に対して送信する。また、命令発行制御装置5は、解析された命令が分岐命令である場合には、分岐制御装置8を起動する制御信号を、分岐制御装置8に対して送信する。この制御信号を受信した分岐制御装置8は、動作を開始する。
命令発行制御装置5は、演算器7に対して発行する命令の上限数を管理する。このために、命令発行制御装置5は、演算器7に対して命令を発行する都度、演算器7に対して発行した命令の数(発行数)を+1だけインクリメントする。命令発行制御装置5は、演算器7への命令の発行数が上限数を超える場合、当該演算器7への命令を発行しない。これにより、命令発行制御装置5は、演算器7への命令の発行数が上限数を超えないようにすることができる。
命令発行制御装置5は、後述する命令完了制御措置6から、命令の実行が完了したことを示す通知を受信すると、演算器7への命令の発行数を−1だけデクリメントする。この結果、演算器7が命令発行制御装置5から命令の発行を受信することができる状態になる。
命令完了制御装置6は、演算器7から演算完了通知を受信すると、命令発行制御装置5から送信された、命令を識別する情報に基づいて、当該命令の演算が完了したか否かを判断する。命令完了制御装置6が、命令の実行が完了した場合、当該命令の実行が完了したことを命令発行制御装置5に通知する。
演算器7は、複数の命令を含む命令列について、予め定められた演算を実行する。例えば、演算器7は、命令発行制御装置5が発行した命令を受信し、受信した命令の演算の実行に必要なデータをメモリ2から読出す。演算器7は、受信した命令とメモリ2から読出したデータとに基づいて、予め定められた演算を実行する。演算器7は、命令解析装置4による解析の結果、当該命令が分岐命令であることを示す場合、その分岐条件と分岐先アドレスとを演算し、演算結果を分岐制御装置8に送信する。
分岐制御装置8は、演算器7から演算結果を受信して、演算が完了した分岐命令アドレスと、演算が完了した分岐先アドレスとを、分岐予測装置1の管理部12に対して送信する。また、分岐制御装置8は、演算器7から演算結果を受信し、演算結果と分岐予測装置1から受信した分岐予測処理の結果とに基づいて、分岐予測装置1の分岐予測処理の結果が正しいか否か、即ち、分岐予測が成功したか失敗したかを判断する。分岐制御装置8は、分岐予測が成功したか失敗したかを示す情報を分岐予測装置1の管理部12に対して送信する。
また、分岐制御装置8は、分岐予測が失敗した場合には、命令取得制御装置3に対して、再命令フェッチ要求を送信する。
図1の情報処理装置及び情報処理装置が備える各処理部の機能は、CPUとその上で実行されるプログラムにより実現される。前記プログラムは、コンピュータが読み取り可能な記録媒体、例えば半導体メモリ、ハードディスク、CD−ROM、DVD等に格納することができ、これらの記録媒体に記録して提供され、又は、通信インタフェースを介してネットワークを利用した送受信により提供される。
図2は、図1に示す分岐予測装置が通常動作モードにおいて行う処理を説明する図である。
分岐予測装置1の管理部12が、分岐制御装置8から、演算器7での演算が完了した分岐命令の命令アドレスa21と分岐先アドレスa22とを受信し、受信した分岐命令アドレスa21と分岐先アドレスa22とを、第2の対応情報として、ブランチヒストリテーブル14に登録する(#21)。管理部12は、分岐制御装置8から分岐命令アドレスa21と分岐先アドレスa22を受信する度に、受信した分岐命令アドレスa21と分岐先アドレスa22とを、新たな第2の対応情報として、ブランチヒストリテーブル14に追加する。なお、分岐予測装置1の管理部12は、図4を参照して後述するように、所定の条件下でブランチヒストリテーブル14の第2の対応情報を更新する。
また、分岐予測装置1の分岐予測部11が、命令取得制御装置3から命令フェッチアドレスa25を取得し、取得した命令フェッチアドレスa25をキーとして、ブランチヒストリテーブル14を検索する(#22)。
命令フェッチアドレスa25とブランチヒストリテーブル14の第2の対応情報に含まれる分岐命令アドレスとが一致する場合、分岐予測部11は、命令フェッチアドレスa25から読出される命令が分岐命令であり、かつ、その分岐命令については分岐が成立すると予測する。分岐予測部11が、第2の対応情報において命令フェッチアドレスa25と一致する分岐命令アドレスと対応付けられた分岐先アドレスを取得し、取得した分岐先アドレスを、予測した分岐先アドレスa23として命令取得制御装置3に対して送信する(#23)。
分岐予測部11によって分岐成立と予測された場合、セレクタ33が、分岐予測装置1から予測した分岐先アドレスa23を受信し、予測した分岐先アドレスa23を次の命令フェッチアドレスとして選択する。命令取得制御装置3は、セレクタ33が選択した命令フェッチアドレスに基づいてメモリ2から命令をフェッチし、フェッチした命令を命令バッファ31に格納する(#24)。
ブランチヒストリテーブル14を検索した結果、命令フェッチアドレスa25が第2の対応情報に含まれる分岐命令アドレスと一致しない場合には、分岐予測部11は、命令フェッチアドレスa25から読出される命令が分岐命令でない、又は、分岐命令であるが当該分岐命令についての分岐が不成立であると予測する。分岐予測部11は、現在の命令フェッチアドレスa25と連続するアドレスを次の命令フェッチアドレスとするように命令取得制御装置3のアドレス形成部32に対して指示する(#25)。従って、分岐予測部11から出力された予測結果は、命令フェッチアドレスの選択に使用される。
この指示を受信したアドレス形成部32が、現在の命令フェッチアドレスa25と連続するアドレスa24を形成してセレクタ33に対して出力する。
分岐予測部11によって分岐不成立と予測された場合、セレクタ33が、アドレス形成部32が形成したアドレスa24を、次の命令フェッチアドレスとして選択する。
図3は、図1に示す分岐予測装置における、通常動作モードから低消費電力モードへの切り替え処理を説明する図である。
図1の分岐予測装置1の管理部12は、比較部16、更新信号形成部17、比較部18を備える。また、分岐予測装置1の分岐予測部11は、セレクタ19を備える。
分岐予測装置1の管理部12が、分岐制御装置8から、演算器7での演算が完了した分岐命令アドレスa31と演算が完了した分岐先アドレスa32とを受信し、受信した分岐命令アドレスa31と分岐先アドレスa32とを、第1の対応情報として、シングルループエントリ13に登録する(#31)。なお、分岐命令アドレスa31及び分岐先アドレスa32は、処理#21における分岐命令アドレスa21及び分岐先アドレスa22と同一のアドレスである。
分岐予測装置1の比較部18が、カウンタ15のカウント値と閾値とを比較し、カウント値が閾値を超えているか否かを判断する。比較部18で、カウント値が閾値を超えている場合には、管理部12が、演算器7で演算される命令列がループしていると判断する。
演算器7で演算される命令列がループしている場合、管理部12が、ブランチヒストリテーブル14へのクロックの供給を停止し(#32)、これにより、分岐予測機構の動作モードを通常動作モードから低消費電力モードに切り替える。分岐予測機構の動作モードが低消費電力モードに切り替わった場合、管理部12が、セレクタ19に対して、シングルループエントリ13の検索の結果出力される分岐先アドレスa33を選択するように指示する(#33)。
比較部18が、カウント値が閾値を超えてない場合には、管理部12が、演算器7で演算される命令列がループしていないと判断して、通常動作モードを続行する。即ち、管理部12が、セレクタ19に対して、ブランチヒストリテーブル14の検索の結果出力される分岐先アドレスを選択するように指示する(#33)。
セレクタ19が、管理部12から指示された分岐先アドレスを選択する。分岐予測部11が、選択された分岐先アドレスを、予測した分岐先アドレスa34として、命令取得制御装置3に対して送信する(#39)。
また、管理部12が、分岐制御装置8から演算が完了した分岐命令アドレスa31を受信した場合、比較部16が、受信された分岐命令アドレスa31とシングルループエントリ13の第1の対応情報における分岐命令アドレスα1とを比較する(#34)。
受信した分岐命令アドレスa31と第1の対応情報における分岐命令アドレスα1とが一致する場合には、比較部16が、比較結果一致信号S31を出力する。比較結果一致信号S31は、分岐命令アドレスa31と分岐命令アドレスα1とが一致することを示す信号である。管理部12が、比較結果一致信号S31に基づいて、カウンタ15のカウント値をインクリメントする(#35)。
分岐命令アドレスa31と分岐命令アドレスα1とが異なる場合には、更新信号形成部17が、比較結果一致信号S31を反転させて、更新信号S32を形成する。更新信号S32は、シングルループエントリ13の第1の対応情報を更新することを指示し、カウンタ15をクリアすることを指示する信号である。
管理部12が、更新信号形成部17が形成した更新信号S32に基づいて、分岐先アドレスa31と分岐先アドレスa32とを用いて、シングルループエントリ13の第1の対応情報を更新する(#36)。また、管理部12が、更新信号S32に基づいて、カウンタ15をクリアする(#37)。
分岐予測装置1の分岐予測部11は、分岐予測機構の動作モードが低消費電力モードに切り替わった場合、以下に示す分岐予測処理を実行する。
分岐予測部11は、命令取得制御装置3から命令フェッチアドレスを取得し、取得した命令フェッチアドレスをキーとして、シングルループエントリ13を検索する。分岐予測部11が、命令フェッチアドレスとシングルループエントリ13に格納されている第1の対応情報が示す分岐命令アドレスα1とが一致する場合には、分岐予測部11は、命令フェッチアドレスα1から読出される命令が分岐命令であり、かつ、その分岐命令については分岐が成立すると予測する。分岐予測部11が、一致した分岐命令アドレスα1に対応する分岐先アドレスβ1を、予測した分岐先アドレスa33として、セレクタ19に対して出力する(#38)。
前述したように、低消費電力モードにおいては、セレクタ19が、管理部12の指示に従って、分岐先アドレスa33を選択する。そして、分岐予測部11が、選択された分岐先アドレスを、予測した分岐先アドレスa34として、命令取得制御装置3に対して送信する(#39)。
図3に示す処理においては、演算器7で演算される命令列がループしている場合には、シングルループエントリ13を用いて予測された分岐先アドレスが選択される。一方、命令列がループしていない場合には、ブランチヒストリテーブル14を用いて予測された分岐先アドレスが選択される。以上の処理により、選択された分岐先アドレスが、命令取得制御装置3による命令フェッチに使用される。これにより、命令列のループの実行中は、分岐予測機構の消費電力を低減することができる。
図4は、分岐制御装置の処理を説明する図である。
演算器7が、命令フェッチアドレスa44から読出される命令が分岐命令である場合には、その分岐命令の分岐条件と分岐先アドレスとを演算し、演算結果を分岐制御装置8に対して送信する。例えば、命令発行制御装置5が発行した分岐命令について、分岐成立条件が、レジスタAの値とレジスタBの値が等しいことである場合、演算器7が備える比較部71が、レジスタAの値とレジスタBの値とを比較し(#41)、比較結果を分岐制御装置8に対して送信する。
分岐制御装置8が、演算器7から受信した演算結果と分岐成立条件とを比較して、両者が一致するか否かを判断する。分岐制御装置8が、演算器7から受信した演算結果と分岐成立条件とが一致する場合、分岐制御装置8は、分岐命令について分岐が成立すると判断する(#42)。
分岐制御装置8が、演算器7から受信した演算結果と分岐成立条件とが一致しない場合、分岐制御装置8は、分岐命令について分岐成立しないと判断する。具体的には、分岐制御装置8は、分岐命令について分岐が成立するという判断結果をAND回路84に入力する(#43)。なお、図4の例において、AND回路84は反転信号を入力とする論理の回路である。
分岐制御装置8は、分岐命令について分岐が成立するか否かについての判断結果を、分岐予測装置1の管理部12に対して送信する。具体的には、分岐制御装置8は、分岐命令について分岐が成立するという判断結果を、分岐予測装置1に対して送信して、分岐予測装置1のAND回路121に入力する(#44)。
また、分岐制御装置8は、分岐予測装置1から分岐予測処理の結果を受信する。具体的には、分岐制御装置8は、分岐予測装置1の分岐予測部11から、分岐が成立するか否かについて、予測と、分岐予測部11が予測した分岐先アドレスa42とを受信する。分岐制御装置8は、図4に示す比較部81、AND回路82、AND回路84、OR回路83、インバータ回路85を用いて、分岐命令について分岐が成立するか否かを判断する。この判断処理は、演算器7から受信した演算結果と分岐予測装置1から受信した分岐予測処理の結果とに基づいて、実行される。この判断処理は、以下の第1のケースから第3のケースのように、実行される。
第1のケースは、分岐予測装置1において分岐が成立すると予測され(#45)、分岐制御装置8において分岐命令が分岐成立であると判断され(#42)、比較部81において、演算完了した分岐先アドレスa41と分岐予測装置1が予測した分岐先アドレスa42とが一致する場合(#46)である。この場合、分岐制御装置8が、分岐予測が成功したと判断する(#47)。具体的には、分岐予測装置1の分岐が成立するという予測結果と、分岐制御装置8の分岐命令が分岐成立であるという判断結果と、比較部81の判断結果とが、AND回路82に入力される。これに応じて、OR回路83が、分岐予測が成功したことを示す情報を出力する。分岐制御装置8は、OR回路83が出力した情報に基づいて、分岐予測が成功したと判断する。
第2のケースは、分岐予測装置1において分岐が不成立と予測された(#48)分岐命令について、分岐制御装置8において分岐が成立しないと判断された場合(#43)である。この場合、分岐制御装置8は、分岐予測が成功したと判断する(#47)。具体的には、分岐予測装置1による分岐が成立するという予測結果の反転信号(換言すれば、分岐不成立の予測)と、分岐制御装置8による分岐命令が分岐成立するという判断結果の反転信号(換言すれば、分岐不成立の判断)が、AND回路84に入力される。これに応じて、OR回路83が、分岐予測が成功したことを示す情報を出力する。分岐制御装置8は、OR回路83が出力した情報に基づいて、分岐予測が成功したと判断する。
第3のケースは、第1のケース1又は第2のケース2以外の場合である。この場合、インバータ回路85が、OR回路83の出力を反転させて、分岐予測が失敗したことを示す情報を出力する。これに応じて、分岐制御装置8が、インバータ回路85が出力した情報に基づいて、分岐予測が失敗したと判断する(#49)。
分岐制御装置8において、分岐予測が成功した場合には、先行して実行した命令列が正しかったことを意味する。従って、この場合には、命令取得制御装置3は、そのまま処理を続行する。一方、分岐制御装置8において、分岐予測が失敗した場合には、先行して実行した命令列が誤っていたことを意味する。従って、この場合には、分岐制御装置8は、命令取得制御装置3に対して、再命令フェッチ要求を送信する(#410)。命令取得制御装置3は、分岐制御装置8から再命令フェッチ要求を受信した場合、先行してフェッチした命令の実行を全てキャンセルして、正しい命令アドレスの命令を、メモリ2から再度フェッチする。
命令取得制御装置3が備えるセレクタ33は、分岐制御装置8において、分岐予測が失敗し(#49)、かつ、分岐が成立した場合には(#42)、演算器7の演算の結果得られた分岐先アドレスa41を、再命令フェッチのアドレスa43として選択する(#411)。
セレクタ33は、分岐制御装置8において、分岐予測が失敗し(#49)、かつ、分岐が不成立である場合には、演算が完了した分岐命令の命令アドレスa44の次の命令アドレスを、再命令フェッチのアドレスa43として選択する(#411)。具体的には、命令取得制御装置3が備えるアドレス形成部32が、演算が完了した分岐命令の命令アドレスa44に例えば所定値αを加えることにより、演算が完了した分岐命令の命令アドレスa44の次の命令アドレスを形成する。そして、セレクタ33が、アドレス形成部32によって形成された命令アドレスを、再命令フェッチのアドレスa43として選択する(#411)。
次に、分岐予測装置1におけるブランチヒストリテーブル14又はシングルループエントリ13への対応情報の登録又は更新について説明する。
分岐予測装置1が備える管理部12は、AND回路121、AND回路122、比較部123を備える。分岐予測装置1は、AND回路121、AND回路122、比較部123を用いて、ブランチヒストリテーブル14又はシングルループエントリ13へ対応情報を登録し、又は、登録された対応情報を更新する。
分岐制御装置8において、分岐予測が失敗し(#49)、かつ、分岐が成立する場合(#42)、分岐予測が失敗したという判断結果と、分岐が成立するという判断結果とがAND回路121に入力される(#412、#44)。AND回路121が、ブランチヒストリテーブル登録信号S41を出力する。ブランチヒストリテーブル登録信号S41は、ブランチヒストリテーブル14への対応情報の登録を指示する制御信号である。分岐予測装置1の管理部12が、ブランチヒストリテーブル登録信号S41に基づいて、ブランチヒストリテーブル14に、分岐が成立すると判断された命令の分岐先アドレスを含む対応情報を、新たに登録する。
分岐制御装置8において、分岐予測が失敗し、かつ、分岐が不成立である場合には、分岐予測装置1の管理部12は、ブランチヒストリテーブル14のエントリの更新又は削除を行うための所定の条件が満たされているか否かを判断する。所定の条件は、例えばそのエントリについて分岐予測が失敗した回数が予め定められた回数以上であることとされる。管理部12は、ブランチヒストリテーブル14のエントリの更新や削除を行うための所定の条件が満たされている場合には、ブランチヒストリテーブル14のエントリの更新、削除を行う。
また、分岐制御装置8で分岐成立すると判断した場合(#42)、該判断結果がAND回路122に入力される(#44)。比較部123が、演算が完了した分岐命令の命令アドレスa44と、シングルループエントリ13の第1の対応情報が示す分岐命令アドレスとを比較する(#413)。比較部123が、命令フェッチアドレスa44と第1の対応情報が示す分岐命令アドレスとが一致しないことを示す情報を、AND回路122に対して出力する。AND回路122が、分岐制御装置8による分岐が成立するという判断結果と、比較部123の出力結果とに基づいて、シングルループエントリ更新信号S42を出力する。シングルループエントリ更新信号S42は、シングルループエントリ13の第1の対応情報を更新することを指示する制御信号である。管理部12は、シングルループエントリ更新信号S42に基づいて、シングルループエントリ13の第1の対応情報を、演算が完了した分岐命令の命令アドレスと、該命令アドレスに対応する分岐先アドレスとを用いて更新する。
図5は、分岐予測の成功又は失敗に応じた分岐予測処理動作の状態の遷移を説明する図である。
演算器7が分岐命令の演算を完了する(#51)。分岐制御装置8が、分岐予測が成功し(#52)、かつ、分岐成立であると判断した場合(#53)、分岐予測装置1の管理部12が、分岐が成立した分岐命令アドレスと、シングルループエントリ13に登録された分岐命令アドレスとを比較して、両者が一致するか否かを判断する(#54)。
分岐が成立した分岐命令アドレスとシングルループエントリ13に登録された分岐命令アドレスとが一致しない場合には(#54 No)、管理部12は、分岐が成立した分岐命令アドレスでシングルループエントリ13の第1の対応情報を更新し、カウンタ15をクリアする(#515)。これは、分岐が成立した分岐命令アドレスとシングルループエントリ13に登録された分岐命令アドレスとが一致しないことは、演算器7で演算される命令列が、シングルループエントリ13に登録されている分岐命令によるループから外れて、例えば、新しい分岐命令によるループに入ったことを意味するからである。
分岐が成立した命令アドレスと、シングルループエントリ13に登録された分岐命令アドレスとが一致する場合には(#54 Yes)、管理部12が、カウンタ15のカウント値をインクリメントする(#55)。
分岐予測装置1の管理部12が、カウンタ15のカウント値が閾値を超えたか否かを判断する(#56)。カウンタ15のカウント値が閾値を超えていない場合には(#56 No)、管理部12は、現在の動作モードを継続する(#510)。カウンタ15のカウント値が閾値を超えた場合には(#56 Yes)、管理部12が、分岐予測機構の動作モードが通常動作モードであるか否かを判断する(#57)。分岐予測機構の動作モードが通常動作モードでない場合(#57 No)、すなわち低消費電力モードである場合には、管理部12は、現在の動作モードを継続する(#510)。
分岐予測機構の動作モードが通常動作モードである場合(#57 Yes)、管理部12が、ブランチヒストリテーブル14に供給しているクロックを停止する(#58)。これにより、分岐予測機構の動作モードが通常動作モードから低消費電力モードに切り替わり、分岐予測装置1の分岐予測部11が、ブランチヒストリテーブル14ではなく、シングルループエントリ13を用いて分岐予測処理を行う(#59)。
分岐制御装置8が、分岐予測が成功し(#52)、かつ、分岐が不成立であると判断した場合(#511)、管理部12は、現在の動作モードを継続する(#512)。
分岐制御装置8が、分岐予測が失敗したと判断した場合には、分岐予測装置1の管理部12が、以下に説明するように、カウンタ15をクリアする。これは、分岐予測が失敗したことは、演算器7で演算される命令列が、シングルループエントリ13に登録されている分岐命令によるループから外れて、例えば、新しい分岐命令によるループに入ったことを意味するからである。
具体的には、分岐制御装置8が、分岐予測が失敗し(#513)、かつ、分岐成立であると判断した場合(#514)、管理部12が、分岐が成立した分岐命令アドレスでシングルループエントリ13の第1の対応情報を更新して、カウンタ15をクリアし(#515)、後述する#516の処理を実行する。分岐制御装置8が、分岐予測が失敗し(#513)、かつ、分岐が不成立であると判断した場合(#517)、管理部12が、カウンタ15をクリアする(#518)。
この後、管理部12が、現在の動作モードが通常動作モードであるか否かを判断する(#516)。現在の動作モードが通常動作モードである場合(#516 Yes)、管理部12は、現在の動作モードを継続する(#510)。現在の動作モードが通常動作モードでない場合(#516 No)、すなわち低消費電力モードである場合には、管理部12は、ブランチヒストリテーブル14へのクロックの供給の停止を解除する(#519)。これにより、分岐予測機構の動作モードが低消費電力モードから通常動作モードに切り替わり、分岐予測装置1の分岐予測部11が、ブランチヒストリテーブル14を用いて分岐予測処理を行う(#520)。
1 分岐予測装置
2 メモリ
3 命令取得制御装置
4 命令解析装置
5 命令発行制御装置
6 命令完了制御装置
7 演算器
8 分岐制御装置
11 分岐予測部
12 管理部
13 シングルループエントリ
14 ブランチヒストリテーブル
15 カウンタ

Claims (6)

  1. 演算の実行が完了した命令であって、分岐が成立した最新の1個の分岐命令について、その命令アドレスと分岐先アドレスとの対応情報である第1の対応情報を格納する、1個の前記第1の対応情報を格納可能な第1の分岐履歴記憶部と、
    前記演算の実行が完了した命令であって、分岐が成立した前記最新の分岐命令を含む過去の複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応情報である第2の対応情報を格納する、複数の前記第2の対応情報を格納可能な第2の分岐履歴記憶部と、
    メモリからフェッチされる命令の命令アドレスを用いて、前記第1の分岐履歴記憶部の前記第1の対応情報又は前記第2の分岐履歴記憶部の前記第2の対応情報を検索した結果に基づいて分岐予測を行う分岐予測制御部であって、前記第1の分岐履歴記憶部に登録された前記分岐命令によって前記第1の分岐履歴記憶部に登録された前記分岐命令を含む命令列がループしている場合には、前記第2の分岐履歴記憶部へのクロックの供給を停止し、前記第1の分岐履歴記憶部の前記第1の対応情報を検索した結果に基づいて分岐予測を行う分岐予測制御部とを備える
    ことを特徴とする情報処理装置。
  2. 前記分岐予測制御部が、前記演算の実行が完了した分岐命令の命令アドレスが前記第1の対応情報に含まれる命令アドレスと一致する回数をカウント値としてカウントし、前記カウントしたカウント値が閾値を超える場合には、前記第1の分岐履歴記憶部に登録された前記分岐命令を含む命令列がループしていると判断する
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記分岐予測制御部が、前記第2の分岐履歴記憶部へのクロックの供給が停止されている場合において、前記第1の分岐履歴記憶部に登録された前記分岐命令を含む命令列がループしているか否かを判断し、ループしていない場合には、前記第2の分岐履歴記憶部へのクロックの供給の停止を解除する
    ことを特徴とする請求項1記載の情報処理装置。
  4. 前記分岐予測制御部が、前記分岐予測が失敗した場合には、前記第1の分岐履歴記憶部に登録された前記分岐命令を含む命令列がループしていないと判断する
    ことを特徴とする請求項3記載の情報処理装置。
  5. 前記分岐予測制御部が、前記分岐予測が成功し、かつ、前記第1の対応情報に含まれる分岐先アドレスが演算の実行が完了した分岐命令の分岐先アドレスと一致しない場合には、前記第1の分岐履歴記憶部に登録された前記分岐命令を含む命令列がループしていないと判断する
    ことを特徴とする請求項3記載の情報処理装置。
  6. 演算の実行が完了した命令であって、分岐が成立した最新の1個の分岐命令について、その命令アドレスと分岐先アドレスとの対応情報である第1の対応情報を、1個の前記第1の対応情報を格納可能な第1の分岐履歴記憶部に格納し、
    前記演算の実行が完了した命令であって、分岐が成立した前記最新の分岐命令を含む過去の複数の分岐命令の各々について、その命令アドレスと分岐先アドレスとの対応情報である第2の対応情報を、複数の前記第2の対応情報を格納可能な第2の分岐履歴記憶部に格納し、
    メモリからフェッチされる命令の命令アドレスを用いて、前記第1の分岐履歴記憶部の前記第1の対応情報又は前記第2の分岐履歴記憶部の前記第2の対応情報を検索した結果に基づいて分岐予測を行う分岐予測制御部が、前記第1の分岐履歴記憶部に登録された前記分岐命令によって前記第1の分岐履歴記憶部に登録された前記分岐命令を含む命令列がループしているか否かを判断し、
    前記分岐予測制御部が、前記第1の分岐履歴記憶部に登録された前記分岐命令によって前記第1の分岐履歴記憶部に登録された前記分岐命令を含む命令列がループしている場合には、前記第2の分岐履歴記憶部へのクロックの供給を停止し、前記第1の分岐履歴記憶部の前記第1の対応情報を検索した結果に基づいて分岐予測を行う
    ことを特徴とする分岐予測方法。
JP2009132297A 2009-06-01 2009-06-01 情報処理装置及び分岐予測方法 Expired - Fee Related JP5423156B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2009132297A JP5423156B2 (ja) 2009-06-01 2009-06-01 情報処理装置及び分岐予測方法
EP10162770A EP2261797B1 (en) 2009-06-01 2010-05-13 Information processing apparatus and branch prediction method
US12/780,131 US8595474B2 (en) 2009-06-01 2010-05-14 Information processing apparatus and branch prediction method
KR1020100049822A KR101126001B1 (ko) 2009-06-01 2010-05-27 정보 처리 장치 및 분기 예측 방법
CN2010101939930A CN101901133B (zh) 2009-06-01 2010-05-28 信息处理设备和分支预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009132297A JP5423156B2 (ja) 2009-06-01 2009-06-01 情報処理装置及び分岐予測方法

Publications (2)

Publication Number Publication Date
JP2010277529A JP2010277529A (ja) 2010-12-09
JP5423156B2 true JP5423156B2 (ja) 2014-02-19

Family

ID=42829478

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009132297A Expired - Fee Related JP5423156B2 (ja) 2009-06-01 2009-06-01 情報処理装置及び分岐予測方法

Country Status (5)

Country Link
US (1) US8595474B2 (ja)
EP (1) EP2261797B1 (ja)
JP (1) JP5423156B2 (ja)
KR (1) KR101126001B1 (ja)
CN (1) CN101901133B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079303A1 (en) * 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
KR20120036210A (ko) * 2010-10-07 2012-04-17 삼성전자주식회사 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
GB2539041B (en) * 2015-06-05 2019-10-02 Advanced Risc Mach Ltd Mode switching in dependence upon a number of active threads
JP2018005488A (ja) * 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10395033B2 (en) * 2016-09-30 2019-08-27 Intel Corporation System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
US20180349144A1 (en) * 2017-06-06 2018-12-06 Intel Corporation Method and apparatus for branch prediction utilizing primary and secondary branch predictors
US20190004806A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Branch prediction for fixed direction branch instructions
CN114116010B (zh) * 2022-01-27 2022-05-03 广东省新一代通信与网络创新研究院 一种针对处理器循环体的体系结构优化方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US82843A (en) * 1868-10-06 Charles f
US5175827A (en) * 1987-01-22 1992-12-29 Nec Corporation Branch history table write control system to prevent looping branch instructions from writing more than once into a branch history table
JP3335379B2 (ja) 1992-09-09 2002-10-15 富士通株式会社 ブランチ・ヒストリーを持つ命令実行処理装置
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache
US5937203A (en) * 1996-09-16 1999-08-10 Advanced Micro Devices, Inc. Port for fine tuning a central processing unit
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6757817B1 (en) * 2000-05-19 2004-06-29 Intel Corporation Apparatus having a cache and a loop buffer
JP3804941B2 (ja) 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
US7159103B2 (en) * 2003-03-24 2007-01-02 Infineon Technologies Ag Zero-overhead loop operation in microprocessor having instruction buffer
JP3893463B2 (ja) * 2003-04-23 2007-03-14 国立大学法人九州工業大学 キャッシュメモリ、及びキャッシュメモリの電力削減方法
KR100528479B1 (ko) 2003-09-24 2005-11-15 삼성전자주식회사 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법
WO2005114441A2 (en) * 2004-05-19 2005-12-01 Arc International (Uk) Limited Microprocessor architecture
KR100591769B1 (ko) 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
TWI285841B (en) 2004-07-16 2007-08-21 Samsung Electronics Co Ltd Branch target buffer, branch target buffer memory array, branch prediction unit and processor with a function of branch instruction predictions
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US7873820B2 (en) * 2005-11-15 2011-01-18 Mips Technologies, Inc. Processor utilizing a loop buffer to reduce power consumption
US7681021B2 (en) * 2006-09-28 2010-03-16 Freescale Semiconductor, Inc. Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch
JP2008090339A (ja) 2006-09-29 2008-04-17 Fujitsu Ltd サブシステムの電源制御回路及びサブシステム
JP5043560B2 (ja) 2007-08-24 2012-10-10 パナソニック株式会社 プログラム実行制御装置

Also Published As

Publication number Publication date
US8595474B2 (en) 2013-11-26
US20100306516A1 (en) 2010-12-02
EP2261797A1 (en) 2010-12-15
JP2010277529A (ja) 2010-12-09
EP2261797B1 (en) 2012-07-04
KR20100129692A (ko) 2010-12-09
CN101901133A (zh) 2010-12-01
CN101901133B (zh) 2013-05-22
KR101126001B1 (ko) 2012-03-20

Similar Documents

Publication Publication Date Title
JP5423156B2 (ja) 情報処理装置及び分岐予測方法
US20090172360A1 (en) Information processing apparatus equipped with branch prediction miss recovery mechanism
KR101376900B1 (ko) 이력에 의한 다음 인출 예측기 트레이닝
JP6205966B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9250912B2 (en) Fast index tree for accelerated branch prediction
JP2000215056A (ja) 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理
JP2003005956A (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
JP2001243069A (ja) 分岐予測装置及び分岐予測方法
US7676663B2 (en) Method, system and program product for pipelined processor having a branch target buffer (BTB) table with a recent entry queue in parallel with the BTB table
US10379858B2 (en) Method and apparatus for executing conditional instruction predicated on execution result of predicate instruction
US20070277025A1 (en) Method and system for preventing livelock due to competing updates of prediction information
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
CN102163139A (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
KR20230084140A (ko) 제어 독립성 기술을 채용한 프로세서에서 처리되는 명령어에 대한 추론성 예측을 행하는 데 사용된 추론성 이력의 복원
JP2016062513A (ja) プロセッサおよびプロセッサシステム
US20110083030A1 (en) Cache memory control device, cache memory device, processor, and controlling method for storage device
US9250909B2 (en) Fast index tree for accelerated branch prediction
EP2348400A1 (en) Arithmetic processor, information processor, and pipeline control method of arithmetic processor
US20220075624A1 (en) Alternate path for branch prediction redirect
JP5099133B2 (ja) 処理装置
JP2007293814A (ja) プロセッサ装置とその処理方法
KR20230058123A (ko) 반복된 페칭을 줄이기 위해 프로세서의 명령어 파이프라인에서 반복 패턴을 검출하는 방법
JP2002182906A (ja) 命令実行方法及びその装置並びに分岐予測方法及びその装置
JP3809178B2 (ja) 分岐履歴情報の書き込み制御装置及びその方法
JP4113227B2 (ja) 分岐予測機構を有する情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130708

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131029

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees