JP2006107537A - 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 - Google Patents
特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 Download PDFInfo
- Publication number
- JP2006107537A JP2006107537A JP2006006315A JP2006006315A JP2006107537A JP 2006107537 A JP2006107537 A JP 2006107537A JP 2006006315 A JP2006006315 A JP 2006006315A JP 2006006315 A JP2006006315 A JP 2006006315A JP 2006107537 A JP2006107537 A JP 2006107537A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- signal
- data
- issued
- 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 242
- 238000011156 evaluation Methods 0.000 claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000003860 storage Methods 0.000 claims description 229
- 238000007667 floating Methods 0.000 claims description 200
- 230000004044 response Effects 0.000 claims description 65
- 238000011084 recovery Methods 0.000 claims description 57
- 238000012546 transfer Methods 0.000 claims description 34
- 238000013500 data storage Methods 0.000 claims description 25
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 12
- 230000004048 modification Effects 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000009826 distribution Methods 0.000 claims description 3
- 230000000873 masking effect Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000009825 accumulation Methods 0.000 claims 2
- 238000013481 data capture Methods 0.000 claims 2
- 230000001629 suppression Effects 0.000 claims 2
- 230000005055 memory storage Effects 0.000 claims 1
- 230000006870 function Effects 0.000 abstract description 11
- 230000001965 increasing effect Effects 0.000 abstract description 6
- 238000013507 mapping Methods 0.000 description 66
- 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
- 230000001360 synchronised effect Effects 0.000 description 27
- 230000000694 effects Effects 0.000 description 21
- 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
- 238000001514 detection method Methods 0.000 description 13
- 238000012423 maintenance Methods 0.000 description 13
- 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
- 230000007246 mechanism Effects 0.000 description 8
- 108090000623 proteins and genes Proteins 0.000 description 8
- 230000004913 activation Effects 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 6
- 238000012913 prioritisation Methods 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
- 238000013519 translation Methods 0.000 description 5
- 101100020619 Arabidopsis thaliana LATE gene Proteins 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 108090000137 Opioid Receptors Proteins 0.000 description 3
- 238000012937 correction Methods 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
- 230000003213 activating effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001934 delay 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
- 230000005540 biological transmission 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
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 229920002492 poly(sulfone) Polymers 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”の継続である。
本発明は投機的追越し(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から受け取った信号に対応して命令状態のトラッキングを行う。
AVAIL)最大4個のシリアル番号のうちどれがISUによって有効に発行されたかを、前に示したように、どのシリアル番号が割り当てられ、どのシリアル番号が各命令に関連するかを示すISSUE VALID信号の形でICRUに知らせる。発行上の制約によって、ISUが命令ウィンドウのすべての命令を発行する能力が制約を受けることを思い出してほしい。ICRU301は状態情報と状態情報へのアドレスポインタを記憶・維持し、命令の種類にかかわらず、ISU200が有効に発行した各命令の命令発行、実行、完了、非起動、コミット、リタイアフェーズ状態をトラックする。ISU200はまた、発行された命令の内どれがnopおよび一定のプログラム制御命令に関連し、発行と同じ段階で非起動が可能かを、ISSUE NOP信号でICRU301に知らせる。ISSUE NOPは、ポーズや遅延を導入するような、命令ストリームに挿入できる特定の「nop」命令に限定されない。CPU51外のロード/ストアその他命令参照メモリなどの長待ち時間命令を積極的にスケジューリングする際、ISU200は、スロット0−3の命令のどれが長待ち時間かを識別するISSUE MEM信号の形で、ICRU301にも知らせる。(長待ち時間命令の積極的スケジューリングは、基本的な本発明の構造および方法の強化として別に説明する。)
発行/コミット/リクレームユニット(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内の関連する命令の状態の変化に応じてそのポインタを移動させることによって、特に非活性化と命令をコミットすることができ、またリソースをリタイアさせて別の命令によって後で使用するために再生できるようになる。この方法では、リソースは新たに発行された命令が連続的に使用できるようになる。
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 を進め性能を改善するために「非故障」として知られている所定の命令を無視するように規則を設定することができる。
チェックポイントは既知の瞬間におけるマシン状態の「スナップショット」である。チェックポイントは、誤予測分岐または実行例外が生じた場合に理論上の命令順序を元に戻すために前のマシン状態を素速く回復するための方法と構造を提供する。本発明による典型的なプロセッサでは、命令発行サイクルの間にチェックポイントが作られる。本発明の方法では、チェックポイントの回復に基づくマシン状態の回復はマシンの「バックアップ」と定義される。
チェックポイント割り付けレジスタ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タグ現行一致論理の一実施形態について示されている。
CC TAG RENAMED C, CC DV C及びCC DATA。CC RENAMEDは、CCが現行のマシンサイクル内で発行された命令によって修正された場合にアサートされる。CC TAG Cは、リネーム済みCC物理タグを識別するものの、現行のマシンサイクル内で発生するCC修正は除外される。CC TAG RENAMED Cも同様に、リネーム済みCC物理タグを意味するが、現行サイクル中に発生するCC修正は内含される。CC DV C は、CC DATA が、先行サイクルによって修正されたCCデータを有するものの現行サイクル内で行なわれたCC修正を除外する場合に、アサートされる。従って、CC VD C =1である場合、先行サイクルによって行なわれた全てのCC修正はCC DATA 内に反映される。その上、CC DV C =0である場合、CC DATA 値は最新のものではなく、 FSR/CCRFRNは、最新のCCデータを捕捉する前に先行するサイクルによって発行された命令の完了を持っている。 FSR/CCRFRN606 によってウォッチポイントに送られる信号は、表6に記されている。
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により容易にとり扱うことができる。しかし、次に記述するように、浮動小数点例外は特殊な取り扱いを必要とする。
FPOP、未終了 FPOP、シーケンス−エラー、ハードウェア−エラー、及び無効 fp レジスタエラーが含まれている。当業者であればわかるように、 CPU51はこれらのトラップタイプのいくつかを特定、検出及び取扱いすることなく実施でき、その場合、 FPEXCEPリング306 の FTTフィールドは、所要記憶空間が少なくてすむように、FPEXCEP リング306の FTTフィールドをより小さなものにすることができる。その上、 IEE 754 例外が発生したことを FTTフィールドが表示している浮動小数点命令については、CEXCフィールドは、IEEE規準754-1985及びSPARC-V9アーキテクチャマニュアルに従ってまさに発生したIEEE 754 例外の単数又は複数のタイプを識別する。かくして、CEXCフィールドは、1つのオペランドが不適正であるか否かを示すためのビット(nvc) 、オーバーフローが発生したか否かを表わすためのビット(ofc) 、アンダーフローが発生したか否かを表わすためのビット(ufc) 、ゼロ除算が発生したか否かを表わすためのビット(dzc) 、及び不正確な結果が発生したか否かを表わすためのビット(nxc) を含んでいる。しかしながら、浮動小数点トラップタイプのその他のタイプ又は浮動小数点トラップ無しのタイプを結果としてもたらす浮動小数点命令については、CEXCフィールドは、IEEE 754 例外のいずれのタイプも発生しなかったことを表示する。
BRP 0-3 命令のどれが発行されたかを示す前述のISSUE VALID 信号を出力する。同時にこれは、発行された命令のうちのどれが浮動小数点命令であるかを識別するEP ISSUE信号を出力する。これらの信号は、FP書込み (WR) 論理901 及び FTT書込み (WR) 論理902 により受理される。さらに、FPWR論理901 及び FTTWR論理902 は ICRU301から、前述のNISNポインタを受理する。
ウォッチポイント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−トラップ)の結果としてのみ起動される。マシンバックステップはマシンバックアップとの組合せで起こることが多いが、バックアップを起動しなくても起動される。
SN)によってBKST403に於いて開始される。これに応じて、BKST403は、バックトラック305がバックステップモードを開始していることをICRU301及び他のCPU512知らせるバックステップ通知信号(DO BAKSTEP)を発生することによってバックステップ手続きを順次実施する。BKST403は、バックステップを終えた命令番号のカウントを識別し、PLSM307によるタスクを果たすために起動することが可能な周辺制御装置として見ることができる信号を発生する。BKST703はPLSMの要求に応じてタスクを開始し、タスクを果たし終えた時には、タスクの終了をPLSMに指示して、次の要求に待って待機する。
図44はCPU51内に機能的に置かれた典型的な優先ロジック及び状態マシン(PLSM)307を示す。PLMSは幾つかの役割を持っている。第1に、未処理又は並行例外群の最早の例外を識別する役割を果たす。例外条件には、RED Mode、発行トラップ(i−traps)、実行トラップ(e−traps)、割り込み、及び誤予測が含まれる。第2には、マシンサイクル中に到着する例外及び誤予測を、相互間で、また並行処理される例外及び処理待ちのものの間の優先順位を決める役割をは果たす。第3に、形式の異なる例外及び誤予測間の可能な状態遷移を決定する役割を果たす。第4には、Backtracking(Backupそして/又はBackstep)、REDモード処理を起動する制御信号を発する役割を果たす。
INCを、据置トラップが起きたかどうかを示すICRU301に送り、例外を越えて一つだけCSN及びNMCSNを進ませる。また、ECSIGはBacktracKに対して、どの命令SNにバックステップするか(BACKSTEP TO SN)、REDモード例外があるか、そしてREDモード例外の場合にはどの命令にバックアップするか(BACKUP RED)を告げる幾つの信号をバックトラックユニット305に送る。また、ECSIG484は命令強制終了信号をDFB62(KILL ALL)及びISU200(ISSUE KILL)に送り、DFB62に対しては、実行待ち行列中の命令の実行を強制終了するように指示し、ISUに対しては、そのマシンサイクル中に扱われている例外又は誤予測に適当な命令の発行を中止するように指示する。
先に示した如く、トラップは図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 (33)
- 命令を発行するための命令発行手段及び命令を実行するための実行手段とを有する、インオーダで発行された命令のアウトオブオーダによる投機的実行を行う中央処理ユニットにおいて、前記中央処理ユニットの中のアーキテクチャ状態を維持しながら命令をチェックポイント実行を行うするために、
− 前記中央処理ユニットにおける記憶手段内に前記命令の実行前の状態として複数のマップレジスタ要素を有するレジスタリネームマップを記憶するための記憶手段;
− 前記命令の実行に先立ち、前記命令が参照した各々の論理ソースレジスタ及び/又は論理宛先レジスタのために、前記中央処理ユニット内の利用可能な物理レジスタを割振るための手段;
− 固有の論理レジスタタグにより、各々の前記論理ソースレジスタを識別するための手段;
− 物理レジスタタグにより各々の割振り可能な物理レジスタを識別するための手段;
− 前記固有の論理レジスタタグのいずれか1つと前記複数のマップレジスタ要素のうちの各々1つを結びつけるための手段;
− 各々のマップレジスタ要素が現在その論理レジスタに対しマッピングされている物理レジスタを対応させるために、前記物理レジスタが割振られた固有の論理レジスタタグに付随するマップレジスタ要素の中に各々の前記割振られた物理レジスタに対応する物理レジスタタグを記憶するための手段;を有し、
− 前記命令の実行後、中央処理ユニットバックアップが必要とされる場合には前記レジスタリネームマップを使用して前記アーキテクチャ状態の回復を行う中央処理ユニット。 - 命令を発行するための命令発行ユニット、発行された命令を実行するための実行ユニット及び前記実行ユニットからその他のコンポーネントまで実行結果を伝達するための複数のデータ順方向送りバスを有する中央処理ユニットにおける前記実行結果生成ユニットから予め定められた命令が待っている実行結果を同時に捕捉するための方法において、
− 前記結果データを捕捉することのできる各々の実行結果ソースから、バリッド制御信号を受信するステップ:
− 各々の前記実行結果ソースユニットから結果データタイプ信号を受信するステップ;
− 前記実行結果ソースユニットのうちのどれから前記結果データが受信されることになるかを表示するセレクトソース信号及び前記結果データが予測されている現在実行中のクロックサイクルとの関係における時刻の表示を受信するステップ;
− 選択された実行結果ソースユニットを規定するべく予め定められた規則に従って前記制御バリッド信号、前記結果データタイプ信号及び前記セレクトソース信号の受信に応答してデータ捕捉バリッド信号を生成するステップ;
− 前記実行結果ソースユニットから実行結果データ信号を監視するステップ;
− 前記到達した実行結果データ及び前記データ捕捉バリッド信号に応答して前記選択された実行結果ソースユニットから実行結果データを捕捉するステップ;及び
− 前記中央処理ユニット内のデータ記憶装置内での評価のため前記捕捉された実行結果データを記憶するステップ、
を含む方法。 - 少なくとも1つのデータ捕捉バリッド信号の生成に応答して前記捕捉された実行結果データの評価を開始するステップ、
をさらに含むことを特徴とする請求項2に記載の方法。 - − 抑止制御信号を受信するステップ;及び
− 前記抑止選択信号が受信された場合に前記データ捕捉バリッド信号を生成する前記ステップを抑止するステップ;
をさらに含むことを特徴とする請求項2に記載の方法。 - 前記抑止制御信号には、現在実行中のマシンサイクルにて発行された命令によって条件コードが修正されたこと、又現行サイクル中に前記データ順方向送りバス上に現われうる条件コードが現在実行中のサイクル中有効でない可能性があるということを表わす前記条件コードリネームユニットからの条件コードリネーム済み信号が含まれていることを特徴とする請求項4に記載の方法。
- 前記実行結果データには条件コードデータが含まれていることを特徴とする請求項2に記載の方法。
- 前記実行結果データには、リネームされた条件コードデータが含まれていることを特徴とする請求項2に記載の方法。
- 前記実行結果データには、浮動小数点実行ユニット、整数実行ユニット及びアドレス生成ユニットから受信された条件コードデータ及び条件コードリネームユニットから受信されたリネームされた条件コードデータが含まれており、これらの条件コードデータ及び前記リネームされた条件コードデータが同じマシンサイクル中に受信されていることを特徴とする請求項2に記載の方法。
- 前記実行結果データには条件コードデータが含まれ、前記予め定められた命令には、予測された分岐命令を含む予測された制御フロー転送命令が含まれていることを特徴とする請求項2に記載の方法。
- 前記実行結果データには、計算されたジャンプ・アンド・リンクアドレスが含まれており、前記予め定められた命令には、ジャンプ・アンド・リンク命令が含まれていることを特徴とする請求項2に記載の方法。
- 前記実行結果データには条件コードデータ及び計算上のジャンプ・アンド・リンクアドレスが含まれており、前記予め定められた命令には予測された分岐命令及びジャンプ・アンド・リンク命令が含まれていることを特徴とする請求項2に記載の方法。
- 前記実行結果ソースユニットが命令実行ユニットを含むことを特徴とする請求項2に記載の方法。
- 前記実行結果ソースユニットにはさらにレジスタリネームユニットが含まれることを特徴とする請求項2に記載の方法。
- 前記レジスタリネームユニットには条件コードレジスタリネームユニットが含まれ、前記実行計算データにはリネーム条件コードデータが含まれていることを特徴とする請求項13に記載の方法。
- 前記実行結果ソースユニットには整数実行ユニット、浮動小数点実行ユニット、アドレス生成ユニット及び条件コードレジスタリネームユニットが含まれていることを特徴とする請求項2に記載の方法。
- 前記結果データが条件コードデータ及びアドレスデータを含むことを特徴とする請求項2に記載の方法。
- 前記条件コードタイプの信号には、その命令が発行された時点で生成された前記条件コードリネームユニットからの条件コードタイプの信号、及び命令発行中により早期に生成されその後ウォッチポイント記憶要素の中に記憶された条件コードタイプの信号が含まれていることを特徴とする請求項2に記載の方法。
- 分岐命令に係る条件コード信号及びその組合せから成るグループの中から前記条件コードタイプ信号が選択されることを特徴とする請求項17に記載の方法。
- 前記条件コードタイプ信号がウォッチポイントに係る条件コード信号及びその組合せから成るグループの中から選択されることを特徴とする請求項17に記載の方法。
- − 前記バリッド制御信号が分岐予測制御に係る信号又はウォッチポイント制御にかかる信号から成るグループの中から選択され;
− 前記データタイプ信号が、分岐命令に係る条件コード信号及びウォッチポイントに係る条件コード信号から成るグループの中から選択され;
− 前記ソース選択信号は、実行ユニットにおける条件コードの一致信号から成るグループの中から選択され;
− 前記捕捉された実行結果データは、実行ユニットの条件コードデータ信号から成るグループの中から選択され、
− 評価のための前記捕捉された実行結果データが評価条件コード信号を含んでいることを特徴とする請求項2に記載の方法。 - 前記データ記憶ユニットがラッチにより構成されることを特徴とする請求項2に記載の方法。
- 前記複数の実行結果ソースユニットには、整数実行ユニット、アドレス生成ユニット、浮動小数点実行ユニット及び条件コードリネームユニットが含まれることを特徴とする請求項2に記載の方法。
- 前記バリッド制御信号には分岐予測制御に係る信号が含まれ;前記バリッド制御信号にはウォッチポイント制御に係る信号が含まれ;前記実行結果データタイプ信号には条件コードタイプ信号が含まれることを特徴とする請求項2に記載の方法。
- − 現在実行中のマシンサイクル内で発生する条件コードタグの修正を除外するものの、リネームされた条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタタグ信号を受信するステップ;
− 前記データ順方向送りバスから直接複数の条件コードタグ信号を受信するステップ;
− 前記受信したリネーム済み条件コードタグ信号を前記実行ユニットから到着した前記複数の条件コードタグ信号のうちの全てのものと同時に比較し、前記到着したデータ順方向送りバス条件コードタグ信号の各々に対応する比較信号を生成するステップ;
− 現在実行中のマシンサイクル中に前記データ順方向送りバス上で有効なデータを送る各々の実行ユニットからデータ有効信号を受信するステップ;
− 各々の前記比較信号を、現在実行中のマシンサイクル中に前記データ順方向送りバスの上で有効データを送る各々の実行ユニットから到着した異なるデータ有効制御信号の論理積を同時にとるステップ;
− 各々の比較信号及び各々の前記データ有効信号が表明された時点で条件コードに係る一致信号を生成するステップ;
をさらに含み、
− 前記条件コードに係る一致信号は、前記ウォッチポイント番号のいずれであるかを識別しかくして現在実行中のマシンサイクル内で前記データ順方向送りバスから捕捉され得る付随する命令番号及び条件コードタグを識別し、
− かくして、前記現行一致論理は、未解決の投機的に発行された複数の命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測の評価のために利用できるようにすることのできる条件コードを識別することを特徴とする請求項2に記載の方法。 - − 前記中央処理ユニット内にデータを記憶するため複数の条件コードタグレジスタをもつ条件コードタグアレイデータ記憶装置を提供するステップ;
− 現在実行中のマシンサイクル内で発生する条件コードの修正を含めてリネームされた条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタタグ信号を受信するステップ;
− ウォッチポイント番号及びそのマシンサイクル中に発行された各々の投機的発行済み命令に割振られた対応する条件コードタグレジスタ要素を識別する信号ウォッチポイント番号信号成分を含む予測実施信号を受信するステップ;
− そのとき現在実行中のマシンサイクル内で発行された命令によって1つの条件コードが修正された時点で条件コードリネーム済み信号を受信し、この条件コードリネーム済み信号を、前記予測実施信号によって識別された条件コードタグレジスタ要素内への前記リネーム済み条件コード物理レジスタタグ信号の書込みのための書込みバリッド信号として用いるステップ;
− 論理積をとることによって、前記条件コードリネーム済み信号と前記予測実施信号を組合せ、前記条件コードリネーム済み信号と前記予測実施信号の両方が表明された時点でのみ前記タグアレイに対する前記受信されたリネーム済み条件コード物理レジスタタグの書込み及びこの書込みのこのアレイを伴う場所を制御するべく書込み制御バリッド信号を生成するステップ;
− アレイ中の特定の要素が前記予測実施信号の一成分として含まれているウォッチポイント番号により識別されインデックスされている、前記書込みバリッド信号の制御下で前記タグアレイ内の前記複数の条件コードタグレジスタ要素の1つの中に前記投機的発行済み命令に付随する前記受信されたリネーム済み条件コード物理レジスタタグ信号を記憶するステップ;
− 前記リネーム済み条件コード物理レジスタタグが前記データ順方向送りバス上で到着する条件コードタグ信号と一致する必要がなくなってしまうまで、前記条件コードタグレジスタ内に前記記憶された各々のリネーム済み条件コード物理レジスタタグ信号を保持するステップ;
− 同じマシンサイクル中に前記データ順方向送りバスからの複数の条件コードタグ信号を同時に受信するステップ;
− 複数のアレイ比較信号を生成するべく前記記憶されたリネーム済み条件コード物理レジスタタグ信号の全てのものと前記受信されたデータ順方向送りバス条件コード信号の各々を同時に比較するステップ;及び
− 前記データ有効信号と前記アレイ比較信号の論理積をとり、前記比較信号と前記データ有効信号が両方共表明された時点で条件コードアレイ一致信号を生成するステップ;
をさらに含み、
− 前記条件コードアレイ一致信号は、前記ウォッチポイント番号のいずれであるかを識別しかくして現在実行中のサイクル内で前記データ順方向送りバスから捕捉され得る付随する命令番号及び条件コードタグを識別し、
− かくして、前記アレイ晩期一致論理は、未解決の投機的に発行された複数の命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測の評価のために利用できるようにすることのできる条件コードを識別することを特徴とする請求項24に記載の方法。 - − 現在実行中の発行ウインドウ信号内の現在リネームされた条件コードタグを各々のタグ順方向送りバスタグに比較し、先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比較することにより、現在実行中の発行ウインドウサイクル内の現在リネームされている条件コードと先行サイクル中の条件コードタグの間でデータ順方向送りバスタグ比較を分離するステップを含み、前記比較時間を低減するべく前記条件コードデータと前記データ順方向送りバスタグとの比較をさらに含み、
− 前記先行するサイクル内の前記条件コードタグ及び現在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記比較は、それが単一の非分割作業にて行なわれた場合に比べさらに迅速に行なわれることを特徴とする請求項25に記載の方法。 - 中央処理ユニットの中で、投機的に発行された予測された分岐命令及びジャンプ・アンド・リンク命令を含む予め定められた投機的発行済み命令のための複数の誤予測信号を同時に生成するための方法において、
− 前記投機的発行済み命令を監視するためにウォッチポイントが形成されつつあることを表示するウォッチポイント活動中信号を受信するステップ;
− 前記投機的発行済み命令の各々について前記中央処理ユニット内に規定されたデータ記憶構造の中でウォッチポイント番号及び付随するウォッチポイントレジスタを割振りするステップ;
− ウォッチポイントがジャンプ・アンド・リンク命令について形成されつつあることを表示するウォッチポイントジャンプ・アンド・リンクバリッド信号を受信するステップ;
− 前記1つの投機的発行済み命令に関係するウォッチポイントデータを受信し、前記割振られたウォッチポイントレジスタ内に前記ウォッチポイントデータを記憶するステップ;
− 各々の発行済み分岐命令について、分岐命令のための複数の誤予測信号を同時に生成するステップであって、
・条件コード選択論理回路から評価条件コード信号を受信するステップ;
・ウォッチポイント記憶要素からウォッチポイント条件信号を受信するステップ;
・ウォッチポイント記憶要素から条件コードタイプ制御信号を受信するステップ;
・各実行結果ソースユニットからバリッド制御信号を受信するステップ;
・分岐のための条件が正しく予測されているか否かを評価するため各々の前記実行結果ソースユニットのための前記バリッド制御信号の表明された状態を含め予め定められた状態コード評価規則に従って前記ウォッチポイント条件信号と前記評価条件コード信号を比較するステップ;
・前記分岐命令が正しく予測された場合には、分岐真信号をアサートするステップ;
を含むステップ;及び
・前記分岐真信号が表明されたという決定に応答して評価真信号を生成するステップ;そして
− 各々の前記発行済みジャンプ・アンド・リンク命令について、複数のジャンプ・アンド・リンク誤予測信号を同時に生成するステップであって、
・プログラムカウンタデータを記憶するための複数の記憶位置をもつ標的アドレスデータ構造を規定するステップ;
・前記ジャンプ・アンド・リンク命令が発行された時点で前記標的アドレスデータ構造記憶位置のうちの1つに代替的なプログラムカウンタを書込み、この記憶された代替的な次のプログラムカウンタを前記命令と結びつけるステップ;
・実行結果ソースユニット内での前記ジャンプ・アンド・リンクの実行中に計算上の次のプログラムカウンタ値を計算するステップ;
・前記ジャンプ・アンド・リンク命令の実行の完了時点でジャンプ・アンド・リンク命令実行完了信号を生成するステップ;
・前記実行結果ソースユニットから前記計算上の次のプログラムカウンタを受信するステップ;
・前記記憶位置から前記ジャンプ・アンド・リンク命令に付随する前記記憶された代替的な次のカウンタを読取るステップ;
・前記代替的なプログラムカウンタ値を前記計算上のプログラムカウンタ値と比較するステップ;
・前記代替的なプログラムカウンタ値が前記計算上のプログラムカウンタ値と一致する場合、ジャンプ・アンド・リンク一致信号を生成するステップ;及び
・前記ジャンプ・アンド・リンク一致信号と前記ウォッチポイントジャンプ・アンド・リンクバリッド信号の両方の表明に応えてジャンプ・アンド・リンク真信号を生成するステップ、
・前記ジャンプ・アンド・リンク一致信号が表明されたという決定に応答して評価真信号を生成するステップ;
・前記ウォッチポイント活動中信号、前記命令ウォッチポイント番号信号、前記ウォッチポイント活動中信号及び前記ジャンプ・アンド・リンク命令実行完了信号の表明に応答して、ジャンプ・アンド・リンク命令評価有効化信号を生成するステップ;
を含むステップ
− 投機的発行済み分岐命令のための前記結果データの捕捉の結果としての少なくとも1つのデータ捕捉バリッド化信号の受信又は前記ジャンプ・アンド・リンク命令評価バリッド信号の受信に応答して、評価準備完了信号を生成するステップ;及び
− 前記評価準備完了信号及び前記評価真信号の両方の受信に応答して命令誤予測信号を生成するステップ、
を含み、かつ、
− 各々の実行結果ソースユニットからバリッド制御信号を受信するステップ;
− 各々の実行結果ソースユニットから結果データタイプ信号を受信するステップ;
− 前記結果データが前記実行結果ソースユニットのいずれから受信されることになるかを表示するセレクトソース信号及び、前記結果データが予測される現在実行中のクロックサイクルとの関係における時刻の表示を受信するステップ;
− 予め定められた規則に従って前記バリッド制御信号、前記結果データタイプ信号及び前記セレクトソース信号の受信に応答してソース選択信号を生成するステップ;
− 前記実行結果ソースユニットから実行結果データ信号を監視するステップ;
− 前記到着する実行結果データ及び前記ソース選択信号に応えて前記選択されたソースから実行結果データを捕捉するステップ;及び
− 前記プロセッサ内のデータ記憶装置内に評価のため前記捕捉された実行結果データを記憶するステップ;
をさらに含み、
かくして予め定められた命令が待っている結果データは、複数の実行結果ソースユニットから同時に捕捉されることを特徴とする方法。 - 命令発行ユニット、命令実行ユニット、及びデータを記憶するためのメモリ記憶ユニットを有する中央処理ユニットの中で、このユニット内の単一の共用記憶ユニット内の共通のデータ構造の中に代替的分岐アドレス及び予測されたジャンプ・アンド・リンクアドレスを並行して記憶するための方法において、
− 発行された各々の制御転送命令についてそれが発行された時点で発行ユニットからの制御転送命令発行済み信号を生成するステップであって、前記制御転送命令発行済み信号には、分岐命令又はジャンプ・アンド・リンク命令として制御転送命令を識別するべくウォッチポイントタイプの信号が含まれているステップ;
− 予測された分岐及びジャンプ・アンド・リンク命令の命令復号中に代替的なプログラムカウンタを決定するステップ;
− 代替的分岐アドレスを記憶するための前記記憶ユニット内のレジスタ位置を識別するウォッチポイント書込みバリッド制御信号及びウォッチポイント書込みアドレス信号を生成するステップであって、このウォッチポイント書込みバリッド制御信号が、チェックポイント又はウォッチポイントを作る時に表明される、ステップ;
− 前記ウォッチポイント書込みアドレスにより表示されたレジスタ位置で前記記憶ユニット内に前記ウォッチポイント代替的次プログラムカウンタを書込むステップ;
を含み、ここで
− 前記ウォッチポイント代替次プログラムカウンタには、前記制御転送命令がジャンプ・アンド・リンク命令である場合予測された標的フェッチプログラムカウンタが含まれ、前記ウォッチポイント代替次プログラムカウンタには、前記制御転送命令が予測された分岐命令である場合に代替的分岐方向のためのフェッチプログラムカウンタが含まれ、さらに、
− 前記ウォッチポイント命令タイプ信号に基づいて別々のアドレス可能な記憶位置の中に前記ジャンプ・アンド・リンク命令又は前記分岐命令の各々のための前記代替次プログラムカウンタを記憶するステップ、
を含み、かつ、
− 各々の実行結果ソースユニットからバリッド制御信号を受信するステップ;
− 各々の実行結果ソースユニットから結果データタイプ信号を受信するステップ;
− 前記実行結果ソースユニットのいずれから前記結果データが受信されることになるかを表示するセレクトソース信号及び前記結果データが予想される現在実行中のクロックサイクルとの関係における時刻の表示を受信するステップ;
− 予め定められた規則に従って前記バリッド制御信号、前記結果データタイプ信号及び前記セレクトソース信号の受信に応答してソース選択信号を生成するステップ;
− 前記実行結果ソースユニットから実行結果データ信号を監視するステップ;
− 前記到着する実行結果データ及び前記ソース選択信号に応えて前選択されたソースから実行結果データを捕捉するステップ;及び
− 前記プロセッサ内のデータ記憶装置内に評価のため前記捕捉された実行結果データを記憶するステップ;
をさらに含み、
予め定められた命令が待っている結果データは、複数の実行結果ソースユニットから同時に捕捉されることを特徴とする方法。 - 中央処理ユニット内で複数の実行結果生成ユニットから予め定められた命令が待っている結果データを同時に捕捉するための装置において、
− 各々の結果データソースからバリッド制御信号を受信するための手段;
− 各々の結果データソースから結果データタイプ信号を受信するための手段;
− 前記実行結果生成ユニットのうちのいずれから前記結果データが受信されることになるかを表示するセレクトソース信号及び前記結果データが予想されている現在実行中のクロックサイクルとの関係における時刻の表示を受信するための手段;
− 予め定められた規則に従って前記バリッド制御信号、前記結果データタイプ信号及び前記セレクトソース信号に応えてソース選択信号を生成するための手段;
− 前記実行結果生成ユニットから実行結果データ信号を監視するための手段;
− 前記到着した実行結果データ及び前記ソース選択信号に応えて前記選択されたソースから実行結果データを捕捉するための手段;及び
− 前記プロセッサ内のデータ記憶装置内での評価のため前記捕捉された実行結果データを記憶するための手段、
を含むことを特徴とする装置。 - 前記捕捉用手段には、
− 各々バリッド制御信号入力ポート、結果データタイプ信号入力ポート、及びセレクトソース信号入力ポートを内含する第1の複数の論理AND ゲート;
− 同じ結果データタイプ依存性をもつ前記複数のAND ゲートからの選択された出力と組合せるため、前記第1の複数の論理AND ゲートのうちの選択されたものに結合された第2の複数の論理ORゲート;
− 前記第1の複数の論理AND ゲート及び前記論理ORゲートのうちの選択されたゲートに結合された結果データソース入力ポートとセレクト条件コードタイプ入力ポートを各々有する第3の複数の論理AND ゲート;
− 各々前記第3の複数の論理ORゲートの出力を受信するための複数の入力ポートを有する多入力論理ORゲート;
− 条件コードデータを含む捕捉された実行結果データを含む前記多入力ORゲートの出力信号をラッチングするためのラッチ回路、
が含まれることを特徴とする請求項29に記載の装置。 - 中央処理ユニット内で複数の命令の実行結果を同時に監視するための装置において、
− 命令を発行するための発行ユニット;
− 命令を実行するための実行ユニット;
− 前記中央処理ユニット内で前記実行ユニットからその他のユニットまで実行結果を伝達するデータ順方向分配バス;
− プロセッサ内で前記データ順方向分配の上で前記実行ユニットからの実行結果信号を受信するべく結合されたウォッチポイントデータを記憶するため複数のウォッチポイントレジスタを有するウォッチポイントユニット;
− 前記命令が発行された時点で各々の投機的発行済みの予測された命令についてウォッチポイントデータを記憶するためのウォッチポイントレジスタを割振るための手段;
− 前記ウォッチポイントユニット内で前記データ順方向送りバス上で伝達された実行結果信号を監視するための手段;
− 前記実行結果信号及び予め定められた規則に基づいて予め定められた事象の発生を検出するための手段;
− 予測された投機的発行済み命令について予め定められた事象が検出された時点でその他の中央処理ユニットにそれを知らせるための手段;
− 特定の命令について前記ウォッチポイントレジスタ内に記憶された前記ウォッチポイントデータとこの特定の命令に関する前記データ順方向送りバスの上で到着した前記結果信号と比較して、この特定の命令が投機的に発行された条件が正しく予測されたか否かを評価するための手段;
− 前記予測が適正でなかったことを前記評価が表示した場合に、前記ウォッチポイント要素を割振り解除し実行を続行するための割振り解除手段;
− 前記予測が誤っていたということを前記評価が表示した場合に誤予測を補正するべく既知の条件に対応する命令を再フェッチし発行できるように、前記発行ユニットに対し新しいアドレスを供給するための手段;
− 前記誤予測を取消すことができるように、前記中央処理ユニットをより早期の状態までバックアップするための手段;
− 前記再フェッチされた命令に基づいて適正な命令ストリーム内の命令について実行を開始するための手段;及び
− 前記実行が完了した時点で前記ウォッチポイント要素を割振り解除するための手段;
− 各々の結果データソースからバリッド制御信号を受信するための手段;
− 各々の結果データソースから結果データタイプ信号を受信するための手段;
− 前記実行結果生成ユニットのうちのいずれから前記結果データが受信されることになるかを表示するセレクトソース信号及び前記結果データが予想されている現在実行中のクロックサイクルとの関係における時刻の表示を受信するための手段;
− 予め定められた規則に従って前記バリッド制御信号、前記結果データタイプ信号及び前記セレクトソース信号に応えてソース選択信号を生成するための手段;
− 前記実行結果生成ユニットから実行結果データ信号を監視するための手段;
− 前記到着した実行結果データ及び前記ソース選択信号に応えて前記選択されたソースから実行結果データを捕捉するための手段;及び
− 前記プロセッサ内のデータ記憶装置内での評価のため前記捕捉された実行結果データを記憶するための手段、
− 分岐命令を監視するためにウォッチポイントが形成されつつあることを表示する第1の状態又はジャンプ・アンド・リンク命令のためのウォッチポイントが形成されつつあることを表示する第2の状態を有するウォッチポイントジャンプ・アンド・リンクバリッド信号を受信するための手段;
− ・条件コードセレクト論理回路からの評価条件コード信号を受信するための手段;
・ウォッチポイント記憶要素からのウォッチポイント条件信号を受信するための手段;
・ウォッチポイント記憶要素からの条件コードタイプ制御信号を受信するための手段;
・各々の実行結果生成ユニットからのバリッド信号を受信するための手段;
・分岐のための条件が正しく予測されたか否かを評価するため各々の前記実行結果生成ユニットについて前記バリッド制御信号の表明された状態を含む予め定められた条件コード評価規則に従って前記ウォッチポイント条件信号と前記評価条件コード信号を比較するための手段;
・前記分岐が正しく予測されていた場合、分岐真信号を生成するための手段;
を含む、複数の発行済み分岐命令について誤予測信号を同時に生成するための手段;及び
− ・プログラムカウンタデータを記憶するための複数の記憶位置を有する標的データ構造を規定するための手段;
・ジャンプ・アンド・リンク命令が発行された時点で前記記憶位置のうちの1つに代替次プログラムカウンタを書込み、前記記憶された代替次プログラムカウンタを前記命令と結びつけるための手段;
・実行結果生成ユニット内で計算上の次プログラムカウンタ値を計算するための手段;
・前記実行結果生成ユニットから前記計算上の次プログラムカウンタを受信するための手段;
・前記記憶位置からの前記命令に付随する前記記憶された代替次プログラムカウンタを読取るための手段;
・予め定められたプログラムカウンタ比較規則に従って前記計算上の次プログラムカウンタと前記代替次プログラムカウンタを比較するための手段;
・前記比較が真として評価した場合、ジャンプ・アンド・リンク一致信号を生成するための手段;及び
・前記ジャンプ・アンド・リンク一致信号と前記ウォッチポイントジャンプ・アンド・リンク信号の両方の真の状態に応えて、ジャンプ・アンド・リンク真信号を生成するための手段、
を含む、複数の発行済みジャンプ・アンド・リンク命令の各々についてジャンプ・アンド・リンク誤予測信号を同時に生成するための手段;
− 前記ジャンプ・アンド・リンク一致信号が表明されるか又は前記分岐真信号が表明されるかのいずれかに応えて、評価真信号を生成するための手段;
− 少なくとも1つのソース選択信号の受信又は評価バリッド信号の受信に応えて評価準備完了信号を生成するための手段であって、この評価バリッド信号はウォッチポイント活動中信号、ウォッチポイントジャンプ・アンド・リンクバリッド信号、ジャンプ・アンド・リンク命令実行完了信号及びジャンプ・アンド・リンク命令チェックポイント番号信号の表明に応じて生成されるような手段;及び
− 前記評価準備完了信号及び前記評価真信号の受信に応えて命令誤予測信号を生成するための手段;
− 各々の発行された制御転送命令についてそれが発行された時点で発行ユニットから制御転送命令発行済み信号を生成するための手段;
− 分岐命令又はジャンプ・アンド・リンク命令として命令を識別するべく前記制御転送命令発行済み信号内でウォッチポイントジャンプ・アンド・リンク信号を提供するための手段;
− プログラム制御論理ユニットにより計算された標的フェッチプログラムカウンタを特定する代替次プログラムカウンタを計算するための手段;
− 前記データ構造内の記憶位置の中に代替分岐アドレスを記憶するためチェックポイント書込みバリッド制御信号及びチェックポイントアドレスを生成するための手段であって、この書込みバリッド制御信号がチェックポイントを作成するときに表明されるような手段;
− チェックポイント書込みアドレスにおいて記憶ユニット内にウォッチポイント代替次プログラムカウンタを書込むための手段;
− 予測された分岐及びジャンプ・アンド・リンク命令の命令復号の間に代替次プログラムカウンタを決定するための手段であって、ジャンプ・アンド・リンク命令のためにウォッチポイントユニットに対して送られた前記ウォッチポイント代替次プログラムカウンタには、予測された標的フェッチプログラムカウンタが含まれ、予測された分岐命令のためにウォッチポイントユニットに対し送られた前記ウォッチポイント代替次プログラムカウンタには、代替分岐方向のためのフェッチプログラムカウンタが含まれているような手段;
− 発行された命令が分岐命令であるかジャンプ・アンド・リンク命令であるかを決定することを含め、フィールド選択及び書込み論理ユニット内で前記制御転送命令発行済み信号を復号して前記信号内の選択された情報フィールドの内容を決定するための手段であって、前記ジャンプ・アンド・リンク命令に係るフィールド内の第1の予め定められた状態は、命令がジャンプ−リンク命令であることを表示し、前記ジャンプ・アンド・リンク命令に係るフィールド内の第2の状態は前記命令が分岐命令であることを表示しているような手段;及び
− 前記制御転送命令発行済み信号内に存在する前記徴候に基づき別々のアドレス可能な記憶位置内に各々の分岐命令又はジャンプ・アンド・リンク命令について1つの情報項目を記憶するための手段であって、前記命令が分岐命令である場合、前記分岐命令のための前記情報項目が代替次プログラムカウンタを含み、前記命令がジャンプ・アンド・リンク命令である場合、ジャンプ・アンド・リンク命令のための前記情報項目が予測された標的アドレスを含んでいるような手段;
− 前記命令の実行に先立ち各々の投機的に発行された予測された命令について、この予測された命令のための代替的実行経路を指定する代替的経路プログラム命令アドレス及び、前記中央処理ユニット内のメモリユニット内に規定された標的アドレス構造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、同時に記憶するための手段;
− 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路及び予測情報が記憶されている前記命令に対応するウォッチポイント要素番号及び前記記憶された条件値及び代替的プログラム命令アドレスとの比較のための計算上の適正な条件値を識別する、命令実行完了状況を表示する信号を同時に生成するための手段;
− 各々の前記命令についての前記生成された計算上の条件データ値と前記記憶された実行前代替経路及び予測情報を比較し、予測された条件データが前記命令のいずれかについて前記計算上の正しい条件データ値と一致する場合に一致信号を生成するための手段;
− 分岐命令又はジャンプ・アンド・リンク命令が正しく予測されたか又は予測が正しくないかを評価し各々の誤予測命令について誤予測信号を生成することを含め、各々の単一命令についての予測を同時に評価するための手段;
− 前記誤予測からの前記中央処理ユニットの回復を優先順序づけし、予め定められた優先順位規則に基づいて特定の高優先順の誤予測を選択するための手段;
− 前記特定の高優先順誤予測命令に付随するチェックポイントを識別し、前記特定の誤予測命令から前記プロセッサを回復するための中央処理ユニットバックアップ信号を生成するための手段;
− 前記標的アドレスデータ構造から前記特定の誤予測命令のための代替次プログラムカウンタを読取るための手段;及び
− 前記再フェッチされた命令に基づき前記中央処理ユニットの実行を再開させるため発行ユニットに対して前記読取り代替次プログラムアドレスを送る手段、
− ・現在実行中の発行ウインドウ信号内の現在実行中の再命令済み条件コードを各々のデータ順方向送りバスタグに比較するための手段;
・先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比較するための手段;
によって、先行するサイクル内の条件コードタグと現在実行中の発行ウインドウサイクル内の現在リネームされている条件コードタグの間でデータ順方向送りタグの比較を分離する手段であって先行するサイクル中の前記条件コードタグ及び現在実行中の発行ウインドウ内の現在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記比較は、単一の非分割作業で行なわれた場合に比べさらに迅速に行なわれるような手段;
を含む装置。 - プログラム制御順にとは異なり、アウトオブオーダに実行を行うデータプロセッサにおいて、
− 実行のためプログラム制御順で命令を発行するための発行ユニットであって、発行される命令には、浮動小数点及び非浮動小数点命令が含まれている、ユニット;
− 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でアウトオブオーダ実行され得る、発行済み命令を実行するための実行手段;
− ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶要素を含むデータ記憶構造;
・各々の発行済み命令について対応する発行済み命令が浮動小数点命令であるか否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデータを書込むための第1の論理;
・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点実行例外をひきおこす各々の発行された浮動小数点命令について、結果としてもたらされることになる浮動小数点実行トラップの予め定められたタイプのうちの1つを識別する対応する記憶要素の浮動小数点トラップタイプフィールド内へのデータを書込むための第2の論理
を含む浮動小数点例外ユニット;
− 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての発行済み命令が退去されてしまっている各々の発行済み命令を退去させるための精確状態手段;
を含み、
予め定められた実行例外のうちの第1のものが発行済み命令によってひき起こされた時点で、実行手段は発行済み命令の実行を続行し、精確状態手段は、退去され得ない発行済み命令に遭遇するまで発行済み命令を退去させ続けることにより実行トラップ順序付けに着手し、退去され得ない発行済み命令は、(a)第1の実行例外をひき起こした発行済み命令、及び(b)第1の実行例外をひき起こした発行済み命令よりも早期に発行されたものの第1の実行例外よりも晩期に発生する第2の実行例外をひき起こした発行済み命令のうちの1つであり、さらに
− 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レジスタ;及び
− 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデータが、この退去され得ない命令が浮動小数点命令であることを表示した時点で、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書込むための書込み手段;
を含み、かつ、
− データ記憶構造の各々の記憶要素が、現在実行中の浮動小数点実行例外フィールドも有しており;
− 浮動小数点例外ユニットにはさらに、浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプを結果としてもたらすことになる複数の特定の浮動小数点実行例外のうちの単数又は複数の例外を実行中にひき起こす各々の発行済み浮動小数点命令について、ひき起こされた特定の浮動小数点実行例外のうちの単数又は複数のものを識別する対応する記憶要素の現在実行中の浮動小数点実行例外フィールドに対するデータを書込むための第3の論理がさらに含まれ;
− 浮動小数点状況レジスタが同様に、現在実行中の浮動小数点実行例外フィールドも有しており、さらに
− 書込み手段は同様に、(a)退去され得ない発行済み命令に対応する記憶要素の浮動小数点命令識別フィールド内のデータが、退去され得ない発行済み命令が浮動小数点命令であることを表示した時点、及び(b)退去され得ない発行済み命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータが、予め定められた浮動小数点実行トラップタイプのうちの特定の1つを識別した時点で、退去され得ない発行済み命令に対応する記憶要素の現在実行中の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外のうちの単数又は複数のものを識別する浮動小数点状況レジスタの現在実行中の浮動点実行例外フィールドに対するデータを書込み、
さらに、
− 第4の論理は同様に、実行中に特定の浮動小数点実行例外のいずれもひき起こさない各々の発行済み浮動小数点命令について、特定の浮動小数点実行例外のいずれもひき起こされていないことを表示する対応する記憶要素の現在実行中の浮動小数点実行例外フィールドに対するデータを書込み;
− 浮動小数点状況レジスタには、蓄積した例外フィールド及びトラップバリッドマスクフィールドが含まれ、トラップバリッドマスクフィールドが特定の浮動小数点実行例外のあらゆる組合せの選択的マスキングを提供し;
− 精確状態ユニットは同様に、実行中単数又は複数のマスキングされた特定の浮動小数点実行例外をひき起こすもののその他の浮動小数点実行例外を全くひき起こさず、かつプログラム制御順でそれに先行する全ての発行済み命令が退去させられている各々の発行済み浮動小数点命令も退去させ;
− 命令が退去させられる各々の現在実行中のマシンサイクルの間、書込み手段は、(a)対応する記憶要素の浮動小数点命令識別フィールド内のデータが浮動小数点命令でありかつ現在実行中のマシンサイクル内で退去されつつある発行済み命令に対応する記憶要素の現在実行中の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外、及び(b)浮動小数点状況レジスタの蓄積した浮動小数点実行例外フィールド内の現行データによって識別された特定の浮動小数点実行例外の蓄積を表わす浮動小数点状況レジスタの蓄積された例外フィールドに対するデータを書込み;
− 命令が退去させられる各々の現在実行中のマシンサイクルの間に、書込み手段は同様に対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表示している対応する現在実行中のマシンサイクルにおいて退去させられた最後に発行された命令に対応する記憶要素の現在実行中の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外を識別する浮動小数点状況レジスタの現在実行中の例外フィールドに対するデータを書込み;
− 命令が退去させられる各々の現在実行中のマシンサイクルの間に、書込み手段はさらに、対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表わしている対応する現在実行中のマシンサイクルにおいて退去させられた最後に発行された命令について、予め定められた浮動小数点実行トラップタイプのいずれも結果としてもたらされないであろうということを表示する浮動小数点状況レジスタのトラップタイプフィールドに対するデータを書込み、
さらに、
− 発行された命令にはSPARC命令及び非SPARC命令が含まれることが可能であり、
− 浮動小数点状況レジスタが、SPARC浮動小数点状況レジスタ及び非SPARC浮動小数点状況レジスタを含むことが可能であり、
− 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプがIEEE 754 規格における例外トラップを含み、
− 特定の浮動小数点実行例外には、IEEE 754 規格における例外が含まれる、
ことを特徴とする、プログラム順アウトオブオーダ実行のデータプロセッサ。 - プログラム制御順アウトオブオーダ実行データプロセッサ内で浮動小数点例外を検出する方法において、
− 実行のためプログラム制御順で命令を発行するステップであって発行される命令には、浮動小数点及び非浮動小数点命令が含まれているステップ;
− 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でアウトオブオーダ実行され得るように発行済み命令を実行するステップ;
− ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶要素を含むデータ記憶構造を提供するステップ;
・各々の発行済み命令について対応する発行済み命令が浮動小数点命令であるか否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデータを書込むステップ;
・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点実行例外をひき起こす各々の発行された浮動小数点命令について、結果としてもたらされることになる浮動小数点実行トラップの予め定められたタイプのうちの1つを識別する対応する記憶要素の浮動小数点トラップタイプフィールド内へのデータを書込むステップ;
− 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての発行済み命令が退去されてしまっている各々の発行済み命令を退去させるステップ;
− 予め定められた実行例外のうちの第1のものが発行済み命令によってひき起こされた時点で、発行済み命令の実行を続行し、退去され得ない発行済み命令に遭遇するまで発行済み命令を退去させ続けることにより実行トラップ順序付けに着手し、ここで退去され得ない発行済み命令は、(a)第1の実行例外をひき起こした発行済み命令、及び(b)第1の実行例外をひき起こした発行済み命令よりも早期に発行されたものの第1の実行例外よりも晩期に発生する第2の実行例外をひき起こした発行済み命令のうちの1つであるステップ;
− 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レジスタを提供するステップ;及び
− 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデータか、この退去され得ない命令が浮動小数点命令であることを表示した時点で、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書込むステップ;
を含み、かつ、
− データ記憶構造の各々の記憶要素が、現在実行中の浮動小数点実行例外フィールドも有しており;
− 浮動小数点状況レジスタが同様に、現在実行中の浮動小数点実行例外フィールドも有しており、さらに
− 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプを結果としてもたらすことになる複数の特定の浮動小数点実行例外のうちの単数又は複数の例外を実行中にひき起こす各々の発行済み浮動小数点命令について、ひき起こされた特定の浮動小数点実行例外のうちの単数又は複数のものを識別する対応する記憶要素の現在実行中の浮動小数点実行例外フィールドに対するデータを書込むステップ;
− (a)退去され得ない発行済み命令に対応する記憶要素の浮動小数点命令識別フィールド内のデータが、退去され得ない発行済み命令が浮動小数点命令であることを表示した時点、及び(b)退去され得ない発行済み命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータが、予め定められた浮動小数点実行トラップタイプのうちの特定の1つを識別した時点で、退去され得ない発行済み命令に対応する記憶要素の現在実行中の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外のうちの単数又は複数のものを識別する浮動小数点状況レジスタの現在実行中の浮動点実行例外フィールドに対するデータを書込むステップ;
を含み、かつ、
− 実行中に特定の浮動小数点実行例外のいずれもひき起こさない各々の発行済み浮動小数点命令について、特定の浮動小数点実行例外のいずれもひき起こされていないことを表示する対応する記憶要素の現在実行中の浮動小数点実行例外フィールドに対するデータを書込むステップを含み;
− ここで浮動小数点状況レジスタには、蓄積した例外フィールド及びトラップバリッドマスクフィールドが含まれ、トラップバリッドマスクフィールドが特定の浮動小数点実行例外のあらゆる組合せの選択的マスキングを提供し;さらに
− 実行中単数又は複数のマスキングされた特定の浮動小数点実行例外をひき起こすもののその他の浮動小数点実行例外を全くひき起こさず、かつプログラム制御順でそれに先行する全ての発行済み命令が退去させられている各々の発行済み浮動小数点命令を退去させるステップ;
− 命令が退去させられる各々の現在実行中のマシンサイクルの間、(a)対応する記憶要素の浮動小数点命令識別フィールド内のデータが浮動小数点命令であり、かつ現在実行中のマシンサイクル内で退去されつつある発行済み命令に対応する記憶要素の現在実行中の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外、及び(b)浮動小数点状況レジスタの蓄積した浮動小数点実行例外フィールド内の現行データによって識別された特定の浮動小数点実行例外の蓄積を表わす浮動小数点状況レジスタの蓄積された例外フィールドに対するデータを書込むステップ;
− 命令が退去させられる各々の現在実行中のマシンサイクルの間に、対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表示している対応する現在実行中のマシンサイクルにおいて退去させられた最後に発行された命令に対応する記憶要素の現在実行中の浮動小数点実行例外フィールド内のデータによって識別された特定の浮動小数点実行例外を識別する浮動小数点状況レジスタの現在実行中の例外フィールドに対するデータを書込むステップ;
− 命令が退去させられる各々の現在実行中のマシンサイクルの間に、対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であることを表わしている対応する現在実行中のマシンサイクルにおいて退去させられた最後に発行された命令について、予め定められた浮動小数点実行トラップタイプのいずれも結果としてもたらされないであろうということを表示する浮動小数点状況レジスタのトラップタイプフィールドに対するデータを書込むステップ;
をさらに含み、かつ、
− 発行された命令にはSPARC命令及び非SPARC命令が含まれることが可能であり、
− 浮動小数点状況レジスタが、SPARC浮動小数点状況レジスタ及び非SPARC浮動小数点状況レジスタを含むことが可能であり、
− 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイプがIEEE 754 規格における例外トラップを含み、
− 特定の浮動小数点実行例外には、IEEE 754 規格における例外が含まれる、
ことを特徴とする方法。
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/473,223 US5644742A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for a time-out checkpoint |
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/487,801 US5751985A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for tracking instruction status to maintain precise state |
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/472,394 US5673408A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for renamable trap-stack |
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 |
---|---|---|---|
JP2004265716A Division JP3787142B2 (ja) | 1995-02-14 | 2004-09-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007180315A Division JP2007287176A (ja) | 1995-02-14 | 2007-07-09 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006107537A true JP2006107537A (ja) | 2006-04-20 |
JP4142690B2 JP4142690B2 (ja) | 2008-09-03 |
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 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2006006056A Pending JP2006107536A (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2006006315A Expired - Fee Related JP4142690B2 (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2007180315A Pending JP2007287176A (ja) | 1995-02-14 | 2007-07-09 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Family Applications Before (5)
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 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2006006056A Pending JP2006107536A (ja) | 1995-02-14 | 2006-01-13 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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) |
Families Citing this family (29)
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 |
US8108719B2 (en) | 2006-10-13 | 2012-01-31 | Nec Corporation | Information processing device and failure concealing method therefor |
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 |
KR102330389B1 (ko) * | 2014-07-24 | 2021-11-24 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
JP2016062513A (ja) * | 2014-09-19 | 2016-04-25 | 株式会社東芝 | プロセッサおよびプロセッサシステム |
US9785442B2 (en) | 2014-12-24 | 2017-10-10 | 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 |
US20160357556A1 (en) * | 2014-12-24 | 2016-12-08 | Elmoustapha Ould-Ahmed-Vall | 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 |
US10387156B2 (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 |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | 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 |
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 |
DE68927218T2 (de) * | 1988-10-18 | 1997-02-06 | Hewlett Packard Co | Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor |
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 |
EP0636256B1 (en) * | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Superscalar risc processor instruction scheduling |
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 JP JP52508596A patent/JP3670290B2/ja not_active Expired - Fee Related
- 1996-02-13 EP EP96906404.7A patent/EP0815507B1/en not_active Expired - Lifetime
-
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 JP2006006056A patent/JP2006107536A/ja active Pending
- 2006-01-13 JP JP2006006315A patent/JP4142690B2/ja not_active Expired - Fee Related
-
2007
- 2007-07-09 JP JP2007180315A patent/JP2007287176A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2005038445A (ja) | 2005-02-10 |
EP0815507B1 (en) | 2013-06-12 |
EP0815507A4 (en) | 2001-05-16 |
JP2007287176A (ja) | 2007-11-01 |
JPH11500551A (ja) | 1999-01-12 |
JP3787142B2 (ja) | 2006-06-21 |
JP2005025782A (ja) | 2005-01-27 |
JP3670290B2 (ja) | 2005-07-13 |
JP2006107536A (ja) | 2006-04-20 |
JP4142690B2 (ja) | 2008-09-03 |
JP3787141B2 (ja) | 2006-06-21 |
WO1996025705A1 (en) | 1996-08-22 |
JP3754439B2 (ja) | 2006-03-15 |
EP0815507A1 (en) | 1998-01-07 |
JP2004355663A (ja) | 2004-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4142690B2 (ja) | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 | |
JP5018728B2 (ja) | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 | |
US5463745A (en) | Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system | |
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 | |
EP0638183B1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
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) | パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ | |
US5535346A (en) | Data processor with future file with parallel update and method of operation | |
US6098167A (en) | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution | |
EP0805390A1 (en) | Processor and method for speculatively executing a conditional branch instruction utilizing a selected one of multiple branch prediction methodologies | |
US7603543B2 (en) | Method, apparatus and program product for enhancing performance of an in-order processor with long stalls | |
US5918046A (en) | Method and apparatus for a branch instruction pointer table | |
US7269714B2 (en) | Inhibiting of a co-issuing instruction in a processor having different pipeline lengths |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060815 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061016 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070508 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070709 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080129 |
|
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: 20080513 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080612 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
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: 20120620 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120620 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |