JP3852782B2 - 分岐予測機構を持つ命令制御装置及びその制御方法 - Google Patents

分岐予測機構を持つ命令制御装置及びその制御方法 Download PDF

Info

Publication number
JP3852782B2
JP3852782B2 JP2005500202A JP2005500202A JP3852782B2 JP 3852782 B2 JP3852782 B2 JP 3852782B2 JP 2005500202 A JP2005500202 A JP 2005500202A JP 2005500202 A JP2005500202 A JP 2005500202A JP 3852782 B2 JP3852782 B2 JP 3852782B2
Authority
JP
Japan
Prior art keywords
instruction
branch
prediction
branch instruction
control
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
JP2005500202A
Other languages
English (en)
Other versions
JPWO2004107163A1 (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
Publication of JPWO2004107163A1 publication Critical patent/JPWO2004107163A1/ja
Application granted granted Critical
Publication of JP3852782B2 publication Critical patent/JP3852782B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

本発明は、一般的には、コンピュータの中央処理ユニット内の命令制御装置に関連し、特に、分岐予測機構を持つアウトオブオーダ方式の命令制御装置において、分岐予測を誤った時に、再命令フェッチ要求をメモリに出せるようになるまで、誤った命令フェッチリクエスト、オペランドリクエストを抑止もしくは無効化する命令制御方式に関連する。
コンピュータの中央処理ユニット内の命令制御装置(インストラクションユニット)を制御するための処理方式には、インオーダー方式とアウトオブオーダ処理方式がある。インオーダー方式の処理では、命令がメモリに記憶されている順序に実行される。
これに対して、アウトオブオーダ方式の処理では、一つの命令の実行が完了するのを待たずに、複数の後続の命令が、順次に、実行パイプラインに投入されて、命令が実行される。即ち、実行パイプラインの中で、複数の演算器より実行する命令の順序を変更しながら、命令を実行する。そして、最終的には、全体的な命令の実行は、インオーダーで完了する。このように、実行パイプラインへの命令の投入とそこからの完了は、順次に行われるが、実行パイプラインの中では、実際には、命令は、順序を変更しながら実行される。
しかし、アウトオブオーダ方式の処理でも、先行している命令の実行結果が後続の命令の実行に影響を与える場合には、先行している命令の処理が終了しなければ、その間、後続の命令は実行できない。従って、先行する命令の完了を待ち続けることになる。
これは、上述の先行している命令が分岐命令である場合に、この分岐命令の実行において顕著に見られる。分岐命令には、条件分岐命令と無条件分岐命令がある。この分岐命令の中でも、特に条件分岐命令は、自分自身より以前の実行中の命令において、分岐条件を変更しようとしている命令が存在する場合には、その命令が完了して、分岐条件が確定するまで、条件分岐命令による分岐するか又は、しないかが確定しない。
従って、この条件分岐命令の後続の命令シーケンスが確定できないために、後続の命令を実行パイプラインに投入できずに、処理が停止してしまう。これにより、処理能力が低下する結果となる。
処理能力即ち、性能の低下は、他の処理方式を採用している命令制御装置においても同様であり、そして、命令制御装置共通の課題である。この分岐命令による性能低下という課題を解決するための手段として、通常は、分岐命令の分岐実行を予測するための予測機構を、命令制御装置に保有し、分岐命令の実行の高速化を図るようにしている。
分岐予測機構を備えたアウトオブオーダ処理方式の場合には、複数の分岐命令が分岐予測の結果をもとに実行パイプラインに投入される。分岐条件が確定した分岐命令から順次、分岐の有無および分岐予測の成否が確定する。
分岐予測機構による分岐予測が正しい場合には、予測した分岐命令の後続の命令は、正しく実行パイプラインに投入される。しかし、分岐予測が誤っていた場合には、予測した分岐命令の後続の命令は、誤った命令シーケンスであるので、実行パイプライン上から消去し、且つ、正しい命令シーケンスで実行し直す必要がある。
分岐予測に失敗した場合には、命令フェッチを再度行うように動作する。しかし、分岐予測機構による分岐予測が失敗したことが判明してから、命令フェッチが再度行われるまでの間や、又は、実行パイプライン上から誤った命令シーケンスが消去されるまでに、ある程度の時間がかかる場合がある。
この間に、実際には実行しない命令が実行パイプライン上に存在することになり、これらの実際には実行しない命令から、オペランドのリクエスト要求が発生してしまう。これは、命令フェッチが行われる場合についても同様である。即ち、実際には使用しない命令シーケンスに対する不必要なリクエストが発生してしまう。実際には必要としないオペランド又は命令フェッチリクエストが発生すると、キャッシュにおける不必要なリプレースが発生し又は、演算器等の命令制御リソースの無駄な消費を引き起こし、それらが、性能の低下の要因となる。
即ち、分岐命令の分岐判定がおこなわれて、分岐予測が失敗していると判断された場合には、再命令フェッチリクエストを命令フェッチ制御部に出す必要がある。しかし、再命令フェッチリクエストを出すためには分岐条件と分岐先アドレスがともに確定していなければならない。更に、分岐条件が確定していて分岐予測が失敗していることが判明していても分岐先アドレスが確定していなければ再命令フェッチリクエストは出せずその間命令フェッチ制御部は不必要な命令フェッチリクエストを出しつづけるという問題がある。
更に、分岐予測に失敗し間違った予測をもとに実行パイプラインに投入された命令をパイプライン上から消去しなければならないがそのためには分岐予測に失敗した分岐命令が命令完了しなければならない。しかし命令完了はインオーダ処理のため分岐命令以前の命令が命令完了しなければ実行パイプラインに投入された命令をパイプライン上から消去することが出来ない。そのため分岐予測に失敗した分岐命令の命令完了が遅れると誤って実行パイプラインに投入された命令から不必要なオペランドリクエストが出てしまうという問題がある。
本発明は上記の点に鑑みてなされたもので、分岐予測を誤った場合に、再命令フェッチ要求をメモリに出すまでの間、誤った命令フェッチリクエストやオペランドリクエストを抑止し又は無効化する、命令制御方法及び命令フェッチ方法及び、その装置を提供することを目的とする。
本発明による命令制御装置は、記憶手段からの命令のフェッチ制御を行う命令フェッチ制御手段と、前記記憶手段からフェッチされた命令を一時記憶する命令バッファ手段と、前記フェッチされた命令のうち分岐命令の分岐予測を行う分岐命令予測手段と、前記命令フェッチ制御手段、前記命令バッファ手段及び前記分岐命令予測手段を制御する分岐命令制御手段とを有し、前記命令をアウトオブオーダに実行する命令制御装置において、前記分岐命令制御手段が、前記分岐命令の分岐条件が確定したことにより前記分岐命令予測手段による分岐予測が誤りであると判断した場合には、前記分岐予測が誤りであると判断してから分岐先アドレスが確定するまでの間、前記分岐命令制御手段が、前記命令フェッチ制御手段による命令フェッチ制御を継続して抑止するとともに、前記命令バッファ手段の無効化を継続して行うことを特徴とする。
本発明の別の側面による命令制御装置は、記憶制御手段により制御される記憶手段からの命令のフェッチ制御を行う命令フェッチ制御手段と、前記記憶手段からフェッチされた命令を一時記憶する命令バッファ手段と、前記命令バッファ手段から供給される命令のデコードを行う命令デコード手段と、前記デコードされた命令のうち分岐命令の分岐予測を行う分岐命令予測手段と、前記命令フェッチ制御手段、前記命令バッファ手段、前記命令デコード手段及び前記分岐命令予測手段を制御する分岐命令制御手段とを有し、前記命令をアウトオブオーダに実行する命令制御装置において、前記分岐命令制御手段が、前記分岐命令の分岐条件が確定したことにより前記分岐命令予測手段による分岐予測が誤りであると判断した場合には、前記分岐予測が誤りであると判断してから分岐先アドレスが確定するまでの間、前記分岐命令制御手段は前記記憶制御手段に対して、前記分岐命令予測手段による分岐予測が誤りであることにより誤って実行されようとしている命令についてのオペランド要求の無効化制御を継続して行うとともに、前記命令デコード手段の無効化制御を継続して行うことを特徴とする。
本発明により、このように分岐予測失敗が判明していて再命令フェッチリクエストを出すための他の条件が確定していない時に再命令フェッチリクエストのための全ての条件が揃うまでキャッシュ制御部に対して全ての命令フェッチリクエストを無効化するためのキャンセル信号を通知でき、また、同時にデコーダ部に対しても命令の発行を止めるよう通知できる。
本発明により上記、命令フェッチリクエストを無効化するためのキャンセル信号を出すことができ、同時にキャッシュ制御部に対して不必要なオペランドフェッチリクエストを抑止するためのキャンセル信号を通知できる。
また、この時、キャッシュ制御部に対して誤って実行パイプラインに投入された命令の識別子を同時に通知することでキャッシュ制御部において要求されたオペランドフェッチリクエストが必要なリクエストか不必要なリクエストであるかの判別ができる。このように本発明では不必要な命令フェッチリクエストやオペランドリクエストを抑止するためのキャンセル信号を、分岐命令制御部から命令フェッチ制御部、キャッシュ制御部にそれぞれ通知し、再命令フェッチが完了するまで命令投入を止めることができるので、キャッシュ部における不必要なリプレースを抑止し、プロセッサの性能向上を図ることができる。
以下に、本発明を実施するための実施の形態について、図面を用いて説明する。
図1は、本発明の実施例のコンピュータの中央処理ユニット内の命令制御装置100(インストラクションユニット)内の分岐命令制御動作を実行する部分の概要を示すブロック図である。命令制御装置100は、キャッシュメモリ101キャッシュ制御部102より構成される記憶部103と接続されている。命令制御装置(インストラクションユニット)100内の分岐命令制御動作を実行する部分は、主に、命令フェッチ制御部(Instruction Fetch Control又は、IFCTL)111、命令バッファ(Instruction Buffer又は、IBBUFER)112、分岐予測部(Branch History、BRHIS)113、分岐命令制御部(Reservation Station For Branch又は、RSBR)114、命令デコード部(Decoder又は、DDECR)115、命令完了制御部(Commit Facility又は、COMIT)116により構成される。そして、命令制御装置100は、キャッシュ制御部102を介して、キャッシュメモリ101からの命令を読み出しを制御する。命令制御装置100では、命令は、前述のアウトオブオーダ方式に従って処理される。
本実施例の命令制御装置100では、実行パイプライン上に存在する全命令に対して実行パイプライン上での命令順序を示すフラグ(Instruction
ID又は、IID)が割り当てられている。実行パイプライン上ではアウトオブオーダ方式の処理に従って、各命令が処理されるが、命令完了時にはIIDに基づいて、前述のインオーダ処理で命令の完了が行われる。
先ず最初に、図1のブロック図の概略の動作について説明する。
命令フェッチ制御部111は、例えば、アドレスのような、命令フェッチリクエスト(IF_REQ_VAL)をキャッシュ制御部102へ送る。これにより、キャッシュ制御部102を介して、キャッシュメモリ101に格納された命令が読み出される。このように読み出された命令又は、キャッシュ制御部102から命令バッファ112へ格納される。
また、命令フェッチ制御部111は、上述のアドレスを信号120を介して、分岐予測部113へも送る。命令フェッチ制御部111により、命令フェッチが行われると、命令フェッチアドレスをもとに、上述のように、BRHIS113において分岐予測が実行される。分岐予測の結果、分岐すると予測した場合は、命令は、その命令に“分岐する”という予測結果を示すフラグ(+BRHIS_HIT=1)を添付して、信号121を介してIFCL111へそして、IFCL111とIBBUFER112を介して、DDECR115に投入される。このように分岐予測された命令は、命令フェッチ制御部111から命令バッファ112へ格納される。
命令バッファ112は、格納された命令を、命令デコード部115へ送る。
命令デコード部115では、命令バッファ112より送られた命令を、デコードする。
命令デコード部(DDECR)115において命令をデコードする時に、“分岐命令”又は“分岐すると予測している命令”と判断された命令は、信号122を介して、RSBR114、COMIT116にエントリされる。なお、DDECR115でのデコード結果に関わらず、実行パイプラインに投入される全ての命令は命令完了制御部(COMIT)116にエントリされる。
DDECR115は、命令の実行パイプラインへの投入と全命令に対して実行パイプライン上での命令順序を示すフラグ(Instruction ID又は、IID)の割り当てを行う。
RSBR114は、分岐判定、及び分岐予測失敗時には、命令フェッチ制御部111へ、再命令フェッチリクエスト(RSBR_REIFCH_REQ)を出力して制御を行う。RSBR114は、実行パイプライン上に存在する複数の分岐命令(エントリ)を登録し制御することが可能であり、各エントリは、前述の実行パイプライン上での命令順序を示すフラグIIDで管理されている。RSBR114での制御が終了した命令は、RSBR114から解放され、そして、命令完了までの間は、COMIT116で制御される。COMIT116は、実行パイプライン上の全命令の命令完了を制御している。実行パイプライン上の全命令は、IIDで管理されており、そして、命令完了条件を満たしたものから順にインオーダ処理で命令を完了する。
次に、本発明の実施例の動作について、図2を参照して説明する。図2は、本発明の実施例の動作のフローチャートを示す図である。
図2のステップ201では、先ず最初に、上述のように、命令デコード部(DDECR)115から分岐命令が、分岐命令制御部(RSBR)114へ、発行される。
次に、ステップ202では、上述のように、RSBR114は、分岐命令を登録する。RSBR114は、実行パイプライン上に存在する複数の分岐命令を登録して制御することが可能である。
次に、ステップ203では、分岐の判定が行われる。分岐予測の判断が失敗している場合には、処理は、ステップ204へ進む。
RSBR114で分岐予測の判定が行われたときに、BRHIS113での分岐予測が失敗していると判断される場合とは、次の第1の条件から第4の条件のいずれか1つの条件を満たす場合である。
第1の条件は、分岐しないと予測した分岐命令が分岐する場合である。第2の条件は、分岐すると予測した分岐命令が分岐しない場合である。第3の条件は、分岐すると予測した分岐命令の分岐先アドレスが誤りの場合である。第4の条件は、分岐命令でない命令を、分岐命令であるかのごとく分岐すると予測する場合である。
以下に、第1の条件から第4の条件を満たしている論理式を示す。
第1の条件を満たす場合は:+RSBR_VALID & −RSBR_BRHIS_HIT & +RSBR_RESOLVED & +RSBR_TAKENが真である場合であり、
第2の条件を満たす場合は:+RSBR_VALID & +RSBR_BRHIS_HIT & +RSBR_RESOLVED & −RSBR_TAKENが真である場合であり、
第3の条件を満たす場合は:+RSBR_VALID & +RSBR_BRHIS_HIT & +RSBR_TAV & −RSBR_TGTCP_MATCHが真である場合であり、
第4の条件を満たす場合は:+RSBR_PHANTOM_VALIDが真である場合である。
ここで、各信号は、次の意味を有する信号である。
(1)+RSBR_VALIDは、RSBR114エントリが分岐命令であることを示す。
(2)+RSBR_BRHIS_HITは、そのエントリがBRHIS113で“分岐する”と予測されたことを示す。
(3)+RSBR_RESOLVEDは、そのエントリの分岐条件が確定したことを示す。
(4)+RSBR_TAKENは、そのエントリが分岐することを示す。
(5)+RSBR_TAVは、そのエントリの分岐アドレスが確定したことを示す。
(6)+RSBR_TGTCP_MATCHは、そのエントリの予測分岐アドレスが正しいアドレスであることを示す。
(7)+RSBR_PHANTOM_VALIDは、分岐命令でない命令を、分岐命令のように分岐すると判断したことを示す。
ここで、信号名の先頭に付された”+”記号は、正論理であることを示し、一方信号名に付された”−”
記号は、負論理であることを示す。即ち、例えば、上述の(1)+RSBR_VALIDについては、” そのエントリがBRHIS113で“分岐する”と予測された”時に、+RSBR_VALIDは正である。一方、”
そのエントリがBRHIS113で“分岐する”と予測された”時に、+RSBR_VALIDは負である。又、記号”&”は論理積の演算を示す。
上述の何れかの条件が成立する場合には、処理は、ステップ204に進む。
次にステップ204では、以下の制御が同時に行われる。
RSBR114から、信号123(RSBR_CANCEL_IF_ID_0,1,2,3,4,5)により、IFCTL111を経由して、キャッシュ制御部102に対して、命令フェッチリクエストの無効を通知する信号(CANCEL_IF_ID_0,1,2,3,4,5)が送られる。
この時、IFCL111では全てのIBBUFER112(メモリからフェッチしたデータをDDECR115に投入するまで、一時的に保存するためのメモリ機構。本実施例では6ポートを有している)の中のデータを消去する。
この信号は、再命令フェッチリクエスト(RSBR_REIFCH_REQ)がRSBR114からIFCL111に、信号123を介して出されるまで、連続して送られる。
更に、分岐予測に失敗した命令(エントリ)よりも後続のRSBRエントリからの、再命令フェッチリクエスト(RSBR_REIFCH_REQ)を抑えるために、後続のRSBRエントリを消去する。
そして、RSBR114からDDECR115に対して、実行パイプラインへの命令投入を抑止するための信号(INH_E_VALID)が送られる。この信号は、誤った分岐予測によって実行パイプラインに投入された不必要な命令を実行パイプライン上から消去するまで(即ち、分岐予測に失敗した分岐命令が命令完了するまでの間。これにより、COMIT116から各命令制御部に対して、FLUSH_RSという信号が送られて実行パイプライン上の命令が消去される。)連続して送られる。
これと同時に、RSBR114から、キャッシュ制御部102に対して、不必要なオペランドリクエストの無効を通知する信号(CANCEL_OP_IID_VALID)が送られる。これと同時に、誤った分岐予測によって実行パイプラインに投入された不必要な命令からのオペランドリクエストと分岐命令以前に実行パイプラインに投入されている命令からのオペランドリクエストとを区別するため、分岐予測に失敗した分岐命令以降のIIDをRSBR114からキャッシュ制御部102に対して通知する(CANCEL_OP_IID[5:0])。
この信号(CANCEL_OP_IID[5:0])は、誤った分岐予測によって実行パイプラインに投入された不必要な命令を実行パイプライン上から消去するまで連続して送られる。
次に、ステップ205へ進む。ステップ205では、上述のステップ204で、各信号が発生されるように制御が行われたので、キャッシュ制御部ではCANCEL_IF_ID_0,1,2,3,4,5が全て1である間は、命令フェッチリクエストが無効となる。また、CANCEL_OP_IID_VALIDが1である間は、CANCEL_OP_IID[5:0]が指し示すIID以降の実行パイプライン上の命令からのオペランドリクエストを無効化する。
次に、ステップ206では、RSBR114からIFCL111へ、命令再フェッチ要求(RSBR_REIFCH_REQ)が出され、そして、命令の再フェッチが再開される。
そして、次にステップ207へ進み、RSBR114による分岐命令制御が終了する。
ステップ203で、分岐予測が成功したと判断された場合には、処理は、ステップ203から、ステップ207へ進む。
そして、最後にステップ208で、分岐命令は完了する。
以上のように本発明では分岐予測の失敗が判明してから正しい命令シーケンスを再フェッチするまで不必要な命令フェッチリクエスト、オペランドリクエストを抑止し、実行パイプライン上への無意味な命令発行を止めることでキャッシュにおける不必要なリプレースの発生、演算器等の命令制御リソースの無駄な消費を防ぎ、命令処理装置の性能向上を図ることができる。
次に、本発明に従った、制御信号RSBR_CANCEL_IF_ID_0,1,2,3,4,5と、RSBR_REIFCH_REQと、INH_E_VALIDと、CANCEL_OP_IID_VALID及び、CANCEL_OP_IID[5:0]を発生する回路について説明する。
図3から12は、本発明に従った、上述の制御信号を発生する回路の実施例を示す。図13は、従来のRSBR114の制御信号のタイムチャートを示し、また、図14は、本発明に従った、上述の制御信号を加えた、RSBR114の制御信号のタイムチャートを示す。
先ず最初に、図3から12の制御信号を発生する回路について説明する。
図3は、RSBR_CANCEL_IF_ID_0,1,2,3,4,5をセットする信号(+SET_RSBR_CANCEL_IF_ID_0,1,2,3,4,5)を発生する回路を示す。回路図において、”ALL”は、ID_0,1,2,3,4,5を示すものとする。
図3は、回路ブロック310、320、330及び多入力ORゲート340より構成される。回路ブロック310は、4入力ANDゲート311、4入力ANDゲート312、4入力ANDゲート313、バッファ314及び4入力ORゲート315より構成される。回路ブロック320と330は、回路ブロック310と同一の構成である。しかし各回路ブロックへの入力信号は、RSBR114に登録されている各々の命令(エントリ)に対応する。例えば、回路ブロック310は、IIDが0のエントリについての命令に対しての回路であり、回路ブロック320は、IIDは1のエントリについての命令に対しての回路であり、そして、回路ブロック330は、IIDがnのエントリについての命令に対しての回路である。
回路ブロック310の4入力ANDゲート311は、前述の第1の条件をデコードする回路である。回路ブロック310の4入力ANDゲート311には、+RSBR0_VALID、+RSBR0_RESOLVED、+RSBR_TAKEN及び、−RSBR_BRHIS_HITが入力される。全ての入力が’1’の時に、4入力ANDゲート311から’1’が出力される。これは第1の条件が成立した場合に相当する。
回路ブロック310の4入力ANDゲート312は、前述の第2の条件をデコードする回路である。回路ブロック310の4入力ANDゲート312には、+RSBR_VALID、+RSBR_RESOLVED、−RSBR_TAKEN及び、+RSBR_BRHIS_HITが入力される。全ての入力が’1’の時に、4入力ANDゲート312から’1’が出力される。これは第2の条件が成立した場合に相当する。
回路ブロック310の4入力ANDゲート313は、前述の第3の条件をデコードする回路である。回路ブロック310の4入力ANDゲート313には、+RSBR_VALID、+RSBR_TAV、−RSBR_TGTCP_MATCH及び、+RSBR_BRHIS_HITが入力される。全ての入力が’1’の時に、4入力ANDゲート313から’1’が出力される。これは第3の条件が成立した場合に相当する。
回路ブロック310のバッファ314は、前述の第4の条件をデコードする回路である。回路ブロック310のバッファ314には、+RSBR_PHANTOM_VALIDが入力される。入力が’1’の時に、バッファ314から’1’が出力される。これは、第4の条件が成立した場合に想到する。
回路ブロック310の4入力ANDゲート311、4入力ANDゲート312、4入力ANDゲート313、バッファ314の何れかの出力が’1’の場合には、4入力ORゲート315から’1’が出力される。
回路ブロック320と330についても同様である。そして、回路ブロック310、320又は、330のいずれか1つの出力が’1’の場合には、ORゲート340から’1’が出力され、SET_RSBR_CANCEL_IF_ALLは’1’となる。
図4は、図3と同一の構成であり、CANCEL_OP_IID_VALIDをセットする、(+SET_CANCEL_OP_IID_VALID)を発生する。
図5は、前述の図3で示されたのと同様な回路310から330及び、インバータ501、502、バッファ503、及び、ANDゲート504、505より構成される。図5は、中間信号+CANCEL_OP_RSBR0、+CANCEL_OP_RSBR1、及び+CANCEL_OP_RSBRnを発生する。これらの信号は、分岐予測を失敗した次の命令を示す。+CANCEL_OP_RSBR0は、回路310の出力と等しい。+CANCEL_OP_RSBR1は、回路310の出力がインバータ501により反転された信号と、回路320の出力とを入力として、ANDゲート504により論理積の演算を行った結果である。また、+CANCEL_OP_RSBRnも同様に、ANDゲート505により演算されて出力される。
図6は、+REIFCH_TRG信号を発生する、RSフリップフロップ601より構成される回路を示す。RSフリップフロップ601の出力の+REIFCH_TRGは、RSフリップフロップ601のセット端子(S)に入力される再命令フェッチリクエスト(+RSBR_REIFCH_REQ)によりセットされる。そして、RSフリップフロップ601のリセット端子(R)に入力される、+CLEAR_PIPELINE信号によりリセットされる信号である。+CLEAR_PIPELINE信号は、COMIT116が出力する、実行パイプラインのクリア命令信号である。
図7は、+RSBR_CANCEL_IF_ALL信号を発生する、RSフリップフロップ701より構成される回路を示す。ここで、記号”ALL”は、ID_0,1,2,3,4,5を示す。RSフリップフロップ701の出力の+RSBR_CANCEL_IF_ALL信号は、RSフリップフロップ701のセット端子(S)に入力される、図3のORゲート340から出力される、+SET_RSBR_CANCEL_IF_ALLによりセットされる。一方、ORゲート702がRSフリップフロップ701のリセット端子(R)に接続される。ORゲート702の3つの入力には、再命令フェッチリクエスト(+RSBR_REIFCH_REQ)と、図6のRSフリップフロップ601の出力する+REIFCH_TRG信号と、+CLEAR_PIPELINE信号が入力される。そして、再命令フェッチリクエスト(+RSBR_REIFCH_REQ)又は、図6のRSフリップフロップ601の出力する+REIFCH_TRG信号又は、+CLEAR_PIPELINE信号のいずれか1つが’1’の時に、RSフリップフロップ701のリセット端子(R)には、ORゲート702からリセット信号は入力されて、+RSBR_CANCEL_IF_ALL信号は、リセットされる。
図8は、2入力ORゲート801と2入力ANDゲート802からなる、+INH_E_VALIDを出力する回路を示す。図6のRSフリップフロップ601の出力する+REIFCH_TRG信号と図7のRSフリップフロップ701の出力の+RSBR_CANCEL_IF_ALL信号の論理和を、ORゲート801により演算子、そして、このORゲート801の出力と、COMIT116の出力する−FLUSH_RS信号の論理積を、ANDゲート802により演算して、+INH_E_VALIDを出力する。−FLUSH_RS信号は、図1のCOMIT116の出力する+FLUSH_RS信号の負論理の信号である。
図9は、RSフリップフロップ901と2入力ANDゲート902により構成される、+D_VALIDを出力する回路を示す。2入力ANDゲート902の出力は、RSフリップフロップ901のセット端子(S)に接続されている。2入力ANDゲート902により、図8のANDゲート802の出力する+INH_E_VALIDの負論理の−INH_E_VALID信号と、+E_VALID信号の論理積が、ANDゲート902により演算されそして、ANDゲート902の出力信号によりRSフリップフロップ901の出力の+D_VALID信号がセットされる。+D_VALID信号は、デコードサイクルの開始を示す信号であり、命令デコード部115からRSBR114とCOMIT116へ出力される。また、+E_VALID信号は、IBBUFER112からDDECR115へのセットのタイミングを示す信号である。
図10は、CANCEL_OP_IID[5:0]のセット信号+SET_CANCEL_OP_IID[5:0]を発生する回路を示す。図10に示す回路は、2入力ANDゲート1001から1007、5入力ORゲート1010、1011及び2入力ORゲート1020より構成される。
2入力ANDゲート1001には、図5のインバータ503より出力される+CANCEL_OP_RSBR0と、命令ID(IID)の+RSBR0_IID_PL1[5:0]が入力される。また、2入力ANDゲート1002には、図5の2入力ANDゲート504より出力される+CANCEL_OP_RSBR1と、命令IDの+RSBR1_IID_PL1[5:0]が入力される。また、2入力ANDゲート1007には、図5の2入力ANDゲート505より出力される+CANCEL_OP_RSBRnと、命令IDの+RSBRn_IID_PL1[5:0]が入力される。そして、2入力ORゲート1020からは、分岐予測を失敗した分岐命令の、次の命令の命令IDが出力される。
図11は、RSフリップフロップ1101により構成される、+CANCEL_OP_IID_VALIDを発生する回路を示す。RSフリップフロップ1101のセット入力端子(S)には、図4のORゲート340から出力される、SET_CANCEL_OP_IID_VALIDが入力され、この信号により+CANCEL_OP_IID_VALID信号がセットされる。また、RSフリップフロップ1101のリセット入力端子(R)には、+CLEAR_PIPELINE信号が入力され、この信号により+CANCEL_OP_IID_VALID信号がリセットされる。+CLEAR_PIPELINE信号は、COMIT116が出力する、実行パイプラインのクリア命令信号である。
図12は、RSフリップフロップ1201により構成される、+CANCEL_OP_IID[5:0]を出力する回路を示す。RSフリップフロップ1201のセット端子(S)には、図10のORゲート1020から出力される、SET_CANCEL_OP_IID[5:0]信号が接続され、これにより+CANCEL_OP_IID[5:0]信号はセットされる。
以上のように、制御信号RSBR_CANCEL_IF_ID_0,1,2,3,4,5と、RSBR_REIFCH_REQと、INH_E_VALIDと、CANCEL_OP_IID_VALID及び、CANCEL_OP_IID[5:0]を発生することができる。
次に、本発明に従って生成された信号のタイミングを説明する。
図13は、従来の分岐制御のタイミングチャートを示す図である。そして、図14は、本発明に従って生成された信号のタイミングチャートを示す図である。
図13においては、デコードサイクルの開始を示す信号であり、命令デコード部115からRSBR114とCOMIT116へ出力される、(1)D_VALID信号でサイクルが開始する。そして、番号(2)から(12)に示すように、図1の各部を制御する前述した信号が発生される。
図14おいて、図13と同一番号を付した信号は、同一の信号を示す。本発明に従って生成された番号(101)から(108)に示す信号は、前述の図3から12に示された実施例の回路により発生された信号を示す。
以上より、図3から12に示された実施例の回路により,制御信号RSBR_CANCEL_IF_ID_0,1,2,3,4,5と、RSBR_REIFCH_REQと、INH_E_VALIDと、CANCEL_OP_IID_VALID及び、CANCEL_OP_IID[5:0]を発生することができる。これにより、分岐予測を誤った場合に、再命令フェッチ要求をメモリに出すまでの間、誤った命令フェッチリクエストやオペランドリクエストを抑止し又は無効化することができる。
図1は、本発明の実施例のコンピュータの中央処理ユニット内の命令制御装置内の分岐命令制御動作を実行する部分の概要を示すブロック図である。 図2は、本発明の実施例の動作のフローチャートを示す図である。 図3は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図4は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図5は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図6は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図7は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図8は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図9は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図10は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図11は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図12は、本発明に従った制御信号を生成するための回路図の一部を示す図である。 図13は、従来の分岐制御のタイミングチャートを示す図である。 図14は、本発明に従って生成された信号のタイミングチャートを示す図である。
符号の説明
100 命令制御装置

Claims (8)

  1. 記憶手段からの命令のフェッチ制御を行う命令フェッチ制御手段と、
    前記記憶手段からフェッチされた命令を一時記憶する命令バッファ手段と、
    前記フェッチされた命令のうち分岐命令の分岐予測を行う分岐命令予測手段と、
    前記命令フェッチ制御手段、前記命令バッファ手段及び前記分岐命令予測手段を制御する分岐命令制御手段とを有し、前記命令をアウトオブオーダに実行する命令制御装置において、
    前記分岐命令制御手段が、前記分岐命令の分岐条件が確定したことにより前記分岐命令予測手段による分岐予測が誤りであると判断した場合には、
    前記分岐予測が誤りであると判断してから分岐先アドレスが確定するまでの間、前記分岐命令制御手段が、前記命令フェッチ制御手段による命令フェッチ制御を継続して抑止するとともに、前記命令バッファ手段の無効化を継続して行うことを特徴とする命令制御装置。
  2. 前記分岐命令制御手段は、
    前記分岐命令予測手段により分岐が成立すると予測された分岐命令について分岐が成立しない場合、又は
    前記分岐命令予測手段により分岐が成立しないと予測された分岐命令について分岐が成立する場合、又は
    前記分岐命令予測手段により分岐が成立すると予測された分岐命令の分岐先アドレスが誤りである場合、又は
    前記分岐命令予測手段により分岐命令でない命令を分岐命令であるかのごとく分岐が成立すると予測する場合、
    の何れかの場合に、前記分岐命令予測手段による分岐予測が誤りであると判断することを特徴とする請求項1記載の命令制御装置。
  3. 記憶制御手段により制御される記憶手段からの命令のフェッチ制御を行う命令フェッチ制御手段と、
    前記記憶手段からフェッチされた命令を一時記憶する命令バッファ手段と、
    前記命令バッファ手段から供給される命令のデコードを行う命令デコード手段と、
    前記デコードされた命令のうち分岐命令の分岐予測を行う分岐命令予測手段と、
    前記命令フェッチ制御手段、前記命令バッファ手段、前記命令デコード手段及び前記分岐命令予測手段を制御する分岐命令制御手段とを有し、前記命令をアウトオブオーダに実行する命令制御装置において、
    前記分岐命令制御手段が、前記分岐命令の分岐条件が確定したことにより前記分岐命令予測手段による分岐予測が誤りであると判断した場合には、
    前記分岐予測が誤りであると判断してから分岐先アドレスが確定するまでの間、前記分岐命令制御手段は前記記憶制御手段に対して、前記分岐命令予測手段による分岐予測が誤りであることにより誤って実行されようとしている命令についてのオペランド要求の無効化制御を継続して行うとともに、前記命令デコード手段の無効化制御を継続して行うことを特徴とする命令制御装置。
  4. 前記分岐命令制御手段は、
    前記分岐命令予測手段により分岐が成立すると予測された分岐命令について分岐が成立しない場合、又は
    前記分岐命令予測手段により分岐が成立しないと予測された分岐命令について分岐が成立する場合、又は
    前記分岐命令予測手段により分岐が成立すると予測された分岐命令の分岐先アドレスが誤りである場合、又は
    前記分岐命令予測手段により分岐命令でない命令を分岐命令であるかのごとく分岐が成立すると予測する場合、
    の何れかの場合に、前記分岐命令予測手段による分岐予測が誤りであると判断することを特徴とする請求項3記載の命令制御装置。
  5. 記憶装置からの命令のフェッチを行う命令フェッチステップと、
    前記記憶装置からフェッチされた命令を命令バッファに一時記憶する命令バッファステップと、
    前記フェッチされた命令のうち分岐命令の分岐予測を行う分岐命令予測ステップとを有し、前記命令をアウトオブオーダに実行する命令制御方法であって、
    前記分岐命令の分岐条件が確定したことにより前記分岐命令予測ステップの分岐予測が誤りであると判断した場合には、前記分岐予測が誤りであると判断してから分岐先アドレスが確定するまでの間、
    前記命令フェッチステップにおける命令フェッチを継続して抑止する命令フェッチ抑止ステップと、
    前記命令バッファステップの無効化を継続して行う命令バッファ無効化ステップとを実行することを特徴とする命令制御方法。
  6. 前記分岐命令予測ステップにおいて分岐が成立すると予測された分岐命令について分岐が成立しない場合、又は
    前記分岐命令予測ステップにおいて分岐が成立しないと予測された分岐命令について分岐が成立する場合、又は
    前記分岐命令予測ステップにおいて分岐が成立すると予測された分岐命令の分岐先アドレスが誤りである場合、又は
    前記分岐命令予測ステップにおいて分岐命令でない命令を分岐命令であるかのごとく分岐が成立すると予測する場合、
    の何れかの場合に、前記分岐命令予測ステップによる分岐予測が誤りであると判断することを特徴とする請求項5記載の命令制御方法。
  7. 記憶装置からの命令のフェッチを行う命令フェッチステップと、
    前記フェッチされた命令のデコードを行う命令デコードステップと、
    前記デコードされた命令のうち分岐命令の分岐予測を行う分岐命令予測ステップとを有し、前記命令をアウトオブオーダに実行する命令制御方法であって、
    前記分岐命令の分岐条件が確定したことにより前記分岐命令予測ステップの分岐予測が誤りであると判断した場合には、前記分岐予測が誤りであると判断してから分岐先アドレスが確定するまでの間、
    前記分岐命令予測ステップにおける前記分岐予測の誤りにより誤って実行されようとしている命令についてのオペランド要求の無効化制御を継続して行うオペランド要求無効化ステップと、
    前記命令デコードステップにおける命令デコードの無効化を継続して行う命令デコード無効化ステップとを実行することを特徴とする命令制御方法。
  8. 前記分岐命令予測ステップにおいて分岐が成立すると予測された分岐命令について分岐が成立しない場合、又は
    前記分岐命令予測ステップにおいて分岐が成立しないと予測された分岐命令について分岐が成立する場合、又は
    前記分岐命令予測ステップにおいて分岐が成立すると予測された分岐命令の分岐先アドレスが誤りである場合、又は
    前記分岐命令予測ステップにおいて分岐命令でない命令を分岐命令であるかのごとく分岐が成立すると予測する場合、
    の何れかの場合に、前記分岐命令予測ステップによる分岐予測が誤りであると判断することを特徴とする請求項7記載の命令制御方法。
JP2005500202A 2003-05-28 2003-05-28 分岐予測機構を持つ命令制御装置及びその制御方法 Expired - Fee Related JP3852782B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2003/006668 WO2004107163A1 (ja) 2003-05-28 2003-05-28 分岐予測機構を持つ命令制御装置及びその制御方法

Publications (2)

Publication Number Publication Date
JPWO2004107163A1 JPWO2004107163A1 (ja) 2006-07-20
JP3852782B2 true JP3852782B2 (ja) 2006-12-06

Family

ID=33485773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005500202A Expired - Fee Related JP3852782B2 (ja) 2003-05-28 2003-05-28 分岐予測機構を持つ命令制御装置及びその制御方法

Country Status (2)

Country Link
JP (1) JP3852782B2 (ja)
WO (1) WO2004107163A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4706883B2 (ja) * 2009-03-17 2011-06-22 セイコーエプソン株式会社 生体試料定量方法
JP2013131036A (ja) 2011-12-21 2013-07-04 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
JP7100258B2 (ja) * 2018-10-10 2022-07-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
JPH07306785A (ja) * 1994-05-11 1995-11-21 Toshiba Corp 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法
JP2000181711A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 命令フェッチのキャンセル方式
JP2000322257A (ja) * 1999-05-10 2000-11-24 Nec Corp 条件分岐命令の投機的実行制御方法

Also Published As

Publication number Publication date
JPWO2004107163A1 (ja) 2006-07-20
WO2004107163A1 (ja) 2004-12-09

Similar Documents

Publication Publication Date Title
JP4856100B2 (ja) 非アラインドメモリアクセス予測
JP6113705B2 (ja) ロック命令を実行するためのプロセッサ及び装置
US7870369B1 (en) Abort prioritization in a trace-based processor
JP4763727B2 (ja) 分岐予測ミスを訂正するシステムおよび方法
US8250349B2 (en) Branch prediction control device having return address stack and method of branch prediction
JP5137948B2 (ja) ローカル及びグローバル分岐予測情報の格納
JP5425627B2 (ja) 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置
EP1296229B1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
JP2008530714A5 (ja)
JP2008530713A5 (ja)
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
WO2008029450A1 (fr) Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
US10067875B2 (en) Processor with instruction cache that performs zero clock retires
JP3977931B2 (ja) データプロセッサにおける条件分岐実行を制御するための方法および装置
US6934828B2 (en) Decoupling floating point linear address
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
JP3839755B2 (ja) 命令制御方法及びプロセッサ
JP3852782B2 (ja) 分岐予測機構を持つ命令制御装置及びその制御方法
US7636837B2 (en) Apparatus and method for controlling instructions at time of failure of branch prediction
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
US6738897B1 (en) Incorporating local branch history when predicting multiple conditional branch outcomes
JP3843048B2 (ja) 分岐予測機構を有する情報処理装置
JP7409208B2 (ja) 演算処理装置
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP2020060946A (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060530

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060728

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060831

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100915

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100915

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110915

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120915

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120915

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130915

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees