JP2937485B2 - スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置 - Google Patents

スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置

Info

Publication number
JP2937485B2
JP2937485B2 JP8532529A JP53252996A JP2937485B2 JP 2937485 B2 JP2937485 B2 JP 2937485B2 JP 8532529 A JP8532529 A JP 8532529A JP 53252996 A JP53252996 A JP 53252996A JP 2937485 B2 JP2937485 B2 JP 2937485B2
Authority
JP
Japan
Prior art keywords
instruction
register
trap
instructions
stage
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.)
Expired - Fee Related
Application number
JP8532529A
Other languages
English (en)
Other versions
JPH10506739A (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.)
SK Hynix America Inc
Original Assignee
Hyundai Electronics America Inc
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
Application filed by Hyundai Electronics America Inc filed Critical Hyundai Electronics America Inc
Publication of JPH10506739A publication Critical patent/JPH10506739A/ja
Application granted granted Critical
Publication of JP2937485B2 publication Critical patent/JP2937485B2/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

【発明の詳細な説明】 発明の背景 本発明は、デコード段においてトラッピング条件を識
別し、パイプライン化されたスーパースカラプロセッサ
における動作を促進するような改善されたプロセッサの
アーキテクチャ及び動作に関する。
従来のプロセッサ設計は、一般に3段階の命令、即ち
取り出し(フェッチ)、デコード、実行の制御を含んで
いる。第1段階では、命令は、最後に取り出された命令
を指し示している、そしてそれによって次の命令を取り
出すことができるようになっているプログラムカウンタ
によって識別されたメモリ位置から取り出される。取り
出しに続いて命令は、考え得るデータ従属性についてチ
ェックされ、もしその試験を通れば、命令及びそのオペ
ランドが実行のために発行される。(データ従属性と
は、ある命令のためのデータが未だに使用不能であるた
めに、その命令を実行することができない環境であ
る。)発行された命令は、仮想発行プログラムカウンタ
によって識別することができる。一旦命令がデコードさ
れ、発行されるとそれは実行段へ送られ、実行段におい
てそれはある結果を発生し、この結果はレジスタファイ
ルまたはメモリの何れかの中へ書き込まれ、それによっ
てプロセッサの状態が変更される。
より最新のプロセッサは、ある命令を実行するのに必
要な資源が使用可能であるか否かを決定するために、そ
の命令のための資源をチェックするレジスタコアボード
と呼ばれる要素を含んでいる。もし使用可能であれば、
実行段においてその命令が終了前であってもその命令が
発行され、out−of−order実行がもたらされる可能性が
ある。レジスタスコアボードは、発行時に命令によって
変更されたであろう資源を記録(ロック)する。始めに
資源をロックした命令が、その後にそれらを更新するこ
とによってそれらをアンロックし、それをプロセッサに
通知するまで、これらの資源にアクセスすることを欲す
るその後の如何なる命令も発行されることはできない。
これらの既知のプロセッサ設計は、典型的には命令間
の資源従属性に起因する命令の発行の何等かの停止が、
命令の取り出しをも停止させてしまうという欠陥を持ち
ながら動作する。この停止は、実行のために発行される
命令を少なくするので、性能が損なわれる。
更に、コンピュータシステムは、多くの型の命令につ
いてハードウェアトラッピング条件を定義している。ハ
ードウェアトラッピング条件とは、現在の状態の下でそ
の命令のための実行の有意味の結果を発生することが許
されない状態のことである。ハードウェアトラッピング
条件は、典型的には、違法命令、特権命令、保護侵害、
ページフォルト、無効結果、オプションの浮動小数点プ
ロセッサがない時の浮動小数点命令、及びレジスタセッ
トオーバフローを含む。
ハードウェアトラッピング条件は、毎命令実行の前後
にコンピュータシステムによって自動的に試験される。
もしトラッピング条件が見出されれば、トラップが取り
除かれる。トラップを取り除くのは、トラップを発生さ
せた命令及びそれに続く全ての命令がマシンの状態に影
響を与えるのを防ぐ段階と、トラップを発生させた命令
をコンピュータ設計者には公知の指定されたトラップア
ドレスレジスタ内に保管する段階と、マシンのモードを
スーパバイザ(特権的)モードにセットする段階と、ト
ラップハンドラから取り出し命令へスイッチする段階と
からなる。トラップハンドラのアドレスは、典型的に
は、トラッピング条件の型に依存する定数を、特別な状
態レジスタ、即ち「トラップベースレジスタ(TBR)」
の内容に連結することによって決定される。
別の形状のトラップは、ソフトウェアトラップであ
る。多くのコンピュータシステムは、特別な命令を有し
ており、その副作用はトラップを強制することである。
これらはユーザモードプログラムによって使用され、オ
ペレーティングシステムのサービスを要求する(「シス
テム・コール」)。ソフトウェアトラップを検出した時
に遂行される段階は、ハードウェアトラップに関して上
述したものと同一であるが、トラップハンドラのアドレ
スが定数ではなく、トラップ命令自体によって計算され
る変数である点が異なっている。
殆ど全てのコンピュータシステムインプリメンテーシ
ョンは、パイプライン化されている。パイプライン化さ
れたインプリメンテーションでは、各命令を完全に実行
するには最小5乃至7クロックサイクルを必要とする。
典型的なシーケンスは、命令キャッシュから命令を取り
出す段階と、命令をデコードしてその資源要求を決定す
る段階と、命令のオペランド値をレジスタファイルから
読み出す段階と、命令を実行してある結果を発生する段
階からなり、これには1乃至3クロックを要し、その結
果をレジスタファイルにライトバックする。
ハードウェアの利用率を最大に維持するために、可能
な場合には毎クロックサイクルに新しい命令がパイプラ
インに入る。このようにして、各個々の命令の実行を完
了させるのに数サイクルを必要としたとしても、命令完
了レートを1/クロックサイクル程度に高めることができ
る。
若干のトラッピング条件は実行の結果に依存するの
で、実行段の後まで試験することはできない。これらの
命令に関して、試験は、レジスタファイルが無効結果で
更新されるのを防ぐのに間に合うように、ライトバック
サイクル中に行われる。トラッピング条件が検出された
時、トラップがライトバック段を通過した、従ってそれ
らの結果がレジスタファイルを更新した命令より前の全
ての命令は実行されている。トラッップを発生させた命
令の後の全ての命令は、未だパイプライン内にある。パ
イプライン化されたマシンにおいてあるトラップを取り
除くことは、パイプラインから全ての命令をフラッシュ
し、取り出し段をトラップハンドラアドレスへスイッチ
させるという簡単な問題である。
ライトバック段階でトラップを取り除くことは、その
トラップを発生させた命令の後のフラッシュされた命令
に対してハードウェアが使用されたことに基づく非効率
の程度を表している。普通のプロセッサでは、トラップ
を取り除くためにフラッシュされた命令の数は、パイプ
ラインの長さにほぼ等しい。このペナルティは簡易化の
目的に対しては小さいものであり、全てのトラップは同
じように処理される。例えばそれが認識されないか、ま
たは特権を与えられたために実行できない命令は、パイ
プラインのある早期段階におけるトラッピングとして単
にマークされるだけである。このトラッピングマーク
は、その命令が認識され、ライトバック段において操作
されるまで、パイプラインを通る命令のために便宜を図
る。
しかしながら、スーパースカラout−of−orderプロセ
ッサでは、ライトバック段階においてトラップを取り除
くことが原因の非効率性はかなり大きくなる。簡単に言
えば、このようなプロセッサは、デコード段の後にバッ
ファ(「命令シェルフ」)が挿入され、実行段の後に別
のバッファ(「結果シェルフ」)が挿入されていること
が普通のパイプラインとは異なっている。各バッファは
幾つかの命令を保持することができ、各命令は不確定時
間の間バッファ内に保持されて、それを次の段へ移動さ
せる条件が正しい組合わせとなるのを待機する。
1990年12月5日付米国特許出願第07/622,893号“Proc
essor Architecture Having Decoupled Fetching,Issui
ng and Updating Operations and Speculative Branchi
ng"に開示されているようなスーパースカラプロセッサ
では、パイプラインの最初の段階(取り出し)と最後の
段階(ライトバック)との間のこれらのバッファ内に64
命令までを保持することができる。従って、ライトバッ
ク段階においてトラップを検出し、操作することは、フ
ラッシュされる命令の実行帯域幅において数ダースのク
ロックを無駄使いすることになりかねない。若干の型の
トラップは、実行段の後まで検出することはできない。
これらの場合、努力が浪費されることは不可避である。
しかしながら、多くの型のトラップは、取り出し段また
はデコード段において検出することができる。
従来のout−of−orderプロセッサでは、取り出し段ま
たはデコード段において検出されたトラップは、伝統的
なパイプライン化されたマシンにおけるのと全く同じよ
うに処理される。その命令はトラップを発生させたもの
としてマークされ、次いで他の何れかと同様にマシン内
に送り出す。その命令は命令シェルフに着座してそれが
結果シェルフへ移動できるような自由実行ユニットを待
機し、そこで早めに取り出された全ての命令がライトバ
ック段階を通って行ってしまうまで待機しなければなら
ない。この時間の全ての間、取り出し及びデコード段
は、たとえ後続する命令が全てフラッシュされることを
デコード段が知っていても、そのトラップを発生させた
命令の後の命令を送り続ける。
デコード段階において検出される多くの型のハードウ
ェアトラップは、違法命令、特権または保護侵害のよう
な「発生する筈がない」取り合わせである。取り出し段
において検出されるページフォルトのような他のトラッ
プ型は、たとえ無駄使いされる命令が数ダースになルと
しても、それを些細なものにしてしまうような大きいオ
ーバヘッドをトラップハンドラ内に必要とする。しかし
ながら、プログラム作成上の誤りではなく、発生するこ
とが予測される、そしてトラップハンドラ内にそれ程の
オーバヘッドを必要としないあるクラスのトラップ、即
ちソフトウェアトラップ及びレジスタセットオーバフロ
ーが存在する。スーパースカラout−of−orderプロセッ
サのライトバック段においてこのクラスのトラップが取
り除かれるのを待機しながら、累積努力を無駄使いする
ことは重大な問題である。
発明の概要 本発明は、複数のパイプライン化された命令で動作す
るスーパースカラプロセッサにおけるプログラム命令ハ
ードウェア及びソフトウェアトラップを検出して実行す
る装置を包含する。本装置は、命令キャッシュから、ま
たは主メモリから命令を取り出す取り出し手段と、取り
出し手段から取り出された命令を記憶する命令FIFOメモ
リと、記憶された命令の相対的年齢に従ってFIFOメモリ
から命令を取り出してそれらの命令をトラッピングに関
して調べる命令デコード手段とを含んでいる。ある命令
内のトラップの識別に応答して、デコード手段は全ての
若い命令をFIFOメモリからフラッシュする。
本発明においては、ある命令に対するハードウェアト
ラッピング条件をデコード段が検出すると、その命令を
命令シェルフへ送る代わりに、その命令及びその命令の
後に取り出された全ての命令をフラッシュする。ソフト
ウェアトラップの場合には、計算されたトラップハンド
ラアドレスを入手するためにそのトラップを発生させた
命令だけを送り、その後の全ての命令をフラッシュす
る。そのトラップを発生させた命令のアドレスは、指定
されたトラップアドレスレジスタのコピー内に保管され
る。モードがセットスーパバイザモードにされ、新しい
レジスタセットにスイッチされ、そしてトラップハンド
ラのアドレスが分かり次第、取り出し段にトラップハン
ドラから命令の取り出しを開始させる。トラップハンド
ラのアドレスは、トラップベースレジスタTBRと、ハー
ドウェアトラップの場合には一定のトラップ型の数、ま
たはソフトウェアトラップ命令の実行の結果の何れかと
の連結によって与えられる。
本発明では、デコード段において検出されたハードウ
ェアトラップを取り除いたことによる唯一のペナルティ
は、命令が命令シェルフ内に配置されない小さいタイム
ウィンドウである。しかしながら、命令シェルフは待ち
行列デバイスであるから、この間隔の開始時には既に充
分な命令がその中にあることが見込まれので、デコード
段が命令の発行を再開するまで実行段は使用中(ビジ
ー)に維持される。ソフトウェアトラップに対するペナ
ルティは、トラップ命令が実行段に到着するのを待機し
なければならないので大きめではあるが、それでもトラ
ップ命令がライトバック段に到着するのを待機するより
は遥かに小さい。
デコード段における特権侵害を検出できるようにする
ために、本発明は、実行段においてではなく、デコード
段においてトラップハンドラの入口及び出口におけるス
ーパバイザモードへの、及び該モードからの変化を実行
する。同様に、デコード段におけるレジスタセットオー
バフロートラップを検出できるようにするために、本発
明は、実行段においてではなく、デコード段においてサ
ブルーチン呼出し及び復帰のためになされるレジスタセ
ット変化を実行する。
本発明、及びその目的及び特色は以下の添付図面を参
照しての詳細な説明及び請求の範囲から明白になるであ
ろう。
図面の簡単な説明 図1は、本発明を使用することができるスーパースカ
ラプログラムのアーキテクチャの簡易化した図の主デー
タ流れを示す図である。
図2は、アーキテクチャの付加的な成分を含むブロッ
ク線図である。
図3は、分岐実行動作を示すブロック線図である。
図4は、本発明による障害を処理するための装置の回
路図である。
好ましい実施例の説明 図1及び2のブロック線図、及び図3のチャートは前
記系属出願07/622,893に開示されているプログラムのア
ーキテクチャの概要を示している。命令フェッチャ9
(図2及び3参照)を公知の命令キャッシュメモリ(図
示してない)に結合し、キャッシュメモリから命令8を
受けることが好ましい。種々の機能の中から、フェッチ
ャ9は「スロットリング」機能を遂行する。例えば、も
しある命令を命令キャッシュから取り出すことができな
ければ、フェッチャ9は主命令メモリ(図示してない)
から命令を持ってきて命令キャッシュへ転送するように
動作する(100)。フェッチャ9によって遂行される他
の「スロットリング」機能の例は、ディスパッチするた
めに複数のクロックサイクルを必要とする命令を管理
し、また例えば命令に割当てるために使用できない識別
コードのような、ある理由のために取り出すことができ
ない命令を管理する(103)ことを含む。
図2に示すように、フェッチャ9は、キャッシュから
取り出した命令を動的レジスタファイル11に供給する。
動的レジスタファイルは、プロセッサ内でペンディング
の全ての非分岐命令を保持する。命令8がキャッシュか
ら取り出されるにつれて、それらには識別コード29、即
ちIDが割当てられる。これは、順番に取り出される各命
令に、厳格に順次のID値を割り当てるカウンタ(図示し
てない)によってなされる。これらの順次IDは、大きさ
の比較のために使用される最も重要な「カラー」ビット
を含んでいる。カラービット、及びもし必要ならば2つ
の命令IDの大きさを比較することによって、早めに取り
出された命令を決定することができる。これは、2つの
命令の間の「年齢」比較を、即ち、命令8がメモリから
取り出された時の相対的な順番を与える。
図2に示すように、フェッチャ9は、もし分岐を実行
することができなくてもフェッチャ9が停止しないよう
な手法で、分岐の実行をも管理する。実行すべき分岐に
関して、それは有効条件コードを有していなければなら
ない(109)。これらの条件コードは、条件コードを変
更する命令によってセットされる。従って、条件コード
を変更する命令がディスパッチされる時点に、フェッチ
ャ9はロックされたビットを配置することによって条件
コードレジスタを無効にする(117)。フェッチャは、
条件コードをロックした命令のIDを記憶する。条件コー
ドは、その命令が実行を終了して条件コードレジスタを
更新し(113)、それによって条件コードをアンロック
する(120)まで、ロックされたままである。
レジスタファイル及びメモリのように、順次に更新さ
れた時にそれがプロセッサの状態を反映していない場合
の条件コードレジスタの内容を、ここでは「狂気」と名
付ける。条件コードがロックされた時点(117)に関し
て、条件コードを変更する必要があることを指示する命
令が存在する。これは、後続分岐がその条件コードを使
用して決定を行うことを防いでいる。従って、フェッチ
ャは、この後続分岐命令を、条件コードをロックした命
令のIDと共に分岐シェルバ(shelver)13内に配置する
(112)。そのロッキング命令の唯一の結果は、その分
岐に関する有効条件コードを発生することである。
分岐シェルバ13内の分岐命令は、条件コードをロック
した命令が実行を完了して条件コードを更新するまで待
機する。分岐がシェルフに入れられると、フェッチャ9
は、予測ビットに基づいて、その位置から命令ストリー
ムを下って進行する方向、換言すれば、プログラムの連
続実行に関して最も可能性のある方向を決定する(11
2)。フェッチャ9は、予測した経路に沿って命令を
「投機的に」取り出し続ける。シェルフに入れられた分
岐命令が待っている条件コードが有効になると、分岐決
定が再評価され(115)、始めの決定と比較される(11
6)。もしその比較が、分岐が適正に実行されたことを
指示すれば、それはシェルフから除去される(118)。
もし決定が比較と異なれば(118)予測した決定が悪い
のであり、プロセッサは予測した分岐ではない別の分岐
に沿って進まなければならない。従って、プログラムは
別の方向の分岐命令から実行を再開しなければならな
い。
プロセッサにとって、不正確に予測した分岐決定(11
8)を辿っている方向を変化させるためにはプロセッサ
は如何なる点においても再始動可能でなければならな
い。例えば、プロセッサ内にはN命令が許容され、取り
出されてはいるが実行されていない命令が存在している
ものとする。プロセッサは、動的レジスタファイル内に
あるどの命令からも、即ち未だにメモリの状態を更新し
ていないどの命令からも再始動できなくてはならない。
再始動と呼ぶこの機能は、ここでは「正気」プログラム
カウンタファイル15と名付けるプログラムカウンタファ
イルの援助を得て達成される。プログラムカウンタファ
イルは、動的レジスタファイル11内の命令のアドレス
(それらのIDによって索引される)を含むNエントリレ
ジスタファイルである。もしプロセッサが、分岐命令を
再取り出しすることによって再始動する必要があれば、
その分岐のIDを使用して正気プログラムカウンタファイ
ル15を索引し、そのプログラムカウンタを入手する(11
9)。このプログラムカウンタは、その点からプロセッ
サを順方向へ再始動するのに使用される。
分岐が不正確であると予測された場合(118)、若干
数の命令が実行ストリーム内に配置されており、動的レ
ジスタファイル11内に存在する結果を生成することはで
きるが、未だにレジスタファイル17を更新していない。
それらは、それらが投機的であるために、正気状態コン
トローラ19によって完了に到達することを許されない。
ある分岐が不正確に予測されたことが決定されると、フ
ラッシングメカニズムが全ての命令、及び不正確予測を
信頼して実行されたそれらの結果を、動的レジスタファ
イル11からフラッシュする(119)。
正気状態コントローラ19は、シェルフに入れられた分
岐命令のID、またはシェルフに入れられた分岐が複数の
場合には、シェルフに入れられた全ての分岐の最古のID
(それらが取り出された順番によって決定される)を分
岐シェルバ13から受ける。正気状態コントローラ19は、
最古のシェルフに入れられた分岐のIDよりも新しいIDを
有する命令がプロセッサの状態を更新することを許さ
ず、従ってその点において命令の完了を停止させる。こ
れは、投機的結果がプロセッサの状態を変更することが
できないようにすることによって、プロセッサがその正
気条件を維持することを可能にする。
プロセッサは、トラップ条件または外部割り込みに遭
遇した後にも再始動することができる。プロセッサは、
トラップ条件との遭遇点におけるプロセッサの状態を発
生するトラップロジック21を含んでいる。トラップを発
生させた命令のIDは、正気プログラムカウンタファイル
15からプログラムカウンタを入手するために使用され
る。
図4に、本発明による障害処理装置の概要ブロック線
図で示す。主要成分は、取り出し段210、命令FIFO 22
0、デコード段230及び後続する「状態レジスタ」、スー
パバイザレジスタ261、イネーブル浮動小数点(EF)レ
ジスタ262、現ウインドウポインタ(CWP)263、ウィン
ドウ無効マスク(WIM)264、トラップベースレジスタ
(TBR)265、及びトラップ型レジスタ266を含む。
前述したように、取り出し段は、命令キャッシュまた
は主メモリ(図示してない)の何れかから命令を取り出
す。取り出し段は、取り出しアドレス260から開始され
る連続アドレスから取り出された4命令/クロックサイ
クルまでをワイヤ211A−D上に出力する。取り出し段
は、メモリ管理ユニット(MMU)機能をも実現してい
る。MMU機能は、主メモリアドレス空間をページに分割
する。それは各ページに若干の属性を割当てる。本発明
に直接関係のあるものは、 1.この命令を取り出そうとした時に遭遇した物理的メモ
リエラーが存在したか? 2.ページのコピーは現在主メモリ内にあるか? 3.そのページから命令を取り出すことが許されるか? 4.スーパバイザモードではない時に(即ち、スーパバイ
ザビット261が0である時に)そのページから取り出さ
れた命令を実行することが許されるか? を含む。
あるクロックサイクルに、取り出し段によって出力さ
れる4つの命令は全て同一ページ上にあることが制約付
けられているから、取り出し段は単一の組の4つのアク
セスビット212を出力し、これらのビットはこれらの命
令を含むページに関する上記各質問への答を指示してい
る。
命令FIFO 220は、5命令までを、各命令毎のアクセス
ビット及びアドレスと共に保持する。FIFO内の命令は
「年齢」によって順序付けられているものと考えられ
る。即ち、最初に取り出されるFIFOのヘッドの命令が
「最古」であり、他の何れの命令の前にも取り出される
ことがないテールの命令が「最も若い」。デコード段23
0は、各クロックサイクルにヘッド(最古の命令)から
0乃至4命令を取り出す。取り出し段が使用できる命令
の数、及びヘッドから取り出された後のFIFOのテールに
おける空位置の数を考えて、取り出し段210はそれが各
クロックサイクルに可能な数の命令を書き込む。
アドレスが取り出しアドレス260である取り出し段に
おける命令211Aは最古であると見做され、もし1つだけ
が追加されるのであればFIFOに追加される命令である。
もし第2の命令がFIFOに追加されるのであれば、それは
次に高いアドレスにおける命令211Bであり、等々であ
る。FIFOは、完全にフラッシュして全てのエントリを除
去することも可能である。あるクロックサイクルに追加
される全ての命令は、ワイヤ212上の4つのアクセスビ
ット入力のコピーを入手する。また命令FIFOは、それに
記憶される各命令のアドレスを追跡する。
デコード段は、命令デコードFIFO 221A−D内の4つ
の最古のエントリを並列に調べる。ある命令を含む各エ
ントリ毎に、デコーダ段は幾つかの考え得るトラッピン
グ条件の何れかの存在を決定する。またそれは、デコー
ド段が従属している状態レジスタ、即ち、スーパバイザ
ビット、EFビット、CWP、WIM、またはTBRの1つを変更
するトラップを発生させない命令を探す。
これらの状態レジスタは、2つのクラスの命令によっ
て変更される。状態レジスタ書き込み命令は、任意汎用
レジスタの内容に対する動作を遂行し、その動作の結果
を状態レジスタの1つに書き込む(好ましい実施例で
は、スーパバイザ、EF、及びCWPレジスタ261−263の3
つの全ては、単一の状態レジスタ書き込み命令によって
書き込まれる)。状態レジスタを変更する第2のクラス
の命令は、増分(または、インクリメンタル)変更子で
ある。これらは、レジスタを定数にセットするか、また
は定数によって現在値を変更する。
詳しく述べれば、好ましい実施例では、スーパバイザ
ビット261は、そのビットを0にセットする「トラップ
からの戻り」(RETT)命令の副作用として変更される。
レジスタセットが使用中であることを表す3ビットの索
引である現ウィンドウポインタ263は、保管命令(典型
的にはサブルーチン呼出しに対して遂行される)の副作
用として1つだけデクレメントされる。サブルーチン戻
りにおいて実行される復元命令は、RETT命令と同じよう
に、CWP 263を1つだけインクリメントさせる副作用を
有している。
デコード段230は、4つの各命令221A−Dを調べて、
それが状態レジスタの1つの変更するのか否かを決定す
る。もし何れかの命令がこれらの状態レジスタの若干に
書き込むのであれば、その1つの命令の後の他の若干の
命令は、状態レジスタ書き込み命令の結果が分かるま
で、それらのトラッピング条件を評価することはできな
い。従ってデコード段は、状態レジスタ書き込み命令の
結果が実行段の出力において使用可能になるまでは、状
態レジスタ書き込み命令の後のどの命令も発行すること
はない。
本発明は、上述したように、デコード段が各命令に命
令IDを割当てるという事実を利用することによって、そ
れが待機している状態レジスタ書き込み命令の結果の可
用性及び値を検出する。このIDは、デコード段はクリア
したが、未だに実行段はクリアしていない各命令毎に独
特であることが保証されている。デコード段は、状態レ
ジスタ書き込み命令を発行すると、書き込まれるレジス
タがロックされること、即ちその正しい内容が未知であ
るのでそのレジスタにアクセスすることはできないこと
を記録する。デコード段は、その状態レジスタのロッカ
ーIDとして知られる状態レジスタ書き込み命令のIDをも
記録する。
更新バス251は、実行段の出力から到来する。更新バ
スは、それが命令の結果、その命令のID、及びその命令
を実行した結果を担持している時に1になる有効ビット
からなる。デコード段は、更新バス251上に有効ビット
の1を見出すと、そのバス上のIDと、何れかの状態レジ
スタのロッカーIDとを比較する。もし一致が検出されれ
ば、デコード段は、更新バスの適切なビットからの新し
い修正値を、ロックされた適切な状態レジスタ内にコピ
ーし、ロックされた状態をリセットする。
もしデコード段によって調べられた4つの命令221A−
Dの何れかが状態レジスタの増分変更子であれば、デコ
ード段自体がその命令を実行する。デコード段は、対応
する物理的状態レジスタ261または263の現在の値を読み
取り、命令によって指示された変更を施すことによって
それを行う。変更された値は、このクロックサイクル中
の4つの命令の中の何れかの若い命令に関して潜在的な
トラッピング条件を評価するためと、その命令が発行さ
れたクロックサイクルの終わりに物理的レジスタ261ま
たは263を更新するためとに使用される。
例えば、もし3番目に古い命令221Cが、スーパバイザ
モード中以外では実行することができない特権的命令で
あり、物理的スーパバイザレジスタ261が1を含んでい
れば、その命令は、より古い命令(221Aまたは221B)が
スーパバイザモードを0にセットする副作用を有するRE
TT命令である場合の他は、トラッピング条件を有しては
いない。もし、例えば221AがRETT命令であれば、命令22
1Aがそれを発行することによってFIFOから取り除かれる
時点まではFIFO内により古いRETTが存在しているので、
221Cのトラッピング条件が指示される。その最古のRETT
命令が取り除かれるクロックにおいて、物理的スーパバ
イザレジスタ261はワイヤ231を介して0にセットされる
ので、その後のクロックにおいて、その特権的命令は、
物理的レジスタ261の内容が0であることによってトラ
ッピング条件を有しているものと見られる。
もしデコーダ段が221A−Dの中に、同一の状態レジス
タ261または263を増分的に変更する1つ以上の命令を検
出すれば、デコーダ段はそれらを一時に1つ処理する。
例えば、もしCWPレジスタ263が数4を含み、221Aが保管
命令であり、そして221Cが復元命令であれば、221C及び
その後の全ての命令は、221A内の命令が除去されるまで
無視される。これは、221D内の命令に対するCWPの修正
値が4であるからであり、レジスタ263内の値は221C内
の「保管命令」によって1だけデクレメントされ、次い
で221C内の「復元」によって1だけインクリメントされ
る。しかし命令221Dによって見られる実際の値は5であ
り、レジスタ263内の値は221C内の「復元」によって1
だけインクリメントされる。
所与の状態レジスタを増分的に変更する多くとも1つ
の命令を、毎クロックサイクルに発行することができ
る。上記の例では、221Aが発行され、ワイヤ232を介し
て物理的CWPレジスタ263を3に更新するまでは、221Cを
発行することはできない。その後のクロックにおいて、
回復命令はCWPレジスタ263の新しい内容3に1を加え、
回復命令の後の命令のために修正値4を発生させる。
デコード段において検出されたトラッピング条件は、
同じ命令によって1つより多い条件を満足させることが
できるように優先付けしなければならない。検出された
条件を、優先権の降順に、それらが決定された手法と共
に以下に列挙する。状態レジスタの値に依存する何等か
の理由から、使用される値は、その状態レジスタがロッ
クされていない限り、4つの命令の中のより古い命令に
よって増分的に変更された対応する物理的レジスタ260
−264内の値である。もし、調べられた命令が従属して
いる状態レジスタがロックされていれば、従属命令及び
それに続く命令は、状態レジスタがアンロックされるま
でFIFO内に保持される。
1.物理的メモリアクセスエラー。これは、取り出し段、
及びその命令が取り出される時のアクセスワイヤ212の
1つの出力によって検出される。
2.ページフォルト。これは、取り出し段、及びその命令
が取り出される時のアクセスワイヤ212の別の1つの出
力によって検出される。
3.特権侵害。これは、取り出しロジックが出力する第3
アクセスビット212によって信号され、スーパバイザモ
ード以外では、即ちスーパバイザビットが0であれば、
命令をそのページ上で実行できないことことを指示す
る。
4.保護侵害。これは、取り出し段、及び命令が取り出さ
れる時のアクセスワイヤの4番目の出力によって検出さ
れる。
5.特権的命令。これは、その命令をデコードし、それが
スーパバイザモード以外では(その命令を取り出したペ
ージには無関係に)、即ちスーパバイザビットが0であ
れば、決して実行することができない命令の1つである
ことを決定することによって検出される。
6.違法命令。これは、その命令をデコードし、それが定
義された命令ではないことを決定することによって検出
される。
7.浮動小数点不能化。これは、その命令を浮動小数点命
令としてデコードし、EFビット262が0であることによ
って検出される。
8.ウィンドウオーバフロー。これは、CWPレジスタ263の
内容に1を加え、その結果をWIMレジスタ264へのビット
索引として使用することによって検出される。トラッピ
ング条件は、WIMの索引されたビット位置が1であるこ
とによって指示される。
9.ウィンドウアンダフロー。これは、CWPレジスタ263の
内容から1を差し引き、その結果をWIMレジスタ264への
ビット索引として使用することによって検出される。ト
ラッピング条件は、WIMの索引されたビット位置が1で
あることによって指示される。
10.ソフトウェアトラップ。
デコード段230が、最古の命令ではない命令221B−D
の何れかに上述したトラッピング条件の1つを検出する
と、デコード段はその、または何れの若い命令も発行し
ない。デコード段は、正常の態様で最古のトラップを発
生させた命令よりも古い全ての命令を発行する。
最古の命令221Aがハードウェアトラッピング条件を有
していることをデコード段が検出すると、デコード段は
直ちに以下の動作の遂行を開始する。
1.もし必要ならば、CWPレジスタがアンロックされるの
を待機し、ワイヤ232を介してその現在値を1だけデク
レメントさせ、ワイヤ231を介してスーパバイザレジス
タ内容261を1に強制する。
2.FIFO内のその最古の命令のアドレスを含む擬似命令を
公式化し、発行する。この擬似命令が実行されると、そ
のトラップを発生させた命令アドレスが汎用レジスタ位
置内に保管される。
3.命令FIFO 220全体をフラッシュし、それによってその
トラップを発生させた命令と、それに続く全ての命令を
削除する。
4.最古の命令の代わりに保持する最高優先順位のトラッ
ピング条件のための修正コードを決定し、そのコードを
ワイヤ233を介してトラップ型レジスタ内へ書き込む。
5.もし必要ならば、トラップベースレジスタがアンロッ
クされるのを待機し、次いでワイヤ234を介して取り出
しアドレス260をワイヤ267上の値(これはトラップベー
スレジスタ265の内容とトラップ型レジスタ266の内容と
を連結したものである)に等しくなるように更新するこ
とを取り出し段に信号する。
最古の命令221Aがソフトウェアトラッピング条件を有
していることをデコード段が検出すると、直ちにデコー
ド段は上述した段階1及び2と同一の段階を遂行し、そ
れに続いて以下の段階を遂行する。
3.最古の命令221Aを発行し、その命令IDを記録し、残余
の命令を命令FIFOからフラッシュする。
4.更新バス251を監視して、命令IDと一致するトラップ
を発生させた命令の記録されたIDに伴う有効信号を待機
する。それが発生した時に、更新バスのデータ部分から
修正コードを入手し、ワイヤ252を介してそれをトラッ
プ型レジスタ266内へ書き込み、上記段階5と同一の段
階を遂行する。
デコード段において命令内のトラップ条件を識別し、
トラップ条件を識別するために状態レジスタを使用する
ことは、トラップの処理を促進し、しかもトラッピング
条件に続く命令(フラッシュされなければならない)に
関して浪費される実行帯域幅を減少させる。以上に、本
発明を特定の時に関連して説明したが、本発明の説明は
例示に過ぎず、本発明を限定する意図はない。当業者な
らば、請求の範囲に記載の本発明の真の思想及び範囲か
ら逸脱することなく種々の変更及びアプリケーションを
考案できよう。

Claims (22)

    (57)【特許請求の範囲】
  1. 【請求項1】パイプライン化されたスーパースカラコン
    ピュータ内においてトラッピング条件に応答する方法で
    あって、上記コンピュータは、各クロックサイクルにお
    いて、命令のシーケンスからの1つまたはそれ以上の命
    令を調べ、また、デコード段に接続されていて上記コン
    ピュータの動作状態を指示する複数の状態レジスタを調
    べるデコード段と、上記デコード段に結合されており、
    上記デコード段によって供給されるデコード命令を受信
    し、上記デコードされた命令の何れかがトラッピング条
    件の第1の集合の何れかを満足するか否かを評価し、そ
    して、上記集合の何れかを満足する何れかの命令に関し
    て指定されたトラップ動作を実施する実行段とを含む幾
    つかの処理段を備え、 上記方法は、 a) 上記デコード段において調べられる何れかの命令
    が、上記トラッピング条件の第1の集合の部分集合であ
    って、上記トラッピング条件の第1の集合から離された
    発行・時間トラッピング条件の第2の集合の何れかを満
    足するか否かを評価するステップと、 b) 上記デコード段においてそのように評価された何
    れかの命令が、上記発行・時間トラッピング条件の第2
    の集合の内の1つを満足することが決定された場合、 (i) 上記シーケンス内の第1のそのような命令、及
    び、上記シーケンス内の上記第1のそのような命令に続
    く1つまたはそれ以上の命令の全てが上記実行段に供給
    されるのを防ぐサブステップと、 (ii) 上記実行段において全ての先に発行された命令
    の完了を待つことなく、指定されたトラップ動作を実施
    するサブステップと をデコード段で実施するステップと をデコード段に備えていることを特徴とする方法。
  2. 【請求項2】上記コンピュータは、各クロックサイクル
    において、取り出しアドレスレジスタ内に含まれている
    アドレスから始まる連続アドレスを用いて命令メモリか
    ら1つまたはそれ以上の命令を読み出すための取り出し
    段を含み、 上記指定されたトラップ動作は、上記取り出しアドレス
    レジスタ内に含まれているアドレスがトラップハンドラ
    アドレスとなるように強制することを含んでいる請求項
    1に記載の方法。
  3. 【請求項3】上記取り出し段は、上記命令メモリと上記
    デコード段とに結合されている命令バッファを含み、 上記取り出し段は、あるクロックサイクルにおいてそれ
    が上記命令メモリから読み出した1つまたはそれ以上の
    命令を、そのサイクルの終わりに上記命令バッファ内に
    書き込み、 各クロックサイクルにおいて上記デコード段によって調
    べられる上記シーケンスからの上記1つまたはそれ以上
    の命令は、上記命令バッファ内に含まれる命令の中にあ
    り、 上記トラップ動作は、上記命令バッファを空にし、上記
    取り出しアドレス強制段階が完了してしまう前にそれ以
    上の命令が上記命令バッファ内へ書き込まれるのを防ぐ
    段階を更に含む、 請求項2に記載の方法。
  4. 【請求項4】上記トラッピング条件の集合の各メンバー
    は相対的な優先順位を有し、 上記トラップハンドラアドレスは、上記シーケンス内の
    上記第1のそのような命令によって満足された全てのト
    ラッピング条件の中の最高優先順位の関数であり、 上記シーケンス内の上記第1のそのような命令が、何れ
    かの発行・時間トラッピング条件を満足した場合、上記
    第1のそのような命令によって満足された全てのトラッ
    ピング条件の中の最高優先順位が発行・時間トラッピン
    グ条件である、 請求項2に記載の方法。
  5. 【請求項5】上記指定されたトラップ動作は、上記シー
    ケンス内の上記第1のそのような命令によって満足され
    た全てのトラッピング条件の中の最高優先順位を独特に
    識別する数をトラップ型レジスタ内に書き込む段階を更
    に含む請求項4に記載の方法。
  6. 【請求項6】上記指定されたトラップ動作は、上記第1
    のそのような命令を読み出した上記命令メモリアドレス
    をトラップアドレスレジスタ内に書き込む段階を更に含
    む請求項2に記載の方法。
  7. 【請求項7】上記デコード段は、上記命令メモリアドレ
    スを含む擬似命令を作成して上記実行段へ供給すること
    によって上記さらなる段階を遂行し、上記擬似命令は上
    記実行段に上記命令メモリアドレスを上記トラップアド
    レスレジスタ内へ書き込ませるようになっている請求項
    6に記載の方法。
  8. 【請求項8】上記コンピュータは、上記デコード段に結
    合されていて上記コンピュータの動作状態を指示する複
    数の状態レジスタを含み、各発行・時間トラッピング条
    件は上記状態レジスタの若干内の値に依存し、 上記評価段階は、上記状態レジスタの内容を調べること
    を含む、 請求項1に記載の方法。
  9. 【請求項9】上記各状態レジスタに関して、上記命令の
    シーケンス内の若干の命令が上記状態レジスタを変更
    し、上記シーケンス内の何れかの命令について上記トラ
    ッピング条件を評価するのに使用された上記状態レジス
    タ内の値は、上記状態レジスタを変更する上記シーケン
    ス内の上記命令の直前の命令の実行の結果のみに依存す
    るようになっている請求項8に記載の方法。
  10. 【請求項10】c) 何れかの発行・時間トラッピング
    条件が依存している上記状態レジスタの何れかを変更す
    る上記デコード段において調べられた上記命令の中の全
    ての命令を認識する段階と、 d) そのように認識された何れかの変更命令に関し
    て、トラッピング条件が上記認識された変更命令によっ
    て変更された何れかの上記状態レジスタに依存する上記
    シーケンス内の上記変更命令に続く何れかの命令を、上
    記変更命令の結果が上記状態レジスタ内へ書き込まれて
    しまう時点まで、上記デコード段から上記実行段へ供給
    するのを拒絶する段階と、 を更に含んでいる請求項9に記載の方法。
  11. 【請求項11】e) 上記認識された変更命令に関し
    て、上記デコード段によって上記命令が上記実行段へ供
    給される時点より遅くなく、上記命令によって指定され
    た状態レジスタ変更を遂行する段階、 を更に含んでいる請求項10に記載の方法。
  12. 【請求項12】f) 上記デコード段において調べられ
    た上記1つまたはそれ以上の命令の中から、何れかの発
    行・時間トラッピング条件が依存している上記状態レジ
    スタを変更する若干の命令を認識する段階、 を更に含み、 上記評価段階は、上記調べられた命令の何れかに関し
    て、上記状態レジスタ値に及ぼす上記シーケンス内の上
    記評価された命令に先行していると認識された何れかの
    変更命令の効果を考慮することを含む 請求項9に記載の方法。
  13. 【請求項13】複数のパイプライン化された命令を操作
    するスーパースカラプロセッサにおいてプログラム命令
    トラップを検出し、実行する装置であって、 命令キャッシュ及び主メモリから連続命令を取り出す取
    り出し手段と、 上記取り出し手段から取り出された上記命令を記憶する
    命令FIFOメモリと、 上記FIFOメモリ内に記憶された命令の相対的な年齢に従
    って、上記FIFOメモリから命令を取り出す命令デコード
    手段と、 を備え、 上記デコード手段は、トラッピング条件に関して上記FI
    FOメモリから取り出された上記命令を調べ、ある命令内
    のあるトラップの識別に応答してより若い全ての命令を
    上記FIFOメモリからフラッシュする ことを特徴とする装置。
  14. 【請求項14】上記プロセッサの動作状態を表す複数の
    状態レジスタを更に含み、上記デコード手段は、上記命
    令を調べて上記状態レジスタを変更して上記状態レジス
    タ変更命令が実行されてしまうまでより若い命令の発行
    を阻止し、上記状態レジスタは、上記命令の実行によっ
    て更新されるまでロックされてアクセス不能になる請求
    項13に記載の装置。
  15. 【請求項15】上記レジスタは、スーパバイザレジスタ
    と、イネーブル浮動小数点(EF)レジスタと、現ウィン
    ドウポインタ(CWP)レジスタと、ウィンドウ無効マス
    ク(WIM)とを含んでいる請求項14に記載の装置。
  16. 【請求項16】上記FIFOメモリから取り出された命令
    が、あるトラップを発生させる命令であると評価された
    場合、上記フェッチ手段のアドレスを形成するために連
    結されるトラップベースレジスタとトラップ型レジスタ
    を更に含んでいる請求項15に記載の装置。
  17. 【請求項17】上記取り出し手段は、主メモリのページ
    ングを支援するメモリ管理手段を含んでいる請求項16に
    記載の装置。
  18. 【請求項18】上記デコード手段は、ハードウェアトラ
    ップとソフトウェアトラップとを区別する請求項16に記
    載の装置。
  19. 【請求項19】ハードウェアトラップ命令に応答して、
    上記デコード手段は、 a) 上記CWPレジスタがアンロックになるのを待機
    し、上記CWPレジスタの現在の値を1だけデクレメント
    し、そして上記スーパバイザレジスタを1になるように
    強制し、 b) 上記FIFOメモリ内の最古の命令のアドレスを含む
    擬似命令を公式化して発行し、 c) 上記FIFOメモリの全ての内容をフラッシュし、そ
    れによって上記トラップを発生させる命令及びより若い
    全ての命令を削除し、 d) 上記ハードウェアトラップ命令に関して、最高優
    先順位トラッピング条件のための修正コードを決定し
    て、上記コードを上記トラップ型レジスタ内へ書き込
    み、そして e) 上記トラップベースレジスタの内容と上記トラッ
    プ型レジスタの内容との連結として上記取り出しアドレ
    スを更新することを上記取り出し手段に信号する、 ようになっている請求項18に記載の装置。
  20. 【請求項20】ソフトウェアトラップ命令に応答して、
    上記デコード手段は、 a) 上記CWPレジスタがアンロックになるのを待機
    し、上記CWPレジスタの現在の値を1だけデクレメント
    し、そして上記スーパバイザレジスタを1に強制し、 b) 上記FIFOメモリ内の最古の命令のアドレスを含む
    擬似命令を公式化して発行し、 c) 上記最古の命令を実行段へ発行し、上記最古の命
    令の識別を記録し、そして残された全ての命令を上記FI
    FO手段からフラッシュし、 d) ある命令識別と上記記録された識別とが一致する
    ことを表す有効信号について上記実行手段からの更新バ
    スを監視し、 e) 上記実行手段からデータ部分のためのコードを入
    手して上記コードを上記トラップ型レジスタ内へ書き込
    み、そして f) 上記トラップベースレジスタの内容と上記トラッ
    プ型レジスタの内容の連結として上記取り出しアドレス
    を更新するように上記取り出し手段に信号する、 請求項18に記載の装置。
  21. 【請求項21】上記FIFOメモリから取り出された命令
    が、あるトラップを発生させる命令であると評価された
    場合、上記フェッチ手段のアドレスを形成するために連
    結されるトラップベースレジスタとトラップ型レジスタ
    を更に含んでいる請求項13に記載の装置。
  22. 【請求項22】上記取り出し手段は、主メモリのページ
    ングを支援するメモリ管理手段を含んでいる請求項13に
    記載の装置。
JP8532529A 1995-04-28 1996-04-02 スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置 Expired - Fee Related JP2937485B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/431,219 1995-04-28
US08/431,219 US5692170A (en) 1995-04-28 1995-04-28 Apparatus for detecting and executing traps in a superscalar processor
US431,219 1995-04-28
PCT/US1996/004504 WO1996034335A1 (en) 1995-04-28 1996-04-02 Apparatus for detecting and executing traps in a superscalar processor

Publications (2)

Publication Number Publication Date
JPH10506739A JPH10506739A (ja) 1998-06-30
JP2937485B2 true JP2937485B2 (ja) 1999-08-23

Family

ID=23710995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8532529A Expired - Fee Related JP2937485B2 (ja) 1995-04-28 1996-04-02 スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置

Country Status (8)

Country Link
US (2) US5692170A (ja)
EP (1) EP0740248A1 (ja)
JP (1) JP2937485B2 (ja)
KR (1) KR100304182B1 (ja)
CN (1) CN1095115C (ja)
MY (2) MY113449A (ja)
TW (1) TW337006B (ja)
WO (1) WO1996034335A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
US6065108A (en) * 1996-01-24 2000-05-16 Sun Microsystems Inc Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
US5740442A (en) * 1996-08-27 1998-04-14 Hitachi Data Systems Corporation Method and apparatus for identifying and correcting date calculation errors caused by truncated year values
US5802386A (en) * 1996-11-19 1998-09-01 International Business Machines Corporation Latency-based scheduling of instructions in a superscalar processor
US5764971A (en) * 1996-12-11 1998-06-09 Industrial Technology Research Institute Method and apparatus for implementing precise interrupts in a pipelined data processing system
US6253317B1 (en) * 1997-01-09 2001-06-26 Sun Microsystems, Inc. Method and apparatus for providing and handling traps
US5809327A (en) * 1997-03-27 1998-09-15 Atmel Corporation Eight-bit microcontroller having a risc architecture
US5898850A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native mode-sensitive instruction within a computer system
US5940587A (en) * 1997-12-12 1999-08-17 Intel Corporation System and method for trap address mapping for fault isolation
US6266764B1 (en) * 1998-03-17 2001-07-24 Matsushita Electric Industrial Co., Ltd. Program controller for switching between first program and second program
US6393556B1 (en) * 1998-10-30 2002-05-21 Intel Corporation Apparatus and method to change processor privilege without pipeline flush
US6161174A (en) * 1998-11-05 2000-12-12 Wilhite; John E. Pipelined central processor incorporating indicator busy sensing and responsive pipeline timing modification
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
KR20020028814A (ko) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
GB2387932B (en) * 2002-04-26 2005-06-22 Motorola Inc Apparatus and method for scheduling tasks in a communications network
JP2005063358A (ja) * 2003-08-20 2005-03-10 Matsushita Electric Ind Co Ltd 命令供給制御装置および半導体装置
US7487335B1 (en) * 2003-10-14 2009-02-03 Sun Microsystems, Inc. Method and apparatus for accessing registers during deferred execution
US8144156B1 (en) 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
US7610433B2 (en) * 2004-02-05 2009-10-27 Research In Motion Limited Memory controller interface
US8423832B2 (en) * 2006-11-07 2013-04-16 Hewlett-Packard Development Company, L.P. System and method for preventing processor errors
US7865769B2 (en) * 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
KR101059899B1 (ko) * 2009-04-23 2011-08-29 광주과학기술원 마이크로 프로세서
US10324728B2 (en) * 2015-12-17 2019-06-18 International Business Machines Corporation Lightweight interrupts for condition checking
US9798549B1 (en) 2016-10-31 2017-10-24 International Business Machines Corporation Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction
CN108255745B (zh) * 2016-12-29 2020-11-06 展讯通信(上海)有限公司 处理器以及无效指令缓存的方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4017839A (en) * 1975-06-30 1977-04-12 Honeywell Information Systems, Inc. Input/output multiplexer security system
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5327567A (en) * 1989-11-16 1994-07-05 Texas Instruments Incorporated Method and system for returning emulated results from a trap handler
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
JP2677719B2 (ja) * 1991-05-08 1997-11-17 富士通株式会社 情報処理装置
EP0547240B1 (en) * 1991-07-08 2000-01-12 Seiko Epson Corporation Risc microprocessor architecture implementing fast trap and exception state
JP3876443B2 (ja) * 1991-07-08 2007-01-31 セイコーエプソン株式会社 マイクロプロセッサ装置
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
EP0535821B1 (en) * 1991-09-27 1997-11-26 Sun Microsystems, Inc. Method and apparatus for dynamically steering undirected interrupts
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor

Also Published As

Publication number Publication date
MY128408A (en) 2007-01-31
WO1996034335A1 (en) 1996-10-31
KR19990008053A (ko) 1999-01-25
TW337006B (en) 1998-07-21
CN1095115C (zh) 2002-11-27
CN1183152A (zh) 1998-05-27
US5692170A (en) 1997-11-25
US6012141A (en) 2000-01-04
MY113449A (en) 2002-02-28
KR100304182B1 (ko) 2001-11-22
JPH10506739A (ja) 1998-06-30
EP0740248A1 (en) 1996-10-30

Similar Documents

Publication Publication Date Title
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
JP3014773B2 (ja) プロセサアーキテクチャ
US6170054B1 (en) Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache
JP2898820B2 (ja) 自己並列化式のコンピュータ・システムおよび方法
US7047399B2 (en) Computer system and method for fetching, decoding and executing instructions
EP0380850B1 (en) Method and digital computer for preproccessing multiple instructions
US7257699B2 (en) Selective execution of deferred instructions in a processor that supports speculative execution
US6694427B1 (en) Method system and apparatus for instruction tracing with out of order processors
US5850533A (en) Method for enforcing true dependencies in an out-of-order processor
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
EP0495165A2 (en) Overlapped serialization
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US20080168260A1 (en) Symbolic Execution of Instructions on In-Order Processors
US5764971A (en) Method and apparatus for implementing precise interrupts in a pipelined data processing system
US7051191B2 (en) Resource management using multiply pendent registers
US8347066B2 (en) Replay instruction morphing
JP3808314B2 (ja) 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法
US6681321B1 (en) Method system and apparatus for instruction execution tracing with out of order processors
US7418581B2 (en) Method and apparatus for sampling instructions on a processor that supports speculative execution
US5699538A (en) Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
US6738897B1 (en) Incorporating local branch history when predicting multiple conditional branch outcomes
JPH05181676A (ja) 並列処理型プロセッサシステム
JP2001356905A (ja) スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees