JP3594506B2 - マイクロプロセッサの分岐命令予測方法 - Google Patents

マイクロプロセッサの分岐命令予測方法 Download PDF

Info

Publication number
JP3594506B2
JP3594506B2 JP4009799A JP4009799A JP3594506B2 JP 3594506 B2 JP3594506 B2 JP 3594506B2 JP 4009799 A JP4009799 A JP 4009799A JP 4009799 A JP4009799 A JP 4009799A JP 3594506 B2 JP3594506 B2 JP 3594506B2
Authority
JP
Japan
Prior art keywords
branch
history table
instruction
branch history
taken
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
JP4009799A
Other languages
English (en)
Other versions
JPH11282677A (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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH11282677A publication Critical patent/JPH11282677A/ja
Application granted granted Critical
Publication of JP3594506B2 publication Critical patent/JP3594506B2/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

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

【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサにおける分岐履歴テーブルの維持およびその使用に係り、特に、マイクロプロセッサが実行する複数の分岐命令結果を予測する処理を通じて、マイクロプロセッサにおける分岐履歴テーブルの情報を維持し、かつ、この分岐履歴テーブルの使用に供するマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術に関する。
【0002】
【従来の技術】
近時のコンピュータ、例えば、アウトオブオーダ(out−of−order)型実行装置および/またはパイプライン式実行装置を通じて命令を実行するコンピュータは、「投機的に(speculatively)」命令を実行するものが大多数である。すなわち、これらが依存する命令を完全に実行する前に、大多数が命令ストリームにおける分岐結果の判明前に命令を実行している。これらのコンピュータのマイクロプロセッサは、高性能を実現するために、様々な技術を駆使して、命令ストリームで誤って予測される分岐処理を最小化している。これらの技術は、通常「分岐予測」形式の処理を行っている。分岐予測は、最も多発する「引き取られる(taken)」または「引き取られない(not taken)」のいずれかの分岐命令を最適化するものである。
【0003】
分岐予測は、通常、2通りのタイプの情報の一方に基づいた処理である。すなわち、(1)静的予測情報があり、また(2)動的予測情報がある。この静的予測情報は、コンピュータプログラムの実行前に生成され、命令のタイプ、命令ストリームにおける位置および反復命令等の要因に基づくものである。また、動的予測情報は、コンピュータプログラムの実行中に生成され、通常、所定の分岐および/またはその他の分岐命令の従前の結果の履歴に基づくものである。
【0004】
動的予測情報は、多数のエントリを含む分岐履歴テーブルに格納される。この分岐履歴テーブルが十分大きい場合は、コンピュータプログラムの各分岐命令についての異なる履歴を維持できると考えられる。しかしながら、マイクロプロセッサチップ領域は多大な処理(コスト)を伴う供給源である。他の重要なマイクロプロセッサにおけるエレメントの空間を設けるために、分岐履歴テーブルを縮小すると仮定した場合、分岐履歴テーブルのエントリを共有することが多いため、競合する分岐履歴間の干渉が多大な問題となる。
【0005】
【発明が解決しようとする課題】
このような上記従来例では、競合する履歴が分岐履歴テーブルの一つのエントリを共有すると、所定の任意の分岐命令の履歴を他の分岐命令によって破損することが多い。この結果、予測を誤った分岐結果となることがある。分岐結果が予測を誤ったものであると、多大なコストを要することになる。例えば、命令パイプラインが失速したり、命令実行装置が停止したり、またキャッシュやレジスタでのデータを瞬時的に消去せざるを得なくなる等がある。これらの結果は、情報処理における全てを許容できない遅延が発生する。
【0006】
本発明は、このような従来の技術における課題を解決するものであり、より正確な分岐予測が可能になり、かつ、この結果で誤って予測された分岐によって生起する遅延を少なくできる、マイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術の提供を目的とする。
【0007】
【課題を解決するための手段】
上記課題を達成するために、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術では、まずその理解を容易にするために、大部分の分岐が「略常に引き取られる(almost always taken)」か、または、「略常に引き取られない(almost always not taken)」のいずれかであることを認識する必要がある。これらの分岐を「適切な(行儀の良い, well−behaved)」分岐と呼称することがある。また、分岐の結果が切り替わる場合は、「略常に引き取られる」から「略常に引き取られない」を認識する必要がある。また、この逆に切り替わることが多いことを認識する必要がある。さらに、分岐予測体系が、典型的には大部分の分岐が適切な分岐であるという前提に基づくことに留意することも重要である。この結果、静的分岐予測体系および多くの動的分岐予測体系の目標は、分岐の支配的な結果がどのようなものであるかを予測することになる。
【0008】
このような認識において、一つのタイプの適切な分岐(例えば、「略常に引き取られる」分岐)の予測精度は、分岐が分岐履歴テーブルエントリを他のタイプの適切な分岐(例えば、「略常に引き取られない」分岐)と共有する場合に、その精度が低下することになる。
【0009】
ヒューレット・パッカード社のPA−8x00ファミリーのマイクロプロセッサ(例えば、PA−8000,PA−8200およびPA−8500)の分岐予測体系は、適切な分岐についての前記したことが正しいと推定している。ヒューレット・パッカード社は、米国カリフォルニア州にあるPalo Altoに拠点があり、PA−8x00ファミリーのマイクロプロセッサの詳細が、D. Hunt氏による「Advanced Performance Features of the 64−bit PA−8000」(1995年3月5日)、L. Gwennap氏による「HP Pumps Up PA−8x00 Family: PA−8200 in 2Q97, PA−8500 in 2Q98 Aim to Grab Performance Lead」(1996年10月28日)およびG. Lesartre氏とD. Hunt氏とによる「PA−8500: The Continuing Evolution of the PA−8000 Family」(1997年2月23日)に記載されている。この論文での全ての開示内容を、本明細書中で参照するものとする。
【0010】
PA−8x00ファミリーのマイクロプロセッサのコードを生成するコンパイラは、大部分の分岐命令における「示唆(ヒント)」をエンコードすることが可能である。これらのヒントは静的予測情報形式であり、所定の分岐が略引き取られるまたは略引き取られないことを、コンパイラで確実に実行できるかについての指標である。PA−8000マイクロプロセッサのコンパイラについては、A.Holler氏による「Compiler Optimizations for the PA−8000」により詳細に記載されている。この論文での全ての開示内容を、本明細書中で参照するものとする。
【0011】
本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術では、分岐履歴テーブルの一つのエントリを共有する二つまたはこれ以上の適切な分岐が、ここに格納される履歴情報を破損しないことを確実に行うために、これらのコンパイラによって生成された示唆(または、その他あらゆる静的予測情報)を利用している。
【0012】
分岐命令の実行後の分岐命令によって、分岐が引き取られることになるかまたは引き取られないことになるかについての指標は、分岐命令のコンパイラによって生成される示唆との排他的論理和を行い、この排他的論理和の結果を用いて分岐履歴テーブル中の適切なエントリを更新する。さらに、(1)コンパイラによって生成される示唆と、(2)分岐履歴テーブルの適切なエントリから読み取られる動的予測情報との排他的論理和に対応して分岐命令の結果を予測している。
【0013】
この二つの適切な分岐は、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術を使用して、分岐履歴テーブルのエントリを共有できるが、(この二つの適切な分岐が、略引き取られる分岐と略引き取られない分岐とを含むとしても、)ここに格納される履歴情報を破損することはない。
【0014】
本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する技術において、これらおよびこの他の重要な利点、並びに、その目的は、添付の記載内容、図面および請求の範囲においてさらに説明され、かつこれらから明白になるものである。
【0015】
【発明の実施の形態】
次に、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法およびその装置の例示的および現時点で好適な実施の形態を、図面を参照して詳細に説明する。
図1は、本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法およびその装置の実施形態にかかる構成を示すブロック図であり、マイクロプロセッサにおける、複数の分岐命令において識別される分岐が引き取られるかまたは引き取られないかを予測する装置200を図示している。
【0016】
装置200は、通常、分岐履歴テーブル214と、複数の分岐命令に対応する静的予測情報を格納する一つまたは複数のデータ格納手段(命令メモリ)204と、第1論理ゲート216および第2論理ゲート212とを備えている。分岐履歴テーブル214は、複数のエントリを含んでいる。第1論理ゲート216は、一つまたは複数の命令メモリ204中のアドレスが指定された一つから導出される静的予測情報220を受け取る入力と、分岐履歴テーブル214における少なくとも一つのエントリから導出される情報226を受け取る入力と、前記した複数の分岐命令中の一つが引き取られるかまたは引き取られないかを示す分岐予測出力224とを有している。
【0017】
第2論理ゲート212は、一つまたは複数の命令メモリ204中のアドレスが指定された一つから導出される静的予測情報220を受け取る入力と、分岐命令において識別された分岐が引き取られるかまたは引き取られないかを示す情報222を受け取る入力と、分岐命令に対応する前記した静的予測情報が正確であるかどうかを示す分岐履歴更新出力218とを有している。この分岐履歴更新出力218を、分岐履歴テーブル214が受け取る。
【0018】
図2は、マイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法に係る処理手順を示すフローチャートであり、マイクロプロセッサの分岐履歴テーブル214において干渉を排除する処理方法300(前記した装置200を利用する場合もある)が図示されている。
この処理方法300は、通常、コンピュータプログラムにおける複数の分岐命令の結果を予測するステップ302と、所定の分岐命令の実行後に分岐履歴テーブル214におけるエントリを更新するステップ304とを有している。分岐命令の結果は、前記の分岐命令においてエンコードされた示唆および分岐履歴テーブル214におけるエントリの少なくとも一部に対応して予測される(ステップ302)。分岐履歴テーブル214は、前記の所定の分岐命令においてエンコードされた示唆が正確であるかどうかの少なくとも一部に対応して更新される(ステップ304)。
【0019】
図3は、マイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法に係る他の処理手順を示すフローチャートであり、マイクロプロセッサにおいて実行される複数の分岐命令の結果を予測する処理方法400(上記記載の装置200を利用する場合もある)が図示されている。
【0020】
前記した処理方法400は、通常、(1)複数のエントリを含む分岐履歴テーブル214を維持するステップ402と、(2)複数の分岐命令の静的予測情報を維持するステップ404と、(3)前記した複数の分岐命令の結果を予測するステップ406と、(4)前記した複数の分岐命令のそれぞれを実行後に分岐履歴テーブル214におけるエントリを更新するステップ408とを有している。分岐命令の結果は、(1)静的予測情報220と、(2)分岐履歴テーブル214とにおけるエントリの少なくとも一部に対応して予測される(ステップ406)。分岐履歴テーブル214は、静的予測情報220が正確であるかどうかの少なくとも一部に対応して更新される。
【0021】
ここまで処理方法300,400および装置200を、概略的に説明してきたが、次に、前記した処理方法300,400および装置200をより詳細に説明する。
【0022】
図4は、分岐予測ハードウェアの構成を示すブロック図であり、ヒューレット・パッカード社のPA−8000およびPA−8200マイクロプロセッサに存在する分岐予測ハードウェア100の高度な模式図を図示している。
これらは、本発明で開示される処理方法300,400および装置200を好適に実施するために有用なものである。一般的に、これらのコンピュータの分岐予測ハードウェア100は、命令取出ユニット102と、命令メモリ104と、命令実行ユニット106と、分岐履歴テーブル110とを備えている。
【0023】
命令取出ユニット102は、命令メモリ104、分岐履歴テーブル110および命令実行ユニット106からの入力に対応して実行するための命令のアドレスを生成する。これらの第1入力(すなわち、命令メモリ104からの入力)によって、命令取出ユニット102は、すでにアドレスが指定された命令が分岐命令であったかどうかを決定することができる。この決定で分岐命令であった場合、その第2入力(すなわち、分岐履歴テーブル110からの入力)は、前記した分岐命令によって識別される分岐が略引き取られるか略引き取られないかを、命令取出ユニット102が決定する動的予測情報を供給する。
【0024】
その第3入力(すなわち、命令実行ユニット106で受け取る入力)は、分岐が引き取られたかまたは引き取られなかったかについての標識を示す。命令取出ユニット102が分岐命令の結果を誤って予測したことを決定すると、命令パイプラインをクリアする処理が行うか、またはその誤った予測から回復する処理を行う必要がある。
【0025】
命令取出ユニット102によって生成されるアドレスは、命令メモリ104および分岐履歴テーブル110の両方に付与される。パイプライン式命令を実行するために、保持ユニット108はいくつかのエントリであり、この保持ユニットによって分岐履歴テーブル110における適切なエントリが、命令実行ユニット106におけるパイプラインを通じて分岐命令の処理に続いてアドレスが指定される。
【0026】
分岐が引き取られたかまたは引き取られなかったかについての同様の標識が、分岐履歴テーブル110にも付与される。これは、保持ユニット108によってアドレスが指定される分岐履歴テーブル110のエントリに格納されるデータに対する、インクリメント、デクリメントまたは追加の際に必要なものである。
【0027】
PA−8000マイクロプロセッサにおいて、分岐履歴テーブル110におけるそれぞれのエントリは、一つまたは複数の分岐の引き取られたまたは引き取られない履歴を格納する3ビットシフトレジスタによって維持される。分岐が引き取られる場合、論理「1」が適切なシフトレジスタに移動する。分岐が引き取られない場合、論理「0」が適切なシフトレジスタに移動する。アドレスが指定されたシフトレジスタの履歴ビット中の任意の二つが論理「1」を保持する場合、分岐履歴テーブル110によって生成される分岐予測は論理「1」である(すなわち、略引き取られる)。保持しない場合、分岐予測は論理「0」である(すなわち、略引き取られない)。
【0028】
PA−8200マイクロプロセッサにおいて、分岐履歴テーブル110におけるそれぞれのエントリは、2ビット飽和型アップ/ダウンカウンタによって維持される。分岐が引き取られる場合、適切なカウンタがインクリメントされる。分岐が引き取られない場合、適切なカウンタがデクリメントされる。すなわち、すでにカウンタがその最大回数に到達していると(すなわち、飽和状態)、追加のインクリメントの試みはこのカウンタに対する作用を及ぼさない。同様に、カウンタがその最小回数に到達していると(すなわち、飽和状態)、追加のデクリメントの試みはこのカウンタに対する作用を及ぼさない。分岐履歴テーブル110によって生成される分岐予測は、カウンタの最上位のビット(MSB)と等しい。
【0029】
PA−8000マイクロプロセッサおよびPA−8200マイクロプロセッサの両方の分岐履歴テーブル110に関する課題としては、一つのエントリを二つ以上の分岐が共有し、さらに、これらの分岐中の一つが略引き取られる場合、別の一つは略引き取られず、競合が生じて、不正確な分岐命令の結果が予測されることがある。
【0030】
次に、本発明の好適な実施形態を図示している図1を参照すると、命令取出ユニット202と、命令メモリ204と、命令実行ユニット206と、保持ユニット208と、分岐履歴テーブル214とにおいて、これらの構成要素が、図4に図示されるものと同様に作用し、また、図4に図示されるものと実質的に同一であることが判明する。
【0031】
図4において、命令取出ユニット202の一出力は、命令アドレスである。このアドレスを命令メモリ204に付与し、ここに格納される命令を検索する。さらに、このアドレスを分岐履歴テーブル214に付与して、アドレスで指定された分岐命令に関する履歴予測情報を検索する。
【0032】
保持ユニット208は、命令取出ユニット202によって生成される命令アドレスをラッチする一つまたは複数のレジスタを有している。分岐予測は、典型的には、アウトオブオーダ型コンピュータシステムおよび/またはパイプライン式コンピュータシステムにおいてのみ必要であるため、保持ユニット208は、引き取り命令(多くの場合、単なる分岐命令)のアドレスを維持する複数のレジスタを備えることが多い。
【0033】
このように分岐命令がアドレスを指定された後(例えば、分岐命令を命令実行ユニット206のパイプラインを通じて処理した後)に、分岐履歴テーブル214における適切なエントリをアドレス指定して数サイクルごとに更新しても良い。命令の実行時または取り消し(retire)時に保持ユニット208においてエントリをクリアする処理手段、またはこれを実行するための処理手段を設けても良い。
【0034】
命令メモリ204は、マイクロプロセッサに対して内部または外部にあるキャッシュであっても良く、メインメモリの一部を使用しても良い。また、命令メモリ204がキャッシュとメインメモリとの組み合わせを含むことも可能である。
【0035】
命令実行ユニット206は、任意の一つまたは複数の整数算術論理演算装置(整数ALU)、浮動小数点乗算累算装置(FMAC)、シフト/マージ装置、除算/平方根装置(divide/SQRT)、命令再順序付けバッファ(IRB)または他の実行装置であっても良い。命令実行ユニット206は、分岐命令において識別される分岐が引き取られたか、引き取られなかったかを示す信号222を生成する。
【0036】
好適な実施形態では、静的予測情報は、命令メモリ204における一または複数のデータ格納手段に保存され(ステップ404)(図3参照)、命令メモリ204において保存される各種命令と関連して格納されるプリデコードビットとして保存される。したがって、デコードユニット210は、適切なプリデコードビット220を読み取り、これを第2論理ゲート212および第1論理ゲート216に対してルーティングする。保持ユニット228は、保持ユニット208とおそらく同様に、命令実行ユニット106において、静的情報がパイプラインを通じた分岐命令の処理に続いて第2論理ゲート212に付与される。
【0037】
第2論理ゲート212は、分岐履歴更新信号218を分岐履歴テーブル214に提供する。第2論理ゲート212に対する入力は、デコードユニット210からの静的予測情報220と、分岐命令において識別される分岐が引き取られたか引き取られなかったかを示す命令実行ユニット206からの信号222とを有している。好適な実施形態では、第2論理ゲート212は、単一の排他的論理和ゲート(XORゲート)である。例えば、静的予測情報220は、複数のビットを含む場合、または分岐履歴テーブル214において維持される予測履歴情報が静的予測情報220およびその達成以外の要因に基づく場合、第2論理ゲート212は、より複雑なXORゲートまたは他の論理ゲートの構成となる場合がある。
【0038】
分岐履歴テーブル214は、複数のエントリを含んでいる。このエントリは、それぞれ多数の方法で維持される(ステップ402)(図3参照)。例えば、飽和型アップ/ダウンカウンタ、シフトレジスタまたはデータをラッチする他の処理手段によってエントリを維持しても良い。好適な実施形態では、2ビットのアップ/ダウン飽和型カウンタ(HP−8200等)または3ビットのシフトレジスタ(HP−8000等)のいずれかによって、分岐履歴テーブルのそれぞれのエントリを維持する。
【0039】
2ビットカウンタの分岐履歴テーブル214を想定すると、分岐履歴更新信号218(または下記の表1中の単なる「更新信号」)は、次の表に示されるように、その現在の状態から次の状態にカウンタを動作させる。
【0040】
【表1】
Figure 0003594506
【0041】
カウンタがすでに最大回数(カウント値)の場合、追加したインクリメント信号(上記の例における論理「1」)はカウンタの動作に影響を及ぼさない(すなわち、カウンタが飽和状態であり、そのインクリメントを行わない)。同様に、カウンタがすでに最小回数の場合、追加したデクリメント信号(上記の例における論理「0」)はカウンタの動作に影響を及ぼさない。
【0042】
分岐履歴テーブル214が多数の2ビットカウンタを備える場合、第1論理ゲート216に出力される情報226は、アドレスが指定されたカウンタの最上位のビット(MSB)のみを含む場合がある。一方、分岐履歴テーブル214におけるエントリを3ビットシフトレジスタによって維持する場合、第1論理ゲート216に出力される情報226に、シフトレジスタのビットの総和のMSBを含む場合がある。
【0043】
分岐履歴テーブル214の読み取りおよび/または書き込みを行う制御論理は、当分野において周知であり、本発明の開示における説明範囲を越えるものである。図1に図示される分岐履歴テーブル214は、このような制御論理を包含するとみなされるものである。
【0044】
第1論理ゲート216は、分岐命令が引き取られるか、または引き取られないかを示す分岐予測出力226を命令取出ユニット202に供給する。分岐予測出力226は、動的予測情報を有している。したがって、命令取出ユニット202によってアドレスが指定される分岐命令の結果は、静的予測情報220および動的予測情報226の両方に対応して予測される。なお、これは実行中のコンピュータプログラムが静的予測情報とコンパイルされていないことがない限りである。この場合、命令取出ユニット202によってアドレスが指定される分岐命令の結果は、動的予測情報226に対応して予測される。
【0045】
第1論理ゲート216に対する入力は、デコードユニット210からの静的予測情報220および分岐履歴テーブル214における少なくとも一つのエントリから導出される情報226を有している。好適な実施形態では、第1論理ゲート216は一つのXORゲートである。しかし、再び、例えば静的予測情報220が複数のビットを含む場合、または分岐命令の結果の予測が静的予測情報220および分岐履歴テーブル214において維持される情報226以外の要因に基づく場合、第1論理ゲート216は、より複雑なXORゲートまたは論理ゲートの別様の構成を含む場合がある。
【0046】
コンピュータシステムが、静的予測情報を含まないコンピュータプログラムを実行できることが望ましい場合、命令取出ユニット202は、次にコンピュータプログラムが静的予測情報を有するか有しないかを示す信号を送出する分岐予測モード標識(図示せず)を含むか、または含まないかに対応することがある。コンピュータプログラムが静的予測情報を含まない場合、信号220を論理「0」に駆動可能であり、これにより、第2論理ゲート212および第1論理ゲート216の出力218,224が単独で命令実行ユニット206によって付与されて引き取られる、または引き取られない情報222に左右される。このモードでは、二つ以上の分岐によって共有される分岐履歴テーブル214におけるエントリが、競合する結果を有する分岐によって更新され、誤った分岐予測の確率が高くなることに注意する必要がある。
【0047】
図1に示される装置200は、分岐履歴テーブル214が、多数の2ビットの飽和型アップ/ダウンカウンタを備え、論理「0」の示唆では分岐が略引き取られることを示し、論理「1」の示唆では分岐が略引き取られないことを示し、論理「1」信号は分岐命令において識別される分岐が実際に引き取られたことを示し、論理「0」信号は分岐が実際に引き取られなかったことを示すと想定すると、図1に示される装置200が以下の動作を行う。
【0048】
第1の適切な分岐が引き取られると示唆が与えられ(示唆0)、実際に引き取られる(結果1)と、分岐履歴テーブル214における適切なカウンタはインクリメントされる(0 XOR 1=1)。同様に、第2分岐が引き取られないと示唆が与えられ(示唆1)、実際に引き取られない(結果0)と、分岐履歴テーブル214における適切なカウンタはインクリメントされる(1 XOR 0=1)。第1および第2分岐が分岐履歴テーブルにおける同一のエントリ(例えば、カウンタ)を共有する場合、これらの分岐の履歴は相互に干渉しない。例えば、カウンタが初期値「00」を保持し、第1分岐が示唆を付与するように引き取られ、そして第2分岐が示唆を付与するように引き取られなかった直後に、インクリメントされることが想定される。
【0049】
二度のインクリメント後に、カウンタは「10」の値を保持する。第1分岐が再び引き取られるように示唆され(示唆0)、カウンタのMSBが「1」として読み取られると、第1論理ゲート216は「1」の分岐予測(0 XOR 1=1)を生成し、これは命令取出ユニット202によって引き取られることを意味することになる。また、第2分岐が引き取られないように再び示唆が付与され(示唆1)、カウンタのMSBが「1」として読み取られると、第1論理ゲート216は「0」の分岐予測(1 XOR 1=0)を生成し、これは命令取出ユニット202によって引き取られないことを意味している。
【0050】
もちろん、示唆が常に正しければ分岐予測は単独で示唆に依存し、装置200は不要になる。しかしながら、次に、第1および第2分岐がその第1実行中に正確に示唆され、分岐履歴テーブルにおいて共有されるカウ2タが「10」の状態であると想定する。第1分岐がその機能を切り替えて略引き取られないようにすると、その不正確な示唆(示唆0)はその引き取られないという結果(結果0)と排他的論理和が行われ、カウンタがデクリメントされる(0 XOR 0=0)。カウンタが「01」状態であると、次の第1分2の予測は略引き取られないことになって、正確なものとなる(カウンタのMSBはこのとき「0」であり、「0」の示唆と排他的論理和が行われると、示唆にかかわらず、この結果、引き取られない予測の論理「0」を生成する)。
【0051】
以下要約する。、本明細書中に開示される処理方法300,400および装置200の第一の利点は、分岐履歴テーブル214におけるエントリを共有する二つの適切な分岐が正確に示唆されると、この分岐中の一方が略引き取られ、他方が略引き取られなくとも二つの分岐の動的予測履歴は互いに干渉しない。また、分岐が正確に示唆されないが、(1)分岐履歴テーブル214におけるエントリをその他いかなる分岐とも共有しないか、または(2)これを繰り返し(または、分岐履歴テーブル214におけるそのエントリを共有する分岐よりもはるかに多く)実行する(ステップ302および406/図2および図3参照)と、分岐履歴テーブル214に格納される動的情報によって、命令取出ユニット202は不正確な示唆の代わりに分岐の結果の正確な予測を行う。適切な分岐が互いに干渉するのは、二つの分岐が分岐履歴テーブル214におけるエントリを共有し、一方が正確に示唆され、他方が不正確に示唆されるときのみである。
【0052】
これは、従来の分岐予測方式と対照的であり、一方が略引き取られ、一方が略引き取られない二つの適切な分岐は、分岐履歴テーブル214におけるエントリを共有する場合に、常に相互干渉が生じることになる。
【0053】
本発明の例示的および現時点での好適な実施形態をこれまで詳細に説明したが、進歩的な概念をその他様々に具体化して利用し得ること、さらに、請求の範囲が先行技術によって制限されるものを除いて、かかる変形例を含むと解釈されるその意図を理解できるものである。
【0054】
以下に本発明の実施の形態を要約する。
1.マイクロプロセッサが実行する複数の分岐命令結果を予測する分岐命令予測方法(400)において、
複数のエントリを含む分岐履歴テーブル(214)を維持するステップ(402)と、
複数の分岐命令の静的予測情報を維持するステップ(404)と、
それぞれの結果が、前記静的予測情報(220)と前記分岐履歴テーブルにおけるエントリとの少なくとも一部に対応して、予測される前記複数の分岐命令の結果を予測するステップ(406)と、
前記複数の分岐命令のそれぞれを実行した後に、前記静的予測情報が正確であるかを、少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップ(408)と、
を有するマイクロプロセッサが実行する複数の分岐命令結果を予測する分岐命令予測方法(400)。
【0055】
2.前記分岐履歴テーブルにおける各エントリを飽和型アップ/ダウンカウンタで維持するステップと、
前記複数の分岐命令中の所定の一つを実行した後に、前記複数の分岐命令中の前記所定の一つについての前記静的予測情報(220)が正確である場合は、前記分岐履歴テーブル(214)における所定の飽和型アップ/ダウンカウンタをインクリメントするステップ、および前記複数の分岐命令中の前記所定の一つについての前記静的予測情報(220)が不正確である場合には、前記分岐履歴テーブル(214)における所定の飽和型アップ/ダウンカウンタをデクリメントするステップと、
をさらに有する上記1記載の分岐命令予測方法(400)。
【0056】
3.前記分岐履歴テーブル(214)における各エントリをシフトレジスタによって維持するステップと、
前記複数の分岐命令中の所定の一つを実行した後、前記分岐履歴テーブルの所定のシフトレジスタに、前記複数の分岐命令中の前記所定の一つの前記静的予測情報(220)が正確であるかの標識(222)をシフトするステップと、
をさらに有する上記1記載の分岐命令予測方法(400)。
【0057】
4.前記複数の分岐命令中の所定の一つの前記結果を予測するステップ(406)は、
前記複数の分岐命令中の前記所定の一つに対応する静的予測情報(220)と、前記分岐履歴テーブル(214)におけるエントリと、の排他的論理和(216)の少なくとも一部に対応して、前記複数の分岐命令中の前記所定の一つの前記結果を予測するステップを有する上記1記載の分岐命令予測方法(400)。
【0058】
5.前記分岐履歴テーブル(214)におけるエントリを更新するステップ(408)は、
前記複数の分岐命令中の所定の一つに対応する静的予測情報(220)と、前記分岐命令中の前記所定の一つを実行して、分岐が引き取られるか引き取られないかについての標識(222)と、の排他的論理和(212)の少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップを有する上記4記載の分岐命令予測方法(400)。
【0059】
6.前記分岐履歴テーブル(214)におけるエントリを更新するステップ(408)は、
前記複数の分岐命令中の所定の一つに対応する静的予測情報(220)と、前記分岐命令中の前記所定の一つを実行して、分岐が引き取られるか引き取られないかについての標識(222)と、の排他的論理和(212)の少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップを有する上記1記載の分岐命令予測方法(400)。
【0060】
7.マイクロプロセッサの分岐履歴テーブル(214)において干渉を排除する干渉排除方法(300)において、
コンピュータプログラムにおける複数の分岐命令の結果を、前記分岐命令においてエンコードされた示唆と、分岐履歴テーブルにおけるエントリと、の少なくとも一部に対応して、予測するステップ(302)と、
所定の分岐命令の実行後、前記所定の分岐命令において前記エンコードされた示唆が正確であるかの少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリを更新するステップ(304)と、
を有するマイクロプロセッサの分岐履歴テーブル(214)における干渉を排除する干渉排除方法(300)。
【0061】
8.所定の分岐命令の前記結果を予測するステップ(302)は、
前記所定の分岐命令においてエンコードされた示唆(220)と、前記分岐履歴テーブル(214)におけるエントリと、の排他的論理和(216)の少
なくとも一部に対応して、前記所定の分岐命令の前記結果を予測するステップを有する上記7記載の干渉排除方法(300)。
【0062】
9.前記分岐履歴テーブル(214)におけるエントリを更新するステップ(304)が、
前記所定の分岐命令においてエンコードされた示唆(220)と、前記所定の分岐命令を実行して、分岐が引き取られるか引き取られないかについての標識(222)と、の排他的論理和(212)の少なくとも一部に対応して、前記分岐履歴テーブルにおけるエントリーを更新するステップを有する上記7記載の干渉排除方法(300)。
【0063】
10.マイクロプロセッサにおける、複数の分岐命令において識別される分岐が引き取られるか引き取られないかを予測する分岐命令予測装置(200)において、
複数のエントリを含む分岐履歴テーブル(214)と、
複数の分岐命令に対応する静的予測情報を格納する少なくとも一つのデータ格納手段(204)と、
前記少なくとも一つのデータ格納手段中のアドレスが指定された一つから導出される静的予測情報(220)を受け取る入力と、前記分岐履歴において少なくとも一つのエントリから導出される情報(226)を受け取る入力と、前記複数の分岐命令中の一つが引き取られるか引き取られないかを示す分岐予測出力(224)と、を有する第1論理ゲート(216)と、
前記少なくとも一つのデータ格納手段中のアドレスが指定された一つから導出される静的予測情報を受け取る入力と、分岐命令において識別される分岐が引き取られるか引き取られないかを示す情報(222)を受け取る入力と、前記分岐命令に対応する静的予測情報が正確であるかを示す分岐履歴更新出力(218)と、を有する第2論理ゲート(212)と、
を備えて前記分岐履歴更新出力を前記分岐履歴テーブルが受け取る分岐命令予測装置(200)。
【0064】
11.前記第1論理ゲート(216)と前記第2論理ゲート(212)とが排他的論理和である上記10記載の分岐命令予測装置(200)。
【0065】
【発明の効果】
以上の説明から明らかなように、本発明のマイクロプロセッサの分岐履歴テーブルに対する干渉を排除する方法およびその装置によれば、より正確な分岐予測が可能になり、かつこの結果で誤って予測された分岐によって生起する遅延を少なくできるようになる。
【図面の簡単な説明】
【図1】本発明のマイクロプロセッサの分岐履歴テーブルにおける干渉を排除する方法およびその装置の実施形態にかかる構成を示すブロック図である。
【図2】実施形態での処理方法にかかる処理手順を示すフローチャートである。
【図3】実施形態での処理方法にかかる他の処理手順を示すフローチャートである。
【図4】実施形態にあって分岐予測ハードウェアの構成を示すブロック図である。
【符号の説明】
100 分岐予測ハードウェア
102,202 命令取出ユニット
104 命令メモリ
106,204,206 命令実行ユニット
108,208,228 保持ユニット
110 分岐履歴テーブル
200 装置
210 デコードユニット
212 第2論理ゲート
214 分岐履歴テーブル
216 第1論理ゲート
300,400 処理方法

Claims (8)

  1. a.複数のエントリを含む分岐履歴テーブルを保持するステップと、
    b.複数の分岐命令に対する静的予測情報を保持するステップと、
    c.前記複数の分岐命令結果を予測するステップであって、予測された各結果が少なくとも部分的に、(i)複数の分岐命令の所定の1つに対応する静的予測情報と、(ii)前記分岐履歴テーブル内のエントリとの排他的論理和に対応しているステップと、
    d.前記複数の分岐命令の各々を実行後、静的予測情報が正しかったかどうかに応じて、前記分岐履歴テーブル内のエントリを少なくとも部分的に更新するステップと
    を含んでなるマイクロプロセッサにおいて実行される複数の分岐命令結果を予測する方法。
  2. a.複数のエントリを含む分岐履歴テーブルと、
    b.複数の分岐命令に対応する静的予測情報を格納する1以上のデータ格納位置と、
    c.(i)前記1以上のデータ格納位置のアドレス指定された1つから導かれる静的予測情報を受取るための入力と、(ii)前記分岐履歴テーブルの少なくとも1つのエントリから導かれる情報を受取るための入力と、(iii)前記複数の分岐命令の1つが引き取られているかどうかを示す分岐予測出力とを含む第1論理ゲートと、
    d.(i)前記1以上のデータ格納位置のアドレス指定された1つから導かれる静的予測情報を受取るための入力と、(ii)分岐命令内で識別された分岐が引き取られたかどうかを示す情報を受取るための入力と、(iii)分岐命令に対応する前記静的予測情報が正しかったかどうかを示す分岐履歴更新出力とを含む第2論理ゲートと
    を含んでなり、
    前記分岐履歴更新出力が、前記分岐履歴テーブルによって受取られる、複数の分岐命令内で識別された分岐が引き取られるかどうかを予測するためのマイクロプロセッサ内の装置。
  3. 前記分岐履歴テーブル内の前記複数エントリの各々が飽和型アップ/ダウンカウンタを含んでいる請求項2に記載の装置。
  4. マイクロプロセッサ内の分岐履歴テーブル内の干渉を低減する方法であって、
    a)i)分岐命令においてエンコードされた示唆と、
    ii)ある分岐履歴テーブル内のエントリと
    の少なくとも一部に対応して、コンピュータプログラム内の複数の分岐命令の結果を予測するステップと、
    b)与えられた分岐命令の実行後に、前記与えられた分岐命令においてエンコードされた前記示唆が正確であるかどうかに対応して、前記分岐履歴テーブル内のエントリを少なくとも部分的に更新するステップと
    を含んでなる方法。
  5. 前記分岐履歴テーブル内の1以上のエントリのそれぞれが、2以上の分岐命令に対応する請求項4に記載の方法。
  6. a)前記分岐履歴テーブル内の所定のエントリに対応して、与えられた分岐命令の結果を少なくとも部分的に予測するステップと、
    b)前記分岐命令の実行後に、前記分岐履歴テーブル内の所定のエントリを更新するステップと
    を含んでなる請求項4に記載の方法。
  7. a)飽和型のアップカウンタまたはダウンカウンタによって、前記分岐履歴テーブル内のエントリのそれぞれを保持するステップと、
    b)与えられた分岐命令を実行後に、
    i)もし、前記与えられた分岐命令においてエンコードされた前記示唆が正確であれば、前記分岐履歴テーブル内の所定の飽和型のアップカウンタまたはダウンカウンタを増加させるステップと、
    ii)もし、前記与えられた分岐命令においてエンコードされた前記示唆が不正確であれば、前記分岐履歴テーブル内の所定の飽和型のアップカウンタまたはダウンカウンタを減少させるステップと
    をさらに含む請求項4に記載の方法。
  8. a)シフトレジスタによって、前記分岐履歴テーブル内のエントリのそれぞれを保持するステップと、
    b)与えられた分岐命令の実行後に、前記与えられた分岐履歴命令においてエンコードされた前記示唆が正確であるかどうかの表示を前記分岐履歴テーブルのシフトレジスタへとシフトするステップと
    をさらに含む請求項4に記載の方法。
JP4009799A 1998-02-23 1999-02-18 マイクロプロセッサの分岐命令予測方法 Expired - Fee Related JP3594506B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/028,258 US6151672A (en) 1998-02-23 1998-02-23 Methods and apparatus for reducing interference in a branch history table of a microprocessor
US09/028-258 1998-02-23

Publications (2)

Publication Number Publication Date
JPH11282677A JPH11282677A (ja) 1999-10-15
JP3594506B2 true JP3594506B2 (ja) 2004-12-02

Family

ID=21842425

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4009799A Expired - Fee Related JP3594506B2 (ja) 1998-02-23 1999-02-18 マイクロプロセッサの分岐命令予測方法

Country Status (4)

Country Link
US (2) US6151672A (ja)
EP (1) EP0938044B1 (ja)
JP (1) JP3594506B2 (ja)
DE (1) DE69805275T2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189091B1 (en) 1998-12-02 2001-02-13 Ip First, L.L.C. Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US7069426B1 (en) * 2000-03-28 2006-06-27 Intel Corporation Branch predictor with saturating counter and local branch history table with algorithm for updating replacement and history fields of matching table entries
US6859875B1 (en) * 2000-06-12 2005-02-22 Freescale Semiconductor, Inc. Processor having selective branch prediction
US20030131345A1 (en) * 2002-01-09 2003-07-10 Chris Wilkerson Employing value prediction with the compiler
US7143272B2 (en) * 2002-12-27 2006-11-28 Intel Corporation Using computation histories to make predictions
JP4009248B2 (ja) * 2003-12-05 2007-11-14 富士通株式会社 分岐予測装置および分岐予測方法
GB2428842A (en) * 2004-05-19 2007-02-07 Arc Int Microprocessor architecture
JP4134179B2 (ja) * 2005-02-04 2008-08-13 株式会社ソニー・コンピュータエンタテインメント ソフトウエアによる動的予測方法および装置
US7747088B2 (en) 2005-09-28 2010-06-29 Arc International (Uk) Limited System and methods for performing deblocking in microprocessor-based video codec applications
US8205200B2 (en) * 2005-11-29 2012-06-19 Intel Corporation Compiler-based scheduling optimization hints for user-level threads
US8301871B2 (en) * 2006-06-08 2012-10-30 International Business Machines Corporation Predicated issue for conditional branch instructions
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
KR100817056B1 (ko) * 2006-08-25 2008-03-26 삼성전자주식회사 분기이력 길이표시기, 분기예측 시스템 및 분기 예측 방법
US7877586B2 (en) * 2008-02-01 2011-01-25 International Business Machines Corporation Branch target address cache selectively applying a delayed hit
US7865705B2 (en) * 2008-02-01 2011-01-04 International Business Machines Corporation Branch target address cache including address type tag bit
US7844807B2 (en) 2008-02-01 2010-11-30 International Business Machines Corporation Branch target address cache storing direct predictions
US8086831B2 (en) * 2008-02-01 2011-12-27 International Business Machines Corporation Indexed table circuit having reduced aliasing
US7962722B2 (en) * 2008-02-01 2011-06-14 International Business Machines Corporation Branch target address cache with hashed indices
US7937573B2 (en) * 2008-02-29 2011-05-03 Freescale Semiconductor, Inc. Metric for selective branch target buffer (BTB) allocation
US7895422B2 (en) * 2008-02-29 2011-02-22 Freescale Semiconductor, Inc. Selective postponement of branch target buffer (BTB) allocation
US8205068B2 (en) * 2008-07-29 2012-06-19 Freescale Semiconductor, Inc. Branch target buffer allocation
JP5552042B2 (ja) 2010-12-27 2014-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム解析の方法、システムおよびプログラム
US11163577B2 (en) 2018-11-26 2021-11-02 International Business Machines Corporation Selectively supporting static branch prediction settings only in association with processor-designated types of instructions
US10956164B2 (en) * 2018-11-27 2021-03-23 International Business Machines Corporation Gating updates to branch predictors to reduce pollution from infrequently executed branches
US11334361B2 (en) * 2020-03-02 2022-05-17 Arm Limited Shared pointer for local history records used by prediction circuitry

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5740416A (en) * 1994-10-18 1998-04-14 Cyrix Corporation Branch processing unit with a far target cache accessed by indirection from the target cache
US5687360A (en) * 1995-04-28 1997-11-11 Intel Corporation Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US5901307A (en) * 1996-07-22 1999-05-04 International Business Machines Corporation Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
JP3760041B2 (ja) * 1996-12-09 2006-03-29 松下電器産業株式会社 分岐予測する情報処理装置
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer

Also Published As

Publication number Publication date
EP0938044B1 (en) 2002-05-08
US6353882B1 (en) 2002-03-05
JPH11282677A (ja) 1999-10-15
DE69805275T2 (de) 2002-10-02
EP0938044A3 (en) 2000-03-08
EP0938044A2 (en) 1999-08-25
US6151672A (en) 2000-11-21
DE69805275D1 (de) 2002-06-13

Similar Documents

Publication Publication Date Title
JP3594506B2 (ja) マイクロプロセッサの分岐命令予測方法
US5687360A (en) Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction
KR100395763B1 (ko) 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
US6970997B2 (en) Processor, multiprocessor system and method for speculatively executing memory operations using memory target addresses of the memory operations to index into a speculative execution result history storage means to predict the outcome of the memory operation
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
JP2875909B2 (ja) 並列演算処理装置
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
JP2004533695A (ja) 分岐目標を予測する方法、プロセッサ、及びコンパイラ
US6397326B1 (en) Method and circuit for preloading prediction circuits in microprocessors
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
US20040117606A1 (en) Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
US6883090B2 (en) Method for cancelling conditional delay slot instructions
US5926634A (en) Limited run branch prediction
EP0778519B1 (en) Multiple instruction dispatch system for pipelined microprocessor without branch breaks
US6484256B1 (en) Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
US8683178B2 (en) Sharing a fault-status register when processing vector instructions
KR100305487B1 (ko) 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템
US6859874B2 (en) Method for identifying basic blocks with conditional delay slot instructions
US20020174328A1 (en) Method for cancelling speculative conditional delay slot instructions
US6898698B1 (en) Device predicting a branch of an instruction equivalent to a subroutine return and a method thereof
JPH07262006A (ja) 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ
JP4533432B2 (ja) Tlb相関型分岐予測器及びその使用方法
WO1998002805A1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions
WO1998002806A1 (en) A data address prediction structure utilizing a stride prediction method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040805

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040831

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060425

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

Free format text: PAYMENT UNTIL: 20080910

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees