JP2005038445A - 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 - Google Patents
特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 Download PDFInfo
- Publication number
- JP2005038445A JP2005038445A JP2004265716A JP2004265716A JP2005038445A JP 2005038445 A JP2005038445 A JP 2005038445A JP 2004265716 A JP2004265716 A JP 2004265716A JP 2004265716 A JP2004265716 A JP 2004265716A JP 2005038445 A JP2005038445 A JP 2005038445A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- signal
- execution
- data
- trap
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 336
- 238000011156 evaluation Methods 0.000 claims abstract description 118
- 238000012545 processing Methods 0.000 claims abstract description 79
- 230000001965 increasing effect Effects 0.000 claims abstract description 7
- 238000003860 storage Methods 0.000 claims description 373
- 238000007667 floating Methods 0.000 claims description 207
- 238000013507 mapping Methods 0.000 claims description 139
- 230000015654 memory Effects 0.000 claims description 112
- 230000004044 response Effects 0.000 claims description 86
- 238000011084 recovery Methods 0.000 claims description 66
- 238000013500 data storage Methods 0.000 claims description 51
- 238000012546 transfer Methods 0.000 claims description 50
- 230000008859 change Effects 0.000 claims description 43
- 239000013598 vector Substances 0.000 claims description 33
- 230000001360 synchronised effect Effects 0.000 claims description 29
- 230000000694 effects Effects 0.000 claims description 28
- 238000012544 monitoring process Methods 0.000 claims description 25
- 101000860173 Myxococcus xanthus C-factor Proteins 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000013461 design Methods 0.000 claims description 19
- 230000004913 activation Effects 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 14
- 230000004048 modification Effects 0.000 claims description 13
- 238000012986 modification Methods 0.000 claims description 13
- 238000009826 distribution Methods 0.000 claims description 9
- 238000012913 prioritisation Methods 0.000 claims description 8
- 101100020619 Arabidopsis thaliana LATE gene Proteins 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000000873 masking effect Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 230000015556 catabolic process Effects 0.000 claims description 2
- 238000006731 degradation reaction Methods 0.000 claims description 2
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 230000008929 regeneration Effects 0.000 claims 16
- 238000011069 regeneration method Methods 0.000 claims 16
- 238000010200 validation analysis Methods 0.000 claims 13
- 230000005055 memory storage Effects 0.000 claims 8
- 238000013481 data capture Methods 0.000 claims 5
- 238000009825 accumulation Methods 0.000 claims 2
- 238000006467 substitution reaction Methods 0.000 claims 2
- 230000001629 suppression Effects 0.000 claims 2
- 238000013506 data mapping Methods 0.000 claims 1
- 230000006870 function Effects 0.000 abstract description 11
- 239000000872 buffer Substances 0.000 description 32
- 238000010586 diagram Methods 0.000 description 31
- 102100031456 Centriolin Human genes 0.000 description 15
- 101000941711 Homo sapiens Centriolin Proteins 0.000 description 15
- 238000012423 maintenance Methods 0.000 description 14
- 230000007704 transition Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 230000009849 deactivation Effects 0.000 description 9
- 108090000623 proteins and genes Proteins 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000015572 biosynthetic process Effects 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 239000013256 coordination polymer Substances 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 108090000137 Opioid Receptors Proteins 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 240000005523 Peganum harmala Species 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- IYZMXHQDXZKNCY-UHFFFAOYSA-N 1-n,1-n-diphenyl-4-n,4-n-bis[4-(n-phenylanilino)phenyl]benzene-1,4-diamine Chemical compound C1=CC=CC=C1N(C=1C=CC(=CC=1)N(C=1C=CC(=CC=1)N(C=1C=CC=CC=1)C=1C=CC=CC=1)C=1C=CC(=CC=1)N(C=1C=CC=CC=1)C=1C=CC=CC=1)C1=CC=CC=C1 IYZMXHQDXZKNCY-UHFFFAOYSA-N 0.000 description 1
- JORMZLCKCZMVJM-UHFFFAOYSA-N 4'-(4-fluorophenyl)acetanilide Chemical compound C1=CC(NC(=O)C)=CC=C1C1=CC=C(F)C=C1 JORMZLCKCZMVJM-UHFFFAOYSA-N 0.000 description 1
- 101100199752 Caenorhabditis elegans rrp-1 gene Proteins 0.000 description 1
- 108010068561 Fructose-Bisphosphate Aldolase Proteins 0.000 description 1
- 241000761456 Nops Species 0.000 description 1
- 101710122057 Phospholemman-like protein Proteins 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 101150099184 fccA gene Proteins 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 108010020615 nociceptin receptor Proteins 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【解決手段】 これらの構造及び方法は、(1)精確な状態を維持しながらロード/ストア命令を含む長待ち時間命令を攻撃的にスケジュールし;(2)任意の命令境界において精確な状態を維持し回復し;(3)精確な状態を維持するべく命令状態をトラッキングし;(4)精確な状態を維持するべく命令をチェックポインティングし;(5)タイムアウトチェックポイントを新規作成し維持し使用し;(6)浮動小数点例外をトラッキングし;(7)リネーム可能なトラップスタックを新規作成し維持し使用し;(8)複数の同時未解決分岐評価のためのウォッチポイントを新規作成し維持し使用し;(9)精確な状態を維持するために命令状態をトラッキングし;(10)精確な状態を維持する一方でプロセッサのスループットを増大させる。
【選択図】 図4
Description
この出願は発明者Gene W.Shen et al.によって1995年3月3日に出願された、米国特許出願代理人整理番号第A-60625-1/JAS、米国特許出願第08/398,299号“PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE”の継続であり;該継続出願は同じく発明者Gene W.Shen et al.によって1995年2月14日に出願された、米国特許出願代理人整理番号第A-60625/JAS、米国特許出願第08/390,885号“PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE”の継続である。
SCHEDULING LONG LATENCY INSTRUCTIONS INCLUDING LOAD/STORE INSTRUCTIONS WHILE MAINTAINING PRECISE STATE”;発明者Gene W.Shen,John Szeto,Niteen A.Patkar, 及びMichael C.Shebanowによって1995年6月7日に出願された、代理人整理番号第A-60623/JAS、米国特許出願第08/483,958号“PROCESSOR AND METHOD FOR MAINTAINING AND RESTORING PRECISE STATE AT ANY INSTRUCTION BOUNDARY”;発明者Gene W.Shen,John Szeto,Niteen A.Patcar, 及びMichael C.Shebanowによって1995年6月7日に出願された、代理人整理番号第A-60625-2/JAS、米国特許出願第08/467,419号“PROCESSOR STRUCTURE AND METHOD FOR CHECKPOINTING INSTRUCTIONS TO MAINTAIN PRECISE STATE ”;発明者Gene W.Shen,John Szeto,Niteen A.Patcar, 及びMichael C.Shebanowによって1995年6月7日に出願された、代理人整理番号第A-60647/JAS、米国特許出願第08/473,223号“PROCESSOR STRUCTURE AND METHOD FOR A TIME-OUT CHECKPOINT”;発明者Gene W.Shen,John Szeto, 及びMichael C.Shebanowによって1995年6月7日に出願された、代理人整理番号第A-60648/JAS、米国特許出願第08/484,795号“PROCESSOR STRUCTURE AND METHOD FOR TRACKING FLOATING-POINT EXCEPTIONS ”;発明者Hideki Osone及びMichael C.Shebanowによって1995年6月7日に出願された、代理人整理番号第A-60649/JAS、米国特許出願第08/472,394号“PROCESSOR STRUCTURE AND METHOD FOR RENAMABLE TRAP-STACK ”;及び発明者Gene W.Shen,Michael C.Shebanow,Hideki Osone,及びTakumi Maruyama によって1995年6月7日に出願された、代理人整理番号第A-60682/JAS、米国特許出願第08/482,073号“PROCESSOR STRUCTURE AND METHOD FOR WATCHPOINT FOR PLURAL SIMULTANEOUS UNRESOLVED BRANCH EVALUATION”もそれぞれ参考のため本願明細書に引用した。
本発明は投機的追越し(out-of-order) 実行プロセッサにおいて精確な状態(precise state)を維持しながら、プロセッサの性能を高める装置、システム、及び方法に係わる。
プロセッサにおいて、制御流れ命令(例えば分岐命令)、メモリのトランザクションに起因する待ち時間(latency) 、及びマルチサイクル演算を必要とする命令は、パイプラインに“バブル”を導入する原因となるため、プロセッサが高い命令実行帯域幅を維持するのを妨げることが多い。投機的追越し命令実行を行うことによって性能を高めることができる。従来、1つの命令からの中間結果を後続の命令に利用できないとき、プロセッサは実行を中断するか、または中間結果が得られるまで“機能停止する”。
先行技術の前記問題は、多数の特殊プロセッサ機能および能力を提供する構造および方法を含む高性能プロセッサに関する発明で対処される。これら構造および方法には、(1)精確状態を維持しながらロード/ストア命令を含む長待ち時間(latency) 命令の積極的なスケジューリング;あらゆる命令境界での精確状態の維持と回復、(3)精確状態を維持するための命令状態の追跡、(4)精確状態を維持するための命令のチェックポインティング、(5)タイムアウトチェックポイントの作成、維持および利用、(6)浮動小数点例外の追跡、(7)リネーム可能なトラップスタックの作成、維持および利用、(8)複数の同時未解決分岐評価のためのウォッチポイントの作成、維持および利用、(9)精確状態維持のための命令状態追跡、(10)精確状態を維持しながらのプロセッサスループット改善のための構造および方法、を限定せずに含む。他の構造機能および能力は下記の開示および添付の図面と請求の範囲で説明される。
図4は、データプロセッサ50のトップレベル機能ブロック図である。データプロセッサは、新規の順序無視投機的実行(スーパスカラ)中央処理装置(CPU)51を含む。例示CPUは、SPARC-V9 Architecture Manualに記載されたSPARC-V9命令セットを実行可能である。D.WeaverおよびT.Germond による「The SPARC Architecture Manual 」、Version 9 、Englewood Cliffs (1994年)は、参照により本書に明示的に組み込む。但し、当業者は、本書に記載する新規設計および方法がSPARC-V9アーキテクチャに限定されないことを認識するであろう。
II.命令トラッキング
A.命令フェッチ
B.命令発行
1.命令発行概要
2.命令シリアル番号割り当てと命令状態記憶
a.命令発行−コミット−リクレームユニット(ICRU)
b.命令発行関連ポインタおよび発行段階中のポインタ維持
3.レジスタリネーミング
4.リザベーションステーションへのディスパッチ
C.命令実行および完了
D.命令実行段階へのPSU参加
E.命令コミットメント
F.命令リタイアおよびリソース回復
1.命令コミットおよびリタイア時のRRFへの更新とマップリネーム
2.命令リタイア時のRRF読み取り
3.ポインタを使った精細状態維持
III .積極的長待ち時間(ロード/ストア)命令スケジューリング
A.メモリ命令状態情報記憶
B.長待ち時間情報のトラッキングおよびスケジューリングのためのNMCSNおよびPBSNポインタ
C.NMCSN前進
D.データフローブロック内のロード−ストアユニット(LSU)
1.インレンジメモリ参照(長待ち時間)命令の識別
2.積極的長待ち時間(ロード/ストア)命令スケジューリングのための基本的構造および方法強化
IV.チェックポインティング
A.チェックポイント割り当てレジスタの構造
B.チェックポイント割り当て
C.チェックポイントリタイア
D.マシンバックアップでのチェックポイント維持
E.タイムアウトチェックポイント強化
F.あらゆる命令境界での精細状態維持と回復
G.チェックポイントされたデータ量を減らすため所定の命令についてマシンを同期させる方法
H.チェックポイントされたデータ量を減らすためレジスタリネームマップをチェックポインティングする方法
V. 誤予測および例外からの回復
A.同時複数未解決分岐/ジャンプ・アンド・リンク命令評価のためのウォッチポイントによる誤予測検出
1.ウォッチポイント要素の起動
2.データフォワードバスから直接CCデータのウォッチポイントグラビング
3.ウォッチポイントオペレーションの例
4.分岐命令の評価
5.ジャンプ−リンク(JMPL)命令の評価
B.例外検出
1.発行トラップ検出
2.実行トラップ検出
C.プロセッサを初期状態にバックトラックすることによる回復
1.チェックポイント境界へのプロセッサバックアップ
2.誤予測された命令、REDモード、および実行トラップ開始バックアップ
3.あらゆる命令境界へのプロセッサバックステップ
D.例外&誤予測回復中のプライオリティロジックおよび状態マシンオペレーション
E.トラップスタックによるトラップの取扱
CPU51は、レベル1(L1)命令キャッシュ52から命令をフェッチし、レベル1(L1)データキャッシュ53にデータを記憶し、ここからデータを取り出す。L1命令およびデータキャッシュは、CPU51と同じチップ/基板に物理的に配置することもできるが、異なるチップ/基板に組み立てることもできる。
前に言及したように、CPU51は、CPU51の命令パイプラインに命令トラッキングのための新規設計および方法を採用している。パイプラインは、この設計および方法を実施するため、図5に示し、前に簡単に述べたように、フェッチ、発行、実行、完了、非起動、コミットおよびリタイアの段階を含む。
再び図4を参照すると、BRB59はフェッチ段階中に命令をフェッチし、これらをISB61に与える。図6に示すように、BRB59は、命令プリフェッチおよびキャッシュユニット(IPCU)100とフェッチユニット102を含む。
1.命令発行概観
ISB61は、各発行段階中にフェッチした命令を発行する。図7に示すように、ISB61は、発行ユニット(ISU)200、精細状態ユニット(PSU)300、フリーリストユニット700、および制御レジスタファイル800を含む。各発行段階中、ISU200は、BRB59のフェッチレジスタ110から、一度に4個の命令(F INSTs BRP)を受け取る。そして、これらをデコードして、その内いくつを発行するかを、次に説明するような各種発行上の制約に基づいて決定する。
例示CPU51は、命令が発行された時点から、命令の実行が完了して究極的にリタイアするまで、命令に関連する独自の識別タグを割り当てる。逐次シリアル番号は、命令識別タグとして便宜上用いられる。シリアル番号は各段階で用いられ、例外または誤予測が発生すると、例外フリー処理中およびCPU51回復中に実質的にすべてのブロックが用いる。命令状態情報はCPU51に記憶され、実行完了信号、実行エラー信号、および分岐命令誤予測信号等の状態の変化に対応して連続的に更新される。ISB61内の精細状態ユニット(PSU)300が、命令シリアル番号タグの割り当てと、他のCPU51ユニット、特にDFB62から受け取った信号に対応して命令状態のトラッキングを行う。
発行/コミット/リクレームユニット(ICRU)はPSU300内で機能し、n−ビット逐次シリアル番号などの命令タグを割り当て、CPU51内部のメモリで命令状態情報のデータ記憶領域を定義・維持することにより、発行されたすべての命令のアクティビティ状態情報を維持する。図10に、ICRU301のコンポーネントおよびICRUオペレーションに関連する入出力信号の機能ブロック図を示す。ICRU301は機能的に4つの領域で構成される。命令状態情報データ構造308は、命令状態情報の記憶と、データ構造制御ロジック309の信号に対応して状態を更新を行い、データ構造制御ロジック309は、他のCPU51ユニット、特にDFB62からの信号に対応する。ポインタデータ構造310は、発行、完了、リタイア等、CPU51の各種命令段階マイルストーンへの状態ポインタとして働く複数のシリアル番号を個別に記憶するデータ記憶領域を含む。これらシリアル番号ポインタは、後でより詳細に説明する。ポインタ制御ロジック311は、他のCPU51ユニットから受け取ったデータと共に、データ構造308に記憶された状態情報を評価し、シリアル番号ポインタを更新して、カレントCPU51状態を反映させる。ポインタ値は、ICRU301およびPSU300からCPU51の他ユニットへのグローバル出力として与えられる。
図11は、ポインタ記憶メモリ領域310に記憶され、A−リング312およびM−リング324上のロケーションを指す数個のポインタ(ISN、NISN、CSN、RRP、NMCSN、およびPBSN)も示す。それぞれのポインタは、A−リングのロケーション値0〜64の1つを記憶するポインタ記憶ユニット210の構成要素である。ポインタの組合わせによっては、A−リングまたはM−リングのロケーションを指し示すことがあるが、ロケーションを指し示すことのない組合わせもある。例えば、NISNはISNと等しくなることはあり得ないが、装置によっては、CSN=ISN=RRPと「同期」する。発行されたシリアル番号ポインタ(ISN)314および次発行のシリアル番号ポインタ(NISN)315は、命令発行状態を保持し追跡すると共に、全体的に他のポインタの利点に制約を加える。コミット(委託)されたシリアル番号ポインタ(CSN)316は、他のポインタには特に規定されていないような命令の実行、完了、および非活動化に続く命令コミットを追跡する。リタイア再生ポインタ(RRP)317は、命令のリタイアを追跡し、リソースの再生を制御する。最速予測分岐命令ポインタ(PBSN)318および非メモリコミットシリアル番号ポインタ(NMCSN)319の2つの補助的なポインタを使用して、予測分岐命令やロード/ストア命令のような待ち時間の長い命令の実行をスケジュールし追跡する。ICRU301はCPU51内の多数の他のユニットに対して、それぞれのISN、NISN、CSN、RRP、およびNMCSNに現在値を与える。ICRUは、以後説明するように、PSU300内のウォッチポイント・ユニット308からPBSN318の値を受け取る。これらのポインタは、実施例のCPUではそれぞれ6ビットベクトルとして実施される。
レジスタの依存性を取り除いてISU200がマシンサイクル当たり一層多くの命令を発行できるようにするために、CPU51は発行段階の間にレジスタのリネーミングを実行する。これは、1994年10月11日にシェバナウ(Shebanow)等に授与された米国特許第5,355,457 号に記載されている方法、および/または「マイクロプロセサの物理レジスタの使用を調整するための方法と装置(METHOD AND APPARATUS FOR COORDINATING THE USE OF PHYSICAL REGISTERS IN A MICROPROCESSOR )」という名称の同時継続出願番号第08/388,364号に記載されている方法、および/またはジョンソン(Johnson )の論文「スーパースカラー・マイクロプロセサの設計(Superscalar Microprocessor Design )」のページ48〜55に記載されている方法と同じ方法で実行できる。
図8をさらに参照すると、発行段階の間に、FPU600、FXU601、FXAGU602、およびLSU603のリザベーションステーションはSRB59から F INSTs BRP命令を受け取る。これに応答して、それぞれのリザベーションステーションは、これ等の命令からオペコードと即値データとを抽出する。
再度図6を参照する。発行段階の間に、PCロジック106はフェッチレジスタ110からフェッチ命令(F INSTS BRP )を受け取り、それをデコードする。PCロジック106はISU200からISSUE VALID 信号も受け取り、実際に発行されたどの命令をデコードしているかを求める。1つのマシンサイクル内に発行され、実行と完了が予測できるプログラム制御命令については、このPCロジックはプログラムの流れを予測し、その予測に基づいてFPC、APC、およびNAPCの値を計算する。その他のすべての命令については、PCロジックは現在のマシンサイクルに対するFPC値に基づいて次のマシンサイクル用のFPC値と、ISSUE VALID 信号が示すように現在のマシンサイクルの間にいくつの命令が発行されるかを計算する。これらの命令についても同様に、PCロジックは以前のマシンサイクルのAPC値に基づいてAPC値およびNAPC値を計算し、また現在のマシンサイクル内にISSUED VALID信号が示すいくつの命令が発行されるかを計算する。
ひとたび命令がDFB62内の適当な実行ユニットにディスパッチされると、ICRU301は命令が完了するのを待ち、それぞれの命令のシリアル番号についてエラーおよび状態情報がDFB62およびPSU300の間の実行データ転送バスをわたって到来することをモニタする。実行段階におけるPSUの参加は、実行状態情報を受信することに限定されている。命令がエラーなしで実行を完了し誤った予測がなかった場合、この命令は非活性化される。しかしながら、実行の例外が発生するかまたは投機的な実行が誤って予測された場合、この命令は非活性化されないかまたはCPU51は回復手順を初期化する。A−リングの状態情報は更新されて、正確または不正確な投機的実行および例外的または例外なしの実行を反映する。命令が正しく予測され実行が例外なしに予測された場合、ICRU301はシリアル番号に関連するA−リングのビットをクリアしてその命令を非活性化する。
これまで説明した構造と方法は、典型的な実施例におけるA−リング312と64の命令のアドレス可能なロケーションと同数の命令の発行および実行状態を追跡する構造および方法を提供している。CPUのリソースを回復する構造と方法が欠けていても、CPU51によって命令に割り当てられた、例えばシリアル番号および関連するA−ビットを含むリソースは、例え命令が完了し非活性化されていても、その命令に対して割り当てられたままであろう。A−リングのデータ構造に関連する付加的なポインタを付け加えて、またCPU51内の関連する命令の状態の変化に応じてそのポインタを移動させることによって、特に非活性化と命令をコミットすることができ、またリソースをリタイアさせて別の命令によって後で使用するために再生できるようになる。この方法では、リソースは新たに発行された命令が連続的に使用できるようになる。
」は最小関数であり、「slot A」はA−リング312のA−ビットのロケーションのことであり、またA(slot A) はそのA−ビットロケーションのビットの状態(例えば、「1」または「0」)である。据置きトラップが削除されまた未完成の浮動小数点オペレーションの例外またはデータブレークポイントの例外が検出されたように受け取られたとき、CSNを前進させるルールは修正される。未完成の浮動小数点の例外およびデータブレークポイントの例外は、DFB62からの状態信号(ERR STAT)を実行することによって識別される。これ等の例外が発生しトラップが処理されると、CSNは1だけ前進する、すなわちCSN = CSN + 1 となり、CSNは例外の原因となった命令を通って前進する。PSU300は未完成の浮動小数点オペレーションおよびデータブレークポイントに特に関心を持っており、A−ビットが処理されたトラップに対してクリアされない場合、CPUは満杯となり機能停止するため、未完成の浮動小数点オペレーションおよびデータブレークポイントの両方はポインタの特別の処理を必要とすることがある。
CPUの割り当て可能なリソースはプロバイダによって回復される。補助ポインタは、命令がリタイアするときに解放されるリソースに対して命令のリタイアメントおよびリソースの再生を追跡および制御するために提供される。リソース再生ポインタ(RRP)317は、最新のリタイアした命令を指し示し、CSNを追跡する。「リタイアした命令」とは、実行が完了し、CPU51によって非活性化され、またコミットされた命令のことであり、次の命令の発行の間に、次の使用のために再生された関連するマシンのすべてのリソースを有している。再生されたマシンのリソースには、リネームされたおよび/または再マッピングされた論理レジスタ、アーキテクチャルレジスタ、および物理レジスタが含まれる。これ等のレジスタは、命令のリタイア時に開放されこのため次の命令が発行される間に再割り当てに使用可能とされた命令、命令のシリアル番号(SN)、チェックポイント、およびウォッチポイントに割り当てられている。マシンサイクルごとにRRPが前進する量は、そのマシンの最大命令リタイアメント速度を設定する。CPUが初期化されると、RRPは0(ゼロ)に初期化され、命令の状態の変化および後述する所定のRRPの前進ルールに従って前進する。チェックポイントとウォッチポイントの割り当ておよび割り当て解除については、以下に詳細に説明する。
図18を参照する。リソースリカバリは命令のシリアル番号を開放するので、そのシリアル番号を再び使用することができ、その結果、いくつかのレジスタを開放することになり、そのレジスタはフリーリストユニット700内のフリーリストに戻すことができる。命令がコミットされると、この命令はICRU301が発生したCOMMIT VALID信号によって識別される。このCOMMIT VALID信号に応答して、RRF302の記憶ユニット366のコミットされた命令と一致するエントリは、再利用のため制御ロジック365によって開放される。
命令がリタイアするとき(ICRU301の説明を参照のこと)およびマシンのバックアップ時(バックトラックの説明を参照のこと)に、RRFは読み取られる。ある命令がリタイアする場合、RRPポインタが示すように、制御ロジック365は記憶ユニット366を制御して、フリーリストユニット700に、FREE TAG信号の形式で、リタイアした命令に一致する物理レジスタタグを出力する。フリーリストユニットは次に、この物理レジスタタグを空きの物理レジスタタグのリストの中に入れる。
A−リング312およびその関連するロジックは、発行された各命令の状態に関する正確なマシンサイクルの現在の情報を提供する。ISNとCSNのポインタは、発行されたアクティブな命令の状態を追跡する。CSNが特定の命令に向かって前進する場合のみ、CPU51は、その命令をコミットできまたフリーなリソースをその命令の実行と関連付けることができると確信することができ、これにより精確な状態を保存できる。ISNはエントリを通過するとき、発行された命令にA−ビット(A=1 )をセットするA−リングの周りを移動する。CSNは、コミットするために完了した命令(A=0 )を捜すISNに続く。NMCSNは、完了した(非活性化された)メモリ命令(M=0 )を捜すISNに続く。RRPはA−リング312の周りのCSNの後に従い、コミットされた命令のリソースを再生する。積極的なロード/ストア命令のスケジューリングを説明する場合、その説明にはどのようにNMCSNが完了した(非活性化された)メモリ命令(M=0 )を捜すISNに続くかが記載されることになる。
命令のコミットとリタイアメントを追跡し予定する各種のポインタを使用する本発明による方法の説明は、すべての命令のタイプに関係するものであり、現在の投機的な順序なし(out-of-order) のプロセサでは多くの利点を提供する。多くの現在のプロセサは、ロード命令およびストア命令のみが外部メモリを参照し、一方他のすべての命令またはオペレーションはプロセサ内のレジスタを参照するような「ロード−ストア」アーキテクチャとして設計されてきたことを認識することによって、さらに別の利点を得ることができる。
本発明による構造と方法は、長レイテンシィ(長待ち時間)命令を区別する他の信号と、長レイテンシィ命令状態情報を記憶する記憶領域と、命令状態を追跡するポインタを供給する。第21図は、メモリ参照命令(例えばロード/ストア命令)に代表される長レイテンシィ命令状態情報を記憶するメモリ命令リング(Mリング)324と前述の能動命令リング311 との関係を示す概念図である。Mリング324 は一般にAリング311 と同じ構造と全体特性を持っているが、Mリング状態ビットはAリング状態ビットとは異る組の規則に従ってセットされる。特にMリング324 は、命令と命令形式が発行時に能動(ビットが“1”にセットされる)または非能動(ビットが“0”にクリヤされる)として処理される規則を設定する。
Mリング324 にMビットをセットする構造と方法については以上に説明した。本発明の構造と方法では、長レイテンシィ命令、特に外部メモリを参照するロード/ストア命令をCPU51 が有効且つ積極的にスケジュールすることができるようにするため、Mリング324に関連して予測分岐命令シリアル番号(PBSN)318 とポインタと非メモリコミッテッドシリアル番号(NMCSN)ポインタ319 が供給使用される。NMCSN とPBSNは前述のように両方共ICRU301 内のポインタレジスタ313 に記憶される。
NMCSN319はCSN316と対になってメモリ関連動作を行う。CSN を進めるAリングに対応してNMCSN を進めるMリングがある。Mリングはラップの周囲のMビット64個から成る。即ち、典型的には64ビットのMリングで、Mビット#63に後続するビットはMビット#0である。Mビット=0とは、メモリ関連命令、例えばロード/ストア命令のような長レイテンシィ命令のことである。
本発明の特徴のいくつかの設定は一般的な実行ユニットによって得られるものであるが、長レイテンシィ命令の積極的スケジュールが利益を生み出すのは状態スケジュールに長レイテンシィをサポートする特定の構造が存在する場合である。例えば、ロード/ストア命令と、他のメモリ参照命令を積極的にスケジュールする構造が提供される。局所的な記憶動作に参加しない他の実行ユニットにこの種のテスタを設置する方法は、以上の開示からして当業者には自明であろう。
前述のように、SECLU609はICRU301 からのCSN とNMCSN 及びウォッチポイントユニット304 からのPBSNに応じて命令が「インレンジ」であるかを決めるロジックを含んでいる。このロジックはCSN とPBSN(CSN ≦第1窓≦PBSN) の間のシリアル番号を持つ第1窓にある命令が分岐の誤予測に関係なく実行できるか識別する(但し、「≦」の記号は厳密な算術順序よりもメモリ命令リング内で相対順序を示す)。第2のCSN とNMCSN (CSN≦インレンジ≦NMCSN ≦PBSN)の間のシリアル番号を持つ多分小型のウィンドウの命令は、分岐誤予測または実行例外とは無関係に実行するようにスケジュールされる。積極的な実行をスケジュールするためにDFB62 内のLSU200に識別することができる「インレンジ」となっているのはメモリ参照命令である。第23図は厳密な状態を維持しつつロード/ストア命令を含む長レイテンシイ命令を積極的にスケジュールする本発明の方法の実施例を概略的に示すフローチャートである。
本発明のベーシックな方法へと強化する際には、ロード/ストア命令とメモリを参照する他の命令を更に積極的にスケジュールできるようにしてNMCSN を進め性能を改善するために「非故障」として知られている所定の命令を無視するように規則を設定することができる。
チェックポイントは既知の瞬間におけるマシン状態の「スナップショット」である。チェックポイントは、誤予測分岐または実行例外が生じた場合に理論上の命令順序を元に戻すために前のマシン状態を素速く回復するための方法と構造を提供する。本発明による典型的なプロセッサでは、命令発行サイクルの間にチェックポイントが作られる。本発明の方法では、チェックポイントの回復に基づくマシン状態の回復はマシンの「バックアップ」と定義される。
ェックポイント法への強化において述べるように、TIMEOUT CHKPTがチェックポイント303 によって発生されISU200へ送られて命令型式とは比較的無関係に所定のタイミングでチェックポイントを作る。このタイムアウトチェックポイントは、チェックポイントが作られなかった命令の効果を元に戻そうとするサイクルの最大数を決めて制限するために供給される。(チェックポイントできる命令型式が同じ命令ウィンドウから発行される時には、タイムアウトチェックポイントの形成は延期されるかキャンセルされる。)
チェックポイント割り付けレジスタ352 の構造は表1に概略的に示してある。最初の6ビットは状態ビットである。ビットVはチェックポイントの有効性(割り付け)を示す。ビットCP(チェックポイントが追い越されている)はCSN がこのチェックポイントのSNを追い越したかを示し、QはCSN 前進トラックを維持する5種の状態のうちの1つを示し、GT(より大きい)はCSN が割り付け時のチェックポイントのシリアル番号よりも大きいか否かを示す。ビットGTはCSN がいつこのチェックポイントを追い越したかを決定する。固有の機能性を得るためにビットVが「1」にセットされビットCP「0」にセットされるチェックポイント位置0以外では、ブーツアップ時にビットVとCPをゼロにセットすべきである。TSN フィールドはチェックポイントされたシリアル番号に後続している次のシリアル番号を示す。この設置計画では、チェックポイント番号はセーブされず、位置「i」用のチェックポイントデータ構造にVビットをセットするとチェックポイント「i」が割り付けられたことが示される。チェックポイントレジスタ(CHKPNT REG i) に可能な状態は表2に説明してある。例示したCPU では、チェックポイントの割り付け中、ビットQは「000 」か「001 」にリセットされる。ビットQはAリング312 の周囲のCSN の進行に基づく状態を変える。表3にQビットの状態と遷移を示す。
命令SN用のチェックポイントを割り付ける時には、チェックポイント割り付けロジックユニット351 が、チェックポイント「1」が有効でリタイヤされていないことを示すためにCHKPNT REG iでVビットを1にセットし、CPビットをゼロにセットする信号をチェックポイントレジスタとコントロールユニット352 へ送る。割り付けられるチェックポイントは、ISU に送られて割り付けに使用できる次のチェックポイント番号を知らせる信号と、チェックポイントの形成を可能にさせる信号を含みチェックポイントを作る命令のシリアル番号を識別するISU からのDO CHKPNT とによってCAL351内で決められる。チェックポイント割り付けの時にCSN の位置を示すため、ビットQは表3に示すように書き込まれる。この情報はリングの周囲(例えばロケーション63から逆進してロケーション0まで)からのCSN の遷移を検出するために用いられる。割り付けられたチェックポイントは、チェックポイントのシリアル番号を識別し駆動信号としても働く信号DO CHKPNT によって決定される。更に、チェックポイントに対応するシリアル番号はチェックポイント割り付けロジックユニット351 によって計算されるが、1だけ大きくされたシリアル番号(NSN=SN+1)だけがレジスタに記憶される。シリアル番号NSN は2種の異る条件で用いられる。第1に、NSN はICRU301 へのデータバスで大きくされたチェックポイントのシリアル番号になる。第2に、NSN はチェックポイントに後続する命令に故障命令があるか否かを決定するのに用いられる。SNではなくてNSN(SN+1)をセーブすることによってロジックを節約し、チェックポイントの後のシリアル番号を識別する信号の発生を高速化するのである。この代りに、大きくされたシリアル番号信号を発生するために設けられているレジスタとロジックにSNそのものを記憶することができる。
チェックポイントはチェックポイントクリヤ/リタイヤメントロジックユニット353 でクリヤまたはリタイヤされる。チェックポイント303 はサイクル毎にISU200によって要請される数だけのチェックポイントを必要とする。現在のチェックポイント(n)と次のチェックポイント(n+1)を通るCSN に応じてレジスタ352 のVビットフィールドをクリヤすることによってチェックポイントがリタイヤされる。チェックポイント割り付けロジックユニット353 は、チェックポイントレジスタ352 でリタイヤされるチェックポイントを指示するために用いられるOLDEST ACTIVE CHECKPOINTと呼ばれるポインタを維持する。チェックポイントをリタイヤさせる手続きは次の通りである。チェックポイント(CKPSN) に記憶されているシリアル番号とユニットされたシリアル番号(CSN) ポインタ(例えばCKPSN CSN)との差を計算することによってリタイヤロジック353 に「CSN PASSED」と呼ばれる信号が発生する。CSN はICRU301 に維持され、各サイクルでチェックポイントユニット303 へ送られる。CSNがある与えられたチェックポイント(n)と現在その次にあるチェックポイント(n+1)を追い越して進んだ時か、チェックポイントのシリアル番号を追い越したマシンバックアップがある場合だけ、チェックポイントをリタイヤさせることができる。
次のマシンサイクルを開始するためにKILL VEC信号を用意するようチェックポイントユニット303 に知らせるWILL BACKUP 信号とBACKUP CHECKPOINT 信号をバックトラップ305 から受信すると、KILL VECはコミットされている命令を殺す。殺される命令は、チェックポイントの命令のシリアル番号を指定するBACKUP CHECKPOINT 信号と最後のコミッテッド信号から引き出される。CSN とバックアップチェックポイントの間にあるすべての命令が殺される。
従来のチェックポイント技術では、命令のデコードされたアトリビュートに基づいてチェックポイントが作られる。連続するチェックポイント(チェックポイント境界のついた)の間の命令の数が制限されないように、チェックポイントは或る種の命令のアトリビュートに対してだけ作られる。命令実行例外が起こった時、故障命令以前のCPU51 の状態を回復するためにCPU51 は多数のマシンサイクルを費さなければならないかも知れない。従って、故障命令に達する前にCPU51 が命令を再実行するか元に戻すために費す時間は、チェックポイントの境界内にある命令ウィンドウのサイズと命令の数の関数になる。ここでの命令ウィンドウのサイズとは、CPU51 内で任意の時間に目立つことを許される命令の最大数のことである。(例示したCPU51 では、任意の時間に64個までの命令が目立つことができる。)
本発明の方法によれば、任意の命令境界で厳密状態を維持することができ、その命令境界に状態を回復するために要する情報量を最小にすることもできる。ここで言う「命令境界」とは、命令が発行される直前(または直後)にある連続する命令の組の中の点に対応する。各命令が命令境界を作る。
チェックポイントは、命令型式とは無関係な固定サイズまたはチェックポイントが作られているオペランドである。例えば、 200個の状態値を変えることができる命令を持つマシン(CPU) では、命令自体がせいぜい8個の値を変更できる場合でも、形成された各チェックポイントは 100個の状態値を記憶しなければならない。本発明の実施例では、特定の命令の各々によって変更される状態の量と典型的な処理において特定命令の各々が発生する統計上の頻度を考慮して、すべてのチェックポイントのチェックポイントされたデータの量を減らすように構造と方法が設定される。
更に、誤予測分岐、故障、実行エラーその他の処理中の異状からマシン状態が回復できるようにチェックポイントが発生された時の全機状態が記憶されるため、従来のチェックポイントは多量の情報を含んでいる。従来のチェックポイント法では変化する状態だけを変更する試みは行われていない。
前に言及したように、第5図の命令パイプラインでは、プログラムコントロールの誤予測と例外が時折生ずる。この時にはエラーを検出して誤予測または例外を生じさせた命令の直前の状態にCPU51を戻すように操作しなければならない。
命令を理論上で実行できるプロセッサに対しては、命令を解決する前に分岐方向(採用または非採用)または分岐アドレス(目標アドレスまたは分岐命令の次のアドレス)を予測することができる。後にこれらの予測が誤っていたと判明すると、CPU51 は以前の状態に戻り正しい分岐ストリームで命令の実行を開始する。従来のプロセッサでは、1サイクルでの評価のためにしばしば複数の分岐が用意される。しかし、従来のプロセッサはサイクル毎に1個だけの分岐予測を評価する。従って、評価のために用意はされたが選択されなかった分岐評価は遅延されなければならない。分岐評価が遅延するとCPU51 の性能が低下し、分岐をできるだけ早い時期に評価することによって性能を著しく改良することが出来る。
ウォッチポイント要素及び制御論理ユニット(WP−要素)1002は、WP活動化/非活動化制御論理2012及び16の要素の各々が XCC, ICC, FCC, COND, JMPL/分岐及び妥当性インジエータに関する情報を記憶している16のウォッチポイント要素セット2013を含んでいる。分岐/JMPLが発行され予測された時点で、予測済み分岐、取消し分岐及びジャンプ−リンク命令についての条件コード情報を内含するISU200によって DO WTCHPT信号がアサートされる。「分岐を予測する」というのは、「分岐の方向(とられたか又はとられていないか)を予測する」ことを意味し、「JMPLを予測する」というのは、JMPLがつねにプログラムのフローを変更する(つねにとられる)ことから、「JMPL標的アドレスを予測する」ことを意味する。分岐/JMPL命令を発行する場合、典型的 CPU51は、チェックポイント番号により識別されたチェックポイントを作成する。ひとたび作成されると、チェックポイントは CPU51が1つのチェックポイント場所と次のチェックポイント場所の間に存在する命令のための全ての命令実行を完了してしまうまで、活動状態にとどまる。プロセッサは一度に多数の活動中のチェックポイントをもつことができる。チェックポイントの形成は発行された分岐/JMPL命令に制限されず、例えば1つのトラップをとるときといったようなその他のケースで形成される可能性もある。
CC−捕捉(グラビング)論理1000は、データ順方向送りバスから条件コードデータ有効及び条件コードタグを受理しこれらを現行のマシンサイクル中に ISBから受理した条件コードタグと一致させようとするCCタグ現行一致論理2001を含んでいる。典型的な論理回路が図31にCCタグ現行一致論理の一実施形態について示されている。
a.ウォッチポイントオペレーション−例1:
表7は、サイクルX,X+1、及びX+2の中で実行された、例1のための命名のリストである。サイクルXでは、4つの命令が発行され、そのうちの1つ(addcc) がCCを修正する。このとき、リネームされた−CC物理タグ#7が割当てられる。サイクルX+1では、ここでも4つの命令が発行され、そのうちのいずれもCCを修正せず、 addccが実行されてサイクルX+1内でCCデータを復帰させる。サイクルX+2では addccによって修正されたCCデータはFSR/CCRFRN内にある。サイクルX+2では4つの命令が発行され、そのうちのいずれも分岐前にCCを修正せず、その後、分岐命令(br, xcc)が発行される。この場合、サイクルX+2では、現行サイクル内でCCを修正する命令が全く発行されないことからCC RENAMED =0である。その上、最も晩期のCCタグが#7でありこれがサイクルXで割当てられることから、CC TAG C=CC TAG RENAMED C=7である。最後に、最も晩期のCCがFSR/CCRFRN内にあることから、CC DV C =1である。
表8は、サイクルX及びX+1内で実行された例2についての命令リストである。サイクルXでは、4つの命令が発行され、そのうちの1つ(addcc) がCCを修正する。その後、リネーム済みCC物理タグ#7が割当てられる。サイクルX+1では、ここでも4つの命令が発行され、そのうちのいずれも分岐前にCCを修正せず、そのうちの1つが分岐命令である。この場合、サイクルX+1では、現行サイクルでCCを修正するような命令は全く発行されていないため、CC RENAMED=0である。又、最も晩期のCCタグが#7であり、それが先行サイクルで割当てられているため、CC TAG C=CC TAG RENAMED C=7である。ただし、 addccによって修正される最も晩期のCCデータはFSR/CCRFRNにおいてCC−レジスタ内に書込まれないことからCC DV C =0である。
表9は、サイクルX及びX+1で実行される例3についての命令リストである。サイクルXでは、4つの命令が発行され、(addcc)の1つがCCを修正する。このときリネーム済み−CC物理タグ#7が割当られる。サイクルX+1では、ここでも4つの命令が発行され、そのうちの1つ(subcc) が分岐前にCCを修正し、それらのうちの1つは分岐命令である。リネームされたCC物理タグ#8は命令subcc に割当てられる。この場合、サイクルX+1では、現行サイクル内でCCを修正する命令が発行されているため、CC RENAMED=1である。先行サイクルによる最も晩期のCCタグが#7であることからCC TAG C=7であり、現行サイクルでCCを修正する命令が発行れておりリネームされたCC物理タグ#8が割当てられることから、CC TAG RENAMED C=8である。同様に、 subccによって修正されている最も晩期のCCデータがFSR/CCRFRN内でCCレジスタ内に書込まれていることから、CC DV C =0である。
分岐が発行されてから1サイクル後に、WP VALID [i]がアサートされる。WP VALID [i]=1でありEVAL READY [i]=0そしてKILL VEC [i]=0である場合、WP ACTIVE VEC [i] がアサートされる (図29参照) 。「WP ACTIVE[i]=1」は、チェックポイントiを用いる分岐がすでに発行されているもののまだ解決されていないことを意味する。値が0となったならば、それは分岐が解決された(完了した)ことを意味する。WP ACTIVE VEC はICRU301 に送られ、どの分岐/JMPL命令が完了されるかを決定するために用いられる。
JMPL命令を発行し予測するとき、 FETCHは、ウォッチポイントに対しWR ANPC を介して予測されたJMPL標的アドレスを送る。ウォッチポイントはアドレスを保ち、実行ユニットにより計算上の正しいアドレスとこのアドレスを比較することによって適正さを評価する。予測が誤っていたことが判明した場合、ウォッチポイントは、正しいアドレスから命令を再度フェッチするためRD ANPC を介して FETCHに計算上の正しいアドレスを送る。予測されたJMPL標的アドレスは分岐の場合と同じ方法でTARGET RAM内に記憶される。
例外は、発行又は実行中に発生する可能性がある。かくして例外には発行トラップと実行トラップが含まれる。以下では、発行トラップと実行トラップの検出について記述する。
ISU200は同様に、命令の発行を実施する発行トラップを検出する。これらの発行トラップは、同期化又は非同期化発行トラップであり得る。当業者であれば、同期化及び非同期化とされる発行トラップのタイプは、さまざまな基準に基づいて選択され得、設計者の選択の対象となりうるということを認識することだろう。
図8を参照すると、発行済み命令の実行中に、FPU600, FXU601及びLSU603によって検出されるエラーが発生する可能性がある。前述した通り、FPU600, FXU601及びLSU603は、命令の実行中にエラーが発生したか否かを表示する ERR STAT 信号を ISB61のPSU200に出力する。 LSU及び FXUからの実行エラーは、PSU300により容易にとり扱うことができる。しかし、次に記述するように、浮動小数点例外は特殊な取り扱いを必要とする。
ウォッチポイント304 が誤予測命令を検出した時点、又は DFB62内で実行例外が発生し、PSU300内の実行例外(etrap) をトリガーした時点で、 CPU「バックトラック」が開始される。プロセッサをバックトラッキングすることには、以下でより詳細に説明する通り、プロセッサバックアップ及び/又はプロセッサバックステップが含まれる可能性がある。1つのマシンサイクル中、1つ以上の誤予測及び実行例外が発生し得る。典型的な CPU51においては、全ての機械的に実行された制御転送命令 (例えば、予測された分岐命令) がチェックポイントされる。このような誤予測された命令はつねに「チェックポイント境界」に存在する。チェックポイント済みの誤予測命令からの回復は、発行時点における誤予測命令に対応するチェックポイントの中に記憶されたマシン状態を回復することによって達成できる。実行例外は、誤予測とは異なり、全ての命令がチェックポイントされるわけではないことから、チェックポイント済み命令に対応しないかもしれない。一般に、実行例外を生成する命令が、あらゆる「命令境界」に存在し得る。1つのチェックポイント境界は、機械的に発行された制御転送命令についてのみ1つの命令境界に対応する。機械的に発行された命令の全てがチェックポイント形成を要求するわけではなく、むしろPC不連続性を作り出すような機械的制御転送命令だけである (ただし、制御転送命令がマシン「同期化」命令として選択され、本書に記述のとおり選択的にチェックポイントされる場合は除く) ということを思い出して頂きたい。従って CPU51がバックトラックされる要領は、回復を開始した条件及び誤予測又は例外がチェックポイントされた命令に対応しているか否かによって左右される。
マシンバックアップは、(1)PSU300内のPLSM307がRED Modeへのエントリを試みたとき、又は(2)ウオッチポイント304が誤予測命令(mispredicted instruction)を検出したときに起動される。また、(3)DFB62から障害命令(faulting instruction)(実行例外(execution exception )、即ちe−トラップが検出されたときは、マシンのバックアップが起動される場合もあり、そうでない場合もある。バックアップ手続きは、バックアップのために実行されたチェックポイント命令(checkpointed instruction)の選択を含めて、バックアップを起動する理由によって異なる。実行例外の原因となる障害命令がチェックポイント境界に一致しない場合には、バックステップがバックアップに続いて行われる。
誤予測命令がウオッチポイント304によって検出さたとき、又はRED Modeへのエントリが行わたときは何時でも、BKUP402によってバックアップサイクルが起動され、実行例外からの回復が行われる。この実行例外からの回復はバックステップだけ、又はバックアップだけ、或いはバックアップと1以上のバックステップとの組合せを必要とする。BKUP402はチェックポイント・ベクトル・ロジックユニットを含み、このユニットは各サイクル毎に、DFB62及びウオッチポイント304から受け取る命令の実行状態に関する情報を評価し、どの命令が誤って予測されたか、又はどの命令が実行例外を起こしたかを決定する。典型的なCPUでは、ロジックユニット404は、DFB62又はウオッチポイント304から受けた各チェックポイントに関して“OR”即ち論理和を取る。最早チェックポイント選択ロジック405は、どのチェックポイントが最早かを決定し、後の障害命令に対応するe−トラップが、既に強制終了させたロジック404によって識別されたチェックポイントへのバックアップを起動しないようにする。BKUP402は、どのチェックポイント番号をバックアップに使うかを決定する際に、誤予測及び実行例外を考慮する。
マシンバックステップはDFB62に於ける障害命令から発生された実行例外(e−トラップ)の結果としてのみ起動される。マシンバックステップはマシンバックアップとの組合せで起こることが多いが、バックアップを起動しなくても起動される。
図44はCPU51内に機能的に置かれた典型的な優先ロジック及び状態マシン(PLSM)307を示す。PLMSは幾つかの役割を持っている。第1に、未処理又は並行例外群の最早の例外を識別する役割を果たす。例外条件には、RED Mode、発行トラップ(i−traps)、実行トラップ(e−traps)、割り込み、及び誤予測が含まれる。第2には、マシンサイクル中に到着する例外及び誤予測を、相互間で、また並行処理される例外及び処理待ちのものの間の優先順位を決める役割をは果たす。第3に、形式の異なる例外及び誤予測間の可能な状態遷移を決定する役割を果たす。第4には、Backtracking(Backupそして/又はBackstep)、REDモード処理を起動する制御信号を発する役割を果たす。
先に示した如く、トラップは図5の命令パイプライン内で幾度も生じ、且つ、トラップ処理ルーチンにより処理されねばならない(即ち、受入れられねばならない)。図17を参照すると、トラップを受入れるべき例外をPSU 300 が既述の手法で検知すると、PLSM 307はTAKE TRAP 信号を生成し、これにより、制御レジスタファイル800 にトラップを受入れさせると共に、受入れられるべきトラップのタイプを識別する。これに応じ、リード/ライト/更新ロジック816 はTBA レジスタ812 から対応トラップベクトル(TRAP VEC)信号を読み出してこれをBRB 59に送る。図6を参照すると、PCロジック106 はTRAP VEC信号を使用して新たなFPC 、APC およびNAPCを算出し、これにより、対応トラップ処理ルーチンの命令を取り出して出力する。
Claims (127)
- 命令を発行するための命令発行ユニット、データを記憶するためのメモリ及び命令を実行するための実行ユニットを有する、in-orderで発行された命令のout-of-order投機的実行を実施する中央処理ユニットの中で、このユニットの中の精確な状態を維持しながらチェックポイント実行されたデータの量を減少させるべく1つの命令をチェックポイント実行するための装置において、
− 前記中央処理ユニット内のデータ記憶装置内に複数のマップレジスタ要素をもつレジスタリネームマップデータ構造;
− 1つの命令の実行に先立ちその命令が参照した各々の論理ソース及び/又は論理宛先レジスタのために前記CPU 内の利用可能な物理レジスタを割振るための手段;
− 固有の論理レジスタタグにより、各々の前記論理ソースレジスタを識別するための手段;
− 物理レジスタタグにより各々の割振り可能な物理レジスタを識別するための手段;
− 前記固有の論理レジスタタグのうちの1つと前記複数のマップレジスタ要素のうちの各々1つを結びつけるための手段;及び
− 各々のマップレジスタ要素が現在その論理レジスタタグに対しマッピングされている物理レジスタタグを記憶するような形で、この物理レジスタが割振られた固有の論理レジスタタグに付随するマップレジスタ要素の中に各々の前記割振られた物理レジスタで識別された物理レジスタタグを記憶するための手段
を含んで成り、
かくして、前記命令の発行の結果として前記レジスタのために変化した全ての状態は記憶され、CPU バックアップが必要とされる場合に回復のため利用可能な状態になる、装置。 - 命令を発行するための発行ユニット、命令を実行するための実行ユニット及び中央処理ユニット内のその他のユニットに対し前記実行ユニットからの実行結果を伝達するデータ順方向分配バスを有する中央処理ユニットの中で、複数の投機的に発行された予測された命令の実行結果を同時に監視するための方法において、
− プロセッサ内の前記データ順方向分配全体にわたり前記実行ユニットからの実行結果信号を受理するように結合されたウォッチポイントデータを記憶するための複数のウォッチポイントレジスタをもつウォッチポイントユニットを提供する段階;
− 前記投機的に発行された予測された命令の各々について、制御フロー転送方向を左右し投機的発行済み予測命令を投機的に発行する基礎となる1つの条件の予測値を識別する予測条件データ結果を含むウォッチポイントデータを記憶するために1つのウォッチポイントレジスタを割振る段階;
− 前記データ順方向送りバス上で伝送される前記投機的発行済みの予測命令についての実行結果信号を監視する段階;
− 前記記憶されたウォッチポイントデータ及び実際の既知の条件データ結果信号及び予め定められた規則を含む前記記憶されたウォッチポイントデータ及び実行結果信号に基づき、予め定められた事象の発生を検出する段階であって、ここで前記実際の既知の条件データ結果信号が、前記投機的発行済みの予測命令の制御フロー転送方向を決定する上で基礎となるべき条件の実際の値を識別しているような、段階;
− 信号が一致しているかしていないかを決定するべく前記投機的に発行された命令に関して前記データ順方向送りバス上で到着した前記結果信号と前記投機的に発行された予測命令のうちの1つについて前記ウォッチポイントレジスタ内に記憶された前記ウォッチポイントデータを比較する段階であって、一致は前記投機的発行済み予測命令が正しく予測されていたことを表わし、不一致は、前記投機的発行済み予測命令が該予測されていたことを表わすような、段階;及び
− 比較の結果、前記予測が誤予測であったことが表示された場合には、前記誤予測に基づいて実行された命令が取消されるように前記中央処理ユニットをより早期の中央処理ユニット状態まで回復させる段階、
を含んで成る方法。 - − 前記データ順方向送りバス上に現われる実行結果信号がもはや前記予め定められた事象の発生を検知する結果をもたらさないように前記中央処理ユニットを回復させる段階の後に前記ウォッチポイント要素を割振り解除する段階;
をさらに含んで成る、請求項2に記載の方法。 - 前記中央処理ユニットを回復させる段階には、
− 前記実際の既知の条件データ結果信号がフェッチされ誤予測を訂正するべく発行され得るように、適正な命令ストリームに対応する前記発行ユニットに対する新しい命令アドレスを供給する段階;
− 前記の直前の状態まで中央処理ユニットのマシン状態を回復し、前記誤予測に基づいて実行された命令が取消されるように命令の実行を再開する段階;
− 前記フェッチされた命令に基づいて前記適正な命令ストリーム内で前記新しい命令のための実行を開始する段階、
が含まれている、請求項2に記載の方法。 - 前記投機的発行済み予測命令の実行に先立って、チェックポイントデータ記憶装置内に中央処理ユニットマシン状態を記憶する段階をさらに含んで成り、
前記中央処理ユニット状態の回復段階には、前記新しい命令のための前記実行開始段階に先立って前記チェックポイントデータ記憶装置から中央処理ユニット状態を回復することが含まれている請求項4に記載の方法。 - 前記中央処理ユニットをより早期の中央処理ユニット状態まで回復させる前記段階にはさらに、前記より早期の状態まで回復させるべく前記中央処理ユニットをバックアップすることが含まれている請求項5に記載の方法。
- 前記中央処理ユニットをより早期の中央処理ユニット状態まで回復させる前記段階にはさらに、前記より早期の状態まで回復させるべく前記中央処理ユニットをバックアップしかつバックステップすることが含まれている請求項5に記載の方法。
- 前記投機的発行済み予測命令のうちの1つのための前記ウォッチポイントの中に記憶された前記ウォッチポイントデータがWP COND 信号を含み;前記データ順方向送りバス上で到着した前記結果信号には、XCC DATA C, ICC DATA C又はFCC DATA C, FXU XCC DATA, FXU ICC DATA, FXAGU XCC DATA, FXU ICC DATA、及びFPU FCC DATAから成るグループの中から選択された実行ユニット条件コードデータが含まれている、請求項2に記載の方法。
- 前記命令には、予測された分岐命令が含まれている請求項2に記載の方法。
- 前記命令にはジャンプ&リンク命令が含まれている請求項2に記載の方法。
- 前記命令には、予測された分岐及びジャンプ&リンク命令が含まれている請求項2に記載の方法。
- 前記新しいアドレスからウォッチポイントユニット内のデータ記憶装置内に記憶されている請求項2に記載の方法。
- 命令を発行するための命令発行ユニット、発行された命令を実行するための実行ユニット及び前記実行ユニットからCPU のその他のコンポーネントまで実行結果を伝達するための複数のデータ順方向送りバスを有する中央処理ユニット(CPU) の中で、前記実行結果生成ユニットから予め定められた命令が待っている実行結果を同時に捕捉するための方法において、
− 前記結果データを捕捉することのできる各々の実行結果ソースから、有効化制御信号を受理する段階:
− 各々の前記実行結果ソースユニットから結果データタイプ信号を受理する段階;
− 前記実行結果ソースユニットのうちのどれから前記結果データが受理されることになるかを表示するセレクトソース信号及び前記結果データが予測されている現行のクロックサイクルとの関係における時刻の表示を受理する段階;
− 選択された実行結果ソースユニットを規定するべく予め定められた規則に従って前記制御有効化信号、前記結果データタイプ信号及び前記セレクトソース信号の受理に応答してデータ捕捉有効化信号を生成する段階;
− 前記実行結果ソースユニットから実行結果データ信号を監視する段階;
− 前記到達した実行結果データ及び前記データ捕捉有効化信号に応答して前記選択された実行結果ソースユニットから実行結果データを捕捉する段階;及び
− 前記中央処理ユニット内のデータ記憶装置内での評価のため前記捕捉された実行結果データを記憶する段階、
を含んで成る方法。 - 少なくとも1つのデータ捕捉有効化信号の生成に応答して前記捕捉された実行結果データの評価を開始する段階、
をさらに含んで成る請求項13に記載の方法。 - − 抑止制御信号を受理する段階;及び
− 前記抑止選択信号が受理された場合に前記データ捕捉有効化信号を生成する前記段階を抑止する段階;
をさらに含んで成る請求項13に記載の方法。 - 前記抑止制御信号には、現行のマシンサイクルにて発行された命令によって条件コードが修正されたこと、又現行サイクル中に前記データ順方向送りバス上に現われうる条件コードが現行サイクル中有効でない可能性があるということを表わす前記条件コードリネームユニットからの条件コードリネーム済み信号が含まれている請求項15に記載の方法。
- 前記実行結果データには条件コードデータが含まれている請求項13に記載の方法。
- 前記実行結果データには、リネームされた条件コードデータが含まれている請求項13に記載の方法。
- 前記実行結果データには、浮動小数点実行ユニット、整数実行ユニット及びアドレス生成ユニットから受理された条件コードデータ及び条件コードリネームユニットから受理されたリネームされた条件コードデータが含まれており、これらの条件コードデータ及び前記リネームされた条件コードデータが同じマシンサイクル中に受理されている請求項13に記載の方法。
- 前記実行結果データには条件コードデータが含まれ、前記予め定められた命令には、予測された分岐命令を含む予測された制御フロー転送命令が含まれている請求項13に記載の方法。
- 前記実行結果データには、計算されたジャンプ&リンクアドレスが含まれており、前記予め定められた命令には、ジャンプ&リンク命令が含まれている請求項13に記載の方法。
- 前記実行結果データには条件コードデータ及び計算上のジャンプ&リンクアドレスが含まれており、前記予め定められた命令には予測された分岐命令及びジャンプ&リンク命令が含まれている、請求項13に記載の方法。
- 前記実行結果ソースユニットが命令実行ユニットを含んでいる請求項13に記載の方法。
- 前記実行結果ソースユニットにはさらにレジスタリネームユニットが含まれる請求項13に記載の方法。
- 前記レジスタリネームユニットには条件コードレジスタリネームユニットが含まれ、前記実行計算データにはリネーム条件コードデータが含まれている、請求項24に記載の方法。
- 前記実行結果ソースユニットには整数実行ユニット、浮動小数点実行ユニット、アドレス生成ユニット及び条件コードレジスタリネームユニットが含まれている請求項13に記載の方法。
- 前記結果データが条件コードデータ及びアドレスデータを含んでいる請求項13に記載の方法。
- 前記条件コードタイプの信号には、その命令が発行された時点で生成された前記条件コードリネームユニットからの条件コードタイプの信号、及び命令発行中により早期に生成されその後ウォッチポイント記憶要素の中に記憶された条件コードタイプの信号が含まれている請求項13に記載の方法。
- BR XCC信号、BR ICC信号、BR FCC信号及びその組合せから成るグループの中から前記条件コードタイプ信号が選択される請求項28に記載の方法。
- 前記条件コードタイプ信号がWP XCC信号、WP ICC信号、WP FCC信号及びその組合せから成るグループの中から選択されている請求項28に記載の方法。
- − 前記有効化制御信号がDO PREDICT VEC又はWP ACTIVEから成るグループの中から選択され
− 前記データタイプ信号が、BR XCC信号、BR ICC信号、BR FCC信号、WP XCC信号、WP ICC信号及びWP FCC信号から成るグループの中から選択され;
− 前記レクトソース信号は、CC DV C, FXU CC CURR MATCH, FXU CC ARRAY MATCH, FXAGU CC CURR MATCH, FXAGU CC ARRAY MATCH, FPU CC CURR MATCH、及びFPU CC ARRAY MATCHから成るグループの中から選択され;
− 前記生成されたソース選択信号は、XCC DATA C, FXU DATA C or ICC DATA C, FXU XCC DATA F, FXAGU CC DATA F, FXAGU CC DATA F、及びFPU CC DATA F 信号、から成るグループの中から選択されたソース信号を選択するべくSEL BR XCC, SEL BR ICC, SEL FXU XCC, SEL FXU ICC, SEL FXAGU XCC, SEL FXAGU ICC, SEL FPU FCC から成るグループの中から選択され;
− 前記捕捉された実行結果データは、XCC DATA C, FXU DATA C or ICC DATA C, FXU XCC DATA F, FXAGU CC DATA F, FXAGU CC DATA F,FPU CC DATA F データ信号から成るグループの中から選択され、
− 評価のための前記捕捉された実行結果データがEVAL CC 信号を含んでいる、請求項13に記載の方法。 - 前記データ記憶ユニットがラッチである請求項13に記載の方法。
- 前記複数の実行結果ソースユニットには、整数実行ユニット、アドレス生成ユニット、浮動小数点実行ユニット及び条件コードリネームユニットが含まれている請求項13に記載の方法。
- 前記有効化制御信号にはDO PREDICT VEC信号が含まれ;前記有効化制御信号にはWP ACTIVE 信号が含まれ;前記実行結果データタイプ信号には条件コードタイプ信号が含まれている請求項13に記載の方法。
- 命令を発行するための命令発行ユニット、命令を実行するための実行ユニット及び前記中央処理ユニットのその他のコンポーネントに対して実行結果を伝達するための複数のデータ順方向送りバスを有する中央処理ユニットの中で、現行のCPU クロックサイクル内でリネームすることにより修正されなかった条件コードタグについて前記データ順方向送りバスから条件コードタグを捕捉するための方法において、
− 現行マシンサイクル内で発生する条件コードタグの修正を除外するものの、リネームされた条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタタグ信号を受理する段階;
− 前記データ順方向送りバスから直接複数の条件コードタグ信号を受理する段階;
− 前記受理したリネーム済み条件コードタグ信号を前記実行ユニットから到着した前記複数の条件コードタグ信号のうちの全てのものと同時に比較し、前記到着したデータ順方向送りバス条件コードタグ信号の各々に対応する比較信号を生成する段階;
−現行CPU サイクル中に前記データ順方向送りバス上で有効なデータを送る各々の実行ユニットからデータ有効信号を受理する段階;
− 各々の前記比較信号を、現行CPU サイクル中に前記データ順方向送りバスの上で有効データを送る各々の実行ユニットから到着した異なるデータ有効制御信号の論理積を同時にとる段階;
− 各々の比較信号及び各々の前記データ有効信号が表明された時点で条件コード現行一致信号を生成する段階;
を含んで成り、
− 前記条件コード現行一致信号は、前記ウォッチポイント番号のいずれであるかを識別しかくして現行のCPU サイクル内で前記データ順方向送りバスから捕捉され得る付随する命令番号及び条件コードタグを識別し、
− かくして、前記現行一致論理は、未解決の投機的に発行された複数の命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測の評価のために利用できるようにすることのできる条件コードを識別することが可能となる、方法。 - 命令を発行するための命令発行ユニット、命令を実行するための実行ユニット論理及び物理とリネームするためのレジスタリネームユニット及び前記中央処理ユニットのその他のコンポーネントに対して前記実行ユニットからの実行結果を伝達するための複数のデータ順方向送りバスを有する中央処理ユニットの中で、現行のCPU クロックサイクル内でリネームすることにより修正されなかった条件コードタグについて前記データ順送りバスから条件コードタグを捕捉するための方法において
− 前記CPU 内にデータを記憶するため複数の条件コードタグレジスタをもつ条件コードタグアレイデータ記憶装置を提供する段階;
− 現行マシンサイクル内で発生する条件コードの修正を含めてリネームされた条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタタグ信号を受理する段階;
− ウォッチポイント番号及びそのCPU サイクル中に発行された各々の投機的発行済み命令に割振られた対応する条件コードタグレジスタ要素を識別する信号ウォッチポイント番号信号成分を含む予測実施信号を受理する段階;
− そのとき現行であるCPU サイクル内で発行された命令によって1つの条件コードが修正された時点で条件コードリネーム済み信号を受理し、この条件コードリネーム済み信号を、前記予測実施信号によって識別された条件コードタグレジスタ要素内への前記リネーム済み条件コード物理レジスタタグ信号の書込みのための書込み有効化信号として用いる段階;
− 論理積をとることによって、前記条件コードリネーム済み信号と前記予測実施信号を組合せ、前記条件コードリネーム済み信号と前記予測実施(信号)の両方が表明された時点でのみ前記タグアレイに対する前記受理されたリネーム済み条件コード物理レジスタタグの書込み及びこの書込みのこのアレイを伴う場所を制御するべく書込み制御有効化信号を生成する段階;
− アレイ中の特定の要素が前記予測実施信号の一成分として含まれているウォッチポイント番号により識別され指標付けされている、前記書込み有効化信号の制御下で前記タグアレイ内の前記複数の条件コードタグレジスタ要素の1つの中に前記投機的発行済み命令に付随する前記受理されたリネーム済み条件コード物理レジスタタグ信号を記憶する段階;
− 前記リネーム済み条件コード物理レジスタタグが前記データ順方向送りバス上で到着する条件コードタグ信号と一致する必要がなくなってしまうまで、前記条件コードタグレジスタ内に前記記憶された各々のリネーム済み条件コード物理レジスタタグ信号を保持する段階;
− 同じCPU サイクル中に前記データ順方向送りバスからの複数の条件コードタグ信号を同時に受理する段階;
− 複数のアレイ比較信号を生成するべく前記記憶されたリネーム済み条件コード物理レジスタタグ信号の全てのものと前記受理されたデータ順方向送りバス条件コード信号の各々を同時に比較する段階;及び
− 前記データ有効信号と前記アレイ比較信号の論理積をとり、前記比較信号と前記データ有効信号が両方共表明された時点で条件コードアレイ一致信号を生成する段階;
を含んで成り、
− 前記条件コードアレイ一致信号は、前記ウォッチポイント番号のいずれであるかを識別しかくして現行のサイクル内で前記データ順方向送りバスから捕捉され得る付随する命令番号及び条件コードタグを識別し、
− かくして、前記アレイ晩期一致論理は、未解決の投機的に発行された複数の命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測の評価のために利用できるようにすることのできる条件コードを識別することが可能となる、方法。 - − 現行マシンサイクル内で発生する条件コードタグの修正を除外するものの、リネームされた条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタタグ信号を受理する段階;
− 前記データ順方向送りバスから直接複数の条件コードタグ信号を受理する段階;
− 前記受理したリネーム済み条件コードタグ信号を前記実行ユニットから到着した前記複数の条件コードタグ信号のうちの全てのものと同時に比較し、前記到着したデータ順方向送りバス条件コードタグ信号の各々に対応する比較信号を生成する段階;
− 現行CPU サイクル中に前記データ順方向送りバス上で有効なデータを送る各々の実行ユニットからデータ有効信号を受理する段階;
− 各々の前記比較信号を、現行CPU サイクル中に前記データ順方向送りバスの上で有効データを送る各々の実行ユニットから到着した異なるデータ有効制御信号の論理積を同時にとる段階;
− 各々の比較信号及び各々の前記データ有効信号が表明された時点で条件コード現行一致信号を生成する段階;
をさらに含んで成り、
− 前記条件コード現行一致信号は、前記ウォッチポイント番号のいずれであるかを識別しかくして現行のCPU サイクル内で前記データ順方向送りバスから捕捉され得る付随する命令番号及び条件コードタグを識別し、
− かくして、前記現行一致論理は、未解決の投機的に発行された複数の命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測の評価のために利用できるようにすることのできる条件コードを識別することが可能となる、請求項13に記載の方法。 - − 前記CPU 内にデータを記憶するため複数の条件コードタグレジスタをもつ条件コードタグアレイデータ記憶装置を提供する段階;
− 現行マシンサイクル内で発生する条件コードの修正を含めてリネームされた条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタタグ信号を受理する段階;
− ウォッチポイント番号及びそのCPU サイクル中に発行された各々の投機的発行済み命令に割振られた対応する条件コードタグレジスタ要素を識別する信号ウォッチポイント番号信号成分を含む予測実施信号を受理する段階;
− そのとき現行であるCPU サイクル内で発行された命令によって1つの条件コードが修正された時点で条件コードリネーム済み信号を受理し、この条件コードリネーム済み信号を、前記予測実施信号によって識別された条件コードタグレジスタ要素内への前記リネーム済み条件コード物理レジスタタグ信号の書込みのための書込み有効化信号として用いる段階;
− 論理積をとることによって、前記条件コードリネーム済み信号と前記予測実施信号を組合せ、前記条件コードリネーム済み信号と前記予測実施(信号)の両方が表明された時点でのみ前記タグアレイに対する前記受理されたリネーム済み条件コード物理レジスタタグの書込み及びこの書込みのこのアレイを伴う場所を制御するべく書込み制御有効化信号を生成する段階;
− アレイ中の特定の要素が前記予測実施信号の一成分として含まれているウォッチポイント番号により識別され指標付けされている、前記書込み有効化信号の制御下で前記タグアレイ内の前記複数の条件コードタグレジスタ要素の1つの中に前記投機的発行済み命令に付随する前記受理されたリネーム済み条件コード物理レジスタタグ信号を記憶する段階;
− 前記リネーム済み条件コード物理レジスタタグが前記データ順方向送りバス上で到着する条件コードタグ信号と一致する必要がなくなってしまうまで、前記条件コードタグレジスタ内に前記記憶された各々のリネーム済み条件コード物理レジスタタグ信号を保持する段階;
− 同じCPU サイクル中に前記データ順方向送りバスからの複数の条件コードタグ信号を同時に受理する段階;
− 複数のアレイ比較信号を生成するべく前記記憶されたリネーム済み条件コード物理レジスタタグ信号の全てのものと前記受理されたデータ順方向送りバス条件コード信号の各々を同時に比較する段階;及び
− 前記データ有効信号と前記アレイ比較信号の論理積をとり、前記比較信号と前記データ有効信号が両方共表明された時点で条件コードアレイ一致信号を生成する段階;
をさらに含んで成り、
− 前記条件コードアレイ一致信号は、前記ウォッチポイント番号のいずれであるかを識別しかくして現行のサイクル内で前記データ順方向送りバスから捕捉され得る付随する命令番号及び条件コードタグを識別し、
− かくして、前記アレイ晩期一致論理は、未解決の投機的に発行された複数の命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測の評価のために利用できるようにすることのできる条件コードを識別することが可能となる、請求項37に記載の方法。 - − 現行の発行ウインドウ信号内の現在リネームされた条件コードタグを各々のタグ順方向送りバスタグに比較し、先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比較することにより、現行の発行ウインドウサイクル内の現在リネームされている条件コードと先行サイクル中の条件コードタグの間でデータ順方向送りバスタグ比較を分離する段階
を含む、比較時間を低減するべく前記条件コードデータと前記データ順方向送りバスタグを比較することをさらに含んで成り、
− かくして先行するサイクル内の前記条件コードタグ及び現在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記比較は、それが単一の非分割作業にて行なわれた場合に比べさらに迅速に行なわれることになる、請求項38に記載の方法。 - 命令を発行するための発行ユニット、命令を実行するための実行ユニット及び中央処理ユニット内で前記実行ユニットからその他のユニットまで実行結果を伝達するための手段、を有する中央処理ユニット(CPU) の中で、複数の投機的発行済み命令の実行結果を同時に監視するための方法において、
− 命令識別タグで各々の命令を識別する段階;
− 各々の投機的発行済み命令について命令発行中に前記命令識別タグに付随する指標付けされたデータ記憶装置の中に前記CPU 内の予測データを記憶し、この予測データを前記投機的発行済み命令と結びつける段階であって、前記予測データがその命令が投機的に発行された条件の予測値を識別している、段階;
− 前記実行結果伝達手段上で伝送された全ての発行済み命令について、実行結果信号を同時に監視する段階;
− 前記実行結果データが前記伝達用手段上に現われた時点で前記予測データに対応するものの必ずしも等しいものではない既知のデータを含む前記実行結果データのうちの選択されたデータを同時に捕捉する段階であって、前記既知のデータが、前記命令を投機的に発行する目的で仮定された条件の実際値を識別している、段階;
− 前記予め定められたデータを既知のデータと比較し、この予め定められたデータが前記既知のデータと一致しない場合に誤予測信号を生成する段階;及び
− 前記誤予測に基づいて実行された命令が取消されるように、誤予測信号の受理に応えてより早期の中央処理ユニット状態まで中央処理ユニットを回復させる段階、
を含んで成る方法。 - 中央処理ユニットの中で投機的に発行された予測された分岐命令を含む予め定められた投機的発行済み命令のための複数の誤予測信号を同時に生成するための方法において、
− 前記投機的発行済み命令を監視するためにウォッチポイントが形成されつつあることを表示するウォッチポイント活動中信号を受理する段階;
− 前記投機的発行済み命令の各々について前記CPU 内に規定されたデータ記憶構造の中でウォッチポイント番号及び付随するウォッチポイントレジスタを割振りする段階;
− 前記1つの投機的発行済み命令に関係するウォッチポイントデータを受理し、前記割振られたウォッチポイントレジスタ内に前記ウォッチポイントデータを記憶する段階;
− 各々の発行済み分岐命令について、分岐命令のための複数の誤予測信号を同時に生成する段階であって、
・条件コード選択論理回路から評価条件コード信号を受理する段階;
・ウォッチポイント記憶要素からウォッチポイント条件信号を受理する段階;
・ウォッチポイント記憶要素から条件コードタイプ制御信号を受理する段階;
・各実行結果ソースユニットから有効化制御信号を受理する段階;
・分岐のための条件が正しく予測されているか否かを評価するため各々の前記実行結果ソースユニットのための前記有効化制御信号の表明された状態を含め予め定められた状態コード評価規則に従って前記ウォッチポイント条件信号と前記評価条件コード信号を比較する段階;
・前記分岐命令が正しく予測された場合には、分岐真信号を表明する段階;
を含む段階;及び
− 前記分岐真信号が表明されたという決定に応答して評価真信号を生成する段階;
− 投機的発行済み分岐命令について前記結果データを捕捉した結果として少なくとも1つのデータ捕捉有効化信号の受理に応えて評価準備完了信号を生成する段階;
− 前記評価準備完了信号と前記評価真信号の両方の受理に応えて命令誤予測信号を生成する段階、
を含んで成る方法。 - 中央処理ユニットの中で、投機的に発行されたジャンプ&リンク命令を含む予め定められた投機的発行済み命令のための複数の誤予測信号を当時に生成するための方法において、
− 前記投機的発行済み命令を監視するためにウォッチポイントが形成されつつあることを表示するウォッチポイント活動中信号を受理する段階;
− 前記投機的発行済み命令の各々について前記CPU 内に規定されたデータ記憶構造の中でウォッチポイント番号及び付随するウォッチポイントレジスタを割振りする段階;
− ウォッチポイントがジャンプ&リンク命令のために形成されつつあることを表示するウォッチポイントジャンプ&リンク有効化信号を受理する段階;
− 前記1つの投機的発行済み命令に関係するウォッチポイントデータを受理し、前記割振られたウォッチポイントレジスタ内に前記ウォッチポイントデータを記憶する段階;
− 各々の前記発行済みジャンプ&リンク命令について、複数のジャンプ&リンク誤予測信号を同時に生成する段階であって、
・プログラムカウンタデータを記憶するための複数の記憶場所をもつ標的アドレスデータ構造を規定する段階;
・前記ジャンプ&リンク命令が発行された時点で前記標的アドレスデータ構造記憶場所のうちの1つに代替的な次のプログラムカウンタを書込み、この記憶された代替的な次のプログラムカウンタを前記命令と結びつける段階;
・実行結果ソースユニット内での前記ジャンプ&リンクの実行中に計算上の次のプログラムカウンタ値を計算する段階;
・前記ジャンプ&リンク命令の実行の完了時点でジャンプ&リンク命令実行完了信号を生成する段階;
・前記実行結果ソースユニットから前記計算上の次のプログラムカウンタを受理する段階;
・前記記憶場所から前記ジャンプ&リンク命令に付随する前記記憶された代替的な次のカウンタを読取る段階;
・前記代替的な次のプログラムカウンタ値を前記計算上の次のプログラムカウンタ値と比較する段階;
・前記代替的な次のプログラムカウンタ値が前記計算上の次のプログラムカウンタ値と一致する場合、ジャンプ&リンク一致信号を生成する段階;及び
・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク有効化信号の両方の表明に応えてジャンプ&リンク真信号を生成する段階、
を含む段階;
− 前記ジャンプ&リンク一致信号が表明されたという決定に応答して評価真信号を生成する段階;
− 前記ウォッチポイント活動中信号、前記命令ウォッチポイント番号信号、前記ウォッチポイント活動中信号及び前記ジャンプ&リンク命令実行完了信号の表明に応答して、ジャンプ&リンク命令評価有効化信号を生成する段階;
− 前記ジャンプ&リンク命令評価有効化信号の受理(の受理)に応えて評価準備完了信号を生成する段階;及び
− 前記評価準備完了信号及び前記評価真信号の受理に応えて命令誤予測信号を生成する段階、
を含んで成る方法。 - 中央処理ユニットの中で、投機的に発行された予測された分岐命令及びジャンプ&リンク命令を含む予め定められた投機的発行済み命令のための複数の誤予測信号を同時に生成するための方法において、
− 前記投機的発行済み命令を監視するためにウォッチポイントが形成されつつあることを表示するウォッチポイント活動中信号を受理する段階;
− 前記投機的発行済み命令の各々について前記CPU 内に規定されたデータ記憶構造の中でウォッチポイント番号及び付随するウォッチポイントレジスタを割振りする段階;
− ウォッチポイントがジャンプ&リンク命令について形成されつつあることを表示するウォッチポイントジャンプ&リンク有効化信号を受理する段階;
− 前記1つの投機的発行済み命令に関係するウォッチポイントデータを受理し、前記割振られたウォッチポイントレジスタ内に前記ウォッチポイントデータを記憶する段階;
− 各々の発行済み分岐命令について、分岐命令のための複数の誤予測信号を同時に生成する段階であって、
・条件コード選択論理回路から評価条件コード信号を受理する段階;
・ウォッチポイント記憶要素からウォッチポイント条件信号を受理する段階;
・ウォッチポイント記憶要素から条件コードタイプ制御信号を受理する段階;
・各実行結果ソースユニットから有効化制御信号を受理する段階;
・分岐のための条件が正しく予測されているか否かを評価するため各々の前記実行結果ソースユニットのための前記有効化制御信号の表明された状態を含め予め定められた状態コード評価規則に従って前記ウォッチポイント条件信号と前記評価条件コード信号を比較する段階;
・前記分岐命令が正しく予測された場合には、分岐真信号を表明する段階;
を含む段階;及び
・前記分岐真信号が表明されたという決定に応答して評価真信号を生成する段階;そして
− 各々の前記発行済みジャンプ&リンク命令について、複数のジャンプ&リンク誤予測信号を同時に生成する段階であって、
・プログラムカウンタデータを記憶するための複数の記憶場所をもつ標的アドレスデータ構造を規定する段階;
・前記ジャンプ&リンク命令が発行された時点で前記標的アドレスデータ構造記憶場所のうちの1つに代替的な次のプログラムカウンタを書込み、この記憶された代替的な次のプログラムカウンタを前記命令と結びつける段階;
・実行結果ソースユニット内での前記ジャンプ&リンクの実行中に計算上の次のプログラムカウンタ値を計算する段階;
・前記ジャンプ&リンク命令の実行の完了時点でジャンプ&リンク命令実行完了信号を生成する段階;
・前記実行結果ソースユニットから前記計算上の次のプログラムカウンタを受理する段階;
・前記記憶場所から前記ジャンプ&リンク命令に付随する前記記憶された代替的な次のカウンタを読取る段階;
・前記代替的な次のプログラムカウンタ値を前記計算上の次のプログラムカウンタ値と比較する段階;
・前記代替的な次のプログラムカウンタ値が前記計算上の次のプログラムカウンタ値と一致する場合、ジャンプ&リンク一致信号を生成する段階;及び
・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク有効化信号の両方の表明に応えてジャンプ&リンク真信号を生成する段階、
・前記ジャンプ&リンク一致信号が表明されたという決定に応答して評価真信号を生成する段階;
・前記ウォッチポイント活動中信号、前記命令ウォッチポイント番号信号、前記ウォッチポイント活動中信号及び前記ジャンプ&リンク命令実行完了信号の表明に応答して、ジャンプ&リンク命令評価有効化信号を生成する段階;
を含む段階
− 投機的発行済み分岐命令のための前記結果データの捕捉の結果としての少なくとも1つのデータ捕捉有効化信号の受理又は前記ジャンプ&リンク命令評価有効化信号の受理に応答して、評価準備完了信号を生成する段階;及び
− 前記評価準備完了信号及び前記評価真信号の両方の受理に応答して命令誤予測信号を生成する段階、
を含んで成る方法。 - − 各々の実行結果ソースユニットから有効化制御信号を受理する段階;
− 各々の実行結果ソースユニットから結果データタイプ信号を受理する段階;
− 前記結果データが前記実行結果ソースユニットのいずれから受理されることになるかを表示するセレクトソース信号及び、前記結果データが予測される現行クロックサイクルとの関係における時刻の表示を受理する段階;
− 予め定められた規則に従って前記有効化制御信号、前記結果データタイプ信号及び前記セレクトソース信号の受理に応答してソース選択信号を生成する段階;
− 前記実行結果ソースユニットから実行結果データ信号を監視する段階;
− 前記到着する実行結果データ及び前記ソース選択信号に応えて前記選択されたソースから実行結果データを捕捉する段階;及び
− 前記プロセッサ内のデータ記憶装置内に評価のため前記捕捉された実行結果データを記憶する段階;
をさらに含んで成り、
かくして予め定められた命令が待っている結果データは、複数の実行結果ソースユニットから同時に捕捉される請求項43に記載の方法。 - 前記実行結果ソースユニットには命令実行ユニットとレジスタリネームユニットが内含されている請求項43に記載の方法。
- − 前記予め定められた投機的発行済み命令が制御転送命令、分岐命令、ジャンプ&リンク命令及びそれらの組合せから成るグループの中から選択され;
− 前記条件コードタイプ制御信号には、WP XCC,WP ICC,WP FCC及びその組合せから成るグループの中から選択されたものが含まれており、
− 前記分岐真信号がBR TRUE 信号を含み;
− 前記評価条件コード信号がEVAL CC 信号を含んでおり;
− 前記ウォッチポイント条件信号にはWP COND 信号が含まれており;
− 前記有効化信号がWP JMPL 信号を含んでおり、前記第1の状態がWP JMPL =0であり、前記第2の状態がWP JMPL =1であり、
前記ソース選択信号が、SEL BR XCC, SEL BR ICC, SEL FXU XCC,SEL FXU ICC, SEL FXAGU XCC, SEL FXAGU ICC、及びSEL FPU FCC信号から成るグループの中から選ばれたものを含んでおり;
− 前記ジャンプ&リンク命令実行完了信号には、FXAGU JMPL信号が含まれており;
− 前記ジャンプ&リンクチェックポイント番号がFXAGU CHKPNT DEC信号を含み;
− 前記ジャンプ&リンク一致信号がJMPL MATCH信号を含み;
− 前記ジャンプ&リンク真信号がJMPL TRUE 信号を含み;
− 前記ウォッチポイントジャンプ&リンク信号がWP JMPL 信号を含み;
− 前記評価真信号がEVAL TRUE 信号を含み;
− 前記評価準備完了信号がEVAL TRUE 信号を含み;
− 前記評価準備完了信号がEVAL READY信号を含み;
− 前記評価有効化信号がEVAL ENABLE 信号を含み;
− 前記ウォッチポイント活動中信号がWP ACTIVE VEC 信号を含み;
− 前記ウォッチポイントジャンプ&リンク有効化信号がWP JMPL信号を含み;
− 前記命令誤予測信号がWP MISPRED VEC信号を含む
請求項43に記載の方法。 - 命令発行ユニット及び複数の命令実行ユニットを有する中央処理ユニットの中で、投機的発行済みの予測された分岐命令及びジャンプ&リンク命令を含む、予め定められた投機的発行済み命令のための複数の誤予測信号を同時に生成するための方法において、
− 命令シーケンスの実行の結果としてもたらされる条件を予測する段階;
− 前記実行シーケンスの実行を完了する前に前記予測された条件に基づいて制御転送命令を投機的に発行する段階;
− 前記CPU のデータ構造内でウォッチポイント記憶レジスタを割振りし、前記投機的に発行された命令のうちの特定の1つの命令と前記割振られたレジスタを結びつける段階;
− 前記制御転送命令のための正しい方向を有する評価された条件との後の比較のために、前記割振られたウォッチポイントレジスタ内に前記予測された条件を記憶する段階;及び
各々の投機的に発行された命令について、
− 前記実行ユニットによって生成された実行結果データを監視する段階、
− 各々の前記ウォッチポイントレジスタの中に記憶された前記実行前予測情報を前記実行ユニットから受理した実行後評価された条件情報と比較して、前記予測された条件情報が前記命令シーケンスについて前記評価された条件情報に一致しているか否かを見極める段階;及び
− 前記命令のための前記予測情報が前記命令のための前記既知の情報と一致しない場合に、誤予測された条件情報の結果として誤って発行された各々の投機的発行済み命令についての誤予測表示を生成する段階、
を含んで成る方法。 - 命令発行ユニット、命令実行ユニット、及びデータを記憶するためのメモリ記憶ユニットを有する中央処理ユニットの中で、このユニット内の単一の共用記憶ユニット内の共通のデータ構造の中に代替的分岐アドレス及び予測されたジャンプ&リンクアドレスを並行して記憶するための方法において、
− 発行された各々の制御転送命令についてそれが発行された時点で発行ユニットからの制御転送命令発行済み信号を生成する段階であって、前記制御転送命令発行済み信号には、分岐命令又はジャンプ&リンク命令として制御転送命令を識別するべくウォッチポイントタイプの信号が含まれている段階;
− 予測された分岐及びジャンプ&リンク命令の命令復号中に代替的な次のプログラムカウンタを決定する段階;
− 代替的分岐アドレスを記憶するための前記記憶ユニット内のレジスタ場所を識別するウォッチポイント書込み有効化制御信号及びウォッチポイント書込みアドレス信号を生成する段階であって、このウォッチポイント書込み有効化制御信号が、チェックポイント又はウォッチポイントを作る時に表明される、段階;
− 前記ウォッチポイント書込みアドレスにより表示されたレジスタ場所で前記記憶ユニット内に前記ウォッチポイント代替的次プログラムカウンタを書込む段階;
を含み、ここで
− 前記ウォッチポイント代替次プログラムカウンタには、前記制御転送命令がジャンプ&リンク命令である場合予測された標的フェッチプログラムカウンタが含まれ、前記ウォッチポイント代替次プログラムカウンタには、前記制御転送命令が予測された分岐命令である場合に代替的分岐方向のためのフェッチプログラムカウンタが含まれ、さらに、
− 前記ウォッチポイント命令タイプ信号に基づいて別々のアドレス可能な記憶場所の中に前記ジャンプ&リンク命令又は前記分岐命令の各々のための前記代替次プログラムカウンタを記憶する段階、
を含んで成る方法。 - 前記制御転送命令が、分岐命令、ジャンプ&リンク命令及びそれらの組合せから成るグループの中から選択され、
− 前記制御転送命令発行済み信号には、ジャンプ&リンク信号成分WP JMPL を含むDO WTCHPNT信号が含まれており;
− 前記代替次プログラムカウンタがWP ANPC 信号を含み;
− 前記チェックポイント書込み有効化信号がMAKE CHKPNT 信号を含み;
− 前記チェックポイント書込みアドレス信号がNEXT CHKPNT 信号を含み;
− 前記データ構造中の前記記憶場所がTARGET RAM内に位置づけられ
− 前記分岐命令のための情報項目にはさらに、XCC により左右される分岐、ICC により左右される分岐、FCC により左右される分岐又はジャンプリンク命令として命令を指定する分岐タイプフィールド;CONDフィールド;及び条件コードタグフィールドが含まれている、
請求項48に記載の方法。 - − 各々の実行結果ソースユニットから有効化制御信号を受理する段階;
− 各々の実行結果ソースユニットから結果データタイプ信号を受理する段階;
− 前記実行結果ソースユニットのいずれから前記結果データが受理されることになるかを表示するセレクトソース信号及び前記結果データが予想される現行クロックサイクルとの関係における時刻の表示を受理する段階;
− 予め定められた規則に従って前記有効化制御信号、前記結果データタイプ信号及び前記セレクトソース信号の受理に応答してソース選択信号を生成する段階;
− 前記実行結果ソースユニットから実行結果データ信号を監視する段階;
− 前記到着する実行結果データ及び前記ソース選択信号に応えて前選択されたソースから実行結果データを捕捉する段階;及び
− 前記プロセッサ内のデータ記憶装置内に評価のため前記捕捉された実行結果データを記憶する段階;
をさらに含んで成り
かくして予め定められた命令が待っている結果データは、複数の実行結果ソースユニットから同時に捕捉される請求項48に記載の方法。 - 投機的に発行された命令の誤予測が発生した後、命令再フェッチのための適正な再フェッチ命令アドレスを送る段階をさらに含んで成り、この送信段階には、
− 前記命令の実行に先立ち各々の投機的に発行された予測された命令について、この予測された命令のための代替的実行経路を指定する代替的経路プログラム命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、同時に記憶する段階;
− 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路及び予測情報が記憶されている前記命令に対応するウォッチポイント要素番号及び前記記憶された条件値及び代替的プログラム命令アドレスとの比較のための計算上の適正な条件値を識別する、命令実行完了状況を表示する信号を同時に生成する段階;
− 前記記憶された実行前代替経路及び予測情報と各単一命令のための前記生成された計算上の条件データ値とを比較し、予測上の条件データがこれらの命令のいずれかについての前記計算上の適正な条件データ値と一致する場合には一致信号を生成すること及び、分岐命令又はジャンプ&リンク命令が正しく予測されたか又は予測が正しくないかを評価し各々の誤予測命令について誤予測信号を生成することを含めて、各単一命令についての予測を同時に評価する段階;
− 前記誤予測からの前記CPU の回復を優先順位づけし、予め定められた優先順位規則に基づいて特定の高優先順の誤予測を選択する段階;
− 前記特定の高優先順誤予測命令に付随するチェックポイントを識別し、前記特定の誤予測命令から前記プロセッサを回復するためのCPU バックアップ信号を生成する段階;
− 前記標的アドレスデータ構造から前記特定の誤予測命令のための代替次プログラムカウンタを読取る段階;及び
− 前記再フェッチされた命令に基づき前記CPU の実行を再開させるため発行ユニットに対して前記読取り代替次プログラムアドレスを送る段階、
が含まれている請求項48に記載の方法。 - 命令フェッチコンポーネントを含む命令発行ユニット、命令実行ユニット、データ記憶ユニットをもつ中央処理ユニットの中で、投機的に発行された命令の誤予測が発生した後命令フェッチのために適正なフェッチアドレスを送るための方法において
− 前記命令の実行に先立ち各々の投機的に発行された予測された命令について、この予測された命令のための代替的実行経路を指定する代替的経路プログラム命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、同時に記憶する段階;
− 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路情報及び予測情報が記憶されている前記命令に対応するウォッチポイント要素番号及び前記記憶された条件値及び代替的プログラム命令アドレスとの比較のための計算上の適正な条件値を識別する、命令実行完了状況を表示する信号を同時に生成する段階;
− 前記記憶された実行前代替経路及び予測情報と前記投機的発行済み命令のための前記生成された計算上の条件データ値とを比較し、予測上の条件データがこれらの命令のいずれかについての前記計算上の適正な条件データ値と一致する場合には一致信号を生成すること及び、分岐命令又はジャンプ&リンク命令が正しく予測されたか又は予測が正しくないかを評価し各々の誤予測命令について誤予測信号を生成することを含めて、前記投機的発行済み命令についての前記記憶された予測情報を同時に評価する段階;
− 全ての誤予測された命令の中から1つの誤予測された命令を選択する段階;
− 前記選択された誤予測命令に付随するウォッチポイントを識別する段階;
− 前記データ構造内に前記選択されたウォッチポイント番号を指標づけすることによって前記標的アドレスデータ構造から前記選択された誤予測命令のための代替的プログラムカウンタアドレスを読取る段階;及び
− 望ましい命令シーケンス経路に沿ってCPU 命令を開始するべく命令再フェッチのために前記命令発行ユニットに対し前記読取られた代替次プログラムカウンタアドレスを送る段階、
を含んで成る方法。 - 前記1つの誤予測された命令を選択する段階には、前記CPU 内で発生する誤予測を優先順位づけし予め定められた優先順位規則に基づいて高優先順位の誤予測を選択する段階が含まれている請求項52に記載の方法。
- 前記投機的に発行された命令は、予測された制御転送命令、予測された分岐命令、ジャンプ&リンク命令及びそれらの組合せから成るグループの中から選択される、請求項52に記載の方法。
- 前記同時記憶、同時生成及び同時評価の段階には、それぞれ、同じCPU クロックサイクル内での記憶、生成及び評価段階が含まれている、請求項52に記載の方法。
- 命令フェッチコンポーネントを含む命令発行ユニット、命令実行ユニット、データ記憶ユニットをもつ中央処理ユニットの中で、投機的に発行された命令の誤予測が発生した後命令フェッチのために適正なフェッチアドレスを送るための方法において
− 予測された分岐命令の発行に応えて、前記CPU 内のメモリユニットのデータ構造内に前記分岐命令に付随するウォッチポイント要素内のウォッチポイント代替プログラムカウンタデータを記憶する段階であって、ここで前記ウォッチポイント代替プログラムカウンタデータは、予測がとられた場合には分岐の次のアドレスであり、予測がとられない場合には分岐−標的アドレスであるような段階;
− 予測されたジャンプ&リンク命令の発行に応えて、前記CPU 内のメモリユニットのデータ構造内に前記ジャンプ&リンク命令に付随するウォッチポイント要素の中の予測されたジャンプ&リンク標的アドレスを記憶する段階;
− 前記発行された命令にウォッチポイント要素を割振るべく各々の分岐及びジャンプ&リンク命令のためのウォッチポイント有効信号が発行されることを表明する段階;
− 前記ウォッチポイント有効信号の表明に応えて、そのウォッチポイント活動中ベクトル信号内で識別されたチェックポイント番号を使用する予測された命令が発行されまだ解決されていないことを表示するべくこのウォッチポイント活動中ベクトル信号を表明する段階;
− 各々のジャンプ&リンク命令について、適正なジャンプ&リンク標的アドレスを計算すること、アドレス生成ユニットがジャンプ&リンク命令の実行を終えた時点でアドレス生成ユニットジャンプ&リンク命令完了信号を表明すること、ジャンプ&リンク命令のチェックポイント番号を指定するアドレス生成ユニットジャンプ&リンクチェックポイント識別信号を生成すること、及び計算された適正なジャンプ&リンク命令標的アドレスを指定するアドレス生成ユニットジャンプ&リンクデータ信号を生成することを含めた、前記ジャンプ&リンクの実行を完了する段階;
− 各々の予測された分岐命令について、分岐方向を左右する条件コード値を計算すること及び前記評価準備完了信号の受信に応答して、ウォッチポイント番号に対応する評価条件コード信号が利用可能になった時点でこの評価条件コード信号を捕捉することを含む、前記分岐命令の実行を完了する段階;
− ・*前記アドレス生成ユニットジャンプ&リンクチェックポイント識別信号によって標識づけされた前記標的アドレスメモリユニット内の記憶場所の中の予測されたジャンプ&リンクアドレスを読取ること;
*前記予測されたジャンプ&リンクアドレスを前記計算されたジャンプ&リンクアドレスと比較して比較結果を生成すること;
*予測されたアドレス及び計算された適正なアドレスが同じである場合にジャンプ&リンク一致信号を生成すること;
*前記ウォッチポイント要素内に記憶された前記ウォッチポイントジャンプ&リンク有効化信号と前記ジャンプ&リンク一致信号を比較すること;及び
*前記信号が一致し、前記ウォッチポイントがジャンプ&リンク命令について形成されジャンプ&リンク命令が適正に予測されたことを表わしている場合、ジャンプ&リンク真出力信号を生成することによって、ジャンプ&リンク命令が適切に予測されたか否かを決定する段階;
・*条件コードセレクト論理ユニットからの条件コード評価信号を受理すること;
*命令に付随するウォッチポイント記憶要素内に記憶されたウォッチポイント条件信号を含むウォッチポイントレジスタ内に記憶されたウォッチポイントを読取ること;
*分岐を発行するときに作成された予測が適正であるか否かを評価するべく予め定められた規則に基づき前記分岐命令に対応するウォッチポイント要素内に記憶された前記ウォッチポイント条件データと前記評価条件コード信号を比較すること;及び
*前記条件コード評価信号及び前記ウォッチ条件信号である場合、前記特定のウォッチポイントのための分岐真信号を生成することにより、分岐命令が適正に予測されたか否かを決定する段階、及び
・前記分岐真信号とジャンプ&リンク真信号の論理和をとり、前記分岐真又はジャンプ&リンク信号が真として表明された場合に評価真信号を生成する段階;
を含み、分岐命令又はジャンプ&リンク命令のいずれか(ただしその両方ではない)に対する前記ウォッチポイント割振りが、同じウォッチポイント要素のための前記分岐真信号及び前記ジャンプ&リンク信号の並行表明を制限している、評価論理ユニット内の各々の単一命令のための予測を評価する段階;
− 前記ジャンプ&リンク命令完了信号がCPU サイクル中に各命令について表明された後評価準備完了信号を生成する段階;
− 前記評価真信号のいずれかが表明されて、誤信号が検出されたことを表わした場合、複数の評価真論理ユニットの各々から生成された前記評価真信号からの誤予測を検出する命令ウォッチポイント誤予測信号を生成し、前記CPU 内の精確な状態を維持するために前記誤予測信号を精確な状態のユニットに伝達する段階;
− 生成された全てのウォッチポイント誤予測済み信号を優先順位づけし、予め定められた優先順位づけ規則に従ってCPU 回復のための前記誤予測の1つを識別する段階;
− 精確な状態のユニットの中で、誤予測された分岐命令又は誤予測されたジャンプ&リンク命令のいずれかによる誤予測から回復する目的でCPU がバックアップされることになるチェックポイント実行済み命令を識別するバックアップチェックポイント信号を生成する段階;
− 精確な状態のユニットの中で、バックアップが誤予測されたジャンプ&リンク命令のせいである場合にのみジャンプ&リンク誤予測信号を生成する段階;
− 前記識別された予測、誤予測のタイプ及びウォッチポイント/チェックポイント番号を含む因子に基づいて前記メモリ記憶装置内の1つの場所を選定する段階であって;
・ウォッチポイント誤予測信号の受理に応えて前記精確な状態のユニット内でプロセッサバックアップ開始信号を生成する段階;
・誤予測がCPU 内で発生したこと及びCPU が、1つの代替プログラムカウンタ値へとプログラムカウンタをリセットすることを含むより早期の状態までバックアップされるべきであることを表わすプロセッサバックアップ開始信号を受理する段階;
・前記メモリ記憶領域内へチェックポイント/ウォッチポイント番号を識別する指標を提供するバックアップチェックポイント信号を受理し、前記指標を用いて命令フェッチのための適正な分岐アドレス又は適正なジャンプ&リンクアドレスを記憶する場所の内容を読取る段階;
・前記メモリ記憶領域内へウォッチポイント及びチェックポイント番号の形で指標を提供するアドレス生成ユニットチェックポイント信号を受理し、この指標を用いて代替次プログラムカウンタを記憶する場所の内容を読取る段階;
・誤予測の検出に応えてCPU バックアップが要求された時点で、前記精確な状態のユニットからバックアップ作成制御信号を受理する段階;
・アドレス生成ユニットがジャンプ&リンク命令の実行を終えた時点でアドレス生成ユニットジャンプ&リンク命令完了信号を受理する段階;
・前記メモリ記憶領域内の特定のウォッチポイント要素を特定するアドレス読取り指標として前記精確な状態ユニット又は前記アドレス生成ユニットチェックポイント入力信号から前記バックアップチェックポイントの1つを選択するべくマルチプレクサに対して制御セレクタ入力信号として前記ジャンプ&リンク完了信号及びバックアップ作成信号を印加する段階;
・誤予測された命令が、バックアップ作成及びジャンプ&リンク制御信号によって表示される通りにジャンプ&リンク命令の分岐命令であるか否かに基づいて、読取るべきメモリ記憶場所アドレスを選択する段階;を含む段階;及び
− 前記誤予測から回復するべく新しい命令をフェッチするため代替次プログラムカウンタを選択する段階であって、
・前記誤予測がジャンプ&リンク命令誤予測である場合にジャンプ&リンク誤予測信号を生成する段階;
・マルチプレクサ選択制御信号、複数のマルチプレクサ入力信号及び前記制御信号によって選択された入力信号のための1つのマルチプレクサ出力をもつマルチプレクサに対して前記誤予測信号を印加する段階;
・前記マルチプレクサ選択制御信号が、誤予測が誤予測された分岐命令であることを表わす第1の状態を有する場合に、マルチプレクサ出力信号として前記データ記憶装置内の前記データ構造内の前記記憶場所の中に記憶された代替次プログラムカウンタを含む第1のマルチプレクサ入力信号を選択する段階;
・前記マルチプレクサ信号が、誤予測が発生したこと及び誤予測が誤予測されたジャンプ&リンク命令であることを表わす第2の状態を有する場合に、マルチプレクサ出力信号として計算上のジャンプ&リンクアドレスを含む第2マルチプレクサ入力信号を選択する段階;を含む段階;
− ・ジャンプ&リンク命令のための予測された標的フェッチプログラムカウンタ又は予測された分岐命令のための代替分岐方向についてのフェッチプログラムカウンタを含む読取り代替プログラムカウンタアドレス信号を生成する段階;及び
・フェッチユニットが適正なアドレスから命令を再フェッチすることができるように命令フェッチユニットに対して前記選択されたマルチプレクサ出力の中の前記読取られた代替プログラムアドレス信号を送る段階;
を含む、前記CPU の実行を再開する段階;
を含んで成る方法。 - − 前記再フェッチアドレスが、分岐命令アドレス及びジャンプ&リンク命令アドレスから成るグループの中から選択され;
− 前記ジャンプ&リンク命令完了信号がFXAGU JMPL信号を含み;
− 前記チェックポイント識別信号がFXAGU CHKPNT信号を含み;
− 前記アドレス生成ユニットデータ信号がFXAGU DATA信号を含み;
− 前記ジャンプ&リンク一致信号がJMPL MATCH信号を含み;
− 前記ウォッチポイントジャンプ&リンク有効化信号がWP JMPL信号を含み;
− 前記ジャンプ&リンク真(信号)がJMPL TRUE 信号を含み;
− 前記条件コード評価信号がEVAL CC 信号を含み;
− 前記ウォッチポイントデータが、WP COND, WP XCC, WP ICC 、及びWP FCCデータ信号を含み;
− 前記ウォッチポイント条件信号がWP COND 信号を含み;
− 前記分岐真信号がBR TRUE 信号を含み;
− 前記評価真信号がEVAL TRUE 信号を含み;
− 前記評価準備完了信号がEVAL READY信号を含み;
− 前記ウォッチポイント活動中信号がWP ACTIVE VEC 信号を含み;
− 前記ウォッチポイント誤予測信号がWP MISPRED VEC信号を含み;
− 前記バックアップチェックポイント信号がBACKUP CHKPNT 信号を含み;
− 前記ジャンプ&リンク誤予測信号がMIS PRED信号を含み;
− 前記プロセッサバックアップ開始信号がDO BACKUP 信号を含み;
− 前記バックアップチェックポイントがBACKUP CHKPNT 信号を含み;
− 前記バックアップ実施制御信号がMAKE BACKUP 信号を含み;
− 前記生成ユニットジャンプ&リンク命令完了信号がFXAGU JMPL信号を含み;
− 前記選択されたバックアップチェックポイント信号がBACKUP CHKPNT 信号を含み;
− 前記アドレス生成(前記)ユニットチェックポイントがFXAGU CHKPNT信号を含み;
− 前記ジャンプ&リンク誤予測信号がMISPRED 信号を含み;
− 前記代替次プログラムカウンタがWR ANPC 信号を含み;
− 前記計算上のジャンプ&リンクアドレスがFXAGU DATA信号を含み;
− 前記代替プログラムカウンタアドレスがRD ANPC 信号を含み;
− 前記ジャンプ&リンク一致信号を前記ウォッチポイントジャンプ&リンク有効化信号が、前記信号のブール論理積をとる段階を含んでいる、
請求項56に記載の方法。 - バックアップポイントでの命令の後に逐次的に発生する命令のためのチェックポイントをキルするべく前記誤予測からの回復中に誤予測の識別に応えて命令キル信号を表明する段階;
− 前記キル信号の表明に応えて、ウォッチポイント活動中信号及びウォッチポイント誤予測信号の生成を抑制することにより各々のキルされた命令に対応するウォッチポイント要素を非活動化する段階
をさらに含んで成る請求項56に記載の方法。 - 前記ウォッチポイント活動中ベクトル信号及びウォッチポイント誤予測信号は、各ウォッチポイントについてのウォッチポイント活動中情報を同時に記憶し同じ信号内で伝送できるように前記CPU 内の割振り可能なチェックポイントの数に対応するベクトルビット位置の数を各々有するマルチホットベクトルとして各々別々にコード化されている請求項56に記載の方法。
- 比較時間を短縮するようにデータ順方向送りバスタグと条件コードデータを比較するための方法において、
− ・現行の発行ウインドウ信号内の現行のリネーム済み条件コードを各々のデータ順方向送りバスタグに比較し;
・先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比較すること、
によって、先行するサイクル内の条件コードタグと現行の発行ウインドウサイクル内の現在リネームされている条件コードタグの間でデータ順方向送りタグの比較を分離する段階を含み、
− 先行するサイクル中の前記条件コードタグ及び現行の発行ウインドウ内の現在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記比較は、単一の非分割作業で行なわれた場合に比べさらに迅速に行なわれるような方法。 - 現在リネームされている条件コードの前記比較を行なう前にラッチ回路内で現行の発行ウインドウ信号中の現在リネームされている条件コードタグをラッチングする段階をさらに含んで成り、
各々のデータ順方向送りバスタグに対し現行送信ウインドウサイクル内の現在リネームされている条件コードタグを比較する前記段階には、各々のデータ順方向送りバスタグに対する前記ラッチされた信号の比較が含まれ、かくしてタイミングクリティカリティが削除される請求項60に記載の方法。 - 命令発行ユニット、条件コードレジスタリネームユニットを含む論理及び物理レジスタをリネームするためのレジスタリネームユニット、複数の実行ユニット及び、前記実行ユニットの各々が中央処理ユニットのその他のコンポーネントまで実行結果データを伝達するためのデータ順方向送りバスを有する中央処理ユニットにおいて、前記複数の実行ユニットの各々からの実行結果データを同時に捕捉するための方法において、
− 各々の前記実行ユニットについて、先行するCPU クロックサイクル内でリネームされた条件コードレジスタを識別するものの現行サイクルでリネームされた条件コードレジスタを識別しない前記条件コードレジスタリネームユニットから受理した早期条件コードレジスタタグ信号を、現行のCPU クロックサイクル内で前記実行ユニットから到着した条件コードレジスタタグ信号成分を含む有効な実行結果データ信号と比較し、前記比較動作が、前記条件コードレジスタタグ信号と前記条件コードレジスタタグ信号成分を含む前記有効な実行結果データ信号の間での一致を識別した場合に、各々の前記実行ユニットについての条件コードタグ現行一致信号を生成する段階;及び
− 各々の前記実行ユニットについて、現行サイクル内でリネームされた条件コードレジスタを識別することを含め先行するCPU クロックサイクル内でリネームされた条件コードレジスタを各々識別する先行サイクル中に前記条件コードレジスタリネームユニットから受理した複数の晩期条件コードレジスタタグ信号を、現行のCPU クロックサイクル内で前記実行ユニットから到着した条件コードレジスタタグ信号成分を含む有効な実行結果データ信号と比較し、前記比較動作が、前記条件コードレジスタタグ信号の1つと前記複数の条件コードレジスタタグ信号成分の1つの間での一致を識別した場合に、前記複数の条件コードレジスタタグ信号のうちのいずれが一致したかを識別する各々の前記実行ユニットについての現行条件コードタグのアレイ−晩期−一致信号を生成する段階、
を含んで成る方法。 - − 前記早期条件コードレジスタタグ信号がCC TAG C信号を含み;
− 前記条件コードレジスタリネームユニットが FSR/CCRFRNユニットを含み;
− 前記有効な実行結果データ信号は、FXU XICC TAG F信号、FXAGU XICC TAG F信号及びFPU FCC TAG F 信号から成るグループの中から選択されており;
− 前記実行ユニットは、固定小数点実行ユニット、固定小数点/アドレス生成ユニット及び浮動小数点ユニットから成るグループの中から選択され
− 前記条件コードタグ現行一致信号は、FXU CURR MATCH信号、FXAGU CURR MATCH信号及びFPU CURR MATCH信号から成るグループの中から選択され;
− 前記複数の晩期条件コードレジスタタグ信号が、複数のCC TAG RENAMED信号を含んでおり;
− 前記条件コードレジスタリネームユニットが FSR/CCRFRNユニットを含み;
− 前記現行の条件コードタグアレイ晩期一致信号が、各々の前記実行ユニットについて、FXU ARRAY LATE MATCH信号、FXAGU ARRAY LATE MATCH信号及びFPU ARRAY LATE MATCH信号から成るグループの中から選択される請求項62に記載の方法。 - − 前記晩期条件コードレジスタタグを記憶するため前記CPU の中で複数のアドレス可能なタグ記憶要素を含む晩期条件コードタグアレイデータ記憶装置を提供する段階;
− 前記条件コードレジスタリネームユニットから前記晩期条件コードレジスタタグ信号成分を受理する段階;
− 前記条件コードレジスタリネームユニットから条件コードリネーム済み信号を受理する段階;
− 前記命令発行ユニットからのウォッチポイント実施信号から誘導されたウォッチポイント番号識別成分信号を含む予測実施信号を受理する段階;
− 前記条件コードリネーム済み信号及び前記予測実施信号が両方共表明された場合に、前記タグアレイデータ記憶装置内への前記条件コードレジスタタグ信号の各々の書込みのアドレスを制御するためのタグアレイ書込み有効化信号を生成する段階;
− 前記タグアレイ書込み有効化信号が表明された場合に前記ウォッチポイント識別番号により識別された前記アドレス可能なタグ記憶要素のうちの1つの中に前記受理した晩期条件コードレジスタタグ信号成分を記憶する段階;及び
− 前記比較動作において使用するため各々の前記実行ユニットについて各々の前記タグ記憶要素から各々の前記記憶された条件コードレジスタタグを読取る段階、
を含んで成る請求項62に記載の方法。 - 前記条件コードリネーム済み信号が、CC RENAMED信号を含み;
− 前記予測実施信号がDO PREDICT VEC信号を含み、ウォッチポイント実施信号がDO WTCHPT 信号を含み;
− 前記タグアレイ書込み有効化信号がARRAY WRITE VEC 信号を含んでいる、
請求項64に記載の方法。 - 中央処理ユニット内で複数の命令の実行結果を同時に監視するための装置において、
− 命令を発行するための発行ユニット;
− 命令を実行するための実行ユニット;
− 前記中央処理ユニット内で前記実行ユニットからその他のユニットまで実行結果を伝達するデータ順方向分配バス;
− プロセッサ内で前記データ順方向分配の上で前記実行ユニットからの実行結果信号を受理するべく結合されたウォッチポイントデータを記憶するため複数のウォッチポイントレジスタを有するウォッチポイントユニット;
− 前記命令が発行された時点で各々の投機的発行済みの予測された命令についてウォッチポイントデータを記憶するためのウォッチポイントレジスタを割振るための手段;
− 前記ウォッチポイントユニット内で前記データ順方向送りバス上で伝達された実行結果信号を監視するための手段;
− 前記実行結果信号及び予め定められた規則に基づいて予め定められた事象の発生を検出するための手段;
− 予測された投機的発行済み命令について予め定められた事象が検出された時点で、その他のCPU ユニットにそれを知らせるための手段;
− 特定の命令について前記ウォッチポイントレジスタ内に記憶された前記ウォッチポイントデータとこの特定の命令に関する前記データ順方向送りバスの上で到着した前記結果信号と比較して、この特定の命令が投機的に発行された条件が正しく予測されたか否かを評価するための手段;
− 前記予測が適正でなかったことを前記評価が表示した場合に、前記ウォッチポイント要素を割振り解除し実行を続行するための割振り解除手段;
− 前記予測が誤っていたということを前記評価が表示した場合に誤予測を補正するべく既知の条件に対応する命令を再フェッチ発行できるように、前記発行ユニットに対し新しいアドレスを供給するための手段;
− 前記誤予測を取消すことができるように、前記中央処理ユニットをより早期の状態までバックアップするための手段;
− 前記再フェッチされた命令に基づいて適正な命令ストリーム内の命令について実行を開始するための手段;及び
− 前記実行が完了した時点で前記ウォッチポイント要素を割振り解除するための手段
を含んで成る装置。 - 中央処理ユニット(CPU) 内で複数の実行結果生成ユニットから予め定められた命令が待っている結果データを同時に捕捉するための装置において、
− 各々の結果データソースから有効化制御信号を受理するための手段;
− 各々の結果データソースから結果データタイプ信号を受理するための手段;
− 前記実行結果生成ユニットのうちのいずれから前記結果データが受理されることになるかを表示するセレクトソース信号及び前記結果データが予想されている現行クロックサイクルとの関係における時刻の表示を受理するための手段;
− 予め定められた規則に従って前記有効化制御信号、前記結果データタイプ信号及び前記セレクトソース信号に応えてソース選択信号を生成するための手段;
− 前記実行結果生成ユニットから実行結果データ信号を監視するための手段;
− 前記到着した実行結果データ及び前記ソース選択信号に応えて前記選択されたソースから実行結果データを捕捉するための手段;及び
− 前記プロセッサ内のデータ記憶装置内での評価のため前記捕捉された実行結果データを記憶するための手段、
を含んで成る装置。 - 前記捕捉用手段には、
− 各々有効化制御信号入力ポート、結果データタイプ信号入力ポート、及びセレクトソース信号入力ポートを内含する第1の複数の論理AND ゲート;
− 同じ結果データタイプ依存性をもつ前記複数のAND ゲートからの選択された出力と組合せるため、前記第1の複数の論理AND ゲートのうちの選択されたものに結合された第2の複数の論理ORゲート;
− 前記第1の複数の論理AND ゲート及び前記論理ORゲートのうちの選択されたゲートに結合された結果データソース入力ポートとセレクト条件コードタイプ入力ポートを各々有する第3の複数の論理AND ゲート;
− 各々前記第3の複数の論理ORゲートの出力を受理するための複数の入力ポートを有する多入力論理ORゲート;
− 条件コードデータを含む捕捉された実行結果データを含む前記多入力ORゲートの出力信号をラッチングするためのラッチ回路、
が含まれている請求項67に記載の装置。 - 中央処理ユニットの中で分岐命令及びジャンプ&リンク命令を含む予め定められた命令タイプについての複数の誤予測信号を同時に生成するための装置において、
− 分岐命令を監視するためにウォッチポイントが形成されつつあることを表示する第1の状態又はジャンプ&リンク命令のためのウォッチポイントが形成されつつあることを表示する第2の状態を有するウォッチポイントジャンプ&リンク有効化信号を受理するための手段;
− ・条件コードセレクト論理回路からの評価条件コード信号を受理するための手段;
・ウォッチポイント記憶要素からのウォッチポイント条件信号を受理するための手段;
・ウォッチポイント記憶要素からの条件コードタイプ制御信号を受理するための手段;
・各々の実行結果生成ユニットからの有効化信号を受理するための手段;
・分岐のための条件が正しく予測されたか否かを評価するため各々の前記実行結果生成ユニットについて前記有効化制御信号の表明された状態を含む予め定められた条件コード評価規則に従って前記ウォッチポイント条件信号と前記評価条件コード信号を比較するための手段;
・前記分岐が正しく予測されていた場合分岐真信号を生成するための手段;
を含む、複数の発行済み分岐命令について誤予測信号を同時に生成するための手段;及び
− ・プログラムカウンタデータを記憶するための複数の記憶場所を有する標的データ構造を規定するための手段;
・ジャンプ&リンク命令が発行された時点で前記記憶場所のうちの1つに代替次プログラムカウンタを書込み、前記記憶された代替次プログラムカウンタを前記命令と結びつけるための手段;
・実行結果生成ユニット内で計算上の次プログラムカウンタ値を計算するための手段;
・前記実行結果生成ユニットから前記計算上の次プログラムカウンタを受理するための手段;
・前記記憶場所からの前記命令に付随する前記記憶された代替次プログラムカウンタを読取るための手段;
・予め定められたプログラムカウンタ比較規則に従って前記計算上の次プログラムカウンタと前記代替次プログラムカウンタを比較するための手段;
・前記比較が真として評価した場合、ジャンプ&リンク一致信号を生成するための手段及び
・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク信号の両方の真の状態に応えて、ジャンプ&リンク真信号を生成するための手段、
を含む、複数の発行済みジャンプ&リンク命令の各々についてジャンプ&リンク誤予測信号を同時に生成するための手段;
− 前記ジャンプ&リンク一致信号が表明されるか又は前記分岐真信号が表明されるかのいずれかに応えて、評価真信号を生成するための手段;
− 少なくとも1つのソース選択信号の受理又は評価有効化信号の受理に応えて評価準備完了信号を生成するための手段であって、この評価有効化信号はウォッチポイント活動中信号、ウォッチポイントジャンプ&リンク有効化信号、ジャンプ&リンク命令実行完了信号及びジャンプ&リンク命令チェックポイント番号信号の表明に応じて生成されるような手段;及び
− 前記評価準備完了信号及び前記評価真信号の受理に応えて命令誤予測信号を生成するための手段
を含んで成る装置。 - 中央処理ユニット内の単一の共用記憶ユニット内の共通のデータ構造の中に代替分岐アドレス及び予測されたジャンプ&リンクアドレスを同時に記憶するための装置において、
− 各々の発行された制御転送命令についてそれが発行された時点で発行ユニットから制御転送命令発行済み信号を生成するための手段;
− 分岐命令又はジャンプ&リンク命令として命令を識別するべく前記制御転送命令発行済み信号内でウォッチポイントジャンプ&リンク信号を提供するための手段;
− プログラム制御論理ユニットにより計算された標的フェッチプログラムカウンタを特定する代替次プログラムカウンタを計算するための手段;
− 前記データ構造内の記憶場所の中に代替分岐アドレスを記憶するためのチェックポイント書込み有効化制御信号及びチェックポイントアドレスを生成するための手段であって、この書込み有効化制御信号がチェックポイントを作成するときに表明されるような手段;
− チェックポイント書込みアドレスにおいて記憶ユニット内にウォッチポイント代替次プログラムカウンタを書込むための手段;
− 予測された分岐及びジャンプ&リンク命令の命令復号の間に代替次プログラムカウンタを決定するための手段であって、ジャンプ&リンク命令のためにウォッチポイントユニットに対して送られた前記ウォッチポイント代替次プログラムカウンタには、予測された標的フェッチプログラムカウンタが含まれ、予測された分岐命令のためにウォッチポイントユニットに対し送られた前記ウォッチポイント代替次プログラムカウンタには、代替分岐方向のためのフェッチプログラムカウンタが含まれているような手段;
− 発行された命令が分岐命令であるかジャンプ&リンク命令であるかを決定することを含め、フィールド選択及び書込み論理ユニット内で前記制御転送命令発行済み信号を復号して前記信号内の選択された情報フィールドの内容を決定するための手段であって、前記JMPLフィールド内の第1の予め定められた状態は、命令がジャンプ−リンク命令であることを表示し、前記JMPLフィールド内の第2の状態は前記命令が分岐命令であることを表示しているような手段;及び
− 前記制御転送命令発行済み信号内に存在する前記徴候に基づき別々のアドレス可能な記憶場所内に各々の分岐命令又はジャンプ&リンク命令について1つの情報項目を記憶するための手段;
を含んで成り、前記命令が分岐命令である場合、前記分岐命令のための前記情報項目が代替次プログラムカウンタを含み、前記命令がジャンプ&リンク命令である場合、ジャンプ&リンク命令のための前記情報項目が予測された標的アドレスを含んでいる、装置。 - 発行された命令の誤予測が発生した後、命令再フェッチのための適正な再フェッチ命令アドレスを送るための方法において
− 前記命令の実行に先立ち各々の投機的に発行された予測された命令について、この予測された命令のための代替的実行経路を指定する代替的経路プログラム命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、同時に記憶するための手段;
− 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路及び予測情報が記憶されている前記命令に対応するウォッチポイント要素番号及び前記記憶された条件値及び代替的プログラム命令アドレスとの比較のための計算上の適正な条件値を識別する、命令実行完了状況を表示する信号を同時に生成するための手段;
− 前記記憶された実行前代替経路及び予測情報と各単一命令のための前記生成された計算上の条件データ値とを比較することを含め各単一命令についての予測を同時に評価し、分岐命令又はジャンプ&リンク命令が正しく予測されたか又は予測が正しくないかを評価し各々の誤予測命令について誤予測信号を生成するための手段;
− 前記誤予測からの前記CPU の回復を優先順位づけし、予め定められた優先順位規則に基づいて特定の高優先順の誤予測を選択するための手段;
− 前記特定の高優先順誤予測命令に付随するチェックポイントを識別し、前記特定の誤予測命令から前記プロセッサを回復するためのCPU バックアップ信号を生成するための手段;
− 前記標的アドレスデータ構造から前記特定の誤予測命令のための代替次プログラムカウンタを読取るための手段;及び
− 前記再フェッチされた命令に基づき前記CPU の実行を再開させるため発行ユニットに対して前記読取り代替次プログラムアドレスを送る手段、
を含んで成る方法。 - − 前記同時に記憶するための手段には、前記ウォッチポイント要素への書込み及びここからの読取りのためのウォッチポイント読取り/書込み制御論理及び複数のウォッチポイント記憶要素が含まれており、これらのウォッチポイント要素は命令発行ユニットに結合され、各々の予測された命令のための命令復号情報を受理し;
− 前記命令実行完了信号を同時に生成するための手段には、データ順方向送りバスからの条件コードデータを含む実行結果データを捕捉するため複数の条件コード捕捉ユニットに結合された少なくとも1つの命令実行ユニットが含まれており;
− 前記同時に評価するための手段には、予測された命令を左右する予測された及び実際の条件データを評価するための複数の評価論理ユニットが含まれており;
− 前記優先順位づけ用手段には、実行状況を含む命令状況をトラッキングし予め定められた規則に基づき多重の誤予測及び実行障害から前記高優先順位の誤予測を選択するための精確な状態のユニットが含まれており;
− 前記識別のための手段には、標的アドレスランダムアクセスメモリユニット、このメモリに付随する周辺制御論理;制御入力信号を有するマルチプレクサ回路及びバックアップチェックポイント入力そして分岐命令に付随するアドレスか又は前記標的アドレスランダムアクセスユニットからのジャンプ&リンク命令に付随するアドレスのいずれかをゲートするためのアドレス生成ユニットチェックポイント信号を含む複数の選択可能な信号入力端が含まれており;
− 前記実行前条件を実際の実行条件結果と比較するためのジャンプ&リンク一致論理が含まれており;
− 前記送信用手段には、標的アドレスランダムアクセスメモリ入力信号及び実行結果データ入力信号を有するマルチプレクサ回路及び複数のプログラムカウンタの中から適切な命令プログラムカウンタアドレスを出力するため前記精確な状態ユニットに結合された制御信号入力端を含む代替プログラムカウンタ出力論理が含まれている;
請求項71に記載の装置。 - 中央処理ユニット内での比較時間を短縮するようにデータ順方向送りバスタグと条件コードデータを比較するための装置において、
− ・現行の発行ウインドウ信号内の現行のリネーム済み条件コードを各々のデータ順方向送りバスタグに比較するための手段;
・先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比較するための手段;
によって、先行するサイクル内の条件コードタグと現行の発行ウインドウサイクル内の現在リネームされている条件コードタグの間でデータ順方向送りタグの比較を分離する手段を含み、
− 先行するサイクル中の前記条件コードタグ及び現行の発行ウインドウ内の現在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記比較は、単一の非分割作業で行なわれた場合に比べさらに迅速に行なわれるような装置。 - 中央処理ユニット内で複数の命令の実行結果を同時に監視するための装置において、
− 命令を発行するための発行ユニット;
− 命令を実行するための実行ユニット;
− 前記中央処理ユニット内で前記実行ユニットからその他のユニットまで実行結果を伝達するデータ順方向分配バス;
− プロセッサ内で前記データ順方向分配の上で前記実行ユニットからの実行結果信号を受理するべく結合されたウォッチポイントデータを記憶するため複数のウォッチポイントレジスタを有するウォッチポイントユニット;
− 前記命令が発行された時点で各々の投機的発行済みの予測された命令についてウォッチポイントデータを記憶するためのウォッチポイントレジスタを割振るための手段;
− 前記ウォッチポイントユニット内で前記データ順方向送りバス上で伝達された実行結果信号を監視するための手段;
− 前記実行結果信号及び予め定められた規則に基づいて予め定められた事象の発生を検出するための手段;
− 予測された投機的発行済み命令について予め定められた事象が検出された時点でその他のCPU ユニットにそれを知らせるための手段;
− 特定の命令について前記ウォッチポイントレジスタ内に記憶された前記ウォッチポイントデータとこの特定の命令に関する前記データ順方向送りバスの上で到着した前記結果信号と比較して、この特定の命令が投機的に発行された条件が正しく予測されたか否かを評価するための手段;
− 前記予測が適正でなかったことを前記評価が表示した場合に、前記ウォッチポイント要素を割振り解除し実行を続行するための割振り解除手段;
− 前記予測が誤っていたということを前記評価が表示した場合に誤予測を補正するべく既知の条件に対応する命令を再フェッチし発行できるように、前記発行ユニットに対し新しいアドレスを供給するための手段;
− 前記誤予測を取消すことができるように、前記中央処理ユニットをより早期の状態までバックアップするための手段;
− 前記再フェッチされた命令に基づいて適正な命令ストリーム内の命令について実行を開始するための手段;及び
− 前記実行が完了した時点で前記ウォッチポイント要素を割振り解除するための手段;
− 各々の結果データソースから有効化制御信号を受理するための手段;
− 各々の結果データソースから結果データタイプ信号を受理するための手段;
− 前記実行結果生成ユニットのうちのいずれから前記結果データが受理されることになるかを表示するセレクトソース信号及び前記結果データが予想されている現行クロックサイクルとの関係における時刻の表示を受理するための手段;
− 予め定められた規則に従って前記有効化制御信号、前記結果データタイプ信号及び前記セレクトソース信号に応えてソース選択信号を生成するための手段;
− 前記実行結果生成ユニットから実行結果データ信号を監視するための手段;
− 前記到着した実行結果データ及び前記ソース選択信号に応えて前記選択されたソースから実行結果データを捕捉するための手段;及び
− 前記プロセッサ内のデータ記憶装置内での評価のため前記捕捉された実行結果データを記憶するための手段、
− 分岐命令を監視するためにウォッチポイントが形成されつつあることを表示する第1の状態又はジャンプ&リンク命令のためのウォッチポイントが形成されつつあることを表示する第2の状態を有するウォッチポイントジャンプ&リンク有効化信号を受理するための手段;
− ・条件コードセレクト論理回路からの評価条件コード信号を受理するための手段;
・ウォッチポイント記憶要素からのウォッチポイント条件信号を受理するための手段;
・ウォッチポイント記憶要素からの条件コードタイプ制御信号を受理するための手段;
・各々の実行結果生成ユニットからの有効化信号を受理するための手段;
・分岐のための条件が正しく予測されたか否かを評価するため各々の前記実行結果生成ユニットについて前記有効化制御信号の表明された状態を含む予め定められた条件コード評価規則に従って前記ウォッチポイント条件信号と前記評価条件コード信号を比較するための手段;
・前記分岐が正しく予測されていた場合、分岐真信号を生成するための手段;
を含む、複数の発行済み分岐命令について誤予測信号を同時に生成するための手段;及び
− ・プログラムカウンタデータを記憶するための複数の記憶場所を有する標的データ構造を規定するための手段;
・ジャンプ&リンク命令が発行された時点で前記記憶場所のうちの1つに代替次プログラムカウンタを書込み、前記記憶された代替次プログラムカウンタを前記命令と結びつけるための手段;
・実行結果生成ユニット内で計算上の次プログラムカウンタ値を計算するための手段;
・前記実行結果生成ユニットから前記計算上の次プログラムカウンタを受理するための手段;
・前記記憶場所からの前記命令に付随する前記記憶された代替次プログラムカウンタを読取るための手段;
・予め定められたプログラムカウンタ比較規則に従って前記計算上の次プログラムカウンタと前記代替次プログラムカウンタを比較するための手段;
・前記比較が真として評価した場合、ジャンプ&リンク一致信号を生成するための手段;及び
・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク信号の両方の真の状態に応えて、ジャンプ&リンク真信号を生成するための手段、
を含む、複数の発行済みジャンプ&リンク命令の各々についてジャンプ&リンク誤予測信号を同時に生成するための手段;
− 前記ジャンプ&リンク一致信号が表明されるか又は前記分岐真信号が表明されるかのいずれかに応えて、評価真信号を生成するための手段;
− 少なくとも1つのソース選択信号の受理又は評価有効化信号の受理に応えて評価準備完了信号を生成するための手段であって、この評価有効化信号はウォッチポイント活動中信号、ウォッチポイントジャンプ&リンク有効化信号、ジャンプ&リンク命令実行完了信号及びジャンプ&リンク命令チェックポイント番号信号の表明に応じて生成されるような手段;及び
− 前記評価準備完了信号及び前記評価真信号の受理に応えて命令誤予測信号を生成するための手段;
− 各々の発行された制御転送命令についてそれが発行された時点で発行ユニットから制御転送命令発行済み信号を生成するための手段;
− 分岐命令又はジャンプ&リンク命令として命令を識別するべく前記制御転送命令発行済み信号内でウォッチポイントジャンプ&リンク信号を提供するための手段;
− プログラム制御論理ユニットにより計算された標的フェッチプログラムカウンタを特定する代替次プログラムカウンタを計算するための手段;
− 前記データ構造内の記憶場所の中に代替分岐アドレスを記憶するためチェックポイント書込み有効化制御信号及びチェックポイントアドレスを生成するための手段であって、この書込み有効化制御信号がチェックポイントを作成するときに表明されるような手段;
− チェックポイント書込みアドレスにおいて記憶ユニット内にウォッチポイント代替次プログラムカウンタを書込むための手段;
− 予測された分岐及びジャンプ&リンク命令の命令復号の間に代替次プログラムカウンタを決定するための手段であって、ジャンプ&リンク命令のためにウォッチポイントユニットに対して送られた前記ウォッチポイント代替次プログラムカウンタには、予測された標的フェッチプログラムカウンタが含まれ、予測された分岐命令のためにウォッチポイントユニットに対し送られた前記ウォッチポイント代替次プログラムカウンタには、代替分岐方向のためのフェッチプログラムカウンタが含まれているような手段;
− 発行された命令が分岐命令であるかジャンプ&リンク命令であるかを決定することを含め、フィールド選択及び書込み論理ユニット内で前記制御転送命令発行済み信号を復号して前記信号内の選択された情報フィールドの内容を決定するための手段であって、前記JMPLフィールド内の第1の予め定められた状態は、命令がジャンプ−リンク命令であることを表示し、前記JMPLフィールド内の第2の状態は前記命令が分岐命令であることを表示しているような手段;及び
− 前記制御転送命令発行済み信号内に存在する前記徴候に基づき別々のアドレス可能な記憶場所内に各々の分岐命令又はジャンプ&リンク命令について1つの情報項目を記憶するための手段であって、前記命令が分岐命令である場合、前記分岐命令のための前記情報項目が代替次プログラムカウンタを含み、前記命令がジャンプ&リンク命令である場合、ジャンプ&リンク命令のための前記情報項目が予測された標的アドレスを含んでいるような手段;
− 前記命令の実行に先立ち各々の投機的に発行された予測された命令について、この予測された命令のための代替的実行経路を指定する代替的経路プログラム命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、同時に記憶するための手段;
− 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路及び予測情報が記憶されている前記命令に対応するウォッチポイント要素番号及び前記記憶された条件値及び代替的プログラム命令アドレスとの比較のための計算上の適正な条件値を識別する、命令実行完了状況を表示する信号を同時に生成するための手段;
− 各々の前記命令についての前記生成された計算上の条件データ値と前記記憶された実行前代替経路及び予測情報を比較し、予測された条件データが前記命令のいずれかについて前記計算上の正しい条件データ値と一致する場合に一致信号を生成するための手段;
− 分岐命令又はジャンプ&リンク命令が正しく予測されたか又は予測が正しくないかを評価し各々の誤予測命令について誤予測信号を生成することを含め、各々の単一命令についての予測を同時に評価するための手段;
− 前記誤予測からの前記CPU の回復を優先順序づけし、予め定められた優先順位規則に基づいて特定の高優先順の誤予測を選択するための手段;
− 前記特定の高優先順誤予測命令に付随するチェックポイントを識別し、前記特定の誤予測命令から前記プロセッサを回復するためのCPU バックアップ信号を生成するための手段;
− 前記標的アドレスデータ構造から前記特定の誤予測命令のための代替次プログラムカウンタを読取るための手段;及び
− 前記再フェッチされた命令に基づき前記CPU の実行を再開させるため発行ユニットに対して前記読取り代替次プログラムアドレスを送る段階、
− ・現行の発行ウインドウ信号内の現行の再命令済み条件コードを各々のデータ順方向送りバスタグに比較するための手段;
・先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比較するための手段;
によって、先行するサイクル内の条件コードタグと現行の発行ウインドウサイクル内の現在リネームされている条件コードタグの間でデータ順方向送りタグの比較を分離する手段であって先行するサイクル中の前記条件コードタグ及び現行の発行ウインドウ内の現在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記比較は、単一の非分割作業で行なわれた場合に比べさらに迅速に行なわれるような手段;
を含んで成る装置。 - プログラム制御順out-of-order実行データプロセッサにおいて、
− 実行のためプログラム制御順で命令を発行するための発行ユニットであって、発行される命令には、浮動小数点及び非浮動小数点命令が含まれている、ユニット;
− 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でout-of-order実行され得る、発行済み命令を実行するための実行手段;
− ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶要素を含むデータ記憶構造;
・各々の発行済み命令について対応する発行済み命令が浮動小数点命令であるか否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデータを書込むための第1の論理;
・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点実行例外をひきおこす各々の発行された浮動小数点命令について、結果としてもたらされることになる浮動小数点実行トラップの予め定められたタイプのうちの1つを識別する対応する記憶要素の浮動小数点トラップタイプフィールド内へのデータを書込むための第2の論理
を含む浮動小数点例外ユニット;
− 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての発行済み命令が退去されてしまっている各々の発行済み命令を退去させるための精確状態手段;
を含み、
予め定められた実行例外のうちの第1のものが発行済み命令によってひき起こされた時点で、実行手段は発行済み命令の実行を続行し、精確状態手段は、退去され得ない発行済み命令に遭遇するまで発行済み命令を退去させ続けることにより実行トラップ順序付けに着手し、退去され得ない発行済み命令は、(a)第1の実行例外をひき起こした発行済み命令、及び(b)第1の実行例外をひき起こした発行済み命令よりも早期に発行されたものの第1の実行例外よりも晩期に発生する第2の実行例外をひき起こした発行済み命令のうちの1つであり、さらに
− 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レジスタ;及び
− 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデータが、この退去され得ない命令が浮動小数点命令であることを表示した時点で、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書込むための書込み手段;
を含んで成るプロセッサ。 - − データ記憶構造の各々の記憶要素が、現行の浮動小数点実行例外フィールドも有しており;
− 浮動小数点例外ユニットにはさらに、浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプを結果としてもたらすことになる複数の特定の浮動小数点実行例外のうちの単数又は複数の例外を実行中にひき起こす各々の発行済み浮動小数点命令について、ひき起こされた特定の浮動小数点実行例外のうちの単数又は複数のものを識別する対応する記憶要素の現行の浮動小数点実行例外フィールドに対するデータを書込むための第3の論理がさらに含まれ;
− 浮動小数点状況レジスタが同様に、現行の浮動小数点実行例外フィールドも有しており、さらに
− 書込み手段は同様に、(a)退去され得ない発行済み命令に対応する記憶要素の浮動小数点命令識別フィールド内のデータが、退去され得ない発行済み命令が浮動小数点命令であることを表示した時点、及び(b)退去され得ない発行済み命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータが、予め定められた浮動小数点実行トラップタイプのうちの特定の1つを識別した時点で、退去され得ない発行済み命令に対応する記憶要素の現行の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外のうちの単数又は複数のものを識別する浮動小数点状況レジスタの現行の浮動点実行例外フィールドに対するデータを書込む、
請求項75に記載のプログラム制御順out-of-order実行データプロセッサ。 - − 第4の論理は同様に、実行中に特定の浮動小数点実行例外のいずれもひき起こさない各々の発行済み浮動小数点命令について、特定の浮動小数点実行例外のいずれもひき起こされていないことを表示する対応する記憶要素の現行の浮動小数点実行例外フィールドに対するデータを書込み;
− 浮動小数点状況レジスタには、蓄積した例外フィールド及びトラップ有効化マスクフィールドが含まれ、トラップ有効化マスクフィールドが特定の浮動小数点実行例外のあらゆる組合せの選択的マスキングを提供し;
− 精確状態ユニットは同様に、実行中単数又は複数のマスキングされた特定の浮動小数点実行例外をひき起こすもののその他の浮動小数点実行例外を全くひき起こさず、かつプログラム制御順でそれに先行する全ての発行済み命令が退去させられてしまっている各々の発行済み浮動小数点命令も退去させ;
− 命令が退去させられる各々の現行のマシンサイクルの間、書込み手段は、(a)対応する記憶要素の浮動小数点命令識別フィールド内のデータが浮動小数点命令でありかつ現行のマシンサイクル内で退去されつつある発行済み命令に対応する記憶要素の現行の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外、及び(b)浮動小数点状況レジスタの蓄積した浮動小数点実行例外フィールド内の現行データによって識別された特定の浮動小数点実行例外の蓄積を表わす浮動小数点状況レジスタの蓄積された例外フィールドに対するデータを書込み;
− 命令が退去させられる各々の現行のマシンサイクルの間に、書込み手段は同様に対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表示している対応する現行のマシンサイクルにおいて退去させられた最後に発行された命令に対応する記憶要素の現行の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外を識別する浮動小数点状況レジスタの現行の例外フィールドに対するデータを書込み;
− 命令が退去させられる各々の現行のマシンサイクルの間に、書込み手段はさらに、対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表わしている対応する現行のマシンサイクルにおいて退去させられた最後に発行された命令について、予め定められた浮動小数点実行トラップタイプのいずれも結果としてもたらされないであろうということを表示する浮動小数点状況レジスタのトラップタイプフィールドに対するデータを書込む
請求項76に記載のプログラム制御順out-of-order実行データプロセッサ。 - 発行された命令にはSPARC 命令が含まれており;
− 浮動小数点状況レジスタが、SPARC 浮動小数点状況レジスタを含んでおり、
− 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプがIEEE 754 例外トラップを含み、
− 特定の浮動小数点実行例外には、IEEE 754例外が含まれる、
請求項77に記載のプログラム順out-of-order実行のデータプロセッサ。 - プログラム制御順out-of-order実行データプロセッサ内で浮動小数点例外を検出する方法において、
− 実行のためプログラム制御順で命令を発行する段階であって発行される命令には、浮動小数点及び非浮動小数点命令が含まれている段階;
− 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でout-of-order実行され得るように発行済み命令を実行する段階;
− ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶要素を含むデータ記憶構造を提供する段階;
・各々の発行済み命令について対応する発行済み命令が浮動小数点命令であるか否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデータを書込む段階;
・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点実行例外をひき起こす各々の発行された浮動小数点命令について、結果としてもたらされることになる浮動小数点実行トラップの予め定められたタイプのうちの1つを識別する対応する記憶要素の浮動小数点トラップタイプフィールド内へのデータを書込む段階;
− 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての発行済み命令が退去されてしまっている各々の発行済み命令を退去させる段階;
− 予め定められた実行例外のうちの第1のものが発行済み命令によってひき起こされた時点で、発行済み命令の実行を続行し、退去され得ない発行済み命令に遭遇するまで発行済み命令を退去させ続けることにより実行トラップ順序付けに着手し、ここで退去され得ない発行済み命令は、(a)第1の実行例外をひき起こした発行済み命令、及び(b)第1の実行例外をひき起こした発行済み命令よりも早期に発行されたものの第1の実行例外よりも晩期に発生する第2の実行例外をひき起こした発行済み命令のうちの1つである段階;
− 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レジスタを提供する段階;及び
− 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデータか、この退去され得ない命令が浮動小数点命令であることを表示した時点で、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書込む段階;
を含んで成る方法。 - − データ記憶構造の各々の記憶要素が、現行の浮動小数点実行例外フィールドも有しており;
− 浮動小数点状況レジスタが同様に、現行の浮動小数点実行例外フィールドも有しており、さらに
− 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプを結果としてもたらすことになる複数の特定の浮動小数点実行例外のうちの単数又は複数の例外を実行中にひき起こす各々の発行済み浮動小数点命令について、ひき起こされた特定の浮動小数点実行例外のうちの単数又は複数のものを識別する対応する記憶要素の現行の浮動小数点実行例外フィールドに対するデータを書込む段階;
− (a)退去され得ない発行済み命令に対応する記憶要素の浮動小数点命令識別フィールド内のデータが、退去され得ない発行済み命令が浮動小数点命令であることを表示した時点、及び(b)退去され得ない発行済み命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータが、予め定められた浮動小数点実行トラップタイプのうちの特定の1つを識別した時点で、退去され得ない発行済み命令に対応する記憶要素の現行の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外のうちの単数又は複数のものを識別する浮動小数点状況レジスタの現行の浮動点実行例外フィールドに対するデータを書込む段階;
を含んで成る請求項79に記載の方法。 - − 実行中に特定の浮動小数点実行例外のいずれもひき起こさない各々の発行済み浮動小数点命令について、特定の浮動小数点実行例外のいずれもひき起こされていないことを表示する対応する記憶要素の現行の浮動小数点実行例外フィールドに対するデータを書込む段階を含み;
− ここで浮動小数点状況レジスタには、蓄積した例外フィールド及びトラップ有効化マスクフィールドが含まれ、トラップ有効化マスクフィールドが特定の浮動小数点実行例外のあらゆる組合せの選択的マスキングを提供し;さらに
− 実行中単数又は複数のマスキングされた特定の浮動小数点実行例外をひき起こすもののその他の浮動小数点実行例外を全くひき起こさず、かつプログラム制御順でそれに先行する全ての発行済み命令が退去させられてしまっている各々の発行済み浮動小数点命令を退去させる段階;
− 命令が退去させられる各々の現行のマシンサイクルの間、(a)対応する記憶要素の浮動小数点命令識別フィールド内のデータが浮動小数点命令であり、かつ現行のマシンサイクル内で退去されつつある発行済み命令に対応する記憶要素の現行の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外、及び(b)浮動小数点状況レジスタの蓄積した浮動小数点実行例外フィールド内の現行データによって識別された特定の浮動小数点実行例外の蓄積を表わす浮動小数点状況レジスタの蓄積された例外フィールドに対するデータを書込む段階;
− 命令が退去させられる各々の現行のマシンサイクルの間に、対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表示している対応する現行のマシンサイクルにおいて退去させられた最後に発行された命令に対応する記憶要素の現行の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外を識別する浮動小数点状況レジスタの現行の例外フィールドに対するデータを書込む段階;
− 命令が退去させられる各々の現行のマシンサイクルの間に、対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表わしている対応する現行のマシンサイクルにおいて退去させられた最後に発行された命令について、予め定められた浮動小数点実行トラップタイプのいずれも結果としてもたらされないであろうということを表示する浮動小数点状況レジスタのトラップタイプフィールドに対するデータを書込む段階;
をさらに含んで成る請求項80に記載の方法。 - 発行された命令にはSPARC 命令が含まれており;
− 浮動小数点状況レジスタが、SPARC 浮動小数点状況レジスタを含んでおり、
− 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプがIEEE 754 例外トラップを含み、
− 特定の浮動小数点実行例外には、IEEE 754例外が含まれる、
請求項81に記載の方法。 - ネストされたトラップを投機的に取りこれから復帰するデータプロセッサであって、トラップをネストするための所定数のトラップレベルを有し、一つのトラップが取られるたびに、対応する一つのトラップレベルをトラップに割当てるデータプロセッサであって、
− チェックポイントを形成するための手段;
− チェックポイントにバックアップするための手段;
− トラップを取るための手段;
− トラップから復帰するための手段;
− 一つのトラップが取られるたびにトラップが取られた時のデータプロセッサの状態を記憶するレジスタ;
− トラップスタックユニットであって、
・ トラップレベルの数より多い所定数のトラップスタック記憶エントリを有するトラップスタックデータ記憶構造;
・ 一つのトラップレベルにマッピングするため現在利用可能なトラップスタック記憶エントリの現行利用可能性リストを維持するフリーリストユニットであって、一つのトラップが取られるたびに対応するトラップレベルにマッピングするため現在利用可能なトラップスタック記憶エントリのうちの次の一つを識別するフリーリストユニット;
・ 一つのトラップが取られるたびに、識別された次の現在利用可能なトラップスタック記憶エントリにレジスタの内容を書込む読取り/書込み論理;
・ 一つのトラップスタック記憶エントリに対する各トラップレベルの現行のトラップレベルマッピングを維持するリネームマッピング論理であって、トラップが取られるたびに、一つのトラップスタック記憶エントリに対する対応するトラップレベルの古いトラップレベルマッピングを、識別された次の現在利用可能なトラップスタック記憶エントリに対する対応するトラップレベルの新しいトラップレベルマッピングと置換するリネームマッピング論理;
・ 一つのトラップから復帰するたびに、現行トラップレベルマッピングによって対応するトラップレベルにマッピングされたトラップスタック記憶エントリの内容を読取る該読取り/書込み論理;
・ 現行トラップレベルマッピングにより一つのトラップレベルに現在マッピングされていないが一つのトラップレベルにマッピングするためには利用できない各トラップスタック記憶エントリについての利用不能性リストを維持する資源再生ユニットであって、一つのトラップが取られるたびに、置換された古いトラップレベルマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストに付加し、一つのトラップをもはや取消しできなくなるたびに、置換された古いトラップレベルマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストから除去する資源再生ユニット;
・ 一つのトラップがもはや取消しできなくなるたびに、利用不能性リストから除去されたトラップスタック記憶エントリを現行利用可能性リストに付加する該フリーリストユニット;及び
・ リタイアせしめられていない各チェックポイントが対応するチェックポイント記憶エントリを有するようなチェックポイント記憶エントリを有するチェックポイント記憶ユニットであって、各チェックポイントについて、チェックポイントが形成された時に対応するチェックポイント記憶エントリに現行トラップレベルマッピング及び現行利用可能性リストを記憶するチェックポイント記憶ユニット;
・ 一つのチェックポイントへバックアップされるたびに、現行トラップレベルマッピングを、対応するチェックポイント記憶エントリ内の記憶されたマッピングと置換する該リネームマッピング論理;
・ 一つのチェックポイントへバックアップされるたびに、現行利用可能性リストを、対応するチェックポイント記憶エントリ内の記憶された利用可能性リストと置換する該フリーリストユニット;
を具備するトラップスタックユニット;
を具備するデータプロセッサ。 - − 特定の一つのレジスタを指定する命令を、一つのトラップがとられるたびに該特定レジスタの内容がまだ利用可能でない可能性があるようなアウトオブオーダで実行する実行ユニットであって、該特定レジスタの内容が記憶に関し利用可能となるたびに、該特定レジスタの内容を前送りする実行ユニット;
− 該特定レジスタの内容がまだ利用可能でない間に一つのトラップがとられるたびに、該特定レジスタの内容がいつ前送りされるかを決定するための捕捉論理を更に具備する該トラップスタックユニット;
− 該特定レジスタの内容がまだ利用可能でない間に一つのトラップがとられるたびに、該特定レジスタの内容が前送りされていると該捕捉論理が決定したとき、トラップがとられた時点における識別された次の利用可能トラップスタック記憶エントリであったトラップスタック記憶エントリに該特定レジスタの前送りされた内容を書込む該読取り/書込み論理;
を更に具備する、請求項83に記載のデータプロセッサ。 - 捕捉論理は、該特定レジスタの内容がまだ利用可能でない間に一つのトラップがとられるたびに、該特定レジスタの内容が利用可能になったことを捕捉論理が表示するまで、トラップからの復帰するための手段がトラップから復帰しないように、トラップからの復帰するための手段に対し、該特定レジスタの内容がまだ利用可能でないかどうかを表示する、請求項84に記載のデータプロセッサ。
- フリーリストユニットは、一つのトラップが取られるたびに、対応するトラップレベルにマッピングするために少なくとも一つのトラップスタック記憶エントリが利用可能であることをフリーリストユニットが表示するまで、トラップを取るための手段がトラップを取らないように、トラップを取るための手段に対し、対応するトラップレベルにマッピングするために少なくとも一つのトラップスタック記憶エントリが現在利用可能であるかどうかを表示する、請求項83に記載のデータプロセッサ。
- − チェックポイントをリタイアせしめるための手段;
を更に具備し、
− チェックポイント形成手段は、一つのトラップが取られるたびに、トラップについての対応する一つのチェックポイントを形成し、トラップについてのチェックポイントがリタイアせしめられるとき、トラップがもはや取消され得ないようにし;
− 資源再生ユニットは、資源再生記憶エントリを有する資源再生データ記憶構造を含み、トラップについての各チェックポイントは一つの資源再生記憶エントリに対応し、資源再生ユニットは、一つのトラップについての一つのチェックポイントが形成されるたびに、置換された古いトラップレベルマッピングによって対応するトラップレベルにマッピングされたトラップスタック記憶エントリを識別する対応する資源再生記憶エントリ内のデータを記憶し;
− フリーリストユニットは、一つのトラップについての一つのチェックポイントがリタイアせしめられるたびに、対応する資源再生記憶エントリ内のデータによって識別される記憶エントリを現行利用可能性リストに付加する;
請求項83に記載のデータプロセッサ。 - 一つのトラップが取られるたびに、対応する一つのトラップレベルをトラップに割当てるように、トラップをネストするための所定数のトラップレベルを有し、一つのトラップが取られるたびに、トラップが取られた時のデータプロセッサの状態を規定する内容を記憶するレジスタを有するデータプロセッサにおいて、ネストされたトラップを投機的に取りこれから復帰する方法であって、
− チェックポイントを形成する段階;
− チェックポイントの各々へバックアップする段階;
− トラップを取る段階;
− トラップの各々から復帰する段階;
− トラップレベルの数より大きい所定数のトラップスタック記憶エントリを提供する段階;
− 一つのトラップレベルにマッピングするため現在利用可能なトラップスタック記憶エントリの現行利用可能性リストを維持し、一つのトラップが取られるたびに、対応するトラップレベルにマッピングするため現在利用可能なトラップスタック記憶エントリ中の次の一つを識別する段階;
− 一つのトラップが取られるたびに、識別された次の現在利用可能なトラップスタック記憶エントリにレジスタの内容を書込む段階;
− 一つのトラップが取られるたびに、一つのトラップスタック記憶エントリに対する対応するトラップレベルの古いトラップレベルマッピングを、識別された次の現在利用可能なトラップスタック記憶エントリに対する対応するトラップレベルの現行マッピングと置換することによって、一つのトラップスタック記憶エントリに対する各トラップレベルの現行マッピングを維持する段階;
− 一つのトラップから復帰するたびに、現行トラップレベルマッピングによって対応するトラップレベルにマッピングされたトラップスタック記憶エントリの内容を読取る段階;
− 一つのトラップが取られるたびに、置換された古いトラップレベルマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストに付加し、一つのトラップをもはや取消しできなくなるたびに、置換された古いトラップレベルマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストから除去することによって、現行トラップレベルマッピングにより一つのトラップレベルに現在マッピングされていないが一つのトラップレベルにマッピングするためには利用できない各トラップスタック記憶エントリについての利用不能性リストを維持する段階;
− 一つのトラップがもはや取消しできなくなるたびに、利用不能性リストから除去されたトラップスタック記憶エントリを現行利用可能性リストに付加する段階;
− 形成されたチェックポイントの各々が対応するチェックポイント記憶エントリを有するようなチェックポイント記憶エントリを提供する段階;
− 各チェックポイントについて、対応するチェックポイント記憶エントリ内の現行トラップレベルマッピング及び現行利用可能性リストを記憶する段階;
− バックアップされたチェックポイントの各々について、現行トラップレベルマッピングを、対応するチェックポイント記憶エントリ内の記憶されたマッピングと置換するとともに、現行利用可能性リストを、対応するチェックポイント記憶エントリ内の記憶された利用可能性リストと置換する段階;
を含んで成る方法。 - − 特定の一つのレジスタを指定する命令を、一つのトラップが取られるたびに該特定レジスタの内容がまだ利用可能でない可能性があるようなアウトオブオーダで実行し、該特定レジスタの内容が記憶に関し利用可能となるたびに、該特定レジスタの内容を前送りする実行ユニットをデータプロセッサが有し;
− 該方法が、
・ 該特定レジスタの内容がまだ利用可能でない間に一つのトラップが取られるたびに、該特定レジスタの内容がいつ前送りされるかを決定する段階;及び
・ 該特定レジスタの内容がまだ利用可能でない間に一つのトラップが取られるたびに、該特定レジスタの内容が前送りされていると該決定段階において決定されたとき、該トラップが取られた時点における識別された次の利用可能トラップスタック記憶エントリであったトラップスタック記憶エントリに該特定レジスタの前送りされた内容を書込む段階;
を含んで成る、請求項88に記載の方法。 - 各トラップから復帰する段階は、該特定レジスタの内容がまだ利用可能でない間に一つのトラップがとられるたびに、該特定の一つのレジスタの内容が利用可能になったときのみトラップから復帰することを含む、請求項89に記載の方法。
- トラップを取る段階は、一つのトラップが取られるたびに、対応するトラップレベルにマッピングするために少なくとも一つのトラップスタック記憶エントリが利用可能であるときのみトラップを取ることを含む、請求項88に記載の方法。
- − 形成されたチェックポイントの各々をリタイアせしめる段階;
をさらに含み、
− チェックポイントを形成する段階が、トラップについてのチェックポイントがリタイアせしめられるとき、トラップがもはや取消され得ないように、一つのトラップが取られるたびに、トラップについての対応する一つのチェックポイントを形成することを含み;
− 利用不能性リストを維持する段階は、
・ トラップについてのチェックポイントの各々が一つの資源再生記憶エントリに対応するような資源再生記憶エントリを提供すること;及び
・ 取られたトラップの各々について、置換された古いトラップレベルマッピングによって対応するトラップレベルにマッピングされたトラップスタック記憶エントリを識別する対応する資源再生記憶エントリ内のデータを記憶すること;
を含み、
− 利用可能性リストに付加する段階は、一つのトラップについての一つのチェックポイントがリタイアせしめられるたびに、対応する資源再生記憶エントリに記憶されたデータによって識別されるトラップスタック記憶エントリを利用可能性リストに付加することを含む;
請求項88に記載の方法。 - 命令を発行するための手段、命令を実行するための手段及びプロセッサの中にデータを記憶するためのメモリ記憶装置を有するプロセッサの中で、プロセッサ状態回復を要求する条件を検出した時点であらゆる命令境界でプロセッサ内の先行するマシン状態を回復する方法において、
− 各々の発行済み命令について1つの命令シリアル番号を割振る段階;
− マシン状態を変更する実行可能な命令の第1の予め定められたセットについてのみ実行に先立って前記プロセッサ内のデータ記憶装置内で1つのチェックポイント中にマシン状態情報を記憶する段階であって、ここでマシン状態を変える実行可能な命令の前記予め定められたセットが、このプロセッサ内で実施されたマシン状態を変化させる実行可能な命令の全てのセットよりも少ないような段階;
− 前記障害をひき起こす命令を識別し、多数の例外又は障害が同時に発生した場合には、障害又は例外をひき起こす順序的に最も早期のin-order命令を識別する段階;
− 前記最も早期の障害発生命令がチェックポイント実行された命令である場合には、前記障害発生命令の実行に先立って記憶された前記マシン状態情報を回復させプロセッサプログラムカウンタを前記障害発生命令の命令シリアル番号まで減分させて前記先行するマシン状態を回復する段階;
− マシン状態情報が記憶されてきた前記予め定められた実行可能な命令の1つが順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合には、(i)まず最初に、順序的に前記障害発生命令の後で前記障害発生命令に最も近いチェックポイントまで前記プロセッサをバックアップし、(ii)第2に、レジスタ資源を更新することによって前記障害命令の実行の直前に存在した状態までプロセッサの状態を回復するように前記プロセッサをバックステップさせ、(iii )前記障害発生命令の命令シリアル番号までプロセッサプログラムカウンタを減分させる段階;
を含んで成る方法。 - 前記プロセッサ内のデータ記憶装置内にマシン状態情報を記憶する前記段階には、レジスタデータ値を記憶するよりもむしろレジスタリネームマップを記憶し、投機的に発行された予測された命令について代替次プログラムカウンタを記憶する段階、が含まれている請求項93に記載の方法。
- 前記実行可能な命令の第1の予め定められたセットが、
− 予測された分岐命令を含む予測されたプログラム制御転送命令;
− 制御レジスタ値を修正する副作用をもち得る命令;
− ジャンプ&リンクタイプの命令を含め、プログラムフロー変化を結果としてもたらすタイプの命令;
− チェックポイント実行済み状態の量を減少させるためそのタイプの全ての命令よりも少ない数に制限され、そのタイプの非チェックポイント実行済み命令が結果として制御されたプロセッサ同期化をもたらすことになるような、制御レジスタ値を変更する副作用をもち得る命令を含めた、プロセッサ状態を修正するタイプの選択された命令;
− 予め定められた基準に従って頻繁に発生し、命令発行トラップを結果としてもたらす命令;及び
− 投機的トラップエントリを開始させるタイプの命令から成るグループの中から選択された命令である請求項93に記載の方法。 - 投機的命令シーケンスが関与する実行可能な命令の第2の予め定められたセットのうちのいずれか1つを実行する前に前記プロセッサを同期化する段階をさらに含む、請求項94に記載の方法。
- 前記マシンの同期化段階には、
− 実行に先立ちマシンの同期化を要求する前記その他の命令の発行/実行を暫定的に中断する段階;
− 完遂し退去させるべき実行段において全ての保留命令を待ち、前記プロセッサがマシン同期化に到着した後で前記その他の命令を発行/実行する段階、
が含まれている請求項96に記載の方法。 - 命令を発行するための手段、命令を実行するための手段及びプロセッサ内でデータを記憶するためのメモリ記憶装置を有するプロセッサの中で、命令境界においてプロセッサ内でマシン状態を回復する方法において、
− 予め定められた複数の投機的発行済み予測命令の実行に先立って前記プロセッサの前記データ記憶装置内のレジスタに、予め定められたマシン状態パラメータを記憶する段階;
− 実行例外又は障害条件を検出するべく命令実行を監視する段階;
− 前記実行例外又は障害条件を結果としてもたらす各命令の命令識別子をセーブする段階;
− 複数の実行済み命令が実行例外又は障害条件を結果としてもたらした場合に、この複数の例外又は障害発生命令のいずれが順序的により早期であるかを決定する段階;
− 前記最も早期の例外又は障害発生識別子をエンドポイントとして用いてプロセッサ中のプログラムカウンタをバックアップする段階;
− 前記最も早期の障害発生命令がチェックポイント実行済み命令である場合に、この障害発生命令の実行に先立ち前記チェックポイント内に記憶された前記マシン状態情報を回復し、プロセッサプログラムカウンタを前記障害発生命令の命令シリアル番号まで減分して前記先行するマシン状態を回復する段階;及び
− マシン状態情報が記憶された前記予め定められた実行可能な命令の1つが、順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合には、(i)まず最初に、前記障害発生命令の後で前記障害発生命令に最も近いチェックポイントまで前記プロセッサをバックアップし、(ii)第2にレジスタ資源を更新することによって前記障害命令の実行の直前に存在した状態までプロセッサの状態を回復するように前記プロセッサをバックアップさせ、(iii )前記障害発生命令の命令シリアル番号までプロセッサプログラムカウンタを減分させる段階;
を含んで成る方法。 - 命令境界でマシン状態を回復する方法において;
− 制御レジスタ値を修正する副作用をもち得る命令を含め、アーキテクチャ制御レジスタを修正し得るあらゆる命令について、(i)前記マシンを同期化すること又は(ii)制御レジスタ更新が必要でなくなるように前記命令の実行に先立ってマシン状態を保存するべく前記プロセッサ内の前記データ記憶構造内で命令チェックポイントを生成、記憶することのいずれかを選ぶ段階;
− 任意の投機的命令シーケンスを含むプログラムカウンタ不連続性を作り出すあらゆる命令について、プログラムカウンタ値がin-order命令シーケンス内の命令に対応しかつ障害をひき起こした命令の再発行及び実行なく正しいプログラムカウンタを再構築できるように前記命令の実行に先立ってアーキテクチャ及びマシン状態を保持するべく前記プロセッサ内のデータ記憶装置内で命令チェックポイントを生成、記憶する段階;
− 実行例外又は障害条件を検出するべく命令実行を監視する段階;
− 前記実行例外又は障害条件を結果としてもたらす各命令の命令識別子をセーブする段階;
− 複数の実行済み命令が実行例外又は障害条件を結果としてもたらした場合に、この複数の例外又は障害発生命令のいずれが順序的により早期であるかを決定する段階;
− 前記最も早期の例外又は障害発生識別子をエンドポイントとして用いてプロセッサ中のプログラムカウンタをバックアップする段階;
− 前記最も早期の障害発生命令がチェックポイント実行済み命令である場合に、この障害発生命令の実行に先立ちチェックポイント内に記憶された前記マシン状態情報を回復し、プロセッサプログラムカウンタを前記障害発生命令の命令シリアル番号まで減分して前記先行するマシン状態を回復する段階;及び
− マシン状態情報が記憶された前記予め定められた実行可能な命令の1つが、順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合には、(i)まず最初に、前記障害発生命令の後で前記障害発生命令に最も近いチェックポイントまで前記プロセッサをバックアップし、(ii)第2にレジスタ資源を更新することによって前記障害命令の実行の直前に存在した状態までプロセッサの状態を回復するように前記プロセッサをバックアップさせ、(iii )前記障害発生命令の命令シリアル番号までプロセッサプログラムカウンタを減分させる段階;
を含んで成る方法。 - 前記命令識別子は、前記命令が発行された時点で割当てられた前記命令シリアル番号である請求項99に記載の方法。
- 各々の前記チェックポイントには、レジスタリネームマップ及び制御;アーキテクチャ制御レジスタ値;ISN ;アーキテクチャプログラムカウンタ(PC)及び次のアーキテクチャプログラムカウンタ(PC);及び代替次プログラムカウンタ(PC)が含まれている、請求項100に記載の方法。
- 前記チェックポイントは、命令発行サイクル中に生成され割当てられる請求項99に記載の方法。
- 前記マシンの同期化段階には、
− 実行に先立ちマシンの同期化を要求する前記その他の命令の発行/実行を暫定的に中断する段階;
− 完遂し退去させるべき実行段において全ての保留命令を待ち、前記プロセッサがマシン同期化に到着した後で前記その他の命令を発行/実行する段階、
が含まれている請求項99に記載の方法。 - 実行に先立ちマシンの同期化を要求するために識別された前記その他の命令が、命令の同期化を要求するための性能劣化及び投機度への依存度といった考慮事項を含む性能−設計トレードオフに基づいて選択される、請求項99に記載の方法。
- 実行前の前記マシンの同期化を要求するものとしてマシン内のどの命令を指定すべきかを選択する方法において、
− 前記命令のための投機度を決定する段階;
− 命令の全てを投機的にとり扱うのに必要となる要求された論理を実施するよう割振ることが望ましい最大回路部域を決定することを含む、実施することが望ましい論理的複雑性の限界を決定する段階;
− 各々のトレードオフパラメータについての重み係数を含め、予め定められたトレードオフパラメータを設定する段階;
− 前記決定及び前記基準に基づいてその命令が同期化を要求するはずのものであるか否かを決定するべく命令のための性能指標を計算する段階、
を含んで成る方法。 - 命令を発行するための手段、命令を実行するための手段及びプロセッサの中にデータを記憶するためのメモリ記憶装置を有するプロセッサの中で、あらゆる命令境界でプロセッサ内の先行するマシン状態を回復するための装置において
− 各々の発行済み命令について1つの命令シリアル番号を割振るための手段;
− マシン状態を変更する実行可能な命令の第1の予め定められたセットについてのみ実行に先立って前記プロセッサ内のデータ記憶装置内で1つのチェックポイント中にマシン状態情報を記憶する手段であって、ここでマシン状態を変える実行可能な命令の前記予め定められたセットが、このプロセッサ内で実施されたマシン状態を変化させる実行可能な命令の全てのセットよりも少ないような手段;
− 前記障害をひき起こす命令を識別し、多数の例外又は障害が同時に発生した場合には、障害又は例外をひき起こす順序的に最も早期のin-order命令を識別する手段;
− 前記最も早期の障害発生命令がチェックポイント実行された命令である場合には、前記障害発生命令の実行に先立って記憶された前記マシン状態情報を回復させプロセッサプログラムカウンタを前記障害発生命令の命令シリアル番号まで減分させて前記先行するマシン状態を回復するための手段;
− マシン状態情報が記憶された前記予め定められた実行可能な命令の1つが順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合に、より早期の状態まで前記プロセッサをバックトラッキングするための手段;を含み、
− 前記バックトラッキング用手段には、順序的に前記障害発生命令の後に前記故障発生命令に最も近いチェックポイントまで前記プロセッサをバックアップするための手段が含まれ、しかも
− レジスタ資源を更新することにより前記故障発生命令の実行の直前に存在していたプロセッサの状態を回復するべく、前記プロセッサをバックステップさせるための手段;及び
− 前記障害発生命令の命令シリアル番号までプロセッサプログラムカウンタを減分させるための手段、
を含んで成る装置。 - 前記プロセッサ内の前記データ記憶装置内にマシン状態情報を記憶するための前記手段には、前記マシン状態のためのレジスタリネームマップを記憶するための手段が含まれている請求項106に記載の装置。
- 前記レジスタリネームマップから前記状態を回復することによって前記マシン状態を回復するための手段をさらに含んで成る請求項107に記載の装置。
- 投機的命令シーケンスが関与する実行可能な命令の第2の予め定められたセットのいずれか1つを実行する前に前記プロセッサを同期化するための手段をさらに含んで成る請求項106に記載の方法。
- 前記マシンの同期化用手段には、
− 実行に先立ちマシンの同期化を要求する前記その他の命令の発行/実行を暫定的に中断するための手段;
− 以前に発行された命令が完遂され退去されてしまうまで実行段階中の全ての保留命令の発行を遅延させるための手段;
− 前記プロセッサがマシンの同期化に到達した後に前記同期化タイプの命令の発行及び実行を開始するための手段;
が含まれている請求項109に記載の方法。 - データを記憶するための内部データ記憶装置、命令を発行するための命令発行ユニット手段、命令復号ユニット、命令を実行するための命令実行ユニット手段及び命令発行及び実行スケジューラ、及び前記実行ユニットから処理ユニット内のその他のユニットまで実行結果を伝達するデータ順方向分配バスを有し、外部メモリと交信し、対応するトラップレベルを各々有するネストされたトラップをとるため予め定められた数のトラップレベルを支持している、命令発行ユニットによって発行された命令を実行するための処理ユニット中で、命令実行効率を増大するための方法において、
− プロセッサ内の投機的命令をトラッキングする段階;
− 精確な例外モデルを維持する、ロード及びストア命令を含むメモリ参照命令をトラッキングし攻撃的にスケジュールする段階;
− 精確なアーキテクチャ状態を維持する一方でチェックポイント実行済みの状態を低減させるべく前記処理ユニット内の命令をチェックポイント実行する段階;
− 前記実行手段内に発生する例外について例外取り扱いを束縛する段階;
− 複数の投機的発行済みの予測された命令の実行結果を同時に監視する段階;
− 浮動小数点例外を検出する段階;
− 投機的にトラップをとりここから復帰する段階;及び
− プロセッサ状態回復を要求する条件を検出した時点で任意の命令境界でプロセッサ内の先行するマシン状態を回復する段階;
を含んで成る方法。 - プロセッサ内での投機的命令実行をトラッキングする前記段階には、
− データ記憶装置内のデータ構造を規定する段階;
− 発行ユニットによって発行された各命令に対して識別タグを割当てる段階;
− 割当てられたタグに基づいて各々の発行済み命令に対して、データ構造内に記憶された1つの活動ビットを結びつける段階;
− 命令が発行された時点で、データ構造内に活動ビットをセットする段階;及び
− 命令がエラー無しで実行を完了した時点でデータ構造内の活動ビットをクリアする段階、
が含まれている、請求項111に記載の方法。 - 精確な例外モデルを維持する、ロード及びストア命令を含むメモリ参照命令をトラッキングし攻撃的にスケジュールする前記段階には、
− 前記プロセッサによる実行のための複数の命令を発行する段階;
− 前記発行済みの複数の命令のうちのいずれが投機的に発行された命令であるかを識別する段階;
− 前記内部データ記憶装置内に、前記識別された投機的に発行された命令の各々に付随する投機的実行インジケータを記憶する段階;
− 前記発行済み命令のいずれが外部メモリを参照するかを決定する段階;
− 前記内部データ記憶装置の中に前記決定されたメモリ参照命令に付随するメモリ参照命令インジケータを記憶する段階;
− 前記命令が発行された後前記複数の命令のうちの各々の命令の実行活動状況を監視する段階;
− 各々の発行済み命令について実行中に何らかのエラー条件が発生したか否かを確認し、実行中にエラーを経験した各々の命令のためにエラー状況を表示するエラー条件インジケータを生成する段階;
− 前記発行済み命令の実行状況をトラッキングする段階;及び
− その他の発行されたものの実行されていない命令の実行状況に基づいて、順序的により早期の発行済みの非メモリ参照命令に先立ち、out-of-order実行のために前記決定されたメモリ参照命令のうちの特定の1つの命令をスケジュールする段階であって、この実行状況には、投機的に発行された命令であるものとしての非メモリ参照命令の識別及び予め定められた実行完了状況を有するものとしての非メモリ参照命令の識別が含まれている、スケジュール段階、
が含まれている請求項112に記載の方法。 - 前記CPU のための精確なアーキテクチャ状態を維持する一方でチェックポイント実行済み状態を低減させるべく前記プロセッサ内の命令をチェックポイント実行する前記段階には、
− 前記CPU 内で実行されたときにアーキテクチャ状態を修正する可能性のある命令を、その発行及び実行前に予め識別する段階;
− 予め定められた選択基準に基づいて実行する前にアーキテクチャ状態をチェックポイント実行せずに特別な実行モードにて実行するための、前記識別された命令のうちの特定の命令を予め選択する段階;
− 実行に先立ち前記予め選択された特定の命令以外の前記識別された命令についてアーキテクチャ状態をチェックポイント実行する段階;及び
− 前記特殊モードでの前記命令のうちの特定の命令の実行を含め、前記識別された命令を実行する段階、
が含まれている請求項113に記載の方法。 - 前記実行手段内で発生する例外について例外取扱いを束縛する前記段階には、
− タイムアウト条件を規定する特定された事象の発生回数について予め定められた閾値を設定し、この閾値を前記CPU 内の第1のデータ記憶装置の中に記憶する段階、
− 前記CPU 内のカウンタ内で前記特定された事象の発生を計数し、前記発生回数を前記CPU 内の第2のデータ記憶装置内に1つの計数として記憶する段階;
− 前記計数を前記閾値と比較する段階;
− 前記計数が前記タイムアウト条件以上である場合に、タイムアウトチェックポイントを形成する段階、
が含まれている、請求項114に記載の方法。 - 複数の投機的発行済みの予測された命令の実行結果を同時に監視する前記段階には、
− プロセッサ内の前記データ順方向分配全体にわたり前記実行ユニットからの実行結果信号を受理するように結合されたウォッチポイントデータを記憶するための複数のウォッチポイントレジスタをもつウォッチポイントユニットを提供する段階;
− 前記投機的に発行された予測された命令の各々について、制御フロー転送方向を左右し投機的発行済み予測命令を投機的に発行する基礎となる1つの条件の予測値を識別する予測条件データ結果を含むウォッチポイントデータを記憶するために1つのウォッチポイントレジスタを割振る段階;
− 前記データ順方向送りバス上で伝送される前記投機的発行済みの予測命令についての実行結果信号を監視する段階;
− 前記記憶されたウォッチポイントデータ及び実際の既知の条件データ結果信号及び予め定められた規則を含む前記記憶されたウォッチポイントデータ及び実行結果信号に基づき、予め定められた事象の発生を検出する段階であって、ここで前記実際の既知の条件データ結果信号が、前記投機的発行済みの予測命令の制御フロー転送方向を決定する上で基礎となるべき条件の実際の値を識別しているような、段階;
− 信号が一致しているかしていないかを決定するべく前記投機的に発行された命令に関して前記データ順方向送りバス上で到着した前記結果信号と前記投機的に発行された予測命令のうちの1つについて前記ウォッチポイントレジスタ内に記憶された前記ウォッチポイントデータを比較する段階であって、一致は前記投機的発行済み予測命令が正しく予測されていたことを表わし、不一致は、前記投機的発行済み予測命令が誤予測されていたことを表わすような、段階;及び
− 比較の結果、前記予測が誤予測であったことが表示された場合には、前記誤予測に基づいて実行された命令が取消されるように前記中央処理ユニットをより早朝の中央処理ユニット状態まで回復させる段階、
が含まれている請求項115に記載の方法。 - 浮動小数点例外を検出する前記段階には、
− 実行のためプログラム制御順で命令を発行する段階であって発行される命令には、浮動小数点及び非浮動小数点命令が含まれている段階;
− 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でout-of-order実行され得るように発行済み命令を実行する段階;
− ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶要素を含むデータ記憶構造を提供する段階;
・各々の発行済み命令について対応する発行済み命令が浮動小数点命令であるか否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデータを書込む段階;
・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点実行例外をひき起こす各々の発行された浮動小数点命令について、結果としてもたらされることになる浮動小数点実行トラップの予め定められたタイプのうちの1つを識別する対応する記憶要素の浮動小数点トラップタイプフィールド内へのデータを書込む段階;
− 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての発行済み命令が退去されてしまっている各々の発行済み命令を退去させる段階;
− 予め定められた実行例外のうちの第1のものが発行済み命令によってひき起こされた時点で、発行済み命令の実行を続行し、退去され得ない発行済み命令に遭遇するまで発行済み命令を退去させ続けることにより実行トラップ順序付けに着手し、ここで退去され得ない発行済み命令は、(a)第1の実行例外をひき起こした発行済み命令、及び(b)第1の実行例外をひき起こした発行済み命令よりも早期に発行されたものの第1の実行例外よりも晩期に発生する第2の実行例外をひき起こした発行済み命令のうちの1つである段階;
− 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レジスタを提供する段階;及び
− 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデータが、この退去され得ない命令が浮動小数点命令であることを表示した時点で、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書込む段階;
が含まれている請求項116に記載の方法。 - 投機的にトラップをとりこのトラップから復帰する前記段階には、
− チェックポイントを形成する段階;
− チェックポイントをバックアップする段階;
− トラップを取る段階;
− トラップから復帰する段階;
− トラップが取られる度毎のデータプロセッサの状態を規定する内容をもつレジスタを提供する段階;
− トラップレベルより多い数のトラップスタック記憶エントリを有するトラップスタックデータ記憶構造を提供する段階;
− トラップレベルのうちの1つにマッピングするため現在利用可能なトラップスタック記憶エントリの現行の利用可能性リストを維持し、トラップがとられる毎にトラップレベルのうちの対応するものにマッピングするため現在利用可能なトラップスタック記憶エントリのうちの次のものを識別する段階;
− とられた各々のトラップについて、現在利用可能なトラップスタック記憶エントリのうちの次のものに対しレジスタの内容を書込む段階;
− トラップがとられる毎に、トラップスタック記憶エントリのうちの1つに対する対応するトラップレベルの古いマッピングを、現在利用可能なトラップスタック記憶エントリのうちの次のエントリに対する対応するトラップレベルの現行マッピングと置換することによってトラップスタック記憶エントリのうちの1つに対する各トラップレベルの現行のマッピングを維持する段階、
− トラップがとられる毎に、古いマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストに付加し、とったトラップをもはや取消しできなくなる毎に、古いマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストから除去することによって、現行マッピングによりトラップレベルの1つに現在マッピングされていないもののトラップレベルの1つにマッピングするためには利用できない各々のトラップスタック記憶エントリの利用不能性リストを維持する段階;
− 現行の利用可能性リストに対し、利用不能性リストから除去された各々のトラップスタック記憶エントリを付加する段階;
− チェックポイント記憶エントリを含み、形成された各チェックポイントが対応するチェックポイント記憶エントリをもつような、チェックポイント記憶ユニットを提供する段階;
− 各々の形成されたチェックポイントについて、対応するチェックポイント記憶エントリ内で、現行のマッピング及び現行の利用可能性リストを記憶する段階;
− チェックポイントに対する各々のバックアップについて、現行のマッピングを対応するチェックポイント記憶エントリ内に記憶されたマッピングと置換し、現行の利用可能性リストを対応するチェックポイント記憶エントリ内に記憶された利用可能性リストを置換する段階、
が含まれている請求項117に記載の方法。 - プロセッサ状態の回復を要求する条件を検出した時点で任意の命令境界でプロセッサ内の先行するマシン状態を回復する前記段階には;
− 各々の発行済み命令について1つの命令シリアル番号を割振る段階;
− マシン状態を変更する実行可能な命令の第1の予め定められたセットについてのみ実行に先立って前記プロセッサ内のデータ記憶装置内で1つのチェックポイント中にマシン状態情報を記憶する段階であって、ここでマシン状態を変える実行可能な命令の前記予め定められたセットが、このプロセッサ内で実施されたマシン状態を変化させる実行可能な命令の全てのセットよりも少ないような段階;
− 前記障害をひき起こす命令を識別し、多数の例外又は障害が同時に発生した場合には、障害又は例外をひき起こす順序的に最も早期のin-order命令を識別する段階;
− 前記最も早期の障害発生命令がチェックポイント実行された命令である場合には、前記障害発生命令の実行に先立って記憶された前記マシン状態情報を回復させプロセッサプログラムカウンタを前記障害発生命令の命令シリアル番号まで減分させて前記先行するマシン状態を回復する段階;
− マシン状態情報が記憶されてきた前記予め定められた実行可能な命令の1つが順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合には、(i)まず最初に、順序的に前記障害発生命令の後で前記障害発生命令に最も近いチェックポイントまで前記プロセッサをバックアップし、(ii)第2にレジスタ資源を更新することによって前記障害命令の実行の直前に存在した状態までプロセッサの状態を回復するように前記プロセッサをバックステップさせ、(iii)前記障害発生命令の命令シリアル番号までプロセッサプログラムカウンタを減分させる段階;
が含まれている請求項118に記載の方法。 - − レジスタファイル及びリネームユニットであって、
・ 物理レジスタであって、該特定レジスタが組織されたレジスタであり、該物理レジスタが該特定レジスタにマッピングされることができ、該特定レジスタを指定する命令がアウトオブオーダで実行されることができるようにされた物理レジスタ;及び
・ 物理レジスタを識別し実行ユニットに提供されるタグを用いて一つの物理レジスタに該特定レジスタの現行レジスタマッピングを維持するリネーミング論理であって、該リネーミングマッピング論理が、該特定レジスタを指定する一つの命令が一つの物理レジスタへの該特定レジスタの新しいレジスタマッピングを必要とするたびに、一つの物理レジスタへの該特定レジスタの古いレジスタマッピングを新しいレジスタマッピングと置換するようにされたリネーミング論理;
を具備するレジスタファイル及びリネームユニットを具備し;
− 該実行ユニットは、該組織されたレジスタにマッピングされた物理レジスタの一つの内容が記憶のために利用可能となるたびに、該物理レジスタの内容及び該タグを前送りし、
− 該捕捉論理は、
・ 該現行マッピングによって該特定レジスタにマッピングされた物理レジスタの内容がまだ利用可能ではないが一つの物理レジスタの内容及びタグが前送りされている間に一つのトラップが取られるたびに、該現行レジスタマッピングによって該特定レジスタにマッピングされた物理レジスタのタグと前送りされているタグを比較して、現行一致が存在するかどうかを決定する現行一致論理;及び
・ 一つのトラップが取られるたびに、現行レジスタマッピングによって該特定レジスタにマッピングされた物理レジスタのタグを記憶するとともに、一つの物理レジスタの内容及びタグが前送りされるたびに、記憶されたタグと前送りされているタグを比較して後期一致が存在するかどうかを決定する後期一致論理;
を具備し、
− 該読取り/書込み論理は、現行一致が存在するたびに、識別された次の現行利用可能トラップスタック記憶エントリに前送りされている内容を書込むとともに、後期一致が存在するたびに、トラップが取られた時の識別された次の現行利用可能トラップスタック記憶エントリであったトラップスタック記憶エントリに前送りされている内容を書込む;
請求項84に記載のデータプロセッサ。 - − データプロセッサは、物理レジスタを具備するレジスタファイル及びリネームユニットを有し、該特定レジスタは、該物理レジスタが該特定レジスタにマッピングされることができ該特定レジスタを指定する命令がアウトオブオーダで実行されることができるように組織されたレジスタであり、該レジスタファイル及びリネームユニットは、該物理レジスタを識別し該実行ユニットに提供されるタグを用いて一つの物理レジスタへの該特定レジスタの現行レジスタマッピングを維持し、該レジスタファイル及びリネームユニットは、該特定レジスタを指定する一つの命令が一つの物理レジスタへの該特定レジスタの新しいレジスタマッピングを要求するたびに、一つの物理レジスタへの該特定レジスタの古いレジスタマッピングを新しいレジスタマッピングと置換し;
− 該実行ユニットは、該組織されたレジスタへマッピングされた一つの物理レジスタの内容が記憶のために利用可能となるたびに、該物理レジスタの内容及びタグを前送りし;
− 該特定レジスタの内容がいつ前送りされるかを決定する該ステップは、
・ 現行マッピングによって該特定レジスタにマッピングされた物理レジスタの内容がまだ利用可能ではないが一つの物理レジスタの内容及びタグが前送りされている間に一つのトラップが取られるたびに、現行レジスタマッピングによって該特定レジスタにマッピングされた物理レジスタのタグと前送りされているタグを比較して現行一致が存在するかどうかを決定すること;及び
・ 一つのトラップが取られるたびに、現行レジスタマッピングによって該特定レジスタにマッピングされた物理レジスタのタグを記憶するとともに、一つの物理レジスタの内容及びタグが前送りされるたびに、記憶されたタグと前送りされているタグを比較して後期一致が存在するかどうかを決定すること;
を具備し、
− 該書込む段階は、現行一致が存在するたびに、該識別された次の現行利用可能トラップスタック記憶エントリに前送りされている内容を書込むこと、及び、後期一致が存在するたびに、トラップが取られた時の識別された次の現行利用可能トラップスタック記憶エントリであったトラップスタック記憶エントリに前送りされている内容を書込むこと、を含む;
請求項89に記載の方法。 - 一つのトラップが取られるたびに、対応する一つのトラップレベルをトラップに割当てるように、トラップをネストするための所定数のトラップレベルを有し、一つのトラップが取られるたびに、トラップが取られた時のデータプロセッサの状態を規定する内容を記憶するレジスタを有し、チェックポイントを形成しチェックポイントへとバックアップすることができるデータプロセッサにおいて、データプロセッサが、ネストされたトラップを投機的に取りこれから復帰するのを可能にするトラップスタックユニットであって、
トラップレベルの数よりも大きな所定数のトラップスタック記憶エントリを有するトラップスタックデータ記憶構造;
一つのトラップレベルにマッピングするために現行利用可能なトラップスタック記憶エントリの現行利用可能リストを維持するフリーリストユニットであって、一つのトラップが取られるたびに、対応するトラップレベルへのマッピングのために現行利用可能なトラップスタック記憶エントリの次の一つを識別するフリーリストユニット;
一つのトラップが取られるたびに、識別された次の現行利用可能トラップスタック記憶エントリにレジスタの内容を書込む読取り/書込み論理;
一つのトラップスタック記憶エントリへの各トラップレベルの現行トラップレベルマッピングを維持するリネームマッピング論理であって、一つのトラップが取られるたびに、一つのトラップスタック記憶エントリへの対応するトラップレベルの古いトラップレベルマッピングを、識別された次の現行利用可能トラップスタック記憶エントリへの対応するトラップレベルの新しいトラップレベルマッピングと置換するリネームマッピング論理;
一つのトラップから復帰するたびに、現行トラップレベルマッピングによって対応するトラップレベルにマッピングされたトラップスタック記憶エントリの内容を読取る該読取り/書込み論理;
現行トラップレベルマッピングにより一つのトラップレベルに現在マッピングされていないが一つのトラップレベルにマッピングするためには利用できない各トラップスタック記憶エントリについての利用不能性リストを維持する資源再生ユニットであって、一つのトラップがとられるたびに、置換された古いトラップレベルマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストに付加するとともに、一つのトラップをもはや取消しできなくなるたびに、置換された古いトラップレベルマッピングにより対応するトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能性リストから除去する資源再生ユニット;
一つのトラップがもはや取消しできなくなるたびに、利用不能性リストから除去されたトラップスタック記憶エントリを現行利用可能性リストに付加する該フリーリストユニット;
リタイアせしめられていない各チェックポイントが対応するチェックポイント記憶エントリを有するようなチェックポイント記憶エントリを有するチェックポイント記憶ユニットであって、各チェックポイントについて、チェックポイントが形成された時の対応するチェックポイント記憶エントリに現行トラップレベルマッピング及び現行利用可能性リストを記憶するチェックポイント記憶ユニット;
一つのチェックポイントへバックアップされるたびに、現行トラップレベルマッピングを、対応するチェックポイント記憶エントリ内の記憶されたマッピングと置換する該リネームマッピング論理;
一つのチェックポイントへバックアップされるたびに、現行利用可能性リストを、対応するチェックポイント記憶エントリ内の記憶された利用可能性リストと置換する該フリーリストユニット;
を具備するトラップスタックユニット。 - 該データプロセッサが、特定の一つのレジスタを指定する命令を、一つのトラップが取られるたびに該特定レジスタの内容がまだ利用可能でない可能性があるようなアウトオブオーダで実行し、該特定レジスタの内容が記憶に関し利用可能となるたびに、該特定レジスタの内容を前送りする実行ユニット、を有し;
該トラップスタックユニットが、該特定レジスタの内容がまだ利用可能でない間に一つのトラップが取られるたびに、該特定レジスタの内容がいつ前送りされるかを決定するための捕捉論理、を更に具備し;
該読取り/書込み論理が、該特定レジスタの内容がまだ利用可能でない間に一つのトラップが取られるたびに、該特定レジスタの内容が前送りされていると該捕捉論理が決定したとき、該トラップがとられた時点における識別された次の利用可能トラップスタック記憶エントリであったトラップスタック記憶エントリに該特定レジスタの前送りされた内容を書込む;
請求項122に記載のトラップスタックユニット。 - 捕捉論理は、該特定レジスタの内容がまだ利用可能でない間に一つのトラップがとられるたびに、該特定レジスタの内容が利用可能になったことを捕捉論理が表示するまで、データプロセッサがトラップから復帰しないように、該特定レジスタの内容がまだ利用可能でないかどうかを表示する、請求項123に記載のトラップスタックユニット。
- 一つのトラップが取られるたびに、フリーリストユニットは、対応するトラップレベルにマッピングするために少なくとも一つのトラップスタック記憶エントリが利用可能であることをフリーリストユニットが表示するまで、データプロセッサがトラップを取らないように、対応するトラップレベルにマッピングするために少なくとも一つのトラップスタック記憶エントリが現在利用可能であるかどうかを表示する、請求項122に記載のトラップスタックユニット。
- データプロセッサは、トラップについてのチェックポイントがリタイアせしめられるとき、トラップがもはや取消され得ないように、チェックポイントをリタイアせしめ、一つのトラップが取られるたびに、トラップについての対応する一つのチェックポイントを形成し;
資源再生ユニットは、資源再生記憶エントリを有する資源再生データ記憶構造を含み、トラップについての各チェックポイントは一つの資源再生記憶エントリに対応し、資源再生ユニットは、一つのトラップについての一つのチェックポイントが形成されるたびに、置換された古いトラップレベルマッピングによって対応するトラップレベルにマッピングされたトラップスタック記憶エントリを識別する対応する資源再生記憶エントリ内のデータを記憶し;
フリーリストユニットは、一つのトラップについての一つのチェックポイントがリタイアせしめられるたびに、対応する資源再生記憶エントリ内のデータによって識別される記憶エントリを現行利用可能性リストに付加する;
請求項122に記載のトラップスタックユニット。 - − データプロセッサは、物理レジスタを具備するレジスタファイル及びリネームユニットを有し、該特定レジスタは、物理レジスタが該特定レジスタにマッピングされることができ、該特定レジスタを指定する命令がアウトオブオーダで実行されることができるように、組織されたレジスタであり、レジスタファイル及びリネームユニットは、物理レジスタを識別し実行ユニットに提供されるタグを用いて一つの物理レジスタへの該特定レジスタの現行レジスタマッピングを維持し、レジスタファイル及びリネームユニットは、該特定レジスタを指定する一つの命令が一つの物理レジスタへの該特定レジスタの新しいレジスタマッピングを必要とするたびに、一つの物理レジスタへの該特定レジスタの古いレジスタマッピングを新しいレジスタマッピングと置換し;
− 実行ユニットは、組織されたレジスタにマッピングされた物理レジスタの一つの内容が記憶のために利用可能となるたびに、物理レジスタの内容及びタグを前送りし、
− 捕捉論理は、
・ 現行マッピングによって該特定レジスタにマッピングされた物理レジスタの内容がまだ利用可能ではないが一つの物理レジスタの内容及びタグが前送りされている間に一つのトラップが取られるたびに、現行レジスタマッピングによって該特定レジスタにマッピングされた物理レジスタのタグと前送りされているタグを比較して、現行一致が存在するかどうかを決定する現行一致論理;及び
・ 一つのトラップが取られるたびに、現行レジスタマッピングによって該特定レジスタにマッピングされた物理レジスタのタグを記憶するとともに、一つの物理レジスタの内容及びタグが前送りされるたびに、記憶されたタグと前送りされているタグを比較して後期一致が存在するかどうかを決定する後期一致論理;
を具備し、
− 読取り/書込み論理は、現行一致が存在するたびに、識別された次の現行利用可能トラップスタック記憶エントリに前送りされている内容を書込むとともに、後期一致が存在するたびに、トラップが取られた時の識別された次の現行利用可能トラップスタック記憶エントリであったトラップスタック記憶エントリに前送りされている内容を書込む;
請求項123に記載のトラップスタックユニット。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39088595A | 1995-02-14 | 1995-02-14 | |
US39829995A | 1995-03-03 | 1995-03-03 | |
US08/484,795 US5673426A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for tracking floating-point exceptions |
US08/476,419 US5659721A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for checkpointing instructions to maintain precise state |
US08/482,075 US5655115A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation |
US08/478,025 US5651124A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for aggressively scheduling long latency instructions including load/store instructions while maintaining precise state |
US08/473,223 US5644742A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for a time-out checkpoint |
US08/472,394 US5673408A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for renamable trap-stack |
US08/487,801 US5751985A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for tracking instruction status to maintain precise state |
US08/483,958 US5649136A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for maintaining and restoring precise state at any instruction boundary |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52508596A Division JP3670290B2 (ja) | 1995-02-14 | 1996-02-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006006315A Division JP4142690B2 (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005038445A true JP2005038445A (ja) | 2005-02-10 |
JP3787142B2 JP3787142B2 (ja) | 2006-06-21 |
Family
ID=34979088
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52508596A Expired - Fee Related JP3670290B2 (ja) | 1995-02-14 | 1996-02-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2004265390A Expired - Fee Related JP3787141B2 (ja) | 1995-02-14 | 2004-09-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2004265716A Expired - Fee Related JP3787142B2 (ja) | 1995-02-14 | 2004-09-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2004265586A Expired - Fee Related JP3754439B2 (ja) | 1995-02-14 | 2004-09-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2006006315A Expired - Fee Related JP4142690B2 (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2006006056A Pending JP2006107536A (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2007180315A Pending JP2007287176A (ja) | 1995-02-14 | 2007-07-09 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52508596A Expired - Fee Related JP3670290B2 (ja) | 1995-02-14 | 1996-02-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2004265390A Expired - Fee Related JP3787141B2 (ja) | 1995-02-14 | 2004-09-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004265586A Expired - Fee Related JP3754439B2 (ja) | 1995-02-14 | 2004-09-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2006006315A Expired - Fee Related JP4142690B2 (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2006006056A Pending JP2006107536A (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2007180315A Pending JP2007287176A (ja) | 1995-02-14 | 2007-07-09 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0815507B1 (ja) |
JP (7) | JP3670290B2 (ja) |
WO (1) | WO1996025705A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108719B2 (en) | 2006-10-13 | 2012-01-31 | Nec Corporation | Information processing device and failure concealing method therefor |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047370A (en) * | 1997-12-19 | 2000-04-04 | Intel Corporation | Control of processor pipeline movement through replay queue and pointer backup |
DE19929050C2 (de) * | 1998-08-19 | 2002-01-03 | Ibm | Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem |
US7086035B1 (en) | 1999-05-13 | 2006-08-01 | International Business Machines Corporation | Method and system for counting non-speculative events in a speculative processor |
US7486854B2 (en) | 2006-01-24 | 2009-02-03 | Uni-Pixel Displays, Inc. | Optical microstructures for light extraction and control |
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
JP5326314B2 (ja) | 2008-03-21 | 2013-10-30 | 富士通株式会社 | プロセサおよび情報処理装置 |
KR101669989B1 (ko) | 2010-05-27 | 2016-10-28 | 삼성전자주식회사 | 파이프라인 프로세서 및 이퀄 모델 보존 방법 |
US9448800B2 (en) * | 2013-03-14 | 2016-09-20 | Samsung Electronics Co., Ltd. | Reorder-buffer-based static checkpointing for rename table rebuilding |
KR102010317B1 (ko) * | 2013-03-14 | 2019-08-13 | 삼성전자주식회사 | 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅 |
KR101923289B1 (ko) * | 2014-03-27 | 2018-11-28 | 인텔 코포레이션 | 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직 |
US9436552B2 (en) | 2014-06-12 | 2016-09-06 | International Business Machines Corporation | Checkpoint triggering in a computer system |
KR102330389B1 (ko) * | 2014-07-24 | 2021-11-24 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
JP2016062513A (ja) * | 2014-09-19 | 2016-04-25 | 株式会社東芝 | プロセッサおよびプロセッサシステム |
US10303525B2 (en) | 2014-12-24 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387156B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US20160357556A1 (en) * | 2014-12-24 | 2016-12-08 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for data speculation execution |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US9785442B2 (en) | 2014-12-24 | 2017-10-10 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061583B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387158B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061589B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US11188336B2 (en) | 2015-12-28 | 2021-11-30 | Qualcomm Incorporated | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model |
US10248509B2 (en) | 2016-11-16 | 2019-04-02 | International Business Machines Corporation | Executing computer instruction including asynchronous operation |
JP7225745B2 (ja) | 2018-12-06 | 2023-02-21 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US10877768B1 (en) | 2019-09-06 | 2020-12-29 | Microsoft Technology Licensing, Llc | Minimizing traversal of a processor reorder buffer (ROB) for register rename map table (RMT) state recovery for interrupted instruction recovery in a processor |
CN111159051B (zh) * | 2019-12-31 | 2023-07-04 | 北京天融信网络安全技术有限公司 | 死锁检测方法、装置、电子设备及可读存储介质 |
US11061677B1 (en) | 2020-05-29 | 2021-07-13 | Microsoft Technology Licensing, Llc | Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor |
CN114355968B (zh) * | 2021-11-26 | 2023-12-12 | 中国航空无线电电子研究所 | 一种基于多维匹配的机载设备自主控制方法和装置 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0306891A3 (en) * | 1987-09-11 | 1992-04-01 | National Semiconductor Corporation | Pipelined slave protocol for high performance cpu-fpu cluster |
US5109514A (en) * | 1988-07-28 | 1992-04-28 | Sun Microsystems, Inc. | Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions |
US4912707A (en) * | 1988-08-23 | 1990-03-27 | International Business Machines Corporation | Checkpoint retry mechanism |
EP0365188B1 (en) * | 1988-10-18 | 1996-09-18 | Hewlett-Packard Company | Central processor condition code method and apparatus |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5185872A (en) * | 1990-02-28 | 1993-02-09 | Intel Corporation | System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy |
US5237700A (en) * | 1990-03-21 | 1993-08-17 | Advanced Micro Devices, Inc. | Exception handling processor for handling first and second level exceptions with reduced exception latency |
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
EP0514763A3 (en) * | 1991-05-20 | 1993-08-25 | Motorola, Inc. | A data processor having a logical register content-addressable memory |
US5355457A (en) * | 1991-05-21 | 1994-10-11 | Motorola, Inc. | Data processor for performing simultaneous instruction retirement and backtracking |
ATE188786T1 (de) * | 1991-07-08 | 2000-01-15 | Seiko Epson Corp | Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus |
US5269017A (en) * | 1991-08-29 | 1993-12-07 | International Business Machines Corporation | Type 1, 2 and 3 retry and checkpointing |
DE4237417C2 (de) * | 1992-03-25 | 1997-01-30 | Hewlett Packard Co | Datenverarbeitungssystem |
JP3730252B2 (ja) * | 1992-03-31 | 2005-12-21 | トランスメタ コーポレイション | レジスタ名称変更方法及び名称変更システム |
US5694564A (en) * | 1993-01-04 | 1997-12-02 | Motorola, Inc. | Data processing system a method for performing register renaming having back-up capability |
JPH06236274A (ja) * | 1993-01-08 | 1994-08-23 | Internatl Business Mach Corp <Ibm> | スーパースカラ・プロセッサ・システム内でスカラ命令を追跡する方法およびシステム |
US5471598A (en) * | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
DE69425311T2 (de) * | 1993-10-18 | 2001-03-15 | Nat Semiconductor Corp | Mikroprozessor mit spekulativer Befehlsausführung |
US5463745A (en) * | 1993-12-22 | 1995-10-31 | Intel Corporation | Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system |
-
1996
- 1996-02-13 WO PCT/US1996/001930 patent/WO1996025705A1/en active IP Right Grant
- 1996-02-13 EP EP96906404.7A patent/EP0815507B1/en not_active Expired - Lifetime
- 1996-02-13 JP JP52508596A patent/JP3670290B2/ja not_active Expired - Fee Related
-
2004
- 2004-09-13 JP JP2004265390A patent/JP3787141B2/ja not_active Expired - Fee Related
- 2004-09-13 JP JP2004265716A patent/JP3787142B2/ja not_active Expired - Fee Related
- 2004-09-13 JP JP2004265586A patent/JP3754439B2/ja not_active Expired - Fee Related
-
2006
- 2006-01-13 JP JP2006006315A patent/JP4142690B2/ja not_active Expired - Fee Related
- 2006-01-13 JP JP2006006056A patent/JP2006107536A/ja active Pending
-
2007
- 2007-07-09 JP JP2007180315A patent/JP2007287176A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108719B2 (en) | 2006-10-13 | 2012-01-31 | Nec Corporation | Information processing device and failure concealing method therefor |
Also Published As
Publication number | Publication date |
---|---|
JP2004355663A (ja) | 2004-12-16 |
JP3670290B2 (ja) | 2005-07-13 |
JP2005025782A (ja) | 2005-01-27 |
JP2007287176A (ja) | 2007-11-01 |
JPH11500551A (ja) | 1999-01-12 |
JP3787141B2 (ja) | 2006-06-21 |
JP3787142B2 (ja) | 2006-06-21 |
EP0815507A4 (en) | 2001-05-16 |
JP2006107537A (ja) | 2006-04-20 |
EP0815507B1 (en) | 2013-06-12 |
JP2006107536A (ja) | 2006-04-20 |
JP3754439B2 (ja) | 2006-03-15 |
JP4142690B2 (ja) | 2008-09-03 |
WO1996025705A1 (en) | 1996-08-22 |
EP0815507A1 (en) | 1998-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4142690B2 (ja) | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 | |
JP5018728B2 (ja) | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 | |
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 | |
US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
EP0751458B1 (en) | Method and system for tracking resource allocation within a processor | |
US6131157A (en) | System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor | |
US5463745A (en) | Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system | |
US5630149A (en) | Pipelined processor with register renaming hardware to accommodate multiple size registers | |
US5826055A (en) | System and method for retiring instructions in a superscalar microprocessor | |
JP3678444B2 (ja) | パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US6098167A (en) | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution | |
US7603543B2 (en) | Method, apparatus and program product for enhancing performance of an in-order processor with long stalls | |
US6073231A (en) | Pipelined processor with microcontrol of register translation hardware | |
US5918046A (en) | Method and apparatus for a branch instruction pointer table |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050816 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051017 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060113 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060124 |
|
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: 20060221 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060323 |
|
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: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110331 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110331 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120331 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130331 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140331 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |