JP3809178B2 - 分岐履歴情報の書き込み制御装置及びその方法 - Google Patents

分岐履歴情報の書き込み制御装置及びその方法 Download PDF

Info

Publication number
JP3809178B2
JP3809178B2 JP2005235553A JP2005235553A JP3809178B2 JP 3809178 B2 JP3809178 B2 JP 3809178B2 JP 2005235553 A JP2005235553 A JP 2005235553A JP 2005235553 A JP2005235553 A JP 2005235553A JP 3809178 B2 JP3809178 B2 JP 3809178B2
Authority
JP
Japan
Prior art keywords
instruction
branch
branch history
history information
write
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
JP2005235553A
Other languages
English (en)
Other versions
JP2006024231A (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 JP2005235553A priority Critical patent/JP3809178B2/ja
Publication of JP2006024231A publication Critical patent/JP2006024231A/ja
Application granted granted Critical
Publication of JP3809178B2 publication Critical patent/JP3809178B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、分岐予測部を採用した情報処理装置における分岐履歴情報書き込み制御装置に関する。
命令実行処理装置においては、パイプライン処理をはじめとする技術を用い、ある命令の実行の完了を待たずに後続の命令の実行を次々と開始することで、性能の向上を図っている。ここで、先行する命令が、分岐命令のように後続の実行シーケンスを変更する命令である場合には、分岐が成立する場合には分 岐先の命令を実行パイプラインに投入しなければ、実行パイプラインが乱されて、最悪の場合には逆に性能が落ちてしまう。ここで、ブランチヒストリに代表される分岐予測部を設けて、分岐の成立を予測し、分岐成立が予測された場合には、分岐命令の後ろに分岐先の命令を実行制御部あるいは命令処理部に投入することで、性能の向上を図ってきた。
しかし、従来技術における分岐予測部では、分岐制御部において実行完了した分岐命令の分岐履歴情報を、命令フェッチを一時停止させる形で、ブランチヒストリに登録していた。
この方式においては、特に、分岐予測に失敗して正しい後続命令を実行し直す、すなわち、再命令フェッチが生じるケースにおいて、命令一時バッファが空であるが故にフェッチ要求頻度が高いにも関わらず、該完了分岐命令のブランチヒストリへの分岐履歴情報の書き込みによって、命令フェッチパイプラインを一時中断してしまうために、性能が上がっていなかった。
すなわち、図29に示される分岐命令BCの実行のように、分岐命令の実行サイクルのWサイクルにおいて、ブランチヒストリへ分岐履歴情報を書き込むが、通常、ブランチヒスト リはRAMで構成されるため、1回に1度のアクセスしか許容できない。従って、分岐先の命令の再命令フェッチは、分岐命令のWサイクルよりも1クロック遅れて開始されることになる。
また、分岐履歴情報は、分岐制御部内で完了可能になった時点でブランチヒストリに書き込むようにしており、本当の分岐実行完了時点で書き込んではないために、分岐実行の完了直前に割り込みが起こるケースで、リターンアドレススタックが誤動作してしまう場合が生じていた。
ショートループがある場合、すなわち、例えば、図30(a)のような命令列では、一回の命令フェッチでこの命令列をフェッチしてしまうことが出来る。従って、図30(b)のようなタイミングとなり、再命令フェッチよりも分岐履歴情報の書き込みが遅れるために、再命令フェッチ直後にループする分岐命令などがある場合には、正しい分岐予測が行えない。このため、この場合には1回余分に再命令フェッチが行われるので、性能劣化を引き起こしていた。
本発明の課題は、分岐予測部を備えた情報処理装置において、処理遅延を抑制することの可能な命令実行制御装置及びその方法を提供することである。
本発明における装置は、分岐命令の分岐予測を行う分岐予測手段を備えた命令実 行処理装置における分岐履歴情報書き込み制御装置において、リターンアドレススタック手段と、前記分岐命令がサブルーチンのコールもしくはリターンに相当する命令であり、該分岐予測手段に前記分岐命令の分岐履歴情報の書き込み要求を出したにも関わらず、前記分岐命令が実行されなかったときは、該分岐予測手段に前記分岐履歴情報を書き込むものの、該リターンアドレススタック手段は動作させないように制御する制御手段とを備えることを特徴とする。
本発明における方法は、分岐命令の分岐予測を行う分岐予測部と、リターンアドレススタックとを備える装置における命令制御方法であって、分岐命令を実行した結果のサブルーチンのコールもしくはリターンに相当する命令が該分岐予測部に前記分岐履歴情報の書き込み要求を出したにも関わらず、該分岐命令が実行されなかったときは、該分岐予測部に分岐履歴情報を書き込み、該リターンアドレススタックは動作させないように制御するステップを備えることを特徴とする。
本発明によれば、従来、分岐履歴情報を命令フェッチを待たせて、分岐予測部(ブランチヒストリ)に書き込んでいたのを、命令フェッチを待たせることなく、ブランチヒストリへの分岐履歴情報と命令フェッチなどのメモリへの制御が同時に生じないタイミングを見計らって、分岐履歴情 報をブランチヒストリに書き込むようにしたので、命令フェッチが待たされることが無く、命令の実行処理速度を向上させることが出来る。
本発明によれば、分岐命令の実行において、ブランチヒストリへのエントリの書き込みのタイミングをずらすことにより、命令フェッチ要求を優先的に処理することが可能となり、処理遅延をなくすことが出来る。
また、本発明によれば、実際に実行されなかった分岐命令のブランチヒストリが報告されてきたとき、ブランチヒストリに登録はしても、リターンアドレススタックを動作させないので、後続のサブルーチンコール・リターン対の対応が崩れることを防ぎ、サブルーチンリターン命令の分岐先アドレスの予測の失敗をなくすことができる。
本発明の実施形態においては、ブランチヒストリを索引している間は分岐履歴情報の書き込みを保留し、該索引をしないサイクルに分岐履歴情報の書き込みを行う。この手法により、命令フェッチが阻害されることが無くなるので、パイプライン処理がスムーズに行え前記性能劣化を防ぐことが可能となる。
すなわち、図1に示されるように、図29に対応する命令列を実行する場合、NOP5の命令フェッチが、従来では、分岐命令BCのWサイクルの後に開始されていたが、本実施形態では、分岐命令BCのWサイクルと同じサイクルで、NOP5の命令フェッチを開始することが出来る。従って、本実施形態を適用することにより、平均1クロックの性能改善を図ることができる。
また、再命令フェッチ直後の命令フェッチの密度が高い間は、ブランチヒストリへの書き込みを保留する。特に、再命令 フェッチ直後の数クロックは新たに分岐命令が実行完了されることはあり得ないので、このようにすることで、次に記すようにリザベーションステーションを設けなくとも、規模の小さい回路で性能劣化の大部分を防ぐことができる。
本発明の実施形態では、前記分岐履歴情報の書き込み保留をするための一時的なバッファの実現方法を提供する。このようなバッファの機能を実現する保留装置として、リザベーションステーションを設けることで、命令フェッチ要求が続く場合、すなわち、命令パイプラインが非常にスムーズに流れているようなケースにおいても、命令フェッチ要求を阻害する要因をなくすこと ができるので、性能劣化を防ぐことができる。
また、前記保留装置により分岐履歴情報の書き込み保留中に、更に書き込み要求があった場合や、前記一時バッファとなるリザベーションステーションの溢れを防止するための制御方法を提供する。このような本実施形態によれば、漏れなく分岐履歴情報をブランチヒストリに登録・更新することが可能となる。
更に、ブランチヒストリの構成により、複数の分岐履歴を同一サイクルで同時に書き込みを行う。別のエントリを保持しうる複数のRAMなどで構成されるブランチヒストリでは、最大その構成するRAMの数だけ、同時に異なるエントリを書き込むことが可能となる。このようにすることで、明らかに、多くの分岐命令の履歴情報を、分岐予測のための読み出しの阻害要因を低下させながら、ブランチヒストリに書き込みを行うことができる。
また、分岐命令が完了するよりも前に、その分岐履歴情報をブランチヒストリに報告する。一般にアウトオブオーダなどの手法をとる命令実行制御装置では、ある命令の実行そのものは完了するための条件がそろっているにもかかわらず、前の命令が完了できないために待たされる場合がある。特に、このようなケースでは、その完了できなかった命令が完了条件を満たすと、その後、待たされていた命令を集中して完了しようとする。従って、このような方法を取ることによって、ブランチヒストリへの書き込み負荷を分散させることができる。
また、リターンアドレススタックを持つ分岐予測部の場合、実際に実行されなかった分岐命令の分岐履歴情報が報告されてきたとき、リターンアドレススタックを動作させてしまうと、その性質上、後続のサブルーチンのコール・リターン対の対応が崩れてしまい、サブルーチンリターン命令の分岐先アドレスの予測に失敗する。従って、ブランチヒストリに分岐命令は登録はしても、リターンアドレススタックは、それが本当に実行されない限りは、実行中の該コール・リターン命令によって誤動作させないようにする。
また、命令の実行完了まで、その分岐履歴情報の登録・更新を待たせる。この場合、実行完了と同時に分岐履歴情報の書き込みを行っても良いし、更に、その書き込みを都合の良いタイミングまで待っても良い。また、この場合、該分岐命令の実行完了を判断するために、命令毎に割り振られるID番号で認識する方法を用いることができる。また、分岐履歴情報が送られてきたにも関わらず、該分岐命令が実行をキャンセルされた場合には、その書き込みリザベーションステーションの対応する該エントリを無効にすることもできる。実行完了まで待つことで、確実に実行された分岐の履歴情報を用いることになるので、誤った分岐履歴情報が登録されることが無く、分岐予測精度が向上する。
分岐予測部で分岐予測を行う際に、書き込み待ちの分岐履歴情報などを、バイパスして用いることも可能である。このバイパスの採用により、最新の分岐履歴情報を用いることが出来るので、特に局所的なループなどにおいて大きな効果を得ることができる。すなわち、ショートループ1個毎に数クロック程度、パイプラインの処理遅延が改善されることになる。
例えば、図2に示されるように、図30に対応するショートループを実行する場合、従来、図30に示すように、二回目のループの命令L(2)の実行サイクルの内、Bサイクルの時に、三回目のループの命令L(3)の命令フェッチが開始されているが、図2においては、分岐履歴情報をバイパスして使用することにより、命令L(2)のIBサイクルのタイミングで命令L(3)の命令フェッチが開始されている。このように、本実施形態を使用すれば、図30に示す従来手法よりも、6クロックの性能改善を図ることが出来る。
また、ブランチヒストリのRAMとして、書き込みと読み出しを同じサイクルで独立して行うことが出来る、デュアルポートRAMを用いる。回路実装に余裕がある場合は、この方法でもっとも簡単に性能劣化を防ぐことができる。
図3は、本発明の実施形態の基本的なブロック図を示す図である。本実施形態の命令実行制御装置は、アウトオブオーダ方式を採用している。従って実行制御部は図3においては、おおよその時間依存しか示されていない。
本実施形態においては、命令フェッチは1度のリクエストで、8バイトアラインされた16バイトの命令列を確保することができるとする。まず、セレクタ11には、次にフェッチする命令のアドレスが入力される。セレクタ11に入力されるアドレスは、加算器10から入力される、シーケンシャルな命令のアドレス、割り込み処理のスタートアドレス、ブランチヒストリからの分岐予測結果である予測分岐先命令アドレス、及び、分岐命令処理部17が分岐命令を実行した結果 確定した分岐先命令アドレスである。セレクタ11は、アウトオブオーダ方式の情報処理装置において、命令の順序を保証する命令完了処理部19によって制御される、命令実行の流れの制御装置(不図示)によって制御され、各場合において、適切なアドレスを選択するように構成されている。セレクタ11から出力されたアドレスは、命令フェッチの有効アドレスIF EAGとして、ブランチヒストリ20に入力されるとともに、命令フェッチを行うために、主記憶装置12に入力される。主記憶装置12は、セレクタ11から与えられたアドレスに対応する命令を命令キャッシュ13に入力するとともに、該命令のアドレスは、加算器10に入力される。命令キャッシュ13に入力された命令は、命令一時バッファ14に格納された後、デコーダ15において、デコードされ、分岐命令処理部17や、演算命令処理部18やその他の命令処理部へ送られて処理される。また、分岐命令の場合には、分岐条件の演算などが演算器16においてなされ、結果が分岐命令処理部17に入力される。また、演算が分岐命令の決まった演算ではなく、命令列によって記述されている場合には、演算命令処理部18によって演算され、演算結果が分岐命令処理部17に入力される。更に、分岐命令処理部17や演算命令処理部18の演算完了通知は、命令完了処理部19において処理され、命令の実行順序の保証及び、アウトオブオーダ方式の命令実行順序の制御に使用される。分岐命令処理部17からは、分岐命令の実行の結果決定した分岐先命令のアドレスがセレクタ11に入力される。
図4は、ブランチヒストリの構成例を示す図である。ブランチヒストリ20は、2つのRAM20−1、20−2からなる構成を持ち、8バイトアラインされた命令フェッチアドレスにより、この2つのRAM20−1、20−2が、それぞれ上位8バイト範囲と下位8バイト範囲の分岐履歴情報を検索する仕組みになっている。本実施形態において、ブランチヒストリ20には、サブルーチンリターン命令のリターン先予測のために、リターンアドレススタックを設けている(不図示)。
また、本実施形態において、実行処理部における分岐命令処理部17は、最大4つの分岐命令を処理可能であり、そのうち同時に最大1つの分岐命令の実行完了準備を行い、命令完了制御部19に送出する。ここで、従来技術においては、このタイミングでブランチヒストリに分岐履歴情報を送出していた。
命令完了制御部19では、実行中(命令デコードから完了まで)の命令のすべてにIID(Instruction ID)を割り当て、その実行を管理している。本実施形態では、最大16命令が実行部に存在することが出来る、すなわち、IIDの値は0〜15のいずれかが 割り当てられるものとする。
なお、ブランチヒストリ20は、読み出しと書き込みが同時に行えるデュアルポートRAMを使用するのが好ましい。図5は、再命令フェッチした分岐命令の分岐履歴情報の書き込みを遅らせる構成の概略構成例を示す図である。また、図6及び図7に図5のブロック31、32の詳細な構成例を示す。
本実施形態では、分岐命令処理部17において、分岐予測に失敗したことが判明すると、命令フェッチ部(不図示)へ正しい分岐先命令アドレス(もしくは後続命令アドレス)を発行して、再命令フェッチを要求する。
このとき、命令キャッシュ13が何らかの理由で該要求を受け付けられない場合には、該要求を受け付けられるようになるまで、再命令フェッチ要求が待たされることになる。再命令フェッチ要求が待たされている間、+REIFCH REQUESTはONになったままである。この信号は、直接、ブロック30に入力する代わりに、後述の図11の回路を設けて、この回路から出力される信号をブロック30に入力するようにしても良い。
このケースでは、該要求が待たされた結果、該要求発行のタイミングと、ブランチヒストリ20への書き込みタイミングが一致してしまう可能性があり、従来技術においては、この場合ブランチヒストリ20への書き込みが優先され、再命令フェッチ要求は更に1クロック以上遅れることになっていた。本実施形態によれば、必ず再命令フェッチ要求が優先されるため、従来技術のような性能劣化は起こらない。
再命令フェッチ要求(“H”の+REIFCH REQUEST)がブロック30に入力されると、ブロック30からは、ブランチヒストリ20への分岐履歴情報の書き込み待ち信号の論理反転した信号(−WAIT BR COMP WRITE)と、再命令フェッチの再命令フェッチ信号のホールド信号(+BRCOMP REIFCH HOLD)が出力される。+BR COMP REIFCH HOLDは、ブロック31に入力される。一方、−WAIT BR COMP WRITEは、ブロック32に入力される。ブロック31では、+BRCOMP AS TAKEN等の分岐履歴情報を受け取り、更に、分岐命令アドレス(+BR COMP IAR)及び分岐先命令アドレス(+BR COMP TIAR)が入力される。そして、ブランチヒストリ20への書き込み指示を制御する信号(+CREATE NEW ENTRY、+UPDATE OLD ENTRY、+ERACE ENTRY)や、分岐履歴情報、分岐命令アドレスにラッチをかませた信号(+BR COMP IAR LCH)や分岐先命令アドレスにラッチをかませた信号(+BR COMP TIAR LCH)が出力される。分岐履歴情報と、分岐先命令アドレスは、ブランチヒストリ20のデータ書き込み用ポートに入力される。分岐命令アドレスは、命令フェッチアドレス(+IF EAG)とともに、セレクタ34に入力される。また、ブロック32からは、ブランチヒストリ20への書き込み指示信号が出力され、この信号によってセレクタ34から適切なアドレスが出力されるとともに、ブランチヒストリ20を書き込み可の状態として、分岐履歴情報などを書き込み可能とする。
図6は、図5のブロック31の内容を詳細に示す回路例であり、書き込み待ちの間、データを保持しておく回路の例である。AND回路41には、ブランチヒストリ20のエントリのアップデートが有効であるか否かを示す信号の論理反転した信号(−BRHIS UPDATE VALID)と+BR COMP REIFCH HOLD が入力される。従って、ブランチヒストリのエントリのアップデートが無効で、再命令フェッチが要求されている場合には、ラッチ回路42に、分岐履歴情報や 分岐命令アドレス、分岐先命令アドレスが保持される。ラッチ回路42からは、分岐履歴情報と、分岐命令アドレス、分岐先命令アドレスが出力されるとともに、図5で説明したように、分岐履歴情報の中から、ブランチヒストリ20への書き込み指示信号である、+CREATE NEW ENTRY、+UPDATE OLD ENTRY、+ERACE ENTRYが取り出されて出力される。
図7は、図5のブロック32の詳細を示す図であり、ブランチヒストリ書き込み制御を行うための信号を生成する回路例である。すなわち、ブランチヒストリ20に新しいエントリを生成することを指示する信号(+CREATE NEW ENTRY)、古いエントリを更新することを指示する信号(+UPDATE OLD ENTRY)、あるいは、ブランチヒストリのエントリを消去する信号(+ERACE ENTRY)のいずれかが入力された場合には、ブランチヒストリへの書き込みが待たされていない時(−WAIT BR COMP WRITEが論理“H”のとき)に限り、ブランチヒストリ20への書き込み有効信号(+WRITE BRHIS VALID)が出力される。このとき、図5のセレクタ34において、分岐命令アドレスが選択され、分岐履歴情報がブランチヒストリに書き込まれる。
図8は、図5のブロック30に対応する回路の一例を示す図である。また、図9は図8の回路の動作を説明するためのタイムチャートである。図8のカウンタは、図9のタイムチャートのとおり再命令フェッチ要求を動作開始のトリガとして(図9(b) 参照)、再命令フェッチ実行、2クロック保持(同図(d)参照)、ブランチヒストリへの書き込み(同図(e)参照)、と状態遷移して、動作待ち(再命令 フェッチ要求待ち)状態に戻る。この方法を用いれば、通常再命令フェッチから3つの命令フェッチ要求が優先されるので、命令一時フェッチ要求に限らず、命令一時バッファ14が空である場合にも、この手法を適用することができる。この場合、図5や図8の入力信号の一つである+REIFCH REQUEST信号のかわりに、図11の出力を入れれば良い。
すなわち、同図のカウンタは2ビットで構成されており、+REIFCH REQUESTが入力されると、ラッチ回路60を介して、アンド回路61とOR回路62の一方の入力端子にそれぞれ、正論理と反転論理の信号が入力される。なお、同図では、<0>が上位ビットであり、<1>が下位ビットである。再命令フェッチ信号が“H”の時には、ラッチ回路63に保持される値は、“01”となり、これが維持される。再命令フェッチ信号が“0“になると、ラッチ回路60のQ端子からは、“0”が、Qの反転端子からは“H”が出力される。従って、カウンタ値“01”がEXOR回路64、インバータ65、OR回路66、AND回路67、68を介して出力されると、アンド回路61とOR回路62から出力される カウンタ値は“10”となる。ラッチ回路63には、“10”が保持されているので、EXOR回路64の出力は、“1”となり、インバータ65及び、OR 回路66の出力も、“1”となる。従って、AND回路67と68の出力はそれぞれ“1”となる。すると、再命令フェッチ信号が“0”となっているので、 AND回路61には、“11”が入力され、OR回路62には、“10”が入力され、2ビットのカウンタ値は“11”となる。このようにして、再命令フェッ チ信号が“0”になると、カウントアップをはじめ、“11”になるまで、カウントアップする。カウント値が“11”となると、再び“00”となる。このカ ウント値を受けて、EXOR回路69は、カウント値が“01”あるいは、“10”の時、再命令フェッチ保持信号+BR COMP REIFCHHOLDを出力する(図9(d)参照)。また、カウント値が“00”や“11”の時は、ブランチヒストリ20への書き込み許可信号−WAIT BR COMP WRITEを出力する。
以上、説明したように、“H”の再命令フェッチ信号が入力されるとカウント値は、「0」から「1」になり、再命令フェッチ信号が“L”に落ちると、そのカウント値がカウントアップされる。そして、2クロック後に、該カウント値が「3」になったとき、再命令フェッチ保持信号(+BR COMP REIFCH HOLD)が“L”となり、ブランチヒストリ20への書き込み許可信号(+WRITE BRHIS VALID)が“H”になって、ブランチヒストリ20への書き込みが可能となる。
図10は、図5のボックス30に当たる回路の他の実施形態を示す図である。同図において、+D VALID信号は、命令デコーダ15において、有効な命令がデコードされたときにONになる信号である。セットリセットフリップフロップ81には、セット信号として、再命令フェッチ信号(+REIFCH REQUEST)を、リセット信号として、+D VALID信号を与える。これにより、再命令フェッチ要求から、それに対応する命令列がデコードされるまで、このフリップフロップ81の出力信号がONになる。従って、フリップフロップの出力信号がONの間は、+BR COMP REIFCH HOLD信号がONであり、インバータ82から出力されるその信号の反転信号である−WAIT BR COMP WRITE(+BR COMP WRITE)がOFFになる。
図11は、命令一時バッファが空であるときにも動作させるための回路構成例である。同図の回路は、図5のボックス30の入力として、+REIFCH REQUESTの代わりの信号を与えるものである。すなわち、(1)命令バッファ14が空である(+I BUFF EMPTYが“H”)、(2)ITサイクルにおいて命令フェッチ要求が無効(−IT IF REQ VALIDが“H”)かつ、(3)IBサイクルにおいて命令フェッチ要求が無効(−IB IF REQ VALIDが“H”)であるとき、AND回路91の出力は“H”となるので、上記(1)〜(3)の条件が成立する場合、または、再命令フェッチ要求がある(+REFECH REQUESTが“H”)場合に、信号+REIFCHREQ OR IF EMPTYがONとなる。そして、これを図5のボックス30に、再命令フェッチ信号の代わりに入力する。
図12及び図13は、図5のボックス30の部分の回路の別の実施形態を示す図である。図12の場合は、再命令フェッチがあったときに、ブランチヒストリ20へ書き込むのではなく、命令キャッシュ13が命令フェッチを受けられない時に、ブランチヒストリ20に分岐履歴情報を書き込む場合のボックス30の構成例である。このとき、入力としては、再命令フェッチ要求ではなく、命令キャッシュ13から送信されてくる、+SU BUSY信号を入力する。この信号が“H”のときは、命令キャッシュ13がいっぱいで、命令フェッチを受け付けられないことを意味している。この場合、“H”の+SU BUSY信号が入力されると、バッファ101からブランチヒストリ20へ“H”の書き込み許可信号(+BRCOMP WRITE)が出力され、そうでない場合には、インバータ102から“L”の再命令フェッチを一時保持する旨を指示する信号(+BR COMP REIFCH HOLD)が出力される。
図13の場合は、再命令フェッチがあったときではなく、命令のプリフェッチなど、実命令フェッチでない要求が起きたときに、ブランチヒストリ20に書き込みを行う場合の図5のボックス30の回路の構成例である。このとき、入力としては、実命令フェッチでない、例えば、命令のプリフェッチ要求などの信号を入力とし、この信号が“H”となって入力された場合には、バッファ111から“H”のブランチヒストリへの書き込み許可信号(+BR COMP WRITE)が、そうでない場合には、インバータ112から“H”の再命令フェッチの一時保持を指示する信号(+BR COMP REIFCH HOLD)が出力される。
図14は、ブランチヒストリ書き込みリザベーションステーションの構成例を示す図である。リザベーションステーションへエントリ登録する時には、バリッドフラグ(Valid)をセットし、その信号をホールド信号にすることで、分岐予測データ(分岐履歴情報)を保持する。
同図のリザベーションステーション120(120−1)を用いる場合、ブランチヒストリ20への書き込み制御は、上記各実施形態のいずれかを用いることもできる。
上記リザベーションステーション20は、4つのエントリ(RSW0〜RSW3)からなっており、各エントリRSWx(x=0〜3)は、バリッドフラグ (Valid)と命令アドレス(IAR)を登録しており、更に、この登録された命令に対応する分岐履歴情報121を保持している。
図15は、図14のリザベーションステーション120を用いる場合のブランチヒストリ20への書き込み制御を行う実施形態の全体の回路構成を説明する図である。
まず、分岐命令実行部より、分岐履歴情報(+BR COMP AS TAKEN等)がリザベーションステーション120に入力されるとともに、分岐命令アドレス(+BR COMP IAR)及び分岐先命令アドレス(+BR COMP TIAR)も入力される。リザベーションステーション120は、図14、22〜25に示されるような構成を有する。リザベーションステーション120からは、ブランチヒストリ20に書き込むデータが出力され、図19で示されるセレクタ130を介して、奇アドレス用のブランチヒストリ20−1と偶アドレス用のブランチヒストリ20−2に書き込むデータとして出力される(+RSW ODD/EVEN DATA)。一方、ブランチヒストリ20−1、20−2への書き込み許可信号は、リザベーションステーション120から出力される信号をブロック140で処理し、それぞれ、奇アドレス用ブランチヒストリ書き込み許可信号(+RSW EVEN WRITE VAL)及び偶アドレス用ブランチヒストリ書き込み許可信号(+RSW ODD WRITE VAL)が生成される。セレクタ150では、リザベーションステーション120から送られてきたアドレスIARと、ブランチヒストリ20検索用のアドレス(+IFEAG)のいずれかを選択する。特に、ブロック140から書き込み許可信号が送られてきた場合には、IARを選択して、ブランチヒストリ20に書き込む動作を行わせる。ブランチヒストリ20への書き込み動作は、例えば、図20の回路によって行われる。
本実施形態では、複数同時書き込みも実施している。ブランチヒストリ20への複数同時書き込みの制御回路を図16〜20に示す。
本実施形態では、ブランチヒストリ20は2つのRAMで構成されている。従って、異なるRAM上のエントリに書き込むことが可能な分岐履歴情報がある場合には、これらの図の回路によって、異なる2つの分岐履歴情報を同一サイクルに書き込むことが可能となる。
図16は、ブランチヒストリへの複数同時書き込み選択回路(その1)を示す図である。同図の回路においては、2つのブランチヒストリ20−1、20−2に同時書き込み可能であるときには、+WRITE DOUBLE信号がONとなっている。
同図では、6個のAND回路141−1〜141−6には、リザベーションステーション120のエントリのバリッドフラグ(+RSWx VALID) が2つ入力されている。同図上部の回路140Aは、リザベーションステーション120の1つのエントリをブランチヒストリ20−1、20−2に書き込む場合の書き込み信号選択回路であって、2つのバリッドフラグのANDを取って、ともにバリッドならば、“H”の信号をAND回路142−1〜142−6の一方に入力させる。また、2つのリザベーションステーションRSWxのエントリのアドレス(RSWx IAR)の内、下から4ビット目を比較し、両ビットが異なれば、“H”をAND回路142−1〜142−6の他方の入力端子に入力する。これは、ブランチヒストリ20においては、命令が16バイト単位で格納されるので、書き込みアドレスが16以上異なる場合に、ブランチヒストリ20−1、20−2に、それぞれ、下位8バイトと上位8バイトを書き込みを行うようにしているものである。そして、2つのアドレスの組合せに対して、優先順位決定回路143において、優先するアドレスの組から優先的にブランチヒストリ20に書き込むように制御する。また、AND回路142−1〜142−6までのいずれかの信号がONである場合には、複数書き込み可能信号(+WRITE DOUBLE)を出力する。
また、同図下部の回路140Bは、リザベーションステーション120の1つのエントリをブランチヒストリ20に書き込む場合の書き込み信号の選択回路である。各リザベーションステーションRSWxのエントリのバリッド信号のいずれかがONであれば、書き込みデータが取得可能であることを示す信号(+WRDATA AVAILABLE)が出力される。また、リザベーションステーション120の各エントリの書き込みに対し回路146で優先順位を設定している。そして、複数書き込み可能信号がOFFの場合であって、かつ、+WR DATA AVAILABLEが“H”のときに、単一書き込み信号(+WRITE SINGLE)が出力されるとともに、リザベーションステーション120のどのエントリに書き込むかを示す信号(+WRITE RSWx)が出力される。
なお、同図においては、同図の左上に記載されているようなAND回路149を設け、このAND回路149の出力を+RSWx VALID信号の代わりに使用する事も可能である。AND回路149には、+RSWx VALID信号と、後述の−RSW CSE VALID信号が入力される。これにより、命令実行が完了した後、ブランチヒストリ20への書き込みを行うようにすることが出来る。すなわち、+RSW CSE VALID信号は、命令実行がまだ完了していない場合にONとなる信号である。この信号生成方法については、後述する。
図17は、ブランチヒストリへの複数同時書き込み選択回路(その2)を示す図である。同図の回路では、図16の単一書き込み選択回路140Bからの出力とリザベーションステーション120から出力される命令アドレス(IAR)の28ビット目をAND回路151(151−1〜151−4)に入力する。これは、単一書き込み選択回路からの書き込み信号と、命令アドレスの28ビット目がONかOFFかを見てやることによって、命令アドレスが奇の場合の書き込み許可信号が出力される。そして、AND回路151−1〜151−4のいずれかがONの場合には、奇アドレスの書き込みが許可になっているので、これが出力されているときには、奇ブランチヒストリ20−1への書き込みを許可する信号(+RSW ODD WRITE VALID)が出力される。また、複数書き込み信号(+WRITE DOUBLE)がONの時は、奇ブランチヒストリ20−1と偶ブランチヒストリ20−2の両方を書き込み許可とする。すなわち、+RSWODD WRITE VALIDと+RSW EVEN WRITE VALIDをONにする。また、奇ブランチヒストリ20−1への書き込みがOFFである場合には、AND回路66に入る信号がONになり、更に、単一書き込み信号(+WRITE SINGLE)がONの場合、偶ブランチヒストリ20−2への書き込み許可信号(+RSW EVEN WRITE VALID)がONとなる。また、これらの、奇あるいは偶ブランチヒストリへの書き込み許可信号は、ブランチヒストリ20への書き込み待ちとなっていない旨の信号(−WAIT BR COMP WRITE)とブランチヒストリ20への書き込みを強制する信号(+FORCE WRITE BRHIS)のいずれかがONの場合に、出力されるようになっている。なお、+FORCE WRITE BRHISについては、後述する。
図18、図19は、ブランチヒストリへの複数同時書き込み選択回路(その3)、(その4)である。図18の回路は、図16の出力を入力とし、それぞれ、リザベーションステーション120の0番から3番までのエントリRSW0〜RSW3の書き込み選択信号(+SEL RSWx WRITE)を生成して、図19の回路に入力する。
図19の回路は、リザベーションステーション120から送信されてくるデータ(RSWx DATA)を選択するための構成である。図19では、奇ブランチヒストリ20−1と偶ブランチヒストリ20−2に対する選択回路が別々に構成されている。マルチプレクサ181と182には、リザベーションステーション20からのデータが入力され、その中の一つがRSW ODD DATA、あるいは、RSW EVEN DATAとして送出される。
マルチプレクサ181は、図18の回路の出力であるセレクト信号(+SELRSWx WRITE)と、リザベーションステーション120のRSW0〜RSW3から入力される命令アドレス(IAR)の28ビット目のビットとのANDを取り、その結果をマルチプレクサ181に送って、切り替え動作をさせている。これは、セレクト信号がONであり、かつ、命令アドレスが奇の場合に、選択信号を送って、対応するデータを送出するものである。
同様に、マルチプレクサ182には、図18の回路の出力であるセレクト信号と、リザベーションステーション120のRSW0〜RSW3から入力される命令アドレスの28ビット目の論理を反転させ たものとのANDを取り、これをマルチプレクサ182に送って、切り替え動作をさせている。これは、セレクト信号がONであり、かつ、命令アドレスが偶である場合に、対応するデータを送出するものである。
図20は、ブランチヒストリへの複数同時書き込み回路を示す図である。セレクタ191には、奇ブランチヒストリ20−1への命令書き込みアドレス(RSW ODD IAR)とブランチヒストリ20からの読み出しアドレス(IF EAG)が入力される。同様に、セレクタ192には、偶ブランチヒストリ20−2への命令書き込みアドレス(RSW EVEN IAR)とブランチヒストリ20からの読み出しアドレス(IF EAG)が入力される。また、セレクタ191には、図17の回路の出力である+RSW ODD WRITEVALIDが入力され、奇ブランチヒストリ20−1への書き込みが許可されている場合には、セレクタ191がRSW ODD IARを選択するようになっている。同様に、図17の回路の出力である+RSW EVEN WRITEVALIDがセレクタ192に入力され、偶ブランチヒストリ20−2への書き込みが許可されている場合には、セレクタ192がRSW EVEN IARを選択するようになっている。また、奇ブランチヒストリ820−1及び偶ブランチヒストリ20−2は、それぞれ、+RSW ODD WRITE VALID及び+RSW EVEN WRITE VALIDによってライトイネーブルが設定され、それぞれ、RSW ODD DATA及びRSW EVEN DATAが書き込まれる。
更に、本実施形態において、該リザベーションステーション120が満杯の状態で、更に書き込むべきデータが分岐命令制御部から渡された場合には、いずれか保留中のデータを少なくとも一つ書き込むことが出来る。この実施形態を図21、22に示す。
図21は、ブランチヒストリへの書き込み強制回路の回路構成例を示す図である。AND回路201には、図22の回路からのエントリのバリッド信号(+RSWx VALID)が入力され、すべてのリザベーションステーション120のすべてのエントリがバリッドの場合には、リザベーションステーション120は一杯であるので、これを示す信号+RSW FULLが出力される。また、ブランチヒストリ20の更新が有効である場合には、分岐命令処理部17から入力される+BRHIS UPDATE VALIDがONとなり、強制的なリザベーションステーションへの書き込み信号+FORCE WRITE BRHISが生成され、図17において使用される。
また、図22は、リザベーションステーション120のバリッド回路の構成例を示す図である。ブランチヒストリ20の更新が有効であり(+BRHIS UPDATE VALIDがON)、かつ、リザベーションステーション120の0番のエントリRSW0が有効でない(−RSW0 VALIDがON)であるか、リザベーションステーション120がいっぱいであり(+RSW FULL)、かつ、リザベーションステーション120の0番が選択されている(図18の出力である+SEL RSW0 WRITEがONの)場合には、フリップフロップ211−1にセット信号が送信され、リザベーションステーション120の0番が有効であるという信号(+RSW0 VALID)がONとなる。同様に、リザベーションステーション120の1番から3番についても同様の設定がされる。ただし、優先順位回路212によって、リザベーションステーション120の0番から次第に優先順が下に行くに従って低くなるように設定されている。フリップフロップ211−1〜211−4のリセットは、ブランチヒストリ20への書き込み待ちになっておらず(− WAIT BR COMP WRITEがON)、かつ、次に、リザベーションステーション120への書き込みが選択されている場合には、リザベーションステーション120のエントリのバリッド信号をリセットする。なお、図22の回路の出力は、図21の回路への入力となる。
すなわち、+FORCE WRITE BRHIS信号によって、図17の+WAIT BR COMP WRITE による書き込み待機信号を抑制して、強制的にブランチヒストリ20に対して書き込み動作をさせる。同時に、そこで選択して、書き込みが行われたエントリは空になるのだから、そこへ、書き込むべきデータをエントリ登録する。もちろん、上記インターリーブ書き込み方式を用いれば、本実施形態では最大2つ書き込むことが可能である。
また、例えば、セットアソシエイティブ方式では、+CREATE NEW、+UPDATE OLD ENTRY、+ERACE ENTRY及び、その他のウェイ選択信号等により、更に、ウェイの制御を行うことで、更に、多くの書き込みを同時に行うことも可能である。
図23は、IID(命令ID)管理により、命令実行完了時以降にリザベーションステーションに書き込むことを可能とする場合のリザベーションステーションの構成例である。
同図の構成では、リザベーションステーション120(120−2)は、図14の構成に加え、後述するCSE−Validフラグと命令完了処理部19の命令ID(IID)を登録するように構成されている。これにより、図24のRSWx CSE−VAL信号を利用し、命令が実行完了したかどうかを判断可能なようにしている。
命令完了処理部19から入力される、実行完了した命令のID(COMMITBR IID)と、リザベーションステーション120にエントリされているIID(RSWx IID)を比較することで、CSE−Validフラグをオフにする。また、割り込みなどで命令実行が中断されたときには、+FLUSHRS信号により、強制的にCSE−Validフラグがオフになる。こうすることで、割り込みなどで実行完了出来なかった命令に対応するエントリが居残らないようになっている。
CSE−VALフラグがONであるならば、命令はまだ実行完了していないので、書き込み選択回路へは、このフラグを用いて+RSWx VALID信号を抑制した信号を図16の+RSWx VALIDの代用とすれば良い。
図24は、書き込みリザベーションステーションのCSEバリッド回路の構成例である。リザベーションステーション120の0番から3番のそれぞれのエントリRSW0〜RSW3に対して、ブランチヒストリ20の更新有効信号(+BRHISUPDATE VALID)がONであり、リザベーションステーション120が無効である(−RSWx VALIDがON)であるか、リザベーションステーションが一杯であり(+RSW FULLがON)、リザベーションステーション120が選択されている(+SEL RSWx WRITE)場合には、フリップフロップ221−1〜221−4のセットポートに信号が入力され、+RSWx CSE VAL信号が出力される。リザベーションステーションの1番から3番についても同様であるが、優先順位回路223が途中に設けられている。この優先順位回路223は、リザベーションステーション0番から3番に向かって優先順位が小さくなるように構成されている。
また、命令完了処理管理部19から、Wサイクルにおいて入力されるCOMMIT BR IIDとリザベーションステーション120に記録されるRSWxIIDとをコンパレータ222(222−0〜222−3)で比較し、一致していれば、フリップフロップ221−1〜221−4をリセットする。また、再命令フェッチしたときに出力される信号+FLUSH RSが入力された場合にも、フリップフロップ221−1〜221−4は、リセットされる。あるいは、図22の回路の出力の論理反転信号である−RSWx VALIDがONの場合にも、フリップフロップ221−1〜221−4はリセットされる。
なお、図24の回路に、−RSWx VALID信号がOR回路224−0〜224−3とAND回路225−0〜225−3に同時に入力した場合、フリップフロップ221−1〜221−4に対して、セットとリセットの信号が同時に入力される可能性がある。この場合、回路は、セット信号を優先するように構成する。
図25は、図23の書き込みリザベーションステーションのデータ保持構成を示した図である。分岐履歴情報がラッチ回路230に入力され、かつ、+RSWx VALIDがONとなると分岐履歴情報が保持され、RSWx 分岐履歴情報として出力される。
なお、ここで、xは、0〜3の数字が当てはまり、同図の回路は、リザベーションステーション120のエントリの数、すなわち、0〜3番までのエントリに対応した数だけ設けられる。
図26は、分岐予測部にリターンアドレススタックを有する場合のCSEバリッド回路の構成例である。リターンアドレススタックは、完了した(履歴情報を書き込む)分岐命令が、サブルーチンコール命令もしくはサブルーチンリターン命令に相当するときに、動作する構成となっている。
割り込みなどで実行中止があった場合(+RS1信号がON)には、VALID信号(リザベーションステーション120のCSE−Validフラグ;図23参照)自体をOFFにするのではなく、該リザベーションステーション120上に存在する分岐履歴情報の中の、サブルーチンコールもしくはリターン相当の命令であるという情報だけを無効化すればよい。この時点で、書き込めるタイミングで書き込めば良くなるので、CSE Validフラグをリセットする。
同図において、+SET RSWx CSE VAL、+RST RSWxCSE VALは、図24のセットリセットフリップフロップの221−1〜221−4のそれぞれセット、リセット端子へ入力している信号にあたる。
また、下側二つのフリップフロップ241−1、241−2を含む部分は、図25の分岐履歴情報のうち、サブルーチンコール命令、リターン命令であることを示す情報を抜き出したものである。
すなわち、セットリセットフリップフロップ242は、+SET RSWxCSE VALが入力されるとセットされ、+RSWx CSE VALをONにする。また、+RST RSWx CSE VALが入力される、あるいは、+RS1がONになると、+RSWx CSE VALはリセットされ、OFFとなる。
ここで、+RS1がONで、かつ、+RSWx CSE VALもONの場合には、AND回路244の出力は“0”となり、フリップフロップ241−1、241−2はリセットされる。ところで、図22の出力である、+RSWx VALIDがOFFの時には、サブルーチンコール命令である場合には、+BRCOMP SUBROUTINE CALLが、サブルーチンリターン命令の場合には、+BR COMP SUBROUTINE RTNがONとなり、フリップフロップ241−1と241−2に入力される。
すなわち、命令実行が完了していない(+RSWx CSE VAL=0)、あるいは、割り込みなどで実行中止が起こっていない(+RS1=0)、かつ、リザベーションステーション120のエントリが有効である(+RSWx VALID=1)場合に、フリップフロップ241−1、241−2のIH端子にON信号が入力され、サブルーチンコール命令あるいは、サブルーチンリターン命令であることを示す信号が保持され、+RSWx SUBROUTINE CALL、あるいは、+RSWx SUBROUTINE RTNとして出力される。
図27は、割り込み要因などで命令実行中止があった場合に、リザベーションステーションのエントリを無効化するための回路例である。セットリセットフリップフロップ251のセット端子には、図22の各フリップフロップ211−1〜211−4のセット端子に入力する信号である+SETRSWx VALが入力され、+RSWx VALIDとして出力される。また、図22のリセット信号として入力される+RST RSWx VALが入力されるか、割り込みなどによる実行中止(+RS1=1)かつ、命令実行が完了していない(+RSWx CSE VAL=1)の場合、セットリセットフリップフロップ25はリセットされる。
図28は、バイパスヒット回路の一実施形態を示す図である。7個のコンパレータ265(265−1〜265−7)から構成されるアドレス比較(分岐予測)部263は、ブランチヒストリ20の分岐予測手法の性質によって異なり、当業者によって適切に構成されるべきものであるので、簡単な説明のみを行う。データパスは同図の太線のようにして、分岐先アドレスBRHIS TIARを生成することで、書き込みリザベーションステーション120や、分岐予測部(図中RSBRx)上のデータを、バイパスして検索対象とすることができる。
すなわち、アドレス比較部263は、読み出し要求のあるアドレスIF EAG を入力として、ブランチヒストリ20(BRHIS−RAM#0、#1)、リザベーションステーション120の各エントリ#RSW0〜3及び、分岐予測部#RSBRxから出力される命令アドレスIARと比較し、これらが一致した場合、対応する分岐先アドレスTIARを選択回路267−1〜267−7から出力させる。そして、選択回路268で、これらの内の一つを選択してブランチヒストリの分岐先アドレス(BRHIS TIAR)として出力する。ここで、分岐予測部では、内部で生成される分岐先命令が有効であり、かつ、分岐予測が成功している場合に、分岐先命令アドレスを選択回路267−7に出力する。
以上のような構成を組み合わせて用いることにより、情報処理装置の性能向上を図ることができる。なお、上記実施形態においては、RSWxのように、小文字 のxを添えて記号を記載して説明したものがあるが、これは、例えば、リザベーションステーションの場合、xは、0〜3までの値を取るものであり、対応する構成や信号も0〜3に対応して存在するものである。また、その他の場合も、添え字として使用したxは、対応する構成や信号が複数有り、これらを代表して記載するものであり、対応する数だけの構成や信号が存在することを念頭に置いている。
<付記>本発明は、以下の形態で実現可能である。
1.命令列などを格納するメモリ手段と、分岐命令の分岐予測を行う分岐予測手段とを備えた命令実行処理装置における分岐履歴情報書き込み制御装置において、該分岐予測手段への分岐履歴情報の書き込みと、該メモリ手段への制御が同時に生じないように制御する制御手段を備えることを特徴とする装置。
2.前記制御手段は、前記メモリ手段が命令フェッチ要求を受け付けられないタイミングで、前記分岐予測手段に前記分岐履歴情報の書き込みを行うことを特徴とする1に記載の装置。
3.前記制御手段は、命令のプリフェッチの要求を行うタイミングで、分岐予測手段に前記分岐履歴情報の書き込みを行うことを特徴とする1に記載の装置。
4.前記制御手段は、分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測手段に書き込む際に、数クロック(数ステート)待ってから該分岐予測手段に該分岐履歴情報を書き込むことを特徴とする1に記載の装置。
5.前記制御手段は、分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測手段に書き込む際に、該分岐命令による再命令フェッチ要求が実行されるのを待ち、該再命令フェッチ要求の実行から更に数クロック(数ステート)待ってから、該分岐履歴情報を該分岐予測手段に書き込むことを特徴とする1に記載の装置。
6.前記命令実行処理装置が、前記メモリ手段から出力された命令列を一時的に格納する命令一時バッファ手段を備えている場合、前記制御手段は、該命令一時バッファ手段が空で、かつ、一つも命令フェッチ要求が出されていないときには、分岐命令の書き込み要求が生じてから数クロック(数ステート)待ってから、該分岐命令の分岐履歴情報を前記分岐予測手段に書き込むことを特徴とする1に記載の装置。
7.前記命令実行処理装置が、前記メモリ手段から出力された命令列を一時的に格納する命令一時バッファ手段を備えている場合、前記制御手段は、該命令一時バッファ手段が空で、かつ、一つも命令フェッチ要求が出されていないときには、書き込み要求のあった分岐命令の分岐履歴を前記分岐予測手段に即座に書き込まず、次の命令フェッチ要求を待ち、該命令フェッチ要求の実行から更に数クロック(数ステート)待ってから、前記分岐履歴情報の書き込みを行うことを特徴とする1に記載の装置。
8.前記制御手段は、前記数クロック(数ステート)計数するためにカウンタを使用することを特徴とする4〜7のいずれか一つに記載の装置。
9.前記制御手段は、分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測手段に書き込む際に、該分岐命令が要求した再命令フェッチに対応するフェッチ命令列を、前記命令実行処理装置内の命令デコード部、あるいは、前記命令一時バッファが受け取るまで待ってから、該分岐履歴情報の書き込みを行うことを特徴とする1に記載の装置。
10.更に、書き込みする前記分岐履歴情報を一時保管するための、書き込みリザベーションステーション手段を備えることを特徴とする1に記載の装置。
11.前記制御手段は、前記分岐予測手段に書き込む必要がある分岐命令に関する前記分岐履歴情報のみ、前記リザベーションステーション手段に登録することを特徴とする10に記載の装置。
12.前記分岐履歴情報は、少なくとも新規エントリ登録、エントリ内容変更、エントリ消去のいずれかであることを特徴とする11に記載の装置。
13. 前記制御手段は、前記書き込みリザベーションステーション手段が満杯になっている状態で、更に、前記分岐履歴情報の書き込みが必要な分岐命令の、該書き込みリザベーションステーション手段への登録要求が来た場合には、該書き込みリザベーションステーション手段に対して書き込み保留中の分岐履歴情報及び登録要求された該分岐履歴情報の内、少なくとも一つを前記分岐予測手段へ書き込むことを特徴とする10に記載の装置。
14.前記制御手段は、前記分岐予測手段が、複数のエントリを同時に書き込み可能な構成であり、前記書き込みリザベーションステーション手段が複数の有効な書き込み保留中の情報を保持している場合には、前記分岐予測手段への書き込みが可能なタイミングにおいて同時に複数書き込みを行うことを特徴とする10に記載の装置。
15.前 記制御手段は、分岐命令よりも前に存在する演算命令などの実行完了により条件コード及び分岐する場合は分岐先アドレスが確定した時点で、該分岐命令が、該分岐命令より前に分岐命令が存在するために、完了できない状態であっても、前記分岐予測手段に該分岐命令の前記分岐履歴情報を書き込む、あるいは、書き込みリザベーションステーション手段に登録することを特徴とする1または10に記載の装置。
16.前記制御手段は、前記分岐履歴情報を書き込んだ、あるいは、前記書き込みリザベーションステーション手段に登録したことを示すフラグを、対応する処理中の分岐命令毎に設けることを特徴とする15に記載の装置。
17. 分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置における分岐履歴情報書き込み制御装置において、リターンアドレススタック手段と、前記分岐命令がサブルーチンのコールもしくはリターンに相当する命令であり、該分岐予測手段に前記分岐命令の分岐履歴情報の書き込み要求を出したにも関わらず、前記分岐命令が実行されなかったときは、該分岐予測手段に前記分岐履歴情報を書き込むものの、該リターンアドレススタック手段は動作させないように制御する制御手段とを備えることを特徴とする装置。
18.前記制御手段は、命令の実行完了時点で、前記書き込みリザベーションステーション手段へ書き込み保留中の分岐履歴情報の書き込みを行うことを特徴とする10に記載の装置。
19.前記制御手段は、命令の実行完了時点で、前記分岐予測手段または前記書き込みリザベーションステーション手段へ、対応するエントリの分岐履歴情報の書き込みを行うことを特徴とする10に記載の装置。
20. 前記命令実行処理装置が、命令制御部に命令の実行完了を管理する手段を有している場合、前記制御手段は、該実行完了管理手段において保持される、命令毎に割り振られるIDを、前記書き込みリザベーションステーション手段のエントリに保持することを特徴とする10に記載の装置。
21.割り込み発生などの要因によって、前記書き込みリザベーションステーション手段の有効なエントリに対応する分岐命令が実行完了されないことが確定した場合には、前記書き込みリザベーションステーション手段の対応するエントリを無効化することを特徴とする10に記載の装置。
22.更に、前記分岐予測手段への書き込み保留中の分岐履歴情報を、分岐予測の検索対象にするバイパス手段を備えることを特徴とする1に記載の装置。
23.更に、前記書き込みリザベーションステーション手段を含む分岐実行部上で実行中の分岐命令の分岐履歴情報を、分岐予測の検索対象にするバイパス手段を備えることを特徴とする10に記載の装置。
24. 前記バイパス手段は、前記分岐命令のための条件コードが確定した時、該分岐命令が非分岐であることが確定した場合はその時点で、分岐することが確定した場合には分岐先アドレスが確定した時点で、前記分岐履歴情報を分岐予測の検索対象とすることを特徴とする23に記載の装置。
25.書き込みと読み出しが同じサイクルで同時に独立して動作可能である、デュアルポートRAMを、前記分岐予測手段のエントリ保持に使用することを特徴とする1に記載の装置。
26.命令列などを格納するメモリと、分岐命令の分岐予測を行う分岐予測部とを備える装置における命令制御方法であって、該分岐予測部への分岐履歴情報の書き込みと、該メモリへの制御が同時に生じないように制御するステップ、を備えることを特徴とする方法。
27.前記メモリが命令フェッチ要求を受け付けられないタイミングで、前記分岐予測部に前記分岐履歴情報の書き込みを行うことを特徴とする26に記載の方法。
28.命令のプリフェッチの要求を行うタイミングで、分岐予測部に前記分岐履歴情報の書き込みを行うことを特徴とする26に記載の方法。
29.分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測部に書き込む際に、数クロック(数ステート)待ってから該分岐予測部に該分岐履歴情報を書き込むことを特徴とする26に記載の方法。
30. 分岐予測に失敗した分岐命令の前記分岐履歴情報を前記分岐予測部に書き込む際に、該分岐命令による再命令フェッチ要求が実行されるのを待ち、該再命令 フェッチ要求の実行から更に数クロック(数ステート)待ってから、該分岐履歴情報を該分岐予測部に書き込むことを特徴とする26に記載の方法。
31. 更に、前記メモリから出力された命令列を一時的に格納する命令一時バッファステップを備え、該命令一時バッファステップにおいて格納される命令列が無く、かつ、一つも命令フェッチ要求が出されていないときには、書き込み要求が生じてから数クロック(数ステート)待ってから、書き込み要求のあった分岐命令の前記分岐履歴情報を前記分岐予測部に即座に書き込むことを特徴とする26に記載の方法。
32.更に、前記メモリから出力された命令列を一時的に格納する命令一時バッファステップを備え、該命令一時バッファステップにおいて格納される命令列が無く、かつ、一つも命令フェッチ要求が出されていないときには、書き込み要求のあった分岐命令の分岐履歴を前記分岐予測部に即座に書き込まず、次の命令フェッチ要求を待ち、該命令フェッチ要求の実行から更に数クロック(数ステート)待ってから、前記分岐履歴情報の書き込みを行うことを特徴とする26に記載の方法。
33.分岐予測に失敗した分岐命令の前記 分岐履歴情報を前記分岐予測部に書き込む際に、該分岐命令が要求した再命令フェッチに対応するフェッチ命令列を、命令デコード部、あるいは、前記命令一時バッファが受け取るまで待ってから、該分岐履歴情報の書き込みを行うことを特徴とする26に記載の方法。
34.更に、書き込みする前記分岐履歴情報を一時保管するための、書き込みリザベーションステーションステップを備えることを特徴とする26に記載の方法。
35.前記分岐予測部に書き込む必要がある分岐命令に関する前記分岐履歴情報のみ、前記書き込みリザベーションステーションステップにおいて登録することを特徴とする34に記載の方法。
36.前記分岐履歴情報は、新規エントリ登録、エントリ内容変更、エントリ消去であることを特徴とする35に記載の方法。
37. 前記書き込みリザベーションステーションステップにおける格納容量が満杯になっている状態で、更に、前記分岐履歴情報の書き込みが必要な分岐命令の、該書き込みリザベーションステーションステップへの登録要求が来た場合には、該書き込みリザベーションステーションステップ上の書き込み保留中の分岐履歴情報及び登録要求された該分岐履歴情報の内、少なくとも一つを前記分岐予測部へ書き込むことを特徴とする34に記載の方法。
38.前記分岐予測部が、複数のエントリを同時に書き込み可能な構成であり、前記書き込みリザベーションステーション手段が複数の有効な書き込み保留中の情報を保持している場合には、前記分岐予測部への書き込みが可能なタイミングにおいて同時に複数書き込みを行うことを特徴とする34に記載の方法。
39. 分岐命令よりも前に存在する演算命令などの実行完了により条件コード及び分岐する場合は分岐先アドレスが確定した時点で、該分岐命令が、該分岐命令より前に分岐命令が存在するために、完了できない状態であっても、前記分岐予測部に該分岐命令の前記分岐履歴情報を書き込む、あるいは、書き込みリザベーションステーションステップにおいて登録を行うことを特徴とする26または34に記載の方法。
40.前記分岐履歴情報を書き込んだ、あるいは、前記書き込みリザベーションステーションステップにおいて登録したことを示すフラグを、対応する処理中の分岐命令毎に設けることを特徴とする39に記載の方法。
41. 分岐命令の分岐予測を行う分岐予測部と、リターンアドレススタックとを備える装置における命令制御方法であって、分岐命令を実行した結果のサブルーチンのコールもしくはリターンに相当する命令が該分岐予測部に前記分岐履歴情報の書き込み要求を出したにも関わらず、該分岐命令が実行されなかったときは、該分岐予測部に分岐履歴情報を書き込み、該リターンアドレススタックは動作させない要に制御するステップを備えることを特徴とする方法。
42.命令の実行完了時点で、前記書き込みリザベーションステーションステップにおける書き込み保留中の分岐履歴情報の書き込みを行うことを特徴とする34に記載の方法。
43.命令の実行完了時点で、前記書き込みリザベーションステーション手段へ、対応するエントリの分岐履歴情報の書き込みを行うことを特徴とする34に記載の方法。
44.更に、命令制御部は、命令の実行完了を管理するステップを有し、該実行完了管理ステップにおいて保持される、命令毎に割り振られるIDを、前記書き込みリザベーションステーションステップにおいて、エントリに保持することを特徴とする34に記載の方法。
45. 割り込み発生などの要因によって、前記書き込みリザベーションステーションステップにおいて格納された有効なエントリに対応する分岐命令が実行完了されないことが確定した場合には、該書き込みリザベーションステーションステップにおいて格納された、対応するエントリを無効化することを特徴とする34に記載の方法。
46.前記分岐予測部への書き込み保留中の分岐履歴情報を、分岐予測の検索対象にすることを特徴とする26に記載の方法。
47.パイプラインを備え、前記書き込みリザベーションステーションステップを行う分岐実行部上で実行中の分岐命令の分岐履歴情報を、分岐予測の検索対象にすることを特徴とする34に記載の方法。
48.前記分岐命令のための条件コードが確定した時、該分岐命令が非分岐であることが確定した場合は、この時点で、分岐することが確定した場合には、分岐先アドレスが確定した時点で、分岐予測の検索対象とすることを特徴とする47に記載の方法。
本発明を適用した場合の分岐命令の実行時における効果を説明する図である。 本発明を適用した場合の分岐命令がショートループを組んでいる場合の効果を説明する図である。 本発明の実施形態の基本的なブロック図を示す図である。 ブランチヒストリの構成例を示す図である。 再命令フェッチした分岐命令の分岐履歴情報の書き込みを遅らせる構成の概略構成例を示す図である。 図5のブロック31の詳細な構成例を示す図である。 図5のブロック32の詳細な構成例を示す図である。 図5のブロック30に対応する回路の一例を示す図である。 カウンタを用いた実施形態のタイムチャートである。 図5のボックス30に当たる回路の他の実施形態を示す図である。 命令一時バッファが空であるときにも動作させるための回路構成例である。 図5のボックス30の部分の回路の別の実施形態を示す図(その1)である。 図5のボックス30の部分の回路の別の実施形態を示す図(その2)である。 ブランチヒストリ書き込みリザベーションステーションを示す図である。 リザベーションステーションを用いる場合のブランチヒストリへの書き込み制御の全体の動作の流れを説明する図である。 ブランチヒストリへの複数同時書き込み選択回路(その1)を示す図である。 ブランチヒストリへの複数同時書き込み選択回路(その2)を示す図である。 ブランチヒストリへの複数同時書き込み選択回路(その3)である。 ブランチヒストリへの複数同時書き込み選択回路(その4)である。 ブランチヒストリへの複数同時書き込み回路を示す図である。 ブランチヒストリへの書き込み強制回路の回路構成例を示す図である。 書き込みリザベーションステーションのバリッド回路の回路例を示す図である。 IID(命令ID)管理により、命令実行完了時以降にリザベーションステーションに書き込むことを可能とする場合のリザベーションステーションの構成例である。 書き込みリザベーションステーションのCSEバリッド回路の構成例である。 書き込みリザベーションステーションのデータ保持構成を示した図である。 分岐予測部にリターンアドレススタックを有する場合のCSEバリッド回路の構成例である。 割り込み要因などで命令実行中止があった場合に、リザベーションステーションのエントリを無効化するための回路例である。 バイパスヒット回路の一実施形態を示す図である。 従来の場合の分岐命令の実行時における問題点を説明する図である。 従来の場合の分岐命令がショートループを組んでいる場合の問題点を説明する図である。
符号の説明
10 加算器
11、34、53、191、192 セレクタ
12 主記憶装置
13 命令キャッシュ
14 命令一時バッファ
15 デコーダ
16 演算器
17 分岐命令処理部
18 演算命令処理部
19 命令完了処理部
20、21(21−1、21−2) ブランチヒストリ
52、61、66、67、68、91・・・ AND回路
46、51、62、66、92 OR回路
42、43、60、63、120 ラッチ回路
64、69 EXOR回路
65、70、82、102、112 インバータ
121 リザベーションステーション
143、146、212、223 優先順位回路
181、182 マルチプレクサ

Claims (4)

  1. 分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置において、
    前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
    サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
    前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合において、
    前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
    前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記ブランチヒストリ手段への書き込み対象となる該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させない制御手段を有することを特徴とする命令実行処理装置。
  2. 分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置において、
    前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
    前記ブランチヒストリ手段に対する書き込み保留中の該分岐履歴情報を保持するための書き込みリザベーションステーション手段と、
    サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
    前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合において、
    前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
    前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記書き込みリザベーションステーション手段に保持されている該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させない制御手段を有することを特徴とする命令実行処理装置。
  3. 分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置の命令制御方法において、
    前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
    サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
    前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合においては、
    前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
    前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記ブランチヒストリ手段への書き込み対象となる該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させないステップを有することを特徴とする命令制御方法。
  4. 分岐命令の分岐予測を行う分岐予測手段を備えた命令実行処理装置の命令制御方法において、
    前記命令予測手段は、分岐履歴情報を登録するブランチヒストリ手段と、前記ブランチヒストリ手段への該分岐履歴情報の書き込みを行う分岐履歴情報書き込み制御手段と、
    前記ブランチヒストリ手段に対する書き込み保留中の該分岐履歴情報を保持するための書き込みリザベーションステーション手段と、
    サブルーチンのリターン命令に対する分岐先アドレスを格納するリターンアドレススタック手段とを有し、
    前記分岐履歴情報書き込み制御手段は、該分岐命令がサブルーチンのコール命令又はリターン命令に相当する命令である場合においては、
    前記ブランチヒストリ手段に該分岐命令の分岐履歴情報の書き込み要求を出力したにも関わらず、前記分岐命令が実行されなかったときには、
    前記ブランチヒストリ手段に対する該分岐履歴情報の書き込み制御を行うが、前記書き込みリザベーションステーション手段に保持されている該分岐履歴情報におけるサブルーチンのコール命令又はリターン命令に相当する命令であるという情報のみを無効化することにより、前記リターンアドレススタック手段は動作させないステップを有することを特徴とする命令制御方法。
JP2005235553A 2005-08-15 2005-08-15 分岐履歴情報の書き込み制御装置及びその方法 Expired - Fee Related JP3809178B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005235553A JP3809178B2 (ja) 2005-08-15 2005-08-15 分岐履歴情報の書き込み制御装置及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005235553A JP3809178B2 (ja) 2005-08-15 2005-08-15 分岐履歴情報の書き込み制御装置及びその方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP27781699A Division JP3723020B2 (ja) 1999-09-30 1999-09-30 分岐履歴情報の書き込み制御装置及びその方法

Publications (2)

Publication Number Publication Date
JP2006024231A JP2006024231A (ja) 2006-01-26
JP3809178B2 true JP3809178B2 (ja) 2006-08-16

Family

ID=35797405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005235553A Expired - Fee Related JP3809178B2 (ja) 2005-08-15 2005-08-15 分岐履歴情報の書き込み制御装置及びその方法

Country Status (1)

Country Link
JP (1) JP3809178B2 (ja)

Also Published As

Publication number Publication date
JP2006024231A (ja) 2006-01-26

Similar Documents

Publication Publication Date Title
KR100973951B1 (ko) 오정렬 메모리 액세스 예측
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US7165168B2 (en) Microprocessor with branch target address cache update queue
US8799590B2 (en) System enabling transactional memory and prediction-based transaction execution method
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
US8291195B2 (en) Processing device
US20050198480A1 (en) Apparatus and method of controlling instruction fetch
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US20110173398A1 (en) Two different prefetching complementary engines operating simultaneously
US8595474B2 (en) Information processing apparatus and branch prediction method
KR20020097149A (ko) 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러
US7185186B2 (en) Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
JP3723020B2 (ja) 分岐履歴情報の書き込み制御装置及びその方法
US11928467B2 (en) Atomic operation predictor to predict whether an atomic operation will complete successfully
US7962726B2 (en) Recycling long multi-operand instructions
JP2001060153A (ja) 情報処理装置
JPH08123723A (ja) 先行読出機能付命令キャッシュメモリ
JP3725547B2 (ja) 限定ラン分岐予測
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
US6754813B1 (en) Apparatus and method of processing information for suppression of branch prediction
CN116483743A (zh) 数据高速缓存预取装置、方法及处理器
JP3809178B2 (ja) 分岐履歴情報の書き込み制御装置及びその方法
JP3741945B2 (ja) 命令フェッチ制御装置
US20110083030A1 (en) Cache memory control device, cache memory device, processor, and controlling method for storage device
JP4631442B2 (ja) プロセッサ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060502

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: 20060516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060519

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: 20090526

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees