JP3807740B2 - プロセッサ及び命令制御方法 - Google Patents

プロセッサ及び命令制御方法 Download PDF

Info

Publication number
JP3807740B2
JP3807740B2 JP2004541191A JP2004541191A JP3807740B2 JP 3807740 B2 JP3807740 B2 JP 3807740B2 JP 2004541191 A JP2004541191 A JP 2004541191A JP 2004541191 A JP2004541191 A JP 2004541191A JP 3807740 B2 JP3807740 B2 JP 3807740B2
Authority
JP
Japan
Prior art keywords
instruction
exception
branch
issued
detected
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
JP2004541191A
Other languages
English (en)
Other versions
JPWO2004031944A1 (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 JPWO2004031944A1 publication Critical patent/JPWO2004031944A1/ja
Application granted granted Critical
Publication of JP3807740B2 publication Critical patent/JP3807740B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

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は従来のプロセッサにおける分岐ミス発生時の処理である。図1(A)の分岐予測による命令の投機的実行において、分岐命令B4についての分岐予測が失敗して分岐ミス200が検出されると、図1(B)のように、分岐命令B4以前の命令が全て完了した場合、リオーダーバッファを含む資源の更新が完了してから後に、誤って実行してしまった命令5〜命令8をキャンセルするキャンセル処理202を行い、その後に図1(C)のように、正しい方向の命令50,51となる命令の発行開始し、命令列を実行するようにしている。
しかしながら、このような命令制御にあっては、分岐ミスとなった分岐命令B4以前の命令が完了しないと、正しい命令列の発行を再開できず、命令実行の処理性能が低いという問題がある。そこで、プロセッサの処理性能を向上するため、図2のような分岐ミス発生に対する命令制御を行っている。この命令制御にあっては、図2(A)のように、分岐命令B4,B8を境に命令列に識別子としてのIDをID=0,ID=1,ID=2のように持たせ、図2(B)で分岐命令B4の分岐ミス204を検出した場合には、分岐命令B4のID=0より新しいID=1,ID=2を持つ命令5〜命令11をキャンセルするキャンセル処理206を行い、その後、図2(C)のように、正しい方向の命令50,51の発行を開始して命令列を実行するようにしている。
このため分岐ミス204が検出された分岐命令B4以前の命令が全て完了していなくても、正しい命令列の実行を再開でき、命令の処理性能を高めることができる。しかし、図2の命令制御にあっては、多数の分岐命令を同時に動作させようとすると、分岐命令の数分のIDを持つ必要があり、ハードウェア量の増加と複雑化を招き、プロセッサの高速化には向かないという問題がある。またリネームを行っているプロセッサの場合、分岐命令毎にリネーム情報のスナップショットをとる必要があったため、同様に、ハードウェア量の増加と複雑化を招き、プロセッサの高速化には向かないという問題がある。この問題を詳細に説明すると次のようになる。
図3は、従来のプロセッサで使用するリネームマップの説明図であり、リネーム可能なレジスタREG0、REG1,REG2,REG3と、そのリネームに使用するリオーダーバッファROB0,ROB1,ROB2,ROB3が存在する場合を例として説明する。リネームマップ210はレジスタ番号REG_AD212をエントリ番号0〜3として索引するテーブルであり、有効ビットフィールドAVのフィールド216が「1」であると、そのレジスタがリオーダーバッファドレスROB_ADのフィールド214の示すリオーダーバッファROBでリネーム中であることを示す。
命令発行に伴い例えばレジスタREG1をリオーダーバッファROB3を用いてリネームする場合には、リネームマップのエントリ「1」の有効クラグAVのフィールド216に「1」を書くと共に、リオーダーバッファドレスROB_ADのフィールド214に「3」を書く。また命令の完了によりリネームが終了すると、有効フラグAVのフィールド216を「0」に書き換えてリオーダーバッファROB3を開放する。更にリオーダーバッファROB3を開放する前に同一のレジスタREG1を別のリオーダーバッファROB0でリネームしたい場合には、リネームマップ210におけるリネームバッファアドレスROB_ADのフィールド214のみを例えば「0」に書き換え、有効クラグAVのフィールド216はそのレジスタREG1を最後にリネームした命令が完了した時に「0」とする。
このため図2の命令制御のように、分岐命令を境に命令列毎に識別子であるIDを持たせた場合には、図3のようなリネームマップ210では、分岐命令毎にリオーダーバッファドレスROB_ADのフィールド214を持たなくてはならない上に、中間状態の有効フラグAVのフィールドも生成しなくてはならないという問題があり、このためハードウェア量の増加と複雑化を招き、プロセッサの高速化には向かないという問題が生じている。このような命令の投機的実行は、命令実行で例外が発生した場合にも、例外なしとして発行してしまった投機的に実行された命令が無効となり、分岐ミスの場合と同様な問題がある。
本発明は、少ないハードウェア量で投機的実行を誤った時の命令発行再開を速やかに可能とするプロセッサ及び命令制御方法を提供することを目的とする。
図1は本発明の原理説明図である。
(分岐予測を制御するプロセッサ)
本発明のプロセッサの第1形態にあっては、第1識別子(ID=0)を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を発行する第2命令制御部と、分岐以前の命令が全て完了した後に、分岐予測により誤って発行してしまった命令をキャンセルして第2命令制御部が発行した命令に続く正しい方向の命令発行を第2識別子を添付して開始する第3命令制御部とを備えたことを特徴とする。このように本発明のプロセッサは、分岐ミスが発生してから命令に付ける識別子(ID)を更新しているため、分岐ミスが発生した分岐命令以前の命令の全ての完了を待たずに正しい方向の命令が発行できることで、命令の処理性能が向上し、また命令に付ける識別子は少なくとも2つあれば良く、処理性能の向上とハードウェア量の低減が両立できる。
本発明のプロセッサの第2形態にあっては、第1識別子(ID=0)を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令に第2識別子(ID=1)を添付して発行する第2命令制御部とを備えた点は第1形態と同じであるが、更に、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令について第2の分岐ミスを検出した場合、古い分岐命令以前の命令が全て完了するのを待って、後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部とを備えたことを特徴とする。このように最初の分岐ミスに対し正しい方向に命令発行を開始した後に、それ以前の古い分岐命令について分岐ミスが発生した場合に、古い分岐命令以前の命令の全ての完了を待って未完了の命令を全てキャンセルしてから正しい方向の命令を発行でき、この場合も、命令に付ける識別子は少なくとも2つあれば良く、ハードウェア量を低減できる。
本発明のプロセッサの第3形態にあっては、第1識別子(ID=0)を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子(ID=1)を添付して発行する第2命令制御部とを備える点は、第1形態と同じであるが、これに加え、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令において第2の分岐ミスを検出した場合、第1の分岐ミスの検出により正しい方向と判断して発行した命令をキャンセルした後に、第2の分岐ミスの検出により判断した第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部と、第2の分岐ミスが検出されて正しい方向の命令が発行された後に、古い分岐命令以前の命令が全て完了するのを待って、第2の分岐ミス側の命令をキャンセルしてから、正しい方向の命令発行を再開する第4命令制御部とを備えたことを特徴とする。
このように最初の分岐ミスに対し正しい方向に命令発行を開始した後に、それ以前の古い分岐命令について分岐ミスが発生した場合に、古い分岐命令以前の命令の全ての完了を待つことなく、最初の分岐予測で誤って発行した未完了の命令を全てキャンセルして正しい方向の命令を発行でき、その後に、古い分岐命令以前の命令の完了を待って、誤って発行した未完了の命令をキャンセルしてから、正しい方向の命令を発行して処理性能を向上でき、また命令に付ける識別子は少なくとも2つあれば良いからハードウェア量も低減できる。
本発明によるプロセッサの第4形態は、第1識別子(ID=0)を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子(ID=1)を添付して発行する第2命令制御部とを備える点は第1形態と同じであるが、これに加えて、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、新しい分岐命令以前の命令が全て完了するのを待って、後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部を備えたことを特徴とする。
このように最初の分岐ミスに対し正しい方向に命令発行を開始した後に、正しい命令列内の新たな分岐命令について分岐ミスが発生した場合に、新しい分岐命令以前の命令の全ての完了を待って未完了の命令を全てキャンセルして正しい方向の命令を発行でき、この場合も、命令に付ける識別子は少なくとも2つあれば良く、ハードウェア量を低減できる。
本発明によるプロセッサの第5形態は、第1識別子(ID=0)を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子(ID=1)を添付して発行する第2命令制御部とを備えた点は第1形態と同じであるが、これに加えて、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、正しい方向の命令発行を抑止した状態で、第1の分岐ミスが検出された古い方の分岐命令以前の命令が全て完了するのを待って、古い分岐命令により誤って発行してしまった命令をキャンセルしてから、抑止を解除して第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部と、第2の分岐ミスの検出による正しい方向の命令発行が開始された後に、新しい分岐命令以前の命令が全て完了するのを待って、第2の分岐ミス側の命令をキャンセルしてから、第2の分岐ミスのよる正しい方向の命令発行を再開する第4命令制御部とを備えたことを特徴とする。
このように最初の分岐ミスに対し正しい方向に命令発行を開始した後に、正しい方向の命令列内の新しい分岐命令につき分岐ミスが発生した場合に、新しい分岐命令以前の命令の全ての完了を待つことなく、最初の分岐ミスで誤って発行した未完了の命令を全てキャンセルして正しい方向の命令を発行でき、その後に、新しい分岐命令以前の命令の完了を待って誤って発行した未完了の命令をキャンセルして正しい方向の命令を発行することで処理性能を向上でき、また命令に付ける識別子は少なくとも2つあれば良いからハードウェア量も低減できる。
このような第1形態乃至第5形態のプロセッサは、更に、命令が使用するレジスタの番号で参照されるエントリに、リネームに使用するリオーダーバッファのアドレス格納領域と、命令制御で添付する複数の識別子に対応して複数の有効フラグ領域を備えたリネームマップと、命令が使用するレジスタをリオーダーバッファを用いてリネームする際に、レジスタの番号で参照されるリネームマップのエントリに、リネームに使用するリオーダーバッファのアドレスを格納すると共に、命令に添付される識別子に対応した有効フラグをオンし、分岐ミスを検出した際に誤って発行されてしまった命令に添付した識別子に対応したリネームマップの有効フラグをオフし、正しい方向に発行した命令に添付される別の識別子に対応したリネームマップの有効フラグをオンするリネーミング処理部とを設け、これによって分岐ミスの検出により発行される正しい方向の命令が、誤って発行されてしまった命令によるリネーム情報を使用することを防ぐことを特徴とする。
(分岐予測の命令制御方法)
本発明によるプロセッサの命令制御方法の第1形態は、第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、分岐以前の命令が全て完了した後に、分岐予測により誤って発行してしまった命令をキャンセルして第2ステップが発行した命令に続く正しい方向の命令発行を第2識別子を添えて開始する第3ステップと、を備えたことを特徴とする。
本発明によるプロセッサの命令制御方法の第2形態は、第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令で第2の分岐ミスを検出した場合、古い分岐命令以前の命令が全て完了するのを待って、後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、
を備えたことを特徴とする。
本発明によるプロセッサの命令制御方法の第3形態は、第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令で第2の分岐ミスを検出した場合、第1の分岐ミスの検出により正しい方向と判断して発行した命令をキャンセルした後に、第2の分岐ミスの検出により判断した第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、第2の分岐ミスが検出されて正しい方向の命令が発行された後に、古い分岐命令以前の命令が全て完了するのを待って、第2の分岐予測により誤って発行してしまった命令をキャンセルしてから、正しい方向の命令発行を再開する第4ステップと、
を備えたことを特徴とする。
本発明によるプロセッサの命令制御方法の第4形態は、第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、新しい分岐命令以前の命令が全て完了するのを待って後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、を備えたことを特徴とする。
本発明によるプロセッサの命令制御方法の第5形態は、第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、正しい方向の命令発行を抑止した状態で、第1分岐ミスが検出された古い方の分岐命令以前の命令が全て完了するのを待って、古い分岐命令により誤って発行してしまった命令をキャンセルしてから、抑止を解除して第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、第2の分岐ミスの検出による正しい方向の命令発行が開始された後に、新しい分岐命令以前の命令が全て完了するのを待って、第1の分岐予測の検出により発行された命令をキャンセルしてから、前記第2の分岐ミスによる正しい方向の命令発行を再開する第4ステップと、を備えたことを特徴とする。
更に第1乃至第5形態におけるブロセッサの命令制御方法にあっては、命令が使用するレジスタの番号で参照されるエントリに、リネームに使用するリオーダーバッファのアドレス格納領域と、命令制御で添付する複数の識別子に対応して複数の有効フラグ領域を備えたリネームマップを設けた場合、命令が使用するレジスタをリオーダーバッファを用いてリネームする際に、レジスタの番号で参照される前記リネームマップのエントリに、リネームに使用する前記リオーダーバッファのアドレスを格納すると共に、命令に添付される識別子に対応した有効フラグをオンし、分岐ミスを検出した際に、誤って発行されてしまった命令に添付した識別子に対応した前記リネームマップの有効フラグをオフし、正しい方向に発行した命令に添付される別の識別子に対応した前記リネームマップの有効フラグをオンすることにより、分岐ミスの検出により発行される正しい方向の命令が誤って発行されてしまった命令によるリネーム情報を使用することを防ぐことを特徴とする。
(例外発生を処理するプロセッサ)
本発明のプロセッサは、分岐予測による命令の投機的実行以外に、例外発生なしとして投機的に実行した命令を例外発生でキャンセルする場合にも、分岐ミスの場合と同様に適用でき、分岐ミスの検出に対応して例外発生についても次の第1形態〜第5形態をとる。
本発明の例外発生を処理するプロセッサの第1形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、例外発生命令以前の命令が全て完了した後に、例外発生命令及び例外発生なしとして発行してしまった命令をキャンセルして第2命令制御部が発行した命令に続く例外処理ルーチンの命令発行を第2識別子を添付して開始する第3命令制御部とを備えたことを特徴とする。
本発明のプロセッサの例外発生を処理する第2形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、
第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、古い分岐命令以前の命令が全て完了するのを待って例外発生命令及び後続する全ての命令をキャンセルしてから、第2の例外発生による例外処理ルーチンの命令発行を開始する第3命令制御部とを備えたことを特徴とする。
本発明のプロセッサの例外発生を処理する第3形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、第1の例外発生の検出により発行した例外処理ルーチンの命令をキャンセルした後に、第2の例外発生の検出により正しい方向となる例外処理ルーチンの命令発行を開始する第3命令制御部と、第2の例外発生が検出されて例外処理ルーチンの命令が発行された後に、古い分岐命令以前の命令が全て完了するのを待って、第1の例外発生を起こした命令及びこの命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、第2の例外発生による例外処理ルーチンの命令発行を再開する第4命令制御部とを備えたことを特徴とする。
本発明のプロセッサの例外発生を処理する第4形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、新しい例外発生命令以前の命令が全て完了するのを待って例外発生命令及び後続する全ての命令をキャンセルしてから、第1の例外発生による例外処理ルーチンの命令発行を開始する第3命令制御部とを備えたことを特徴とする。
本発明のプロセッサ例外発生を処理する第5形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、
第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、例外処理ルーチンの命令発行を抑止した状態で、第1例外発生が検出された古い方の例外発生命令以前の命令が全て完了するのを待って、古い例外発生命令及びこの命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、抑止を解除して第2の例外発生により正しい方向となる例外処理ルーチンの命令発行を開始する第3命令制御部と、第2の例外発生により例外処理ルーチンの命令が発行された後に、新しい例外発生命令以前の命令が全て完了するのを待って第2の例外発生の命令及び第1の例外発生による例外処理ルーチンで発行された命令をキャンセルしてから、第2の例外発生による例外処理ルーチンの命令発行を再開する第4命令制御部とを備えたことを特徴とする。
(例外発生を処理する命令制御方法)
本発明によるプロセッサの命令制御方法の例外発生を処理する第1形態は、例外発生により投機的に実行した命令をキャンセルする場合にも、分岐ミスの場合、と同様に適用でき、分岐ミスの検出に対応して例外発生についても次の第1形態〜第5形態をとる。
例外発生を処理する本発明によるプロセッサの命令制御方法の第1形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、例外発生命令以前の命令が全て完了した後に、例外発生命令及び例外発生なしとして発行してしまった命令を第2ステップが発行した命令に続くキャンセルして例外処理ルーチンの命令発行を第2識別子を添付して開始する第3ステップとを備えたことを特徴とする。
本発明によるプロセッサの例外発生を処理する命令制御方法の第2形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、古い命令以前の命令が全て完了するのを待って例外発生命令及び後続する全ての命令をキャンセルしてから、第2の例外発生による例外処理ルーチンの命令発行を開始する第3ステップと、を備えたことを特徴とする。
本発明によるプロセッサの例外発生を処理する命令制御方法の第3形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、第1の例外発生の検出により発行した例外処理ルーチンの命令をキャンセルした後に、第2の例外発生の検出により正しい方向となる例外処理ルーチンの命令発行を開始する第3ステップと、第2の例外発生が検出されて例外処理ルーチンの命令が発行された後に、前記古い分岐命令以前の命令が全て完了するのを待って、第1の例外発生を起こした命令及びこの命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、第2の例外発生による例外処理ルーチンの命令発行を再開する第4ステップと、を備えたことを特徴とする。
本発明によるプロセッサの例外発生を処理する命令制御方法の第4形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、新しい例外発生命令以前の命令が全て完了するのを待って例外発生命令及び後続する全ての命令をキャンセルしてから、第1の例外発生による例外処理ルーチンの命令発行を開始する第3ステップと、を備えたことを特徴とする。
本発明によるプロセッサの例外発生を処理する命令制御方法の第5形態は、第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、例外処理ルーチンの命令発行を抑止した状態で、第1例外発生が検出された古い方の例外発生命令以前の命令が全て完了するのを待って、古い例外発生命令及びこの命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、抑止を解除して第2の例外発生により正しい方向となる例外処理ルーチンの命令発行を開始する第3ステップと、第2の例外発生により例外処理ルーチンの命令が発行された後に、新しい例外発生命令以前の命令が全て完了するのを待って第2の例外発生の命令及び第1の例外発生による例外発生ルーチンで発行された命令をキャンセルしてから、第2の例外発生による例外処理ルーチンの命令発行を再開する第4ステップと、を備えたことを特徴とする。
以上説明してきたように本発明は、以上説明してきたように本発明によれば分岐予測に基づく投機的な命令実行の際に、分岐ミスが検出された場合に誤って発行してしまった投機的失敗命令のキャンセルを行って正しい方向の命令発行を再開する処理を高速且つ少ないハードウェア資源上で実現することができ、特にプロセッサの動作周波数が高周波化した場合の性能向上に大きく寄与することができる。
同様に命令の例外発生の際にも、例外発生なしとして発行してしまった投機的失敗命令のキャンセルと、例外処理ルーチンによる命令発行を同様に高速且つ少ないハードウェア量で実現することができ、この場合にも動作周波数が高周波化されたプロセッサにおける性能向上に大きく寄与することができる。
図4は、本発明の命令制御が適用されるプロセッサの機能構成のブロック図である。図4において、プロセッサ10には、分岐予測部12、命令発行部14、命令格納部16、命令実行部18、命令確定部20、レジスタ22、リネーミング処理部24が設けられる。命令格納部16には、リザベーションステーションと呼ばれる命令格納キュー26−1〜26−4が設けられている。また命令実行部18には、分岐処理部28、整数演算器30、浮動小数点演算器32、ロード/ストア処理部34などの機能処理部が設けられている。更にリネーミング処理部24には、リオーダーバッファ36とリネームマップ38が設けられている。
このようなプロセッサ10の各処理部は命令制御部40の制御のもとに動作する。本発明にあっては、命令制御部40には通常の命令制御に加え、本発明に固有な分岐予測命令制御部42と例外発生命令制御部44を備えている。この図4の実施形態におけるプロセッサ10は、いわゆる動的スケジューリング及び分岐予測を併用することにより命令の投機的実行を行う。まず命令発行部14は、命令キャツシュから例えば4命令をフェッチしてデコードする。分岐予測部12は分岐予測用の分岐履歴テーブルを備え、予測された分岐方向に投機的実行を行う。
命令発行部14からインオーダーで発行された命令は、命令格納部16に各命令とそのオペランドを、命令実行部18における機能処理部に対応して送る。同時に命令発行部14は、リオーダーバッファ36に命令を登録する。命令格納部16に送られた命令は、命令実行部18に設けている対応する処理部が利用可能になり次第、アウトオブオーダーで命令が実行され、命令に割り当てられたリオーダーバッファに結果が格納される。命令確定部20は、未完了命令を全てリオーダーバッファ36に保持しており、命令実行部18の分岐処理部28で分岐が成立するか否かの判定結果を受けると、それに基づいて命令確定部20は未完了命令の処理を決定する。即ち、分岐予測が正しかった場合には分岐命令に対する後続命令の結果は有効とされ、プログラムの順番に従ったインオーダでレジスタ22や図示しないメモリに書き込まれる。
分岐予測が外れて分岐ミスとなった場合には、分岐命令に対する後続命令の結果は全て無効とされ、命令格納部16及びリオーダーバッファ36からキャンセルされる。このように、分岐予測により投機的に実行された命令について分岐ミスを検知した際に、命令制御部40に設けている本発明による分岐予測命令制御部42は、分岐ミスによって誤った方向に発行してしまった命令のキャンセルと分岐ミスの検出に基づいて正しい方向への命令発行の処理を効率的に行う。
図5は、図4のプロセッサ10のリネーミング処理部24に設けたリネームマップ38の説明図である。本発明の分岐予測命令制御にあっては、命令に付ける識別子であるIDとして、少なくともID=0,1の2つを使用すればよい。
この命令に付ける2つのIDに対応し、リネームマップ38は命令のレジスタ番号50で指定される右側に示すエントリ0,1,2,3のそれぞれについて、リオーダーバッファドレスフィールド(ROB_AD)46に加え、ID=0に対応した有効フラグAV0を格納する有効フラグフィールド(AV0)48−0と、ID=1に対応した有効フラグAV1を格納する有効フラグフィールド(AV1)48−1を設けている。このリネームマップ38は、レジスタ番号50で指定されるエントリ、例えばレジスタ番号RG1の場合にはエントリ「0」のリオーダーバッファドレスフィールド46に、リネームしたいリオーダーバッファのアドレス例えば「00」を書き込む。このとき命令に付けられたIDがID=0であれば、有効フラグフィールド48−0の該当フィールドのフラグを「1」にする。
命令の完了によりリオーダーバッファを開放する場合や分岐ミスの検出により命令を無効にする場合には、例えば「1」としているID=0の有効フラグフィールド48−0を「0」とすればよい。
図6は、図5のリネームマップ38を対象とした命令に付されたIDに応じて有効フラグフィールドを「0」にキャンセルするためのキャンセル信号を発生するハードウェアとしての回路図である。図6(A)は、図5の本発明のリネームマップ38における2つのID=0,1に対応した回路である。これに対し図6(B)は、図2に示した従来の命令制御においてID=0〜7の8つを使用する場合のハードウェアの回路を表わしている。図6(A)の本発明で使用される回路にあっては、キャンセル信号を発生する際にはラッチ52に命令のIDフィールドに設けた1ビットのIDデータがセットされ、ID=0であればインバータ54の出力が1となり、アンドゲート56−0に対するID=0を付した命令の完了あるいは無効による入力のタイミングで出力1を生じ、これがオアゲート58からキャンセル信号として出力される。
またラッチ52に命令のIDフィールドのID=1が保持された場合には、バッファ55の出力が1となり、アンドゲート56−1に対するID=1を付した命令の完了あるいは無効化に伴う信号入力を受けたタイミングで、オアゲート58を介してキャンセル信号を出力する。これに対し図6(B)の従来の命令制御で使用する回路にあっては、8つのID=0〜7に対応し、ラッチ60からの出力ラインは3ビットラインとなり、またラッチ60に保持された命令のIDフィールドの3ビットの情報から8種類のIDに分けるためのデコーダ62が設けられ、デコーダ62からの出力は8本の信号線となる。
更にデコーダ62に続いて、ID=0〜7に8つに対応してアンドゲート64−0〜64−7が設けられ、これらの出力をオアゲート66でまとめてキャンセル信号を取り出している。この図6(A)における本発明の2つのIDを用いた場合と図6(B)の従来の8つのIDを用いた場合と対比して明らかなように、命令に付けるIDの数が増加するほどキャンセル信号を出力するための回路規模が大きくなることが分かる。
これに対し本発明にあっては、図6(A)のように、基本的には2つのIDを使用するだけでよいことから、命令の完了あるいは分岐ミスに伴う命令の無効で必要とするキャンセル信号のハードウェア量を十分に小さくできることが分かる。
図7は、図4のプロセッサ10に設けている分岐予測命令制御部42の第1実施形態となる第1モード分岐予測命令制御部42−1の機能構成のブロック図である。この第1モード分岐予測命令制御部42−1は、第1命令制御部68、第2命令制御部70及び第3命令制御部72−1を備える。
図8は、図7の第1モード分岐予測命令制御部42−1による命令制御動作を表わしており、これを参照して図7の制御動作を説明すると次のようになる。まず第1命令制御部68は、図8(A)のように、第1識別子としてのID=0を付けて分岐命令B4,B8を含む命令1〜命令11の発行しており、分岐命令列B4については分岐予測によって判断された方向に命令5〜命令11を発行して投機的に実行している。このような分岐予測に基づく命令の投機的な実行により、分岐命令B4について分岐ミス80が検出されると、図7の第2命令制御部70は、この分岐ミス80を検出した時点で、図8(B)のように、誤って発行してしまった命令5〜命令11の後ろに続けて、正しい方向の命令50,51を第2識別子となる別のID=1を付けて発行する。
続いて図7の第3命令制御部72−1が、図8(C)のように、分岐以前の命令1〜命令B4が全て完了したことを認識した後に、分岐命令B4の分岐予測によって誤って発行してしまった命令5〜命令11に対しキャンセル処理84を実行し、その後に正しい方向の命令50,51に続く命令発行を開始する。この誤って発行してしまった命令5〜命令11のキャンセル処理84の際には、キャンセル対象となった命令に付けているID=0及び命令の資源をキャンセルする。具体的には、図6(A)の回路によりキャンセルした命令のIDフィールドをラッチ52にセットしてキャンセル信号を発生させ、このキャンセル信号により図4のプロセッサ10の命令格納部16に保持している誤って発行してしまった命令5〜命令11をキャンセルすると共に、図5のリネームマップ38におけるID=0に対応した有効フラグフィールド48−0の全てのエントリを「0」とすることで、命令資源として使用していたリオーダーバッファ36を開放する。
このように本発明の第1モード分岐予測命令制御部による制御動作にあっては、分岐ミスが検出された後に発行する正しい方向の命令に新たなIDを付していることから、分岐ミスに対する命令キャンセルと正しい方向の命令発行について使用するIDの種類を2つとするだけでよく、IDの使用に伴うハードウェアの量を必要最小限にすることができる。
図9は、図8の命令制御動作に対応するタイミングチャートであり、縦方向に発行された命令を並べ、横方向に経過時間を表わしている。図9にあっては、分岐命令B4について時刻t1で分岐ミス80が検出されると、分岐命令B4の発行済みで実行が終わった後の時刻t2のタイミングで、図8(B)のようにID=1を付して、正しい方向の命令50,51の発行を開始している。その後、時刻t3で分岐命令B4までの命令が全て完了した後の時刻t3のタイミングで、誤って発行した命令5〜命令11のキャンセルを行っている。
図10は、図7の第1モード分岐予測命令制御部42−1による命令制御のフローチャートである。まずステップS1で同一のIDを付して命令を発行しており、ステップS2で発行が済んで実行が終わった分岐命令について分岐ミスが発生すると、ステップS3で別のIDを付して正しい方向の命令を発行する。続いてステップS4で分岐ミス以前の命令が全て完了したか否か監視しており、全て完了すると、ステップS5で分岐ミスにより誤って発行してしまった投機失敗命令及びリオーダーバッファを含むその資源をキャンセルした後、ステップS6で正しい方向の命令発行を再開する。
図11は、図4のプロセッサ10に設けた分岐予測命令制御部の第2実施形態となる第2モード分岐予測命令制御部42−2のブロック図であり、第1命令制御部68、第2命令制御部70及び第3命令制御部72−2を備える。このうち第1命令制御部68及び第2命令制御部70は図7の第1モード分岐予測命令制御部42−1と同じになるが、第3命令制御部72−2にあっては、分岐ミスにより正しい方向の命令を発行している間に、それより古い分岐命令で分岐ミスが発生した場合の命令制御を処理することを特徴とする。
図12は、図11の第2モード分岐予測命令制御部42−2による制御動作の説明図である。まず第1命令制御部68は、図12(A)のように、分岐命令B2,B4,B8を含む命令にID=0を付して発行しており、分岐命令B2,B4,B8については、それぞれ分岐予測により投機的に命令を実行させている。この状態でアウトオブオーダーによる分岐命令B4の実行に伴って分岐ミス80が検出されたとする。
この分岐ミス80の検出に対し第2命令制御部70は、図12(B)のように、誤って発行してしまった命令5〜命令11の後ろに続けて正しい方向の命令50,51を、別のID=1を付けて発行する。この第1命令制御部68及び第2命令制御部70による制御動作は、図8(A)(B)に既に説明した場合と同じである。次に図12(C)のように、分岐ミス80が検出された分岐命令B4より古い分岐命令B2のアウトオブオーダーによる実行に伴って分岐ミス82が検知されたとすると、第3命令制御部72−2は分岐ミス82が検出された後に、図12(D)のように古い分岐命令B2以前の命令1及びB2が全て完了するのを待って、後続する全ての命令3〜命令51をキャンセルするキャンセル処理86を行う。
このキャンセル処理86にあっては、ID=0及び資源もキャンセルする。そして図12(E)のように、誤って発行してしまった命令のキャンセル処理86が済んでから、分岐ミス82に対し正しい方向となる命令60,61,62,...の発行を再開する。このような第2モード分岐予測命令制御部42−2の制御動作にあっては、図2の従来例のように分岐命令ごとにIDを付ける必要がなく、分岐ミスを検出したときに、正しい方向に発生する命令について別のIDを付けるだけでよいことから、IDは2つで済み、図6(A)のようにキャンセル信号を発生するハードウェア量を必要最小限にすることができる。
図13は、図12に対応した命令制御のタイミングチャートである。図13において、時刻t1で分岐命令B4の実行に伴って分岐ミス80が検出されると、時刻t2から正しい方向の命令50,51を別のID=1を付けて発行する。その後、時刻t3で分岐命令B4より古い分岐命令B2の実行に伴う分岐ミス82が検出されると、その後の時刻t4における分岐命令B2の完了後のタイミングで、誤って発行した命令3〜命令51の全てをキャンセルし、その後の時刻t5で正しい方向の命令60,61,...の発行を開始している。
図14は、図11の第2モード分岐予測命令制御部42−2による命令制御のフローチャートである。まずステップS1で同一IDを付して命令を発行し、ステップS2で分岐予測を行っている分岐命令の実行に伴って分岐ミスが発生すると、ステップS3で別のIDを付して正しい方向の命令を発行する。その後、ステップS4で最初の分岐ミスを起こした分岐命令より古い分岐命令について分岐ミスが発生すると、ステップS5で古い分岐ミスの分岐命令以前が全て完了したか否かチェックする。
古い分岐ミスの分岐命令以前の命令が全て完了すると、ステップS6で分岐ミスによって誤って発行してしまった全ての投機失敗命令及びリオーダーバッファを含むその資源をキャンセルした後、ステップS7で正しい方向の命令発行を開始する。
図15は、図4の分岐予測命令制御部42における第3モード分岐予測命令制御部42−3のブロック図であり、この実施形態にあっては、第1命令制御部68、第2命令制御部70、第3命令制御部72−3及び第4命令制御部74−3を備えている。このうち第1命令制御部68及び第2命令制御部70は、図7の第1モード分岐予測命令制御部42−1と同じである。また第3命令制御部72−3及び第4命令制御部74−3は、図11の第2モード分岐予測命令制御部42−2の第3命令制御部72−2と同様、最初の分岐ミスを検出した後に古い分岐命令について分岐ミスが検出された場合の命令制御を行うことを特徴とする。
図16は、図15の第3モード分岐予測命令制御部42−3の制御動作の説明図である。図16(A)(B)及び(C)は、図12の第2モード分岐予測命令制御部42−2の場合と同じになる。即ち図16(A)で分岐命令B4の実行に伴い分岐ミス80が検出されると、図16(B)のように、誤って発行してしまった命令5〜命令11の後ろに続いて正しい方向の命令50,51を別のID=1を付けて発行する。
その後、図16(C)のように、分岐ミス80を検知した分岐命令B4より古い分岐命令B2の実行に伴って分岐ミス82が検出されたとすると、図15の第3命令制御部72−3により、図16(D)のように最初の分岐ミス80の検出により正しい方向と判断して発行した命令50,51をキャンセルするキャンセル処理88を行った後に、図16(E)のように分岐ミス82の検出により判断した正しい方向の命令60,61の発行を開始する。続いて、図15の第4命令制御部74−3によって図16(E)のように古い分岐命令列B2以前の命令列1,B2が全て完了するのを待って、分岐命令B2の分岐予測により誤って発行してしまった命令3〜命令11をキャンセルするキャンセル処理90を行ってから、正しい方向に発行した命令60,61に続く命令発行を再開する。
もちろんキャンセル処理90にあっては、命令のキャンセルと同時にID=0及び資産をキャンセルする。この図16における第3モード分岐予測命令制御部42−3による制御動作を図12の第2モード分岐予測命令制御部42−2による制御動作と対比してみると、最初の分岐ミス80に続いて古い分岐命令の分岐ミス82が検出されるという同じ状況であるが、図16の場合には、図1616(D)のように2回目の分岐ミス82が検出された際に、最初に検知された分岐ミス80により正しい方向に発行した命令50,51のキャンセル処理88を行って、その後に図16(E)のように分岐ミス82に対し正しい方向の命令60,61を発行しており、図12に比べると2回目の分岐ミス82による正しい方向の命令発行のタイミングが速くなっており、その分、命令処理の性能を高めることができる。
図17は図16の命令制御に対応したタイミングチャートである。図17にあっては、時刻t1で分岐命令B4の実行に伴って分岐ミス80が検出されると、その後の時刻t2で正しい方向の命令50,51を別のID=1を付して発行する。続いて時刻t3で分岐命令B4より古い分岐命令B2の実行に伴い分岐ミス82が検出されると、その後の時刻t4で分岐ミス80により正しい方向に発行した命令50,51をキャンセルした後に、時刻t5で分岐ミス82に対する正しい方向の命令60,61の発行を開始する。
この図1717のタイミングチャートを図13の同じく2つの分岐ミス80,82が検知された場合について対比して見ると、最終的に発行する正しい方向の命令60,61の発行タイミングが図17の方が速くなっており、その分、命令の処理性能が高くなっている。
図18は、図15の第3モード分岐予測命令制御部42−3の命令制御のフローチャートである。図18において、まずステップS1で同−IDを付して命令を発行し、ステップS2で発行した命令の中の分岐命令の実行に伴い分岐ミスの発生が判別されると、ステップS3で別のIDを付して正しい方向の命令を発行する。続いてステップS4で最初の分岐ミスを起こした分岐命令より古い分岐命令の実行で分岐ミスが発生するか否かチェックしており、古い分岐ミスが発生すると、ステップS5で最初の分岐ミスに対し正しい方向に発行した投機的失敗命令及びリオーダーバッファを含む資源をキャンセルする。続いてステップS6で、古い分岐命令について発生した分岐ミスに対する正しい方向の命令をステップS3と同じIDを付して発行する。
続いてステップS7で古い分岐ミス以前の命令が全て完了したか否か判別しており、全て完了すると、ステップS8で分岐ミスによって誤って発行してしまった投機的失敗命令及びその資源をキャンセルすることになる。
図19は、図4のプロセッサ10に設けている分岐予測命令制御部42の第4実施形態となる第4モード分岐予測命令制御部42−4のブロック図である。この実施形態にあっては、第1命令制御部68、第2命令制御部70及び第3命令制御部72−4を備えており、第1命令制御部68及び第2命令制御部70は図7の第1実施形態と同じになる。これに対し第3命令制御部72−4は、分岐予測による投機的命令実行で最初に分岐ミスが検出された後、分岐ミスに対し正しい方向に発行した命令列の中の新しい分岐命令について、2回目の分岐ミスが検出された場合の命令制御を行うことを特徴とする。
図20は、図19の第4モード分岐予測命令制御部42−4の制御動作の説明図である。図20(A)は第1命令制御部68による分岐命令B2,B4,B8を含む命令を発行して、分岐命令については分岐予測により投機的に命令を実行しており、分岐命令B4のアウトオーダーによる実行に伴い分岐ミス80が検出されると、図20(B)のように第2命令制御部70によって誤って発行してしまった命令5〜命令11の後ろに続いて、正しい方向の命令50,51を別のID=1を付けて発行する。次に図20(C)のように、ID=1をつけて正しい方向に発行した命令50〜53に含まれる分岐命令B52の実行に伴って分岐ミス92が検出されると、第3命令制御部72−4は図20(D)のように分岐ミス92が検出された分岐命令B52以前の命令が全て完了するのを待って、後続する全ての命令52,53をキャンセルするキャンセル処理94を行い、その後に図20(E)のように分岐ミス90による正しい方向の命令60,61,62・・・の発行を開始する。
図21は、図20の命令制御に対応したタイミングチャートである。図21において、時刻t1で分岐命令B4の実行に伴い、分岐ミス80が検出されると、時刻t2でID=1をつけて正しい方向の命令50〜53の発行を開始する。その後、時刻t3で正しい方向に発行した命令の中の分岐命令52Bの発行に伴い分岐ミス90が検出されると、時刻t4で分岐ミス92が検出された分岐命令B52以前の命令が全て完了するのを待ち、完了後の時刻t5で分岐ミス92により正しい方向となる命令60,61,62の発行を開始する。
図22は、図19の第4モード分岐予測命令制御部42−4の命令制御のフローチャートである。図22において、まずステップS1で同一IDを付して命令を発行し、発行した命令の中の分岐命令の実行に伴い、ステップS2で分岐ミス発生が検知されると、ステップS3で別のIDを付して正しい方向の命令を誤って発行した命令の後ろに続いて発行する。続いてステップS4でステップS2で検出した分岐ミスに対し、正しい方向に発行している命令内の分岐命令の実行に伴い、分岐ミスの発生が判別されると、ステップS5で新しい分岐ミスの分岐命令以前の命令が全て完了したか否かチェックしている。
命令完了を判別するとステップS6で2回目の分岐ミスにより誤って発行してしまったことになる全ての投機失敗命令及び資源をキャンセルした後、ステップS7で正しい方向の命令発行を開始する。
図23は、図4のプロセッサ10に設けている分岐命令予測制御部42の第5実施形態となる第5モード分岐予測命令制御部42−5のブロック図である。この実施形態にあっては第1命令制御部68、第2命令制御部70、第3命令制御部72−5及び第4命令制御部74−5を備えており、第1命令制御部68及び第2命令制御部70は図7の第1実施形態と同じである。一方、第3命令制御部72−5及び第4命令制御部74−5は、図1515の第3モード分岐予測命令制御部42−3の場合と同様、最初に分岐予測を検出した後、正しい方向に発行した命令内で2回目の分岐ミスが検出された場合の命令制御を行うことを特徴とする。
図24は、図23の第5モード分岐予測命令制御部42−5の制御動作である。図24(A)は第1命令制御部68で発行した分岐命令B2,B4,B8を含む命令において、分岐命令B4の実行に伴い分岐ミス80が検出された場合であり、分岐ミス80が検出されると図24(B)のように誤って発行してしまった命令5〜命令11に続いて、正しい方向の命令50,51を別のID=1をつけて発行する。次に図24(C)のように正しい方向に発行した命令50〜53の中の分岐命令B52の実行に伴い分岐ミス92が検出されると、図23の第3命令制御部72−5が分岐ミス92の検出に基づき、分岐ミス92に対する正しい方向の命令(命令60,61,62・・・)の発行を抑止した状態で、分岐ミス80が検出された古い方の分岐命令B4以前の命令1〜B4が全て完了するのを待ってをキャンセルするキャンセル処理96を行ってから、図24(E)のように分岐ミス92による正しい方向の命令60,61,62・・・の発行を開始する。
続いて、図23の第4命令制御部74−5が図24(F)のように新しい分岐命令B52以前の命令が全て完了するのを待って、分岐ミス92の検出により発行された命令52,53をキャンセルするキャンセル処理97を行ってから、分岐ミス92による正しい方向の命令60,61,62に続く命令発行を再開する。この図24の第5実施形態における命令制御と図20の第4実施形態における同じ分岐ミス80,92が検出された際の命令制御を対比してみると、図24の第5実施形態にあっては、図24(D)で古い分岐ミス80が検出された分岐命令B4以前の命令を全て完了した時点で分岐命令B4につき分岐予測で誤って発行してしまった命令5〜命令11を削除するキャンセル処理96を行った後に、図24(E)のように分岐ミス92に対する正しい方向の命令60,61,62を発行しており、正しい方向の命令60,61,62の発行タイミングが図20に比べ早まっており、従って、図24の第5実施形態の方が命令の処理性能を向上することができる。
尚、図24の命令制御にあっては、2つのIDを使用する場合を例にとっているが、3つのIDを使用可能とした場合には、IDが枯渇するまで待ち合わせをせずに命令発行を行い、IDが枯渇した段階でID開放を待つようにしても良い。即ち、図24(D)で分岐ミス92による正しい方向の命令発行を抑止せず、段階でID=2を付けて正しい方向の命令60,61の発行を開始する。
図25は、図24の命令制御に対応したタイミングチャートである。図25において、時刻t1で分岐命令B4のアウトオブオーダーによる実行に伴い分岐ミス80が検出されると、時刻t2で正しい方向の命令50〜53の発行を別のID=1をつけて開始する。その後、正しい方向に発行した命令50〜53の中の分岐命令B52の実行に伴い分岐ミス92が検出されると、最初の分岐ミス80が検出された分岐命令B4以前の命令が全てが完了した後の時刻t4で、分岐命令B4の分岐予測で誤って発行してしまった命令5〜命令11をキャンセルする。次に時刻t5で分岐ミス92に対する正しい方向の命令60,61,62の発行を既に解放されたID=0を付けて開始する。その後、時刻t6で分岐ミス92に対応した分岐命令B52以前の命令が全て完了すると、分岐命令B52の分岐予測で誤って発行してしまった命令52,53をキャンセルする。
この図25の第5実施形態のタイミングチャートを図21の第4実施形態のタイミングチャートと参照してみると、分岐ミス92に対する正しい方向の命令60,61,62の発行タイミングが図25の第5実施形態の方が早くなっており、その分、命令の処理性能を向上することができる。
図26は、図23の第5分岐予測命令制御部42−5の命令制御のフローチャートである。図26において、ステップS1で同一IDを付して命令を発行し、ステップS2で分岐命令の実行に伴い分岐ミスの発生が判別されると、ステップS3で別のIDを付して正しい方向の命令を誤って発行してしまった命令の後ろに続いて発行する。このステップS1〜S3の処理が図23の第1命令制御部68及び第2命令制御部70の処理である。次に第3命令制御部72−5によりステップS4で正しい方向に発行している命令内の分岐命令の実行に伴い、2回目の分岐ミスの発生が判別されると、ステップS5に進み、正しい方向の命令の発行を抑止した状態で、古い方の分岐命令以前の命令が全て完了するのをステップS5で判別すると、ステップS6に進んで古い分岐命令によって誤って発行してしまった命令をキャンセルした後に抑止を解除して新しい分岐ミスに対する正しい方向の命令発行を開始する。
続いて第4命令制御部74−5により新しい分岐ミスの以前の命令が完了したか否かステップS7で判別し、命令の完了を判別するとステップS8で新しい分岐ミスの検出前に誤って発行されてしまった命令をステップS8でキャンセルしてから、ステップS9で正しい方向の命令発行を開始する。
図27は、図4のプロセッサ10の分岐予測命令制御部42のフローチャートであり、図7〜図25で説明した第1モード〜第5モード分岐予測命令制御を全て一体化した分岐予測命令制御のフローチャートである。図27において、ステップS1〜S3は第1命令制御部68及び第2命令制御部70の処理であり、ステップS1で同一IDを付した命令を発行中にステップS2で分岐命令の実行に伴い分岐ミスの発生が判別されると、ステップS3で誤って発行してしまった命令の後ろに別のIDを付して正しい方向の命令を発行する。続いてステップS4で分岐ミス以前の命令全て完了したか否かをチェックしており、分岐ミス以前の命令が全て完了するとステップS7に進み第1モードの分岐予測命令制御を実行する。このステップS7の第1モード分岐予測命令制御の処理内容は図30のステップS5,S6の処理となる。
ステップS4で分岐ミス以前の命令が全て完了していない場合には、ステップS5で2回目の分岐ミスの発生をチェックしており、2回目の分岐ミスの発生を判別すると、ステップS6で2回目の分岐ミスが最初の分岐ミスより古い分岐ミスか否か判別する。古い分岐ミスであった場合にはステップS8に進み第2モードあるいは第3モードの分岐予測命令制御を行う。ステップS8で行う第2モードの分岐予測命令制御は図33のステップS5〜S7の処理である。またステップS8の第3モードの分岐予測命令制御は図36のステップS5〜S8の処理である。一方、ステップS6で最初の分岐ミスより古い分岐ミスで無かった場合には、ステップS2の分岐ミスにより正しい方向に発行している命令の中の分岐命令の実行に伴う新しい分岐ミスであることから、ステップS9に進み第4モードあるいは第5モードの分岐予測命令制御を行う。このステップS9の第4モードの分岐予測命令制御は図39のステップS5〜S7の処理となる。また図27のステップS9の第5モードの分岐予測命令制御は図26のステップS5〜S9の処理となる。
このように本発明は第1モード〜第5モードのいずれかのモードの分岐予測命令制御を行っても良いし、第1モードに対し、第2モードまたは第3モードのいずれか一方と、第4モードまたは第5モードのいずれか一方を加えた組み合わせの制御としても良い。
次に図4のプロセッサ10に設けている例外発生命令制御部44について説明する。例外発生命令制御部44の実施形態としては、図28の第1モード例外発生命令制御部44−1、図31の第2モード例外発生制御部44−2、図34の第3モード例外発生命令制御部44−3、図37の第4モード例外発生命令制御部44−4及び図40の第5モード例外発生命令制御部44−5がある。これら第1モード、第2モード、第3モード、第4モード及び第5モードの各例外発生命令制御部44−1〜44−5は、既に説明した分岐予測命令制御部42の具体的な実施形態である第1モード、第2モード、第3モード、第4モード及び第5モード分岐予測命令制御部42−1〜42−5のそれぞれの処理における分岐ミスの検出を例外発生に置き換えたものに相当し、分岐ミスの場合には分岐ミスが検出された分岐命令に続く投機失敗命令をキャンセルしているが、例外発生の場合には例外発生命令自身を含めて投機失敗命令をキャンセルする点が相違する。
そこで例外発生について簡単に説明すると次のようになる。図28の第1モード例外発生命令制御部44−1は、第1命令制御部98、第2命令制御部100及び第3命令制御部102−1を持つ。
図29は、図28の第1モード例外発生制御部44−1の命令制御動作であり、図29(A)のID=0を付して発行していた命令1〜10について、命令4で例外105が発生すると、例外発生なしとして発行してしまった命令5〜命令11の後ろに続けて別のID=1を付して例外処理ルーチンの命令50,51を発行する。次に図29(C)のように、例外発生命令4より前の1〜3の全てが完了すると、投機失敗命令5〜命令11をキャンセルするキャンセル処理108を行った後、例外処理ルーチンの命令発行を再開する。
図30は、第1モード例外発生命令制御のフローチャートである。ステップS1で同一のIDを付して命令を発行しており、ステップS2である命令の実行により例外発生が判別されると、ステップS3で投機的失敗命令の後ろに続いて別のIDを付して例外処理ルーチンの命令を発行する。次にステップS4で例外発生より前の命令が全て完了したことを判別すると、ステップS5で例外発生無しとして発行してしまった投機失敗命令及びその資源をキャンセルした後、ステップS6で例外処理ルーチンの命令発行を再開する。
図31は、第2モード例外発生命令制御部44−2のブロック図であり、第1命令制御部98、第2命令制御部100及び第3命令制御部102−2を備える。
図32は、第2モード例外発生命令制御部44−2の制御動作である。まず図32(A)でID=0を付して発行した命令1〜命令11の中の命令4の実行により、例外106が発生したとすると、図32(B)のように例外発生なしとして発行していた投機的失敗命令5〜命令11の後ろに続いて別のID=1を付して例外処理ルーチンの命令50,51を発行する。次に図32(C)で例外106が発生した命令4より古い命令2の実行に伴い例外110が発生したとすると、図32(D)のように古い命令2の例外110より前の命令1が完了した時点で、例外110が発生した命令2を含む後続する命令2〜命令51を全てキャンセルするキャンセル処理112を行った後、図32(E)のように例外処理ルーチンの命令60,61,62・・・の発行を開始する。
図33は、第2モード例外発生命令制御のフローチャートである。図33において、ステップS1で同一のIDを付して命令を発行し、ステップS2である命令の実行に伴い例外が発生がすると、ステップS3で例外なしとして誤って発行してしまった命令の後ろに続いて、例外処理ルーチンの命令を別のIDを付して発行する。次にステップS4で最初の例外発生より古い命令について例外が発生したか否かチェックしており、古い命令について例外が発生すると、ステップS5古い例外発生の命令より前の命令が全て完了したか否かを判別し、完了したならばステップS6で例外発生となった古い命令を含む全ての投機失敗命令及びその資源をキャンセルした後、ステップS7で例外処理ルーチンの命令発行を開始する。
図34は、第3モード例外発生命令制御部44−3のブロック図であり、第1命令制御部98、第2命令制御部100、第3命令制御部102−3及び第4命令制御部104−3備える。
図35は、図34の第3モード例外発生命令制御部44−3の命令制御の説明図である。図35(A)のようにID=0を付して発行した命令1〜命令11の中の命令4の実行に伴い例外106が発生すると、図35(B)のように命令4に対し例外発生なしとして発行した投機的失敗命令5〜命令11の後ろに続いて例外処理ルーチンの命令50,51を別のID=1を付して発行する。続いて図35(C)のように例外106が発生した命令4より古い命令2の実行に伴い、例外110が発生したとすると、図35(D)のように例外106の発生に対する命令処理ルーチンで発行した命令50,51をキャンセルするキャンセル処理114を行った後、図35(E)で例外110の例外処理ルーチンの命令60,61を発行する。そして図35(F)で古い例外110の命令2より前の命令1が完了した後に、例外110を発生した命令2を含む投機的失敗命令3〜命令11をキャンセルするキャンセル処理116を行った後、例外110の例外処理ルーチンによる命令60,61に続く命令発行を再開する。
図36は、第3モード例外発生命令制御のフローチャートである。図36において、ステップS1で同一のIDを付して命令を発行し、この命令の中でステップS2で例外が発生がすると、ステップS3で例外発生命令に続く例外発生なしとして誤って発行してしまった投機的失敗命令の後ろにIDを付して例外処理ルーチンの命令を発行する。次にステップS4で最初の例外発生より古い命令で例外が発生したか否か判別しており、古い例外が発生あると、ステップS5で最初の例外発生に対する例外処理ルーチンで発行した投機失敗命令及びその資源をキャンセルした後、ステップS6で古い例外発生に対する例外処理ルーチンの命令をステップS3と同じIDを付して発行する。続いてステップS7で古い例外発生より前の命令全てが完了したことを判別すると、ステップS8で古い例外発生の命令を含め、例外無しとして発行してしまった投機的失敗命令及び資源をキャンセルした後、例外処理ルーチンの命令発行を再開する。
図37は第4モード例外発生命令制御部44−4のブロック図であり、第1命令制御部98、第2命令制御部100及び第3命令制御部102−4を備える。
図38は、第4モード例外発生命令制御部44−4の命令制御の説明図である。図38において、まず図38(A)のように命令1〜命令11を発行した後に、命令4の実行に伴い例外106が発生すると、図38(B)のように例外発生なしとして発行してしまった投機的失敗命令5〜命令11の後ろに例外106の例外処理ルーチンの命令50,51を別のID=1を付して発行する。続いて図38(C)のように例外106に対する例外処理ルーチンで発行した命令50,51,52,53の内、命令51の実行に伴い、2回目の例外116が発生したとすると、図38(D)のように例外116が発生した命令50及び命令51を例外発生無しとして発行してしまった投機的失敗命令52,53をキャンセルするキャンセル処理118を行った後、図38(E)のように例外116による例外処理ルーチンの命令60,61,62・・・の発行を再開する。
図39は、第4モード例外発生命令制御のフローチャートである。図39において、ステップS1で同一のIDを付して命令を発行し、ステップS2である命令の実行に伴い例外が発生が判別されると、ステップS3で例外が発生した命令について例外発生なしとして誤って発行してしまった投機的失敗命令の後ろに別のIDを付して例外処理ルーチンの命令を発行する。
続いてステップS4で例外処理ルーチンにより発行している命令の中のある命令の実行に伴い、2回目の命令が発生することが判別されると、ステップS5で新しい例外発生より前の命令が全て完了したことを判別した場合、ステップS6に進み新しい例外発生となった命令を含むこれに後続する全ての投機的失敗命令及びその資源をキャンセルした後、ステップS7で新しい例外発生に伴う例外処理ルーチンの命令発行を再開する。
図40は、第5モード例外発生命令制御部44−5のブロック図である。第1命令制御部98、第2命令制御部100、第3命令制御部102−5及び第4命令制御部104−5を備える。
図41は、第5モード例外発生命令制御部44−5の命令制御の説明図である。図41(A)のようにID=0を付して発行した命令1〜命令11の中の命令4の実行に伴い例外106が発生すると、図41(B)のように、例外106の発生により命令4に続いて例外発生なとして発行してしまった投機的失敗命令5〜命令11の後ろに続いて別のID=1を付して例外処理ルーチンの命令50,51を発行する。続いて図41(C)のように例外処理ルーチンで発行している命令50〜54の中の命令52の実行に伴い、2回目の例外116が発生したとすると、図41(D)のように古い方の例外106が発生した命令4より前の命令1〜3の全ての実行完了を待って例外発生命令4に続く投機的失敗命令5〜11をキャンセルするキャンセル処理120を行う。続いて図41(E)のように2回目の新しい例外116によって投機的失敗命令となった命令53,54の後ろに続いて、キャンセル処理120で解放されたID=0を付して例外116の例外処理ルーチンの命令60,61,62・・・の発行を開始する。
最終的に図41(F)のように新しい例外116が発生した命令52より前の全ての命令50,51の完了を待って、例外116が発生した命令52及びこれに続く投機的失敗命令53,54をキャンセルするキャンセル処理122を行った後、例外処理ルーチンとなる命令60,61,62・・・に続く命令発行を再開する。尚、図41の命令制御にあっては、2つのIDを使用する場合を例にとっているが、3つのIDを使用可能とした場合には、IDが枯渇するまで待ち合わせをせずに命令発行を行い、IDが枯渇した段階でID開放を待つようにしても良い。即ち、図41(D)で例外116の発生による正しい方向の命令発行を抑止せず、この段階でID=2を付けて正しい方向の命令60,61,62の発行を開始する。
図42は、第5モード例外発生命令制御のフローチャートである。図42において、ステップS1で同一のIDを付して命令を発行し、ステップS2でその中である命令の実行に伴い例外が発生すると、ステップS3で例外命令に続く投機的失敗命令の後ろに続いて別のIDを付して例外処理ルーチンの命令を発行する。次にステップS4で例外処理ルーチンにより発行している命令内である命令の実行に伴い例外が発生すると、ステップS5で例外処理ルーチンによる命令発行を抑止した状態で古い例外発生となった命令より前の命令が全て完了したか否か判別する。この命令完了を判別すると、ステップS6で例外発生命令及びこれに続く投機的失敗命令及びその資源をキャンセルし、新しい例外に発生に伴う例外処理ルーチンの命令発行を開始する。続いてステップS7で新しい例外発生となった命令より前の命令が全て完了したかをチェックしており、命令完了を判別するとステップS8で新しい例外発生を起こした命令を含むこれに続く投機失敗命令及びその資源をキャンセルした後、ステップS9で新しい例外発生に伴う例外処理ルーチンの命令発行を再開する。
図43は、図4のプロセッサ10に設けている例外発生命令制御部44について、すでに説明した第1モード、第2モード、第3モード、第4モード及び第5モードの例外発生命令制御を全て一体化した例外発生命令制御のフローチャートである。この図43のフローチャートにあっては、ステップS1で同一のIDを付して命令を発行し、ステップS2である命令の実行により例外発生を判別すると、ステップS3で別のIDを付して例外処理ルーチンの命令を投機的失敗命令の後ろに続いて発行する。続いてステップS4で例外発生より前の命令が全て完了したか否かチェックし、完了を判別するとステップS7で第1モードの例外発生命令制御を実行する。
この第1モードの例外発生命令制御は図30のステップS5,S6の処理となる。ステップS4で例外発生より前の命令が全て完了していない場合には、ステップS5で2回目の例外発生をチェックしている。2回目の例外発生があるとステップS6に進み、最初の例外発生より古い例外発生か否かチェックする。古い例外発生であればステップS8に進み、第2または第3モードの例外発生命令制御を行う。この場合の第2モードの例外発生命令制御は図33のステップS5〜S7の処理となる。
また第3モードの例外発生命令制御は図36のステップS5〜S8の処理となる。更にステップS6で最初の例外発生より新しい例外発生であった場合にはステップS9に進み、第4または第5モードの例外発生命令制御を行う。この第4モードの例外発生命令制御は図39のステップS5〜S7の処理となる。また第5モードの例外発生命令制御は図42におけるステップS5〜S9の処理となる。
尚、上記の実施形態は投機的に実行される命令として分岐命令及び命令実行に伴う例外発生を例にとるものであったが、これ以外の適宜の投機的命令について本発明を適用することができる。
また本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に本発明は上記の実施形態に示した数値による限定は受けない。
図1は従来のプロセッサにおける分岐ミスに対する命令制御動作の説明図;
図2は分岐命令毎に異なるIDを付ける従来のプロセッサにおける分岐ミスに対する命令制御動作の説明図;
図3は従来のプロセッサで使用するリネームマップの説明図;
図4は本発明が適用されるプロセッサの機能構成のブロック図;
図5は本発明のプロセッサで使用するリネームマップの説明図;
図6は命令に付けるIDの数によるハードウェア規模を本発明と従来例につき対比した回路図;
図7は本発明による第1モード分岐予測命令制御部のブロック図;
図8は図7の実施形態による命令制御動作の説明図;
図9は図7の実施形態による命令制御動作のタイミングチャート;
図10は図7の実施形態による命令制御のフローチャート;
図11は本発明による第2モード分岐予測命令制御部のブロック図;
図12は図11の実施形態による命令制御動作の説明図;
図13は図11の実施形態による命令制御動作のタイミングチャート;
図14は図11の実施形態による命令制御のフローチャート;
図15は本発明による第3モード分岐予測命令制御部のブロック図;
図16は図15の実施形態による命令制御動作の説明図;
図17は図15の実施形態による命令制御動作のタイミングチャート;
図18は図15の実施形態による命令制御のフローチャート;
図19は本発明による第4モード分岐予測命令制御部のブロック図;
図20は図19の実施形態による命令制御動作の説明図;
図21は図19の実施形態による命令制御動作のタイミングチャート;
図22は図19の実施形態による命令制御のフローチャート;
図23は本発明による第4モード分岐予測命令制御部のブロック図;
図24は図23の実施形態による命令制御動作の説明図;
図25は図23の実施形態による命令制御動作のタイミングチャート;
図26は図24の実施形態による命令制御のフローチャート;
図27は本発明による第1モードから第5モードの分岐予測命令制御を一体化した命令制御のフローチャート;
図28は本発明による第1モード例外発生命令制御部のブロック図;
図29は図27の実施形態による命令制御動作の説明図;
図30は図27の実施形態による命令制御のフローチャート;
図31は本発明による第2モード例外発生命令制御部のブロック図;
図32は図31の実施形態による命令制御動作の説明図;
図33は図31の実施形態による命令制御のフローチャート;
図34は本発明による第3モード例外発生命令制御部のブロック図;
図35は図34の実施形態による命令制御動作の説明図;
図36は図34の実施形態による命令制御のフローチャート;
図37は本発明による第4モード例外発生命令制御部のブロック図;
図38は図37の実施形態による命令制御動作の説明図;
図39は図37の実施形態による命令制御のフローチャート;
図40は本発明による第5モード例外発生命令制御部のブロック図;
図41は図40の実施形態による命令制御動作の説明図;
図42は図41の実施形態による命令制御のフローチャート;
図43は本発明による第1モードから第5モードの例外発生命令制御を一体化した命令制御のフローチャート;
符号の説明
10:プロセッサ
12:分岐予測部
16:命令格納部
18:命令実行部18
20:命令確定部
22:レジスタ
24:リネーミング処理部24
26−1〜26−4命令格納キュー26−1〜26−4
28:分岐処理部
30:整数演算器
32:浮動小数点演算器
34:ロード/ストア処理部
36:リオーダーバッファ36
38:リネームマップ38
40:命令制御部
42:分岐予測命令制御部
44:例外発生命令制御部
68:第1命令制御部
70:第2命令制御部
72−5:第3命令制御部
74−5:第4命令制御部

Claims (22)

  1. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、
    分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2命令制御部と、
    前記分岐以前の命令が全て完了した後に、分岐予測により誤って発行してしまった命令をキャンセルして前記第2命令制御部が発行した命令に続く正しい方向の命令発行を前記第2識別子を添付して開始する第3命令制御部と、
    を備えたことを特徴とするプロセッサ。
  2. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令で第2の分岐ミスを検出した場合、前記古い分岐命令以前の命令が全て完了するのを待って、後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部と、
    を備えたことを特徴とするプロセッサ。
  3. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令で第2の分岐ミスを検出した場合、前記第1の分岐ミスの検出により正しい方向と判断して発行した命令をキャンセルした後に、前記第2の分岐ミスの検出により判断した第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部と、
    前記第2の分岐ミスが検出されて正しい方向の命令が発行された後に、前記古い分岐命令以前の命令が全て完了するのを待って、前記第2の分岐予測により誤って発行してしまった命令をキャンセルしてから、正しい方向の命令発行を再開する第4命令制御部と、
    を備えたことを特徴とするプロセッサ。
  4. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、前記新しい分岐命令以前の命令が全て完了するのを待って後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部と、
    を備えたことを特徴とするプロセッサ。
  5. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1命令制御部と、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、正しい方向の命令発行を抑止した状態で、前記第1分岐ミスが検出された古い方の分岐命令以前の命令が全て完了するのを待って、前記古い分岐命令により誤って発行してしまった命令をキャンセルしてから、前記抑止を解除して第2の分岐ミスの正しい方向の命令発行を開始する第3命令制御部と、
    前記第2の分岐ミスの検出による正しい方向の命令発行が開始された後に、新しい分岐命令以前の命令が全て完了するのを待って、前記第1の分岐予測の検出により発行された命令をキャンセルしてから、前記第2の分岐ミスによる正しい方向の命令発行を再開する第4命令制御部と、
    を備えたことを特徴とするプロセッサ。
  6. 請求の範囲1乃至5のプロセッサに於いて、更に、
    命令が使用するレジスタの番号で参照されるエントリに、リネームに使用するリオーダーバッファのアドレス格納領域と、命令制御で添付する複数の識別子に対応して複数の有効フラグ領域を備えたリネームマップと、
    命令が使用するレジスタをリオーダーバッファを用いてリネームする際に、レジスタの番号で参照されるリネームマップのエントリに、リネームに使用するリオーダーバッファのアドレスを格納すると共に、命令に添付される識別子に対応した有効フラグをオンし、分岐ミスを検出した際に、誤って発行されてしまった命令に添付した識別子に対応したリネームマップの有効フラグをオフし、正しい方向に発行した命令に添付される別の識別子に対応したリネームマップの有効フラグをオンするリネーミング処理部と、
    を設け、分岐ミスの検出により発行される正しい方向の命令が誤って発行されてしまった命令によるリネーム情報を使用することを防ぐことを特徴とするプロセッサ。
  7. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、
    分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、
    前記分岐以前の命令が全て完了した後に、分岐予測により誤って発行してしまった命令をキャンセルして前記第2ステップが発行した命令に続く正しい方向の命令発行を前記第2識別子を添付して開始する第3ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  8. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令で第2の分岐ミスを検出した場合、前記古い分岐命令以前の命令が全て完了するのを待って、後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  9. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令が発行された後に、それ以前の古い分岐命令で第2の分岐ミスを検出した場合、前記第1の分岐ミスの検出により正しい方向と判断して発行した命令をキャンセルした後に、前記第2の分岐ミスの検出により判断した第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、
    前記第2の分岐ミスが検出されて正しい方向の命令が発行された後に、前記古い分岐命令以前の命令が全て完了するのを待って、前記第2の分岐予測により誤って発行してしまった命令をキャンセルしてから、正しい方向の命令発行を再開する第4ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  10. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、前記新しい分岐命令以前の命令が全て完了するのを待って後続する全ての命令をキャンセルしてから、第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  11. 第1識別子を添付して分岐命令を含む命令を発行し、分岐予測により投機実行する第1ステップと、
    第1の分岐ミスを検出した際に、誤って発行してしまった命令の後ろに続けて正しい方向の命令を第2識別子を添付して発行する第2ステップと、
    前記第1の分岐ミスが検出されて第1の分岐ミスの正しい方向の命令発行を開始した後に、正しい方向として発行した命令内の新しい分岐命令で第2の分岐ミスを検出した場合、正しい方向の命令発行を抑止した状態で、前記第1分岐ミスが検出された古い方の分岐命令以前の命令が全て完了するのを待って、前記古い分岐命令により誤って発行してしまった命令をキャンセルしてから、前記抑止を解除して第2の分岐ミスの正しい方向の命令発行を開始する第3ステップと、
    前記第2の分岐ミスの検出による正しい方向の命令発行が開始された後に、新しい分岐命令以前の命令が全て完了するのを待って、前記第1の分岐予測の検出により発行された命令をキャンセルしてから、前記第2の分岐ミスによる正しい方向の命令発行を再開する第4ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  12. 請求の範囲7乃至11のプロセッサの命令制御方法に於いて、
    命令が使用するレジスタの番号で参照されるエントリに、リネームに使用するリオーダーバッファのアドレス格納領域と、命令制御で添付する複数の識別子に対応して複数の有効フラグ領域を備えたリネームマップを備えた場合、
    命令が使用するレジスタをリオーダーバッファを用いてリネームする際に、レジスタの番号で参照される前記リネームマップのエントリに、リネームに使用する前記リオーダーバッファのアドレスを格納すると共に、命令に添付される識別子に対応した有効フラグをオンし、
    分岐ミスを検出した際に、誤って発行されてしまった命令に添付した識別子に対応した前記リネームマップの有効フラグをオフし、正しい方向に発行した命令に添付される別の識別子に対応した前記リネームマップの有効フラグをオンすることにより、
    分岐ミスの検出により発行される正しい方向の命令が誤って発行されてしまった命令によるリネーム情報を使用することを防ぐことを特徴とするプロセッサの命令制御方法。
  13. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、
    例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
    前記例外発生命令以前の命令が全て完了した後に、例外発生命令及び例外発生なしとして発生した命令をキャンセルして前記第2命令制御部が発行した命令に続く前記例外処理ルーチンの命令発行を前記第2識別子を添付して開始する第3命令制御部とを備えたことを特徴とするプロセッサ。
  14. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、前記古い例外発生命令以前の命令が全て完了するのを待って例外発生命令及び後続する全ての命令をキャンセルしてから、前記第2の例外発生による例外処理ルーチンの命令発行を開始する第3命令制御部と、
    を備えたことを特徴とするプロセッサ。
  15. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、前記第1の例外発生の検出により発行した例外処理ルーチンの命令をキャンセルした後に、前記第2の例外発生の検出により正しい方向となる例外処理ルーチンの命令発行を開始する第3命令制御部と、
    前記第2の例外発生が検出されて例外処理ルーチンの命令が発行された後に、前記古い命令以前の命令が全て完了するのを待って、前記第1の例外発生を起こした命令及び該命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、前記第2の例外発生による例外処理ルーチンの命令発行を再開する第4命令制御部と、
    を備えたことを特徴とするプロセッサ。
  16. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、前記例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、前記新しい例外発生命令以前の命令が全て完了するのを待って例外発生命令及び後続する全ての命令をキャンセルしてから、前記第1の例外発生による例外処理ルーチンの命令発行を開始する第3命令制御部と、
    を備えたことを特徴とするプロセッサ
  17. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1命令制御部と、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2命令制御部と、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、前記例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、前記例外処理ルーチンの命令発行を抑止した状態で、前記第1例外発生が検出された古い方の例外発生命令以前の命令が全て完了するのを待って、前記古い例外発生命令及び該命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、前記抑止を解除して前記第2の例外発生により正しい方向となる例外処理ルーチンの命令発行を開始する第3命令制御部と、
    前記第2の例外発生により例外処理ルーチンの命令が発行された後に、新しい例外発生命令以前の命令が全て完了するのを待って前記第2の例外発生の命令及び及び前記第1の例外発生の例外処理ルーチンで発行された命令をキャンセルしてから、前記第2の例外発生による例外処理ルーチンの命令発行を再開する第4命令制御部と、
    を備えたことを特徴とするプロセッサ。
  18. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、
    例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、
    前記例外発生命令以前の命令が全て完了した後に、例外発生命令及び例外発生なしとして発行してしまった命令をキャンセルして前記第2ステップが発行した命令に続く前記例外処理ルーチンの命令発行を前記第2識別子を添付して開始する第3ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  19. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、前記古い分岐命令以前の命令が全て完了するのを待って、例外発生命令及び後続する全ての命令をキャンセルしてから、前記第2の例外発生による例外処理ルーチンの命令発行を開始する第3ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  20. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令が発行された後に、それ以前の古い命令で第2の例外発生を検出した場合、前記第1の例外発生の検出により発行した例外処理ルーチンの命令をキャンセルした後に、前記第2の例外発生の検出により正しい方向となる例外処理ルーチンの命令発行を開始する第3ステップと、
    前記第2の例外発生が検出されて例外処理ルーチンの命令が発行された後に、前記古い命令以前の命令が全て完了するのを待って、前記第1の例外発生を起こした命令及び該命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、前記第2の例外発生による例外処理ルーチンの命令発行を再開する第4ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  21. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、前記例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、前記新しい例外発生命令以前の命令が全て完了するのを待って例外発生命令及び後続する全ての命令をキャンセルしてから、前記第1の例外発生による例外処理ルーチンの命令発行を開始する第3ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
  22. 第1識別子を添付して例外発生命令を含む命令を発行し、例外発生なしとして投機的に命令を実行する第1ステップと、
    第1の例外発生を検出した際に、例外発生なしとして誤って発行してしまった命令の後ろに続けて例外処理ルーチンの命令を第2識別子を添付して発行する第2ステップと、
    前記第1の例外発生が検出されて正しい方向となる例外処理ルーチンの命令発行を開始した後に、前記例外処理ルーチンにより発行した命令内の新しい命令で第2の例外発生を検出した場合、前記例外処理ルーチンの命令発行を抑止した状態で、前記第1例外発生が検出された古い方の例外発生命令以前の命令が全て完了するのを待って、前記古い例外発生命令及び該命令により例外発生なしとして誤って発行してしまった命令をキャンセルしてから、前記抑止を解除して前記第2の例外発生により正しい方向となる例外処理ルーチンの命令発行を開始する第3ステップと、
    前記第2の例外発生により例外処理ルーチンの命令が発行された後に、新しい例外発生命令以前の命令が全て完了するのを待って前記第2の例外発生の命令及び前記第1の例外発生の例外処理ルーチンで発行された命令をキャンセルしてから、前記第2の例外発生による例外処理ルーチンの命令発行を再開する第4ステップと、
    を備えたことを特徴とするプロセッサの命令制御方法。
JP2004541191A 2002-10-04 2002-10-04 プロセッサ及び命令制御方法 Expired - Fee Related JP3807740B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/010370 WO2004031944A1 (ja) 2002-10-04 2002-10-04 プロセッサ及び命令制御方法

Publications (2)

Publication Number Publication Date
JPWO2004031944A1 JPWO2004031944A1 (ja) 2006-02-02
JP3807740B2 true JP3807740B2 (ja) 2006-08-09

Family

ID=32051297

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004541191A Expired - Fee Related JP3807740B2 (ja) 2002-10-04 2002-10-04 プロセッサ及び命令制御方法

Country Status (2)

Country Link
JP (1) JP3807740B2 (ja)
WO (1) WO2004031944A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007097017A1 (ja) 2006-02-27 2007-08-30 Fujitsu Limited バッファリング装置およびバッファリング方法
JP7041353B2 (ja) * 2018-06-06 2022-03-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7100258B2 (ja) 2018-10-10 2022-07-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3082944B2 (ja) * 1990-12-20 2000-09-04 富士通株式会社 パイプライン処理装置
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法

Also Published As

Publication number Publication date
JPWO2004031944A1 (ja) 2006-02-02
WO2004031944A1 (ja) 2004-04-15

Similar Documents

Publication Publication Date Title
JP3602840B2 (ja) 命令の投機的実行制御装置およびその方法
US5592636A (en) Processor architecture supporting multiple speculative branches and trap handling
US6553480B1 (en) System and method for managing the execution of instruction groups having multiple executable instructions
US7330963B2 (en) Resolving all previous potentially excepting architectural operations before issuing store architectural operation
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
US6301655B1 (en) Exception processing in asynchronous processor
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JP2015164048A (ja) 条件付き命令が無条件で出力を提供するシステム及び方法
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
JPH10111800A (ja) 分岐解決方法、プロセッサ、及びシステム
JP3518510B2 (ja) リオーダバッファの管理方法及びプロセッサ
US20080244244A1 (en) Parallel instruction processing and operand integrity verification
JP2000330788A (ja) コンピュータシステム
US6934828B2 (en) Decoupling floating point linear address
JP3546403B2 (ja) 順序外の実行を容易にする装置及び方法
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
JP3807740B2 (ja) プロセッサ及び命令制御方法
JPH06266556A (ja) データ処理装置
JP2004038753A (ja) プロセッサ及び命令制御方法
US20050125634A1 (en) Processor and instruction control method
US20170109168A1 (en) Method and apparatus for managing a speculative transaction in a processing unit
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
JPH08263288A (ja) パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置
CN118012509A (zh) 清空流水线的方法、处理器、芯片及电子设备
EP0877316A2 (en) System and method of processing instructions for a processor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060324

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060515

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

LAPS Cancellation because of no payment of annual fees