(57)【要約】      （修正有）【課題】  分岐予測部を備えた情報処理装置において、処理遅延を抑制することの可能な装置及び方法を提供する。【解決手段】  サブルーチンのコール命令又はリターン命令に相当する分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、分岐命令が実行されなかったときには、ブランチヒストリへの書き込みを行うが、当該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報は無効化する。リターンアドレススタックは、完了した分岐命令がコール命令又はリターン命令に相当するときに動作する。【選択図】図２６
2006024231.tif 000002
【特許請求の範囲】
【請求項１】
分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置において、
前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合において、
前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記ブランチヒストリ手段への書き込み対象となる該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させない制御手段を有することを特徴とする命令実行処理装置。
【請求項２】
分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置において、
前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
前記ブランチヒストリ手段に対する書き込み保留中の該分岐履歴情報を保持するための書き込みリザベーションステーション手段と、
サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合において、
前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記書き込みリザベーションステーション手段に保持されている該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させない制御手段を有することを特徴とする命令実行処理装置。
【請求項３】
分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置の命令制御方法において、
前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合においては、
前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記ブランチヒストリ手段への書き込み対象となる該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させないステップを有することを特徴とする命令制御方法。
【請求項４】
分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置の命令制御方法において、
前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
前記ブランチヒストリ手段に対する書き込み保留中の該分岐履歴情報を保持するための書き込みリザベーションステーション手段と、
サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合においては、
前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記書き込みリザベーションステーション手段に保持されている該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させないステップを有することを特徴とする命令制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分岐予測部を採用した情報処理装置における分岐履歴情報書き込み制御装置に関する。
【背景技術】
【０００２】
命令実行処理装置においては、パイプライン処理をはじめとする技術を用い、ある命令の実行の完了を待たずに後続の命令の実行を次々と開始することで、性能の向上を図っている。ここで、先行する命令が、分岐命令のように後続の実行シーケンスを変更する命令である場合には、分岐が成立する場合には分 岐先の命令を実行パイプラインに投入しなければ、実行パイプラインが乱されて、最悪の場合には逆に性能が落ちてしまう。ここで、ブランチヒストリに代表される分岐予測部を設けて、分岐の成立を予測し、分岐成立が予測された場合には、分岐命令の後ろに分岐先の命令を実行制御部あるいは命令処理部に投入することで、性能の向上を図ってきた。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来技術における分岐予測部では、分岐制御部において実行完了した分岐命令の分岐履歴情報を、命令フェッチを一時停止させる形で、ブランチヒストリに登録していた。
【０００４】
この方式においては、特に、分岐予測に失敗して正しい後続命令を実行し直す、すなわち、再命令フェッチが生じるケースにおいて、命令一時バッファが空であるが故にフェッチ要求頻度が高いにも関わらず、該完了分岐命令のブランチヒストリへの分岐履歴情報の書き込みによって、命令フェッチパイプラインを一時中断してしまうために、性能が上がっていなかった。
【０００５】
すなわち、図２９に示される分岐命令ＢＣの実行のように、分岐命令の実行サイクルのＷサイクルにおいて、ブランチヒストリへ分岐履歴情報を書き込むが、通常、ブランチヒスト リはＲＡＭで構成されるため、１回に１度のアクセスしか許容できない。従って、分岐先の命令の再命令フェッチは、分岐命令のＷサイクルよりも１クロック遅れて開始されることになる。
【０００６】
また、分岐履歴情報は、分岐制御部内で完了可能になった時点でブランチヒストリに書き込むようにしており、本当の分岐実行完了時点で書き込んではないために、分岐実行の完了直前に割り込みが起こるケースで、リターンアドレススタックが誤動作してしまう場合が生じていた。
【０００７】
ショートループがある場合、すなわち、例えば、図３０（ａ）のような命令列では、一回の命令フェッチでこの命令列をフェッチしてしまうことが出来る。従って、図３０（ｂ）のようなタイミングとなり、再命令フェッチよりも分岐履歴情報の書き込みが遅れるために、再命令フェッチ直後にループする分岐命令などがある場合には、正しい分岐予測が行えない。このため、この場合には１回余分に再命令フェッチが行われるので、性能劣化を引き起こしていた。
【０００８】
本発明の課題は、分岐予測部を備えた情報処理装置において、処理遅延を抑制することの可能な命令実行制御装置及びその方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明における装置は、分岐命令の分岐予測を行う分岐予測手段を備えた命令実 行処理装置における分岐履歴情報書き込み制御装置において、リターンアドレススタック手段と、前記分岐命令がサブルーチンのコールもしくはリターンに相当する命令であり、該分岐予測手段に前記分岐命令の分岐履歴情報の書き込み要求を出したにも関わらず、前記分岐命令が実行されなかったときは、該分岐予測手段に前記分岐履歴情報を書き込むものの、該リターンアドレススタック手段は動作させないように制御する制御手段とを備えることを特徴とする。
【００１０】
本発明における方法は、分岐命令の分岐予測を行う分岐予測部と、リターンアドレススタックとを備える装置における命令制御方法であって、分岐命令を実行した結果のサブルーチンのコールもしくはリターンに相当する命令が該分岐予測部に前記分岐履歴情報の書き込み要求を出したにも関わらず、該分岐命令が実行されなかったときは、該分岐予測部に分岐履歴情報を書き込み、該リターンアドレススタックは動作させないように制御するステップを備えることを特徴とする。
【００１１】
本発明によれば、従来、分岐履歴情報を命令フェッチを待たせて、分岐予測部（ブランチヒストリ）に書き込んでいたのを、命令フェッチを待たせることなく、ブランチヒストリへの分岐履歴情報と命令フェッチなどのメモリへの制御が同時に生じないタイミングを見計らって、分岐履歴情 報をブランチヒストリに書き込むようにしたので、命令フェッチが待たされることが無く、命令の実行処理速度を向上させることが出来る。
【発明の効果】
【００１２】
本発明によれば、分岐命令の実行において、ブランチヒストリへのエントリの書き込みのタイミングをずらすことにより、命令フェッチ要求を優先的に処理することが可能となり、処理遅延をなくすことが出来る。
【００１３】
また、本発明によれば、実際に実行されなかった分岐命令のブランチヒストリが報告されてきたとき、ブランチヒストリに登録はしても、リターンアドレススタックを動作させないので、後続のサブルーチンコール・リターン対の対応が崩れることを防ぎ、サブルーチンリターン命令の分岐先アドレスの予測の失敗をなくすことができる。
【発明を実施するための最良の形態】
【００１４】
本発明の実施形態においては、ブランチヒストリを索引している間は分岐履歴情報の書き込みを保留し、該索引をしないサイクルに分岐履歴情報の書き込みを行う。この手法により、命令フェッチが阻害されることが無くなるので、パイプライン処理がスムーズに行え前記性能劣化を防ぐことが可能となる。
【００１５】
すなわち、図１に示されるように、図２９に対応する命令列を実行する場合、ＮＯＰ５の命令フェッチが、従来では、分岐命令ＢＣのＷサイクルの後に開始されていたが、本実施形態では、分岐命令ＢＣのＷサイクルと同じサイクルで、ＮＯＰ５の命令フェッチを開始することが出来る。従って、本実施形態を適用することにより、平均１クロックの性能改善を図ることができる。
【００１６】
また、再命令フェッチ直後の命令フェッチの密度が高い間は、ブランチヒストリへの書き込みを保留する。特に、再命令 フェッチ直後の数クロックは新たに分岐命令が実行完了されることはあり得ないので、このようにすることで、次に記すようにリザベーションステーションを設けなくとも、規模の小さい回路で性能劣化の大部分を防ぐことができる。
【００１７】
本発明の実施形態では、前記分岐履歴情報の書き込み保留をするための一時的なバッファの実現方法を提供する。このようなバッファの機能を実現する保留装置として、リザベーションステーションを設けることで、命令フェッチ要求が続く場合、すなわち、命令パイプラインが非常にスムーズに流れているようなケースにおいても、命令フェッチ要求を阻害する要因をなくすこと ができるので、性能劣化を防ぐことができる。
【００１８】
また、前記保留装置により分岐履歴情報の書き込み保留中に、更に書き込み要求があった場合や、前記一時バッファとなるリザベーションステーションの溢れを防止するための制御方法を提供する。このような本実施形態によれば、漏れなく分岐履歴情報をブランチヒストリに登録・更新することが可能となる。
【００１９】
更に、ブランチヒストリの構成により、複数の分岐履歴を同一サイクルで同時に書き込みを行う。別のエントリを保持しうる複数のＲＡＭなどで構成されるブランチヒストリでは、最大その構成するＲＡＭの数だけ、同時に異なるエントリを書き込むことが可能となる。このようにすることで、明らかに、多くの分岐命令の履歴情報を、分岐予測のための読み出しの阻害要因を低下させながら、ブランチヒストリに書き込みを行うことができる。
【００２０】
また、分岐命令が完了するよりも前に、その分岐履歴情報をブランチヒストリに報告する。一般にアウトオブオーダなどの手法をとる命令実行制御装置では、ある命令の実行そのものは完了するための条件がそろっているにもかかわらず、前の命令が完了できないために待たされる場合がある。特に、このようなケースでは、その完了できなかった命令が完了条件を満たすと、その後、待たされていた命令を集中して完了しようとする。従って、このような方法を取ることによって、ブランチヒストリへの書き込み負荷を分散させることができる。
【００２１】
また、リターンアドレススタックを持つ分岐予測部の場合、実際に実行されなかった分岐命令の分岐履歴情報が報告されてきたとき、リターンアドレススタックを動作させてしまうと、その性質上、後続のサブルーチンのコール・リターン対の対応が崩れてしまい、サブルーチンリターン命令の分岐先アドレスの予測に失敗する。従って、ブランチヒストリに分岐命令は登録はしても、リターンアドレススタックは、それが本当に実行されない限りは、実行中の該コール・リターン命令によって誤動作させないようにする。
【００２２】
また、命令の実行完了まで、その分岐履歴情報の登録・更新を待たせる。この場合、実行完了と同時に分岐履歴情報の書き込みを行っても良いし、更に、その書き込みを都合の良いタイミングまで待っても良い。また、この場合、該分岐命令の実行完了を判断するために、命令毎に割り振られるＩＤ番号で認識する方法を用いることができる。また、分岐履歴情報が送られてきたにも関わらず、該分岐命令が実行をキャンセルされた場合には、その書き込みリザベーションステーションの対応する該エントリを無効にすることもできる。実行完了まで待つことで、確実に実行された分岐の履歴情報を用いることになるので、誤った分岐履歴情報が登録されることが無く、分岐予測精度が向上する。
【００２３】
分岐予測部で分岐予測を行う際に、書き込み待ちの分岐履歴情報などを、バイパスして用いることも可能である。このバイパスの採用により、最新の分岐履歴情報を用いることが出来るので、特に局所的なループなどにおいて大きな効果を得ることができる。すなわち、ショートループ１個毎に数クロック程度、パイプラインの処理遅延が改善されることになる。
【００２４】
例えば、図２に示されるように、図３０に対応するショートループを実行する場合、従来、図３０に示すように、二回目のループの命令Ｌ（２）の実行サイクルの内、Ｂサイクルの時に、三回目のループの命令Ｌ（３）の命令フェッチが開始されているが、図２においては、分岐履歴情報をバイパスして使用することにより、命令Ｌ（２）のＩＢサイクルのタイミングで命令Ｌ（３）の命令フェッチが開始されている。このように、本実施形態を使用すれば、図３０に示す従来手法よりも、６クロックの性能改善を図ることが出来る。
【００２５】
また、ブランチヒストリのＲＡＭとして、書き込みと読み出しを同じサイクルで独立して行うことが出来る、デュアルポートＲＡＭを用いる。回路実装に余裕がある場合は、この方法でもっとも簡単に性能劣化を防ぐことができる。
【００２６】
図３は、本発明の実施形態の基本的なブロック図を示す図である。本実施形態の命令実行制御装置は、アウトオブオーダ方式を採用している。従って実行制御部は図３においては、おおよその時間依存しか示されていない。
【００２７】
本実施形態においては、命令フェッチは１度のリクエストで、８バイトアラインされた１６バイトの命令列を確保することができるとする。まず、セレクタ１１には、次にフェッチする命令のアドレスが入力される。セレクタ１１に入力されるアドレスは、加算器１０から入力される、シーケンシャルな命令のアドレス、割り込み処理のスタートアドレス、ブランチヒストリからの分岐予測結果である予測分岐先命令アドレス、及び、分岐命令処理部１７が分岐命令を実行した結果 確定した分岐先命令アドレスである。セレクタ１１は、アウトオブオーダ方式の情報処理装置において、命令の順序を保証する命令完了処理部１９によって制御される、命令実行の流れの制御装置（不図示）によって制御され、各場合において、適切なアドレスを選択するように構成されている。セレクタ１１から出力されたアドレスは、命令フェッチの有効アドレスＩＦ ＥＡＧとして、ブランチヒストリ２０に入力されるとともに、命令フェッチを行うために、主記憶装置１２に入力される。主記憶装置１２は、セレクタ１１から与えられたアドレスに対応する命令を命令キャッシュ１３に入力するとともに、該命令のアドレスは、加算器１０に入力される。命令キャッシュ１３に入力された命令は、命令一時バッファ１４に格納された後、デコーダ１５において、デコードされ、分岐命令処理部１７や、演算命令処理部１８やその他の命令処理部へ送られて処理される。また、分岐命令の場合には、分岐条件の演算などが演算器１６においてなされ、結果が分岐命令処理部１７に入力される。また、演算が分岐命令の決まった演算ではなく、命令列によって記述されている場合には、演算命令処理部１８によって演算され、演算結果が分岐命令処理部１７に入力される。更に、分岐命令処理部１７や演算命令処理部１８の演算完了通知は、命令完了処理部１９において処理され、命令の実行順序の保証及び、アウトオブオーダ方式の命令実行順序の制御に使用される。分岐命令処理部１７からは、分岐命令の実行の結果決定した分岐先命令のアドレスがセレクタ１１に入力される。
【００２８】
図４は、ブランチヒストリの構成例を示す図である。ブランチヒストリ２０は、２つのＲＡＭ２０−１、２０−２からなる構成を持ち、８バイトアラインされた命令フェッチアドレスにより、この２つのＲＡＭ２０−１、２０−２が、それぞれ上位８バイト範囲と下位８バイト範囲の分岐履歴情報を検索する仕組みになっている。本実施形態において、ブランチヒストリ２０には、サブルーチンリターン命令のリターン先予測のために、リターンアドレススタックを設けている（不図示）。
【００２９】
また、本実施形態において、実行処理部における分岐命令処理部１７は、最大４つの分岐命令を処理可能であり、そのうち同時に最大１つの分岐命令の実行完了準備を行い、命令完了制御部１９に送出する。ここで、従来技術においては、このタイミングでブランチヒストリに分岐履歴情報を送出していた。
【００３０】
命令完了制御部１９では、実行中（命令デコードから完了まで）の命令のすべてにＩＩＤ（Instruction ＩＤ）を割り当て、その実行を管理している。本実施形態では、最大１６命令が実行部に存在することが出来る、すなわち、ＩＩＤの値は０〜１５のいずれかが 割り当てられるものとする。
【００３１】
なお、ブランチヒストリ２０は、読み出しと書き込みが同時に行えるデュアルポートＲＡＭを使用するのが好ましい。図５は、再命令フェッチした分岐命令の分岐履歴情報の書き込みを遅らせる構成の概略構成例を示す図である。また、図６及び図７に図５のブロック３１、３２の詳細な構成例を示す。
【００３２】
本実施形態では、分岐命令処理部１７において、分岐予測に失敗したことが判明すると、命令フェッチ部（不図示）へ正しい分岐先命令アドレス（もしくは後続命令アドレス）を発行して、再命令フェッチを要求する。
【００３３】
このとき、命令キャッシュ１３が何らかの理由で該要求を受け付けられない場合には、該要求を受け付けられるようになるまで、再命令フェッチ要求が待たされることになる。再命令フェッチ要求が待たされている間、＋ＲＥＩＦＣＨ ＲＥＱＵＥＳＴはＯＮになったままである。この信号は、直接、ブロック３０に入力する代わりに、後述の図１１の回路を設けて、この回路から出力される信号をブロック３０に入力するようにしても良い。
【００３４】
このケースでは、該要求が待たされた結果、該要求発行のタイミングと、ブランチヒストリ２０への書き込みタイミングが一致してしまう可能性があり、従来技術においては、この場合ブランチヒストリ２０への書き込みが優先され、再命令フェッチ要求は更に１クロック以上遅れることになっていた。本実施形態によれば、必ず再命令フェッチ要求が優先されるため、従来技術のような性能劣化は起こらない。
【００３５】
再命令フェッチ要求（“Ｈ”の＋ＲＥＩＦＣＨ ＲＥＱＵＥＳＴ）がブロック３０に入力されると、ブロック３０からは、ブランチヒストリ２０への分岐履歴情報の書き込み待ち信号の論理反転した信号（−ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥ）と、再命令フェッチの再命令フェッチ信号のホールド信号（＋ＢＲＣＯＭＰ ＲＥＩＦＣＨ ＨＯＬＤ）が出力される。＋ＢＲ ＣＯＭＰ ＲＥＩＦＣＨ ＨＯＬＤは、ブロック３１に入力される。一方、−ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥは、ブロック３２に入力される。ブロック３１では、＋ＢＲＣＯＭＰ ＡＳ ＴＡＫＥＮ等の分岐履歴情報を受け取り、更に、分岐命令アドレス（＋ＢＲ ＣＯＭＰ ＩＡＲ）及び分岐先命令アドレス（＋ＢＲ ＣＯＭＰ ＴＩＡＲ）が入力される。そして、ブランチヒストリ２０への書き込み指示を制御する信号（＋ＣＲＥＡＴＥ ＮＥＷ ＥＮＴＲＹ、＋ＵＰＤＡＴＥ ＯＬＤ ＥＮＴＲＹ、＋ＥＲＡＣＥ ＥＮＴＲＹ）や、分岐履歴情報、分岐命令アドレスにラッチをかませた信号（＋ＢＲ ＣＯＭＰ ＩＡＲ ＬＣＨ）や分岐先命令アドレスにラッチをかませた信号（＋ＢＲ ＣＯＭＰ ＴＩＡＲ ＬＣＨ）が出力される。分岐履歴情報と、分岐先命令アドレスは、ブランチヒストリ２０のデータ書き込み用ポートに入力される。分岐命令アドレスは、命令フェッチアドレス（＋ＩＦ ＥＡＧ）とともに、セレクタ３４に入力される。また、ブロック３２からは、ブランチヒストリ２０への書き込み指示信号が出力され、この信号によってセレクタ３４から適切なアドレスが出力されるとともに、ブランチヒストリ２０を書き込み可の状態として、分岐履歴情報などを書き込み可能とする。
【００３６】
図６は、図５のブロック３１の内容を詳細に示す回路例であり、書き込み待ちの間、データを保持しておく回路の例である。ＡＮＤ回路４１には、ブランチヒストリ２０のエントリのアップデートが有効であるか否かを示す信号の論理反転した信号（−ＢＲＨＩＳ ＵＰＤＡＴＥ ＶＡＬＩＤ）と＋ＢＲ ＣＯＭＰ ＲＥＩＦＣＨ ＨＯＬＤ が入力される。従って、ブランチヒストリのエントリのアップデートが無効で、再命令フェッチが要求されている場合には、ラッチ回路４２に、分岐履歴情報や 分岐命令アドレス、分岐先命令アドレスが保持される。ラッチ回路４２からは、分岐履歴情報と、分岐命令アドレス、分岐先命令アドレスが出力されるとともに、図５で説明したように、分岐履歴情報の中から、ブランチヒストリ２０への書き込み指示信号である、＋ＣＲＥＡＴＥ ＮＥＷ ＥＮＴＲＹ、＋ＵＰＤＡＴＥ ＯＬＤ ＥＮＴＲＹ、＋ＥＲＡＣＥ ＥＮＴＲＹが取り出されて出力される。
【００３７】
図７は、図５のブロック３２の詳細を示す図であり、ブランチヒストリ書き込み制御を行うための信号を生成する回路例である。すなわち、ブランチヒストリ２０に新しいエントリを生成することを指示する信号（＋ＣＲＥＡＴＥ ＮＥＷ ＥＮＴＲＹ）、古いエントリを更新することを指示する信号（＋ＵＰＤＡＴＥ ＯＬＤ ＥＮＴＲＹ）、あるいは、ブランチヒストリのエントリを消去する信号（＋ＥＲＡＣＥ ＥＮＴＲＹ）のいずれかが入力された場合には、ブランチヒストリへの書き込みが待たされていない時（−ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥが論理“Ｈ”のとき）に限り、ブランチヒストリ２０への書き込み有効信号（＋ＷＲＩＴＥ ＢＲＨＩＳ ＶＡＬＩＤ）が出力される。このとき、図５のセレクタ３４において、分岐命令アドレスが選択され、分岐履歴情報がブランチヒストリに書き込まれる。
【００３８】
図８は、図５のブロック３０に対応する回路の一例を示す図である。また、図９は図８の回路の動作を説明するためのタイムチャートである。図８のカウンタは、図９のタイムチャートのとおり再命令フェッチ要求を動作開始のトリガとして（図９（ｂ） 参照）、再命令フェッチ実行、２クロック保持（同図（ｄ）参照）、ブランチヒストリへの書き込み（同図（ｅ）参照）、と状態遷移して、動作待ち（再命令 フェッチ要求待ち）状態に戻る。この方法を用いれば、通常再命令フェッチから３つの命令フェッチ要求が優先されるので、命令一時フェッチ要求に限らず、命令一時バッファ１４が空である場合にも、この手法を適用することができる。この場合、図５や図８の入力信号の一つである＋ＲＥＩＦＣＨ ＲＥＱＵＥＳＴ信号のかわりに、図１１の出力を入れれば良い。
【００３９】
すなわち、同図のカウンタは２ビットで構成されており、＋ＲＥＩＦＣＨ ＲＥＱＵＥＳＴが入力されると、ラッチ回路６０を介して、アンド回路６１とＯＲ回路６２の一方の入力端子にそれぞれ、正論理と反転論理の信号が入力される。なお、同図では、＜０＞が上位ビットであり、＜１＞が下位ビットである。再命令フェッチ信号が“Ｈ”の時には、ラッチ回路６３に保持される値は、“０１”となり、これが維持される。再命令フェッチ信号が“０“になると、ラッチ回路６０のＱ端子からは、“０”が、Ｑの反転端子からは“Ｈ”が出力される。従って、カウンタ値“０１”がＥＸＯＲ回路６４、インバータ６５、ＯＲ回路６６、ＡＮＤ回路６７、６８を介して出力されると、アンド回路６１とＯＲ回路６２から出力される カウンタ値は“１０”となる。ラッチ回路６３には、“１０”が保持されているので、ＥＸＯＲ回路６４の出力は、“１”となり、インバータ６５及び、ＯＲ 回路６６の出力も、“１”となる。従って、ＡＮＤ回路６７と６８の出力はそれぞれ“１”となる。すると、再命令フェッチ信号が“０”となっているので、 ＡＮＤ回路６１には、“１１”が入力され、ＯＲ回路６２には、“１０”が入力され、２ビットのカウンタ値は“１１”となる。このようにして、再命令フェッ チ信号が“０”になると、カウントアップをはじめ、“１１”になるまで、カウントアップする。カウント値が“１１”となると、再び“００”となる。このカ ウント値を受けて、ＥＸＯＲ回路６９は、カウント値が“０１”あるいは、“１０”の時、再命令フェッチ保持信号＋ＢＲ ＣＯＭＰ ＲＥＩＦＣＨＨＯＬＤを出力する（図９（ｄ）参照）。また、カウント値が“００”や“１１”の時は、ブランチヒストリ２０への書き込み許可信号−ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥを出力する。
【００４０】
以上、説明したように、“Ｈ”の再命令フェッチ信号が入力されるとカウント値は、「０」から「１」になり、再命令フェッチ信号が“Ｌ”に落ちると、そのカウント値がカウントアップされる。そして、２クロック後に、該カウント値が「３」になったとき、再命令フェッチ保持信号（＋ＢＲ ＣＯＭＰ ＲＥＩＦＣＨ ＨＯＬＤ）が“Ｌ”となり、ブランチヒストリ２０への書き込み許可信号（＋ＷＲＩＴＥ ＢＲＨＩＳ ＶＡＬＩＤ）が“Ｈ”になって、ブランチヒストリ２０への書き込みが可能となる。
【００４１】
図１０は、図５のボックス３０に当たる回路の他の実施形態を示す図である。同図において、＋Ｄ ＶＡＬＩＤ信号は、命令デコーダ１５において、有効な命令がデコードされたときにＯＮになる信号である。セットリセットフリップフロップ８１には、セット信号として、再命令フェッチ信号（＋ＲＥＩＦＣＨ ＲＥＱＵＥＳＴ）を、リセット信号として、＋Ｄ ＶＡＬＩＤ信号を与える。これにより、再命令フェッチ要求から、それに対応する命令列がデコードされるまで、このフリップフロップ８１の出力信号がＯＮになる。従って、フリップフロップの出力信号がＯＮの間は、＋ＢＲ ＣＯＭＰ ＲＥＩＦＣＨ ＨＯＬＤ信号がＯＮであり、インバータ８２から出力されるその信号の反転信号である−ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥ（＋ＢＲ ＣＯＭＰ ＷＲＩＴＥ）がＯＦＦになる。
【００４２】
図１１は、命令一時バッファが空であるときにも動作させるための回路構成例である。同図の回路は、図５のボックス３０の入力として、＋ＲＥＩＦＣＨ ＲＥＱＵＥＳＴの代わりの信号を与えるものである。すなわち、（１）命令バッファ１４が空である（＋Ｉ ＢＵＦＦ ＥＭＰＴＹが“Ｈ”）、（２）ＩＴサイクルにおいて命令フェッチ要求が無効（−ＩＴ ＩＦ ＲＥＱ ＶＡＬＩＤが“Ｈ”）かつ、（３）ＩＢサイクルにおいて命令フェッチ要求が無効（−ＩＢ ＩＦ ＲＥＱ ＶＡＬＩＤが“Ｈ”）であるとき、ＡＮＤ回路９１の出力は“Ｈ”となるので、上記（１）〜（３）の条件が成立する場合、または、再命令フェッチ要求がある（＋ＲＥＦＥＣＨ ＲＥＱＵＥＳＴが“Ｈ”）場合に、信号＋ＲＥＩＦＣＨＲＥＱ ＯＲ ＩＦ ＥＭＰＴＹがＯＮとなる。そして、これを図５のボックス３０に、再命令フェッチ信号の代わりに入力する。
【００４３】
図１２及び図１３は、図５のボックス３０の部分の回路の別の実施形態を示す図である。図１２の場合は、再命令フェッチがあったときに、ブランチヒストリ２０へ書き込むのではなく、命令キャッシュ１３が命令フェッチを受けられない時に、ブランチヒストリ２０に分岐履歴情報を書き込む場合のボックス３０の構成例である。このとき、入力としては、再命令フェッチ要求ではなく、命令キャッシュ１３から送信されてくる、＋ＳＵ ＢＵＳＹ信号を入力する。この信号が“Ｈ”のときは、命令キャッシュ１３がいっぱいで、命令フェッチを受け付けられないことを意味している。この場合、“Ｈ”の＋ＳＵ ＢＵＳＹ信号が入力されると、バッファ１０１からブランチヒストリ２０へ“Ｈ”の書き込み許可信号（＋ＢＲＣＯＭＰ ＷＲＩＴＥ）が出力され、そうでない場合には、インバータ１０２から“Ｌ”の再命令フェッチを一時保持する旨を指示する信号（＋ＢＲ ＣＯＭＰ ＲＥＩＦＣＨ ＨＯＬＤ）が出力される。
【００４４】
図１３の場合は、再命令フェッチがあったときではなく、命令のプリフェッチなど、実命令フェッチでない要求が起きたときに、ブランチヒストリ２０に書き込みを行う場合の図５のボックス３０の回路の構成例である。このとき、入力としては、実命令フェッチでない、例えば、命令のプリフェッチ要求などの信号を入力とし、この信号が“Ｈ”となって入力された場合には、バッファ１１１から“Ｈ”のブランチヒストリへの書き込み許可信号（＋ＢＲ ＣＯＭＰ ＷＲＩＴＥ）が、そうでない場合には、インバータ１１２から“Ｈ”の再命令フェッチの一時保持を指示する信号（＋ＢＲ ＣＯＭＰ ＲＥＩＦＣＨ ＨＯＬＤ）が出力される。
【００４５】
図１４は、ブランチヒストリ書き込みリザベーションステーションの構成例を示す図である。リザベーションステーションへエントリ登録する時には、バリッドフラグ（Ｖａｌｉｄ）をセットし、その信号をホールド信号にすることで、分岐予測データ（分岐履歴情報）を保持する。
【００４６】
同図のリザベーションステーション１２０（１２０−１）を用いる場合、ブランチヒストリ２０への書き込み制御は、上記各実施形態のいずれかを用いることもできる。
上記リザベーションステーション２０は、４つのエントリ（ＲＳＷ０〜ＲＳＷ３）からなっており、各エントリＲＳＷｘ（ｘ＝０〜３）は、バリッドフラグ （Ｖａｌｉｄ）と命令アドレス（ＩＡＲ）を登録しており、更に、この登録された命令に対応する分岐履歴情報１２１を保持している。
【００４７】
図１５は、図１４のリザベーションステーション１２０を用いる場合のブランチヒストリ２０への書き込み制御を行う実施形態の全体の回路構成を説明する図である。
まず、分岐命令実行部より、分岐履歴情報（＋ＢＲ ＣＯＭＰ ＡＳ ＴＡＫＥＮ等）がリザベーションステーション１２０に入力されるとともに、分岐命令アドレス（＋ＢＲ ＣＯＭＰ ＩＡＲ）及び分岐先命令アドレス（＋ＢＲ ＣＯＭＰ ＴＩＡＲ）も入力される。リザベーションステーション１２０は、図１４、２２〜２５に示されるような構成を有する。リザベーションステーション１２０からは、ブランチヒストリ２０に書き込むデータが出力され、図１９で示されるセレクタ１３０を介して、奇アドレス用のブランチヒストリ２０−１と偶アドレス用のブランチヒストリ２０−２に書き込むデータとして出力される（＋ＲＳＷ ＯＤＤ／ＥＶＥＮ ＤＡＴＡ）。一方、ブランチヒストリ２０−１、２０−２への書き込み許可信号は、リザベーションステーション１２０から出力される信号をブロック１４０で処理し、それぞれ、奇アドレス用ブランチヒストリ書き込み許可信号（＋ＲＳＷ ＥＶＥＮ ＷＲＩＴＥ ＶＡＬ）及び偶アドレス用ブランチヒストリ書き込み許可信号（＋ＲＳＷ ＯＤＤ ＷＲＩＴＥ ＶＡＬ）が生成される。セレクタ１５０では、リザベーションステーション１２０から送られてきたアドレスＩＡＲと、ブランチヒストリ２０検索用のアドレス（＋ＩＦＥＡＧ）のいずれかを選択する。特に、ブロック１４０から書き込み許可信号が送られてきた場合には、ＩＡＲを選択して、ブランチヒストリ２０に書き込む動作を行わせる。ブランチヒストリ２０への書き込み動作は、例えば、図２０の回路によって行われる。
【００４８】
本実施形態では、複数同時書き込みも実施している。ブランチヒストリ２０への複数同時書き込みの制御回路を図１６〜２０に示す。
本実施形態では、ブランチヒストリ２０は２つのＲＡＭで構成されている。従って、異なるＲＡＭ上のエントリに書き込むことが可能な分岐履歴情報がある場合には、これらの図の回路によって、異なる２つの分岐履歴情報を同一サイクルに書き込むことが可能となる。
【００４９】
図１６は、ブランチヒストリへの複数同時書き込み選択回路（その１）を示す図である。同図の回路においては、２つのブランチヒストリ２０−１、２０−２に同時書き込み可能であるときには、＋ＷＲＩＴＥ ＤＯＵＢＬＥ信号がＯＮとなっている。
【００５０】
同図では、６個のＡＮＤ回路１４１−１〜１４１−６には、リザベーションステーション１２０のエントリのバリッドフラグ（＋ＲＳＷｘ ＶＡＬＩＤ） が２つ入力されている。同図上部の回路１４０Ａは、リザベーションステーション１２０の１つのエントリをブランチヒストリ２０−１、２０−２に書き込む場合の書き込み信号選択回路であって、２つのバリッドフラグのＡＮＤを取って、ともにバリッドならば、“Ｈ”の信号をＡＮＤ回路１４２−１〜１４２−６の一方に入力させる。また、２つのリザベーションステーションＲＳＷｘのエントリのアドレス（ＲＳＷｘ ＩＡＲ）の内、下から４ビット目を比較し、両ビットが異なれば、“Ｈ”をＡＮＤ回路１４２−１〜１４２−６の他方の入力端子に入力する。これは、ブランチヒストリ２０においては、命令が１６バイト単位で格納されるので、書き込みアドレスが１６以上異なる場合に、ブランチヒストリ２０−１、２０−２に、それぞれ、下位８バイトと上位８バイトを書き込みを行うようにしているものである。そして、２つのアドレスの組合せに対して、優先順位決定回路１４３において、優先するアドレスの組から優先的にブランチヒストリ２０に書き込むように制御する。また、ＡＮＤ回路１４２−１〜１４２−６までのいずれかの信号がＯＮである場合には、複数書き込み可能信号（＋ＷＲＩＴＥ ＤＯＵＢＬＥ）を出力する。
【００５１】
また、同図下部の回路１４０Ｂは、リザベーションステーション１２０の１つのエントリをブランチヒストリ２０に書き込む場合の書き込み信号の選択回路である。各リザベーションステーションＲＳＷｘのエントリのバリッド信号のいずれかがＯＮであれば、書き込みデータが取得可能であることを示す信号（＋ＷＲＤＡＴＡ ＡＶＡＩＬＡＢＬＥ）が出力される。また、リザベーションステーション１２０の各エントリの書き込みに対し回路１４６で優先順位を設定している。そして、複数書き込み可能信号がＯＦＦの場合であって、かつ、＋ＷＲ ＤＡＴＡ ＡＶＡＩＬＡＢＬＥが“Ｈ”のときに、単一書き込み信号（＋ＷＲＩＴＥ ＳＩＮＧＬＥ）が出力されるとともに、リザベーションステーション１２０のどのエントリに書き込むかを示す信号（＋ＷＲＩＴＥ ＲＳＷｘ）が出力される。
【００５２】
なお、同図においては、同図の左上に記載されているようなＡＮＤ回路１４９を設け、このＡＮＤ回路１４９の出力を＋ＲＳＷｘ ＶＡＬＩＤ信号の代わりに使用する事も可能である。ＡＮＤ回路１４９には、＋ＲＳＷｘ ＶＡＬＩＤ信号と、後述の−ＲＳＷ ＣＳＥ ＶＡＬＩＤ信号が入力される。これにより、命令実行が完了した後、ブランチヒストリ２０への書き込みを行うようにすることが出来る。すなわち、＋ＲＳＷ ＣＳＥ ＶＡＬＩＤ信号は、命令実行がまだ完了していない場合にＯＮとなる信号である。この信号生成方法については、後述する。
【００５３】
図１７は、ブランチヒストリへの複数同時書き込み選択回路（その２）を示す図である。同図の回路では、図１６の単一書き込み選択回路１４０Ｂからの出力とリザベーションステーション１２０から出力される命令アドレス（ＩＡＲ）の２８ビット目をＡＮＤ回路１５１（１５１−１〜１５１−４）に入力する。これは、単一書き込み選択回路からの書き込み信号と、命令アドレスの２８ビット目がＯＮかＯＦＦかを見てやることによって、命令アドレスが奇の場合の書き込み許可信号が出力される。そして、ＡＮＤ回路１５１−１〜１５１−４のいずれかがＯＮの場合には、奇アドレスの書き込みが許可になっているので、これが出力されているときには、奇ブランチヒストリ２０−１への書き込みを許可する信号（＋ＲＳＷ ＯＤＤ ＷＲＩＴＥ ＶＡＬＩＤ）が出力される。また、複数書き込み信号（＋ＷＲＩＴＥ ＤＯＵＢＬＥ）がＯＮの時は、奇ブランチヒストリ２０−１と偶ブランチヒストリ２０−２の両方を書き込み許可とする。すなわち、＋ＲＳＷＯＤＤ ＷＲＩＴＥ ＶＡＬＩＤと＋ＲＳＷ ＥＶＥＮ ＷＲＩＴＥ ＶＡＬＩＤをＯＮにする。また、奇ブランチヒストリ２０−１への書き込みがＯＦＦである場合には、ＡＮＤ回路６６に入る信号がＯＮになり、更に、単一書き込み信号（＋ＷＲＩＴＥ ＳＩＮＧＬＥ）がＯＮの場合、偶ブランチヒストリ２０−２への書き込み許可信号（＋ＲＳＷ ＥＶＥＮ ＷＲＩＴＥ ＶＡＬＩＤ）がＯＮとなる。また、これらの、奇あるいは偶ブランチヒストリへの書き込み許可信号は、ブランチヒストリ２０への書き込み待ちとなっていない旨の信号（−ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥ）とブランチヒストリ２０への書き込みを強制する信号（＋ＦＯＲＣＥ ＷＲＩＴＥ ＢＲＨＩＳ）のいずれかがＯＮの場合に、出力されるようになっている。なお、＋ＦＯＲＣＥ ＷＲＩＴＥ ＢＲＨＩＳについては、後述する。
【００５４】
図１８、図１９は、ブランチヒストリへの複数同時書き込み選択回路（その３）、（その４）である。図１８の回路は、図１６の出力を入力とし、それぞれ、リザベーションステーション１２０の０番から３番までのエントリＲＳＷ０〜ＲＳＷ３の書き込み選択信号（＋ＳＥＬ ＲＳＷｘ ＷＲＩＴＥ）を生成して、図１９の回路に入力する。
【００５５】
図１９の回路は、リザベーションステーション１２０から送信されてくるデータ（ＲＳＷｘ ＤＡＴＡ）を選択するための構成である。図１９では、奇ブランチヒストリ２０−１と偶ブランチヒストリ２０−２に対する選択回路が別々に構成されている。マルチプレクサ１８１と１８２には、リザベーションステーション２０からのデータが入力され、その中の一つがＲＳＷ ＯＤＤ ＤＡＴＡ、あるいは、ＲＳＷ ＥＶＥＮ ＤＡＴＡとして送出される。
【００５６】
マルチプレクサ１８１は、図１８の回路の出力であるセレクト信号（＋ＳＥＬＲＳＷｘ ＷＲＩＴＥ）と、リザベーションステーション１２０のＲＳＷ０〜ＲＳＷ３から入力される命令アドレス（ＩＡＲ）の２８ビット目のビットとのＡＮＤを取り、その結果をマルチプレクサ１８１に送って、切り替え動作をさせている。これは、セレクト信号がＯＮであり、かつ、命令アドレスが奇の場合に、選択信号を送って、対応するデータを送出するものである。
【００５７】
同様に、マルチプレクサ１８２には、図１８の回路の出力であるセレクト信号と、リザベーションステーション１２０のＲＳＷ０〜ＲＳＷ３から入力される命令アドレスの２８ビット目の論理を反転させ たものとのＡＮＤを取り、これをマルチプレクサ１８２に送って、切り替え動作をさせている。これは、セレクト信号がＯＮであり、かつ、命令アドレスが偶である場合に、対応するデータを送出するものである。
【００５８】
図２０は、ブランチヒストリへの複数同時書き込み回路を示す図である。セレクタ１９１には、奇ブランチヒストリ２０−１への命令書き込みアドレス（ＲＳＷ ＯＤＤ ＩＡＲ）とブランチヒストリ２０からの読み出しアドレス（ＩＦ ＥＡＧ）が入力される。同様に、セレクタ１９２には、偶ブランチヒストリ２０−２への命令書き込みアドレス（ＲＳＷ ＥＶＥＮ ＩＡＲ）とブランチヒストリ２０からの読み出しアドレス（ＩＦ ＥＡＧ）が入力される。また、セレクタ１９１には、図１７の回路の出力である＋ＲＳＷ ＯＤＤ ＷＲＩＴＥＶＡＬＩＤが入力され、奇ブランチヒストリ２０−１への書き込みが許可されている場合には、セレクタ１９１がＲＳＷ ＯＤＤ ＩＡＲを選択するようになっている。同様に、図１７の回路の出力である＋ＲＳＷ ＥＶＥＮ ＷＲＩＴＥＶＡＬＩＤがセレクタ１９２に入力され、偶ブランチヒストリ２０−２への書き込みが許可されている場合には、セレクタ１９２がＲＳＷ ＥＶＥＮ ＩＡＲを選択するようになっている。また、奇ブランチヒストリ８２０−１及び偶ブランチヒストリ２０−２は、それぞれ、＋ＲＳＷ ＯＤＤ ＷＲＩＴＥ ＶＡＬＩＤ及び＋ＲＳＷ ＥＶＥＮ ＷＲＩＴＥ ＶＡＬＩＤによってライトイネーブルが設定され、それぞれ、ＲＳＷ ＯＤＤ ＤＡＴＡ及びＲＳＷ ＥＶＥＮ ＤＡＴＡが書き込まれる。
【００５９】
更に、本実施形態において、該リザベーションステーション１２０が満杯の状態で、更に書き込むべきデータが分岐命令制御部から渡された場合には、いずれか保留中のデータを少なくとも一つ書き込むことが出来る。この実施形態を図２１、２２に示す。
【００６０】
図２１は、ブランチヒストリへの書き込み強制回路の回路構成例を示す図である。ＡＮＤ回路２０１には、図２２の回路からのエントリのバリッド信号（＋ＲＳＷｘ ＶＡＬＩＤ）が入力され、すべてのリザベーションステーション１２０のすべてのエントリがバリッドの場合には、リザベーションステーション１２０は一杯であるので、これを示す信号＋ＲＳＷ ＦＵＬＬが出力される。また、ブランチヒストリ２０の更新が有効である場合には、分岐命令処理部１７から入力される＋ＢＲＨＩＳ ＵＰＤＡＴＥ ＶＡＬＩＤがＯＮとなり、強制的なリザベーションステーションへの書き込み信号＋ＦＯＲＣＥ ＷＲＩＴＥ ＢＲＨＩＳが生成され、図１７において使用される。
【００６１】
また、図２２は、リザベーションステーション１２０のバリッド回路の構成例を示す図である。ブランチヒストリ２０の更新が有効であり（＋ＢＲＨＩＳ ＵＰＤＡＴＥ ＶＡＬＩＤがＯＮ）、かつ、リザベーションステーション１２０の０番のエントリＲＳＷ０が有効でない（−ＲＳＷ０ ＶＡＬＩＤがＯＮ）であるか、リザベーションステーション１２０がいっぱいであり（＋ＲＳＷ ＦＵＬＬ）、かつ、リザベーションステーション１２０の０番が選択されている（図１８の出力である＋ＳＥＬ ＲＳＷ０ ＷＲＩＴＥがＯＮの）場合には、フリップフロップ２１１−１にセット信号が送信され、リザベーションステーション１２０の０番が有効であるという信号（＋ＲＳＷ０ ＶＡＬＩＤ）がＯＮとなる。同様に、リザベーションステーション１２０の１番から３番についても同様の設定がされる。ただし、優先順位回路２１２によって、リザベーションステーション１２０の０番から次第に優先順が下に行くに従って低くなるように設定されている。フリップフロップ２１１−１〜２１１−４のリセットは、ブランチヒストリ２０への書き込み待ちになっておらず（− ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥがＯＮ）、かつ、次に、リザベーションステーション１２０への書き込みが選択されている場合には、リザベーションステーション１２０のエントリのバリッド信号をリセットする。なお、図２２の回路の出力は、図２１の回路への入力となる。
【００６２】
すなわち、＋ＦＯＲＣＥ ＷＲＩＴＥ ＢＲＨＩＳ信号によって、図１７の＋ＷＡＩＴ ＢＲ ＣＯＭＰ ＷＲＩＴＥ による書き込み待機信号を抑制して、強制的にブランチヒストリ２０に対して書き込み動作をさせる。同時に、そこで選択して、書き込みが行われたエントリは空になるのだから、そこへ、書き込むべきデータをエントリ登録する。もちろん、上記インターリーブ書き込み方式を用いれば、本実施形態では最大２つ書き込むことが可能である。
【００６３】
また、例えば、セットアソシエイティブ方式では、＋ＣＲＥＡＴＥ ＮＥＷ、＋ＵＰＤＡＴＥ ＯＬＤ ＥＮＴＲＹ、＋ＥＲＡＣＥ ＥＮＴＲＹ及び、その他のウェイ選択信号等により、更に、ウェイの制御を行うことで、更に、多くの書き込みを同時に行うことも可能である。
【００６４】
図２３は、ＩＩＤ（命令ＩＤ）管理により、命令実行完了時以降にリザベーションステーションに書き込むことを可能とする場合のリザベーションステーションの構成例である。
【００６５】
同図の構成では、リザベーションステーション１２０（１２０−２）は、図１４の構成に加え、後述するＣＳＥ−Ｖａｌｉｄフラグと命令完了処理部１９の命令ＩＤ（ＩＩＤ）を登録するように構成されている。これにより、図２４のＲＳＷｘ ＣＳＥ−ＶＡＬ信号を利用し、命令が実行完了したかどうかを判断可能なようにしている。
【００６６】
命令完了処理部１９から入力される、実行完了した命令のＩＤ（ＣＯＭＭＩＴＢＲ ＩＩＤ）と、リザベーションステーション１２０にエントリされているＩＩＤ（ＲＳＷｘ ＩＩＤ）を比較することで、ＣＳＥ−Ｖａｌｉｄフラグをオフにする。また、割り込みなどで命令実行が中断されたときには、＋ＦＬＵＳＨＲＳ信号により、強制的にＣＳＥ−Ｖａｌｉｄフラグがオフになる。こうすることで、割り込みなどで実行完了出来なかった命令に対応するエントリが居残らないようになっている。
【００６７】
ＣＳＥ−ＶＡＬフラグがＯＮであるならば、命令はまだ実行完了していないので、書き込み選択回路へは、このフラグを用いて＋ＲＳＷｘ ＶＡＬＩＤ信号を抑制した信号を図１６の＋ＲＳＷｘ ＶＡＬＩＤの代用とすれば良い。
【００６８】
図２４は、書き込みリザベーションステーションのＣＳＥバリッド回路の構成例である。リザベーションステーション１２０の０番から３番のそれぞれのエントリＲＳＷ０〜ＲＳＷ３に対して、ブランチヒストリ２０の更新有効信号（＋ＢＲＨＩＳＵＰＤＡＴＥ ＶＡＬＩＤ）がＯＮであり、リザベーションステーション１２０が無効である（−ＲＳＷｘ ＶＡＬＩＤがＯＮ）であるか、リザベーションステーションが一杯であり（＋ＲＳＷ ＦＵＬＬがＯＮ）、リザベーションステーション１２０が選択されている（＋ＳＥＬ ＲＳＷｘ ＷＲＩＴＥ）場合には、フリップフロップ２２１−１〜２２１−４のセットポートに信号が入力され、＋ＲＳＷｘ ＣＳＥ ＶＡＬ信号が出力される。リザベーションステーションの１番から３番についても同様であるが、優先順位回路２２３が途中に設けられている。この優先順位回路２２３は、リザベーションステーション０番から３番に向かって優先順位が小さくなるように構成されている。
【００６９】
また、命令完了処理管理部１９から、Ｗサイクルにおいて入力されるＣＯＭＭＩＴ ＢＲ ＩＩＤとリザベーションステーション１２０に記録されるＲＳＷｘＩＩＤとをコンパレータ２２２（２２２−０〜２２２−３）で比較し、一致していれば、フリップフロップ２２１−１〜２２１−４をリセットする。また、再命令フェッチしたときに出力される信号＋ＦＬＵＳＨ ＲＳが入力された場合にも、フリップフロップ２２１−１〜２２１−４は、リセットされる。あるいは、図２２の回路の出力の論理反転信号である−ＲＳＷｘ ＶＡＬＩＤがＯＮの場合にも、フリップフロップ２２１−１〜２２１−４はリセットされる。
【００７０】
なお、図２４の回路に、−ＲＳＷｘ ＶＡＬＩＤ信号がＯＲ回路２２４−０〜２２４−３とＡＮＤ回路２２５−０〜２２５−３に同時に入力した場合、フリップフロップ２２１−１〜２２１−４に対して、セットとリセットの信号が同時に入力される可能性がある。この場合、回路は、セット信号を優先するように構成する。
【００７１】
図２５は、図２３の書き込みリザベーションステーションのデータ保持構成を示した図である。分岐履歴情報がラッチ回路２３０に入力され、かつ、＋ＲＳＷｘ ＶＡＬＩＤがＯＮとなると分岐履歴情報が保持され、ＲＳＷｘ 分岐履歴情報として出力される。
【００７２】
なお、ここで、ｘは、０〜３の数字が当てはまり、同図の回路は、リザベーションステーション１２０のエントリの数、すなわち、０〜３番までのエントリに対応した数だけ設けられる。
【００７３】
図２６は、分岐予測部にリターンアドレススタックを有する場合のＣＳＥバリッド回路の構成例である。リターンアドレススタックは、完了した（履歴情報を書き込む）分岐命令が、サブルーチンコール命令もしくはサブルーチンリターン命令に相当するときに、動作する構成となっている。
【００７４】
割り込みなどで実行中止があった場合（＋ＲＳ１信号がＯＮ）には、ＶＡＬＩＤ信号（リザベーションステーション１２０のＣＳＥ−Ｖａｌｉｄフラグ；図２３参照）自体をＯＦＦにするのではなく、該リザベーションステーション１２０上に存在する分岐履歴情報の中の、サブルーチンコールもしくはリターン相当の命令であるという情報だけを無効化すればよい。この時点で、書き込めるタイミングで書き込めば良くなるので、ＣＳＥ Ｖａｌｉｄフラグをリセットする。
【００７５】
同図において、＋ＳＥＴ ＲＳＷｘ ＣＳＥ ＶＡＬ、＋ＲＳＴ ＲＳＷｘＣＳＥ ＶＡＬは、図２４のセットリセットフリップフロップの２２１−１〜２２１−４のそれぞれセット、リセット端子へ入力している信号にあたる。
【００７６】
また、下側二つのフリップフロップ２４１−１、２４１−２を含む部分は、図２５の分岐履歴情報のうち、サブルーチンコール命令、リターン命令であることを示す情報を抜き出したものである。
【００７７】
すなわち、セットリセットフリップフロップ２４２は、＋ＳＥＴ ＲＳＷｘＣＳＥ ＶＡＬが入力されるとセットされ、＋ＲＳＷｘ ＣＳＥ ＶＡＬをＯＮにする。また、＋ＲＳＴ ＲＳＷｘ ＣＳＥ ＶＡＬが入力される、あるいは、＋ＲＳ１がＯＮになると、＋ＲＳＷｘ ＣＳＥ ＶＡＬはリセットされ、ＯＦＦとなる。
【００７８】
ここで、＋ＲＳ１がＯＮで、かつ、＋ＲＳＷｘ ＣＳＥ ＶＡＬもＯＮの場合には、ＡＮＤ回路２４４の出力は“０”となり、フリップフロップ２４１−１、２４１−２はリセットされる。ところで、図２２の出力である、＋ＲＳＷｘ ＶＡＬＩＤがＯＦＦの時には、サブルーチンコール命令である場合には、＋ＢＲＣＯＭＰ ＳＵＢＲＯＵＴＩＮＥ ＣＡＬＬが、サブルーチンリターン命令の場合には、＋ＢＲ ＣＯＭＰ ＳＵＢＲＯＵＴＩＮＥ ＲＴＮがＯＮとなり、フリップフロップ２４１−１と２４１−２に入力される。
【００７９】
すなわち、命令実行が完了していない（＋ＲＳＷｘ ＣＳＥ ＶＡＬ＝０）、あるいは、割り込みなどで実行中止が起こっていない（＋ＲＳ１＝０）、かつ、リザベーションステーション１２０のエントリが有効である（＋ＲＳＷｘ ＶＡＬＩＤ＝１）場合に、フリップフロップ２４１−１、２４１−２のＩＨ端子にＯＮ信号が入力され、サブルーチンコール命令あるいは、サブルーチンリターン命令であることを示す信号が保持され、＋ＲＳＷｘ ＳＵＢＲＯＵＴＩＮＥ ＣＡＬＬ、あるいは、＋ＲＳＷｘ ＳＵＢＲＯＵＴＩＮＥ ＲＴＮとして出力される。
【００８０】
図２７は、割り込み要因などで命令実行中止があった場合に、リザベーションステーションのエントリを無効化するための回路例である。セットリセットフリップフロップ２５１のセット端子には、図２２の各フリップフロップ２１１−１〜２１１−４のセット端子に入力する信号である＋ＳＥＴＲＳＷｘ ＶＡＬが入力され、＋ＲＳＷｘ ＶＡＬＩＤとして出力される。また、図２２のリセット信号として入力される＋ＲＳＴ ＲＳＷｘ ＶＡＬが入力されるか、割り込みなどによる実行中止（＋ＲＳ１＝１）かつ、命令実行が完了していない（＋ＲＳＷｘ ＣＳＥ ＶＡＬ＝１）の場合、セットリセットフリップフロップ２５はリセットされる。
【００８１】
図２８は、バイパスヒット回路の一実施形態を示す図である。７個のコンパレータ２６５（２６５−１〜２６５−７）から構成されるアドレス比較（分岐予測）部２６３は、ブランチヒストリ２０の分岐予測手法の性質によって異なり、当業者によって適切に構成されるべきものであるので、簡単な説明のみを行う。データパスは同図の太線のようにして、分岐先アドレスＢＲＨＩＳ ＴＩＡＲを生成することで、書き込みリザベーションステーション１２０や、分岐予測部（図中ＲＳＢＲｘ）上のデータを、バイパスして検索対象とすることができる。
【００８２】
すなわち、アドレス比較部２６３は、読み出し要求のあるアドレスＩＦ ＥＡＧ を入力として、ブランチヒストリ２０（ＢＲＨＩＳ−ＲＡＭ＃０、＃１）、リザベーションステーション１２０の各エントリ＃ＲＳＷ０〜３及び、分岐予測部＃ＲＳＢＲｘから出力される命令アドレスＩＡＲと比較し、これらが一致した場合、対応する分岐先アドレスＴＩＡＲを選択回路２６７−１〜２６７−７から出力させる。そして、選択回路２６８で、これらの内の一つを選択してブランチヒストリの分岐先アドレス（ＢＲＨＩＳ ＴＩＡＲ）として出力する。ここで、分岐予測部では、内部で生成される分岐先命令が有効であり、かつ、分岐予測が成功している場合に、分岐先命令アドレスを選択回路２６７−７に出力する。
【００８３】
以上のような構成を組み合わせて用いることにより、情報処理装置の性能向上を図ることができる。なお、上記実施形態においては、ＲＳＷｘのように、小文字 のｘを添えて記号を記載して説明したものがあるが、これは、例えば、リザベーションステーションの場合、ｘは、０〜３までの値を取るものであり、対応する構成や信号も０〜３に対応して存在するものである。また、その他の場合も、添え字として使用したｘは、対応する構成や信号が複数有り、これらを代表して記載するものであり、対応する数だけの構成や信号が存在することを念頭に置いている。
【００８４】
＜付記＞本発明は、以下の形態で実現可能である。
１．命令列などを格納するメモリ手段と、分岐命令の分岐予測を行う分岐予測手段とを備えた命令実行処理装置における分岐履歴情報書き込み制御装置において、該分岐予測手段への分岐履歴情報の書き込みと、該メモリ手段への制御が同時に生じないように制御する制御手段を備えることを特徴とする装置。
２．前記制御手段は、前記メモリ手段が命令フェッチ要求を受け付けられないタイミングで、前記分岐予測手段に前記分岐履歴情報の書き込みを行うことを特徴とする１に記載の装置。
３．前記制御手段は、命令のプリフェッチの要求を行うタイミングで、分岐予測手段に前記分岐履歴情報の書き込みを行うことを特徴とする１に記載の装置。
４．前記制御手段は、分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測手段に書き込む際に、数クロック（数ステート）待ってから該分岐予測手段に該分岐履歴情報を書き込むことを特徴とする１に記載の装置。
５．前記制御手段は、分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測手段に書き込む際に、該分岐命令による再命令フェッチ要求が実行されるのを待ち、該再命令フェッチ要求の実行から更に数クロック（数ステート）待ってから、該分岐履歴情報を該分岐予測手段に書き込むことを特徴とする１に記載の装置。
６．前記命令実行処理装置が、前記メモリ手段から出力された命令列を一時的に格納する命令一時バッファ手段を備えている場合、前記制御手段は、該命令一時バッファ手段が空で、かつ、一つも命令フェッチ要求が出されていないときには、分岐命令の書き込み要求が生じてから数クロック（数ステート）待ってから、該分岐命令の分岐履歴情報を前記分岐予測手段に書き込むことを特徴とする１に記載の装置。
７．前記命令実行処理装置が、前記メモリ手段から出力された命令列を一時的に格納する命令一時バッファ手段を備えている場合、前記制御手段は、該命令一時バッファ手段が空で、かつ、一つも命令フェッチ要求が出されていないときには、書き込み要求のあった分岐命令の分岐履歴を前記分岐予測手段に即座に書き込まず、次の命令フェッチ要求を待ち、該命令フェッチ要求の実行から更に数クロック（数ステート）待ってから、前記分岐履歴情報の書き込みを行うことを特徴とする１に記載の装置。
８．前記制御手段は、前記数クロック（数ステート）計数するためにカウンタを使用することを特徴とする４〜７のいずれか一つに記載の装置。
９．前記制御手段は、分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測手段に書き込む際に、該分岐命令が要求した再命令フェッチに対応するフェッチ命令列を、前記命令実行処理装置内の命令デコード部、あるいは、前記命令一時バッファが受け取るまで待ってから、該分岐履歴情報の書き込みを行うことを特徴とする１に記載の装置。
１０．更に、書き込みする前記分岐履歴情報を一時保管するための、書き込みリザベーションステーション手段を備えることを特徴とする１に記載の装置。
１１．前記制御手段は、前記分岐予測手段に書き込む必要がある分岐命令に関する前記分岐履歴情報のみ、前記リザベーションステーション手段に登録することを特徴とする１０に記載の装置。
１２．前記分岐履歴情報は、少なくとも新規エントリ登録、エントリ内容変更、エントリ消去のいずれかであることを特徴とする１１に記載の装置。
１３． 前記制御手段は、前記書き込みリザベーションステーション手段が満杯になっている状態で、更に、前記分岐履歴情報の書き込みが必要な分岐命令の、該書き込みリザベーションステーション手段への登録要求が来た場合には、該書き込みリザベーションステーション手段に対して書き込み保留中の分岐履歴情報及び登録要求された該分岐履歴情報の内、少なくとも一つを前記分岐予測手段へ書き込むことを特徴とする１０に記載の装置。
１４．前記制御手段は、前記分岐予測手段が、複数のエントリを同時に書き込み可能な構成であり、前記書き込みリザベーションステーション手段が複数の有効な書き込み保留中の情報を保持している場合には、前記分岐予測手段への書き込みが可能なタイミングにおいて同時に複数書き込みを行うことを特徴とする１０に記載の装置。
１５．前 記制御手段は、分岐命令よりも前に存在する演算命令などの実行完了により条件コード及び分岐する場合は分岐先アドレスが確定した時点で、該分岐命令が、該分岐命令より前に分岐命令が存在するために、完了できない状態であっても、前記分岐予測手段に該分岐命令の前記分岐履歴情報を書き込む、あるいは、書き込みリザベーションステーション手段に登録することを特徴とする１または１０に記載の装置。
１６．前記制御手段は、前記分岐履歴情報を書き込んだ、あるいは、前記書き込みリザベーションステーション手段に登録したことを示すフラグを、対応する処理中の分岐命令毎に設けることを特徴とする１５に記載の装置。
１７． 分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置における分岐履歴情報書き込み制御装置において、リターンアドレススタック手段と、前記分岐命令がサブルーチンのコールもしくはリターンに相当する命令であり、該分岐予測手段に前記分岐命令の分岐履歴情報の書き込み要求を出したにも関わらず、前記分岐命令が実行されなかったときは、該分岐予測手段に前記分岐履歴情報を書き込むものの、該リターンアドレススタック手段は動作させないように制御する制御手段とを備えることを特徴とする装置。
１８．前記制御手段は、命令の実行完了時点で、前記書き込みリザベーションステーション手段へ書き込み保留中の分岐履歴情報の書き込みを行うことを特徴とする１０に記載の装置。
１９．前記制御手段は、命令の実行完了時点で、前記分岐予測手段または前記書き込みリザベーションステーション手段へ、対応するエントリの分岐履歴情報の書き込みを行うことを特徴とする１０に記載の装置。
２０． 前記命令実行処理装置が、命令制御部に命令の実行完了を管理する手段を有している場合、前記制御手段は、該実行完了管理手段において保持される、命令毎に割り振られるＩＤを、前記書き込みリザベーションステーション手段のエントリに保持することを特徴とする１０に記載の装置。
２１．割り込み発生などの要因によって、前記書き込みリザベーションステーション手段の有効なエントリに対応する分岐命令が実行完了されないことが確定した場合には、前記書き込みリザベーションステーション手段の対応するエントリを無効化することを特徴とする１０に記載の装置。
２２．更に、前記分岐予測手段への書き込み保留中の分岐履歴情報を、分岐予測の検索対象にするバイパス手段を備えることを特徴とする１に記載の装置。
２３．更に、前記書き込みリザベーションステーション手段を含む分岐実行部上で実行中の分岐命令の分岐履歴情報を、分岐予測の検索対象にするバイパス手段を備えることを特徴とする１０に記載の装置。
２４． 前記バイパス手段は、前記分岐命令のための条件コードが確定した時、該分岐命令が非分岐であることが確定した場合はその時点で、分岐することが確定した場合には分岐先アドレスが確定した時点で、前記分岐履歴情報を分岐予測の検索対象とすることを特徴とする２３に記載の装置。
２５．書き込みと読み出しが同じサイクルで同時に独立して動作可能である、デュアルポートＲＡＭを、前記分岐予測手段のエントリ保持に使用することを特徴とする１に記載の装置。
２６．命令列などを格納するメモリと、分岐命令の分岐予測を行う分岐予測部とを備える装置における命令制御方法であって、該分岐予測部への分岐履歴情報の書き込みと、該メモリへの制御が同時に生じないように制御するステップ、を備えることを特徴とする方法。
２７．前記メモリが命令フェッチ要求を受け付けられないタイミングで、前記分岐予測部に前記分岐履歴情報の書き込みを行うことを特徴とする２６に記載の方法。
２８．命令のプリフェッチの要求を行うタイミングで、分岐予測部に前記分岐履歴情報の書き込みを行うことを特徴とする２６に記載の方法。
２９．分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測部に書き込む際に、数クロック（数ステート）待ってから該分岐予測部に該分岐履歴情報を書き込むことを特徴とする２６に記載の方法。
３０． 分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測部に書き込む際に、該分岐命令による再命令フェッチ要求が実行されるのを待ち、該再命令 フェッチ要求の実行から更に数クロック（数ステート）待ってから、該分岐履歴情報を該分岐予測部に書き込むことを特徴とする２６に記載の方法。
３１． 更に、前記メモリから出力された命令列を一時的に格納する命令一時バッファステップを備え、該命令一時バッファステップにおいて格納される命令列が無く、かつ、一つも命令フェッチ要求が出されていないときには、書き込み要求が生じてから数クロック（数ステート）待ってから、書き込み要求のあった分岐命令の前記分岐履歴情報を前記分岐予測部に即座に書き込むことを特徴とする２６に記載の方法。
３２．更に、前記メモリから出力された命令列を一時的に格納する命令一時バッファステップを備え、該命令一時バッファステップにおいて格納される命令列が無く、かつ、一つも命令フェッチ要求が出されていないときには、書き込み要求のあった分岐命令の分岐履歴を前記分岐予測部に即座に書き込まず、次の命令フェッチ要求を待ち、該命令フェッチ要求の実行から更に数クロック（数ステート）待ってから、前記分岐履歴情報の書き込みを行うことを特徴とする２６に記載の方法。
３３．分岐予測に失敗した分岐命令の前記 分岐履歴情報を前記分岐予測部に書き込む際に、該分岐命令が要求した再命令フェッチに対応するフェッチ命令列を、命令デコード部、あるいは、前記命令一時バッファが受け取るまで待ってから、該分岐履歴情報の書き込みを行うことを特徴とする２６に記載の方法。
３４．更に、書き込みする前記分岐履歴情報を一時保管するための、書き込みリザベーションステーションステップを備えることを特徴とする２６に記載の方法。
３５．前記分岐予測部に書き込む必要がある分岐命令に関する前記分岐履歴情報のみ、前記書き込みリザベーションステーションステップにおいて登録することを特徴とする３４に記載の方法。
３６．前記分岐履歴情報は、新規エントリ登録、エントリ内容変更、エントリ消去であることを特徴とする３５に記載の方法。
３７． 前記書き込みリザベーションステーションステップにおける格納容量が満杯になっている状態で、更に、前記分岐履歴情報の書き込みが必要な分岐命令の、該書き込みリザベーションステーションステップへの登録要求が来た場合には、該書き込みリザベーションステーションステップ上の書き込み保留中の分岐履歴情報及び登録要求された該分岐履歴情報の内、少なくとも一つを前記分岐予測部へ書き込むことを特徴とする３４に記載の方法。
３８．前記分岐予測部が、複数のエントリを同時に書き込み可能な構成であり、前記書き込みリザベーションステーション手段が複数の有効な書き込み保留中の情報を保持している場合には、前記分岐予測部への書き込みが可能なタイミングにおいて同時に複数書き込みを行うことを特徴とする３４に記載の方法。
３９． 分岐命令よりも前に存在する演算命令などの実行完了により条件コード及び分岐する場合は分岐先アドレスが確定した時点で、該分岐命令が、該分岐命令より前に分岐命令が存在するために、完了できない状態であっても、前記分岐予測部に該分岐命令の前記分岐履歴情報を書き込む、あるいは、書き込みリザベーションステーションステップにおいて登録を行うことを特徴とする２６または３４に記載の方法。
４０．前記分岐履歴情報を書き込んだ、あるいは、前記書き込みリザベーションステーションステップにおいて登録したことを示すフラグを、対応する処理中の分岐命令毎に設けることを特徴とする３９に記載の方法。
４１． 分岐命令の分岐予測を行う分岐予測部と、リターンアドレススタックとを備える装置における命令制御方法であって、分岐命令を実行した結果のサブルーチンのコールもしくはリターンに相当する命令が該分岐予測部に前記分岐履歴情報の書き込み要求を出したにも関わらず、該分岐命令が実行されなかったときは、該分岐予測部に分岐履歴情報を書き込み、該リターンアドレススタックは動作させない要に制御するステップを備えることを特徴とする方法。
４２．命令の実行完了時点で、前記書き込みリザベーションステーションステップにおける書き込み保留中の分岐履歴情報の書き込みを行うことを特徴とする３４に記載の方法。
４３．命令の実行完了時点で、前記書き込みリザベーションステーション手段へ、対応するエントリの分岐履歴情報の書き込みを行うことを特徴とする３４に記載の方法。
４４．更に、命令制御部は、命令の実行完了を管理するステップを有し、該実行完了管理ステップにおいて保持される、命令毎に割り振られるＩＤを、前記書き込みリザベーションステーションステップにおいて、エントリに保持することを特徴とする３４に記載の方法。
４５． 割り込み発生などの要因によって、前記書き込みリザベーションステーションステップにおいて格納された有効なエントリに対応する分岐命令が実行完了されないことが確定した場合には、該書き込みリザベーションステーションステップにおいて格納された、対応するエントリを無効化することを特徴とする３４に記載の方法。
４６．前記分岐予測部への書き込み保留中の分岐履歴情報を、分岐予測の検索対象にすることを特徴とする２６に記載の方法。
４７．パイプラインを備え、前記書き込みリザベーションステーションステップを行う分岐実行部上で実行中の分岐命令の分岐履歴情報を、分岐予測の検索対象にすることを特徴とする３４に記載の方法。
４８．前記分岐命令のための条件コードが確定した時、該分岐命令が非分岐であることが確定した場合は、この時点で、分岐することが確定した場合には、分岐先アドレスが確定した時点で、分岐予測の検索対象とすることを特徴とする４７に記載の方法。
【図面の簡単な説明】
【００８５】
【図１】本発明を適用した場合の分岐命令の実行時における効果を説明する図である。
【図２】本発明を適用した場合の分岐命令がショートループを組んでいる場合の効果を説明する図である。
【図３】本発明の実施形態の基本的なブロック図を示す図である。
【図４】ブランチヒストリの構成例を示す図である。
【図５】再命令フェッチした分岐命令の分岐履歴情報の書き込みを遅らせる構成の概略構成例を示す図である。
【図６】図５のブロック３１の詳細な構成例を示す図である。
【図７】図５のブロック３２の詳細な構成例を示す図である。
【図８】図５のブロック３０に対応する回路の一例を示す図である。
【図９】カウンタを用いた実施形態のタイムチャートである。
【図１０】図５のボックス３０に当たる回路の他の実施形態を示す図である。
【図１１】命令一時バッファが空であるときにも動作させるための回路構成例である。
【図１２】図５のボックス３０の部分の回路の別の実施形態を示す図（その１）である。
【図１３】図５のボックス３０の部分の回路の別の実施形態を示す図（その２）である。
【図１４】ブランチヒストリ書き込みリザベーションステーションを示す図である。
【図１５】リザベーションステーションを用いる場合のブランチヒストリへの書き込み制御の全体の動作の流れを説明する図である。
【図１６】ブランチヒストリへの複数同時書き込み選択回路（その１）を示す図である。
【図１７】ブランチヒストリへの複数同時書き込み選択回路（その２）を示す図である。
【図１８】ブランチヒストリへの複数同時書き込み選択回路（その３）である。
【図１９】ブランチヒストリへの複数同時書き込み選択回路（その４）である。
【図２０】ブランチヒストリへの複数同時書き込み回路を示す図である。
【図２１】ブランチヒストリへの書き込み強制回路の回路構成例を示す図である。
【図２２】書き込みリザベーションステーションのバリッド回路の回路例を示す図である。
【図２３】ＩＩＤ（命令ＩＤ）管理により、命令実行完了時以降にリザベーションステーションに書き込むことを可能とする場合のリザベーションステーションの構成例である。
【図２４】書き込みリザベーションステーションのＣＳＥバリッド回路の構成例である。
【図２５】書き込みリザベーションステーションのデータ保持構成を示した図である。
【図２６】分岐予測部にリターンアドレススタックを有する場合のＣＳＥバリッド回路の構成例である。
【図２７】割り込み要因などで命令実行中止があった場合に、リザベーションステーションのエントリを無効化するための回路例である。
【図２８】バイパスヒット回路の一実施形態を示す図である。
【図２９】従来の場合の分岐命令の実行時における問題点を説明する図である。
【図３０】従来の場合の分岐命令がショートループを組んでいる場合の問題点を説明する図である。
【符号の説明】
【００８６】
１０ 加算器
１１、３４、５３、１９１、１９２ セレクタ
１２ 主記憶装置
１３ 命令キャッシュ
１４ 命令一時バッファ
１５ デコーダ
１６ 演算器
１７ 分岐命令処理部
１８ 演算命令処理部
１９ 命令完了処理部
２０、２１（２１−１、２１−２） ブランチヒストリ
５２、６１、６６、６７、６８、９１・・・ ＡＮＤ回路
４６、５１、６２、６６、９２ ＯＲ回路
４２、４３、６０、６３、１２０ ラッチ回路
６４、６９ ＥＸＯＲ回路
６５、７０、８２、１０２、１１２ インバータ
１２１ リザベーションステーション
１４３、１４６、２１２、２２３ 優先順位回路
１８１、１８２ マルチプレクサ
【図１】
2006024231.tif 000003
【図２】
2006024231.tif 000004
【図３】
2006024231.tif 000005
【図４】
2006024231.tif 000006
【図５】
2006024231.tif 000007
【図６】
2006024231.tif 000008
【図７】
2006024231.tif 000009
【図８】
2006024231.tif 000010
【図９】
2006024231.tif 000011
【図１０】
2006024231.tif 000012
【図１１】
2006024231.tif 000013
【図１２】
2006024231.tif 000014
【図１３】
2006024231.tif 000015
【図１４】
2006024231.tif 000016
【図１５】
2006024231.tif 000017
【図１６】
2006024231.tif 000018
【図１７】
2006024231.tif 000019
【図１８】
2006024231.tif 000020
【図１９】
2006024231.tif 000021
【図２０】
2006024231.tif 000022
【図２１】
2006024231.tif 000023
【図２２】
2006024231.tif 000024
【図２３】
2006024231.tif 000025
【図２４】
2006024231.tif 000026
【図２５】
2006024231.tif 000027
【図２６】
2006024231.tif 000028
【図２７】
2006024231.tif 000029
【図２８】
2006024231.tif 000030
【図２９】
2006024231.tif 000031
【図３０】
2006024231.tif 000032