JP2005025782A - 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 - Google Patents
特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 Download PDFInfo
- Publication number
- JP2005025782A JP2005025782A JP2004265390A JP2004265390A JP2005025782A JP 2005025782 A JP2005025782 A JP 2005025782A JP 2004265390 A JP2004265390 A JP 2004265390A JP 2004265390 A JP2004265390 A JP 2004265390A JP 2005025782 A JP2005025782 A JP 2005025782A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- checkpoint
- register
- instructions
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 281
- 238000007667 floating Methods 0.000 claims abstract description 98
- 238000012545 processing Methods 0.000 claims abstract description 41
- 238000003860 storage Methods 0.000 claims description 188
- 230000015654 memory Effects 0.000 claims description 91
- 238000013507 mapping Methods 0.000 claims description 77
- 230000004044 response Effects 0.000 claims description 63
- 238000011084 recovery Methods 0.000 claims description 60
- 230000001360 synchronised effect Effects 0.000 claims description 30
- 238000013500 data storage Methods 0.000 claims description 28
- 238000012546 transfer Methods 0.000 claims description 23
- 230000000694 effects Effects 0.000 claims description 22
- 230000015572 biosynthetic process Effects 0.000 claims description 14
- 230000007704 transition Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 230000000670 limiting effect Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 239000000203 mixture Substances 0.000 claims description 2
- 230000002441 reversible effect Effects 0.000 claims description 2
- 230000001186 cumulative effect Effects 0.000 claims 7
- 230000008929 regeneration Effects 0.000 claims 7
- 238000011069 regeneration method Methods 0.000 claims 7
- 230000006870 function Effects 0.000 abstract description 11
- 230000001965 increasing effect Effects 0.000 abstract description 6
- 238000011156 evaluation Methods 0.000 description 46
- 230000008859 change Effects 0.000 description 34
- 239000000872 buffer Substances 0.000 description 32
- 238000010586 diagram Methods 0.000 description 31
- 239000013598 vector Substances 0.000 description 28
- 101000860173 Myxococcus xanthus C-factor Proteins 0.000 description 19
- 238000013461 design Methods 0.000 description 18
- 102100031456 Centriolin Human genes 0.000 description 15
- 101000941711 Homo sapiens Centriolin Proteins 0.000 description 15
- 238000012423 maintenance Methods 0.000 description 14
- 238000001514 detection method Methods 0.000 description 13
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 230000009849 deactivation Effects 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 108090000623 proteins and genes Proteins 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000003111 delayed effect Effects 0.000 description 6
- 238000012913 prioritisation Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000004913 activation 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
- 101100020619 Arabidopsis thaliana LATE gene Proteins 0.000 description 4
- 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
- 238000012163 sequencing technique 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
- 238000007726 management method Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000001960 triggered effect Effects 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
- 230000015556 catabolic process 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
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 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
- 230000000873 masking effect Effects 0.000 description 1
- 239000011159 matrix material 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008439 repair process 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 (64)
- 中央処理ユニット(CPU) についての精確なアーキテクチャ状態を維持しながらチェックポイント実行済み状態を低減させるべくこのCPU 内の命令をチェックポイント実行するための方法において、
− 前記CPU 内で実行されたときにアーキテクチャ状態を修正する可能性のある命令を、その発行及び実行前に予め識別する段階;
− 予め定められた選択基準に基づいて実行する前にアーキテクチャ状態をチェックポイント実行せずに特別な実行モードにて実行するための、前記識別された命令のうちの特定の命令を予め選択する段階;
− 実行に先立ち前記予め選択された特定の命令以外の前記識別された命令についてアーキテクチャ状態をチェックポイント実行する段階;及び
− 前記特殊モードでの前記命令のうちの特定の命令の実行を含め、前記識別された命令を実行する段階、
を含んで成る方法。 - 前記予め定められた基準には、修正可能な状態のタイプ及び実行中に命令によって修正され得る修正可能状態の量、が含まれる、請求項1に記載の方法。
- 前記予め定められた基準には、予め定められた名目命令ストリーム内で命令が発生する頻度がさらに含まれている、請求項2に記載の方法。
- 前記予め定められた基準には、さらに、前記CPU 内の特定のタイプの処理タスクについて前記選択基準を最適化できるように前記予め定められた名目命令ストリームの組成が含まれている請求項3に記載の方法。
- 前記予め定められた基準には、
− 前記予め識別された命令のうちの各々の特定の命令によって修正可能な状態;
− 前記予め識別された命令のうちの各々の特定の命令の修正可能な状態についての記憶必要条件;及び、
− いくつかの予め定められた名目処理タスクについて前記予め識別された命令のうちの各々の特定の命令が発生する推定上の統計的頻度;
が含まれている請求項1に記載の方法。 - 前記予備選択段階には、
− 前記特別な実行モードでの実行のために、予め定められた低い推定上の統計的頻度で発行され比較的多いチェックポイント記憶量を必要とするような予め識別された命令を選ぶ段階;及び
− 正規の処理モードで、予め定められた高い頻度で発行され比較的少ないチェックポイント記憶量を必要とするような予め識別された命令を選ぶ段階;
が含まれている、請求項5に記載の方法。 - 前記特別な実行モードには、前記選択された命令の実行を開始する前に前記CPU を同期化する段階が含まれている請求項6に記載の方法。
- 前記CPU 同期化段階には、
− 実行前に命令ストリーム内でマシンの同期化を必要とする同期化命令として、1つの命令を識別する段階;
− 実行がエラー無く完了し実行結果が状態ライトバックされてしまうように全ての保留中の発行済み命令が完遂され退去されるまで、前記同期化命令の実行を遅延させる段階;
− マシンの同期化を必要とする命令を逐次的かつin-orderで実行する段階;
− 状態ライトバックが行なわれる前に、前記同期化命令の各々の実行から生じる例外条件を識別する段階;
− 前記同期化命令の実行中に生じ得る前記例外条件のいずれかをとり扱う段階;及び
− 実行結果をマシン状態へライトバックする段階;
が含まれており、かくして前記同期化命令をチェックポイント実行することなく精確な状態が維持される、請求項7に記載の方法。 - 1つの命令を同期化命令として識別する前記段階には、その命令を発行前に同期化命令として識別することが含まれており、前記同期化命令の実行を遅延させる前記段階にはさらに、全ての保留中の発行済み命令が完遂され退去されてしまうまで前記同期化命令の発行を遅延させることが含まれている請求項7に記載の方法。
- 前記識別された命令には、予測されたプログラム制御転送命令、プログラムフローを修正できる命令、マシン状態を修正できる命令及び、制御レジスタ値を修正する副作用をもち得る命令、が含まれる請求項7に記載の方法。
- 前記プログラムフローを修正しうる命令にはBPr, FBcc, FBPcc, Bcc, BPcc, CALL, JMPL, TCC, RETURN, DONE, RETRY 、及びそれらの組合せから成るグループの中から選択された SPARC−V9命令セット内で実施された命令が含まれている請求項10に記載の方法。
- 前記マシン状態を修正できる命令には、制御レジスタ内で制御レジスタに書込む命令、及びレジスタウインドウ制御命令が含まれている請求項10に記載の方法。
- 前記マシン状態を修正できる命令には、制御レジスタ内で制御レジスタを読取る命令が含まれている請求項10に記載の方法。
- 前記識別された命令にはさらに、往々にして発行トラップを結果としてもたらす命令が含まれている請求項10に記載の方法。
- 前記識別された命令にはさらに、トラップが投機的にとられた場合に復帰を行なうことができるように、トラップハンドラルーチン内の第1の命令が含まれている請求項10に記載の方法。
- 前記CPU についての精確なアーキテクチャ状態を維持しながらチェックポイント実行済み状態を低減させるべく命令をチェックポイント実行するための方法において、
− 前記CPU 内で実行されたときにアーキテクチャ状態を修正する可能性のある命令を、その発行及び実行前に予め識別する段階;
− 予め定められた選択基準に基づいて実行する前にアーキテクチャ状態をチェックポイント実行せずにマシン同期化モードにて実行するための、前記識別された命令のうちの特定の命令を予め選択する段階;
を含み、前記予め定められた基準には、
− 前記予め識別された命令のうちの各々の特定の命令によって修正可能である状態;
− 前記予め識別された命令のうちの各々の特定の命令の修正可能な状態についての記憶必要条件;
− いくつかの予め識別された名目処理タスクについて前記予め識別された命令のうちの各々の特定の命令が発生する推定上の統計的頻度、
が含まれており、
前記予備選択段階には、
− 前記特別な実行モードでの実行のために、予め定められた低い推定上の統計的頻度で発行され比較的多いチェックポイント記憶量を必要とするような予め識別された命令を選ぶ段階;及び、
− 正規の処理モードで、予め定められた高い頻度で発行され比較的少ないチェックポイント記憶量を必要とするような予め識別された命令を選ぶ段階;
が含まれており、さらには、
− 実行に先立ち前記予め定め選択された特定の命令以外の前記識別された命令についてアーキテクチャ状態をチェックポイント実行する段階;及び
− 前記マシン同期化モードでの前記命令のうちの特定の命令の実行を含め、前記識別された命令を、それらが前記命令ストリーム内に発生するにつれて実行する段階;
を含んで成り、前記マシン同期化モードにはさらに、
− 発行前に命令ストリーム内でマシンの同期化を必要とする同期化命令として、1つの命令を識別する段階;
− 前記同期化命令以外の命令を発行し、保留中の発行済み命令がエラー無しで実行を完了しこの実行からの結果が状態ライトバックされてしまうまで前記同期化命令の実行を遅延させる段階;
− マシン同期化を必要とする各々の命令を逐次的かつin-orderで発行する段階;
− 状態ライトバックが行なわれる前に、前記同期化命令の各々の実行から生じる例外条件を識別する段階;
− 前記同期化命令の実行中に生じ得る前記例外条件のいずれかをとり扱う段階;及び
− 実行結果を状態ライトバックする段階;
が含まれており、かくして前記同期化命令をチェックポイント実行することなく精確な状態が維持される、方法。 - 命令状況をトラッキングし、この命令状況に基づいてチェックポイントを割振り及び割振り解除するための方法において、
− 前記CPU のメモリ内のデータ記憶領域内に1つのデータ構造を設定する段階;
− 前記データ構造内で、複数のチェックポイント状況フィールドを有し単一のチェックポイントに各々対応している複数のチェックポイント割振りレジスタを規定する段階;
− 命令シリアル番号SNをもつ命令のために次の逐次的に利用可能なチェックポイント割振りレジスタnを割振り、前記複数の状況フィールド内で前記命令のためのチェックポイント状況情報を記憶する段階、
− 完遂済みの命令シリアル番号ポインタ(CSN) が、チェックポイントn及び次の記憶されたチェックポイントn+1に付随する命令シリアル番号SNを通過したか否かを決定するため、予め定められた時間的間隔で、完遂済みシリアル番号ポインタ(CSN) を監視する段階;
− CPU のバックアップ信号に応答して、前記CPU に対して、前記チェックポイント割振りレジスタ内に記憶された情報を伝達する段階;及び
− 完遂済み命令シリアル番号ポインタ(CSN) がチェックポイントn及び次のチェックポイントn+1に付随する命令シリアル番号を通過したという決定に応答して、以前に割振られたチェックポイントを割振り解除する段階、
を含んで成る方法。 - CPU が、チェックポイントが形成されたチェックポイントシリアル番号を通過してバックアップしたことを表わすCPU バックアップ信号の受理に応答して、以前に割振られたチェックポイントを割振り解除する段階をさらに含んで成る請求項17に記載の方法。
- 前記データ構造内で、複数のチェックポイント状況フィールドをもち単一のチェックポイントに各々対応する複数のチェックポイント割振りレジスタを構成する前記段階には、
− 各々の前記チェックポイントレジスタで、そのチェックポイントが割振りされたか及びその特定のチェックポイント内に記憶された情報が有効なチェックポイント情報かを指示する第1の有効性状況フィールドを規定する段階;
− 各々の前記チェックポイントレジスタで、完遂済みシリアル番号命令ポインタ(CSN) がレジスタ内に記憶された特定のチェックポイントの命令シリアル番号(SN)を通過したか否かを表示することによってチェックポイントが通過されたか否かを指示する第2のチェックポイント通過済み状況フィールドを規定する段階;
− 各々の前記チェックポイントレジスタで、完遂済み命令シリアル番号ポインタ(CSN) に付随する条件を指示する第3の状況フィールドを規定する段階;
− 各々の前記チェックポイントレジスタで、完遂済み命令シリアル番号ポインタ(CSN) がチェックポイントのシリアル番号よりも大きいか否かを指示し、完遂済みシリアル番号がこのチェックポイントを通過した時点を見極めるために用いられる、第4の比較的大きい状況フィールドを規定する段階;
− 各々の前記チェックポイントレジスタで、チェックポイント実行されたシリアル番号の後の次のシリアル番号(NSN) を指示する第5の次シリアル番号状況フィールドを規定する段階、
を含んで成る請求項17に記載の方法。 - 前記第1の状況フィールドが1ビットのフィールドであり、前記第2の状況フィールドが1ビットのフィールドであり、前記第3の状況フィールドが3ビットのフィールドであり、前記第4の状況フィールドが1ビットのフィールドであり、前記第5の状況フィールドが6ビットのフィールドである、請求項19に記載の方法。
- 命令シリアル番号SNをもつ命令についてチェックポイントiを割振る前記段階には、
− 次の利用可能なチェックポイント番号iを識別し、この番号iに基づいて前記チェックポイント割振りレジスタiの中へ指標づけする段階;
− 前記チェックポイントiが有効であり退去されていないことを表示するべく前記レジスタの前記第1のフィールドに「1」を書込む段階;
− 前記チェックポイントiを通過していないことを表示するため前記第2のフィールド内に「0」を書込む段階;
− 円形の活動中の命令状況リングのまわりからの前記完遂済み命令シリアル番号ポインタ(CSN) の遷移を検出することができるように、前記チェックポイントiが割振られた時点で前記完遂済み命令シリアル番号ポインタ(CSN) の場所を表示するべく前記第3のフィールド内に複数の状態のうちの1つを書込む段階;
− チェックポイントのシリアル番号と完遂済みシリアル番号ポインタ(CSN) を比較し、完遂済みシリアル番号の方が大きい場合、完遂済みシリアル番号がこのチェックポイントを通過したことを表示するため、前記第4の状況フィールド内にインジケータを書込む段階;及び
− 第5の状況フィールド内に、そのチェックポイントが形成された命令シリアル番号に関係する情報を書込む段階、
が含まれている請求項19に記載の方法。 - 前記命令シリアル番号に関係する情報は、そのチェックポイントが形成されたシリアル番号である、請求項19に記載の方法。
- 前記命令シリアル番号に関係する情報は、そのチェックポイントが形成されたシリアル番号に1シリアル番号を増分した番号である請求項20に記載の方法。
- 完遂済み命令シリアル番号ポインタ(CSN) がチェックポイントn及びチェックポイントn+1に付随する命令シリアル番号を通過したという決定に応答して以前に割振られたチェックポイントを割振り解除する前記段階にはさらに、
− チェックポイントレジスタ内に記録されたシリアル番号と完遂済みシリアル番号ポインタの間の差を計算することによって完遂済みシリアル番号通過済み信号を生成する段階;及び
− 前記生成された完遂済みシリアル番号通過済み信号に応答して前記第1の状況フィールドをクリアする段階、
が含まれている請求項21に記載の方法。 - − CPU バックアップ表示信号;
− CPU が、チェックポイントが形成された前記バックアップ表示信号の中で識別されたチェックポイントシリアル番号を通過してバックアップしたか否かを決定する段階;及び
− 前記決定が、バックアップがそのチェックポイントを通過して行なわれたことを識別した場合、このチェックポイントを割振り解除する段階;
をさらに含んで成る請求項17に記載の方法。 - − バックアップチェックポイントでの命令のシリアル番号を識別するCPU バックアップ表示信号を検出する段階;
− チェックポイントが形成された前記バックアップ表示信号内で識別されたチェックポイントシリアル番号を通過してCPU がバックアップしたか否かを決定する段階;及び
− 前記生成された完遂済みシリアル番号通過済み信号に応えて、前記第1の状況フィールドをクリアすることによってバックアップがチェックポイントを通過してであることを前記決定が識別した場合に、前記チェックポイントを割振り解除する段階、
をさらに含んで成り請求項24に記載の方法。 - − 最後に発行された命令シリアル番号を表示する発行済みシリアル番号(ISN)信号を受理する段階;
− 最後に完遂された命令シリアル番号を表示する完遂済み命令シリアル番号(CSN) 信号を受理する段階;
− 完遂済みシリアル番号ポインタ(CSN) とバックアップチェックポイントの間のシリアル番号を有する全ての発行済み命令をキルする段階;
− バックアップチェックポイントに付随する次のシリアル番号を記憶する前記第5の状況フィールドに基づいて前記バックアップ中に、発行済み命令シリアル番号ポインタ(ISN) を更新する段階;
− 未終了の浮動小数点例外又はデータ区切り点例外が検出された場合にバックアップチェックポイントのためにチェックポイントレジスタ内に記憶された次のシリアル番号値に基づいて発行済みシリアル番号ポインタ(ISN) を更新する段階;
をさらに含んで成る請求項24に記載の方法。 - チェックポイントのシリアル番号と完遂済みシリアル番号ポインタ(CSN) を比較する前記段階が、複数の前記チェックポイントレジスタについて同時に行なわれる請求項21に記載の方法。
- 前記チェックポイントは、最後のチェックポイントが形成されてから予め定められた数の事象が発生したこと及び命令タイプ属性とは無関係に付加的なチェックポイントが形成されるべきであることを表示するタイムアウトチェックポイント割振り信号に応答して前記チェックポイントが割振られる請求項17に記載の方法。
- 前記命令の実行に先立って前記CPU を同期化することによってCPU 内に精確な状態を維持するための方法において、
− 実行前に命令ストリーム内でマシンの同期化を必要とする同期化命令として、実行中にマシン状態を修正し得る1つの命令を識別する段階;
− 前記保留中の命令の実行がエラー無く完了し実行結果がCPU 状態ライトバックされてしまうように全ての保留中の発行済み命令が完遂され退去されるまで、前記同期化命令の実行を遅延させる段階;
− マシンの同期化を必要とする命令を逐次的かつin-orderで実行する段階;
− 状態ライトバックが行なわれる前に、前記同期化命令の各々の実行から生じる例外条件を識別する段階;
− 前記同期化命令の実行中に生じ得る前記例外条件のいずれかをとり扱う段階;及び
− 実行結果をマシン状態へライトバックする段階;
を含んで成り、かくして前記同期化命令によって修正可能な状態を予め記憶することなく前記同期化命令について精確な状態が維持されることになる、方法。 - 1つの命令を同期化命令として識別する前記段階には、その命令を発行前に同期化命令として識別することが含まれており、前記同期化命令の実行を遅延させる前記段階にはさらに、全ての保留中の発行済み命令が完遂され退去されてしまうまで前記同期化命令の発行を遅延させることが含まれている請求項30に記載の方法。
- CPU のための最適なチェックポイントサイズを設計する方法において、
− 前記CPU により支持されている命令セット内の各命令により修正可能なマシン状態を決定する段階;
− いくつかの代表的名目処理タスクについて各々の特定の命令が発生する統計的頻度を決定する段階;
− 各命令について状態記憶必要条件を決定する段階;
− チェックポイント情報のための最大記憶量を選ぶ段階;
− 稀にしか発行されず、より頻繁に発生する命令に比べ比較的大きい量のチェックポイント記憶を必要とするような命令を選択するため最適化を行なう段階;
− 前記割振りされた最大チェックポイントスペース内でチェックポイント実行できるような命令のみをチェックポイント実行する段階;
を含んで成る方法。 - 中央処理ユニット(CPU) 内の精確な状態を維持しながらチェックポイント実行されたデータの量を減少させるべく1つの命令をチェックポイント実行するための方法において、
− 前記中央処理ユニット内のデータ記憶装置内に複数のマップレジスタ要素をもつレジスタリネームマップデータ構造を規定する段階;
− 1つの命令の実行に先立ちその命令が参照した各々の論理ソース及び/又は論理宛先レジスタのために前記CPU 内の利用可能な物理レジスタを割振る段階;
− 固有の論理レジスタタグにより、各々の前記論理ソースレジスタを識別する段階;
− 物理レジスタタグにより各々の割振り可能な物理レジスタを識別する段階;
− 前記固有の論理レジスタタグのうちの1つと前記複数のマップレジスタ要素のうちの各々1つを結びつける段階;及び
− 各々のマップレジスタ要素が現在その論理レジスタタグに対してマッピングされている物理レジスタタグを記憶するような形で、この物理レジスタが割振られた固有の論理レジスタタグに付随するマップレジスタ要素の中に各々の前記割振られた物理レジスタで識別された物理レジスタタグを記憶する段階;
を含んで成り、かくして、前記命令の発行の結果として前記レジスタのために変化した全ての状態は記憶され、CPU バックアップが必要とされる場合に回復のため利用可能な状態になる、方法。 - − 前記CPU 内の利用可能な未割振り物理レジスタについて1つずつの物理レジスタを各々記憶している複数のフリーリスト要素をもつフリー物理レジスタフリーリストデータ構造を規定する段階;
− 論理レジスタを参照する命令がディスパッチされそうであるという命令発行ユニットからの表示に応えて、ソース又は宛先レジスタとして論理レジスタを置換するのに使用するため命令発行ユニットに対しフリー物理レジスタタグを伝達する段階;及び
− 前記命令発行ユニットに対する前記フリー物理レジスタタグの伝達時点で、前記フリー物理レジスタフリーリストデータ構造から前記物理レジスタタグを除去する段階
をさらに含んで成る、請求項33に記載の方法。 - − データを記憶するための論理レジスタタグフィールド、旧物理レジスタタグフィールド及び再生要素妥当性フィールドを各々有する複数の再生要素をもつ資源再生ユニットを提供する段階;
− 前記再生要素を固有の発行済み命令シリアル番号と結びつける段階;及び
− 特定の論理レジスタを参照する命令シリアル番号SNの割当てられた命令の復号に応えて:
・前記複数のリネームマップレジスタ要素のうちのどの特定の1つの要素が、該当する場所、以前に復号され発行された命令について前記復号された命令の中で参照された前記特定の論理レジスタと結びつけられたかを決定する段階、
・前記特定の論理レジスタに付随する特定の物理レジスタタグを決定するための前記特定のリネームマップレジスタ要素を読取る段階、
・前記古い物理レジスタタグフィールドの中に前記特定の物理レジスタタグを記憶し、前記命令シリアル番号SNに付随する再生要素の前記論理レジスタタグフィールドの中に前記特定の論理レジスタタグを記録して、旧物理レジスタ番号が以前にマッピングした論理レジスタタグと共に記憶されるようにする段階;
・特定の再生要素が有効なデータセットを含有することを表示するため、前記命令シリアル番号SNに付随する再生要素妥当性フィールド内に1つのインジケータを書込む段階;
・命令シリアル番号SNをもつ前記命令を実行する上で使用するため前記フリーリストから新しいフリー物理レジスタを識別し、前記フリー物理レジスタに対応する新しいフリー物理レジスタタグを中に書込む段階;
・前記命令シリアル番号SNをもつ命令により参照された前記特定の論理レジスタについて新しい物理レジスタを割振る段階;及び
・各々のリネームマップレジスタ要素が、現在特定の論理レジスタにマッピングされている物理レジスタタグを記憶するような形で前記論理レジスタを参照する命令シリアル番号SNに応えて前記新しい物理レジスタが割振られた論理レジスタタグに付随するリネームマップレジスタ要素内に前記新たに割振られた物理レジスタに対応する前記新しい物理レジスタタグを記憶する段階;
をさらに含んで成り、
かくして、前記資源再生ユニットは、必要とあらばより早期の論理−物理マッピングを再構築する元となる逐次履歴レジャーとして役立つことができる、請求項34に記載の方法。 - 前記レジスタリネームマップデータ構造を規定する段階には、前記CPU 内の複数のレジスタタイプの各々について別々のレジスタリネームマップデータ構造を規定する段階が含まれており;前記フリー物理レジスタを規定する段階には、前記CPU 内の複数のレジスタタイプの各々について別々のフリーリストデータ構造を規定する段階が含まれており;前記資源再生ユニットを提供する段階には、前記複数の別々のレジスタリネームデータ構造及び別々のフリーリストデータ構造のうちの任意のものによりマッピングされた論理及び物理レジスタを記憶する単一の資源再生ユニットを提供する段階が含まれている請求項35に記載の方法。
- − バックステップすべき命令の数の表示を含むCPU バックステップ開始信号を受理する段階;
− 最後の発行済み命令シリアル番号を表示する、発行済み命令シリアル番号(ISN) を受理する段階;
− 前記受理された発行済み命令シリアル番号及び各再生要素と固有の発行済み命令シリアル番号の前記結びつきに基づいて特定の再生要素を識別する段階;
− 各々のリネームマップレジスタ要素が前記命令ISN の発行に先立ち特定の論理レジスタにマッピングされた物理レジスタタグを記憶するように、前記発行済み命令シリアル番号(ISN) に付随する前記資源再生要素の中に記憶されたデータに基づいて命令シリアル番号ISN のための前記識別された特定のレジスタリネームマップ要素の中に記憶された論理レジスタから物理レジスタへのマッピングを回復する段階、及び
− 発行済み命令シリアル番号を減分し、前記特定の再生要素の識別段階及び、バックステップされるべき各命令のための識別された要素内に記憶された論理レジスタタグ−物理レジスタマッピングの前記回復段階をくり返す段階、
をさらに含んで成る、請求項35に記載の方法。 - 前記各々の命令シリアル番号において、論理レジスタから論理レジスタへのマッピングを回復する段階には、
− 命令シリアル番号により前記資源再生データ構造へと逆方向に指標付けし、前記命令シリアル番号に付随する前記旧物理レジスタタグフィールド内に記憶された前記物理レジスタタグ及び前記論理レジスタタグフィールド内に記憶された論理レジスタタグを読取る段階、
− 前記論理レジスタタグフィールドから読みとられた前記論理レジスタタグに付随するレジスタリネームマップ要素を識別する段階;
− 中に記憶された物理レジスタタグを決定するべく前記論理レジスタタグに対応するリネームマップ要素を読取る段階;
− 前記物理レジスタフリーリスト内へ前記リネームマップ要素内に記憶された前記決定された物理レジスタタグを書込む段階;
− 前記資源再生ユニットの前記論理レジスタタグフィールドの中に記憶された前記論理レジスタタグに対応するレジスタリネームマップ要素の中へ前記旧物理レジスタタグフィールド内に記憶された前記物理レジスタタグを書込む段階、及び
− 再生要素が有効なデータセットを含まないことを表示するべく前記命令シリアル番号のための前記再生要素妥当性フィールド内へインジケータを書込む段階;
が含まれており、
かくして前記物理レジスタフリーリストユニット要素、前記レジスタリネームマップ要素及び前記レジスタ再生ユニット要素が、前記特定の命令の発行の直前に有していた状態まで回復されることになる請求項37に記載の方法。 - − 資源退去ポインタ(RRP)として記憶された命令シリアル番号を決定する段階;
− 前記資源退去ポインタ(RRP)が特定の記憶された再生要素に付随する命令シリアル番号SN以上となるよう前進させられた時点で命令シリアル番号SNのための特別な論理レジスタに以前に割振られた物理レジスタの割振りを解放する段階、
をさらに含んで成る請求項38に記載の方法。 - 前記物理レジスタの割振りを解放する段階には、
− 前記物理レジスタフリーリストの中へ、前記命令シリアル番号に対応する前記特別なリネームマップ要素の中に記憶された前記物理レジスタタグを書込む段階;及び
− 再生要素が有効なデータセットを含まないことを表示するべく前記命令シリアル番号のための前記再生要素妥当性フィールド内へ1つのインジケータを書込む段階、
が含まれている、請求項39に記載の方法。 - 前記命令の実行に先立ち物理レジスタを割振る前記段階には、実行ユニットに前記命令発行する前に前記物理レジスタを割振る段階が含まれている請求項33に記載の方法。
- 前記複数のレジスタタイプが、整数レジスタタイプ、浮動小数点レジスタタイプ、条件コードレジスタタイプ、Y−レジスタタイプ、トラップスタックレジスタタイプから成るグループの中から選択される請求項36に記載の方法。
- 物理レジスタの数が論理レジスタの数よりも多く、各々の前記論理レジスタを複数の物理レジスタ上へとマッピングすることができる請求項33に記載の方法。
- 命令により参照される各々の論理レジスタは、任意の論理宛先レジスタが物理レジスタへとマッピングされる前に物理レジスタマッピングされる、請求項33に記載の方法。
- 構築されたレジスタ場所を物理レジスタ場所へマッピングすることにより命令が発行された時点で使用されたレジスタについてのレジスタリネームを実施するCPU において、精確な状態を維持しながらチェックポイント実行されたデータの量を減少させるための方法において、
− 前記発行済み命令により使用される論理ソースレジスタを識別する段階;
− 利用可能な物理レジスタ上へと各々の識別された論理ソースレジスタをマッピングし、資源リネームデータ構造内に前記論理−物理マッピングを記憶する段階;
− 前記発行済み命令によって使用される論理宛先レジスタを識別する段階;
− 利用可能な物理レジスタ上に各々の識別された論理宛先レジスタをマッピングし、資源リネームデータ構造内に前記論理−物理マッピングを記憶する段階;
− フリー物理レジスタのリストを記憶するために前記CPU 内に第1のデータ記憶装置を提供する段階;
− 命令シリアル番号SN、命令シリアル番号SNをもつ前記命令により参照された論理レジスタのための論理レジスタタグ及び前記論理レジスタにマッピングされた物理レジスタのための物理レジスタタグを記憶するため、前記CPU 内に第2のデータ記憶装置を提供する段階;
− 命令実行に先立つ命令発行の間、命令実行の前に発行済み命令の影響を受ける前記リネームソース及び/又は宛先レジスタの状態に関するマシン状態データを記憶することによって前記リネームされた論理及び物理レジスタをチェックポイント実行する段階;
を含んで成る方法。 - − CPU バックアップ開始信号条件の受理に応答して、前記リネームマップを、バックアップを結果としてもたらした命令の実行の直前にそれが有していた状態まで回復させることにより、より早期のマシン状態を回復する段階
をさらに含んで成る請求項45に記載の方法。 - 命令を発行するための命令発行ユニット、及び命令を実行するための実行ユニットを有する、in-orderで発行された命令のout-of-order投機的実行を実施する中央処理ユニットの中で、
− 前記CPU 内で実行された時点でアーキテクチャ状態を修正する可能性があり、実行に先立ちプロセッサの状態をセーブするべくチェックポイント実行されるべき第1の命令タイプセットのアイデンティティを予備記憶するための記憶手段;
− 前記CPU 内で実行された時点でアーキテクチャ状態を修正する可能性があり、実行に先立つアーキテクチャ状態をチェックポイント実行することなく特別な実行モードで実行されるべき第2の命令タイプセットのアイデンティティを予備記憶するための記憶手段;
− 前記第1及び第2の記憶された命令タイプと発行された命令タイプを比較し、発行された命令が、正規実行モードでは実行前にチェックポイント実行されるべきであり、特殊なプロセッサモードではチェックポイント実行無しに実行されるべきであることを表示する出力信号を生成するための比較器;
− 実行に先立ち前記第1のタイプの命令についてアーキテクチャ状態をチェックポイント実行するべくチェックポイント形成を開始するため、前記比較器出力信号に応答するチェックポイント手段;及び
− 前記第2のタイプの命令を前記特殊な実行モードで実行することを含めた、前記命令を実行するための命令実行手段、
を含む装置において、前記特殊な実行モードには、前記第2のタイプの命令を実行する前に前記プロセッサを同期化するための手段が含まれている装置。 - 命令を発行するための命令発行ユニット、データを記憶するためのメモリ及び命令を実行するための実行ユニットを有する、in-orderで発行された命令のout-of-order投機的実行を実施する中央処理ユニットの中で、
− 前記CPU のメモリ内のデータ記憶領域内のデータ構造;
− 前記データ構造内で各々対応する単一のチェックポイントに割振られ、複数のチェックポイント状況フィールドを有する複数のチェックポイント割振りレジスタ;
− 命令シリアル番号SNをもつ命令のために次の逐次的に利用可能なチェックポイント割振りレジスタnを割振るための手段;
− 前記複数の状況フィールド内で前記命令のためのチェックポイント状況情報を記憶するための手段;
− 完遂済み命令シリアル番号ポインタ(CSN) がチェックポイントn及び次の記憶されたチェックポイントn+1に付随する命令シリアル番号SNを通過したか否かを決定するため予め定められた時間的間隔で完遂済みシリアル番号ポインタ(CSN) を監視するための手段;
− CPU バックアップ信号に応答して前記チェックポイント割振りレジスタ内に記憶された情報を前記CPU に伝達するための手段;及び
− 完遂済み命令シリアル番号ポインタ(CSN) がチェックポイントn及び次のチェックポイントn+1に付随する命令シリアル番号を通過したという決定に応答して、以前に割振られたチェックポイントを割振り解除するための手段;
を含んで成り、
かくして命令状況がトラッキングされ、命令状況に基づいてチェックポイントが割振りされ割振り解除されることになる、装置。 - 命令発行手段、命令実行手段及びデータを記憶するためのデータ記憶装置を有する中央処理ユニット(CPU) の中で、前記実行手段の中で発生する例外のために例外取扱いを束縛するための方法において、
− タイムアウト条件を規定する特定された事象の発生回数について予め定められた閾値を設定し、この閾値を前記CPU 内の第1のデータ記憶装置の中に記憶する段階、
− 前記CPU 内のカウンタ内で前記特定された事象の発生を計数し、前記発生回数を前記CPU 内の第2のデータ記憶装置内に1つの計数として記憶する段階;
− 前記計数を前記閾値と比較する段階;
− 前記計数が前記タイムアウト条件以上である場合にタイムアウトチェックポイントを形成する段階、
を含んで成る方法。 - − 第1の命令の実行に先立って前記計数を初期値に初期設定する段階;及び
− 前記タイムアウトチェックポイントが形成された後を含め、チェックポイントの形成後に前記計数を前記初期状態にリセットする段階、
をさらに含んで成る、請求項49に記載の方法。 - 前記特定された事象は、前記中央処理ユニットによるあらゆる命令の発行であり、かくして前記タイムアウトチェックポイントの形成は、連続的に形成されたチェックポイント間で発行される命令の数を前記予め定められた命令数に制限するようになっている、請求項50に記載の方法。
- 前記命令が任意の命令属性をもつ、請求項51に記載の方法。
- 前記特定された事象が、予め定められた数のマシンクロックサイクルの実行である、請求項50に記載の方法。
- 前記特定された事象が、チェックポイントを形成することなく通過した命令発行サイクルの数である、請求項51に記載の方法。
- 前記タイムアウトチェックポイントを形成する前記段階は、前記CPU 内の全てのレジスタに関する状態情報を記憶することを含め、前記CPU の完全な状態を特徴づける状態情報を記憶することを含む、請求項51に記載の方法。
- 前記タイムアウトチェックポイントを形成する前記段階には、最後のタイムアウトチェックポイントを含む最後のチェックポイントが前記CPU 内に形成されてから変化したデータの徴候のみを記憶するレジスタリネームマップの状態を特徴づける状態情報を記憶することが含まれている、請求項51に記載の方法。
- 前記徴候には、物理レジスタに対する論理レジスタのマッピングが含まれている、請求項56に記載の方法。
- − 障害発生命令よりも順序的に前のチェックポイント実行された命令のために形成されたチェックポイントから、より早期のプロセッサ状態を回復する段階;
− 前記障害発生命令から前記より早期のチェックポイント実行済み命令へと前記CPU をバックアップし、前記チェックポイント実行済み命令から順方向に命令を再度実行する段階、
を含んで成る、障害発生命令によってひき起こされた実行エラーからの回復段階をさらに含んで成る請求項51に記載の方法。 - − 前記障害発生命令より順序的に後のチェックポイント実行済み命令のために形成されたチェックポイントから、より早期のプロセッサ状態を回復する段階;
− 前記障害発生命令から前記順序的に後のチェックポイント実行済み命令へと前記CPU をバックアップする段階;
− 逆方向の段階的やり方で、順序的に前記より後のチェックポイント実行済み命令と前記障害発生命令の間に存在する各々の命令のためにプロセッサ状態を回復することを含め、前記障害発生命令へと前記CPU をバックステップさせる段階;及び
− 前記障害発生命令から順方向に命令を再度実行する段階;
を含む、障害発生命令によってひき起こされた実行エラーからの回復段階をさらに含んで成る請求項51に記載の方法。 - − タイムアウトチェックポイントが満了した時点で全てのチェックポイントが割振られた場合、命令復号タイプのチェックポイントのための精確な状態を維持するのに必要となり得るようにマシンをマシン停止させるのではなく予め定められた規則に従ってタイムアウトチェックポイントの形成を遅延させる段階、
をさらに含んで成る請求項51に記載の方法。 - 予め定められた規則には、予め定められたサイクル数についてのタイムアウトチェックポイントの形成を遅延させることが含まれている、請求項60に記載の方法。
- 命令を発行するための命令発行ユニットをもつ中央処理ユニット(CPU) の中で例外取扱いを束縛するための方法において、
− 前記CPU 内のデータ記憶装置内で予め定められたタイムアウト閾値計数を設定する段階;
− 前記CPU 内のデータ記憶装置内に初期カウント数を記憶する段階;
− 1つの命令が発行されたCPU クロックサイクル中に、少なくとも1つの命令が発行されたことを表示するべく、このクロックサイクル中に前記命令発行ユニットから命令発行済み信号を送る段階;
− 前記命令発行済み信号に応答して、受理した命令発行済み信号の数を計数するためのタイムアウトカウンタを提供する段階;
− 前記命令発行済み信号を受理する段階;
− 各CPU クロックサイクル中に受理された命令発行済み信号の数を計数し、前記CPU 内のデータ記憶装置内に記憶された累積数にその数を加算する段階;
− タイムアウトチェックポイント作成信号に応答して形成されたチェックポイント及び復号済み命令属性に応答して形成されたチェックポイントを含め、チェックポイントが形成された時点でつねに前記カウント数を初期値にリセットする段階;
− 各々のCPU クロックサイクルの間に、前記累積カウント数が閾値計数以上であるか否かを決定するため前記タイムアウト閾値計数と前記累積カウント数を比較する段階;
− 前記タイムアウトカウンタ内で、前記累積カウント数が前記閾値計数以上である場合に、タイムアウトチェックポイント作成信号を生成する段階;
− 前記タイムアウトチェックポイント信号を前記命令発行ユニットに伝送し、チェックポイントタイムアウト条件が発生しチェックポイントを1つ形成しなければならないということを前記発行ユニットに知らせる段階;
− 前記タイムアウトチェックポイント作成信号に応えてチェックポイントを形成し、前記初期値に前記カウント数をとりセットする段階、
を含んで成り、
かくして前記タイムアウトチェックポイントの形成が、連続的に形成されたチェックポイントの間で発行された命令の数を予め定められた命令数に制限しかくして、例外条件が発生した時点で取消しされ再実行されなくてはならない可能性のある発行済み命令の数を束縛することになる、方法。 - 前記累積カウント数を前記タイムアウト閾値計数と比較する前記段階の後でかつ前記生成段階の前に;さらに
− 同じCPU クロックサイクル内で発行されなくてはならない命令発行ウインドウ内の命令がチェックポイントを必要としているか否かを、命令属性に基づいて決定する段階;
− 前記タイムアウトチェックポイント作成信号の生成を遅延させる段階、
− 前記復号済み命令に応答してチェックポイントを形成する段階;及び
− 命令属性に基づくチェックポイント形成のため、チェックポイント形成に応答して前記初期値チェックポイントに前記累積カウント数をリセットする段階;
を含んで成る請求項62に記載の方法。 - 命令の発行時点で命令発行済み信号を生成する命令発行ユニット、前記命令の実行に先立ちプロセッサ状態を記憶する、チェックポイントの形成時点でチェックポイント形成済み信号を生成するチェックポイント形成ユニットをもつプロセッサの中で、
− 前記命令発行済み信号を受理し、各々の受理した命令発行済み信号に応えて計数を増分するための有効化入力ポート、前記チェックポイント形成済み信号及び累積計数出力信号を受理するためのリセットポートを有するカウンタ回路;
− 予め定められたタイムアウト閾値計数を記憶するためのデータ記憶装置;及び
− 前記記憶されたタイムアウト閾値計数を前記累積計数出力信号と比較するための比較器、
を含んで成り、
前記カウンタ回路は、命令発行済み信号の予め定められた数を計数した後タイムアウトチェックポイント要求信号を出力する、
タイムアウトチェックポイントカウンタ装置。
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/482,075 US5655115A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation |
US08/472,394 US5673408A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for renamable trap-stack |
US08/476,419 US5659721A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for checkpointing instructions to maintain precise state |
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/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 |
US08/473,223 US5644742A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for a time-out checkpoint |
US08/484,795 US5673426A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for tracking floating-point exceptions |
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 |
---|---|---|---|
JP2006006056A Division JP2006107536A (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005025782A true JP2005025782A (ja) | 2005-01-27 |
JP3787141B2 JP3787141B2 (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 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2004265586A Expired - Fee Related JP3754439B2 (ja) | 1995-02-14 | 2004-09-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 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
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 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2004265586A Expired - Fee Related JP3754439B2 (ja) | 1995-02-14 | 2004-09-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004265716A Expired - Fee Related JP3787142B2 (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 |
---|---|---|---|---|
KR20160013351A (ko) * | 2014-07-24 | 2016-02-04 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
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 |
WO2008044423A1 (fr) | 2006-10-13 | 2008-04-17 | Nec Corporation | Processeur d'informations et procédé de couverture de panne |
JP5326314B2 (ja) | 2008-03-21 | 2013-10-30 | 富士通株式会社 | プロセサおよび情報処理装置 |
KR101669989B1 (ko) | 2010-05-27 | 2016-10-28 | 삼성전자주식회사 | 파이프라인 프로세서 및 이퀄 모델 보존 방법 |
KR102010317B1 (ko) * | 2013-03-14 | 2019-08-13 | 삼성전자주식회사 | 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅 |
US9448800B2 (en) * | 2013-03-14 | 2016-09-20 | Samsung Electronics Co., Ltd. | Reorder-buffer-based static checkpointing for rename table rebuilding |
CN106030518B (zh) | 2014-03-27 | 2019-03-26 | 英特尔公司 | 用于整理和退出存储的处理器、方法、系统和装置 |
US9436552B2 (en) | 2014-06-12 | 2016-09-06 | International Business Machines Corporation | Checkpoint triggering in a computer system |
JP2016062513A (ja) * | 2014-09-19 | 2016-04-25 | 株式会社東芝 | プロセッサおよびプロセッサシステム |
US20160357556A1 (en) * | 2014-12-24 | 2016-12-08 | Elmoustapha Ould-Ahmed-Vall | 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 |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | 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 |
US9785442B2 (en) | 2014-12-24 | 2017-10-10 | 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 |
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 |
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 |
EP0945787A3 (en) * | 1991-07-08 | 2008-12-31 | Seiko Epson Corporation | Risc microprocessor architecture implementing fast trap and exception state |
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> | スーパースカラ・プロセッサ・システム内でスカラ命令を追跡する方法およびシステム |
EP0649086B1 (en) * | 1993-10-18 | 2000-07-19 | National Semiconductor Corporation | Microprocessor with speculative execution |
US5471598A (en) * | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
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 EP EP96906404.7A patent/EP0815507B1/en not_active Expired - Lifetime
- 1996-02-13 WO PCT/US1996/001930 patent/WO1996025705A1/en active IP Right Grant
- 1996-02-13 JP JP52508596A patent/JP3670290B2/ja not_active Expired - Fee Related
-
2004
- 2004-09-13 JP JP2004265586A patent/JP3754439B2/ja not_active Expired - Fee Related
- 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
-
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 (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160013351A (ko) * | 2014-07-24 | 2016-02-04 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
KR102330389B1 (ko) | 2014-07-24 | 2021-11-24 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP0815507A4 (en) | 2001-05-16 |
JP4142690B2 (ja) | 2008-09-03 |
WO1996025705A1 (en) | 1996-08-22 |
EP0815507B1 (en) | 2013-06-12 |
JP2004355663A (ja) | 2004-12-16 |
JP3670290B2 (ja) | 2005-07-13 |
JP2005038445A (ja) | 2005-02-10 |
JP2006107537A (ja) | 2006-04-20 |
JP3754439B2 (ja) | 2006-03-15 |
JP3787142B2 (ja) | 2006-06-21 |
JPH11500551A (ja) | 1999-01-12 |
JP2007287176A (ja) | 2007-11-01 |
JP3787141B2 (ja) | 2006-06-21 |
JP2006107536A (ja) | 2006-04-20 |
EP0815507A1 (en) | 1998-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5018728B2 (ja) | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 | |
JP4142690B2 (ja) | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 | |
US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
EP0751458B1 (en) | Method and system for tracking resource allocation within a processor | |
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 | |
US5463745A (en) | Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system | |
JP3637920B2 (ja) | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US5826055A (en) | System and method for retiring instructions in a superscalar microprocessor | |
JP3678444B2 (ja) | パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ | |
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 | |
CN110597556B (zh) | 一种寄存器映射表检查点资源的管理方法、系统及介质 | |
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: 20050809 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051011 |
|
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 |