JP4728877B2 - マイクロプロセッサおよびパイプライン制御方法 - Google Patents

マイクロプロセッサおよびパイプライン制御方法 Download PDF

Info

Publication number
JP4728877B2
JP4728877B2 JP2006148190A JP2006148190A JP4728877B2 JP 4728877 B2 JP4728877 B2 JP 4728877B2 JP 2006148190 A JP2006148190 A JP 2006148190A JP 2006148190 A JP2006148190 A JP 2006148190A JP 4728877 B2 JP4728877 B2 JP 4728877B2
Authority
JP
Japan
Prior art keywords
branch
instruction
determination
prediction
pipeline
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
JP2006148190A
Other languages
English (en)
Other versions
JP2007317083A (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.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno 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 NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2006148190A priority Critical patent/JP4728877B2/ja
Publication of JP2007317083A publication Critical patent/JP2007317083A/ja
Application granted granted Critical
Publication of JP4728877B2 publication Critical patent/JP4728877B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、パイプライン処理を行うマイクロプロセッサに関に関する。
パイプライン処理を行うRISC(Reduced Instruction Set Computer)型マイクロプロセッサが知られている(特許文献1)。パイプライン処理は、1つの命令に基づく処理をn段の独立なステージに分けて実行する処理である。パイプラインの基本的なステージとして、命令キャッシュから命令を取り出す命令フェッチ(IF)と、フェッチした命令をデコードするとともに、レジスタオペランドをフェッチする命令デコード(RF)と、デコード結果とフェッチしたレジスタの値に基づいて命令を実行してアドレスを計算する命令実行(EX)と、計算したアドレスに対応するメモリの値(オペランド)をデータキャッシュから取り出すオペランドフェッチ(MEM)と、演算結果(EXで計算したアドレスまたはMEMでフェッチしたオペランド)をレジスタに格納するライトバック(WB)とがある。RISC型マイクロプロセッサでは、一連のマイクロ命令(固定命令語長)に対して、各ステージにおける処理を並列に実行する。
上記のRISC型マイクロプロセッサにおいて、パイプラインに投入される命令が分岐命令を含む場合、パイプライン処理効率が低下する。分岐命令を含む一連のマイクロ命令をパイプライン処理する場合、分岐命令で、分岐条件が成立するか否かは、分岐命令に基づく処理(分岐判定ステージ)に至るまで判らない。このため、分岐命令の次に実行すべき命令をフェッチするためには、分岐命令に基づく処理(分岐判定)が完了するまで、パイプラインをストールさせなければならない。
分岐命令に起因するパイプラインのストールの一般的な解決策として、分岐条件が不成立になると仮定して、後続命令の実行を継続させる方法がある。この方法では、分岐命令に基づく処理が完了するのを待たずに、分岐命令の次に実行すべき命令(分岐条件が不成立になった場合に実行される命令)をフェッチし、そのフェッチした命令をデコードする処理が進められる。なお、分岐条件が成立した場合には、フェッチ、デコードを進めた命令を放棄して、分岐先の命令から処理を続行する。このような分岐方向が固定された方法は、分岐条件の成立および不成立の確率が予め予測できる場合において、少ないコストでパイプライン処理効率を向上させることができる。
特許文献1には、分岐命令のアドレスとその分岐先アドレスを分岐予測テーブルに格納しておき、分岐予測テーブルに格納した分岐命令を実行した際には、分岐予測テーブルを参照して分岐先アドレスからの処理を実行することで、パイプラインを乱すことなく高速に命令を実行することが記載されている。
特許文献2には、分岐命令中に分岐条件成立/不成立の予想ビットを備え、該分岐命令を検出すると、予想ビットの内容に応じてアドレス選択処理を行うことが記載されている。
特許文献3には、分岐命令が分岐予測情報および分岐履歴情報を含み、命令フェッチ器が、分岐命令に含まれている分岐予測情報に基づいてキャッシュメモリから命令を先取りすることが記載されている。分岐履歴情報は、過去に分岐が成立した頻度を「極めて多い」、「多い」、「少ない」、「極めて少ない」の4つの状態で表したものである。分岐命令が実行されると、その分岐結果と実行した分岐命令に含まれている分岐履歴情報とに基づいて分岐履歴情報が更新される。分岐履歴情報が「多い」または「極めて多い」とされた場合に、分岐成功を示す分岐予測情報が生成され、分岐履歴情報が「少ない」または「極めて少ない」とされた場合には、分岐不成功を示す分岐予測情報が生成される。
特開平02−144626号公報 特開平03−263224号公報 特開平10−228377号公報
分岐条件が成立するか否かは、プログラムの性質に依存する傾向が高い。例えば、一度分岐条件が成立した分岐命令は、次に実行された場合に、分岐条件が成立する確率が高い。逆に、一度分岐条件が不成立となった分岐命令は、次に実行された場合に、分岐条件が不成立となる確率が高い。このような傾向から、分岐命令によりループが形成されるプログラムにおいて、マイクロ命令をコーディングした場合に、同じ分岐命令が何回も出現する場合には、分岐条件の判定結果が成立/不成立のいずれかに傾くかを容易に推測することができる。分岐条件が成立するか否かがプログラムの性質に依存する傾向が高いということは、プログラム設計者は、プログラムを組む段階で、分岐命令について、分岐条件の成立と不成立のどちらが多く発生するかを予想することができる、と考えられる。このようなことから、分岐条件が成立する確率が高いと予想される(分岐条件の成立が多く発生すると予想される)分岐命令については、分岐条件が成立すると仮定して(分岐方向の予測)、後続命令の実行を継続させることで、分岐命令に起因するパイプラインのストールの発生を抑制することができる。同様に、分岐条件が不成立になる確率が高いと予想される(分岐条件の不成立が多く発生すると予想される)分岐命令については、分岐条件が不成立になると仮定して、後続命令の実行を継続させることで、分岐命令に起因するパイプラインのストールの発生を抑制することができる。
しかしながら、上記のように分岐条件の判定結果を成立/不成立のいずれかに固定する方法においては、固定した判定結果(成立または不成立)をプログラム実行途中で変更することができないため、プログラム設計者の予想が外れた場合には、分岐条件の判定結果が発生確率の低い方に固定されることになり、その結果、分岐命令に起因するパイプラインのストールの発生を抑制する効果が半減する。特許文献1、2に記載のものも、分岐条件の判定結果を成立/不成立のいずれかに固定するものであるため、同様の問題を生じる。
特許文献3に記載のものは、プログラム設計者の予想を用いずに、分岐履歴情報に基づいて分岐条件の判定予測を行うものである。この場合は、十分な分岐履歴情報(過去に分岐が成立した頻度)を得るために、分岐命令がある程度の回数実行される必要があり、その実効回数に達するまでの間は、分岐履歴情報に基づく分岐予測が外れることがある。このため、分岐命令に起因するパイプラインのストールの発生を抑制する効果が半減する。
本発明の目的は、分岐履歴および設計者の予想の両面から分岐命令の分岐予測を行うことのできるマイクロプロセッサを提供することにある。
上記目的を達成するため、本発明のマクロプロセッサは、
分岐命令を含む一連の命令が格納される命令格納メモリを備え、該命令格納メモリから命令を取り出して複数のステージからなるパイプライン処理を実行するとともに、該命令のパイプライン処理実行中に、該命令の次に実行される命令を前記命令格納メモリから先取りするマイクロプロセッサであって、
前記分岐命令は、当該分岐命令の分岐条件の判定を予想した結果が予め設定される分岐予測方向ビットを有し、
記命令格納メモリから前記分岐命令が取り出され、該分岐命令について前記パイプライン処理が実行されると、該実行結果に基づいて、該分岐命令の分岐条件が成立したか否かを判定する分岐判定回路と、
前記分岐判定回路の判定結果を前記分岐命令の分岐履歴情報として格納する分岐履歴バッファと、
記命令格納メモリから取り出された命令が前記分岐命令である場合に、前記分岐履歴バッファに格納された前記分岐命令に関する分岐履歴情報を参照して、前記分岐命令における分岐条件の成立または不成立の目下の連続回数を調べ、該連続回数が閾値以下の場合は、前記分岐命令に含まれている前記分岐予測方向ビットに設定された値に基づいて前記分岐命令における分岐条件の判定結果を予測し、前記連続回数が前記閾値を超えた場合には、前記履歴バッファに格納された前記分岐命令に関する分岐履歴情報を参照して前記分岐命令における分岐条件の判定結果を予測する分岐予測方向決定部と、
前記分岐予測方向決定部で予測した判定結果に基づいて、前記命令格納メモリからマイクロ命令を先取りするためのアドレスを指定するプログラムカウンタと、を有する。
本発明のマイクロプロセッサによれば、分岐命令を含む一連の命令に対してパイプライン処理を実行する場合において、分岐命令の実行結果として同じ判定結果が連続する場合で、連続回数が閾値以下の場合は、分岐命令に含まれている分岐方向予測ビット(プログラム設計者によって設定された予測結果)に基づいて分岐条件の判定の予測が行われ、その予測結果に従って命令の先取りが行われる。また、連続回数が閾値を越えた場合には、分岐履歴バッファに格納された分岐履歴情報に従って分岐命令の判定結果が予測され、その予測した判定結果に基づいて命令の先取りが行われる。この動作によれば、以下のような作用を有する。
プログラム設計者は、例えば、分岐命令について、分岐条件が成立する確率が高いと予想した場合に、分岐命令に含まれる分岐予測方向ビットに「成功」を示す値を設定する。この場合、プログラム設計者の予測が当たっていれば、パイプラインのストールを効果的に抑制することができる。例えば、分岐条件が成立する実際の確率が80%であれば、パイプラインがキャンセルされる割合は、全体の20%となるので、パイプラインのストールを効果的に抑制することができる。
分岐予測方向ビットに従った命令の先取りの動作のみを行うだけでは、プログラム設計者の予測が外れた場合に、パイプラインがキャンセルされる割合が増大してしまい、パイプラインのストールを抑制する効果が半減する。本発明のマイクロプロセッサでは、連続回数が閾値Aを越えた場合には、分岐履歴バッファに格納された分岐履歴情報に従った命令の先取りが行われる。この動作によれば、例えば、最初の3回までは、プログラム設計者の予測(分岐予測方向ビット)に従った命令の先取りが行われるが、それ以降は、分岐履歴バッファに格納された分岐履歴情報に従った命令の先取りが行われる。したがって、プログラム設計者の予測が外れた場合は、4回目以降について、分岐履歴情報に従った命令の先取りにより、実際の判定結果と一致する予測結果を得られる。
本発明によれば、分岐履歴情報に従った判定予測とプログラム設計者の予測(分岐予測方向ビット)に従った判定予測との両面から、分岐命令の判定予測を行うことにより、分岐予測成功率を向上することができ、分岐命令の成功または不成功による命令フェッチのやり直しを極力へらすことができる、という効果がある。
次に、本発明の実施形態について図面を参照して説明する。
図1は、本発明の一実施形態であるマイクロプロセッサの概略構成を示すブロック図である。図1を参照すると、マイクロプロセッサは、SW(ソフトウェア)命令により起動される、RISC型のマイクロプロセッサであって、その主要部は、プログラムカウンタ1、マイクロ命令格納メモリ2、デコーダ3、命令レジスタ4、アドレス生成回路5、オペランド取り出し回路6、演算結果格納レジスタ7、分岐判定回路8、パイプラインキャンセル判定回路9、分岐履歴バッファ10、予測情報持ち回りレジスタ11〜14、分岐履歴バッファ格納情報生成回路15、分岐予測方向決定回路16、および選択回路17から構成されている。
プログラムカウンタ1は、実行すべきマイクロ命令のアドレスを指定するものである。このプログラムカウンタ1の出力(指定アドレス)は、マイクロ命令格納メモリ2、分岐履歴バッファ10、および予測情報持ち回りレジスタ11のそれぞれに供給される。マイクロ命令格納メモリ2は、プログラムを実行するための一連のマイクロ命令を格納する命令キャッシュであって、プログラムカウンタ1が指し示すアドレスによって索引されるマイクロ命令をデコーダ3へ出力する。このプログラムカウンタ1により指定されたアドレスに基づく命令の取り出しが、パイプラインの命令フェッチ(IF)のステージに対応する。
デコーダ3は、マイクロ命令格納メモリ2から索引された命令をデコードする。デコーダ3の出力(デコード結果)は、命令レジスタ4、分岐予測方向決定回路16、予測情報持ち回りレジスタ11、および選択回路17にそれぞれ供給される。命令レジスタ4は、デコーダ3でのデコード結果を格納するものである。マイクロ命令がデコーダ3でデコードされ、そのデコード結果が命令レジスタ4に格納されるまでの処理が、パイプラインの命令デコード(RF)のステージに対応する。
アドレス生成回路5は、命令レジスタ4に格納されたデコード結果に基づいてマイクロ命令を実行してアドレス計算を行う。このアドレス生成回路5によるアドレス計算が、パイプラインの命令実行(EX)のステージに対応する。
オペランド取り出し回路6は、アドレス生成回路5で計算したアドレスに基づいてオペランドデータの取り出しを行う。このオペランド取り出し回路6によるオペランドデータの取り出しが、パイプラインのオペランドフェッチ(MEM)のステージに対応する。
演算結果格納レジスタ7は、アドレス生成回路5で計算したアドレスやオペランド取り出し回路6で取り出したオペランドデータを格納するものである。この演算結果格納レジスタ7による演算結果(アドレスやオペランドデータ)の格納が、パイプラインのライトバック(WB)のステージに対応する。
分岐判定回路8は、分岐命令が実行された場合に、演算結果格納レジスタ7に格納された演算結果に基づいて分岐判定を行う。分岐判定回路8の出力(分岐判定結果)は、パイプラインキャンセル判定回路9および分岐履歴バッファ格納情報生成回路15にそれぞれ供給される。
パイプラインキャンセル判定回路9は、分岐判定回路8から供給される分岐判定結果と予測情報持ち回りレジスタ14から供給される分岐予測結果とに基づいてパイプラインキャンセルを行うか否かを判断する。パイプラインキャンセルを行うと判断した場合は、パイプラインキャンセル判定回路9は、パイプライン上のデータや命令を放棄するとともに、正しい命令を再索引するための信号(アドレス)を、選択回路17を介してプログラムカウンタ1に供給する。
分岐予測方向決定回路16は、命令フェッチのステージにおいて、デコーダ3にてデコードされたマイクロ命令が分岐命令であるか否かを判断する。デコードされたマイクロ命令が分岐命令であると判断した場合は、分岐予測方向決定回路16は、デコードされた分岐命令中に含まれている分岐予測方向ビットと分岐履歴バッファ10に格納されているデコードされた分岐命令に関する履歴情報とに基づいて、デコードされた分岐命令が成立/不成立のいずれになるかを予測する(分岐予測方向決定)。分岐予測方向決定回路16での予測結果は、分岐予測情報の一部の情報として予測情報持ち回りレジスタ11に供給される。
デコードされた分岐命令が不成立になると予測した場合は、分岐予測方向決定回路16は、デコードされた分岐命令のアドレスに固定命令語長を加えたアドレス(分岐命令の後続命令アドレス)を、選択回路17を介してプログラムカウンタ1に供給する。これにより、プログラムカウンタ1によって後続命令アドレスが指定されることになり、マイクロ命令格納メモリ2から後続命令がフェッチされることになる。
デコードされた分岐命令が成立すると予測した場合は、分岐予測方向決定回路16は、デコードされた分岐命令に含まれている分岐先アドレスを、選択回路17を介してプログラムカウンタ1に供給する。これにより、プログラムカウンタ1によって分岐先アドレスが指定されることになり、マイクロ命令格納メモリ2から分岐先の命令がフェッチされることになる。
予測情報持ち回りレジスタ11〜14は、デコーダ3でデコードされた分岐命令に関する分岐予測方向決定回路16での分岐予測方向決定結果を含む分岐予測情報を、そのデコードされた分岐命令についてのパイプラインの各ステージにおける処理に同期して持ち回るためのレジスタである。
分岐履歴バッファ格納情報生成回路15は、予測情報持ち回りレジスタ14から供給される分岐予測情報および分岐判定回路8から供給される分岐判定結果に基づいて、実行された分岐命令に関する分岐履歴情報を生成して分岐履歴バッファ10に格納する。分岐履歴情報は、実行された分岐命令を識別するための情報(例えば分岐命令アドレス)と実行された分岐命令の分岐判定結果(成立または不成立)とを含む。分岐履歴バッファ10には、分岐命令毎に分岐履歴情報が格納される。
次に、分岐命令および分岐予測情報について具体的に説明する。
図2に、分岐命令のフォーマットを示す。図2を参照すると、分岐命令は、命令語を示すOPコード20、分岐予測方向を決定するための分岐予測方向ビット22、分岐予測方向ビット22の有効/無効を示す分岐予測Vビット21、分岐判定に使用する分岐判定用レジスタナンバー23、および分岐先命令のアドレスを示す分岐先アドレス24から構成される。フェッチされたマイクロ命令が分岐命令であるか否かは、OPコード20で判断することができる。
分岐予測方向ビット22は、プログラムを作成する段階で、プログラム設計者によって設定される。分岐条件が成立するか否かがプログラムの性質に依存する傾向が高いという知見に基づいて、プログラム設計者は、分岐命令において分岐条件が成立/不成立のいずれになるかを予測し、その予測した結果に基づいて分岐予測方向ビット22を設定する。分岐予測方向ビット22に予測した値を設定した場合は、分岐予測Vビット21は「有効」とされる。分岐予測方向ビット22を設定しない場合は、分岐予測Vビット21は「無効」とされる。
図3に、予測情報持ち回りレジスタ11〜14で持ち回る分岐予測情報のフォーマットを示す。図3を参照すると、分岐予測情報は、分岐予測情報の有効性を示すVビット30と、分岐予測として分岐成功・不成功のどちらで動作しているかを示す分岐予測方向ビット31と、分岐条件が不成立とされた場合に用いられる、後続命令のアドレス(「分岐命令アドレス+マイクロ命令語長」)32と、分岐条件が成立とされた場合に用いられる分岐先アドレス33とを含む。
次に、本実施形態のマイクロプロセッサの動作について説明する。
本実施形態のマイクロプロセッサは、フェッチされたマイクロ命令が分岐命令である場合のパイプライン処理に特徴がある。図4に、そのパイプライン処理のフローチャートを示す。
図4を参照すると、まず、プログラムカウンタ1によって指し示されたアドレスに基づいてマイクロ命令格納メモリ2からマイクロ命令が取り出される(ステップS10)。この取り出されたマイクロ命令に対して、デコーダ3、命令レジスタ4、アドレス生成回路5、オペランド取り出し回路6、および演算結果格納レジスタ7の各部における処理が順に実行される。この一連の処理がパイプラインの各ステージに対応する。
ステップS10でフェッチしたマイクロ命令に対してパイプラインの各ステージの処理が行われる過程において、ステップS11〜S17の処理が実行される。
ステップS11では、分岐予測方向決定回路16が、ステップS10でフェッチしたマイクロ命令が分岐命令であるか否かを判断する。フェッチしたマイクロ命令が分岐命令である場合は、分岐予測方向決定回路16は、フェッチしたマイクロ命令に関する分岐履歴情報を分岐履歴バッファ10から取得し、その取得した分岐履歴情報と、フェッチしたマイクロ命令に含まれている分岐予測方向ビットとに基づいて、閾値に基づく分岐予測判定を行う。分岐予測判定結果は、分岐予測情報として予測情報持ち回りレジスタ11〜14により保持される。
図5に、閾値に基づく分岐予測判定の一例を模式的に示す。図5において、連続同一分岐判定回数Xは、分岐判定回路8にて、成立または不成立の判定が連続して何回続いたかを示す。連続同一分岐判定回数Xは、分岐履歴バッファ10に格納された分岐履歴情報から取得することができる。分岐履歴バッファ10には、分岐判定回路8にて分岐条件の判定が行われる度に、その判定結果(成立または不成立)を含む分岐履歴情報が分岐命令毎に格納される。したがって、分岐予測方向決定回路16は、デコードされた分岐命令に関する分岐履歴情報を分岐履歴バッファ10から取得し、その取得した分岐履歴情報に基づいて、デコードされた分岐命令が前回の分岐判定時において、成立または不成立の判定が連続して何回続いたかを判断することができる。
連続同一分岐判定回数Xが閾値A以下の場合は、分岐予測方向決定回路16は、デコーダ3によりデコードされた分岐命令に含まれている分岐予測方向ビット(図2の分岐予測方向ビット21)に基づいて分岐予測を行う。具体的には、分岐予測方向ビット21に「成立」を示す情報が設定されている場合は、分岐予測方向決定回路16は、デコーダ3によりデコードされた分岐命令に対して、分岐条件が成立すると予測し、デコードされた分岐命令に含まれている分岐先アドレスをプログラムカウンタ1に供給する。分岐予測方向ビット21に「不成立」を示す情報が設定されている場合は、分岐予測方向決定回路16は、分岐条件が不成立になると予測し、デコーダ3によりデコードされた分岐命令のアドレスにマイクロ命令語長を加えた後続命令アドレスをプログラムカウンタ1に供給する。
連続同一分岐判定回数Xが閾値Aを越えた場合は、分岐予測方向決定回路16は、分岐履歴バッファ10に格納されている分岐履歴情報に従って分岐予測を行う。ここで、閾値Aを「3」とし、分岐判定回路8にて、4回連続して分岐条件が成立した旨の判定が行われた場合について説明する。この場合は、分岐履歴バッファ10には、デコードされた分岐命令のアドレスによって特定される分岐履歴情報として、分岐条件が4回連続して成立したことを示す履歴情報が格納される。分岐予測方向決定回路16は、分岐履歴バッファ10に格納された履歴情報に基づいて、デコーダ3によりデコードされた分岐命令に対して、分岐条件が成立すると予測し、デコードされた分岐命令に含まれている分岐先アドレスをプログラムカウンタ1に供給する。なお、分岐履歴バッファ10に、デコードされた分岐命令のアドレスによって特定される分岐履歴情報として、分岐条件が4回連続して不成立になったことを示す履歴情報が格納された場合は、分岐予測方向決定回路16は、デコーダ3によりデコードされた分岐命令に対して、分岐条件が不成立になると予測し、デコーダ3によりデコードされた分岐命令のアドレスにマイクロ命令語長を加えた後続命令アドレスをプログラムカウンタ1に供給する。
ステップS12で分岐予測判定が行われた後、ステップS13で、プログラムカウンタ1が、分岐予測方向決定回路16から供給されるアドレス(分岐先アドレスまたは後続命令アドレス)を指定し、その指定アドレスに基づいてマイクロ命令格納メモリ2からマイクロ命令が取り出される。この取り出されたマイクロ命令に対して、デコーダ3、命令レジスタ4、アドレス生成回路5、オペランド取り出し回路6、および演算結果格納レジスタ7の各部における処理が順に実行される。この処理は、ステップ10でフェッチしたマイクロ命令(分岐命令)のパイプライン処理と並列して行われる。
ステップ10でフェッチしたマイクロ命令(分岐命令)に対するパイプライン処理が行われると、ステップS14で、分岐判定回路8が、その分岐命令に対する実行結果(演算結果)から、分岐条件が成立/不成立のいずれになったかを判定する。具体的には、分岐判定回路8は、分岐命令語中の分岐判定用レジスタナンバーが指し示す演算結果格納レジスタ7の内容に基づいて分岐判定を行う。この分岐判定の時点では、分岐命令が必要としている演算結果格納レジスタ7内のデータは確定しているので、正しい分岐方向(分岐判定結果)を得ることができる。分岐判定後、パイプラインキャンセル判定回路9が、分岐判定回路8での判定結果と予測情報持ち回りレジスタ11〜14により保持されている分岐予測情報(ステップS12の分岐予測判定の結果を含む)とに基づいて、パイプラインをキャンセルするか否かを判断する。
ここで、パイプラインキャンセル判定について具体的に説明する。分岐判定回路8からの判定結果には、「成立」と「不成立」があり、分岐予測情報にも、「成立」と「不成立」がある。判定結果および分岐予測情報がともに「成立」である場合は、予測した分岐判定結果が実際の判定結果と合致したことになるため、パイプラインキャンセル判定回路9は、「キャンセル無し」と判断する(条件1)。判定結果および分岐予測情報がともに「不成立」である場合も、予測した分岐判定結果が実際の判定結果と合致したことになるため、パイプラインキャンセル判定回路9は、「キャンセル無し」と判断する(条件2)。判定結果が「成立」で、分岐予測情報が「不成立」である場合は、予測した分岐判定結果が実際の判定結果と合致しないことになるため、パイプラインキャンセル判定回路9は、「キャンセル有り」と判断する(条件3)。判定結果が「不成立」で、分岐予測情報が「成立」である場合も、予測した分岐判定結果が実際の判定結果と合致しないことになるため、パイプラインキャンセル判定回路9は、「キャンセル有り」と判断する(条件4)。
「キャンセル有り」と判断した場合(条件3または条件4)は、ステップS15で、パイプラインキャンセル判定回路9が、パイプライン上の命令を無効化する。そして、ステップS16で、パイプラインキャンセル判定回路9が、予測情報持ち回りレジスタ14内にある後続命令アドレス(「分岐命令アドレス+マイクロ命令語長」)をプログラムカウンタ1へ供給する。これにより、正しい命令の再索引が行われる。
「キャンセル無し」と判断した場合(条件1または条件2)は、ステップS17で、パイプラインキャンセル判定回路9が、予測情報持ち回りレジスタ14内にある分岐先アドレスをプログラムカウンタ1へ供給する。そして、ステップS17で、パイプラインキャンセル判定回路9が、実行された分岐命令(ステップ10でフェッチしたマイクロ命令)に含まれている分岐先アドレスをプログラムカウンタ1へ供給する。これにより、分岐先のアドレスに基づく索引が行われる。
上述のようにしてマイクロ命令格納メモリ2からマイクロ命令がフェッチされ、フェッチしたマイクロ命令に対してパイプライン処理が実行される度に、分岐履歴バッファ格納情報生成回路15が、分岐判定回路8と予測情報持ち回りレジスタ14の情報に基づいて分岐履歴バッファ10内の分岐履歴情報を更新する。
本実施形態のマイクロプロセッサによれば、分岐命令を含む一連のマイクロ命令に対してパイプライン処理を実行する場合において、分岐命令の実行結果として同じ判定結果が連続する場合で、連続同一分岐判定回数Xが閾値A以下の場合は、分岐命令に含まれている分岐方向予測ビット(プログラム設計者によって設定された予測結果)に基づいて分岐条件の判定の予測が行われ、その予測結果に従ってマイクロ命令の先取りが行われる。また、連続同一分岐判定回数Xが閾値Aを越えた場合には、分岐履歴バッファ10に格納された分岐履歴情報に従って分岐命令の判定結果が予測され、その予測した判定結果に基づいてマイクロ命令の先取りが行われる。この動作により、以下のような作用・効果を有する。
プログラム設計者は、例えば、分岐命令について、分岐条件が成立する確率が高いと予想した場合に、分岐命令に含まれる分岐予測方向ビット(図2の分岐予測方向ビット22)を、「成功」を示す値に設定する。この場合、連続同一分岐判定回数Xが閾値A以下の場合は、分岐条件の判定の予測結果は「成功」となる。分岐条件が成立する実際の確率が、例えば80%である場合、プログラム設計者の予測が当たっていれば、パイプラインがキャンセルされる割合は、全体の20%となり、その分、パイプラインのストールを抑制することができる。
分岐予測方向ビットに従ったマイクロ命令の先取りの動作のみだけでは、プログラム設計者の予測が外れた場合に、パイプラインがキャンセルされる割合が増大してしまい、パイプラインのストールを抑制する効果が半減する。本実施形態では、連続同一分岐判定回数Xが閾値Aを越えた場合には、分岐履歴バッファ10に格納された分岐履歴情報に従ったマイクロ命令の先取りが行われる。この動作によれば、例えば、最初の3回までは、プログラム設計者の予測(図2の分岐予測方向ビット22)に従ったマイクロ命令の先取りが行われるが、それ以降は、分岐履歴バッファ10に格納された分岐履歴情報に従ったマイクロ命令の先取りが行われる。したがって、プログラム設計者の予測が外れた場合は、4回目以降について、分岐履歴情報に従ったマイクロ命令の先取りにより、実際の判定結果と一致する予測結果を得られる。
以上説明した本実施形態のマイクロプロセッサは、本発明の一例であり、その構成および動作は、発明の趣旨を逸脱しない範囲で適宜に変更することができる。例えば、閾値に基づく分岐予測判定において、図6に示すように、閾値Aに加えて、閾値B(B<A)を設定してもよい。この場合は、X>AまたはX≦Bの条件を満たす場合において、分岐履歴バッファ10に格納された分岐履歴情報に従ったマイクロ命令の先取りが行われ、B<X≦Aの条件を満たす場合において、分岐予測方向ビットに従ったマイクロ命令の先取りが行われる。この動作によれば、例えば、プログラム設計者の予測が外れた場合において、X>Aの範囲だけでなく、X≦Bの範囲においても、分岐履歴情報に従ったマイクロ命令の先取りにより、実際の判定結果と一致する予測結果を得られる。
また、予測情報持ち回りレジスタは、パイプラインのステージにおける処理に同期して分岐予測情報を保持することができればよく、その数は、ステージの数によって決まる(パイプラインの処理サイクルによって決まる)。
本発明の一実施形態であるマイクロプロセッサの概略構成を示すブロック図である。 分岐命令のフォーマットを示す模式図である。 分岐予測情報のフォーマットを示す模式図である。 図1に示すマイクロプロセッサにおいて行われるパイプライン処理の一手順を示すフローチャートである。 閾値に基づく分岐予測判定処理を説明するための図である。 閾値に基づく別の分岐予測判定処理を説明するための図である。
符号の説明
1 プログラムカウンタ
2 マイクロ命令格納メモリ
3 デコーダ
4 命令レジスタ
5 アドレス生成回路
6 オペランド取り出し回路
7 演算結果格納レジスタ
8 分岐判定回路
9 パイプラインキャンセル判定回路
10 分岐履歴バッファ
11〜14 予測情報持ち回りレジスタ
15 分岐履歴バッファ格納情報生成回路
16 分岐予測方向決定回路
17 選択回路

Claims (4)

  1. 分岐命令を含む一連の命令が格納される命令格納メモリを備え、該命令格納メモリから命令を取り出して複数のステージからなるパイプライン処理を実行するとともに、該命令のパイプライン処理実行中に、該命令の次に実行される命令を前記命令格納メモリから先取りするマイクロプロセッサであって、
    前記分岐命令は、当該分岐命令の分岐条件の判定を予想した結果が予め設定される分岐予測方向ビットを有し、
    記命令格納メモリから前記分岐命令が取り出され、該分岐命令について前記パイプライン処理が実行されると、該実行結果に基づいて、該分岐命令の分岐条件が成立したか否かを判定する分岐判定回路と、
    前記分岐判定回路の判定結果を前記分岐命令の分岐履歴情報として格納する分岐履歴バッファと、
    記命令格納メモリから取り出された命令が前記分岐命令である場合に、前記分岐履歴バッファに格納された前記分岐命令に関する分岐履歴情報を参照して、前記分岐命令における分岐条件の成立または不成立の目下の連続回数を調べ、該連続回数が閾値以下の場合は、前記分岐命令に含まれている前記分岐予測方向ビットに設定された値に基づいて前記分岐命令における分岐条件の判定結果を予測し、前記連続回数が前記閾値を超えた場合には、前記履歴バッファに格納された前記分岐命令に関する分岐履歴情報を参照して前記分岐命令における分岐条件の判定結果を予測する分岐予測方向決定部と、
    前記分岐予測方向決定部で予測した判定結果に基づいて、前記命令格納メモリからマイクロ命令を先取りするためのアドレスを指定するプログラムカウンタと、を有する、マクロプロセッサ。
  2. 前記分岐予測方向決定部で予測した判定結果を保持する予測情報持ち回りレジスタと、
    記命令格納メモリから取り出した分岐命令について、前記分岐判定回路にて分岐条件の判定が行われると、該判定結果と、前記予測情報持ち回りレジスタに保持された、該分岐命令について前記分岐予測方向決定部で予測した判定結果とを比較し、両比較結果が不一致となった場合に、前記命令格納メモリから先取りした命令についての処理を全てキャンセルするパイプラインキャンセル判定回路と、をさらに有する、請求項に記載のマクロプロセッサ。
  3. 分岐命令を含む一連の命令が格納される命令格納メモリを備え、該命令格納メモリから命令を取り出して複数のステージからなるパイプライン処理を実行するとともに、該命令のパイプライン処理実行中に、該命令の次に実行される命令を前記命令格納メモリから先取りするマイクロプロセッサのパイプライン制御方法であって、
    前記分岐命令は、当該分岐命令の分岐条件の判定を予想した結果が予め設定される分岐予測方向ビットを有し、
    記命令格納メモリから前記分岐命令が取り出され、該分岐命令について前記パイプライン処理が実行されると、該実行結果に基づいて、該分岐命令の分岐条件が成立したか否かを判定する分岐判定ステップと、
    前記分岐判定ステップの判定結果を前記分岐命令の分岐履歴情報として分岐履歴バッファに格納する分岐履歴格納ステップと、
    記命令格納メモリから取り出された命令が前記分岐命令である場合に、前記分岐履歴バッファに格納された前記分岐命令に関する分岐履歴情報を参照して、前記分岐命令における分岐条件の成立または不成立の目下の連続回数を調べ、該連続回数が閾値以下の場合は、前記分岐命令に含まれている前記分岐予測方向ビットに設定された値に基づいて前記分岐命令における分岐条件の判定結果を予測し、前記連続回数が前記閾値を超えた場合には、前記履歴バッファに格納された前記分岐命令に関する分岐履歴情報を参照して前記分岐命令における分岐条件の判定結果を予測する分岐予測方向決定ステップと、
    前記分岐予測方向決定ステップで予測した判定結果に基づいて、前記命令格納メモリからの命令の先取りを行う命令先取りステップと、を含む、パイプライン制御方法。
  4. 前記分岐予測方向決定ステップで予測した判定結果を予測情報持ち回りレジスタで保持する予測情報保持ステップと、
    記命令格納メモリから取り出した分岐命令について、前記分岐判定ステップにて分岐条件の判定が行われると、該判定結果と、前記予測情報持ち回りレジスタに保持された、該分岐命令について前記分岐予測方向決定ステップで予測した判定結果とを比較し、両比較結果が不一致となった場合に、前記命令格納メモリから先取りした命令について処理を全てキャンセルするパイプラインキャンセル判定ステップと、をさらに含む、請求項に記載のパイプライン制御方法。
JP2006148190A 2006-05-29 2006-05-29 マイクロプロセッサおよびパイプライン制御方法 Expired - Fee Related JP4728877B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006148190A JP4728877B2 (ja) 2006-05-29 2006-05-29 マイクロプロセッサおよびパイプライン制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006148190A JP4728877B2 (ja) 2006-05-29 2006-05-29 マイクロプロセッサおよびパイプライン制御方法

Publications (2)

Publication Number Publication Date
JP2007317083A JP2007317083A (ja) 2007-12-06
JP4728877B2 true JP4728877B2 (ja) 2011-07-20

Family

ID=38850866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006148190A Expired - Fee Related JP4728877B2 (ja) 2006-05-29 2006-05-29 マイクロプロセッサおよびパイプライン制御方法

Country Status (1)

Country Link
JP (1) JP4728877B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013250593A (ja) * 2012-05-30 2013-12-12 Renesas Electronics Corp 半導体装置
CN114090077B (zh) * 2021-11-24 2023-01-31 海光信息技术股份有限公司 调取指令的方法及装置、处理装置及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001243070A (ja) * 2000-02-29 2001-09-07 Toshiba Corp プロセッサ及び分岐予測方法並びにコンパイル方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5815809B2 (ja) * 1975-04-21 1983-03-28 日本電気株式会社 ジヨウホウシヨリソウチ
JPH0760386B2 (ja) * 1987-10-20 1995-06-28 三菱電機株式会社 分岐予測機能を有するデータ処理装置
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001243070A (ja) * 2000-02-29 2001-09-07 Toshiba Corp プロセッサ及び分岐予測方法並びにコンパイル方法

Also Published As

Publication number Publication date
JP2007317083A (ja) 2007-12-06

Similar Documents

Publication Publication Date Title
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP5917616B2 (ja) 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置
EP2069915B1 (en) Methods and system for resolving simultaneous predicted branch instructions
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
US20090125707A1 (en) System and method for speculative global history prediction updating
JP5815596B2 (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
KR20090094335A (ko) 서브루틴 호를 인지하기 위한 방법들 및 장치
KR101048178B1 (ko) 링크 스택 회로를 정정하는 방법 및 장치
US20040225866A1 (en) Branch prediction in a data processing system
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP2001236224A (ja) 分岐予測テーブル汚染の低減方法
JP3839755B2 (ja) 命令制御方法及びプロセッサ
JP5696210B2 (ja) プロセッサ及びその命令処理方法
JP2004038338A (ja) 分岐予測機構を有する情報処理装置
JP2010015298A (ja) 情報処理装置及び命令フェッチ制御方法
JP4002288B2 (ja) 情報処理装置
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
US6948055B1 (en) Accuracy of multiple branch prediction schemes
JP3971780B2 (ja) 命令制御方法
JP2006235723A (ja) 命令フェッチ回路
JPH09311787A (ja) データ処理装置
JP2014059665A (ja) マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法
JP2006277774A (ja) 分岐予測機構を有する情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110210

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110406

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110415

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees