JP2009069960A - 分岐予測装置、分岐予測方法、及びマイクロプロセッサ - Google Patents
分岐予測装置、分岐予測方法、及びマイクロプロセッサ Download PDFInfo
- Publication number
- JP2009069960A JP2009069960A JP2007235342A JP2007235342A JP2009069960A JP 2009069960 A JP2009069960 A JP 2009069960A JP 2007235342 A JP2007235342 A JP 2007235342A JP 2007235342 A JP2007235342 A JP 2007235342A JP 2009069960 A JP2009069960 A JP 2009069960A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- prediction
- address
- conditional
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
【課題】より正確に、且つ、より簡便に分岐予測を行うことができる分岐予測装置、分岐予測方法、及びマイクロプロセッサを提供する。
【解決手段】命令を格納する命令メモリ1から読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測装置33に、条件分岐命令の分岐条件が成立するか否かについての予測情報を格納する分岐予測エントリ部34と、条件分岐命令の実行により分岐条件が成立した場合に、分岐方向に基づいて条件分岐命令が次回実行される際の分岐条件の成立可能性を予測し、予測情報を更新するエントリ更新部36と、を備えた。
【選択図】図1
【解決手段】命令を格納する命令メモリ1から読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測装置33に、条件分岐命令の分岐条件が成立するか否かについての予測情報を格納する分岐予測エントリ部34と、条件分岐命令の実行により分岐条件が成立した場合に、分岐方向に基づいて条件分岐命令が次回実行される際の分岐条件の成立可能性を予測し、予測情報を更新するエントリ更新部36と、を備えた。
【選択図】図1
Description
本発明は、分岐予測装置、分岐予測方法、及びマイクロプロセッサに関し、特に、過去の分岐履歴情報を元に次回の分岐結果を予測する分岐予測装置、分岐予測方法、及びマイクロプロセッサに関する。
近年、ほとんどのマイクロプロセッサでは、パイプライン処理を用いることにより、高速化を図っている。パイプライン処理とは、マイクロプロセッサ内部に搭載された複数の処理ユニットに、複数の命令を同時並行的に実行させる処理である。パイプライン処理では、各処理ユニットがクロックに同期して同時に独立して動作できるように、各命令を少しずつずらして各処理ユニットに実行させている。これにより、各処理ユニットが効率よく動作することができ、マイクロプロセッサの処理速度が向上する。
パイプライン処理による高速化を維持するためには、各処理ユニットが命令を途切れなく実行する必要がある。しかし、各処理ユニットの動作が止まってしまうハザードと呼ばれる現象が生じる場合がある。
例えば、命令の中に条件分岐命令が含まれる場合にハザードが生じることがある。条件分岐命令とは、ある条件を満たした場合に分岐が成立する命令である。従って、処理ユニットが条件分岐命令を実行するまで、分岐が成立するか否かが分からない。そのため、条件分岐命令を実行するまで、各処理ユニットの動作を止める必要がある。このようなハザードを制御ハザードと呼ぶ。
例えば、命令の中に条件分岐命令が含まれる場合にハザードが生じることがある。条件分岐命令とは、ある条件を満たした場合に分岐が成立する命令である。従って、処理ユニットが条件分岐命令を実行するまで、分岐が成立するか否かが分からない。そのため、条件分岐命令を実行するまで、各処理ユニットの動作を止める必要がある。このようなハザードを制御ハザードと呼ぶ。
そこで、制御ハザードによる処理速度の低下を防ぐため、マイクロプロセッサに分岐予測を行う分岐予測装置が設けられている。分岐予測装置は、条件分岐命令の実行結果が分岐成立となるか否か、即ち、条件分岐命令の分岐条件が成立するか否か(分岐条件の成立可能性)を予測する。そして、マイクロプロセッサは、分岐予測装置の予測に基づいて、条件分岐命令後の命令を投機的に実行する。予測が正解の場合には、そのまま実行を続ける。予測が不正解の場合には、投機的に実行した処理結果を破棄して、条件分岐命令後の命令の実行をやり直す。
近年のマイクロプロセッサは、性能向上のために、パイプラインの段数を増やして動作周波数を上げている。パイプラインの段数が増加するほど予測が不正解だった場合の処理速度低下が大きくなる。そのため、分岐予測の精度を向上させることが重要な課題となっている。
近年のマイクロプロセッサは、性能向上のために、パイプラインの段数を増やして動作周波数を上げている。パイプラインの段数が増加するほど予測が不正解だった場合の処理速度低下が大きくなる。そのため、分岐予測の精度を向上させることが重要な課題となっている。
一般に、条件分岐命令の実行結果には傾向性がある。例えば、前回の実行結果が分岐成立であった条件分岐命令の次回の実行結果も分岐成立である場合が多い。
そこで、非特許文献1には、条件分岐命令の実行結果を予測情報としてBTB(Branch Target Buffer)に登録し、BTBを参照して分岐予測を行う技術が開示されている。
具体的には、分岐予測装置は、条件分岐命令の実行結果が分岐成立である場合にのみ、当該実行結果を予測情報としてBTBに登録する。また、BTBは、予測情報として、分岐する可能性大(Strongly Taken;以下、STと称する。)、分岐する可能性小(Weakly Taken;以下、WTと称する。)、分岐しない可能性小(Weakly Not Taken;以下、WNと称する。)、分岐しない可能性大(Strongly Not Taken;以下、SNと称する。)の4つの値を記憶する。条件分岐命令の実行結果が分岐成立である場合、BTBに記憶される予測情報は、図6に示すように、SN→WN、WN→WT、WT→STと遷移する。また、条件分岐命令の実行結果が分岐不成立である場合、BTBに記憶される予測情報は、ST→WT、WT→WN、WN→SNと遷移する。そして、分岐予測装置は、予測情報がST又はWTである場合に、分岐すると予測する。また、分岐予測装置は、予測情報がSN又はWNである場合に、分岐しないと予測する。また、条件分岐命令が実行されておらず、予測情報が登録されていない場合、分岐予測装置は分岐しないと予測する。
そこで、非特許文献1には、条件分岐命令の実行結果を予測情報としてBTB(Branch Target Buffer)に登録し、BTBを参照して分岐予測を行う技術が開示されている。
具体的には、分岐予測装置は、条件分岐命令の実行結果が分岐成立である場合にのみ、当該実行結果を予測情報としてBTBに登録する。また、BTBは、予測情報として、分岐する可能性大(Strongly Taken;以下、STと称する。)、分岐する可能性小(Weakly Taken;以下、WTと称する。)、分岐しない可能性小(Weakly Not Taken;以下、WNと称する。)、分岐しない可能性大(Strongly Not Taken;以下、SNと称する。)の4つの値を記憶する。条件分岐命令の実行結果が分岐成立である場合、BTBに記憶される予測情報は、図6に示すように、SN→WN、WN→WT、WT→STと遷移する。また、条件分岐命令の実行結果が分岐不成立である場合、BTBに記憶される予測情報は、ST→WT、WT→WN、WN→SNと遷移する。そして、分岐予測装置は、予測情報がST又はWTである場合に、分岐すると予測する。また、分岐予測装置は、予測情報がSN又はWNである場合に、分岐しないと予測する。また、条件分岐命令が実行されておらず、予測情報が登録されていない場合、分岐予測装置は分岐しないと予測する。
表1に、分岐予測を行う場合と行わない場合の実行サイクル数を示す。表1は、ループ回数が5回のループを2周期実行した場合の実行サイクル数を示している。表1において、Tは分岐成立(Taken)、Nは分岐不成立(Not Taken)、Mは予測ミス(Miss)、Hは予測正解(Hit)を示す。
表1では、分岐予測を行わない場合、条件分岐命令の実行結果が分岐成立のときの実行サイクル数は5であり、条件分岐命令の実行結果が分岐不成立のときの実行サイクル数は1である。そして、合計サイクル数は42となる。
一方、分岐予測を行う場合、予測が正解のときの実行サイクル数は1であり、予測が不正解のときの実行サイクル数は5である。そして、合計サイクル数は22となる。従って、分岐予測を行うことにより、実行サイクル数が減少し、マイクロプロセッサの処理速度が向上する。
表1では、分岐予測を行わない場合、条件分岐命令の実行結果が分岐成立のときの実行サイクル数は5であり、条件分岐命令の実行結果が分岐不成立のときの実行サイクル数は1である。そして、合計サイクル数は42となる。
一方、分岐予測を行う場合、予測が正解のときの実行サイクル数は1であり、予測が不正解のときの実行サイクル数は5である。そして、合計サイクル数は22となる。従って、分岐予測を行うことにより、実行サイクル数が減少し、マイクロプロセッサの処理速度が向上する。
また、特許文献1には、条件分岐命令と過去の分岐履歴とを記憶し、分岐履歴から分岐の偏りを検出する偏向カウンタを設け、当該分岐の偏りから分岐予測を行うことにより、分岐予測の精度を向上させる技術が開示されている。
e200z6 PowerPCTM Core Reference Manual、7.2.1.2節、[online]、[平成19年7月31日検索]、インターネット〈URL : http://www.freescale.com/files/32bit/doc/ref_manual/e200z6RMAD.pdf〉 特開2002−182906号公報
e200z6 PowerPCTM Core Reference Manual、7.2.1.2節、[online]、[平成19年7月31日検索]、インターネット〈URL : http://www.freescale.com/files/32bit/doc/ref_manual/e200z6RMAD.pdf〉
しかしながら、非特許文献1では、新たな条件分岐命令が実行された際、条件分岐命令の実行結果が分岐成立の場合にのみ、当該実行結果が予測情報としてBTBに初期登録される。そのため、プログラムによっては、分岐予測を行うことにより実行サイクル数が増えてしまう場合がある。図5に、分岐予測を行うことにより実行サイクル数が増えてしまうプログラム例を示す。図5に示すように、当該プログラムは、I1、I2、I3、I4の4つの命令を含み、当該I1〜I4の命令が複数周期繰り返して実行されるループ構造を有している。そして、ループは、条件分岐命令I3を有している。また、図5において、N1の「x4」は、プログラム記述ではないが、I1〜I4のループを4回繰り返すことを示している。即ち、条件分岐命令I3の実行結果は、ループ回数4回目までは不成立であり、ループ回数5回目に成立となる。従って、図5に示すループが実行される回数(ループ回数)は5回である。表2に、図5に示すループを2周期実行した際の実行サイクル数を示す。表2では、分岐予測を行う場合と行わない場合の実行サイクル数を示している。表2に示すように、条件分岐命令の実行結果は、NT、NT、NT、NT、Tとなり、1周期目のループの5回目の実行後初めて、実行結果Tが予測情報として登録される。そして、2周期目のループの1回目の実行結果はNTだが、予測情報はTとなっているため、予測が不正解となる。そのため、分岐予測を行う場合の実行サイクル数が分岐予測を行わない場合よりも多くなってしまう。
また、特許文献1では、複数回、同じ条件分岐命令を実行しなければ、分岐の偏りを検出することができない。そのため、条件分岐命令の実行回数が少ない場合には、正確な分岐予測を行うことができない。また、偏向カウンタなどを設けるため、回路構成が複雑になる。
本発明の第1の態様にかかる分岐予測装置は、命令を格納する命令メモリから読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測装置であって、前記条件分岐命令の分岐条件が成立するか否かについての予測情報を格納する分岐予測エントリ部と、前記条件分岐命令の実行により前記分岐条件が成立した場合に、分岐方向に基づいて前記条件分岐命令が次回実行される際の分岐条件の成立可能性を予測し、前記予測情報を更新するエントリ更新部と、を備える。
本発明の第2の態様にかかるマイクロプロセッサは、命令を格納する命令メモリから読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測装置を備えるマイクロプロセッサであって、前記分岐予測装置は、前記条件分岐命令の分岐条件が成立するか否かについての予測情報を格納する分岐予測エントリ部と、前記条件分岐命令の実行により前記分岐条件が成立した場合に、分岐方向に基づいて前記条件分岐命令が次回実行される際の分岐条件の成立可能性を予測し、前記予測情報を更新するエントリ更新部と、を備える。
本発明の第3の態様にかかる分岐予測方法は、命令を格納する命令メモリから読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測方法であって、前記条件分岐命令の分岐条件が成立するか否かについての予測情報を分岐予測エントリ部に格納し、前記条件分岐命令の実行により前記分岐条件が成立した場合に、分岐方向に基づいて前記条件分岐命令が次回実行される際の分岐条件の成立可能性を予測し、前記予測情報を更新する。
本発明においては、分岐方向に基づいて条件分岐命令が次回実行される際の分岐条件の成立可能性を予測するので、従来のように単に前回の条件分岐命令の実行結果に基づいて次回の条件分岐命令の分岐条件の成立可能性を予測する場合に比べて、より正確に分岐予測を行うことができる。
また、特別なカウンタなどを設ける必要がないため、回路構成をより簡便なものとすることができる。また、条件分岐命令の実行回数が少なくても、正確に分岐予測を行うことができる。
また、特別なカウンタなどを設ける必要がないため、回路構成をより簡便なものとすることができる。また、条件分岐命令の実行回数が少なくても、正確に分岐予測を行うことができる。
本発明により、より正確に、且つ、より簡便に分岐予測を行うことができる。
以下に、本発明を適用可能な実施の形態を説明する。なお、本発明は、以下の実施の形態に限定されるものではない。
図1に、本発明の実施の形態にかかる分岐予測装置33を備えるマイクロプロセッサ10を示す。マイクロプロセッサ10は、図1に示すように、命令メモリ1、実行ユニット2、フェッチアドレス制御ユニット3等を備えて構成されている。
図1に、本発明の実施の形態にかかる分岐予測装置33を備えるマイクロプロセッサ10を示す。マイクロプロセッサ10は、図1に示すように、命令メモリ1、実行ユニット2、フェッチアドレス制御ユニット3等を備えて構成されている。
命令メモリ1は、実行ユニット2に実行させる複数の命令を格納している。個々の命令には、当該命令を指定するためのアドレスが付されている。そして、当該アドレスを指定することにより、当該アドレスに対応する命令を指定できる。
実行ユニット2は、命令メモリ1から入力された命令を実行する。実行ユニット2は、複数の処理ユニット(図示省略)を有している。複数の処理ユニットは、同時並行的に命令を実行する。これにより、実行ユニット2は、複数の命令を同時並行的に実行する(パイプライン処理)。
また、実行ユニット2は、実行PC、実行結果、分岐方向をフェッチアドレス制御ユニット3に入力する。
ここで、実行PCとは、実行する命令が格納されている命令メモリ1上のアドレスである。
また、分岐方向とは、実行結果が分岐成立であった場合に、分岐する方向である。具体的には、分岐方向には、プラス(第1の方向)とマイナス(第2の方向)とがある。プラス方向への分岐とは、条件分岐命令が記憶されている命令メモリ1のアドレス値より増加するアドレス値への分岐を意味し、マイナス方向への分岐とは、条件分岐命令が記憶されている命令メモリ1のアドレス値より減少するアドレス値への分岐を意味する。
また、実行結果は、条件分岐命令の実行結果であり、分岐成立か否かについての情報、分岐先PC342が含まれる。分岐先PC342とは、実行ユニット2が条件分岐命令を実行した結果、分岐成立であった場合に、次に実行する命令のアドレスである。
また、実行ユニット2は、実行PC、実行結果、分岐方向をフェッチアドレス制御ユニット3に入力する。
ここで、実行PCとは、実行する命令が格納されている命令メモリ1上のアドレスである。
また、分岐方向とは、実行結果が分岐成立であった場合に、分岐する方向である。具体的には、分岐方向には、プラス(第1の方向)とマイナス(第2の方向)とがある。プラス方向への分岐とは、条件分岐命令が記憶されている命令メモリ1のアドレス値より増加するアドレス値への分岐を意味し、マイナス方向への分岐とは、条件分岐命令が記憶されている命令メモリ1のアドレス値より減少するアドレス値への分岐を意味する。
また、実行結果は、条件分岐命令の実行結果であり、分岐成立か否かについての情報、分岐先PC342が含まれる。分岐先PC342とは、実行ユニット2が条件分岐命令を実行した結果、分岐成立であった場合に、次に実行する命令のアドレスである。
フェッチアドレス制御ユニット3は、PC(プログラムカウンタ;アドレス指定部)30、加算器31、セレクタ32、分岐予測装置33を備えている。
PC30は、実行ユニット2が次に実行する命令の命令メモリ1上のアドレスを保持するレジスタである。そして、フェッチアドレス制御ユニット3は、PC30に保持されているアドレス(以下、保持アドレス100と称する。)を命令メモリ1に入力する。そして、命令メモリ1において、当該保持アドレス100に基づいて命令が読み出される。そして、実行ユニット2が当該命令を命令メモリ1からフェッチして実行する。
また、フェッチアドレス制御ユニット3は、PC30に保持されている保持アドレス100を実行ユニット2に入力する。
また、PC30は、保持している保持アドレス100を分岐予測装置33及び加算器31に入力する。
また、フェッチアドレス制御ユニット3は、PC30に保持されている保持アドレス100を実行ユニット2に入力する。
また、PC30は、保持している保持アドレス100を分岐予測装置33及び加算器31に入力する。
加算器31は、PC30から入力される保持アドレス100に加算処理を行って、セレクタ32に入力する。ここで、加算処理とは、具体的には、アドレスのインクリメント処理である。
セレクタ32は、分岐予測装置33から入力される予測PCと、加算器31から入力されるアドレスとの何れか一方を選択してPC30に入力する。ここで、予測PCとは、分岐予測装置33によって、次に実行ユニット2により実行される命令であると予測された命令の命令メモリ1上のアドレスである。
また、セレクタ32には、分岐予測装置33から、分岐予測した結果が分岐成立か否かを示す成立可否信号200が入力される。例えば、分岐予測装置33は、分岐予測した結果が分岐成立であった場合には、成立可否信号200として、「1」をセレクタ32に入力する。また、分岐予測装置33は、分岐予測した結果が分岐不成立であった場合は、成立可否信号200として、「0」をセレクタ32に入力する。
そして、セレクタ32は、分岐予測装置33が分岐予測を行わない場合、及び、条件分岐命令の分岐条件の成立可能性を予測した結果が不成立であった場合に、加算器31から入力されるアドレスを選択する。
また、セレクタ32は、条件分岐命令の分岐条件の成立可能性を予測した結果が成立であった場合に、分岐予測装置33から入力された予測PCを選択する。
セレクタ32は、分岐予測装置33から入力される予測PCと、加算器31から入力されるアドレスとの何れか一方を選択してPC30に入力する。ここで、予測PCとは、分岐予測装置33によって、次に実行ユニット2により実行される命令であると予測された命令の命令メモリ1上のアドレスである。
また、セレクタ32には、分岐予測装置33から、分岐予測した結果が分岐成立か否かを示す成立可否信号200が入力される。例えば、分岐予測装置33は、分岐予測した結果が分岐成立であった場合には、成立可否信号200として、「1」をセレクタ32に入力する。また、分岐予測装置33は、分岐予測した結果が分岐不成立であった場合は、成立可否信号200として、「0」をセレクタ32に入力する。
そして、セレクタ32は、分岐予測装置33が分岐予測を行わない場合、及び、条件分岐命令の分岐条件の成立可能性を予測した結果が不成立であった場合に、加算器31から入力されるアドレスを選択する。
また、セレクタ32は、条件分岐命令の分岐条件の成立可能性を予測した結果が成立であった場合に、分岐予測装置33から入力された予測PCを選択する。
分岐予測装置33は、分岐予測エントリ部34(記憶手段)、予測PC出力部35、エントリ更新部36を備えている。
分岐予測エントリ部34は、分岐予測装置33が分岐予測を行って得られる予測情報343を記憶している。具体的には、分岐予測エントリ部34は、図2に示すように、エントリ番号、分岐元PC341、分岐先PC342、予測情報343を対応付けて記憶している。
具体的には、分岐予測エントリ部34は、分岐元PC341、分岐先PC342、予測情報343をセットとして格納する記憶部である。また、分岐予測エントリ部34は、ひとつの実施形態としてレジスタで構成されている。そして、分岐予測エントリ部34は、分岐元PC341、分岐先PC342、予測情報343のセットを格納するため、レジスタN個(Nは整数)で構成されている。また、レジスタにはエントリ番号1からNが付与されている。そして、エントリ番号を指定することにより、レジスタを指定して、当該レジスタに対して読み書きが行われる。分岐予測エントリ34に、より多くの上記セットを格納する場合には、分岐予測エントリ34をメモリにより構成してもよい。その場合には、エントリ番号に代わる番号としてメモリアドレスにより指定が行われることとしてもよい。
また、分岐元PC341とは、分岐予測装置33が分岐予測を行った条件分岐命令の命令メモリ1上のアドレスである。具体的には、分岐元PC341は、実行ユニット2から入力された実行PCである。
また、分岐先PC342とは、分岐元PC341の条件分岐命令の分岐先の命令のアドレスである。
また、予測情報343とは、条件分岐命令の実行結果が分岐成立であるか否かについて分岐予測装置33が予測した情報である。具体的には、予測情報343は、実行ユニット2から入力された実行結果及び分岐方向に基づいて、分岐予測エントリ部34に記憶される。
分岐予測エントリ部34は、分岐予測装置33が分岐予測を行って得られる予測情報343を記憶している。具体的には、分岐予測エントリ部34は、図2に示すように、エントリ番号、分岐元PC341、分岐先PC342、予測情報343を対応付けて記憶している。
具体的には、分岐予測エントリ部34は、分岐元PC341、分岐先PC342、予測情報343をセットとして格納する記憶部である。また、分岐予測エントリ部34は、ひとつの実施形態としてレジスタで構成されている。そして、分岐予測エントリ部34は、分岐元PC341、分岐先PC342、予測情報343のセットを格納するため、レジスタN個(Nは整数)で構成されている。また、レジスタにはエントリ番号1からNが付与されている。そして、エントリ番号を指定することにより、レジスタを指定して、当該レジスタに対して読み書きが行われる。分岐予測エントリ34に、より多くの上記セットを格納する場合には、分岐予測エントリ34をメモリにより構成してもよい。その場合には、エントリ番号に代わる番号としてメモリアドレスにより指定が行われることとしてもよい。
また、分岐元PC341とは、分岐予測装置33が分岐予測を行った条件分岐命令の命令メモリ1上のアドレスである。具体的には、分岐元PC341は、実行ユニット2から入力された実行PCである。
また、分岐先PC342とは、分岐元PC341の条件分岐命令の分岐先の命令のアドレスである。
また、予測情報343とは、条件分岐命令の実行結果が分岐成立であるか否かについて分岐予測装置33が予測した情報である。具体的には、予測情報343は、実行ユニット2から入力された実行結果及び分岐方向に基づいて、分岐予測エントリ部34に記憶される。
予測PC出力部35は、分岐予測装置33により、条件分岐命令の実行結果が分岐成立であると予測された場合に、分岐先PC342を予測PCとしてセレクタ32に入力する。
また、予測PC出力部35は、分岐予測装置33により、条件分岐命令の実行結果が分岐成立であると予測された場合に、分岐予測した結果が分岐成立である旨を示す成立可否信号200をセレクタ32に入力する。
また、予測PC出力部35は、分岐予測装置33により、条件分岐命令の実行結果が分岐不成立であると予測された場合に、分岐予測した結果が分岐不成立である旨を示す成立可否信号200をセレクタ32に入力する。
具体的には、予測PC出力部35は、PC30に保持されている保持アドレス100が分岐予測エントリ部34に分岐元PC341として記憶されているか否かを判断する。また、予測PC出力部35は、PC30に保持されている保持アドレス100が分岐予測エントリ部34の分岐元PC341として記憶されていると判断した場合に、当該分岐元PC341と対応する予測情報343が分岐成立か否かを判断する。そして、予測PC出力部35は、当該分岐元PC341と対応する予測情報343が分岐成立であると判断した場合に、当該分岐元PC341と対応する分岐先PC342を予測PCとしてセレクタ32に入力する。また、予測PC出力部35は、当該分岐元PC341と対応する予測情報343が分岐成立であると判断した場合に、分岐予測した結果が分岐成立である旨を示す成立可否信号200(例えば、「1」)をセレクタ32に入力する。
また、予測PC出力部35は、PC30に保持されている保持アドレス100が分岐予測エントリ34に分岐元PCとして記憶されており、且つ、当該分岐元PC341と対応する予測情報343が分岐不成立であると判断した場合に、分岐予測した結果が分岐不成立である旨を示す成立可否信号200(例えば、「0」)をセレクタ32に入力する。
また、予測PC出力部35は、分岐予測装置33により、条件分岐命令の実行結果が分岐成立であると予測された場合に、分岐予測した結果が分岐成立である旨を示す成立可否信号200をセレクタ32に入力する。
また、予測PC出力部35は、分岐予測装置33により、条件分岐命令の実行結果が分岐不成立であると予測された場合に、分岐予測した結果が分岐不成立である旨を示す成立可否信号200をセレクタ32に入力する。
具体的には、予測PC出力部35は、PC30に保持されている保持アドレス100が分岐予測エントリ部34に分岐元PC341として記憶されているか否かを判断する。また、予測PC出力部35は、PC30に保持されている保持アドレス100が分岐予測エントリ部34の分岐元PC341として記憶されていると判断した場合に、当該分岐元PC341と対応する予測情報343が分岐成立か否かを判断する。そして、予測PC出力部35は、当該分岐元PC341と対応する予測情報343が分岐成立であると判断した場合に、当該分岐元PC341と対応する分岐先PC342を予測PCとしてセレクタ32に入力する。また、予測PC出力部35は、当該分岐元PC341と対応する予測情報343が分岐成立であると判断した場合に、分岐予測した結果が分岐成立である旨を示す成立可否信号200(例えば、「1」)をセレクタ32に入力する。
また、予測PC出力部35は、PC30に保持されている保持アドレス100が分岐予測エントリ34に分岐元PCとして記憶されており、且つ、当該分岐元PC341と対応する予測情報343が分岐不成立であると判断した場合に、分岐予測した結果が分岐不成立である旨を示す成立可否信号200(例えば、「0」)をセレクタ32に入力する。
エントリ更新部36は、実行ユニット2から入力される実行PC、実行結果、分岐方向に基づいて分岐予測エントリ部34を更新する。
また、エントリ更新部36は、新たな条件分岐命令が実行ユニット2により実行された場合に、実行ユニット2から入力される実行PC、実行結果、分岐方向に基づいて、分岐予測エントリ部34への初期登録を行う。
ここで、実行PCとは、実行ユニット2により実行された条件分岐命令の命令メモリ1上のアドレスである。実行PCは、エントリ更新部36により、分岐予測エントリ34へ分岐元PCとして登録される。
また、実行結果は、分岐成立か否かについての情報、分岐先PC342の情報が含まれる。分岐先PC342とは、実行ユニット2が条件分岐命令を実行した結果、分岐成立であった場合に、次に実行する命令の命令メモリ1上のアドレスである。
また、エントリ更新部36は、新たな条件分岐命令が実行ユニット2により実行された場合に、実行ユニット2から入力される実行PC、実行結果、分岐方向に基づいて、分岐予測エントリ部34への初期登録を行う。
ここで、実行PCとは、実行ユニット2により実行された条件分岐命令の命令メモリ1上のアドレスである。実行PCは、エントリ更新部36により、分岐予測エントリ34へ分岐元PCとして登録される。
また、実行結果は、分岐成立か否かについての情報、分岐先PC342の情報が含まれる。分岐先PC342とは、実行ユニット2が条件分岐命令を実行した結果、分岐成立であった場合に、次に実行する命令の命令メモリ1上のアドレスである。
具体的には、エントリ更新部36は、実行ユニット2から入力された実行PCが分岐予測エントリ部34に分岐元PC341として記憶されているか否かを判断する。
そして、エントリ更新部36は、実行PCが分岐予測エントリ部34に分岐元PC341として記憶されていないと判断した場合には、実行結果が分岐成立か否かを判断する。
実行結果が分岐不成立である場合には、エントリ更新部36は、分岐予測エントリ部34への初期登録を行わない。
また、実行結果が分岐成立である場合には、エントリ更新部36は、分岐予測エントリ部34への初期登録を行う。具体的には、まず、エントリ更新部36は、分岐方向がプラスか否かを判断する。
そして、エントリ更新部36は、実行PCが分岐予測エントリ部34に分岐元PC341として記憶されていないと判断した場合には、実行結果が分岐成立か否かを判断する。
実行結果が分岐不成立である場合には、エントリ更新部36は、分岐予測エントリ部34への初期登録を行わない。
また、実行結果が分岐成立である場合には、エントリ更新部36は、分岐予測エントリ部34への初期登録を行う。具体的には、まず、エントリ更新部36は、分岐方向がプラスか否かを判断する。
分岐方向がプラスである場合には、エントリ更新部36は、分岐不成立を示す予測情報343を、当該実行PCと対応付けて、分岐予測エントリ部34に記憶する。より具体的には、分岐方向がプラスである場合には、エントリ更新部36は、当該実行PCを分岐元PC341として分岐予測エントリ部34に記憶する。また、エントリ更新部36は、分岐不成立を示す予測情報343を分岐予測エントリ部34に記憶する。また、エントリ更新部36は、実行結果に基づいて、分岐先PC342を分岐予測エントリ部34に記憶する。
また、分岐方向がマイナスである場合には、エントリ更新部36は、分岐成立を示す予測情報343を、当該実行PCと対応付けて、分岐予測エントリ部34に記憶する。より具体的には、分岐方向がマイナスである場合には、エントリ更新部36は、当該実行PCを分岐元PC341として分岐予測エントリ部34に記憶する。また、エントリ更新部36は、分岐成立を示す予測情報343を分岐予測エントリ部34に記憶する。また、エントリ更新部36は、実行結果に基づいて、分岐先PC342を分岐予測エントリ部34に記憶する。
一方、エントリ更新部36は、実行PCが分岐予測エントリ部34に分岐元PC341として記憶されていると判断した場合には、分岐予測エントリ部34を更新する。
まず、エントリ更新部36は、実行結果が分岐成立か否かを判断する。実行結果が分岐成立である場合には、エントリ更新部36は、分岐方向がプラスか否かを判断する。
まず、エントリ更新部36は、実行結果が分岐成立か否かを判断する。実行結果が分岐成立である場合には、エントリ更新部36は、分岐方向がプラスか否かを判断する。
分岐方向がプラスである場合には、エントリ更新部36は、分岐不成立を示す予測情報343を分岐予測エントリ部34に記憶する。これにより、分岐予測エントリ部34が更新される。なお、初期登録において、分岐先PC342は分岐予測エントリ部34に記憶されているため、更新時においては、エントリ更新部36は、分岐先PC342を分岐予測エントリ部34に再登録する処理は行わない。
また、分岐方向がマイナスである場合には、エントリ更新部36は、分岐成立を示す予測情報343を分岐予測エントリ部34に記憶する。これにより、分岐予測エントリ部34が更新される。
また、実行結果が分岐不成立である場合には、エントリ更新部36は、分岐不成立を示す予測情報343を分岐予測エントリ部34に記憶する。これにより、分岐予測エントリ部34が更新される。
次に、本発明にかかる分岐予測装置33における分岐予測エントリ部34の初期登録について図3に示すフローチャートを参照しながら説明する。
まず、実行ユニット2により、命令メモリ1から入力された条件分岐命令が実行される(ステップS1)。
次に、エントリ更新部36は、実行ユニット2から入力された実行結果が分岐成立であるか否かを判断する(ステップS2)。
まず、実行ユニット2により、命令メモリ1から入力された条件分岐命令が実行される(ステップS1)。
次に、エントリ更新部36は、実行ユニット2から入力された実行結果が分岐成立であるか否かを判断する(ステップS2)。
ステップS2において、エントリ更新部36が、実行結果が分岐不成立であると判断した場合には(ステップS2;No)、分岐予測装置33は、初期登録を行わずに処理を終了する。
ステップS2において、エントリ更新部36が、実行結果が分岐成立であると判断した場合には(ステップS2;Yes)、エントリ更新部36は、分岐方向がプラスか否かを判断する(ステップS3)。
ステップS2において、エントリ更新部36が、実行結果が分岐成立であると判断した場合には(ステップS2;Yes)、エントリ更新部36は、分岐方向がプラスか否かを判断する(ステップS3)。
ステップS3において、エントリ更新部36が、分岐方向がマイナスであると判断した場合には(ステップS3;No)、エントリ更新部36は、分岐予測エントリ部34への登録を開始する(ステップS4)。具体的には、エントリ更新部36は、実行ユニット2から入力された実行PCを分岐元PC341として分岐予測エントリ部34に記憶させる。
次いで、エントリ更新部36は、分岐成立を示す予測情報343を分岐予測エントリ部34に記憶させる(ステップS5)。また、エントリ更新部36は、分岐先の命令の命令メモリ1上のアドレスを分岐先PC342として分岐予測エントリ部34に記憶させる。
ステップS3において、エントリ更新部36が、分岐方向がプラスであると判断した場合には(ステップS3;Yes)、エントリ更新部36は、分岐予測エントリ部34への登録を開始する(ステップS6)。具体的には、エントリ更新部36は、実行ユニット2から入力された実行PCを分岐元PC341として分岐予測エントリ部34に記憶させる。
次いで、エントリ更新部36は、分岐不成立を示す予測情報343を分岐予測エントリ部34に記憶させる(ステップS7)。また、エントリ更新部36は、分岐先の命令の命令メモリ1上のアドレスを分岐先PC342として分岐予測エントリ部34に記憶させる。
以上に説明した本発明の実施の形態にかかる分岐予測装置33、分岐予測方法、及びマイクロプロセッサ10では、条件分岐命令の分岐条件が成立するか否かについての予測情報343を格納する分岐予測エントリ部34と、条件分岐命令の実行により分岐条件が成立した場合に、分岐方向に基づいて条件分岐命令が次回実行される際の分岐条件の成立可能性を予測し、予測情報343を更新するエントリ更新部36と、を備える。
具体的には、条件分岐命令の実行結果が分岐成立であった際に、分岐方向がプラスである場合に、分岐不成立を示す予測情報343を分岐予測エントリ部34に記憶させ、分岐方向がマイナスである場合に、分岐成立を示す予測情報343を分岐予測エントリ部34に記憶させる。
これにより、本発明の実施の形態にかかる分岐予測装置33、分岐予測方法、及びマイクロプロセッサ10では、分岐方向に基づいて前記条件分岐命令が次回実行される際の分岐条件の成立可能性を予測するので、従来のように単に前回の条件分岐命令の実行結果に基づいて次回の条件分岐命令の分岐条件の成立可能性を予測する場合に比べて、より正確に分岐予測を行うことができる。そのため、本発明の実施の形態にかかる分岐予測装置33を備えたマイクロプロセッサ10では、実行サイクル数を低減でき、処理速度を向上することができる。
また、特別なカウンタなどを設ける必要がないため、回路構成をより簡便なものとすることができる。
また、条件分岐命令の実行回数が少なくても、正確に分岐予測を行うことができる。条件分岐命令の実行結果が分岐成立であった際に、分岐方向に基づいて次回の条件分岐命令の分岐条件の成立可能性を予測する。分岐方向に基づいて条件分岐命令の分岐条件の成立可能性を予測するので、従来のように単に前回の条件分岐命令の実行結果に基づいて次回の条件分岐命令の分岐条件の成立可能性を予測する場合に比べて、より正確に分岐予測を行うことができる。
具体的には、条件分岐命令の実行結果が分岐成立であった際に、分岐方向がプラスである場合に、分岐不成立を示す予測情報343を分岐予測エントリ部34に記憶させ、分岐方向がマイナスである場合に、分岐成立を示す予測情報343を分岐予測エントリ部34に記憶させる。
これにより、本発明の実施の形態にかかる分岐予測装置33、分岐予測方法、及びマイクロプロセッサ10では、分岐方向に基づいて前記条件分岐命令が次回実行される際の分岐条件の成立可能性を予測するので、従来のように単に前回の条件分岐命令の実行結果に基づいて次回の条件分岐命令の分岐条件の成立可能性を予測する場合に比べて、より正確に分岐予測を行うことができる。そのため、本発明の実施の形態にかかる分岐予測装置33を備えたマイクロプロセッサ10では、実行サイクル数を低減でき、処理速度を向上することができる。
また、特別なカウンタなどを設ける必要がないため、回路構成をより簡便なものとすることができる。
また、条件分岐命令の実行回数が少なくても、正確に分岐予測を行うことができる。条件分岐命令の実行結果が分岐成立であった際に、分岐方向に基づいて次回の条件分岐命令の分岐条件の成立可能性を予測する。分岐方向に基づいて条件分岐命令の分岐条件の成立可能性を予測するので、従来のように単に前回の条件分岐命令の実行結果に基づいて次回の条件分岐命令の分岐条件の成立可能性を予測する場合に比べて、より正確に分岐予測を行うことができる。
また、分岐予測装置33では、条件分岐命令の分岐条件が不成立であった際に、条件分岐命令の予測情報343が分岐予測エントリ部34に格納されている場合には、不成立を示す予測情報343に予測情報を更新する。
これにより、分岐予測エントリ部34の予測情報343に条件分岐命令の実行結果を反映することができる。
これにより、分岐予測エントリ部34の予測情報343に条件分岐命令の実行結果を反映することができる。
さらに、分岐予測装置33では、分岐方向がプラスかマイナスかによって、分岐予測を行うことにより、複数周期繰り返して実行されるループ内に含まれる条件分岐命令であっても正確に予測することができる。具体的には、複数周期繰り返して実行されるループ内の条件分岐命令の実行結果は、最後のループ回数のみ分岐成立となり、分岐方向がプラスとなる場合がある。その場合に、分岐予測装置33では、分岐方向がプラスであることを反映して、当該条件分岐命令の予測情報343を分岐不成立とする。そのため、次回の最初のループ回数の実行結果が分岐不成立となることを正確に予測することができる。
なお、予測情報343は、2ビットのデータから構成されてもよい。そして、分岐予測エントリ部34に、予測情報343として、11(分岐する可能性大(Strongly Taken))、10(分岐する可能性小(Weakly Taken))、01(分岐しない可能性小(Weakly Not Taken))、00(分岐しない可能性大(Strongly Not Taken))の4つの値が記憶されてもよい。この場合、分岐予測装置33は、予測情報343が11又は10のとき分岐成立と判断し、予測情報343が01又は00のとき分岐不成立と判断する。
次に、本発明の実施例1について、比較例1及び比較例2と比較して説明する。実施例1にかかるマイクロプロセッサ10は、本発明の実施の形態にかかる分岐予測装置33を有するマイクロプロセッサ10である。
これに対し、分岐予測装置を持たないマイクロプロセッサを比較例1とする。また、従来の分岐予測装置を有するマイクロプロセッサを比較例2とする。
従来の分岐予測装置では、新たな条件分岐命令が実行された際、条件分岐命令の実行結果が分岐成立の場合にのみ、当該実行結果を予測情報として分岐予測エントリ部に初期登録する。比較例2にかかる分岐予測装置における分岐予測エントリ部の初期登録について図4に示すフローチャートを参照しながら説明する。
従来の分岐予測装置では、新たな条件分岐命令が実行された際、条件分岐命令の実行結果が分岐成立の場合にのみ、当該実行結果を予測情報として分岐予測エントリ部に初期登録する。比較例2にかかる分岐予測装置における分岐予測エントリ部の初期登録について図4に示すフローチャートを参照しながら説明する。
まず、比較例2にかかるマイクロプロセッサの実行ユニットにより、命令メモリから入力された条件分岐命令が実行される(ステップS101)。
次に、分岐予測装置は、実行ユニットから入力された実行結果が分岐成立であるか否かを判断する(ステップS102)。
次に、分岐予測装置は、実行ユニットから入力された実行結果が分岐成立であるか否かを判断する(ステップS102)。
ステップS102において、分岐予測装置が、実行結果が分岐不成立であると判断した場合には(ステップS102;No)、分岐予測装置は、初期登録を行わずに処理を終了する。
ステップS102において、分岐予測装置が、実行結果が分岐成立であると判断した場合には(ステップS102;Yes)、分岐予測装置は、分岐予測エントリ部への登録を開始する(ステップS103)。
ステップS102において、分岐予測装置が、実行結果が分岐成立であると判断した場合には(ステップS102;Yes)、分岐予測装置は、分岐予測エントリ部への登録を開始する(ステップS103)。
次いで、分岐予測装置は、分岐成立を示す予測情報を分岐予測エントリ部に記憶させる(ステップS104)。
次に、図5に示すプログラムを実行する場合に、比較例1、比較例2、実施例1において要する実行サイクル数を比較する。
図5に示すように、当該プログラムは、I1、I2、I3、I4の4つの命令を含み、当該I1〜I4の命令が複数周期繰り返して実行されるループ構造を有している。そして、ループは、条件分岐命令I3を有している。また、図5において、N1の「x4」は、プログラム記述ではないが、I1〜I4のループを4回繰り返すことを示している。即ち、条件分岐命令I3の実行結果は、ループ回数4回目までは不成立であり、ループ回数5回目に成立となる。従って、図5に示すループが実行される回数(ループ回数)は5回である。
より具体的には、図5において、L1は、無条件分岐命令であるI4の分岐先を表すラベルである。I1は、加算命令を表す。I2は、比較命令を表す。I3は、条件分岐命令を表す。I3の条件分岐命令では、I2の比較命令で比較した結果を元に分岐が成立するかどうかが決まる。I4は無条件分岐命令であり、L1に分岐することを示す。L2は、条件分岐命令I3の分岐先ラベルである。また、ループ回数が5回目の場合に、条件分岐命令I3の実行結果が分岐成立となって、ループ外の命令(ラベルL2に対応する命令)に分岐する。
図5に示すように、当該プログラムは、I1、I2、I3、I4の4つの命令を含み、当該I1〜I4の命令が複数周期繰り返して実行されるループ構造を有している。そして、ループは、条件分岐命令I3を有している。また、図5において、N1の「x4」は、プログラム記述ではないが、I1〜I4のループを4回繰り返すことを示している。即ち、条件分岐命令I3の実行結果は、ループ回数4回目までは不成立であり、ループ回数5回目に成立となる。従って、図5に示すループが実行される回数(ループ回数)は5回である。
より具体的には、図5において、L1は、無条件分岐命令であるI4の分岐先を表すラベルである。I1は、加算命令を表す。I2は、比較命令を表す。I3は、条件分岐命令を表す。I3の条件分岐命令では、I2の比較命令で比較した結果を元に分岐が成立するかどうかが決まる。I4は無条件分岐命令であり、L1に分岐することを示す。L2は、条件分岐命令I3の分岐先ラベルである。また、ループ回数が5回目の場合に、条件分岐命令I3の実行結果が分岐成立となって、ループ外の命令(ラベルL2に対応する命令)に分岐する。
図5に示すループ回数5回のループを2周期実行した場合に、比較例1、比較例2、実施例1において要する実行サイクル数をそれぞれ表3、表4、表5に示す。表3、表4、表5において、Tは分岐成立(Taken)、Nは分岐不成立(Not Taken)を示す。また、表4、表5において、Mは予測ミス(Miss)、Hは予測正解(Hit)を示す。表3、表4、表5に示すように、図5に示すループ回数5回のループを2周期実行した場合、条件分岐命令I3の実行結果は、NT、NT、NT、NT、T(+)、NT、NT、NT、NT、T(+)となる。ここで、T(+)の(+)は、分岐方向がプラスであることを示す。
表3に示すように、分岐予測を行わない比較例1では、条件分岐命令I3の実行結果が分岐不成立のときの実行サイクル数は1であり、条件分岐命令I3の実行結果が分岐成立のときの実行サイクル数は5である。そして、合計サイクル数は18となる。
一方、表4に示すように、従来の分岐予測を行う比較例2では、1周期目のループにおいて、条件分岐命令I3の実行結果が分岐成立の場合にのみ、当該実行結果が予測情報として分岐予測エントリ部に初期登録される。即ち、1周期目のループの5回目の実行後初めて、実行結果Tが予測情報として登録される。そして、2周期目のループの1回目の実行結果はNTだが、予測情報はTとなっているため、予測が不正解となる。そして、表4に示すように、予測が正解のときの実行サイクル数は1であり、予測が不正解のときの実行サイクル数は5である。そして、合計サイクル数は22となり、分岐予測を行わない比較例1に比べて実行サイクル数が増えてしまう。
一方、表4に示すように、従来の分岐予測を行う比較例2では、1周期目のループにおいて、条件分岐命令I3の実行結果が分岐成立の場合にのみ、当該実行結果が予測情報として分岐予測エントリ部に初期登録される。即ち、1周期目のループの5回目の実行後初めて、実行結果Tが予測情報として登録される。そして、2周期目のループの1回目の実行結果はNTだが、予測情報はTとなっているため、予測が不正解となる。そして、表4に示すように、予測が正解のときの実行サイクル数は1であり、予測が不正解のときの実行サイクル数は5である。そして、合計サイクル数は22となり、分岐予測を行わない比較例1に比べて実行サイクル数が増えてしまう。
これに対して、本発明にかかる分岐予測を行う実施例1では、1周期目のループの5回目の実行後初めて、分岐方向に基づく予測情報343が登録される。具体的には、1周期目のループの5回目の分岐方向はプラスであるため、分岐不成立を示すNTが予測情報343として分岐予測エントリ部34に登録される。そして、2周期目のループの1回目の実行結果はNTであるので、予測が正解となる。そのため、2周期目のループの1回目の実行サイクル数は1となる。そして、合計サイクル数は18となり、分岐予測を行わない比較例1と実行サイクル数が同じになる。
以上、説明したように、図5に示すように、複数周期繰り返して実行されるループ内に含まれる条件分岐命令であっても、実施例1では実行サイクル数が増えない。図5に示すように、複数周期繰り返して実行されるループ内に含まれる条件分岐命令は、プログラム中で比較的よく見られる。従って、本発明にかかる実施例1では、図5に示すようなループ内に含まれる条件分岐命令の分岐予測を正確に行うことにより、大幅に実行サイクル数を低減することができる。即ち、本発明にかかる実施例1により、マイクロプロセッサ10の処理速度を向上させることができる。
1 命令メモリ
3 フェッチアドレス制御ユニット
30 PC(アドレス指定部)
33 分岐予測装置
34 分岐予測エントリ部
343 予測情報
35 予測PC出力部
36 エントリ更新部
10 マイクロプロセッサ
3 フェッチアドレス制御ユニット
30 PC(アドレス指定部)
33 分岐予測装置
34 分岐予測エントリ部
343 予測情報
35 予測PC出力部
36 エントリ更新部
10 マイクロプロセッサ
Claims (20)
- 命令を格納する命令メモリから読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測装置であって、
前記条件分岐命令の前記分岐条件が成立するか否かについての予測情報を格納する分岐予測エントリ部と、
前記条件分岐命令の実行により前記分岐条件が成立した場合に、分岐方向に基づいて前記条件分岐命令が次回実行される際の前記分岐条件の成立可能性を予測し、前記予測情報を更新するエントリ更新部と、
を備える分岐予測装置。 - 前記分岐予測エントリ部は、前記命令メモリに格納された前記条件分岐命令のアドレスと、前記条件分岐命令の前記分岐条件が成立するか否かについての前記予測情報と、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスと、を対応付けて格納する請求項1に記載の分岐予測装置。
- 前記命令メモリは、複数の前記条件分岐命令を格納し、
前記分岐予測エントリ部は、前記条件分岐命令毎に、前記条件分岐命令のアドレスと、前記予測情報と、前記分岐先の命令のアドレスと、を格納する請求項1又は2に記載の分岐予測装置。 - 前記エントリ更新部には、前記条件分岐命令が実行された場合に、前記条件分岐命令のアドレスと、前記条件分岐命令の実行結果と、前記分岐方向と、が入力され、
前記実行結果は、前記条件分岐命令の前記分岐条件が成立したか否かについての情報と、前記分岐条件が成立した場合の前記分岐先の命令アドレスとを含み、
前記エントリ更新部は、入力された前記条件分岐命令のアドレスと、前記実行結果と、前記分岐方向と、に基づいて、前記条件分岐命令のアドレスと、前記条件分岐命令の前記予測情報と、前記分岐先の命令のアドレスと、を前記分岐予測エントリ部に出力する請求項2又は3に記載の分岐予測装置。 - 前記分岐予測装置は、前記命令メモリのアドレスを指定するアドレス指定部に前記予測情報を出力する予測PC出力部を備え、
前記予測PC出力部は、前記分岐予測エントリ部に格納されている前記予測情報が成立である場合に、当該予測情報と対応する前記分岐先の命令のアドレスを前記アドレス指定部に出力する請求項2乃至4の何れか一項に記載の分岐予測装置。 - 前記エントリ更新部は、前記条件分岐命令が実行された結果、前記分岐条件が不成立であった際に、前記条件分岐命令の前記予測情報が前記分岐予測エントリ部に格納されている場合には、不成立を示す予測情報に前記予測情報を更新する請求項1乃至5の何れか一項に記載の分岐予測装置。
- 前記分岐方向が第1の方向である場合には、次回の前記条件分岐命令の前記分岐条件が不成立であると予測し、前記分岐方向が第2の方向である場合には、次回の前記条件分岐命令の前記分岐条件が成立であると予測する請求項1乃至6の何れか一項に記載の分岐予測装置。
- 前記第1の方向とは、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスが前記条件分岐命令のアドレスより増加する分岐方向であり、
前記第2の方向とは、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスが前記条件分岐命令のアドレスより減少する分岐方向である請求項7に記載の分岐予測装置。 - 命令を格納する命令メモリから読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測装置を備えるマイクロプロセッサであって、
前記分岐予測装置は、
前記条件分岐命令の前記分岐条件が成立するか否かについての予測情報を格納する分岐予測エントリ部と、
前記条件分岐命令の実行により前記分岐条件が成立した場合に、分岐方向に基づいて前記条件分岐命令が次回実行される際の前記分岐条件の成立可能性を予測し、前記予測情報を更新するエントリ更新部と、
を備えるマイクロプロセッサ。 - 前記命令メモリは、複数の前記条件分岐命令を格納し、
前記分岐予測エントリ部は、前記条件分岐命令毎に、前記条件分岐命令のアドレスと、前記予測情報と、前記分岐先の命令のアドレスと、を対応付けて格納し、
前記分岐予測装置は、
前記分岐予測エントリ部に格納されている前記予測情報が成立である場合に、前記予測情報と、当該予測情報と対応する前記分岐先の命令のアドレスと、を前記マイクロプロセッサに出力する予測PC出力部と、を備え、
前記マイクロプロセッサは、
命令を実行する実行ユニットと、
前記実行ユニットに実行すべき命令のアドレスを出力するフェッチアドレス制御ユニットと、
を備え、
前記フェッチアドレス制御ユニットは、前記予測情報が成立である場合に、前記分岐先の命令のアドレスを前記実行ユニットに出力し、
前記実行ユニットは、前記フェッチアドレス制御ユニットから入力された前記分岐先の命令のアドレスに基づいて、前記命令メモリから命令を読み出して実行する請求項9に記載のマイクロプロセッサ。 - 前記分岐予測装置は、
前記分岐方向が第1の方向である場合には、次回の前記条件分岐命令の前記分岐条件が不成立であると予測し、前記分岐方向が第2の方向である場合には、次回の前記条件分岐命令の前記分岐条件が成立であると予測する請求項9又は10に記載のマイクロプロセッサ。 - 前記第1の方向とは、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスが前記条件分岐命令のアドレスより増加する分岐方向であり、
前記第2の方向とは、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスが前記条件分岐命令のアドレスより減少する分岐方向である請求項11に記載のマイクロプロセッサ。 - 命令を格納する命令メモリから読み出された条件分岐命令の分岐条件の成立可能性を予測する分岐予測方法であって、
前記条件分岐命令の前記分岐条件が成立するか否かについての予測情報を分岐予測エントリ部に格納し、
前記条件分岐命令の実行により前記分岐条件が成立した場合に、分岐方向に基づいて前記条件分岐命令が次回実行される際の前記分岐条件の成立可能性を予測し、前記予測情報を更新する分岐予測方法。 - 前記分岐予測エントリ部は、前記命令メモリに格納された前記条件分岐命令のアドレスと、前記条件分岐命令の前記分岐条件が成立するか否かについての前記予測情報と、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスと、を対応付けて格納する請求項13に記載の分岐予測方法。
- 前記命令メモリは、複数の前記条件分岐命令を格納し、
前記分岐予測エントリ部は、前記条件分岐命令毎に、前記条件分岐命令のアドレスと、前記予測情報と、前記分岐先の命令のアドレスと、を格納する請求項13又は14に記載の分岐予測方法。 - 前記条件分岐命令が実行された場合に、前記条件分岐命令のアドレスと、前記条件分岐命令の実行結果と、前記分岐方向と、が入力され、
前記実行結果は、前記条件分岐命令の前記分岐条件が成立したか否かについての情報と、前記分岐条件が成立した場合の前記分岐先の命令アドレスとを含み、
入力された前記条件分岐命令のアドレスと、前記実行結果と、前記分岐方向と、に基づいて、前記条件分岐命令のアドレスと、前記条件分岐命令の前記予測情報と、前記分岐先の命令のアドレスと、を前記分岐予測エントリ部に出力する請求項14又は15に記載の分岐予測方法。 - 前記命令メモリのアドレスを指定するアドレス指定部に前記予測情報を出力し、
前記分岐予測エントリ部に格納されている前記予測情報が成立である場合に、当該予測情報と対応する前記分岐先の命令のアドレスを前記アドレス指定部に出力する請求項14乃至16の何れか一項に記載の分岐予測方法。 - 前記条件分岐命令が実行された結果、前記分岐条件が不成立であった際に、前記条件分岐命令の前記予測情報が前記分岐予測エントリ部に格納されている場合には、不成立を示す予測情報に前記予測情報を更新する請求項13乃至17の何れか一項に記載の分岐予測方法。
- 前記分岐方向が第1の方向である場合には、次回の前記条件分岐命令の前記分岐条件が不成立であると予測し、前記分岐方向が第2の方向である場合には、次回の前記条件分岐命令の前記分岐条件が成立であると予測する請求項13乃至18の何れか一項に記載の分岐予測方法。
- 前記第1の方向とは、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスが前記条件分岐命令のアドレスより増加する分岐方向であり、
前記第2の方向とは、前記条件分岐命令の前記分岐条件が成立した場合の分岐先の命令のアドレスが前記条件分岐命令のアドレスより減少する分岐方向である請求項19に記載の分岐予測方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007235342A JP2009069960A (ja) | 2007-09-11 | 2007-09-11 | 分岐予測装置、分岐予測方法、及びマイクロプロセッサ |
| US12/191,071 US20090070569A1 (en) | 2007-09-11 | 2008-08-13 | Branch prediction device,branch prediction method, and microprocessor |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007235342A JP2009069960A (ja) | 2007-09-11 | 2007-09-11 | 分岐予測装置、分岐予測方法、及びマイクロプロセッサ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2009069960A true JP2009069960A (ja) | 2009-04-02 |
Family
ID=40433112
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007235342A Pending JP2009069960A (ja) | 2007-09-11 | 2007-09-11 | 分岐予測装置、分岐予測方法、及びマイクロプロセッサ |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20090070569A1 (ja) |
| JP (1) | JP2009069960A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8824194B2 (en) | 2011-05-20 | 2014-09-02 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and method for driving the same |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170153894A1 (en) * | 2015-11-27 | 2017-06-01 | Arm Limited | Apparatus and method for branch prediction |
| US10956164B2 (en) | 2018-11-27 | 2021-03-23 | International Business Machines Corporation | Gating updates to branch predictors to reduce pollution from infrequently executed branches |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0373022A (ja) * | 1989-08-14 | 1991-03-28 | Nec Corp | 中央処理装置 |
| JPH03250221A (ja) * | 1990-02-28 | 1991-11-08 | Hitachi Ltd | 分岐予測方式 |
| JPH08110857A (ja) * | 1994-10-12 | 1996-04-30 | Mitsubishi Electric Corp | 命令処理装置 |
| JP2001236225A (ja) * | 2000-02-22 | 2001-08-31 | Fujitsu Ltd | 演算装置及び分岐予測方法並びに情報処理装置 |
| JP2005504390A (ja) * | 2001-10-02 | 2005-02-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ジャバハードウェアアクセラレータ用の投機的実行 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
| US5692168A (en) * | 1994-10-18 | 1997-11-25 | Cyrix Corporation | Prefetch buffer using flow control bit to identify changes of flow within the code stream |
| US7085920B2 (en) * | 2000-02-02 | 2006-08-01 | Fujitsu Limited | Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction |
| US7747845B2 (en) * | 2004-05-12 | 2010-06-29 | International Business Machines Corporation | State machine based filtering of non-dominant branches to use a modified gshare scheme |
-
2007
- 2007-09-11 JP JP2007235342A patent/JP2009069960A/ja active Pending
-
2008
- 2008-08-13 US US12/191,071 patent/US20090070569A1/en not_active Abandoned
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0373022A (ja) * | 1989-08-14 | 1991-03-28 | Nec Corp | 中央処理装置 |
| JPH03250221A (ja) * | 1990-02-28 | 1991-11-08 | Hitachi Ltd | 分岐予測方式 |
| JPH08110857A (ja) * | 1994-10-12 | 1996-04-30 | Mitsubishi Electric Corp | 命令処理装置 |
| JP2001236225A (ja) * | 2000-02-22 | 2001-08-31 | Fujitsu Ltd | 演算装置及び分岐予測方法並びに情報処理装置 |
| JP2005504390A (ja) * | 2001-10-02 | 2005-02-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ジャバハードウェアアクセラレータ用の投機的実行 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8824194B2 (en) | 2011-05-20 | 2014-09-02 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and method for driving the same |
Also Published As
| Publication number | Publication date |
|---|---|
| US20090070569A1 (en) | 2009-03-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
| JP3565504B2 (ja) | プロセッサにおける分岐予測方法及びプロセッサ | |
| US9201654B2 (en) | Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions | |
| JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
| CN104049938B (zh) | 间接分支预测 | |
| US10664280B2 (en) | Fetch ahead branch target buffer | |
| JP5494832B2 (ja) | 演算処理装置および分岐予測方法 | |
| JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
| JP2009163624A (ja) | プロセッサ装置及び条件分岐処理方法 | |
| JP2009037302A (ja) | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム | |
| JP2001243069A (ja) | 分岐予測装置及び分岐予測方法 | |
| US20080313443A1 (en) | Processor apparatus | |
| US9430245B2 (en) | Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size | |
| US20060259741A1 (en) | Controlling out of order execution pipelines issue tagging | |
| JP2009069960A (ja) | 分岐予測装置、分岐予測方法、及びマイクロプロセッサ | |
| JP3725547B2 (ja) | 限定ラン分岐予測 | |
| JPWO2012127666A1 (ja) | 演算処理装置、情報処理装置及び演算処理方法 | |
| JP3802038B2 (ja) | 情報処理装置 | |
| JP5209390B2 (ja) | 情報処理装置及び命令フェッチ制御方法 | |
| JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
| Hasan et al. | An improved pipelined processor architecture eliminating branch and jump penalty | |
| KR101118593B1 (ko) | Vliw 명령어 처리 장치 및 방법 | |
| US20230205535A1 (en) | Optimization of captured loops in a processor for optimizing loop replay performance | |
| JP2005149297A (ja) | プロセッサおよびそのアセンブラ | |
| HK40086051A (zh) | 提前取出分支目标缓冲器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100513 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120515 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120529 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20121002 |