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

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

Info

Publication number
JPH10506739A
JPH10506739A JP8532529A JP53252996A JPH10506739A JP H10506739 A JPH10506739 A JP H10506739A JP 8532529 A JP8532529 A JP 8532529A JP 53252996 A JP53252996 A JP 53252996A JP H10506739 A JPH10506739 A JP H10506739A
Authority
JP
Japan
Prior art keywords
instruction
instructions
trap
register
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.)
Granted
Application number
JP8532529A
Other languages
English (en)
Other versions
JP2937485B2 (ja
Inventor
ディヴィッド エル イーサマン
Original Assignee
ヒュンダイ エレクトロニクス アメリカ インコーポレイテッド
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 ヒュンダイ エレクトロニクス アメリカ インコーポレイテッド filed Critical ヒュンダイ エレクトロニクス アメリカ インコーポレイテッド
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, 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, 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, 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, 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

(57)【要約】 複数のパイプライン化された命令を操作するスーパースカラプロセッサにおいて、トラップを発生させたプログラム命令を検出し、実行する装置は、命令キャッシュ(210)または主メモリから連続命令を取り出す取り出し段と、取り出し段から取り出された命令を記憶する命令FIFOメモリ(220)と、FIFOメモリ(220)内に記憶された命令の相対的な年齢に従ってFIFOメモリ(220)から命令を取り出す命令デコード段(230)とを含む。デコード段は、トラッピング条件に関してFIFOメモリ(220)から取り出された命令を調べ、ある命令内のあるトラップの識別に応答してより若い全ての命令をFIFOメモリ(220)からフラッシュする。デコード段(230)は、ハードウェアトラップとソフトウェアトラップとを区別する。ソフトウェアトラップを発生させた命令は実行段へ転送されて実行される。デコード段(230)は直ちに取り出しアドレスを適切なトラップハンドラアドレスへ変化せしめる。

Description

【発明の詳細な説明】 スーパースカラプロセッサにおけるトラップを検出して実行する装置 発明の背景 本発明は、デコード段においてトラッピング条件を識別し、パイプライン化さ れたスーパースカラプロセッサにおける動作を促進するような改善されたプロセ ッサのアーキテクチャ及び動作に関する。 従来のプロセッサ設計は、一般に3段階の命令、即ち取り出し(フェッチ)、 デコード、実行の制御を含んでいる。第1段階では、命令は、最後に取り出され た命令を指し示している、そしてそれによって次の命令を取り出すことができる ようになっているプログラムカウンタによって識別されたメモリ位置から取り出 される。取り出しに続いて命令は、考え得るデータ従属性についてチェックされ 、もしその試験を通れば、命令及びそのオペランドが実行のために発行される。 (データ従属性とは、ある命令のためのデータが未だに使用不能であるために、 その命令を実行することができない環境である。)発行された命令は、仮想発行 プログラムカウンタによって識別することができる。一旦命令がデコードされ、 発行されるとそれは実行段へ送られ、実行段においてそれはある結果を発生し、 この結果はレジスタファイルまたはメモリの何れかの中へ書き込まれ、それによ ってプロセッサの状態が変更される。 より最新のプロセッサは、ある命令を実行するのに必要な資源が使用可能であ るか否かを決定するために、その命令のための資源をチェックするレジスタスコ アボードと呼ばれる要素を含んでいる。もし使用可能であれば、実行段において その命令が終了前であってもその命令が発行され、out-of-order実行がもたらさ れる可能性がある。レジスタスコアボードは、発行時に命令によって変更された であろう資源を記録(ロック)する。始めに資源をロックした命令が、その後に それらを更新することによってそれらをアンロックし、それをプロセッサに通知 するまで、これらの資源にアクセスすることを欲するその後の如何なる命令も発 行されることはできない。 これらの既知のプロセッサ設計は、典型的には命令間の資源従属性に起因する 命令の発行の何等かの停止が、命令の取り出しをも停止させてしまうという欠陥 を持ちながら動作する。この停止は、実行のために発行される命令を少なくする ので、性能が損なわれる。 更に、コンピュータシステムは、多くの型の命令についてハードウェアトラッ ピング条件を定義している。ハードウェアトラッピング条件とは、現在の状態の 下でその命令のための実行の有意味の結果を発生することが許されない状態のこ とである。ハードウェアトラッピング条件は、典型的には、違法命令、特権命令 、保護侵害、ページフォルト、無効結果、オプションの浮動小数点プロセッサが ない時の浮動小数点命令、及びレジスタセットオーバフローを含む。 ハードウェアトラッピング条件は、毎命令実行の前後にコンピュータシステム によって自動的に試験される。もしトラッピング条件が見出されれば、トラップ が取り除かれる。トラップを取り除くのは、トラップを発生させた命令及びそれ に続く全ての命令がマシンの状態に影響を与えるのを防ぐ段階と、トラップを発 生させた命令をコンピュータ設計者には公知の指定されたトラップアドレスレジ スタ内に保管する段階と、マシンのモードをスーパバイザ(特権的)モードにセ ットする段階と、トラップハンドラから取り出し命令へスイッチする段階とから なる。トラップハンドラのアドレスは、典型的には、トラッピング条件の型に依 存する定数を、特別な状態レジスタ、即ち「トラップベースレジスタ(TBR) 」の内容に連結することによって決定される。 別の形状のトラップは、ソフトウェアトラップである。多くのコンピュータシ ステムは、特別な命令を有しており、その副作用はトラップを強制することであ る。これらはユーザモードプログラムによって使用され、オペレーティングシス テムのサービスを要求する(「システム・コール」)。ソフトウェアトラップを 検出した時に遂行される段階は、ハードウェアトラップに関して上述したものと 同一であるが、トラップハンドラのアドレスが定数ではなく、トラップ命令自体 によって計算される変数である点が異なっている。 殆ど全てのコンピュータシステムインプリメンテーションは、パイプライン化 されている。パイプライン化されたインプリメンテーションでは、各命令を完全 に実行するには最小5乃至7クロックサイクルを必要とする。典型的なシーケン スは、命令キャッシュから命令を取り出す段階と、命令をデコードしてその資源 要求を決定する段階と、命令のオペランド値をレジスタファイルから読み出す段 階と、命令を実行してある結果を発生する段階からなり、これには1乃至3クロ ックを要し、その結果をレジスタファイルにライトバックする。 ハードウェアの利用率を最大に維持するために、可能な場合には毎クロックサ イクルに新しい命令がパイプラインに入る。このようにして、各個々の命令の実 行を完了させるのに数サイクルを必要としたとしても、命令完了レートを1/ク ロックサイクル程度に高めることができる。 若干のトラッピング条件は実行の結果に依存するので、実行段の後まで試験す ることはできない。これらの命令に関して、試験は、レジスタファイルが無効結 果で更新されるのを防ぐのに間に合うように、ライトバックサイクル中に行われ る。トラッピング条件が検出された時、トラップがライトバック段を通過した、 従ってそれらの結果がレジスタファイルを更新した命令より前の全ての命令は実 行されている。トラッップを発生させた命令の後の全ての命令は、未だパイプラ イン内にある。パイプライン化されたマシンにおいてあるトラップを取り除くこ とは、パイプラインから全ての命令をフラッシュし、取り出し段をトラップハン ドラアドレスへスイッチさせるという簡単な問題である。 ライトバック段階でトラップを取り除くことは、そのトラップを発生させた命 令の後のフラッシュされた命令に対してハードウェアが使用されたことに基づく 非効率の程度を表している。普通のプロセッサでは、トラップを取り除くために フラッシュされた命令の数は、パイプラインの長さにほぼ等しい。このペナルテ ィは簡易化の目的に対しては小さいものであり、全てのトラップは同じように処 理される。例えばそれが認識されないか、または特権を与えられたために実行で きない命令は、パイプラインのある早期段階におけるトラッピングとして単にマ ークされるだけである。このトラッピングマークは、その命令が認識され、ライ トバック段において操作されるまで、パイプラインを通る命令のために便宜を図 る。 しかしながら、スーパースカラ out-of-order プロセッサでは、ライトバック 段階においてトラップを取り除くことが原因の非効率性はかなり大きくなる。簡 単に言えば、このようなプロセッサは、デコード段の後にバッファ(「命令シェ ルフ」)が挿入され、実行段の後に別のバッファ(「結果シェルフ」)が挿入さ れていることが普通のパイプラインとは異なっている。各バッファは幾つかの命 令を保持することができ、各命令は不確定時間の間バッファ内に保持されて、そ れを次の段へ移動させる条件が正しい組合わせとなるのを待機する。 1990年12月5日付米国特許出願第 07/622,893 号“Processor Architecture H aving Decoupled Fetching,Issuing and Updating Operations and Speculativ e Branching "に開示されているようなスーパースカラプロセッサでは、パイプ ラインの最初の段階(取り出し)と最後の段階(ライトバック)との間のこれら のバッファ内に 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はロ ックされたビットを配置することによって条件コードレジスタを無効にする(1 17)。フェッチャは、条件コードをロックした命令のIDを記憶する。条件コ ードは、その命令が実行を終了して条件コードレジスタを更新し(113)、そ れによって条件コードをアンロックする(120)まで、ロックされたままであ る。 レジスタファイル及びメモリのように、順次に更新された時にそれがプロセッ サの状態を反映していない場合の条件コードレジスタの内容を、ここでは「狂気 」 と名付ける。条件コードがロックされた時点(117)に関して、条件コードを 変更する必要があることを指示する命令が存在する。これは、後続分岐がその条 件コードを使用して決定を行うことを防いでいる。従って、フェッチャは、この 後続分岐命令を、条件コードをロックした命令のIDと共に分岐シェルバ(shelv er)13内に配置する(112)。そのロッキング命令の唯一の結果は、その分 岐に関する有効条件コードを発生することである。 分岐シェルバ13内の分岐命令は、条件コードをロックした命令が実行を完了 して条件コードを更新するまで待機する。分岐がシェルフに入れられると、フェ ッチャ9は、予測ビットに基づいて、その位置から命令ストリームを下って進行 する方向、換言すれば、プログラムの連続実行に関して最も可能性のある方向を 決定する(112)。フェッチャ9は、予測した経路に沿って命令を「投機的に 」取り出し続ける。シェルフに入れられた分岐命令が待っている条件コードが有 効になると、分岐決定が再評価され(115)、始めの決定と比較される(11 6)。もしその比較が、分岐が適正に実行されたことを指示すれば、それはシェ ルフから除去される(118)。もし決定が比較と異なれば(118)予測した 決定が悪いのであり、プロセッサは予測した分岐ではない別の分岐に沿って進ま なければならない。従って、プログラムは別の方向の分岐命令から実行を再開し なければならない。 プロセッサにとって、不正確に予測した分岐決定(118)を辿っている方向 を変化させるためにはプロセッサは如何なる点においても再始動可能でなければ ならない。例えば、プロセッサ内にはN命令が許容され、取り出されてはいるが 実行されていない命令が存在しているものとする。プロセッサは、動的レジスタ ファイル内にあるどの命令からも、即ち未だにメモリの状態を更新していないど の命令からも再始動できなくてはならない。再始動と呼ぶこの機能は、ここでは 「正気」プログラムカウンタファイル15と名付けるプログラムカウンタファイ ルの援助を得て達成される。プログラムカウンタファイルは、動的レジスタファ イル11内の命令のアドレス(それらのIDによって索引される)を含むNエン トリレジスタファイルである。もしプロセッサが、分岐命令を再取り出しするこ とによって再始動する必要があれば、その分岐のIDを使用して正気プログラム カウンタファイル15を索引し、そのプログラムカウンタを入手する(119) 。このプログラムカウンタは、その点からプロセッサを順方向へ再始動するのに 使用される。 分岐が不正確であると予測された場合(118)、若干数の命令が実行ストリ ーム内に配置されており、動的レジスタファイル11内に存在する結果を生成す ることはできるが、未だにレジスタファイル17を更新していない。それらは、 それらが投機的であるために、正気状態コントローラ19によって完了に到達す ることを許されない。ある分岐が不正確に予測されたことが決定されると、フラ ッシングメカニズムが全ての命令、及び不正確予測を信頼して実行されたそれら の結果を、動的レジスタファイル11からフラッシュする(119)。 正気状態コントローラ19は、シェルフに入れられた分岐命令のID、または シェルフに入れられた分岐が複数の場合には、シェルフに入れられた全ての分岐 の最古のID(それらが取り出された順番によって決定される)を分岐シェルバ 13から受ける。正気状態コントローラ19は、最古のシェルフに入れられた分 岐のIDよりも新しいIDを有する命令がプロセッサの状態を更新することを許 さず、従ってその点において命令の完了を停止させる。これは、投機的結果がプ ロセッサの状態を変更することができないようにすることによって、プロセッサ がその正気条件を維持することを可能にする。 プロセッサは、トラップ条件または外部割り込みに遭遇した後にも再始動する ことができる。プロセッサは、トラップ条件との遭遇点におけるプロセッサの状 態を発生するトラップロジック21を含んでいる。トラップを発生させた命令の IDは、正気プログラムカウンタファイル15からプログラムカウンタを入手す るために使用される。 図4に、本発明による障害処理装置の概要ブロック線図で示す。主要成分は、 取り出し段210、命令FIFO 220、デコード段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のヘッドの命令が「最古 」であり、他の何れの命令の前にも取り出されることがないテールの命令が「最 も若い」。デコード段230は、各クロックサイクルにヘッド(最古の命令)か ら0乃至4命令を取り出す。取り出し段が使用できる命令の数、及びヘッドから 取り出された後のFIFOのテールにおける空位置の数を考えて、取り出し段2 10はそれが各クロックサイクルに可能な数の命令を書き込む。 アドレスが取り出しアドレス260である取り出し段における命令211Aは 最古であると見做され、もし1つだけが追加されるのであればFIFOに追加さ れる命令である。もし第2の命令がFIFOに追加されるのであれば、それは次 に高いアドレスにおける命令211Bであり、等々である。FIFOは、完全に フラッシュして全てのエントリを除去することも可能である。あるクロックサイ クルに追加される全ての命令は、ワイヤ212上の4つのアクセスビット入力の コピーを入手する。また命令FIFOは、それに記憶される各命令のアドレスを 追跡する。 デコード段は、命令デコードFIFO 221A−D内の4つの最古のエント リを並列に調べる。ある命令を含む各エントリ毎に、デコーダ段は幾つかの考え 得るトラッピング条件の何れかの存在を決定する。またそれは、デコード段が従 属している状態レジスタ、即ち、スーパバイザビット、EFビット、CWP、W IM、または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にセットする副作用を有するRETT命令である場合の他 は、トラッピング条件を有してはいない。もし、例えば221AがRETT命令 であれば、命令221Aがそれを発行することによってFIFOから取り除かれ る時点まではFIFO内により古いRETTが存在しているので、221Cのト ラッピング条件が指示される。その最古のRETT命令が取り除かれるクロック において、物理的スーパバイザレジスタ261はワイヤ231を介して0にセッ トされるので、その後のクロックにおいて、その特権的命令は、物理的レジスタ 261の内容が0であることによってトラッピング条件を有しているものと見ら れる。 もしデコーダ段が221A−Dの中に、同一の状態レジスタ261または26 3を増分的に変更する1つ以上の命令を検出すれば、デコーダ段はそれらを一時 に1つ処理する。例えば、もしCWPレジスタ263が数4を含み、221Aが 保管命令であり、そして221Cが復元命令であれば、221C及びその後の全 ての命令は、221A内の命令が除去されるまで無視される。これは、221D 内の命令に対するCWPの修正値が4であるからであり、レジスタ263内の値 は221C内の「保管命令」によって1だけデクレメントされ、次いで221C 内の「復元」によって1だけインクリメントされる。しかし命令221Dによっ て見られる実際の値は5であり、レジスタ263内の値は221C内の「復元」 によって1だけインクリメントされる。 所与の状態レジスタを増分的に変更する多くとも1つの命令を、毎クロックサ イクルに発行することができる。上記の例では、221Aが発行され、ワイヤ2 32を介して物理的CWPレジスタ263を3に更新するまでは、221Cを発 行することはできない。その後のクロックにおいて、回復命令はCWPレジスタ 263の新しい内容3に1を加え、回復命令の後の命令のために修正値4を発生 させる。 デコード段において検出されたトラッピング条件は、同じ命令によって1つよ り多い条件を満足させることができるように優先付けしなければならない。検出 された条件を、優先権の降順に、それらが決定された手法と共に以下に列挙する 。状態レジスタの値に依存する何等かの理由から、使用される値は、その状態レ ジスタがロックされていない限り、4つの命令の中のより古い命令によって増分 的に変更された対応する物理的レジスタ260−264内の値である。もし、調 べられた命令が従属している状態レジスタがロックされていれば、従属命令及び そ れに続く命令は、状態レジスタがアンロックされるまでFIFO内に保持される 。 1.物理的メモリアクセスエラー。 これは、取り出し段、及びその命令が取 り出される時のアクセスワイヤ212の1つの出力によって検出される。 2.ページフォルト。 これは、取り出し段、及びその命令が取り出される時 のアクセスワイヤ212の別の1つの出力によって検出される。 3.特権侵害。 これは、取り出しロジックが出力する第3アクセスビット2 12によって信号され、スーパバイザモード以外では、即ちスーパバイザビット が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 (1)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009570A (ja) * 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> レジスタ状態エラー回復および再開機構

Families Citing this family (30)

* 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
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
EP1197847A3 (en) * 2000-10-10 2003-05-21 Nazomi Communications Inc. Java hardware accelerator using microcode engine
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
WO2005076137A1 (en) * 2004-02-05 2005-08-18 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
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 富士通株式会社 情報処理装置
KR930702726A (ko) * 1991-07-08 1993-09-09 아이자와 스스무 분리된 구조적 의존도를 가진 알 아이 에스 씨(risc) 마이크로프로세서 구조
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
DE69223303T2 (de) * 1991-09-27 1998-06-18 Sun Microsystems Inc Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009570A (ja) * 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> レジスタ状態エラー回復および再開機構

Also Published As

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

Similar Documents

Publication Publication Date Title
US5692170A (en) Apparatus for detecting and executing traps in a superscalar processor
JP3014773B2 (ja) プロセサアーキテクチャ
US6694427B1 (en) Method system and apparatus for instruction tracing with out of order processors
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US6721874B1 (en) Method and system for dynamically shared completion table supporting multiple threads in a processing system
US6170054B1 (en) Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache
CN108196884B (zh) 利用生成重命名的计算机信息处理器
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US6973563B1 (en) Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US6457119B1 (en) Processor instruction pipeline with error detection scheme
JPH05303492A (ja) データ処理装置
US6681321B1 (en) Method system and apparatus for instruction execution tracing with out of order processors
US6243786B1 (en) Apparatus and method for generating an interrupt prohibited zone in pipelined data processors
US6026477A (en) Branch recovery mechanism to reduce processor front end stall time by providing path information for both correct and incorrect instructions mixed in the instruction pool
US20050033941A1 (en) Early resolving instructions
US6163821A (en) Method and apparatus for balancing load vs. store access to a primary data cache
JPH11345121A (ja) プログラム制御ユニット用の命令取り出し装置および方法
US20060101239A1 (en) Program-controlled unit having a prefetch unit
US6550003B1 (en) Not reported jump buffer
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JP3547562B2 (ja) マイクロプロセッサ
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置

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