JPH11500551A - 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 - Google Patents

特殊機能を提供する高性能投機的実行プロセッサの構造及び方法

Info

Publication number
JPH11500551A
JPH11500551A JP8525085A JP52508596A JPH11500551A JP H11500551 A JPH11500551 A JP H11500551A JP 8525085 A JP8525085 A JP 8525085A JP 52508596 A JP52508596 A JP 52508596A JP H11500551 A JPH11500551 A JP H11500551A
Authority
JP
Japan
Prior art keywords
instruction
execution
signal
data
instructions
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
Application number
JP8525085A
Other languages
English (en)
Other versions
JP3670290B2 (ja
Inventor
ダブリュ. シェン,ジーン
スゼエトー,ジョン
エー. パトカー,ニッティーン
シー. シェバノウ,マイケル
秀樹 大曽根
エー. シモーネ,マイケル
拓巳 丸山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US08/482,075 external-priority patent/US5655115A/en
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPH11500551A publication Critical patent/JPH11500551A/ja
Application granted granted Critical
Publication of JP3670290B2 publication Critical patent/JP3670290B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 数多くの特殊なプロセッサ機能及び能力を提供するための構造及び方法を内含する、中央処理ユニット(CPU)といった高性能プロセッサが開示されている。これらの構造及び方法には、制限的な意味はないものの、(1)精確な状態を維持しながらロード/ストア命令を含む長待ち時間命令を攻撃的にスケジュールし;(2)任意の命令境界において精確な状態を維持し回復し;(3)精確な状態を維持するべく命令状態をトラッキングし;(4)精確な状態を維持するべく命令をチェックポインティングし;(5)タイムアウトチェックポイントを新規作成し維持し使用し;(6)浮動小数点例外をトラッキングし;(7)リネーム可能なトラップスタックを新規作成し維持し使用し;(8)複数の同時未解決分岐評価のためのウォッチポイントを新規作成し維持し使用し;(9)精確な状態を維持するために命令状態をトラッキングし;(10)精確な状態を維持する一方でプロセッサのスループットを増大させるための構造及び方法が含まれている。

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 MAINTA IN PRECISE STATE”の継続であり;該継続出願は同じく発明者Gene W.Shen et a l.によって1995年2月14日に出願された、米国特許出願代理人整理番号第A-606 25/JAS、米国特許出願第08/390,885号“PROCESSOR STRUCTURE ANDMETHOD FOR TR ACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE”の継続である。 発明者Takeshi Kitaharaによって1995年2月14日に出願された、米国特許出願 代理人整理番号第1706号、米国特許出願第08/388,602号“INSTRUCTION FLOW CON TROL CIRCUIT FOR SUPERSCALER MICROPROCESSOR”;発明者Michael Simone及びM ichael Shebanowによって1995年2月14日に出願された、米国特許出願代理人整 理番号第1693号、米国特許出願第08/388,389号“ADDRESSING METHOD FOR EXECUT ING LOAD INSTRUCTIONS OUT OF ORDER WITH RESPECT TO STORE INSTRUCTIONS” ;発明者DeForest Tovey.Michael Shebanow,John Gmuender によって1995年2月 14日に出願された、米国特許出願代理人整理番号1707号、米国出願第08/388,606 号“METHOD AND APPARATUS FOR EFFICIENTLY WRITING RESULTS TO RENAMED REGI STERS”;及び発明者DeForest Tovey,Michael Shebanow,John Gmuender によっ て1995年2月14日に出願された、米国特許出願代理人整理番号第17 41号、米国出願第388,364号“METHOD AND APPARATUS FOR COORDINATING THE USE OF PHYSICAL REGISTERS IN A MICROPROCESSOR”はいずれも参考のため本願明細 書にその内容を引用する。 発明者Gene W.Shen,John Szeto,Niteen A.Patkar及びMichael C.Shebanowによ って1995年2月14日に出願された、米国特許出願第08/390,885号“PROCESSOR ST RUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE S TATE”;発明者Gene W.Shen,John Szeto,Niteen A.Patkar及びMichael C.Sheban owによって1995年3月3日に出願された米国特許出願第08/398,299号“PROCESSO R STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECI SE STATE”;発明者Chih-Wei David Chang.Kioumars Dawallu,Joel F.Boney,Min g-Ying Li,及びJen-Hong Charles Chenによって1995年3月3日に出願された、 米国特許出願第08/397,810号“PARALLEL ACCESS MICRO-TLB TO SPEED UP ADDRES S TRANSLATION”;発明者Leon Kuo-Liang Peng,Yolin Lih,及びChih-Wei David Changによって1995年3月3日に出願された、米国特許出願第08/397,809号“LOO KASIDE BUFFER FOR ADDRESS TRANSLATION IN A COMPUTER SYSTEM”発明者Michae l C.Shebanow,Gene W.Shen,Ravi Swami,及びNiteen Patkar によって1995年3月 3日に出願された米国特許出願第08/397,893号“RECLAMATION OF PROCESSOR RES OURCES IN A DATA PROCESSOR”;Michael C.Shebanow,John Gmuender,Michael A .Simone,John R.F.S Szeto,Takumi Maruyama,及びDeForest W.Toveyによって19 95年3月3日に出願された米国特許出願第08/397,891号“METHOD AND APPARATUS FOR SELECTING INSTRUCTIONS FROM ONES READY TO EXECUTE”;Shalesh Thusoo ,Farnad Sajjadian,Jaspal Kohli,及びNiteen Patcar によって1995年3月3日 に出願された米国特許出願第08/397,911号“HARDWARE SUPPORT FOR FAST SOFTWA RE EMULATION OF UNIMPLEMENTED INSTRUCTIONS”,Akira Katsuno,Sunil Savkar ,及びMichael C.Shebnow によって1995年3月3日に出願された米国特許出願第 08/398,284号“METHOD AND APPARATUS FOR ACCELERATING CONTROL TRANSFER RET URNS”,Akira Katsuno,Niteen A.Patcar,Sunil Savkar,及びMichael C.Shebno w によって1995年3月3日に出願された米国特許出願第08/398,066号“METHODS FOR UPDATING FETCH PROGRAM COUNTER”;Sunil Savkarによって1995年3月3日 に出願された米国特許出願第08/398,151号“METHOD AND APPARATUS FOR RAPID E XECUTION OF CONTROL TRANSFER INSTRUCTIONS”;Chih-Wei David Chang,Joel F redrick Boney,及びJaspal Kohliによって1995年3月3日に出願された米国特 許第08/397,910号“METHOD AND APPARATUS FOR PRIORITIZING AND HANDLING ERR ORS IN A COMPUTER SYSTEM”;Michael Simoneによって1995年3月3日に出願さ れた米国特許出願第08/397,800号“METHOD AND APPARATUS FOR GENERATING A ZE RO BIT STATUS FLAG IN A MICROPROCESSOR”;及びChien Chen及びYizu Lu によ って1995年3月3日に出願された米国特許出願第08/397,912号“ECC PROTECTED MEMORY ORGANIZATION WITH PIPELINED READ-MODIFY-WRITE ACCESS”もそれぞれ 参考のため本願明細書中に引用した。 発明者Sunil Savkar,Michael C.Shebanow,Gene W.Shen,及びFarnad Sajjadian によって1995年6月1日に出願された米国特許出願第 号“METHOD AND APP ARATUS FOR ROTATING ACTIVE INSTRUCTIONS IN A PARALLEL DATA PROCESSOR”; 及び発明者Sunil Sankar,Michael C.Shebanow,Gene W.Shen,及びFarnad Sajjadi anによって1995年6月1日に出願された米国特許出願第 号“PROGRAMMABLE INSTRUTION TRAP SYSTEM AND METHOD”もそれぞれ参考のため本願明細書中に引 用した。 発明者Gene W.Shen,John Szeto,Niteen A.Patcar,及びMichaelC.Shebanowに よって1995年6月7日に出願された代理人整理番号第A-60624/JAS、米国特許出 願第08/487,801号“PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTIO N STATUS TO MAINTAIN PRCISE STATE”;発明者Gene W.Shen,John Szeto,Niteen A.Patcar,Michael C.Shebanow,及びMichael A.Simoneによって1995年6月7日 に出願された、代理人整理番号第A-60622/JAS、米国特許出願第08/478,025号“ PROCESSOR STRUCTURE AND METHOD FOR AGGRESSIVELYSCHEDULING LONG LATENCY I NSTRUCTIONS INCLUDING LOAD/STORE INSTRUCTIONS WHILE MAINTAINING PRECISE STATE”;発明者Gene W.Shen,John Szeto,Niteen A.Patkar,及びMichael C.She banowによって1995年6月7日に出願された、代理人整理番号第A-60623/JAS、 米国特許出願第08/483,958号“PROCESSOR AND METHOD FOR MAINTAINING AND RES TORING PRECISE STATE AT ANY INSTRUCTION BOUNDARY”;発明者Gene W.Shen,Jo hn Szeto,Niteen A.Patcar,及びMichael C.Shebanowによって1995年6月7日に 出願された、代理人整理番号第A-60625-2/JAS、米国特許出願第08/467,419号“ PROCESSOR STRUCTURE AND METHOD FOR CHECKPOINTING INSTRUCTIONS TO MAINTAI N PRECISE STATE”;発明者Gene W.Shen,John Szeto,Niteen A.Patcar,及びMic hael C.Shebanowによって1995年6月7日に出願された、代理人整理番号第A-60 647/JAS、米国特許出願第08/473,223号“PROCESSOR STRUCTURE AND METHOD FOR A TIME-OUT CHECKPOINT”;発明者Gene W.Shen,John Szeto,及びMichael C.She banowによって1995年6月7日に出願された、代理人整理番号第A-60648/JAS、 米国特許出願第08/484,795号“PROCESSOR STRUCTUREAND METHOD FOR TRACKING F LOATING-POINT EXCEPTIONS”;発明者Hideki Osone及びMichael C.Shebanowによ って1995年6月7日に出願された、代 理人整理番号第A-60649/JAS、米国特許出願第08/472,394号“PROCESSOR STRUCT URE AND METHOD FOR RENAMABLE TRAP-STACK”;及び発明者GeneW.Shen,Michael C.Shebanow,Hideki Osone,及びTakumi Maruyama によって1995年6月7日に出願 された、代理人整理番号第A-60682/JAS、米国特許出願第08/482,073号“PROCES SOR STRUCTURE AND METHOD FOR WATCHPOINT FOR PLURAL SIMULTANEOUS UNRESOLV ED BRANCH EVALUATION”もそれぞれ参考のため本願明細書に引用した。 技術分野 本発明は投機的追越し(out-of-order)実行プロセッサにおいて精確な状態(p recise state)を維持しながら、プロセッサの性能を高める装置、システム、及 び方法に係わる。 発明の背景 プロセッサにおいて、制御流れ命令(例えば分岐命令)、メモリのトランザク ションに起因する待ち時間(latency)、及びマルチサイクル演算を必要とする命 令は、パイプラインに“バブル”を導入する原因となるため、プロセッサが高い 命令実行帯域幅を維持するのを妨げることが多い。投機的追越し命令実行を行う ことによって性能を高めることができる。従来、1つの命令からの中間結果を後 続の命令に利用できないとき、プロセッサは実行を中断するか、または中間結果 が得られるまで“機能停止する”。 2つの技術、即ち、投機的実行と追越し実行によって、この新しいプロセッサ は高い実行帯域幅(execution bandwidth)を維持することができる。投機的実行 は、先行の処理ステップから該当分岐を選択するための情報がないままに1つの 分岐に遭遇した場合、予測 し、この予測に基づいて命令のディスパッチ及び実行を行う公知の技術である。 もし予測が誤りであることが後刻判明したら、分岐誤予測回収によって誤予測さ れた命令シーケンスを取消さねばならない。投機的実行によってプロセッサは命 令の発行及び実行を継続することができる。公知の予測スキームは性能を高める ため、誤予測実行の頻度を極力少なくする。しかし、投機的マシンにおいて、適 正状態の維持は煩雑であり、好ましくないオーバヘッドを伴なう。追越し実行は メモリ及びマルチサイクル命令待ち時間に留意しない技術である。追越し実行を 行うプロセッサにおいては、命令の順序をダイナミックに変更し、順次プログラ ムとは異なる順序で命令を実行することによって利用可能な命令レベル並列性を 見つける。 “精確な例外”モデルは例外条件のソフトウエア解像度を単純化する重要な要 因ではあるが、投機的追越し実行を行うマシンにおいて、精確な例外を維持する のは煩雑な操作である。マシンの状態は一般にプロセッサに特異であり、構造上 の状態はすべての制御/状態レジスタ、データ・レジスタ、アドレス・レジスタ 及びすべての補助メモリの状態を含む。例えばSPARC-V9 Architecture Manualの pp.29 −30にはSPARC-V9制御/状態レジスタが記載されており、ソフトウエア・ プログラマーのよく知るところである。マシンの状態はプロセッサに特異な、か つマシンの状態に関する他のすべてを含む構造上の状態のスーパー・セットであ る。不正命令(faulting instruction)とは例外を発生させる命令である。例外と はプロセッサにその動作を停止させ、処理再開の前にこの例外の原因となった状 況を究明するように指示する状況または条件である。例外はエラーとは限らず、 例えば、割込みをも含む。実行トラップは、例外から生ずる可能性がある。精確 な例外モデルを作成するプロセッサにおいては、不正または例外は構造上の状態 を変更しない。不正命令に 先立つすべての命令に関しては構造上の状態がすでに変更されているが、不正命 令後の命令に関しては構造上の状態は変更されていない。正確な例外モデルがな ければ、ソフトウエアが不正命令を識別し、次いで、不正命令を再試行するか、 または不正命令をバイパスして次の命令を実行するための再始動点(restart poi nt)を算出しなければならない。 短パイプライン単一発行マシンにおいて精確な状態を維持する技術は公知であ る。一般に、短パイプラインマシンは命令の取出し、発行、実行、及び状態を変 更されるライトバック段階を含む約4または5段階以下の段階を有する。単一発 行方式によれば、パイプライン段階におけるどの命令をフラッシュすべきかを考 慮せずにパイプラインをクリアすればよいから、例外または誤予測の場合に回復 が簡単になる。これらの公知技術においては、例外が発生した場合、構造上の状 態を変更する前に検出される。例外が検出されると、パイプラインから命令がフ ラッシュされ、構造上の状態が変更されないように、構造上の状態へデータ、状 態または結果がライトバックされるのを意図的に阻止する。 投機的追越しスーパスカラ(多重発行)方式では単一発行マシンの場合と比較 して、精確な状態を維持することがはるかに困難である。このような投機的追越 しマシンの場合には、エラーを発生させる命令が投機的に実行される可能性があ り、エラーの場所のあとに現われる構造上の状態の変更を取消す方法及び構造を 設ける必要がある。また、例外は多くの場合、プログラムの順序とは異なる順序 で検出される。従って、追越しプロセッサは例外を解読し、どの命令を完了(及 び構造上の状態を変更)させるべきか、どの命令を取消すべきかを判断できねば ならない。 図1は、投機的プロセッサにおいて精確な状態を維持するために 再順序付けバッファを利用する公知のアプローチを示す。再順序付けバッファは 、(結果が得られる)命令実行完了時から実行完了の結果としてマシンの状態が 変更されるまでの間に一時遅延を有効に導入する先入れ/先出しスタックによっ て実現される。メモリへの誤予測分岐命令、実行例外、または同様の状態がライ トバックされるのを阻止することによって精確な状態を維持する。誤予測に基づ く投機的実行を取消すために状態を復旧するのではなく、命令が投機の域を出な い間、状態の変更を阻止することによって、精確な状態を維持するのである。 図2は、命令を実行する前に状態を“チェックポイント”に記憶させ、あとで 、記憶されているチェックポイント情報から状態を復旧することにより、投機的 プロセッサにおいて精確な状態を維持する公知のアプローチを示す。公知のチェ ックポインティングでは、マシンの状態変更を伴なう可能性がある、投機的に実 行された命令を残らずチェックポイントする。各プロセッサはマシンの状態を決 定する一組の状態パラメータ、例えば、すべての制御/状態レジスタ、データレ ジスタの値などを有する。先のマシン状態を復旧するため、状態を決定するすべ てのパラメータを記憶させ、必要に応じて復旧できるようにしなければならない 。公知のチェックポインティング技術では、状態を決定するパラメータのいずれ か1つでも変更する可能性がある命令に関してすべての状態決定パラメータを記 憶させるのが典型的である。チェックポインティングの対象となるすべての命令 について、公知のチェックポインティングでは、実行寸前の特定の命令によって 変更されそうな状態だけでなく、チェックポインティングの対象である命令のい ずれか1つによって変更される可能性のあるすべての状態情報を記憶させる。例 えば、マシンの状態を決定するのに 100個の状態パラメータを必要とするマシン の場合、もし命令“X”の実行が1つだけの制御/状態レジスタを変更する可能 性があるなら、この命令を実行するには、この命令によって変更されると考えら れるパラメータだけでなく、100個の状態パラメータを記憶させる必要がある。 図3は、一連の命令の構造及び内容と公知のチェックポイントとを模式的に示 す説明図であり、特定のマシンまたはCPU のための実際のチェックポイント・デ ータを示すものではない。公知のチェックポイントはサイズが一定であるから、 各チェックポイントは特定の命令によって実際に変更される状態よりも広くなけ ればならない。公知のチェックポインティングを利用する回復としては、例えば 、不正命令または誤予測に基づいて投機的に実行された命令の直前に記憶されて いるチェックポイントを利用しての復旧、チェックポイントされている命令の直 後にまでプログラム・カウンタをバックアップすること、及びチェックポイント されている命令からの命令再実行などがある。 追越し実行を管理し、状況によっては適正状態を維持する手段として、チェッ クポインティング、再順序付けバッファ、履歴バッファ、及びフューチュアファ イルの使用がすでに開示されている。任意の命令境界においてではなく、チェッ クポイント境界においてマシン状態の復旧を可能にする慣用のチェックポインテ ィングはHwu 及びPattが論述している(第14回コンピュータ・アーキテクチュア 年次シンポジウム(1987年6月)における会報pp.18 −26に発表されたW.Hwu 及 びY.N.Pattの“Checkpoint Repair for High Performance Out-of-Order Execut ion Machines”)。パイプラインRISCプロセッサにおける精確な割込みを作成す る方法はWang及びEmnettによって報告されている(“Implementing Precise Int erruptions in Pipelined RISC Processors”,IEEE Micro,1993年8月、pp.3 6 −43)。同じくパイプライン・プロセッサにおける精確な割込み作成はSmith 及びPleszkunによっても報告されている(第12回コンピュータ・アーキテクチュ ア年次国際シンポジウム会報(1985年6月)、pp.36−44におけるJ.E.Smith 及 びA.R.Pleszkunの“Implementation of Precise Interrupts in Pipelined Proc essors”)。高性能スーパスカラ・マイクロプロセッサの設計に関する従来技術 の概要はMike Johnsonが記述している(M.Johnson[a.k.a.William Johnson],S uperscaler Microprocessor Design ,Prentice-Hall,Inc.,Englewood Clitts,New Jersey 07632,1991,ISBN 0-13-875634-1)。これらの参考文献の内容は参考の ため本願明細書中に引用した。 これらの技術のうち、少なくともいくつかは性能を向上させるが、投機の可能 度を制限し、大ざっぱなマシン状態は回復できても命令レベルのマシン状態回復 は不可能であり、完全に満足できるものではない。公知の再順序付けバッファ技 術は、その良さが投機の可能度と正比例するから、投機の可能度に限界がある。 即ち、取消しの対象となりそうなすべての命令に関して、命令実行の結果を再順 序付けバッファに記憶させねばならない。例えば、もしマシンが64個の未決定か つ投機的命令を可能にするなら、再順序付けバッファは結果を記憶するための少 なくとも64個の記憶場所を含まねばならない。公知のチェックポインティングに おいては、チェックポイントされるチェックポイント数はマシン中の未定命令数 よりも少ないのが普通であるが、各チェックポイントに記憶されるデータ量は極 めて大きい(各時点におけるマシンの全体的な状態)。チェックポイント記憶条 件はプロセッサのチップ基板面積に負担を課する。理想的には、精確な状態を維 持するためのスキームは比較的多い同時的に存在する投機的命令に対して線形ま たは低位(例えば対数)関 係にスケールできることが望ましい。再順序付けバッファの入口(entry)記憶域 はデータを記憶するのに充分な幅を持たねばならず、これらの技術はまたすべて の入口までの連想検索を必要とする。これは、非常に大きな再順序付けバッファ にとって困難である。 さらに、精確な状態を回復するための従来の方法は一部の環境で不完全である 。たとえば、投機的分岐の結果として実行される命令が外部「ダム」デバイスの 状態を修正する場合、状態の回復が通常、外部デバイス修正ポイント前のチェッ クポイント境界での状態回復を伴うため、外部デバイスを修正する命令を含む非 不正命令のフォワード再実行を伴う場合である。このような場合、不正命令の再 実行だけでは、外部デバイスの状態変化の効果を元通りにせず、状態回復ポイン トと不正命令との間で非不正命令を再実行することは、さらに問題を生じる。 従来のチェックポインティングでは、命令ストリームの限られた数のポイント でマシン状態をセーブし、チェックポイントされたアーキテクチュラル状態を復 旧して、分岐誤予測または実行エラーから回復する。従来のチェックポインティ ングは命令を1つ1つチェックポイントしない。従来のチェックポインティング は、チェックポイント境界、すなわち、チェックポイントを確立した命令でのみ マシン状態を回復できる。フォールトまたは実行エラーが発生すると、チェック ポイントされた状態は、周知の技術によって回復され、これによって、チェック ポイント後の不正命令を含むすべての命令を事実上「元通り」にする。そして命 令は、たとえば単一発行モードで、チェックポイントされた命令から順次前向き に再実行され、不正命令に到達する。 この従来のチェックポインティング技術では投機的実行が可能だが、多くの点 で不利益である。たとえば、これは堅牢な例外回復と ならない。間欠的エラーでは、例外作成命令前のチェックポイントへの従来のマ シンバックアップと、チェックポイント後の命令の再実行は決定的な行動となら ない場合があり、再実行された命令の誤って変更された状態を伝播することによ って、マシン状態の混乱を増すことがある。従来のチェックポインティングとマ シンバックアップ手順は、命令の再実行を最小限にしようとするものではない。 さらに、ハードウェアの故障やマシンのタイムアウトなど災害的なマシンエラー は、回復したチェックポイント済み命令と例外を生じる命令との間のすべての命 令が再実行されると、プロセッサをデッドロックさせることがある。 従来の「再順序づけバッファ」とは、予め定義された大きさの先入れ先出し( FIFO)メモリ構造の再順序づけバッファで投機的命令を管理する。命令が実 行を完了したら、実行によるデータ値の結果が再順序付けバッファに書き込まれ 、バッファを移動して上位に現れる時、データ値が再順序づけバッファからレジ スタファイルに書き込まれる。再順序づけバッファの大きさは、命令実行の完了 とアーキテクチュラル状態の恒久的修正との間の遅延を効果的に定義する。一旦 データ値がレジスタに書き込まれると、これらを元通りにすることはできない。 再順序付けバッファの記述項(エントリ)をレジスタファイルの記述項と関連づ ける手順である「連想探索」について、M.Johnson がSuperscalar Microprocess or Design の40頁以降で説明している。 再順序付けバッファスキームには少なくとも3つの限界がある。1つ目は、従 来の再順序づけバッファスキームでは、命令実行の結果のみが再順序付けバッフ ァにセーブされ、プログラムカウンタ(PC)値はセーブされない。そのため、 再順序づけバッファを使った分岐誤予測回復には、PC再構築、命令フェッチ、 命令発行の追 加ステップが必要となる。その結果、再順序付けバッファを使った分岐誤予測か らの従来の回復は遅れる。 第2に、再順序づけバッファは一般に限られた命令ミックスの投機的実行しか できない。たとえば、命令発行段階中に検出されたトラップは(発行トラップ) 、一般に制御レジスタアップデートを伴うため、再順序付けバッファを使って投 機的に実行されないことがある。再順序付けバッファ技術は、制御レジスタアッ プデートを伴う命令の投機的実行をサポートしない。一定の命令セットアーキテ クチャで発行トラップを投機的に入力できないこと(例:Sun Microsystems SPA RCアーキテクチャの「スピル/フィル」 トラップ)は、大きな性能上の限界と なる。 第3に、再順序付けバッファの大きさは一般に、プロセッサに許された未定命 令数の直接線形関数である。たとえば、64個の未定命令の可能なプロセッサで は、64個の記述項を持つ再順序付けバッファが必要となる。プロセッサ内に多 数のバッファレジスタを割り当てることは禁止されることがあり、特に大型のア クティブ命令ウィンドウ、すなわち比較的多数の同時未定命令によって、命令レ ベルの並列性の抽出が改善されるデータフロープロセッサに当てはまる。データ フロープロセッサとは、命令実行の順序が、従来の非データフロープロセッサの ようにプログラムカウンタのインクリメントによるのではなく、オペランドやデ ータ利用可能性によって決定するプロセッサである。 フューチャファイルは、再順序付けバッファの連想探索問題を避けるための再 順序づけバッファ技術の修正である。フューチャファイルについては、M.Johnso n のSuperscalar Microprocessor Design の94頁から95頁に説明されている 。履歴バッファは、順序無視(out-of-order)完了のパイプライン・スカラー・ プロセッサで 精確な割り込みを実行するため提案された方法と構造で、M.JohnsonのSuperscal ar Microprocessor Design の91頁から92頁に説明されている。 本書で全体を参照することにより明示的に組み入れるD.WeaverとT.Germond に よるThe SPARC Architecture Manual N Version 9 、Englewood Cliffs(199 4年)では、順序無視投機的実行プロセッサの特定のタイプについて説明してい る。SPARC V9アーキテクチャには、浮動小数点状態レジスタ(FSR)が必要で ある。FSRには、FSR_accrued_exception(FSR.a exc)フィールド、FSR_current_exception(FSR. cexc)フィールド、FSR_floatingpoint_trap_ty pe(FSR.ftt)フィールドの3つのフィールドがあり、浮動小数点例外 が発生すると更新されて、トラップハンドリングルーチンが、浮動小数点例外に よるトラップに対処するため利用する。これらフィールドのアップデートは、命 令がプログラム順序とは異なる順序で実行、完了するため、順序無視実行プロセ ッサでは難しい。これらフィールドは、命令がプログラム順序で発行、実行され たかのように更新されるか、更新されたように見えなければならないため、これ らの例外を追跡してFSRレジスタを正しく更新するためには、装置および対応 する方法が必要である。 命令を投機的に実行できるデータプロセッサでは、分岐方向(取るか取らない か)、あるいは分岐アドレス(目標アドレスまたは分岐命令の次のアドレス)は 、解決する前に予測可能である。後に、これら予測が誤っていることがわかれば 、プロセッサは以前の状態にバックアップして、正しい分岐ストリームで命令実 行を再スタートする。但し、市販のスーパスカラプロセッサの大半は、分岐予測 が正しいかどうかをチェックするには、1サイクルあたり1つの分岐のみ評価可 能である。しかし、多重予測分岐は1つのサイクルで評価できることが多い。そ のため、他の場合では実行可能な分岐評価が遅延することになる。分岐評価の遅 延は、プロセッサの性能に大きな影響を与える。 さらに、従来の投機的実行プロセッサでは、トラップが生じると、プロセッサ は予測されたすべての分岐が解決してトラップが真実であり投機的ではないこと を確かめるまで待たなければならない。トラップが真実であるかどうかをプロセ ッサが確かめる最も簡単な方法は、トラップを取る前にプロセッサを同期させる ことである(すなわち、トラップ条件発生前に発行されたすべての命令を実行、 完了する)。但し、頻繁に発生するトラップにこれを行うと、プロセッサの性能 を落とす。スピル/フィル発行トラップとソフトウェアトラップ(Tcc命令) がしばしば発生するSPARC-V9アーキテクチャでは特にそれが当てはまる。プロセ ッサの性能を上げるためにはこの問題を解決しなければならない。 発明の概要 先行技術の前記問題は、多数の特殊プロセッサ機能および能力を提供する構造 および方法を含む高性能プロセッサに関する発明で対処される。これら構造およ び方法には、(1)精確状態を維持しながらロード/ストア命令を含む長待ち時 間(latency)命令の積極的なスケジューリング;あらゆる命令境界での精確状態 の維持と回復、(3)精確状態を維持するための命令状態の追跡、(4)精確状 態を維持するための命令のチェックポインティング、(5)タイムアウトチェッ クポイントの作成、維持および利用、(6)浮動小数点例外の追跡、(7)リネ ーム可能なトラップスタックの作成、維 持および利用、(8)複数の同時未解決分岐評価のためのウォッチポイントの作 成、維持および利用、(9)精確状態維持のための命令状態追跡、(10)精確 状態を維持しながらのプロセッサスループット改善のための構造および方法、を 限定せずに含む。他の構造機能および能力は下記の開示および添付の図面と請求 の範囲で説明される。 前記問題は、本発明の方法および構造の一側面によって解決されるが、これは 、発行時に各命令に独自の識別タグを割り当て、そのタグを最初のアクティブな 命令データ構造で記憶場所に関連させ、各命令の命令アクティビティ状態の変化 に対応して記憶場所に記憶されたデータを更新し、命令アクティビティ状態に対 応して移動する記憶場所に複数のポインタを維持することによって、精確状態の 追跡と維持を行うものである。状態情報には、命令発行時に設定され、エラーな しに実行が完了するとクリアされる1つのアクティブビットが含まれる。最後に 発行された命令を指すポインタ(発行した命令のポインタ)、エラーなしに完了 し、順序的に早い命令すべてがエラーなしに完了した命令を指すポインタ(最後 にコミットした命令のポインタ)、割り当てられたプロセッサリソースを取り戻 した最後の命令(取り戻した命令のポインタ)が設定される。これら3つのポイ ンタは、データ構造の1つの命令に関連する各場所のアクティブビットの比較お よび所定の規則に基づいて、データ構造に沿って後に発行された命令に向かって 前進する。命令の例外またはエラー条件は、アクティブビットの変更を妨げるの で、ポインタの移動が制御され、これら条件下で妨げられる。 前記問題は、本発明の方法および構造の別の側面によって解決されるが、これ は、ロード/ストア命令を含む、外部メモリ参照命令などの長待ち時間命令を、 投機的順序無視実行プロセッサの短待ち 時間命令の前に追跡および積極的にスケジューリングしながら、メモリ参照命令 を他の命令と区別し、どの命令の予測が終わって投機的結果を有するかを識別し 、投機的分岐誤予測や実行例外の懸念なしに実行可能な実行命令を参照するメモ リのみスケジューリングすることによって、精確状態を維持する。このようにス ケジューリングできる命令は、発行時に各命令に独自の識別タグを割り当て、そ のタグをデータ構造の記憶場所に関連させ、各命令の命令アクティビティ状態の 変化に対応してデータ構造の記憶場所に記憶されたデータを更新し、命令アクテ ィビティ状態に対応して移動する記憶場所に複数のポインタを維持することによ って、追跡する。状態情報には、命令発行時に設定され、エラーなしに実行が完 了するとクリアされる1つのアクティブ命令インジケータが含まれる。最後に発 行された命令、エラーなしに完了し、順序的に早い命令すべてがエラーなしに完 了した命令(最後にコミットした命令)、割り当てられたプロセッサリソースを 取り戻した最後の命令(取り戻した命令)を指すポインタが設定される。さらに 、データ構造の第2の記憶場所にタグを関連させ、メモリ参照命令のような長待 ち時間命令について命令アクティビティ状態変化に応じて第2記憶場所に記憶さ れたデータを更新し、長待ち時間(メモリ参照等)命令アクティビティ状態に対 応して移動する記憶場所に複数のポインタを維持する。状態情報には、長待ち時 間命令が発行された時点でクリアされるが、他の命令タイプすべてについて設定 され、命令実行がエラーなしに完了した時にクリアされる長待ち時間命令タイプ が含まれる。最も早く予測された分岐命令を指す第1ポインタ(予測分岐ポイン タ)がデータ構造に設定される。エラーなしに完了し、順序的に前のすべての命 令がエラーなしに完了し、アクティブな長待ち時間命令を越えて前進する最後の 命令を指す第2ポインタが設定される。 発行、コミット、リタイア、予測された分岐と、長待ち時間ポインタは、各場所 のアクティブビットとメモリビットの比較および所定の規則に基づき、第1およ び第2環状データ構造に沿って後に発行された命令に向かって前進する。例外ま たは命令のエラー条件は、アクティブビットとメモリビットの変更を妨げるため 、これら条件下ではポインタの移動は妨げられる。1以上のデータ構造を設けて アクティビティ状態と命令タイプデータを記憶することができ、インジケータは データ構造に記憶されるセットまたはクリアされたビットでもよい。 前記問題は、本発明の方法および構造の別の側面によって解決されるが、これ は、分岐命令や、プログラムカウンタ不連続性を作ったり、制御レジスタ値を修 正する副作用のある命令を含む命令タイプの所定セットにのみにチェックポイン トを作成し、プログラムカウンタの不連続性を作る各命令にチェックポイントを 作成するか、プロセッサを同期させて状態を修正することのある命令を順序通り に実行して、プロセッサを例外から回復するための手段および方法を提供するこ とで、投機的順序無視実行プロセッサの命令境界で精確なマシン状態を回復する 方法を提供する。例外条件からの回復には、実行例外が発生した時の命令一連番 号、またはサイクル中に1つ以上の実行例外が発生した時の最も早い命令一連番 号の決定および記憶と、実行例外後に最も近い前回チェックポイントした命令に プロセッサをバックアップし、チェックポイントが現在発行されている命令と不 正命令との間にある場合、チェックポイントした情報からプロセッサ状態を回復 し、レジスタリソースを更新し、チェックポイントした命令があれば、ここから 最も早い不正命令の直前のポイントまでのバックステップ量でプロセッサのプロ グラムカウンタをデクリメントすることによるプロセッサのバックステップが含 まれる。今後の改良では、従来のチェックポインティングに必要な多量の記憶装 置は、レジスタデータそのものではなく、ロジカルおよびフィジカルレジスタリ ネームマップをチェックポインティングすることによって減少する。 前記問題は、本発明の方法および構造の別の側面によって解決されるが、これ は、プロセッサにチェックポインティング命令を設けてチェックポイントした状 態を減らす一方、命令の発行および実行前にCPUで実行された時アーキテクチ ュラル状態を修正するような命令を予め識別し、特定の命令のチェックポイント に必要な状態記憶量と典型的命令ストリームで命令が発生する頻度を含む所定の 選択基準に基づき、実行前に特定の命令のアーキテクチュラル状態をチェックポ インティングすることなしに特別実行モードで実行するため識別された命令の内 の1つを予め選ぶことによって、プロセッサの精確状態を維持する。そして、チ ェックポイントは識別した命令についてのみ形成し、状態を修正するような他の 命令はチェックポイントせず、特別な同期モードで実行し、例外が発生した時に 、実行結果をプロセッサ状態に書き戻す前にその例外に対処できるようにする。 本発明の方法および構造の1実施例では、この基準は、修正可能な状態の種類と 、実行中に命令によって修正されることのある修正可能状態の量からなり、おそ らくは所定の名目命令ストリームで命令の発生する頻度が含まれる。低推定統計 頻度を持って現れ、比較的大きなチェックポイント記憶量の必要な命令を同期モ ードの実行に選択し、チェックポイントしないことが有利である。本発明の構造 および方法の1実施例では、プロセッサの同期においては、実行前に命令ストリ ームでのマシン同期を必要とする同期命令として命令を識別し、未解決の発行済 み命令をすべてコミットし、リタイアして、エラーなしに実行を完了して実行結 果を状態に書 き戻すまで同期命令実行を遅延させ、マシン同期の必要とする各命令を逐次順序 通り実行し、状態へのライトバック前に各同期命令実行から生じる例外条件を識 別し、同期命令実行中に生じることのある例外条件に対処し、その後にのみ実行 結果をマシン状態に書き戻すようにして、精確状態を同期命令のチェックポイン ティングなしに維持できるようにする。 前記問題は、本発明の方法および構造の別の側面によって解決されるが、これ は、デコードした命令属性にのみ基づいて現在のプロセッサ状態を記憶するため のチェックポイントを形成するのではなく、発行した命令数、経過したクロック サイクル数、および最後にチェックポイントを形成してからの間隔に基づいてチ ェックポイントを形成する。本発明のチェックポインティングに基づくタイムア ウト条件ベースのチェックポインティングは、命令の最大数をチェックポイント 境界以内に限定するため、例外条件からの回復期間を抑制する。命令ウィンドウ のサイズがチェックポイント境界内の命令最大数より大きい限り、例外発生時、 プロセッサは命令デコードベースのチェックポイント技術より早くチェックポイ ントした状態を復旧することができ、プロセッサの命令ウィンドウサイズへの状 態回復依存をなくす。本発明のタイムアウトチェックポイント形成は、従来のチ ェックポイントを実行する構造および方法、または本発明のロジカルおよびフィ ジカルなレジスタリネームマップチェックポインティング技術に用いることがで きる。本発明のタイムアウトチェックポイント形成構造および方法は、従来のプ ロセッサバックアップ技術、およびプロセッサバックアップとバックステッピン グを含む本発明のバックトラッキング技術と共に用いることができる。 前記問題は、本発明の構造および方法の別の側面によって解決さ れるが、これは、発行ユニット、実行手段、浮動小数点例外ユニット、精確状態 ユニット、浮動小数点状態レジスタおよび書き込み手段からなるプログラム制御 順序無視実行データプロセッサを提供する。発行ユニットは実行のプログラム制 御順序で命令を発行する。発行された命令には浮動小数点命令と非浮動小数点命 令が含まれる。実行手段は、少なくとも浮動小数点命令が実行手段によってプロ グラム制御順序を無視して実行されるよう、発行された命令を実行する。浮動小 数点実行ユニットには、記憶要素をはじめとするデータ記憶構造が含まれる。発 行された各命令は記憶要素の1つに対応する。各記憶要素は、浮動小数点命令識 別フィールドと、浮動小数点トラップタイプフィールドを有する。浮動小数点例 外ユニットにも、対応する記憶要素の浮動小数点命令識別フィールドに、発行さ れた各命令に関してデータを書き込み、対応する発行済み命令が浮動小数点命令 か否かを示すための第1ロジックが含まれる。これはさらに、実行中に1つ以上 の浮動小数点実行例外を生じて、浮動小数点実行トラップの予め定義された複数 の種類の対応する1つとなる発行済み浮動小数点命令について、対応する記憶要 素の浮動小数点トラップタイプフィールドにデータを書き込み、結果として生じ る浮動小数点実行トラップの予め定義された種類の1つを識別する第2のロジッ クが含まれる。精確状態手段は、実行中に実行例外を生じず、プログラム制御順 序でこれに先行するすべての発行済み命令がリタイアした発行済み命令をそれぞ れリタイアする。予め定義した実行例外の最初の1つが発行済み命令によって生 じた時、実行手段は発行済み命令の実行を継続し、精確状態手段は、リタイアで きない発行済み命令に遭遇するまで発行済み命令のリタイアを継続することによ って実行トラップの順序付けを行う。リタイアできない発行済み命令は、(a) 第1の実行例外を生じさせた発行済み命 令、および(b)第1の実行例外を生じさせた発行済み命令より早く発行された が、第2の実行例外を第1の実行例外より遅く発生させた発行済み命令の1つで ある。浮動小数点状態レジスタは浮動小数点トラップタイプフィールドを有する 。書き込み手段は、浮動小数点状態レジスタの浮動小数点トラップタイプフィー ルドにデータを書き込み、リタイアできない命令に対応する記憶要素の浮動小数 点識別フィールドのデータが、リタイアできない命令が浮動小数点命令であるこ とを示す時、リタイアできない命令に対応する記憶要素の浮動小数点トラップタ イプフィールドのデータによって、浮動小数点実行トラップの種類を識別する。 前記問題は、本発明の構造および方法の別の側面によって解決されるが、これ は、投機的にトラップを取り、トラップから戻るためのデータプロセッサと関連 する方法を提供する。データプロセッサは、それぞれ対応するトラップレベルを 有する入れ子トラップを取るため所定の数のトラップレベルをサポートする。デ ータプロセッサは、チェックポイント形成手段、チェックポイントへのバックア ップ手段、トラップを取る手段、トラップから戻る手段、レジスタおよびトラッ プスタックユニットからなる。レジスタは、トラップを取る度にデータプロセッ サの状態を定義する内容を持つ。トラップスタックユニットは、トラップレベル より数の多いトラップスタック記憶記述項を有するトラップスタックデータ記憶 構造を含む。また、トラップレベルの1つに現在マッピングできるトラップスタ ック記憶記述項の現在利用可能リストを保持するフリーリストユニットを含む。 フリーリストユニットは、トラップを取る度に、対応するトラップレベルの1つ に現在マッピング可能な次のトラップスタック記憶記述項を識別する。トラップ スタックユニットはさらに、トラップを取る度に、現在利用可能なトラップスタ ック記憶記述 項の次の1つにレジスタの内容を書き込む読み取り/書き込みロジックを含む。 さらにまた、トラップスタック記憶記述項の1つに各トラップレベルの現在のマ ッピングを保持するリネームマッピングロジックを含む。リネームマッピングロ ジックは、トラップを取る度に、トラップスタック記憶記述項の1つへの対応す るトラップレベルの古いマッピングを、現在利用可能なトラップスタック記憶記 述項の次のものへの対応するトラップレベルの現在のマッピングに置き換える。 トラップスタックユニットはまた、現在のマッピングによってトラップレベルの 1つに現在マッピングされていないが、トラップレベルの1つにマッピングでき ないトラップスタック記憶記述項の利用不可リストを保持するリソースリクレー ムユニットも含む。リソースリクレームユニットは、トラップを取る度に、古い マッピングによって対応するトラップレベルにマッピングされたトラップスタッ ク記憶記述項を利用不可リストに加え、取ったトラップを元通りにできなくなる 度に、古いマッピングによって対応するトラップレベルにマッピングされたトラ ップスタック記憶記述項を利用不可リストから取り除く。フリーリストユニット は、利用不可リストから取り除かれたトラップスタック記憶記述項を、現在利用 可能リストに加える。最後に、トラップスタックユニットは、チェックポイント 記憶記述項を含むチェックポイント記憶ユニットを含む。形成された各チェック ポイントは、対応するチェックポイント記憶記述項を有し、形成された各チェッ クポイントについて、チェックポイント記憶ユニットがリネームマッピングロジ ックの現在のマッピングとフリーリストユニットの現在利用可能リストを、対応 するチェックポイント記憶記述項に記憶できるようにする。チェックポイントへ のバックアップの度に、リネームマッピングロジックは、現在同ロジックが保持 するマッピングを、対応するチェックポ イント記憶記述項に記憶されたマッピングに置き換え、フリーリストユニットは 、現在同ユニットが保持する利用可能リストを、対応するチェックポイント記憶 記述項に記憶された利用可能リストに置き換える。 前記問題は、本発明の別の側面によって解決されるが、これは、複数の投機的 発行・予測された命令の実行結果を同時にモニターするためのデータプロセッサ および関連する方法を提供する。本発明の構造および方法は、プロセッサ内の1 つ以上の実行ユニットからの実行結果信号を受信するため連結されたウォッチポ イントデータを記憶するための複数のウォッチポイントレジスタを有するウォッ チポイントユニットを提供する。投機的に発行・予測された命令の予測された条 件データ結果を含むウォッチポイントデータを記憶するウォッチポイントレジス タは、命令が発行される時に割り当てられる。予測された条件データ結果は、投 機的に発行された命令の制御フロー転送方向が決まる条件の予測値と、投機的に 発行・予測された命令が投機的に発行されたベースを識別する。ウォッチポイン トユニットは、実行ユニットからデータフォワードバスで転送される投機的に発 行・予測された命令の実行結果信号をモニターし、記憶されたウォッチポイント データと、実際の既知条件データ結果信号を初めとする実行結果信号および、実 際の条件コードが予測された条件コードと一致するか否かを決定する所定の規則 に基づき、所定の事象の発生を検出する。投機的に発行・予測された命令の1つ についてウォッチポイントレジスタに記憶されたウォッチポイントデータを、投 機的に発行された命令に関連するデータフォワードバスで到着した結果信号と比 較し、信号が一致するか一致しないかを決定する。一致は、投機的に発行・予測 された命令が正しく予測されたことを示し、不一致は、投機的に発行・予測され た命令が誤予 測だったことを示す。誤予測が識別されると、プロセッサは初期状態に戻り、誤 予測に基づいて実行された命令を元通りにする。本発明の側面は、複数の実行ユ ニットと、複数の予測された分岐またはジャンプ・アンド・リンク命令を初めと する複数の投機的に発行された命令を同時にモニターする能力を含む、実行ユニ ットからの条件コードデータを同時につかむ構造および方法;実行ユニットから のデータフォワードバスを同時にウォッチすることで、予測された分岐またはジ ャンプ・アンド・リンクが待っている複数の条件コードデータまたは計算された ジャンプアンド・リンクアドレスをグラブする構造および方法;分岐またはジャ ンプ・アンド・リンク命令の複数の誤予測信号を同時に生成する構造および方法 ;1つの共有記憶領域に別の分岐アドレスまたは予測されたジャンプ・アンド・ リンクアドレスを記憶する構造および方法;および条件コードタグ比較とグラビ ングのタスクを分けることで、クリティカルパスをスピードアップするための構 造および方法を提供する。本発明の構造および方法の1実施例では、これら複数 の側面を有利に組み合わせて全体的なプロセッサ性能を向上させる。 図面の簡単な説明 図1は、投機的プロセッサの精確状態を維持するために再順序付けバッファを 用いる従来のアプローチを示す。 図2は、命令を実行する前にチェックポイントに状態を記憶し、後に記憶した チェックポイント情報から状態を復元することによって、投機的プロセッサに精 確状態を維持する従来のアプローチを示す。 図3は、図解のために略図で命令の例示シーケンスと従来のチェックポイント の構造と内容を示すもので、特定のマシンの実際のチ ェックポイントデータを表すものではない。 図4は、中央処理装置を含む本発明のデータプロセッサの実施例のトップレベ ル機能ブロック図である。 図5は、一部典型的命令タイプに関するCPUの新規命令パイプラインの実施 例の段階である。 図6は、命令のプリフェッチとキャッシュユニットおよびフェッチユニットを 含む本発明のCPUの例示分岐ブロック(BRB)を示す。 図7は、発行ユニット(ISU)、精確状態ユニット(PSU)、フリーリス トユニット、制御レジスタファイルを含む例示発行ブロック(ISB)を示す。 図8は、発行ユニットがレジスタリネーミングフリーリストユニットから受取 り、本発明のレジスタリネーミングの実施に用いる例示信号を示す。 図9は、精確状態ユニット(PSU)の実施例を示す。 図10は、発行/コミット/リクレームユニット(ICRU)の実施例のコン ポーネントと、その動作に関連する入出力信号の機能ブロック図である。 図11は、命令状態情報とデータ構造に記憶される第1の例示データセットに 関連する各種ポインタを記憶するためのアクティブな命令データ構造とメモリ命 令データ構造の実施例の略図である。 図12は、A−リングビットセット/クリアロジックの一部構造的コンポーネ ントを含む例示的状態制御ロジックユニットを示す。 図13は、状態を追跡し精確状態を維持するため命令タグを使用する本発明の 方法の実施例のフローチャートである。 図14は、精確状態の維持に命令状態を追跡する本発明の方法の実施例の模式 的フローチャートである。 図15は、精確状態の維持に命令状態を追跡する本発明の方法の実施例に従っ て、アクティブな命令リングとメモリ命令リングに状態情報を書き込む方法のフ ローチャート図である。 図16は、フィジカルレジスタを含むフィジカルレジスタファイルの入ったレ ジスタファイルおよびリネームユニット(RFRN)の実施例を示す。 図17は、レジスタリネーミングと関連する制御レジスタファイルの実施例を 示す。 図18は、リソースリクレームファイル(RRF)の実施例を示す。 図19は、本発明のレジスタリネーミング方法を示す。 図20は、命令発行、非起動、コミットおよびリタイアを含む精確状態の維持 のための本発明の方法の実施例のフローチャートである。 図21は、命令状態情報とデータ構造に記憶された第2の例示データセットに 関連する各種ポインタを記憶するためのアクティブ命令データ構造およびメモリ 命令データ構造の実施例の略図である。 図22は、CPUのデータフォワードブック内のロード/ストアユニット(L SU)の機能ブロック図である。 図23は、精確状態を維持しながら、ロード/ストア命令を含む長待ち時間命 令を積極的にスケジューリングするための本発明の方法の実施例のフローチャー トである。 図24は、チェックポイントユニットの機能ブロック図である。 図25は、ウォッチポイントユニットの機能ブロック図である。 図26は、タイムアウトチェックポイントを形成するためのオプションのチェ ックポインティング強化を含む本発明のチェックポインティング方法の実施例の フローチャートである。 図27は、ウォッチポイントユニットの実施例内の主要機能ブロックの機能ブ ロック図である。 図28は、条件コードグラビングロジック、評価ロジック、ウォッチポイント 要素記憶および制御ユニット、およびターゲットRAMの特定の実施例を示すウ ォッチポイントユニットの実施例である。 図29は、カレントマッチングロジック、アレーマッチングロジック、および 評価レディおよび評価条件コードロジックを含む条件コードセレクトロジックの 入ったウォッチポイントの実施例の一部を示す。 図30は、分岐予測および評価に関連する例示タイミングチャートを示す。 図31は、カレントマッチロジックおよびアレーマッチロジックの実施例に関 連する構造的詳細を示す。 図32は、条件コードセレクトロジックの実施例に関連する構造的詳細を示す 。 図33は、評価レディロジックの実施例に関連する構造的詳細を示す。 図34は、評価ツルーロジックの実施例に関連する構造的詳細を示す。 図35は、ターゲットRAMおよびジャンプ・リンク命令評価ロジックの実施 例に関連する構造的詳細を示す。 図36は、複数同時未解決分岐評価のための本発明のウォッチポイント方法の 実施例のフローチャートである。 図37は、浮動小数点例外(FPEXCEP)データ構造の実施例の略図であ る。 図38は、例示浮動小数点例外リングデータ構造の信号インター フェースを示す。 図39は、RDおよびAEXCロジックを含む浮動小数点例外ユニットを示す 。 図40は、バックアップおよびバックステップコンポーネントを含むバックト ラックユニットの実施例の図である。 図41は、バックアップおよびバックステップ手順を含む命令境界で精確状態 を維持および回復するための本発明の方法の実施例のフローチャートである。 図42は、レジスタリネームファイルにロジカルからフィジカルマッピングを 復旧する方法を示す。 図43は、チェックポイント境界への1つのマシンバックアップの後の命令境 界への2つのマシンバックステップを含むマシンバックトラックの例である。 図44は、例示プライオリティロジックおよび状態マシン(PLSM)を示す 。 図45は、例示トラップスタックユニットを示す。 図46は、トラップスタックの記憶要素リストを記憶するためのフリーリスト ロジックの実施例を示す。 図47は、例示リネームマップロジックを示す。 図48は、例示トラップスタックRRFを示す。 図49は、トラップスタックチェックポイント記憶ユニットを示す。 図50は、ウォッチポイントWP_ACTIVE_VECおよびWP_MIS PREDロジックを示す。 図51は、トラップスタックバックアップ例を示す。 図52は、XICC書き込みロジックを示す。 図53は、XICCグラビングロジックおよびアレーレーターマ ッチロジックを示す。 図54は、ウェイトー・フォー条件コード待ちロジックを示す。 実施例の説明 図4は、データプロセッサ50のトップレベル機能ブロック図である。データ プロセッサは、新規の順序無視投機的実行(スーパスカラ)中央処理装置(CP U)51を含む。例示CPUは、SPARC-V9 Architecture Manualに記載されたSP ARC-V9命令セットを実行可能である。D.WeaverおよびT.Germondによる「The SPA RC Architecture Manual」、Version 9、Englewood Cliffs(1994年)は、 参照により本書に明示的に組み込む。但し、当業者は、本書に記載する新規設計 および方法がSPARC-V9アーキテクチャに限定されないことを認識するであろう。 実際、CPU51は、すべてのデータプロセッサに該当する精確マシン状態を 維持しながら、スループットを上げる新規設計および方法を採用している。特に 、これは(1)プロセッサリソースおよび状態をモニターし、回復する命令をト ラッキングするための新規設計及び方法;(2)ロード/ストア命令などの長待 ち時間命令を積極的にスケジューリングするための新規設計および方法;(3) マシン状態をチェックポインティングするための新規設計および方法;(4)例 外または誤予測検出後にマシン状態を回復するための新規設計および方法を採用 している。 本明細書の実施例の説明セクションの概略を便宜上ここに示す。本明細書の見 出しは便宜的参照のためにのみ示すもので、本セクションの開示の適用可能性を 本発明の特定の側面または実施例に限定すると解釈してはならない。 I.CPUオペレーション概要 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.トラップスタックによるトラップの取扱I.CPUオペレーション概要 CPU51は、レベル1(L1)命令キャッシュ52から命令をフェッチし、 レベル1(L1)データキャッシュ53にデータを記憶し、ここからデータを取 り出す。L1命令およびデータキャッシュは、CPU51と同じチップ/基板に 物理的に配置することもできるが、異なるチップ/基板に組み立てることもでき る。 CPUはまた、メモリ管理制御ユニット(MMU)54とインタラクトして、 データプロセッサ50の全体状態を決定する。特に、MMUは外部メモリ56か ら命令を取り出し、外部メモリ56にデータを記憶し、ここからデータを取り出 し、外部I/Oデバイス57からデータを受取り、ここへデータを出力し、外部 診断プロセッサ58、CPU51、キャッシュ52および53に診断情報を提供 し、ここから診断情報を受取り、データアドレス翻訳を実行し、メモリ状態情報 を記憶・追跡する。 図5は、予測されたプログラム制御命令、固定および浮動小数点命令、および ロード/ストア命令を含む一部の典型的な命令タイプに関する、CPU51の新 規命令パイプラインの段階(および関連するマシンサイクル)を示す。このパイ プラインを実行するため、図4に示すように、CPU51は分岐ブロック(BR B)59、発行ブロック(ISB)61およびデータフローブロック(DFB) 62を含む。 図4および図5を参照すると、BRB59はフェッチ段階中に命令をフェッチ し、これらの命令をISB61に与える。BRB59は、プログラム制御命令の 各種タイプについて、ターゲットアドレ ス予測と分岐取得・不取得予測を行う。そのため、これはフェッチ段階中に投機 的に命令をフェッチすることができる。 ISB61は、命令が投機的にフェッチされた可能性があるため、発行段階中 に予測されたプログラムカウンタ(PC)順でフェッチされた命令を発行する。 これはまた、予め定義された間隔に当たる命令と、BRB59が予測を行ったプ ログラム制御命令を含む予め定義された種類の発行された命令について、発行段 階中にCPU51のマシン状態のチェックポイントを形成する。 BRB59は、ISB61による発行と同じ段階で、nopと予測されたプロ グラム制御命令を実行、完了する。但し、DFB62は、必要なリソースが利用 可能になり次第、発行された固定小数点および浮動小数点命令を実行、完了する 。さらに、DFB62は、必要なリソースが利用可能になった時、実行・完了し た時点で例外(例:発行トラップ、実行トラップまたは割り込み)やプログラム 制御誤予測の場合に元通りにする必要のないやり方で、発行されたロード/スト ア命令を実行のために積極的にスケジューリングする。そのため、一部の固定小 数点、浮動小数点、およびロード/ストア命令の発行段階が他のものより早くて も、必要なリソースはまだ利用可能になっていないため、実行および完了段階が 後になる。さらに、これらはBRB59による初期のプログラム制御予測に基づ き、BRB59が投機的にフェッチした可能性があるため、投機的に実行および 完了されたかもしれない。言い換えると、DFB62に発行された命令は、予測 されたPC順序を無視して実行・完了されることがある。 命令がエラー発生(例:発行トラップ、実行トラップまたは誤予測)なしに完 了すると、非起動段階でISB61によって非起動にされる。命令は予測された PC順序を無視して完了することがある ので、誤予測のPC順序を無視して非起動とされることがある。 そこで、非起動命令は、コミット段階に実際のPC順でISB61によってコ ミットされる。非起動の命令は、先行する発行済み命令をすべてコミットしてい なければコミットされないので、真である。その結果、命令がコミットされると 、例外または誤予測の場合、元通りにできない。これはすなわち、この点までの 実際のPC順序が正しく、命令は実際のPC順でコミットされたことを意味する 。さらに、チェックポイントを形成した命令をコミットすると、先行のチェック ポイントをリタイアすることができる。 命令をコミットすると、リタイア段階に実際のPC順でISB61によってリ タイアされる。命令リタイア後、それに割り当てられたリソースはリクレームさ れ、他の命令が発行された時にそれらに再割り当てすることができる。 ISB61は、パイプライン中のあるポイントで発生する実行またはプログラ ム制御の誤予測からの回復を行う。そのため、プログラム制御誤予測が発生する と、ISB61は、不正プログラム制御命令が発行された時、形成したチェック ポイントにCPU51をバックアップする。同様に、実行トラップが発生すると 、ISB61はまず、不正命令発行後にチェックポイントが形成されていれば、 最も早いチェックポイントにCPU51をバックアップし、および/または不正 命令にCPU51をバックステップする。チェックポイントへのバックアップお よび/またはバックステップにおいて、CPU51は、不正命令の発行および実 行直前に存在した正しいマシン状態に戻る。 ISB61が、プログラム制御誤予測を生じさせた不正命令にバックアップさ れていると、BRB59は、正しいプログラムカウンタ値と正しいマシン状態で 命令のフェッチを始める。しかし、IS B61が実行トラップを生じた命令にバックアップされているか、および/また はバックステップされていると、BRB59に、適切なトラップ取扱ルーチンの ターゲットプログラムカウンタ値が与えられる。そこで、トラップ取扱ルーチン はトラップを処理し、不正命令のプログラムカウンタ値を戻すか、次の命令をフ ェッチするためBRB59に次のプログラムカウンタ値を戻す。不正命令のプロ グラムカウンタは、トラップ取扱ルーチンがCPU51に不正命令をフェッチし 、その発行と実行を再試行するよう命じると、戻される。しかし、トラップ取扱 ルーチンがCPU51に不正命令後に次の命令をフェッチして、不正命令の発行 と実行をスキップするよう命じると、次の不正命令のプログラムカウンタが戻さ れる。II .命令トラッキング 前に言及したように、CPU51は、CPU51の命令パイプラインに命令ト ラッキングのための新規設計および方法を採用している。パイプラインは、この 設計および方法を実施するため、図5に示し、前に簡単に述べたように、フェッ チ、発行、実行、完了、非起動、コミットおよびリタイアの段階を含む。A.命令フェッチ 再び図4を参照すると、BRB59はフェッチ段階中に命令をフェッチし、こ れらをISB61に与える。図6に示すように、BRB59は、命令プリフェッ チおよびキャッシュユニット(IPCU)100とフェッチユニット102を含 む。 IPCU100は、レベル1(L1)命令キャッシュ52から1度に4個の命 令(INSTs)を取り出すことができる。取り出された命令は、IPCU10 0の命令レコーダによって、BRB59、ISB61およびDBF62の利用に より適したフォーマットにレコードされる。別の実施例では、IPCU100は 、1度に4個 より多いか少ない命令を取り出して実施することもできる。 フェッチユニット102は、フェッチプログラムカウンタ(FPC)値、アー キテクチュラルプログラムカウンタ(APC)値、および次のアーキテクチュラ ルプログラムカウンタ(NAPC)値を計算するプログラムカウンタ(PC)ロ ジック106を含む。各マシンサイクルで計算されたFPC、APCおよびNA PCの値はそれぞれ、PCロジックのFPC、APCおよびNAPCレジスタ1 12から114に記憶される。FPCレジスタの現在のFPC値は、現在のマシ ンサイクルでフェッチされている命令を指すが、APCおよびNAPCレジスタ 113および114の現在のAPCおよびNAPC値は、現在のマシンサイクル でISBが発行可能な最初の命令と、前回のマシンサイクルでフェッチされた次 の命令を指す。 FPC値に対応して、1度に4個の命令(F_INSTs)がIPCU100 によってフェッチされる。別の実施例では、1度に4個より多いか少ない命令を フェッチするよう実施することができる。 各FPC値について、分岐履歴表104には、FPC値でフェッチした各命令 の分岐予測フィールド(BRP)が含まれる。そのため、BRPフィールドはそ れぞれFPC値でフェッチした命令の内の1つに対応する。フェッチした命令の いずれかが、SPARC-V9B Pcc、Bicc、BPr、FBfccおよびFBP fcc命令など条件付き分岐命令である場合、これらの対応するBRPフィール ドは、分岐を、分岐命令のこの後の発行、実行および完了段階で予測すべきか否 かを識別する。分岐履歴表104は、FPC値に対応してフェッチした命令にB RPフィールドを出力する。そこでBRPフィールドは、フェッチユニット10 2によってフェッチした対応 する命令(F_INSTs)に追加され、フェッチ回転レジスタ110が受け取 る合成命令を与える。 フェッチレジスタには、1度に4個の命令を保持するため4個のラッチがある 。このラッチは、予測されたPC順で、ISU200が発行できる次の4個の命 令の入った4個のスロット(0−3)を有する発行ウィンドウを定義する。但し 、前回のマシン中にフェッチレジスタの保持した命令の一部は、これから説明す るような発行上の制約のため、ISU200が発行していないことがある。フェ ッチされた命令が予測されたPC順で発行されるようにするため、ISU200 はフェッチレジスタ制御(FCH_REG_CNTRL)信号を生成するが、こ の信号は、最後のマシンサイクルで発行されなかった命令を該当するラッチに入 れるようフェッチレジスタを制御することで、発行ウィンドウ内で予測されたP C順にし、ISU200が予測されたPC順で発行できるようにする。さらに、 FCH_REG_CNTRL信号に対応して、フェッチレジスタは残りのラッチ に、予測されたPC順で次に来るフェッチしたばかりの命令を入れる。 別の実施例では、フェッチレジスタは、1度に4個より多いか少ない命令を記 憶するよう実施できる。さらに、例示CPU51ではフェッチユニット102に 1個のフェッチレジスタとして説明したが、今説明した種類のフェッチレジスタ は、デコードを実行するCPUの各ブロックに使うことができる。そして、フェ ッチレジスタをこれらブロックに設置して、デコードした命令をフェッチレジス タに記憶する前、フェッチサイクル中に初期デコードを行い、残りのデコードを 発行段階に行うようにすることができる。B.命令発行 1.命令発行概観 ISB61は、各発行段階中にフェッチした命令を発行する。図7に示すよう に、ISB61は、発行ユニット(ISU)200、精細状態ユニット(PSU )300、フリーリストユニット700、および制御レジスタファイル800を 含む。各発行段階中、ISU200は、BRB59のフェッチレジスタ110か ら、一度に4個の命令(F_INSTs_BRP)を受け取る。そして、これら をデコードして、その内いくつを発行するかを、次に説明するような各種発行上 の制約に基づいて決定する。 フェッチレジスタ110は、各発行段階中、ISU200に一度に4個の命令 を与えるため、ISU200は各発行段階中、最大4個の命令を発行することが できる。しかし、各発行段階の発行ウィンドウで予測されたPC順で4個の命令 を発行することしかできない。そのため、他の発行上の制約から、現在の発行ウ ィンドウで命令の内の1つが発行できない場合、この命令の前の発行ウィンドウ スロットの命令しか、現在の発行段階では発行できない。別の実施例では、フェ ッチレジスタ110は、1つの発行段階あたり4個より多いか少ない命令をIS U200に与えるよう構築されているため、ISU200は、1つの発行段階あ たり4個より多いか少ない命令を発行するよう構築することができる。図8を参 照すると、FPU600、FXU601、FXAGU602およびLSU603 は、発行された命令について、これらにディスパッチされた命令データを記憶す るためのリザベーションステーションあるいは待ち行列を有する。但し、発行段 階中、リザベーションステーションの一部は、ディスパッチされた命令データを 記憶できるだけの記憶要素または記述項を持たないことがある。そのため、FP U600、FXU601、FXAGU602およびLSU603は、それぞれF PU600、FXU601、FXAGU602およびLSU603 のリザベーションステーションに、ディスパッチされた命令データを受け取るこ とのできる記述項がいくつあるかを示すENTRIES_AVAIL信号を出力 する。その結果、ISU200は、ENTRIES_AVAIL信号で示された 利用可能な記述項の数に基づき、浮動小数点、固定小数点、およびロード・スト ア命令を発行する。 さらに、例示CPU51では、FXU601が、固定小数点計算に関わるプロ グラム制御、乗算/除算、および制御レジスタ読み取り/書き込み命令を実行す るDFB62の唯一の実行ユニットである。そのため、この場合、ISU200 はFXU601による実行のためこれらの種類の命令を発行する。別の実施例で は、FXAGU602も、固定小数点データに関わるプログラム制御、乗算/除 算、および制御レジスタ読み取り/書き込み命令を実行するよう構成することが できる。この場合、ISU200も、FXAGU602による実行のためこれら の種類の命令を発行することになる。さらに、実行ユニット600から603は それぞれ1以上の機能ユニットからなり、各機能ユニットは発行された命令を実 行することができる。そのため、発行することのできる命令の数は、各実行ユニ ット内の機能ユニットの数で決まる。 図7を参照すると、PSU300は、ISU200による命令発行に発行上の 制約を課すこともできる。PSU300はISSUE_KILL信号を出力する ことができ、これは、フェッチレジスタ110から受け取った命令の内どれを現 在の発行段階中に発行してはならないかを識別するものである。後により詳しく 説明するように、例外検出後か、次に説明する同期命令の実行、完了、非起動お よびリタイア中に、PSU300が不正命令にバックアップまたはバックステッ プしている時、ISSUE_KILL信号がアサート される。 特定の種類の命令については、ISU200は、これら同期命令の内1つを発 行する前に、CPU51が同期されることを確かめる。CPU51は、特定の命 令に先行するすべての命令が発行、実行、完了、非起動およびリタイアした時、 その命令について同期する。そのため、ISU200がフェッチレジスタ110 から受け取った命令の内1つが同期命令であると決定すると、その前の発行ウィ ンドウスロットにある命令を発行し、CPU51が同期したことを示すMACH INE_SYNC信号をPSU300から受け取るまで待つ。これが発生すると 、命令は最も早いPC値(すなわちスロット0)で命令の発行ウィンドウのスロ ットに入り、ISU200はただそれを発行する。例示CPU51は、特定の命 令種類について、前に説明したマシン状態同期方法を実施するが、別の技術では 、コミットした命令は非投機的であることが保証されるため、前回の命令のコミ ット後に同期命令の発行ができる。 ISU200はまた、SPARC-V9 Architecture Manualに説明するような、命令 の発行に影響する発行トラップを検出する。ISU200は、制御レジスタファ イル800からレジスタ(CNTRLREG)フィールドを受取り、フェッチレ ジスタ110から受け取った命令(F_INSTs_BRPs)をデコードして 、発行段階中に一定の種類の発行トラップが発生したか否かを検出する。SPARC- V9アーキテクチャに基づく実施例では、これはSPARC-V9 Architecture Manualに 従って行われる。さらに、他の種類の発行トラップはレジスタ制御を必要とせず 、ISU200のデコードした命令操作コードに基づき、取得・検出される。 最も早い発行ウィンドウスロットの命令によって生じた発行トラップのみが取 得される。そのため、1以上の発行トラップが検出さ れると、最早スロットの命令の原因となった発行トラップのスロットより前の発 行ウィンドウスロットの命令のみ、ISU200によって発行することができる 。さらに、しばしば発生する発行トラップについては、CPU51は、前に述べ たような方法で同期し、発行トラップを投機的に取得しないようにする。別の実 施例では、発行トラップがスロット0でのみ発生するようCPU51を構成して 、ロジックを減らし、簡素化することができる。 各発行段階中、ISU200は発行される各命令にシリアル番号を割り当て、 これらシリアル番号(SNs)をDFB62にディスパッチする。後でより詳細 に説明するように、PSU300は、割り当てられたシリアル番号を使って発行 された命令を記録する。さらに、例示CPU51では、発行されたがまだリタイ アしていない命令を一度に所定の数だけ記録することができる。しかし、発行さ れた命令をリタイアすると、それらのシリアル番号が利用可能となる。そのため 、PSU300は、現在の発行段階にいくつのシリアル番号が利用できるかを示 す信号を含むSN_AVAIL信号と、これら利用可能なシリアル番号を含む信 号を、ISU200に与える。現在の発行段階中、SN_AVAIL信号が、現 在利用可能なシリアル番号の数が発行できる命令の数より少ないことを示すと、 シリアル番号を割り当てることのできる最も早いスロットの命令だけが実際に発 行される。 やはり発行段階中、ISU200は、ある命令についてCPU51のマシン状 態のチェックポイントを形成すべきか否かを決定する。後でより詳細に説明する ように、チェックポイントは一定の種類の命令について、所定の発行段階間隔で 形成される。そのため、発行する命令にチェックポイントが必要とISU200 が決定し、および/またはPSU300が、チェックポイントを形成した最後の 発行段階から所定数の発行段階が発生したことをTIMEOUTCHKPT信号 によって示すと、ISU200はDO_CHKPT信号を生成し、PSU300 、制御レジスタファイル800、BRB59およびDFB62に、MCPU51 のマシン状態のチェックポイントを形成するよう指示する。 さらに、ISU200は、発行した各命令にチェックポイント番号を割り当て 、これらチェックポイント番号(CHKPT_Ns)をDFB62にディスパッ チする。そして、チェックポイントを形成した各命令に、新しいチェックポイン ト番号が割り当てられる一方、チェックポイントを形成しない命令には、前のチ ェックポイントのチェックポイント番号が割り当てられる。PSU300は、割 り当てられたチェックポイント番号を使って形成されたチェックポイントを記録 する。 割り当てられたシリアル番号同様、PSU300は、形成されたがリタイアし ていないチェックポイントを一度に所定の数だけ記録する。但し、チェックポイ ントがリタイアされると、チェックポイント番号が利用可能になるため、PSU 300は、現在の発行段階にいくつのチェックポイント番号が利用できるかを示 す信号を含むCHKPT_AVAIL信号と、利用可能なチェックポイント番号 を含む信号を、ISU200に与える。そのため、CHKPT_AVAIL信号 が、現在利用可能な新しいチェックポイントの数が新しいチェックポイントを形 成しなければならない命令数より少ないことを示すと、新しいチェックポイント 番号を割り当てることのできる最も早い発行ウィンドウスロットの命令だけが実 際に発行される。 さらに、CPU51は、1つの発行段階につき所定の数のチェックポイントを 形成するようにのみ構成することができる。そのため 、たとえばCPU51が1つの発行段階につき1つしかチェックポイントを形成 できず、チェックポイントを形成する必要のある発行ウィンドウに2個の命令が ある場合、ISU200は、現在の発行段階中、最も早いスロットにある命令の み発行し、別の発行段階の他の命令を発行する。 後で説明するように、CPU51は、プロセッサのスループットを上げるため レジスタリネーミングを採用している。レジスタリネーミングを正しく実施する ため、ISU200はレジスタリネーミングフリーリストユニット(FREEL IST)からREGS_AVAIL信号を受け取る。図8を参照すると、これら 信号には、固定小数点レジスタファイルおよびリネームユニット(FXRFRN )604のいくつの物理的固定小数点レジスタをリネーミングに利用できるか、 浮動小数点レジスタファイルおよびリネームユニット(FPRFRN)605の いくつの浮動小数点レジスタをリネーミングに利用できるか、浮動小数点状態お よび条件コードレジスタファイルおよびリネームユニット(FSR/CCRFR N)606のいくつの物理的整数および浮動小数点条件コードレジスタをリネー ミングに利用できるかを示す信号が含まれる。図7を参照すると、フェッチレジ スタ110から受け取った命令のいずれかがレジスタリネーミングを必要とし、 物理的レジスタがリネーミングに必要であるが、REGS_AVAIL信号によ って利用できないことが示されると、ISU200はこれらの命令を発行できな い。 前記発行上の制約は、発行決定の概念を例証するため、例示CPU51に関連 して説明した。さらに、これまで説明した発行上の制約とは異なるが、本書に説 明した発行決定の基本的概念から逸脱しない実施も存在できる。そのため、当業 者は、発行上の制約が実施依存であり、本書に説明する発明は、これまで説明し た発行上の制 約に限定されないことを認識するだろう。2.命令シリアル番号割り当てと命令状態記憶 例示CPU51は、命令が発行された時点から、命令の実行が完了して究極的 にリタイアするまで、命令に関連する独自の識別タグを割り当てる。逐次シリア ル番号は、命令識別タグとして便宜上用いられる。シリアル番号は各段階で用い られ、例外または誤予測が発生すると、例外フリー処理中およびCPU51回復 中に実質的にすべてのブロックが用いる。命令状態情報はCPU51に記憶され 、実行完了信号、実行エラー信号、および分岐命令誤予測信号等の状態の変化に 対応して連続的に更新される。ISB61内の精細状態ユニット(PSU)30 0が、命令シリアル番号タグの割り当てと、他のCPU51ユニット、特にDF B62から受け取った信号に対応して命令状態のトラッキングを行う。 図9を参照すると、精細状態ユニット(PSU)300は機能的にISB61 内にあり、(1)CPU51での命令の発行、実行、完了およびリタイア状態の トラッキング;(2)分岐誤予測回復の検出と開始;(3)命令シリアル番号、 チェックポイント、およびウォッチポイントを含む一定のマシンリソースの利用 可能性のトラッキング;および(4)一般例外取扱および制御、を行う。PSU 300内のいくつかのユニットは、図9に示し、後により詳細に説明するように 、この機能性を達成するため実施される。 PSU300は、発行されたすべての命令について、これらがリタイアされる までアクティビティ状態情報を維持する発行/コミット/リタイアユニット(I CRU)301を含む。ICRU301は、ISU200が次の命令発行サイク ルで用いる4個までの命令シリアル番号(SNs)を識別する信号(SN_AV AIL)をISU200に与える。ISUが命令を発行すると、ISU200は 、前のサイクルでISUに与えられた(SN_AVAIL)最大4個のシリアル 番号のうちどれがISUによって有効に発行されたかを、前に示したように、ど のシリアル番号が割り当てられ、どのシリアル番号が各命令に関連するかを示す ISSUE_VALID信号の形でICRUに知らせる。発行上の制約によって 、ISUが命令ウィンドウのすべての命令を発行する能力が制約を受けることを 思い出してほしい。ICRU301は状態情報と状態情報へのアドレスポインタ を記憶・維持し、命令の種類にかかわらず、ISU200が有効に発行した各命 令の命令発行、実行、完了、非起動、コミット、リタイアフェーズ状態をトラッ クする。ISU200はまた、発行された命令の内どれがnopおよび一定のプ ログラム制御命令に関連し、発行と同じ段階で非起動が可能かを、ISSUE_ NOP信号でICRU301に知らせる。ISSUE_NOPは、ポーズや遅延 を導入するような、命令ストリームに挿入できる特定の「nop」命令に限定さ れない。CPU51外のロード/ストアその他命令参照メモリなどの長待ち時間 命令を積極的にスケジューリングする際、ISU200は、スロット0−3の命 令のどれが長待ち時間かを識別するISSUE_MEM信号の形で、ICRU3 01にも知らせる。(長待ち時間命令の積極的スケジューリングは、基本的な本 発明の構造および方法の強化として別に説明する。)a.発行/コミット/リクレームユニット(ICRU) 発行/コミット/リクレームユニット(ICRU)はPSU300内で機能し 、n−ビット逐次シリアル番号などの命令タグを割り当て、CPU51内部のメ モリで命令状態情報のデータ記憶領域を定義・維持することにより、発行された すべての命令のアクティビティ状態情報を維持する。図10に、ICRU301 のコンポーネントおよびICRUオペレーションに関連する入出力信号の機能ブ ロック図を示す。ICRU301は機能的に4つの領域で構成される。命令状態 情報データ構造308は、命令状態情報の記憶と、データ構造制御ロジック30 9の信号に対応して状態を更新を行い、データ構造制御ロジック309は、他の CPU51ユニット、特にDFB62からの信号に対応する。ポインタデータ構 造310は、発行、完了、リタイア等、CPU51の各種命令段階マイルストー ンへの状態ポインタとして働く複数のシリアル番号を個別に記憶するデータ記憶 領域を含む。これらシリアル番号ポインタは、後でより詳細に説明する。ポイン タ制御ロジック311は、他のCPU51ユニットから受け取ったデータと共に 、データ構造308に記憶された状態情報を評価し、シリアル番号ポインタを更 新して、カレントCPU51状態を反映させる。ポインタ値は、ICRU301 およびPSU300からCPU51の他ユニットへのグローバル出力として与え られる。 命令状態情報データ構造308は、アクティブ命令リングレジスタ(A−リン グ)312からなり、オプションでメモリ命令リングレジスタ(M−リング)3 24からなることもできる。メモリ命令リングレジスタは、積極的ロード/スト ア命令スケジューリングに関連して本明細書中の他の部分で説明する。データ構 造制御ロジック309は、A−リングセット/クリアロジック313からなり、 オプションでM−リングセット/クリアロジック325からなることもできる。 ポインタ制御ロジック311は、ISN/NISN初期化および前進ロジック3 21からなり、次の命令シリアル番号割り当てロジック322と、CSN/RR P前進ロジック323は、オプションでNMCSN前進ロジック326、マシン 同期生成ロジック327、バックトラックモードポインタ調整ロジック328か らなる。オプション要素は本発明の基本的な構造および方法の強化 に関連し、後でより詳細に説明する。 発行/コミット/リクレームユニットの命令発行段階のオペレーションを、図 10を参照して説明する。発行された命令に割り当てるためISU200から送 られた一覧番号(SN_AVAIL)は、ポインタデータ構造310内のポイン タ値に基づきICRUのシリアル番号割り当てロジックで選ばれる。CPU51 を初期化した時(パワーアップ時など)、ポインタデータ構造310内のポイン タも初期化され、ICRUはまず、発行ウィンドウの命令について最初のシリア ル番号をISU200に割り当てる(SNの0−3等)。 ISU200はデータ構造制御ロジック309にISSUE_VALID信号 を送り、前回のサイクルで与えられたシリアル番号の内どれが(4個のSNの内 どれが)ISU200によって有効に発行され、どの命令スロットのものかをI CRUに知らせる。セット/クリアA−リング制御ロジック313はこの情報と ポインタレジスタ310内のポインタの値を使って、A−リング312に命令状 態情報を書き込む。CPU51の1実施例では、ISSUE_VALIDは4ビ ットベクトルで、ISU200が命令シリアル番号(SN_AVAIL)のどれ を実際に使って命令を実際に発行した命令スロットを識別したかをICRUに知 らせる。そこでICRUは、SN_AVAILとISSUE_VALIDに基づ きどのSNを使ったかを決定できる。 アクティブ命令リング312の実施例を、図11の略図を参照して説明する。 図11のデータ構造は例示なもので、本特許の内容から、このアクティブ命令状 態レジスタの実施には様々なデータ構造を利用できることを当業者は理解するで あろう。図11は、64ビットデータ構造として実施したアクティブ命令リング (A−リング )312を示す。(メモリ命令リング(M−リング)324も略図として示し、 長待ち時間命令の積極的スケジューリングの強化に関連して本明細書の他の部分 で説明する。)A−リング312内の64の各アドレス指定可能ロケーションは 、CPU51の1つの命令シリアル番号に対応する。各アクティブビット(A− ビット)のセット(「1」)またはクリア(「0」)状態は、命令がアクティブ であるか(「1」)、インアクティブであるか(「9」)を示す。基本的に、発 行されて、エラーなしに実行を完了し誤予測されずに非起動とさえると、命令は 始動する。1つのマシンサイクルで発行され効果的に実行完了した一部の命令で は、A−ビットが命令発行でクリアされる。A−リング312のアドレス指定可 能ロケーションの数は、CPU内の同時未解決の命令の数を限定する。 例示プロセッサでは、A−リング312は円形、環状あるいは循環データ構造 として実施され、ここでポインタは「モジュロA−リングレジスタ長さ」タイプ 演算(ここでは、モジュロ64タイプ演算)を使って、データ構造に沿って移動 する。すなわち、ポインタが第1のデータ記憶場所(アドレス指定可能ビット0 )から一連の中間記憶場所(ロケーション15、16...等)を通って最後の データ記憶場所(アドレス指定可能ビット63)までインクリメンタルに移動す ると、最初のロケーション(アドレス指定可能ビット0)に戻る。当業者は、本 発明の内容から、環状データ構造は有利ではあるが、本発明にとって不可欠では なく、本発明の特徴を実施するのに他のデータ構造も使えることを理解するであ ろう。さらに、例示A−リングは必要な状態情報の維持に64個のシングルビッ トのアドレス指定可能ロケーションを持つが、これらおよび追加状態インジケー タの記憶に、マルチビットアドレス指定可能ロケーションを設けることもできる 。たとえば、ある実施例では、任意回転 の64ビットレジスタを用い、第2の実施例では、8個の8ビットレジスタを用 いて64個のA−リング312A−ビットとしている。単純なデコーディング回 路が、後に説明するようにビット書き込み(セットとクリア)を可能にする。 ISU200による「命令発行」の結果、命令に命令シリアル番号が割り当て られる。割り当て可能なシリアル番号の数は、A−リング312のアドレス指定 可能ロケーション(ビット位置等)の数によって限定される。そのため、各アド レス指定可能ロケーションは独自のシリアル番号に対応する。たとえば、例示6 4ビット環状A−リングには、64個までの命令シリアル番号を同時に割り当て ることができる。A−リングのロケーションを多くか少なくすることによって、 これより多くか少ないシリアル番号を割り当てることができる。すべてのシリア ル番号を割り当てると、シリアル番号とA−リングのロケーションがその後のマ シンサイクルで解放されるまで、それ以降の命令発行をISU200によって機 能停止しなければならない。ISU200は、SN−AVAIL信号によってS Nが利用可能か否かを知らされる。A−リング312の各アドレス指定可能ロケ ーションは利用可能なシリアル番号の1つに対応し、発行済みシリアル番号ポイ ンタ(ISN)314を発行された各命令について1つ前進させることで、新し く発行された各命令にA−リングに記述項を作る。1つのマシンサイクル中に複 数の命令が発行されることがあるため、各サイクルで1個以上のA−ビットを設 定し、ISNを各サイクルで1つ以上のA−リングロケーションで前進させるこ とができる。 ISU200による「命令ディスパッチ」は、実行のための(シリアル番号を 割り当てられた)命令の起動とDFB62への送信である。ディスパッチされた すべての命令は発行された命令でもある が、発行された命令のすべてがディスパッチされるわけではない。「ディスパッ チ」されたすべての命令は、「1」に相当してセットされたA−リング312中 の割り当てシリアル番号に対応し、その命令がマシン中でアクティブであること を示す(1= アクティブ、0= インアクティブまたは非起動)。発行されたがデ ィスパッチされない命令は既知の分岐またはnopタイプの命令に対応し、その 命令についてA−ビットが発行時にクリアされる(またはセットされない)。こ れら既知の分岐とnopタイプの命令は、実行のための実行ユニットを必要とせ ず、1つの段階で発行、実行、完了することができる。b.発行ステージ間のポインタ関連の命令発行およびポインタメンテナンス 図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は、命令発行状態を保持し追跡すると共に、全体的に他のポイ ンタの利点に制約を加える。コミット(委託)されたシリアル番号ポインタ(C SN)316は、他のポインタには特に規定されていないような命令の実行、完 了、および非活動化に続く命令コミット を追跡する。リタイア再生ポインタ(RRP)317は、命令のリタイアを追跡 し、リソースの再生を制御する。最速予測分岐命令ポインタ(PBSN)318 および非メモリコミットシリアル番号ポインタ(NMCSN)319の2つの補 助的なポインタを使用して、予測分岐命令やロード/ストア命令のような待ち時 間の長い命令の実行をスケジュールし追跡する。ICRU301はCPU51内 の多数の他のユニットに対して、それぞれのISN、NISN、CSN、RRP 、およびNMCSNに現在値を与える。ICRUは、以後説明するように、PS U300内のウォッチポイント・ユニット308からPBSN318の値を受け 取る。これらのポインタは、実施例のCPUではそれぞれ6ビットベクトルとし て実施される。 発行されたシリアル番号ポインタ(ISN)314は、常に最後に発行された 命令のシリアル番号を指し示している。ICRUによって与えられたシリアル番 号の1つが実際にISU200によって割り当てられたとき、命令が発行された と考えられる。ISNおよびNISNは、ICRUにそのサイクルの間に実際に 発行された命令の数を通知するISU200からのISSUE_VALID 信号に応じてイ ンクリメントされる。ISNおよびNISNがインクリメントされるので、ポイ ンタは効率良くA−リング312の周りに前進する。マシンサイクルごとにIS Nが前進できるポジションの最大数は、マシンのピーク発行速度によって決定さ れるが、ハードウェアを制御する別のソフトウェアによって、この最大数をサイ クル当たりの命令の一層小さな所定の値にまで制限できる。例えば、典型的なC PUでは、ISNおよびNISNの前進は、マシンサイクル当たり4つの命令の シリアル番号(A−リングのロケーション)に制限されている。CPUが初期化 されると、ISNは初期化されて0(ゼ ロ)になり、別の命令が発行されると、ISNは新たに発行された命令の数によ って前進する。 次発行のシリアル番号ポインタ(NISN)315は、常にISN+1を指し ているため(モジュロA−リング長)、ISNが63の場合、NISNはゼロであ る。これは本質的に発行されるべき次の命令のシリアル番号である(すべての命 令は予測されたPC順に発行される)。独立したポインタのNISNを提供する ことは便利であるが、NISNは常にISNよりも1だけ大きいため、実施例の 中にはISNだけを使用しているものもある。CPUが初期化されると、NIS Nは初期化されて1(いち)になり、別の命令が発行されると、NISNは新た に発行された命令の数によって前進する。ISNおよびNISNの初期化と前進 とは、ISU200からのISSUE_VALID 信号に応じて、ISN/NISN前進論 理ユニット321によって実行される。 ICRU301は、命令が発行されたときに割り当てられる4つの利用可能な 命令のシリアル番号をISU200に与える。適切な4つの命令のシリアル番号 の決定は、ISN314およびNISN315の現在値に基づいて、ポインタ制 御論理ユニット311内の次命令シリアル番号割当てロジック322の中で行わ れる。RRP317は、CUがフルの場合、すなわちすべてのシリアル番号がす でに割り当てられ再生できない場合、シリアル番号の割当てを制限できる。IC RU301は、SN_AVAIL信号をISU200に送ることによってシリアル番号が 利用可能になる場合、発行された命令に割り当てられるべき(4つの)シリアル 番号の次のシリーズをISU200に通知する。 CPU51のある実施例では、SN_AVAIL信号は発行ウィンドウのスロット0〜 3において最大4つの命令に割り当てられるシリアル 番号を識別する4つの7ビット信号(SN_SLOT_0,SN_SLOT_1,SN_SLOT_2, およ びSN_SLOT_3)から構成する。6つのビットはシリアル番号を表し、7番目のビ ットはシリアル番号妥当性ビットである。そのシリアル番号に対する妥当性ビッ トがセットされていない場合、命令のシリアル番号はCPU51内では依然とし てアクティブであり、ISUは使用してはならない。64ビットのA−リング3 12がサポートするすべての64ビットの命令がCPU51の中でアクティブで ある場合、妥当性ビットはセットされないことがある。シリアル番号が有効な場 合はISU200は1つの命令しか発行できないので、ISUは次の命令を発行 する前に、以前発行した命令が実行およびリタイアするまで待機しなければなら ないことがある。命令の実行およびリタイアについて、以下に説明する。 図12は、A−リング・ビットセット/クリア・ロジック(ASCL)313 の構造を含む状態制御論理ユニット309をより詳細に示している。ASCL3 13は、セット論理ユニットおよびクリア論理ユニット331,333とそれぞ れ関連したアドレスデコード論理ユニット332,334ならびにセット論理ユ ニット331およびクリア論理ユニット333から構成する。セット論理ユニッ ト331は、ISU200からISSUE_VALID 信号を、またアドレスデコード論理 ユニット332からデコードされたNISNポインタアドレスを受け取る。A− リングのセット論理ユニット331は次に、ISUによって実際に発行された命 令の数に一致するA−ビットをA−リング書込みポート342を介して「1」に セットする。命令が非活性化されるおよび/またはCPUがリセットされると、 A−ビットはクリアされる。書込みポート342の数を選択して、各サイクルご とに活性化(または非活性化)される命令のメーカをサポートする。M−リング 324に関して図12で示した他の構造 を、長いレイテンシー(待ち時間)命令の積極的なスケジューリングおよび命令 のコミットおよびリタイアと共に以下に説明する。 ある実施例では、ISSUE_VALID 信号はISU200から受け取った4ビットの ベクトルであり、このベクトルではポジションビットiでの表明(位置付けられ たときに「1」すなわち高い信号レベルにセットされたビット)は、i番目の命 令発行ウィンドウスロットにおける命令が発行されていることを示している。I CRU301は、前に説明したSN_SLOT_i 信号によって、どのシリアル番号がど のスロットに関係しているかを知っている。命令は連続したプログラムの順番に 発行されるので、4つの命令発行CPUのISSUE_VALID 信号に対して可能な状態 は5つしかない("0000","0001","0011","0111",および"1111")。ICRU は、「ノップタイプ」の命令信号(ISSUE_NOP)もISUから受け取る。この信 号は、説明したように命令がノップタイプの命令であるとICRUに通知する。 CPU51のある実施例では、ISSUE_NOP 信号は4ビット信号であり、ポジショ ンビットiでの表明ではスロット内のi番目の命令が「ノーオペ」クラスの命令 であることを示す。積極的なローカル/ストア命令のスケジューリングを実行す る場合、ISSUE_MEM 信号は4ビット信号であり、ポジションビットiでの表明で はスロット内のi番目の命令がメモリ参照命令であることを示している。 一般的に、ノーオペ命令は分岐命令のような制御転送命令、またはライトAS R、ライトFPRS、またはライトPIL命令のいずれかである。ライトASR 、ライトFPRS、およびライトPIL命令は、DFB62ではなく、対応する 制御レジスタ・ユニット800内で実行され、これによりNOPタイプの命令と して処理される。従って、その対応するISSUE_NOP 信号は「1」にセットされ、 このためA−ビットは「0」にセットされる。Tcc 命令はCCが不明 の場合は発行されない。Tcc 命令は、CCが既知で誤りである場合、NOP 命令とし て発行される。Tcc 命令は、他のケースではISSUE_NOP=0 で発行される。これ等 の命令は、実行するためにDFB62実行ユニットを必要とせず、一般に発行さ れたときと同じマシンサイクル内に終了する。対応する命令が、「分岐」(br) 命令のような「ノップ」クラスの命令の場合、ISSUE_NOP 信号は「1」にセット される。ISSUE_NOP 信号が「1」にセットされると、対応するA−ビットは「0 」にセットされる、すなわち命令は即座に非活性化されまたコミット可能となる 。(命令コミットおよびコミット時のA−ビットの変更については、以下に説明 する。) A−リングの64のアクティビティビットは、CPU内に共存する命令の活性 を示す。A−ビットは、使用される前のサイクルごとにセットされまたクリアさ れるので、初期化する必要はない。ISSUE_VALID,ISSUE_NOP, およびNISN信号 に従って、A−ビットはセットされる。 分岐命令は発行時にクリアされるA−ビットを備えているので、追加のステッ プが実行されて、CSN316が投機的に実行された分岐命令を越えて前進しな いようにする(以後の説明を参照のこと)。典型的な実施例では、分岐命令が発 行されるときに、分岐条件コードがウォッチポイント・ユニット304に記憶さ れる。ウォッチポイント・ユニット304は、命令の実行をモニタし、投機的に 発行された分岐命令が終了するとき、ウォッチポイントは実行結果を必要な分岐 条件コードと比較して、投機的な発行を確認する。条件コードを比較することに よって、投機的な実行が正確に予測されたかについての決定が行われる。投機的 な実行が正確でない場合、(バックアップおよび/またはバックステップのよう な)CPU51の回復手段が起動されてその実行を取り消し、これによりA−ビ ットがクリアされているにもかかわらず、CSNが誤予測された分岐を過ぎて前 進しないようにする。そうしないと回復を妨げる可能性がある。誤って発行され た命令シーケンスを命令コミットすることを避けるために、マシン回復手段を十 分早く起動するための特別な注意を取らなければならない。評価に先立って、保 留の命令自体が誤って予測された命令シーケンスがコミットされないようにする 。ウォッチポイントおよびCPU51の回復手段については、この明細書の他の 場所でさらに詳細に記載する。 命令の状態を追跡し詳細な状態を維持するための命令タグの使用法を含む本発 明による方法の実施例の態様を、図13〜図15のフローチャートで説明する。 図13は、状態を追跡し詳細な状態を維持するための命令タグの使用方法の実施 例の概略フローチャートである。図14は、命令の状態を追跡して詳細な状態を 維持するための本発明による方法の実施例を示す概略フローチャートである。図 15は、本発明の実施例によるアクティブ命令リングおよびメモリ命令リングに 状態情報を書き込みまた維持する方法のフローチャートである。3.レジスタのリネーミング レジスタの依存性を取り除いてISU200がマシンサイクル当たり一層多く の命令を発行できるようにするために、CPU51は発行段階の間にレジスタの リネーミングを実行する。これは、1994年10月11日にシェバナウ(Shebanow)等 に授与された米国特許第5,355,457 号に記載されている方法、および/または「 マイクロプロセサの物理レジスタの使用を調整するための方法と装置(METHOD A ND APPARATUS FOR COORDINATING THE USE OF PHYSICAL REGISTERS IN A MICROPR OCESSOR)」という名称の同時継続出願番号第08/388,364号に記載されている方 法、および/またはジョンソン(Johnso n)の論文「スーパースカラー・マイクロプロセサの設計(Superscalar Micropr ocessor Design)」のページ48〜55に記載されている方法と同じ方法で実行でき る。 レジスタのリネーミングを実行するために図8を参照すると、DFB62には 、FXRFRN604,FPRFRN605,およびFSR/CCRFRN60 6のCCRFRN610が含まれている。前に簡単に説明したように、FXRF RN604には固定小数点データを記憶するための物理固定の小数点レジスタが 含まれ、FPRFRN605には浮動小数点データを記憶するための物理浮動の 小数点レジスタが含まれ、CCRFRN610には整数と浮動小数点条件のコー ドデータを記憶するための物理整数(固定小数点)および浮動小数点条件のコー ドレジスタ(XICCおよびFCGS)が含まれている。FXRFRN604、 FPRFRN605、およびCCRFRN610は、それぞれ図16に示すよう に構成できる。 図16に示すように、レジスタファイルおよびリネームユニット(RFRN) 612には、物理レジスタを含む物理レジスタファイル614が含まれる。RF RNは、物理レジスタファイル614内の物理レジスタへの命令によって規定さ れる論理レジスタおよび/またはアーキテクト・レジスタをマッピングするリネ ームマッピング・ロジック613も含む。例えば、SPARC-V9命令では、FXRF RN604のリネームマッピング論理は、80の論理128の物理変換固定小数 点レジスタに構築された32のマッピングを実行でき、32のアーキテクトまた は論理的な単精度および倍精度の浮動小数点レジスタは、2組の64の単精度( 32ビット)のリネームされた浮動小数点レジスタ(奇数および偶数)にマッピ ングされ、5つのアーキテクトまたは論理条件コードレジスタ(xicc,fcc0,fc c1,fcc2,およびfcc3)は32のリネームされた条件コードレジスタにマッピン グする。アーキテクト論理変換マッピングは次の事実に基づいている、すなわち SPARC-V9の固定小数点命令は、図17に示す制御レジスタ・ファイル800のC WPレジスタに記憶されたカレントウィンドウ・ポインタ(CWP)に従って、 論理レジスタにマッピングするアーキテクトレジスタを規定する。 RFRNの制御ロジック613は、各発行段階の間にBRB59のフェッチレ ジスタから命令(F_INSTs_BRP)を受け取る。これに応答して、制御ロジック6 13は命令をデコードし、どの命令がこの特定のRFRNのレジスタファイル6 14からのソースおよび/または宛先として物理レジスタを必要とするかを求め る。 リネームマッピング・ロジック615は、先ず始めに、レジスタファイルの中 で現在マッピングされた物理レジスタへの命令によって指定されたそれぞれの論 理またはアーキテクト・ソースレジスタをマッピングし、TAGS_R信号の中で適当 な実行ユニット(FPU 600,FXU 601,FXAGU 602, またはLSU 603)のリザベー ションステーションへの対応する物理レジスタタグを与える。それぞれの物理レ ジスタタグに対して、リネームマッピング・ロジックは、マッピングされた物理 ソースレジスタ内のデータがまだソースとして利用可能かどうかを識別するデー タ有効(DV)ビットを有する。DVビットは、リネームマッピング・ロジック61 5によってDV_R信号の中の適当な実行ユニットのリザベーションステーションに 与えられる。さらに、データがDVビットによって示されるように利用可能な場合 、それはDATA_R信号内のマッピングされた物理ソースレジスタによって提供され る。 それぞれのRFRN(すなわち、FXRFRN604,FPRFRN605, およびCCRFRN610)に対して、FREELI STユニット700は、RFRNのレジスタファイル614のフリーな物理レジ スタのすべてのリストを含む。フリーすなわち利用可能なレジスタとは、リタイ アしていない命令によって現在使用されていないレジスタのことである。これら の利用可能な物理レジスタは、各サイクルごとにFREELISTユニット70 0からのFREE_REGS 信号によって識別される。 従って、論理またはアーキテクト・ソースレジスタがマッピングされた後、リ ネームマッピング・ロジック615は次にFREE_REGS 信号によって識別された利 用可能なすなわちフリーな物理レジスタに対する命令が指定したそれぞれの論理 またはアーキテクト宛先レジスタをマッピングし、対応するDVビットをセットし てそのレジスタ内のデータはまだ利用可能でないことを示す。リネームマッピン グ・ロジック615は次に、新しくマッピングされた物理宛先レジスタに対して 物理レジスタタグを与え、また対応するDVビットをTAGS_R信号およびDV_R 信号 の適当な実行ユニットのリザベーションステーションに与える。 さらにリネーム・ロジック615は、PSU300の再生フォーマットユニッ ト(RRF)302に旧論理またはアーキテクトされたレジスタマッピングの物 理レジスタマッピング変換を提供する。前にマッピングした物理宛先レジスタに 対する論理すなわちアーキテクトされたレジスタタグをLOG_OPHYS_TAGS信号のR RF302に送ることによって、リネームマッピング・ロジック615はそれを 行う。それぞれのRFRN612からのLOG_OPHYS_TAGS信号は、これらの信号が その特定のRFRNから来ることを示すためのフィールドを含んでいる。 RRF302をさらに詳細に図18に示す。このRRFはデータ記憶構造体3 66を含んでいる。最大64の発行されたがまだリタ イアしていない命令にシリアル番号を割り当てることができる典型的なCPU5 1では、データ記憶構造体366は64のアドレス可能な記憶素子またはエント リを含んでいる。各記憶素子は、命令のシリアル番号の1つに対応している。さ らに、データ記憶構造体366の各記憶素子は、FP論理旧物理変換マップフィ ールドまたはFX論理旧物理変換マップフィールドを、またFCC論理旧物理変 換マップフィールドまたはXICC論理旧物理変換マップフィールドを含んでい る。各種の構造体はRRF302を実行するために使用できる。ある典型的なR RFは、64レジスタラ 29ビットの4つのバンクのインターリーブされたRA Mとして実行され、そこではRRFへの書込みサイクルの間、フィールドはパッ クまたはバンドルされ、バックステップの間の読み出しでアンパックまたはアン バンドルされる。 RRFの制御ロジック365は、DFB62からLOG_OPHYS_TAGS信号を受け取 り、FXRFRN504からの浮動小数点レジスタタグ、FPRFRN605か らの固定小数点レジスタタグ、およびCCRFRN610からのXICCタグお よびFCCタグをどれが含んでいるかを決定する。制御ロジック365は、PS U300のICRU301からNISNポインタを、またISU200からISSU E_VALID 信号も受け取る。NISNのポインタとISSUE_VALID 信号に応答して、 制御ロジック365は、LOG_OPHYS_TAGS信号を受け取る発行された命令のシリア ル番号を決定する。 典型的なCPU51では、命令は浮動小数点とFCCレジスタとを同時にまた は固定小数点とXICCレジスタとを同時に変更できるにすぎないが、固定小数 点、浮動小数点、XICC、およびFCCレジスタを同時に変更できない。従っ て、固定小数点または浮動小数点の論理および旧物理レジスタタグをLOG_OPHYS_ TAGS信号の中 で受け取るそれぞれの命令に対して、制御ロジック365はこれらのタグ(FP_T AGS または FX_TAGS)をシリアル番号を付けて発行された命令に対応する記憶素 子のFP論理物理変換マップフィールドまたはFX論理物理変換マップフィール ドに書き込む。同様に、FCCまたはXICCの論理および旧物理レジスタタグ を受け取るそれぞれの命令に対して、制御ロジック365はFCC論理旧物理変 換タグまたはXICC論理旧物理変換タグを、シリアル番号を付けて発行された 命令に対応する記憶素子のFCC論理物理変換マップフィールドに書き込む。従 って、命令が浮動小数点とFCCレジスタとの両方または固定小数点とXICC レジスタとの両方を必要とする場合、この命令のLOG_OPHYS_TAGS信号に含まれた 論理および旧物理レジスタタグは同じ記憶素子に書き込まれる。しかしながら、 RRF302は固定小数点、浮動小数点、XICC、およびFCCレジスタを同 時に変更する命令に対する論理旧物理変換マッピングを記憶するように構成でき ることは、当業者は理解されよう。 従って、RRF302は、必要な場合、以前の論理物理変換マッピングまたは 関係を再構成できる連続的な履歴台帳として機能する。例えば、SN="X"に対応す る命令を取り消すことが必要になる場合、RRFの中でSN="X"をインデックスと して用いて、論理および旧物理レジスタタグを識別する。次に、これ等のタグは 適当なRFRNに渡され、SN="X"命令を実行する直前に存在した物理レジスタマ ッピングに対する論理レジスタマッピングを回復し、この新たにマッピングされ た物理レジスタはフリーリストに戻される。これによりレジスタのリネーミング を効果的に逆にでき、レジスタの状態は命令を実行する直前に存在した状態に戻 される。数個の命令を取り消す必要がある場合、同じ手順が逆にしたステップご とに、ISNから始めてSN="X"までデクリメントして加えられる。このプロセス は詳細に後述する。 図19は、論理ソースレジスタL41およびL42、および宛先レジスタL4 7を備えた加算命令用のレジスタリネーミングの例である。前述に従って説明す ると、論理ソースレジスタL41およびL42はリネームマッピング・ロジック 615によって物理レジスタP50およびP52にマッピングされる。次に、論 理宛先レジスタL47は、FREELISTユニット700が提供したフリーな 物理レジスタP99に再マッピングされ、論理宛先レジスタL47用の論理レジ スタタグおよび以前マッピングされた(旧)物理レジスタP78が加算命令に割 り当てられたシリアル番号(SN=13)を用いてマッピングするためRRFに与え られる。この例から明らかなように、各「物理」レジスタタグは、(1)フリー リスト700、(2)FXRFRN604、FPRFRN605、またはCCR FRN610のリネームマッピング・ロジック、(3)RRF302の1つにま た1つだけに現れる。4.リザベーションステーションへのディスパッチ 図8をさらに参照すると、発行段階の間に、FPU600、FXU601、F XAGU602、およびLSU603のリザベーションステーションはSRB5 9から F_INSTs_BRP命令を受け取る。これに応答して、それぞれのリザベーショ ンステーションは、これ等の命令からオペコードと即値データとを抽出する。 それぞれのFPU600、FXU601、FXAGU602、およびLSU6 03のリザベーションステーションは、発行段階の間に発行された命令に割り当 てられたシリアル番号およびチェックポイント番号を受け取る。これ等の番号は ISB62から受け取ったシリアル番号およびCHKPT_N 信号が提供する。 浮動小数点データを含む数学上の命令およびリード/ライト命令 を実行するために、FPU600のリザベーションステーションは、発行段階の 間に、FSR607のFPRFRN605およびCCRFRN610から、使用 可能なデータ、データ有効ビット、およびFP物理レジスタタグおよびCC物理 レジスタタグ(FP_DATA_R,FP_DV_R,FP_TAGS_R,CC_DATA_R,CC_DVR,CC_TAGS_ R)を受け取ることができる。同様に、FXU601は、固定小数点を含む数学 上の命令、プログラム制御命令、およびリード/ライト命令を実行するために、 発行段階の間に、FXRFRN604およびCCRFRN610から、ISB2 DFBバスに対する制御レジスタ・ファイル800からのデータ、使用可能デー タ、データ有効ビット、およびFX物理レジスタタグおよびCC物理レジスタタ グを受け取ることができる。ロード/ストア命令および固定小数点非乗算/除算 の演算命令用のアドレス発生動作を実行するために、FXAGU602は、FX RFRN604および/またはCCRFRN610からデータならびにFX物理 レジスタタグおよびCC物理レジスタタグ(FX_DATA_R,FX_DV_R,FX_TAGS_R,C C_DATA_R,CC_DV_R,CCTAGS_R)を受け取ることができる。しかしながら、前に 説明したように、プログラム制御、乗算/除算、および制御レジスタのリード/ ライト命令を実行するために、FXAGU602はFXU601と同様に構成す ることができ、この場合FXAGU602はFXRFRN604およびCCRF RN610から適当な使用可能なデータおよび物理レジスタタグも受け取ること ができる。さらに、ロード/ストア命令を実行するために、LSU603は発行 段階の間にFPRFRN605および/またはFXRFRN604およびFSR /CCRFRN606のFSRレジスタの内容から、使用可能なデータならびに FP物理レジスタタグおよびFX物理レジスタタグ(FX_DATA_R,FX_DV_R,FX_T AGS_R,FP_DV_R,FP_TAGS_R)を受け取 ることができる。 そして、リザベーションステーションのエントリがENTRIES_AVAIL 信号によっ て識別されたように使用可能な発行されたそれぞれの命令に対して、そのリザベ ーションステーションは識別されたエントリに抽出されたオペコード、シリアル 番号、チェックポイント番号、物理宛先レジスタタグおよび/またはソースレジ スタタグ、およびその命令に対して使用可能なデータを配置する。さらに、受け 取ったデータ有効ビットによって識別されたように、データがすでに使用可能で あるそれぞれの物理ソースレジスタタグについては、リザベーションステーショ ンはリザベーションステーション内の別のデータ有効ビットをセットして、レジ スタタグに関係するデータが使用可能であることを示す。また、命令が即値デー タを含む場合は、そのデータは即座に使用可能でありまたリザベーションステー ションのエントリに記憶されるので、データ有効ビットもセットされる。C.命令の実行と完了 再度図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信号が示すいくつの命令が発行されるかを計算す る。 例えば、SPARC−V9 BPcc,Bicc,BPr,FBfcc および FBPfcc 命令のように、 発行された命令に条件付き分岐命令がある場合、PCロジック106は分岐を取 るように予測するかまたは取らないように予測するかを決定するために、これ等 の命令に対応するBRPファイルをデコードする。分岐を取るように予測した場 合、PCロジック106は命令から置換値を抽出し、その値を使用して次のマシ ンサイクル用の新しいFPC値、APC値、およびNAPC値を計算する。分岐 を取らない場合は、FPC値、APC値、およびNAPC値は、プログラムの流 れに変更なく標準的に計算される。 しかし、発行された命令の中に、SPARC−V9 JMPL[rd=0]命令のようなリターン タイプのジャンプおよびリンク命令がある場合、PCロジック106はリターン 予測スタック105から予測されたJMPLターゲットPC(P_JMPL_PC)値を ポップオフするためにPOP信号を出力する。PCロジック106はこのターゲ ットPC値を使用して、新しいFPC値、APC値、およびNAPC値形成する 。サブルーチンから復帰するためにJMPL[rd=0]命令を使用するが、PCロジック 106は、SPARC-V9 JMPL[rd=15]命令のようなCALL命令すなわちコールタイ プのジャンプおよびリンク命令が発行されたと判断したときはいつでも、PUS H信号を出力してリターン予測スタック105にP_JMPL_PC 信号を送る。リター ン予測スタック105に送られたこのP_JMPL_PC 信号は、8だけインクリメント する命令用のAPC値である。さらに、CALL命令すなわちJMPL[rd=15]命令 が発行されるときはいつでも、P_JMPL_PC 信号がリ ターン予測スタック105に送られるので、PCロジック106はRETURN 命令が発行されるときは常に、P_JMPL_PC 信号がリターン予測スタック105か らポップオフされることも確認しなければならない。 さらに、発行された命令には、SPARC-V9 BPA,BA,FBA および FBPA 命令のよ うに無条件常時分岐命令が含まれることがある。この場合、PCロジック106 はこれらの命令から置換値を抽出し、新しいFPC値、APC値、およびNAP C値を計算するために使用する。 PCロジック106は、条件分岐命令、常時分岐命令、およびJMPL[rd=0]命令 に対して、DFB62からの補足データを待つ必要がないので、これ等のタイプ の命令は同じ段階で発行、実行、また完了することができる。さらに、発行され た条件分岐が実施されるまたは実施されないことが予測され、また予測されたタ ーゲットFPC値がJMPL[rd=0]命令について計算されるので、続いてフェッチさ れた命令は投機的にフェッチされこのため投機的に実行される。 さらに、発行された命令の中には、コールタイプのJMPL[rd=15]命令のような CALL命令およびRETURN命令、ならびにJMPL[rd=0]命令以外のJMPL 命令のように他の種類のプログラム制御命令がある。この場合、PCロジック1 06は,FPC値を計算し実行段階の間にその値をDFB2BRBバスに乗せる ためにDFB62を待つ。図8を参照すると、FPC値は固定小数点データであ るので、FXU601はFPC値を計算する。そして、完了段階の間に、PCロ ジック106はこの値を取り込み、新しいFPC値、APC値、およびNAPC 値を形成する。 後でより詳細に説明するように、発行されたいくつかの命令がSPARC-V9 DONE 命令またはRETRY 命令のようなトラップハンドリング ・ルーチン命令からリターンするとき、PCロジック106はトラップPC(TP C)値またはトラップNPC(TNPC)値を、図7に示す制御レジスタファイル8 00が提供したRD_TPC_TNPC 信号から受け取る。図17を参照すると、制御レジ スタファイル800のトラップスタック815は、ISU200がRETRY 命令ま たはDONE命令が発行されたことを示すRETRY_DONE_IS 信号を出力するとき、これ 等の信号を提供する。PCロジック106は次にトラップスタック814から受 け取ったTPC 値またはTNPC値を使用して、新しいFPC値、APC値、およびN APC値を形成する。 他の発行された命令については、PCロジック106は発行段階の間に前述の PC値およびNPC 値をインクリメントして、次のフェッチ段階用の新しいPC値およ びNPC 値発生する。 図8を参照する。発行段階の間に発行された命令は、必要なすべてのデータが 対応するリザベーションステーションのエントリに配置された場合のみ、FPU 600、FXU601、FXAGU602、およびLSU603を実行できる。 他の命令よりも後で発行された命令用のデータがより早く使用可能になるので、 これ等の命令は以前発行されたよりも前に実行され完了されることがある。 前述したように、物理ソースレジスタ用のデータ有効ビットが使用可能と指示 しない場合は、物理ソースレジスタのソースデータは使用できないことを、リザ ベーションステーションは知っている。従って、リザベーションステーションは 、データが使用可能な場合、FXRFRN604、FPRFRN605、および CCRFRN610から転送された、適当な使用可能なデータ、データ有効ビッ ト、および物理レジスタタグ(FX_DATA_F,FX_DV_F,FX_TAGS_F,FP_DATA_F,FP _DV_F,FP_TAGS_F,CC_DATA_F,CC_DV_F,CC_TAGS_F)を受け取りモニタする。 リザベーションステーションは、対応す る転送された物理レジスタタグがリザベーションステーションのエントリに記憶 された物理レジスタタグに適合する場合は、特定のレジスタ用に意図された転送 データを受け取る。 すべてのデータ依存性がある命令に適合した場合(すなわち、すべての必要デ ータが使用可能になる場合)、その特定の命令用にリザベーションステーション のエントリに記憶された命令を用いて、実行ユニットは次にその命令を実行する 。実行ユニット600〜603が実行する命令のタイプについては、リザベーシ ョンステーションの記憶エントリに関して前に説明してある。 生成したデータがその命令用のエントリのリザベーションステーションに記憶 された物理宛先レジスタタグによって識別された物理レジスタに記憶されたとき 、実行された命令は完了する。完了する間に、実行ユニット600〜603はER R_STAT信号のエラーおよび完了状態情報もPSU300に送る。 さらに、図7を参照すると、ISU200はフェッチレジスタ100から受け 取った命令をデコードして、発行された命令のいずれかが図17に示す制御レジ スタ801〜814のリード/ライト命令であるかどうかを決定する。制御レジ スタ801〜814はCPU51の全体的な管理のもとで使用され、SPARC-V9の アーキテクチャマニュアルの中で説明されたタイプの特権付きのステートレジス タ、特権なしのステートレジスタ、および補助ステートレジスタを含むことがで きる。 SPARC-V9 RDPR 命令およびRDASR 命令のような発行された制御レジスタのリー ド命令については、レジスタ801〜814の1つを識別して読み込まれること になっていることを示すRD/WR_CNTRL 信号をISU200は出力する。その応答 として、制御レジスタ・ファイル800の制御ロジック816は、RD/WR_CNTRL 信号が識別し た制御レジスタの内容(RD_CNTRL_REG)をウォッチポイントユニット304に出 力する。 後述するように、CPU51は制御レジスタ801〜814のリード命令に対 してチェックポイントおよび対応するウォッチポイントを作るので、ISU20 0はDO_WATCHPT信号およびDO_CHKPT信号を発生する。DO_CHKPT信号は、チェック ポイントを作成しこのチェックポイントに対するチェックポイント番号を含むべ きであることを示している。DO_WATCHPT信号は、DO_CHKPT信号が提供したチェッ クポイント番号にあるウォッチポイントユニット304によって形成されるべき であることを示している。ウォッチポイントユニット304は、それぞれが16 のチェックポイント番号の1つに対応する16のアドレス可能な記憶素子を有す る。従って、DO_WATCHPT信号およびDO_CHKPT信号に応答して、ウォッチポイント ユニット304は、DO_CHKPT信号の中で提供されたチェックポイント番号に対応 する記憶素子の中で読み取られる制御レジスタの内容を記憶する。 リード制御レジスタ命令は、さらに実行を続けるために、FXU600のリザ ベーションステーションにも提供される。従って、命令のチェックポイント番号 はその命令用のリザベーションステーションのエントリの中に記憶される。そし て、FXU601がリード制御レジスタ命令を実行するとき、それは命令のチェ ックポイント番号をウォッチポイントユニット304に出力する。その応答で、 ウォッチポイントユニットはFXU600より前に読み取られた制御レジスタの データを出力する。FXU600は次にそれを提供し、また固定小数点レジスタ に記憶するために対応する物理宛先レジスタタグをFXRFRN604に与える 。従って、CPU51は制御レジスタの読み込みを行うために同期される必要は ない。 制御レジスタ(SPARC-V9 WRPR およびWRASRのような)に書込み 動作を行うためには、FXU601はリザベーションステーションにその命令用 に記憶された命令データを実行してデータをDFB2BRBバスに出力する。図 17に示すように、そのデータは次に制御レジスタ・ファイル800に送られる 。ISU200は、制御レジスタへの書込み命令が発行されまたどのレジスタに この書込み命令が行われるかを示すRD/WR CNTRL 信号を発生しているので、RD/W R/UPDATEロジック816はデータを適切に制御レジスタに書き込むことができる 。 前述したように、典型的なCPU51は固定小数点用にレジスタウィンドウを 使用している。レジスタウィンドウの動作は、SPARC-V9のアーキテクチャマニュ アルに詳細に記載されている。従って、ISU200はいつレジスタウィンドウ の制御命令が発行されたかを決定する。そのように行う際に、ISU200はウ ィンドウ制御命令が発行されたことを示すと共に特定の種類の行うべきレジスタ ウィンドウ動作を識別するWIN_CNTRL 信号を発生する。これ等の信号は、図17 に示すように、制御レジスタ・ファイル800に渡される。その応答として、RD /WR/UPDATEロジック816は次に、WIN_CNTRL信号が示すレジスタウィンドウの 更新動作を実行する。D.命令実行段階におけるPSUの参加 ひとたび命令がDFB62内の適当な実行ユニットにディスパッチされると、 ICRU301は命令が完了するのを待ち、それぞれの命令のシリアル番号につ いてエラーおよび状態情報がDFB62およびPSU300の間の実行データ転 送バスをわたって到来することをモニタする。実行段階におけるPSUの参加は 、実行状態情報を受信することに限定されている。命令がエラーなしで実行を完 了し誤った予測がなかった場合、この命令は非活性化される。しかしながら、実 行の例外が発生するかまたは投機的な実行が誤って予 測された場合、この命令は非活性化されないかまたはCPU51は回復手順を初 期化する。A−リングの状態情報は更新されて、正確または不正確な投機的実行 および例外的または例外なしの実行を反映する。命令が正しく予測され実行が例 外なしに予測された場合、ICRU301はシリアル番号に関連するA−リング のビットをクリアしてその命令を非活性化する。 典型的なCPU51においては、DFB62は浮動小数点機能ユニット(FP U)600、固定小数点機能ユニット(FXU)601、固定小数点/アドレス 発生機能ユニット(FXAGU)602、およびロード/ストア機能ユニット( LSU)603、ならびにFPRFRN605、FXRFRN604、CCRF RN606、およびFSR607を含む。典型的なCPUでは、それぞれのDF B機能ユニットはマシンサイクル当たり2つの命令まで処理できるので、命令の 実行完了はマシンサイクル当たり最大8つの命令に(ハードウェアの制約によっ て)制限される。CPUのある実施例では、FPU600は2つの命令を同時に 処理できるが、1つの命令の結果しか出力できない。そのためその実施例では、 命令の完了は7つの命令に制限されている。しかしながら、2つの出力を実行で きない理由はない。図8はDFB62の中の主な機能ユニットと、DFB62お よびISB61間を通過する主な信号の機能的ブロック図を示す。 ディスパッチされた命令がDFB62の中で実行を完了すると、命令識別エラ ーおよび他の状態情報(ERR_STAT)は、実行データ転送バス上のICRU301 (および他のユニット)を含むPSU300に同報通信される。データと状態は 各命令に対して受け取られるが、順序を乱して受け取られることがある。各命令 用の実行状態情報信号には、例えば、実行中にエラーが発生したかどうか、エラ ーのタイプ、投機的な実行が正しく予測された場合の評価用の条件コード、シリ アル番号、命令のチェックポイント(マシンが故障した場合およびバックアップ を必要とする場合、マシンがバックアップするチェックポイント)、および命令 には制御レジスタに対するリードまたはライト命令が含まれているかどうかの情 報を含むことができる。 同報通信命令のシリアル番号は、図12のアドレスデコード・ロジック334 によってA−リング312にインデックスするために使用される。A−リング上 のA−リングライトポート341,342(およびCSN/RRP前進ロジック 323用のリードポート343)の数は、プロセッサのピーク実行帯域幅に一致 するように選択するのが好ましい。特定の命令がエラーの原因になる場合、A− リングクリアロジック333はこの特定の命令のシリアル番号に相当するA−ビ ットに「0」を書き込み、この命令は以後非活性化されたと考えられる。しかし ながら、命令がエラーを伴って終了した場合、A−リングの対応するアクティブ ビットはクリアされないため、この命令はなおアクティブと考えられ、例外条件 またはエラー条件から回復するために、プロセサを回復させる別のステップが用 いられる。結局、CSNは、エラー処理命令に先行するロケーションのあるスロ ットを指すISNに追い付くことになる。CSNはそのA−ビットがまだセット されているため、エラー処理命令のシリアル番号を通過できない。そして、実行 トラップが行われるとき、エラー処理命令のA−ビットは「1」で上書きされ、 CSNおよびRRPが前進することを可能にする。 トラップのタイプを識別するテイクントラップ(TT)フィールドはトラップ スタックからポップオフされデコードされて、このトラップが実行トラップ(et rap)であるかどうかを決定する。この 実行トラップは次に「DONE」命令または「RETRY」命令を発行することによって 処理される。実行トラップをうまく処理できた場合、トラップハンドラによって ETRAP_CLEAR 信号が現れ、A−ビットをクリアする。同様のロジックがM−リン グ324のクリアM−ビットに送られる。 データ信号および状態信号は、それぞれの実行発行スロットにおける命令のシ リアル番号を提供すると共に、どの例外が一時的に早いかを決めることを複数の 命令が誤るような場合に、PSU300が例外処理のプライオリティを決定する ために使用される。(例外の優先順位については、プライオリティロジックおよ びステートマシンPLSM307に関連してさらに説明する。)典型的なプロセ サにおいては、シリアル番号はエラーおよび状態情報よりも1サイクル早く到来 するため、エラー情報の到来の前にアドレスデコード・ロジックユニット334 がシリアル番号をデコードすることが可能であり、このためアドレスデコード・ ロジックの中で一層の遅延を招くことなく、ビットをクリアできる場合(エラー がない場合)またはビットをクリアできない場合(エラーがある場合)がある。 エラーまたは他の例外が検出された場合、この明細書の中で後述するように、こ のエラーまたは例外を処理するための適切なステップが実施される。E.命令コミット これまで説明した構造と方法は、典型的な実施例におけるA−リング312と 64の命令のアドレス可能なロケーションと同数の命令の発行および実行状態を 追跡する構造および方法を提供している。CPUのリソースを回復する構造と方 法が欠けていても、CPU51によって命令に割り当てられた、例えばシリアル 番号および関連するA−ビットを含むリソースは、例え命令が完了し非活性化さ れていても、その命令に対して割り当てられたままであろう。A−リングのデー タ構造に関連する付加的なポインタを付け加えて、またCPU51内の関連する 命令の状態の変化に応じてそのポインタを移動させることによって、特に非活性 化と命令をコミットすることができ、またリソースをリタイアさせて別の命令に よって後で使用するために再生できるようになる。この方法では、リソースは新 たに発行された命令が連続的に使用できるようになる。 コミットシリアル番号ポインタ(CSN)316は、最新のコミットされた命 令を指し示す。「コミットされた命令」とは、エラーなしで実行が完了した命令 と定義されるため、それは発行から実行を通って進行し、取り消される必要があ るまた取り消されることがないいかなる投機的に発行された予測中央転送(ブラ ンチ)命令よりも前に発行されている。コミットされた命令を取り消す必要はな い。定義により、コミット命令シリアル番号(CSN)ポインタ316より前の すべての命令は、エラーなしで実行が完了しており、取り消される必要はない。 CSNがマシンサイクルごとに進む量は、マシンの最大命令コミット速度を設定 する。完了しておりかつ非活性化された命令は、A−リングにおけるこれ等の命 令用のシリアル番号に向かってまたは超えてCSNが前進するまでコミットされ るとは考えられない。 ISN314について前述したように、CSN316が前進できる最大のポジ ション数は、ソフトウェア、ハードウェア、または他の制御によってサイクル当 たりの命令のより小さな最大数に制限できる。例えば、ISNの前進をマシンサ イクル当たり4つの命令に制限する発明のある実施例では、CSNはハードウェ アに課せられた制限によってサイクル当たり8つに制限される。さらに、CSN はISNに等しくなることもあるが、A−リングの周りではISN を超えて前進することはできない。(A−リングの構造のため、CSNは厳密に は数的にISNより小さく、等しく、または大きくなることができる。)CPU が初期化されるとき、CSNは0(ゼロ)に初期化され、次に命令の状態の変化 および、以後説明するように、所定のCSN前進ルールに従って前進する。 アクティブビットはアクティブ命令リングの中でクリアされるので、CSNは 所定のルールに従って前進して、実行が完了している命令を「コミット」する。 一般に、CSNのポインタは、すでに実行を完了した命令より遅れることがある (すなわち、非活性化される)。CSN/RRP前進ロジックユニット323は 、CSNポインタおよびRRPポインタのポジションを前進させることに責任を 負う。各マシンサイクルで、CSN/RRPロジックユニット323はISNを 通らずに、完了した非活性化された命令(A−リングにおいて、アクティビティ ビット=「0」)を超えてCSNを前進させようとする。据置きトラップが生じ た場合を除いて、CSNはA−リング312のA−ビットのセットされた条件ま たはクリアされた条件および実行された(例えば、ソフトウェア、ファームウェ ア、および/またはハードウェア)所定のルールに基づく場合のみ前進する。C SN/RRPロジックユニットはCSN用の適切なシリアル番号のアドレスを決 定するために、A−リング自体の状態を問い合わせて、ISNを注意し続ける必 要があるだけである。据置きトラップが得られてうまく処理された場合、PLS M307はDEFERRED_TRAP 信号を、CSNを1つのシリアル番号のロケーション だけ前進させるCSN/RRP前進ロジック制御・ユニット323に送り、この ためCSNと後のRRPが例外の原因となる命令を通って前進できるようになる 。本発明のある実施例では、CSNの前進は所定の最大命令コミット速度(マシ ンサイクル当たり8命令) によって制限される。この速度はCSNポインタを移動させるために必要なハー ドウェアを制限する希望に基づいて選択される。 原則として、CSNはISNと等しくなるまで前進できる。ISN=CSNの 場合、CPUは空である、すなわちすべての発行された命令はコミットされてい る。実際、ロジックを単純化できまた必要なハードウェアを少なくできるので、 CSNの最大の前進量を(マシンサイクル当たり(4命令発行マシンについては )8つに)制限することは有利である。例えば、マシンサイクル当たり4命令発 行CPUでは、CSNの前進量はサイクル当たり8つのシリアル番号に制限され ている。CSNの前進量を支配するルールは、以下のように要約できる。(1) CSNの前進はISNまでである(両端を含む)。(2)CSNの前進は1マシ ンサイクル当たり8命令のシリアル番号以下である。(3)前進はまだコミット できないアクティブ命令に相当するA−リングの最初の「1」までである(両端 を除く)。さらに厳密にいうと、CSNは一般に次の関係に基づいて前進する( 下記の例外に関する修正を参照のこと)。すなわち、CSN=min(CSN+4,ISN,slot _A)、ここで、A(CSN+1),..,A(slot_A)はすべて「0」であり、A(slot_A+1)=1 である。この式で「min」は最小関数であり、「slot_A」はA−リング312の A−ビットのロケーションのことであり、またA(slot_A)はそのA−ビットロケ ーションのビットの状態(例えば、「1」または「0」)である。据置きトラッ プが削除されまた未完成の浮動小数点オペレーションの例外またはデータブレー クポイントの例外が検出されたように受け取られたとき、CSNを前進させるル ールは修正される。未完成の浮動小数点の例外およびデータブレークポイントの 例外は、DFB62からの状態信号(ERR_STAT)を実行することによって識別さ れる。これ等の例外が発生しトラップが処理されると、CSNは 1だけ前進する、すなわちCSN = CSN + 1となり、CSNは例外の原因となった 命令を通って前進する。PSU300は未完成の浮動小数点オペレーションおよ びデータブレークポイントに特に関心を持っており、A−ビットが処理されたト ラップに対してクリアされない場合、CPUは満杯となり機能停止するため、未 完成の浮動小数点オペレーションおよびデータブレークポイントの両方はポイン タの特別の処理を必要とすることがある。 CSNの前進を「maximum(8,ISN,the next A-bit = 1)」に制限することに よって、CSNを適切なポジションに移動させるための単純なハードウェアの回 路を実現できる。例えば、A−リング312は8つの8ビットレジスタとして実 現できる。これ等8つの8ビットレジスタのA−リングのリードポート343に おいて、CSNの周囲のレジスタが読み込まれ、これ等の読み込まれたレジスタ の内容は2つの別個の8ビットバスに送られる。これ等のバスを単一の16ビッ トバスに連結して、次に0ビットから8ビットまでシフトすることによって、古 いCSNを前進させるための8ビット関心ウィンドウを形成する(CSNの最大 の前進量は8)。「最初の1を見つける」回路は、CSNが前進する量を見つけ ることになる。 ICRU301はまたコミットシリアル番号(CSN)信号および発行転送番 号(ISN)をチェックポイントユニット303に送ることによって、現在のコ ミットシリアル番号(CSN)316のチェックポイントユニット303に通知 し、CSNより小さいシリアル番号を有する任意の割り当てられたチェックポイ ントを解放できるようにする。厳密な数学的な順序(すなわち、シリアル番号) ではなく円形のA−リング上のロケーションに比例するもので、CSNは円形の A−リング上のロケーションに比例する。チェックポ イントについては、この明細書の各所でより詳細に説明している。CPU51の ある実施例では、本願に記載したCSNならびに他のポインタは、アドレス可能 なA−リングのビットロケーションと一致する命令のシリアル番号をエンコード する6ビットのベクタである。F.命令のリタイアメントとリソースの回復 CPUの割り当て可能なリソースはプロバイダによって回復される。補助ポイ ンタは、命令がリタイアするときに解放されるリソースに対して命令のリタイア メントおよびリソースの再生を追跡および制御するために提供される。リソース 再生ポインタ(RRP)317は、最新のリタイアした命令を指し示し、CSN を追跡する。「リタイアした命令」とは、実行が完了し、CPU51によって非 活性化され、またコミットされた命令のことであり、次の命令の発行の間に、次 の使用のために再生された関連するマシンのすべてのリソースを有している。再 生されたマシンのリソースには、リネームされたおよび/または再マッピングさ れた論理レジスタ、アーキテクチャルレジスタ、および物理レジスタが含まれる 。これ等のレジスタは、命令のリタイア時に開放されこのため次の命令が発行さ れる間に再割り当てに使用可能とされた命令、命令のシリアル番号(SN)、チ ェックポイント、およびウォッチポイントに割り当てられている。マシンサイク ルごとにRRPが前進する量は、そのマシンの最大命令リタイアメント速度を設 定する。CPUが初期化されると、RRPは0(ゼロ)に初期化され、命令の状 態の変化および後述する所定のRRPの前進ルールに従って前進する。チェック ポイントとウォッチポイントの割り当ておよび割り当て解除については、以下に 詳細に説明する。 命令がコミットされると、リソース再生ポインタ(RRP)31 7は、命令をリタイアするためにCSN316の後ろに前進するため、マシンの リソースを解放することができまた再利用のために再生できる。それぞれのマシ ンサイクルごとに、A−リングのA−ビットの状態とCSNを超えない所定のR RPの前進ルールとに基づいて、RRP317はコミットされた命令を超えて前 進しようとする。非コミット命令に割り当てられたマシンのリソースは、たとえ 非活性化された場合でも、命令が取り消される必要がないことがはっきりするま で開放されないので、RRPはCSNを通過できない。非活性化された命令はま だ投機的であるので、命令の完了(非活性化)だけでは命令コミットまたはリタ イアメントに対して十分ではない。コミットされた命令のみがリタイアできる。 RRP317はレジスタのリソースを再生できる次の命令を指し示している。A −リング312、CSN316、およびCSN/RRP前進ロジック328の中 で実行できる所定のルールのセットされた条件またはクリアされた条件のみに基 づいて、RRP317は前進する。 ISNおよびCSNの場合のように、RRPがそれぞれのマシンサイクルごと に前進できるポジションの最大数は、他のソフトウェア、ハードウェア、または 他の制御によって、サイクル当たりの命令のより小さな最大数に制限される。本 発明のある実施例では、RRPの前進量は、RRPのポインタを移動させるに必 要なハードウェアを制限したいという希望に基づいて選択された所定の最大命令 リタイアメント速度によって制限される。例えば、典型的なサイクル当たり4発 行タイプのCPUの実施例では、RRPの前進とこれによるリソースの回復は、 マシンサイクル当たり最大4命令に制限される。これは典型的なマシンの最大命 令発行速度に等しいため、CPU51の性能を制限するものではない。RRPを 通常の発行速度よりも遅く前進するように制限すべきではない。さらに厳密に言 うと、RRPは次の関係、すなわち、「RRP+min(RRP+4,CSN)」に基づいて前進 する。原則的に、この方法でリソースの回復を制限することは、本質的なもので はなく、RRPはCSNまで前進できる。ハードウェア設計のトレードオフのた めに、典型的なCPU51に制限が課せられた。CSNを所定の命令数だけ前進 させるに必要なハードウェアは、RRPを同じ命令数だけ進めるに必要なハード ウェアよりも大規模になる。従って、ハードウェアを希望のレベルまで小さくす るために、性能に有害な影響がほとんどまたは全くないようにして、RRPをC SNよりも遅く前進させる。1.命令のコミットと命令のリタイアメント時のRRFとリネームマップの更新 図18を参照する。リソースリカバリは命令のシリアル番号を開放するので、 そのシリアル番号を再び使用することができ、その結果、いくつかのレジスタを 開放することになり、そのレジスタはフリーリストユニット700内のフリーリ ストに戻すことができる。命令がコミットされると、この命令はICRU301 が発生したCOMMIT_VALID信号によって識別される。このCOMMIT_VALID信号に応答 して、RRF302の記憶ユニット366のコミットされた命令と一致するエン トリは、再利用のため制御ロジック365によって開放される。2.命令のリタイアメント時のRRFの読取り 命令がリタイアするとき(ICRU301の説明を参照のこと)およびマシン のバックアップ時(バックトラックの説明を参照のこと)に、RRFは読み取ら れる。ある命令がリタイアする場合、RRPポインタが示すように、制御ロジッ ク365は記憶ユニット366を制御して、フリーリストユニット700に、FR EE_TAG信号の形式で、リタイアした命令に一致する物理レジスタタグを出力する 。フリーリストユニットは次に、この物理レジスタタグを空きの物理レジスタタ グのリストの中に入れる。3.ポインタを使用する精確なステートメンテナンス A−リング312およびその関連するロジックは、発行された各命令の状態に 関する正確なマシンサイクルの現在の情報を提供する。ISNとCSNのポイン タは、発行されたアクティブな命令の状態を追跡する。CSNが特定の命令に向 かって前進する場合のみ、CPU51は、その命令をコミットできまたフリーな リソースをその命令の実行と関連付けることができると確信することができ、こ れにより精確な状態を保存できる。ISNはエントリを通過するとき、発行され た命令にA−ビット(A=1)をセットするA−リングの周りを移動する。CSN は、コミットするために完了した命令(A=0)を捜すISNに続く。NMCSN は、完了した(非活性化された)メモリ命令(M=0)を捜すISNに続く。RR PはA−リング312の周りのCSNの後に従い、コミットされた命令のリソー スを再生する。積極的なロード/ストア命令のスケジューリングを説明する場合 、その説明にはどのようにNMCSNが完了した(非活性化された)メモリ命令 (M=0)を捜すISNに続くかが記載されることになる。 CSNはA−ビットがセットされている命令へは進まない。(NMCSNは、 M−ビットがメモリ参照命令の発行時にクリアされるので、メモリ参照命令を通 って前進する。)正確な状態を維持できるポインタを移動させるための他のルー ルは、以下の通りである。すなわち、(1)CSNはISNを通って前進できな い(ISN ≧CSN)。(2)CSNはNMCSNを通って前進できない(NMCSN ≧C SN)。(3)CSNはPBSNを通って前進できない(PBSN≧CSN)。(4)N MCSNはISNへ前進できない(ISN ≧NMCSN) 。(5)PBSNはISNへ前進できない(ISN ≧PBSN)。(6)RRPはCS Nを通って前進できない(CSN ≧RRP)。(7)NISNは常にISN+1 である( 加算はモジュロリング長である)。(8)ISNはRRPまたはCSNに追い付 くことはできない(最大限のマシン条件を示す)。好ましい実行方法において任 意に実行できる他のルールとして、(9)CSNおよびNMCSNは1クロック サイクルで最大8前進できる。(10)RRPはマシンの1クロックサイクルで 最大4前進できる。記号「≧」は、より大きいまたは等しい関係は、厳密に数学 的に等しいまたは等しくないということではなく、A−リング構造の周りのラッ プに関して決定されることを示す。 ISNポインタ、CSNポインタ、およびRRPポインタに関して、次のよう に観察できる。すなわち、第1に、CSNとISNとの間のシリアル番号を持つ 命令は、マシン内で未決着のアクティブな命令に相当する。これ等の命令は投機 的であり、取り消す必要がある。第2に、CSNとRRPとの間の命令はすでに コミットされたリタイアしてない命令に相当するもので、RRPによるリタイア メントを単に待っている。これ等のコミットされた命令は取り消されることはな い。第3に、CSNはまだ発行されていない命令の結果をコミットできないので 、ISNを通り越すことはできない。第4に、定義によりCSN=ISN=RR Pの場合に「シンク」信号が到着するので、マシンで発行されたすべての(IS N)命令はコミットされ(CSN)リタイアされる(RRP)。第5に、ISN は概念的に円形のA−リングにおいてRRPを超えることはできず、またRRP とISNとの間のシリアル番号は命令の発行に使用できる。ISN=RRP−1 の場合(モジュロA−リング長)、すべての命令のシリアル番号は割り当てられ 、そしてRRPが前進して 別の命令が発行される前にマシンのリソースを再利用するために再生できるまで 、マシンはストール(待機)しなければならない。無論、CPU51はストール の前に発行された命令の実行、非活性化、完了、およびコミットを継続する。最 後に、3つのポインタ間の相対的な関係は、RRP≦○CSN≦○ISNであり 、ここで「≦○」のオペレータは円形のA−リング(モジュロA−リング長)内 の順序付けを示すものであり、厳密な数学的な関係を意味するものではない。図 20は命令の発行、非活性化、コミット、およびリタイアメントを含む精確な状 態を維持するための、本発明による方法の実施例の概略フローチャートである。III .積極的な長レイテンシィ(長待ち時間)(ロード/ストア)命令のスケジ ューリング 命令のコミットとリタイアメントを追跡し予定する各種のポインタを使用する 本発明による方法の説明は、すべての命令のタイプに関係するものであり、現在 の投機的な順序なし(out-of-order)のプロセサでは多くの利点を提供する。多 くの現在のプロセサは、ロード命令およびストア命令のみが外部メモリを参照し 、一方他のすべての命令またはオペレーションはプロセサ内のレジスタを参照す るような「ロードーストア」アーキテクチャとして設計されてきたことを認識す ることによって、さらに別の利点を得ることができる。 実際に、ロード命令とストア命令は、この明細書ではレイテンシィ(待ち時間 )の長い命令と呼ぶより一般的なクラスの命令に属しており、このレイテンシィ の長い命令は完了するには数個のマシンサイクルを必要とし、ロード命令とスト ア命令が2つのタイプである外部メモリ参照命令を含む。内部レジスタを参照す る命令は、一般に完了するためにはより少ないまたは単に1つのマシンサイクル しか必要としない。レイテンシィの長い命令も、割り込みなしに複数のマシンサ イクルで実行するように設計された命令である「原子」命令を含んでいる。 レイテンシィとは、命令が発行されてからその命令の実行が完了するまでの間 の経過時間のことである。ロード−ストアアーキテクチャに対する命令のセット は好ましい、というのはそれがレイテンシィの長いメモリ参照(メモリへのロー ド−ストア参照)を、CPU51の内部レジスタを参照するレイテンシィの短い 論理演算または算術演算(加算、乗算、除算、論理比較、など)からデカップリ ングするためである。さらに、ロード−ストアタイプのアーキテクチャで設計さ れた最も新しいCPU51は、このタイプの命令セットから発生した増大するレ ジスタへの要求事項を支援できる多数の汎用目的のレジスタを有している。 ロード命令とストア命令は両方ともアーキテクチャの状態を修正する。順序な しに実行するプロセサでは、精確な状態を危うくすることなく高いロード/スト ア帯域幅を維持するために、ロード命令とストア命令とを効果的に予定できるこ とが重要である。精確な状態を維持しながらレイテンシィの長い命令を積極に予 定する、命令の状態を追跡するための基本的な構造と方法への改良が提供される 。PSU300のICRU301内の構造と方法は、性能を改良するために後で 説明するが、DFB62の、特にロード/ストアユニット(LSU)603内の 構造と方法に協力する。A.メモリ命令状態情報記憶 本発明による構造と方法は、長レイテンシィ(長待ち時間)命令を区別する他 の信号と、長レイテンシィ命令状態情報を記憶する記憶領域と、命令状態を追跡 するポインタを供給する。第21図は、メモリ参照命令(例えばロード/ストア命 令)に代表される長レイテ ンシィ命令状態情報を記憶するメモリ命令リング(Mリング)324 と前述の能動 命令リング311 との関係を示す概念図である。Mリング324 は一般にAリング31 1 と同じ構造と全体特性を持っているが、Mリング状態ビットはAリング状態ビ ットとは異る組の規則に従ってセットされる。特にMリング324 は、命令と命令 形式が発行時に能動(ビットが“1”にセットされる)または非能動(ビットが “0”にクリヤされる)として処理される規則を設定する。 第10図に示すようにISU200が命令を発行する時には、前述のISSUE_NOP 及びIS SUE_VALID と共にメモリ参照命令と非メモリ参照命令とを区別する命令形式信号 を供給する。ロード命令、ストア命令、原子命令順序及び他のメモリ参照命令を 含め、積極的にスケジュールされることによって利益を生む特定クラスの長レイ テンシィ命令を示すようにISSUE_MEM を発生させることもできる。 CPU51 の一種の実施例では、ISSUE_MEM はビットでのアサーション(“1”) がi番目の命令がメモリ関連であることを示す4ビットベクトル(各ビットは命 令発行ウィンドウ中で発行可能な命令の1個に対応)となっている。ISSUE_MEM は、第12図に示すようにMリング324 にビットをセットするためにMリングセッ トロジック7335によって用いられる。Aリング312 内にはアドレスデコードロジ ック338,336が設けられている。ISSUE_MEM は発行された命令が記憶動作に関係 するか否かを示す。ISU200からのISSUE_MEM がビットiでアサートされて同じ命 令スロットに対応するISSUE_VALID がアサートされると、メモリ命令リング(M リング)324 はメモリ命令リング(Mリング)324 にはセットされない。命令が メモリに関連している時にMビットをセットしないことにより、CSN がクリヤさ れたAリングビットへ進むように非メモリコミッテッド命令シリアルn番号(NMC SN)ポインタ(後述)がクリヤされたMビットへ進み 、非メモリ参照命令によって進むことを防止されるように、発行時にメモリ関連 命令を有効に「非活性化」することができる。ISSUE_VALID が“1”の時、即ち メモリ関連であろうとなかろうと発行された各命令に対しては、Mビットは必ず “0”または“1”として書かれなければならない。記憶動作用のMビットをセ ットしないことによりNMCSN を進めるために記憶関連動作を「無視」することが 容易になる。 命令がエラーなく完了した時には、Aリング用にクリヤされた時と同じように MビットはMリングクリヤロジック337 によってクリヤされる。発行時にクリヤ されたMビットを持っているメモリ参照命令は、命令の非能動化後もクリヤされ たままである。Aリング312 と同じように、Mリングビットは実行トラップのた めにクリヤされる。Mリング324 状態情報はメモリ関連命令を追跡し積極的にス ケジュールするのに用いられる。メモリ参照命令の発行状態、コミッテッド状態 、リタイヤ状態を含むすべての状態は、Aリング311 とそれに関連するポインタ によって維持される。 AリングとMリングの前述の類似性からして、当業者はAリングとMリングの 機能はリングのアドレス可能な場所が複数のビットを含んでいる単一の円形リン グのような単一のデータ構造内で発効できることにお気付きであろう。このよう な複数ビットのリングでは、命令活性(能動または非能動)と命令形式(メモリ 、分岐、NOP(ノップ)など)の両方共複数ビットにコード化できる。更に、現在 別のAリングとMリングのデータ構造に供給されているのと同じ情報を記憶する ために、他のコード化スケジュールが提供できよう。以上の説明からして、当業 者は、マルチビット書式サポートしNMCSN を収容するためのリングセットとクリ ヤロジックの変更の仕方、マルチビット円形リング用の CSN/RRP ロジックの変 更の仕方、能 動と非能動との差異化とメモリ命令の差異化のためにセットには“1”クリヤに は“0”とする以外に異るロジック状態または記号を使用できることを御理解さ れることであろう。B.長レイテンシィ命令を追跡しスケジュールするNMCSN ポインタとPBSNポイン Mリング324 にMビットをセットする構造と方法については以上に説明した。 本発明の構造と方法では、長レイテンシィ命令、特に外部メモリを参照するロー ド/ストア命令をCPU51 が有効且つ積極的にスケジュールすることができるよう にするため、Mリング324 に関連して予測分岐命令シリアル番号(PBSN)318 と ポインタと非メモリコミッテッドシリアル番号(NMCSN)ポインタ319 が供給使用 される。NMCSN とPBSNは前述のように両方共ICRU301 内のポインタレジスタ313 に記憶される。 NMCSN319は最後の「コミッテッド」命令を支持する(前述)が、命令発行時に メモリ参照命令用のMビットがクリヤされるので、NMCSN を進めるためにすべて のメモリアクセス命令は有効に無視され、従ってNMCSN は更に高速で進む。ポイ ンタCSN316が進むだけで命令が実際にコミットされる点に御注目頂きたい。後述 するようにNMCSN はロード/ストアユニット603 によってだけ使用される。命令 がエラーなく完了し、それ以前のすべての命令がエラーなく完了している場合に 命令をコミットすることができる。メモリ参照命令が未だ能動であってもNMCSN はメモリ参照命令を追い越して進むことができる。この方法はメモリを参照しな い他の長レイテンシィ命令形式を積極的にスケジュールするのにも使用できる。 CPU が初期設定されるとNMCSN は0(ゼロ)に初期設定される。 PBSN318 は一番初期の(一番古い)未解決予測分岐命令のシリアル番号である 。この実施例ではPBSNはウォッチポイントユニット30 4 によって決定される。(ウォッチポイントユニット304 については本明細書の 他の箇所に詳述。)未解決分岐命令とは、発行され実行されたことが確認される 以前に理論上発行され、実行開始され実行完了されている可能性のある命令(及 びその命令から生じる命令順序)のことを言う。換言すれば、命令が発行された 時には処理の流れの中にその命令を実行する条件が未だ生じてはいないのである 。本発明の構造及び方法では、未解決予測分岐命令が存在しない時にはPBSNは必 ずISN と等しくなる。PBSNはNMCSN 進行ロジックでNMCSN 進行のバリヤとして用 いられる。NMCSN はポインタPBSNまたはISN を追い越して進むことはできず、メ モリ命令が存在しない情況では、ポインタNMCSN はCSN に等しい。CPU が初期設 定されるとPBSNは0(ゼロ)に初期設定される。C.NMCSN の進行 NMCSN319はCSN316と対になってメモリ関連動作を行う。CSN を進めるAリング に対応してNMCSN を進めるMリングがある。Mリングはラップの周囲のMビット 64個から成る。即ち、典型的には64ビットのMリングで、Mビット#63に後続す るビットはMビット#0である。Mビット=0とは、メモリ関連命令、例えばロ ード/ストア命令のような長レイテンシィ命令のことである。 例示したCPU では、NMCSN ポインタを進める規則は次の示すようにCSN を進め る規則に類似している。(1)NMCSN をISN まで進める(ISNを除く)。(2)N MCSN を1サイクルで8個以下の命令シリアル番号以下進める。(3)Mリング 内の最初の“1”まで進める(この“1”を除く)。 浮動小数点ユニット(FPU)で「未完浮動小数点動作」例外が生ずるかまたはロ ード/ストアユニット(LSU)から「データブレークポイント例外」が検出された 時にはNMCSN を進める規則が変更される 。これら2種類の場合には、前述したCSN と同様にNMCSN はシリアル番号1個だ け進められる。即ち、これらの状態では CSN←CSN +1と NMCSN←NMCSN +1に なる。PSU300は特別のポインタ操作を必要とする未完浮動小数点動作とデータブ レークポイント動作に特に関係している。 MリングのインプリメンテーションはAリングのインプリメンテーションに似 ている。例示したCPU ではNMCSN は事実上maximum(8,ISN、次のMビット=1 )までしか進めないので、CSN と同様NMCSN を適当な位置へ進めるには簡単なハ ードウェア回路構成の設置計画をすればよい。(maximum(x,y,z)という 表現は、パラメータ値またはx,y及びzという表現の中から最大値を選択する という意味である。)Mリング324 は8個の8ビットレジスタとして設置される 。これら8個の8ビットレジスタのMリング読取り口346 では包囲しているNMCS N のレジスタが読取られ、読取り時のこれらのレジスタの内容が2本の別々の8 ビットバスに送られる。これらのバスを連結して1本の16ビットバスとし、次に このバスを0ビットから8ビットへ移動させて古いNMCSN を進める問題の8ビッ トウィンドウを作る。「最初の1を発見する」回路がNMCSN の進む量を与える。 NMCSN とPBSNの保守を正しく行えば、精確な状態を曖昧化しない実行のために 選択し得るロード/ストア命令またはその他のメモリ参照命令を簡単に決定する ことができる。精確な状態を曖昧化しない実行のために選択し得るロード/スト ア命令は、実行に「インレンジ」だと考えられる。(1)例外を発生する命令が アーキテクチュア状態を変えず、(2)故障命令以前のすべての命令がアーキテ クチュア状態への変更を完了し、(3)故障命令以後のすべての命令がアーキテ クチュア状態を変えていない時に精確な状態が維持さ れることをもう一度述べておく。LSU603はまた、長レイテンシィ命令のスケジュ ールに使用するため、ICPU301 からのNMCSN319とウォッチポイントユニット304 からのPBSN318 を受信する。D.データフローブロック内のロード/ストアユニット(LSU) 本発明の特徴のいくつかの設定は一般的な実行ユニットによって得られるもの であるが、長レイテンシィ命令の積極的スケジュールが利益を生み出すのは状態 スケジュールに長レイテンシィをサポートする特定の構造が存在する場合である 。例えば、ロード/ストア命令と、他のメモリ参照命令を積極的にスケジュール する構造が提供される。局所的な記憶動作に参加しない他の実行ユニットにこの 種のテスタを設置する方法は、以上の開示からして当業者には自明であろう。 LSU は、SPARC-V9アーキテクチュアマニュアルに定義されているリラックスメ モリモデル(RMO)とトータルストアオーダリング(TSO)の両モードをサポートする 。LSU は固定小数点と浮動小数点両方のロード/ストア命令に対して責任を持つ 。LSU は各々がキャッシュへのサイクルである2個までのリクエストを作ること ができる。精確な状態を維持するために必要な命令の順序立ては、プロセッサと キャッシュチップとの間で1組のプロトコル信号によって行われる。ISN は12項 目のリザーブステーションを内蔵している。LSU とデータキャッシュの間には分 割されたトランザクションをサポートする3段階のパイプラインがある。第1段 階では命令のアドレスと操作符号とシリアル番号がデータキャッシュへ送られる 。理論上の実行に使用されるいくつかの制御ビットも送られる。第2段階ではIS U からデータキャッシュへとストア命令のデータが送られる。第2段階ではまた 、データキャッシュが次のサイクルで完了する命令のシリアル番号と有効ビット をLSU へ返送する。第3段階ではデー タキャッシュが状態とロードデータを返送する。キャッシュミスの場合は、デー タキャッシュはパイプラインスロットが使用されていない間にデータを返送する か、そのデータのためにパイプラインスロットを開く信号をアサートする。 第22図は選択兼実行制御ロジックユニット609 と、種々の命令及びデータ関連 情報を記憶する命令/データ待ち行列(IDQ)610 と、ISU200,FPU600,FXU601,F XAGU602からの信号を復号する復号&フィールド分離ロジック(SSFSL)/620 とを 含むロード/ストアユニット(LSU)の機能ブロック図である。詳述すると、IDQ61 0はインレンジビットフィールド611 と、操作符号フィールド612 と、命令シリ アル番号(SN)フィールド613 と、チェックポイント番号614 と、有効性ビット フィールド615 と、アトリビュート(ATR)フィールド616 と、レジスタタグ(TAG S)フィールド617 と、タグ有効フィールド(TV)618 と、アドレスフィールド6 19 と、アドレス(AV)フィールド620 と、キャッシュデータフィールド621 を 含んでいる。データキャッシュ52はIDQ610とアドレス及びデータを送受信する。 LSU603が命令を受信すると、デコード・フィールド分離ロジック622 は命令の 直接データフィールドにアドレスを含めるか或いはFXAGU602がアドレスを計算し なければならないかを決める。デコードロジック622 がアドレスはFXAGU602によ って計算されなければならないと決めると、アドレス有効ビットをクリヤする。 しかし、命令の内部に直接データがあるという意味でアドレスが命令の内部に含 まれると決めると、アドレス有効ビットをセットして、その命令用のアドレスデ ータが準備されて利用でき、その命令を実行することができると指示する。タグ 信号がデータが有効か否かを指示するように、FPU とFXU から来るタグも同様に 操作される。命令がリザー ブステーションまたは待ち行列610 に記憶されると、発行された有効信号が実際 に実行されたことを示すまで有効信号がクリヤされる(アサートされない)。 LSU603が命令を実行すると、データキャッシュ52へ直接データを送る。LSU603 がデータキャッシュ52からのデータを検索している時には、本発明の設置計画の データは選択兼実行制御ロジックに入っており、このロジックはタグセンドを含 む信号とデータが有効であることを示すデータ有効ビットを送出し、また図示し たようにデータを送出するので、組合わせ信号は出て来ない。第22図にはFP_TAG S_DV_F信号とFP_DATA_F 信号が示されている。 選択実行制御ロジック609 もアクセス情報を得てこの情報をデータキャッシュ 52に与える。この情報のあるものはトラップの型式がメモリ動作に関係している トラップ情報であって、エラー検出に際してPSU300で用いるエラー信号(ERR_ST AT)を出力する。 選択兼実行制御ロジックユニット(SECLU)609はLSU で実行する命令の選択に 責任がある。このユニットはロード、ストア、アトミック動作などの順序立て強 制を取り扱う。例えば、アドレス「X」への若いロードはアドレス「X」への古 いストアを追い越すことはできない。この型のロードはストアのようなアトリビ ュートアレイでは「強い」とマーク付けされる。このユニットはストアの「順序 立て」を開始し、すべての先行するロードとストアが完了するまでストアを開始 することはできない。最後に、ストアのシリアル番号はインレンジでなければな らない。SECLU609は、有効適格(即ちキャッシュによって現在処理されていない )であってすべての従属性を満し、且つ「弱い」動作(例えばロード)か「イン レンジ」であってしかも前のキャッシュミスによって強制されていない命令だけ をマスクするロジックを含んでいる。マスクされた命令は次に、マ スクロジックロジック準備を満す命令の組から一番古い命令を選択するプリシー デンスマトリックス623 によって処理される。 SECLU609もメモリアクセスの制御に責任がある。このユニットはキャッシュに コマンドを送り、アクセス完了時にキャッシュ状態情報を受信する。また、キャ ッシュからの「ロード」データに適当な目的地レジスタタグを貼り、アクセスの アトリビュートのトラックをアトリビュートアレイ616 に保存する。これらのア トリビュートはインレンジで、強/弱な(一般にストアとアトミックは「強く」 、ロードは「弱い」)理論上のアクセスで、キャッシュへ送るに適格なものを含 んでいる。 SSFSL620は命令操作符号(オペコード)と、命令シリアル番号と命令チェック ポイントとレジスタタグを含む命令パケットをISU200から受信し、情報をデコー ドし、情報を記憶するためにIDO610で正しいスロットを選択し、情報を適当なフ ィールドに分離する。SNに関連する各シリアル番号項目とデータは待ち行列中の 空のスロットに記憶される。 SECLU はポインタ値(ISN,NISN,PBSN 及びNMCSN)もPSU300から受信する。CSN ,PBSN 及びNMCSN は、命令シリアル番号がインレンジであるかの決定に特に関 係する。SECLU609はアクセスが「インレンジ」であるか、即ち、シリアル番号が 前述のようにCSN より大きくNMCSN 以下であるかを決めるロジックを含んでいる 。インレンジ情報はアトリビュートアレイ616 へ進められてSECLU 内のインレン ジファイル611 に記憶される。SECLU はIDQ に記憶されている項目をデータ返送 状態及び/または与えられたアクセス用のキャッシュからのデータとマッチング するロジックも含んでいる。IDQ 内のすべての有効項目はそのサイクル中インレ ンジであるかを見るためにモニタされ、アトリビュートアレイは必要に応じて更 新される。待 ち行列項目が一旦インレンジになると、再使用されるまではインレンジのままで いる。 チェックポイントフィールド614 は、待ち行列スライス中のアクセスに対応す るチェックポイント番号を含んでいる。各サイクル毎に新しいチェックポイント 番号がISB61 から到着する。有効ビット待ち行列615 は、メモリアクセス命令が 実際に発行された場合にセットされる有効性ビットを保持する。この情報は命令 発行サイクル中にISB61 から来る。ISB によってアクセスが殺された場合にはビ ットをリセットすることができる。アドレスフィールド618 はすべてのキャッシ ュアクセス用のアドレスを保持する。DFB62 アドレス発生ユニット(FXAGU)602 からアドレス待ち行列にアドレスが到着する前に、アドレス番号がIDQ アドレス マッチロジックに到着する。制御レジスタの内容に応じてアトリビュートアレイ 616 にアトリビュートをセットしてもよい。例えばプログラムオーダビットをセ ットすると、アトリビュートセクションには「強い」ビットがセットされる。1.インレンジメモリ参照(長レイテンシイ)命令の識別 前述のように、SECLU609はICRU301 からのCSN とNMCSN 及びウォッチポイント ユニット304 からのPBSNに応じて命令が「インレンジ」であるかを決めるロジッ クを含んでいる。このロジックはCSN とPBSN(CSN ≦第1窓≦PBSN)の間のシリ アル番号を持つ第1窓にある命令が分岐の誤予測に関係なく実行できるか識別す る(但し、「≦」の記号は厳密な算術順序よりもメモリ命令リング内で相対順序 を示す)。第2のCSN とNMCSN(CSN≦インレンジ≦NMCSN ≦PBSN)の間のシリア ル番号を持つ多分小型のウィンドウの命令は、分岐誤予測または実行例外とは無 関係に実行するようにスケジュールされる。積極的な実行をスケジュールするた めにDFB62 内のLSU200に識 別することができる「インレンジ」となっているのはメモリ参照命令である。第 23図は厳密な状態を維持しつつロード/ストア命令を含む長レイテンシイ命令を 積極的にスケジュールする本発明の方法の実施例を概略的に示すフローチャート である。2.ベーシック構造への強化と長レイテンシイ(ロード/ストア)命令の積極的 スケジュール 本発明のベーシックな方法へと強化する際には、ロード/ストア命令とメモリ を参照する他の命令を更に積極的にスケジュールできるようにしてNMCSN を進め 性能を改善するために「非故障」として知られている所定の命令を無視するよう に規則を設定することができる。IV .チェックポイント法 チェックポイントは既知の瞬間におけるマシン状態の「スナップショット」で ある。チェックポイントは、誤予測分岐または実行例外が生じた場合に理論上の 命令順序を元に戻すために前のマシン状態を素速く回復するための方法と構造を 提供する。本発明による典型的なプロセッサでは、命令発行サイクルの間にチェ ックポイントが作られる。本発明の方法では、チェックポイントの回復に基づく マシン状態の回復はマシンの「バックアップ」と定義される。 本発明ではチェックポイントは数クラスの命令用に創られる。即ち、(1)分 岐のような予測プログラム制御転送命令と(2)制御レジスタ値を変更するサイ ドエフェクトを持っているかも知れない命令である。 制御転送命令(分岐のような)は予測されプログラムカウンタ(PC)不連続を 生ずるかも知れない。本発明の構造と方法を設定するCPU51 では、プログラム制 御命令(分岐またはリターン型のジャンプ及びリンク)が誤予測された場合に素 速くマシンのバックアップ を行うために、各予測プログラム制御命令に対してプロセッサがチェックポイン トを作る。これらの情況でAPC とNAPCがセーブされないと、誤予測されたプログ ラム制御命令の再発行と再実行せずに正しいFPC とAPC とNAPCを再構成すること は困難である。このようなプログラム制御命令の各々に対してチェックポイント が作られているので、予測できてしかも同時に未解決のままでいるプログラム制 御命令の数は、マシン内に許容されるチェックポイントの最大数によって制限さ れる。予測プログラム制御命令は前述したSPARC-V9 BPr,FBcc,FBPcc,Bcc,BP cc及びJMPL〔rd=0〕命令のような命令とすることができる。 プログラムフローを変える他の型の命令もチェックポイントで調べることがで きる。これらの命令にはCALL,JMPL,TCC,RETURN,DONE 及びRETRY のようなSP ARC-V9命令が含まれる。 制御レジスタ値を変更するサイドエフェクトを持つことができる命令を含むマ シン状態を変更する命令に対してもチェックポイントが創られる。ある制御レジ スタをチェックポイントすることによってこの制御レジスタを理論上変更するこ とができる。これらはSPARC-V9 WRPR 及びWRASR 命令のような制御レジスタファ イル800 内の制御レジスタへの書き込みを含み、SPARC-V9 SAVED,RESTORED及び FLUSHW命令のようなレジスタウィンドウ制御命令も含む。しかし、性能を失わず にチェックポイントされる状態の量を少くするためにすべての制御レジスタがチ ェックポイントされる訳ではない。 更に、例示CPU51では、前述したように、制御レジスタのデータは後刻実 行のためにFXU601で利用できるようにウォッチポイント304 に記憶されるので、 制御レジスタファイル800 内の制御レジスタの読取りにはチェックポイントが必 要である。これらはSPARC-V9 RDPR 及びRDASR 命令のような命令とすることがで きる。 更に、発行トラップを頻繁に起す命令もチェックポイントを必要とすることが ある。これらには、SPARC-V9 SAVE 及びRESTORE 命令のようなウィンドウ制御命 令と、例えばSPARC-V9 LDD/LDDA及び STD/STDA命令とすることができる設置計 画されない命令が含まれる。 トラップも理論上エンターされうるが、そのように発行した時にはチェックポ イントされる。従って、後に述べるように実行トラップ(etrap)または発行トラ ップを生ずる命令に先行して発行される命令にはチェックポイントを作ることが できる。更に、理論上トラップが取られた場合に復帰が行えるように、トラップ 操作ルーチンの前にチェックポイントが作られる。 理論的に制御することができないサイドエフェクトを持つ命令、即ち、例外を 生ずることが稀で多量のチェックポイント情報を必要とする命令に対しては、効 率上の理由から命令のチェックポイントを行わず、その代り発行前にマシンを強 制的に同期化するように決定を行うことができる。即ち、理論的に制御できない サイドエフェクトを持つ命令を発行する前に、CPU をマシン同期とし、すべての ペンディングな命令がコミットしリタイヤされた(ISN=CSN =RRP)とするのであ る。 どの命令をマシン同期命令とし、どの命令をチェックポイントするかを選択す る時には重要な性能/設計の引き渡しが行われる。同期のための性能低下は、チ ェックポイントされたマシン状態を記憶するために要するチップ領域を含め、こ の種の命令の理論上の操作に関係する追加のロジックの複雑性とプロセッサ領域 と比較して評価される。 多くの異る型の命令がレジスタ中のデータ値を変更する。従来のチェックポイ ント法ではレジスタ状態を回復するためにレジスタデ ータ値をチェックポイントする。対照的に、本発明の方法をマシン設置する時に は、実際のレジスタデータ値をチェックポイントせず、代りにレジスタ再命名マ ップをチェックポイントすることによってCPU51 が以前のレジスタ状態を回復す ることができる。CPU51 に記憶されているチェックポイントされた状態情報の量 を大幅に減少できるので、「レジスタデータ値」ではなくて「レジスタ再命名マ ップ」をチェックポイントするのが有利である。 例示したマシンでは、コンカレント命令のサポーティング64により、16個まで のチェックポイントを任意の時に利用できる。実施例ではISU200は発行サイクル につき最大1個のチェックポイントの割り当てに制限されている(ハードウェア の考慮により)。しかし一般的には、1サイクルで1個または任意の複数個のチ ェックポイントを割り当てることができる。例示したCPU51 では、同一のマシン サイクル中に発行できる命令の型と組み合わせを制限するように所定の規則が設 置されている。例えば例示したCPU では、1個のマシンサイクル中1個の制御転 送命令だけを発行でき、従ってそのサイクルに状態をセーブするに要するチェッ クポイントは1個だけである。このチェックポイントの制限により、サイクル中 に最大数(例えば4個)の命令を発行できない場合(発行ウィンドウで待期中の 命令の型による)がある。更に多数または少数のチェックポイントを供給するこ ともできるが、その数はマシンの中で共時的に目立つチェックポイントを必要と するナンバー命令のようなファクターに基づいて選択される。 実施例では、能動命令リング312 が64個もの命令を同時にサポートする。後に 説明するように、本発明の構造と方法は、ある種の命令型式のチェックポイント を行い、ISU200からのTIMEOUT_CHKPNT信号に応じて所定の命令サイクルタイムア ウト間隔で任意の命令型式 のチェックポイントを任意に行う。従って、サポートされるチェックポイントの 数は能動命令リング312 によってサポートされる命令の数より大きくないことが 必要で、この数は一般に命令の数より小さい。例示のCPU51 では16個のチェック ポイントを割り当てることができ、これらのチェックポイントの各々はチェック ポイントを生じた命令がリタイヤされた後に回復されるマシン資源になっている 。 例示のCPU51 では、チップのルートを減らし性能を向上させるため、DO_CHKPT 信号に応じてチェックポイントデータ(マシン状態)はチェックポイント記憶ユ ニット内のCPU51 全体に局所的にセーブされる。しかし、チェックポイントされ たデータを記憶消去されたチップにできることは自明である。 チェックポイント記憶ユニットの各々は16個のアドレス可能記憶素子または項 目を持っている。各記憶項目は後述する16個のチェックポイント番号の中の1個 に対応する。従って第6図を参照すると、DO_CHKPT信号に応じてAPC とNAPCレジ スタ113 及び114(CHKPT_PC 及びCHKPT_NPC)の内容はPCロジック106 によってPC チェックポイント記憶ユニット107 に記憶される。同様に、制御レジスタの内容 (CHKPT_CNTRL_REG)は、第17図に示すように制御ロジック816 により制御レジス タチェックポイント記憶ユニット817 に記憶される。更に第16図に示すように、 FXRFRN604 とCCRFRN610 と、FPRFRN605 の各々の再命名マップを表わすデータは チェックポイント記憶ユニット616 に記憶され、フリーリストロジック701 のフ リーリスト(CHKPT_FREELIST)を表わすデータはフリーリストチェックポイント 記憶ユニット702 に記憶される。そして後述するようにトラップスタックユニッ ト815 の或る種の内容もチェックポイントされる。 ISU200はチェックポイントを作る時機の決定に責任がある。BRB5 9 から受信した命令をデコードして、どれかがチェックポイントを要する前述の 型であるか決定する。そして後述するように、所定数のマシンサイクルが行われ た後にチェックポイントを作るようにPSU300がTIMEOUT_CHKPT 信号によって指示 した時、チェックポイントを作る時機を決定する。この結果、ISU200がチェック ポイントを作ることを指示し、そのチェックポイントのチェックポイント番号を 指定するDO_CHKPT信号を発生する。 第24図はPSU300内にあるチェックポイントユニット303 の機能ブロック図であ る。ISU200によってDO_CHKPT信号を主張すると、1個または2個以上の命令に対 してチェックポイントを作るようチェックポイント(CKPT)303 に指示し、命令 スロット0−3で発行されたどの命令がチェックポイントを要求したかを示す。 少くとも1個のフリーチェックポイントレジスタが利用できなければチェックポ イントを割り当てることができないから、DKPT303 はISU200へCHKPT_AVAIL 信号 を送らなければならない。CHKPT は少くとも個のチェックポイントを割り当てる ことができることをISU に知らせ、チェックポイント番号が各命令と関係づけで き、ISU200によって作られたチェックポイント番号(CHKPTs)に合体でき、DFB6 2 へ進められるようにチェックポイント番号をISU に知らせる。これらの信号は ISU200によるDO_CHKPT信号の発行に先行する。チェックポイント番号を割り当て ることができない場合は、チェックポイント資源が利用できるようになるまでIS U による信号発行を待機させる。簡単に言えば、実行例外または誤予測から回復 させるのに必要な場合だけ記憶されているチェックポイントを使用し、そうでな い場合はチェックポイントの割り当てを解除し記憶スペースを解放して再利用す るのである。(チェックポイントを含むマシン資源の割り当てと割り当て解除に ついては後に詳述する。)後述する本発明のベーシッ ク構造と方法へ強化するにも、所定数のマシンサイクルまたは所定数の命令が発 行され、チェックポイントを作ることなく終結した時にデコードされた命令型式 とは無関係にタイムアウトチェックポイントが作られる。 チェックポイントユニット303 はチェックポイントのトラックを維持し、ISU2 00が指示した時にチェックポイントを割り当て、必要でなくなった時にチェック ポイントを解放する。コミッテッドシリアル番号がチェックポイントのシリアル 番号(CSN>SN)i+1よりも大きくなるとチェックポイントiをリタイヤさせる ことができるが、これは本発明の方法と構造によればマシン状態を任意の命令の 境界に再記憶させることができるので、コミットされた命令よりも順序的に前に ある命令までマシンを逆追跡する必要がないからである。PSU300はシステムの他 の構成要素にもいつチェックポイントを割り当て解放するかを知らせるので、こ れらの構成要素はリタイヤされたチェックポイントに使用されていた局所データ 記憶領域を再使用することができる。チェックポイントユニット303 はまた、い くつのチェックポイントが自由で割り当てできるかをISU200に知らせる。チェッ クポイントの使用については、後にバックアップ兼バックステップユニットに関 連して詳述する。 チェックポイント303 は5種の主要機能を持っている。第1に、ISU200からの DO_CHKPT信号に応じて、チェックポイントレジスタユニット352 内のチェックポ イントデータレジスタ構造(CHKPNT_REG_i)のリストの保守によってISU200の要 請する通りにチェックポイントの割り当てを制御する。制御転送信号が発行され ると、DO_CHKPTは1個または2個以上のチェックポイントが作られるべきことと 、それぞれのチェックポイント番号の位置(例えば0−15)を指定する。本発明 の構造と方法を強化する際には、後にベーシックなチ ェックポイント法への強化において述べるように、TIMEOUT_CHKPT がチェックポ イント303 によって発生されISU200へ送られて命令型式とは比較的無関係に所定 のタイミングでチェックポイントを作る。このタイムアウトチェックポイントは 、チェックポイントが作られなかった命令の効果を元に戻そうとするサイクルの 最大数を決めて制限するために供給される。(チェックポイントできる命令型式 が同じ命令ウィンドウから発行される時には、タイムアウトチェックポイントの 形成は延期されるかキャンセルされる。) 第2に、チェックポイントは或る与えられたチェックポイント(n)を追い越 して進んだCSN に基づくチェックポイントと仮に次に位置しているチェックポイ ント(n+1)をリタイヤ(クリヤ)させる。特定のチェックポイント番号を過 ぎたCSN を決めるメカニズムは、CSN をチェックポイントレジスタに記憶されて いるシリアル番号と比較することである。チェックポイントレジスタに記憶され ているシリアル番号とは、チェックポイントを形成した命令の次の命令のシリア ル番号である。CSN がチェックポイントnとn+1を追い越して進んだ場合にだ け、例えばICRU301 からのISN とCSN に応じてチェックポイントnをリタイヤさ せることができる。 第3に、チェックポイント303 は、ISU によってチェックポイントが割り当て できるか否かとチェックポイントの位置番号を含め、ISU200へ送られる信号CHKP T_AVAIL によって割り当てられる次のチェックポイントは何かをISU200に知らせ る。第4に、チェックポイント303 は割り当てられたチェックポイントに対応す る命令のシリアル番号を記憶し、他のユニットによって要請された時に、ICRU30 1 に対してチェックポイントに関連するSNとSN+1の両方を供給する。第5に、 顯著な有効チェックポイントの中のどれを殺すかをバックトラックユニット305 内のバックアップユニット402 に示す命 令キルベクトル(KILL_VEC)を発生し、信号CHKPNT_SN とCHKPNT_SN_INC によっ てICRU301 に対し、マシンのバックアップに関連してどのチェックポイントをリ タイヤさせられるかを知らせることによって実行マシンのバックアップに参加す る。(マシンのバックアップは後に詳述。)A.チェックポイント割り当てレジスタ チェックポイント割り付けレジスタ352 の構造は表1に概略的に示してある。 最初の6ビットは状態ビットである。ビットVはチェックポイントの有効性(割 り付け)を示す。ビットCP(チェックポイントが追い越されている)はCSN がこ のチェックポイントのSNを追い越したかを示し、QはCSN 前進トラックを維持す る5種の状態のうちの1つを示し、GT(より大きい)はCSN が割り付け時のチェ ックポイントのシリアル番号よりも大きいか否かを示す。ビットGTはCSN がいつ このチェックポイントを追い越したかを決定する。固有の機能性を得るためにビ ットVが「1」にセットされビットCP「0」にセットされるチェックポイント位 置0以外では、ブーツアップ時にビットVとCPをゼロにセットすべきである。TS N フィールドはチェックポイントされたシリアル番号に後続している次のシリア ル番号を示す。この設置計画では、チェックポイント番号はセーブされず、位置 「i」用のチェックポイントデータ構造にVビットをセットするとチェックポイ ント「i」が割り付けられたことが示される。チェックポイントレジスタ(CHKP NT_REG_i)に可能な状態は表2に説明してある。例示したCPU では、チェックポ イントの割り付け中、ビットQは「000」か「001」にリセットされる。ビットQ はAリング312 の周囲のCSN の進行に基づく状態を変える。表3にQビットの状 態と遷移を示す。 B.チェックポイントの割り付け 命令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そのものを記憶することができる。 次のようなチェックポイント割り付け法が典型的である。チェックポイント形 成信号が主張される(DO_CHKPNT)と、Vビットフィールドが「1」にセットされ (CHKPNT_REG_i〔V_フィールド〕=1)、CPビットフィールドがクリヤされる (CHKPNT_REG_i〔CP_フィールド〕=0)。次にチェックポイントが形成された 命令のシリアル番号がコード化された4ビットのチェックポイントロケーション ベクトルから引き出されてチェックポイントのシリアル番号フィールドに記憶さ れる(CHKPNT_REG_i〔SN_フィールド〕)。例えばCPU51 の実施例では、「0000 」はチェックポイントロケーションNISNを示し、「0001」はNISN+1を示し、「 0011」はNISN+2を示し、「0111」はNISN+3を示し、「1111」はNISN+4を示 す。C.チェックポイントのリタイヤ チェックポイントはチェックポイントクリヤ/リタイヤメントロジックユニッ ト353 でクリヤまたはリタイヤされる。チェックポイント303 はサイクル毎にIS U200によって要請される数だけのチェックポイントを必要とする。現在のチェッ クポイント(n)と次のチェックポイント(n+1)を通るCSN に応じてレジス タ352 のVビットフィールドをクリヤすることによってチェックポイントがリタ イヤされる。チェックポイント割り付けロジックユニット353 は、チェックポイ ントレジスタ352 でリタイヤされるチェックポイントを指示するために用いられ るOLDEST_ACTIVE_CHECKPOINTと呼ばれるポインタを維持する。チェックポイント をリタイヤさせる手続きは次の通りである。チェックポイント(CKPSN)に記憶さ れているシリアル番号とユニットされたシリアル番号(CSN)ポインタ(例えばCKPS N_CSN)との差を計算することによってリタイヤロジック353 に「CSN_PASSED」と 呼ばれる信号が発生する。CSN はICRU301 に維持され、各サイクルでチェックポ イントユニット303 へ送られる。CSN がある与えられたチェックポイント(n) と現在その次にあるチェックポイント(n+1)を追い越して進んだ時か、チェ ックポイントのシリアル番号を追い越したマシンバックアップがある場合だけ、 チェックポイントをリタイヤさせることができる。 本発明の構造と方法の一実施例では、CSN をすべてのチェックポイントのシリ アル番号と同時に比較するロジックを供給することにより、CSN がチェックポイ ントを追い越して進んでいることが決められる。比較の際には、CSN がチェック ポイントのシリアル番号を追い越したか否かを決定するのに単に試験よりも大き いことだけでは不充分な場合があるので、Aリング312 の特性の周辺のラップも 考慮する(モジュロ−リング長)。D.マシンバックアップに関するチェックポイントの保守 次のマシンサイクルを開始するためにKILL_VEC信号を用意するようチェックポ イントユニット303 に知らせるWILL_BACKUP 信号とBACKUP_CHECKPOINT 信号をバ ックトラップ305 から受信すると、KILL_VECはコミットされている命令を殺す。 殺される命令は、チェックポイントの命令のシリアル番号を指定するBACKUP_CHE CKPOINT 信号と最後のコミッテッド信号から引き出される。CSN とバックアップ チェックポイントの間にあるすべての命令が殺される。 CPU51 の一種の実施例では、BACKUP_CHECKPOINT はバックトラック305 内のバ ックアップユニット402 によって発生される信号で、状態を回復するためにどの チェックポイントをバックアップするかCPU51 に知らせる。ISN とバックアップ チェックポイントの間にある命令のどれを殺すかを指示するため、命令キルベク トル信号(KILL_VEC)もバックトラックによって発生される。例えば、命令キル ベクトルは殺される命令を識別するホットビットを持つマルチホット信号とする ことができる。この代りに他の命令型式を使用することもできる。 チェックポイント303 は、バックアップ中にICRU301 がISU を調整することが できるように、チェックポイントのシリアル番号を識別するチェックポイントレ ジスタ情報をICRU301 に供給する。チェックポイントユニット303 は、未完浮動 小数点例外またはデータ区切り点例外が検出された時(CHKPNT_SN_INC)、ISN を 調整するためにICRUが使用するシリアル番号も供給する。E.タイムアウトチェックポイントの強化 従来のチェックポイント技術では、命令のデコードされたアトリビュートに基 づいてチェックポイントが作られる。連続するチェックポイント(チェックポイ ント境界のついた)の間の命令の数が制 限されないように、チェックポイントは或る種の命令のアトリビュートに対して だけ作られる。命令実行例外が起こった時、故障命令以前のCPU51 の状態を回復 するためにCPU51 は多数のマシンサイクルを費さなければならないかも知れない 。従って、故障命令に達する前にCPU51 が命令を再実行するか元に戻すために費 す時間は、チェックポイントの境界内にある命令ウィンドウのサイズと命令の数 の関数になる。ここでの命令ウィンドウのサイズとは、CPU51 内で任意の時間に 目立つことを許される命令の最大数のことである。(例示したCPU51 では、任意 の時間に64個までの命令が目立つことができる。) 本発明の構造と方法に強化する場合、チェックポイントはデコードされた命令 のアトリビュート(だけ)に基づいて作られるのではなく、むしろCPU51 内のタ イムアウト状態によって作られる。タイムアウト状態はチェックポイントを作ら ずに経過した命令発行サイクルの数に基づいている。例えば、最近発行された命 令が従来チェックポイントを作られない型であればチェックポイントは形成され ていない。タイムアウトチェックポイントは命令の最大数をチェックポイントの 境界内に制限する。命令ウィンドウのサイズがチェックポイント境界内にある命 令の最大数よりも大きい限り、例外が生じた場合に、プロセッサは従来の命令デ コードに基づくチェックポイント技術よりも速くチェックポイントされた状態を 回復することができる。更に、本発明のチェックポイントの強化により、CPU51 の状態回復の命令ウィンドウサイズへの依存性が除去される。 タイムアウトチェックポイントは従来のチェックポイントを設置する構造と方 法でも使用することができる。更に、タイムアウトチェックポイントは、本発明 のバックアップ及びバックステップ構造と方法と同様、従来のプロセッサバック アップ技術と共用すること ができる。 タイムアウトカウンタ355 は、そのマシンサイクル中に少くとも1個の命令が 発行されたことを示すINSTRA_ISSUED 信号をISU200から受信して命令発行サイク ルの数をカウントする。チェックポイント(命令デコードに基づくチェックポイ ントまたは以前のタイムアウトチェックポイント)を作ることなく経過した命令 発行サイクルの数が所定のカウント数を越えると、タイムアウト状態が生じたの でチェックポイントを形成すべしというTIMEOUT_CHKPNT信号をISU に送る。この 時ISU200はチェックポイントを形成すべしと示すDO_CHKPT信号を発生する。前述 したように、発行された信号がチェックポイントを必要とする型であるとISU200 が決定した時にもこの信号を発生させることができる。チェックポイントが実際 に形成された場合、そしてこのような場合だけ、ISU からのDO_CHKPNT 信号によ ってカウンタ356 がセットされる。チェックポイント境界内に許される命令の最 大数は、カウンタの最大命令発行率(マシンサイクル毎に発行される命令の最大 数)とタイムアウト値によって決められる。 タイムアウトチェックポイント上の変化が有利であろう。例えば、タイムアウ トチェックポイントと同一サイクルに正当に発行される命令デコードが正当であ る場合、命令デコードに基づくチェックポイントが優先的に作られてタイムアウ トカウンタをリセットするように働く。更に、この時すべてのチェックポイント が割り付けられてタイムアウトチェックポイントが正当になった場合には、命令 デコード型のチェックポイントのために厳密な状態を維持するために要するよう なマシン停止を行わずに、所定の規則(例えば1サイクル延期)に従ってタイム アウトチェックポイントを遅らせることもできる。F.任意の命令境界での厳密状態の維持及び回復 本発明の方法によれば、任意の命令境界で厳密状態を維持することができ、そ の命令境界に状態を回復するために要する情報量を最小にすることもできる。こ こで言う「命令境界」とは、命令が発行される直前(または直後)にある連続す る命令の組の中の点に対応する。各命令が命令境界を作る。 従来の命令のチェックポイントではプロセッサ内のチェックポイント境界(即 ち、チェックポイントされた命令でだけ)厳密状態を維持することができるが、 従来のチェックポイント法は各命令で用いられ、そのように用いられた場合でも サイクル毎に複数命令を発行するマシンに対してはサイクル毎に同数のチェック ポイントが必要であるため、CPU51 の性能を改善するよりも阻害するであろう。 本発明では、サイクル毎に1個の命令だけがチェックポイントを要するように種 々の命令の発行規則が設定され、バックステップ法と構造がより細かい命令レベ ルの回復を行う。命令のチェックポイントは理論上の命令順序によって不正に変 更されるかも知れない状態のようなアーキテクチュア(マシン)状態を保護し後 に記憶するために命令のチェックポイントが使用される。 チェックポイント境界に厳密状態を維持する従来のチェックポイント法が知ら れている。しかし、マシン状態を捕捉し後に回復する方法としてだけ従来のチェ ックポイント法を使用すると、理論上順序外の実行中、間隔の狭い命令境界に厳 密状態を維持することができない。G.チェックポイントされるデータ量を減らすよう所定命令に対してマシンを同 期させる方法 チェックポイントは、命令型式とは無関係な固定サイズまたはチェックポイン トが作られているオペランドである。例えば、200個 の状態値を変えることができる命令を持つマシン(CPU)では、命令自体がせいぜ い8個の値を変更できる場合でも、形成された各チェックポイントは 100個の状 態値を記憶しなければならない。本発明の実施例では、特定の命令の各々によっ て変更される状態の量と典型的な処理において特定命令の各々が発生する統計上 の頻度を考慮して、すべてのチェックポイントのチェックポイントされたデータ の量を減らすように構造と方法が設定される。 この設計技術を用いると、最適なチェックポイントサイズを決めてマシンに設 定することができる。第1に、各命令によって変更できる状態が決定される。第 2に、ある代表的な名目上の処理作業に対して各特定命令が発生する統計的な頻 度が決められる。各命令用の状態記憶要件が検討される。設計の目標は、稀にし か発行されず頻繁に発生する命令よりも比較的多量のチェックポイントを必要と する命令を識別することである。チェックポイントする命令を決めるにはリニヤ またはノンリニヤな最適化技術を用いることができ、チェックポイントされた状 態を減らすために最大チェックポイント記憶に基づく非算術的な規則を用いるこ ともできる。単純化した例を次に説明する。 チェックポイントされる状態が減少している単純化した例 命令A,B,C及びDの各々がチェックポイントされる場合には、各チェック ポイントは状態1〜10のすべてを記憶しなければならない。しかし命令Cは稀に しか実行されないので稀に行われるこの命令の実行中マシンを同期させることに よってCPU51 のスローダウンが必要である場合には、命令Cのチェックポイント を行わないことによってチェックポイントされる状態を10状態から3状態、即ち 、状態1と状態4と状態8に減らす。 マシンを同期させると、ペンデング命令がコミットしリタイヤされるまでマシ ンの同期を要する命令の発行が遅れ、次に同期を要する命令が順次速続して実行 される。マシンが同期モードで作動している時には、状態への逆書き込みが行わ れる前に例外条件が識別されるので、厳密状態を維持するために命令のチェック ポイントをする必要はない。H.チェックポイントされるデータ量を減らすようにレジスタリネームマップを チェックポイントする方法 更に、誤予測分岐、故障、実行エラーその他の処理中の異状からマシン状態が 回復できるようにチェックポイントが発生された時の全機状態が記憶されるため 、従来のチェックポイントは多量の情報を含んでいる。従来のチェックポイント 法では変化する状態だけを 変更する試みは行われていない。 例えば、64個の命令を並行して発行することができる従来のチェックポイント 法をCPU51 内の各命令に適用すると、各命令に対して1個、つまり64個までのチ ェックポイントを維持しなければならず、4発行のマシンでは、マシンサイクル 毎に4個ものチェックポイントを作らなければならないことになる。従来のチェ ックポイントに記憶される状態の特定の型と量はCPU51 のアーキテクチュアと命 令の組によって異るが、従来の各チェックポイントは任意の命令によって変更で きる各状態用の状態情報を含んでいる。即ち、命令が状態を変更し得るか否かに 拘らず、従来のチェックポイントは各変更可能状態用の状態情報を含んでいる。 従来のチェックポイント法では、チェックポイント毎に変化する状態だけではな く、マシン状態を回復するに必要なすべてのマシン状態が各チェックポイントに 対して書き換えられる。 本発明の方法では、レジスタがリネームされリネームマップがレジスタリネー ムマップに記憶されている。レジスタのリネームについては他の箇所で説明する 。レジスタ名のリネームは処理に利用できるアーキテクチュアレジスタの数を効 果的に増加するのに役立つもっと多数の物理レジスタにアーキテクチュアレジス タをマッピングする方法である。本発明の方法では、データ値そのものではなく てリネームされたレジスタをチェックポイントとすることによって、新しいチェ ックポイント法に必要な記憶の量を減らす。前述した通り、以前に発行されたす べての命令が実行されコミットされ、その資源がリタイヤされる(ISN=CSN =RR P)ように、厳密状態を維持するために多量のチェックポイントされたデータを必 要とする或る種の所定の命令はマシン同期を起させる。同期型の命令故障が誤予 測されると、状態は変更されず、命令の実行結果が状態を変更する ことを許される前に、故障が処理されるかまたは代りに命令通路が追跡される。 マシン状態が素速く回復されるように、コントロールレジスタを変更できる非 同期を要求するすべての命令はチェックポイントされる。命令によって変更され たすべての状態は、前述のようにチェックポイントされてCPU51 内に局所的に記 憶される。更に、コントロールレジスタを変更しない命令を実行する状態はCPU5 1 をバックステップすることによって記憶できる。第26図は、タイムアウトチェ ックポイントを形成する他のチェックポイント法に適用できる任意のチェックポ イント強化法を含む本発明のチェックポイント法の実施例の概略的フローチャー トである。V.誤予測及び例外からの回復 前に言及したように、第5図の命令パイプラインでは、プログラムコントロー ルの誤予測と例外が時折生ずる。この時にはエラーを検出して誤予測または例外 を生じさせた命令の直前の状態にCPU51 を戻すように操作しなければならない。A.同時的な複数の分岐/ジャンプアンドリンク命令の評価のためのウォッチポ イントによる誤予測の検出 命令を理論上で実行できるプロセッサに対しては、命令を解決する前に分岐方 向(採用または非採用)または分岐アドレス(目標アドレスまたは分岐命令の次 のアドレス)を予測することができる。後にこれらの予測が誤っていたと判明す ると、CPU51 は以前の状態に戻り正しい分岐ストリームで命令の実行を開始する 。従来のプロセッサでは、1サイクルでの評価のためにしばしば複数の分岐が用 意される。しかし、従来のプロセッサはサイクル毎に1個だけの分岐予測を評価 する。従って、評価のために用意はされたが選択されなかった分岐評価は遅延さ れなければならない。分岐評価が遅延す るとCPU51 の性能が低下し、分岐をできるだけ早い時期に評価することによって 性能を著しく改良することが出来る。 本発明のウォッチポイントの構造と方法は従来技術よりもいくつかの点で有利 である。第1に、複数の予測分岐またはジャンプアンドリンク命令を同時にモニ タまたは監視することができる。第2に、複数の実行ユニットからのデータ拡大 バスを同時にモニタまたは監視して予測分岐またはジャンプアンドリンク命令が 待っている複数のデータまたは計算されたジャンプアンドリンク(JMPL)アドレ スをつかむことができる。第3に、分岐またはジャンプアンドリンク命令の複数 の誤予測信号を発生することができる。第4に、単一の共有記憶領域内に交代の 分岐アドレスまたは予測ジャンプアンドリンクアドレスを記憶することができる 。第5に、ウォッチポイントによって誤予測が検出された時に命令を取り出すた めの正しい分岐アドレスまたはジャンプアンドリンクアドレスを送ることができ る。 第27図を参照すると、ウォッチポイント(WPT)304 は発行された各チェックポ イント済みのコントロール転送命令の実行及び予測状態のモニタに責任がある。 従って、WPT304は、分岐、無効化分岐と、BrXcc、条件BrIcc、条件BrFcc,JMPL rt(1)(rd=0)用の条件情報とコントロールレジスタ(CCR及びFSR レジスタ を除く)への読取り/書き込みを含むジャンプ−リンク命令を含んでいるDO_WTC HPT 信号と共にDO_CHKPNT 信号を受信する。条件コード情報は後に、命令順序が 正しく予測されたかそれとも元に戻す必要があるかを決めるのにWPT304によって 使用される。WPT304については本明細書の他の箇所で詳細に論議する。 ウォッチポイントユニット304 は、DFB62 からのデータ拡大バスによって到来 する実行完了信号のモニタまたは監視と、例えば分岐 誤予測のような所定の事象が検出された時をCPU51 に知らせることに責任を持ち 。ウォッチポイント304 内のウォッチポイントレジスタ491 は多目的である。こ れらのレジスタは分岐予測とJMPL予測をチェックし、本来の予測が正しくない時 にバックアップ後に命令を参照するために正しい分岐/JMPLアドレスをBRB59 へ 送る。これらのレジスタはデータ拡大分配バスにあって数個のユニット(FXU,FP U,LSU 及びFXAGU)からの結果をモニタするので「ウォッチポイント」レジスタ と呼ばれる。16個のウォッチポイントレジスタがあり、各チェックポイントに対 して1個となっている。 整数実行ユニット(FXU)と、整数及びアドレス発生実行ユニット(FXAGU)と浮動 小数点実行ユニット(FPU)とを持つCPU に関連して例示したウォッチポイントユ ニット304 を説明する。この説明からして、設定する実行ユニットの数を大きく したり、小さくしたり、変えたりすることができることは当業者には自明であろ う。特に、例示したCPU51 の実行ユニットをマッチさせるために、FXU とFXAGU が追加されるであろう。 第27図はウォッチポイントユニット304 内にある主な機能ブロックの機能ブロ ック図である。BRB59 内のフェッチユニット(FETCH)は命令を取り出してISSUE20 0に与え、命令のデコードに基づいて分岐とJMPL'sを予測する。ISSUE200はウォ ッチポイント304 と FSR/CCRFRNへDO_CHKPNT 信号を送り、ウォッチポイント30 4 へDO_CHKPNT 信号を送る。FSR/CCRFRNは条件コードのリネーム(CC_リネー ミング)に責任がある。DO_CHKPNT はチェックポイントの形成を開始するMAKE_C HKPNT 信号と、形成されるチェックポイント番号を識別するNEXT_CHKPNT 信号と を含む。DO_WTCHPT 信号は分岐またはJMPL信号が発行され分岐の型を識別したこ とと、発行された命令中の条件フィールドと、条件コード(CC)タグと、発行さ れた命令中の 次の交代のプログラムカウンタアドレス/予測ジャンプアンドリンク命令アドレ スをウォッチポイント304 へ知らせる。FETCH はまた、DO_WTCHPT 信号内のWR_A NPC 信号という形で分岐/JMPLアドレスをウォッチポイント304 へ知らせる。分 岐またはJMPL或いは他のコントロール転送命令(分岐/JMPL)が発行されると、 ISU200は分岐/JMPL命令発行済み信号(DO_WTCHPT)を送るが、これは信号JMPLを 含む発行済みの各予測分岐またはJMPL用の信号である。WP_ANPC は目標RAM に書 き込まれ、PCロジック106 によって計算された目標FPC を示す。ANPCは予測分岐 命令とJMPL命令の命令デコード中に決められる。JMPL命令に対しては、DO_WTCHP T 信号内のウォッチポイントへ送られたWP_ANPC が予測目標FPC になる。予測分 岐命令に対しては、DO_WTCHPT 信号内のウォッチポイントへ送られたWP_ANPC が 交代のFPC、つまり交代の分岐方向のFPC になる。誤予測が生ずると、FPC,APC 及びNAPCを計算するバックアップの間、ウォッチポイント内のANPC出力ロジック からの出力されるRD_ANPC が使用される。リネーム600(FSR/CCRFRN606 と呼ば れるの条件コード(CC)部分はCCレジスタのリネーミングを管理し、命令発行後 にウォッチポイント304 へCCリネーミング信号を送る。CCリネーミング信号は次 に説明するようにCC_TAG_RENAMED_Cと、CC_TAG_Cと、CC_DV_C と、CC_DADA_C を 含んでいる。 実行ユニット(FXU601,FXAGU 及びFPU600)の各々はデータ拡大バスによって 条件コードタグ(CC_TAG_F)と条件コードデータ有効(CC_DV_F)と条件コードデ ータ(CC_DATA_F)をウォッチポイント304 と FSR/CCRFRN606 の両方へ送る。FXU からのタグとデータ有効とXCC データ信号とICC データ信号は、FXU_XICC_TAGS _F と、FXU_XICC_DV_F と、FXU_XCC_DATA_FとFXU_ICC_DATA_Fを含んでいる。FXA GU からの信号は、FXAGU_XICC_TAGS_F と、FXUAG_XICC_DV_F と、 FXAGU_XCC_DATA_FとFXAGU_ICC_DATA_Fを含んでいる。FPU からの信号は、FPU_FC C_TAGS_Fと、FPU_FCC_DV_Fと、FPU_FCC_DATA_Fを含んでいる。XCC,ICC及びFCC 条件コードの例と書式は例えばSPARC-V9に説明してある。 第28図を参照すると、ウォッチポイント304 は、実行ユニット(FXU,FPU及びF XAGU)からのCCデータ拡大バスから直接、または FSR/CCRFRNから到来するリネ ームされたCC信号から条件コードをつかむCC_グラビングロジック1000と、分岐 またはJMPL命令がデコードされる度毎にBRB59 から到来する予測条件コードデー タを含むウォッチポイント情報の記憶に責任を持つウォッチポイント記憶素子10 02及び関連する読取り/書き込みコントロールロジックと、実行ユニットから到 来する(直接またはリネームユニットを経由して)計算された条件コードまたは 実際の条件コードの比較を行ってこれらの条件コードを個々のウォッチポイント 記憶素子1002に記憶されている予測条件コードと比較することに責任を持つ評価 ロジック(Evalロジック)とを含む。目標RAM とその関連するコントロール比較 ロジック1003は、次に詳細に説明するように分岐またはJMPL誤予測からの回復に 参加する。CCグラッビングロジック1000と、Evalロジック1001とWP_素子10002 は、CPU51 内に割り付けできる16個のウォッチポイントの各々に対して1個、つ まり16個の別々の構造を含んでいる。唯1個だけの目標RAM1003 データ記憶構造 が供給される。 16個のウォッチポイントの各々に対して数個のデータ素子が記憶される。各ウ ォッチポイントに対して記憶されるデータは、ウォッチポイント活性化時にセッ トされるウォッチポイント有効ビット(WP_VALID[i]=1)と、JMPL命令から分 岐命令を区別する命令型式データ(WP_JMPL[i]=1はJMPLがウォッチポイント を必要として いることを示し、WP_JMPL[i]=0は予測分岐用にウォッチポイントが形成され ていることを示す)と、命令中の条件フィールド(WP_COND[i])と、WP_XCC, WP_ICC及びWP_FCC用の記憶装置とを含む。一種の典型的な実施例では、これらの データ素子はラッチに記憶されている。CCタグはCC_TAG_ARRAYに記憶され、「AN PC」(交代用の次のプログラムカウンタアドレス)/予測JMPL(ジャンプアンド リンク命令)アドレスは目標RAMに記憶されている。有効はウォッチポイントロ ジックによって書き込まれ、分岐の型、COND,CC−タグ及びANPC/JMPLアドレス はISU200から受信するDO_WTCHPT 信号から引き出される。DO_WTCHPT に応じて各 分岐/JMPL命令に対してウォッチポイント記憶素子491 が活性化され、フィール ド選択書き込みロジックがDO_WTCHPT 信号をデコードし、ウォッチポイントに分 岐型式と、CONDフィールドとANPC/予測JMPLアドレスとを書き込む。 有効ビットを「1」にセットすることによってウォッチポイント項目(エント リ)を活性化させることができるが、すべてのチェックポイント素子がそのサイ クルで既に割り付けされてしまっている場合にはウォッチポイント(及びチェッ クポイントを必要とする命令の発行は延期される。複数マルチポイント素子を同 時に能動(有効)とすることができ、有効な(VALIDフィールドセット)すべて のウォッチポイント項目は各サイクルで同時に評価することができ、誤予測信号 を発生することができる。データ記憶に割り付けされるチップ領域を減らすため 、ウォッチポイント304 は分岐命令用のANPCの個かJMPL命令用の予測ターゲット アドレスどちらかを同一の記憶位置に記憶することができる。割り付けられた多 目的ウォッチポイントレジスタの実際の使われ方は、ISU200からのDO_WTCHPT 信 号の内容、即ち、ウォッチポイント項目が予測分岐用として作られて いるかまたは予測JMPL命令用として作られているかによる。ウォッチポイントレ ジスタは自ら割り付けを解いて分岐となり、ジャンプ予測が評価する。 条件分岐命令の場合のように命令によって誤予測が生ずる可能性のある時には 、ウォッチポイントユニット304 によって必ずウォッチポイント素子が割り付け される。各ウォッチポイント素子は対応するチェックポイント素子を持っている が、逆は必ずしも真ではない。例えば条件分岐のように命令によって誤予測が生 ずる可能性がある場合には必ずウォッチポイント素子が割り付けされるので、チ ェックポイントは対応する能動ウォッチポイント項目を持たなくてもよい。チェ ックポイントは誤予測を生ずる可能性のある命令(「SAVE命令のような命令また は周期的な「タイムアウト」チェックポイントが分岐命令以外の命令用に作られ た時)以外の命令に対しても割り付けできるので、すべてのチェックポイントが ウォッチポイントを持っている訳ではない。ウォッチポイントはウォッチポイン トユニット304 内の複数のウォッチポイント素子432 のうちの1個に記憶される 。チェックポイント情報を記憶するために1個のチェックポイントレジスタが設 けられる。しかし、実際のチェックポイント済みマシン状態は前述のようにCPU5 1 の全体に亘って局所的に記憶される。表4は一組の典型的な命令用としてシリ アル番号によってチェックポイント中に記憶された情報の型と対応するチェック ポイントの例を示す。 条件コードグラビングロジックユニット492 は、DFB62 内の実行ユニットから のデータ拡大バスに現われる時の条件コード(CC)を捕捉することと、命令が発 行された時に予測され現在ウォッチポイント素子491 に記憶されている条件コー ドと捕捉された条件コードを比較する評価ロジックユニット493 へルート指定す ることに責任 を持つ。捕捉された条件コードが予測条件コードと合う場合は、命令が正しく予 測されたので元に戻される必要はない。しかし、グラビングユニットによって捕 捉された条件コードが予測条件コードに合わない場合には、命令が誤予測された ので元へ戻さなければならない。 実行ユニットからの条件コードの捕捉と比較は下記のものを含む数種のファク タによって複雑になる。即ち、命令順序から外れる実行、各実行ユニット内の命 令実行待ち行列、異る命令型式の実行に要するマシンサイクルが変数であること 、同一の命令型式でも実行資源には実行データを待つ必要に関する変動性である 。上記のファクタとその他のファクタは一般に、命令の結果と状態が実際にデー タ拡大バスにいつ現れるかに関して不確実性を生む。従って、本発明は命令が発 行された時に同一のマシンサイクル中または任意の後のサイクル中にバスに現れ る可能性のある条件コードデータを捕捉する構造及び方法を含む。また、本発明 はリネームされたレジスタ用の条件コードを捕捉する構造及び方法を提供する。 レジスタ依存性を除くため、例示したCPU51 では条件コードのリネーミングを含 めたレジスタのリネーミングが行われる。従って、ウォッチポイントユニット30 4 はCCデータとタグを直接データ拡大バスから受信し、その後CCRFRN内でCCレジ スタが更新されてから、FSR/CCRFRN606 からCCデータとタグを受信する。 第27図ではDFB62 に内に2個の固定小数点実行ユニット(FXUとFXAGU)と1個の 浮動小数点実行ユニット(FPU)が示されているが、更に多数または少数を設置す ることができ、これらは任意の型であってよい。各実行ユニットはCCデーター拡 大バスによってCCRFRN606 とウォッチポイント304 に接続される。CCデーター拡 大バスは単位実行ユニット(FXU,FXAGU 及びFPU)によって計算されたばかりのCC −データの結果を搬送する。CC−データはCCRFRNを更新するために使われる。ウ ォッチポイント304 はCC−データ拡大−バスをモニタまたは監視し、後のサイク ルでCCRFRNからCC−データを貰うのを待つのではなく、バスから直接にCC−デー タをつかむ。このようにバスから直接にCC−データをつかみ取ることによって分 岐評価が速くなる。 ウォッチポイント304 は分岐誤予測を検出すると、PSU300内のPLSM307 へ誤予 測信号WP_MISPRED_VECを送る。PSU300は前述したようにCPU51 の主要状態を追跡 制御する。PSU がウォッチポイントから誤予測信号WP_MISPRED_VECを貰うと、PS U300内のPLSM307 が誤予測と実行例外のうちで一番初期のものを選択し、本明細 書の他の箇所 に説明するように逆追跡手続きを開始する。 第25図はウォッチポイント304 及びISB と、SFR/CCRFRNと、DFB,BRB内の実 行ユニット(FXU,FXAGU及びFPU)と、PSU 内のPLSMへのインターフェースのより 詳細な機能ブロック図である。これらの主要な機能ブロックを次に説明する。1.ウォッチポイント要素の活動化 ウォッチポイント要素及び制御論理ユニット(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つのトラップをとるときといったようなその他のケースで形成される可能性も ある。 各々のウォッチポイント要素2012は、1つのチェックポイントエ ントリに対応する。典型的なCPU51は16のチェックポイントエントリを有し、従 ってウォッチポイント304 は16のウォッチポイント要素をもつ。ウォッチポイン ト活動化/非活動化論理(WADL)2012は、ISU200からのDO_CHKPNT 及びDO_WTCHP NT信号に応えてウォッチポイント要素を活動化させることを担当している。DO_C HKPNT は、チェックポイント形成を開始させるMAKE_CHKPNT 信号及び、形成され るべきチェックポイント番号を識別するNEXT_CHKPNT 信号を含んでいる。WADL20 12は同様に、予測済み分岐/JMPL命令が解決された時点でウォッチポイント要素 を非活動化することをも担当している。 ISU2000が分岐命令を発行すると、ISU200は、チェックポイントが形成される べきであるということを表示するMAKE_CHKPNT 信号をアサートし、1つのチェッ クポイント番号がPSU300によって割当てられNEXT_CHKPNT により指定される。図 50に示されているように、1つのウォッチポイント要素を活動化するためには、 NEXT_CHKPNT がデコーダ434 によって復号され、ANDゲート435 内でJSU200から のDO_WTCHPT から誘導されたDO_PREDICT信号との論理積がとられる。この出力は DO_PREDICT_VEC[i]と呼ばれる。信号DO_PREDICT_VEC[i]はWP_VALID[i]をセット する。なおここで「[i]」は16のウォッチポイント番号のうちの1つを表示する 。図50は同様に、ウォッチポイント出力論理2102の一部分を含む、WP_ACTIVE_VE C及びWP_MISPRED_VEC論理を結びつけられたウォッチポイントユニットの特定の 実施形態についての付加的な構造的詳細をも示している。 ISU200は、分岐/JMPL命令が発行された時点でウォッチポイントに対して複数 の信号を送る。これらの信号は、XCCに左右される分岐として、ICCに左右される 分岐として、FCCに左右される分岐として、ジャンプ−リンク命令(JMPL)とし て、その命令を識別し、その分岐について条件コードがファイルされる(COND) 。これらの 信号はウォッチポイント304 により受信され、DO_CHKPNT の成分信号としてNEXT _CHKPNT によって指定されたウォッチポイント要素の中に記憶される。ウォッチ ポイント要素「i」がウォッチポイント活動化制御論理(WACL)2012によって割 当てられると、これらの信号はそれぞれWP_XCC[i],WP_ICC[i],WP_FCC[i],WP_ JMPL[i]及びWP_COND[i]レジスタの中に保たれる。各々のウォッチポイント要 素は、それが非活動化され次にもう1つの分岐/JMPL命令によって再度活動化さ れるまで、これらのレジスタ値を保持する。 典型的な CPU51は、各サイクル毎に複数のチェックポイントを作成することが でき、又1サイクルにつき複数の分岐/JMPL命令を発行することができる。従っ て、複数のウォッチポイント要素を活動化させることができる。例えば、CPU51 が同じサイクル内で2つのチェックポイントを作成し2つの分岐を発行できる場 合、DO_WTCHPT,XCC,ICC,FCC,JMPL,COND,DO_CHKPNT信号が2セット又はそ れと同等の情報内容が必要とされる。 条件コード書式及びフィールド定義及びJMPL(ジャンプ&リンク)命令の書式 及び定義は、本明細書中ですでに記録されている通り、SPARCV9アーキテクチャ マニュアル内に提供されている。浮動小数点条件コードはビット−0及びビット −1を含む2ビット書式をもつ、整数条件コードは、XCCについてビット7−4 (それぞれN,Z,V,C)に、又 ICCについてはビット3−0(それぞれN, Z,V,C)として提供されている。分岐が発行され「とられた」ものと予測さ れた時点で、COND値は分岐命令の条件フィールドデータと同じである。分岐が送 信され「とられていない」と予測された時点で、CONDフィールドデータのビット −3が逆転され、残りのビットは変更されず、これらはCOND値となる。 図28は、CC−捕捉論理1000,Eval(評価)論理1001,WO−要素記 憶及び制御ユニット1002及び標的 ram1003を示す。ウォッチポイント304 の内部 構造のより詳しい表示を示す。図29は、評価準備完了(EVAL_READY)及び評価条 件コード(EVAL_CC)論理を含むCC−セレクト論理1006、アレイ晩期一致論理1004 、現行一致論理1005を含む、ウォッチポイント304 の異なる概略的部分を示す。 図30は、分岐予測及び評価のタイミング図を示す。ウォッチポイントは、各々 予測された分岐/JMPL情報を保持し予測の正しさを評価することのできる複数の ウォッチポイント要素を有する。サイクル1では、分岐が発行される。サイクル 2では、複数のウォッチポイント要素の1つ(要素「i」と仮定する)が活動化 される。その後、WP_ACTVE[i]がアサートされる。サイクル5では、FXUユニット は、その分岐を左右しウォッチポイント要素が待っているCC−データを復帰させ ている。サイクル5では、ウォッチポイント要素iはCCデータを捕捉する。サイ クル6では、ウォッチポイント要素がCC−データを捕捉していることからWP_ACT IVE_VEC[i]はアサート解除され、EVAL_READY[i]がアサートされる。EVAL_READY[ i]がCC評価を有効化する。予測が正しい場合には、EVAL_TRUE[i]がアサートされ る。そうでない場合、EVAL_READY[i]はアサートされない。この例では、タイミ ングダイヤグラムは、予測が正しくないことをアサートする。次にWP_MISPRED_V ECがアサートされ、PSU300内のPLSMへ送られる。PLSMは全てのウォッチポイント 要素(典型的実施形態では16の要素)からのWP_MISPRED_VEC[i]信号及び実行ユ ニットからの実行トラップ信号の中から優先順位をとり、最も早期の事象を決定 する。サイクル7では、PSU300は、 CPU51を以前の状態までバックアップさせる DO_BACKUP 信号をアサートする。DO_BACKUP 信号は、 CPUにバックアップを実施 するよう知らせるMAKE_BACKUP 及び、そこまでバックアップが作成されるべきチ ェックポイント番号 を識別するBACKUP_CHKPNT 信号を含んでいる。図29は、複数のウォッチポイント 要素のうちの1つに付隨するウォッチポイントユニットの特定の実施形態につい ての付加的な構造的詳細を示している。2.データ順方向送りバスから直接のCCデータのウォッチポイント捕捉 CC−捕捉(グラビング)論理1000は、データ順方向送りバスから条件コードデ ータ有効及び条件コードタグを受理しこれらを現行のマシンサイクル中に ISBか ら受理した条件コードタグと一致させようとするCCタグ現行一致論理2001を含ん でいる。典型的な論理回路が図31にCCタグ現行一致論理の一実施形態について示 されている。 FSR/CCRFRN606 は、以下の信号をウォッチポイントに送る:CC_RENAMED,CC_ TAG_C,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に記されている。 図31では、比較回路2006,2008及び2010は各々、リネーム済みCC物理タグを識 別するCC_TAG_C信号を受理するが、現行のマシンサイクル中に発生するCC修正は 除外する。比較回路の各々は同様に、データ順方向送りバスから直接条件コード タグを受理する。すなわち FPUからFPU_FCC_TAG_Fを、FXUから FXU_XICC_TAG_F をそして FXAGUから FXAGU_XICC_TAG_F を受理し、ここで FXAGU_XICC_TAG_F及 び FXU_XICC_TAG_F は両方共整数条件コードの XCC及び ICCの両方の部分を内含 する。比較の出力は ANDゲート2007,2009及び2011に送られ、制御信号として役 立つデータ有効信号(FPU_FCC_DV_F,FXU_XICC_DV_F又は FXAGU_XICC_DV_F)との 論理積がとられる。データ有効信号がアサートされたならば、そのとき、比較回 路によって決定された一致は有効であり、CC現行一致信号(FPU_CURR_MATCH,FXU _CURR_MATCH 又は FXAGU_CURR_MATCH)がアサートされる。 図31に示されているように、CCリネーム済みタグアレイ一致論理2002は、各々 の実行ユニット(FPU,FXU,FXAGU)について AND論理機能を実行するための論理 回路2016及び比較回路2015 16セットから成る1つのセットを含んでいる。現行 一致論理2001はデータ順方向送りバスからの信号をCC_TAG_Cと比較する一方、ア レイ一致論理ユニット2002は、リネーム済みCC物理タグを識別するものの現行サ イクル中に発生するCC修正を含むCC_TAG_RENAMED_Cとデータ順方向送りバスから の信号の各々を同時に比較する。CC_TAG_RENAMED_Cは、DO_PREDICT_VECと現行マ シンサイクル内で発行された命令によりCCが修正された時点でアサートされてい るCC_RENAMEDとの論理積をとることにより、生成された書込み有効化信号の制御 下で、16のCCタグアレイ2003記憶要素のうちの1つの中へ書き込まれる。サイク ル毎に、CC_TAG_RENAMED_Cの記憶された値は、何らかの一致を識別する目的で、 FPUからのFPU_FCC_TAG_F,FXU からのFXU_XICC_TA G 及び FXAGUからのFXAGU_XICC_TAG_F と比較される。比較回路2016の出力は、 制御信号として役立つデータ有効信号(FPU_FCC_DV_F,FXU_XICC_DV_F、又は FXA GU_FXICC_DV_F)と論理積がとられる。データ有効信号がアサートされると、そ のとき比較回路によって決定された一致は有効であり、CCアレイ一致信号(FPU_A RRAY_MATCH[i],FXU_ARRAY_MATCH[i]及び FXAGU_ARRAY_MATCH[i])がアサートさ れる。従って、CC−捕捉論理は、複数の未解決分岐評価を同時に監視することが できる。 図31は、CC捕捉論理を示す。CC_TAG_ARRAYは16のレジスタを含み、各レジスタ は16のチェックポイントのうちの1つに対応し、CC_TAG_Cビット数と同じラッチ 数をもつ(ここで我々は4ビットラッチを仮定している。1つの分岐を発行し予 測する場合、CC_TAG_RENAMED_Cは、DO_WTCHPT から誘導されたDO_PREDICT_VEC[i ]により指定されるCC_TAG_ARRAYの場所内に書き込まれる。CC_RENAMEDは、AND論 理ゲートといった書込み有効化及びアドレスセレクタ論理2004内で書込み有効化 信号として役立つ。 この記述においては、プロセッサは2つの固定小数点実行ユニットすなわち F XU及び FXAGUそして1つの浮動小数点実行ユニットFPU をもつものとして仮定さ れている。典型的な実施形態においては、FXUのみがJMPL命令を実行することが 仮定されている。各々のユニットはCC−データ順方向送りバスを有する。FXU CC データ順方向送りバスは、FXU_CC_TAG_VALID,FXU_CC_TAG 及びFXU_CC_DATAを含 む。FXUが、CCを修正するようなその実行を終わろうとしているとき、FXU_CC_TA G_VALID がアサートされ、FXU_CC_TAG はそのリネームされたCC物理タグを有し 、FXU_CC_DATAはCCの結果データを有する。同じことは FXAGU及び FPUにもあて はまる。FSR/CCRFRNユニット内の条件コード(CC)データは次のサイクル内でこ れらのCC データ順方向送りバスを用いて更新される。ウォッチポイントは同様に、ウォッ チポイント要素がCCデータを待機している場合にデータ順方向送りバスからのCC データを捕捉する。CC_TAG_CはFXU_CCTAG と比較され、その一致信号は FXU_CC_ TAG_VALID との論理和がとられ、出力信号は FXU_CC_CURR_MATCHと呼ばれる。同 様にCC_TAG_ARRAY内のレジスタの内容は、FXU_CC_TAGと比較され、その一致信号 は、FXU_CC_TAG_VALID との論理積がとられ、出力信号はFXU_CC_ARRAY_MATCH[i ]と呼ばれる。FXAGU及び FPUについては、FXUと同じ一致機能が存在する。ここ で3つの命令発行シーケンス例を基準にして、捕捉論理のオペレーションについ て記述する。 CC捕捉論理1000は同様に、そのウォッチポイント要素内の分岐を左右し、アサ ートされた時点でCCデータ信号(例えばCC_DATA〔7:4〕)を選択し同様に次 のサイクル内での評価のためにそのデータ信号をラッチングする条件コードに基 づいて信号を生成することをも担当するCCセレクト論理2005(各ウォッチポイン トに1つずつの16層)をも含んでいる。条件コードセレクト論理2005の1実施形 態のための典型的論理回路は、図32の中に提供されている。このCCセレクト論理 2005のオペレーションについては、以下の3つの例に関連して記述されている。 評価論理1001は、図25に示されている通り、評価準備完了論理(EVAL_READY) 2100、評価真論理(EVAL_TRUE)2101 及びウォッチポイント出力論理(WP出力論 理)2102を内含する。図33は、CCセレクト論理2005からの1組のセレクト信号( 例えば、SEL_BR_XCC[i])及び AND論理ゲート2106の出力からの有効化信号(EVAL _ENABLE)を受理するEVAL_READY論理2100に付隨する付加的な構造的詳細を示して いる。EVAL_ENABLE は、WP_ACTIVE_VEC[i],WP_JMPL,FXAGU_JMPL 及び FXAGU_C HKPTに基づいてアサートされる。EVAL_READY論理 2100は、評価が準備完了していることを表わすi番目のウォッチポイントのため のEVAL_READY[i]信号を出力する。 図34は、CC_EVAL 論理2105を含むEVAL_TRUE 論理2101に付隨する付加的な論理 的詳細を示す。EVAL_TRUE 論理は、分岐命名又はJMPL命令が適正に予測されたか 否かを決定することを担当する。CC_EVAL2105 は、CCセレクト論理2005からのEV AL_CC[i]及び、ISBから受理されウォッチポイント要素2013の中に記憶されたWP_ COND[i],WP_XCC[i],WP_ICC[i]及びWP_FCC[i]を受理し、SPARC-V9マニュアル内 に記述された規則を用いた比較に基づいて2つの信号を評価する。これらが一致 する場合、分岐真信号(BR_TRUE[i])がそのi番目のウォッチポイントについて生 成される。EVAL_TRUE 論理2101は、同様にJMPL−致論理2201によるJMPL_MATCH出 力(図35参照)を、ISBから受理されウォッチポイント要素2013内に記憶されたW P_JMPL[i]と比較する。JMPL_MATCHがWP_JMPL[i]と一致する場合、JMPLは適正に 予測されており、JMPL_TRUE[i]がアサートされる。BR_TRUE[i]とJMPL_TRUE[i]の 論理和がとられ、EVAL_TRUE[i]信号を生成する。単一の命令のみについて1つの ウォッチポイントが形成され、従って、BR_TRUE[i]又はJMPL_TRUE[i]の1つのみ がアサートされることになる。 WP出力論理2102が図50に示されている。PSU300からのEVAL_READY[i],EVAL_TR UE〔j〕,WP_VALID[i]及びKILL_VEC[i]は、WP出力論理に入力され、これがWP_A CTIVE_VEC[i]及びWP_MISPRED_VEC[i]信号を出力する。 図35は、TARGET_RAM及びJMPL評価論理に付隨する付加的な構造的詳細を示して いる。JMPL評価論理は、rd=0とした復帰タイプのJMPL命令を評価した。ANPC出 力論理2103は、正しい計算値である FXU_DATA の値を、本書で記述されている優 先順位決定スキーマ及び記 憶されたWP_ANPC の比較に基づいて PSUPLSMによって誤予測(MISPRED)がアサー トされているか否かに基づき BRBフェッチユニットまで送るため、RD_ANPC を選 択する。3.ウォッチポイントオペレーション例 a.ウォッチポイントオペレーション−例1 : 表7は、サイクルX,X+1、及びX+2の中で実行された、例1のための命 名のリストである。サイクルXでは、4つの命令が発行され、そのうちの1つ(a ddcc)が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である。 1つの分岐を発行しているとき、FSR/CCRFRN内で分岐を左右するCC_DATA が有 効である。従って、CC_DV_C は分岐の発行と同じサイクルでアサートされる。分 岐が XCCにより左右されると仮定してみよう。そのとき SEL_BR_XCC(i)がアサ ートされ(図32参照)、信号はCC_TDATA〔7:4〕を選択し、データは次のサイ クルにおいてEVAL_CC[i]内でラッチされる(信号CC_DATA〔7:4〕はXCC_DATA_ C 及び ICC_DATA_C であるか又は FCC_DATA_C である)。又EVAL _READY[i]は次のサイクルにおいてアサートされる(図33参照)。CC評価は、準 備完了状態となる。b.ウォッチポイントユニットオペレーション−例2 : 表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である。 (サイクルX+1において)1つの分岐を発行する場合、サイクルXで発行さ れている命令「addcc」はCCを修正し結果データはFSR/CCRFRNにおいてCCレジス タ内に書込まれないことから、FSR/CCRFRN内でその分岐を左右するCC_DATA は有 効でない(CC_VD_C =0)。我々は FXU実行ユニットによりサイクルX+1で「 addcc」が実行されつつあり、FXUがサイクルX+1でそのデータ順方向送り母線 上でCCデータを復帰させている、と仮定している。その後、サイクルX+1で F XU_CC_CURR_MATCH(図31参照)がアサートされる。サイクルX+2でSEL_FXU_XCC [i](図32参照)がアサートされ(図32参照)、信号は FXU_CC_DATAを選択し 、データはEVAL_CC[i]内でラッチされる。又、サイクルX+2でEVAL_READY[i] がアサートされる(図33を参照)。次にCC評価が準備完了状態となる。 FXU_CC_CURR_MATCH比較のためにはCC_TAG_RENAMED_CではなくCC_TAG_Cが使用 されることに留意されたい。分岐が発行されるのと同じサイクル内で、CCを修正 するような命令が発行される場合、CC_TAG_Cは最も晩期のCC物理タグではない。 しかし、CC_RENAMEDがアサートされ信号は FXU_CC_CURR_MATCHを抑止する(図32 参照)。このことはすなわち、分岐が発行されるのと同じサイクルにてCCを修正 する命令が全く無い場合には、FXU_CC_CURR_MATCHを使用することができる、と いうことを意味している。FXU_CC_TAG_CURR_MATCHのためにCC_TAG_C〔3:0〕 を用いることは、CC_TAG_CがCC_TAG_RENAMED_Cよりも早い信号であることから、 経路遅延を減少させる一助となる。c.ウォッチポイントユニットオペレーション−例3 : 表9は、サイクルX及びX+1で実行される例3についての命令リストである 。サイクルXでは、4つの命令が発行され、(addcc)の1つがCCを修正する。 このときリネーム済み−CC物理タグ#7が割当られる。サイクルX+1では、こ こでも4つの命令が発行され、そのうちの1つ(subcc)が分岐前にCCを修正し、 それらのうちの1つは分岐命令である。リネームされたCC物理タグ#8は命令su bcc に割当てられる。この場合、サイクル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である。 (サイクルX+1において)1つの分岐を発行する場合、サイク ルXで発行されている命令「addcc」はCCを修正し結果データはFSR/CCRFRNにお いてCCレジスタ内に書込まれないことから、FSR/CCRFRN内でその分岐を左右する CC_DATA は有効でない(CC_DV_C =0)。その上、命令「subcc」はサイクルX +1で発行され、その後CC_RENAMEDがアサートされる。我々は、FXU実行ユニッ トによりサイクルX+2で「subcc」が実行されつつあり、FXUがサイクルX+2 でそのデータ順方向送り母線上でCCデータを復帰させている、と仮定している。 その後、サイクルX+2でFXU_CC_ARRAY_MATCH[i](図31参照)がアサートさ れる。サイクルX+3で SEL_FXU_XCC[i](図32参照)がアサートされ(図32 参照)、信号は FXU_CC_DATAを選択し、データはEVAL_CC[i]内でラッチされる。 又サイクルX+3でEVAL_READY[i]がアサートされる(図33を参照)。次にCC評 価が準備完了状態となる。この例では16のウォッチポイント要素が存在し、各々 の要素は、いずれかのサイクルにおいて各分岐評価について並行なCCを捕捉する ことができる。 4.分岐命令の評価 分岐が発行されてから1サイクル後に、WP_VALID[i]がアサートされる。WP_VA LID[i]=1でありEVAL_READY[i]=0そしてKILL_VEC[i]=0である場合、WP_ACT IVE_VEC[i]がアサートされる(図29参照)。「WP_ACTIVE[i]=1」は、チェッ クポイントiを用いる分岐がすでに発行されているもののまだ解決されていない ことを意味する。値が0となったならば、それは分岐が解決された(完了した) ことを意味する。WP_ACTIVE_VEC_はICRU301 に送られ、どの分岐/JMPL命令が完 了されるかを決定するために用いられる。 分岐評価が準備完了状態になった時点で、EVAL_READY[i]がアサートされEVAL_ CC[i]は、捕捉されたCC値である。このとき、EVAL_CC[i]及びWP_COND[i]はEVAL_ TRUE LOGIC2101 内でCC_EVAL 論理中へフィードされ(図34参照)、分岐は評価 される。分岐を発行するときに作成された予測が正しい場合、BR_TRUE[i]がアサ ートされる。そうでない場合、これはアサートされない。1つの分岐を評価する とき、分岐タイプを知るために、WP_XCC[i],WP_ICC[i],WP_FCC[i]信号も同様 に使用される。BR_TRUE[i]はJMPL_TRUE[i](以下で説明する)と論理和がとられ 、EVAL_TRUE[i]が生成される。WP_VALID[i]=1でEVAL_READY[i]=1でEVAL_TRU E[i]=0でKILL_VEC[i]=0である場合、WP_MISPRED_VEC[i]はアサートされる( 図29参照)。「WP_MISPRED_VEC[i]=1」というのは、以前に作成された分岐予 測がまちがっていることを意味する。PSUはこの信号及び実行エラー信号を受理 し、最も早期の誤予測又は実行エラー条件を選択し、次にBACKUP信号をアサート して以前の状態までバックアップする。 PSUは、バックアップが発生しバックアップ時点の後にとられたチェックポイ ントをキルする必要がある場合に、KILL_VEC[i]信号 をアサートする。KILL_VEC[i]がアサートされた時点で、反応するウォッチポイ ント要素も同様にキルされる。「キルされる」というのは、WP_ACTIVE_VEC[i] 及びWP_MISPRED_VEC[i]が抑制されることを意味する。WP_ACTIVE_VEC 及びWP_MI SPRED_VECは、WP_MISPRED_VEC〔0−16〕を同じベクトル内でコード化できるよ うに、マルチホットであり得る。このことはすなわち、一度に最高16のウォッチ ポイント要素(この例では)が活動中であり得又一度に誤予測を検出できるとい うことを意味している。 分岐を発行し予測するとき、FETCHがWR_ANPC を通してウォッチポイントに、 分岐標的アドレス又は分岐の次のアドレスを送る。予測が「とられた」場合、WR _ANPC が、分岐の次のアドレス(とられていないアドレス)である。予測が「と られていない」場合、WR_ANPC は分岐標的アドレス(とられたアドレス)である 。予測が誤っていることが判明した場合、ウォッチポイントは、適正な分岐経路 から命令を再度フェッチするためRD_ANPC を介してアドレスをFETCHまで送り戻 す。WR_ANPC 値はTARGET_RAM内に記憶される(図35参照)。TARGET_RAMは16のエ ントリをもち、各々のエントリは各々のチェックポイントに対応し、1つのWR_A NPC アドレスを記憶することができる。この RAMの書込み有効化信号及び書込み アドレスは、MAKE_CHKPNT 及びNEXT_CHKPNT である。MAKE_CHKPNT は、チェック ポイントを作成するときにアサートされる。BACKUP信号がアサートされた時点で 、TARGET_RAMの読取りアドレスのためにBACKUP_CHKPNT が用いられる。BACKUP_C HKPNT は、CPU51がそれまでバックアップするチェックポイントを指定する。又T ARGET_RAMの読取りデータがRD_ANPC を介して FETCHまで送られる。5.JMPL-LINK(JMPL)命令の評価 JMPL命令を発行し予測するとき、FETCHは、ウォッチポイントに 対しWR_ANPC を介して予測されたJMPL標的アドレスを送る。ウォッチポイントは アドレスを保ち、実行ユニットにより計算上の正しいアドレスとこのアドレスを 比較することによって適正さを評価する。予測が誤っていたことが判明した場合 、ウォッチポイントは、正しいアドレスから命令を再度フェッチするためRD_ANP C を介して FETCHに計算上の正しいアドレスを送る。予測されたJMPL標的アドレ スは分岐の場合と同じ方法でTARGET_RAM内に記憶される。 我々は、FXAGU実行ユニットのみがJMPL標的アドレスを計算するものと想定し ている。FXAGUがJMPL命令の実行を終えた時点で、FXAGU_JMPL がアサートされ、 FXAGU_CHKPNT はJMPLのチェックポイント番号を指定し、FXAGU_DATA は、計算上 の正しいJMPL標的アドレスを内含する。このとき、FXAGU_CHKPNT によって指標 付けされたTARGE_RAM内の予測されたJMPLアドレスが読みとられ、読取られたデ ータは FXAGU_DATA と比較されることになる。比較結果はラッチされ、ラッチ済 み信号はJMPL_MATCHである(図35)。予測上のアドレスと計算上のアドレスが同 じである場合、JMPL_MATCHがアサートされる。このとき、JMPL_MATCHはWP_JMPL[ i]との論理値がとられ、出力はEVAL_TRUE[i]となる(図34)。FXAGU_JMPL がア サートされてから1サイクル後に、EVAL_READY[i]もアサートされる(図33)。 分岐命令の場合と同じ要領で、JMPLについてWP_ACTIVE_VEC[i]及びWP_MISPRED _VEC[i]が生成される。WP_MISPRED_VEC[i]がアサートされてから1サイクル後に 、PSU300は、ウォッチポイント304 に対する2つの信号すなわちBACKUP_CHKPNT 及びMISPRED(ただしバックアップがJMPLの誤予測のせいである場合のみと同数 のBACKUPを送る。MISPRED がアサートされた場合、ウォッチポイントは、FETCH に対し正しいJMPLアドレスを含むラッチされたFXAGU_DATA 信 号を2回送る(図35参照)。TARGET_RAMは次の2つの目的のために使用される; その1つは分岐の代替的アドレスを記憶するためそしてもう1つは予測されたJM PL標的アドレスを記憶するためである。これら2つの用途は排他的であり、従っ て、この実施のためには1つのTARGET_RAMだけで充分である。 発明力ある構造及び方法は、(1)複数の予測済み分岐又はジャンプ&リンク 命令のウォッチング(監視)を同時に開始するための構造及び方法;(2)実行 ユニットからのデータ順方向送り母線を同時にウォッチングすることにより、予 測済み分岐又はジャンプ&リンク命令が待っている複数の条件コードデータ又は 計算上のジャンプ&リンクアドレスを捕捉するための構造及び方法;(3)単独 又は(2)と組合わせた形で、分岐又はジャンプ&リンク命令の複数の誤予測信 号を同時に生成できるようになるための構造及び方法;(4)単独又は(2)と 組合わせた形で、上記2つのケースで共有される1つの記憶装置内に代替分岐ア ドレス又は予測されたジャンプ&リンクアドレスを記憶するための構造及び方法 ;(5)単独又は(4)と組合わせた形で、誤予測が発生した場合に命令フェッ チのため正しい分岐アドレス又はジャンプ&リンクアドレスを送るための構造及 び方法;そして(6)CCデータを捕捉するためのタグ比較を2つの部分すなわち データ順方向送り母線タグと比較した先行サイクル内のCCタグ及びデータ順方向 送り母線タグと比較した現行発行ウインドウ内の現行リネーム済みCCタグという 2つの部分に分割することによって、クリティカルパスをスピードアップするた めの構造及び方法(単独又は(2)と組合わせた形)、を提供する。後者の場合 、リネーム済みCCタグのラッチされた信号を比較のために用いることができ、従 ってこれはタイミングクリティカルではない。図36は、複数の同時未解決分岐評 価のための発明力あるウォ ッチポイント方法の一実施形態の概略的流れ図である。B.例外検出 例外は、発行又は実行中に発生する可能性がある。かくして例外には発行トラ ップと実行トラップが含まれる。以下では、発行トラップと実行トラップの検出 について記述する。1.発行トラップの検出 ISU200は同様に、命令の発行を実施する発行トラップを検出する。これらの発 行トラップは、同期化又は非同期化発行トラップであり得る。当業者であれば、 同期化及び非同期化とされる発行トラップのタイプは、さまざまな基準に基づい て選択され得、設計者の選択の対象となりうるということを認識することだろう 。 例えば、非同期化発行トラップは、標準的には、往々にして発生し、かつ前述 の要領での CPU51のそれに対する同期化がプロセッサの速度を低下させることに なるような発行トラップである。従って、このような種類のトラップは、機械的 に同期化されエントリを受けることはない。これらの発行トラップとしては、SP ARC-V9アーキテクチャマニュアル中に記述されているfill_normal,fill_other ,spill_normal, spill_other,clean,window,trap_instruction(つねに(T A%go tsimm7)命令の中間にあるトラップ)、unimplemented_ldd,unimplement ed_std 及び illegal_instructionが含まれていると考えられる。 非同期化発行トラップは、標準的に、往々にして発生せず、かつそれについて CPU51を同期化することによってプロセッサの速度が著しく影響を受けないよう な発行トラップである。これには、SPARC-V9 instruction_access_error,instr uction_access_exception,privileged_opcode,privileged_action,fp_except ion_other,fp_disabled,emulation_trap、及びtrap_instruction(条件付きト ラップ(TCC)命令)発行トラップといったような発行トラップが含まれると考え られる。 これらの発行トラップの或るタイプのものが発行段で発生したか否かを決定す るために、ISU200は制御レジスタ(CNTR-REG)フィールドを制御レジスタファイ ル800 から受理する。図17に示されているように、制御レジスタファイル800 は 、クリーンウインドウ(CLEANWIN)レジスタ801、回復可能ウインドウ(CANREST ORE)レジスタ802、セーブ可能ウインドウ(CANSAVE)レジスタ803、ウインドウ 状態(WSTATE)レジスタ804 及びプロセッサ状態(PSTATE)レジスタ805 を含む SPARC-V9特権的レジスタを収納している。これは又、TICKレジスタ806 及び浮動 小数点レジスタ状況(FPRS)レジスタ807 を含むSPARC-V9非特権的レジスタをも 収納している。CNTRL_REGフィールドは、SPARC-V9アーキテクチャマニュアル内 に記述されCLEANWIN,CANRESTORE,CANSAVE,WSTATE,TIC、及びFPRSレジスタ80 1〜807 により提供されているCLEANWIN,CANRESTORE,CANSAVE,WSTATE_NORMAL ,WSTATE_OTHER,PSTATE_PEF,PSTATE_PRIV,TICK_NPT、及びFPRS_FEFフィール ドを含んでいる。 ここで図7に戻ると、ISU200は、FR_INSTs_BRPs 命令を復号し、SPARC-V9発行 トラップのいずれかが発生したか否かを決定するべくSPARC-V アーキテクチャマ ニュアルに従って CNTRL_REGフィールドを利用する。最も早期の発行ウインドウ スロット内で命令によりひき起こされた発行トラップのみが取られることになる 。従って、単数又は複数の発行トラップが検出された時点で、最も早期のスロッ ト内にある発行トラップ誘発命令のスロットに先立つ発行ウインドウスロット内 の一部の命令のみがISU200によって発行され得る。発行トラップ誘発命令及び発 行トラップ誘発命令のスロットの後の一部のFR_INST_BRP_0-3 命令は、(trap_i nstruction)発行トラップ をひき起こしたTA又はTcc 命令が発行されるということを除いて、発行されない 。 発行トラップが起こった時点で、ISU200は、トラップが発生したことを表わす ISSUE_TRAP 信号をPSU300に対して出力し、前述の発行トラップのうちのいずれ が発生したかを識別する。ISU200により非同期化発行トラップが検出された場合 、その検出時点で直ちにISU200により ISSUE_TRAP 信号が出力されることにな る。しかしながら、同期化発行トラップがISU200により検出された場合、発行ト ラップ誘発命令がスロット0内にくるまでISU200によってISSUE_TRAP 信号が出 力されることはなく、CPU51は前述の要領で同期化される。非同期化発行トラッ プをひき起こす Tcc命令の場合、Tcc命令は、CPU51が同期化された時点で初めて 発行され得る。2.実行トラップの検出 図8を参照すると、発行済み命令の実行中に、FPU600,FXU601及びLSU603によ って検出されるエラーが発生する可能性がある。前述した通り、FPU600,FXU601 及びLSU603は、命令の実行中にエラーが発生したか否かを表示する ERR_STAT 信 号を ISB61のPSU200に出力する。LSU及び FXUからの実行エラーは、PSU300によ り容易にとり扱うことができる。しかし、次に記述するように、浮動小数点例外 は特殊な取り扱いを必要とする。 図8を参照すると、前述の通り、FPU600は、資源利用可能性に基づいて予測上 の及び/又は実際のPC順序外で浮動点命令をout-of-order実行する。浮動小数点 命令の実行中、FPU600は実行トラップ(すなわちエラー)を検出することができ る。しかしながら、FPU600は予測上の及び/又は実際のPC順序外で命令をout-of -order実行し得ることから、それらがひき起こす実行トラップも又予測上及び/ 又は実際のPC順序外であり得る。浮動小数点実行トラップをあたか もそれらが実際のPC順に発生したかのごとく適切に取扱い検出するために、PSU3 00は、図37に示されているように浮動小数点例外(FPEXCEP)リング又はユニット3 06 を含んでいる。 図38に示されている通り、FPEXCEPリング306 は64の記憶要素又はエントリを 伴うデータ記憶構造900 を含んでいる。各々の記憶エントリは64の命令通し番号 のうちの1つに対応し、命令識別(FP)フィールド、浮動小数点トラップタイプ (FTT)フィールド及び現行浮動小数点例外タイプ(CEXC)フィールドを有する。 図37に示されている通り、データ記憶構造はFFFPフィールドを記憶するための64 のアドレス可能な記憶要素をもつFPフィールドリング、FTTフィールドを記憶す るため64のアドレス可能な記憶要素を有する FTTフィールドリングそしてCEXCフ ィールドを記憶するための64のアドレス可能な記憶要素を有するCEXCフィールド リングを形成する。FP,FTT及びCEXCフィールドリングのアドレス可能な記憶要 素の各々は命令通し番号に対応する。 FPビットは、対応する命令がSPARC-V9浮動小数点タイプの命令であるか否かを 表示するべくセット(「1」)又はクリア(「0」)される。FPEXCEPリング306 内の浮動小数点命令としてFP−ビットにより識別された命令については、FTTフ ィールドは、発生したSPARC-V9浮動小数点トラップのタイプを識別する。SPARC- V9 アーキテクチャマニュアル内に表示されている通り、これにはいかなるトラ ップも含まれず、IEEE_754 例外、未実施_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_例外のいずれ のタイプも発生しなかったことを表示する。 前述し図11にも示されているA−リング312 及びM−リング324 と同様に、FP EXCEPリング306 は、図37に示されているように「モジュロFPEXCEP-リングレジ スタ長」算術演算(ここではモジュロ64算術演算)を用いてデータ構造に沿って ポインタが移動させられる循環リング又はラップアラウンドデータ構造として実 施される。当業者であれば、循環データ構造が有利であるものの、これは、本発 明にとって不可欠なことではなく、本発明の特徴を実施するその他のデータ構造 を用いることも可能であるということがわかるだろう。 ここで再び図38を参照すると、各々の発行段の間、ISU200は、フェッチされた FR_INST,BRP_0-3 命令のどれが発行されたかを示す前述のISSUE_VALID 信号を 出力する。同時にこれは、発行された命令のうちのどれが浮動小数点命令である かを識別するEP_ISSUE信号 を出力する。これらの信号は、FP書込み(WR)論理901 及 びFTT書込み(WR)論 理902 により受理される。さらに、FPWR論理901 及び FTTWR論理902 は ICRU301 から、前述のNISNポインタを受理する。 FPWR論理901 及びFTTWR902はNISNポインタ及びISSUED_VALID信号を用いて、IS U200により発行されたばかりの命令のための FTTフィールド及びFRビットに対応 する FPEXCEPリング内の場所をアドレスする。浮動少数点命令であるものとして FP_ISSUEによって識別された命令の各々について、FRWR論理901 は、それが浮動 小数点命令であることを表わすため対応するFPビットをセットする。又、浮動小 数点命令でないものとしてFP_ISSUEによって識別された発行済み命令については 、FPWR論理901 は、それが浮動小数点命令でないことを表示するため対応するFP ビットをクリアする。 図8を参照すると、前述の通り、FPU600,FXU601,FXAGU602及びLSU603は発行 済み命令を実行し、実行が完了した時点で ERR_STAT 信号を出力する。図39に示 されているように、ERR_STAT 信号は、FPU600によって実行され完了した浮動小 数点命令についての通し番号、チェックポイント番号及びエラー状況フィールド を内含するFP_ERR_STAT 信号を含む。エラー状況フィールドは、実行済みの浮動 小数点命令の結果をもたらされる浮動小数点トラップタイプ又は1つももたらさ れない場合には浮動小数点トラップ無しを、そして浮動小数点命令によりひき起 こされた現行の浮動小数点例外又は例もひき起こされなかった場合には現行浮動 小数点命令無しを表示する。 その上、図39を参照すると、FSR/CCRFRN606は、SPARC-V9浮動小数点状況レジ スタ(FSR)を内含する。FSRは、上述のIEEE_754例外の各々について1つのマス キングビットを含むトラップ有効化マスク(TEM)フィールドを含み、これらの例 外のうちの単数又は複 数のものがマスキングされうるようになっている。TEMフィールドはFPU602に提 供される。IEEE_754_例外が起こると、FR_ERR_STAT 信号は、この例外がマス キングされるべきタイプのものであることを TEMフィールドが表示した場合には 、1つの例外が発生したことを PLSM307に対して表示しない。しかしながら、FP _ERR_STAT 信号はそれでも FPEXCEPユニットに対して、このようなIEEE_754_ 例外が発生した(すなわちFTT)ことと同時にそれがIEEE_754_例外のどのタイプ であるか(すなわちCEXC)を表示する。 完了済み浮動小数点の各々について、FTTWR論理902 は、FP_ERR_STAT 信号に より識別された FTTデータを FPEXCEPリング306 の対応する FTTフィールド内に 書込むため、FP_ERR_STAT 信号内に提供された通し番号を用いる。その上、CEXC 書込み(WR)論理903 は、EP_ERR_STAT 信号によって識別されたCEXCデータを F PEXCEPリング306 の対応するCEXCフィールド内に書込むために、この通し番号を 用いる。 読取り及び累積例外計算(RD and AEXC compute)論理904 は、PSU300の ICRU30 1から RRPポインタ及びCOMMIT_VALID信号を受理する。RRPポインタは、前のマシ ンサイクル内で退去させられた最後の命令をポイントし、COMMIT_VALID信号は R RPポインタが前のマシンサイクル内をどれほど遠くまで前進するか(すなわち退 去させられた命令の数)を表示する。 各々のマシンサイクル中、RD及びAEXC計算論理904 は RRPポインタ及びCOMMIT _VALID信号を用いて、最後のマシンサイクル内で退去させられた各命令について FPEXCEPリング306 内のFPビット及び FTT及びCEXCフィールドを読みとる。その 後、浮動小数点命令(FPビットにより識別されたような)である退去済み命令に ついて、RD及びAEXC計算論理904 は、そのCEXCフィールドを論理和してAEXCフィ ールドを計算する。要約したとおり、マスキングされていないIEE _754 _例外 をひき起こす浮動小数点命令は退去されておらずPLSM307による実行トラップ順 序決定を結果としてもたらすことになることから、AEXCフィールドは、最後のマ シンサイクル内で退去させられた浮動小数点命令の全てによって累積されたマス キング済みIEEE_754 _例外を識別する。 さらに、RD及びAEXC計算論理は、読取りFPビットから、現行のマシンサイクル の中で退去させられた命令のうちのいずれが、退去されるべき最も晩期の浮動小 数点命令であるかを決定する。現行のマシンサイクル内で単数又は複数の浮動小 数点命令が退去させられた場合、Rd及びAEXC計算論理904 は、計算上のAEXCフィ ールドを含む信号及び図39内の FSRのfsr.aexrフィールド内に書き込むべきであ ることを表示する信号を含むWR_CEXC_AEXC_FTT信号を出力する。その上、WR_CEX C_AEXC_FTT信号は、同様に、ほとんどの現行の退去済み浮動小数点命令のための FTT 及びCEXCデータを含む信号及び図39内の FSRのfsrftt及びfsr.cexcフィール ドの中にこのデータを書き込むべきであることを表示する信号をも含んでいる。 この状況下で、FTTデータは、いくつかの理由で浮動小数点トラップ無しタイプ を表示する。まず第1に、実行例外をひき起こさない浮動小数点命令は、退去さ れる可能性があり、又浮動小数点トラップ無しタイプを表示する FPEXCEPリング 内の対応する FTTフィールドを有することになる。第2に、IEEE_754 _例外ト ラップを表示する FTTフィールドを有するもののFSR607の TEMフィールドによっ てマスキングされた単数又は複数の対応するIEEE_754 _例外をひき起こした浮 動小数点命令は、これらの実行例外のいずれかが発生したことについて PLSM307 が警告を受けていないことから、退去される可能性がある。 前述のとおり、PLSM307は同様にFR_ERR_STAT 信号も受理する。これらの信号 が、例外トラップが発生したことを表示した時点で、PLSM307により実行トラッ プ配列決定プロセスが開始され、こうして CPU51はトラップ誘発命令に先立つ命 令において同期化されることになる(すなわち RRP=CSN=ISN)。 CPU51が同期化された時点で、PLSM307は FPEXCEP_CHP信号を生成する。FPEXCE P_CHK信号に応えて、RD及びAEXC計算論理902 は、RRPポインタを用いて、RRP+ 1にある命令のための FPEXCEPリング306 内の FP,FTT、及びCEXCフィールドを 読みとる。 読取りFTT フィールドが、浮動小数点トラップ無しを表示した場合、RRP+1 にある命令は、浮動小数点例外をひき起こす原因ではなかったことになる。この 命令では、いくつかの他の種類の例外が発生した可能性もあることから、RD及び AEXC論理904 は、fsr.ftt,fsr.cexc 及びfsr.aexcフィールド内に例も書き込ま れるべきではないことを表示する信号を内含するように、WR_CEXC_AEXC_FTT信号 を出力する。 しかしながら、読取り FTTフィールドが浮動小数点トラップ発生を表示した場 合、RRP+1での命令が、浮動小数点例外の原因であったことになる。このとき 、RD及びAEXC論理904 は、RRP+1での命令のための FPEXCEPリング306 から読 みとられた FTTフィールドを含む信号及び図39内のFSR607の fsr.fttフィールド 内に読みとられるべきであることを表示する信号を含むように、WR_CEXC_AEXC_F TT信号を出力する。かくして、浮動小数点命令によってひき起こされたトラップ タイプは、浮動小数点実行トラップ取扱いルーチンがトラップを適切に取扱うべ く記憶FSR(STFSR)命令で FSRにアクセスできるような形で、FSRの fsr.fttフ ィールド内に含まれている。 さらに、読取り FTTフィールドが IEE_754_例外が発生したことを表示した 場合、RD及びAErC論理904 によって出力されたWR_CEXC_AEXC_FTT信号は、RRP+ 1での命令のための FPEXCEPリング306 から読みとられたCEXCフィールドを含む 信号及び図39内のFSR607のfsr.cexcフィールド内に読みとられるべきであること を表示する信号を含む。その結果、浮動小数点命令によってひき起こされた現行 の例外タイプは、ここでトラップ取扱いルーチンが記憶FSR(STFSR)でFSR607の このフィールドにアクセスしトラップを適切に取扱うことができるような形で、 FSRのfsr.cexcフィールド内に含み入れられる。 図37を参照すると、この場合、浮動小数点命令は予測された及び/又は実際の PC順外でFPU600によりout-of-order実行されることから、RRP+1における命令 は、実行トラップ順序決定プロセスを PLSM307に開始させた障害発生命令ではな かった可能性がある。換言すると、浮動小数点命令は、より早期に発行された( すなわちより早期の通し番号をもつ)もののより晩期に実行されたもう1つの浮 動小数点命令によってひき起こされた実行トラップよりも早く検出された実行ト ラップを結果としてもたらした可能性がある。しかしながら、より晩期に発行さ れたもののより早期に実行された命令は、より早期の命令が1つの例外を結果と してもたらした場合にマシンサイクルに先立って順序決定しながら PLSM307によ る実行トラップ順序決定の開始をひき起こし、その後 PLSM307はその処理へと切 換わることにな。かくして、実行トラップ順序決定はそれでも、あたかもその実 行トラップが実際のPC順で発生したかのごとく、より晩期に検出された実行トラ ップがより早期に検出された実行トラップに代って実際に取扱われるという結果 をもたらす。 FPEXCEPユニットについてSPARC-V9アーキテクチャという情況下 で記述してきたが、当業者であれば、浮動小数点命令の機械的実行が関与するよ うなあらゆるアーキテクチャのためにこれを実施することができる、ということ も理解できるだろう。C.プロセッサをより早期の状態にバックトラッキングすることによる回復 ウォッチポイント304 が誤予測命令を検出した時点、又は DFB62内で実行例外 が発生し、PSU300内の実行例外(etrap)をトリガーした時点で、CPU「バックトラ ック」が開始される。プロセッサをバックトラッキングすることには、以下でよ り詳細に説明する通り、プロセッサバックアップ及び/又はプロセッサバックス テップが含まれる可能性がある。1つのマシンサイクル中、1つ以上の誤予測及 び実行例外が発生し得る。典型的な CPU51においては、全ての機械的に実行され た制御転送命令(例えば、予測された分岐命令)がチェックポイントされる。こ のような誤予測された命令はつねに「チェックポイント境界」に存在する。チェ ックポイント済みの誤予測命令からの回復は、発行時点における誤予測命令に対 応するチェックポイントの中に記憶されたマシン状態を回復することによって達 成できる。実行例外は、誤予測とは異なり、全ての命令がチェックポイントされ るわけではないことから、チェックポイント済み命令に対応しないかもしれない 。一般に、実行例外を生成する命令が、あらゆる「命令境界」に存在し得る。1 つのチェックポイント境界は、機械的に発行された制御転送命令についてのみ1 つの命令境界に対応する。機械的に発行された命令の全てがチェックポイント形 成を要求するわけではなく、むしろPC不連続性を作り出すような機械的制御転送 命令だけである(ただし、制御転送命令がマシン「同期化」命令として選択され 、本書に記述のとおり選択的にチェックポイントされる場合は除く)ということ を思い出して頂きたい。 従って CPU51がバックトラックされる要領は、回復を開始した条件及び誤予測又 は例外がチェックポイントされた命令に対応しているか否かによって左右される 。 本書で使用される「バックアップ」という語は、チェックポイントの中に以前 に記憶されたマシン状態を回復することによってチェックポイント境界において マシン状態を回復し、次に CPU51命令の発行及び実行を再開するべく適切な行動 をとるための構造及び方法のことを言う。本書で使用されているように、バック アップには、チェックポイントされた命令から順方向の命令のその後のin-order 再発行及び再実行が関与していてもいなくてもよい。ここで使用される「バック ステップ」という語は、可能な場合にはバックアップと組合わせてあらゆる命令 境界でマシン状態を回復し次に CPU51命令発行及び実行を再開するべく適切な行 動をとるための構造及び方法のことを言う。 実行トラップ(etraps)に遭遇した場合、マシンは、その精確な状態を保存す るため障害発生命令までバックトラックする。チェックポイント境界上に存在す る誤予測と異なり、etrapsは、障害発生命令に達するべくバックステップ、バッ クアップ又はその両方の組合わせを必要とする。オペレーションの実行の必要性 以外にはバックステップ又はバックアップオペレーションの順序付け又は頻度に はいかなる制約条件もない。組合わせて用いられた場合、マシンのバックアップ 及びバックステップは、該予測及び実行例外からの効率の良い回復方法を提供し 、しかも或る種の状況下では、有利にも、例外をひき起こす命令又はチェックポ イント済み命令と障害発生命令の間の命令の再実行を強制することなく、これを 行なうことができる。 プロセッサのフローの中に変化があった場合(例えば、Bcc,FBc c,jumpl及び同様の命令)にはつねに、チェックポイントが割振られる。典型的 な CPU51は、割当てのために最高16のチェックポイントが利用可能な状態にある 。バックアップはマシン状態をチェックポイント境界へ回復するために行なわれ る。あらゆる命令境界にマシン状態を回復するためにバックステップが行なわれ る。典型的なマシンは、利用可能なハードウェアによりリサイクルあたり最高4 つの命令をバックステップすることに制限される。バックアップはマシン状態を 回復するための粗いが迅速なバックトラッキング機構を提供し、バックステップ は、細かい命令境界においてマシン状態を回復するための機構を提供する。マシ ンは、バックアップ又はバックステップのあらゆる組合せを通して、より早期の 状態までバックトラックすることができる。 発明力あるバックアップ手順と合わせて発明力あるバックステップ手順を用い て精確な状態回復を実現するためには、2つの規則を遵守しなければならない。 まず第1に、命令ストリーム内で、アーキテクチャ制御レジスタを修正し得る命 令に遭遇した場合、CPU51が、命令の実行に先出ち同期化されなくてはならない か、又はマシンがその命令をチェックポイントしなくてはならない。この第1の 規則が遵守された場合、バックステッピングは、いかなるアーキテクチャ制御レ ジスタの修正も更新も決して要求しない。第2に、プログラムカウンタの不連続 性を作り出す可能性のある全ての命令は、チェックポイントされなくてはならな い。この第2の規則が遵守された場合、バックステッピングには、PCをバックス テップ数だけ減分し、より早期の対応するプログラムカウンタで割当てられるに つれてマシン資源(RRF302内に維持された資源を含む)を回復することが関与す る。 PSU300内に機械的に位置設定されたバックトラックユニット(BK TR)305が、適正な CPU51の機能及び回復に必要とされるようなマシンバックア ップ及びバックステップを実施することを担当する。図40に示されている通り、 BKTR305は、マシンバックアップ、単数又は複数のマシンバックステップ又はバ ックアップとバックステップの組合わせのいずれか誤予測及び例外からの CPU51 の回復にとって適しているかを決定することを担当するバックトラック制御ユニ ット(BTCN)401 を含んでいる。BTCN401は、DFB62内の各々との実行ユニット及 びウォッチポイント304 からSN、エラー及び状況情報を受理する。バックアップ ユニット(BKUP)402 は、マシンバックアップを開始し順序決定することを担当 し、バックステップユニット(BKST)403 はマシンバックステップを開始し順序 決定することを担当する。CPU51は、命令発行を停止し、例外又は誤予測をひき 起こす命令に適する通りバックアップ及びバックステップを用いてバックトラッ クしなくてはならない。バックステップを用いて CPU61をバックアップするため 及びマシンをバックステップするための構造及び方法について以下でさらに詳し く記述する。1.チェックポイント境界へのプロセッサのバックアップ マシンバックアップは、(1)PSU300内のPLSM307がRED M odeへのエントリを試みたとき、又は(2)ウオッチポイント304が誤予測 命令(mispredicted instruction)を検出したときに起動される。また、(3) DFB62から障害命令(faulting instruction)(実行例外(execution exce ption)、即ちe−トラップが検出されたときは、マシンのバックアップが起動 される場合もあり、そうでない場合もある。バックアップ手続きは、バックアッ プのために実行されたチェックポイント命令(checkpointed instruction)の選 択を含めて、バックアップを起動する理由によって異なる。実行例外の原因とな る障害命令がチェックポイ ント境界に一致しない場合には、バックステップがバックアップに続いて行われ る。 各マシンサイクル毎に、バックアップユニット(BKUP)402は、データ フォワードバスに関する命令の実行状態を示す情報ERR_STATをDFB6 2から受信すると共に、ウオッチポイント304からは誤予測命令に関する情報 を受信する。これらの信号は、命令のシリアル番号(SN)、必要に応じてマシ ンのバックアックを命ずるチェックポイント、エラー発生の有無に関する指示、 及びエラー形式に関する指示(例えば、据置(deferred)、データ中断、浮動小 数点動作等)を識別する。FXAGUが乗算又は除算処理を行わない場合には、 その実行ユニットからのERR_STAT信号は、一般にエラ一情報は与えず、 ERR_STAT信号中の命令のシリアル番号SN及びチェックポイント番号に 関する情報を与える。チェックポイントは、発せられる全ての命令に対して形成 されるものではないが、各命令にはその発生時点で、バックアップチェックポイ ントに割り当てられる。このチェックポイントは、命令発生以前にPSU300 内のICRU301によって割り当てられ、命令発生時にはISU200によっ て命令と組み合わされ、ISU200によって演算コード(op−code)及 び命令のシリアル番号と共にDFB 62に送られ、実行ユニットの待ち行列の一つ に記憶される(例えば、バックアップチェックポイントは、チェックポイントフ ィールド614に記憶される。図22参照)。従って、命令実行が完結すると、 シリアル番号及びチェックポイント番号は直ちに、実行ユニット(例えば、FX U、FPU、FXAGU、又はLSU)内で利用可能な状態となる。2.誤予測命令、RED Mode、及び実行トラップ起動によるバックアップ 誤予測命令がウオッチポイント304によって検出さたとき、又はRED M odeへのエントリが行わたときは何時でも、BKUP402によってバックア ップサイクルが起動され、実行例外からの回復が行われる。この実行例外からの 回復はバックステップだけ、又はバックアップだけ、或いはバックアップと1以 上のバックステップとの組合せを必要とする。BKUP402はチェックポイン ト・ベクトル・ロジックユニットを含み、このユニットは各サイクル毎に、DF B62及びウオッチポイント304から受け取る命令の実行状態に関する情報を 評価し、どの命令が誤って予測されたか、又はどの命令が実行例外を起こしたか を決定する。典型的なCPUでは、ロジックユニット404は、DFB62又は ウオッチポイント304から受けた各チェックポイントに関して“OR”即ち論 理和を取る。最早チェックポイント選択ロジック405は、どのチェックポイン トが最早かを決定し、後の障害命令に対応するe−トラップが、既に強制終了さ せたロジック404によって識別されたチェックポイントへのバックアップを起 動しないようにする。BKUP402は、どのチェックポイント番号をバックア ップに使うかを決定する際に、誤予測及び実行例外を考慮する。 マシンは、誤予測命令が最早チェックポイントであるときには、誤予測命令チ ェックポイント間で戻される。RED Mode起動のバックアップに関しては 、マシンはコミットしたシリアル番号(CSN)に最も近く、それよりは大きい (A−リング循環の意味で)チェックポイントへ戻される。また、実行例外に関 しては、チェックポイントの選択はより複雑であって、実行例外の性質に依存す る。 実行例外(e−トラップ)起動のバックアップの場合、据置及び非据置トラッ プによって、異なったバックアップチェックポイント 番号の計算が必要になる。通常の非据置トラップに関しては、もしISNがチェ ックポイントn+1を越えて移動したとき、チェックポイントnの命令iが障害 命令であれば、マシンはISNからチェックポイントn+1、即ち障害命令の後 のチェエクポイントまで戻される。もし、チェックポイントn+1がアクティブ でもなく又は有効なチェックポイントでもなければ、チェックポイントを要求す る命令は発せられず、又は時間切れチェックポイントも形成されないから、バッ クアップは行われない。その代わり、障害命令がチェックポイント直後のシリア ル番号スロットになければ、ISNから障害命令に後退するバックステップだけ を使う回復が適当である。例えば、チェックポイントmがシリアル番号SN=1 0を持つように割り当てられ、その時スロットSN=11にある命令が障害命令 であれば、チックポイントm+1へバックアップの代わりに、チェックポイント mへのバックアップが起動される。即ち、マシンは障害命令以前のチェックポイ ントまで戻される。 実行されたチェックポイント命令が投機的分岐又はその他の制御転送命令に対 応している場合には、実行されたチェックポイント命令と次の命令との間に、プ ログラムカウンタの不連続点が存在することになる。典型的なバックステップ動 作は、プログラムカウンタの不連続点を越えて実行されることはなく、単一プロ グラム命令のシリアル番号差があるだけにも拘わらず使用することは出来ない。 この状態では、バックアップ動作によってのみ、プログラムカウンタとマシン状 態を適切に回復することができる。 据置トラップは、非据置トラップとは異なるバックアップ・デスティネーショ ン計算を必要とする。例えば、チェックポイントmがシリアル番号SN=10を 持つように割り当てられ、その時SN=11にある命令が障害命令であって、据 置トラップを発生すれば、 ISNはトラッピング命令に先立つ命令よりはむしろトラッピング命令を指定す るから、マシンはチェックポイントmの代わりにチェックポイントm+1(もし 在れば)まで戻される。もし、その時チェックポイントm+1がなければ、バッ クアップは起動されない。その代わり、正確な状態は、マシンのバックステップ だけを用いて回復される。表10は、チェックポイント番号及び障害命令のシリ アル番号に関する幾つかを条件として行った据置及び非据置トラップに対するバ ックアップ作用の概略を示す表である。 バックトラック305が、マシンバックアップによって影響を受けるCPU5 1にバックアップが生じていることを知らせる信号と、この影響を受けるCPU 51の各要素にバックアップに使用するチェックポイント番号を知らせる4ビッ トのデータ信号とから成る信号(DO_BAKUP)をアサートしたとき、プロ セッサの状態は実行されたチェックポイントのシリアル番号に於いて回復される 。実行されたチェックポイントの状態は、マシンに局部的に記憶されるから、C PU51の各々は、DO_BAKUP信号に応答して影響を受けたユニット内の 記憶領域から状態を“回復”しなければならない。 実行されたチェックポイントに於ける状態の記憶、保持、回復を受け持つCP U51のユニット、同様にバックアップ動作を順序づけるCPU51のユニット (特にPSU300内のユニット)は、DO_BAKUP信号を受信し、かつそ れに応答する。RRF302はDO_BAKSTEP信号を受信するが、DO_ BAKUP信号は受信しないことに注意されたい。これは、RRFがCPU51 をバックアップによってではなく、ステップ毎に状態を回復するのに直接必要と されるからである。 更に明確に言えば、図6に於いて、チェックポイント記憶ユニット106は、 DO_BAKUP信号によって特定されるチェックポイント番号に対応するエン トリ時に、其処に記憶された実行されたチェックポイントのAPC及びNAPC の値を、CHKPT_PC 及びCHKPT_NPC信号の形で出力する。これらの値はAPC及びNAPC のレジスタ112、113に記憶される。同様に、制御レジスタチェックポイン ト記憶ユニット817は、DO_BAKUP信号によって特定されるチェックポ イントに関して実行された制御レジスタの内容を、CHKPT_CNTRL_R EG信号の形で出力し、これら内容は図17に図示の制御レジスタファイル80 0中の対応する制御レジスタNORD/WR更新ロジックによって記憶される。 更に、図16に於いて、FXRFRN604、CCRFRN601、及びFPR FRN605各々のチェックポイント記憶ユニット616は、DO_BAKUP 信号によって特定されるチェックポイントに関して実行されたチェックポイント のリネイムマップを、CHKPT_MAPの形の信号で出力する。この実行され たチェックポイントのリネイムマップは、制御ロジック613によってリネイム マッピングロジック615に戻して記憶される。更に、フリーリストユニット7 00は、FXRFRN604、CCRFRN601、及びFPRFRN605各 々の物理的レジスタの実行されたチェックポイントのフリーリストを、CHKP T_FREELIST信号の形で出力し、この信号はフリーリストロジック70 1に記憶される。 典型的なCPU51では、e−トラップがまだ続いているときでも、バックア ップは起動される。e−トラップ例外処理は多重サイクルを必要とするから、マ シンが同期(ISN=CSN=RRP)され、トラップを取って処理する以前に 、一つ以上のe−トラップをDFB62がアサートすることは可能である。典型 的なCPU51の一実施例では、スロット0及び1の各々に関するDFB62か らのエラー及び状態信号(ERR_STAT)の各々は、1ビットエラー信号、 6ビットのシリアル番号信号(FX_SN、FP_S N、LS_SN、及びFXAG_SN)、及び各命令毎に適当なバックアップチ ェックポイントを計算するのに使用される16ビットの1−ホット・チェックポ イント・ベクトル(FXDF_CHKPNT、FPDF_CHKPNT、FXD F_CHKPNT、LSDF_CHKPNT)からなっている。更に、誤予測命 令に関する情報信号WP_MISPREDは1−ホットベクトルであって、其処 でのビットiのアサートは、i番目のチェックポイントが誤予測命令に対応し、 バックアップを必要としたことを示す。チェックポイントベクトルロジックユニ ット404は、スロット0及び1の各々からの16ビットの1−ホットチェック ポイントベクトルの全てについて、累積的に論理和を取る。この動作はマシンが ベクトルをトラップテーブルにするまで続けられる。論理和を取ったチェックポ イントベクトルは、最早チェックポイントを決める最早チェックポイント選択ロ ジック405に供給される。たとえ、後の命令に対応して実行例外が生じても、 前のバックアップによって既に強制終了したチェックポイントへのバックアップ は起動されない。典型的なCPU51では、ウオッチポイント誤予測信号(WP _MISPRED)は16ビットの1−ホットベクトルで、其処でのビットiの アサートは、i番目のチェックポイントが誤予測命令に対応し、バックアップを 必要としたことを示す。3.何れかの命令境界へのプロセッサのバックステップ マシンバックステップはDFB62に於ける障害命令から発生された実行例外 (e−トラップ)の結果としてのみ起動される。マシンバックステップはマシン バックアップとの組合せで起こることが多いが、バックアップを起動しなくても 起動される。 バックステップユニット(BKST)403はバックステップの実施を受け持 っている。マシンの“バックステップ”はDFB62 に於ける障害命令から発生するe−トラップの結果として起こるだけである。バ ックステップが実施されると、2つの事象がマシンに起こる。第1に、未決命令 が強制終了されるため、資源は回復されて利用可能になる。これら資源にはシリ アル番号、チェックポイント、ウオッチポイント、及び割り当てられた物理的レ ジスタ及び論理レジスタが含まれる。第2に、ISNはバックステップ動作中減 分するが、CSN及びRRPを下回って減分することはない。障害命令は依然と してそのアクティブビットをA−リングセット中に有していて、それによってC SN及びRRPの送り(advancement)を抑えている。障害命令がエラーを起こ さずに首尾良く実行されたときだけ、その命令に対応するA−リングビットがク リアされる。(据置トラップを上手く扱った時に、A−ビット(及びB−ビット )はクリアとなって、CSN(及びNMCSN)の送り及び資源の最終回復を許 容することを除く)。 マシンバックステップ動作は、バックステップ始動制御信号(BACKSTE P_LAUNCH)及びバックステップに使用したい命令のバックステップシリ アル番号を識別するPLSM307からのバックステップシリアル番号識別信号 (BACKSTEP_TO_SN)によってBKST403に於いて開始される 。これに応じて、BKST403は、バックトラック305がバックステップモ ードを開始していることをICRU301及び他のCPU512知らせるバック ステップ通知信号(DO_BAKSTEP)を発生することによってバックステ ップ手続きを順次実施する。BKST403は、バックステップを終えた命令番 号のカウントを識別し、PLSM307によるタスクを果たすために起動するこ とが可能な周辺制御装置として見ることができる信号を発生する。BKST70 3はPLSMの要求に応じてタスクを開始し、タスクを果たし終え た時には、タスクの終了をPLSMに指示して、次の要求に待って待機する。 BKST403は2つの条件形式に関するバックステップを扱う。その第1の 形式は非据置e−トラップである。非据置e−トラップは、据置トラップ信号が PLSM307によってアサートされず(ISA_DEFERRED_TRAP =0)、かつバックステップ開始制御信号が、据置トラップではないe−トラッ プを示す信号(BACKSTEP_LAUNCH=1)であるとアサートされて いる場合に起動される。この場合、バックステップ量はバックステップされるシ リアル番号(BACKSTEP_SN)と次ぎに発せされるシリアル番号(NI SN)との差を決めるBKST403で計算される。発せられた命令のシリアル 番号(ISN)ではなく、次ぎに発せられるシリアル番号(NISN)を使用す ることによって、マシンは障害命令直前の命令まで戻る。このバックステップ量 は、CPU51内の記憶領域に保存され、障害命令の前の命令に到達するまで減 分される。 第2のバックステップ条件は据置e−トラップを含んでいる。据置e−トラッ プは、据置トラップ信号がPLSM307によってアサートされてる信号であっ て(ISA_DEFERRED_TRAP=1)、かつバックステップ開始制御 信号が、据置トラップであるe−トラップを示す信号(BACKSTEP_LA UNCH=1)であることをアサートしている場合に起動される。この場合、バ ックステップ量はバックステップされるシリアル番号(BACKSTEP_SN )と、発せされるシリアル番号(NISN)との差を決めるBKST403で計 算される。此処でマシンは障害命令の前の命令ではなく、障害命令にバックステ ップされる。計算されたバックステップ量は、通常の非据置バックステップより 小さい。 典型的なCPU51では、4つの命令の内の最大のものが、各マシンサイクル に関してバックステップされる。従って、4つまでの命令の多重バックステップ はそれぞれ行き先(バックステップの)命令に到達する。一般に、シングルサイ クルに関してバックステップ命令の数を限定する必要はない。典型的な実施例に 於けるもう一歩進めた限定は、PCをバックステップ量だけISN(又はNIS N)から減じても、適当な状態回復とはならないから、バックステップ方法はプ ログラムカウンタの不連続の原因となる命令に関するバックステップをサポート するものではない言うことでる。 “IDLE”及び“BACKSTEP”と言う2つの状態からなる簡単なマシ ン状態は、バックステップを順次実施するのに使用される。IDLE状態にある 間の“BACKSTEP_LAUNCH”アサートは、BACKSTEP状態へ の遷移となる。また、BACKSTEP状態にある間にDO_BACKSTEP がアサートされると、2つの終了条件が評価される。これら2つの条件の何れか が,BACKSTEPを終了させ、IDLEに戻す。 バックステップ中に於けるCPU51の状態回復には、マシンレジスタ資源を 更新すること、及びプログラムカウンタをバックステップ量だけ減分することだ けが含まれる。上記のように、構成上の制御レジスタを修正する命令は、マシン を同期するか、チェックポイントを実行するから、バックステップ中に構成制御 レジスタの回復を必要としない。典型的なCPU51では、以下のマシン状態は バックステップ中に更新される。即ち、プログラムカウンタ(PC)、次のPC 、RRFに記憶された情報、及びリネイムマップに記憶された情報が更新される 。トラップPC、トラップRRF、及びBRB59の特権レジスタを含むその他 の制御レジスタは、バックステップ動作によって修正も更新もされない。マシン の資源は、レ ジスタリクレームフォーマットファイル(RRF)302に記憶されたロジカル −ツウ−オールド−フィジカルマッピングに関連するレジスタファイルから回復 される。バックステップ通知信号(DO_BACKSTEP)がアサートされる と、ICRU301、RRF302、及び他のCPU512は、バックステップ モードが起動されていることが通知される。バックステップに於いて、各バック ステップサイクル中に回復及び記憶されるRRF302アイテム数は、バックス テップカウント信号によって示されるバックステップされる命令の数に等しい。 従って、これらの状態の記憶、保持、及び回復を果たすCPU51は、バック ステップ動作を順次果たすCPU51(特にPSU300内の)と共に、BRB 59、ISB61、及びDFR62内のユニットを含めて、バックステップ信号 を受信し、それに応答する。RRF320は、CPU51をバックステップさせ て、バックアップではなくステップ毎にそれを回復することだけに直接関与する から、DO_BACKSTEP信号を受信するがDO_BACKUP信号は受信 しない。 レジスタリクレームフォーマットユニット302は、バックステップをアサー トした信号(DO_BACKSTEP)に応答し、リクレームされて回復される RRFアイテムの数は、DO_BACKUP信号内のバックアップステップカウ ント数に等しい。RRFは、ロジカル−ツウ−オールド−フィジカルマップ、即 ちソース又は行き先データ値を保持するロジカル−ツウ−オールド−フィジカル レジスタの割当を含んでいる。RRF302の命令に割り当てられたレジスタ資 源、又はレジスタマップの何れもCSN又はRRPを進めることによってフリー リスト700へは自由に戻れないから、レジスタの実際のデータは妨害されない 。RRFは、バックステッ プした命令をもと実行したきと同じ関係で、フィジカルレジスタ(オールドフィ ジカルレジスタ)をロジカルレジスタを再度組み合わせる。レジスタマッピング を一つずつ回復することによって、各命令のレジスタ状態が回復される。要する に、レジスタ資源から見れば、マシンはバックステップ動作中後退する。図18 はRRFノブロック図である。図14は、ロジカル−フィジカルマッピングが、 レジスタリネイムファイルFXFRN、CCFRN、FCCFRN及びFPFR Nに回復される仕方を示す図である。 RRFの典型的な実施例では、幾つかの情報(LOG_OPHYS_TAGS )を含むロジカル−オールドフィジカルレジスタ情報は、データ保存構造又はユ ニット366の何れかに保存のため、読み/書き制御ユニット365にまとめら れている。回復のためRRFをレジスタリネイムマップに読み出すとき、RRF データは回復のためにもとのフォーマットに戻される。本願の教示から当業者は 、種々の保存フォーマット及びデータのまとめ/解き方の手順をRRFデータに 適用して保存領域を最小化し得ることが分かるだろう。 特に、バックステップが行われているとき、読み/書きロジック365は、保 存ユニット366を制御して、DO_BACKST信号によって識別される命令 に対応するロジカル−オールドフィジカルレジスタ・タグ・マッピングをLOG _OPHYS_TAGS_BKST信号の形で出力する。図8、16、18、及 び39に於いて、ロジカル−オールドフィジカルレジスタ・タグ・マッピングは 、FXRFRN640、FPRFRN606、及びCCRFRN610に復元さ れる。図16に示すように、DO_BACKST信号に応答する制御ロジック6 13は、これらのマッピングをリネームマッピングロジック615に復元する。 更に練られたバックステップ計画は追加情報を維持することによって実施され る。しかし、本願発明による方法では、プログラムカウンタの値は基本ブロック 内の命令に対応する。即ちバックステップされる命令の間にはプログラムカウン タの中には不連続が存在しないから、方法は簡素化される。バックステップユニ ット403は単に実行された滅入れのシリアル番号からのバックステップ数、又 はバックアップなしにバックステップを用いられたときの現在のISNからバッ クステップ数を信号で合図する。もし、プログラムの不連続があれば、それらプ ログラムカウンタの減分は、必ずしも適当な回復とはならない。しかし、本願に 含まれている教示にから当業者は、より複雑なバックステップ技術を用いること によって、プログラムカウンタの不連続が許容されることが分かるであろう。 2つのバックトラック機構、即ちマシンバックアップ及びマシンバックステッ プは、投機的命令の続発を取り消す効果的な方法及び構成でるプリサイス・ステ ート・ユニット(Precise State Unit)を提供する。マシンバックアップは、プリ サイス・ステート・ユニットがCPU51をアクティブチェックポイント境界に 対応する状態にすることを可能にする。マシンバックステップは、プリサイス・ ステート・ユニットがCPU51をチェックポイント境界の間の特定の命令境界 にバックトラックすることを可能にする。バックアップは、マシン状態回復のた めの粗いけれども早い方法及び構成を提供し、バックステップはマシン状態回復 のための正確だが遅い方法及び構成を提供する。図41は何れの命令境界に於い ても、正確な状態を保持し、回復するための本発明による実施例の流れ図を示す 。図42はロジカル−フィジカルマッピングを、レジスターリネームファイルに 復元する方法を示す図である。 図43は2つのバックステップを伴うマシンバックアップの例を 示す図である。バックステップは一度の幾つかの命令を、単一ステップ又は多重 ステップとして実行できる。この例では、CPU51は命令障害が検出された時 点で、ポインタISNに対応する命令を既に発している。マシンは障害命令の後 の最も近いチェックポイントにマシンを戻すことによって応答する。このもっと 近いチェックポイントとISNとの間の命令は強制終了させられる。4つの命令 の量による第1のバックステップは、それらの命令を発している間、4つの命令 (第1バックステップ参照)に関わる全ての資源を再生することによって、マシ ンを障害命令に更に近づける。次いで、3つの命令量による第2(及び最終)バ ックステップは、それら残りの命令(第2バックステップ領域参照)に関わる全 ての資源を再生することによって、障害命令の直前にマシンを持ってくる。 チェックポイントまでの戻りは早いが、チェックポイントを回復するのに多く のマシン資源が必要になる。誤予測命令は全て、チェックポイントが作られる要 因となるから、状態はワンステップで誤予測命令に戻される。バックステッピン グはバックアップより遅いが、本発明のバックステップ手続きはマシン状態を、 障害命令前のチェックポイントに於ける状態にではなく、特定命令の実行点に在 ったときの状態に戻す。そして、本発明のバックステップ構成及び方法によって 、マシンは従来の方法によるように、チェックポイントの前のチェックポイント へ行き、それから障害命令にバックステップするのではなく、障害命令の後のチ ェックポイントに戻ることが出来る。D.例外及び誤予測回復時に於ける優先ロジック及び状態マシン動作 図44はCPU51内に機能的に置かれた典型的な優先ロジック及び状態マシ ン(PLSM)307を示す。PLMSは幾つかの役 割を持っている。第1に、未処理又は並行例外群の最早の例外を識別する役割を 果たす。例外条件には、RED Mode、発行トラップ(i−traps)、 実行トラップ(e−traps)、割り込み、及び誤予測が含まれる。第2には 、マシンサイクル中に到着する例外及び誤予測を、相互間で、また並行処理され る例外及び処理待ちのものの間の優先順位を決める役割をは果たす。第3に、形 式の異なる例外及び誤予測間の可能な状態遷移を決定する役割を果たす。第4に は、Backtracking(Backupそして/又はBackstep) 、REDモード処理を起動する制御信号を発する役割を果たす。 命令の発行又は実行中に起こる種々の形式の例外について、PLSM307に よる例外及び誤予測の優先順位付け及び扱いがよく分かるように説明する。RE Dトラップは、種々の条件下で起こり、全てのトラップの中で最も高い優先順位 を有する非同期トラップである。RED Modeは、SPARC V−9 ア ーキテクチャーマニュアルに説明されている。i−trapsは命令発行時にI SU200によって発生される発行トラップである。これらは、何れのレジスタ スピル/フィル(spill/fill)トラップ、何れのトラップ命令(TA、Tcc)、 命令アクセスエラー、違法命令、特権演算コード等を含んでいる。一般に、発行 トラップは、取り扱いに関して低い優先順位にある割り込みに較べれば、高い優 先順位にある。信号を送られるその他の全てのとラップ(誤予測、e−トラップ 又はredトラップ)は、一時的には発行命令よりは早い命令に向けられる。 e−trapsはデータフォワードバスの一つから信号を送られる実行トラッ プである。実行トラップは、SN順に他の実行トラップに対して優先順位を付け なければならない。これは、実行トラッ プは必ずしもチェックポイント境界で発生するとは限らず、また障害命令に達す るにはバックステップが必要になる場合が在るからである。もし、マシンが障害 命令に達するためにバックアップを実施すれば、何れかの新たな例外がより早い 命令に向けられる。もし、実行トラップが順次実施されていれば、何れか新たな 誤予測がより高位の優先順位となる。これは、誤予測命令は常にそれが利用し得 るチェックポイントを有しているからである。もし、PSU300が必ずしも何 れかの例外を実施していなければ、実行トラップ及び誤予測は、それぞれ他に対 して優先順位が付けられていなければならない。割り込みは、非同期トラップの もう一つの形である。割り込みは他の全ての例外より下位の優先順位にある。 投機的に発した転送制御命令が誤予測であることをウオッチポイントが検出し たとき、ウオッチポイントユニット304は誤予測に信号を送る。もし、何れか の非RED例外が順次実行されていれば、誤予測は常にチェックポイント境界上 にあって、一時的に早い命令に対して起こるから、優先順位を付ける必要はない 。もし、例外が実施されていなければ、誤予測は割り込み及び発行トラップより 高位の優先順位を持つが、実行トラップに対しては優先順位を付けなければなら ない。 最早シリアル番号選択ロジックユニット(ESNSL)481は、DFB62 の各実行ユニットから、実行完了した命令のシリアル番号及び実行中に例外が起 こったかどうかに関する情報、及びもし起こっていたら、その例外の形に関する 情報を含む状態情報を受けると共に、ウオッチングユニット304からはそのサ イクル中に起きた何れかの誤予測を示す信号(WP_MISPREDICT)を 受け、更に現在のISNを受け、また更にESNSL481からは、最終マシン サイクル(CURR_EARLIEST_SN)から の新たな例外情報を受け取る前の現マシンサイクルで処理された例外のSNをを 示す帰還信号を受け取る。各実行ユニットからの信号はERR_STATを含ん でいる。例えば、もし64ロケイションA−リング312の命令SN=10及び SN56に対して例外が生じれは、最早例外はISNの値を知ることなしには決 めることは出来ない。もし、ISN=40なら、SN=56が最早例外となる。 しかし、もしISN=6なら、SN=10が最早例外となる。 ESNSLU481は、最早例外及び誤予測を優先順位及び実行スイッチング ロジック(PESL)ユニット482に知らせて、PESLが最早SN基準及び 例外の形に基づいて例外及び誤予測処理に優先順位を付けることが出来るように する。また、PESLはISU200から発行トラップ信号(ISU_ITRA P)及び割り込み信号(ISU_INTERRUPT_PEND)を受信すると 共に、Backtrackがチェックポイント情報の比較に基づいて誤予測が実 行トラップより早く生じたことを決定きる場合には、Backtrackユニッ ト305からMISPREDICTED_EARLIER信号を受信する。また 、PESLは状態マシン及び制御ロジック(SMCL)483から状態信号を受 信する。SMCLは状態マシン484及び例外制御信号発生ロジック484を含 み、現在処理している例外(例えば、実行トラップ、発行トラップ、RED等) があればその形を識別する。例外の状態は状態マシン484に記憶される。PE SL482はこれらの入力を現在及び未決の例外の優先順位を決めるのに使用し 、現在実施中のマシンサイクルのための新たな例外に形を識別する信号(NEW _EXCEPTION_TYPE)を発生する。 例外制御信号発生ロジック484は、DPU51内の他のユニットにCPUの 状態を知らせると共に、場合によっては、状態に応じ て他のCPUユニットにアクションを取らせる信号を発生する役割を持っている 。更に明確に言えば、ECSIGはTAKE_TRAP信号を発生し、それをト ラップが行われる制御部分及びトラップの種類を含むトラップスタックユニット に送る。このトラップスタックユニットはDEFERRED_TRAP_INC を、据置トラップが起きたかどうかを示すICRU301に送り、例外を越えて 一つだけCSN及びNMCSNを進ませる。また、ECSIGはBacktra cKに対して、どの命令SNにバックステップするか(BACKSTEP_TO _SN)、REDモード例外があるか、そしてREDモード例外の場合にはどの 命令にバックアップするか(BACKUP_RED)を告げる幾つの信号をバッ クトラックユニット305に送る。また、ECSIG484は命令強制終了信号 をDFB62(KILL_ALL)及びISU200(ISSUE_KILL) に送り、DFB62に対しては、実行待ち行列中の命令の実行を強制終了するよ うに指示し、ISUに対しては、そのマシンサイクル中に扱われている例外又は 誤予測に適当な命令の発行を中止するように指示する。 PLSM307はトラップを探知して5つの異なる形、即ち割り込み、レッド トラップ、発行トラップ、実行トラップ、誤予測に区分する。どの例外が現在順 次処理されているかによって、検知される他の例外は高い優先順位を持っている か、そうでない場合もある。もし、新たな例外が高い優先順位を持っていれば、 PESL482はSMCL483に対し現在の例外を順次処理することから新た な高い優先順位の例外又は誤予測にスイッチするように指示する。状態マシン4 84に於けるこれらの状態遷移は、現在の例外の形、即ち新たなエラーがウオッ チポイント、ISU、又は6つのデータフォワードバスの何れから報告されたか 、及び新たな例外が現在の ものより一時的に早いかどうかによる。 可能な状態遷移は以下のようにして起こる。RED−Noトラップ形は状態R EDからの遷移を強制する。ITRAP−3トラップ形(誤予測、実行トラップ 、REDOアラート)は他の一つの状態への遷移を強制できるが、割り込みは遷 移を強制しない。ETRAP−Redアラート及び誤予測は遷移を強制し、常に 高い優先順位を有し、他の実行トラップは優先順位化を必要とし、割り込みは低 い優先順位を有し、マシンはマシン同期のためバックアップ又は待機状態の何れ かにあり、発行トラップを発する命令は発せられないから、発行トラップは不可 能である。INTERRUPT−全トラップ形は高い優先順位を有し、遷移を強 制することが出来る。MISPREDICT−3トラップ形(誤予測、事項とラ ップ、レッドアラート)は高い優先順位を有し、優先順位付けを必要とせず、張 り込みは低い優先順位を有し、命令発行は誤予測処理ちゅう強制終了させられて いるので、発行トラップは起こらない。IDLE−Redトラップは最高優先順 位を有し、同時誤予測及び実行トラップが、チェックポイントの比較に基づいて 誤予測が早く起きたか、実行トラップが早かったかの決定が行われるBACKU Pへの遷移に帰着する4つの形の一つを伴う。Backtrackは優先順位よ り早く決定が出来るから、優先順位化に基づいたチェックポイントに対する据置 は好ましい。しかし、優先順位化はPSLMに於いて実行が可能である。最後に 、発行トラップ、次いで割り込みが順次処理される。E.トラップ・スタックによるトラップの処理 先に示した如く、トラップは図5の命令パイプライン内で幾度も生じ、且つ、 トラップ処理ルーチンにより処理されねばならない(即ち、受入れられねばなら ない)。図17を参照すると、トラップ を受入れるべき例外をPSU 300 が既述の手法で検知すると、PLSM 307はTAKE_TRA P 信号を生成し、これにより、制御レジスタファイル800 にトラップを受入れさ せると共に、受入れられるべきトラップのタイプを識別する。これに応じ、リー ド/ライト/更新ロジック816 はTBA レジスタ812 から対応トラップベクトル(T RAP_VEC)信号を読み出してこれをBRB 59に送る。図6を参照すると、PCロジック 106 はTRAP_VEC信号を使用して新たなFPC、APC およびNAPCを算出し、これによ り、対応トラップ処理ルーチンの命令を取り出して出力する。 トラップ処理ルーチン内で生じたトラップがSPARC-V9アーキテクチャにより特 定された如きネスト手法(即ち、受入れられたトラップの内部でトラップが受入 れられる手法)で処理される様に、制御レジスタファイル800 は図17に示され たトラップスタックユニット815 を含んでいる。このトラップスタックユニット 815 は図45に更に詳細に示されているが、該ユニットは、記憶エレメントもし くは記憶エントリを備えたデータ記憶構造であるトラップスタック820 を含んで いる。 記憶エントリの各々は4個のフィールドを有しており、これらのフィールドは SPARC-V9アーキテクチャマニュアルによれば、トラップ・プログラム・カウンタ (TPC)、トラップ・ネクスト・プログラム・カウンタ(TNPC)、トラップ・ステー ト(TSTATE)、トラップ・タイプ(TT)の各フィールドである。TPC およびTNPCフィ ールドは、トラップが受入れられる時点の、BRB 59のAPC レジスタ113 およびNA PCレジスタ114 内の夫々のAPC 値およびNAPC値を含んでいる。SPARC-V9アーキテ クチャマニュアルに記載された様に、TSTATEフィールドは、トラップが受入れら れた時点で図39に示されたCCRFRN 610内のXICCレジスタの内容と、図17に示 されたASI レジスタ808、 CWP レジスタ809 およびPSTATEレジスタ805 の内容とを含んでいる。TTフィール ドは、受入れられたトラップのタイプを識別する。 図45に再度戻ると、トラップが受入れられたとき、現在のPC、NPC、TSTATE およびTTの各値は、トラップスタック820 の記憶エントリの内のひとつの記憶エ ントリの対応フィールド内に記憶されている。受入れられたトラップのネスト数 を表示するトラップレベル(TL)は次にインクリメントされると共に、トラップ処 理ルーチンは受入れられたトラップの処理を開始する。しかし乍ら、もしトラッ プ処理ルーチンの間にトラップが生じたときには、この第2のトラップの時点に おけるPC、NPC、TSTATEおよびTTの各値は、トラップスタック820 の記憶エント リの内のもうひとつの記憶エントリの対応フィールド内に記憶される。次に、第 2トラップを処理する為に、第2のトラップ処理ルーチンが呼び出される。第2 トラップ処理ルーチンの終わりにてはDONEもしくはRETRY 命令が実行されて、第 2トラップに対する記憶エントリ内に記憶されたPC、NPC、TSTATEおよびTTの各 値が対応レジスタ内に書込まれると共にトラップレベルがデクリメントされる。 この結果、CPU 51は、第2のトラップを受入れた時点の状態に戻ると共に、第1 トラップ処理ルーチンが第1トラップの処理を再開する。その後、第1トラップ 処理ルーチンのDONEもしくはRETRY 命令が実行されたとき、CPU 51は第1トラッ プを受入れた最初の状態に戻る。 以上から、SPARC-V9アーキテクチャにより必要とされる如く、トラップスタッ クユニット815 は多数のトラップレベルを含むことにより多段階にネストされた トラップの処理をサポートすることは明らかである。但し、SPARC-V9アーキテク チャが4段階のトラップレベルをサポートすべく4個の記憶エントリを備えたト ラップスタックを指定してはいるが、上記トラップスタック820 は4段の所要の トラップレベルをサポートすべく8個の記憶エントリ0〜7を含んでいる。付加 的な4個の記憶エントリは、レジスタまたは記憶エレメントの名称変更の概念が 以下に記述する如くトラップスタックユニット815 まで拡張され、トラップが投 機的に受取られ且つそこから戻れる様になる。更に、前述の如く、記憶エントリ 数がトラップレベル数より大きい限り、本発明は任意の個数のトラップレベルに て実施され得る。 トラップスタックユニット815 はフリーリストロジック821 を含み、該ロジッ クは、各トラップと連携されたTPC、TNPC、TSTATEおよびTTの値を記憶すべく現 在使用可能なトラップスタック820 の記憶エントリの全てのリストを記憶してい る。図46を参照するに、フリーリストレジスタ822 は、各マシンサイクルの間 に、8ビットのFREELISTベクトル信号形態とされた現在使用可能な記憶エントリ のリストを記憶する。このFREELIST信号の各ビットは、トラップスタック820 の 記憶エントリのひとつに対応すると共に、その記憶エントリが現在使用可能であ るか否かを識別するものである。FREELISTベクトルにより使用可能であると識別 された最初の記憶エントリに対し、ファーストワンエンコーダ823 は次にそのベ クトルをWR_ENTRY 信号にエンコードするが、該信号は、この記憶エントリを識 別すると共に、受入れるべき次のトラップに対するTPC、TNPC、TSTATEおよびTT の各値を書込むためのポインタの役割を果たすものである。 FREELISTロジック821 はまた、オールゼロ検出器836 も含んでいる。それは、 FREELIST信号がオールゼロビットを含むことによりトラップスタック820 内の記 憶エントリはいずれも利用できないことを示す時点を決定する。もしこの場合が 生ずれば、それはNO_ENTRY_AVAIL信号を提示する。 図45を参照すると、PSU 300 によりトラップを受入れるべきことが決定され 乍らもNO_ENTRY_AVAIL信号は利用できる記憶エレメントが存在しないことを示し ているとき、それが出力したTAKE_TRAP 信号は、NO_ENTRY_AVAIL信号により記憶 エレメントが利用可能であることが示されるまで、トラップを受入れるべきこと を示さない。更に、PSU 300 はISSUE_KILL信号およびFETCH_SHUTDOWN信号を発し 、ISU 200 による命令の出力とBRB 59による命令のフェッチとを停止するが、こ れは、NO_ENTRY_AVIAL信号により記憶エントリが使用可能であることが示される まで継続される。これによれば、直ちに明らかとなる如く、CPU 51を同期するこ とによりチェックポイントが解除され且つトラップスタック820 内の記憶エント リが回復されて再利用出来るようになる、という効果が得られる。 しかし乍ら、NO_ENTRY_AVAIL信号が発せらないときにPSU 300 は制御レジスタ ファイル800 に対してTAKE_TRAP 信号を出力するが、該TAKE_TRAP 信号は前述の 如く、トラップを受入れるべきことを示す信号とトラップのタイプを識別する信 号とを含むものである。これに応じ、制御レジスタ・リード/ライト/更新ロジ ック816 は、ASI レジスタ808、CWP レジスタ809 およびPSTATEレジスタ805 の 内容を読み出してトラップスタックユニット815 のトラップスタック820 に供与 する。 これと同時に、トラップスタック820 は、該トラップスタック820 のTPC およ びTNPCフィールドに書込まれるべき現在のAPC およびNAPC値を含むWR_TPC_TNPC 信号を受信する。また、後述する様に、トラップスタック820 は、利用できる様 になったときに図8のFSR/CCRFRN 610内のXICCレジスタのXICCデータを受信する 。 TAKE_TRAP 信号に応じ、トラップスタックRD/WR 制御ロジック822 はTAKE_TRA P 信号により含まれたトラップタイプ(TT)フィール ドを抽出すると共に、それをトラップスタック820 に供与する。次に、RD/WR ロ ジック822 は、受信したAPC、NAPC、ASI、CWP、PSTATEおよびTTの各値を、WR_EN TRY信号により指示された記憶エレメントの適切なフィールド内に直ちに書込む 。更に、後述の如く、XICCデータは同一の記憶エレメントのTSTATEフィールド内 に書込まれるが、これは、論理的なXICCレジスタの内容が利用できるようになっ たときのWR_ENTRY_XICC 信号に応じて行われる。 図17を参照すると、制御レジスタRD/WR/UPDATEロジック816 は次にTLレジ スタ811 からの旧TL値を受信してそれをインクリメントする。それは次に新たな TL値をTLレジスタ811に書き戻す。 図45に示された如く、トラップ・スタック・リネーム・マッピング(RENAME MAP)・ロジック824 は、新たなTL値、および、TAKE_TRAP およびWR_ENTRY信号を 受信する。図47を参照すると、RENAME MAPロジック824 は、夫々が4個のトラ ップレベルのひとつに対応するTL1-4(トラップレベル1-4)書込マルチプレクサ82 6〜829 およびTL1-4 レジスタ830〜833 を含んでいる。新たなTL値およびTL_TRA P 信号に応じ、RENAME MAPロジック824 の制御回路825 はWR_MUX_CNTRL信号によ りTL1-4 書込マルチプレクサ826〜829 を制御し、これにより、WR_ENTRY信号は 新たなTL値により識別されるトラップレベルに対応するレジスタ内に記憶され、 且つ、その他のレジスタは以前のマシンサイクルにおいて記憶したのと同一の値 を再記憶する。 従って、レジスタのひとつに記憶されたWR_ENTRY信号により識別される記憶エ ントリは、RENAME MAPロジック824 内の新たなTL値により識別される現在のトラ ップレベルにマッピングされる。更に、他のレジスタ内に記憶された信号により 識別される記憶エントリは、以前のマシンサイクルにおけるのと同様にしてマッ ピングが維持 される。 図46を参照すると、FREELIST 821のファーストワンエンコーダ823 はTAKE_T RAP 信号も受信する。TAKE_TRAP 信号がトラップを受入れるべきことを示すとき 、ファーストワンエンコーダ823 はOR回路835 に対し、WR_ENTRY信号に対応する ビットが“0”とされた8ビット信号を送り返す。OR回路835 はまた、(図45 に示された)RRF ロジック837 からの8ビットFREE_ENTRY信号を受信するが、そ のビットは、トラップスタック820 の記憶エントリの内で前回マシンサイクルで 回復されて現在使用可能となった記憶エントリを識別するものである。バックア ップの間、OR回路835 はAND 回路836 から8ビットのBACKUP_FREELIST 信号を受 信するが、該信号のビットは、バックアップされたチェックポイントが作られた 時点において使用可能であった記憶エントリを識別するものである。ファースト ワンエンコーダ823 から受信した信号のビットは、FREE_ENTRYおよびBACKUP_FRE ELIST 信号と論理和が取られており、且つ、最終的なFREE_LIST 信号はレジスタ 822 に供与される。従って、バックアップを除けば、次のマシンサイクルにおけ るFREELIST信号は、WR_ENTRY信号内で“0”に設定されたビットに対応する記憶 エレメントはもう使用出来ないことを示している。 図7を再度参照すると、PSU 300 はTAKE_TRAP 信号を生成すると同時に、CHKP T_REQ 信号により、ISU 200 に対し、トラップ処理ルーチンから最初に発せられ た命令に対してチェックポイントを割当てることを要求する。これに応じ、ISU 20は、制御レジスタファイル800 を含め、CPU 51内の種々のブロックおよびユニ ットにDO_CHKPT信号を出力する。 図47に戻り、RENAME_MAP_1-4信号はTL1-4 レジスタ830 〜833 により出力さ れることから、夫々、トラップレベル1〜4に対応し ている。更に、これらの信号はTL1-4 レジスタ830〜833 により出力されること から、それらはトラップレベル1〜4に対する記憶エントリの現在のマッピング を与えるものである。 しかし乍ら、前述の如く、トラップが受入れられたとき、RENAME MAPロジック 824 は新たに利用し得る記憶エントリを新たなトラップレベル(TL)にマッピング する。但し、このトラップレベルに対する別の記憶エントリの旧マッピングは、 前述の如くバックアップが生ずるときには記録しておかねばならない。従って、 図48を参照すると、PRF ロジック837 は、自身がRENAME MAPロジック824 から 受信したRENAME_MAP_1-4信号からの旧マッピングを、それらが不要となるまで保 存しておく。 トラップが受入れられたとき、マルチプレクサ843 は、新たなトラップに対す るTL(即ち、旧TLは1だけインクリメントされる)に対応するRENAME_MAP信号を 出力する。換言すると、このマルチプレクサは、次回のマシンサイクルにおいて 新たなマッピングを反映するRENAME_MAP信号のみを選択する。この信号は次に、 デコーダ842 により、記憶エントリの内のいずれが新たなマッピングにより新た なトラップレベルに対して置換えられているのかを示す8ビット信号にデコード される。ここで、TAKE_TRAP 信号はトラップが受入れられつつあることを示すこ とから、デコードされた信号は、RRF ロジック837 のRRF 記憶ユニット839 に対 してAND 回路841 を介して供与される。しかし乍ら、何らのトラップも受入れら れていない場合、AND 回路841 はRRF 記憶ユニット839 に対して全てのビットが “0”に設定された8ビット信号を供与する。 RRF 記憶ユニット839 は、16個の記憶エレメントすなわちエントリを含んで いる。各記憶エントリは、前述の16個のチェックポイント番号のひとつに対応 している。従って、DO_CHKPT信号により チェックポイントが形成されるべきことが示されたとき、RRF RD/WR 制御ロジッ ク840 はAND 回路841 から受信したデータを、DO_CHKPT信号により識別されたチ ェックポイント番号に対応する記憶エントリ内に書込んでいる。 従って、RRF 837 は、トラップスタックユニット820 の各記憶エントリの不稼 働リストを保持するが、該記憶エントリは、RENAME MAPロジック824 の現在のマ ッピングによりトラップレベルの内のひとつに現在マッピングされてはいないが トラップレベルのひとつにマッピングする為には依然として使用され得ないもの である、と言うのも、トラップレベルに対するそれの旧マッピングはチェックポ イントをバックアップする場合には再記録する必要があり得るからである。この 場合、記憶エントリは不稼働リスト内に保持されるが、これは、形成されるべき チェックポイントを引起こしたトラップのトラップレベルに対して記憶エントリ がマッピングされた時点において形成されたチェックポイントが解除されるまで 続くことになる。 RRF RD/WR 制御ロジック840 はまた、PSU 300 から16ビットのCHKPT_CLR 信 号も受信する。各ビットは、チェックポイント番号のひとつに対応すると共に、 対応するチェックポイントが前述の手法で解除(即ちクリア)されたか否かを示 している。この信号に応じ、PRF RD/WR ロジックは、RRF 記憶ユニット839 の対 応記憶エントリからデータを読み出す。CHKPT_CLR 信号はクリアされた多数のチ ェックポイントを識別し得ることから、対応する記憶エントリから読み出された データの各ビットは論理和が取られると共に結合されてFREE_ENTRY信号を形成し 、それは8ビットのFREE_ENTRY信号として図46のFREELISTロジック821 へ送ら れる。 トラップが受入れられたときにCHKPT_CLR 信号により識別された チェックポイントが形成された場合、FREE_ENTRY信号により識別された記憶エン トリは回復されて現在は再び使用可能となっている、と言うのも、対応するチェ ックポイントは解除されているからである。その結果、このトラップはもはや行 い得ないものではない。従って、バックアップが生じなかったと仮定すれば、FR EE_ENTRY信号の各ビットは次に、ファーストワンエンコーダ823 により供与され た信号の対応ビットと論理和が取られ、次のマシンサイクルに対するFREELIST信 号が提供される。 また、トラップが受入れられたときにCHKPT_CLR 信号により識別されたチェッ クポイントが形成されなかった場合、対応する記憶エレメントから読み出された データのビットは全て“0”であり、従って、FREELIST信号の生成に関して何ら の影響を有さない。 図45に示された様に、トラップスタックユニット815 はまた、トラップ・ス タック・チェックポイント記憶ユニット845 も含んでいる。この記憶ユニット84 5 は図48に更に詳細に示す様にデータ記憶構造846 を含むが、該構造は、夫々 が5個のフィールドを有する16個のアドレシング可能な記憶エレメントすなわ ちエントリを有している。 この記憶ユニットは、FREELISTロジック821 からのFREELIST信号およびRENAME MAPロジック824 からのRENAME_MAP信号を受信する。而して、チェックポイント を形成すべきことがDO_CHKPT信号により示された場合、トラップスタック記憶RD /WR 制御ロジック847 は、FREELIST信号およびRENAME_MAP信号を、DO_CHKPT信号 により識別されたチェックポイント番号に対応する記憶エントリの適切なフィー ルド内に書込む。現在のFREELIST信号およびRENAME_MAP信号はチェックポイント が形成されたときに記憶されていることから、トラップレベルに対するトラップ 記憶エントリの現在のマッピング、およ び、利用し得るトラップスタック記憶エントリの現在のリストには、チェックポ イントが割当てられている。 チェックポイントに対するバックアップが為されつつあることがDO_BACKUP 信 号により表されるとき、RD/WR 制御ロジック847 は、DO_BACKUP 信号により識別 されたチェックポイント番号に対応する記憶エレメントから、チェックポイント が割当てられたFREELIST信号およびRENAME_MAP信号を読み出す。この点、FREELI ST信号はBACKUP_FREELIST 信号として読み出される一方、RENAME_MAP信号はBACK UP_MAP信号として読み出される。 図46に示された如く、フリーリストロジック821 はBACKUP_FREELIST 信号お よびDO_BACKUP 信号を受信する。DO_BACKUP 信号はバックアップが生じているこ とを表すことから、AND 回路838 はBACKUP_FREELIST をOR回路835 に供与する。 前述の如く、ファーストワンエンコーダ823 から受信された信号の各ビットは、 FREE_ENTRY信号およびBACKUP_FREELIST 信号の対応ビットと論理和が取られ、FR EELIST信号を生成している。 図47を参照するに、RENAME_MAPロジック824 はBACKUP_MAP信号およびDO_BAC KUP 信号を受信する。DO_BACKUP 信号はバックアップが生じていることを表すこ とから、制御回路825 が生成するWR_MUX_CNTRL信号は、TL1-4 レジスタ830 〜83 3 の夫々に対するBACKUP_MAP_1-4信号を供与する。その結果、チェックポイント が割当てられたときに存在したトラップレベルに対するトラップスタック記憶エ レメントのマッピングは、元通りの状態にされている。 前述の如く、CPU 51は投機的に(speculatively)命令を発し且つ実行する。ト ラップスタックユニット815 は、バックアップの場合に以前のトラップレベルを 回復する機構を含んでいることから、CPU 51はトラップを投機的に受取るととも にトラップから投機的に戻 ることができる。 トラップを投機的に受入れると共にトラップから投機的に戻るというCPU の能 力は、図51に示されている。図示された如く、最初に、実行手順はトラップレ ベル0に在り、且つ、トラップレベル1〜4はトラップスタックエントリ1〜4 へ夫々マッピングされている。最初のトラップが受入れられるとき、トラップレ ベルはトラップレベル1にインクリメントされると共に、チェックポイント1が 形成され、チェックポイント1における記憶エントリマッピングへのトラップレ ベルにはチェックポイントが割当てられ(checkpointed)、且つ、トラップレベル 1の新たなマッピングが記憶エントリ5に対して作られる。新たなチェックポイ ントはチェックポイント2で作られるが、これは予期されたプログラム制御命令 などの命令に対するものであり、且つ、チェックポイント2における記憶エント リマッピングへのトラップレベルにはチェックポイントが割当てられる。第2の トラップが受入れられると共にトラップレベルはトラップレベル2にインクリメ ントされ、チェックポイント3が形成され、チェックポイント3における記憶エ ントリマッピングへのトラップレベルにはチェックポイントが割当てられ、且つ 、トラップレベル2の新たなマッピングが記憶エントリ6に対して作られる。ト ラップレベル2におけるトラップに対するトラップ処理においてdoneもしくはre try 命令が実行されたとき、トラップレベルはトラップレベル1にデクリメント されると共にチェックポイント4が形成され、かつ、チェックポイント4におけ る記憶エントリマッピングへのトラップレベルにはチェックポイントが割当てら れる。トラップレベル1におけるトラップに対するトラップ処理に戻った後、こ のトラップハンドラの命令に対してチェックポイント5においてチェックポイン トが作られ、且つ、チェックポイント5における記憶 エントリマッピングへのトラップレベルにはチェックポイントが割当てられる。 更なるトラップが受入れられたとき、トラップレベルはトラップレベル2にイン クリメントされ、チェックポイント6が形成され、チェックポイント6における 記憶エントリマッピングへのトラップレベルにはチェックポイントが割当てられ 、且つ、記憶エントリ7に対するトラップレベル2の新たなマッピングが作られ る。そして更なるトラップが受入れられたとき、トラップレベルはトラップレベ ル3にインクリメントされると共にチェックポイント7が形成され、チェックポ イント7における記憶エントリマッピングへのトラップレベルにはチェックポイ ントが割当てられ、且つ、記憶エントリ0へのトラップレベル3の新たなマッピ ングが作られる。トラップレベル3におけるトラップに対するトラップハンドラ 内でdoneまたはretry 命令が実行されたとき、トラップレベルはトラップレベル 2にデクリメントされると共にチェックポイント8が形成され、且つ、チェック ポイント8における記憶エントリマッピングへのトラップレベルにはチェックポ イントが割当てられる。その後、チェックポイント2が形成されたプログラム制 御命令が誤って予測されたと判断されたのであれば、チェックポイント2へのバ ックアップが生じ、チェックポイント2における記憶エントリマッピングへのト ラップレベルが回復される。従って、チェックポイント3および7が形成された トラップは投機的に受入れ/戻りが行われ、一方、チェックポイント6が形成さ れたトラップは投機的に受入れられている。 前述の如く、トラップスタックのTSTATEフィールドはXICCフィールドを含み、 該XICCフィールドは、トラップが受入れられたとき、図8のFSR/CCRFRN 606内の 論理的XICCレジスタとしてマッピングされた物理レジスタの内容(すなわちXICC データ)を保持している。 固定小数点命令はPC命令を受けずにFXU 601 およびFXAGU 602 により実行され得 ることから、これらの内容はトラップが生じた時点で利用され得ない。従って、 後の時点にて正しいXICCデータを得る機構が無ければ、PSU 300 はXICCデータが トラップを受入れるべく利用出来るようになるまでまたねばならない。 しかし乍ら、図45を参照すると、トラップスタックユニット815 は斯かる機 構、即ち、XICC捕捉ロジック823 を含んでいる。このXICC捕捉ロジック823 は、 FSR/CCRFRN 606から、CC_TAGS_C、CC_DV_C、CC_TAGS_F およびCC_DV_F 信号を受 信し、一方、トラップスタック820 はCC_DATA_C およびCC_DATA_F 信号を受信す る。 図52を参照すると、CC_DATA_C 信号はXICC_DATA_C 信号を含むと共に、CC_D V_C 信号はXICC_DV_C 信号を含んでいる。可能であれば、XICC_DATA_C 信号は、 トラップが受入れられたときのマシンサイクルにおける論理XICCレジスタ(即ち 、図39に示されたCCRFRN 610による論理XICCレジスタとしてマッピングされた 物理レジスタ)の現在の内容を含んでいる。XICC_DV_C 信号は、XICC_DATA_C 信 号の内容が有効か否か(即ち、論理XICCレジスタとして現在マッピングされてい る物理レジスタの内容が依然として利用し得るか否か)を表している。 トラップが受入れられた時点において論理XICCレジスタとしてマッピングされ た物理レジスタの内容は、その時点で既に利用し得る可能性もある。これが生じ た場合、XICC_DV_C 信号は、XICC_DATA_C 信号の内容が有効であることを示し、 且つ、PSU 300 から受入れたTAKE_TRAP 信号は、トラップが受入れられつつある ことを示す。これに応じ、XICC書込ロジック825は、WR_ENTRY信号により識別さ れたエントリに対応するWRI_ENTRY_XICC信号を提供する。これが生じた場合、ト ラップスタックユニット815 のRD/WR 制御ロジック82 2 は、XICC_DATA_C 信号の内容を、WR1_ENTRY_XICC信号により識別されたトラッ プスタック820 のエントリのTSTATEフィールド内に書込む。 しかし乍ら、XICC_DV_C 信号が、トラップが受入れられた時点のXICC_DATA_C 信号の内容が有効でないことを示すときは、XICC_DATA_C 信号の内容はトラップ スタック820 に書込まれない。この場合、トラップスタックユニット815 は、ト ラップが受入れられた時点で論理XICCレジスタとしてマッピングされた物理レジ スタの内容が利用できるようになるまで待たねばならない。図53を参照すると 、これを行うために、XICC捕捉ロジック823 は、現在整合ロジック826 および後 期整合配列ロジック827 を含んでいる。 依然として図53を参照するに、CC_TAG_C信号はXICC_TAG_C信号を含むが、該 XICC_TAG_C信号は、トラップが受入れられたときに論理XICCレジスタとしてマッ ピングされた物理レジスタの物理レジスタ・タグを含んでいる。更に、CC_TAG_F 信号は、FXU 601 およびFXAGU 602 により夫々発信されたFXU_XICC_TAG_F信号お よびFXAGU_XICC_TAG_F信号を含むが、これは、FXU 601 およびFXAGU 602 が、論 理XICCレジスタを変更する固定小数点命令を実行するときに行われる。これらの 信号は、実行されたこれらの固定小数点命令に対するものであると共にCC_DATA_ F 信号のFXU_XICC_DATA_F 信号およびFXAGU_XICC_DATA_F 信号が書込まれるべき 論理XICCレジスタとしてマッピングされた物理レジスタの物理レジスタ・タグを 含むものである。FXU_XICC_DATA_F 信号およびFXAGU_XICC_DATA_F 信号は夫々、 FXU 601 およびFXAGU 602 により発信されたものである。 CC_DV_F 信号は、論理XICCレジスタを変更する固定小数点命令をFXU 601 およ びFXAGU 602 が実行するときに該FXU 601 およびFXAGU 602 により夫々発信され たFXU_XICC_TAG_F信号およびFXAGU_XICC _TAG_F信号を含んでいる。これらの信号は、実行された固定小数点命令に対する 論理XICCレジスタとしてマッピングされた物理レジスタに対してFXU_XICC_DATA_ F 信号およびFXAGU_XICC_DATA_F 信号の内容が有効か否か(即ち、利用できるか 否か)を表している。 既述の如く、実際のおよび/または予期されたプログラム命令に基づいて命令 は実行され得ることから、発信されたFXU_XICC_DATA_F 信号およびFXAGU_XICC_D ATA_F 信号は最終的に、トラップが受入れられたときに論理XICCレジスタとして マッピングされた物理レジスタに書込まれるべき内容を含むことになる。これは 、トラップが受入れられるのと同一のマシンサイクル(即ち、現在のマシンサイ クル)もしくは後期のマシンサイクルにて生ずる。 これが同一のマシンサイクルで生じる場合、XICC_TAG_C信号は、トラップが受 入れられたときに論理XICCレジスタとしてマッピングされた物理レジスタのタグ を現在的に識別する。XICC_TAG_C信号により識別されたタグは、現在整合ロジッ ク826 の比較ロジック850 および比較ロジック851 により、FXU_XICC_TAG_F信号 およびFXAGU_XICC_TAG_F信号と比較される。もし、整合が生じ、且つ、対応する FXU_XICC_DV_F 信号またはFXAGU_XICC_DV_F 信号が、対応するFXU_XICC_DATA_F 信号またはFXAGU_XICC_DATA_F 信号の内容が有効であることを示すでのあれば、 現在整合ロジック826 は、対応するFXU_XICC_CURR_MATCH 信号またはFXAGU_XICC _CURR_MATCH 信号を出力する。この信号は、トラップが受入れられたときに論理 XICCレジスタとしてマッピングされた物理レジスタの内容が、トラップが受入れ られたときと同一のマシンサイクル内で利用し得る様になったことを表す。 図52に戻り、このマシンサイクルの間、TAKE_TRAP 信号は依然としてトラッ プが受入れられつつあることを表し、且つ、WR_ENTRY 信号は依然としてトラップのトラップレベルにマッピングされたエントリを識別 している。従って、FXU_XICC_CURR_MATCH 信号またはFXAGU_XICC_CURR_MATCH 信 号に応じ、XICC書込ロジック825 は対応するWR2_ENTRY_XICC信号またはWR3_ENTR Y_XICC信号を生成する。この信号は、WR_ENTRY信号により識別されたエントリに 対応する。次に、トラップスタックユニット815 のRD/WR 制御ロジック822 は、 FXU_XICC_DATA_F 信号またはFXAGU_XICC_DATA_F 信号の内容を、対応するWR2_EN TRY_XICC信号またはWR3_ENTRY_XICC信号により識別されるトラップスタック820 のエントリのTSTATEフィールドのXICCフィールド内に、書込む。 図53に戻ると、既述の如く、トラップが受入れられたときのマシンサイクル の後のマシンサイクルにおいて、発信されたFXU_XICC_DATA_F 信号およびFXAGU_ XICC_DATA_F 信号は、トラップが受入れられたときに論理XICCレジスタとしてマ ッピングされた物理レジスタに書込まれるべき内容を含んでいる可能性がある。 この状況に備えるべく、XICC捕捉ロジック823 は、タグ配列記憶ユニット854 を 含むタグ配列記憶ユニット827 を含んでいる。 記憶ユニット854 は、8個の記憶エントリを含んでおり、各エントリは、トラ ップスタック820 の各エントリのひとつに対応している。従って、トラップが受 入れられつつあることがTAKE_TRAP 信号により示される都度、RD/WR ロジック85 5 は、そのときのXICC_TAG_C信号により識別されるタグを、WR_ENTRY信号により 識別されるトラップスタック820 のエントリに対応する記憶ユニット854 のエン トリに、書込む。 比較配列ロジック852 および853 は、夫々、FXU_XICC_TAG_F信号およびFXAGU_ XICC_TAG_F信号により識別されるタグを、記憶ユニット854 内に記憶されたタグ の各々と、比較する。その結果、もし、 整合が生じ、且つ、対応するFXU_XICC_DATA_F 信号またはFXAGU_XICC_DATA_F 信 号の内容が有効であることが対応するFXU_XICC_DV_F 信号またはFXAGU_XICC_DV_ F 信号により表されたのであれば、対応する比較配列ロジック852 または853 は 、対応するFXU_XICC_DATA_F 信号またはFXAGU_XICC_DATA_F 信号の内容が書込ま れるべきトラップスタック820 のエントリを識別する対応FXU_XICC_LATE_MATCH 信号または対応FXAGU_XICC_LATE_MATCH 信号を、出力する。 図54に戻ると、XICC捕捉ロジックは、XICC用待機ロジック828 を含んでいる 。又、レジスタ856 はWAIT_FOR_XICC_VEC 信号を記憶する。このWAIT_FOR_XICC_ VEC 信号の各ビットは、トラップスタック820 の各エントリのひとつに対応する と共に、対応するトラップが受入れられたときに論理XICCレジスタとしてマッピ ングされた物理レジスタの内容が利用可能になるのを対応エントリが待機してい るときに提示される。従って、WAIT_FOR_XICC_VEC ベクトル信号は、対応するト ラップが受入れられたときに論理XICCレジスタとしてマッピングされた種々の物 理レジスタの内容が利用可能になるのを現在待っているトラップスタック820 の 各エントリの全てのリストを提供するものである。 TAKE_TRAP 信号により表されるトラップが受入れられると共に、XICC_DV_C 信 号が“論理XICCレジスタとしてマッピングされた物理レジスタの内容を利用する ことができない”ことを示し、且つ、FXU_XICC_CURR_MATCH 信号およびFXAGU_XI CC_CURR_MATCH 信号のいずれもまたこれを示さない、という状態が生じる都度、 WR_ENTRY信号は、後期のマシンサイクルにおいてこれらの内容が利用し得る様に なるのを待っているエントリを、識別する。これに応じ、このエントリは、XICC 用待機ロジック828 により、対応トラップが受入れられたときに論理XICCレジス タとしてマッピングされた種々の物理レ ジスタの内容が利用し得る様になるのを現在待っているトラップスタック820 の エントリのリストであってWAIT_FOR_XICC_VEC ベクトル信号により与えられるリ スト、に対して加えられる。 しかし乍ら、前述の如く、TAKE_TRAP 信号により示されるごとくトラップが受 入れられたとき、論理XICCレジスタとしてマッピングされた物理レジスタがこの 時点で利用し得ることがXICC_DV_C 信号により示されるか、あるいは、FXU_XICC _CURR_MATCH 信号またはFXAGU_XICC_CURR_MATCH 信号がこのことを示す可能性も ある。これが生じる都度、WR_ENTRY信号により識別されるエントリはXICCロジッ ク828 により、WAIT_FOR_XICC_VEC ベクトル信号により与えられたリストに加え られない。 更に、前述の如く、対応するトラップが受入れられたときに論理XICCレジスタ としてマッピングされた物理レジスタの内容が後期のマシンサイクルにおいて利 用し得る様になったときは常に、FXU_XICC_LATE_MATCH 信号またはFXAGU_XICC_L ATE_MATCH 信号は、これらの内容が書込まれるべきトラップスタック820 のエン トリを識別する。図52に戻ると、この時点でWAIT_FOR_XICC_VEC ベクトル信号 は依然としてこのエントリをリストすることから、XICC書込ロジック825 は、こ のエントリを識別する対応WR2_ENTRY_XICC信号または対応WR3_ENTRY_XICC信号を 生成する。その後、トラップスタックユニット815 のRD/WR 制御ロジック822 は 、FXU_XICC_DATA_F 信号またはFXAGU_XICC_DATA_F 信号の内容(即ち、対応トラ ップが受入れられたときに論理XICCレジスタとしてマッピングされた物理レジス タの内容)を、対応するWR2_ENTRY_XICC信号またはWR3_ENTRY_XICC信号により識 別されたトラップスタック820 のエントリのTSTATEフィールドのXICCフィールド 内に、書込む。次に、図54に戻ると、このエントリは、WAIT_FOR_XICC_VEC ベ クトル信号により与えられ たリストから、XICC待機用ロジック828 により除去される。 従って、受入れられ乍らも未だ戻っていないトラップの各々に対し、XICC捕捉 ロジックは、トラップが受入れられたときに論理XICCレジスタとしてマッピング された物理レジスタの内容が利用し得る様になる時点、および、トラップスタッ ク820 内のどのエントリ内にこれらの内容が書込まれるべきなのかを、決定する ことが出来る。その結果、これらの内容はいずれかのトラップが受入れられる時 点では未だ利用できない可能性があるとしても、ネストしたトラップを受入れる ことが可能となる。換言すると、XICC捕捉ロジック823 は、対応トラップステー ト(TSTATE)データの全てが利用可能になる以前にトラップが受入れられることを 許容する機構である。 しかし乍ら、トラップ受取から戻ると同時に、トラップが受入れられたときに 論理XICCレジスタとしてマッピングされた物理レジスタの内容は、トラップスタ ック820 の対応エントリ内に既に書込まれていなければならない。これは、RETR Y もしくはDONE命令を行うためには、これらの内容が、現在において論理XICCレ ジスタとしてマッピングされた物理レジスタ内に書き戻されるべきことが必要で ある、という事実に拠るものである。 図54に示される如く、これが生ずるのを確実にすべく、XICC用待機ロジック 828 はマルチプレクサ857 を含んでいる。現在受入れられるつつあるトラップの トラップレベルに現在マッピングされているトラップスタック820 のエントリを 識別するRD_ENTRY信号に応じ、上記マルチプレクサは、WAIT_FOR_XICC_VEC ベク トル信号のビットの内でこのエントリに対応するビットを、WAIT_FOR_XICC 信号 として出力する。従って、この信号は、現在受入れられつつあるトラップのトラ ップレベルに現在マッピングされているトラップスタック820 のエントリが、ト ラップが受入れられたときに論理XICCレ ジスタとしてマッピングされた物理レジスタの内容を待っているか否か、を表す 。 図45を参照すると、XICC捕捉ロジック823 はISU 200 に対してWAIT_FOR_XIC C 信号を出力する。もしこの信号が提示されれば、ISU 200 は、この信号が提示 されなくなるまで、RETRY 命令またはDONE命令を発しない。 ISU 200 が最後にRETRY 命令またはDONE命令を発したとき、該ISU 200 は、DO NE命令が発せられたか否かを示す信号とRETRY 命令が発せられたか否かを示す信 号とを含むDONE_RETRY_IS 信号を、出力する。 図47を参照すると、読込マルチプレクサ835 はRD_ENTRY信号として、現在の TL値に対応するRENAME_MAP信号を出力する。更に図45を参照すると、トラップ スタックユニット815 のRD/WR 制御ロジック822 は、DONE命令またはRETRY 命令 が既に発せられたことがDONE_RETRY_IS 信号により示されたときRD_ENTRY信号に より識別される記憶エレメントから、TPC、TNPC、ASI、CWP、PSTATEおよびXICC の各値を、読み出す。 図17を参照すると、ASI、CWP およびPSTATEの各値は、DONE_RETRY_IS 信号 に応じ、制御レジスタファイル800 のRD/WR/UPDATEロジック816 により対応レジ スタ内に書込まれる。 更に、図45に示される様に、TPC およびTNPCの各値はRD_TPC_TNPC信号を以 てBRB 59に付与される。その結果、BRB 59はこの値を使用してPCおよびNPC の各 値を形成して、次の命令セットをフェッチする。 最後に、XICC値はRD_XICC 信号を以てDFB 62に供与される。図8を参照すると 、DONE_RETRY_IS 信号に応じ、CCRFRN 610は論理XICCレジスタを物理レジスタに マッピングする。従って、CCRFRN 610は トラップスタックユニット815 からXICCデータを受けたとき、それを新たにマッ ピングされた物理レジスタ内に記憶する。 更に、当業者であれば、FXU 601 およびFXAGU 602 の各々が、論理XICCレジス タを変更する固定小数点命令を実行し得る1個以上の実行ユニットを有し得るこ とを理解し得よう。この場合、XICC捕捉ロジック823 は、トラップが受入れられ るときに論理XICCレジスタとしてマッピングされた物理レジスタの内容を以てト ラップスタック820 を適切に更新すべく既述したロジック、の複製ロジックを有 することになろう。 これに加え、当業者であれば、XICC捕捉ロジック823 の概念を他の型式のレジ スタまで拡張し得ることを理解し得ようが、斯かる他の型式のレジスタとは、そ の内容が、トラップが受入れられた時点では利用する必要は無いがトラップスタ ックには書込まれる必要があるレジスタ、および、レジスタ名称変更(即ち、論 理レジスタに対する物理レジスタのマッピング)が既に行われたレジスタ等であ る。 本明細書にて言及した公報および特許出願の全てを参照により援用するが、こ れは、個々の公報もしくは特許出願を特定的にかつ個別的に参照により援用した のと同一の程度まで援用する。 本発明を十分に説明してきたが、当業者であれば、添付の請求の範囲の精神お よび範囲から逸脱すること無しに多くの変更および修正を為し得ることは理解し 得よう。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/472,394 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/473,223 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/476,419 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/478,025 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/482,073 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/483,958 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/484,795 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/487,801 (32)優先日 1995年6月7日 (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),JP,KP,KR,US (72)発明者 パトカー,ニッティーン エー. アメリカ合衆国,カリフォルニア 94087, サニーベール,カーリスル ウェイ 160 (72)発明者 シェバノウ,マイケル シー. アメリカ合衆国,テキサス 75075,プラ ノ,グレンウィック ドライブ 1920 (72)発明者 大曽根 秀樹 アメリカ合衆国,カリフォルニア 95130, サン ホセ,グリムズビー コート 2318 (72)発明者 シモーネ,マイケル エー. アメリカ合衆国,カリフォルニア 95050, サンタクララ,ワシントン ストリート #8 680 (72)発明者 丸山 拓巳 アメリカ合衆国,カリフォルニア 95032, ロス ガトス,イースト メイン ストリ ート #30 20

Claims (1)

  1. 【特許請求の範囲】 1.データ記憶装置、命令発行ユニット、命令実行ユニット及び命令発行・実 行スケジューラを有する、命令発行ユニットが発行した命令を実行するための中 央処理ユニットの中で、プロセッサ内の投機的命令実行をトラッキングするため の方法において、 − データ記憶装置内のデータ構造を規定する段階; − 発行ユニットによって発行された各命令に対して識別タグを割当てる段階; − 割当てられたタグに基づいて各々の発行済み命令に対して、データ構造内に 記憶された1つの活動ビットを結びつける段階; − 命令が発行された時点で、データ構造内に活動ビットをセットする段階;及 び − 命令がエラー無しで実行を完了した時点でデータ構造内の活動ビットをクリ アする段階、 を含んで成る方法。 2.データ構造には、n個のアドレス可能な場所0,1,2,…,n−2,n −1をもつ円形データ構造が含まれており、ここでアドレス可能な場所n−1は 、論理的にアドレス可能な場所0に隣接しており、データ構造内の一つの活動ビ ットを各々の発行済み命令と結びつける段階が、n個の場所のうちの固有の1つ の場所の中の活動ビットを各々の発行済み命令と結びつけることを含んで成る請 求項1に記載の方法。 3.識別タグが数値的シリアル番号であり各々の発行済み命令に対して1つの 識別タグを割当てる段階には、各々の命令が発行されるにつれてその後発行され た命令に対し単調に増大するシリアル番号(モジュロn)を割当てることが含ま れている請求項2に記載の 方法。 4.− 付随する活動ビットの状態に基づいて各々の発行済み命令の実行状況 をトラッキングする段階; − 活動中の命令に付随する最小のシリアル番号を識別するべく単調にシリアル 番号が増大する順で円形データ構造内の各々の活動ビットを評価し、かくして最 も早期に発行されなお活動中の命令を決定する段階;及び − 取消しが不可能であるように、前記最小の活動中のシリアル番号に付随する シリアル番号よりも小さいシリアル番号をもつ命令を完遂する段階;及び − 識別された最小のシリアル番号に基づいて完遂済み命令に割振られたプロセ ッサ資源を再生する段階; をさらに含んで成る請求項3に記載の方法。 5.再生された資源には、退去済み命令に付随するデータ構造の中の記憶場所 及び命令シリアル番号が含まれる請求項4に記載の方法。 6.投機的out-of-order実行プロセッサの中で、命令状況をトラッキングする ための方法において、 − 各々の発行済み命令について活動状況データを記憶するための複数の記憶場 所をもつプロセッサ内のアドレス可能なデータ構造を提供する段階; − 各々の発行済み命令に対し1つの識別タグを割当てる段階; − 複数の記憶場所のうちの1つと、各々の割当てられたタグを結びつける段階 ; − 特定の命令が発行された時点で活動中であるものとして特定の発行済み命令 を識別するデータを記憶する段階; − 特定の命令の完了を検出する段階;及び − 特定の命令が、実行条件の予め定められたセットのうちのいずれか1つが発 生することなく実行を完了した時点で、特定の命令を識別するデータを記憶する 段階、 を含んで成る方法。 7.予め定められた実行条件セットには、命令実行エラー、例外、ハードウェ ア故障、分岐命令誤予測が含まれ、エラー条件が検出される請求項6に記載の方 法。 8.命令発行スケジューラ及び命令発行ユニットを有する投機的out-of-order プロセッサの中で、発行済み命令の状況をトラッキングするための方法において 、 − 命令活動状況データを記憶するためのn−場所データ構造を提供する段階; − n−場所データ構造内のn個の場所の各々について固有の記憶場所アドレス を規定する段階; − 発行ユニットによって発行された各々の命令を、固有の記憶場所アドレスの うちの1つと結びつける段階; − 命令が活動中であることを表示するべく命令に付随するデータ構造の場所に おいてデータ構造内に活動状況データを記憶する段階; − 各々の発行済み命令について、命令実行完了及びそれに付随するあらゆるエ ラー状況を検出する段階; − 命令がエラー無しで完了した場合、命令が現在非活動中であることを表示す るための付随する記憶場所の中の活動状況データを更新し、命令がエラーを伴っ て完了した場合、命令がなおも活動中であることを表示するため付随する記憶場 所の中にもとの活動状況データを保持する段階;及び − 命令発行スケジューラが、当時非活動中であった以前に発行さ れた命令の状況とは無関係にさらなる命令を実行のためのスケジュールできるよ うな形で、命令発行スケジューラに対し命令活動状況データを伝送する段階、 を含んで成る方法。 9.− プロセッサ内のエラーハンドラユニットに対し命令のうちの任意のも のの実行完了に付随するエラー状況を伝達する段階、及び − 伝達されたエラー状況に応えて命令発行及び実行シーケンスのスケジューリ ングを修正する段階、 を含んで成る請求項8に記載の方法。 10.命令を発行するための命令発行ユニット及びプロセッサ内にデータを記憶 するためのデータ記憶装置をもつ投機的out-of-order実行プロセッサの中で、精 確なプロセッサ状態をトラッキングするための方法において、 − プロセッサのデータ記憶装置内にn個のアドレス可能なデータ記憶場所をも つ第1のデータ構造を規定する段階; − 発行済み命令に対しひきつづき割当てするべく複数の固有識別タグと割振る 段階; − 命令が発行された時点で、各々の命令に対して固有識別タグのうちの1つを 割当てる段階; − プロセッサ内の第1のデータ構造内のアドレス可能な記憶場所の1つと各々 のタグを結びつける段階; − 各々の命令について、各命令に対する命令活動状況の変化に応えて命令に付 随する記憶場所の中に記憶されたデータを更新する段階; − 記憶場所に複数のポインタを維持し、命令活動状況の変化に応えて、ポイン タを移動させる段階; を含んで成る方法。 11.複数のポインタを維持する段階には、 − 複数の発行済み命令の各々について命令状況を決定するべくアドレス可能な 記憶場所の中に記憶されたデータを評価する段階; − 予め定められた実行状況のセットから選択された特定の実行状況を達成した その付随する識別タグを伴う命令を各々識別する複数の異なるプロセッサ条件イ ンジケータを、アドレス可能な記憶場所の中に記憶されたデータに基づいて計算 する段階;及び − 前記プロセッサ内の第3のデータ記憶装置内にポインタとしてプロセッサ条 件インジケータを記憶する段階; を含んで成り、命令活動状況変化に応えてポインタを移動させる段階には、前記 プロセッサ条件インジケータを更新するべく予め定められた時間的間隔で前記評 価、異なるプロセッサ条件インジケータの計算及び記憶の段階を反復する段階が 含まれている、請求項10に記載の方法。 12.予め定められた実行状況セットには最後の発行済み命令、最後の完遂済み 命令及び最後の退去済み命令が含まれる請求項10に記載の方法。 13.予め定められた実行状況セットがさらに、最後の非メモリ参照命令及び最 後の予測された分岐命令を含んでいる請求項10に記載の方法。 14.前記状況データは、命令が発行された時点でセットされ、実行がエラー無 く完了した時点でクリアされる活動中のビットを含んでいる請求項10に記載の方 法。 15.前記複数のポインタには、 − 最後の発行済み命令をポインタする第1のポインタ、及び − 順序的に前に発行された全ての命令がエラー無しで完了してお りそれ自体エラー無しで完了した最後の命令である最後の完遂済み命令をポイン トする第2のポインタ、 が含まれている請求項14に記載の方法。 16.前記複数のポインタにはさらに、 − 割振られたプロセッサ資源が再生された最後の命令である最後の再生済み命 令をポイントする第3のポインタ が含まれている請求項15に記載の方法。 17.前記各々の識別タグが、単調に増加する順序の数値的シリアル番号のうち の1つであり、前記第1のデータ構造の中の前記アドレス可能な記憶場所が前記 シリアル番号によってアドレスされる請求項16に記載の方法。 18.n個のアドレス可能なデータ記憶場所をもつ前記第1のデータ構造が円形 データ構造であり、より高い値のシリアル番号に対する前記ポインタの前進は、 アドレスnからポインタを増分させることでこのポインタがアドレス0に置かれ るような形でモジュロn算術演算で達成される請求項17に記載の方法。 19.命令活動状況変化に応えて前記ポインタを移動させることによりこのポイ ンタを維持する前記段階には、 − 発行された全ての命令について、1つのシリアル番号だけより高い命令シリ アル番号(モジュロn)に向かって順方向に前記第1の発行済み命令ポインタを 前進させる段階、 − 各記憶場所についての活動中のビットの状態のシリアル番号逐次評価及び第 1の予め定められた規則に基づいてより高い命令シリアル番号(モジュロn)に 向かって順方向に前記第2の完遂済み命令ポインタを前進させるものの、前記第 1のポインタを超えて前記第2のポインタを前進させることはしない段階;及び − 各場所についての活動中のビットの状態の通信番号逐次評価及 び第2の予め定められた規則に基づいてより高い命令シリアル番号(モジュロn )に向かって順方向に前記第3の退去済みのポインタを前進させるものの、前記 第2のポインタを超えて前記第3のポインタを前進させることはしない段階、 が含まれている請求項15に記載の方法。 20.前記第1の予め定められた規則には、 − マシンクロックサイクルの各々全ての予め定められた数において、より低い アドレス場所にある全ての活動状態ビットが非活動「0」である最高のデータ記 憶場所アドレスより低いものの、そのマシンサイクルでの前記第1のポインタの アドレスほどは高くない新しいアドレス場所まで順方向に前記第2のポインタを 前進させる段階; が含まれている請求項19に記載の方法。 21.前記第2の予め定められた規則には、マシンクロックサイクルの各々全て の予め定められた数において、より低いアドレス場所にある全ての活動状況ビッ トが非活動「0」である最高のデータ記憶場所アドレスよりも低いものの、その マシンサイクルでの前記第2のポインタのアドレスほどは高くない新しいアドレ ス場所まで順方向に前記第3のポインタを前進させる段階が含まれている請求項 19に記載の方法。 22.前記ポインタが、命令発行、完遂及び退去の結果として移動させられる請 求項19に記載の方法。 23.前記第2及び第3のポインタは、例外、分岐命令該予測及びエラー条件が 検出された命令を通過して移動させられない請求項19に記載の方法。 24.データ記憶手段及び命令発行、ディスパッチ、実行及び退出をスケジュー ルするための手段を有する投機的out-of-order実行プ ロセッサの中で、命令の状況をトラッキングする方法において、 − 前記プロセッサ内で競合して目立つ命令の最大数を規定するn個の固有命令 シリアル番号を割振る段階; − 前記プロセッサ内で前記データ記憶手段内にn個の独立してアドレス可能な 記憶場所をもつデータ構造を規定する段階; − 前記割振られたシリアル番号各々を前記アドレス可能な記憶場所に結びつけ る段階;及び − 前記プロセッサが発行する命令に応えて、前記シリアル番号の1つを識別タ グとして各々の前記発行済み命令に割当て、この命令が実行を完了し退去させら れて暫定的に固有の対応が各々の発行済み命令と前記記憶場所のうち固有のもの の間に打ち立てられるようになるまで前記割当てを維持する段階、 を含んで成る方法。 25.− 前記命令が発行された時点で前記命令に付随する前記データ記憶場所 の中に活動中の状況インジケータを記憶する段階; − 前記命令がエラー無しで完了した時点で前記命令に付随する前記データ記憶 場所内に非活動中の状況インジケータを記憶する段階; − 前記アドレス可能な記憶場所をポイントする複数のマシンポインタを規定す る段階;及び − 命令状況及び予め定められた規則に応えて、前記複数のマシンポインタを移 動させることにより各命令に割振られた命令状況及びマシン資源をトラッキング する段階; をさらに含んで成る請求項24に記載の方法。 26.前記データ記憶場所がマルチビットレジスタ内のビットであり、前記活動 中の状況インジケータが1−ビットであり、前記非活動中の状況インジケータが 0−ビットである請求項25に記載の方法 。 27.前記複数のマシンポインタには、 − 最後の発行済み命令をポイントする第1のポインタ、 − 順序的に早期の全てのin-order発行済み命令がエラー無しで完了していてそ れ自体エラー無しで完了した最後の命令である最後の完遂済み命令をポイントす る第2の最後の完遂済み命令ポインタ;及び − 命令に対してプロセッサが割振った全てのマシン資源及び順序的に早期の全 てのin-order命令が再生された最後の命令をポイントする第3の退去及び再生ポ インタ、 が含まれている請求項25に記載の方法。 28.前記データ構造は、アドレス可能な場所n−1が論理的に場所0に隣接し ているような形でn個のアドレス可能な場所0,1,2,…,n−2,n−1を もつ円形データ構造であり、前記シリアル番号は連続する整数であり、前記シリ アル番号を前記アドレス可能な記憶場所の1つと結びつける段階には、前記円形 レジスタ内の第1のビット位置と最低のシリアル番号を結びつけること及び前記 円形レジスタ内のn番目のビット位置と前記最高のシリアル番号を結びつけるこ とが含まれている、請求項27に記載の方法。 29.前記複数のマシンポインタを移動させることによって各命令に割振られた 命令状況及びマシン資源をトラッキングする前記段階には、 − 第1の命令を発行する前に同じ初期記憶場所アドレスに前記第1、第2及び 第3のポインタを初期設定する段階; − 発行された各々全ての命令について1つのシリアル番号だけ、より高い命令 シリアル番号(モジュロn)に向かって順方向に前記第1の発行命令ポインタを 前進させる段階; − 各記憶場所についての活動中のビットの状態のシリアル番号逐次評価及び第 1の予め定められた規則に基づいてより高い命令シリアル番号(モジュロn)に 向かって順方向に前記第2の完遂済み命令ポインタを前進させるものの、前記第 1のポインタを超えて前記第2のポインタを前進させることはしない段階;及び − 各場所についての活動中のビットの状態の通信番号逐次評価及び第2の予め 定められた規則に基づいてより高い命令シリアル番号(モジュロn)に向かって 順方向に前記第3の退去済みのポインタを前進させるものの、前記第2のポイン タを超えて前記第3のポインタを前進させることはしない段階、 が含まれ、前記ポインタをより高い値のシリアル番号へと前進させる段階は、ア ドレスn−1からポインタを増分させることによってこのポインタがアドレスn に置かれ、このポインタをアドレスnから増分させるとこのポインタがアドレス 0に置かれるような形で、モジュロn算術演算を用いて前記円形データ構造中で 達成される請求項28に記載の方法。 30.前記第1の予め定められた規則には、 − マシンクロックサイクルの各々全ての予め定められた数において、より低い アドレス場所にある全ての活動状況ビットが非活動「0」である最高のデータ記 憶場所アドレスより低いものの、そのマシンサイクルでの前記第1のポインタの アドレスほどは高くない新しいアドレス場所まで順方向に前記第2のポインタを 前記させる段階; が含まれ、ここで前記第2の予め定められた規則には、 − マシンクロックサイクルの各々全ての予め定められた数において、より低い アドレス場所にある全ての活動状況ビットが非活動状態にある最高のデータ記憶 場所アドレスより低いものの、そのマシ ンサイクルでの前記第2のポインタのアドレスほどは高くない新しいアドレス場 所まで順方向に前記第3のポインタを前進させる段階; が含まれている、請求項29に記載の方法。 31.前記新しいアドレス場所は、前記状況活動ビットのブール演算に基づいて 決定される請求項30に記載の方法。 32.前記第1の予め定められた規則には、前記第2のポインタが前記予め定め られた数のマシンサイクルの間に前進され得るアドレス数を、第1のアドレス最 大数に制限する段階がさらに含まれており;前記第2の予め定められた規則には 、前記第3のポインタが前記予め定められた数のマシンサイクルの間に前進され 得るアドレス数を第2のアドレス最大数に制限する段階がさらに含まれており、 ここで前記第2のアドレス最大数は前記第1のアドレス最大数より小さい、請求 項30に記載の方法。 33.前記第2及び第3のポインタは、例外、分岐命令誤予測及びエラー条件が 検出された命令を通過して移動させられない、請求項30に記載の方法。 34.データ記憶手段、少なくとも1つの命令実行ユニット及び命令発行ユニッ トをもつプロセッサの中で、精確な状態を維持するための装置において、 − 各々の発行済み命令について前記実行ユニットから命令実行状況を受領する ための手段; − 前記プロセッサ内の命令の発行、実行、完了及び退去に基づいてマシン資源 利用可能性情報をトラッキングし前記情報を前記命令発行ユニットに伝達するた めの手段;及び − マシン資源がさらなる命令を処理するのに利用可能である場合に命令の発行 を続行し、マシン資源が命令の処理に利用可能でない 場合にはさらなる命令の発行を停止させるべく、前記資源利用可能性情報に対し 応答性をもつ前記命令発行ユニット内の手段、 を含んで成る装置。 35.マシン資源利用可能性情報をトラッキングするための前記手段には、 − 各々の発行済み命令について発行、実行、完了及び退去の状況情報を記憶す るための前記データ記憶手段内に構成されたデータ構造; − 最後の発行済み命令を決定するため、順序的により早期の全ての命令がエラ ー無く完了しておりかつそれ自体エラー無く完了した最後の命令である最後の完 遂済み命令を決定するため、そして割振りされたプロセッサ資源が再生された最 後の命令である最後の再生済み命令を決定するための論理手段 が含まれている請求項34に記載の装置。 36.前記発行ユニットによって発行された予測された命令を識別するための手 段; − 予測を誤った実行済みの予測分岐命令を検出し、前記誤予測分岐からの回復 を開始するための手段 − 命令実行例外をとり扱うための手段、 をさらに含んで成る請求項35に記載の装置。 37.データ記憶装置、命令発行ユニット、命令実行ユニット及び命令発行・実 行スケジューラをもつ中央処理ユニットの中で、このプロセッサ内での投機的命 令実行をトラッキングするための装置において、 − 前記データ記憶装置内に構成されたデータ構造; − 命令発行オペレーションに応答して発行ユニットにより発行された各々の命 令に対し識別タグを割当てるための手段; − 割当てられたタグに基づいて各々の前記発行済み命令と付随するデータ構造 内で記憶された活動ビットを結びつけるための手段; − 命令が発行された時点でデータ構造内の活動ビットをセットするための手段 ; − 命令がエラー無く実行を完了した時点でデータ構造内の活動ビットをクリア するための手段、 を含んで成る装置。 38.内部データ記憶装置、命令復号ユニットをもち外部メモリと連絡している 投機的out-of-order実行プロセッサの中で、精確な例外モデルを維持するロード 及びストア命令を含めたメモリ参照命令をトラッキングし攻撃的にスケジュール するための方法において、 − 前記プロセッサによる実行のための複数の命令を発行する段階; − 前記発行済みの複数の命令のうちのいずれかが投機的に発行された命令であ るかを識別する段階; − 前記内部データ記憶装置内に、前記識別された投機的に発行された命令の各 々に付随する投機的実行インジケータを記憶する段階; − 前記発行済み命令のいずれかが外部メモリを参照するかを決定する段階; − 前記内部データ記憶装置の中に前記決定されたメモリ参照命令に付随するメ モリ参照命令インジケータを記憶する段階; − 前記命令が発行された後前記複数の命令のうちの各々の命令の実行活動状況 を監視する段階; − 各々の発行済み命令について実行中に何らかのエラー条件が発生したか否か を確認し、実行中にエラーを経験した各々の命令のためにエラー状況を表示する エラー条件インジケータを生成する段階 ; − 前記発行済み命令の実行状況をトラッキングする段階;及び − その他の発行されたものの実行されていない命令の実行状況に基づいて、順 序的により早期の発行済みの非メモリ参照命令に先立ち、out-of-order実行のた めに前記決定されたメモリ参照命令のうちの特定の1つの命令をスケジュールす る段階であって、この実行状況には、投機的に発行された命令であるものとして の非メモリ参照命令の識別及び予め定められた実行完了状況を有するものとして の非メモリ参照命令の識別が含まれている、スケジュール段階、 を含んで成る方法。 39.前記実行状況をトラッキングする段階には; − 命令シリアル番号により各命令を識別する段階; − 最後の発行済み命令のシリアル番号に対応するポインタ値を前記レジスタの うちの第1のレジスタの中に記憶する段階; − 最後の非活動化済み命令のシリアル番号に対応するポインタ値を前記レジス タのうちの第2のレジスタの中に記憶する段階であって、ここで非活動化済み命 令は実行を完了したもののその結果が状態ライトバックされていない1つの命令 であるような、段階; − 最後の完遂済み命令のシリアル番号に対応するポインタ値を前記レジスタの うちの第3のレジスタ内に記憶する段階; − 最後の退去済み命令のシリアル番号に対応するポインタ値を(前記レジスタ のうちの第1のレジスタ内の記憶のシリアル番号に対応するポインタ値を)前記 レジスタのうちの第4のレジスタ内に記憶する段階; − 最後の予測された分岐命令のシリアル番号に対応するポインタ値を前記レジ スタのうちの第5のレジスタ内に記憶する段階; − 最後の非メモリ参照命令のシリアル番号に対応するポインタ値 を前記レジスタのうちの第6のレジスタ内に記憶する段階;及び − 前記第1、第2、第3、第4、第5及び第6のポインタ値を評価することに より前記プロセッサの状況を確認する段階、 が含まれる請求項38に記載の方法。 40.内部のレジスタと外部のメモリを含むデータ記憶手段、命令発行ユニット 及び命令実行ユニットを有する投機的out-of-order実行プロセッサの中で、この プロセッサ内の精確なアーキテクチャ状態を維持しながら、順序的にout-of-ord erで低待ち時間命令に先立って、アーキテクチャ状態を修正できる長待ち時間命 令を攻撃的にスケジュールするための方法において、 − エラー無く実行を完了し取り消す必要が全く無い順序的に最後の連続的命令 を識別する段階; − 実行の予測が誤った場合実行が取消されなくてはならない可能性のある、順 序的に最も早期の投機的発行済みで未解決の予測された制御転送命令を識別する 段階; − エラー無しで実行を完了し取消す必要の全く無い前記識別された順序的に最 後の連続的命令と、実行の予測を誤った場合取消さなければならない可能性のあ る前記識別された順序的に最も早期の投機的発行済みで未解決の予測された制御 転送命令の間に順序づけされたあらゆる長待ち時間命令を識別するための段階で あって、この長待ち時間命令は、長待ち時間命令であるものとして予め指定され た予め定められた命令セットと、発行済み命令を比較することによって識別され る、識別段階; − 中間実行のため前記識別された長待ち時間命令をスケジュールする段階; を含んで成り、 かくして、誤予測をした可能性のある投機的発行済みの介入する 制御転送命令及びそうでなければ実行例外を生成した可能性のある命令とは無関 係に、実行のためスケジュールされ得る長待ち時間命令のみを実行するためにス ケジュールすることによって、長待ち時間命令が攻撃的に発行され精確な状態が 維持されることになる方法。 41.エラー無しで実行を完了し取消しの必要が全く無い順序的に最後の連続的 命令を識別する段階に先立って、 − nのアドレス可能場所0,1,2,…,n−2,n−1を有し、アドレス可 能場所n−1がこのデータ記憶手段内で論理的にアドレス可能な場所0と隣接し ている、円形モジュロnデータ構造を規定する段階; − 各命令が発行されるにつれて、各々のひきつづき発行された命令に対して単 調に増大する(モジュロn)数値的シリアル番号識別タグを割当てる段階; − 前記データ構造内の活動状況インジケータを前記タグに基づいて各々の発行 済み命令と結びつける段階; − 全て命令について、その命令が発行された時点ですでに発行されていたこと を表示するため、各々の発行済み命令を用いて前記データ構造内の前記n個の場 所のうちの固有の1つの場所で前記活動状況インジケータの最初の要素をセット する段階; − 長待ち時間命令について、前記命令がその発行時点で長待ち時間命令である ことを表示するべく、前記活動状況インジケータの第2の要素をセットする段階 ; − 予測された結果に基づいて投機的に発行された命令について、その命令がそ の発行時点で投機的に発行された命令であることを表示するべく、前記活動状況 インジケータの1要素をセットする段階; − 前記命令がエラー無く完了した時点で、それがすでにエラー無く完了してい たことを表示するべく、前記データ構造内の前記活動状況インジケータをクリア する段階; − エラー無しで完了していた前記順序的に最後の連続的命令、前記順序的に最 も早期の投機的未解決予測命令及び、前記識別された最後の連続的エラー無し完 了済み命令と前記識別された早期未解決予測命令の間に順序づけされた前記長待 ち時間命令を含む、発行済みの各々の命令についての実行状況を決定するべく、 発行済みの複数の命令についての前記活動状況インジケータを評価することによ り、発行済み命令の実行状況をトラッキングする段階、 をさらに含んで成る請求項40に記載の方法。 42.エラー無しで完了し取消しの必要が全く無く順序的に最後の連続的命令を 識別するための前記段階には、前記データ構造内の1つのエントリをポイントし 、最後の非活動化済み命令を表示する第2のポインタを設定する段階が含まれて おり、前記最後の非活動化済み命令は、順序的に先行する全てのin-order命令も エラー無しで完了している。エラー無しで完了した順序的に最後のin-order命令 であり、前記第2のポインタにより識別された命令よりも早い順序のin-order命 令が、分岐誤予測及び例外とは無関係に実行可能であり; − その実行を取消さなければならない可能性のある順序的に最も早期の投機的 で未解決の予測された制御転送命令を識別する前記段階には、前記データ構造内 の1つのエントリをポイントし、順序的に最も早期のin-order未解決分岐命令を 表示する第1のポインタ(PBSN)を設定する段階が含まれており、前記第1のポ インタによって識別された命令より順序的に早期のin-order命令が分岐誤予測と は無関係に実行可能であり; − 前記識別された最後の連続的エラー無し完了命令と前記識別された最早期未 解決予測制御転送命令の間に順序づけされたあらゆる長待ち時間命令を識別する 前記段階が、前記第2のポインタ(CSN)と前記第3のポインタ(NMCSN)の間の あらゆる長待ち時間命令を実行のためにスケジュールすべく利用可能なものとし て識別するが、前記第2のポインタ(NMCSN)と前記第1のポインタ(PBSN)の 間のあらゆる非長待ち時間命令を実行のためにスケジュールすべく利用可能なも のとしては識別しない段階を含んでいる、請求項41に記載の方法。 43.前記識別段階は、各々のマシンサイクル毎に前記状況インジケータ要素を 論理的に比較するブール論理比較演算を実行し、前記より高い数値的シリアル番 号識別タグに対応する記憶場所に向かって前記ポインタの各々を前進させること によって実行される請求項42に記載の方法。 44.前記長待ち時間命令が、前記外部メモリを参照する命令を含んでいる請求 項40に記載の方法。 45.前記外部メモリ参照命令には、ロード命令とストア命令が含まれている請 求項44に記載の方法。 46.内部レジスタ及び外部メモリを有する投機的out-of-order実行プロセッサ の中で、プロセッサ内の精確な状態を危険にさらすことなく前記内部レジスタの みを参照する命令に先立ちアーキテクチャ状態を修正できるメモリ参照命令をス ケジュールするための方法において、 − 複数の命令についての状況情報を記憶するため、前記プロセッサ内のレジス タの中にデータ構造を設定する段階; − 前記データ構造の中の1つのエントリをポイントし最早期未解決分岐命令を 表示する第1の予測された分岐命令シリアル番号ポイ ンタ(PBSN)を設定する段階であって、この第1のポインタによって識別された 命令よりも順序的に早期のin-order命令は、分岐誤予測とは無関係に実行可能で ある、段階; − 前記データ構造内の1つのエントリをポイントし、最後の非活動化された命 令を表示する第2のポインタ(CSN)を設定する段階であって、この最後の非活 動化された命令は、順序的に前のin-order命令が全てエラー無しで完了しており それ自体エラー無しで完了した順序的に最後のin-order命令であり、前記第2の ポインタにより識別された命令より順序的に早期のin-order命令は、分岐誤予測 及び例外とは無関係に実行可能である、段階; − 前記データ構造内の1つのエントリをポイントし、メモリ参照命令以外の最 後に完遂された命令を表示する第3の非メモリ完遂シリアル番号ポインタ(NMCS N)を設定し、前記第2のポインタ(CSN)を通過しさらに前記メモリ参照命令の うちの任意のものをあたかもそれらも同様に完遂されたかのごとくに通過して前 進する段階; − 前記第2のポインタ(CSN)と前記第3のポインタ(NMCSN)の間のあらゆる メモリ参照命令を実行のためにスケジュールすべく利用可能なものとして識別す るものの、前記第2のポインタ(NMCSN)と前記第1のポインタ(PBSN)の間の 任意のメモリ参照命令を実行のためスケジュールするのに利用可能なものとして 識別しない段階; を含んで成り、かくして 長待ち時間メモリ参照命令は短待ち時間レジスタ参照命令から結合解除され、 − 分岐誤予測及び実行例外とは無関係に実行のためにスケジュールされ得るメ モリ参照命令のみをスケジュールすることによって精確な状態が維持される、 スケジューリング方法。 47.前記データ構造内の1つのエントリをポイントしメモリを参照する命令以 外の最後の完遂済み命令を表示する前記第3のポインタ(NMCSN)を設定し、前 記第2のポインタ(DSN)を通過し前記メモリを参照指示する命令をあたかもそ れらが同様に完遂されたかのごとく通過して前進し、さらに、活動中の又は非活 動化された状況インジケータのいずれを有するかとは無関係に非障害発生命令で あるものと予め決定されたあらゆる命令を通過して前進する段階をさらに含んで 成る請求項46に記載の方法。 48.内部のレジスタと外部のメモリ、命令発行ユニット及び命令実行ユニット を有する投機的out-of-order実行プロセッサの中で、このプロセッサ内の精確な 状態を危険にさらすことなくレジスタのみを参照する命令に先立つアーキテクチ ャ状態を修正することのできるメモリ参照命令を攻撃的にスケジュールするため の方法において; − メモリ参照命令及び非メモリ参照命令上に第1の状況情報を記憶するための 複数のアドレス可能なデータ記憶要素を含む第1のデータ構造を規定する段階、 − メモリ参照命令上に第2の状況情報を記憶するための複数のアドレス可能な データ記憶要素を含む第2のデータ構造を規定する段階; − 各々前記アドレス可能なデータ記憶要素の1つをポイントする、発行済みシ リアル番号ポインタ(ISN)、完遂済みシリアル番号ポインタ(CSN)、最早期未 解決予測制御転送命令シリアル番号ポインタ(PBSN)、非メモリ参照命令完遂済 みシリアル番号ポインタ(NMCSN)を含む複数のポインタを規定する段階; − 前記アドレス可能なデータ記憶要素のうちの予め定められたものを非固有的 にポイントするよう前記複数のポインタの各々を初期 設定する段階; − 前記命令発行ユニットから少なくとも1つの命令を発行する段階; − 前記発行済み命令の各々がメモリを参照するか否かを決定する段階; − 前記命令発行ユニットからの命令発行信号に応えて、メモリ参照命令及び非 メモリ参照命令について活動中の命令を表示するように前記第1のデータ構造内 の前記第1のインジケータをセットする段階、 − 非メモリ参照命令についてのみ活動中の命令を表示するよう前記第2のデー タ構造内の前記第2のインジケータをセットし、前記命令発行ユニットからの命 令発行信号に応えてメモリ参照命令についてこの命令が非活動中であることを表 示するべく前記第2のインジケータをクリアする段階、 − (i)命令が完了したこと及びこの完了にエラーが伴うか伴わないかを表示 する前記実行ユニットからの命令完了信号、及び(ii)予測された制御転送が適 正に予測されたか否かを表わす予測評価状況ユニットからの制御転送命令のため の予測評価状況信号、に応えて前記命令の現行状況を活動中又は非活動中として 表示するように発行済みの各々の命令について前記第1及び第2のデータ構造内 の前記第1及び第2のインジケータを各々変更することによって前記インジケー タの状況を更新する段階; − 最後の発行済み命令番号をポイントするべく、現行マシンサイクル中に発行 された命令の数を表示する命令発行ユニットからの信号に応えて、前記ISN ポイ ンタを前進させる段階; − 前記CSN ポインタから出発して増大するシリアル番号順で前記第1のインジ ケータを順序評価し、非活動中の命令インジケータを もつ最後のシリアル番号を決定するべく前記ISN ポインタに向かって評価し、非 活動中の命令インジケータをもつ前記最後のシリアル番号をポイントするべく前 記CSN ポインタを前進させる段階; − 予測評価状況ユニットからの予測評価状況信号に応えて最も早期の未解決分 岐命令の場所をポイントするべく前記PBSNポインタを前進させる段階; − 最後の完遂済み命令の場所をポイントするべく前記NMCSN ポインタを前進さ せ、さらに、前記第2のデータ構造内の前記第2のインジケータの評価に基づい て、前記PBSNポインタを上へあらゆる未完遂で活動中のメモリ命令を通過してCS N の前に前進させる段階; − 予測制御転送命令の誤予測又は実行例外の発生の時点で精確な状態を回復す ることができるように、(i)制御転送命令及び(ii)投機的に修正できる制御 レジスタ値を修正するという副作用をもつと考えられる命令である各々の命令を 実行する直前にマシン状態情報を記憶する段階;及び − 投機的に修正できない制御レジスタ値を修正するという副作用をもち得る命 令を実行する直前に全ての保留命令を完遂し退去させるべくマシンを同期化する 段階; を含んで成り、かくして非メモリ参照命令に比べより多くのマシンサイクルを実 行することを必要とするメモリ参照命令は、命令実行状況が許せば直ちに、ただ し精確な状態を危険にさらすことなく、実行のためにスケジュールできるように なる方法。 49.前記複数の規定されたポインタにはさらに、前記アドレス可能なデータ記 憶要素のうちの1つをポイントする資源再生ポインタ(RRP)が含まれており、 さらに − 割振られた全てのマシン資源がマシンによって再生された、完遂されている 最後の命令をポイントするべく、命令完遂及び再生ユ ニット(ICRU)からの信号に応えて前記in-order RRPポインタを前進させる段階 を含んで成る、請求項48に記載の方法。 50.前記メモリ参照命令が、ロード命令、ストア命令及び原子命令を含むグル ープの中から選択される、請求項48に記載の方法。 51.前記ISN ポインタを前進させる前記段階が、以前のマシンサイクルの最後 の発行済み命令シリアル番号のシリアル番号に基づいており、前記信号は、現マ シンサイクル中に発行された命令の数を識別する請求項48に記載の方法。 52.前記CSN ポインタを前進させる前記段階は、各マシンサイクル上のシリア ル番号の予め定められた数だけ、前記CSN ポインタを前進させることに制限され ている請求項48に記載の方法。 53.前記制御転送命令には分岐命令が含まれている請求項48に記載の方法。 54.内部データ記憶装置をもち外部メモリと連絡している投機的out-of-order 実行プロセッサの中で、精確な例外モデルを維持するロード及びストア命令を含 めたメモリ参照命令をトラッキングし攻撃的にスケジュールするための方法にお いて、 − 前記プロセッサ内での実行のため複数の命令を発行する段階; − 前記発行された命令のうちのどれに投機的実行が関与するかを識別し、各々 の前記投機的命令に付随するインジケータを記憶する段階; − 前記発行済み命令のうちのどれが外部メモリを参照するかを識別し、各々の 前記メモリ参照命令に付随するインジケータを記憶する段階; − 各命令について完了状況を決定するべくエラー無しの実行完了を監視するこ とを含め、前記命令の発行後に前記複数の命令の実行状況を監視する段階; − 前記発行された命令の実行状況をトラッキングする段階;及び − 投機的命令であるものとしての識別を含むその他の命令の状況及び前記複数 の命令の前記実行完了状況に基づいて、非メモリ参照命令に先立って実行するた めに前記発行済みのメモリ参照命令をスケジュールする段階、 を含んで成る方法。 55.内部のレジスタと外部のメモリを含むデータ記憶手段、命令発行ユニット 及び命令実行ユニットを有する投機的out-of-order実行プロセッサの中で、この プロセッサ内の精確なアーキテクチャ状態を維持しながら、順序的にout-of-ord erで低待ち時間命令に先立って、アーキテクチャ状態を修正できる長待ち時間命 令を攻撃的にスケジュールするための装置において、 − エラー無く実行を完了し取消す必要が全く無い順序的に最後の連続的命令を 識別するための手段; − 実行の予測が誤った場合実行が取消されなくてはならない可能性のある順序 的に最も早期の投機的発行済みで未解決の予測された制御転送命令を識別するた めの手段; − エラー無しで実行を完了し取消す必要の全く無い前記識別された順序的に最 後の連続的命令と、実行の予測を誤った場合取消さなければならない可能性のあ る前記識別された順序的に早期の投機的発行済みで未解決の予測された制御転送 命令の間に順序づけされたあらゆる長待ち時間命令を識別するための手段であっ て、この長待ち時間命令は、長待ち時間命令であるものとして予め指定された予 め定められた命令セットと、発行済み命令を比較することによって識別される、 識別用手段; − 中間実行のための前記識別された長待ち時間命令をスケジュールするための 手段; を含んで成り、 かくして、誤予測をした可能性のある投機的に発行済みの介入する制御転送命 令及びそうでなければ実行例外を生成した可能性のある命令とは無関係に、実行 のためスケジュールされ得る長待ち時間命令のみを実行のためにスケジュールす ることによって、長待ち時間命令が攻撃的に発行され精確な状態が維持されるこ とになる、装置。 56.− nのアドレス可能場所0,1,2,…n−1,n−1を有し、アドレ ス可能場所n−1がこのデータ記憶手段内で論理的にアドレス可能な場所0と隣 接している、円形モジュロnデータ構造; − 各命令が発行されるにつれて、各々の発行された命令に対して単調に増大す る(モジュロn)数値的シリアル番号識別タグを割当てるための手段; − 前記データ構造内の活動状況インジケータを前記タグに基づいて各々の発行 済み命令と結びつけるための手段; − その命令が発行された時点ですでに発行されていたことを表示するため、前 記発行済み命令の各々全てについて前記データ構造内の前記n個の場所のうちの 固有の1つの場所で前記活動状況インジケータの最初の要素をセットするための 手段; − 長待ち時間命令として識別された命令についてのみ、前記命令がその発行時 点で長待ち時間命令であることを表示するべく、前記活動状況インジケータの第 2の要素をセットするための手段; − 予測された結果に基づいて投機的に発行された命令についてのみ、その命令 がその発行時点で投機的に発行された命令であることを表示するべく、前記活動 状況インジケータの1要素をセットするための手段; − 前記命令がエラー無く完了した時点で、それがすでにエラー無く完了してい たことを表示するべく、前記データ構造内の前記活動状況インジケータをクリア するための手段; − エラー無しで完了していた前記順序的に最後の連続的命令、前記順序的に最 も早期の投機的未解決予測命令及び、前記識別された最後の連続的エラー無し完 了済み命令と前記識別された早期未解決予測命令の間に順序づけされた前記長待 ち時間命令を含む、発行済みの各々の命令についての実行状況を決定するべく、 発行済みの複数の命令についての前記活動状況インジケータを評価することによ り、発行済み命令の実行状況をトラッキングするための手段、 をさらに含んで成る請求項55に記載の装置。 57.エラー無しで完了した順序的に最後の連続的命令を識別するための前記段 階には、前記データ構造内の1つのエントリをポイントし、最後の非活動化済み 命令を表示する第2のポインタを設定するための手段が含まれており、前記最後 の非活動化済み命令は、順序的に先行する全てのin-order命令もエラー無しで完 了している、エラー無しで完了した順序的に最後のin-order命令であり、前記第 2のポインタにより識別された命令よりも早い順序のin-order命令が、分岐誤予 測及び例外とは無関係に実行可能であり; − その実行を取消さなければならない可能性のある順序的に最も早期の投機的 で未解決予測制御転送命令を識別するための前記手段には、前記データ構造内の 1つのエントリをポイントし、順序的に最も早期のin-order未解決分岐命令を表 示する第1のポインタ(PBSN)を設定するための手段が含まれており、前記第1 のポインタによって識別された命令より順序的に早期のin-order命令が分岐誤予 測とは無関係に実行可能であり; − 前記識別された最後の連続的エラー無し完了命令と前記識別さ れた最早期未解決予測制御転送命令の間に順序づけされたあらゆる長待ち時間命 令を識別するための前記段階が、前記第2のポインタ(CSN)と前記第3のポイ ンタ(NMCSN)の間のあらゆる長待ち時間命令を実行のためにスケジュールすべ く利用可能なものとして識別するが、前記第2のポインタ(NMCSN)と前記第1 のポインタ(PBSN)の間のあらゆる非長待ち時間命令を実行のためにスケジュー ルすべく利用可能なものとしては識別しないための手段を含んでいる、請求項56 に記載の装置。 58.前記識別用手段には、各マシンサイクル毎に前記状況インジケータ要素を 論理的に比較するためのブール論理回路、及び前記ポインタの各々を、前記より 高い数値的シリアル番号識別タグに対応する場所まで前進させるための手段が含 まれている請求項57に記載の装置。 59.前記長待ち時間命令には、前記外部メモリを参照する命令を含まれており 、ロード命令及びストア命令を含むあらゆる長待ち時間命令を識別するための前 記手段が、命令を復号し外部メモリ参照命令を識別するための命令デコーダを含 んでいる請求項58に記載の装置。 60.複数の内部プロセッサレジスタ及び外部メモリ、命令発行ユニット及び命 令実行ユニットを有する投機的なout-of-order実行プロセッサの中で、このプロ セッサ内の精確な状態を危険にさらすことなくレジスタのみを参照する命令に先 立つアーキテクチャ状態を修正することのできるメモリ参照命令を攻撃的にスケ ジュールするための装置において; − メモリ参照命令及び非メモリ参照命令上に第1の状況情報を記憶するための 複数のアドレス可能なデータ記憶要素を含む第1のデータ構造; − メモリ参照命令上に第2の状況情報を記憶するための複数のアドレス可能な データ記憶要素を含む第2のデータ構造; − 各々前記アドレス可能なデータ記憶要素の1つをポイントする、発行済みシ リアル番号ポインタ(ISN)、完遂済みシリアル番号ポインタ(CSN)、最早期未 解決予測制御転送命令シリアル番号ポインタ(PBSN)、非メモリ参照命令完遂済 みシリアル番号ポインタ(NMCSN)を含む前記内部プロセッサレジスタ内に構成 され複数のポインタ値を記憶する複数のポインタ記憶レジスタ; − 前記アドレス可能なデータ記憶要素のうちの予め定められたものをポイント するよう前記複数のポインタの各々を初期設定する手段; − 前記命令発行ユニットから少なくとも1つの命令を発行する手段; − 前記発行済み命令の各々が前記外部メモリを参照するか否かを決定する手段 ; − 前記命令発行ユニットからの命令発行信号に応えて、メモリ参照命令及び非 メモリ参照命令について活動中の命令を表示するように前記第1のデータ構造内 の前記第1のインジケータをセットする手段; − 非メモリ参照命令についてのみ活動中の命令を表示するよう前記第2のデー タ構造内の前記第2のインジケータをセットし、前記命令発行ユニットからの命 令発行信号に応えてメモリ参照命令についてこの命令が非活動中であることを表 示するべく前記第2のインジケータをクリアする手段; − (i)命令が完了したこと及びこの完了にエラーが伴うか伴わないかを表示 する前記実行ユニットからの命令完了信号、及び(ii)予測された制御転送が適 正に予測されたか否かを表わす予測評価 状況ユニットからの制御転送命令のための予測評価状況信号、に応えて前記命令 の現行状況を活動中又は非活動中として表示するように発行済みの各々の命令に ついて前記第1及び第2のデータ構造内の前記第1及び第2のインジケータを各 々変更することによって前記インジケータの状況を更新する手段; − 最後の発行済み命令番号をポイントするべく、現行マシンサイクル中に発行 された命令の数を表示する命令発行ユニットからの信号に応えて、前記ISN ポイ ンタを前進させる手段; − 前記CSN ポインタから出発して増大するシリアル番号順で前記第1のインジ ケータを順序評価し、非活動中の命令インジケータをもつ最後のシリアル番号を 決定するべく前記ISN ポインタに向かって評価し、非活動中の命令インジケータ をもつ前記最後のシリアル番号をポイントするべく前記CSN ポインタを前進させ る手段 − 予測評価状況ユニットからの予測評価状況信号に応えて最も早期の未解決分 岐命令の場所をポイントするべく前記PBSNポインタを前進させる手段; − 最後の完遂済み命令の場所をポイントするべく前記NMCSN ポインタを前進さ せ、さらに、前記第2のデータ構造内の前記第2のインジケータの評価に基づい て、前記PBSNポインタを上へあらゆる未完遂で活動中のメモリ命令を通過してCS Nの前に前進させる手段; − 予測制御転送命令の誤予測又は実行例外の発生の時点で精確な状態を回復す ることができるように、(i)制御転送命令及び(ii)投機的に修正できる制御 レジスタ値を修正するという副作用をもつと考えられる命令である各々の命令を 実行する直前にマシン状態情報を記憶する手段;及び − 投機的に修正できない制御レジスタ値を修正するという副作用をもち得る命 令を実行する直前に全ての保留命令を完遂し退去させ るべく前記プロセッサを同期化する手段; を含んで成り、かくして非メモリ参照命令に比べより多くのマシンサイクルを実 行することを必要とするメモリ参照命令は、命令実行状況が許せば直ちに、ただ し精確な状態を危険にさらすことなく、実行のためにスケジュールできるように なる装置。 61.前記複数の規定されたポインタにはさらに、前記アドレス可能なデータ記 憶要素のうちの1つをポイントする資源再生ポインタ(RRP)が含まれており、 さらに − 割振られた全てのマシン資源がマシンによって再生された完遂されている最 後の命令をポイントするべく、命令完遂及び再生ユニット(ICRU)からの信号に 応えて前記in-order RRPポインタを前進させる手段を含んで成る、請求項60に記 載の方法。 62.中央処理ユニット(CPU)についての精確なアーキテクチャ状態を維持し ながらチェックポイント実行済み状態を低減させるべくこのCPU 内の命令をチェ ックポイント実行するための方法において、 − 前記CPU 内で実行されたときにアーキテクチャ状態を修正する可能性のある 命令を、その発行及び実行前に予め識別する段階; − 予め定められた選択基準に基づいて実行する前にアーキテクチャ状態をチェ ックポイント実行せずに特別な実行モードにて実行するための、前記識別された 命令のうちの特定の命令を予め選択する段階; − 実行に先立ち前記予め選択された特定の命令以外の前記識別された命令につ いてアーキテクチャ状態をチェックポイント実行する段階;及び − 前記特殊モードでの前記命令のうちの特定の命令の実行を含め、前記識別さ れた命令を実行する段階、 を含んで成る方法。 63.前記予め定められた基準には、修正可能な状態のタイプ及び実行中に命令 によって修正され得る修正可能状態の量、が含まれる、請求項62に記載の方法。 64.前記予め定められた基準には、予め定められた名目命令ストリーム内で命 令が発生する頻度がさらに含まれている、請求項63に記載の方法。 65.前記予め定められた基準には、さらに、前記CPU 内の特定のタイプの処理 タスクについて前記選択基準を最適化できるように前記予め定められた名目命令 ストリームの組成が含まれている請求項64に記載の方法。 66.前記予め定められた基準には、 − 前記予め識別された命令のうちの各々の特定の命令によって修正可能な状態 ; − 前記予め識別された命令のうちの各々の特定の命令の修正可能な状態につい ての記憶必要条件;及び、 − いくつかの予め定められた名目処理タスクについて前記予め識別された命令 のうちの各々の特定の命令が発生する推定上の統計的頻度; が含まれている請求項62に記載の方法。 67.前記予備選択段階には、 − 前記特別な実行モードでの実行のために、予め定められた低い推定上の統計 的頻度で発行され比較的多いチェックポイント記憶量を必要とするような予め識 別された命令を選ぶ段階;及び − 正規の処理モードで、予め定められた高い頻度で発行され比較的少ないチェ ックポイント記憶量を必要とするような予め識別された命令を選ぶ段階; が含まれている、請求項66に記載の方法。 68.前記特別な実行モードには、前記選択された命令の実行を開始する前に前 記CPU を同期化する段階が含まれている請求項67に記載の方法。 69.前記CPU 同期化段階には、 − 実行前に命令ストリーム内でマシンの同期化を必要とする同期化命令として 、1つの命令を識別する段階; − 実行がエラー無く完了し実行結果が状態ライトバックされてしまうように全 ての保留中の発行済み命令が完遂され退去されるまで、前記同期化命令の実行を 遅延させる段階; − マシンの同期化を必要とする命令を逐次的かつin-orderで実行する段階; − 状態ライトバックが行なわれる前に、前記同期化命令の各々の実行から生じ る例外条件を識別する段階; − 前記同期化命令の実行中に生じ得る前記例外条件のいずれかをとり扱う段階 ;及び − 実行結果をマシン状態へライトバックする段階; が含まれており、かくして前記同期化命令をチェックポイント実行することなく 精確な状態が維持される、請求項68に記載の方法。 70.1つの命令を同期化命令として識別する前記段階には、その命令を発行前 に同期化命令として識別することが含まれており、前記同期化命令の実行を遅延 させる前記段階にはさらに、全ての保留中の発行済み命令が完遂され退去されて しまうまで前記同期化命令の発行を遅延させることが含まれている請求項68に記 載の方法。 71.前記識別された命令には、予測されたプログラム制御転送命令、プログラ ムフローを修正できる命令、マシン状態を修正できる命令及び、制御レジスタ値 を修正する副作用をもち得る命令、が含 まれる請求項68に記載の方法。 72.前記プログラムフローを修正しうる命令にはBPr,FBcc,FBPcc,Bcc,BPc c,CALL,JMPL,TCC,RETURN,DONE,RETRY、及びそれらの組合せから成るグル ープの中から選択されたSPARC−V9命令セット内で実施された命令が含まれてい る請求項71に記載の方法。 73.前記マシン状態を修正できる命令には、制御レジスタ内で制御レジスタに 書込む命令、及びレジスタウインドウ制御命令が含まれている請求項71に記載の 方法。 74.前記マシン状態を修正できる命令には、制御レジスタ内で制御レジスタを 読取る命令が含まれている請求項71に記載の方法。 75.前記識別された命令にはさらに、往々にして発行トラップを結果としても たらす命令が含まれている請求項71に記載の方法。 76.前記識別された命令にはさらに、トラップが投機的にとられた場合に復帰 を行なうことができるように、トラップハンドラルーチン内の第1命令が含まれ ている請求項71に記載の方法。 77.前記CPU についての精確なアーキテクチャ状態を維持しながらチェックポ イント実行済み状態を低減させるべく命令をチェックポイント実行するための方 法において、 − 前記CPU 内で実行されたときにアーキテクチャ状態を修正する可能性のある 命令を、その発行及び実行前に予め識別する段階; − 予め定められた選択基準に基づいて実行する前にアーキテクチャ状態をチェ ックポイント実行せずにマシン同期化モードにて実行するための、前記識別され た命令のうちの特定の命令を予め選択する段階; を含み、 前記予め定められた基準には、 − 前記予め識別された命令のうちの各々の特定の命令によって修 正可能である状態; − 前記予め識別された命令のうちの各々の特定の命令の修正可能な状態につい ての記憶必要条件; − いくつかの予め識別された名目処理タスクについて前記予め識別された命令 のうちの各々の特定の命令が発生する推定上の統計的頻度、 が含まれており、 前記予備選択段階には、 − 前記特別な実行モードでの実行のために、予め定められた低い推定上の統計 的頻度で発行され比較的多いチェックポイント記憶量を必要とするような予め識 別された命令を選ぶ段階;及び、 − 正規の処理モードで、予め定められた高い頻度で発行され比較的少ないチェ ックポイント記憶量を必要とするような予め識別された命令を選ぶ段階; が含まれており、 さらには、 − 実行に先立ち前記予め定め選択された特定の命令以外の前記識別された命令 についてアーキテクチャ状態をチェックポイント実行する段階;及び − 前記マシン同期化モードでの前記命令のうちの特定の命令の実行を含め、前 記識別された命令を、それらが前記命令ストリーム内に発生するにつれて実行す る段階; を含んで成り、 前記マシン同期化モードにはさらに、 − 発行前に命令ストリーム内でマシンの同期化を必要とする同期化命令として 、1の命令を識別する段階; − 前記同期化命令以外の命令を発行し、保留中の発行済み命令が エラー無しで実行を完了しこの実行からの結果が状態ライトバックされてしまう まで前記同期化命令の実行を遅延させる段階; − マシン同期化を必要とする各々の命令を逐次的かつin-orderで発行する段階 ; − 状態ライトバックが行なわれる前に、前記同期化命令の各々の実行から生じ る例外条件を識別する段階; − 前記同期化命令の実行中に生じ得る前記例外条件のいずれかをとり扱う段階 ;及び − 実行結果を状態ライトバックする段階; が含まれており、かくして前記同期化命令をチェックポイント実行することなく 精確な状態が維持される、方法。 78.命令状況をトラッキングし、この命令状況に基づいてチェックポイントを 割振り及び割振り解除するための方法において、 − 前記CPU のメモリ内のデータ記憶領域内に1つのデータ構造を設定する段階 ; − 前記データ構造内で、複数のチェックポイント状況フィールドを有し単一の チェックポイントに各々対応している複数のチェックポイント割振りレジスタを 規定する段階; − 命令シリアル番号SNをもつ命令のために次の逐次的に利用可能なチェックポ イント割振りレジスタnを割振り、前記複数の状況フィールド内で前記命令のた めのチェックポイント状況情報を記憶する段階、 − 完遂済みの命令シリアル番号ポインタ(CSN)が、チェックポイントn及び 次の記憶されたチェックポイントn+1に付随する命令シリアル番号SNを通過し たか否かを決定するため、予め定められた時間的間隔で、完遂済みシリアル番号 ポインタ(CSN)を監視する段階; − CPU のバックアップ信号に応答して、前記CPU に対して、前記チェックポイ ント割振りレジスタ内に記憶された情報を伝達する段階;及び − 完遂済み命令シリアル番号ポインタ(CSN)がチェックポイントn及び次の チェックポイントn+1に付随する命令シリアル番号を通過したという決定に応 答して、以前に割振られたチェックポイントを割振り解除する段階、 を含んで成る方法。 79.CPU が、チェックポイントが形成されたチェックポイントシリアル番号を 通過してバックアップしたことを表わすCPU バックアップ信号の受理に応答して 、以前に割振られたチェックポイントを割振り解除する段階をさらに含んで成る 請求項78に記載の方法。 80.前記データ構造内で、複数のチェックポイント状況フィールドをもち単一 のチェックポイントに各々対応する複数のチェックポイント割振りレジスタを構 成する前記段階には、 − 各々の前記チェックポイントレジスタで、そのチェックポイントが割振りさ れたか及びその特定のチェックポイント内に記憶された情報が有効なチェックポ イント情報かを指示する第1の有効性状況フィールドを規定する段階; − 各々の前記チェックポイントレジスタで、完遂済みシリアル番号命令ポイン タ(CSN)がレジスタ内に記憶された特定のチェックポイントの命令シリアル番 号(SN)を通過したか否かを表示することによってチェックポイントが通過され たか否かを指示する第2のチェックポイント通過済み状況フィールドを規定する 段階; − 各々の前記チェックポイントレジスタで、完遂済み命令シリアル番号ポイン タ(CSN)に付随する条件を指示する第3の状況フィールドを規定する段階; − 各々の前記チェックポイントレジスタで、完遂済み命令シリアル番号ポイン タ(CSN)がチェックポイントのシリアル番号よりも大きいか否かを指示し、完 遂済みシリアル番号がこのチェックポイントを通過した時点を見極めるために用 いられる、第4の比較的大きい状況フィールドを規定する段階; − 各々の前記チェックポイントレジスタで、チェックポイント実行されたシリ アル番号の後の次のシリアル番号(NSN)を指示する第5の次シリアル番号状況 フィールドを規定する段階、 を含んで成る請求項78に記載の方法。 81.前記第1の状況フィールドが1ビットのフィールドであり、前記第2の状 況フィールドが1ビットのフィールドであり、前記第3の状況フィールドが3ビ ットのフィールドであり、前記第4の状況フィールドが1ビットのフィールドで あり、前記第5の状況フィールドが6ビットのフィールドである、請求項80に記 載の方法。 82.命令シリアル番号SNをもつ命令についてチェックポイントiを割振る前記 段階には、 − 次の利用可能なチェックポイント番号iを識別し、この番号iに基づいて前 記チェックポイント割振りレジスタiの中へ指標づけする段階; − 前記チェックポイントiが有効であり退去されていないことを表示するべく 前記レジスタの前記第1のフィールドに「1」を書込む段階; − 前記チェックポイントiを通過していないことを表示するため前記第2のフ ィールド内に「0」を書込む段階; − 円形の活動中の命令状況リングのまわりからの前記完遂済み命令シリアル番 号ポインタ(CSN)の遷移を検出することができるように、前記チェックポイン トiが割振られた時点で前記完遂済み命令 シリアル番号ポインタ(CSN)の場所を表示するべく前記第3のフィールド内に 複数の状態のうちの1つを書込む段階; − チェックポイントのシリアル番号と完遂済みシリアル番号ポインタ(CSN) を比較し、完遂済みシリアル番号の方が大きい場合、完遂済みシリアル番号がこ のチェックポイントを通過したことを表示するため、前記第4の状況フィールド 内にインジケータを書込む段階;及び − 第5の状況フィールド内に、そのチェックポイントが形成された命令シリア ル番号に関係する情報を書込む段階、 が含まれている請求項80に記載の方法。 83.前記命令シリアル番号に関係する情報は、そのチェックポイントが形成さ れたシリアル番号である、請求項80に記載の方法。 84.前記命令シリアル番号に関係する情報は、そのチェックポイントが形成さ れたシリアル番号に1シリアル番号を増分した番号である請求項8に記載の方法 。 85.完遂済み命令シリアル番号ポインタ(CSN)がチェックポイントn及びチ ェックポイントn+1に付随する命令シリアル番号を通過したという決定に応答 して以前に割振られたチェックポイントを割振り解除する前記段階にはさらに、 − チェックポイントレジスタ内に記録されたシリアル番号と完遂済みシリアル 番号ポインタの間の差を計算することによって完遂済みシリアル番号通過済み信 号を生成する段階;及び − 前記生成された完遂済みシリアル番号通過済み信号に応答して前記第1の状 況フィールドをクリアする段階、 が含まれている請求項82に記載の方法。 86.− CPU バックアップ表示信号; − CPU が、チェックポイントが形成された前記バックアップ表示 信号の中で識別されたチェックポイントシリアル番号を通過してバックアップし たか否かを決定する段階;及び − 前記決定が、バックアップがそのチェックポイントを通過して行なわれたこ とを識別した場合、このチェックポイントを割振り解除する段階; をさらに含んで成る請求項78に記載の方法。 87.− バックアップチェックポイントでの命令のシリアル番号を識別するCP U バックアップ表示信号を検出する段階; − チェックポイントが形成された前記バックアップ表示信号内で識別されたチ ェックポイントシリアル番号を通過してCPU がバックアップしたか否かを決定す る段階;及び − 前記生成された完遂済みシリアル番号通過済み信号に応えて、前記第1の状 況フィールドをクリアすることによってバックアップがチェックポイントを通過 してであることを前記決定が識別した場合に、前記チェックポイントを割振り解 除する段階、 をさらに含んで成り請求項85に記載の方法。 88.− 最後に発行された命令シリアル番号を表示する発行済みシリアル番号 (ISN)信号を受理する段階; − 最後に完遂された命令シリアル番号を表示する完遂済み命令シリアル番号( CSN)信号を受理する段階; − 完遂済みシリアル番号ポインタ(CSN)とバックアップチェックポイントの 間のシリアル番号を有する全ての発行済み命令をキルする段階; − バックアップチェックポイントに付随する次のシリアル番号を記憶する前記 第5の状況フィールドに基づいて前記バックアップ中に、発行済み命令シリアル 番号ポインタ(ISN)を更新する段階; − 未終了の浮動小数点例外又はデータ区切り点例外が検出された 場合にバックアップチェックポイントのためにチェックポイントレジスタ内に記 憶された次のシリアル番号値に基づいて発行済みシリアル番号ポインタ(ISN) を更新する段階; をさらに含んで成る請求項85に記載の方法。 89.チェックポイントのシリアル番号と完遂済みシリアル番号ポインタ(CSN )を比較する前記段階が、複数の前記チェックポイントレジスタについて同時に 行なわれる請求項82に記載の方法。 90.前記チェックポイントは、最後のチェックポイントが形成されてから予め 定められた数の事象が発生したこと及び命令タイプ属性とは無関係に付加的なチ ェックポイントが形成されるべきであることを表示するタイムアウトチェックポ イント割振り信号に応答して前記チェックポイントが割振られる請求項78に記載 の方法。 91.前記命令の実行に先立って前記CPU を同期化することによってCPU 内に精 確な状態を維持するための方法において、 − 実行前に命令ストリーム内でマシンの同期化を必要とする同期化命令として 、実行中にマシン状態を修正し得る1つの命令を識別する段階; − 前記保留中の命令の実行がエラー無く完了し実行結果がCPU 状態ライトバッ クされてしまうように全ての保留中の発行済み命令が完遂され退去されるまで、 前記同期化命令の実行を遅延させる段階; − マシンの同期化を必要とする命令を逐次的かつin-orderで実行する段階; − 状態ライトバックが行なわれる前に、前記同期化命令の各々の実行から生じ る例外条件を識別する段階; − 前記同期化命令の実行中に生じ得る前記例外条件のいずれかをとり扱う段階 ;及び − 実行結果をマシン状態へライトバックする段階; を含んで成り、かくして前記同期化命令によって修正可能な状態を予め記憶する ことなく前記同期化命令について精確な状態が維持されることになる、方法。 92.1つの命令を同期化命令として識別する前記段階には、その命令を発行前 に同期化命令として識別することが含まれており、前記同期化命令の実行を遅延 させる前記段階にはさらに、全ての保留中の発行済み命令が完遂され退去されて しまうまで前記同期化命令の発行を遅延させることが含まれている請求項91に記 載の方法。 93.CPU のための最適なチェックポイントサイズを設計する方法において、 − 前記CPU により支持されている命令セット内の各命令により修正可能なマシ ン状態を決定する段階; − いくつかの代表的名目処理タスクについて各々の特定の命令が発生する統計 的頻度を決定する段階; − 各命令について状態記憶必要条件を決定する段階; − チェックポイント情報のための最大記憶量を選ぶ段階; − 稀にしか発行されず、より頻繁に発生する命令に比べ比較的大きい量のチェ ックポイント記憶を必要とするような命令を選択するため最適化を行なう段階; − 前記割振りされた最大チェックポイントスペース内でチェックポイント実行 できるような命令のみをチェックポイント実行する段階; を含んで成る方法。 94.中央処理ユニット(CPU)内の精確な状態を維持しながらチェックポイン ト実行されたデータの量を減少させるべく1つの命令をチェックポイント実行す るための方法において、 − 前記中央処理ユニット内のデータ記憶装置内に複数のマップレジスタ要素を もつレジスタリネームマップデータ構造を規定する段階; − 1つの命令の実行に先立ちその命令が参照した各々の論理ソース及び/又は 論理宛先レジスタのために前記CPU 内の利用可能な物理レジスタを割振る段階; − 固有の論理レジスタタグにより、各々の前記論理ソースレジスタを識別する 段階; − 物理レジスタタグにより各々の割振り可能な物理レジスタを識別する段階; − 前記固有の論理レジスタタグのうちの1つと前記複数のマップレジスタ要素 のうちの各々1つを結びつける段階;及び − 各々のマップレジスタ要素が現在その論理レジスタタグに対してマッピング されている物理レジスタタグを記憶するような形で、この物理レジスタが割振ら れた固有の論理レジスタタグに付随するマップレジスタ要素の中に各々の前記割 振られた物理レジスタで識別された物理レジスタタグを記憶する段階; を含んで成り、 かくして、前記命令の発行の結果として前記レジスタのために変化した全ての 状態は記憶され、CPU バックアップが必要とされる場合に回復のため利用可能な 状態になる、方法。 95.− 前記CPU 内の利用可能な未割振り物理レジスタについて1つずつの物 理レジスタを各々記憶している複数のフリーリスト要素をもつフリー物理レジス タフリーリストデータ構造を規定する段階; − 論理レジスタを参照する命令がディスパッチされそうであるという命令発行 ユニットからの表示に応えて、ソース又は宛先レジス タとして論理レジスタを置換するのに使用するため命令発行ユニットに対しフリ ー物理レジスタタグを伝達する段階;及び − 前記命令発行ユニットに対する前記フリー物理レジスタタグの伝達時点で、 前記フリー物理レジスタフリーリストデータ構造から前記物理レジスタタグを除 去する段階 をさらに含んで成る、請求項94に記載の方法。 96.− データを記憶するための論理レジスタタグフィールド、旧物理レジス タタグフィールド及び再生要素妥当性フィールドを各々有する複数の再生要素を もつ資源再生ユニットを提供する段階; − 前記再生要素を固有の発行済み命令シリアル番号と結びつける段階;及び − 特定の論理レジスタを参照する命令シリアル番号SNの割当てられた命令の復 号に応えて: ・前記複数のリネームマップレジスタ要素のうちのどの特定の1つの要素が、 該当する場所、以前に復号され発行された命令について前記復号された命令の中 で参照された前記特定の論理レジスタと結びつけられたかを決定する段階、 ・前記特定の論理レジスタに付随する特定の物理レジスタタグを決定するため の前記特定のリネームマップレジスタ要素を読取る段階、 ・前記古い物理レジスタタグフィールドの中に前記特定の物理レジスタタグを 記憶し、前記命令シリアル番号SNに付随する再生要素の前記論理レジスタタグフ ィールドの中に前記特定の論理レジスタタグを記録して、旧物理レジスタ番号が 以前にマッピングした論理レジスタタグと共に記憶されるようにする段階; ・特定の再生要素が有効なデータセットを含有することを表示するため、前記 命令シリアル番号SNに付随する再生要素妥当性フィー ルド内に1つのインジケータを書込む段階; ・命令シリアル番号SNをもつ前記命令を実行する上で使用するため前記フリー リストから新しいフリー物理レジスタを識別し、前記フリー物理レジスタに対応 する新しいフリー物理レジスタタグを中に書込む段階; ・前記命令シリアル番号SNをもつ命令により参照された前記特定の論理レジス タについて新しい物理レジスタを割振る段階;及び ・各々のリネームマップレジスタ要素が、現在特定の論理レジスタにマッピン グされている物理レジスタタグを記憶するような形で前記論理レジスタを参照す る命令シリアル番号SNに応えて前記新しい物理レジスタが割振られた論理レジス タタグに付随するリネームマップレジスタ要素内に前記新たに割振られた物理レ ジスタに対応する前記新しい物理レジスタタグを記憶する段階; をさらに含んで成り、 かくして、前記資源再生ユニットは、必要とあらばより早期の論理−物理マッ ピングを再構築する元となる逐次履歴レジャーとして役立つことができる、請求 項95に記載の方法。 97.前記レジスタリネームマップデータ構造を規定する段階には、前記CPU 内 の複数のレジスタタイプの各々について別々のレジスタリネームマップデータ構 造を規定する段階が含まれており;前記フリー物理レジスタを規定する段階には 、前記CPU 内の複数のレジスタタイプの各々について別々のフリーリストデータ 構造を規定する段階が含まれており;前記資源再生ユニットを提供する段階には 、前記複数の別々のレジスタリネームデータ構造及び別々のフリーリストデータ 構造のうちの任意のものによりマッピングされた論理及び物理レジスタを記憶す る単一の資源再生ユニットを提供する段階が含まれている請求項96に記載の方法 。 98.− バックステップすべき命令の数の表示を含むCPU バックステップ開始 信号を受理する段階; − 最後の発行済み命令シリアル番号を表示する、発行済み命令シリアル番号( ISN)を受理する段階; − 前記受理された発行済み命令シリアル番号及び各再生要素と固有の発行済み 命令シリアル番号の前記結びつきに基づいて特定の再生要素を識別する段階; − 各々のリネームマップレジスタ要素が前記命令ISN の発行に先立ち特定の論 理レジスタにマッピングされた物理レジスタタグを記憶するように、前記発行済 み命令シリアル番号(ISN)に付随する前記資源再生要素の中に記憶されたデー タに基づいて命令シリアル番号ISN のための前記識別された特定のレジスタリネ ームマップ要素の中に記憶された論理レジスタから物理レジスタへのマッピング を回復する段階、及び − 発行済み命令シリアル番号を減分し、前記特定の再生要素の識別段階及び、 バックステップされるべき各命令のための識別された要素内に記憶された論理レ ジスタタグ−物理レジスタマッピングの前記回復段階をくり返す段階、 をさらに含んで成る、請求項96に記載の方法。 99.前記各々の命令シリアル番号において、論理レジスタから論理レジスタへ のマッピングを回復する段階には、 − 命令シリアル番号により前記資源再生データ構造へと逆方向に指標付けし、 前記命令シリアル番号に付随する前記旧物理レジスタタグフィールド内に記憶さ れた前記物理レジスタタグ及び前記論理レジスタタグフィールド内に記憶された 論理レジスタタグを読取る段階、 − 前記論理レジスタタグフィールドから読みとられた前記論理レ ジスタタグに付随するレジスタリネームマップ要素を識別する段階; − 中に記憶された物理レジスタタグを決定するべく前記論理レジスタタグに対 応するリネームマップ要素を読取る段階; − 前記物理レジスタフリーリスト内へ前記リネームマップ要素内に記憶された 前記決定された物理レジスタタグを書込む段階; − 前記資源再生ユニットの前記論理レジスタタグフィールドの中に記憶された 前記論理レジスタタグに対応するレジスタリネームマップ要素の中へ前記旧物理 レジスタタグフィールド内に記憶された前記物理レジスタタグを書込む段階、及 び − 再生要素が有効なデータセットを含まないことを表示するべく前記命令シリ アル番号のための前記再生要素妥当性フィールド内へインジケータを書込む段階 ; が含まれており、 かくして前記物理レジスタフリーリストユニット要素、前記レジスタリネーム マップ要素及び前記レジスタ再生ユニット要素が、前記特定の命令の発行の直前 に有していた状態まで回復されることになる請求項98に記載の方法。 100.− 資源退去ポインタ(RRP)として記憶された命令シリアル番号を決定 する段階; − 前記資源退去ポインタ(RRP)が特定の記憶された再生要素に付随する命令 シリアル番号SN以上となるよう前進させられた時点で命令シリアル番号SNのため の特別な論理レジスタに以前に割振られた物理レジスタの割振りを解放する段階 、 をさらに含んで成る請求項99に記載の方法。 101.前記物理レジスタの割振りを解放する段階には、 − 前記物理レジスタフリーリストの中へ、前記命令シリアル番号 に対応する前記特別なリネームマップ要素の中に記憶された前記物理レジスタタ グを書込む段階;及び − 再生要素が有効なデータセットを含まないことを表示するべく前記命令シリ アル番号のための前記再生要素妥当性フィールド内へ1つのインジケータを書込 む段階、 が含まれている、請求項100 に記載の方法。 102.前記命令の実行に先立ち物理レジスタを割振る前記段階には、実行ユニ ットに前記命令発行する前に前記物理レジスタを割振る段階が含まれている請求 項94に記載の方法。 103.前記複数のレジスタタイプが、整数レジスタタイプ、浮動小数点レジス タタイプ、条件コードレジスタタイプ、Y−レジスタタイプ、トラップスタック レジスタタイプから成るグループの中から選択される請求項97に記載の方法。 104.物理レジスタの数が論理レジスタの数よりも多く、各々の前記論理レジ スタを複数の物理レジスタ上へとマッピングすることができる請求項94に記載の 方法。 105.命令により参照される各々の論理レジスタは、任意の論理宛先レジスタ が物理レジスタへとマッピングされる前に物理レジスタマッピングされる、請求 項94に記載の方法。 106.構築されたレジスタ場所を物理レジスタ場所へマッピングすることによ り命令が発行された時点で使用されたレジスタについてのレジスタリネームを実 施するCPU において、精確な状態を維持しながらチェックポイント実行されたデ ータの量を減少させるための方法において、 − 前記発行済み命令により使用される論理ソースレジスタを識別する段階; − 利用可能な物理レジスタ上へと各々の識別された論理ソースレ ジスタをマッピングし、資源リネームデータ構造内に前記論理−物理マッピング を記憶する段階; − 前記発行済み命令によって使用される論理宛先レジスタを識別する段階; − 利用可能な物理レジスタ上に各々の識別された論理宛先レジスタをマッピン グし、資源リネームデータ構造内に前記論理−物理マッピングを記憶する段階; − フリー物理レジスタのリストを記憶するために前記CPU 内に第1のデータ記 憶装置を提供する段階; − 命令シリアル番号SN、命令シリアル番号SNをもつ前記命令により参照された 論理レジスタのための論理レジスタタグ及び前記論理レジスタにマッピングされ た物理レジスタのための物理レジスタタグを記憶するため、前記CPU 内に第2の データ記憶装置を提供する段階; − 命令実行に先立つ命令発行の間、命令実行の前に発行済み命令の影響を受け る前記リネームソース及び/又は宛先レジスタの状態に関するマシン状態データ を記憶することによって前記リネームされた論理及び物理レジスタをチェックポ イント実行する段階; を含んで成る方法。 107.− CPU バックアップ開始信号条件の受理に応答して、前記リネームマ ップを、バックアップを結果としてもたらした命令の実行の直前にそれが有して いた状態まで回復させることにより、より早期のマシン状態を回復する段階 をさらに含んで成る請求項106 に記載の方法。 108.命令を発行するための命令発行ユニット、及び命令を実行するための実 行ユニットを有する、in-orderで発行された命令のout-of-order投機的実行を実 施する中央処理ユニットの中で、 − 前記CPU 内で実行された時点でアーキテクチャ状態を修正する可能性があり 、実行に先立ちプロセッサの状態をセーブするべくチェックポイント実行される べき第1の命令タイプセットのアイデンティティを予備記憶するための記憶手段 ; − 前記CPU 内で実行された時点でアーキテクチャ状態を修正する可能性があり 、実行に先立つアーキテクチャ状態をチェックポイント実行することなく特別な 実行モードで実行されるべき第2の命令タイプセットのアイデンティティを予備 記憶するための記憶手段; − 前記第1及び第2の記憶された命令タイプと発行された命令タイプを比較し 、発行された命令が、正規実行モードでは実行前にチェックポイント実行される べきであり、特殊なプロセッサモードではチェックポイント実行無しに実行され るべきであることを表示する出力信号を生成するための比較器; − 実行に先立ち前記第1のタイプの命令についてアーキテクチャ状態をチェッ クポイント実行するべくチェックポイント形成を開始するため、前記比較器出力 信号に応答するチェックポイント手段;及び − 前記第2のタイプの命令を前記特殊な実行モードで実行することを含めた、 前記命令を実行するための命令実行手段、 を含む装置において、前記特殊な実行モードには、前記第2のタイプの命令を実 行する前に前記プロセッサを同期化するための手段が含まれている装置。 109.命令を発行するための命令発行ユニット、データを記憶するためのメモ リ及び命令を実行するための実行ユニットを有する、in-orderで発行された命令 のout-of-order投機的実行を実施する中央処理ユニットの中で、 − 前記CPU のメモリ内のデータ記憶領域内のデータ構造; − 前記データ構造内で各々対応する単一のチェックポイントに割振られ、複数 のチェックポイント状況フィールドを有する複数のチェックポイント割振りレジ スタ; − 命令シリアル番号SNをもつ命令のために次の逐次的に利用可能なチェックポ イント割振りレジスタnを割振るための手段; − 前記複数の状況フィールド内で前記命令のためのチェックポイント状況情報 を記憶するための手段; − 完遂済み命令シリアル番号ポインタ(CSN)がチェックポイントn及び次の 記憶されたチェックポイントn+1に付随する命令シリアル番号SNを通過したか 否かを決定するため予め定められた時間的間隔で完遂済みシリアル番号ポインタ (CSN)を監視するための手段; − CPU バックアップ信号に応答して前記チェックポイント割振りレジスタ内に 記憶された情報を前記CPU に伝達するための手段;及び − 完遂済み命令シリアル番号ポインタ(CSN)がチェックポイントn及び次の チェックポイントn+1に付随する命令シリアル番号を通過したという決定に応 答して、以前に割振られたチェックポイントを割振り解除するための手段; を含んで成り、 かくして命令状況がトラッキングされ、命令状況に基づいてチェックポイント が割振りされ割振り解除されることになる、装置。 110.命令を発行するための命令発行ユニット、データを記憶するためのメモ リ及び命令を実行するための実行ユニットを有する、in-orderで発行された命令 のout-of-order投機的実行を実施する中央処理ユニットの中で、選択された命令 の実行に先立ち前記CPU を同期化するための装置において、 − 実行前に命令ストリーム内でマシンの同期化を必要とする同期化命令として 、実行中にマシン状態を修正する可能性のある1つの命令を識別するための手段 ; − 前記保留中の命令の実行がエラー無く完了し実行結果がCPU 状態にライトバ ックされてしまうように全ての保留中の発行済み命令が完遂され退去されるまで 、前記同期化命令の実行を遅延させるための手段; − マシンの同期化を必要とする命令を逐次的かつin-orderで実行するための、 手段; − 状態ライトバックが行なわれる前に、前記同期化命令の各々の実行から生じ る例外条件を識別するための手段; − 前記同期化命令の実行中に生じ得る前記例外条件のいずれかをとり扱うため の例外ハンドラー;及び − 実行結果をマシン状態へライトバックするための手段、 を含んで成り、 かくして、前記同期化命令により修正可能な状態を予備記憶することなく、前 記同期化命令のために精確な状態が維持されることになる、装置。 111.命令を発行するための命令発行ユニット、データを記憶するためのメモ リ及び命令を実行するための実行ユニットを有する、in-orderで発行された命令 のout-of-order投機的実行を実施する中央処理ユニットの中で、このユニットの 中の精確な状態を維持しながらチェックポイント実行されたデータの量を減少さ せるべく1つの命令をチェックポイント実行するための装置において、 − 前記中央処理ユニット内のデータ記憶装置内に複数のマップレジスタ要素を もつレジスタリネームマップデータ構造; − 1つの命令の実行に先立ちその命令が参照した各々の論理ソー ス及び/又は論理宛先レジスタのために前記CPU 内の利用可能な物理レジスタを 割振るための手段 − 固有の論理レジスタタグにより、各々の前記論理ソースレジスタを識別する ための手段; − 物理レジスタタグにより各々の割振り可能な物理レジスタを識別するための 手段; − 前記固有の論理レジスタタグのうちの1つと前記複数のマップレジスタ要素 のうちの各々1つを結びつけるための手段;及び − 各々のマップレジスタ要素が現在その論理レジスタタグに対しマッピングさ れている物理レジスタタグを記憶するような形で、この物理レジスタが割振られ た固有の論理レジスタタグに付随するマップレジスタ要素の中に各々の前記割振 られた物理レジスタで識別された物理レジスタタグを記憶するための手段 を含んで成り、 かくして、前記命令の発行の結果として前記レジスタのために変化した全ての 状態は記憶され、CPU バックアップが必要とされる場合に回復のため利用可能な 状態になる、装置。 112.命令発行手段、命令実行手段及びデータを記憶するためのデータ記憶装 置を有する中央処理ユニット(CPU)の中で、前記実行手段の中で発生する例外 のために例外取扱いを束縛するための方法において、 − タイムアウト条件を規定する特定された事象の発生回数について予め定めら れた閾値を設定し、この閾値を前記CPU 内の第1のデータ記憶装置の中に記憶す る段階、 − 前記CPU 内のカウンタ内で前記特定された事象の発生を計数し、前記発生回 数を前記CPU 内の第2のデータ記憶装置内に1つの計数として記憶する段階; − 前記計数を前記閾値と比較する段階; − 前記計数が前記タイムアウト条件以上である場合にタイムアウトチェックポ イントを形成する段階、 を含んで成る方法。 113.− 第1の命令の実行に先立って前記計数を初期値に初期設定する段階 ;及び − 前記タイムアウトチェックポイントが形成された後を含め、チェックポイン トの形成後に前記計数を前記初期状態にリセットする段階、 をさらに含んで成る、請求項112 に記載の方法。 114.前記特定された事象は、前記中央処理ユニットによるあらゆる命令の発 行であり、かくして前記タイムアウトチェックポイントの形成は、連続的に形成 されたチェックポイント間で発行される命令の数を前記予め定められた命令数に 制限するようになっている、請求項113 に記載の方法。 115.前記命令が任意の命令属性をもつ、請求項114 に記載の方法。 116.前記特定された事象が、予め定められた数のマシンクロックサイクルの 実行である、請求項113 に記載の方法。 117.前記特定された事象が、チェックポイントを形成することなく通過した 命令発行サイクルの数である、請求項114 に記載の方法。 118.前記タイムアウトチェックポイントを形成する前記段階は、前記CPU 内 の全てのレジスタに関する状態情報を記憶することを含め、前記CPU の完全な状 態を特徴づける状態情報を記憶することを含む、請求項114 に記載の方法。 119.前記タイムアウトチェックポイントを形成する前記段階に は、最後のタイムアウトチェックポイントを含む最後のチェックポイントが前記 CPU 内に形成されてから変化したデータの徴候のみを記憶するレジスタリネーム マップの状態を特徴づける状態情報を記憶することが含まれている、請求項114 に記載の方法。 120.前記徴候には、物理レジスタに対する論理レジスタのマッピングが含ま れている、請求項119 に記載の方法。 121.− 障害発生命令よりも順序的に前のチェックポイント実行された命令 のために形成されたチェックポイントから、より早期のプロセッサ状態を回復す る段階; − 前記障害発生命令から前記より早期のチェックポイント実行済み命令へと前 記CPU をバックアップし、前記チェックポイント実行済み命令から順方向に命令 を再度実行する段階、 を含んで成る、障害発生命令によってひき起こされた実行エラーからの回復段階 をさらに含んで成る請求項114 に記載の方法。 122.− 前記障害発生命令より順序的に後のチェックポイント実行済み命令 のために形成されたチェックポイントから、より早期のプロセッサ状態を回復す る段階; − 前記障害発生命令から前記順序的に後のチェックポイント実行済み命令へと 前記CPU をバックアップする段階; − 逆方向の段階的やり方で、順序的に前記より後のチェックポイント実行済み 命令と前記障害発生命令の間に存在する各々の命令のためにプロセッサ状態を回 復することを含め、前記障害発生命令へと前記CPU をバックステップさせる段階 ;及び − 前記障害発生命令から順方向に命令を再度実行する段階; を含む、障害発生命令によってひき起こされた実行エラーからの回復段階をさら に含んで成る請求項114 に記載の方法。 123.− タイムアウトチェックポイントが満了した時点で全て のチェックポイントが割振られた場合、命令復号タイプのチェックポイントのた めの精確な状態を維持するのに必要となり得るようにマシンをマシン停止させる のではなく予め定められた規則に従ってタイムアウトチェックポイントの形成を 遅延させる段階、 をさらに含んで成る請求項114 に記載の方法。 124.予め定められた規則には、予め定められたサイクル数についてのタイム アウトチェックポイントの形成を遅延させることが含まれている、請求項123 に 記載の方法。 125.命令を発行するための命令発行ユニットをもつ中央処理ユニット(CPU) の中で例外取扱いを束縛するための方法において、 − 前記CPU 内のデータ記憶装置内で予め定められたタイムアウト閾値計数を設 定する段階; − 前記CPU 内のデータ記憶装置内に初期カウント数を記憶する段階; − 1つの命令が発行されたCPU クロックサイクル中に、少なくとも1つの命令 が発行されたことを表示するべく、このクロックサイクル中に前記命令発行ユニ ットから命令発行済み信号を送る段階; − 前記命令発行済み信号に応答して、受理した命令発行済み信号の数を計数す るためのタイムアウトカウンタを提供する段階; − 前記命令発行済み信号を受理する段階; − 各CPU クロックサイクル中に受理された命令発行済み信号の数を計数し、前 記CPU 内のデータ記憶装置内に記憶された累積数にその数を加算する段階; − タイムアウトチェックポイント作成信号に応答して形成されたチェックポイ ント及び復号済み命令属性に応答して形成されたチェックポイントを含め、チェ ックポイントが形成された時点でつねに前記カウント数を初期値にリセットする 段階; − 各々のCPU クロックサイクルの間に、前記累積カウント数が閾値計数以上で あるか否かを決定するため前記タイムアウト閾値計数と前記累積カウント数を比 較する段階; − 前記タイムアウトカウンタ内で、前記累積カウント数が前記閾値計数以上で ある場合に、タイムアウトチェックポイント作成信号を生成する段階; − 前記タイムアウトチェックポイント信号を前記命令発行ユニットに伝送し、 チェックポイントタイムアウト条件が発生しチェックポイントを1つ形成しなけ ればならないということを前記発行ユニットに知らせる段階; − 前記タイムアウトチェックポイント作成信号に応えてチェックポイントを形 成し、前記初期値に前記カウント数をとりセットする段階、 を含んで成り、 かくして前記タイムアウトチェックポイントの形成が、連続的に形成されたチ ェックポイントの間で発行された命令の数を予め定められた命令数に制限しかく して、例外条件が発生した時点で取消しされ再実行されなくてはならない可能性 のある発行済み命令の数を束縛することになる、方法。 126.前記累積カウント数を前記タイムアウト閾値計数と比較する前記段階の 後でかつ前記生成段階の前に;さらに − 同じCPU クロックサイクル内で発行されなくてはならない命令発行ウインド ウ内の命令がチェックポイントを必要としているか否かを、命令属性に基づいて 決定する段階; − 前記タイムアウトチェックポイント作成信号の生成を遅延させる段階、 − 前記復号済み命令に応答してチェックポイントを形成する段階 ;及び − 命令属性に基づくチェックポイント形成のため、チェックポイント形成に応 答して前記初期値チェックポイントに前記累積カウント数をリセットする段階; を含んで成る請求項125 に記載の方法。 127.命令の発行時点で命令発行済み信号を生成する命令発行ユニット、前記 命令の実行に先立ちプロセッサ状態を記憶する、チェックポイントの形成時点で チェックポイント形成済み信号を生成するチェックポイント形成ユニットをもつ プロセッサの中で、 − 前記命令発行済み信号を受理し、各々の受理した命令発行済み信号に応えて 計数を増分するための有効化入力ポート、前記チェックポイント形成済み信号及 び累積計数出力信号を受理するためのリセットポートを有するカウンタ回路; − 予め定められたタイムアウト閾値計数を記憶するためのデータ記憶装置;及 び − 前記記憶されたタイムアウト閾値計数を前記累積計数出力信号と比較するた めの比較器、 を含んで成り、 前記カウンタ回路は、命令発行済み信号の予め定められた数を計数した後タイ ムアウトチェックポイント要求信号を出力する、 タイムアウトチェックポイントカウンタ装置。 128.命令を発行するための発行ユニット、命令を実行するための実行ユニッ ト及び中央処理ユニット内のその他のユニットに対し前記実行ユニットからの実 行結果を伝達するデータ順方向分配バスを有する中央処理ユニットの中で、複数 の投機的に発行された予測された命令の実行結果を同時に監視するための方法に おいて、 − プロセッサ内の前記データ順方向分配全体にわたり前記実行ユ ニットからの実行結果信号を受理するように結合されたウォッチポイントデータ を記憶するための複数のウォッチポイントレジスタをもつウォッチポイントユニ ットを提供する段階; − 前記投機的に発行された予測された命令の各々について、制御フロー転送方 向を左右し投機的発行済み予測命令を投機的に発行する基礎となる1つの条件の 予測値を識別する予測条件データ結果を含むウォッチポイントデータを記憶する ために1つのウォッチポイントレジスタを割振る段階; − 前記データ順方向送りバス上で伝送される前記投機的発行済みの予測命令に ついての実行結果信号を監視する段階; − 前記記憶されたウォッチポイントデータ及び実際の既知の条件データ結果信 号及び予め定められた規則を含む前記記憶されたウォッチポイントデータ及び実 行結果信号に基づき、予め定められた事象の発生を検出する段階であって、ここ で前記実際の既知の条件データ結果信号が、前記投機的発行済みの予測命令の制 御フロー転送方向を決定する上で基礎となるべき条件の実際の値を識別している ような、段階; − 信号が一致しているかしていないかを決定するべく前記投機的に発行された 命令に関して前記データ順方向送りバス上で到着した前記結果信号と前記投機的 に発行された予測命令のうちの1つについて前記ウォッチポイントレジスタ内に 記憶された前記ウォッチポイントデータを比較する段階であって、一致は前記投 機的発行済み予測命令が正しく予測されていたことを表わし、不一致は、前記投 機的発行済み予測命令が該予測されていたことを表わすような、段階;及び − 比較の結果、前記予測が誤予測であったことが表示された場合には、前記誤 予測に基づいて実行された命令が取消されるように前 記中央処理ユニットをより早期の中央処理ユニット状態まで回復させる段階、 を含んで成る方法。 129.− 前記データ順方向送りバス上に現われる実行結果信号がもはや前記 予め定められた事象の発生を検知する結果をもたらさないように前記中央処理ユ ニットを回復させる段階の後に前記ウォッチポイント要素を割振り解除する段階 ; をさらに含んで成る、請求項128 に記載の方法。 130.前記中央処理ユニットを回復させる段階には、 − 前記実際の既知の条件データ結果信号がフェッチされ誤予測を訂正するべく 発行され得るように、適正な命令ストリームに対応する前記発行ユニットに対す る新しい命令アドレスを供給する段階; − 前記の直前の状態まで中央処理ユニットのマシン状態を回復し、前記誤予測 に基づいて実行された命令が取消されるように命令の実行を再開する段階; − 前記フェッチされた命令に基づいて前記適正な命令ストリーム内で前記新し い命令のための実行を開始する段階、 が含まれている、請求項128 に記載の方法。 131.前記投機的発行済み予測命令の実行に先立って、チェックポイントデー タ記憶装置内に中央処理ユニットマシン状態を記憶する段階をさらに含んで成り 、 前記中央処理ユニット状態の回復段階には、前記新しい命令のための前記実行 開始段階に先立って前記チェックポイントデータ記憶装置から中央処理ユニット 状態を回復することが含まれている請求項130 に記載の方法。 132.前記中央処理ユニットをより早期の中央処理ユニット状態まで回復させ る前記段階にはさらに、前記より早期の状態まで回復 させるべく前記中央処理ユニットをバックアップすることが含まれている請求項 131 に記載の方法。 133.前記中央処理ユニットをより早期の中央処理ユニット状態まで回復させ る前記段階にはさらに、前記より早期の状態まで回復させるべく前記中央処理ユ ニットをバックアップしかつバックステップすることが含まれている請求項131 に記載の方法。 134.前記投機的発行済み予測命令のうちの1つのための前記ウォッチポイン トの中に記憶された前記ウォッチポイントデータがWP_COND 信号を含み;前記デ ータ順方向送りバス上で到着した前記結果信号には、XCC_DATA_C,ICC_DATA_C又 はFCC_DATA_C,FXU_XCC_DATA,FXU_ICC_DATA,FXAGU_XCC_DATA,FXU_ICC_DATA、 及びFPU_FCCDATAから成るグループの中から選択された実行ユニット条件コード データが含まれている、請求項128 に記載の方法。 135.前記命令には、予測された分岐命令が含まれている請求項128 に記載の 方法。 136.前記命令にはジャンプ&リンク命令が含まれている請求項128 に記載の 方法。 137.前記命令には、予測された分岐及びジャンプ&リンク命令が含まれてい る請求項128 に記載の方法。 138.前記新しいアドレスからウォッチポイントユニット内のデータ記憶装置 内に記憶されている請求項128 に記載の方法。 139.命令を発行するための命令発行ユニット、発行された命令を実行するた めの実行ユニット及び前記実行ユニットからCPU のその他のコンポーネントまで 実行結果を伝達するための複数のデータ順方向送りバスを有する中央処理ユニッ ト(CPU)の中で、前記実行結果生成ユニットから予め定められた命令が待って いる実行結果を同時に捕捉するための方法において、 − 前記結果データを捕捉することのできる各々の実行結果ソースから、有効化 制御信号を受理する段階: − 各々の前記実行結果ソースユニットから結果データタイプ信号を受理する段 階; − 前記実行結果ソースユニットのうちのどれから前記結果データが受理される ことになるかを表示するセレクトソース信号及び前記結果データが予測されてい る現行のクロックサイクルとの関係における時刻の表示を受理する段階; − 選択された実行結果ソースユニットを規定するべく予め定められた規則に従 って前記制御有効化信号、前記結果データタイプ信号及び前記セレクトソース信 号の受理に応答してデータ捕捉有効化信号を生成する段階; − 前記実行結果ソースユニットから実行結果データ信号を監視する段階; − 前記到達した実行結果データ及び前記データ捕捉有効化信号に応答して前記 選択された実行結果ソースユニットから実行結果データを捕捉する段階;及び − 前記中央処理ユニット内のデータ記憶装置内での評価のため前記捕捉された 実行結果データを記憶する段階、 を含んで成る方法。 140.少なくとも1つのデータ捕捉有効化信号の生成に応答して前記捕捉され た実行結果データの評価を開始する段階、 をさらに含んで成る請求項139 に記載の方法。 141.− 抑止制御信号を受理する段階;及び − 前記抑止選択信号が受理された場合に前記データ捕捉有効化信号を生成する 前記段階を抑止する段階; をさらに含んで成る請求項139 に記載の方法。 142.前記抑止制御信号には、現行のマシンサイクルにて発行された命令によ って条件コードが修正されたこと、又現行サイクル中に前記データ順方向送りバ ス上に現われうる条件コードが現行サイクル中有効でない可能性があるというこ とを表わす前記条件コードリネームユニットからの条件コードリネーム済み信号 が含まれている請求項141 に記載の方法。 143.前記実行結果データには条件コードデータが含まれている請求項139 に 記載の方法。 144.前記実行結果データには、リネームされた条件コードデータが含まれて いる請求項139 に記載の方法。 145.前記実行結果データには、浮動小数点実行ユニット、整数実行ユニット 及びアドレス生成ユニットから受理された条件コードデータ及び条件コードリネ ームユニットから受理されたリネームされた条件コードデータが含まれており、 これらの条件コードデータ及び前記リネームされた条件コードデータが同じマシ ンサイクル中に受理されている請求項139 に記載の方法。 146.前記実行結果データには条件コードデータが含まれ、前記予め定められ た命令には、予測された分岐命令を含む予測された制御フロー転送命令が含まれ ている請求項139 に記載の方法。 147.前記実行結果データには、計算されたジャンプ&リンクアドレスが含ま れており、前記予め定められた命令には、ジャンプ&リンク命令が含まれている 請求項139 に記載の方法。 148.前記実行結果データには条件コードデータ及び計算上のジャンプ&リン クアドレスが含まれており、前記予め定められた命令には予測された分岐命令及 びジャンプ&リンク命令が含まれている、請求項139 に記載の方法。 149.前記実行結果ソースユニットが命令実行ユニットを含んで いる請求項139 に記載の方法。 150.前記実行結果ソースユニットにはさらにレジスタリネームユニットが含 まれる請求項139 に記載の方法。 151.前記レジスタリネームユニットには条件コードレジスタリネームユニッ トが含まれ、前記実行計算データにはリネーム条件コードデータが含まれている 、請求項150 に記載の方法。 152.前記実行結果ソースユニットには整数実行ユニット、浮動小数点実行ユ ニット、アドレス生成ユニット及び条件コードレジスタリネームユニットが含ま れている請求項139 に記載の方法。 153.前記結果データが条件コードデータ及びアドレスデータを含んでいる請 求項139 に記載の方法。 154.前記条件コードタイプの信号には、その命令が発行された時点で生成さ れた前記条件コードリネームユニットからの条件コードタイプの信号、及び命令 発行中により早期に生成されその後ウォッチポイント記憶要素の中に記憶された 条件コードタイプの信号が含まれている請求項139 に記載の方法。 155.BR_XCC信号、BR_ICC信号、BR_FCC信号及びその組合せから成るグループ の中から前記条件コードタイプ信号が選択される請求項154 に記載の方法。 156.前記条件コードタイプ信号がWP_XCC信号、WP_ICC信号、WP_FCC信号及び その組合せから成るグループの中から選択されている請求項154 に記載の方法。 157.− 前記有効化制御信号がDO_PREDICT_VEC又はWP_ACTIVEから成るグルー プの中から選択され − 前記データタイプ信号が、BR_XCC信号、BR_ICC信号、BR_FCC信号、WP_XCC信 号、WP_ICC信号及びWP_FCC信号から成るグループの中から選択され; − 前記レクトソース信号は、CC_DV_C,FXU_CC_CURR_MATCH,FXUCC_ARRAY_MATC H,FXAGU_CC_CURR_MATCH,FXAGU_CC_ARRAY_MATCH,FPU_CC_CURR_MATCH、及びFPU _CC_ARRAY_MATCHから成るグループの中から選択され; − 前記生成されたソース選択信号は、XCC_DATA_C,FXU_DATA_C or ICC_DATA_C ,FXU_XCC_DATA_F,FXAGU_CC_DATA_F,FXAGU_CC_DATA_F、及びFPU_CC_DATA_F信 号、から成るグループの中から選択されたソース信号を選択するべくSEL_BR_XCC ,SEL_BR_ICC,SEL_FXU_XCC,SEL_FXU_ICC,SEL_FXAGU_XCC,SEL_FXAGU_ICC,SE L_FPU_FCCから成るグループの中から選択され; − 前記捕捉された実行結果データは、XCC_DATA_C,FXU_DATA_C or ICC_DATA_C ,FXU_XCC_DATA_F,FXAGU_CC_DATA_F,FXAGU_CC_DATA_F,FPU_CC_DATA_Fデータ 信号から成るグループの中から選択され、 − 評価のための前記捕捉された実行結果データがEVAL_CC信号を含んでいる、 請求項139 に記載の方法。 158.前記データ記憶ユニットがラッチである請求項139 に記載の方法。 159.前記複数の実行結果ソースユニットには、整数実行ユニット、アドレス 生成ユニット、浮動小数点実行ユニット及び条件コードリネームユニットが含ま れている請求項139 に記載の方法。 160.前記有効化制御信号にはDO_PREDICT_VEC信号が含まれ;前記有効化制御 信号にはWP_ACTIVE信号が含まれ;前記実行結果データタイプ信号には条件コー ドタイプ信号が含まれている請求項139 に記載の方法。 161.命令を発行するための命令発行ユニット、命令を実行するための実行ユ ニット及び前記中央処理ユニットのその他のコンポー ネントに対して実行結果を伝達するための複数のデータ順方向送りバスを有する 中央処理ユニットの中で、現行のCPU クロックサイクル内でリネームすることに より修正されなかった条件コードタグについて前記データ順方向送りバスから条 件コードタグを捕捉するための方法において、 − 現行マシンサイクル内で発生する条件コードタグの修正を除外するものの、 リネームされた条件コード物理レジスタタグを識別するリネームされた条件コー ド物理レジスタタグ信号を受理する段階; − 前記データ順方向送りバスから直接複数の条件コードタグ信号を受理する段 階; − 前記受理したリネーム済み条件コードタグ信号を前記実行ユニットから到着 した前記複数の条件コードタグ信号のうちの全てのものと同時に比較し、前記到 着したデータ順方向送りバス条件コードタグ信号の各々に対応する比較信号を生 成する段階; − 現行CPU サイクル中に前記データ順方向送りバス上で有効なデータを送る各 々の実行ユニットからデータ有効信号を受理する段階; − 各々の前記比較信号を、現行CPU サイクル中に前記データ順方向送りバスの 上で有効データを送る各々の実行ユニットから到着した異なるデータ有効制御信 号の論理積を同時にとる段階; − 各々の比較信号及び各々の前記データ有効信号が表明された時点で条件コー ド現行一致信号を生成する段階; を含んで成り、 − 前記条件コード現行一致信号は、前記ウォッチポイント番号のいずれである かを識別しかくして現行のCPU サイクル内で前記データ順方向送りバスから捕捉 され得る付随する命令番号及び条件コードタグを識別し、 − かくして、前記現行一致論理は、未解決の投機的に発行された複数の命令を 同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測 の評価のために利用できるようにすることのできる条件コードを識別することが 可能となる、方法。 162.命令を発行するための命令発行ユニット、命令を実行するための実行ユ ニット論理及び物理とリネームするためのレジスタリネームユニット及び前記中 央処理ユニットのその他のコンポーネントに対して前記実行ユニットからの実行 結果を伝達するための複数のデータ順方向送りバスを有する中央処理ユニットの 中で、現行のCPU クロックサイクル内でリネームすることにより修正されなかっ た条件コードタグについて前記データ順送りバスから条件コードタグを捕捉する ための方法において − 前記CPU 内にデータを記憶するため複数の条件コードタグレジスタをもつ条 件コードタグアレイデータ記憶装置を提供する段階; − 現行マシンサイクル内で発生する条件コードの修正を含めてリネームされた 条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタ タグ信号を受理する段階; − ウォッチポイント番号及びそのCPU サイクル中に発行された各々の投機的発 行済み命令に割振られた対応する条件コードタグレジスタ要素を識別する信号ウ ォッチポイント番号信号成分を含む予測実施信号を受理する段階; − そのとき現行であるCPU サイクル内で発行された命令によって1つの条件コ ードが修正された時点で条件コードリネーム済み信号を受理し、この条件コード リネーム済み信号を、前記予測実施信号によって識別された条件コードタグレジ スタ要素内への前記リネーム済み条件コード物理レジスタタグ信号の書込みのた めの書込み有効化信号として用いる段階; − 論理積をとることによって、前記条件コードリネーム済み信号と前記予測実 施信号を組合せ、前記条件コードリネーム済み信号と前記予測実施(信号)の両 方が表明された時点でのみ前記タグアレイに対する前記受理されたリネーム済み 条件コード物理レジスタタグの書込み及びこの書込みのこのアレイを伴う場所を 制御するべく書込み制御有効化信号を生成する段階; − アレイ中の特定の要素が前記予測実施信号の一成分として含まれているウォ ッチポイント番号により識別され指標付けされている、前記書込み有効化信号の 制御下で前記タグアレイ内の前記複数の条件コードタグレジスタ要素の1つの中 に前記投機的発行済み命令に付随する前記受理されたリネーム済み条件コード物 理レジスタタグ信号を記憶する段階; − 前記リネーム済み条件コード物理レジスタタグが前記データ順方向送りバス 上で到着する条件コードタグ信号と一致する必要がなくなってしまうまで、前記 条件コードタグレジスタ内に前記記憶された各々のリネーム済み条件コード物理 レジスタタグ信号を保持する段階; − 同じCPU サイクル中に前記データ順方向送りバスからの複数の条件コードタ グ信号を同時に受理する段階; − 複数のアレイ比較信号を生成するべく前記記憶されたリネーム済み条件コー ド物理レジスタタグ信号の全てのものと前記受理されたデータ順方向送りバス条 件コード信号の各々を同時に比較する段階;及び − 前記データ有効信号と前記アレイ比較信号の論理積をとり、前記比較信号と 前記データ有効信号が両方共表明された時点で条件コードアレイ一致信号を生成 する段階; を含んで成り、 − 前記条件コードアレイ一致信号は、前記ウォッチポイント番号のいずれであ るかを識別しかくして現行のサイクル内で前記データ順方向送りバスから捕捉さ れ得る付随する命令番号及び条件コードタグを識別し、 − かくして、前記アレイ晩期一致論理は、未解決の投機的に発行された複数の 命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となっ た予測の評価のために利用できるようにすることのできる条件コードを識別する ことが可能となる、方法。 163.− 現行マシンサイクル内で発生する条件コードタグの修正を除外する ものの、リネームされた条件コード物理レジスタタグを識別するリネームされた 条件コード物理レジスタタグ信号を受理する段階; − 前記データ順方向送りバスから直接複数の条件コードタグ信号を受理する段 階; − 前記受理したリネーム済み条件コードタグ信号を前記実行ユニットから到着 した前記複数の条件コードタグ信号のうちの全てのものと同時に比較し、前記到 着したデータ順方向送りバス条件コードタグ信号の各々に対応する比較信号を生 成する段階; − 現行CPU サイクル中に前記データ順方向送りバス上で有効なデータを送る各 々の実行ユニットからデータ有効信号を受理する段階; − 各々の前記比較信号を、現行CPU サイクル中に前記データ順方向送りバスの 上で有効データを送る各々の実行ユニットから到着した異なるデータ有効制御信 号の論理積を同時にとる段階; − 各々の比較信号及び各々の前記データ有効信号が表明された時点で条件コー ド現行一致信号を生成する段階; をさらに含んで成り、 − 前記条件コード現行一致信号は、前記ウォッチポイント番号のいずれである かを識別しかくして現行のCPU サイクル内で前記データ順方向送りバスから捕捉 され得る付随する命令番号及び条件コードタグを識別し、 − かくして、前記現行一致論理は、未解決の投機的に発行された複数の命令を 同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となった予測 の評価のために利用できるようにすることのできる条件コードを識別することが 可能となる、請求項139 に記載の方法。 164.− 前記CPU 内にデータを記憶するため複数の条件コードタグレジスタ をもつ条件コードタグアレイデータ記憶装置を提供する段階; − 現行マシンサイクル内で発生する条件コードの修正を含めてリネームされた 条件コード物理レジスタタグを識別するリネームされた条件コード物理レジスタ タグ信号を受理する段階; − ウォッチポイント番号及びそのCPU サイクル中に発行された各々の投機的発 行済み命令に割振られた対応する条件コードタグレジスタ要素を識別する信号ウ ォッチポイント番号信号成分を含む予測実施信号を受理する段階; − そのとき現行であるCPU サイクル内で発行された命令によって1つの条件コ ードが修正された時点で条件コードリネーム済み信号を受理し、この条件コード リネーム済み信号を、前記予測実施信号によって識別された条件コードタグレジ スタ要素内への前記リネーム済み条件コード物理レジスタタグ信号の書込みのた めの書込み有効化信号として用いる段階; − 論理積をとることによって、前記条件コードリネーム済み信号と前記予測実 施信号を組合せ、前記条件コードリネーム済み信号と 前記予測実施(信号)の両方が表明された時点でのみ前記タグアレイに対する前 記受理されたリネーム済み条件コード物理レジスタタグの書込み及びこの書込み のこのアレイを伴う場所を制御するべく書込み制御有効化信号を生成する段階; − アレイ中の特定の要素が前記予測実施信号の一成分として含まれているウォ ッチポイント番号により識別され指標付けされている、前記書込み有効化信号の 制御下で前記タグアレイ内の前記複数の条件コードタグレジスタ要素の1つの中 に前記投機的発行済み命令に付随する前記受理されたリネーム済み条件コード物 理レジスタタグ信号を記憶する段階; − 前記リネーム済み条件コード物理レジスタタグが前記データ順方向送りバス 上で到着する条件コードタグ信号と一致する必要がなくなってしまうまで、前記 条件コードタグレジスタ内に前記記憶された各々のリネーム済み条件コード物理 レジスタタグ信号を保持する段階; − 同じCPU サイクル中に前記データ順方向送りバスからの複数の条件コードタ グ信号を同時に受理する段階; − 複数のアレイ比較信号を生成するべく前記記憶されたリネーム済み条件コー ド物理レジスタタグ信号の全てのものと前記受理されたデータ順方向送りバス条 件コード信号の各々を同時に比較する段階;及び − 前記データ有効信号と前記アレイ比較信号の論理積をとり、前記比較信号と 前記データ有効信号が両方共表明された時点で条件コードアレイ一致信号を生成 する段階; をさらに含んで成り、 − 前記条件コードアレイ一致信号は、前記ウォッチポイント番号のいずれであ るかを識別しかくして現行のサイクル内で前記データ 順方向送りバスから捕捉され得る付随する命令番号及び条件コードタグを識別し 、 − かくして、前記アレイ晩期一致論理は、未解決の投機的に発行された複数の 命令を同時に監視しかつ、捕捉して前記投機的発行済み命令の発行の基礎となっ た予測の評価のために利用できるようにすることのできる条件コードを識別する ことが可能となる、請求項163 に記載の方法。 165.− 現行の発行ウインドウ信号内の現在リネームされた条件コードタグ を各々のタグ順方向送りバスタグに比較し、先行するサイクルの条件コードタグ を各々のデータ順方向送りバスタグと比較することにより、現行の発行ウインド ウサイクル内の現在リネームされている条件コードと先行サイクル中の条件コー ドタグの間でデータ順方向送りバスタグ比較を分離する段階 を含む、比較時間を低減するべく前記条件コードデータと前記データ順方向送り バスタグを比較することをさらに含んで成り、 − かくして先行するサイクル内の前記条件コードタグ及び現在リネームされて いる条件コードタグとの前記データ順方向送りバスタグの前記比較は、それが単 一の非分割作業にて行なわれた場合に比べさらに迅速に行なわれることになる、 請求項164 に記載の方法。 166.命令を発行するための発行ユニット、命令を実行するための実行ユニッ ト及び中央処理ユニット内で前記実行ユニットからその他のユニットまで実行結 果を伝達するための手段、を有する中央処理ユニット(CPU)の中で、複数の投 機的発行済み命令の実行結果を同時に監視するための方法において、 − 命令識別タグで各々の命令を識別する段階; − 各々の投機的発行済み命令について命令発行中に前記命令識別タグに付随す る指標付けされたデータ記憶装置の中に前記CPU 内の 予測データを記憶し、この予測データを前記投機的発行済み命令と結びつける段 階であって、前記予測データがその命令が投機的に発行された条件の予測値を識 別している、段階; − 前記実行結果伝達手段上で伝送された全ての発行済み命令について、実行結 果信号を同時に監視する段階; − 前記実行結果データが前記伝達用手段上に現われた時点で前記予測データに 対応するものの必ずしも等しいものではない既知のデータを含む前記実行結果デ ータのうちの選択されたデータを同時に捕捉する段階であって、前記既知のデー タが、前記命令を投機的に発行する目的で仮定された条件の実際値を識別してい る、段階; − 前記予め定められたデータを既知のデータと比較し、この予め定められたデ ータが前記既知のデータと一致しない場合に誤予測信号を生成する段階;及び − 前記誤予測に基づいて実行された命令が取消されるように、誤予測信号の受 理に応えてより早期の中央処理ユニット状態まで中央処理ユニットを回復させる 段階、 を含んで成る方法。 167.中央処理ユニットの中で投機的に発行された予測された分岐命令を含む 予め定められた投機的発行済み命令のための複数の誤予測信号を同時に生成する ための方法において、 − 前記投機的発行済み命令を監視するためにウォッチポイントが形成されつつ あることを表示するウォッチポイント活動中信号を受理する段階; − 前記投機的発行済み命令の各々について前記CPU 内に規定されたデータ記憶 構造の中でウォッチポイント番号及び付随するウォッチポイントレジスタを割振 りする段階; − 前記1つの投機的発行済み命令に関係するウォッチポイントデ ータを受理し、前記割振られたウォッチポイントレジスタ内に前記ウォッチポイ ントデータを記憶する段階; − 各々の発行済み分岐命令について、分岐命令のための複数の誤予測信号を同 時に生成する段階であって、 ・条件コード選択論理回路から評価条件コード信号を受理する段階; ・ウォッチポイント記憶要素からウォッチポイント条件信号を受理する段階; ・ウォッチポイント記憶要素から条件コードタイプ制御信号を受理する段階; ・各実行結果ソースユニットから有効化制御信号を受理する段階; ・分岐のための条件が正しく予測されているか否かを評価するため各々の前記 実行結果ソースユニットのための前記有効化制御信号の表明された状態を含め予 め定められた状態コード評価規則に従って前記ウォッチポイント条件信号と前記 評価条件コード信号を比較する段階; ・前記分岐命令が正しく予測された場合には、分岐真信号を表明する段階; を含む段階;及び − 前記分岐真信号が表明されたという決定に応答して評価真信号を生成する段 階; − 投機的発行済み分岐命令について前記結果データを捕捉した結果として少な くとも1つのデータ捕捉有効化信号の受理に応えて評価準備完了信号を生成する 段階; − 前記評価準備完了信号と前記評価真信号の両方の受理に応えて命令誤予測信 号を生成する段階、 を含んで成る方法。 168.中央処理ユニットの中で、投機的に発行されたジャンプ&リンク命令を 含む予め定められた投機的発行済み命令のための複数の誤予測信号を当時に生成 するための方法において、 − 前記投機的発行済み命令を監視するためにウォッチポイントが形成されつつ あることを表示するウォッチポイント活動中信号を受理する段階; − 前記投機的発行済み命令の各々について前記CPU 内に規定されたデータ記憶 構造の中でウォッチポイント番号及び付随するウォッチポイントレジスタを割振 りする段階; − ウォッチポイントがジャンプ&リンク命令のために形成されつつあることを 表示するウォッチポイントジャンプ&リンク有効化信号を受理する段階; − 前記1つの投機的発行済み命令に関係するウォッチポイントデータを受理し 、前記割振られたウォッチポイントレジスタ内に前記ウォッチポイントデータを 記憶する段階; − 各々の前記発行済みジャンプ&リンク命令について、複数のジャンプ&リン ク誤予測信号を同時に生成する段階であって、 ・プログラムカウンタデータを記憶するための複数の記憶場所をもつ標的アド レスデータ構造を規定する段階; ・前記ジャンプ&リンク命令が発行された時点で前記標的アドレスデータ構造 記憶場所のうちの1つに代替的な次のプログラムカウンタを書込み、この記憶さ れた代替的な次のプログラムカウンタを前記命令と結びつける段階; ・実行結果ソースユニット内での前記ジャンプ&リンクの実行中に計算上の次 のプログラムカウンタ値を計算する段階; ・前記ジャンプ&リンク命令の実行の完了時点でジャンプ&リン ク命令実行完了信号を生成する段階; ・前記実行結果ソースユニットから前記計算上の次のプログラムカウンタを受 理する段階; ・前記記憶場所から前記ジャンプ&リンク命令に付随する前記記憶された代替 的な次のカウンタを読取る段階; ・前記代替的な次のプログラムカウンタ値を前記計算上の次のプログラムカウ ンタ値と比較する段階; ・前記代替的な次のプログラムカウンタ値が前記計算上の次のプログラムカウ ンタ値と一致する場合、ジャンプ&リンク一致信号を生成する段階;及び ・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク有 効化信号の両方の表明に応えてジャンプ&リンク真信号を生成する段階、 を含む段階; − 前記ジャンプ&リンク一致信号が表明されたという決定に応答て評価真信号 を生成する段階; − 前記ウォッチポイント活動中信号、前記命令ウォッチポイント番号信号、前 記ウォッチポイント活動中信号及び前記ジャンプ&リンク命令実行完了信号の表 明に応答して、ジャンプ&リンク命令評価有効化信号を生成する段階; − 前記ジャンプ&リンク命令評価有効化信号の受理(の受理)に応えて評価準 備完了信号を生成する段階;及び − 前記評価準備完了信号及び前記評価真信号の受理に応えて命令誤予測信号を 生成する段階、 を含んで成る方法。 169.中央処理ユニットの中で、投機的に発行された予測された分岐命令及び ジャンプ&リンク命令を含む予め定められた投機的発 行済み命令のための複数の誤予測信号を同時に生成するための方法において、 − 前記投機的発行済み命令を監視するためにウォッチポイントが形成されつつ あることを表示するウォッチポイント活動中信号を受理する段階; − 前記投機的発行済み命令の各々について前記CPU 内に規定されたデータ記憶 構造の中でウォッチポイント番号及び付随するウォッチポイントレジスタを割振 りする段階; − ウォッチポイントがジャンプ&リンク命令について形成されつつあることを 表示するウォッチポイントジャンプ&リンク有効化信号を受理する段階; − 前記1つの投機的発行済み命令に関係するウォッチポイントデータを受理し 、前記割振られたウォッチポイントレジスタ内に前記ウォッチポイントデータを 記憶する段階; − 各々の発行済み分岐命令について、分岐命令のための複数の誤予測信号を同 時に生成する段階であって、 ・条件コード選択論理回路から評価条件コード信号を受理する段階; ・ウォッチポイント記憶要素からウォッチポイント条件信号を受理する段階; ・ウォッチポイント記憶要素から条件コードタイプ制御信号を受理する段階; ・各実行結果ソースユニットから有効化制御信号を受理する段階; ・分岐のための条件が正しく予測されているか否かを評価するため各々の前記 実行結果ソースユニットのための前記有効化制御信号の表明された状態を含め予 め定められた状態コード評価規則に従っ て前記ウォッチポイント条件信号と前記評価条件コード信号を比較する段階; ・前記分岐命令が正しく予測された場合には、分岐真信号を表明する段階; を含む段階;及び ・前記分岐真信号が表明されたという決定に応答して評価真信号を生成する段 階;そして − 各々の前記発行済みジャンプ&リンク命令について、複数のジャンプ&リン ク誤予測信号を同時に生成する段階であって、 ・プログラムカウンタデータを記憶するための複数の記憶場所をもつ標的アド レスデータ構造を規定する段階; ・前記ジャンプ&リンク命令が発行された時点で前記標的アドレスデータ構造 記憶場所のうちの1つに代替的な次のプログラムカウンタを書込み、この記憶さ れた代替的な次のプログラムカウンタを前記命令と結びつける段階; ・実行結果ソースユニット内での前記ジャンプ&リンクの実行中に計算上の次 のプログラムカウンタ値を計算する段階; ・前記ジャンプ&リンク命令の実行の完了時点でジャンプ&リンク命令実行完 了信号を生成する段階; ・前記実行結果ソースユニットから前記計算上の次のプログラムカウンタを受 理する段階; ・前記記憶場所から前記ジャンプ&リンク命令に付随する前記記憶された代替 的な次のカウンタを読取る段階; ・前記代替的な次のプログラムカウンタ値を前記計算上の次のプログラムカウ ンタ値と比較する段階; ・前記代替的な次のプログラムカウンタ値が前記計算上の次のプログラムカウ ンタ値と一致する場合、ジャンプ&リンク一致信号を 生成する段階;及び ・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク有 効化信号の両方の表明に応えてジャンプ&リンク真信号を生成する段階、 ・前記ジャンプ&リンク一致信号が表明されたという決定に応答て評価真信号 を生成する段階; ・前記ウォッチポイント活動中信号、前記命令ウォッチポイント番号信号、前 記ウォッチポイント活動中信号及び前記ジャンプ&リンク命令実行完了信号の表 明に応答して、ジャンプ&リンク命令評価有効化信号を生成する段階; を含む段階 − 投機的発行済み分岐命令のための前記結果データの捕捉の結果としての少な くとも1つのデータ捕捉有効化信号の受理又は前記ジャンプ&リンク命令評価有 効化信号の受理に応答して、評価準備完了信号を生成する段階;及び − 前記評価準備完了信号及び前記評価真信号の両方の受理に応答して命令誤予 測信号を生成する段階、 を含んで成る方法。 170.− 各々の実行結果ソースユニットから有効化制御信号を受理する段階 ; − 各々の実行結果ソースユニットから結果データタイプ信号を受理する段階; − 前記結果データが前記実行結果ソースユニットのいずれから受理されること になるかを表示するセレクトソース信号及び、前記結果データが予測される現行 クロックサイクルとの関係における時刻の表示を受理する段階; − 予め定められた規則に従って前記有効化制御信号、前記結果デ ータタイプ信号及び前記セレクトソース信号の受理に応答してソース選択信号を 生成する段階; − 前記実行結果ソースユニットから実行結果データ信号を監視する段階; − 前記到着する実行結果データ及び前記ソース選択信号に応えて前記選択され たソースから実行結果データを捕捉する段階;及び − 前記プロセッサ内のデータ記憶装置内に評価のため前記捕捉された実行結果 データを記憶する段階; をさらに含んで成り、 かくして予め定められた命令が待っている結果データは、複数の実行結果ソー スユニットから同時に捕捉される請求項169 に記載の方法。 171.前記実行結果ソースユニットには命令実行ユニットとレジスタリネーム ユニットが内含されている請求項169 に記載の方法。 172.− 前記予め定められた投機的発行済み命令が制御転送命令、分岐命令 、ジャンプ&リンク命令及びそれらの組合せから成るグループの中から選択され ; − 前記条件コードタイプ制御信号には、WP_XCC,WP_ICC,WP_FCC及びその組合 せから成るグループの中から選択されたものが含まれており、 − 前記分岐真信号がBR_TRUE 信号を含み; − 前記評価条件コード信号がEVAL_CC 信号を含んでおり; − 前記ウォッチポイント条件信号にはWP_COND 信号が含まれており; − 前記有効化信号がWP_JMPL 信号を含んでおり、前記第1の状態がWP_JMPL = 0であり、前記第2の状態がWP_JMPL =1であり、 前記ソース選択信号が、SEL_BR_XCC,SEL_BR_ICC,SEL_FXU_XCC, SEL_FXU_ICC,SEL_FXAGU_CC,SEL_FXAGU_ICC、及びSEL_FPU_FCC信号から成るグ ループの中から選ばれたものを含んでおり; − 前記ジャンプ&リンク命令実行完了信号には、FXAGU_JMPL信号が含まれてお り; − 前記ジャンプ&リンクチェックポイント番号がFXAGU_CHKPNT_DEC信号を含み ; − 前記ジャンプ&リンク一致信号がJMPL_MATCH信号を含み; − 前記ジャンプ&リンク真信号がJMPL_TRUE 信号を含み; − 前記ウォッチポイントジャンプ&リンク信号がWP_JMPL 信号を含み; − 前記評価真信号がEVAL_TRUE 信号を含み; − 前記評価準備完了信号がEVAL_RUE 信号を含み; − 前記評価準備完了信号がEVAL_READY信号を含み; − 前記評価有効化信号がEVAL_ENABLE 信号を含み; − 前記ウォッチポイント活動中信号がWP_ACTIVE_VEC 信号を含み; − 前記ウォッチポイントジャンプ&リンク有効化信号がWP_JMPL 信号を含み; − 前記命令誤予測信号がWP_MISPRED_VEC信号を含む 請求項169 に記載の方法。 173.命令発行ユニット及び複数の命令実行ユニットを有する中央処理ユニッ トの中で、投機的発行済みの予測された分岐命令及びジャンプ&リンク命令を含 む、予め定められた投機的発行済み命令のための複数の誤予測信号を同時に生成 するための方法において、 − 命令シーケンスの実行の結果としてもたらされる条件を予測する段階; − 前記実行シーケンスの実行を完了する前に前記予測された条件 に基づいて制御転送命令を投機的に発行する段階; − 前記CPU のデータ構造内でウォッチポイント記憶レジスタを割振りし、前記 投機的に発行された命令のうちの特定の1つの命令と前記割振られたレジスタを 結びつける段階; − 前記制御転送命令のための正しい方向を有する評価された条件との後の比較 のために、前記割振られたウォッチポイントレジスタ内に前記予測された条件を 記憶する段階;及び 各々の投機的に発行された命令について、 − 前記実行ユニットによって生成された実行結果データを監視する段階、 − 各々の前記ウォッチポイントレジスタの中に記憶された前記実行前予測情報 を前記実行ユニットから受理した実行後評価された条件情報と比較して、前記予 測された条件情報が前記命令シーケンスについて前記評価された条件情報に一致 しているか否かを見極める段階;及び − 前記命令のための前記予測情報が前記命令のための前記既知の情報と一致し ない場合に、誤予測された条件情報の結果として誤って発行された各々の投機的 発行済み命令についての誤予測表示を生成する段階、 を含んで成る方法。 174.命令発行ユニット、命令実行ユニット、及びデータを記憶するためのメ モリ記憶ユニットを有する中央処理ユニットの中で、このユニット内の単一の共 用記憶ユニット内の共通のデータ構造の中に代替的分岐アドレス及び予測された ジャンプ&リンクアドレスを並行して記憶するための方法において、 − 発行された各々の制御転送命令についてそれが発行された時点で発行ユニッ トからの制御転送命令発行済み信号を生成する段階で あって、前記制御転送命令発行済み信号には、分岐命令又はジャンプ&リンク命 令として制御転送命令を識別するべくウォッチポイントタイプの信号が含まれて いる段階; − 予測された分岐及びジャンプ&リンク命令の命令復号中に代替的な次のプロ グラムカウンタを決定する段階; − 代替的分岐アドレスを記憶するための前記記憶ユニット内のレジスタ場所を 識別するウォッチポイント書込み有効化制御信号及びウォッチポイント書込みア ドレス信号を生成する段階であって、このウォッチポイント書込み有効化制御信 号が、チェックポイント又はウォッチポイントを作る時に表明される、段階; − 前記ウォッチポイント書込みアドレスにより表示されたレジスタ場所で前記 記憶ユニット内に前記ウォッチポイント代替的次プログラムカウンタを書込む段 階; を含み、ここで − 前記ウォッチポイント代替次プログラムカウンタには、前記制御転送命令が ジャンプ&リンク命令である場合予測された標的フェッチプログラムカウンタが 含まれ、前記ウォッチポイント代替次プログラムカウンタには、前記制御転送命 令が予測された分岐命令である場合に代替的分岐方向のためのフェッチプログラ ムカウンタが含まれ、さらに、 − 前記ウォッチポイント命令タイプ信号に基づいて別々のアドレス可能な記憶 場所の中に前記ジャンプ&リンク命令又は前記分岐命令の各々のための前記代替 次プログラムカウンタを記憶する段階、 を含んで成る方法。 175.前記制御転送命令が、分岐命令、ジャンプ&リンク命令及びそれらの組 合せから成るグループの中から選択され、 − 前記制御転送命令発行済み信号には、ジャンプ&リンク信号成 分WP_JMPL を含むDO_WTCHPNT信号が含まれており; − 前記代替次プログラムカウンタがWP_ANPC 信号を含み; − 前記チェックポイント書込み有効化信号がMAKE_CHKPNT 信号を含み; − 前記チェックポイント書込みアドレス信号がNEXT_CHKPNT 信号を含み; − 前記データ構造中の前記記憶場所がTARGET_RAM内に位置づけられ − 前記分岐命令のための情報項目にはさらに、XCC により左右される分岐、IC C により左右される分岐、FCC により左右される分岐又はジャンプリンク命令と して命令を指定する分岐タイプフィールド;CONDフィールド;及び条件コードタ グフィールドが含まれている、 請求項174 に記載の方法。 176.− 各々の実行結果ソースユニットから有効化制御信号を受理する段階 ; − 各々の実行結果ソースユニットから結果データタイプ信号を受理する段階; − 前記実行結果ソースユニットのいずれから前記結果データが受理されること になるかを表示するセレクトソース信号及び前記結果データが予想される現行ク ロックサイクルとの関係における時刻の表示を受理する段階; − 予め定められた規則に従って前記有効化制御信号、前記結果データタイプ信 号及び前記セレクトソース信号の受理に応答してソース選択信号を生成する段階 ; − 前記実行結果ソースユニットから実行結果データ信号を監視する段階; − 前記到着する実行結果データ及び前記ソース選択信号に応えて前選択された ソースから実行結果データを捕捉する段階;及び − 前記プロセッサ内のデータ記憶装置内に評価のため前記捕捉された実行結果 データを記憶する段階; をさらに含んで成り かくして予め定められた命令が待っている結果データは、複数の実行結果ソー スユニットから同時に捕捉される請求項174 に記載の方法。 177.投機的に発行された命令の誤予測が発生した後、命令再フェッチのため の適正な再フェッチ命令アドレスを送る段階をさらに含んで成り、この送信段階 には、 − 前記命令の実行に先立ち各々の投機的に発行された予測された命令について 、この予測された命令のための代替的実行経路を指定する代替的経路プログラム 命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構 造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、 同時に記憶する段階; − 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路及び予 測情報が記憶されている前記命令に対応するウォッチポイント要素番号及び前記 記憶された条件値及び代替的プログラム命令アドレスとの比較のための計算上の 適正な条件値を識別する、命令実行完了状況を表示する信号を同時に生成する段 階; − 前記記憶された実行前代替経路及び予測情報と各単一命令のための前記生成 された計算上の条件データ値とを比較し、予測上の条件データがこれらの命令の いずれかについての前記計算上の適正な条件データ値と一致する場合には一致信 号を生成すること及び、分岐命令又はジャンプ&リンク命令が正しく予測された か又は予測が 正しくないかを評価し各々の誤予測命令について誤予測信号を生成することを含 めて、各単一命令についての予測を同時に評価する段階; − 前記誤予測からの前記CPU の回復を優先順位づけし、予め定められた優先順 位規則に基づいて特定の高優先順の誤予測を選択する段階; − 前記特定の高優先順誤予測命令に付随するチェックポイントを識別し、前記 特定の誤予測命令から前記プロセッサを回復するためのCPU バックアップ信号を 生成する段階; − 前記標的アドレスデータ構造から前記特定の誤予測命令のための代替次プロ グラムカウンタを読取る段階;及び − 前記再フェッチされた命令に基づき前記CPU の実行を再開させるため発行ユ ニットに対して前記読取り代替次プログラムアドレスを送る段階、 が含まれている請求項174 に記載の方法。 178.命令フェッチコンポーネントを含む命令発行ユニット、命令実行ユニッ ト、データ記憶ユニットをもつ中央処理ユニットの中で、投機的に発行された命 令の誤予測が発生した後命令フェッチのために適正なフェッチアドレスを送るた めの方法において − 前記命令の実行に先立ち各々の投機的に発行された予測された命令について 、この予測された命令のための代替的実行経路を指定する代替的経路プログラム 命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構 造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、 同時に記憶する段階; − 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路情報及 び予測情報が記憶されている前記命令に対応するウォ ッチポイント要素番号及び前記記憶された条件値及び代替的プログラム命令アド レスとの比較のための計算上の適正な条件値を識別する、命令実行完了状況を表 示する信号を同時に生成する段階; − 前記記憶された実行前代替経路及び予測情報と前記投機的発行済み命令のた めの前記生成された計算上の条件データ値とを比較し、予測上の条件データがこ れらの命令のいずれかについての前記計算上の適正な条件データ値と一致する場 合には一致信号を生成すること及び、分岐命令又はジャンプ&リンク命令が正し く予測されたか又は予測が正しくないかを評価し各々の誤予測命令について誤予 測信号を生成することを含めて、前記投機的発行済み命令についての前記記憶さ れた予測情報を同時に評価する段階; − 全ての誤予測された命令の中から1つの誤予測された命令を選択する段階; − 前記選択された誤予測命令に付随するウォッチポイントを識別する段階; − 前記データ構造内に前記選択されたウォッチポイント番号を指標づけするこ とによって前記標的アドレスデータ構造から前記選択された誤予測命令のための 代替的プログラムカウンタアドレスを読取る段階;及び − 望ましい命令シーケンス経路に沿ってCPU 命令を開始するべく命令再フェッ チのために前記命令発行ユニットに対し前記読取られた代替次プログラムカウン タアドレスを送る段階、 を含んで成る方法。 179.前記1つの誤予測された命令を選択する段階には、前記CPU 内で発生す る誤予測を優先順位づけし予め定められた優先順位規則に基づいて高優先順位の 誤予測を選択する段階が含まれている請求項178 に記載の方法。 180.前記投機的に発行された命令は、予測された制御転送命令、予測された 分岐命令、ジャンプ&リンク命令及びそれらの組合せから成るグループの中から 選択される、請求項178 に記載の方法。 181.前記同時記憶、同時生成及び同時評価の段階には、それぞれ、同じCPU クロックサイクル内での記憶、生成及び評価段階が含まれている、請求項178 に 記載の方法。 182.命令フェッチコンポーネントを含む命令発行ユニット、命令実行ユニッ ト、データ記憶ユニットをもつ中央処理ユニットの中で、投機的に発行された命 令の誤予測が発生した後命令フェッチのために適正なフェッチアドレスを送るた めの方法において − 予測された分岐命令の発行に応えて、前記CPU 内のメモリユニットのデータ 構造内に前記分岐命令に付随するウォッチポイント要素内のウォッチポイント代 替プログラムカウンタデータを記憶する段階であって、ここで前記ウォッチポイ ント代替プログラムカウンタデータは、予測がとられた場合には分岐の次のアド レスであり、予測がとられない場合には分岐−標的アドレスであるような段階; − 予測されたジャンプ&リンク命令の発行に応えて、前記CPU 内のメモリユニ ットのデータ構造内に前記ジャンプ&リンク命令に付随するウォッチポイント要 素の中の予測されたジャンプ&リンク標的アドレスを記憶する段階; − 前記発行された命令にウォッチポイント要素を割振るべく各々の分岐及びジ ャンプ&リンク命令のためのウォッチポイント有効信号が発行されることを表明 する段階; − 前記ウォッチポイント有効信号の表明に応えて、そのウォッチポイント活動 中ベクトル信号内で識別されたチェックポイント番号を使用する予測された命令 が発行されまだ解決されていないことを表示するべくこのウォッチポイント活動 中ベクトル信号を表明する 段階; − 各々のジャンプ&リンク命令について、適正なジャンプ&リンク標的アドレ スを計算すること、アドレス生成ユニットがジャンプ&リンク命令の実行を終え た時点でアドレス生成ユニットジャンプ&リンク命令完了信号を表明すること、 ジャンプ&リンク命令のチェックポイント番号を指定するアドレス生成ユニット ジャンプ&リンクチェックポイント識別信号を生成すること、及び計算された適 正なジャンプ&リンク命令標的アドレスを指定するアドレス生成ユニットジャン プ&リンクデータ信号を生成することを含めた、前記ジャンプ&リンクの実行を 完了する段階; − 各々の予測された分岐命令について、分岐方向を左右する条件コード値を計 算すること及び前記評価準備完了信号の受信に応答して、ウォッチポイント番号 に対応する評価条件コード信号が利用可能になった時点でこの評価条件コード信 号を捕捉することを含む、前記分岐命令の実行を完了する段階; − ・*前記アドレス生成ユニットジャンプ&リンクチェックポイント識別信号 によって標識づけされた前記標的アドレスメモリユニット内の記憶場所の中の予 測されたジャンプ&リンクアドレスを読取ること; *前記予測されたジャンプ&リンクアドレスを前記計算されたジャンプ&リ ンクアドレスと比較して比較結果を生成すること; *予測されたアドレス及び計算された適正なアドレスが同じである場合にジ ャンプ&リンク一致信号を生成すること; *前記ウォッチポイント要素内に記憶された前記ウォッチポイントジャンプ &リンク有効化信号と前記ジャンプ&リンク一致信号を比較すること;及び *前記信号が一致し、前記ウォッチポイントがジャンプ&リン ク命令について形成されジャンプ&リンク命令が適正に予測されたことを表わし ている場合、ジャンプ&リンク真出力信号を生成することによって、ジャンプ& リンク命令が適切に予測されたか否かを決定する段階; ・*条件コードセレクト論理ユニットからの条件コード評価信号を受理するこ と; *命令に付随するウォッチポイント記憶要素内に記憶されたウォッチポイン ト条件信号を含むウォッチポイントレジスタ内に記憶されたウォッチポイントを 読取ること; *分岐を発行するときに作成された予測が適正であるか否かを評価するべく 予め定められた規則に基づき前記分岐命令に対応するウォッチポイント要素内に 記憶された前記ウォッチポイント条件データと前記評価条件コード信号を比較す ること;及び *前記条件コード評価信号及び前記ウォッチ条件信号である場合、前記特定 のウォッチポイントのための分岐真信号を生成すること により、分岐命令が適正に予測されたか否かを決定する段階、及び ・前記分岐真信号とジャンプ&リンク真信号の論理和をとり、前記分岐真又は ジャンプ&リンク信号が真として表明された場合に評価真信号を生成する段階; を含み、分岐命令又はジャンプ&リンク命令のいずれか(ただしその両方ではな い)に対する前記ウォッチポイント割振りが、同じウォッチポイント要素のため の前記分岐真信号及び前記ジャンプ&リンク信号の並行表明を制限している、評 価論理ユニット内の各々の単一命令のための予測を評価する段階; − 前記ジャンプ&リンク命令完了信号がCPU サイクル中に各命令について表明 された後評価準備完了信号を生成する段階; − 前記評価真信号のいずれかが表明されて、誤信号が検出されたことを表わし た場合、複数の評価真論理ユニットの各々から生成された前記評価真信号からの 誤予測を検出する命令ウォッチポイント誤予測信号を生成し、前記CPU 内の精確 な状態を維持するために前記誤予測信号を精確な状態のユニットに伝達する段階 ; − 生成された全てのウォッチポイント誤予測済み信号を優先順位づけし、予め 定められた優先順位づけ規則に従ってCPU 回復のための前記誤予測の1つを識別 する段階; − 精確な状態のユニットの中で、誤予測された分岐命令又は誤予測されたジャ ンプ&リンク命令のいずれかによる誤予測から回復する目的でCPU がバックアッ プされることになるチェックポイント実行済み命令を識別するバックアップチェ ックポイント信号を生成する段階; − 精確な状態のユニットの中で、バックアップが誤予測されたジャンプ&リン ク命令のせいである場合にのみジャンプ&リンク誤予測信号を生成する段階; − 前記識別された予測、誤予測のタイプ及びウォッチポイント/チェックポイ ント番号を含む因子に基づいて前記メモリ記憶装置内の1つの場所を選定する段 階であって; ・ウォッチポイント誤予測信号の受理に応えて前記精確な状態のユニット内で プロセッサバックアップ開始信号を生成する段階; ・誤予測がCPU 内で発生したこと及びCPU が、1つの代替プログラムカウンタ 値へとプログラムカウンタをリセットすることを含むより早期の状態までバック アップされるべきであることを表わすプロセッサバックアップ開始信号を受理す る段階; ・前記メモリ記憶領域内へチェックポイント/ウォッチポイント番号を識別す る指標を提供するバックアップチェックポイント信号 を受理し、前記指標を用いて命令フェッチのための適正な分岐アドレス又は適正 なジャンプ&リンクアドレスを記憶する場所の内容を読取る段階; ・前記メモリ記憶領域内へウォッチポイント及びチェックポイント番号の形で 指標を提供するアドレス生成ユニットチェックポイント信号を受理し、この指標 を用いて代替次プログラムカウンタを記憶する場所の内容を読取る段階; ・誤予測の検出に応えてCPU バックアップが要求された時点で、前記精確な状 態のユニットからバックアップ作成制御信号を受理する段階; ・アドレス生成ユニットがジャンプ&リンク命令の実行を終えた時点でアドレ ス生成ユニットジャンプ&リンク命令完了信号を受理する段階; ・前記メモリ記憶領域内の特定のウォッチポイント要素を特定するアドレス読 取り指標として前記精確な状態ユニット又は前記アドレス生成ユニットチェック ポイント入力信号から前記バックアップチェックポイントの1つを選択するべく マルチプレクサに対して制御セレクタ入力信号として前記ジャンプ&リンク完了 信号及びバックアップ作成信号を印加する段階; ・誤予測された命令が、バックアップ作成及びジャンプ&リンク制御信号によ って表示される通りにジャンプ&リンク命令の分岐命令であるか否かに基づいて 、読取るべきメモリ記憶場所アドレスを選択する段階;を含む段階;及び − 前記誤予測から回復するべく新しい命令をフェッチするため代替次プログラ ムカウンタを選択する段階であって、 ・前記誤予測がジャンプ&リンク命令誤予測である場合にジャンプ&リンク誤 予測信号を生成する段階; ・マルチプレクサ選択制御信号、複数のマルチプレクサ入力信号及び前記制御 信号によって選択された入力信号のための1つのマルチプレクサ出力をもつマル チプレクサに対して前記誤予測信号を印加する段階; ・前記マルチプレクサ選択制御信号が、誤予測が誤予測された分岐命令である ことを表わす第1の状態を有する場合に、マルチプレクサ出力信号として前記デ ータ記憶装置内の前記データ構造内の前記記憶場所の中に記憶された代替次プロ グラムカウンタを含む第1のマルチプレクサ入力信号を選択する段階; ・前記マルチプレクサ信号が、誤予測が発生したこと及び誤予測が誤予測され たジャンプ&リンク命令であることを表わす第2の状態を有する場合に、マルチ プレクサ出力信号として計算上のジャンプ&リンクアドレスを含む第2・マルチ プレクサ入力信号を選択する段階;を含む段階; − ・ジャンプ&リンク命令のための予測された標的フェッチプログラムカウン タ又は予測された分岐命令のための代替分岐方向についてのフェッチプログラム カウンタを含む読取り代替プログラムカウンタアドレス信号を生成する段階;及 び ・フェッチユニットが適正なアドレスから命令を再フェッチすることができる ように命令フェッチユニットに対して前記選択されたマルチプレクサ出力の中の 前記読取られた代替プログラムアドレス信号を送る段階; を含む、前記CPU の実行を再開する段階; を含んで成る方法。 183.− 前記再フェッチアドレスが、分岐命令アドレス及びジャンプ&リン ク命令アドレスから成るグループの中から選択され; − 前記ジャンプ&リンク命令完了信号がFXAGU_JMPL信号を含み; − 前記チェックポイント識別信号がFXAGU_CHKPNT信号を含み; − 前記アドレス生成ユニットデータ信号がFXAGU_DATA信号を含み; − 前記ジャンプ&リンク一致信号がJMPL_MATCH信号を含み; − 前記ウォッチポイントジャンプ&リンク有効化信号がWP_JMPL 信号を含み; − 前記ジャンプ&リンク真(信号)がJMPL_TRUE 信号を含み; − 前記条件コード評価信号がEVAL_CC 信号を含み; − 前記ウォッチポイントデータが、WP_COND,WP_XCC,WP_ICC 、及びWP_FCCデ ータ信号を含み; − 前記ウォッチポイント条件信号がWP_COND 信号を含み; − 前記分岐真信号がBR_TRUE 信号を含み; − 前記評価真信号がEVAL_TRUE 信号を含み; − 前記評価準備完了信号がEVAL_READY信号を含み; − 前記ウォッチポイント活動中信号がWP_ACTIVE_VEC 信号を含み; − 前記ウォッチポイント誤予測信号がWP_MISPRED_VEC信号を含み; − 前記バックアップチェックポイント信号がBACKUP_CHKPNT 信号を含み; − 前記ジャンプ&リンク誤予測信号がMIS_PRED信号を含み; − 前記プロセッサバックアップ開始信号がDO_BACKUP 信号を含み; − 前記バックアップチェックポイントがBACKUP_CHKPNT 信号を含み; − 前記バックアップ実施制御信号がMAKE_BACKUP 信号を含み; − 前記生成ユニットジャンプ&リンク命令完了信号がFXAGU_JMPL 信号を含み; − 前記選択されたバックアップチェックポイント信号がBACKUP_CHKPNT 信号を 含み; − 前記アドレス生成(前記)ユニットチェックポイントがFXAGU CHKPNT信号を 含み; − 前記ジャンプ&リンク誤予測信号がMISPRED 信号を含み; − 前記代替次プログラムカウンタがWR_ANPC 信号を含み; − 前記計算上のジャンプ&リンクアドレスがFXAGU_DATA信号を含み; − 前記代替プログラムカウンタアドレスがRD_ANPC 信号を含み; − 前記ジャンプ&リンク一致信号を前記ウォッチポイントジャンプ&リンク有 効化信号が、前記信号のブール論理積をとる段階を含んでいる、 請求項182 に記載の方法。 184.バックアップポイントでの命令の後に逐次的に発生する命令のためのチ ェックポイントをキルするべく前記誤予測からの回復中に誤予測の識別に応えて 命令キル信号を表明する段階; − 前記キル信号の表明に応えて、ウォッチポイント活動中信号及びウォッチポ イント誤予測信号の生成を抑制することにより各々のキルされた命令に対応する ウォッチポイント要素を非活動化する段階 をさらに含んで成る請求項182 に記載の方法。 185.前記ウォッチポイント活動中ベクトル信号及びウォッチポイント誤予測 信号は、各ウォッチポイントについてのウォッチポイント活動中情報を同時に記 憶し同じ信号内で伝送できるように前記CPU 内の割振り可能なチェックポイント の数に対応するベクトルビット位置の数を各々有するマルチホットベクトルとし て各々別々に コード化されている請求項182 に記載の方法。 186.比較時間を短縮するようにデータ順方向送りバスタグと条件コードデー タを比較するための方法において、 − ・現行の発行ウインドウ信号内の現行のリネーム済み条件コードを各々の データ順方向送りバスタグに比較し; ・先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比 較すること、 によって、先行するサイクル内の条件コードタグと現行の発行ウインドウサイク ル内の現在リネームされている条件コードタグの間でデータ順方向送りタグの比 較を分離する段階を含み、 − 先行するサイクル中の前記条件コードタグ及び現行の発行ウインドウ内の現 在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記 比較は、単一の非分割作業で行なわれた場合に比べさらに迅速に行なわれるよう な方法。 187.現在リネームされている条件コードの前記比較を行なう前にラッチ回路 内で現行の発行ウインドウ信号中の現在リネームされている条件コードタグをラ ッチングする段階をさらに含んで成り、 各々のデータ順方向送りバスタグに対し現行送信ウインドウサイクル内の現在 リネームされている条件コードタグを比較する前記段階には、各々のデータ順方 向送りバスタグに対する前記ラッチされた信号の比較が含まれ、かくしてタイミ ングクリティカリティが削除される請求項186 に記載の方法。 188.命令発行ユニット、条件コードレジスタリネームユニットを含む論理及 び物理レジスタをリネームするためのレジスタリネームユニット、複数の実行ユ ニット及び、前記実行ユニットの各々が中央処理ユニットのその他のコンポーネ ントまで実行結果データを伝達するためのデータ順方向送りバスを有する中央処 理ユニットに おいて、前記複数の実行ユニットの各々からの実行結果データを同時に捕捉する ための方法において、 − 各々の前記実行ユニットについて、先行するCPU クロックサイクル内でリネ ームされた条件コードレジスタを識別するものの現行サイクルでリネームされた 条件コードレジスタを識別しない前記条件コードレジスタリネームユニットから 受理した早期条件コードレジスタタグ信号を、現行のCPU クロックサイクル内で 前記実行ユニットから到着した条件コードレジスタタグ信号成分を含む有効な実 行結果データ信号と比較し、前記比較動作が、前記条件コードレジスタタグ信号 と前記条件コードレジスタタグ信号成分を含む前記有効な実行結果データ信号の 間での一致を識別した場合に、各々の前記実行ユニットについての条件コードタ グ現行一致信号を生成する段階;及び − 各々の前記実行ユニットについて、現行サイクル内でリネームされた条件コ ードレジスタを識別することを含め先行するCPU クロックサイクル内でリネーム された条件コードレジスタを各々識別する先行サイクル中に前記条件コードレジ スタリネームユニットから受理した複数の晩期条件コードレジスタタグ信号を、 現行のCPU クロックサイクル内で前記実行ユニットから到着した条件コードレジ スタタグ信号成分を含む有効な実行結果データ信号と比較し、前記比較動作が、 前記条件コードレジスタタグ信号の1つと前記複数の条件コードレジスタタグ信 号成分の1つの間での一致を識別した場合に、前記複数の条件コードレジスタタ グ信号のうちのいずれが一致したかを識別する各々の前記実行ユニットについて の現行条件コードタグのアレイ−晩期−一致信号を生成する段階、 を含んで成る方法。 189.− 前記早期条件コードレジスタタグ信号がCC_TAG_C信号 を含み; − 前記条件コードレジスタリネームユニットがFSR/CCRFRNユニットを含み; − 前記有効な実行結果データ信号は、FXU_XICC_TAG_F信号、FXAGU_XICC_TAG_F 信号及びFPU_FCC_TAG_F 信号から成るグループの中から選択されており; − 前記実行ユニットは、固定小数点実行ユニット、固定小数点/アドレス生成 ユニット及び浮動小数点ユニットから成るグループの中から選択され − 前記条件コードタグ現行一致信号は、FXU_CURR_MATCH信号、FXAGU_CURR_MAT CH信号及びFPU_CURR_MATCH信号から成るグループの中から選択され; − 前記複数の晩期条件コードレジスタタグ信号が、複数のCC_TAG_RENAMED信号 を含んでおり; − 前記条件コードレジスタリネームユニットがFSR/CCRFRNユニットを含み; − 前記現行の条件コードタグアレイ晩期一致信号が、各々の前記実行ユニット について、FXU_ARRAY_LATE_MATCH信号、FXAGU_ARRAY_LATE_MATCH信号及びFPU_AR RAY_LATE_MATCH信号から成るグループの中から選択される請求項188 に記載の方 法。 190.− 前記晩期条件コードレジスタタグを記憶するため前記CPU の中で複 数のアドレス可能なタグ記憶要素を含む晩期条件コードタグアレイデータ記憶装 置を提供する段階; − 前記条件コードレジスタリネームユニットから前記晩期条件コードレジスタ タグ信号成分を受理する段階; − 前記条件コードレジスタリネームユニットから条件コードリネーム済み信号 を受理する段階; − 前記命令発行ユニットからのウォッチポイント実施信号から誘導されたウォ ッチポイント番号識別成分信号を含む予測実施信号を受理する段階; − 前記条件コードリネーム済み信号及び前記予測実施信号が両方共表明された 場合に、前記タグアレイデータ記憶装置内への前記条件コードレジスタタグ信号 の各々の書込みのアドレスを制御するためのタグアレイ書込み有効化信号を生成 する段階; − 前記タグアレイ書込み有効化信号が表明された場合に前記ウォッチポイント 識別番号により識別された前記アドレス可能なタグ記憶要素のうちの1つの中に 前記受理した晩期条件コードレジスタタグ信号成分を記憶する段階;及び − 前記比較動作において使用するため各々の前記実行ユニットについて各々の 前記タグ記憶要素から各々の前記記憶された条件コードレジスタタグを読取る段 階、 を含んで成る請求項188 に記載の方法。 191.前記条件コードリネーム済み信号が、CC_RENAMED信号を含み; − 前記予測実施信号がDO_PREDICTVEC信号を含み、ウォッチポイント実施信号 がDO_WTCHPT 信号を含み; − 前記タグアレイ書込み有効化信号がARRAY_WRITE_VEC 信号を含んでいる、 請求項190 に記載の方法。 192.中央処理ユニット内で複数の命令の実行結果を同時に監視するための装 置において、 − 命令を発行するための発行ユニット; − 命令を実行するための実行ユニット; − 前記中央処理ユニット内で前記実行ユニットからその他のユニ ットまで実行結果を伝達するデータ順方向分配バス; − プロセッサ内で前記データ順方向分配の上で前記実行ユニットからの実行結 果信号を受理するべく結合されたウォッチポイントデータを記憶するため複数の ウォッチポイントレジスタを有するウォッチポイントユニット; − 前記命令が発行された時点で各々の投機的発行済みの予測された命令につい てウォッチポイントデータを記憶するためのウォッチポイントレジスタを割振る ための手段; − 前記ウォッチポイントユニット内で前記データ順方向送りバス上で伝達され た実行結果信号を監視するための手段; − 記実行結果信号及び予め定められた規則に基づいて予め定められた事象の発 生を検出するための手段; − 予測された投機的発行済み命令について予め定められた事象が検出された時 点で、その他のCPU ユニットにそれを知らせるための手段; − 特定の命令について前記ウォッチポイントレジスタ内に記憶された前記ウォ ッチポイントデータとこの特定の命令に関する前記データ順方向送りバスの上で 到着した前記結果信号と比較して、この特定の命令が投機的に発行された条件が 正しく予測されたか否かを評価するための手段; − 前記予測が適正でなかったことを前記評価が表示した場合に、前記ウォッチ ポイント要素を割振り解除し実行を続行するための割振り解除手段; − 前記予測が誤っていたということを前記評価が表示した場合に誤予測を補正 するべく既知の条件に対応する命令を再フェッチ発行できるように、前記発行ユ ニットに対し新しいアドレスを供給するための手段; − 前記誤予測を取消すことができるように、前記中央処理ユニットをより早期 の状態までバックアップするための手段; − 前記再フェッチされた命令に基づいて適正な命令ストリーム内の命令につい て実行を開始するための手段;及び − 前記実行が完了した時点で前記ウォッチポイント要素を割振り解除するため の手段 を含んで成る装置。 193.中央処理ユニット(CPU)内で複数の実行結果生成ユニットから予め定め られた命令が待っている結果データを同時に捕捉するための装置において、 − 各々の結果データソースから有効化制御信号を受理するための手段; − 各々の結果データソースから結果データタイプ信号を受理するための手段; − 前記実行結果生成ユニットのうちのいずれから前記結果データが受理される ことになるかを表示するセレクトソース信号及び前記結果データが予想されてい る現行クロックサイクルとの関係における時刻の表示を受理するための手段; − 予め定められた規則に従って前記有効化制御信号、前記結果データタイプ信 号及び前記セレクトソース信号に応えてソース選択信号を生成するための手段; − 前記実行結果生成ユニットから実行結果データ信号を監視するための手段; − 前記到着した実行結果データ及び前記ソース選択信号に応えて前記選択され たソースから実行結果データを捕捉するための手段; 及び − 前記プロセッサ内のデータ記憶装置内での評価のため前記捕捉 された実行結果データを記憶するための手段、 を含んで成る装置。 194.前記捕捉用手段には、 − 各々有効化制御信号入力ポート、結果データタイプ信号入力ポート、及びセ レクトソース信号入力ポートを内含する第1の複数の論理AND ゲート; − 同じ結果データタイプ依存性をもつ前記複数のAND ゲートからの選択された 出力と組合せるため、前記第1の複数の論理AND ゲートのうちの選択されたもの に結合された第2の複数の論理ORゲート; − 前記第1の複数の論理AND ゲート及び前記論理ORゲートのうちの選択された ゲートに結合された結果データソース入力ポートとセレクト条件コードタイプ入 力ポートを各々有する第3の複数の論理AND ゲート; − 各々前記第3の複数の論理ORゲートの出力を受理するための複数の入力ポー トを有する多入力論理ORゲート; − 条件コードデータを含む捕捉された実行結果データを含む前記多入力ORゲー トの出力信号をラッチングするためのラッチ回路、 が含まれている請求項193 に記載の装置。 195.中央処理ユニットの中で分岐命令及びジャンプ&リンク命令を含む予め 定められた命令タイプについての複数の誤予測信号を同時に生成するための装置 において、 − 分岐命令を監視するためにウォッチポイントが形成されつつあることを表示 する第1の状態又はジャンプ&リンク命令のためのウォッチポイントが形成され つつあることを表示する第2の状態を有するウォッチポイントジャンプ&リンク 有効化信号を受理するための手段; − ・条件コードセレクト論理回路からの評価条件コード信号を受理するための 手段; ・ウォッチポイント記憶要素からのウォッチポイント条件信号を受理するため の手段; ・ウォッチポイント記憶要素からの条件コードタイプ制御信号を受理するため の手段; ・各々の実行結果生成ユニットからの有効化信号を受理するための手段; ・分岐のための条件が正しく予測されたか否かを評価するため各々の前記実行 結果生成ユニットについて前記有効化制御信号の表明された状態を含む予め定め られた条件コード評価規則に従って前記ウォッチポイント条件信号と前記評価条 件コード信号を比較するための手段; ・前記分岐が正しく予測されていた場合分岐真信号を生成するための手段; を含む、複数の発行済み分岐命令について誤予測信号を同時に生成するための手 段;及び − ・プログラムカウンタデータを記憶するための複数の記憶場所を有する標的 データ構造を規定するための手段; ・ジャンプ&リンク命令が発行された時点で前記記憶場所のうちの1つに代替 次プログラムカウンタを書込み、前記記憶された代替次プログラムカウンタを前 記命令と結びつけるための手段; ・実行結果生成ユニット内で計算上の次プログラムカウンタ値を計算するため の手段; ・前記実行結果生成ユニットから前記計算上の次プログラムカウンタを受理す るための手段; ・前記記憶場所からの前記命令に付随する前記記憶された代替次 プログラムカウンタを読取るための手段; ・予め定められたプログラムカウンタ比較規則に従って前記計算上の次プログ ラムカウンタと前記代替次プログラムカウンタを比較するための手段; ・前記比較が真として評価した場合、ジャンプ&リンク一致信号を生成するた めの手段及び ・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク信 号の両方の真の状態に応えて、ジャンプ&リンク真信号を生成するための手段、 を含む、複数の発行済みジャンプ&リンク命令の各々についてジャンプ&リンク 誤予測信号を同時に生成するための手段; − 前記ジャンプ&リンク一致信号が表明されるか又は前記分岐真信号が表明さ れるかのいずれかに応えて、評価真信号を生成するための手段; − 少なくとも1つのソース選択信号の受理又は評価有効化信号の受理に応えて 評価準備完了信号を生成するための手段であって、この評価有効化信号はウォッ チポイント活動中信号、ウォッチポイントジャンプ&リンク有効化信号、ジャン プ&リンク命令実行完了信号及びジャンプ&リンク命令チェックポイント番号信 号の表明に応じて生成されるような手段;及び − 前記評価準備完了信号及び前記評価真信号の受理に応えて命令誤予測信号を 生成するための手段 を含んで成る装置。 196.中央処理ユニット内の単一の共用記憶ユニット内の共通のデータ構造の 中に代替分岐アドレス及び予測されたジャンプ&リンクアドレスを同時に記憶す るための装置において、 − 各々の発行された制御転送命令についてそれが発行された時点 で発行ユニットから制御転送命令発行済み信号を生成するための手段; − 分岐命令又はジャンプ&リンク命令として命令を識別するべく前記制御転送 命令発行済み信号内でウォッチポイントジャンプ&リンク信号を提供するための 手段; − プログラム制御論理ユニットにより計算された標的フェッチプログラムカウ ンタを特定する代替次プログラムカウンタを計算するための手段; − 前記データ構造内の記憶場所の中に代替分岐アドレスを記憶するためのチェ ックポイント書込み有効化制御信号及びチェックポイントアドレスを生成するた めの手段であって、この書込み有効化制御信号がチェックポイントを作成すると きに表明されるような手段; − チェックポイント書込みアドレスにおいて記憶ユニット内にウォッチポイン ト代替次プログラムカウンタを書込むための手段; − 予測された分岐及びジャンプ&リンク命令の命令復号の間に代替次プログラ ムカウンタを決定するための手段であって、ジャンプ&リンク命令のためにウォ ッチポイントユニットに対して送られた前記ウォッチポイント代替次プログラム カウンタには、予測された標的フェッチプログラムカウンタが含まれ、予測され た分岐命令のためにウォッチポイントユニットに対し送られた前記ウォッチポイ ント代替次プログラムカウンタには、代替分岐方向のためのフェッチプログラム カウンタが含まれているような手段; − 発行された命令が分岐命令であるかジャンプ&リンク命令であるかを決定す ることを含め、フィールド選択及び書込み論理ユニット内で前記制御転送命令発 行済み信号を復号して前記信号内の選択された情報フィールドの内容を決定する ための手段であって、前記 JMPLフィールド内の第1の予め定められた状態は、命令がジャンプ−リンク命令 であることを表示し、前記JMPLフィールド内の第2の状態は前記命令が分岐命令 であることを表示しているような手段;及び − 前記制御転送命令発行済み信号内に存在する前記徴候に基づき別々のアドレ ス可能な記憶場所内に各々の分岐命令又はジャンプ&リンク命令について1つの 情報項目を記憶するための手段; を含んで成り、前記命令が分岐命令である場合、前記分岐命令のための前記情報 項目が代替次プログラムカウンタを含み、前記命令がジャンプ&リンク命令であ る場合、ジャンプ&リンク命令のための前記情報項目が予測された標的アドレス を含んでいる、装置。 197.発行された命令の誤予測が発生した後、命令再フェッチのための適正な 再フェッチ命令アドレスを送るための方法において − 前記命令の実行に先立ち各々の投機的に発行された予測された命令について 、この予測された命令のための代替的実行経路を指定する代替的経路プログラム 命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構 造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、 同時に記憶するための手段; − 各々の前記予測された命令の実行の完了時点で、中に実行前代替経路及び予 測情報が記憶されている前記命令に対応するウォッチポイント要素番号及び前記 記憶された条件値及び代替的プログラム命令アドレスとの比較のための計算上の 適正な条件値を識別する、命令実行完了状況を表示する信号を同時に生成するた めの手段; − 前記記憶された実行前代替経路及び予測情報と各単一命令のための前記生成 された計算上の条件データ値とを比較することを含め各単一命令についての予測 を同時に評価し、分岐命令又はジャンプ &リンク命令が正しく予測されたか又は予測が正しくないかを評価し各々の誤予 測命令について誤予測信号を生成するための手段; − 前記誤予測からの前記CPU の回復を優先順位づけし、予め定められた優先順 位規則に基づいて特定の高優先順の誤予測を選択するための手段; − 前記特定の高優先順誤予測命令に付随するチェックポイントを識別し、前記 特定の誤予測命令から前記プロセッサを回復するためのCPU バックアップ信号を 生成するための手段; − 前記標的アドレスデータ構造から前記特定の誤予測命令のための代替次プロ グラムカウンタを読取るための手段;及び − 前記再フェッチされた命令に基づき前記CPU の実行を再開させるため発行ユ ニットに対して前記読取り代替次プログラムアドレスを送る段階、 を含んで成る装置: 198.− 前記同時に記憶するための手段には、前記ウォッチポイント要素へ の書込み及びここからの読取りのためのウォッチポイント読取り/書込み制御論 理及び複数のウォッチポイント記憶要素が含まれており、これらのウォッチポイ ント要素は命令発行ユニットに結合され、各々の予測された命令のための命令復 号情報を受理し; − 前記命令実行完了信号を同時に生成するための手段には、データ順方向送り バスからの条件コードデータを含む実行結果データを捕捉するため複数の条件コ ード捕捉ユニットに結合された少なくとも1つの命令実行ユニットが含まれてお り; − 前記同時に評価するための手段には、予測された命令を左右する予測された 及び実際の条件データを評価するための複数の評価論理ユニットが含まれており ; − 前記優先順位づけ用手段には、実行状況を含む命令状況をトラッキングし予 め定められた規則に基づき多重の誤予測及び実行障害から前記高優先順位の誤予 測を選択するための精確な状態のユニットが含まれており; − 前記識別のための手段には、標的アドレスランダムアクセスメモリユニット 、このメモリに付随する周辺制御論理;制御入力信号を有するマルチプレクサ回 路及びバックアップチェックポイント入力そして分岐命令に付随するアドレスか 又は前記標的アドレスランダムアクセスユニットからのジャンプ&リンク命令に 付随するアドレスのいずれかをゲートするためのアドレス生成ユニットチェック ポイント信号を含む複数の選択可能な信号入力端が含まれており; − 前記実行前条件を実際の実行条件結果と比較するためのジャンプ&リンク一 致論理が含まれており; − 前記送信用手段には、標的アドレスランダムアクセスメモリ入力信号及び実 行結果データ入力信号を有するマルチプレクサ回路及び複数のプログラムカウン タの中から適切な命令プログラムカウンタアドレスを出力するため前記精確な状 態ユニットに結合された制御信号入力端を含む代替プログラムカウンタ出力論理 が含まれている; 請求項197 に記載の装置。 199.中央処理ユニット内での比較時間を短縮するようにデータ順方向送りバ スタグと条件コードデータを比較するための装置において、 − ・現行の発行ウインドウ信号内の現行のリネーム済み条件コードを各々のデ ータ順方向送りバスタグに比較するための手段; ・先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比 較するための手段; によって、先行するサイクル内の条件コードタグと現行の発行ウインドウサイク ル内の現在リネームされている条件コードタグの間でデータ順方向送りタグの比 較を分離する手段を含み、 − 先行するサイクル中の前記条件コードタグ及び現行の発行ウインドウ内の現 在リネームされている条件コードタグとの前記データ順方向送りバスタグの前記 比較は、単一の非分割作業で行なわれた場合に比べさらに迅速に行なわれるよう な装置。 200.中央処理ユニット内で複数の命令の実行結果を同時に監視するための装 置において、 − 命令を発行するための発行ユニット; − 命令を実行するための実行ユニット; − 前記中央処理ユニット内で前記実行ユニットからその他のユニットまで実行 結果を伝達するデータ順方向分配バス; − プロセッサ内で前記データ順方向分配の上で前記実行ユニットからの実行結 果信号を受理するべく結合されたウォッチポイントデータを記憶するため複数の ウォッチポイントレジスタを有するウォッチポイントユニット; − 前記命令が発行された時点で各々の投機的発行済みの予測された命令につい てウォッチポイントデータを記憶するためのウォッチポイントレジスタを割振る ための手段; − 前記ウォッチポイントユニット内で前記データ順方向送りバス上で伝達され た実行結果信号を監視するための手段; − 前記実行結果信号及び予め定められた規則に基づいて予め定められた事象の 発生を検出するための手段; − 予測された投機的発行済み命令について予め定められた事象が検出された時 点でその他のCPU ユニットにそれを知らせるための手段; − 特定の命令について前記ウォッチポイントレジスタ内に記憶された前記ウォ ッチポイントデータとこの特定の命令に関する前記データ順方向送りバスの上で 到着した前記結果信号と比較して、この特定の命令が投機的に発行された条件が 正しく予測されたか否かを評価するための手段; − 前記予測が適正でなかったことを前記評価が表示した場合に、前記ウォッチ ポイント要素を割振り解除し実行を続行するための割振り解除手段; − 前記予測が誤っていたということを前記評価が表示した場合に誤予測を補正 するべく既知の条件に対応する命令を再フェッチし発行できるように、前記発行 ユニットに対し新しいアドレスを供給するための手段; − 前記誤予測を取消すことができるように、前記中央処理ユニットをより早期 の状態までバックアップするための手段; − 前記再フェッチされた命令に基づいて適正な命令ストリーム内の命令につい て実行を開始するための手段;及び − 前記実行が完了した時点で前記ウォッチポイント要素を割振り解除するため の手段; − 各々の結果データソースから有効化制御信号を受理するための手段; − 各々の結果データソースから結果データタイプ信号を受理するための手段; − 前記実行結果生成ユニットのうちのいずれから前記結果データが受理される ことになるかを表示するセレクトソース信号及び前記結果データが予想されてい る現行クロックサイクルとの関係における時刻の表示を受理するための手段; − 予め定められた規則に従って前記有効化制御信号、前記結果デ ータタイプ信号及び前記セレクトソース信号に応えてソース選択信号を生成する ための手段; − 前記実行結果生成ユニットから実行結果データ信号を監視するための手段; − 前記到着した実行結果データ及び前記ソース選択信号に応えて前記選択され たソースから実行結果データを捕捉するための手段;及び − 前記プロセッサ内のデータ記憶装置内での評価のため前記捕捉された実行結 果データを記憶するための手段、 − 分岐命令を監視するためにウォッチポイントが形成されつつあることを表示 する第1の状態又はジャンプ&リンク命令のためのウォッチポイントが形成され つつあることを表示する第2の状態を有するウォッチポイントジャンプ&リンク 有効化信号を受理するための手段; − ・条件コードセレクト論理回路からの評価条件コード信号を受理するための 手段; ・ウォッチポイント記憶要素からのウォッチポイント条件信号を受理するため の手段; ・ウォッチポイント記憶要素からの条件コードタイプ制御信号を受理するため の手段; ・各々の実行結果生成ユニットからの有効化信号を受理するための手段; ・分岐のための条件が正しく予測されたか否かを評価するため各々の前記実行 結果生成ユニットについて前記有効化制御信号の表明された状態を含む予め定め られた条件コード評価規則に従って前記ウォッチポイント条件信号と前記評価条 件コード信号を比較するための手段; ・前記分岐が正しく予測されていた場合、分岐真信号を生成するための手段; を含む、複数の発行済み分岐命令について誤予測信号を同時に生成するための手 段;及び − ・プログラムカウンタデータを記憶するための複数の記憶場所を有する標的 データ構造を規定するための手段; ・ジャンプ&リンク命令が発行された時点で前記記憶場所のうちの1つに代替 次プログラムカウンタを書込み、前記記憶された代替次プログラムカウンタを前 記命令と結びつけるための手段; ・実行結果生成ユニット内で計算上の次プログラムカウンタ値を計算するため の手段; ・前記実行結果生成ユニットから前記計算上の次プログラムカウンタを受理す るための手段; ・前記記憶場所からの前記命令に付随する前記記憶された代替次プログラムカ ウンタを読取るための手段; ・予め定められたプログラムカウンタ比較規則に従って前記計算上の次プログ ラムカウンタと前記代替次プログラムカウンタを比較するための手段; ・前記比較が真として評価した場合、ジャンプ&リンク一致信号を生成するた めの手段;及び ・前記ジャンプ&リンク一致信号と前記ウォッチポイントジャンプ&リンク信 号の両方の真の状態に応えて、ジャンプ&リンク真信号を生成するための手段、 を含む、複数の発行済みジャンプ&リンク命令の各々についてジャンプ&リンク 誤予測信号を同時に生成するための手段; − 前記ジャンプ&リンク一致信号が表明されるか又は前記分岐真信号が表明さ れるかのいずれかに応えて、評価真信号を生成するた めの手段; − 少なくとも1つのソース選択信号の受理又は評価有効化信号の受理に応えて 評価準備完了信号を生成するための手段であって、この評価有効化信号はウォッ チポイント活動中信号、ウォッチポイントジャンプ&リンク有効化信号、ジャン プ&リンク命令実行完了信号及びジャンプ&リンク命令チェックポイント番号信 号の表明に応じて生成されるような手段;及び − 前記評価準備完了信号及び前記評価真信号の受理に応えて命令誤予測信号を 生成するための手段 − 各々の発行された制御転送命令についてそれが発行された時点で発行ユニッ トから制御転送命令発行済み信号を生成するための手段; − 分岐命令又はジャンプ&リンク命令として命令を識別するべく前記制御転送 命令発行済み信号内でウォッチポイントジャンプ&リンク信号を提供するための 手段; − プログラム制御論理ユニットにより計算された標的フェッチプログラムカウ ンタを特定する代替次プログラムカウンタを計算するための手段; − 前記データ構造内の記憶場所の中に代替分岐アドレスを記憶するためチェッ クポイント書込み有効化制御信号及びチェックポイントアドレスを生成するため の手段であって、この書込み有効化制御信号がチェックポイントを作成するとき に表明されるような手段; − チェックポイント書込みアドレスにおいて記憶ユニット内にウォッチポイン ト代替次プログラムカウンタを書込むための手段; − 予測された分岐及びジャンプ&リンク命令の命令復号の間に代替次プログラ ムカウンタを決定するための手段であって、ジャンプ&リンク命令のためにウォ ッチポイントユニットに対して送られた 前記ウォッチポイント代替次プログラムカウンタには、予測された標的フェッチ プログラムカウンタが含まれ、予測された分岐命令のためにウォッチポイントユ ニットに対し送られた前記ウォッチポイント代替次プログラムカウンタには、代 替分岐方向のためのフェッチプログラムカウンタが含まれているような手段; − 発行された命令が分岐命令であるかジャンプ&リンク命令であるかを決定す ることを含め、フィールド選択及び書込み論理ユニット内で前記制御転送命令発 行済み信号を復号して前記信号内の選択された情報フィールドの内容を決定する ための手段であって、前記JMPLフィールド内の第1の予め定められた状態は、命 令がジャンプ−リンク命令であることを表示し、前記JMPLフィールド内の第2の 状態は前記命令が分岐命令であることを表示しているような手段;及び − 前記制御転送命令発行済み信号内に存在する前記徴候に基づき別々のアドレ ス可能な記憶場所内に各々の分岐命令又はジャンプ&リンク命令について1つの 情報項目を記憶するための手段であって、前記命令が分岐命令である場合、前記 分岐命令のための前記情報項目が代替次プログラムカウンタを含み、前記命令が ジャンプ&リンク命令である場合、ジャンプ&リンク命令のための前記情報項目 が予測された標的アドレスを含んでいるような手段; − 前記命令の実行に先立ち各々の投機的に発行された予測された命令について 、この予測された命令のための代替的実行経路を指定する代替的経路プログラム 命令アドレス及び、前記CPU 内のメモリユニット内に規定された標的アドレス構 造内のウォッチポイント要素の中で前記予測された実行を左右する予測情報を、 同時に記憶するための手段; − 各々の前記予測された命令の実行の完了時点で、中に実行前代 替経路及び予測情報が記憶されている前記命令に対応するウォッチポイント要素 番号及び前記記憶された条件値及び代替的プログラム命令アドレスとの比較のた めの計算上の適正な条件値を識別する、命令実行完了状況を表示する信号を同時 に生成するための手段; − 各々の前記命令についての前記生成された計算上の条件データ値と前記記憶 された実行前代替経路及び予測情報を比較し、予測された条件データが前記命令 のいずれかについて前記計算上の正しい条件データ値と一致する場合に一致信号 を生成するための手段; − 分岐命令又はジャンプ&リンク命令が正しく予測されたか又は予測が正しく ないかを評価し各々の誤予測命令について誤予測信号を生成することを含め、各 々の単一命令についての予測を同時に評価するための手段; − 前記誤予測からの前記CPU の回復を優先順序づけし、予め定められた優先順 位規則に基づいて特定の高優先順の誤予測を選択するための手段; − 前記特定の高優先順誤予測命令に付随するチェックポイントを識別し、前記 特定の誤予測命令から前記プロセッサを回復するためのCPU バックアップ信号を 生成するための手段; − 前記標的アドレスデータ構造から前記特定の誤予測命令のための代替次プロ グラムカウンタを読取るための手段;及び − 前記再フェッチされた命令に基づき前記CPU の実行を再開させるため発行ユ ニットに対して前記読取り代替次プログラムアドレスを送る段階、 − ・現行の発行ウインドウ信号内の現行の再命令済み条件コードを各々のデー タ順方向送りバスタグに比較するための手段; ・先行するサイクルの条件コードタグを各々のデータ順方向送りバスタグと比 較するための手段; によって、先行するサイクル内の条件コードタグと現行の発行ウインドウサイク ル内の現在リネームされている条件コードタグの間でデータ順方向送りタグの比 較を分離する手段であって 先行するサイクル中の前記条件コードタグ及び現行の発行ウインドウ内の現在 リネームされている条件コードタグとの前記データ順方向送りバスタグの前記比 較は、単一の非分割作業で行なわれた場合に比べさらに迅速に行なわれるような 手段; を含んで成る装置。 201.プログラム制御順out-of-order実行データプロセッサにおいて、 − 実行のためプログラム制御順で命令を発行するための発行ユニットであって 、発行される命令には、浮動小数点及び非浮動小数点命令が含まれている、ユニ ット; − 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でout- of-order実行され得る、発行済み命令を実行するための実行手段; − ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小 数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶 要素を含むデータ記憶構造; ・各々の発行済み命令について対応する発行済み命令が浮動小数点命令である か否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデー タを書込むための第1の論理; ・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対 応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点 実行例外をひきおこす各々の発行された浮動小数点命令について、結果としても たらされることになる浮動小数点実行トラップの予め定められたタイプのうちの 1つを識別す る対応する記憶要素の浮動小数点トラップタイプフィールド内へのデータを書込 むための第2の論理 を含む浮動小数点例外ユニット; − 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての 発行済み命令が退去されてしまっている各々の発行済み命令を退去させるための 精確状態手段; を含み、 予め定められた実行例外のうちの第1のものが発行済み命令によってひき起こ された時点で、実行手段は発行済み命令の実行を続行し、精確状態手段は、退去 され得ない発行済み命令に遭遇するまで発行済み命令を退去させ続けることによ り実行トラップ順序付けに着手し、退去され得ない発行済み命令は、(a)第1 の実行例外をひき起こした発行済み命令、及び(b)第1の実行例外をひき起こ した発行済み命令よりも早期に発行されたものの第1の実行例外よりも晩期に発 生する第2の実行例外をひき起こした発行済み命令のうちの1つであり、さらに − 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レジスタ;及び − 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデ ータが、この退去され得ない命令が浮動小数点命令であることを表示した時点で 、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィール ド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動 小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書 込むための書込み手段; を含んで成るプロセッサ。 202.− データ記憶構造の各々の記憶要素が、現行の浮動小数 点実行例外フィールドも有しており; − 浮動小数点例外ユニットにはさらに、浮動小数点実行トラップの予め定めら れたタイプのうちの特定の1つのタイプを結果としてもたらすことになる複数の 特定の浮動小数点実行例外のうちの単数又は複数の例外を実行中にひき起こす各 々の発行済み浮動小数点命令について、ひき起こされた特定の浮動小数点実行例 外のうちの単数又は複数のものを識別する対応する記憶要素の現行の浮動小数点 実行例外フィールドに対するデータを書込むための第3の論理がさらに含まれ; − 浮動小数点状況レジスタが同様に、現行の浮動小数点実行例外フィールドも 有しており、さらに − 書込み手段は同様に、(a)退去され得ない発行済み命令に対応する記憶要 素の浮動小数点命令識別フィールド内のデータが、退去され得ない発行済み命令 が浮動小数点命令であることを表示した時点、及び(b)退去され得ない発行済 み命令に対応する記憶要素の浮動小数点トラップタイプフィールド内のデータが 、予め定められた浮動小数点実行トラップタイプのうちの特定の1つを識別した 時点で、退去され得ない発行済み命令に対応する記憶要素の現行の浮動小数点実 行例外フィールド内のデータによって識別された特定の浮動小数点実行例外のう ちの単数又は複数のものを識別する浮動小数点状況レジスタの現行の浮動点実行 例外フィールドに対するデータを書込む、 請求項201 に記載のプログラム制御順out-of-order実行データプロセッサ。 203.− 第4の論理は同様に、実行中に特定の浮動小数点実行例外のいずれ もひき起こさない各々の発行済み浮動小数点命令について、特定の浮動小数点実 行例外のいずれもひき起こされていない ことを表示する対応する記憶要素の現行の浮動小数点実行例外フィールドに対す るデータを書込み; − 浮動小数点状況レジスタには、蓄積した例外フィールド及びトラップ有効化 マスクフィールドが含まれ、トラップ有効化マスクフィールドが特定の浮動小数 点実行例外のあらゆる組合せの選択的マスキングを提供し; − 精確状態ユニットは同様に、実行中単数又は複数のマスキングされた特定の 浮動小数点実行例外をひき起こすもののその他の浮動小数点実行例外を全くひき 起こさず、かつプログラム制御順でそれに先行する全ての発行済み命令が退去さ せられてしまっている各々の発行済み浮動小数点命令も退去させ; − 命令が退去させられる各々の現行のマシンサイクルの間、書込み手段は、( a)対応する記憶要素の浮動小数点命令識別フィールド内のデータが浮動小数点 命令でありかつ現行のマシンサイクル内で退去されつつある発行済み命令に対応 する記憶要素の現行の浮動小数点実行例外フィールド内のデータによって識別さ れた特定の浮動小数点実行例外、及び(b)浮動小数点状況レジスタの蓄積した 浮動小数点実行例外フィールド内の現行データによって識別された特定の浮動小 数点実行例外の蓄積を表わす浮動小数点状況レジスタの蓄積された例外フィール ドに対するデータを書込み; − 命令が退去させられる各々の現行のマシンサイクルの間に、書込み手段は同 様に対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮動 小数点命令であることを表示している対応する現行のマシンサイクルにおいて退 去させられた最後に発行された命令に対応する記憶要素の現行の浮動小数点実行 例外フィールド内のデータによって識別された特定の浮動小数点実行例外を識別 する浮動小数点状況レジスタの現行の例外フィールドに対するデー タを書込み; − 命令が退去させられる各々の現行のマシンサイクルの間に、書込み手段はさ らに、対応する記憶要素の浮動小数点命令識別フィールド内のデータがそれが浮 動小数点命令であることを表わしている対応する現行のマシンサイクルにおいて 退去させられた最後に発行された命令について、予め定められた浮動小数点実行 トラップタイプのいずれも結果としてもたらされないであろうということを表示 する浮動小数点状況レジスタのトラップタイプフィールドに対するデータを書込 む 請求項202 に記載のプログラム制御順out-of-order実行データプロセッサ。 204.発行された命令にはSPARC 命令が含まれており; − 浮動小数点状況レジスタが、SPARC 浮動小数点状況レジスタを含んでおり、 − 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイ プがIEEE_754_ 例外トラップを含み、 − 特定の浮動小数点実行例外には、IEEE_754例外が含まれる、 請求項203 に記載のプログラム順out-of-order実行のデータプロセッサ。 205.プログラム制御順out-of-order実行データプロセッサ内で浮動小数点例 外を検出する方法において、 − 実行のためプログラム制御順で命令を発行する段階であって発行される命令 には、浮動小数点及び非浮動小数点命令が含まれている段階; − 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でout- of-order実行され得るように発行済み命令を実行する段階; − ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小 数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶 要素を含むデータ記憶構造を提供する段階; ・各々の発行済み命令について対応する発行済み命令が浮動小数点命令である か否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデー タを書込む段階; ・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対 応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点 実行例外をひき起こす各々の発行された浮動小数点命令について、結果としても たらされることになる浮動小数点実行トラップの予め定められたタイプのうちの 1つを識別する対応する記憶要素の浮動小数点トラップタイプフィールド内への データを書込む段階; − 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての 発行済み命令が退去されてしまっている各々の発行済み命令を退去させる段階; − 予め定められた実行例外のうちの第1のものが発行済み命令によってひき起 こされた時点で、発行済み命令の実行を続行し、退去され得ない発行済み命令に 遭遇するまで発行済み命令を退去させ続けることにより実行トラップ順序付けに 着手し、ここで退去され得ない発行済み命令は、(a)第1の実行例外をひき起 こした発行済み命令、及び(b)第1の実行例外をひき起こした発行済み命令よ りも早期に発行されたものの第1の実行例外よりも晩期に発生する第2の実行例 外をひき起こした発行済み命令のうちの1つである段階; − 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レ ジスタを提供する段階;及び − 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデ ータか、この退去され得ない命令が浮動小数点命令であることを表示した時点で 、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィール ド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動 小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書 込む段階; を含んで成る方法。 206.− データ記憶構造の各々の記憶要素が、現行の浮動小数点実行例外フ ィールドも有しており; − 浮動小数点状況レジスタが同様に、現行の浮動小数点実行例外フィールドも 有しており、さらに − 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイ プを結果としてもたらすことになる複数の特定の浮動小数点実行例外のうちの単 数又は複数の例外を実行中にひき起こす各々の発行済み浮動小数点命令について 、ひき起こされた特定の浮動小数点実行例外のうちの単数又は複数のものを識別 する対応する記憶要素の現行の浮動小数点実行例外フィールドに対するデータを 書込む段階; − (a)退去され得ない発行済み命令に対応する記憶要素の浮動小数点命令識 別フィールド内のデータが、退去され得ない発行済み命令が浮動小数点命令であ ることを表示した時点、及び(b)退去され得ない発行済み命令に対応する記憶 要素の浮動小数点トラップタイプフィールド内のデータが、予め定められた浮動 小数点実行トラップタイプのうちの特定の1つを識別した時点で、退去され得な い発行済み命令に対応する記憶要素の現行の浮動小数点実行例外フ ィールド内のデータによって識別された特定の浮動小数点実行例外のうちの単数 又は複数のものを識別する浮動小数点状況レジスタの現行の浮動点実行例外フィ ールドに対するデータを書込む段階; を含んで成る請求項205 に記載の方法。 207.− 実行中に特定の浮動小数点実行例外のいずれもひき起こさない各々 の発行済み浮動小数点命令について、特定の浮動小数点実行例外のいずれもひき 起こされていないことを表示する対応する記憶要素の現行の浮動小数点実行例外 フィールドに対するデータを書込む段階を含み; − ここで浮動小数点状況レジスタには、蓄積した例外フィールド及びトラップ 有効化マスクフィールドが含まれ、トラップ有効化マスクフィールドが特定の浮 動小数点実行例外のあらゆる組合せの選択的マスキングを提供し;さらに − 実行中単数又は複数のマスキングされた特定の浮動小数点実行例外をひき起 こすもののその他の浮動小数点実行例外を全くひき起こさず、かつプログラム制 御順でそれに先行する全ての発行済み命令が退去させられてしまっている各々の 発行済み浮動小数点命令を退去させる段階; − 命令が退去させられる各々の現行のマシンサイクルの間、(a)対応する記 憶要素の浮動小数点命令識別フィールド内のデータが浮動小数点命令であり、か つ現行のマシンサイクル内で退去されつつある発行済み命令に対応する記憶要素 の現行の浮動小数点実行例外フィールド内のデータによって識別された特定の浮 動小数点実行例外、及び(b)浮動小数点状況レジスタの蓄積した浮動小数点実 行例外フィールド内の現行データによって識別された特定の浮動小数点実行例外 の蓄積を表わす浮動小数点状況レジスタの蓄積された例外フィールドに対するデ ータを書込む段階; − 命令が退去させられる各々の現行のマシンサイクルの間に、対応する記憶要 素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であるこ とを表示している対応する現行のマシンサイクルにおいて退去させられた最後に 発行された命令に対応する記憶要素の現行の浮動小数点実行例外フィールド内の データによって識別された特定の浮動小数点実行例外を識別する浮動小数点状況 レジスタの現行の例外フィールドに対するデータを書込む段階; − 命令が退去させられる各々の現行のマシンサイクルの間に、対応する記憶要 素の浮動小数点命令識別フィールド内のデータがそれが浮動小数点命令であるこ とを表わしている対応する現行のマシンサイクルにおいて退去させられた最後に 発行された命令について、予め定められた浮動小数点実行トラップタイプのいず れも結果としてもたらされないであろうということを表示する浮動小数点状況レ ジスタのトラップタイプフィールドに対するデータを書込む段階; をさらに含んで成る請求項206 に記載の方法。 208.発行された命令にはSPARC 命令が含まれており; − 浮動小数点状況レジスタが、SPARC 浮動小数点状況レジスタを含んでおり、 − 浮動小数点実行トラップの予め定められたタイプのうちの特定の1つのタイ プがIEEE_754_ 例外トラップを含み、 − 特定の浮動小数点実行例外には、IEEE_754例外が含まれる、 請求項207 に記載の方法。 209.投機的にトラップを取りこれから復帰するためのデータプロセッサにお いて、各々対応するトラップレベルを有するネストされたトラップを取るため予 め定められた数のトラップレベルを支持するデータプロセッサであって、 − チェックポイントを形成するための手段; − チェックポイントにバックアップするための手段; − トラップを取るための手段; − トラップから復帰するための手段; − トラップが取られる度毎のデータプロセッサの状態を規定する内容をもつレ ジスタ − ・トラップレベルより多い数のトラップスタック記憶エントリを有するトラ ップスタックデータ記憶構造; ・トラップレベルのうちの1つにマッピングするため現在利用可能なトラップ スタック記憶エントリの現行の利用可能性リストを維持し、トラップがとられる 毎にトラップレベルのうちの対応するものにマッピングするため現在利用可能な トラップスタック記憶エントリのうちの次のものを識別するフリーリストユニッ ト; ・とられた各々のトラップについて、現在利用可能なトラップスタック記憶エ ントリのうちの次のものに対しレジスタの内容を書込む読取り/書込み論理; ・トラップスタック記憶エントリのうちの1つに対する各トラップレベルの現 行のマッピングを維持し、トラップがとられる毎に、トラップスタック記憶エン トリのうちの1つに対する対応するトラップレベルの古いマッピングを、現在利 用可能なトラップスタック記憶エントリのうちの次のエントリに対する対応する トラップレベルの現行マッピングと置換する、リネームマッピング論理; ・現行マッピングによりトラップレベルの1つに現在マッピングされていない もののトラップレベルの1つにマッピングするためには利用できない各々のトラ ップスタック記憶エントリの利用不能性リストを維持し、トラップがとられる毎 に、古いマッピングにより対応するトラップレベルにマッピングされたトラップ スタック記憶エントリを利用不能性リストに付加し、とったトラップをもはや取 消しできなくなる毎に、古いマッピングにより対応するトラップレベルにマッピ ングされたトラップスタック記憶エントリを利用不能性リストから除去する資源 再生ユニット;及び ・チェックポイント記憶エントリを含み、形成された各チェックポイントが対 応するチェックポイント記憶エントリをもち、さらに各々の形成されたチェック ポイントについて対応するチェックポイント記憶エントリ内でフリーリストユニ ットの現行の利用可能性フリーリスト及びリネームマッピング論理の現行のマッ ピングを記憶する、チェックポイント記憶ユニット、を含むトラップスタックユ ニット、 を含んで成り、 ・フリーリストは、現行の利用可能性リストに対し、利用不能性リストから除 去された各々のトラップスタック記憶エントリを付加し、 ・チェックポイントに対する各々のバックアップについて、リネームマッピン グ論理は、それが維持する現行マッピングを対応するチェックポイント記憶エン トリ内に記憶されているマッピングと置換し、フリーリストユニットはそれが維 持する現行の利用可能性リストを対応するチェックポイント記憶エントリ内に記 憶された利用可能性リストと置換する、 データプロセッサ。 210.− トラップがとられる毎に、レジスタのうちの特定のものの内容がま だ利用可能でない可能性があり; − データプロセッサにはさらに、レジスタのうちの特定のものの内容が利用可 能となった時点をトラップがとられる毎に決定するための捕捉論理が含まれてお り; − レジスタのうちの特定の1つのレジスタの内容が利用可能にな ったことを捕捉論理が決定した時点で、トラップがとられる毎に、この特定のレ ジスタの内容を利用可能なトラップスタック記憶エントリのうちの次のものに書 込む、 請求項209 に記載のトラップスタックユニット。 211.− 捕捉論理はレジスタのうちの特定のものの内容がまだ利用可能でな いかどうかをトラップからの復帰のための手段に対し表示し、 − トラップから復帰するための手段は、レジスタのうちの特定のレジスタの内 容が利用可能な状態になったことを捕捉論理が表示するまで、トラップから復帰 しない、 請求項210 に記載のデータプロセッサ。 212.− フリーリストユニットは、トラップをとるための手段に対して、ト ラップスタック記憶エントリのうちの少なくとも1つが、トラップレベルへのマ ッピングのために現在利用可能であるか否かを表示し、 − トラップをとるための手段は、トラップスタック記憶エントリのうちの少な くとも1つがトラップレベルへのマッピングのために利用可能であることをフリ ーリストが表示するまで、トラップをとらない、 請求項209 に記載のデータプロセッサ。 213.− 形成されたチェックポイントを退去する段階; をさらに含み、 − チェックポイント形成手段が、とられた各々のトラップについての対応する チェックポイントを形成し; − 資源再生ユニットには、資源再生記憶エントリを有する資源再生データ記憶 構造が含まれ、各々の形成されたチェックポイントは資源再生記憶エントリのう ちの1つに対応し、資源再生ユニットは 、とられた各々のトラップについて、対応するトラップのために形成されたチェ ックポイントに対応する資源再生記憶エントリ内にデータを記憶し、このデータ は、古いマッピングにより対応するトラップレベルに対しマッピングされたトラ ップスタック記憶エントリを識別し、資源再生ユニットは、チェックポイントを 退去させるための手段によって、とられたトラップのために形成されたチェック ポイントが退去される毎に、退去されたチェックポイントに対応する資源再生記 憶エントリ内に記憶されたデータによって識別されたトラップスタック記憶エン トリを識別し、 − フリーリストユニットは、チェックポイントを退去させるための手段によっ て、とられたトラップのために形成されたチェックポイントが退去される毎に、 資源再生ユニットによって識別された記憶エントリを、それが維持する現行の利 用可能性リストに対して付加する、 請求項209 に記載のデータプロセッサ。 214.対応するトラップレベルを各々有するネストされたトラップをとるため 予め定められた数のトラップレベルを支持するデータプロセッサの中で、投機的 にトラップをとりこれから復帰する方法であって、 − チェックポイントを形成する段階; − チェックポイントをバックアップする段階; − トラップを取る段階; − トラップから復帰する段階; − トラップが取られる度毎のデータプロセッサの状態を規定する内容をもつレ ジスタを提供する段階; − トラップレベルより多い数のトラップスタック記憶エントリを有するトラッ プスタックデータ記憶構造を提供する段階; − トラップレベルのうちの1つにマッピングするため現在利用可能なトラップ スタック記憶エントリの現行の利用可能性リストを維持し、トラップがとられる 毎にトラップレベルのうちの対応するものにマッピングするため現在利用可能な トラップスタック記憶エントリのうちの次のものを識別する段階; − とられた各々のトラップについて、現在利用可能なトラップスタック記憶エ ントリのうちの次のものに対しレジスタの内容を書込む段階; − トラップがとられる毎に、トラップスタック記憶エントリのうちの1つに対 する対応するトラップレベルの古いマッピングを、現在利用可能なトラップスタ ック記憶エントリのうちの次のエントリに対する対応するトラップレベルの現行 マッピングと置換することによってトラップスタック記憶エントリのうちの1つ に対する各トラップレベルの現行のマッピングを維持する段階; − トラップがとられる毎に、古いマッピングにより対応するトラップレベルに マッピングされたトラップスタック記憶エントリを利用不能性リストに付加し、 とったトラップをもはや取消しできなくなる毎に、古いマッピングにより対応す るトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能 性リストから除去することによって、現行マッピングによりトラップレベルの1 つに現在マッピングされていないもののトラップレベルの1つにマッピングする ためには利用できない各々のトラップスタック記憶エントリの利用不能性リスト を維持する段階; − 現行の利用可能性リストに対し、利用不能性リストから除去された各々のト ラップスタック記憶エントリを付加する段階; − チェックポイント記憶エントリを含み、形成された各チェックポイントが対 応するチェックポイント記憶エントリをもつような、 チェックポイント記憶ユニットを提供する段階; − 各々の形成されたチェックポイントについて、対応するチェックポイント記 憶エントリ内で、現行のマッピング及び現行に利用可能性リストを記憶する段階 ; − チェックポイントに対する各々のバックアップについて、現行のマッピング を対応するチェックポイント記憶エントリ内に記憶されたマッピングと置換し、 現行の利用可能性リストを対応するチェックポイント記憶エントリ内に記憶され た利用可能性リストと置換する段階、 を含んで成る方法。 215.− トラップがとられる毎に、レジスタのうちの特定のものの内容がま だ利用可能でない可能性があり; − レジスタのうちの特定のものの内容が利用可能となった時点で、トラップが 取られる毎にこれを決定する段階; − レジスタのうちの特定の1つのレジスタの内容が利用可能になったことが決 定された時点で、トラップがとられる毎に、この特定のレジスタの内容を利用可 能なトラップスタック記憶エントリのうちの次のものに書込む段階、 を含んで成る請求項214 に記載の方法。 216.− レジスタのうちの特定のものの内容がまだ利用可能でないかどうか を表示する段階; − 表示段階中でレジスタのうちの特定のものの内容が利用可能になったことが 表示された時点で初めてトラップから復帰する段階; をさらに含んで成る請求項215 に記載の方法。 217.− トラップスタック記憶エントリのうちの少なくとも1つがトラップ レベルへのマッピングのために現在利用可能であるか否かを表示する段階; − トラップスタック記憶エントリのうちの少なくとも1つがトラップレベルへ のマッピングのために利用可能であることが、表示段階で表示された時点で初め てトラップをとる段階; をさらに含んで成る、請求項214 に記載の方法。 218.− 形成されたチェックポイントを退去する段階; をさらに含み、 − チェックポイント形成段階が、とられた各々のトラップについての対応する チェックポイントを形成する段階を含み; − 利用不能性リストを維持する段階には、 ・資源再生記憶エントリを有する資源再生データ記憶構造を提供し、ここで各 々の形成されたチェックポイントが資源再生記憶エントリのうちの1つに対応し 、資源再生ユニットは、記憶を行なうような段階; ・とられたトラップの各々について、対応するトラップのために形成されたチ ェックポイントに対応する資源再生記憶エントリ内にデータを記憶し、このデー タは、古いマッピングにより対応するトラップレベルに対しマッピングされたト ラップスタック記憶エントリを識別するような段階、 ・チェックポイントを退去させるための手段によって、とられたトラップのた めに形成されたチェックポイントが退去される毎に、退去されたチェックポイン トに対応する資源再生記憶エントリ内に記憶されたデータによって識別されたト ラップスタック記憶エントリを識別する段階; が含まれており、 − 付加段階には、チェックポイントを退去させるための手段によって、とられ たトラップのために形成されたチェックポイントが退去される毎に、資源再生ユ ニットフリーエントリによって識別され た記憶エントリを、それが維持する現行の利用可能性リストに対して付加する段 階が含まれている、 請求項214 に記載の方法。 219.命令を発行するための手段、命令を実行するための手段及びプロセッサ の中にデータを記憶するためのメモリ記憶装置を有するプロセッサの中で、プロ セッサ状態回復を要求する条件を検出した時点であらゆる命令境界でプロセッサ 内の先行するマシン状態を回復する方法において、 − 各々の発行済み命令について1つの命令シリアル番号を割振る段階; − マシン状態を変更する実行可能な命令の第1の予め定められたセットについ てのみ実行に先立って前記プロセッサ内のデータ記憶装置内で1つのチェックポ イント中にマシン状態情報を記憶する段階であって、ここでマシン状態を変える 実行可能な命令の前記予め定められたセットが、このプロセッサ内で実施された マシン状態を変化させる実行可能な命令の全てのセットよりも少ないような段階 ; − 前記障害をひき起こす命令を識別し、多数の例外又は障害が同時に発生した 場合には、障害又は例外をひき起こす順序的に最も早期のin-order命令を識別す る段階; − 前記最も早期の障害発生命令がチェックポイント実行された命令である場合 には、前記障害発生命令の実行に先立って記憶された前記マシン状態情報を回復 させプロセッサプログラムカウンタを前記障害発生命令の命令シリアル番号まで 減分させて前記先行するマシン状態を回復する段階; − マシン状態情報が記憶されてきた前記予め定められた実行可能な命令の1つ が順序的に前記障害発生命令と最後に発行された命令 の間に置かれている場合には、(i)まず最初に、順序的に前記障害発生命令の 後で前記障害発生命令に最も近いチェックポイントまで前記プロセッサをバック アップし、(ii)第2に、レジスタ資源を更新することによって前記障害命令の 実行の直前に存在した状態までプロセッサの状態を回復するように前記プロセッ サをバックステップさせ、(iii)前記障害発生命令の命令シリアル番号までプ ロセッサプログラムカウンタを減分させる段階; を含んで成る方法。 220.前記プロセッサ内のデータ記憶装置内にマシン状態情報を記憶する前記 段階には、レジスタデータ値を記憶するよりもむしろレジスタリネームマップを 記憶し、投機的に発行された予測された命令について代替次プログラムカウンタ を記憶する段階、が含まれている請求項219 に記載の方法。 221.前記実行可能な命令の第1の予め定められたセットが、 − 予測された分岐命令を含む予測されたプログラム制御転送命令; − 制御レジスタ値を修正する副作用をもち得る命令; − ジャンプ&リンクタイプの命令を含め、プログラムフロー変化を結果として もたらすタイプの命令; − チェックポイント実行済み状態の量を減少させるためそのタイプの全ての命 令よりも少ない数に制限され、そのタイプの非チェックポイント実行済み命令が 結果として制御されたプロセッサ同期化をもたらすことになるような、制御レジ スタ値を変更する副作用をもち得る命令を含めた、プロセッサ状態を修正するタ イプの選択された命令; − 予め定められた基準に従って頻繁に発生し、命令発行トラップを結果として もたらす命令;及び − 投機的トラップエントリを開始させるタイプの命令 から成るグループの中から選択された命令である請求項219 に記載の方法。 222.投機的命令シーケンスが関与する実行可能な命令の第2の予め定められ たセットのうちのいずれか1つを実行する前に前記プロセッサを同期化する段階 をさらに含む、請求項220 に記載の方法。 223.前記マシンの同期化段階には、 − 実行に先立ちマシンの同期化を要求する前記その他の命令の発行/実行を暫 定的に中断する段階; − 完遂し退去させるべき実行段において全ての保留命令を待ち、前記プロセッ サがマシン同期化に到着した後で前記その他の命令を発行/実行する段階、 が含まれている請求項222 に記載の方法。 224.命令を発行するための手段、命令を実行するための手段及びプロセッサ 内でデータを記憶するためのメモリ記憶装置を有するプロセッサの中で、命令境 界においてプロセッサ内でマシン状態を回復する方法において、 − 予め定められた複数の投機的発行済み予測命令の実行に先立って前記プロセ ッサの前記データ記憶装置内のレジスタに、予め定められたマシン状態パラメー タを記憶する段階; − 実行例外又は障害条件を検出するべく命令実行を監視する段階; − 前記実行例外又は障害条件を結果としてもたらす各命令の命令識別子をセー ブする段階; − 複数の実行済み命令が実行例外又は障害条件を結果としてもたらした場合に 、この複数の例外又は障害発生命令のいずれが順序的 により早期であるかを決定する段階; − 前記最も早期の例外又は障害発生識別子をエンドポイントとして用いてプロ セッサ中のプログラムカウンタをバックアップする段階; − 前記最も早期の障害発生命令がチェックポイント実行済み命令である場合に 、この障害発生命令の実行に先立ち前記チェックポイント内に記憶された前記マ シン状態情報を回復し、プロセッサプログラムカウンタを前記障害発生命令の命 令シリアル番号まで減分して前記先行するマシン状態を回復する段階;及び − マシン状態情報が記憶された前記予め定められた実行可能な命令の1つが、 順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合には 、(i)まず最初に、前記障害発生命令の後で前記障害発生命令に最も近いチェ ックポイントまで前記プロセッサをバックアップし、(ii)第2にレジスタ資源 を更新することによって前記障害命令の実行の直前に存在した状態までプロセッ サの状態を回復するように前記プロセッサをバックアップさせ、(iii)前記障 害発生命令の命令シリアル番号までプロセッサプログラムカウンタを減分させる 段階; を含んで成る方法。 225.命令境界でマシン状態を回復する方法において; − 制御レジスタ値を修正する副作用をもち得る命令を含め、アーキテクチャ制 御レジスタを修正し得るあらゆる命令について、(i)前記マシンを同期化する こと又は(ii)制御レジスタ更新が必要でなくなるように前記命令の実行に先立 ってマシン状態を保存するべく前記プロセッサ内の前記データ記憶構造内で命令 チェックポイントを生成、記憶することのいずれかを選ぶ段階; − 任意の投機的命令シーケンスを含むプログラムカウンタ不連続 性を作り出すあらゆる命令について、プログラムカウンタ値がin-order命令シー ケンス内の命令に対応しかつ障害をひき起こした命令の再発行及び実行なく正し いプログラムカウンタを再構築できるように前記命令の実行に先立ってアーキテ クチャ及びマシン状態を保持するべく前記プロセッサ内のデータ記憶装置内で命 令チェックポイントを生成、記憶する段階; − 実行例外又は障害条件を検出するべく命令実行を監視する段階; − 前記実行例外又は障害条件を結果としてもたらす各命令の命令識別子をセー ブする段階; − 複数の実行済み命令が実行例外又は障害条件を結果としてもたらした場合に 、この複数の例外又は障害発生命令のいずれが順序的により早期であるかを決定 する段階; − 前記最も早期の例外又は障害発生識別子をエンドポイントとして用いてプロ セッサ中のプログラムカウンタをバックアップする段階; − 前記最も早期の障害発生命令がチェックポイント実行済み命令である場合に 、この障害発生命令の実行に先立ちチェックポイント内に記憶された前記マシン 状態情報を回復し、プロセッサプログラムカウンタを前記障害発生命令の命令シ リアル番号まで減分して前記先行するマシン状態を回復する段階;及び − マシン状態情報が記憶された前記予め定められた実行可能な命令の1つが、 順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合には 、(i)まず最初に、前記障害発生命令の後で前記障害発生命令に最も近いチェ ックポイントまで前記プロセッサをバックアップし、(ii)第2にレジスタ資源 を更新することによって前記障害命令の実行の直前に存在した状態までプロセッ サの状態を回復するように前記プロセッサをバックアップさせ、(iii)前記障 害発生命令の命令シリアル番号までプロセッサプログラムカウンタを減分させる 段階; を含んで成る方法。 226.前記命令識別子は、前記命令が発行された時点で割当てられた前記命令 シリアル番号である請求項225 に記載の方法。 227.各々の前記チェックポイントには、レジスタリネームマップ及び制御; アーキテクチャ制御レジスタ値;ISN;アーキテクチャプログラムカウンタ(PC )及び次のアーキテクチャプログラムカウンタ(PC);及び代替次プログラムカ ウンタ(PC)が含まれている、請求項226 に記載の方法。 228.前記チェックポイントは、命令発行サイクル中に生成され割当てられる 請求項225 に記載の方法。 229.前記マシンの同期化段階には、 − 実行に先立ちマシンの同期化を要求する前記その他の命令の発行/実行を暫 定的に中断する段階; − 完遂し退去させるべき実行段において全ての保留命令を待ち、前記プロセッ サがマシン同期化に到着した後で前記その他の命令を発行/実行する段階、 が含まれている請求項225 に記載の方法。 230.実行に先立ちマシンの同期化を要求するために識別された前記その他の 命令が、命令の同期化を要求するための性能劣化及び投機度への依存度といった 考慮事項を含む性能−設計トレードオフに基づいて選択される、請求項225 に記 載の方法。 231.実行前の前記マシンの同期化を要求するものとしてマシン内のどの命令 を指定すべきかを選択する方法において、 − 前記命令のための投機度を決定する段階; − 命令の全てを投機的にとり扱うのに必要となる要求された論理を実施するよ う割振ることが望ましい最大回路部域を決定することを含む、実施することが望 ましい論理的複雑性の限界を決定する段階; − 各々のトレードオフパラメータについての重み係数を含め、予め定められた トレードオフパラメータを設定する段階; − 前記決定及び前記基準に基づいてその命令が同期化を要求するはずのもので あるか否かを決定するべく命令のための性能指標を計算する段階、 を含んで成る方法。 232.命令を発行するための手段、命令を実行するための手段及びプロセッサ の中にデータを記憶するためのメモリ記憶装置を有するプロセッサの中で、あら ゆる命令境界でプロセッサ内の先行するマシン状態を回復するための装置におい て − 各々の発行済み命令について1つの命令シリアル番号を割振るための手段; − マシン状態を変更する実行可能な命令の第1の予め定められたセットについ てのみ実行に先立って前記プロセッサ内のデータ記憶装置内で1つのチェックポ イント中にマシン状態情報を記憶する手段であって、ここでマシン状態を変える 実行可能な命令の前記予め定められたセットが、このプロセッサ内で実施された マシン状態を変化させる実行可能な命令の全てのセットよりも少ないような手段 ; − 前記障害をひき起こす命令を識別し、多数の例外又は障害が同時に発生した 場合には、障害又は例外をひき起こす順序的に最も早期のin-order命令を識別す る手段; − 前記最も早期の障害発生命令がチェックポイント実行された命 令である場合には、前記障害発生命令の実行に先立って記憶された前記マシン状 態情報を回復させプロセッサプログラムカウンタを前記障害発生命令の命令シリ アル番号まで減分させて前記先行するマシン状態を回復するための手段; − マシン状態情報が記憶された前記予め定められた実行可能な命令の1つが順 序的に前記障害発生命令と最後に発行された命令の間に置かれている場合に、よ り早期の状態まで前記プロセッサをバックトラッキングするための手段;を含み 、 − 前記バックトラッキング用手段には、順序的に前記障害発生命令の後に前記 故障発生命令に最も近いチェックポイントまで前記プロセッサをバックアップす るための手段が含まれ、しかも − レジスタ資源を更新することにより前記故障発生命令の実行の直前に存在し ていたプロセッサの状態を回復するべく、前記プロセッサをバックステップさせ るための手段;及び − 前記障害発生命令の命令シリアル番号までプロセッサプログラムカウンタを 減分させるための手段、 を含んで成る装置。 233.前記プロセッサ内の前記データ記憶装置内にマシン状態情報を記憶する ための前記手段には、前記マシン状態のためのレジスタリネームマップを記憶す るための手段が含まれている請求項232 に記載の装置。 234.前記レジスタリネームマップから前記状態を回復することによって前記 マシン状態を回復するための手段をさらに含んで成る請求項233 に記載の装置。 235.投機的命令シーケンスが関与する実行可能な命令の第2の予め定められ たセットのいずれか1つを実行する前に前記プロセッサを同期化するための手段 をさらに含んで成る請求項232 に記載の 方法。 236.前記マシンの同期化用手段には、 − 実行に先立ちマシンの同期化を要求する前記その他の命令の発行/実行を暫 定的に中断するための手段; − 以前に発行された命令が完遂され退去されてしまうまで実行段階中の全ての 保留命令の発行を遅延させるための手段; − 前記プロセッサがマシンの同期化に到達した後に前記同期化タイプの命令の 発行及び実行を開始するための手段; が含まれている請求項235 に記載の方法。 237.データを記憶するための内部データ記憶装置、命令を発行するための命 令発行ユニット手段、命令復号ユニット、命令を実行するための命令実行ユニッ ト手段及び命令発行及び実行スケジューラ、及び前記実行ユニットから処理ユニ ット内のその他のユニットまで実行結果を伝達するデータ順方向分配バスを有し 、外部メモリと交信し、対応するトラップレベルを各々有するネストされたトラ ップをとるため予め定められた数のトラップレベルを支持している、命令発行ユ ニットによって発行された命令を実行するための処理ユニット中で、命令実行効 率を増大するための方法において、 − プロセッサ内の投機的命令をトラッキングする段階; − 精確な例外モデルを維持する、ロード及びストア命令を含むメモリ参照命令 をトラッキングし攻撃的にスケジュールする段階; − 精確なアーキテクチャ状態を維持する一方でチェックポイント実行済みの状 態を低減させるべく前記処理ユニット内の命令をチェックポイント実行する段階 ; − 前記実行手段内に発生する例外について例外取り扱いを束縛する段階; − 複数の投機的発行済みの予測された命令の実行結果を同時に監 視する段階; − 浮動小数点例外を検出する段階; − 投機的にトラップをとりここから復帰する段階;及び − プロセッサ状態回復を要求する条件を検出した時点で任意の命令境界でプロ セッサ内の先行するマシン状態を回復する段階; を含んで成る方法。 238.プロセッサ内での投機的命令実行をトラッキングする前記段階には、 − データ記憶装置内のデータ構造を規定する段階; − 発行ユニットによって発行された各命令に対して識別タグを割当てる段階; − 割当てられたタグに基づいて各々の発行済み命令に対して、データ構造内に 記憶された1つの活動ビットを結びつける段階; − 命令が発行された時点で、データ構造内に活動ビットをセットする段階;及 び − 命令がエラー無しで実行を完了した時点でデータ構造内の活動ビットをクリ アする段階、 が含まれている、請求項237 に記載の方法。 239.精確な例外モデルを維持する、ロード及びストア命令を含むメモリ参照 命令をトラッキングし攻撃的にスケジュールする前記段階には、 − 前記プロセッサによる実行のための複数の命令を発行する段階; − 前記発行済みの複数の命令のうちのいずれが投機的に発行された命令である かを識別する段階; − 前記内部データ記憶装置内に、前記識別された投機的に発行された命令の各 々に付随する投機的実行インジケータを記憶する段階 ; − 前記発行済み命令のいずれが外部メモリを参照するかを決定する段階; − 前記内部データ記憶装置の中に前記決定されたメモリ参照命令に付随するメ モリ参照命令インジケータを記憶する段階; − 前記命令が発行された後前記複数の命令のうちの各々の命令の実行活動状況 を監視する段階; − 各々の発行済み命令について実行中に何らかのエラー条件が発生したか否か を確認し、実行中にエラーを経験した各々の命令のためにエラー状況を表示する エラー条件インジケータを生成する段階; − 前記発行済み命令の実行状況をトラッキングする段階;及び − その他の発行されたものの実行されていない命令の実行状況に基づいて、順 序的により早期の発行済みの非メモリ参照命令に先立ち、out-of-order実行のた めに前記決定されたメモリ参照命令のうちの特定の1つの命令をスケジュールす る段階であって、この実行状況には、投機的に発行された命令であるものとして の非メモリ参照命令の識別及び予め定められた実行完了状況を有するものとして の非メモリ参照命令の識別が含まれている、スケジュール段階、 が含まれている請求項238 に記載の方法。 240.前記CPU のための精確なアーキテクチャ状態を維持する一方でチェック ポイント実行済み状態を低減させるべく前記プロセッサ内の命令をチェックポイ ント実行する前記段階には、 − 前記CPU 内で実行されたときにアーキテクチャ状態を修正する可能性のある 命令を、その発行及び実行前に予め識別する段階; − 予め定められた選択基準に基づいて実行する前にアーキテクチャ状態をチェ ックポイント実行せずに特別な実行モードにて実行す るための、前記識別された命令のうちの特定の命令を予め選択する段階; − 実行に先立ち前記予め選択された特定の命令以外の前記識別された命令につ いてアーキテクチャ状態をチェックポイント実行する段階;及び − 前記特殊モードでの前記命令のうちの特定の命令の実行を含め、前記識別さ れた命令を実行する段階、 が含まれている請求項239 に記載の方法。 241.前記実行手段内で発生する例外について例外取扱いを束縛する前記段階 には、、 − タイムアウト条件を規定する特定された事象の発生回数について予め定めら れた閾値を設定し、この閾値を前記CPU 内の第1のデータ記憶装置の中に記憶す る段階、 − 前記CPU 内のカウンタ内で前記特定された事象の発生を計数し、前記発生回 数を前記CPU 内の第2のデータ記憶装置内に1つの計数として記憶する段階; − 前記計数を前記閾値と比較する段階; − 前記計数が前記タイムアウト条件以上である場合に、タイムアウトチェック ポイントを形成する段階、 が含まれている、請求項240 に記載の方法。 242.複数の投機的発行済みの予測された命令の実行結果を同時に監視する前 記段階には、 − プロセッサ内の前記データ順方向分配全体にわたり前記実行ユニットからの 実行結果信号を受理するように結合されたウォッチポイントデータを記憶するた めの複数のウォッチポイントレジスタをもつウォッチポイントユニットを提供す る段階; − 前記投機的に発行された予測された命令の各々について、制御 フロー転送方向を左右し投機的発行済み予測命令を投機的に発行する基礎となる 1つの条件の予測値を識別する予測条件データ結果を含むウォッチポイントデー タを記憶するために1つのウォッチポイントレジスタを割振る段階; − 前記データ順方向送りバス上で伝送される前記投機的発行済みの予測命令に ついての実行結果信号を監視する段階; − 前記記憶されたウォッチポイントデータ及び実際の既知の条件データ結果信 号及び予め定められた規則を含む前記記憶されたウォッチポイントデータ及び実 行結果信号に基づき、予め定められた事象の発生を検出する段階であって、ここ で前記実際の既知の条件データ結果信号が、前記投機的発行済みの予測命令の制 御フロー転送方向を決定する上で基礎となるべき条件の実際の値を識別している ような、段階; − 信号が一致しているかしていないかを決定するべく前記投機的に発行された 命令に関して前記データ順方向送りバス上で到着した前記結果信号と前記投機的 に発行された予測命令のうちの1つについて前記ウォッチポイントレジスタ内に 記憶された前記ウォッチポイントデータを比較する段階であって、一致は前記投 機的発行済み予測命令が正しく予測されていたことを表わし、不一致は、前記投 機的発行済み予測命令が誤予測されていたことを表わすような、段階;及び − 比較の結果、前記予測が誤予測であったことが表示された場合には、前記誤 予測に基づいて実行された命令が取消されるように前記中央処理ユニットをより 早朝の中央処理ユニット状態まで回復させる段階、 が含まれている請求項241 に記載の方法。 243.浮動小数点例外を検出する前記段階には、 − 実行のためプログラム制御順で命令を発行する段階であって発行される命令 には、浮動小数点及び非浮動小数点命令が含まれている段階; − 少なくとも浮動小数点命令が、実行手段によってプログラム制御順外でout- of-order実行され得るように発行済み命令を実行する段階; − ・発行済み命令の各々が記憶要素の1つに対応し、各々の記憶要素が浮動小 数点命令識別フィールドと浮動小数点トラップタイプフィールドを有する、記憶 要素を含むデータ記憶構造を提供する段階 ・各々の発行済み命令について対応する発行済み命令が浮動小数点命令である か否かを表示する対応する記憶要素の浮動小数点命令識別フィールド内へのデー タを書込む段階; ・実行中に浮動小数点実行トラップの予め規定された複数のタイプのうちの対 応する1つのタイプを結果としてもたらすことになる単数又は複数の浮動小数点 実行例外をひき起こす各々の発行された浮動小数点命令について、結果としても たらされることになる浮動小数点実行トラップの予め定められたタイプのうちの 1つを識別する対応する記憶要素の浮動小数点トラップタイプフィールド内への データを書込む段階; − 実行中実行例外をひき起こさず、プログラム制御順でそれに先行する全ての 発行済み命令が退去されてしまっている各々の発行済み命令を退去させる段階; − 予め定められた実行例外のうちの第1のものが発行済み命令によってひき起 こされた時点で、発行済み命令の実行を続行し、退去され得ない発行済み命令に 遭遇するまで発行済み命令を退去させ続けることにより実行トラップ順序付けに 着手し、ここで退去され得 ない発行済み命令は、(a)第1の実行例外をひき起こした発行済み命令、及び (b)第1の実行例外をひき起こした発行済み命令よりも早期に発行されたもの の第1の実行例外よりも晩期に発生する第2の実行例外をひき起こした発行済み 命令のうちの1つである段階; − 浮動小数点トラップタイプフィールドをもつ浮動小数点状況レジスタを提供 する段階;及び − 退去され得ない命令に対応する記憶要素の浮動小数点識別フィールド内のデ ータが、この退去され得ない命令が浮動小数点命令であることを表示した時点で 、退去され得ない命令に対応する記憶要素の浮動小数点トラップタイプフィール ド内のデータにより識別された浮動小数点実行トラップのタイプを識別する浮動 小数点状況レジスタの浮動小数点トラップタイプフィールドに対するデータを書 込む段階; が含まれている請求項242 に記載の方法。 244.投機的にトラップをとりこのトラップから復帰する前記段階には、 − チェックポイントを形成する段階; − チェックポイントをバックアップする段階; − トラップを取る段階; − トラップから復帰する段階; − トラップが取られる度毎のデータプロセッサの状態を規定する内容をもつレ ジスタを提供する段階; − トラップレベルより多い数のトラップスタック記憶エントリを有するトラッ プスタックデータ記憶構造を提供する段階; − トラップレベルのうちの1つにマッピングするため現在利用可能なトラップ スタック記憶エントリの現行の利用可能性リストを維 持し、トラップがとられる毎にトラップレベルのうちの対応するものにマッピン グするため現在利用可能なトラップスタック記憶エントリのうちの次のものを識 別する段階; − とられた各々のトラップについて、現在利用可能なトラップスタック記憶エ ントリのうちの次のものに対しレジスタの内容を書込む段階; − トラップがとられる毎に、トラップスタック記憶エントリのうちの1つに対 する対応するトラップレベルの古いマッピングを、現在利用可能なトラップスタ ック記憶エントリのうちの次のエントリに対する対応するトラップレベルの現行 マッピングと置換することによってトラップスタック記憶エントリのうちの1つ に対する各トラップレベルの現行のマッピングを維持する段階、 − トラップがとられる毎に、古いマッピングにより対応するトラップレベルに マッピングされたトラップスタック記憶エントリを利用不能性リストに付加し、 とったトラップをもはや取消しできなくなる毎に、古いマッピングにより対応す るトラップレベルにマッピングされたトラップスタック記憶エントリを利用不能 性リストから除去することによって、現行マッピングによりトラップレベルの1 つに現在マッピングされていないもののトラップレベルの1つにマッピングする ためには利用できない各々のトラップスタック記憶エントリの利用不能性リスト を維持する段階; − 現行の利用可能性リストに対し、利用不能性リストから除去された各々のト ラップスタック記憶エントリを付加する段階; − チェックポイント記憶エントリを含み、形成された各チェックポイントが対 応するチェックポイント記憶エントリをもつような、チェックポイント記憶ユニ ットを提供する段階; − 各々の形成されたチェックポイントについて、対応するチェッ クポイント記憶エントリ内で、現行のマッピング及び現行の利用可能性リストを 記憶する段階; − チェックポイントに対する各々のバックアップについて、現行のマッピング を対応するチェックポイント記憶エントリ内に記憶されたマッピングと置換し、 現行の利用可能性リストを対応するチェックポイント記憶エントリ内に記憶され た利用可能性リストを置換する段階、 が含まれている請求項243 に記載の方法。 245.プロセッサ状態の回復を要求する条件を検出した時点で任意の命令境界 でプロセッサ内の先行するマシン状態を回復する前記段階には; − 各々の発行済み命令について1つの命令シリアル番号を割振る段階; − マシン状態を変更する実行可能な命令の第1の予め定められたセットについ てのみ実行に先立って前記プロセッサ内のデータ記憶装置内で1つのチェックポ イント中にマシン状態情報を記憶する段階であって、ここでマシン状態を変える 実行可能な命令の前記予め定められたセットが、このプロセッサ内で実施された マシン状態を変化させる実行可能な命令の全てのセットよりも少ないような段階 ; − 前記障害をひき起こす命令を識別し、多数の例外又は障害が同時に発生した 場合には、障害又は例外をひき起こす順序的に最も早期のin-order命令を識別す る段階; − 前記最も早期の障害発生命令がチェックポイント実行された命令である場合 には、前記障害発生命令の実行に先立って記憶された前記マシン状態情報を回復 させプロセッサプログラムカウンタを前記障害発生命令の命令シリアル番号まで 減分させて前記先行するマ シン状態を回復する段階; − マシン状態情報が記憶されてきた前記予め定められた実行可能な命令の1つ が順序的に前記障害発生命令と最後に発行された命令の間に置かれている場合に は、(i)まず最初に、順序的に前記障害発生命令の後で前記障害発生命令に最 も近いチェックポイントまで前記プロセッサをバックアップし、(ii)第2にレ ジスタ資源を更新することによって前記障害命令の実行の直前に存在した状態ま でプロセッサの状態を回復するように前記プロセッサをバックステップさせ、( iii)前記障害発生命令の命令シリアル番号までプロセッサプログラムカウンタ を減分させる段階; が含まれている請求項244 に記載の方法。
JP52508596A 1995-02-14 1996-02-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 Expired - Fee Related JP3670290B2 (ja)

Applications Claiming Priority (21)

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/482,075 US5655115A (en) 1995-02-14 1995-06-07 Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation
US08/487,801 US5751985A (en) 1995-02-14 1995-06-07 Processor structure and method for tracking instruction status to maintain precise state
US08/472,394 1995-06-07
US08/487,801 1995-06-07
US08/483,958 1995-06-07
US08/484,795 US5673426A (en) 1995-02-14 1995-06-07 Processor structure and method for tracking floating-point exceptions
US08/478,025 1995-06-07
US08/473,223 US5644742A (en) 1995-02-14 1995-06-07 Processor structure and method for a time-out checkpoint
US08/478,025 US5651124A (en) 1995-02-14 1995-06-07 Processor structure and method for aggressively scheduling long latency instructions including load/store instructions while maintaining precise state
US08/472,394 US5673408A (en) 1995-02-14 1995-06-07 Processor structure and method for renamable trap-stack
US08/473,223 1995-06-07
US08/482,073 1995-06-07
US08/484,795 1995-06-07
US08/476,419 US5659721A (en) 1995-02-14 1995-06-07 Processor structure and method for checkpointing instructions to maintain precise state
US08/476,419 1995-06-07
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
PCT/US1996/001930 WO1996025705A1 (en) 1995-02-14 1996-02-13 Structure and method for high-performance speculative execution processor providing special features

Related Child Applications (3)

Application Number Title Priority Date Filing Date
JP2004265716A Division JP3787142B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2004265586A Division JP3754439B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2004265390A Division JP3787141B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法

Publications (2)

Publication Number Publication Date
JPH11500551A true JPH11500551A (ja) 1999-01-12
JP3670290B2 JP3670290B2 (ja) 2005-07-13

Family

ID=34979088

Family Applications (7)

Application Number Title Priority Date Filing Date
JP52508596A Expired - Fee Related JP3670290B2 (ja) 1995-02-14 1996-02-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2004265716A Expired - Fee Related JP3787142B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2004265586A Expired - Fee Related JP3754439B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2004265390A Expired - Fee Related JP3787141B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2006006056A Pending JP2006107536A (ja) 1995-02-14 2006-01-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2006006315A Expired - Fee Related JP4142690B2 (ja) 1995-02-14 2006-01-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2007180315A Pending JP2007287176A (ja) 1995-02-14 2007-07-09 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法

Family Applications After (6)

Application Number Title Priority Date Filing Date
JP2004265716A Expired - Fee Related JP3787142B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2004265586A Expired - Fee Related JP3754439B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2004265390A Expired - Fee Related JP3787141B2 (ja) 1995-02-14 2004-09-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2006006056A Pending JP2006107536A (ja) 1995-02-14 2006-01-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2006006315A Expired - Fee Related JP4142690B2 (ja) 1995-02-14 2006-01-13 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2007180315A Pending JP2007287176A (ja) 1995-02-14 2007-07-09 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法

Country Status (3)

Country Link
EP (1) EP0815507B1 (ja)
JP (7) JP3670290B2 (ja)
WO (1) WO1996025705A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7086035B1 (en) 1999-05-13 2006-08-01 International Business Machines Corporation Method and system for counting non-speculative events in a speculative processor
JP2013122774A (ja) * 2006-09-27 2013-06-20 Qualcomm Inc 同時に予測された分岐命令を解決するための方法および装置
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器
WO2016043271A1 (ja) * 2014-09-19 2016-03-24 株式会社 東芝 プロセッサおよびプロセッサシステム
JP2017509063A (ja) * 2014-03-27 2017-03-30 インテル・コーポレーション ストアをソート及びリタイアする命令及びロジック
JP2018538628A (ja) * 2015-12-28 2018-12-27 クアルコム,インコーポレイテッド ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ
JP2022519848A (ja) * 2019-02-06 2022-03-25 アーム・リミテッド アンカーデータ値のオーバーフロー又はアンダーフロー処理

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047370A (en) * 1997-12-19 2000-04-04 Intel Corporation Control of processor pipeline movement through replay queue and pointer backup
DE19929050C2 (de) * 1998-08-19 2002-01-03 Ibm Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem
US7486854B2 (en) 2006-01-24 2009-02-03 Uni-Pixel Displays, Inc. Optical microstructures for light extraction and control
JP5277961B2 (ja) 2006-10-13 2013-08-28 日本電気株式会社 情報処理装置及びその故障隠蔽方法
JP5326314B2 (ja) 2008-03-21 2013-10-30 富士通株式会社 プロセサおよび情報処理装置
KR101669989B1 (ko) 2010-05-27 2016-10-28 삼성전자주식회사 파이프라인 프로세서 및 이퀄 모델 보존 방법
KR102010317B1 (ko) * 2013-03-14 2019-08-13 삼성전자주식회사 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅
US9436552B2 (en) 2014-06-12 2016-09-06 International Business Machines Corporation Checkpoint triggering in a computer system
KR102330389B1 (ko) * 2014-07-24 2021-11-24 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9785442B2 (en) 2014-12-24 2017-10-10 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387158B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US20160357556A1 (en) * 2014-12-24 2016-12-08 Elmoustapha Ould-Ahmed-Vall Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10248509B2 (en) 2016-11-16 2019-04-02 International Business Machines Corporation Executing computer instruction including asynchronous operation
JP7225745B2 (ja) 2018-12-06 2023-02-21 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10877768B1 (en) 2019-09-06 2020-12-29 Microsoft Technology Licensing, Llc Minimizing traversal of a processor reorder buffer (ROB) for register rename map table (RMT) state recovery for interrupted instruction recovery in a processor
US11119772B2 (en) 2019-12-06 2021-09-14 International Business Machines Corporation Check pointing of accumulator register results in a microprocessor
CN111159051B (zh) * 2019-12-31 2023-07-04 北京天融信网络安全技术有限公司 死锁检测方法、装置、电子设备及可读存储介质
US11061677B1 (en) 2020-05-29 2021-07-13 Microsoft Technology Licensing, Llc Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor
CN114355968B (zh) * 2021-11-26 2023-12-12 中国航空无线电电子研究所 一种基于多维匹配的机载设备自主控制方法和装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0306891A3 (en) * 1987-09-11 1992-04-01 National Semiconductor Corporation Pipelined slave protocol for high performance cpu-fpu cluster
US5109514A (en) * 1988-07-28 1992-04-28 Sun Microsystems, Inc. Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions
US4912707A (en) * 1988-08-23 1990-03-27 International Business Machines Corporation Checkpoint retry mechanism
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5185872A (en) * 1990-02-28 1993-02-09 Intel Corporation System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5237700A (en) * 1990-03-21 1993-08-17 Advanced Micro Devices, Inc. Exception handling processor for handling first and second level exceptions with reduced exception latency
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
EP0514763A3 (en) * 1991-05-20 1993-08-25 Motorola, Inc. A data processor having a logical register content-addressable memory
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
EP0547240B1 (en) * 1991-07-08 2000-01-12 Seiko Epson Corporation Risc microprocessor architecture implementing fast trap and exception state
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
DE4237417C2 (de) * 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo Befehlsablauffolgeplanung von einem risc-superskalarprozessor
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
JPH06236274A (ja) * 1993-01-08 1994-08-23 Internatl Business Mach Corp <Ibm> スーパースカラ・プロセッサ・システム内でスカラ命令を追跡する方法およびシステム
US5471598A (en) * 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer
EP0649086B1 (en) * 1993-10-18 2000-07-19 National Semiconductor Corporation Microprocessor with speculative execution
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

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7086035B1 (en) 1999-05-13 2006-08-01 International Business Machines Corporation Method and system for counting non-speculative events in a speculative processor
JP2013122774A (ja) * 2006-09-27 2013-06-20 Qualcomm Inc 同時に予測された分岐命令を解決するための方法および装置
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器
JP2017509063A (ja) * 2014-03-27 2017-03-30 インテル・コーポレーション ストアをソート及びリタイアする命令及びロジック
US10514927B2 (en) 2014-03-27 2019-12-24 Intel Corporation Instruction and logic for sorting and retiring stores
WO2016043271A1 (ja) * 2014-09-19 2016-03-24 株式会社 東芝 プロセッサおよびプロセッサシステム
JP2018538628A (ja) * 2015-12-28 2018-12-27 クアルコム,インコーポレイテッド ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ
US11188336B2 (en) 2015-12-28 2021-11-30 Qualcomm Incorporated Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model
JP2022519848A (ja) * 2019-02-06 2022-03-25 アーム・リミテッド アンカーデータ値のオーバーフロー又はアンダーフロー処理

Also Published As

Publication number Publication date
JP3787142B2 (ja) 2006-06-21
EP0815507B1 (en) 2013-06-12
JP3670290B2 (ja) 2005-07-13
EP0815507A4 (en) 2001-05-16
EP0815507A1 (en) 1998-01-07
JP2006107536A (ja) 2006-04-20
JP2004355663A (ja) 2004-12-16
JP2006107537A (ja) 2006-04-20
JP4142690B2 (ja) 2008-09-03
JP2007287176A (ja) 2007-11-01
JP2005025782A (ja) 2005-01-27
JP2005038445A (ja) 2005-02-10
JP3754439B2 (ja) 2006-03-15
WO1996025705A1 (en) 1996-08-22
JP3787141B2 (ja) 2006-06-21

Similar Documents

Publication Publication Date Title
JP5018728B2 (ja) 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP4142690B2 (ja) 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
CN109891393B (zh) 使用检查器处理器的主处理器错误检测
US7870369B1 (en) Abort prioritization in a trace-based processor
US5463745A (en) Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
CN103842959B (zh) 在计算机系统中维持操作数活性信息
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
CN110597556B (zh) 一种寄存器映射表检查点资源的管理方法、系统及介质
TWI439930B (zh) 具選擇性啟動早期引退功能之失序執行微處理器
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
JP2002508567A (ja) 誤推論後の命令再実施のためのアウトオブパイプライン・トレース・バッファ
JP2002508568A (ja) 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム
JP2002508564A (ja) 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ
JPH07152559A (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US10977038B2 (en) Checkpointing speculative register mappings
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
US7783863B1 (en) Graceful degradation in a trace-based processor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040913

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20041026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041227

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050303

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: 20050315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050414

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: 20080422

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130422

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees