(57)【要約】【課題】ファントムエントリを効果的に消去する装置を提供し、従って、情報処理装置の処理性能の高速化を実現する【解決手段】分岐命令とファントムの実行制御キューに設けられた、ファントムを識別するフラグ及び命令の開始位置と、分岐予測がおこなわれた位置との不整合を検出するフラグとを使って、ブランチヒストリのエントリの中のファントムエントリを確実に検出し、不要な場合には削除する。また、命令実行のシーケンスに不連続を生じるような命令があった場合には、故意のファントムエントリを生成し、これについて、命令プリフェッチをおこなえるようにする。【選択図】図５
2006277774.tif 000002
【特許請求の範囲】
【請求項１】
分岐予測のためのエントリを格納する分岐予測手段を有する命令制御装置において、
分岐命令ではないが実行されることにより、後続の命令アドレスの変更を行う特定命令を検出する特定命令検出手段と、
命令の命令制御情報を格納する命令キュー手段と、
前記命令キュー手段に格納される命令制御情報の生成を行う命令キュー生成制御手段を有し、
前記特定命令検出手段により特定命令が検出された場合には、前記特定命令を分岐命令であるとみなして、前記命令キュー生成制御手段により前記命令が特定命令であることを識別するための情報を前記命令キュー手段に格納し、
前記特定命令が実行された場合に、前記特定命令の実行により変更された後続命令のアドレスを前記分岐予測手段にエントリとして格納する変更アドレス登録手段とを有することを特徴とする命令制御装置。
【請求項２】
前記命令制御装置は、前記エントリを使用して、命令プリフェッチを行うことを特徴とする請求項１に記載の命令制御装置。
【請求項３】
分岐予測のためのエントリを格納するブランチヒストリを有する命令制御装置の命令制御方法において、
分岐命令ではないが実行されることにより、後続の命令アドレスの変更を行う特定命令を検出する特定命令検出ステップと、
前記特定命令検出ステップにおいて、特定命令が検出された場合には、前記特定命令を分岐命令であるとみなして、前記命令が特定命令であることを識別するための情報を前記命令キューに格納する特定命令キュー格納ステップと、
前記特定命令が実行された場合に、前記特定命令の実行により変更された後続命令のアドレスを前記ブランチヒストリに登録する変更アドレス登録ステップとを有することを特徴とする命令制御方法。
【請求項４】
前記命令制御方法は、前記エントリを使用して、命令プリフェッチを行うことを特徴とする請求項３に記載の命令制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、特に分岐を含む命令列を高速に実行するための分岐予測機構（ブランチヒストリなど）を採用した情報処理装置に関し、特に性能に悪影響を及ぼすエントリの登録抹消方式に関する。
【背景技術】
【０００２】
パイプライン処理方式以降の高度な命令処理方式を採用した情報処理装置においては、一つの命令の実行の終了を待たずに、投機的に後続の命令の処理を行うことで性能の向上を図ってきた。その中でも分岐命令があると、その分岐命令が分岐するか否か、あるいは、分岐する場合には、その分岐先命令の命令アドレスが確定しないと、次に実行すべき命令を投入できない。この問題を解決するために分岐予測機構を導入し、分岐命令の分岐方向の予測、あるいは分岐先命令アドレスを予測することで、更なる性能向上をするようになった。例えば、特開平６−８９１７３号では、キャッシュメモリと独立した分岐予測機構（ブランチヒストリ）を持つことで、優位な性能を得てきた。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところが、ブランチヒストリの規模の増大に伴い、その内容によって逆に性能劣化を引き起こすケースが目立ってきた。
特に、ブランチヒストリがキャッシュメモリやＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）などと独立しているために、命令列が更新される等で命令域の状態が更新されたとしても、ブランチヒストリに対して通常その更新情報が反映されない、あるいは、全ての更新ケースに対して反映仕切れない。その結果、
・かつて分岐命令が存在した命令アドレスに別の命令がロードされる
・ＴＬＢを変更したなどで論理空間に別のプログラムがディスパッチされる
などで、分岐命令以外の命令に対して分岐予測を行う、という事態が発生する。ブランチヒストリ上に存在するこのようなエントリをファントムエントリと呼ぶ。
【０００４】
図９は、ファントムエントリが生じる仕組みを概略説明する図である。
従来のブランチヒストリは、ファントムエントリを積極的に消去せず、新たなエントリが登録されることで発生するリプレース動作により、古いエントリが消去される動作により、ファントムエントリもまた、そのうち消滅することを期待していた。
【０００５】
しかし、図９に示されるように、プログラムＡとプログラムＢとがあり、これらをプロセッサが時分割制御によって、並列に実行している場合を考えると、ある時は、プログラムＡが実行され、別の時は、プログラムＢが実行されるという状態が起きる。図９の場合、プログラムＡのアドレスが１５００番地にブランチ命令があるとしている。この場合、ブランチヒストリなどの分岐予測機構は、アドレスの１５００番地を検出すると、分岐予測を行う。プログラムＡのみが実行されている場合には、１５００番地に格納されている命令はブランチ命令なので、分岐予測をするのは正しいが、時分割制御のように、ある時命令実行がプログラムＢに移ったとすると、ブランチヒストリなどの分岐予測機構は、命令のデコードを待たず、アドレスの検出のみによって分岐予測をするので、１５００番地を検出すると自動的に分岐予測をしてしまう。しかし、現在は、プログラムＢを実行しているので、図９に示されるように、１５００番地には、分岐予測の必要のないアド命令が格納されている。したがって、ブランチヒストリが正しくエントリを保持していないと、このような分岐予測すべきでない、プログラムＢのアド命令についても、プログラムＡのブランチ命令だと判断して分岐予測を行ってしまう。
【０００６】
命令の実行制御において、このように、分岐命令でないにも関わらず分岐予測を行われると、その不整合を解消する処理が必要になり、オーバヘッドを伴う。従って、このファントムエントリに対しては判明次第消去しなければ、性能向上のために開発されたはずのブランチヒストリが、逆に性能劣化を伴うものとなる。特に、ブランチヒストリのエントリ容量が少なかった場合にはリプレース動作などで消去されるまでの時間が短かったものが、容量や連想度の増大に伴い、ファントムエントリの残留も多くなり、問題が顕在化するようになった。
【０００７】
本発明の課題は、このような状況を解決するため、ファントムエントリを効果的に消去する装置を提供し、従って、情報処理装置の処理性能の高速化を実現することである。
【課題を解決するための手段】
【０００８】
本発明の第１の情報処理装置は、分岐予測機構を有する情報処理装置において、分岐予測を行った対象の命令が分岐命令であるか否かを判断する判断手段と、該分岐予測を行った対象の命令が分岐命令でないと判断された場合に、前記分岐予測機構に格納される該命令に対応する分岐予測のためのエントリを削除するファントム削除手段とを備えることを特徴とする。
【０００９】
本発明の第２の情報処理装置は、分岐予測機構を有する情報処理装置において、命令を切り出し、実行のために格納するキュー手段と、該キュー手段に格納される命令について分岐予測を行った場合、該分岐予測を行ったアドレス位置が該キュー手段に格納された命令語の境界にあるか否かを検出する検出手段と、該分岐予測を行ったアドレス位置が命令語の境界にないと判断された場合には、該分岐予測を行う基となった、分岐予測機構に格納される分岐予測のためのエントリを削除するミスアライン削除手段とを備えることを特徴とする。
【００１０】
本発明の第３の情報処理装置は、分岐予測機構を有する情報処理装置において、分岐命令であっても高速に実行されない命令、あるいは、分岐命令ではないが、命令シーケンスを不連続にする命令を検出するファントム対象命令検出手段と、該ファントム対象命令検出手段が検出した命令に対応するエントリを、分岐予測機構に格納される分岐予測のためのエントリに生成して加えるファントムエントリ生成手段とを備え、分岐予測のためのエントリを用いて命令プリフェッチを行うことによって命令の高速処理を実現することを特徴とする。
【００１１】
本発明によれば、分岐予測機構に格納されるブランチヒストリのエントリの内、余分なエントリであるファントムエントリを確実に消去し、アプリケーションが時分割に情報処理装置によって実行されるような場合でも、間違った分岐予測が行われるのを避けることができる。従って、誤った分岐予測をただすために必要とされる時間を節約し、情報処理装置の処理性能を向上することができる。
【００１２】
また、情報処理装置が処理に時間がかかる命令などを故意にファントムエントリとしてブランチヒストリに登録し、これらの命令について命令プリフェッチを行うようにすることで、これらの命令の実行を高速化することができ、やはり、情報処理装置の処理性能を向上することができる。
【発明の効果】
【００１３】
本手法を用いることで、ファントムエントリを確実に消去でき、ブランチヒストリの性能劣化を回避することができるようになる。また、この機能を積極利用することにより、複雑な制御転送命令であっても命令プリフェッチ効果をもたらす制御を可能とし、性能向上に役立つ。
【発明を実施するための最良の形態】
【００１４】
分岐予測は当然ながら分岐命令の実行制御と密接に関連する。分岐処理の結果、その分岐予測が成功したか否かを分岐制御部は知っており、ブランチヒストリを更新するための情報・更新制御構造を持っている。この構成は実用化されている（特開２０００−２８２７１０号公報参照）。
【００１５】
ここで分岐制御部において、分岐命令でないにも関わらず分岐予測された命令に対応したエントリを生成することで、分岐予測部（ブランチヒストリ）に対して分岐予測の成否を報告する装置は、特開２０００−１８１７１０号公報において述べられているので、これを有効活用する。
【００１６】
また、通常のブランチヒストリ更新については、例えば、特開２０００−１７２５０３号公報において述べられているので、これも有効活用する。
装置によっては、命令長が一定ではなく可変長である（複数の命令長を持つ）命令セットを採用しているものがある。このような命令セット上でブランチヒストリを採用したマイクロアーキテクチャの場合、状況によって図１のように、命令境界とは異なる位置に対して分岐予測を行うケースが生じる。これもファントムエントリの一種であるが、前述の状況からさらに困難な問題が控える。
【００１７】
図１は、命令境界でないところで分岐予測が生じる場合について説明する図である。
図１（ａ）に記載されている通常の分岐予測では、命令と命令の間の境界の部分で分岐予測がなされる。しかし、従来技術で述べたような、別のプログラムがロードされ、ブランチヒストリが更新されないままの場合、図１（ｂ）のように、命令の境界以外の場所で分岐予測がなされることがある。これは、前のプログラムにおいて、分岐命令が図１（ｂ）の点線で示される部分にあった場合に、次のプログラムが読み込まれた後では、前のプログラムの命令の境界が必ずしも後のプログラムの命令の境界になるとは限らないと言うことを意味している。
【００１８】
この場合、命令境界からのオフセットなど、該予測位置を正確に復元できる情報を記憶しておかなければ、対応するブランチヒストリ上のファントムエントリを消せない場合がある。
【００１９】
また、必ず割り込みを発生させる命令（ソフトウェアトラップ命令）など、分岐命令同様に命令アドレスを変更する命令がある。これらの命令は命令アドレスを変更すると同時にプロセッサステートなどを変更するため、分岐命令制御部のみで高速に動作させられないことがある。
【００２０】
これらの特殊な命令についてもブランチヒストリに登録することができれば、ブランチヒストリを索引した結果、当該情報より分岐予測先フェッチを行うことができるようになるので、命令キャッシュ領域に実行される命令を先読みする効果をもたらし、キャッシュミスペナルティを軽減することができる。
【００２１】
このように、分岐実行制御部が操作しない命令においても、本発明の実施形態に従ったファントムエントリ消去手法を用いることで、矛盾無く、また他の分岐命令の予測を含む動作を阻害することなく動作する事ができるようになる。
【００２２】
図２は、本発明の実施形態における情報処理装置の概略を示す図である。
本実施形態においては、スーパスカラ方式の情報処理装置で、３命令同時処理可能であり、命令フェッチ部においては、そのための最大３命令をＩＷＲ０〜ＩＷＲ２（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ  Ｒｅｇｉｓｔｅｒ）にセットするものとする。また、１命令の命令語長は、２、４、６バイトの３通りがあるものとし、ただし長さ６バイトの命令はＩＷＲ０にのみセットされる（それ以外には次以降のサイクルにまわる）ものとする。以下、ハーフワード単位での表現が入ることがある（従って、Ｈａｌｆ−Ｗｏｒｄは、１、２、３ハーフワードの３通り）。
【００２３】
分岐処理上の分岐命令キューをここではＲＳＢＲとし、ＲＳＢＲ上の各キューには、各分岐命令の命令アドレスＰＣ、分岐先アドレスＴＰＣに、分岐予測情報であるＢＲＨＩＳ  Ｈｉｔタグと、Ｈｉｔ−Ｗａｙタグ情報があるものとする。この構成は、特開２０００−１７２５０３号公報に記載のものと同じである。本実施形態においては、更にＨｉｔ−Ｏｆｆｓｅｔを持ち、これは分岐予測された位置の当該命令アドレスＰＣからのオフセットで示される。従って、普通に分岐命令について分岐予測されていればＨｉｔ−Ｏｆｆｓｅｔは０を示す。
【００２４】
ただし、本発明の実施形態とは異なり、ある種のＲＩＳＣ命令セットでは、命令語が必ず４バイトなどの一定値であり、また、命令の実行位置を命令語境界に持ってくる境界位置保障がなされている。こういった命令セット上では分岐予測位置が命令語境界にならないという事象は起こらない（わざわざ起こるように作ることは可能だが、そのメリットはない）。従って、このような命令セットを実現する装置ではＨｉｔ−Ｏｆｆｓｅｔは不要であるので、本実施形態のこのような命令セットへの応用は当業者によって適宜変型されるべきである。
【００２５】
図２において、ＩＦ−ＥＡＧ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ−Ｅｆｆｅｃｔｉｖｅ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）すなわち、フェッチアドレス生成部１０においては、命令フェッチすべき命令のアドレスが計算される。計算されたアドレスは、ブランチヒストリ（ＢＲＨＩＳ）を有する分岐予測部１１とＩ−Ｃａｃｈｅすなわち、命令キャッシュ１２に入力される。分岐予測部１１では、入力されたアドレスから分岐予測を行うか否か、及び分岐予測をした場合には、予測分岐先アドレスを出力する。予測分岐先アドレスはフェッチアドレス生成部１０に渡され、そのまま命令キャッシュ１２に入力される。また、分岐予測部１１の出力である、分岐予測をした旨の信号は、命令投入制御部１３に入力される。
【００２６】
命令キャッシュ１２は、入力されたアドレスから実行すべき命令を取り出し、命令投入制御部１３へ入力する。命令投入制御部１３は、入力された命令を、分岐予測されたものか否かの情報と共に、命令解読の方法を指示してＩＷＲ、すなわち、命令解読部１４に渡す。命令解読部１４において命令が解読されると、命令の内容によって、それぞれの命令処理部に渡されるが、特に、分岐命令である場合には、分岐命令キューＲＳＢＲの生成制御を行うＲＳＢＲ生成制御部１５に入力される。分岐命令キューＲＳＢＲは、分岐処理部１６内に生成され、分岐命令の処理が順次行われる。
【００２７】
分岐処理部１６の分岐命令の処理の結果は、分岐完了制御部１７に渡され、分岐予測が成功したか、あるいは、失敗したかの判断をし、処理完了した分岐情報をＢＲＨＩＳ更新制御部１８に渡す。ＢＲＨＩＳ更新制御部１８では、取得した分岐情報を基に、分岐予測部１１のブランチヒストリの更新を行う。
【００２８】
命令をＩＷＲにセットする際、同時に分岐予測結果を命令毎に切り分けて送る。そして、その分岐予測に関連付けられたＨｉｔ−Ｗａｙを含む分岐予測情報と共に、Ｈｉｔ−ＯｆｆｓｅｔをＲＳＢＲに渡す。
【００２９】
図３は、ＢＲＨＩＳ−ＨｉｔとＨｉｔ−Ｏｆｆｓｅｔ（ＭＩＳＡＬＩＧＮ  Ｈａｌｆ−Ｗｏｒｄ）の生成回路例を示す図である。なお、図３の回路は、図２の構成の内、命令投入制御部１３内に設けられるものである。
【００３０】
この図においてＬ１  ＨＷｍ  ＩＬＣ  ｎ信号は、命令切り出し開始点からハーフワード距離ｍにある命令の（そこが命令境界点であれば）命令語長がｎであることを意味する信号である（ｎは、この場合２、４、６のいずれかであり、使用されている命令語の長さを示す。また、ｍは、命令の切り出し位置から、命令の先頭が、ハーフワード数（例えば２ハーフワード）を単位としてどの位置にあるかを示す）。またＬ１  ＨＩＴ  ＨＷ  ｐ信号は、分岐予測された点が命令切りだし開始点からハーフワード距離ｐに有ることを示す信号である。
【００３１】
分岐予測が命令境界位置に無かった場合にも対応する命令のＨｉｔ（ＳＥＴ  ＩＷＲｘ  ＨＩＴ）として検出し、同時に、ＳＥＴ  ＩＷＲｘ  ＭＩＳＡＬＩＧＮ  ＨＷ  ｙ信号を出すことで、命令語境界になかったことを判別する。
【００３２】
すなわち、図３の上段の「ｆｏｒ  ＩＷＲ０」の回路においては、命令の切り出し位置が命令語境界であることを示すＬ１  ＨＩＴ  ＨＷ  ０の論理値が真で入力されると、ＩＷＲ０がヒットしたことを意味するＳＥＴ  ＩＷＲ０  ＨＩＴの論理値が真となる。また、同じく、命令語長が４あるいは６である場合であって、命令切り出し位置からハーフワード距離０のところに命令があり（Ｌ１  ＨＷ  ０ＩＬＣ  ４、６）、かつ、分岐予測された点が命令切り出し開始点からハーフワード距離１にある場合には、ＳＥＴ  ＩＷＲ０  ＨＩＴの論理値を真にすると共に、ハーフワード距離１のところで命令語境界になっていないことを示すＳＥＴ  ＩＷＲ０  ＭＩＳＡＬＩＧＮ  ＨＷ  １の論理値が真となる。同様に、命令切り出し開始点からハーフワード距離２のところに分岐予測された点が有る場合であって（Ｌ１  ＨＩＴ  ＨＷ  ２）、かつ、命令語長が６である場合であって、命令切り出し位置からハーフワード距離０のところに命令がある場合、ハーフワード距離２のところで、ミスアラインされている（分岐予測が命令語境界でないところで行われている）ことを示すＳＥＴ  ＩＷＲ０  ＭＩＳＡＬＩＧＮ  ＨＷ  ２の論理値が真となる。ただし、ＳＥＴ  ＩＷＲ０  ＨＩＴは、何れの場合にも分岐予測が行われたことを示すために真とされる。
【００３３】
以上のように、図３の信号を読むと、「ｆｏｒ  ＩＷＲ１」の回路の場合には、
１）ハーフワード距離１のところで分岐予測され、命令語長２で、ハーフワード距離０のところに命令がある場合は、ミスアラインではなく、分岐予測が行われたことを示すＳＥＴ  ＩＷＲ１  ＨＩＴの論理値が真となる。
２）ハーフワード距離２のところで分岐予測され、命令語長４で、ハーフワード距離０のところに命令がある場合には、ミスアラインではなく、ＳＥＴ  ＩＷＲ１  ＨＩＴの論理値が真となる。
３）ハーフワード距離２のところで分岐予測され、命令語長が２でハーフワード距離０のところに命令があり、かつ、命令語長が４でハーフワード距離１のところに命令がある場合には、ミスアラインであるとして、ＳＥＴ  ＩＷＲ１  ＨＩＴ及びＳＥＴ  ＩＷＲ１  ＭＩＳＡＬＩＧＮ  ＨＷ  １の論理値が真になる（ここでは、最初の命令が命令語長２で次の命令の命令語長が４であり、分岐予測が次の命令の真ん中で起こっている場合を示している）。
４）ハーフワード距離３のところで分岐予測され、命令語長が４でハーフワード距離０のところに命令があり、かつ、命令語長が４でハーフワード距離２のところに命令がある場合には、ミスアラインであるとして、ＳＥＴ  ＩＷＲ１  ＨＩＴ及びＳＥＴ  ＩＷＲ１  ＭＩＳＡＬＩＧＮ  ＨＷ  １の論理値を真とする。
【００３４】
更に、「ｆｏｒ  ＩＷＲ２」の回路においては、
１）ハーフワード距離２のところで分岐予測され、命令語長が２でハーフワード距離０と１のところに命令がある場合は、通常にヒットしたとしてＳＥＴ  ＩＷＲ２  ＨＩＴの論理値が真となる。
２）ハーフワード距離３のところで分岐予測され、命令語長が２でハーフワード距離０のところに命令があり、かつ、命令語長４でハーフワード距離２のところに命令がある場合は、通常にヒットしたとしてＳＥＴ  ＩＷＲ２  ＨＩＴの論理値が真となる。
３）ハーフワード距離３のところで分岐予測され、ハーフワード距離０のところに命令語長４の命令が、ハーフワード距離１のところに命令語長２の命令が有る場合には、通常にヒットしたとして、ＳＥＴ  ＩＷＲ２  ＨＩＴの論理値が真となる。
４）ハーフワード距離４のところで分岐予測され、ハーフワード距離０のところに命令語長４の命令が、ハーフワード距離２のところに命令語長４の命令がある場合には、通常にヒットしたとして、ＳＥＴ  ＩＷＲ２  ＨＩＴの論理値を真にする。
５）ハーフワード距離３のところで分岐予測され、ハーフワード距離０のところに、命令語長２の命令が、ハーフワード距離１のところに命令語長２の命令が、ハーフワード距離２のところに命令語長４の命令がある場合には、ミスアラインが起きたとして、ＳＥＴ  ＩＷＲ２  ＨＩＴ及びＳＥＴ  ＩＷＲ２  ＭＩＳＡＬＩＧＮ  ＨＷ  １の論理値が真とする。
６）ハーフワード距離４のところで分岐予測され、ハーフワード距離０のところに命令語長２の命令が、ハーフワード距離１のところに命令語長４の命令が、ハーフワード距離３のところに命令語長４の命令がある場合には、ミスアラインが起きたとして、ＳＥＴ  ＩＷＲ２  ＨＩＴ及びＳＥＴ  ＩＷＲ２  ＭＩＳＡＬＩＧＮ  ＨＷ  １の論理値を真とする。
７）ハーフワード距離４のところで分岐予測され、ハーフワード距離０のところに命令語長４の命令が、ハーフワード距離２のところに命令語長２の命令が、ハーフワード距離３のところに命令語長４の命令がある場合、ミスアラインが起きたとして、ＳＥＴ  ＩＷＲ２  ＨＩＴ及びＳＥＴ  ＩＷＲ２  ＭＩＳＡＬＩＧＮＨＷ  １の論理値を真とする。
８）ハーフワード距離５のところで分岐予測され、ハーフワード距離０のところに命令語長４の命令が、ハーフワード距離２のところに命令語長４の命令が、ハーフワード距離４のところに命令語長４の命令がある場合には、ＳＥＴ  ＩＷＲ２  ＨＩＴ及びＳＥＴ  ＩＷＲ２  ＭＩＳＡＬＩＧＮ  ＨＷ  １の論理値を真とする。
【００３５】
これらを他の分岐予測情報タグと組でＲＳＢＲに渡す。他の分岐予測情報タグと組でＲＳＢＲに渡す構成の詳細は既知である。
図４は、分岐命令とファントムの実行制御キューＲＳＢＲの構成例を示す図である。同図のＲＳＢＲは、図２の分岐処理部１６に設けられるものである。
【００３６】
この構成では、キューＲＳＢＲのエントリの有効性を示すｖａｌｉｄフラグと、ファントムエントリか否かを示すＰｈａｎｔｏｍ−Ｖａｌｉｄフラグ、条件分岐のアドレスや分岐条件などを記述する分岐制御情報、分岐予測する命令のアドレスＩＡＲ、分岐先の命令アドレスＴＩＡＲ、図３のＳＥＴ  ＩＷＲｙ  ＨＩＴ（ここで、ｙは、ＩＷＲを識別する整数）を格納するＨｉｔ部、ブランチヒストリのＷＡＹを示すＷａｙ部、及び、図３のミスアラインを示す信号を格納するＭｉｓａｌｉｇｎ−ＨＷ部からなる。Ｍｉｓａｌｉｇｎ−ＨＷのデータは、ＲＳＢＲのエントリがファントムエントリの時にのみ有効である。
【００３７】
なお、ＲＳＢＲのＰｈａｎｔｏｍ−Ｖａｌｉｄフラグの設定は、前述の特開２０００−１８１７１０号公報に記載の技術を使って設定するものとする。
ＲＳＢＲで分岐処理もしくはファントムエントリ処理が完了すると、ブランチヒストリに対して、その完了報告が行われる。
【００３８】
図５は、分岐実行完了の報告を行うための動作を説明する図である。なお、図５の回路は、図２の分岐完了制御部１７に設けられるものである。
図６は、エントリ消去のための指示信号を生成する回路例を示す図である。図６の回路は、図２のＢＲＨＩＳ更新制御部１８に設けられる。
【００３９】
分岐完了制御回路は、ファントムエントリ処理完了の場合、当該命令がファントムエントリであったことを示すＢＲ  ＣＯＭＰ  ＡＳ  ＰＨＡＮＴＯＭとともに、完了した命令の命令アドレスＢＲ  ＣＯＭＰ  ＩＡＲ＜０：３１＞、ＢＲＨＩＳ  ＨｉｔしたＷＡＹ位置ＢＲ  ＣＯＭＰ  ＨＩＴ  ＷＡＹ＜１：０＞、それがミスアラインしていた場合のＢＲ  ＣＯＭＰ  ＭＩＳＡＬＩＧＮ  ＨＷ  ｙ（と必要に応じて他の制御フラグ）をＢＲＨＩＳ更新制御部に送る。
【００４０】
図６において、通常の分岐予測の場合には、命令境界位置に予測されるので、Ｈｉｔしたエントリ位置はＢＲ  ＣＯＭＰ  ＩＡＲ＜０：３１＞であるが、ファントムエントリであって、ミスアラインを検出している場合、Ｈｉｔを検出したエントリの本来の位置はＢＲ  ＣＯＭＰ  ＩＡＲ＜０：３１＞＋ＢＲ  ＣＯＭＰＭＩＳＡＬＩＧＮ  ＨＷ  ｙ（ここで、ｙはハーフワード距離の値であり、整数である。この演算は、ｙ＝１の場合、２を加算するなど）となる。これで決まるアドレス位置でＢＲ  ＣＯＭＰ  ＨＩＴ  ＷＡＹによって指示されたＷＡＹへ消去動作を行えば良い。
【００４１】
たまたまミスアラインを検出した命令が分岐命令であった場合、ＢＲ  ＣＯＭＰ  ＡＳ  ＴＡＫＥＮ（分岐成立の場合）、あるいはＢＲ  ＣＯＭＰ  ＡＳ  ＮＯＴ  ＴＡＫＥＮ（分岐不成立の場合）が送られ、通常の分岐処理と同様に処理される。この場合も、ミスアラインの情報を加算したアドレスに対して更新制御を行えばよい。ミスアライン分を加算することを除けば、従来に既知の技術と同じである。
【００４２】
図６の下の回路は、通常の消去条件とファントムエントリであることを示すＢＲ  ＣＯＭＰ  ＡＳ  ＰＨＡＮＴＯＭのいずれかが入力されたときに、ブランチヒストリのエントリを消去すべき旨を通知するＢＲＨＩＳ  ＥＲＡＳＥ  ＥＮＴＲＹの信号を送出する。また、どのブランチヒストリのエントリを消去するかは、図６の上の回路で計算される。ＢＲ  ＣＯＭＰ  ＩＡＲのアドレスを入力として、ＢＲ  ＣＯＭＰ  ＭＩＳＡＬＩＧＮ  ＨＷｙによって、ｙの値で示されるハーフワード距離分アドレスを加算器２０によって入力アドレスＢＲ  ＣＯＭＰ  ＩＡＲに加算して、ＢＲＨＩＳ  ＵＰＤＡＴＥ  ＩＡＲとして出力する。
【００４３】
このようにして、ファントムエントリを特定し、ブランチヒストリのファントムエントリのうち、消すべきファントムエントリについての消去依頼の信号を設ける。この消去依頼信号を従来のブランチヒストリのエントリの消去依頼と同様に扱い、従来ブランチヒストリが持っているエントリの消去手段を利用してファントムエントリを消去する。
【００４４】
以上により、ファントムエントリを確実に消去できる実施形態を示した。逆に故意にファントムエントリを作成することで命令プリフェッチ効果を見いだす実施形態を以下に示す。
【００４５】
図７は、故意にファントムエントリを生成する構成を説明する図である。この回路は、図２のＲＳＢＲ生成制御部１５に設けられるものである。
命令をデコードして発行する時（ＩＷＲｘ  Ｒｅｌｅａｓｅによって処理の開始許可が示される）に、その命令がマイクロコードやファームウェアエミュレートされるような複雑な命令（分岐命令であっても高速に実行されない命令）あるいは、ＲＳＢＲで処理されるような分岐命令ではないが命令アドレスを不連続にするような命令（ソフトウェア例外処理を発生させる命令やプログラムカウンタを直接書き換える命令など、図中ＩＷＲｘ  ＣＴＩ  ＩＮＳＴ）であることが判明した場合、ＲＳＢＲにはファントムエントリ相当のエントリとして生成する。ここで当該命令が故意に生成されるファントムエントリであることを識別可能なタグ（図７ではＣＴＩフィールド）を登録しておき、これを完了時にＢＲＨＩＳ更新部へ通知する。また、ＲＳＢＲでは、命令のアドレスの変更先を、該複雑命令の処理部から受け取るようにしておく。従って、完了時には変更先のアドレスはＢＲ  ＣＯＭＰ  ＴＩＡＲとしてＢＲＨＩＳに送られる。
【００４６】
図７では、分岐命令ではないが命令アドレスを不連続にする命令である（ＩＷＲｘ  ＣＴＩ  ｉｎｓｔ）か、ブランチヒストリにヒットし（ＩＷＲｘ  ＢＲＨＩＳ  Ｈｉｔ）、命令が分岐命令ではない場合（ＩＷＲｘ  ＢＲＡＮＣＨの論理反転）である場合であって、ＩＷＲｘ  Ｒｅｌｅａｓｅ（命令デコードが終了し、処理開始許可）が出た場合、Ｐｈａｎｔｏｍ−Ｖａｌｉｄにフラグを立てる。また、ブランチヒストリにヒットしているので、Ｈｉｔフラグにもフラグを立てる。また、ＩＷＲｘ  ＢＲＡＮＣＨとＩＷＲｘ  Ｒｅｌｅａｓｅが入力されている場合には、エントリが有効であるとしてＶａｌｉｄフラグを立てる。
【００４７】
図８は、故意にファントムエントリを生成する場合のＢＲＨＩＳの更新信号の生成回路例を示す図である。図８の回路は、図２のＢＲＨＩＳ更新制御部１８に設けられる。
ＢＲＨＩＳ更新制御部１８においては、該タグ付きのＢＲ  ＣＯＭＰ  ＡＳ  ＰＨＡＮＴＯＭ通知が来た場合には消去をせず、通常の分岐予測情報更新と同じ様な動作、すなわち、既にエントリが存在して（ＢＲＨＩＳ  Ｈｉｔ）いれば必要に応じて更新、エントリが存在しなければ（Ｎｏｔ  ｈｉｔ）新規エントリ生成を行う。エントリの作成／更新に用いられる分岐先アドレスはＲＳＢＲから送られるＢＲ  ＣＯＭＰ  ＴＩＡＲを使う等他の制御は従来技術と同様になる。
【００４８】
図８においては、ブランチヒストリのエントリがファントムエントリであり（ＢＲ  ＣＯＭＰ  ＡＳ  ＰＨＡＮＴＯＭ）、分岐命令である場合には（ＢＲ  ＣＯＭＰ  ＣＴＩ  ＩＮＳＴの反転論理）、通常の消去条件と同様に、ブランチヒストリのエントリを消去する命令（ＢＲＨＩＳ  ＥＲＡＳＥ  ＥＮＴＲＹ）を出力する。また、エントリがファントムエントリであり（ＢＲ  ＣＯＭＰ  ＡＳ  ＰＨＡＮＴＯＭ）、分岐命令でない（ＢＲ  ＣＯＭＰ  ＣＴＩ  ＩＮＳＴ）の場合であって、ブランチヒストリにヒットしていない（ＢＲ  ＣＯＭＰ  ＢＲＨＩＳ  ＨＩＴの反転論理）には、通常の新規エントリの生成条件と共に、故意にファントムエントリを生成する旨の指示（ＢＲＨＩＳ  ＣＲＥＡＴＥ  ＮＥＷ  ＥＮＴＲＹ）を出す。また、ブランチヒストリにヒットし、エントリがファントムであり、分岐命令でない場合には、そのファントムエントリを維持すべき命令（ＢＲＨＩＳ  ＵＰＤＡＴＥ  ＯＬＤ  ＥＮＴＲＹ）を出力する。
【００４９】
このようにすると、次回当該命令アドレスに対応する命令フェッチ時に、当該エントリが読み出されて分岐予測命令フェッチが行われるようになる。たとえ、これが実行部で即座に使うことができなくとも、命令プリフェッチができることでキャッシュに対してプリフェッチ要求相当の動作になるため、性能改善効果がある。
【００５０】
（付記１）分岐予測機構を有する情報処理装置において、
分岐予測を行った対象の命令が分岐命令であるか否かを判断する判断手段と、該分岐予測を行った対象の命令が分岐命令でないと判断された場合に、前記分岐予測機構に格納される該命令に対応する分岐予測のためのエントリを削除するファントム削除手段と、
を備えることを特徴とする情報処理装置。
（付記２）分岐予測機構を有する情報処理装置において、
命令を切り出し、実行のために格納するキュー手段と、
該キュー手段に格納される命令について分岐予測を行った場合、該分岐予測を行ったアドレス位置が該キュー手段に格納された命令語の境界にあるか否かを検出する検出手段と、
該分岐予測を行ったアドレス位置が命令語の境界にないと判断された場合には、該分岐予測を行う基となった、分岐予測機構に格納される分岐予測のためのエントリを削除するミスアライン削除手段と、
を備えることを特徴とする情報処理装置。
（付記３）分岐予測を行おうとする命令のアドレス位置が実際の命令境界位置と異なる位置であることが判明した場合、分岐処理を行う機構において、該境界位置からの位置を特定する特定情報を保持し、該特定情報を用いて分岐予測機構の有する分岐予測のためのエントリを削除することを特徴とする付記２に記載の情報処理装置。
（付記４）分岐予測機構を有する情報処理装置において、
分岐命令であっても高速に実行されない命令、あるいは、分岐命令ではないが、命令シーケンスを不連続にする命令を検出するファントム対象命令検出手段と、
該ファントム対象命令検出手段が検出した命令に対応するエントリを、分岐予測機構に格納される分岐予測のためのエントリに生成して加えるファントムエントリ生成手段とを備え、
分岐予測のためのエントリを用いて命令プリフェッチを行うことによって命令の高速処理を実現することを特徴とする情報処理装置。
（付記５）分岐予測機構を有する情報処理装置における分岐予測のためのエントリの内の不要なエントリの削除方法であって、
分岐予測を行った対象の命令が分岐命令であるか否かを判断する判断ステップと、
該分岐予測を行った対象の命令が分岐命令でないと判断された場合に、前記分岐予測機構に格納される該命令に対応する分岐予測のためのエントリを削除するファントム削除ステップと、
を備えることを特徴とする方法。
（付記６）分岐予測機構を有する情報処理装置における分岐予測のためのエントリの内の不要なエントリを削除する方法であって、
命令セットを切り出し、実行のために格納するキューステップと、
該キューステップにおいて格納された命令について分岐予測を行った場合、該分岐予測を行ったアドレス位置が該キューステップにおいて格納された命令語の境界にあるか否かを検出する検出ステップと、
該分岐予測を行ったアドレス位置が命令語の境界にないと判断された場合には、該分岐予測を行う基となった、分岐予測機構に格納される分岐予測のためのエントリを削除するミスアライン削除ステップと、
を備えることを特徴とする方法。
（付記７）分岐予測を行おうとする命令のアドレス位置が実際の命令境界位置と異なる位置であることが判明した場合、分岐処理を行う機構において、該境界位置からのオフセット情報を記憶しておき、該オフセット情報を用いて分岐予測機構の有する分岐予測のためのエントリを削除することを特徴とする付記６に記載の方法。
（付記８）分岐予測機構を有する情報処理装置における命令の高速処理のための方法であって、
分岐命令であっても高速に実行されない命令、あるいは、分岐命令ではないが、命令シーケンスを不連続にする命令を検出するファントム対象命令検出ステップと、
該ファントム対象命令検出手段が検出した命令に対応するエントリを、分岐予測機構に格納される分岐予測のためのエントリに生成して加えるファントムエントリ生成ステップとを備え、
分岐予測のためのエントリを用いて命令プリフェッチを行うことによって命令の高速処理を実現することを特徴とする方法。
【図面の簡単な説明】
【００５１】
【図１】命令境界でないところで分岐予測が生じる場合について説明する図である。
【図２】本発明の実施形態における情報処理装置の概略を示す図である。
【図３】ＢＲＨＩＳ−ＨｉｔとＨｉｔ−Ｏｆｆｓｅｔ（ＭＩＳＡＬＩＧＮ  Ｈａｌｆ−Ｗｏｒｄ）の生成回路例を示す図である。
【図４】分岐命令とファントムの実行制御キューＲＳＢＲの構成例を示す図である。
【図５】分岐実行完了の報告を行うための動作を説明する図である。
【図６】エントリ消去のための指示信号を生成する回路例を示す図である。
【図７】故意にファントムエントリを生成する構成を説明する図である。
【図８】故意にファントムエントリを生成する場合のＢＲＨＩＳの更新信号の生成回路例を示す図である。
【図９】ファントムエントリが生じる仕組みを概略説明する図である。
【符号の説明】
【００５２】
１０      ＩＦ−ＥＡＧ  フェッチアドレス生成部
１１      ＢＲＨＩＳ  分岐予測部
１２      Ｉ−ＣＡＣＨＥ  命令キャッシュ
１３      命令投入制御部
１４      ＩＷＲｓ  命令解読部
１５      ＲＳＢＲ生成制御部
１６      分岐処理部  ＲＳＢＲｓ
１７      分岐完了制御部
１８      ＢＲＨＩＳ更新制御部
２０      加算器
【図１】
2006277774.tif 000003
【図２】
2006277774.tif 000004
【図３】
2006277774.tif 000005
【図４】
2006277774.tif 000006
【図５】
2006277774.tif 000007
【図６】
2006277774.tif 000008
【図７】
2006277774.tif 000009
【図８】
2006277774.tif 000010
【図９】
2006277774.tif 000011