JPH07160500A - 推論的実行を行うマイクロプロセッサ - Google Patents
推論的実行を行うマイクロプロセッサInfo
- Publication number
- JPH07160500A JPH07160500A JP6251992A JP25199294A JPH07160500A JP H07160500 A JPH07160500 A JP H07160500A JP 6251992 A JP6251992 A JP 6251992A JP 25199294 A JP25199294 A JP 25199294A JP H07160500 A JPH07160500 A JP H07160500A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- stage
- processor
- execution
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 35
- 230000008439 repair process Effects 0.000 claims description 37
- 238000000034 method Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 3
- 230000002401 inhibitory effect Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 230000008859 change Effects 0.000 abstract description 11
- 239000000872 buffer Substances 0.000 description 77
- 239000013598 vector Substances 0.000 description 25
- 238000013519 translation Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000011010 flushing procedure Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000005352 clarification Methods 0.000 description 2
- 239000013310 covalent-organic framework Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000033607 mismatch repair Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 210000005100 blood-tumour barrier Anatomy 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005187 foaming Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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)
Abstract
ための構造と方法を得ること。 【構成】命令発生段、実行段及び少なくとも1つの中間
処理段を含む実行パイプラインを備えたプロセッサであ
って、中間処理段と実行段が該当段における命令処理に
よって変更される変更可能なプロセッサリソースを含ん
でいる。本プロセッサはブランチ命令を選択的に発生
し、次いでプランチの予測方向におけるその後の命令を
発生して推論処理する。プロセッサはブランチ処理手
段、推論制御手段及びチェックポイント設定手段を含
む。ブランチ処理手段はブランチの方向を予測し、推論
制御手段は命令発生手段を選択的に指示してブランチ命
令を発生させ、次いで、そのブランチ命令が解明される
前に、関連の変更可能なプロセッサリソースを変更する
ことを含め、少なくとも1つの中間段で推論的に処理さ
れる。
Description
ジタルプロセッサに関し、特にパイプライン式プロセッ
サで推論実行を行うための構造と方法に関する。例示の
実施例では、ブランチ及び浮動小数点装置に発せられる
浮動小数点命令のための推論実行が、X86命令セット
アーキテクチャと互換可能な超スカラー、超パイプライ
ン式マイクロプロセッサについて確認される。
時間を短くするためパイプライン方式を用いている。実
行パイプラインは複数のパイプ段に分割される−−つま
り命令が各段で実行され、複数の命令がパイプライン内
で重複可能となる。その目的は、ある命令に関連した全
ての演算を各パイプ段が1クロックサイクルで完了し、
各命令が連続的に次のパイプ段へと進行して、1つの命
令が実行を各クロックサイクルで完了するようになすこ
とにある。パイプラインの性能は、パイプ段がその演算
を1クロックサイクル内で完了するのを妨げる障害によ
って著しく影響され、パイプの立ち往生や泡立ちを引き
起こす。パイプラインの障害は一般に次の3つに分類さ
れる:(a)ハードウェアリソースの衝突から生じる構
造的障害;(b)ある命令が前の命令の結果に依存する
ことから生じるデータ障害;及び(c)命令ストリーム
の流れを変える事象−−流れ変更命令及び例外から生じ
る制御障害。流れ変更(COF)障害はパイプラインの
性能に著しく影響を及ぼし、一般に命令混合体の15−
30%に達する。例えばX86命令セットアーキテクチ
ャにおいて、COFは平均して4から6個の命令毎に発
生する。COF命令はブランチ(ループを含む)、ジャ
ンプ、及びコール/リターンを含む−−このうちブラン
チは条件付で、(例えば各件コードの状態に応じ)分岐
が行われたり行われなかったりし、一方ジャンプ及びコ
ール/リターンは無条件で(必ず行われる)。分岐のブ
ランチと無条件のCOF(UCOF)は命令ストリーム
を中断させ、命令の取り出しを目標アドレスから行わせ
る。
断とも称す)はプログラムの実行を中断させ、例外ハン
ドラを呼び出す。用語の一貫性のため、例外(または不
良)は(外部事象によって生じる割込である中断と区別
して)、命令の実行に基因したプログラムの流れの中断
とする。例外は、命令がCPU(中央演算装置)のコア
あるいは浮動小数点装置など別の実行装置で実行されて
いるときに生じ得る。発明の範囲を制限することなく、
ここでの背景情報は発明が適用される一般的問題に即し
て与えられる:X86命令セットを実行するパイプライ
ン式CPU(中央演算装置)では、予測されたブランチ
及び浮動小数点装置に送られる浮動小数点命令の後に発
せられた命令を推論的に実行し、ブランチが誤って予測
されたりあるいは浮動小数点命令が誤っていると、プロ
セッサの状態を修復する。ブランチと例外は制御障害命
令として定義され、例えば外部からのハードウェア割込
と区別される。ブランチは制御障害命令のうち最も予測
可能で一般的なものであり、コンピュータの設計者はパ
イプライン式プロセッサの性能に及ぼすブランチの影響
を減らすため努力を集中してきた。推論実行は、ブラン
チ(またはその他の制御障害命令)を推論的に発生し、
プロセッサの状態(命令ポインタ、スタックポインタ、
レジスタ、条件コード、フラグ)が変わるように、それ
らの命令を推論的に実行することを含む。推論実行を保
証するためには、推論が誤っていると分かったら、推論
発生の時点におけるプロセッサの状態を復帰する修復が
必要である。
停止を減らすため、一部のコンピュータアーキテクチャ
では、次の命令の予測アドレス−−分岐されないと予測
されたブランチの失敗アドレスまたは分岐されると予測
されたブランチの目標アドレス−−を記憶する目標キャ
ッシュを含むブランチ目標バッファ(BTB)用いてい
る。BTBは、ブランチが行われるか行われないかを予
測し、また予測されたブランチを解明し且つ誤った予測
を修復するためのブランチ予測及びブランチ解明両ロジ
ックを含む。ブランチ予測ロジックは、ブランチに関す
るそれまでの分岐/非分岐履歴に基づいて予測アルゴリ
ズムを実行する。ブランチ解明ロジックは入力(条件コ
ードなど)を受け取り、ブランチが実際に行われたかど
うかを解明し、誤って予測されたブランチを修復する。
誤って予測されたブランチの修復は、誤って予測された
方向における命令の実行を終了し、計算機の状態を復帰
し、正しい命令から実行を再スタートすることを含む−
−ブランチの誤予測は、ブランチを正しく予測する代わ
りにブランチを誤って予測したために失われたクロック
数に対応するブランチペナルティをもたらす。
キテクチャは、ブランチ命令が解明されるまで(すなわ
ちブランチの実際の方向が分かるまで)命令の実行を開
始せず、ブランチの予測方向における命令の推論実行を
サポートしていない。つまりブランチがデコードされB
TBが方向を予測した後、予測方向の命令が取り出され
てデコードされるが、ブランチが解明されるまでそれら
の命令は、(命令ポインタ以外の)プロセッサ状態が変
わっているいずれのパイプ段にも推論的に発せられな
い。
発生段、実行段及び少なくとも1つの中間処理段を含む
実行パイプラインを備えたパイプライン式プロセッサで
あって、中間処理段と実行段が該当段における命令処理
によって変更される変更可能なプロセッサリソースを含
んでいる。本プロセッサはブランチ命令を選択的に発生
し、次いでブランチの予測方向におけるその後の命令を
発生して推論処理する。本発明の一態様において、プロ
セッサはブランチ処理手段、推論制御手段、及びチェッ
クポイント設定手段を含む。ブランチ処理手段はブラン
チ命令の方向を予測し、次いで実際の予測ブランチ方向
が正しいかどうかを、実行段の最中あるいはその後に判
定することによってブランチを解明する。推論制御手段
は命令発生段を選択的に指示してブランチ命令を発生さ
せ、次いでそのブランチ命令が解明される前に、ブラン
チの予測方向における少なくとも1つの推論命令を発生
し、その推論命令がブランチの解明前に、関連の変更可
能なプロセッサリソースを変更することを含め、少なく
とも1つの中間段で推論的に処理されるようにする。
々、該当段用の変更可能なプロセッサリソースにチェッ
クポイントを設定するチェックポイント設定手段が付設
されている。推論制御手段は、ブランチ命令を処理する
各段毎のチェックポイント設定手段に指示し、(i)変
更される変更可能なプロセッサリソースにチェックポイ
ントを設定させ、またブランチの誤った予測に応じ、
(ii)対応するチェックポイント設定された変更可能な
プロセッサリソースを用いプロセッサの状態を復帰して
該当段を修復させることによって、推論命令の処理を制
御する。発明の別の態様において、プロセッサは次の各
ステップを含む推論実行の方法を実施する:(a)各ブ
ランチ命令毎に、ブランチ命令の方向を予測し、実際の
予測ブランチ方向が正しいかどうかを、前記実行段の最
中あるいはその後に判定することによってブランチを解
明する;(b)前記命令発生段を選択的に指示してブラ
ンチ命令を発生させ、次いでそのブランチ命令が解明さ
れる前に、ブランチの予測方向における少なくとも1つ
の推論命令を発生させ、ブランチの解明前に、関連の変
更可能なプロセッサリソースを変更することを含め、少
なくとも1つの前記中間段において推論命令が推論的に
処理される;(c)前記実行段と少なくとも1つの前記
中間段の各々において、変更される変更可能なプロセッ
サリソースにチェックポイントを設定し、またブランチ
の誤って予測に応じて、対応するチェックポイント設定
された変更可能なプロセッサリソースを用いプロセッサ
の状態を復帰して該当段を修復することにより、推論命
令の処理を制御する。
段は、チェックポイント設定手段に指示してプロセッサ
の状態を復帰させる修復コマンドを各チェックポイント
設定手段に伝送して修復を実施し、これにより各チェッ
クポイント設定手段がほぼ同時に復帰を開始可能とす
る。発明の別の態様において、前記推論制御手段は、発
生されたが解明されていないブランチ命令数のカウント
を維持すると共に、未決着の解明されていないブランチ
命令の数が最大数に等しいと、前記命令発生段からのブ
ランチ命令の発生を禁止する推論レベル手段を含む。発
明の別の態様において、前記推論制御手段は命令発生手
段に選択的に指示してブランチ命令を発生させ、次いで
そのブランチ命令の解明前に、その命令が所定の発生制
約に該当する場合しなければ、ブランチの予測方向にお
ける少なくとも1つの推論命令を発生させる。また発明
の別の態様において、少なくとも1つの段の前記チェッ
クポイント設定手段が、対応する変更可能なプロセッサ
リソースのサブセットだけをチェックポイント設定し、
前記所定の発生制約が、該当段における命令の処理がチ
ェックポイント設定されていないプロセッサリソースを
変更する場合、前記推論制御手段が推論的であるどんな
命令も発生しないようにすることである。
の技術的利点の1つ以上を実現するように実施し得る。
命令が、1つ以上の制御障害命令(ブランチ及び浮動小
数点命令など)を越えて推論的に発生される。(マルチ
推論レベルが許容される)。推論実行が実行段を含む複
数のパイプ段を介して許容され、推論発生された命令の
実行を完了可能とする。複数のパイプ段が、独立にチェ
ックポイント設定される。チェックポイント設定された
各パイプ段へ修復コマンドを伝送することによって、パ
イプラインの修復を1クロックで行える。推論実行が、
顕著な例外待ち時間を有する例外潜伏命令(浮動小数点
など)を越えて許容され、該当の命令後に推論発生され
た命令の実行完了後に、それらの命令が誤りを生じるこ
ともある。推論実行を一定の条件下に制限するように、
選定された発生の制約を選定命令種の推論発生に割り当
てることができる。計算機全体をチェックポイント設定
しなくてよいように、選定命令種に係わるプロセッサリ
ソースの選定されたサブセット(選定されたレジスタ、
命令及びスタックポインタ、条件コードなど)に、チェ
ックポイント設定を限定することもできる。発明のより
完全な理解のため、また上記以外の特徴及び利点につい
ては、添付の図面も併せ、発明の例示の実施例に関する
以下の詳細な説明を参照されたい。尚、本発明は特許請
求の範囲に記載の範囲内に入るどんな変形あるいは代替
実施例も包含するものである。
論実行を行う例示の実施例の詳細な説明は、下記のよう
に編成される: 1.例示のプロセッサシステム 1.1.マイクロプロセッサ 1.2.システム 2.推論実行 2.1.用語 2.2.ブランチ処理装置 2.3.推論発生 2.3.1.ブランチ 2.3.2.浮動小数点 2.4.影響されるリソース 2.5.発生の制約 3.プロセッサの状態 3.1.推論レベル 3.2.チェックポイントの設定 3.3.結果 4.解明/修復 4.1.順序外撤収 4.2.1クロック修復 5.結論 上記の編成概要及び以下の詳細な説明で用いる対応した
見出しは、参照の際の便宜上にのみ与えたものである。
ーキテクチャ(ISA)と互換可能な超スカラー、超パ
イプライン式マイクロプロセッサである。不必要に詳し
くして発明の説明を不明瞭にしないように、マイクロプ
ロセッサシステムの従来または既知の特徴に関する詳細
な説明は省略する。特に、X86コンピュータアーキテ
クチャに関連した一部の用語(レジスタ名、信号の命名
など)は、マイクロプロセッサの設計分野の従事者にと
って周知のものである。 1.例示のプロセッサシステム 例示のプロセッサシステムが、図1と図2及び図3に示
してある。図1と図2はそれぞれ、例示の超スカラー、
超パイプライン式マイクロプロセッサの基本機能ブロッ
クを、2つの実行パイプラインの各パイプ段と共に示
す。図2は、そのマイクロプロセッサを用いた例示のプ
ロセッサシステム(マザーボード)の設計を示す。 1.1.マイクロプロセッサ 図1を参照すると、マイクロプロセッサ10の主なサブ
ブロックは次のものを含む:(a)CPUコア20、
(b)プリフェッチバッファ30、(c)プリフェッチ
ャ35、(d)BPU(ブランチ処理装置)40、
(e)ATU(アドレス変換装置)50、及び(f)タ
ブRAM62を含む、16キロバイトの一体化コード/
データキャッシュ60。256バイトの命令ラインキャ
ッシュ65が、命令取り出し(フェッチ)を二次的命令
キャッシュとして動作する一体化キャッシュに一致させ
る一次的命令キャッシュを与える。オンボードの浮動小
数点装置(FPU)70が、CPUコア20からそこに
発せられる浮動小数点命令を実行する。
アドレス及び64ヒットデータ両バスADSとDATA
を用いる。一体化キャッシュ60及び命令ラインキャッ
シュ65の32バイトラインサイズに対応した256ビ
ット(32バイト)プリフェッチバスPFBが、フルラ
イン32命令バイトを1クロックで命令ラインキャッシ
ュへと転送可能とする。外部の32ビットアドレス及び
64ビットデータ両バスとのインタフェースは、バスイ
ンタフェース装置BIUを介してなされる。CPUコア
20は、2つの実行パイプXとYを備えた超スカラー設
計である。CPUコア20は命令デコーダ21、アドレ
ス計算(AC)装置22Xと22Y、実行装置23Xと
23Y、32個の32ビットレジスタを備えたレジスタ
ファイル24を含む。AC制御装置25は、レジスタス
コアボード及びレジスタ名称変更ハードウェアを備えた
レジスタ変換装置25aを含む。マイクロシーセンサと
マイクロロムを含むマイクロ制御装置26が、実行制御
を行う。CPUコア20からの書込は12個の32ビッ
ト書込バッファ29内にキュー登録される−−書込バッ
ファの割当はAC制御装置25によって行われる。これ
らの書込バッファが一体化キャッシュへの書込用インタ
フェースを与える−−キャッシュ不能な書込は書込ブッ
ファから外部メモリへ直接進む。書込バッファロジック
が、任意の読取供給と書込収集をサポートしている。
命令の流れを制御し、これには命令が例外、命令ストリ
ームでの押し合い泡立ち、及び誤って予測されたブラン
チ及び例外を生じた命令の背後における実行パイプのフ
ラッシュを生じないと判定される程度に、命令の順序を
保つことを含む。各段毎に、パイプ制御装置が最も早期
の命令をどの実行パイプが含んでいるかを追跡すると共
に、停止出力を与えまた遅延入力を受け取る。BPU4
0が(分岐されるまたは分岐されない)ブランチの方向
を予測し、分岐されると予測されたブランチ及び無条件
の流れ変更命令(ジャンプ、コール、リターン)の目標
アドレスを与える。さらにBPU40は、ブランチと浮
動小数点命令の場合における推論実行、すなわち誤予測
と解明されるかもしれないブランチ以後に推論発生され
た命令、及び推論発生された命令が実行を完了した後に
誤っていると解明されるかも知れないFPUに発せられ
た浮動小数点命令の実行をモニターする。浮動小数点命
令が誤っているか、あるいはブランチが誤って予測され
ていると、(これはブランチのEXまたはWB段まで分
からない)、実行パイプラインを誤っているあるいは誤
予測された命令の時点まで修復し(すなわち実行パイプ
ラインをその命令以後でフラッシュし)、命令取り出し
を再スタートしなければならない。
たは予測されたブランチ命令が各パイプ段に入ったと
き、該当段におけるプロセッサ状態のチェックポイント
を設定することによってなされる。これらのチェックポ
イント設定命令については、後続する推論発生命令によ
って変更可能なすべてのリソース(プログラマから見え
るレジスタ、命令ポインタ、条件コードレジスタ)がチ
ェックポイント設定される。チェックポイント設定され
た浮動小数点命令が誤っているか、あるいはチェックポ
イント設定されたブランチが誤って予測されていると、
そのチェックポイント設定命令以後で実行パイプライン
がフラッシュされる−−浮動小数点命令の場合これは一
般に実行パイプライン全体のフラッシュを意味する一
方、誤予測ブランチの場合には、完了が許容されていた
EX内の対命令及びWB内の2つの命令がフラッシュさ
れればよい。例示のマイクロプロセッサ10の場合、推
論度に関する原理上の制約は次の通りである:(a)推
論実行は1回に4つまでだけの浮動小数点またはブラン
チ命令について許容される(すなわち推論レベルは最大
4)、及び(b)書込あるいは浮動小数点の記憶(スト
ア)は、関連のブランチまたは浮動小数点命令が解明さ
れるまで(すなわち予測が正しいと解明されるか、浮動
小数点命令が誤っていないと解明されるまで)、キャッ
シュまたは外部メモリに対して完了しない。
ルゴリズムを用いた、書込スルー及び書込パック両モー
ドによる4方向セット連関(associative)方式(セット
サイズ4k)である。また一体化キャッシュ60は、ク
ロック毎に2種のメモリアクセス(データ読取、命令取
り出し、またはデータ書込)を可能とする(バンク分割
による)デュアルポート方式である。命令ラインキャッ
シュ65は疑似LRU置換アルゴリズムを用いた。(一
体化キャッシュに対する)完全連関、ルックアサイド方
式である。FPU70は、深さ4のロード及びストアキ
ューを備えたロード/ストア段、変換段(32ビットか
ら80ビットの拡張フォーマット)、及び実行段を含
む。ロードはCPUコア20によって制御され、キャッ
シュ可能なストアは書込バッファ29を介して指示され
る(つまり書込バッファは浮動小数点の各ストア動作毎
に割り当てられる)。図2を参照すると、マイクロプロ
セッサは7段のX及びY実行パイプラインを含む:命令
取り出し段IF、2つの命令デコード段ID1とID
2、2つのアドレス計算段AC1とAC2、実行段E
X、及び書込バック段WB。尚、複雑な命令デコードI
D及びアドレス計算ACの各パイプ段は超パイプライン
化されている。
PUコア20に与える。プリフェッチャ35が16バイ
トの命令データを、(一次的)命令ラインキャッシュ6
5または(二次的)一体化キャッシュ60からプリフェ
ッチバッファ30に取り出す。BPU40がプリフェッ
チアドレスによってアクセスされ、流れの予測変化に関
する目標アドレスをプリフェッチャに供給し、プリフェ
ッチャが新たなコードストリームを1クロックでシフト
するのを可能とする。デコード段ID1とID2は、可
変長のX86命令セットをデコードする。命令デコーダ
21が各クロック毎に、16バイトの命令データをプリ
フェッチバッファ30から検索する。ID1では、2つ
の命令の長さがデコードされ(X及びY命令パイプ毎に
1つの命令)、X及びY命令ポインタを得る−−対応し
たX及びYパイト使用信号がプリフェッチバッファに送
り戻され(そして次の16バイト転送のためプリフェッ
チバッファがインクレメントされる)。またID1にお
いては、流れの変更など一部の命令種が識別され、即値
及び/又は置換オペランドが分離される。ID2段は、
X及びY命令のデコード、マイクロロム用人口点の発
生、及びアドレスモード及びレジスタフィールドのデコ
ードを完了する。
判定され、命令がそのパイプに発せられる。パイプ切り
替えが、ID2XからAC1Yへ及びID2YからAC
1Xへ命令を切り替え可能とする。例示の実施例の場
合、一部の命令はXパイプラインにだけ発せられる:流
れ変更命令、浮動小数点命令、及び排他的命令。排他的
命令は次のものを含む:EXパイプ段で誤るかもしれな
い命令、及び保護モードのセグメントロード、ストリン
グ命令、特殊のレジスタアクセス(制御、デバグ、テス
ト)乗算/除算、入力/出力、PUSHA/POPA
(PUSHオール/POPオール)、及びタスク切り替
え。排他的命令は、ID段からだけ発生されるので、
(すなわち他のどんな命令とも対にされないので)、両
パイプのリソースを使用可能である。上記の発生制約を
除き、いずれの命令も対にしてXまたはYパイプへ発生
可能である。アドレス計算段AC1とAC2はメモリ参
照のためのアドレスを計算し、メモリオペランドを供給
する。AC1段はクロック毎に、2つの32ビット線形
(3オプランド)アドレスを計算する(比較的まれであ
るが、4オペランバアドレスで2クロックを要すること
もある)。このパイプ段中、(レジスタ名称変更ハード
ウェアを含む)レジスタ変換装置25aを用いて、デー
タの依存性もチェックされ解明される−−X86アーキ
テクチャで定義されている8つのプログラマから見える
汎用論理レジスタ(EAX、EBX、ECX、EDX、
EDI、ESI、EBP、ESP)をマップするのに、
32個の物理レジスタ24が使われる。
レジスタ(X86で定義されたレジスタセットを表す)
を含み、これらレジスタはAC装置により、アドレス計
算のためのレジスタオペランドへアクセスする前にAC
1内でレジスタ変換装置ヘアクセスするのに必要な遅延
を避けるために使われる。アドレス計算を必要とする命
令の場合、AC1はアーキテクチャレジスタへアクセス
する前に、それらレジスタ内の必要なデータが有効にな
るまで待つ(書込後の読取依存性なし)。AC2段中、
ソースオペランドはレジスタファイル26と一体化キャ
ッシュ60へ物理アドレスでアクセスすることによって
得られる(キャッシュヒットの場合、デュアルポート式
一体化キャッシュでのキャッシュアクセス時間はレジス
タのアクセス時間と同じで、レジスタセットを有効に拡
張する)−−物理アドレスは線形アドレスか、あるいは
アドレス変換が可能であれば、ATU50によって発生
された変換アドレスである。変換アドレスは、メモリ内
のページテーブル及びチップ上の作業スペース制御レジ
スタからの情報に基づき、(TLBつまり変換ルックア
サイドバッファを用いた)ATU50により線形アドレ
スから発生される。一体化キャッシュが仮想的に指標付
けされ且つ物理的にタグ付けされ、アドレス変換が可能
なとき、(AC1の終わりで得られる)変換アドレスに
よるセット選択と、各セット毎の(AC2に初めに得ら
れる)ATUからの変換アドレスとのタグ比較とを可能
とする。区分及び/又はアドレス変換の何等かの違反に
関するチェックも、AC2で行われる。
るまで、プログラムの順序通りに保たれる。ほとんどの
命令の場合、その判定はAC2中またはその前に行われ
る−−浮動小数点命令及び一部の排他的命令は実行中に
例外を生じることがある。命令はAC2からEXに(あ
るいは浮動小数点命令の場合はFPUに)順序通り導か
れる−−なぜならEX内で尚例外を生じるかもしれない
整数命令は例外と指定され、両方の実行パイプ内に発せ
られるだけなので、例外を順序通り扱うこと(すなわち
例外を正確に維持すること)が保証される。例外段EX
XとEXYは、命令によって定義された演算を行う。各
命令はEX内で可変数のクロックを費やす、すなわち各
命令は順序を外れて実行すること(順序外完了)が許容
される。両EX段は加算、論理及びシフトの各機能装置
を含み、さらにEXX段は乗算/除算ハードウェアを含
む。書込バック段WBは、前に実行された命令の結果に
よって、レジスタファイル24、状態コード、及びマシ
ン状態のその他の部分を更新する。レジスタファイルは
WBのPH1(位相1)で書き込まれ、AC2のPH2
(位相2)で読み取られる。
8つの命令の流れを示し、これはパイプライン化の主な
利点−−つまり個々の命令の実行時間を減少することな
く、クロック毎に完了される命令の数を増大すること、
を示すように理想化されている。図示のごとく、いずれ
の段も1より多い内部クロックサイクル(2x外部クロ
ック)を必要としない−−実際の動作では、1つ以上の
段が完了するのに追加のクロックサイクルを必要とし、
それによって別のパイプ段を通る命令の流れを変えるこ
とがある。また、一方のパイプラインを通る命令の流れ
が、他方のパイプラインを通る命令の流れに依存するこ
ともある。 1.2.システム 図4を参照すれば、例示の実施例では、マイクロプロセ
ッサ10がシングルチップメモリ及びバスコントローラ
82を含むプロセッサシステムで使われる。メモリ/バ
スコントローラ82は、マイクロプロセッサと外部メモ
リサブシステム−−レベル2のキャッシュ84と主メモ
リ86−−間のインタフェースを与え、64ビットのプ
ロセッサデータバスPDを介したデータの動きを制御す
る(データ経路はコントローラの外部に位置し、そのビ
ン数とコストを減少している)。
バスPADDRに直接インタフェースし、コントローラ
内のレジスタを読み取り及び書き込むための1ビット幅
のデータポート(図示せず)を含む。双方向性の隔離バ
ッファ88が、マイクロプロセッサ80とVL及びIS
A両バス間のアドレスインタフェースを与える。またコ
ントローラ82は、VL及びISA両バスインタフェー
スの制御を行う。VL/ISAインタフェースチップ9
1(HT321など)が、32ビットのVLバス及び1
6ビットのISAバスに対して標準のインタフェースを
与える。ISAバスがBIOS92、キーボードコント
ローラ93、I/Oチップ94、及び標準のISAスロ
ット95に対してインタフェースする。インタフェース
チップ91は、デュアル高/低ワード〔31:16〕/
〔15:0〕隔離バッファによって形成された双方向性
の32/16マルチプレクサ96を介して32ビットの
VLバスに対してインタフェースする。VLバスは標準
のVLスロット97に対して、また双方向性の隔離バッ
ファ98を介し64ビットプロセッサデータバスPDの
低ダブルワード〔31:0〕に対してインタフェースす
る。 2.推論実行 図1と図2を参照すれば、一般に、マイクロプロセッサ
10はブランチ命令(ブランチ)及び浮動小数点命令
(フロート)の両方の場合に推論実行をサポートする。
つまり、ブランチまたはフロートに続く命令が、実行パ
イプラインを進行して実行を完了することが推論的に許
容される。
の推論実行が、ID、AC1及びEXでプロセッサの状
態(プロセッサリソース)を変更することがある。レジ
スタファイルの内容はAC2で読み取られ、EXで使わ
れ、次いで結果がWB(PH1)で書き戻される。ブラ
ンチはWBより遅くなる前に(レジスタファイルへの書
き戻し前に)解明される−−フロートは推論発生された
続く命令がWBを完了した後誤ることもある。例示の実
施例の場合、推論実行は推論結果をレジスタファイルに
書き込み、また推論実行が継続する際、それらの推論結
果を読み取ることにまで拡張される。メモリ(キャッシ
ュ)は推論的に変更されないが、その代わり、対応する
推論指令が解明されなかった書込(及び浮動小数点のス
トア)が(プリキャッシュ)書込バッファ29にキュー
登録される−−これら未決着の書込は未解決の推論命令
が解明されると撤収される。ブランチが誤って予測され
るか(これはブランチ命令の場合EXまたはWB段まで
分からない)、あるいはフロートが誤ると(これはFP
Uへの発生後数十クロックまたは数百クロックにさえな
ることもある)、実行パイプラインは誤っているあるい
は後予測された命令の時点まで修復され(すなわちその
命令以後の実行パイプラインがフラッシュされ)、命令
の取り出しが再スタートされねばならない。パイプライ
ンの修復は、予測されたブランチまたはフロートが各パ
イプ段に入ったとき、該当段におけるプロセッサ状態の
チェックポイントを設定することによってなされる。こ
れらのチェックポイント設定命令については、後続する
推論発生命令によって変更可能なすべてのリソース(プ
ログラマから見えるレジスタ、命令ポインタ、条件コー
ドレジスタ)がチェックポイント設定される。チェック
ポイント設定された浮動小数点命令が誤っているか、あ
るいはチェックポイント設定されたブランチが誤って予
測されていると、そのチェックポイント設定命令以後で
実行パイプラインがフラッシュされる−−フロートの場
合これは一般に実行パイプライン全体のフラッシュを意
味する一方、誤予測ブランチの場合には、完了が許容さ
れていたEX内の対命令及びWB内の2つの命令がフラ
ッシュされればよい。 2.1.用語 推論実行とは、ブランチまたはフロート(あるいはその
他の制御障害命令)以後の命令を推論的に発生するこ
と、及びプロセッサの状態(命令ポインタ、スタックポ
インタ、レジスタ、状態コード、フラグ)が変化するよ
うに、上記の命令を推論的に実行することを意味する。
推論命令という用語は、ブランチ、UCOF(無条件の
流れ変更)またはフロート(あるいはその他の制御障害
命令)を称する一方、推論発生される及び推論実行され
る命令という用語は推論命令後に発生する命令を称す
る。推論エラーとは、ブランチの誤って予測または浮動
小数点の例外のことである。推論命令はその実行から推
論エラーが生じなければ撤収される−−推論エラーが生
じたら、プロセッサの状態を該当の推論命令が発生した
時点にまで回復し、実行パイプラインを修復しなければ
ならない。推論レベルとは、ある所定の時点で決着され
ていない未解明の推論命令の数である。 2.2.ブランチ処理装置 例示のマイクロセッサの場合、ブランチ処理装置は、
(a)ブランチ(及びUCOF)及びフロートの発生を
制御すること、及び(b)プロセッサ状態の復帰を含
め、パイプラインの修復を可能とするプロセッサリソー
スのチェックポイント設定を制御することを通じて、推
論実行の制御を行う。
0、特に解明制御ロジック102によって与えられる。
解明制御装置が解明バッファ104の割当を制御し、推
論レベルは推論レベルロジック106によって維持され
る。推論レベルロジックは、実行パイプラインの現在の
推論レベルを識別する(これは解明バッファの各々につ
いて有効なビットから得られる)。未決着の推論命令
(ブランチ、UCOF、及びフロート)が解明される
と、パイプ段の推論レベルは:(a)撤収の場合、減少
され、あるいは(b)ブランチの誤予測または浮動小数
点の例外の場合、命令の再スタートに備えて最も低いレ
ベルに設定される(尚浮動小数点の推論命令が未決着の
場合、続くブランチの誤予測がその命令に影響を及ぼす
必要はなく、推論レベルをブランチのレベルに減らすだ
けでよい)。図7は1つの実行パイプラインだけを示し
ている−−BPUはX及びY両パイプについて推論制御
を行うが、両パイプに対する実施内容は同等である。推
論実行をサポートするため、解明制御ロジック102
は、(a)推論バッファ104の割当を通じて推論命令
の発生を制御し、また(b)4つの推論制御ベクトル1
10:つまり(1)チェックポイント111、(2)解
明112、(3)パイプライン修復113、及び(4)
目標不一致修復114の各ベクトル、を用いてプロセッ
サ状態のチェックポイント設定を制御する。これらのベ
クトルは、実行パイプラインのAC及びEX段、さらに
書込バッファ29に出力される。
02は、誤予測のブランチあるいは浮動小数点の例外後
におけるIF(プリフェッチャ)とID(デコーダ)の
修復も行う−−関連の命令ポインタが割り当てられた解
明バッファ内にチェックポイント設定され、修復時の復
帰用に使われる。ID以後は、AC1とEXだけがチェ
ックポイント設定を必要とするプロセッサリソースを有
するパイプ段である−−AC1が命令、スタックポイン
タ及びレジスタ変換装置(図1aの25a)をチェック
ポイント設定する一方、EXは状態コードとアプリケー
ションフラグをチェックポイント設定する。さらに書込
バッファ29が、関連した推論状態の未決着の解明をメ
モリに書き込みキュー登録する。書込バッファは推論レ
ベルロジック29aを含み、この推論レベルロジックが
解明制御ロジック102からの推論制御ベクトル110
に応じ推論状態が解明されたら書込を完了するか、ある
いは修復が必要なら書込を無効化することによってキュ
ー登録された書込を撤収する。推論制御では、解明バッ
ファ104が(a)ブランチ、(b)UCOF、及び
(c)フロートに割り当てられる。解明バッファはID
2で割り当てられ、FXまたはWBで解明される。現在
の推論レベルのため(すなわち4つの未決着ブランチま
たはフロートが存在し)解明バッファを割り当てできな
いと、未決着の推論命令が解明されるまで、命令はID
2内で停止している。解明バッファは4つまでの未解明
COFまたはフロートの各々毎に1つ、すなわち各推論
レベル毎に1つ、で計4つのエントリを有する。 2.3.推論発生 図3を参照すると、例示の実施例に関する詳細な説明の
目的上、ID2段が命令発生点になるものとする−−推
論的に発生できない推論命令はID2で停止している。
上記から、推論命令がXパイプ内に発生される(浮動小
数点命令はAC2のFPUに発生される。
コードされたブランチまたはフロートが利用両可能な解
明バッファ104に割り当てられる。割り当て後、推論
命令がID2からXパイプ内へ発生される。推論実行
は、推論命令を越えた命令の推論発生と共に継続する。
推論命令がID2から発生すると、解明制御ロジック1
02が命令と共に、チェックポイントベクトル111を
AC1、AC2及びEXにパイプ送りする。チェックポ
イントベクトルは次の2つのフィールドを含む: 割 当 チェックポイントレジスタID これに応じ、推論命令を実行するパイプ段(AC1、E
X)がその変更可能なリソースを、チェックポイントレ
ジスタIDによって指定されたチェックポイント設定レ
ジスタにチェックポイント設定する(3.2節参照)。チ
ェックポイントベクトルも、書込バッファ推論レベルロ
ジック29aに入力される(書込バッファはAC2で割
り当てられる)。 2.3.1.ブランチ 図2と図5を参照すれば、ブランチはID1でデコード
され、2.4節で述べた発生の制約を経て、ID2でXパ
イプ内に発生される。ブランチ処理装置(図1aの4
0)がID2で通知を受け、ブランチ解明バッファ10
4(1つが利用可能な場合)にエントリを割り当て、推
論エラーの場合にパイプラインを修復するのに必要な情
報(4節参照)を記憶させる。
は、ブランチはWBで解明されることになっている。ま
た、Yパイプ内の続いて推論発生された命令(すなわち
Xパイプ内のブランチに隣接する命令)が何等かの結果
をレジスタファイルへ書き戻す前に、ブランチは解明さ
れるものとされている。 3.3.2.浮動小数点 図2と図5を参照すれば、浮動小数点命令はID1でデ
コードされ、2.4節で述べた発生の制約を経て、ID2
でXパイプ内に発生される。BPUがID2で通知を受
け、あるブランチ解明バッファ(1つが利用可能な場
合)を割り当て、推論エラーの場合にパイプラインを修
復するのに必要な情報(4節参照)を記憶させる。フロ
ートは推論実行において、発生の制約(2.5節参照)を
必要とする次の2つの問題をもたらす:(a)例外待ち
時間、及び(b)例外順序。浮動小数点命令が浮動小数
点装置で実行を行う例外待ち時間中、レジスタファイル
への書き戻し(メモリへの書込は書込バッファ内にキュ
ー登録される)及び引き続くブランチの推論実行を含
め、推論発生された多数の整数命令が実行を完了するこ
とがある。そして例示のX86ISAの場合、例外順序
を保持しておく必要がある。
ば、FPU状態の問い合わせ)。これら誤りを生じない
浮動小数点命令は、通常の整数命令と同様に推論発生可
能な非浮動小数点命令として扱われる。 2.4.影響されるリソース 推論発生された命令により推論命令の解明前に変更する
可能性があるプロセッサリソースはすべて、推論エラー
の場合にプロセッサの状態を修復可能なようにチェック
ポイント設定される。但し例示の実施例では、すべての
プロセッサリソースはチェックポイント設定されない−
−一般的なコードストリーム中に滅多に現れない選定命
令で使われるだはの一部のリソースはチェックポイント
設定されない。一部のプロセッサリソースをチェックポ
イント設定しないことから、推論ゼロレベル(SLZ)
命令とも称されるそれらの非チェックポイント設定命令
に対して、実行中非チェックポイント設定のプロセッサ
リソースを変更することがあるという発生制約が課せら
れる(2.5節参照)。それらのチェックポイント設定し
ないリソースを選定することは、リソースをチェックポ
イント設定するのに必要なロジックと一般的なコードス
トリーム中に命令が現れる頻度とに基づく設計上の得失
を含む−−つまり、推論発生できない(あるいは発生の
制約下でのみ発生可能な)非チェックポイント設定命令
のために実行パイプラインを停止させること、及び命令
に関連したチェックポイント設定及び修復に必要な追加
のリソース量に伴う性能上のペナルティを含む。当業者
であれば、設計上の異なる取捨選択が可能で、それぞれ
異なる発生の制約となることが分かるであろう。
定されるプロセッサリソースは次の通りである:
1節参照)はチェックポイント設定されない−−これら
のレジスタは浮動小数点の例外後であるが、誤予測より
後でない時点で、(ACレジスタも更新する一般的なレ
ジスタファイルの読取と書き戻しを通じ)リフレッシュ
するだけでよい。通常の命令の順序付けにより、EXか
らWBへの(Xパイプ内における)どんなブランチ通過
も、隣り(Yパイプ)の推論発生命令によるACレジス
タへの(WBでの)いずれの書込も打ち切るタイミング
で解明される(これもWB)ことが保証される。またレ
ジスタ変換装置は、チェックポイントレジスタを含め、
レジスタファイルに関する完全な論理−物理マッピング
を維持する(3.2節参照)。
定されないプロセッサリソースは次の通りである:
スト、及びキャッシュ構成用のレジスタを含む。実行中
にこれらのリソースを変更する命令は、一定の制約下で
のみ推論発生可能である。 2.4.発生の制約 例示の実施例の場合、以下の理由から一定の発生の制約
が必要である:(a)プロセッサの状態全体はチェック
ポイント設定されない、(b)推論指令は、著しく異な
る推論実行条件を含む2種類の制御障害命令−−ブラン
チ(及びUCOF)とフロート−−に対してサポートさ
れている。及び(c)(浮動小数点の例外を含む)例外
は、プログラムの順序で扱われねばならない。図6のフ
ローチャートを参照すれば、例示の実施例の場合、推論
発生の要件を含め次の2種類の命令がデコー可能である
(210):(a)推論命令、及び(b)チェックポイ
ント設定されてないつまりSLZ(推論レベルゼロ)の
命令。
論レベル(222)が4であれば、例示の実施例におい
ては最大の推論レベルに達しているので、未決着のブラ
ンチまたはフロートが撤収されるまで(あるいは推論エ
ラーがIDへの新たな命令取り出しを必要としそれがフ
ラッシュされるまで)、命令はID2に停止している。
最大の推論レベルに達していないと、ブランチがそれ以
上の制約なく発生し(224)、(そして推論レベルが
増加される)。フロート(226)は、未決着のブラン
チが存在しない(228)ときだけ発生する。尚、複数
のフロートが推論発生可能である−−例示のFPUはF
IFOのロードキューを維持し、例外順序がFPUで保
たれるのを保証している。要するに、例示の実施例にお
ける発生の制約は次の通りである:(a)ブランチ(ま
たはUCOF)あるいはフロート発生の場合、推論レベ
ルは4より小さくなければならない、(b)フロート
は、(ブランチ解明バッファ内に)未決着のブランチが
存在しないときだけ発生する、及び(c)SLZ命令
は、推論レベルがゼロのときだけ発生される。当業者で
あれば、上記の発生の制約は設計上の選択の問題である
ことが分かるであろう。特に例示の実施例の場合、浮動
小数点命令の発生に関する制約は、解明バッファの管理
上の問題である。 3.プロセッサの状態 推論実行中、プロセッサの状態は、(a)推論レベル制
御ロジックと(b)チェックポイント設定ロジックを用
いて動的にチェックポイント設定される。このロジック
はブランチ処理装置、AC及びEXパイプ段(X及びY
パイプ)、並びに書込バッファに含まれている。本節の
目的上、書込バッファをパイプ段と称する。
ポイント設定ロジックはそれらパイプ段に分散され、B
PUによって中央制御される。推論実行の結果は、
(a)チェックポイント設定されたレジスタファイル、
(b)または書込バッファにストアされる。 3.1.推論レベル 図5を参照すれば、例示の実施例において、BPU40
と書込バッファ29はそれぞれ推論レベルロジック10
6と29aを含む。BPUにおいて、推論レベルは解明
バッファ104内の有効ビットの関数である。推論レベ
ルロジックが有効ビットについて論理演算を行い、推論
レベルを求める−−新たな推論命令に対して解明バッフ
ァが利用可能な場合(推論レベルが4より小さい場合)
には、求めるのに各ビットのAND演算が用いられ、一
方推論レベルゼロの命令が発生可能な場合には、求める
のに各ビットのOR演算が用いられる。4つの有効ビッ
トすべてで4ビットのSPEC(推論)ベクトルを形成
し、これがパイプライン修復ベクトルに含まれる。書込
バッファでは、推論レベルロジックがそこにキュー登録
された各推論書込毎に、推論レベルに対応した4ビット
の推論(SPEC)ベクトルを維持する。BPUからの
推論制御ベクトル110に応じて、書込バッファの推論
レベルロジック29aが適切な推論レベルを、撤収を待
っている各書込に割り当てる。
の4ビットSPECベクトルをストア可能である。この
ベクトルが必要なのは、BPUによって維持される推論
レベル(すなわち解明バッファの4有効ビット)が、パ
イプラインの待ち時間のためAC及びEXの推論レベル
と同じにならないことがあるからである。 3.2.チェックポイント設定 図1を参照すれば、例示の実施例において、チェックポ
イントレジスタはレジスタ変換装置25a内に含まれて
いる。チェックポイントレジスタの他、レジスタ変換装
置はレジスタ名称変更ハードウェアも含んでいる。図7
が、例示としてのチェックポイントの実施形態を示して
いる。レジスタの名称変更及びチェックポイント設定の
ため、変換制御レジスタ200がレジスタ変換装置によ
って使われる。論理IDレジスタ210が、論理レジス
タを物理レジスタにマップする。サイズレジスタ212
が、物理レジスタが割り付けられる論理レジスタのサイ
ズに対応したコードをストアする。現在レジスタ214
は、ある所定の論理レジスタについて最も最近割り付け
られたレジスタを示す。つまり、新しい物理レジスタが
割り当てられる毎に、対応する論理レジスタについてそ
れまで現在レジスタだった物理レジスタの現在ビットが
オフされ、新たに割り当てられたレジスタの現在ビット
がオンされる。従っていかなるときでも、現在レジスタ
214は8ビットがオンで、24ビットがオフである。
各物理レジスタ毎に、未決着レジスタ216がその物理
レジスタに対する書込が未決着であるかどうかを示すビ
ットを有する。
まりChkpnt0-Chkpnt3 が、チェックポイントが発生する
毎に、現在レジスタ214のコピーをストアするのに用
いられる。例示の実施例では、ブランチまたはフロート
がAC1へ発生される都度、チェックポイントが発生す
る。チェックポイントレジスタ218は、回転方式で割
り当てられる。AC1におけるスタッフ及び命令ポイン
タのチェックポイント設定、またEXにおける状態コー
ド及びアプリケーションフラグのチェックポイント設定
も同様に扱われる(表1参照)。 3.3.結果 図8及び図9は、推論書込の結果がメモリに撤収されな
いことを保証し、また推論的に書き込まれたデータを書
き込みバッファから除去する、書込バッファ推論レベル
ロジック(図5の29a)の動作を示している。推論書
込の書き込みバッファ(図5の29)に対する割当も、
図8に関連して本節で論じる−−推論書込の撤収につい
ては、図9に関連して4.1節で論じる。図8を参照す
れば、ブランチ(推論命令)がID2からACに発生し
(310)、AC2で2つの書込バッファエントリWB
1、WB2が割り当てられる(312)(本例では、予
測方向に推論発生された命令がメモリに対して2つの書
込動作を行う)。しかし、書込バッファエントリWB
1、WB2に対する書込動作は推論的なので、書込の推
論レベルに応じ、SPEC〔jklm〕ベクトルの推論
制御ビットのうち少なくとも1つが割当中に設定され
る。
B2はそれぞれ、(第1次の推論を示す)設定されたS
PEC〔j〕ビットを有する。書込バッファエントリW
B3、WB4はまだ割り当てられていないので、それら
の推論制御ビットはクリアされている。予測方向の推論
命令が実行され(314)、完了すると、割り当てられ
た書込バッファエントリWB1、WB2への書込が行わ
れる。しかし、これらの書込の実行は推論的なので、撤
収シーケンスには、SPECビットがすべてクリアでな
ければ書込バッファエントリの撤収を防ぐゲート通過判
定を含め、推論実行の結果がメモリへ書き込まれるのを
防ぐべきである。第2レベルの推論も、別のブランチの
発生(320)と共に発生する。第2レベルの推論と
は、該当ブランチについて推論発生された命令の実行が
成功するのに、その予測(320)だけでなく、第1レ
ベルの予測(310)も正しくなければならないことを
意味する。第2レベルのブランチ発生(320)後、書
込バッファエントリWB3がAC2で割り当てられる
(322)。書込バッファエントリWB3への書込は第
2レベルの推論なので、jとk両SPEC制御ビットが
セットされる。次いで、ブランチの予測方向の命令が発
生され、実行される(324)。
10)と第2レベルブランチ(320)の予測方向にお
ける別のブランチ発生(330)に関して示してある。 4.解明/修復 解明と修復は下記を含む:(a)予測された目標アドレ
ス(ブランチとUCOF)、予測された方向(ブラン
チ)、及びフロートを解明することを含むブランチ解
明、及び(b)ブランチ(またはUCOF)の誤予測あ
るいは浮動小数点の例外後に、チェックポイント設定さ
れたプロセッサリソースの回復を制御することを含むパ
イプラインの修復。COFはその実際の目標アドレスが
計算されたとき(AC1)解明され、ブランチの場合、
方向の予測を解明するため条件の依存性が判定される。
浮動小数点命令は、それが誤りなく実行を完了したとき
解明される。例示の実施例の場合、COF命令は命令の
順序で解明される(COFはフロートが未決着であって
も撤収が許される)。ブランチは、予測目標アドレスと
予測方向の両方を解明することによって解明される。つ
まりBPUヒット(プリフェッチ時に予測されるブラン
チ)の場合、予測目標アドレスがAC2で実際の(計算
された)目標アドレスと比較され、次いで予測方向がE
X/WBで実際の方向と比較される。BPUミス(分岐
されないと予測されるかまたは割り振りされた)の場合
は、方向だけをEX/WBで解明する必要がある。
レスと実際の目標アドレスとの比較を通じて有効化され
る。解明の順序を維持するのに方向の解明は必要ない
が、UCOFの解明は未決着の推論命令がすべて解明さ
れることも必要とする。図5を参照すれば、修復が必要
ないようにブランチまたはフロートが解明されると、解
明制御ロジック102がAC及びEXパイプ段と書込バ
ッファに解明ベクトル113を伝送する。このベクトル
は次の2つのフィールドを含む: 割当解除 D〔1:0〕指標 この解明ベクトルによって各パイプ段が4つのチェック
ポイントレジスタのうち1つを割当解除し、D指標が割
当解除するチェックポイントレジスタを識別する。 4.1.順序外撤収 図9はブランチ推論命令が正しい予測と解明され(34
0)、書込バッファエントリWB1、WB2のメモリへ
の撤収を可能とすることを示す。つまり、すべての推論
書込バッファエントリWB1−WB4のSPEC〔j〕
ビットがクリアされる(342)。いま書込バッファエ
ントリWB1、WB2の推論制御ビットSPECがすべ
てクリアされているので、これらの書込バッファエント
リをメモリへ撤収することができる。
0)が誤予測されたとき、第2及び第3レベルのブラン
チ命令から得られた書込バッファ内の推論書込に対して
修復が及ぼす影響も示している。誤予測ブランチの検出
(350)は、書込バッファエントリWB3、WB4に
割り当てられた書込がまだ行われていなければ、これら
の書込は決して行われないことを意味する。それらの書
込が行われていれば(それらの書込バッファエントリは
未決着である)、そのデータはメモリに書き込まれるべ
きでない。従って、書込バッファエントリWB3、WB
4はそれらの内容をメモリに撤収することなく、別の使
用のためクリアされねばならない。セットされたSPE
C〔k〕ビットを有すると識別される(352)書込バ
ッファエントリは、WB3(第2レベルの推論)とWB
4(第3レベルの推論)である。これらエントリの有効
ビットがクリアされ(354)、エントリWB3、WB
4が再割当でき且つ撤収されないようになされる。撤収
ポインタは次に撤収されるべき書込バッファエントリW
B1−WB4の1つをそれぞれ指し、関連の撤収ポイン
タがエントリWB3、WB4を指しているときは、それ
らエントリは(決して割り当てられないように)スキッ
プされる。これにより撤収ポインタは、書込バッファの
該当部分が空であれば、割当ポインタに「追いつく」こ
とができる。撤収プロセスにおける有効ビットの繰り返
しチェックは、空状態になったとき、安全に停止可能で
ある。 4.2.1クロック修復 ブランチ(またはUCOF)の誤予測あるいは浮動小数
点の例外後におけるパイプラインの修復は、チェックポ
イント設定された推論命令より後方の実行パイプライン
をフラッシュすること、及びその後チェックポイント設
定された物理レジスタを復帰させ、プロセッサの状態を
回復することを必要とする。例示のマイクロプロセッサ
は、誤予測されたブランチからの修復を1クロックで行
う。
2はAC及びEXパイプ段と書込バッファにパイプライ
ン修復ベクトル112を伝送することによって、推論エ
ラーのパイプライン修復を行う。このパイプライン修復
ベクトルは次の3つのフィールドを有する: SPEC〔3:0〕 修復 R〔1:0〕指標 パイプライン修復ベクトルがAC及びEXパイプ段に対
して、現在の命令をフラッシュし、指標付けされたチェ
ックポイントレジスタから復帰することを指示する。さ
らに、4ビットのSPECベクトルが書込バッファ推論
レベルロジック29aによって、そのSPEC状態を調
節し、推論エラーの影響を受けた書込を無効化するのに
使われる。浮動小数点の例外後の修復は一般に実行パイ
プライン全体のフラッシュを必要とする一方、誤予測ブ
ランチの場合には、完了が許容されていたEX内の対命
令及びWB内の2つの命令をフラッシュすればよい。つ
まり、BPUが誤予測されたブランチを検出し、修復ベ
クトル112をAC及びEXパイプ段に伝送してから1
クロック以内に、プロセッサの状態をそのブランチを通
り過ぎた命令の推論実行前の状態へ回復することによっ
て、実行パイプラインが補修される。
の修復は誤予測されたブランチからの修復と比べ、1つ
の重要な点で異なって扱われる−−すなわちACレジス
タが(回復された)レジスタファイルから再書込されね
ばならない。これは、ACレジスタへの書込も行うレジ
スタファイルの読取及び書き戻しを、マイクロコード制
御下で行うことで達成される。ACレジスタの上記の復
帰は、ブランチの場合必要ない。例示マイクロプロセッ
サのアーキテクチャ的特徴上、EXY内の隣合う命令に
よる(ACレジスタへの書込も行う)レジスタファイル
へのいかなる書き戻しより前に、ブランチがWBで解明
されねばならないからである。つまり、WBで解明さ
れ、レジスタファイル(及びACレジスタ)へ書込する
EXYで推論発生された命令と対にされる最悪ケースの
ブランチの場合、そのブランチがBPUにより誤予測さ
れていると検出されると、EXYで推論発生された命令
を打ち切ることによって、書き戻しを防ぐ。このように
してブランチの場合、ACレジスタと一般のレジスタフ
ァイルとの間の一貫性が保証され、1クロックでの修復
動作を可能としている。浮動小数点の例外の場合には、
一貫性として読取及び書き戻し動作がACレジスタを更
新することを必要とし、これに追加の数クロックを要す
る。
である。分岐されると予測されたブランチ(またはUC
OF予測)の場合、予測目標アドレスとAC1で計算さ
れた実際の目標アドレスとの比較が不一致を示すと、B
PUは直ちに目標不一致修復ベクトル114で目標の不
一致をACに信号通知する−−EX及びWB内の命令は
実行の完了が許容される。このベクトルは次の2つのフ
ィールドを含む: TMM SPEC〔3:0〕 目標不一致ベクトルはACに対して、現在の命令をフラ
ッシュし、それに従い4ビットのSPECベクトルを用
いて推論状態を調整することを指示する。図5を参照す
れば、チェックポイントの復帰は、ブランチに関連した
チェックポイントレジスタ218を現在レジスタ214
にコピーし、IP/SPと物理レジスタの状態をブラン
チの直前に存在した状態へ復帰することによって行われ
る。 5.結論 以上本発明の詳細な説明をいくつか例示の実施例につい
て行ったが、当業者にとってはこれらの実施例の変形及
び代替の実施例が考えられるであろう。例えば、特定の
レジスタ構造、マッピング、ビット割当、及びその他の
実施詳細は、発明の詳細な説明を与えることを目的とし
てだけ記述されている。ロジックは一般にハードウェア
的意味で使われているが、マイクロコードやその他のソ
フトフェアルーチンを含む実施も同等と見なせる。ま
た、特定のアドレス命名(線形アドレス、実行アドレ
ス、セグメントアドレス、相対ベース他)はX86アー
キテクチャで通常使われており、例示の実施例を説明す
る目的でのみ用いられている。
の得失に基づく各種の変形は、当業者にとって自明であ
ろう。本発明は、特許請求の範囲に記載に範囲内に入る
いずれの変形または代替実施例も包含するものである。
ン式マイクロプロセッサを示す。
の実行パイプラインの各段を示す。
れを示す。
サシステム設計を示す。
ブランチ処理装置を示す。
流れ図。
実行をサポートするのに使われるチェックポイントレジ
スタを示す。
書込バッファの割当と解明(撤収または無効化)を示
す。
書込バッファの割当と解明(撤収または無効化)を示
す。
Claims (10)
- 【請求項1】 命令発生段、実行段及び少なくとも1つ
の中間処理段を含む実行パイプラインを備えたパイプラ
イン式プロセッサであって、前記中間処理段と前記実行
段が該当段における命令処理によって変更される変更可
能なプロセッサリソースを含み、前記プロセッサがブラ
ンチ命令を選択的に発生し、次いでブランチの予測方向
におけるその後の命令を発生して推論処理するものにお
いて: (a) ブランチ命令の方向を予測し、実際の予測ブラン
チ方向が正しいかどうかを、前記実行段の最中あるいは
その後に判定することによってブランチを解明するブラ
ンチ処理手段; (b) 前記命令発生段を選択的に指示してブランチ命令
を発生させ、次いでそのブランチ命令が解明される前
に、ブランチの予測方向における少なくとも1つの推論
命令を発生する推論制御手段; (c) 前記中間段またはその1つがブランチの解明前
に、関連の変更可能なプロセッサリソースを少なくとも
変更することによって推論命令を処理すること; (d) 前記実行段と少なくとも1つの前記中間段の各々
について、チェックポイント設定手段が該当段に係わる
変更可能なプロセッサリソースにチェックポイントを設
定すること; (e) 前記推論制御手段が、ブランチ命令を処理する各
段毎のチェックポイント設定手段に指示し、(i)変更
される変更可能なプロセッサリソースにチェックポイン
トを設定させ、またブランチの誤った予測に応じて、
(ii)対応するチェックポイント設定された変更可能な
プロセッサリソースを用いプロセッサの状態を復帰して
該当段を修復させることにより、推論命令の処理を制御
すること;を備えたプロセッサ。 - 【請求項2】 前記推論制御手段が各チェックポイント
設定手段に次の3つのコマンドを選択的に与える請求項
1に記載のプロセッサ:(i)チェックポイント設定手
段に指示し、変更される変更可能なプロセッサリソース
を指定されたチェックポイントレジスタ内にチェックポ
イント設定させるチェックポイントコマンド、及びブラ
ンチの解明後、(ii)ブランチが正しく予測されている
と解明された場合に、チェックポイント設定手段に指示
し、指定されたチェックポイントレジスタの割当を解除
させる解明コマンド、あるいは(ii)ブランチが誤って
予測されていると解明された場合に、チェックポイント
設定手段に指示し、指定されたチェックポイントレジス
タからプロセッサの状態を復帰させる修復コマンド。 - 【請求項3】 前記修復コマンドが各チェックポイント
設定手段に伝送され、各チェックポイント設定手段がプ
ロセッサ状態の復帰をほぼ同時に開始可能とする請求項
2に記載のプロセッサ。 - 【請求項4】 前記推論制御手段が、発生されたが解明
されていないブランチ命令数のカウントを維持すると共
に、未決着の解明されていないブランチ命令の数が所定
数に等しいと、前記命令発生段からのブランチ命令の発
生を禁止する推論レベル手段を含む請求項1−3のいず
れか一項に記載のプロセッサ。 - 【請求項5】 命令が所定の発生制約に該当する場合
は、前記推論制御手段からブランチの所定の方向におけ
る推論命令の発生が禁止される請求項1乃至4のいずれ
か一項に記載のプロセッサ。 - 【請求項6】 少なくとも1つの段の前記チェックポイ
ント設定手段が、対応する変更可能なプロセッサリソー
スのサブセットだけをチェックポイント設定し、前記所
定の発生制約が、該当段における命令の処理がチェック
ポイント設定されていないプロセッサリソースを変更す
る場合、前記推論制御手段が推論的であるどんな命令も
発生しないようにすることである請求項5に記載のプロ
セッサ。 - 【請求項7】 命令発生段、実行段及び少なくとも1つ
の中間処理段を含む実行パイプラインを備えたパイプラ
イン式プロセッサで推論実行を実施する方法であって、
前記中間処理段と前記実行段が該当段における命令処理
によって変更される変更可能なプロセッサリソースを含
み、前記プロセッサがブランチ命令を選択的に発生し、
次いでブランチの予測方向におけるその後の命令を発生
して推論処理するものにおいて: (a) ブランチ命令の方向を予測し、実際の予測ブラン
チ方向が正しいかどうかを、前記実行段の最中あるいは
その後に判定することによってブランチを解明するステ
ップ; (b) 前記命令発生段を選択的に指示してブランチ命令
を発生させ、次いでそのブランチ命令が解明される前
に、ブランチの予測方向における少なくとも1つの推論
命令を発生するステップ; (c) 少なくとも1つの前記中間段においてブランチの
解明前に、関連の変更可能なプロセッサリソースを変更
することを含め推論命令を処理するステップ; (d) 前記実行段と少なくとも1つの前記中間段の各々
について、該当段に係わる変更可能なプロセッサリソー
スにチェックポイントを設定するステップ;及び (e) ブランチ命令を処理する各段毎に、(i)変更さ
れる変更可能なプロセッサリソースにチェックポイント
を設定し、またブランチの誤った予測に応じて、(ii)
対応するチェックポイント設定された変更可能なプロセ
ッサリソースを用いプロセッサの状態を復帰して該当段
を修復することにより、推論命令の処理を制御するステ
ップ;を含む推論実行の実施方法。 - 【請求項8】 推論命令の処理を制御する前記ステップ
が各段に次の3つのコマンドを選択的に与えることによ
って行われる請求項7に記載の推論実行の実施方法:
(i)変更される変更可能なプロセッサリソースを指定
されたチェックポイントレジスタ内にチェックポイント
設定させるチェックポイントコマンド、及びブランチの
解明後、(ii)ブランチが正しく予測されていると解明
された場合に、指定されたチェックポイントレジスタの
割当を解除させる解明コマンド、あるいは(ii)ブラン
チが誤って予測されていると解明された場合に、指定さ
れたチェックポイントレジスタからプロセッサの状態を
復帰させる修復コマンド。 - 【請求項9】 前記修復コマンドが各段に伝送され、格
段の各修復をほぼ同時に開始可能とする請求項8に記載
の推論実行の実施方法。 - 【請求項10】 発生されたが解明されていないブラン
チ命令数のカウトを維持すると共に、未決着の解明され
ていないブランチ命令の数が最大数に等しいと、前記命
令発生段からのブランチ命令の発生を禁止するステップ
をさらに含む請求項7乃至9のいずれか一項に記載の推
論実行の実施方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13878193A | 1993-10-18 | 1993-10-18 | |
US08/138781 | 1993-10-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07160500A true JPH07160500A (ja) | 1995-06-23 |
Family
ID=22483615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6251992A Pending JPH07160500A (ja) | 1993-10-18 | 1994-10-18 | 推論的実行を行うマイクロプロセッサ |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0649086B1 (ja) |
JP (1) | JPH07160500A (ja) |
DE (1) | DE69425311T2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996735B2 (en) * | 2002-11-22 | 2006-02-07 | Texas Instruments Incorporated | Apparatus for alignment of data collected from multiple pipe stages with heterogeneous retention policies in an unprotected pipeline |
JP2010517183A (ja) * | 2007-01-24 | 2010-05-20 | クゥアルコム・インコーポレイテッド | 誤予測された分岐のためにフラッシュするセグメント化パイプライン |
JP2018156497A (ja) * | 2017-03-21 | 2018-10-04 | 日本電気株式会社 | メモリアクセス装置、命令制御方法、プログラム、情報処理装置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0649085B1 (en) | 1993-10-18 | 1998-03-04 | Cyrix Corporation | Microprocessor pipe control and register translation |
WO1996025705A1 (en) * | 1995-02-14 | 1996-08-22 | Fujitsu Limited | Structure and method for high-performance speculative execution processor providing special features |
US5860017A (en) * | 1996-06-28 | 1999-01-12 | Intel Corporation | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction |
US5740419A (en) * | 1996-07-22 | 1998-04-14 | International Business Machines Corporation | Processor and method for speculatively executing an instruction loop |
US5802338A (en) * | 1996-10-01 | 1998-09-01 | International Business Machines Corporation | Method of self-parallelizing and self-parallelizing multiprocessor using the method |
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
WO2003034201A2 (en) * | 2001-10-12 | 2003-04-24 | Pts Corporation | Late resolving instructions |
US7447923B2 (en) * | 2005-08-19 | 2008-11-04 | International Business Machines Corporation | Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power |
CN101840323B (zh) * | 2010-03-25 | 2012-02-08 | 龙芯中科技术有限公司 | 支持标量复用的非全流水向量除法开方装置及方法 |
US9298456B2 (en) * | 2012-08-21 | 2016-03-29 | Apple Inc. | Mechanism for performing speculative predicated instructions |
US9823929B2 (en) | 2013-03-15 | 2017-11-21 | Qualcomm Incorporated | Optimizing performance for context-dependent instructions |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901233A (en) * | 1987-07-20 | 1990-02-13 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US5355457A (en) * | 1991-05-21 | 1994-10-11 | Motorola, Inc. | Data processor for performing simultaneous instruction retirement and backtracking |
US5269017A (en) * | 1991-08-29 | 1993-12-07 | International Business Machines Corporation | Type 1, 2 and 3 retry and checkpointing |
US5398330A (en) * | 1992-03-05 | 1995-03-14 | Seiko Epson Corporation | Register file backup queue |
-
1994
- 1994-10-17 EP EP94307584A patent/EP0649086B1/en not_active Expired - Lifetime
- 1994-10-17 DE DE69425311T patent/DE69425311T2/de not_active Expired - Fee Related
- 1994-10-18 JP JP6251992A patent/JPH07160500A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996735B2 (en) * | 2002-11-22 | 2006-02-07 | Texas Instruments Incorporated | Apparatus for alignment of data collected from multiple pipe stages with heterogeneous retention policies in an unprotected pipeline |
JP2010517183A (ja) * | 2007-01-24 | 2010-05-20 | クゥアルコム・インコーポレイテッド | 誤予測された分岐のためにフラッシュするセグメント化パイプライン |
JP2012230687A (ja) * | 2007-01-24 | 2012-11-22 | Qualcomm Inc | 誤予測された分岐のためにフラッシュするセグメント化パイプライン |
JP2014211881A (ja) * | 2007-01-24 | 2014-11-13 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | 誤予測された分岐のためにフラッシュするセグメント化パイプライン |
JP2016167284A (ja) * | 2007-01-24 | 2016-09-15 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | 誤予測された分岐のためにフラッシュするセグメント化パイプライン |
JP2018156497A (ja) * | 2017-03-21 | 2018-10-04 | 日本電気株式会社 | メモリアクセス装置、命令制御方法、プログラム、情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
EP0649086A1 (en) | 1995-04-19 |
EP0649086B1 (en) | 2000-07-19 |
DE69425311T2 (de) | 2001-03-15 |
DE69425311D1 (de) | 2000-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5706491A (en) | Branch processing unit with a return stack including repair using pointers from different pipe stages | |
US5692168A (en) | Prefetch buffer using flow control bit to identify changes of flow within the code stream | |
US5835951A (en) | Branch processing unit with target cache read prioritization protocol for handling multiple hits | |
US5835967A (en) | Adjusting prefetch size based on source of prefetch address | |
US6138230A (en) | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline | |
US5630149A (en) | Pipelined processor with register renaming hardware to accommodate multiple size registers | |
US5732243A (en) | Branch processing unit with target cache using low/high banking to support split prefetching | |
US6079014A (en) | Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state | |
JP3096451B2 (ja) | データを転送する方法およびプロセッサ | |
US5584009A (en) | System and method of retiring store data from a write buffer | |
US6065115A (en) | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction | |
EP0779577B1 (en) | Micoprocessor pipe control and register translation | |
US5805879A (en) | In a pipelined processor, setting a segment access indicator during execution stage using exception handling | |
US5732253A (en) | Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches | |
US7584346B1 (en) | Method and apparatus for supporting different modes of multi-threaded speculative execution | |
US5930832A (en) | Apparatus to guarantee TLB inclusion for store operations | |
US10067875B2 (en) | Processor with instruction cache that performs zero clock retires | |
JP3678443B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ | |
JP2008530714A5 (ja) | ||
US5596735A (en) | Circuit and method for addressing segment descriptor tables | |
US6073231A (en) | Pipelined processor with microcontrol of register translation hardware | |
US5784589A (en) | Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline | |
EP0649084A1 (en) | Microprocessor branch processing | |
US7185186B2 (en) | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache | |
JPH07160500A (ja) | 推論的実行を行うマイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080910 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 9 Free format text: PAYMENT UNTIL: 20080910 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090910 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 10 Free format text: PAYMENT UNTIL: 20090910 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 11 Free format text: PAYMENT UNTIL: 20100910 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110910 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |