JP2009076083A - 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 - Google Patents
特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 Download PDFInfo
- Publication number
- JP2009076083A JP2009076083A JP2008265785A JP2008265785A JP2009076083A JP 2009076083 A JP2009076083 A JP 2009076083A JP 2008265785 A JP2008265785 A JP 2008265785A JP 2008265785 A JP2008265785 A JP 2008265785A JP 2009076083 A JP2009076083 A JP 2009076083A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- checkpoint
- instructions
- register
- 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 225
- 238000012545 processing Methods 0.000 claims abstract description 68
- 238000003860 storage Methods 0.000 claims description 199
- 230000008859 change Effects 0.000 claims description 36
- 238000012546 transfer Methods 0.000 claims description 24
- 238000001514 detection method Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 15
- 230000002401 inhibitory effect Effects 0.000 claims 2
- 238000011156 evaluation Methods 0.000 abstract description 46
- 230000006870 function Effects 0.000 abstract description 11
- 230000001965 increasing effect Effects 0.000 abstract description 6
- 238000007667 floating Methods 0.000 description 96
- 238000013507 mapping Methods 0.000 description 66
- 238000011084 recovery Methods 0.000 description 56
- 230000004044 response Effects 0.000 description 42
- 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 20
- 101000860173 Myxococcus xanthus C-factor Proteins 0.000 description 19
- 238000013461 design Methods 0.000 description 18
- 238000013500 data storage Methods 0.000 description 17
- 102100031456 Centriolin Human genes 0.000 description 15
- 101000941711 Homo sapiens Centriolin Proteins 0.000 description 15
- 238000012423 maintenance Methods 0.000 description 13
- 230000007704 transition Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 230000009849 deactivation Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 108090000623 proteins and genes Proteins 0.000 description 8
- 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
- 230000004913 activation Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 239000013256 coordination polymer Substances 0.000 description 5
- 238000012544 monitoring process Methods 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
- 230000003213 activating effect Effects 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
- 238000012163 sequencing technique Methods 0.000 description 3
- 240000005523 Peganum harmala Species 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
- 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
- 230000000977 initiatory effect 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
- 238000005728 strengthening 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
- URINYHFMLIGJCL-UHFFFAOYSA-N NCSN Chemical compound NCSN URINYHFMLIGJCL-UHFFFAOYSA-N 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
- 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
- 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
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000002441 reversible effect Effects 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/1407—Checkpointing the instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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
- 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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Retry When Errors Occur (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 (14)
- 命令を格納する命令記憶手段と、
プログラムの順序に従って前記命令記憶手段に格納された命令を発行する命令発行手段と、
前記発行された命令の実行を行う命令実行手段と、
前記プログラム上で定義される論理レジスタと、
前記命令実行手段が前記発行された命令を実行する場合に使用する物理レジスタと、
前記論理レジスタを指定する論理レジスタ番号に対して前記物理レジスタを指定する物理レジスタ番号を対応付けることにより、前記論理レジスタと前記物理レジスタとの対応関係を表す情報を格納するリネームマップ記憶手段と、
チェックポイント命令をデコードする命令デコード手段と、
前記命令発行手段が発行した命令が前記命令デコード手段により、チェックポイント命令であると識別された場合に、前記チェックポイント実行を行うチェックポイント実行手段と、
中央処理ユニットの通常動作を停止させる例外処理を発生させる例外処理発生命令の実行により、前記例外処理が発生したことを検出する例外処理検出手段と、
前記例外処理検出手段により例外処理が検出された場合に、前記例外処理を発生させた命令より後続の前記チェックポイント命令の実行により前記リネームマップ記憶手段に格納された情報を用いて、前記チェックポイント命令を実行した状態に前記論理レジスタの内容を復元するバックアップ手段を有することを特徴とする中央処理ユニット。 - 前記論理レジスタは、前記命令の実行対象が格納される論理ソースレジスタと前記命令の実行結果が格納される論理宛先レジスタを含むことを特徴とする請求項1記載の中央処理ユニット。
- 前記論理レジスタは、前記論理レジスタを識別するための互いに固有の論理レジスタタグを有し、
前記物理レジスタは、前記物理レジスタを識別するための互いに固有の物理レジスタタグを有することを特徴とする請求項1又は2記載の中央処理ユニット。 - 前記中央処理ユニットはさらに、
前記命令デコード手段又は前記例外処理検出手段により例外処理が検出された場合に、前記例外処理を発生させた命令より後続の前記チェックポイント命令の実行により前記リネームマップ記憶手段に格納された情報を用いて、前記チェックポイント命令を実行した状態に前記論理レジスタの内容を復元し、さらに、前記例外処理を発生させた命令まで前記論理レジスタの内容を復元するバックステップ実行手段を有することを特徴とする請求項1〜3のいずれか一項に記載の中央処理ユニット。 - 前記命令デコード手段又は前記例外処理検出手段により例外処理が検出された場合に、前記例外処理を発生させた命令より後続の前記チェックポイント命令が実行されていない場合には、前記バックアップ手段による前記チェックポイント命令を実行した状態に前記論理レジスタの内容を復元せずに、前記バックステップ実行手段により前記例外処理を発生させた命令まで前記論理レジスタの内容を復元することを特徴とする請求項4記載の中央処理ユニット。
- 前記チェックポイント命令は、自命令の次に実行する命令のアドレスが自命令のアドレスとは不連続である制御転送命令、条件付命令が実行に際して参照する制御レジスタの値を変更する制御レジスタ値変更命令、及び、トラップを発生させるトラップ命令のいずれかであることを特徴とする請求項1〜5のいずれか一項に記載の中央処理ユニット。
- 命令を格納する命令記憶手段と、
プログラムの順序に従って前記命令記憶手段に格納された命令を発行する命令発行手段と、
前記発行された命令の実行を行う命令実行手段と、
前記プログラム上で定義される論理レジスタと、
前記命令実行手段が前記発行された命令を実行する場合に使用する物理レジスタと、
前記論理レジスタを指定する論理レジスタ番号に対して前記物理レジスタを指定する物理レジスタ番号を対応付けることにより、前記論理レジスタと前記物理レジスタとの対応関係を表す情報を格納するリネームマップ記憶手段と、
前記論理レジスタと前記リネームマップ記憶手段の内容を記憶するチェックポイント実行が必要なチェックポイント命令をデコードする命令デコード手段と、
前記命令発行手段が発行した命令が前記命令デコード手段により、チェックポイント命令であると識別された場合に、前記チェックポイント実行の代わりに、前記識別されたチェックポイント命令であると識別された命令に先行する全ての命令が完了するまで、前記識別されたチェックポイント命令であると識別された命令の発行及び実行を抑止する命令発行抑止手段と、
前記チェックポイント命令の実行後に、中央処理ユニットの通常動作を停止させる例外処理が発生した場合に、前記リネームマップ記憶手段に格納された情報を用いて、前記通常動作の実行に必要な前記論理レジスタの内容を復元するバックアップ手段を有することを特徴とする中央処理ユニット。 - 命令を格納する命令記憶部と前記命令を発行する命令発行部と前記命令を実行する命令実行部とプログラム上で定義される論理レジスタに対応する物理レジスタとを有する中央処理ユニットの命令制御方法において、
前記命令記憶部が、命令を格納するステップと、
前記命令発行部が、プログラムの順序に従って前記命令記憶部に格納された命令を前記命令実行部に発行するステップと、
前記命令実行部が、前記発行された命令を実行するステップと、
前記論理レジスタを指定する論理レジスタ番号に対して前記物理レジスタを指定する物理レジスタ番号を対応付けることにより、前記論理レジスタと前記物理レジスタとの対応関係を表す情報をリネームマップ記憶部に格納するステップと、
チェックポイント命令をデコードするデコードステップと、
中央処理ユニットの通常動作を停止させる例外処理を発生させる例外処理発生命令の実行により、前記例外処理が発生したことを検出する例外処理検出ステップと、
前記例外処理が検出された場合に、前記例外処理を発生させた命令より後続の前記チェックポイント命令の実行により前記リネームマップ記憶部に格納された情報を用いて、前記通常動作の実行に必要な前記論理レジスタの内容を復元するバックアップステップを有することを特徴とする命令制御方法。 - 前記論理レジスタは、前記命令の実行対象が格納される論理ソースレジスタと前記命令の実行結果が格納される論理宛先レジスタを含むことを特徴とする請求項8記載の命令制御方法。
- 前記論理レジスタは、前記論理レジスタを識別するための互いに固有の論理レジスタタグを有し、
前記物理レジスタは、前記物理レジスタを識別するための互いに固有の物理レジスタタグを有することを特徴とする請求項8又は9記載の命令制御方法。 - 前記中央処理ユニットはさらに、
例外処理が検出された場合に、前記例外処理を発生させた命令より後続の前記チェックポイント命令の実行により前記リネームマップ記憶手段に格納された情報を用いて、前記チェックポイント命令を実行した状態に前記論理レジスタの内容を復元し、さらに、前記例外処理を発生させた命令まで前記論理レジスタの内容を復元するバックステップ実行ステップを有することを特徴とする請求項8〜10のいずれか一項に記載の命令制御方法。 - 前記デコードステップ又は前記例外処理検出ステップにおいて例外処理が検出された場合に、前記例外処理を発生させた命令より後続のチェックポイント命令が実行されていない場合には、前記バックアップステップによる前記チェックポイント命令を実行した状態に前記論理レジスタの内容を復元せずに、前記バックステップ実行ステップにより前記例外処理を発生させた命令まで前記論理レジスタの内容を復元するステップを有することを特徴とする請求項11記載の命令制御方法。
- 前記チェックポイント命令は、自命令の次に実行する命令のアドレスが自命令のアドレスとは不連続である制御転送命令、条件付命令が実行に際して参照する制御レジスタの値を変更する制御レジスタ値変更命令、及び、トラップを発生させるトラップ命令のいずれかであることを特徴とする請求項8〜12のいずれか一項に記載の命令制御方法。
- 命令を格納する命令記憶部と前記命令を発行する命令発行部と前記命令を実行する命令実行部とプログラム上で定義される論理レジスタに対応する物理レジスタとを有する中央処理ユニットの命令制御方法において、
前記命令記憶部が、命令を格納するステップと、
前記命令発行部が、プログラムの順序に従って前記命令記憶部に格納された命令を前記命令実行部に発行するステップと、
前記命令実行部が、前記発行された命令を実行するステップと、
前記論理レジスタに対して前記物理レジスタを対応付けることにより、前記論理レジスタと前記物理レジスタとの対応関係を表す情報をリネームマップ記憶部に格納するステップと、
前記論理レジスタと前記リネームマップ記憶部の内容を記憶するチェックポイント実行が必要なチェックポイント命令をデコードするステップと、
前記命令発行部が発行した命令が、前記デコードするステップにおいて、チェックポイント命令であると識別された場合に、前記チェックポイント実行の代わりに、前記識別されたチェックポイント命令であると識別された命令に先行する全ての命令が完了するまで、前記識別されたチェックポイント命令であると識別された命令の発行及び実行を抑止するステップと、
前記チェックポイント命令の実行後に、中央処理ユニットの通常動作を停止させる例外処理が発生した場合に、前記リネームマップ記憶部に格納された情報を用いて、前記通常動作の実行に必要な前記論理レジスタの内容を復元するステップを有することを特徴とする命令制御方法。
Applications Claiming Priority (20)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39088595A | 1995-02-14 | 1995-02-14 | |
US08/390,885 | 1995-02-14 | ||
US39829995A | 1995-03-03 | 1995-03-03 | |
US08/398,299 | 1995-03-03 | ||
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/482,075 US5655115A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation |
US08/478,025 US5651124A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for aggressively scheduling long latency instructions including load/store instructions while maintaining precise state |
US08/483,958 | 1995-06-07 | ||
US08/487,801 | 1995-06-07 | ||
US08/478,025 | 1995-06-07 | ||
US08/484,795 US5673426A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for tracking floating-point exceptions |
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/476,419 | 1995-06-07 | ||
US08/484,795 | 1995-06-07 | ||
US08/482,073 | 1995-06-07 | ||
US08/473,223 US5644742A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for a time-out checkpoint |
US08/472,394 | 1995-06-07 | ||
US08/472,394 US5673408A (en) | 1995-02-14 | 1995-06-07 | Processor structure and method for renamable trap-stack |
US08/473,223 | 1995-06-07 |
Related Parent 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 |
---|---|
JP2009076083A true JP2009076083A (ja) | 2009-04-09 |
JP5018728B2 JP5018728B2 (ja) | 2012-09-05 |
Family
ID=27013307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008265785A Expired - Fee Related JP5018728B2 (ja) | 1995-02-14 | 2008-10-14 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
Country Status (3)
Country | Link |
---|---|
US (9) | US5644742A (ja) |
JP (1) | JP5018728B2 (ja) |
KR (1) | KR100425805B1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755329B2 (en) | 2018-12-06 | 2023-09-12 | Fujitsu Limited | Arithmetic processing apparatus and method for selecting an executable instruction based on priority information written in response to priority flag comparison |
Families Citing this family (311)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2016068C (en) * | 1989-05-24 | 2000-04-04 | Robert W. Horst | Multiple instruction issue computer architecture |
JPH10506483A (ja) * | 1994-06-10 | 1998-06-23 | テキサス・マイクロ・インコーポレーテッド | フォールト・トレラントなコンピュータ・システムのためのメイン・メモリ・システム及びチェックポイント用プロトコル |
US5799179A (en) * | 1995-01-24 | 1998-08-25 | International Business Machines Corporation | Handling of exceptions in speculative instructions |
US5644742A (en) * | 1995-02-14 | 1997-07-01 | Hal Computer Systems, Inc. | Processor structure and method for a time-out checkpoint |
US6446224B1 (en) | 1995-03-03 | 2002-09-03 | Fujitsu Limited | Method and apparatus for prioritizing and handling errors in a computer system |
JP3020833B2 (ja) * | 1995-06-19 | 2000-03-15 | 株式会社東芝 | チェックポイント取得システム |
US5864657A (en) * | 1995-11-29 | 1999-01-26 | Texas Micro, Inc. | Main memory system and checkpointing protocol for fault-tolerant computer system |
US5809275A (en) * | 1996-03-01 | 1998-09-15 | Hewlett-Packard Company | Store-to-load hazard resolution system and method for a processor that executes instructions out of order |
US6233704B1 (en) * | 1996-03-13 | 2001-05-15 | Silicon Graphics, Inc. | System and method for fault-tolerant transmission of data within a dual ring network |
US5968166A (en) * | 1996-03-22 | 1999-10-19 | Matsushita Electric Industrial Co., Ltd. | Information processing apparatus and method, and scheduling device for reducing inactivity due to wait state |
US5875340A (en) * | 1996-05-31 | 1999-02-23 | Hewlett-Packard Company | Optimized storage system and method for a processor that executes instructions out of order |
US5958061A (en) * | 1996-07-24 | 1999-09-28 | Transmeta Corporation | Host microprocessor with apparatus for temporarily holding target processor state |
US6199152B1 (en) | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US5826070A (en) * | 1996-08-30 | 1998-10-20 | International Business Machines Corporation | Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit |
US5835698A (en) * | 1996-09-20 | 1998-11-10 | Novell, Inc. | Unilaterally-controlled, time-insensitive, data-link recovery apparatus and method |
US6094528A (en) * | 1996-10-24 | 2000-07-25 | Sun Microsystems, Inc. | Method and apparatus for system building with a transactional interpreter |
US5909572A (en) * | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
US5941938A (en) * | 1996-12-02 | 1999-08-24 | Compaq Computer Corp. | System and method for performing an accumulate operation on one or more operands within a partitioned register |
US6061521A (en) * | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
US6009505A (en) * | 1996-12-02 | 1999-12-28 | Compaq Computer Corp. | System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot |
US5893145A (en) * | 1996-12-02 | 1999-04-06 | Compaq Computer Corp. | System and method for routing operands within partitions of a source register to partitions within a destination register |
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
US5764971A (en) * | 1996-12-11 | 1998-06-09 | Industrial Technology Research Institute | Method and apparatus for implementing precise interrupts in a pipelined data processing system |
US5784606A (en) * | 1996-12-16 | 1998-07-21 | International Business Machines Corporation | Method and system in a superscalar data processing system for the efficient handling of exceptions |
US5887161A (en) * | 1997-03-31 | 1999-03-23 | International Business Machines Corporation | Issuing instructions in a processor supporting out-of-order execution |
US6098167A (en) * | 1997-03-31 | 2000-08-01 | International Business Machines Corporation | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution |
US20010037268A1 (en) | 1997-05-08 | 2001-11-01 | Miller David S. | Fully-automated system for tax reporting, payment and refund and system for accessing tax information |
US6173432B1 (en) | 1997-06-20 | 2001-01-09 | Micron Technology, Inc. | Method and apparatus for generating a sequence of clock signals |
US6049868A (en) * | 1997-06-25 | 2000-04-11 | Sun Microsystems, Inc. | Apparatus for delivering precise traps and interrupts in an out-of-order processor |
US5941977A (en) * | 1997-06-25 | 1999-08-24 | Sun Microsystems, Inc. | Apparatus for handling register windows in an out-of-order processor |
US6052777A (en) * | 1997-06-25 | 2000-04-18 | Sun Microsystems, Inc. | Method for delivering precise traps and interrupts in an out-of-order processor |
US6263416B1 (en) * | 1997-06-27 | 2001-07-17 | Sun Microsystems, Inc. | Method for reducing number of register file ports in a wide instruction issue processor |
US6139200A (en) * | 1997-06-30 | 2000-10-31 | Sun Microsystems, Inc. | Register resource allocation feedback |
US5987598A (en) * | 1997-07-07 | 1999-11-16 | International Business Machines Corporation | Method and system for tracking instruction progress within a data processing system |
US6070235A (en) * | 1997-07-14 | 2000-05-30 | International Business Machines Corporation | Data processing system and method for capturing history buffer data |
US6317638B1 (en) * | 1997-08-22 | 2001-11-13 | Honeywell Inc. | Multi-layer state machine for a hybrid real-time control system and method of operation thereof |
JPH1196006A (ja) * | 1997-09-19 | 1999-04-09 | Hitachi Ltd | 情報処理装置 |
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
US6061777A (en) * | 1997-10-28 | 2000-05-09 | International Business Machines Corporation | Apparatus and method for reducing the number of rename registers required in the operation of a processor |
US6442585B1 (en) | 1997-11-26 | 2002-08-27 | Compaq Computer Corporation | Method for scheduling contexts based on statistics of memory system interactions in a computer system |
US6237059B1 (en) | 1997-11-26 | 2001-05-22 | Compaq Computer Corporation | Method for estimating statistics of properties of memory system interactions among contexts in a computer system |
US6163840A (en) * | 1997-11-26 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline |
US6195748B1 (en) | 1997-11-26 | 2001-02-27 | Compaq Computer Corporation | Apparatus for sampling instruction execution information in a processor pipeline |
US6332178B1 (en) | 1997-11-26 | 2001-12-18 | Compaq Computer Corporation | Method for estimating statistics of properties of memory system transactions |
US6175814B1 (en) | 1997-11-26 | 2001-01-16 | Compaq Computer Corporation | Apparatus for determining the instantaneous average number of instructions processed |
US6374367B1 (en) | 1997-11-26 | 2002-04-16 | Compaq Computer Corporation | Apparatus and method for monitoring a computer system to guide optimization |
US6549930B1 (en) | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
US5923872A (en) * | 1997-11-26 | 1999-07-13 | Digital Equipment Corporation | Apparatus for sampling instruction operand or result values in a processor pipeline |
US6237073B1 (en) | 1997-11-26 | 2001-05-22 | Compaq Computer Corporation | Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information |
US6029225A (en) * | 1997-12-16 | 2000-02-22 | Hewlett-Packard Company | Cache bank conflict avoidance and cache collision avoidance |
US6047370A (en) * | 1997-12-19 | 2000-04-04 | Intel Corporation | Control of processor pipeline movement through replay queue and pointer backup |
US6625756B1 (en) * | 1997-12-19 | 2003-09-23 | Intel Corporation | Replay mechanism for soft error recovery |
US6076153A (en) * | 1997-12-24 | 2000-06-13 | Intel Corporation | Processor pipeline including partial replay |
US6205542B1 (en) | 1997-12-24 | 2001-03-20 | Intel Corporation | Processor pipeline including replay |
US6128722A (en) * | 1998-02-13 | 2000-10-03 | International Business Machines Corporation | Data processing system having an apparatus for exception tracking during out-of-order operation and method therefor |
US6148391A (en) * | 1998-03-26 | 2000-11-14 | Sun Microsystems, Inc. | System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses |
US5995960A (en) * | 1998-04-08 | 1999-11-30 | International Business Machines Corporaiton | Method and system for improving efficiency of programs utilizing databases by exeuting scenarios based on recalled processed information |
US6164841A (en) * | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6167504A (en) * | 1998-07-24 | 2000-12-26 | Sun Microsystems, Inc. | Method, apparatus and computer program product for processing stack related exception traps |
US6119223A (en) * | 1998-07-31 | 2000-09-12 | Advanced Micro Devices, Inc. | Map unit having rapid misprediction recovery |
US6237076B1 (en) * | 1998-08-19 | 2001-05-22 | International Business Machines Corporation | Method for register renaming by copying a 32 bits instruction directly or indirectly to a 64 bits instruction |
US6122727A (en) | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
US6212623B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Universal dependency vector/queue entry |
US6202095B1 (en) * | 1998-10-07 | 2001-03-13 | International Business Machines Corporation | Defining characteristics between processing systems |
US6401216B1 (en) | 1998-10-29 | 2002-06-04 | International Business Machines Corporation | System of performing checkpoint/restart of a parallel program |
US6332199B1 (en) | 1998-10-29 | 2001-12-18 | International Business Machines Corporation | Restoring checkpointed processes including adjusting environment variables of the processes |
US6256751B1 (en) | 1998-10-29 | 2001-07-03 | International Business Machines Corporation | Restoring checkpointed processes without restoring attributes of external data referenced by the processes |
US6332200B1 (en) | 1998-10-29 | 2001-12-18 | International Business Machines Corporation | Capturing and identifying a complete and consistent set of checkpoint files |
US6338147B1 (en) | 1998-10-29 | 2002-01-08 | International Business Machines Corporation | Program products for performing checkpoint/restart of a parallel program |
US6393583B1 (en) | 1998-10-29 | 2002-05-21 | International Business Machines Corporation | Method of performing checkpoint/restart of a parallel program |
US6807624B1 (en) * | 1998-12-17 | 2004-10-19 | Fujitsu Limited | Instruction control device and method therefor |
US6571363B1 (en) * | 1998-12-30 | 2003-05-27 | Texas Instruments Incorporated | Single event upset tolerant microprocessor architecture |
US6266763B1 (en) * | 1999-01-05 | 2001-07-24 | Advanced Micro Devices, Inc. | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values |
US6738896B1 (en) * | 1999-02-01 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Method and apparatus for determining availability of a queue which allows random insertion |
AU763141B2 (en) * | 1999-04-19 | 2003-07-17 | Motorola Australia Pty Ltd | A method of detecting illegal sequences of code execution |
US6898696B1 (en) * | 1999-06-14 | 2005-05-24 | International Business Machines Corporation | Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction |
CN1264087C (zh) * | 1999-09-08 | 2006-07-12 | 关一 | 寄存器再命名方法 |
US6728865B1 (en) | 1999-10-20 | 2004-04-27 | Transmeta Corporation | Pipeline replay support for unaligned memory operations |
US6604188B1 (en) | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
US6571265B1 (en) * | 1999-10-29 | 2003-05-27 | Intel Corporation | Mechanism to detect IEEE underflow exceptions on speculative floating-point operations |
US6615366B1 (en) * | 1999-12-21 | 2003-09-02 | Intel Corporation | Microprocessor with dual execution core operable in high reliability mode |
US6564315B1 (en) | 2000-01-03 | 2003-05-13 | Advanced Micro Devices, Inc. | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction |
US6622235B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Scheduler which retries load/store hit situations |
US6542984B1 (en) | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
DE60005860T2 (de) * | 2000-01-03 | 2004-08-05 | Advanced Micro Devices, Inc., Sunnyvale | Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle |
US6609190B1 (en) * | 2000-01-06 | 2003-08-19 | International Business Machines Corporation | Microprocessor with primary and secondary issue queue |
EP1785863A3 (en) * | 2000-02-29 | 2007-07-18 | Fujitsu Limited | A divider comprising a carry save adder and a full adder |
JP2001326914A (ja) * | 2000-03-08 | 2001-11-22 | Sony Corp | 電子情報内容配信処理システム、情報配信装置、情報処理装置及び電子情報内容配信処理方法 |
US6519730B1 (en) * | 2000-03-16 | 2003-02-11 | Fujitsu Limited | Computer and error recovery method for the same |
US6594821B1 (en) | 2000-03-30 | 2003-07-15 | Transmeta Corporation | Translation consistency checking for modified target instructions by comparing to original copy |
US6694427B1 (en) * | 2000-04-20 | 2004-02-17 | International Business Machines Corporation | Method system and apparatus for instruction tracing with out of order processors |
US7188232B1 (en) * | 2000-05-03 | 2007-03-06 | Choquette Jack H | Pipelined processing with commit speculation staging buffer and load/store centric exception handling |
US6968469B1 (en) | 2000-06-16 | 2005-11-22 | Transmeta Corporation | System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored |
GB0015222D0 (en) * | 2000-06-21 | 2000-08-16 | Money Controls Plc | Bar code system |
US6799268B1 (en) * | 2000-06-30 | 2004-09-28 | Intel Corporation | Branch ordering buffer |
US6829701B2 (en) * | 2000-12-15 | 2004-12-07 | Intel Corporation | Watchpoint engine for a pipelined processor |
US6823447B2 (en) * | 2001-03-01 | 2004-11-23 | International Business Machines Corporation | Software hint to improve the branch target prediction accuracy |
US6889316B2 (en) * | 2001-03-28 | 2005-05-03 | Intel Corporation | Method and apparatus for restoring registers after cancelling a multi-cycle instruction |
US7240186B2 (en) * | 2001-07-16 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | System and method to avoid resource contention in the presence of exceptions |
US6976152B2 (en) * | 2001-09-24 | 2005-12-13 | Broadcom Corporation | Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard |
US7203817B2 (en) * | 2001-09-24 | 2007-04-10 | Broadcom Corporation | Power consumption reduction in a pipeline by stalling instruction issue on a load miss |
US7269714B2 (en) | 2001-09-24 | 2007-09-11 | Broadcom Corporation | Inhibiting of a co-issuing instruction in a processor having different pipeline lengths |
US6959435B2 (en) * | 2001-09-28 | 2005-10-25 | Intel Corporation | Compiler-directed speculative approach to resolve performance-degrading long latency events in an application |
US20030088758A1 (en) * | 2001-11-08 | 2003-05-08 | Matthew Becker | Methods and systems for determining valid microprocessor instructions |
US6877085B2 (en) * | 2001-11-30 | 2005-04-05 | Broadcom Corporation | Mechanism for processing speclative LL and SC instructions in a pipelined processor |
JP4130076B2 (ja) * | 2001-12-21 | 2008-08-06 | 富士通株式会社 | データベース管理プログラムおよび記録媒体 |
US20040186982A9 (en) * | 2002-02-06 | 2004-09-23 | Matthew Becker | Stalling Instructions in a pipelined microprocessor |
US6959377B2 (en) * | 2002-03-20 | 2005-10-25 | Sun Microsystems, Inc. | Method and system for managing registers |
US7058877B2 (en) * | 2002-05-14 | 2006-06-06 | Sun Microsystems, Inc. | Method and apparatus for providing error correction within a register file of a CPU |
KR100459225B1 (ko) * | 2002-06-29 | 2004-12-03 | 매그나칩 반도체 유한회사 | 프레임 구조 프로세서 |
US7143106B2 (en) * | 2002-09-24 | 2006-11-28 | International Business Machines Corporation | Reclaiming resources in response to forced state transitions |
US7130988B2 (en) * | 2002-11-15 | 2006-10-31 | Via-Cyrix, Inc. | Status register update logic optimization |
US7203821B2 (en) * | 2003-01-08 | 2007-04-10 | Sun Microsystems, Inc. | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands |
US7337444B2 (en) * | 2003-01-09 | 2008-02-26 | International Business Machines Corporation | Method and apparatus for thread-safe handlers for checkpoints and restarts |
JP3802038B2 (ja) * | 2003-01-30 | 2006-07-26 | 富士通株式会社 | 情報処理装置 |
US7310723B1 (en) | 2003-04-02 | 2007-12-18 | Transmeta Corporation | Methods and systems employing a flag for deferring exception handling to a commit or rollback point |
US7401208B2 (en) * | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor |
US7401207B2 (en) * | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Apparatus and method for adjusting instruction thread priority in a multi-thread processor |
US7360062B2 (en) * | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
US7168027B2 (en) | 2003-06-12 | 2007-01-23 | Micron Technology, Inc. | Dynamic synchronization of data capture on an optical or other high speed communications link |
US7321964B2 (en) * | 2003-07-08 | 2008-01-22 | Advanced Micro Devices, Inc. | Store-to-load forwarding buffer using indexed lookup |
US7487335B1 (en) | 2003-10-14 | 2009-02-03 | Sun Microsystems, Inc. | Method and apparatus for accessing registers during deferred execution |
US7114060B2 (en) * | 2003-10-14 | 2006-09-26 | Sun Microsystems, Inc. | Selectively deferring instructions issued in program order utilizing a checkpoint and multiple deferral scheme |
US7269875B1 (en) * | 2003-11-19 | 2007-09-18 | David Brian Grimes | Cleaning apparatus |
US7610226B1 (en) | 2004-02-23 | 2009-10-27 | Simplification, Llc | System for tax data collection |
US8065665B1 (en) * | 2004-02-28 | 2011-11-22 | Oracle America, Inc. | Method and apparatus for correlating profile data |
US20070006195A1 (en) * | 2004-03-31 | 2007-01-04 | Christof Braun | Method and structure for explicit software control of data speculation |
US7711928B2 (en) * | 2004-03-31 | 2010-05-04 | Oracle America, Inc. | Method and structure for explicit software control using scoreboard status information |
US7293160B2 (en) * | 2004-06-14 | 2007-11-06 | Sun Microsystems, Inc. | Mechanism for eliminating the restart penalty when reissuing deferred instructions |
US7555703B2 (en) * | 2004-06-17 | 2009-06-30 | Intel Corporation | Method and apparatus for reducing false error detection in a microprocessor |
US7263631B2 (en) * | 2004-08-13 | 2007-08-28 | Seakr Engineering, Incorporated | Soft error detection and recovery |
US7487337B2 (en) * | 2004-09-30 | 2009-02-03 | Intel Corporation | Back-end renaming in a continual flow processor pipeline |
US7742958B1 (en) | 2004-11-08 | 2010-06-22 | Hrb Tax Group, Inc. | System and method for preparing a tax return using electronically distributed tax return data |
US7496735B2 (en) * | 2004-11-22 | 2009-02-24 | Strandera Corporation | Method and apparatus for incremental commitment to architectural state in a microprocessor |
US7849450B1 (en) * | 2005-01-28 | 2010-12-07 | Intel Corporation | Devices, methods and computer program products for reverse execution of a simulation |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7467325B2 (en) | 2005-02-10 | 2008-12-16 | International Business Machines Corporation | Processor instruction retry recovery |
US7200742B2 (en) | 2005-02-10 | 2007-04-03 | International Business Machines Corporation | System and method for creating precise exceptions |
US7571304B2 (en) * | 2005-03-18 | 2009-08-04 | Sun Microsystems, Inc. | Generation of multiple checkpoints in a processor that supports speculative execution |
US7634641B2 (en) * | 2005-03-18 | 2009-12-15 | Sun Microsystems, Inc. | Method and apparatus for using multiple threads to spectulatively execute instructions |
US7409535B2 (en) * | 2005-04-20 | 2008-08-05 | International Business Machines Corporation | Branch target prediction for multi-target branches by identifying a repeated pattern |
JP4837305B2 (ja) * | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
US7275223B2 (en) * | 2005-05-18 | 2007-09-25 | Texas Instruments Incorporated | Facilitating high-level validation of integrated circuits in parallel with development of blocks in a hierarchical design approach |
US7900193B1 (en) * | 2005-05-25 | 2011-03-01 | Parasoft Corporation | System and method for detecting defects in a computer program using data and control flow analysis |
US7409589B2 (en) * | 2005-05-27 | 2008-08-05 | International Business Machines Corporation | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US8413162B1 (en) | 2005-06-28 | 2013-04-02 | Guillermo J. Rozas | Multi-threading based on rollback |
JP2007034731A (ja) * | 2005-07-27 | 2007-02-08 | Toshiba Corp | パイプラインプロセッサ |
US7373486B2 (en) * | 2005-08-29 | 2008-05-13 | P.A. Semi, Inc. | Partially decoded register renamer |
US20070050610A1 (en) * | 2005-08-31 | 2007-03-01 | Texas Instruments Incorporated | Centralized resolution of conditional instructions |
US7395418B1 (en) * | 2005-09-22 | 2008-07-01 | Sun Microsystems, Inc. | Using a transactional execution mechanism to free up processor resources used by a busy-waiting thread |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US7953933B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit |
US8037285B1 (en) * | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US7587585B1 (en) * | 2005-10-26 | 2009-09-08 | Sun Microsystems, Inc. | Flag management in processors enabled for speculative execution of micro-operation traces |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US7783863B1 (en) | 2005-09-28 | 2010-08-24 | Oracle America, Inc. | Graceful degradation in a trace-based processor |
US7814298B1 (en) | 2005-09-28 | 2010-10-12 | Oracle America, Inc. | Promoting and appending traces in an instruction processing circuit based upon a bias value |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
US7606975B1 (en) | 2005-09-28 | 2009-10-20 | Sun Microsystems, Inc. | Trace cache for efficient self-modifying code processing |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US7987342B1 (en) | 2005-09-28 | 2011-07-26 | Oracle America, Inc. | Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer |
US7849292B1 (en) | 2005-09-28 | 2010-12-07 | Oracle America, Inc. | Flag optimization of a trace |
US8015359B1 (en) | 2005-09-28 | 2011-09-06 | Oracle America, Inc. | Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit |
US7779307B1 (en) | 2005-09-28 | 2010-08-17 | Oracle America, Inc. | Memory ordering queue tightly coupled with a versioning cache circuit |
US7953961B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US7747822B1 (en) | 2005-10-31 | 2010-06-29 | Oracle America Inc. | Maintaining memory coherency with a trace cache |
US7996662B2 (en) * | 2005-11-17 | 2011-08-09 | Apple Inc. | Floating point status/control register encodings for speculative register field |
US7681019B1 (en) | 2005-11-18 | 2010-03-16 | Sun Microsystems, Inc. | Executing functions determined via a collection of operations from translated instructions |
US7797517B1 (en) | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
US20070168591A1 (en) * | 2005-12-08 | 2007-07-19 | Inter-Tel, Inc. | System and method for validating codec software |
RU2305313C1 (ru) * | 2005-12-27 | 2007-08-27 | Яков Аркадьевич Горбадей | Способ я.а. горбадея обеспечения надежной работы программного вычислительного средства |
US7725682B2 (en) * | 2006-01-10 | 2010-05-25 | International Business Machines Corporation | Method and apparatus for sharing storage and execution resources between architectural units in a microprocessor using a polymorphic function unit |
US8010774B2 (en) * | 2006-03-13 | 2011-08-30 | Arm Limited | Breakpointing on register access events or I/O port access events |
US20070226471A1 (en) * | 2006-03-13 | 2007-09-27 | Arm Limited | Data processing apparatus |
JP4961781B2 (ja) * | 2006-03-14 | 2012-06-27 | ソニー株式会社 | 情報処理装置、その起動方法およびプログラム |
US7904789B1 (en) * | 2006-03-31 | 2011-03-08 | Guillermo Rozas | Techniques for detecting and correcting errors in a memory device |
EP2477109B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US20070294693A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Scheduling thread execution among a plurality of processors based on evaluation of memory access data |
US8301890B2 (en) * | 2006-08-10 | 2012-10-30 | Inside Secure | Software execution randomization |
US20080077777A1 (en) * | 2006-09-25 | 2008-03-27 | Arm Limited | Register renaming for instructions having unresolved condition codes |
US20080077782A1 (en) * | 2006-09-26 | 2008-03-27 | Arm Limited | Restoring a register renaming table within a processor following an exception |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7594079B2 (en) * | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US7475224B2 (en) * | 2007-01-03 | 2009-01-06 | International Business Machines Corporation | Register map unit supporting mapping of multiple register specifier classes |
US8341352B2 (en) * | 2007-04-17 | 2012-12-25 | International Business Machines Corporation | Checkpointed tag prefetcher |
US10387151B2 (en) | 2007-12-31 | 2019-08-20 | Intel Corporation | Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks |
US7984273B2 (en) | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
JP5166955B2 (ja) * | 2008-04-24 | 2013-03-21 | キヤノン株式会社 | 情報処理装置、情報処理方法、及び、情報処理プログラム |
US7921280B2 (en) * | 2008-06-27 | 2011-04-05 | Intel Corporation | Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array |
US20100064061A1 (en) * | 2008-09-05 | 2010-03-11 | Apple Inc. | Providing substantially immediate action in response to input event |
US8959277B2 (en) * | 2008-12-12 | 2015-02-17 | Oracle America, Inc. | Facilitating gated stores without data bypass |
US20100153776A1 (en) * | 2008-12-12 | 2010-06-17 | Sun Microsystems, Inc. | Using safepoints to provide precise exception semantics for a virtual machine |
CN101727312B (zh) * | 2009-01-22 | 2013-01-09 | 杭州中天微系统有限公司 | 一种支持自动纠错功能的返回地址栈实现方法 |
US9189282B2 (en) * | 2009-04-21 | 2015-11-17 | Empire Technology Development Llc | Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter |
US9569270B2 (en) * | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
US8881157B2 (en) * | 2009-09-11 | 2014-11-04 | Empire Technology Development Llc | Allocating threads to cores based on threads falling behind thread completion target deadline |
US20110066830A1 (en) * | 2009-09-11 | 2011-03-17 | Andrew Wolfe | Cache prefill on thread migration |
US8694974B2 (en) * | 2009-04-29 | 2014-04-08 | Hewlett-Packard Development Company, L.P. | Load-checking atomic section |
US20100332810A1 (en) * | 2009-06-30 | 2010-12-30 | Tao Wang | Reconfigurable Functional Unit Having Instruction Context Storage Circuitry To Support Speculative Execution of Instructions |
US20110047358A1 (en) * | 2009-08-19 | 2011-02-24 | International Business Machines Corporation | In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication |
US8458684B2 (en) * | 2009-08-19 | 2013-06-04 | International Business Machines Corporation | Insertion of operation-and-indicate instructions for optimized SIMD code |
US20110119469A1 (en) | 2009-11-13 | 2011-05-19 | International Business Machines Corporation | Balancing workload in a multiprocessor system responsive to programmable adjustments in a syncronization instruction |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US8549267B2 (en) | 2009-12-22 | 2013-10-01 | Intel Corporation | Methods and apparatus to manage partial-commit checkpoints with fixup support |
US8739164B2 (en) * | 2010-02-24 | 2014-05-27 | Advanced Micro Devices, Inc. | Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof |
GB2478733B (en) * | 2010-03-15 | 2013-08-14 | Advanced Risc Mach Ltd | Apparatus and method for handling exception events |
US8578355B1 (en) * | 2010-03-19 | 2013-11-05 | Google Inc. | Scenario based optimization |
US20110238962A1 (en) * | 2010-03-23 | 2011-09-29 | International Business Machines Corporation | Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors |
US8688963B2 (en) * | 2010-04-22 | 2014-04-01 | Oracle International Corporation | Checkpoint allocation in a speculative processor |
US8209769B1 (en) | 2010-05-20 | 2012-07-03 | The United States Of America As Represented By The Secretary Of The Navy | Hands free bomb suit tool carrier |
KR101669989B1 (ko) | 2010-05-27 | 2016-10-28 | 삼성전자주식회사 | 파이프라인 프로세서 및 이퀄 모델 보존 방법 |
US8578139B2 (en) * | 2010-08-05 | 2013-11-05 | Arm Limited | Checkpointing long latency instruction as fake branch in branch prediction mechanism |
CN103250131B (zh) | 2010-09-17 | 2015-12-16 | 索夫特机械公司 | 包括用于早期远分支预测的影子缓存的单周期多分支预测 |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
CN108874693B (zh) | 2011-01-27 | 2022-09-23 | 英特尔公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9063747B2 (en) | 2011-04-28 | 2015-06-23 | Freescale Semiconductor, Inc. | Microprocessor systems and methods for a combined register file and checkpoint repair register |
WO2012162188A2 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
US8677189B2 (en) * | 2011-11-16 | 2014-03-18 | GM Global Technology Operations LLC | Recovering from stack corruption faults in embedded software systems |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
US20130173885A1 (en) * | 2011-12-30 | 2013-07-04 | Advanced Micro Devices, Inc. | Processor and Methods of Adjusting a Branch Misprediction Recovery Mode |
US9053227B2 (en) * | 2012-03-09 | 2015-06-09 | Microsoft Technology Licensing, Llc | Concurrent assertion |
US9317285B2 (en) | 2012-04-30 | 2016-04-19 | Apple Inc. | Instruction set architecture mode dependent sub-size access of register with associated status indication |
WO2013180738A1 (en) | 2012-06-02 | 2013-12-05 | Intel Corporation | Scatter using index array and finite state machine |
US8972697B2 (en) | 2012-06-02 | 2015-03-03 | Intel Corporation | Gather using index array and finite state machine |
US9146739B2 (en) * | 2012-06-14 | 2015-09-29 | International Business Machines Corporation | Branch prediction preloading |
US9262170B2 (en) * | 2012-07-26 | 2016-02-16 | International Business Machines Corporation | Out-of-order checkpoint reclamation in a checkpoint processing and recovery core microarchitecture |
US9672044B2 (en) | 2012-08-01 | 2017-06-06 | Nxp Usa, Inc. | Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays |
US9069701B2 (en) | 2012-12-11 | 2015-06-30 | International Business Machines Corporation | Virtual machine failover |
US9286069B2 (en) * | 2012-12-21 | 2016-03-15 | Arm Limited | Dynamic write port re-arbitration |
US10198265B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Microprocessor for gating a load operation based on entries of a prediction table |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
CN109358948B (zh) | 2013-03-15 | 2022-03-25 | 英特尔公司 | 用于支持推测的访客返回地址栈仿真的方法和装置 |
US9582322B2 (en) * | 2013-03-15 | 2017-02-28 | Soft Machines Inc. | Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping |
US9606935B2 (en) | 2013-03-15 | 2017-03-28 | Intel Corporation | Method and apparatus for preventing non-temporal entries from polluting small structures using a transient buffer |
US9223714B2 (en) | 2013-03-15 | 2015-12-29 | Intel Corporation | Instruction boundary prediction for variable length instruction set |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9627038B2 (en) | 2013-03-15 | 2017-04-18 | Intel Corporation | Multiport memory cell having improved density area |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9436476B2 (en) | 2013-03-15 | 2016-09-06 | Soft Machines Inc. | Method and apparatus for sorting elements in hardware structures |
KR102063656B1 (ko) | 2013-03-15 | 2020-01-09 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
CN105190541A (zh) * | 2013-03-15 | 2015-12-23 | 索夫特机械公司 | 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法 |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US20140281116A1 (en) | 2013-03-15 | 2014-09-18 | Soft Machines, Inc. | Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10467010B2 (en) | 2013-03-15 | 2019-11-05 | Intel Corporation | Method and apparatus for nearest potential store tagging |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9535697B2 (en) * | 2013-07-01 | 2017-01-03 | Oracle International Corporation | Register window performance via lazy register fills |
GB2510655B (en) * | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
US20150128117A1 (en) * | 2013-11-07 | 2015-05-07 | Netronome Systems, Inc. | Linker that statically allocates non-memory resources at link time |
US9639369B2 (en) | 2013-11-11 | 2017-05-02 | Apple Inc. | Split register file for operands of different sizes |
US10235232B2 (en) | 2014-02-10 | 2019-03-19 | Via Alliance Semiconductor Co., Ltd | Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction |
US9588845B2 (en) * | 2014-02-10 | 2017-03-07 | Via Alliance Semiconductor Co., Ltd. | Processor that recovers from excessive approximate computing error |
KR101923289B1 (ko) | 2014-03-27 | 2018-11-28 | 인텔 코포레이션 | 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직 |
CN106796506B (zh) | 2014-05-12 | 2019-09-27 | 英特尔公司 | 用于向自修改代码提供硬件支持的方法和装置 |
US9870328B2 (en) * | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Managing buffered communication between cores |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
EP3350690B1 (en) * | 2015-09-19 | 2022-11-09 | Microsoft Technology Licensing, LLC | Implicit program order |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US11977891B2 (en) * | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US9779028B1 (en) | 2016-04-01 | 2017-10-03 | Cavium, Inc. | Managing translation invalidation |
JP6717026B2 (ja) * | 2016-04-19 | 2020-07-01 | オムロン株式会社 | 制御装置、中継装置、制御装置の制御方法、中継装置の制御方法、制御プログラム、および記録媒体 |
US11687345B2 (en) | 2016-04-28 | 2023-06-27 | Microsoft Technology Licensing, Llc | Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers |
US10127121B2 (en) * | 2016-06-03 | 2018-11-13 | International Business Machines Corporation | Operation of a multi-slice processor implementing adaptive failure state capture |
CN107515866B (zh) * | 2016-06-15 | 2021-01-29 | 阿里巴巴集团控股有限公司 | 一种数据操作方法、装置和系统 |
US20170371660A1 (en) * | 2016-06-23 | 2017-12-28 | Microsoft Technology Licensing, Llc | Load-store queue for multiple processor cores |
US10127074B2 (en) * | 2017-01-27 | 2018-11-13 | Futurewei Technologies, Inc. | Transaction identification synchronization |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10489382B2 (en) | 2017-04-18 | 2019-11-26 | International Business Machines Corporation | Register restoration invalidation based on a context switch |
US10838733B2 (en) * | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US11010192B2 (en) | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10552164B2 (en) | 2017-04-18 | 2020-02-04 | International Business Machines Corporation | Sharing snapshots between restoration and recovery |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US10545766B2 (en) | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
US10564977B2 (en) | 2017-04-18 | 2020-02-18 | International Business Machines Corporation | Selective register allocation |
US10540184B2 (en) | 2017-04-18 | 2020-01-21 | International Business Machines Corporation | Coalescing store instructions for restoration |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US10831626B2 (en) * | 2017-10-19 | 2020-11-10 | International Business Machines Corporation | Method to sort partially good cores for specific operating system usage |
KR102022480B1 (ko) * | 2017-11-29 | 2019-09-18 | 연세대학교 산학협력단 | 실시간 시스템 정보를 이용한 고성능 컴퓨팅 시스템의 체크포인트 빈도 조절 방법 및 장치 |
US10915402B2 (en) * | 2018-09-12 | 2021-02-09 | Apple Inc. | Software fault monitoring |
US11068267B2 (en) * | 2019-04-24 | 2021-07-20 | International Business Machines Corporation | High bandwidth logical register flush recovery |
CN111857825A (zh) * | 2020-07-20 | 2020-10-30 | 北京百度网讯科技有限公司 | 指令执行方法、装置、电子设备和计算机可读存储介质 |
TWI748914B (zh) * | 2021-04-15 | 2021-12-01 | 瑞昱半導體股份有限公司 | 阻抗控制電路 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05210526A (ja) * | 1991-08-29 | 1993-08-20 | Internatl Business Mach Corp <Ibm> | 命令の並行処理を可能にするチェックポイント同期化 |
JPH05216663A (ja) * | 1991-05-21 | 1993-08-27 | Motorola Inc | 同時的命令撤去及びバックトラッキングを行なうためのデータプロセッサ |
WO1993022722A1 (en) * | 1992-05-01 | 1993-11-11 | Seiko Epson Corporation | A system and method for retiring instructions in a superscalar microprocessor |
JPH06230961A (ja) * | 1993-01-04 | 1994-08-19 | Motorola Inc | データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法 |
JPH0812618B2 (ja) * | 1991-08-29 | 1996-02-07 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 再試行及びチェックポイント設定によるエラー回復装置及び方法 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4703481A (en) * | 1985-08-16 | 1987-10-27 | Hewlett-Packard Company | Method and apparatus for fault recovery within a computing system |
US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
DE3735828C2 (de) * | 1986-10-24 | 1994-11-10 | Hitachi Ltd | Verfahren zur Wiederaufnahme der Ausführung von Anweisungen nach einer Unterbrechung in einer mikroprogrammgesteuerten Datenverarbeitungsvorrichtung |
US4956767A (en) * | 1988-02-23 | 1990-09-11 | Stellar Computer, Inc. | Data processing system with model for status accumulating operation by simulating sequence of arithmetic steps performed by arithmetic processor |
US4903264A (en) * | 1988-04-18 | 1990-02-20 | Motorola, Inc. | Method and apparatus for handling out of order exceptions in a pipelined data unit |
US4893233A (en) * | 1988-04-18 | 1990-01-09 | Motorola, Inc. | Method and apparatus for dynamically controlling each stage of a multi-stage pipelined data unit |
US5003462A (en) * | 1988-05-31 | 1991-03-26 | International Business Machines Corporation | Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means |
US4912707A (en) * | 1988-08-23 | 1990-03-27 | International Business Machines Corporation | Checkpoint retry mechanism |
EP0378415A3 (en) * | 1989-01-13 | 1991-09-25 | International Business Machines Corporation | Multiple instruction dispatch mechanism |
US5127093A (en) * | 1989-01-17 | 1992-06-30 | Cray Research Inc. | Computer look-ahead instruction issue control |
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 |
US5093908A (en) * | 1989-04-17 | 1992-03-03 | International Business Machines Corporation | Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor |
JPH02287858A (ja) * | 1989-04-28 | 1990-11-27 | Toshiba Corp | 分散処理システムのリスタート方式 |
US5075844A (en) * | 1989-05-24 | 1991-12-24 | Tandem Computers Incorporated | Paired instruction processor precise exception handling mechanism |
US5150468A (en) * | 1989-06-30 | 1992-09-22 | Bull Hn Information Systems Inc. | State controlled instruction logic management apparatus included in a pipelined processing unit |
US5053987A (en) * | 1989-11-02 | 1991-10-01 | Zoran Corporation | Arithmetic unit in a vector signal processor using pipelined computational blocks |
US5193206A (en) * | 1989-12-27 | 1993-03-09 | Motorola, Inc. | Reduce instruction set microprocessor |
AU629007B2 (en) * | 1989-12-29 | 1992-09-24 | Sun Microsystems, Inc. | Apparatus for accelerating store operations in a risc computer |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
DE69021712T2 (de) * | 1990-02-08 | 1996-04-18 | Ibm | Wiederanlaufkennzeichnungsmechanismus für fehlertolerierende Systeme. |
US5271013A (en) * | 1990-05-09 | 1993-12-14 | Unisys Corporation | Fault tolerant computer system |
US5261071A (en) * | 1991-03-21 | 1993-11-09 | Control Data System, Inc. | Dual pipe cache memory with out-of-order issue capability |
DE69230554T2 (de) * | 1991-07-08 | 2000-07-06 | Seiko Epson Corp | Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus |
US5313647A (en) * | 1991-09-20 | 1994-05-17 | Kendall Square Research Corporation | Digital data processor with improved checkpointing and forking |
JP2634343B2 (ja) * | 1991-10-28 | 1997-07-23 | 信越化学工業株式会社 | 半導体ウェーハの保持方法 |
US5511172A (en) * | 1991-11-15 | 1996-04-23 | Matsushita Electric Co. Ind, Ltd. | Speculative execution processor |
DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
US5479616A (en) * | 1992-04-03 | 1995-12-26 | Cyrix Corporation | Exception handling for prefetched instruction bytes using valid bits to identify instructions that will cause an exception |
US5313634A (en) * | 1992-07-28 | 1994-05-17 | International Business Machines Corporation | Computer system branch prediction of subroutine returns |
JP3531166B2 (ja) * | 1992-12-31 | 2004-05-24 | セイコーエプソン株式会社 | レジスタ・リネーミングのシステム及び方法 |
US5421022A (en) * | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Apparatus and method for speculatively executing instructions in a computer system |
US5428807A (en) * | 1993-06-17 | 1995-06-27 | Digital Equipment Corporation | Method and apparatus for propagating exception conditions of a computer system |
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 |
US5644742A (en) * | 1995-02-14 | 1997-07-01 | Hal Computer Systems, Inc. | Processor structure and method for a time-out checkpoint |
-
1995
- 1995-06-07 US US08/473,223 patent/US5644742A/en not_active Expired - Lifetime
- 1995-06-07 US US08/487,801 patent/US5751985A/en not_active Expired - Lifetime
- 1995-06-07 US US08/478,025 patent/US5651124A/en not_active Expired - Lifetime
- 1995-06-07 US US08/476,419 patent/US5659721A/en not_active Expired - Lifetime
- 1995-06-07 US US08/472,394 patent/US5673408A/en not_active Expired - Lifetime
- 1995-06-07 US US08/484,795 patent/US5673426A/en not_active Expired - Lifetime
- 1995-06-07 US US08/482,075 patent/US5655115A/en not_active Expired - Lifetime
- 1995-06-07 US US08/483,958 patent/US5649136A/en not_active Expired - Lifetime
-
1996
- 1996-02-13 KR KR1019970705598A patent/KR100425805B1/ko not_active IP Right Cessation
-
1997
- 1997-06-11 US US08/872,982 patent/US5966530A/en not_active Expired - Lifetime
-
2008
- 2008-10-14 JP JP2008265785A patent/JP5018728B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05216663A (ja) * | 1991-05-21 | 1993-08-27 | Motorola Inc | 同時的命令撤去及びバックトラッキングを行なうためのデータプロセッサ |
JPH05210526A (ja) * | 1991-08-29 | 1993-08-20 | Internatl Business Mach Corp <Ibm> | 命令の並行処理を可能にするチェックポイント同期化 |
JPH0812618B2 (ja) * | 1991-08-29 | 1996-02-07 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 再試行及びチェックポイント設定によるエラー回復装置及び方法 |
WO1993022722A1 (en) * | 1992-05-01 | 1993-11-11 | Seiko Epson Corporation | A system and method for retiring instructions in a superscalar microprocessor |
JPH06230961A (ja) * | 1993-01-04 | 1994-08-19 | Motorola Inc | データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755329B2 (en) | 2018-12-06 | 2023-09-12 | Fujitsu Limited | Arithmetic processing apparatus and method for selecting an executable instruction based on priority information written in response to priority flag comparison |
Also Published As
Publication number | Publication date |
---|---|
US5673426A (en) | 1997-09-30 |
US5966530A (en) | 1999-10-12 |
KR19980702203A (ko) | 1998-07-15 |
US5644742A (en) | 1997-07-01 |
US5655115A (en) | 1997-08-05 |
US5651124A (en) | 1997-07-22 |
US5751985A (en) | 1998-05-12 |
US5649136A (en) | 1997-07-15 |
KR100425805B1 (ko) | 2004-07-27 |
JP5018728B2 (ja) | 2012-09-05 |
US5673408A (en) | 1997-09-30 |
US5659721A (en) | 1997-08-19 |
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 | |
US5463745A (en) | Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system | |
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 | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
JP3637920B2 (ja) | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 | |
JP3678444B2 (ja) | パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ | |
US5826055A (en) | System and method for retiring instructions in a superscalar microprocessor | |
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 | |
US6973563B1 (en) | Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction | |
US6073231A (en) | Pipelined processor with microcontrol of register translation hardware | |
US5918046A (en) | Method and apparatus for a branch instruction pointer table |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120214 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120416 |
|
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: 20120515 |
|
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: 20120528 |
|
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: 20150622 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |