JPH06501124A - 拡張可能riscマイクロプロセッサ・アーキテクチャ - Google Patents

拡張可能riscマイクロプロセッサ・アーキテクチャ

Info

Publication number
JPH06501124A
JPH06501124A JP5502153A JP50215393A JPH06501124A JP H06501124 A JPH06501124 A JP H06501124A JP 5502153 A JP5502153 A JP 5502153A JP 50215393 A JP50215393 A JP 50215393A JP H06501124 A JPH06501124 A JP H06501124A
Authority
JP
Japan
Prior art keywords
instruction
unit
register
data
address
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
JP5502153A
Other languages
English (en)
Other versions
JP3441071B2 (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 JPH06501124A publication Critical patent/JPH06501124A/ja
Application granted granted Critical
Publication of JP3441071B2 publication Critical patent/JP3441071B2/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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
    • 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/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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
    • 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
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 拡張可能RISCマイクロプロセッサ・アーキテクチャ t 参昭 以下に列挙した米国特許出願は本件特許出願と同時に米国特許出願され、係属中 のものである力S、これらの米国特許出願に開示されており、かつそれぞれ対応 して出願された日本での特許出願に開示されてし)る事項は、その出願番号を本 明細書で引用することにより本明細書の一部を構成するものとする。
1、発明の名称「高性能RISCマイクロプロセッサ・アーキテクチャJ (H igh−Performance RISCMicroprocessor A rchitecture) SMOS 7984 MCF/GBR。
米国特許出願第07/727.006号、1991年7月8日出願、発明者Le  T、Nguyen他、およびこれに対応する特願平号。
2、「アーキテクチャ上の依存関係を隔離したRISCマイクロプロセッサ・ア ーキテクチャJ (RISCMicroprocessor Architec ture with l5olatedArchitectural Depe ndencies) SMOS 7987 MCF/GBR。
米国特許出願第07/726.744号、1991年7月8日出願、発明者Le  T、 Nguyen他、およびこれに対応する特願平号。
3、発明の名称「複数型レジスタ・セットを採用したRISCマイクロプロセッ サ・アーキテクチャJ (RISCMicroprocessor Archi tecture Ia+plementingMultiple Typed  Register 5ets) SMOS 7988 MCF/GBR/RCC ,米国特許出願第077726.773号、1991年7月8日出願、発明者5 anjiv Garg他、およびこれに対応する特願平−号。
4、発明の名称「高速トラップと例外状態をインプリメントしたRISCマイク ロプロセッサ・アーキテクチャJ (RISCMicroprocessor  ArchitectureImplementing Fast Trap a nd Exception State)SMOS 7989 MCF/GBR /WSW、米国特許出願第07/726.942号、 1991年7月8日出願 、発明者Le T、Nguyen他、およびこれに対応する特願平−号。
5、発明の名称「シングル・チップ・ページ・プリンタ・コントローラJ (S ingle Chip Page Pr1nterController) S MOS 7991 MCF/GBR,米国特許出願第07/726.929号、 1991年7月8日出願、発明者Derek J、Lentz他、およびこれに 対応する特願平−号・ 6、発明の名称「複数の異種プロセッサをサポートすることのできるマイクロプ ロセッサ・アーキテク5MO37992MCF/WMB、米国特許出願第07/ 726.893号、1991年7月8日出願、発明者Derek J、Lant z他、およびこれに対応する特願平−号。
免豆二11 1、発明の分野 本発明は、一般的にRISC型マイクロプロセッサ・アーキテクチャの設計に関 し、特に、特定の計算機能に合わせてチューン(調整)したものを含めて、機能 的な計算エレメントをアーキテクチャに追加することによって計算スルーブツト を向上するために容易に拡張することのできるRISCマイクロプロセッサ・ア ーキテクチャに関する。
なお、本明細書の記述は本件出願の優先権の基礎たる米国特許出願07/727 .058号の明細書の記載に基づくものであって、当該米国特許出願の番号を参 照することによって当該米国特許出願の明細書の記載内容が本明細書の一部分を 構成するものとする。
2・11汰工旦lj 最近は、マイクロプロセッサ・アーキテクチャの設計は、複合命令セット・コン ピュータ (ComplexInstruction Set、 Comput er−CISC)の使用からより単純化された縮小命令セット・コンピュータ  (ReducedInstruction Set Computer −RI SC)アーキテクチャまでに成熟している。Cl5Cアーキテクチヤの特徴は、 命令実行バイブラインの実現とサポートが大部分ハードウェアで行われているこ とである。従来の代表的バイブライン構造は、命令フェッチ・ステージ、命令デ コード・ステージ、データ・ロード・ステージ、命令実行ステージおよびデータ ・ストア・ステージを一定の順序で含んでいる。命令セットの異なる部分をバイ ブラインのそれぞれのステージを通して同時並行に実行させると、パフォーマン スの向上が得られる。バイブラインが長くなると、利用できる実行ステージの数 がそれだけ多くなり、かつ同時並行に実行できる命令数が多くなる。
Cl5Cバイブライン・アーキテクチャの効率を制約する一般的問題として、2 つある。最初の問題は、先行する条件コード設定命令がバイブラインを通して実 質的に実行を完了するま)条件付きブランチ命令を評価できないことである。
従って、条件付き命令の以後の実行が遅延または停止(stall)されるので 、い(つかのバイブライン・ステージは複数のプロセッサ・サイクルの間インア クティブのままになっている0代表例として、条件コードがプロセッサ・ステー タス(状況)レジスタ(processor 5tatus register  −PSR)とも呼ばれる条件コード・レジスタに書かれるのは、実行ステージ を通して命令の処理が完了したときだけである。そのため、ブランチ条件コード が判断されるまで、条件付きブランチ命令を複数のプロセッサ・サイクルの間デ コード・ステージに残したままバイブラインを停止させなければならない。バイ ブラインが停止すると、スルーブツトが大幅に損失することになる。さらに、コ ンピュータの平均的スルーブツトは、条件付きブランチ命令がプログラム命令ス トリームの中で条件コード設定命令のあとに近接して何回現れるかによって左右 される。
もう1つの問題は、プログラム命令ストリームの中で近接して現れる命令がプロ セッサ・レジスタ・ファイルの同じレジスタを参照する傾向にあるという事実か ら起こる。データ・レジスタは順次の命令のストア・ステージとロード・ステー ジでデータの宛先またはソースとしてよく使用される。一般的に、データをレジ スタ・ファイルにストアする命令は、次の命令のロード・ステージ処理がレジス タ・ファイルをアクセスできるようにする前に、少なくとも実行ステージでの処 理を完了していなければならない。多くの命令は、ストア・データを得るために その実行に1つの実行ステージで複数のプロセッサ・サイクルを必要とするので 、実行ステージのオペレーションが持続している間、バイブライン全体が停止さ れるのが代表的である。その結果、コンピュータの実行スルーブツトは、実行さ れる命令ストリームの内部順序に実質的に左右される。
第3の問題は命令自体の実行が原因で起こるのではなく、マイクロプロセッサ自 体のハードウェアがサポートする命令実行環境、つまり、マシンの状態(sta te−of−the machine)の維持から起こる問題である。現在のC l5Cマイクロプロセツサ・ハードウェア・サブシステムは命令の実行中にトラ ップ条件が現れたことを検出することができる。トラップには、ハードウェア割 込み、ソフトウェア・トラップおよび例外がある。各トラップが現れたときは、 対応するトラップ処理ルーチンをプロセッサに実行させる必要がある。
トラップが検出されたときは、トラップ処理ルーチンの即時実行を可能にするた めに実行バイブラインをクリアする必要がある。それと同時に、トラップが生起 した正確な点で、つまり、そのとき実行中の最初の命令が割込みとトラップのた めに終了したときであり、かつ、例外が原因で失敗した命令の直前に生起した正 確な点でその時点のマシンの状態を設定する必要がある。引続き、マシンの状態 と、この場合も、トラップの内容に応じて、実行中の命令自体を処理ルーチンの 完了時に復元する必要がある。その結果、各トラップまたは関連事象が発生する と、処理ルーチンの開始時と終了時、および正確なマシンの状態のストアと返却 時の双方においてバイブラインをクリアすることにより待ち時間が生じ、プロセ ッサのスルーブツトがそれに応じて減少することになる。
これらの問題を解決するために、Cl5Cアーキテクチヤの潜在的スルーブツト を向上するための種々の試みが行われている。条件付きブランチ命令が正しく実 行されたことを想定すれば、ブランチ条件コードが最終的に判断される前にバイ ブライン実行を暫定的に進めることができる。また、レジスタが変更されるかど うかについても想定を行うことにより、そのあとに続(命令を暫定的に実行させ ることもできる。最後に、ハードウェアを実質的に追加すれば、処理ルーチンの 実行を必要とする例外の発生を最小にすることができるので、プログラム命令ス トリームの処理に割込みをかける(中断させる)例外の発生回数を少な(するこ とができる。
これらの解決方法は、ハードウェアをさらに実質的に複雑化することは明らかで あるが、その解決方法自身にもそれぞれの問題がある。ブランチ条件またはレジ スタ・ファイル・ストア・アクセスのいずれかが最終的に解決する前に命令の実 行を継続させるためには、条件付きブランチのロケーションを含むプログラム命 令ストリーム内の複数の点のいずれか、レジスタ・ファイルの各変更、および例 外が何か発生した場合には、最後のいくつかの命令の実行が完全に終了する以前 の点にマシンの状態を復元可能にする必要がある。その結果、これをサポートす るためのハードウェアが別に必要になり、しかも、どのバイブライン・ステージ のサイクル・タイムも、大幅に増加しないように特別に設計しなければならない 。
RISCアーキテクチャでは、上述した問題の多くを回避するために、マイクロ プロセッサ・アーキテクチャのハードウェアによる実現を大幅に簡略化すること を試みている。極端な場合には、各RISC命令は、ロード・サイクル、実行サ イクル、およびストア・サイクルを含む3つのバイブライン化プログラム・サイ クルにおいてのみ実行される。公知のRISCアーキテクチャでは、ロードとス トア・データをバイパスする手法を用いることによって、3ステージ・バイブラ インでサイクルごとに1つの命令を実行することを可能にしている。
可能な限り、RISCアーキテクチャにおけるハードウェア・サポートは、必要 とする機能を実行するためのソフトウェア・ルーチンに有利になるように最小化 されている。その結果、RISCアーキテクチャは、最適に適合されたバイブラ インによって実行される単純なロード/ストア命令セットを使用することにより 大幅な柔軟性と高速化が得られるという希望を与えている。しかも、実際には、 RISCアーキテクチャは、高性能バイブラインを短くすることと、必要とする すべての機能を実現する命令数を実質的に増加して実行する必要性とをバランス よく調和させると、利点が得られることか判明している。
RISCアーキテクチャの設計は、一般的に、ブランチ、レジスタ参照および例 外の面でcrscアーキテクチャに起こっている問題を回避し、あるいは最小化 する。RISCアーキテクチャに関係するバイブラインは短(、スピードの面で 最適化されている。バイブラインを短くすると、バイブライン停止(pipel ine 5tall)またはクリアが起こったときの結果が最小になり、マシン の状態を以前の実行個所に復元する際の問題が最小になる。
しかし、一般的に認識されている現在のレベル以上にスルーブツト・パフォーマ ンスを大幅に向上させることは、公知のRISCアーキテクチャでは容易に達成 することができない。その結果、いわゆるスーパースカラー(super−sc alar)と呼ばれる代替アーキテクチャが種々提案されている。これらのアー キテクチャは、一般的に、複数の命令を同時並行に実行することにより、プロセ ッサのスルーブツトを比例的に増加させることを試みている。残念ながら、この ようなアーキテクチャの場合も、crscアーキテクチャに起こっている問題と 同一ではないが、類似した条件ブランチ、レジスタ参照、および例外処理の問題 が起こっている。
従来のスーパースカラー型アーキテクチャに特に起こっている問題は、一般的に 、アーキテクチャ自体に複雑性が内在しているため、アーキテクチャの基礎面を 大幅に設計し直さない限り、アーキテクチャの変更ができないことである。同時 並行に実行される複数の命令の実行を処理する場合は、命令ストリームの実行の 正確さを確実に保つためには、アーキテクチャに実質的な制御上の制約がある。
事実、ある種の命令は、プログラム命令ストリームの中で先に置かれてし)る命 令の実行前に、その実行が完了することがある場合力Sある。その結果、命令実 行の基礎面を管理する制御ロジックさえも設計し直さなければ、特定の命令の実 行フローに影響を与えるアーキテクチャ上の変更ができない場合がよくある。
1豆立互I 従って、本発明の一般的目的は、RISCベースの高性能スーパースカラー型プ ロセッサ・アーキテクチャを提供することである。このアーキテクチャによれ& f、計算を補強する機能ユニットを追加し、変更することによりアーキテクチャ 機能の強化が容易化されてl/Xる。
上記目的は1本発明によれば、命令セットを命令ストア(store)からフェ ッチするための命令フェッチ・ユニット(instruction fetch  unit>と、機能ユニットの並列アレイを通して複数の命令を同時並行に実 行する機能を備えた実行ユニット(execution unit)を含むマイ クロプロセッサ・アーキテクチャを提供することによって達成される。フェッチ ・ユニットは、一般的に、所定数の命令を命令バッファにおいて維持している。
実行ユニットは、命令バッファに接続されて、実行すべき命令を選択するための 命令選択ユニットと、命令で指定された機能オペレーションを実行するための複 数の機能ユニット(functional unit)を含んでいる。
命令選択ユニットは、命令バッファに結合されて、実行すべき命令が使用可能か どうかを判断するための命令デコーダと関連ロジック、およびそれぞれの実行ス テータス(状況)を判断する機能ユニットの各々に結合されて、機能ユニットを 通した命令の処理の開始をスケジュールするための命令スケジェーラを含んでい ることが好ましい。命令スケジューラは実行のために使用可能であると判断され 、かつ必要とする計算機能をもつ機能ユニットの少なくとも1つが使用可能であ ると命令スケジェーラが判断した命令をスケジュールする。
その結果、本発明の利点は、機能ユニットのいずれか、あるいはすべてによって 実行される機能に所望の変更を行うことについて、実行ユニットを容易に変更で きることである。この中には、前記機能ユニットのうちのあらかじめ定めた1つ によって実行される機能の変更が原因で行われる変更、および追加の機能ユニッ トを設けたことから起こる変更も含まれる。機能ユニットを変更したり、追加し たりする場合、基本的には、変更または追加した各機能ユニットによって実行さ れる命令の違いを考慮に入れて、命令スケジューラをそれに応じて変更すること のみが要求される。
本発明のもう1つの利点は、実行ユニットを通る実行データ経路を複数設けたア ーキテクチャになっており、その場合、各実行データ経路がデータに対して実行 される計算機能のタイプ、つまり、整数型、浮動小数点型、およびプール演算型 に合わせて一般的に最適化されていることである。
本発明のさらにもう1つの利点は、各データ経路に、およびデータ経路間に設け られている機能ユニットの個数、タイプ右よび計算に関する具体的特性が相互に 独立していることである0機能を変更したり、データ経路内の機能ユニットの個 数を増加しても、他のデータ機能ユニットにアーキテクチャ上の影響を与えるこ とはない。
さらに、本発明の別の利点は、命令スケジューラが統合化されたユニットである ので、実行ユニットに実装されているデータ経路の個数および所与の命令の実行 に最も適合したデータ経路に実装されている機能の数または種類に関係な(、機 能ユニットのすべてに対して命令をスケジュールすることである。
の な舌日 本発明の上記および他の利点と特徴は、添付図面を参照して下達する本発明の詳 細な説明から容易に理解されるはずであろう。りお、添付図面において、同種部 分には同一の参照符号を付して示しである。
第1図は、本発明を実施する好適実施例のマイクロプロセッサ・アーキテクチャ を示す簡略ブロック図である。
第2図は、本発明に従って構築された命令フェッチ・ユニットを示す詳細ブロッ ク図である。
第3図は、本発明に従って構築されたプログラム・カウンタ・ロジック・ユニッ トを示すブロック図である。
第4図は、プログラム・カウンタ・データと制置経路ロジックを示す別の詳細ブ ロック図である。
第5図は1本発明の命令実行ユニットを示す簡略ブロック図である。
第6a図は、本発明の好適実施例において使用されているレジスタ・ファイル・ アーキテクチャを示す簡略ブロック図である。
第6b図は、本発明の好適実施例において使用されている一部バッファ・レジス タ・ファイルの記憶レジスタ形式を図形で示す図である。
第6c図は、本発明の命令FIFOユニットの最後の2ステージに存在している ときの1次および2次命令セットを図形で示す図である。
第7a図ないし第7C図は1本発明の好適実施例に従って設けられた1次整数レ ジスタ・セットの再構成可能ステート(状態)を図形で示す図である。
第8図は、本発明の好適実施例に従って設けられた再構成可能浮動小数点および 2次整数レジスタ・セットを図形で示す図である。
第9図は、本発明の好適実施例において設けられた3次プール・レジスタ・セッ トを図形で示す図である。
第10図は、本発明の好適実施例に従って構成された命令実行ユニットの1次整 数処理データ経路部分を示す詳細ブロック図である。
第11図は、本発明の好適実施例に従って構成された命令実行ユニットの1次浮 動小数点データ経路部分を示す詳細ブロック図である。
第12図は、本発明の好適実施例に従って構成された命令実行ユニットのプール 演算データ経路部分を示す詳細ブロックズである。
第13図は、本発明の好適実施例に従って構成されたロード/ストア・ユニット を示す詳細ブロック図である。
第14図は、本発明に従って複数の命令を実行する際の、本発明の好適実施例の 好ましいオペレーション・シーケンスを示すタイミング図である。
第15図は、本発明の好適実施例に従って構成された仮想メモリ制御ユニットを 示す簡略ブロック図であ第16図は、本発明の好適実施例で使用される仮想メモ リ制御アルゴリズムを図形で示す図である。
第17図は、本発明の好適実施例で使用されるキャッシュ制御ユニットを示す簡 略ブロック図である。
1且立1亙皇且j 1、 マイクロプロセッサ・アーキテクチャの概要、、、、、、、、、、、、、 、、、、、、、17H,命令フェッチ・ユニット、、、、、、、、、22A)  IFUデータ経路、、、、、、、、、、、、22B) IFU制御経路、、、、 、、、、、、、、、29c) rFU/IEU制御インク7z−スツク、、、、 420) PCロジック・ユニットの詳細、、、、、、4511 PFおよびE xPC制@/制御/データットの詳細、、、、、、、、、、、、、5i2) P C制御アルゴリズムの詳細、、、、5iE)割込みおよび例外の処理、、、、、 、、、771)概要、、1.、、、、、、、、、、 772) 非同期割込み、 、、、、、、、、、793) 同期例外、、、、、、、、、、、、、814)ハ ンドラ・ディスバッチと 6)トラップ一覧表、、、、、、、、、93II1.命令実行ユニット、、、、 、、、、、、、、95A) IEUデータ経路の詳細、 、 、 、 、 、  、 、 、 1031) レジスタ・ファイルの詳細、 、 、 、 1032 )整数データ経路の詳細、 、 、 、 、 、 1153)浮動小数点データ 経路の詳細、 、 、 1214) プール・レジスタ・データ 経路の詳細、 、 、 、 、 、 、 、 、 、 124B) ロード/ス トア制御ユニット、 、 、 、 、 、 131C) IEU制御経路の詳細 、 、 、 、 、 、 、 、 、 、 1351) Eデコード・ユニット の詳細、 、 、 1362) キャリー・チェッカ・ユニットの詳細、 、  、 、 、 、 、 、 、 、 、 、 、 1403) データ依存関係チ ェッカ・ユニットの詳細、 、 、 、 、 、 、 、 + 、 、 、 1 424) レジスフ改名ユニットの詳細、 、 、 1435)命令発行ユニッ トの詳細、 、 、 、 、 1456) 完了制御ユニットの詳細、 、 、  、 、 1497)退避制御ユニットの詳細、 、 、 、 、 1508) 制御フロー制御ユニットの詳細、 、 1509) バイパス制御ユニットの詳 細、 、 、 152IV、仮想メモリ制御ユニット、 、 、 、 、 、  、 、 、 153■、 キャッシュ制御ユニット、 、 、 、 、 、 、  、 、 156vr、要約と結論、 、 、 、 、 、 、 、 、 、  、 、 、 、 、 159■、マイクロプロセッサ・アーキテクチャの第1図 は、本発明のアーキテクチャ100の概要を示すものである。命令フェッチ・ユ ニット(IF[J) 1(12と命令実行ユニット(IEU) 104は、アー キテクチャ1(10の中心となる機能要素である。仮想メモリ・ユニット(VM U) 10g 、キャッシュ制御ユニット(CUU) 106 、およびメモリ 制御ユニット(MCU) 110は、IFU 102とIEU 104の機能を 直接にサポートするためのものである。また、メモリ・アレイ・ユニット(MA D) 112は基本的要素として、アーキテクチャ100を動作させるためのも のである。もっとも、MAD 112はアーキテクチャ100の1つの一体的な コンポーネントとして直接的に存在しない。つまり、本発明の好適実施例では、 IFU 102、 IEU 1.04、VMU 10g、CCU 106、およ びMCU 110は従来の0.8ミクロン設計ルールの低電力CMOSプロセス を利用してシングル・シリコン・チップ上に実装され、約1,200.000個 のトランジスタから構成されている。アーキテクチャ100の標準プロセッサま たはシステムのクロック速度は40 MHzである。しかし、本発明の好適実施 例によれば、プロセッサの内部クロック速度は160 MHzである。
IFIJ 102の基本的役割は命令をフェッチし、IEU104による実行が 保留されている間命令をバッファに置いておき、一般的には、次の命令をフェッ チするとき使用される次の仮想アドレスを計算することである。
本発明の好適実施例では、各命令は長さが32ビツトに固定されている。命令セ ット、つまり、4個の命令からなる「パケットJ (bucket)は、ccu  ioe内の命令用キャッシュ132から128ビット幅の命令バス114を経 由してIFU 102によって同時にフェッチされる。命令セットの転送は、制 御ライン116経由で送られてきた制御信号によって調整されて、IFU 10 2とCCU 106間で行われる。フェッチされる命令セットの仮想アドレスは 、IFU仲裁、制御およびアドレスを兼ねたバス118経由テIFU 102  カら出力され、さらにIEIJ 104とVMU 108間を結合する仲裁、制 御およびアドレス共用バス120上に送出される。VMU 101へのアクセス の仲裁(arbitration)は、IFtJ 102とIEU 104の両 方がVMU 108を共通の共用資源として利用することから行われる。本発明 の好適実施例では、仮想アドレスの物理ページ内のアドレスを定義する下位ビッ トは、IFU102から制御ライン116を経由して直接にキャッシュ制御ユニ ット106へ転送される。 IFU 102から与えられる仮想アドレスの仮想 上位ビットはバス118.120のアドレス部分によってVMU iogへ送ら れ、そこで対応する物理ページ・アドレスに変換される。IFU 102では、 この物理ページ・アドレスは、変換要求がVM[J108に出されたあと内部プ ロセッサ・クロック・サイクルの172の間に、VMU 108からアドレス制 御ライン122経由で直接にキャッシニ制御ユニット106へ転送される。
IFU 102によってフェッチされた命令ストリームの方は命令ストリーム・ バス124経由でIEU 104に渡される。制御信号は、制御ライン126を 介してIFU 102とIEU LO4間でやりとりされる。さらに、ある種の 命令フェッチ・アドレス、例えば、IEU 104内に存在するレジスタ・ファ イルへのアクセスを必要とするアドレスは、制御ライン126内のターゲット・ アドレス・リターン・バスを経由してIFUへ送り返される。
IEU 104は、CCU 10B内に設けられたデータ用キャッシュ134と の間で80ビット幅双方向データ・バス130を通してデータをストアし、デー タを取り出す。IEUがデータ・アクセスするときの物理アドレス全体は制御バ ス128のアドレス部分によってCCU 106へ渡される。また、制御バス1 28を通して、データ転送を管理するための制御信号をIEU 104とCCU  106と ・の間でやりとりすることもできる。IEU 104は、仮想デー タ・アドレスをCCU 106へ渡すのに適した物理データ・アドレスに変更す るための資源としてVMU108を使用する。データ・アドレスの仮想化部分は 、仲裁、制御およびアドレス・バス120を経由してVML1108へ渡される 。rFU 102に対するオペレーションと異なり、VMU 10gは対応する 物理アドレスをバス120経由でrEU 104へ返却する。アーキテクチャ1 00の好適実施例では、IEU 104は物理アドレスを使用して、ロード/ス トア・オペレーションが正しいプログラム・ストリーム順序で行われていること を確がめでいる。
ccu ioeは、物理アドレスで定義したデータ要求を命令用キャッシュ13 2とデータ用キャッシュ134のどちらか該当する方から満足できるがどうかを 判断する従来のハイレベル機能を備えている。アクセス要求が命令用キャッシュ 132またはデータ用キャッシュ134ヘアクセスすることで正しく満足できる 場合は、CCU106はデータ・バス114.128を経由するデータ転送を調 整して、その転送を行う。
データ・アクセス要求が命令用キャッシェ132またはデータ用キャッシュ13 4から満足できない場合は、CCU 106は対応する物理アドレスをMCU  110へ渡し、MAU 112が要求しているのは読取りアクセスであるか書込 みアクセスであるかを判別し、各要求ごとにccU106のソースまたは宛先キ ャッシュ132.134を識別するのに十分な制御情報および要求オペレーショ ンをIFU 102またはIEU 104がら出された最終的データ要求と関係 づけるための追加識別情報も一緒に渡される。
MCLI 110は、好ましくは、ボート・スイッチ・ユニット142を備えて おり、このユニットは単方向データ・バス136によってCCU 106の命令 用キャッシュ132に接続され、双方向データ・バス138によってデータ用キ ャッシュ134に接続されている。ボート・スイッチ142は基本的には、大き なマルチプレクサであり、制御バス140から得た物理アドレスを複数のボート P。P、 146゜−0のいずれかへ送ることを可能にし、また、ボートからデ ータ・バス136.138へのデータの双方向転送を可能にする。MCU 11 0によって処理される各メモリ・アクセス要求は、MAU 112をアクセスす るとき要求されるメイン・システム・メモリ・バス162へのアクセスを仲裁す る目的でボート146゜−0の1つと関連づけられる。データ転送の接続が確立 されると、MCUは制御情報を制御バス140経由でCCU 106に渡して、 ボート141およびボート146゜−1のうち対応する1つを経由して命令用キ ャッシュ132またはデータ用キャッシュ134とMAU 112との間でデー タを転送することを開始する。アーキテクチャ100の好適実施例では、MCU  110は、実際には、CCLI 106とMAU 112間を転送する途中に あるデータをストアまたはラッチしない。このようにしたのは、転送の待ち時間 を最小にし、MCU 1.10に1つだけ存在するデータを追跡または管理しな いですむようにするためである。
■工、Aフェッチ・ユニット 命令フェッチ・ユニット102の主要エレメントを第2図に示す。これらのエレ メントのオペレーションおよび相互関係を理解しやすくするために、以下では、 これらのエレメントがIFUデータ経路と制御経路に関与する場合を考慮して説 明する。
A)IFU7”ニヱ旦1 1FUデータ経路は、命令セットを受け取ってプリフェッチ・バッファ260に 一時的にストアしておく命令バス114から始まる。プリフェッチ・バッファ2 60からの命令セットは■デコード・ユニット262を通ってIFIFOユニッ ト264へ渡される。命令PIF0264の最後の2ステージにストアされた命 令セットは、データ・バス278.280を通してIEU 104に連続的に取 り出して利用することができる。
プリフェッチ・バッファ・ユニット260は、一度に1つの命令セットを命令バ ス114から受け取る。完全な128ビット幅命令セットは、一般に、プリフェ ッチ・バッファ260のメイン・バッファ(MBUF) 188部分の4つの1 28ビット幅プリフェッチ・バッファ・ロケーションの1つに並列に書き込まれ る。追加の命令セットは最高4つまで同じように、2つの128ビット幅ターゲ ット・バッファ(TBUF) 190のプリフェッチ・バッファ・ロケーション にまたは2つの128ビット幅プロシージャ・バッファ(EBUF) 192の ブリフエツチ・バッファ・ロケーションに書き込むことが可能である。好適アー キテクチャ100では、MBUF 18g、TBUF 190またはEBUF1 92内のブリフェッチ・バッファ・ロケーションのいずれかに置かれている命令 セットは、ブリフェッチ・バッファ出力バス196へ転送することが可能である 。さらに、直接フォールスルー(fall through)命令セット・バス 194は、命令バス114をブリフェッチ・バッファ出力バス196と直接に接 続することによって、MBUF IL8、TBUF 190およびEBUF 1 92をバイパスするためのものである。
好適アーキテクチャ100では、MBUF 11gは名目的またはメイン命令ス トリーム中の命令セットをバッファするために利用される。 TBUF 190 は、試行的なターゲット・ブランチ命令ストリームからプリフェッチした命令セ ットをバッファするために利用される。その結果、ブリフェッチ・バッファ・ユ ニット260を通して、条件付きブランチ命令のあとに置かれている可能性のあ る両方の命令ストリームをブリフェッチすることができる。この機能により、M AD 112の待ち時間は長くなるとしても、少な(ともCCU 112への以 後のアクセス待ち時間がなくなるので、条件付きブランチ命令の解決時にどの命 令ストリームが最終的に選択されるかに関係なく1条件付きブランチ命令のあと に置かれた正しい次の命令セットを得て、実行することができる。本発明の好適 アーキテクチャ100では、MBUF 18gとTBUF 190があるために 、命令フェッチ・ユニット102は、現れる可能性のあ委両方の命令ストリーム をブリフェッチすることができ、命令実行ユニット104に関連して以下に説明 するように、正しいと想定された命令ストリームを引き続き実行することができ る。条件付きブランチ命令が解決されたとき、正しい命令ストリームがブリフェ ッチされて、MBUF 18gに入れられた場合は、TBUF 190に残って いる命令セットは無効にされるだけである。他方、正しい命令ストリームの命令 セットがTBUF 190に存在する場合は、命令プリフェッチ・バッファ・ユ ニット260ヲ通して、これらの命令セットがTBUF 190から直接に、並 行にMBUF 18g内のそれぞれのバッファ・ロケーションヘ転送される。そ れ以前にMBUF 18gにストアされた命令セットは、TBUF190から転 送された命令セットを重ね書きすることによって、事実上無効にされる。
MBUFロケーションへ転送するTBUF命令セットがなければ、そのロケーシ ョンには無効の印が付けられるだけである。
同様に、EBUF 192は、ブリフェッチ・バッファ260を経由する別の代 替プリフェッチ経路となるものである。 EBUF 192は、好ましくは、M BtlF 188命令ストリームに現れた単一の命令、つまり、「プロシージャ 」命令で指定されたオペレーションを実現するために使用される代替命令ストリ ームをブリフェッチする際に利用される。このようにすると、複雑な命令や拡張 された命令はソフトウェア・ルーチンまたはプロシージャを通して実現すること ができ、すでにブリフェッチされてMBUF 18gに入れられた命令ストリー ムを乱すことなくブリフェッチ・バッファ・ユニット260を通して処理するこ とができる。一般的には、本発明によれば、最初にTBUF190に現れたプロ シージャ命令を処理することができるが、プロシージャ命令ストリームのブリフ ェッチは保留され、以前に現れた保留中の条件付きブランチ命令ストリームがす べて解決される。これにより、プロシージャ命令ストリームに現れた条件付きブ ランチ命令は、TBUF 190の使用を通して矛盾なく処理されることになる 。従って、プロシージャ・ストリームでブランチが行われる場合は、ターゲット 命令セットはすでにブリフェッチされてTBUF 19oに入れられているので 、EBUF 192へ並列に転送することかで最後に、MBUF 188.TB UF 190およびEB[JF 192の各々はブリフェッチ・バッファ出力バ ス196に接続され、ブリフェッチ・ユニットによってストアされた命令セット を出力バス196上に送出するようになっている。さらに、バス194を通過す るフローは、命令セットを命令バス114から直接に出力バス19Bへ転送する ためのものである。
好適アーキテクチャ100では、MBUF 18g、TBUF 190、EBU F 192内のブリフェッチ・バッファは直接的にはFIFO構造を構成してい ない。その代わりに、どのバッファ・ロケーションも出力バス196に接続され ているので、命令用キャッシュ132から取りaされた命令セットのプリフェッ チ順序に大幅な自由度をもたせることができる。つまり、命令フェッチ・ユニッ ト102は命令ストリームに一定順序で並んだ命令類に命令セットを判断して、 要求するのが一般的になっている。しかし、命令セットがIFLI 102へ返 されるときの順序は、要求したある命令セットが使用可能で、CCU 106だ けからアクセス可能であり、他の命令セットはMAD 102のアクセスを必要 とするような場合に合わせて、順序外に現れることも可能である。
命令セットは一定順序でブリフェッチ・バッファ・ユニット260へ返されない 場合があっても、aカバス196上に出力される命令セットの列は、一般的に、 IFU 102から出された命令セット要求の順序に従っていなければならない 。順序内(in−order)の命令ストリーム列は、例えば、ターゲット・ブ ランチ・ストリームの試行的実行に影響されるためである。
ニブコード・ユニット262は、rFIFoユニット264のスペースが許すか ぎり、ブリフェッチ・バッファ圧個の命令からなる各セットはIデコード・ユニ ット262によって並列にデコードされる。関係の制御フロー情報がIFtl  102の制御経路部分のためにライン318から抜き出されている間は、命令セ ットの内容はIデコード・ユニット262によって変更されない。
■デコード・ユニット162からの命令セットはIFIFOユニット264の1 28ビット幅入カバス198上に送出される。内部的には、IFIFOユニット 264はマスタ/スレーブ・レジスタ200,204.208.212.216 .220.224の列から構成されている。各レジスタはその後続レジスタに接 続され、マスク・レジスタ200゜208.216の内容がFIFOオペレーシ ョンの内部プロセッサ・サイクルの前半時にスレーブ・レジスタ204゜212 .220へ転送され、そのあとオペレーションの後半サイクル時に次の後続マス ク・レジスタ208.216゜224へ転送されるようになっている。入力バス l’lはマスク・レジスタ200,208.216.224の各々の入力に接続 され、FIFOオペレーションの後半サイクル時に命令セットが1デコード・ユ ニット262からマスク・レジスタに直接にロードされるようになっている。し かし、マスク・レジスタを入力バス198からロードすることは、IFIFOユ ニット264内でデータをFIFOシフトすることと同時に行う必要はない。そ の結果、命令FIFOユニット264内にストアされた命令セットの現在の深さ に関係なく、さらに、rFIFOユニット264内でデータをFIFOシフトす ることから独立して、入力バス198から連続的にIFIFOユニット264に 入れていくことができる。
マスタ/スレーブ・レジスタ200.204.208.212.216.220 .224の各々は、128ビット幅命令セットの全ビットを並列にストアできる ほかに、制御情報のいくつかのビットをそれぞれの制御レジスタ202.206 .210.214.218.222.226にストアすることもできる。好まし くは、制御ビットのセットは1例外不一致(exception m1ss)と 例外修正(exception modify)(VMU) 、メモリなしくM CU)、 ブランチ・バイアス、ストリーム、およびオフセット(IFLI)か らなっている。この制御情報は、IFIFOマスタ・レジスタに入力バス198 から新しい命令セットをロードするのと同時に、IFU tozの制御経路部分 から発生する。そのあと、制御レジスタ情報は命令セットと並行してIFIFO ユニット263内で並列にシフトされる。
最後に、好適アーキテクチャ100では、IFIFOユニット264からの命令 セットの出力は最後の2マスク・レジスタ216,224から同時に得られて、 IJucket−0とI−Bucket−1命令セット出力バス278.280 上に送出される。さらに、対応する制御レジスタ情報がIBASVOトIBAS V1制御フィールド・バス282.284上に送出される。これらの出力バス2 78.282.280.284はすべてIEU 104へ通じる命令ストリーム ・バス124となるものである。
B) ■1J」【1通 IFU 102制御経路は、ブリフェッチ・バッファ・ユニット260、 ニブ コード・ユニット262およびIFIFOユニット264のオペレーションを直 接にサポートする。ブリフェッチ制御ロジック・ユニット266は主にブリフェ ッチ・バッファ・ユニット260のオペレーションを管理する。ブリフェッチ制 御ロジック・ユニット266とIFU 102は一般的には、クロック・ライン 290からシステム・クロック信号を受信して、IFUのオペレーションとrE U 104、CCLI 106およびVMIJ 108のオペレーションとの同 期をとるようにしている。命令セットを選択して、MBUF 1811、TBU F 190およびEBUF 192に書き込むための制御信号は制御ライン30 4上に送出される。
多数の制御信号は、制御ライン316上に送出されて、ブリフェッチ制御ロジッ ク・ユニット266へ送られる。具体的には、フェッチ要求制御信号はブリフェ ッチ・オペレーションを開始するために送出される。制御ライン316上に送出 される他の制御信号は要求したブリフェッチ・オペレーションが目標とする宛先 がMBUF 188であるか、TBUF 190であるか、EBUF 192で あるかを指定している。ブリフェッチ要求を受けて、プリフェッチ制御ロジック ・ユニット266は10値を生成し、プリフェッチ要求をCC:U 106に通 知できるかどうかを判断する。ID値の生成は、循環4ビツト・カウンタを使用 して行われる。
4ビツト・カウンタの使用は、次の3つの点で重要である。第1は、最大9個ま での命令セットをブリフェッチ・バッファ・ユニット260で一度にアクティブ にできることである。すなわち、MBUF 188での4命令セツト、TBUF  190での2命令セツト、EBUF l’12での命令セット、およびフロー ・スルー・バス194経由で直接に1デコード・ユニット262に渡される1命 令セツトである。第2は、命令セットが各々4バイトの4個の命令からなること である。その結果、フェッチする命令を選択するどのアドレスも、その最下位4 ビツトは余分になっている。最後は、ブリフェッチ要求アドレスの最下位4ビツ トとして挿入することで、プリフェッチ要求IDをプリフェッチ要求と容易に関 連づけることができることである。これにより、CCU106とのインタフェー スとなるために必要な総アドレス数が減少することになる。
IFU 102から出されたプリフェッチ要求の順序に対して順序外で命令セッ トがCCU 106から返却されるようにするために、アーキテクチャ100で は、CGIJ 106からの命令セットの返却と一緒にID要求値が返されるよ うになっている。しかし、順序外の命令セット返却機能によると、16個の固有 IDが使いつくされるおそれがある。条件付き命令の組合せが順序外で実行され ると、要求されたが、まだ返却されていない追加のプリフェッチと命令セットが あるので、ID値を再使用することが可能になる。従って、4ビツト・カウンタ は保持しておくのが好ましく、それ以降の命令セットのプリフェッチ要求が出さ れないことになり、その場合には、次のID値は、未処理のまま残っているフェ ッチ要求やそのときブリフェッチ・バッファ260に保留されている別の命令セ ットに関連づけられたものとなる。
プリフェッチ制御ロジック・ユニット266はプリフェッチ状況配列(アレイ) 268を直接に管理し、この配列はMBUF188、TBUF 190およびE BUF 192内の各命令セット・ブリフェッチ・バッファ・ロケーションに論 理的に対応する状況記憶ロケーションからなっている。ブリフェッチ制御ロジッ ク・ユニット266は、選択およびデータ・ライン306を通して、データをス キャンし、読み取って、状況レジスタ配列268に書き込むことができる。配列 268内では、メイン・バッファ・レジスタ308は、4個の4ビツトID値( MB ID) 、4個の1ビツト予約フラグ(MB RES)および4個の1ビ ツト有効フラグ(MB VAL)をストアしておくためのものであり、これらの 各々は論理ビット位置別にMBUF 180内のそれぞれの命令セット記憶ロケ ーションに対応づけられている。同様に、ターゲット・バッファ・レジスタ31 0と拡張バッファ・レジスタ312は、それぞれ2個の4ビツトID値(TB  ID、 EB ID)、2個の1ビツト予約フラグ(TB RES、 EB R ES)および2個の1ビツト有効フラグ(TB VAL、EB VAL)をスト アしておくためのものである。最後に、フロー・スルー状況レジスタ314は1 個の4ビツトID値(FT TD) 、1個の予約フラグ・ビット(FT RE S)および1個の有効フラグ・ビット(FT VAL)をストアしてお(ための ものである。
状況レジスタ配列268が最初にスキャンされ、該当するときは、プリフェッチ 要求がCCU 266に出されるたびにブリフェッチ制御ロジック・ユニット2 66によって更新され、そのあとは、命令セットが返されるたびにスキャンされ 、更新される。具体的に説明すると、制御ライン316からプリフェッチ要求信 号を受け取ると、ブリフェッチ制御ロジック・ユニット216は現在の循環カウ ンタ生成ID値をインクリメントし、状況レジスタ配列268をスキャンして、 使用可能なID値があるかどうか、ブリフェッチ要求信号で指定されたタイプの ブリフェッチ・バッファ・ロケーションが使用可能であるかどうかを判断し、C CIJ IBUSY制御ライン300の状態を調べてCCU 106がプリフェ ッチ要求を受け付けることができるかどうかを判断し、受付は可能ならば、制御 ライン298上のCCU IREAD制御信号を肯定し、インクリメントされた ID値をCCU 106と結ばれたccu ro出力バス294上に送出する。
プリフェッチ記憶ロケーションは、対応する予約状況フラグと有効状況フラグが 共に偽である場合に使用が可能である。
ブリフェッチIDは、要求がCCU 106に出されるのと並行して、MBUF  188、TBUF 190、またはEBUF 192内の目標とする記憶ロケ ーションに対応する、状況レジスタ配列268内のIO記憶ロケーションに書き 込まれる。さらに、対応する予約状況フラグが真にセットされる。
(:CU 1.06が以前に要求された命令セットをrFtJ 102へ返却で きるときは、CCU IREADY信号が制御ライン302上で肯定され、対応 する命令セットIDがCCU ID制御ライン296上に送出される。ブリフェ ッチ制御ロジック・ユニット266は状況レジスタ配列268内のID値と予約 フラグをスキャンして、ブリフェッチ・バッファ・ユニット260内の命令セッ トの目標とする宛先を判別する。一致するものは1つだけが可能である。
判別されると、命令セットはバス114を経由してブリフェッチ・バッファ・ユ ニット260内の該当ロケーションに書き込まれ、フロー・スルー要求と判別さ れたときは、直接にニブコード・ユニット262に渡される。どちらの場合も、 対応する状況レジスタ配列に入っている有効状況フラグは真にセットされる。
PCロジック・ユニット270ば、以下で詳しく説明するように、IFU 10 2全体を調べて、 MBUF 18g、TBUF190およびEBUF 192 命令ストリームの仮想アドレスを探し出す。この機能を実行する際、PCロジッ ク・ブロック270はニブコード・ユニット262を制御すると同時に、そこか ら動作する。具体的には、■デコード・ユニット262によってデコードされ、 プログラムの命令ストリームのフローの変化と係わりがある可能性のある命令部 分はバス318を経由して制御フロー検aユニット274へ送られると共に、直 接にPCロジック・ブロック270へ送られる。制御フロー検出ユニット274 は、条件付きブランチ命令と無条件ブランチ命令、コール型命令、ソフトウェア ・トラップ・プロシージャ命令および種々のリターン命令を含む制御フロー命令 を構成する各命令を、デコードされた命令セットの中から判別する。制御フロー 検出ユニット274は制御信号をライン322を経由してPCロジック・ユニッ ト270へ送る。この制御信号は、ニブコード・ユニット262に存在する命令 セット内の制御フロー命令のロケーションと種類を示している。これを受けて、 PCロジック・ユニット270は、一般的には、命令に入れられて、ライン31 8経由でPCロジック・ユニットへ転送されたデータから制御フロー命令のター ゲット・アドレスを判断する。例えば、条件付きブランチ命令に対して先に実行 するためにブランチ・ロジック・バイアスが選択された場合は、PCロジック・ ユニット270は条件付きブランチ命令ターゲット・アドレスから命令セットを ブリフェッチすることを指示し、別々に追跡することを開始する。従って、制御 ライン316上のブリフェッチ要求を次に肯定すると、PCロジック・ユニット 270はさらにライン316を経由する制御信号を肯定し、先行するプリフェッ チ命令セットがMBUF188またはEBUF 192へ送られたものと想定す ると、ブリフェッチの宛先をTBUF 190として選択する。プリフェッチ要 求をCCU 10Gへ渡すことができるとプリフェッチ制御ロジック・ユニット 266が判断すると、−ブリフェッチ制御ロジック・ユニット266は、この場 合もライン316を経由してイネーブル(許可)信号をPCロジック・ユニット 270へ送って、ターゲット・アドレスのページ・オフセット部分 (CCU  PADDR[13:4])をアドレス・ライン324を経由して直接にCCU  106へ渡すことを可能にする。これと同時に、PCロジック・ユニット270 は、新しい仮想ページから物理ページへの変換が必要な場合には、さらに、VM U要求信号を制御ライン328を経由して、ターゲット・ア)’ lzス(7) 仮想化部分(VMU VADDR[13:141)をアドレス・ライン326を 経由してVMU 10gへ渡して、物理アドレスに変換する。ページ変換が必要 でない場合は、VMU 10gによるオペレーションは必要でない。その代わり に、以前の変換結果がバス122に接続された出力ラッチに保存されているので 、CCU 106によって即時に使用される。
PCロジック・ユニット270が要求した仮想から物理への変換時にVMU 1 08にオペレージ3ン・エラーが起こると、VMU例外およびVMU不一致制御 (miss control)ライン332.334を通して報告される。
VMU不一致制御ライン334は変換索引緩衝機構(translation  1ookaside buffer: TLB)の不一致を報告する。VMU例 外ライン332上のVMU例外制御信号は、他の例外が起こると発生する。いず れの場合も、PCロジック・ユニットは、命令ストリーム中の現在の実行個所を ストアしておき、そのあと無条件ブランチが行われたのと同じように、それを受 けて、エラー条件を診断し処理するための専用例外処理ルーチン命令ストリーム をブリフェッチすることによって、エラー条件を処理する。VMU例外および不 一致制御信号は、発生した例外の種類を示しているので、PCロジック・ユニッ ト270は対応する例外処理ルーチンのブリフェッチ・アドレスを判別すること ができる。
IFIFO制御ロジック・ユニット272はIFIFOユニット264を直接に サポートするためのものである。具体的には、PCロジック・ユニット270は 制御ライン336を経由して制御信号を出力し、命令セットがニブコード・ユニ ット262から入力バス19g経由で使用可能であることをIFIFO制御ロジ ック・ユニット272に通知する。rFIFo制御ユニット272は命令セット を受け取るために、最も奥の使用可能なマスク・レジスタ200゜208.21 6.224を選択する役割をもっている。マスタ・レジスタ202,210.2 18,226の各々の出力は制御バス338を経由してIFIFO制御ユニット 272へ渡される。各マスク制御レジスタによってストアされる制御ビットは2 ビツト・バッファ・アドレス(IFJx−ADH) 、単一ストリーム・インジ ケータ・ビット(IjBx−3TRM)、および単一有効ビット(IP−Bx− VLD)からなっている。2ビツト・バッファ・アドレスは対応する命令セット 内の最初の有効命令を指定している。つまり、CCU 106から返された命令 セットは、例えば、ブランチ・オペレーションのターゲット命令が命令セット内 の最初の命令ロケーラインに置かれるように境界合わせされていないことがある 。従って、バッファ・アドレス値は、実行の対象として考慮される、命令セット 内の最初の命令を一意的に示すために与えられる。
ストリーム・ビットは、条件付き制御フロー命令を含んでいる命令セットのロケ ーシ“ヨンを示し、IFIFOユニット264を通る命令のストリームに潜在的 制御フローの変更を引き起こすマーカとして使用されることを基本としている。
メイン命令ストリームは一般にストリーム・ビット値がOのときMBUF 18 8を通して処理される。例えば、相対条件付きブランチ命令が現れると、対応す る命令セットはマークがつけられ、ストリーム・ビット値が1となる。条件付命 令セットはニブコード・ユニット262によって検出される。条件付制御フロー 命令は最高4つまで命令セットに存在することができる。そのあと、命令セット はIFIFOユニット264の最も奥の使用可能なマスク・レジスタにストアさ れる。
条件付ブランチ命令のターゲット・アドレスを判断するために、現在のIEU  104の実行点アドレス(DPC) 、ストリーム・ビットで指定された条件付 命令が入っている命令セットの相対ロケーライン、制御フロー検出ユニット27 4から得られた命令セット内の条件付命令ロケーション・オフセットは、制御ラ イン318を通して対応するブランチ命令フィールドから得た相対ブランチ・オ フセット値と結合される。その結果はブランチ・ターゲットの仮想アドレスとな り、PCロジック・ユニット270によってストアされる。ターゲット命令スト リームの最初の命令セットは、このアドレスを使用してブリフェッチしてTBU F 190に入れることができる。PCロジック・ユニット270のために事前 に選択されたブランチ・バイアスに応じて、IFIFOユニット264はMBU F 188またはTBUF 190からロードが続けられる。1つまたは2つ以 上の条件付フロー命令を含んでいる2番目の命令セットが現れると、その命令セ ットはストリーム・ビット値に0のマークが付けられる。2番目のターゲット・ ストリームはフェッチできないので、ターゲット・アドレスはPCロジック・ユ ニット270によって計算されてストアされるが、ブリフエッチは行われない、 さらに、それ以降の命令セットはニブコード・ユニット262を通して処理する ことができない。少な(とも1条件付きフロー制御命令を含んでいることが分か った命令セットは1つも処理されない。
本発明の好適実施例では、PCロジック・ユニット270は、最高2個までの命 令セットに現れた条件付きフロー命令を最高8個まで管理することができる。ス トリーム・ビットの変化でマークが付けられた2命令セツトの各々のターゲット ・アドレスは4つのアドレス・レジスタの配列にストアされ、ターゲット・アド レスは命令セット内の対応する条件付きフロー命令のロケーションに対して論理 的位置に置かれる。
最初の順序内条件付きフロー命令のブランチ結果が解決されると、PCロジック ・ユニット270はブランチが行われる場合は、TBUF 190の内容をMB UF 18gに転送し、TBUF 190の内容に無効のマークを付けるように 、ライン316上の制御信号によってブリフェッチ制御ユニット260に指示す る。正しくない命令ストリーム、つまり、ブランチが行われない場合はターゲッ ト・ストリームからの、ブランチが行われる場合はメイン・ストリームからの命 令セットがIPIFOユニット264があると、IPIFOユニット264から クリアされる。2番目またはそれ以降の条件付きフロー制御命令が第1ストリー ム・ビットのマークが付けられた命令セットに存在すると、その命令は統一され た方法で処理される。すなわち、ターゲット・ストリームからの命令セットはブ リフェッチされ、MBUF 188またはTBUF 190からの命令セットは ブランチ・バイアスに応じてIデコード・ユニット262を通して処理され、条 件付きフロー命令が最終的に解決されると、正しくないストリーム命令セットが IPIFOユニット264からクリアされる。
IFIFOユニット264から正しくないストリーム命令がクリアされたとき、 2番目の条件付きフロー命令がIFIFOユニット264に残っていて、最初の 条件付きフロー命令セットにそれ以降の条件付きフロー命令が含まれていないと 、第2ストリーム・ビットのマークが付いた命令セットのターゲット・アドレス はアドレス・レジスタの最初の配列にプロモートされる。いずれの場合も、条件 付きフロー命令を含んでいる次の命令セットは■デコード・ユニット262を通 して評価することが可能になる。従って、ストリーム・ビットなトグルとして使 用すると、ブランチ・ターゲット・アドレスを計算する目的のために、また、ブ ランチ・バイアスが特定の条件付きフロー制御命令では正しくなかったとあとで 判断された場合に、それより上をクリアすべき命令セット・ロケーションにマー クを付ける目的のために、潜在的制御フローの変化にマークを付けておき、IF IFOユニット264を通して追跡することができる。
命令セットをマスク・レジスタから実際にクリアするのではなく、IFIFO制 御ロジック・ユニット272はIFIFOユニット264の対応するマスク・レ ジスタの制御レジスタに入っている有効ビット・フラグをリセ・ソトするだけで ある。このクリア・オペレーションはライン336に送出される制御信号でPC ロジック・ユニツト270によって開始される。マスク制御レジスタ202.2 10.218.226の各々の入力は状況バス230を通してIFrFO制御ロ ジック・ユニット272が直接にアクセスすることができる。好適実施例のアー キテクチャ100では、これらのマスク制御レジスタ202,210゜218. 226内のビットは、IFIFOユニット264によるデータ・シフト・オペレ ーションと並行してまたは独立してIFIFO制御ユニット272によってセッ トすることが可能である。この機能により、IEU 104のオペレーションと 非同期に、命令セットをマスク・レジスタ200.208.216.224のい ずかに書き込み、対応する状況情報をマスク制御レジスタ202.210.21 8.226に書き込むことができる。
最後に、制御および状況バス230上の追加の制御ラインはIFIFOユニット 264のIFIFOオペレーションを可能にし、指示する。IFIFOシフトは 、制御ライン336を通してPCロジック・ユニット270から出力されたシフ ト要求制御信号を受けてrFIFOユニット264によって行われる。IFIF O制御ユニット272は、命令セットを受け入れるマスク・レジスタ200.2 08.216.224が使用可能であると、制御信号をライン316を経由して プリフェッチ制御ユニット266に送って、プリフェッチ・バッファ260から 次の該当命令セットを転送することを要求する。命令セットが転送されると、配 列266内の対応する有効ビットがリセットされる。
C) IFU/IEU ’インタフェースIFU 102とIEU 104とを 結ぶ制御インタフェースは制御バス126によって提供される。この制御バス1 26はPCロジック・ユニット270に接続され、複数の制御、アドレスおよび 特殊データ・ラインから構成されている。割込み要求と受信確認制御信号を制御 ライン340を経由して渡すことにより、IFU 102は割込みオペレーショ ンを通知し、IEIJ 104との同期をとることができる。外部で発生した割 込み信号はライン292経由テロシツク・ユニット270へ送られる。これを受 けて、割込み要求制御信号がライン340上に送出されると、IEU 104は 試行的に実行された命令をキャンセルする。割込みの内容に関する情報は、割込 み情報ライン341を通してやりとりされる。IEU 104がPCロジック・ ユニット270によって判断された割込みサービス・ルーチンのアドレスからブ リフェッチされた命令の受信を開始する準備状態になると、IEU 104はラ イン340上の割込み受信確認制御信号を肯定する。IFU102によってブリ フェッチされた割込みサービス・ルーチンがそのあと開始される。
IFIFO読取り(IFIFORD)制御信号はIE(J 104から出力され 、最も奥のマスク・レジスタ224に存在する命令セットが実行を完了したこと および次の命令セットが必要であることを通知する。この制御信号を受けると、 PCロジック・ユニット270はIFIFOユニット264でIFIFOシフト ・オペレーションを実行するようにIFIFO制御ロジック・ユニット272に 指示する。
PCインクリメント要求とサイズ値(PCING/5IZE)は制御ライン34 4上に送出されて、現在のプログラム・カウンタ値を命令の対応するサイズ数だ け更新するようにPCロジック・ユニット270に指示する。これにより、PC ロジック・ユニット270は、現在のプログラム命令ストリーム中の最初の順序 内実付命令のロケーションを正確に指した個所に実行プログラム・カウンタ(D PC)を維持することができる。
ターゲット・アドレス(TARGET ADDR)はアドレス・ライン346を 経由してPCロジック・ユニット270に返される。このターゲット・アドレス は、IEU 104のレジスタ・ファイルにストアされているデータによって決 まるブランチ命令の仮想ターゲット・アドレスである。従って、ターゲット・ア ドレスを計算するためにIEU 104のオペレーションが必要である。
制御フロー結果(CF RESULT)制御信号は制御ライン348を経由して PCロジック・ユニット270へ送られて、現在保留されている条件付きブラン チ命令が解決されたかどうか、その結果がブランチによるものなのか、ブランチ によらないものなのかを示している。これらの制御信号に基づいて、PCロジッ ク・ユニット270は、条件付きフロー命令の実行の結果として、ブリフェッチ ・バッファ260とIFIFOユニット264に置かれている命令セットのどれ をキャンセルする必要があるかを判断することができる。
い(つかのIEU命令リターン型制御信号(iEUリターン)が制御ライン35 0上を送出されて、IEU 104によっである命令が実行されたことをIEU  102に通知する。これらの命令には、プロシージャ命令からのリターン、ト ラップからのリターンおよびサブルーチン・コールからのリターンがある。トラ ップからのリターン命令はハードウェア割込み処理ルーチンとソフ!・ウェア・ トラップ処理ルーチンで同じように使用される。サブルーチン・コールからのリ ターンもジャンプとリンク型コールと併用される。どの場合も、リターン制御信 号は、以前に割込みがかけられた命令ストリームに対して命令フェッチ・オペレ ーションを再開するようにIFU 102に通知するために送られる。これらの 信号をIEU 104から出すことにより、システム100の正確なオペレーシ ョンを維持することができる。「割込みがかけられた」命令ストリームの再開は リターン命令の実行個所から行われる。
現命令実行PCアドレス(現IF−PC)はアドレス・バス352を経由してI EU 104へ送られる。このアドレス値(DPC)はIEU 104によって 実行される正確な命令を指定している。つまり、IE[] 104が現在のIF −PCアドレスを通過した命令を先に試行的に実行している間は、このアドレス は、割込み、例外、その他に正確なマシンの状態が分かっていることが必要な事 象の発生に対してアーキテクチャ100を正確に制御するために保持されていな ければならない。現在実行中の命令ストリームの中の正確なマシンの状態を進め ることが可能であるとIEU 104が判断すると、PCInc/5ize信号 がIFU 102に送られ、即時に現在のIFJCアドレス値に反映される。
最後に、アドレスおよび双方向データ・バス354は特殊レジスタのデータを転 送するためのものである。
このデータはIEU 104によってIFU 102内の特殊レジスタに入れら れ、あるいはそこから読み取られるようにプログラムすることが可能である。特 殊レジスタのデータは一般にIFU 102が使用できるように、IEU104 によってロードされ、あるいは計算される。
D) PCロジック・ユニットの゛細 PC制御ユニット362、割込み制御ユニット363、ブリフェッチPC制御ユ ニット364および実行PC制御ユニット366を含むPCロジック・ユニット 270の詳細図は第3図に示されている。PC制御ユニット362はインタフェ ース・バス126を通してブリフェッチ制御ユニット2661.IFIFO制御 ロジック・ユニット272、およびIEU 104から制御信号を受けて、ブリ フェッチおよび実行PC制御ユニット364.366に対してタイミング制御を 行う。割込み制御ユニット363は、ブリフェッチ・トラップ・アドレス・オフ セットを判断してそれぞれのトラップ・タイプを処理する該当処理ルーチンを選 択することを含めて、割込みと例外の正確な管理を担当する。ブリフェッチPC 制画ユニット364は、特に、トラップ処理とプロシージャ・ルーチン命令のフ ローのためのリターン・アドレスをストアすることを含めて、ブリフェッチ・バ ッファ188.190.192をサポートするために必要なプログラム・カウン タの管理を担当する。このオペレーションをサポートするために、ブリフェッチ PC制御ユニット364は、物理アドレス・バス・ライン324上のCCU P ADDERアドレスとアドレス・ライン326上のVMU VMADDRアドレ スを含むプリフェッチ仮想アドレスを生成することを担当する。その結果、プリ フェッチPC制御ユニット364は、現在のブリフェッチPC仮想アドレス値を 保持することを担当する。
ブリフェッチ・オペレーションは一般に制御ライン316上を送出された制御信 号を通してIFIFO制御口シック・ユニット272によって開始される。これ を受けて、PC制御ユニット362はいくつかの制御信号を生成して制御ライン 372上にaカし、プリフェッチPC制御ユニットを動作させて、アドレス・ラ イン324.326上にPADDRアドレスと、必要に応じてVMADDRアド レスを生成する。値がOから4までのインクリメント信号も制御ライン374上 に送出される場合もあるが、これは、PC制御ユニット362が現在のブリフェ ッチ・アドレスから命令セットのフェッチを再実行しているか、一連のプリフェ ッチ要求の中の2番目の要求に対して位置合わせを行っているか、プリフェッチ のために次の全順次命令セットを選択しているか、によって決まる。最後に、現 在のブリフェッチ・アドレスPF−PCがバス370上に送出され、実行PC制 御ユニット366へ渡される。
新しいブリフェッチ・アドレスは、いくつかのソースから発生する。アドレスの 主要なソースは、バス352経由で実行PC制御ユニット366から送出された 現在のIF−PCアドレスである。原理的には、IF−PCアドレスからはリタ ーン・アドレスが得られ、これは、初期コール、トラップまたはプロシージャ命 令が現れたとき、ブリフェッチPC制御ユニットによってあとで使用されるもの である。I P、、−PCアドレスは、これらの命令が現れるたびに、プリフェ ッチPC制御ユニット364内のレジスタにストアされる。このようにして、P C制御ユニット362は制御ライン350を通してIEUリターン信号を受けた とき、ブリフェッチPC制御ユニット364内のリターン・アドレス・レジスタ を選択して新しいプリフェッチ仮想アドレスを取り出すだけでよく、これによっ て元のプログラム命令ストリームを再開する。
ブリフェッチ・アドレスのもう1つのソースは、実行PC制御ユニット366か ら相対ターゲット・アドレス・バス382を経由して、あるいはIEU 104 から絶対ターゲット・アドレス・バス346を経由して送出されたターゲット・ アドレス値である。相対ターゲット・アドレスとは、実行PC制御ユニット36 6によって直接に計算できるアドレスである。絶対ターゲット・アドレスは、こ れらのターゲット・アドレスがIEUレジスタ・ファイルに入っているデータに 依存するので、IEU 104に生成させる必要がある。ターゲット・アドレス はターゲット・アドレス・バス384を通ってブリフェッチPC制御ユニット3 64へ送られ、プリフェッチ仮想アドレスとして使用される。相対ターゲット・ アドレスを計算する際、対応するブランチ命令のオペランド部分もIデコード・ ユニット262からバス318のオペランド変位部分を経由して送られる。
プリフェッチ仮想アドレスのもう1つのソースは、実行PC制御ユニット366 である。リターン・アドレス・バス352゛は、現在のIF−PC値(DPC) をブリフェッチPC制御ユニット364へ転送するためのものである。
このアドレスは、割込み、トラップ、その他にコールなどの制御フロー命令が命 令ストリーム内に現れた個所でリターン・アドレスとして使用される。プリフェ ッチPC制御ユニット364は、新しい命令ストリームをブリフェッチするため に解放される。PC制御ユニット362は、対応する割込みまたはトラップ処理 ルーチンまたはサブルーチンが実行されると、IEU104からライン350を 経由してIELIリターン信号を受け取る。他方、PC制御ユニット362はラ イン372上のPFPC信号の1つを通して、およびライン350経由で送られ てきて実行されたリターン命令のIDに基づいて、現在のリターン仮想アドレス を収めているレジスタを選択する。そのあと、このアドレスが使用されて、PC ロジック・ユニット270によるブリフェッチ・オペレーションを続行する。
最後に、ブリフェッチ仮想アドレスが取り出されるもう1つのソースは、特殊レ ジスタ・アドレスおよびデータ・バス354である。IEU 104によって計 算またはロードされたアドレス値、または少なくともベース・アドレス値は、デ ータとしてバス354を経由してプリフェッチPC制御ユニット364へ転送さ れる。ベース・アドレスは、トラップ・アドレス・テーブル、高速トラップ・テ ーブル、およびベース・プロシージャ命令ディスバッチ・テーブルのアドレスを 含んでいる。バス354を通して、ブリフェッチおよびPC制御ユニット364 ,366内のレジスタの多くを読み取ることもできるので、マシンの状態の対応 する側面をIEU 104を通して処理することが可能である。
実行PC制御ユニット366は、PC制御ユニット362の制御を受けて、現在 のIFJCアドレス値を計算することを主な役割としている。この役割において 、実行PC制御ユニット366はpc制御ユニット362からExPCiilJ @ライン378を経由して送られてきた制御信号と、制御ライン380を経由し て送られてきたインクリメント/サイズ制御信号を受けて、IF−PCアドレス を調整する。これらの制御信号は、主に、ライン342経由で送られてきたrF IFO読取り制御信号とIEU 104から制御ライン344経由で送られてき たPCインクリメント/サイズ値を受けると生成される。
1) PFおよびExPC′ データ・ユニットの詳細第4図は、プリフェッチ および実行PC制御ユニット364.366の詳細ブロック図である。これらの ユニットは主に、レジスタ、インクリメンタ(増分器)その他の類似部品、セレ クタおよび加算器ブロックから構成されている。これらのブロック間のデータ転 送を管理する制御は、PFPC!Il@ライン372 、ExPC!11mライ ン378オよびインクリメント制御ライン374.380を通してpHWJユニ ット362によって行われる。説明を分かりやすくするために、第4図のブロッ ク図には、これらの個々の制御ラインは示されていない。しかし、これらの制御 信号が以下に説明するように、これらのブロックへ送られることは勿論である。
ブリフェッチPC制御ユニット364の中心となるものはブリフェッチ・セレク タ(PFJC5EL)であり、これは現ブリフェッチ仮想アドレスの中央セレク タとして動作する。この現ブリフェッチ−アドレスはプリフェッチ・セレクタか ら出力バス392を通ってインクリメンタ・ユニット394へ送られて、次のプ リフェッチ・アドレスを生成する。この次のプリフェッチ・アドレスはインクリ メンタ出力バス396を通ってレジスタMBUF PFnPC39g、TBUF  PFnPC400、およびEBUF PFnPC402の並列配列へ送られる 。これらのレジスタ398.400.402は実効的には次の命令ブリフェッチ ・アドレスをストアしているが、本発明の好適実施例によれば、別々のプリフェ ッチ・アドレスがMBUF 18g、TBUF190、およびEBLIF 19 2に保持されている。MBUF、 TBUFおよびEBIJF PFnPCレジ スタ398.400.402にストアされたプリフェッチ・アドレスは、アドレ ス・バス404.408.410からプリフェッチ・セレクタ390へ渡される 。従って、PC@J御ユニツユニット362フェッチ・レジスタ398.400 .402の別の1つをプリフェッチ・セレクタが選択することを指示することだ けでブリフェッチ命令ストリームの即時切替えを指示することができる。ストリ ームの中の次の命令セットをプリフェッチするために、そのアドレス値がインク リメンタ394によってインクリメントされると、その値がプリフェッチ・アド レス398,400.402のうち該当するレジスタへ返却される。もう1つの 並列レジスタ配列は簡略化のため単一の特殊レジスタ・ブロック412として示 されているが、この配列はい(つかの特殊アドレスをストアするためのものであ る。レジスタ・ブロック412はトラップ・リターン・アドレス・レジスタ、プ ロシージャ命令リターン・アドレス・レジスタ、プロシージャ命令ディスバッチ ・テーブル・ベース・アドレス・レジスタ、トラップ・ルーチン・ディスパッチ ・テーブル・ベース・アドレス・レジスタ、および高速トラップ・ルーチン・ベ ース・アドレス・レジスタから構成されている。PC制御ユニット362の制御 を受けて、これらのリターン・アドレス・レジスタはバス352゛を通して現I P−PC実行アドレスを受け入れろことができる。レジスタ・ブロック412内 のリターンおよびベース・アドレス・レジスタにストアされたアドレス値はIE U 104から独立して読み書きすることができる。レジスタが選択され、値が 特殊レジスタ・アドレスおよびデータ・バス354を経由して転送される。
特殊レジスタ・ブロック412内のセレクタはPC制御ユニット362によって 制御され、レジスタ・ブロック412のレジスタにストアされたアドレスを特殊 レジスタ出力バス416上に送出して、プリフェッチ・セレクタ390へ渡すこ とができる。リターン・アドレスは直接にプリフェッチ・セレクタ390へ渡さ れる。ベース・アドレス値は割込み制御ユニット363から割込みオフセット・ バス373経由で送られてきたオフセット値と結合される。ソースからバス37 3°経白でプリフェッチ・セレクタ390へ渡された特殊アドレスは、新しいブ リフェッチ命令ストリームの初期アドレスとして使用され、そのあとインクリメ ンタ394とプリフェッチ・レジスタ398.400.402の1つを通るアド レスのインクリメント・ループを続行することができる。
プリフェッチ・セレクタ390へ送られるアドレスのもう1つのソースは、ター ゲット・アドレス・レジスタ・ブロック414内のレジスタ配列である。プロ・ ツク414内のターゲット・レジスタには、好適実施例によれば、8つの潜在的 ブランチ・ターゲット・アドレスがストアされる。これらの8つの記憶ロケーシ ョンはIFrFOユニット264の最下位の2マスク・レジスタ2]6.224 に保持されている8つの潜在的に実行可能な命令に論理的に対応している。これ らの命令のどれでもが、および潜在的にはすべてが条件付きブランチ命令となり 得るので、ターゲット・レジスタ・ブロック414は、あらかじめ計算されたタ ーゲット・アドレスをストアしておくので、TBUF 190を通してターゲッ ト命令ストリームをプリフェッチするために使用するのを待たせることができる 。特に、PC制御ユニット362がターゲット命令ストリームのプリフェッチを 即時に開始するように条件付きブランチ・バイアスがセットされると、ターゲッ ト・アドレスはターゲット・レジスタ・ブロック414からアドレス・バス41 8を経由してプリフェッチ・セレクタ390へ送られる。インクリメンタ394 によってインクリメントされたあと、アドレスはTBUF PFnPC400へ 戻されてストアされ、ターゲット命令ストリームをあとでプリフェッチするオペ レージ目ンで使用される。別のブランチ命令がターゲット命令ストリームに現れ ると、その2番目のブランチのターゲット・アドレスが計算され、最初の条件付 きブランチ命令が解決されて使用されるまでの間、ターゲット・レジスタ配列4 14にストアされていターゲット・レジスタ・ブロック414にストアされた、 計算でめたターゲット・アドレスは、実行PC制御ユニット366内のターゲッ ト・アドレス計算ユニットからアドレス・ライン382を経由して、あるいはI EU 104から絶対ターゲット・アドレス・バス346を経由して転送される 。
ブリフェッチPF−PCセレクタ390を通って転送されるアドレス値は、完全 な32ビツト仮想アドレス値である。ページ・サイズは本発明の好適実施例では 、16にバイトに固定されており、最大ページ・オフセット・アドレス値[13 :0]に対応している。従って、現ブリフェッチ仮想ページ・アドレス[27: 14]に変化がなければ、VMUベージの変換は不要である。ブリフェッチ・セ レクタ390内のコンパレータはそのことを検出する。 VMυ変換要求信号( VMXLAT)は、インクリメントがページ境界をこえて行われたか、制御のフ ローが別のページ・アドレスへブランチしたために、仮想ページ・アドレスが変 化したとき、ライン372”を経由してPC制御ユニット362へ送られろ、他 方、PC制御ユニット362はライン324上のCCU PADDRのほかに、 VM VADDRアドレスをバッファ・ユニット420からライン326上に送 出し、該当の制御信号をVMLI制御ライン326、328.330上に送出し て、VMU仮想ページカラ物理ページへの変換を得るように指示する。ページ変 換が必要でない場合は、現物理ページ・アドレス[31:143はバス122上 (F) VMU :L ニット10g +7)出力側のラッチによって保持され る。
バス370上に送出された仮想アドレスはインクリメント制御ライン374から 送られてきた信号を受けて、インクリメンタ394によってインクリメントされ る。
インクリメンタ394は、次の命令セットを選択するために、命令セットを表す 値(4命令または16バイト)だけインクリメントする。 CCLIユニット1 0Bへ渡されるプリフェッチ・アドレスの下位4ビツトはゼロになっている。従 って、最初のブランチ・ターゲット命令セット内の実際のターゲット・アドレス 命令は最初の命令ロケーションに置かれていない場合がある。しかし、アドレス の下位4ビツトはPC制御ユニット362へ送られるので、最初のブランチ命令 のロケーションをIFU 102が判別することができる。ターゲット・アドレ スの下位ビット[3:2]を2ビツト・バッファ・アドレスとして返して、位置 合わせされていないターゲット命令セットから実行すべき正しい最初の命令を選 択するための検出と処理は、新しい命令ストリーム、つまり、命令ストリームの 中の最初の非順次命令セット・アドレスの最初のプリフェッチのときだけ行われ ろ。命令セットの最初の命令のアドレスと命令セットをプリフェッチする際に使 用されるプリフェッチ・アドレスとの間の非位置合わせの関係は、現順次命令ス トリームが存続している間無視することができ、そのあとも無視される。
第4図に示した機能ブロックの残り部分は実行PC制御ユニット366を構成し ている6本発明の好適実施例によれば、実行PC制御ユニット366は独立に機 能するプログラム・カウンタ・インクリメンタを独自に備えている。この機能の 中心となるのは実行セレクタ(DPC5EL) 430である。実行セレクタ4 30からアドレス・バス352°上に出力されるアドレスはアーキテクチャ10 0の現在の実行アドレス(DPC)である。この実行アドレスは加算ユニット4 34へ送られる。ライン380上に送出されたインクリメント/サイズ制御信号 は1から4までの命令インクリメント値を指定しており、この値は加算ユニット 434によってセレクタ430から得たアドレスに加えられる。加算器432が 出力ラッチ機能を実行するたびに、インクリメントされた次の実行アドレスがア ドレス・ライン436を経て直接に実行セレクタ430に返され、次の命令イン クリメント・サイクルで使用される。
初期実行アドレスとその後のすべての新しいストリーム・アドレスは、アドレス ・ライン440を経由して新ストリーム・レジスタ・ユニット438から得られ る。新ストリーム・レジスタ・ユニット438は、プリフェッチ・セレクタ39 0からPFPCアドレス・バス370を経由して送られきた新しい現ブリフェッ チ・アドレスを直接にアドレス・バス440に渡すことも、あとで使用するため にストアしておくこともできる。つまり、ブリフェッチPC制御ユニット364 が新しい仮想アドレスからプリフェッチを開始することを判断した場合は、新し いストリーム・アドレスは新ストリーム・レジスタ・ユニット438によって一 時的にストアされる。PC制御ユニット363は、プリフェッチと実行インクリ メントの両サイクルに関与することによって、実行アドレスが新命令ストリーム を開始した制御フロー命令に対応するプログラム実行個所までに達するまで新ス トリーム・アドレスを新ストリーム・レジスタ438に置いておく、新ストリー ム・アドレスはそのあと新ストリームーレジスタ・ユニット438から出力され て実行セレクタ430へ送られ、新命令ストリーム内の実行アドレスを独立して 生成することを開始する。
本発明の好適実施例によれば、新ストリーム・レジスタ・ユニット438は2つ の制御フロー命令ターゲット・アドレスをバッファリングする機能を備えている 。新ストリーム・アドレスを即時に取り出すことにより、殆ど待ち時間がなく実 行PC制御ユニット366を現実行アドレス列の生成から新実行アドレス・スト リーム列の生成に切り替えることができる。
最後に、IJPCセレクタ(IF−PC5ELIは最終的に現IF、−PCアド レスをアドレス・バス352上に送出してIEU 104へ送るためのものであ る。IFJCセレクク442への入力は実行セレクタ430または新ストリーム ・レジスタ・ユニット438から得た出力アドレスである。殆どの場合、IFJ Cセレクタ442はPC制御ユニット262の指示を受けて、実行セレクタ43 0から出力された実行アドレスを選択する。しかし、新命令ストリームの実行開 始のために使用される新仮想アドレスへ切り替える際の待ち時間をさらに短縮す るために、新ストリーム・レジスタ・ユニット438がらの選択したアドレスを バイパスして、バス440経由で直接にIFJCセレクタ442へ送り、現IF −PC実行アドレスとして得ることができる。
実行PC制御ユニット366は、すべての相対ブランチ・ターゲット・アドレス を計算する機能を備えている。現実行点アドレスと新ストリーム・レジスタ・ユ ニット438から得たアドレスは、アドレス・バス352′、340を経由して 制御フロー・セレクタ(CFJC)446に渡される。その結果、PC制御ユニ ット362は大幅な柔軟性をもって、ターゲット・アドレス計算の基となる正確 な初期アドレスを選択することができる。
この初期アドレス、つまり、ベース・アドレスはアドレス・バス454を経由し てターゲット・アドレスAL[]450へ送られる。ターゲットALU 450 への入力となるもう1つの値は、制御フロー変位計算ユニット452からバス4 58経由で送られてくる。相対ブランチ命令は、アーキテクチャ100の好適実 施例によれば、新相対ターゲット・アドレスを指定した即値モード定数の形態を した変位値を含んでいる。制御フロー変位計算ユニット452はニブコード・ユ ニットのオペランド出力バス31gから初めて得たオペランド変位値を受番づ取 る。最後に、オフセット・レジスタ値はライン456を経由してターゲット・ア ドレスALU 450へ送られる。
オフセット・レジスタ448はPC制御ユニット362から制御ライン378° を経由してオフセット値を受け取る。
オフセット値の大きさはアドレス・ライン454上を送られるベース・アドレス から相対ターゲット・アドレスを計算するときの現ブランチ命令のアドレスまで のアドレス・オフセットに基づいてPC制御ユニッ(・362によって判断され る。つまり、PC制御ユニット362は、IFUFO制御ロジック・ユニット2 72を制御することによって、現実行点アドレスの命令ccp−pC4こよって 要求された)と1デコード・ユニット262によって現在処理中の、従ってPC ロジック・ユニット270によって処理中の命令を分離している命令の個数を追 跡して、その命令のターゲット・アドレスを判断するつ 相対ターゲット・アドレスがターゲット・アドレスALU 450によって計算 されると、そのターゲット・・アドレスはアドレス・バス382を通して対応す るターゲット・レジスタ414に書き込まれる。
2)PC′ アルゴリズムの; 1、メイン命令ストリームの処理: MBUF PFnPCl、1 次のメイン ・フロー・ブリフェッチ命令のアドレスはMBUF PFnPCにストアされる や1.2 制御フロー命令がないときは、32ビツト・インクリメンタはMBU F PFnPCに入っているアドレス値を、各プリフェッチ・サイクルごとに1 6バイト(x16)だけ調整する。
1.3 無条件制御フロー命令がニブコードされると、命令セットに続いてフェ ッチされたすべてのブリフェッチ・データはフラッシュされ、MBUF PFn PCには、ターゲット・レジスタ・ユニット、PF−PCセレクタおよびインク リメンタを通して、新しいメイン命令ストリーム・アドレスがロードされる。新 しいアドレスは新ストリーム・レジスタにもストアされる。
1、3.1 相対無条件制御フローのターゲット・アドレスはIFUが保持して いる レジスタ・データからと制御フロー 命令の後に置かれたオペランド・ データからIFUによって計算され る。
L3゜2 絶対無条件制御フローのターゲット・アドレスはレジスタ基準値。
ベース・レジスタ値、およびイン デックス・レジスタ値からIEIJに よって最終的に計算される。
1.3゜2.1 命令ブリフェッチ・サイクルは絶対アドレス制御フロー命令に 対してターゲット・アドレスが IEUから返されるまで停止す る。命令実行サイクルは続行さ れる。
1.4 無条件制御フロー命令から得た次のメイン・フロー・ブリフェッチ命令 のアドレスはバイパスされて、ターゲット・アドレス・レジスタ・ユニット、P FJCセレクタおよびインクリメンタを経由して送られ、最終的にMBUF P FnPCにストアされ、プリフェッチは1.2から続けられる。
2、プロシージャ命令ストリームの処理; EBUF PFnPC2,1プロシ ージャ命令はメインまたはブランチ・ターゲット命令ストリームの中でプリフェ ッチされる。ターゲット・ストリームの中でフェッチされた場合は、条件付き制 御フロー命令が解決され、プロシージャ命令がMBUFへ転送されるまでプロシ ージャ・ストリームのプリフェッチを停止する。これにより、プロシージャ命令 ストリームに現れた条件付き制御フローを処理する際にTBUFを使用できる。
2.1.1 プロシージャ命令はプロシージャ命令ストリームの中に置いてはな らな い、つまり、プロシージャ命令はネ ストしてはならない。プロシージャ 命令からリターンすると、実行は主 命令ストリームに戻る。ネストを可 能にするためには、ネストしたプロ シージャ命令から別の専用リターン が必要である。アーキテクチャはこ の種の命令を容易にサポートできる が、プロシージャ命令をネストする 機能があっても、アーキテクチャの 性能が向上する見込みはない。
2.1.2 メイン命令ストリームにおいては、第1および第2条件付き制御フ ロー 命令を含む命令セットを含んでいる プロシージャ命令ストリームは、第 1命令セツトの中の条件付き制御フ ロー命令が解決し、第2条件付き制 御フロー命令セットがMBUFへ転送されるまで第2条件付き制御フロー命 令セットに対してプリフェッチを停 止する。
2.2 プロシージャ命令は、命令の即値モード・オペランド・フィールドとし て含まれている相対オフセットによって、プロシージャ・ルーチンの開始アドレ スを示している。
2.2.1 プロシージャ命令から得られたオフセット値はIFUに維持されて いるプ ロシージャ・ベース・アドレス (PBR)レジスタに入っている値と結合される。このPBRレジスタは、特 殊レジスタの移動命令が実行される と、特殊アドレスおよびデータ・バ スを通して読み書き可能である。
2.3 プロシージャ命令が現れると、次のメイン命令ストリームIF−PCア ドレスはDPCリターン・アドレス・レジスタにストアされ、プロセッサ・ステ ータス・レジスタ(PSR)内のプロシージャ進行中ビット(procedur e−in−pragress bit)がセットされる。
2.4 プロシージャ・ストリームの開始アドレスはPBRレジスタ(プロシー ジャ命令オペランド・オフセット値を加えて)からPjPCセレクタへ送られる 。
2.5 プロシージャ・ストリームの開始アドレスは新ストリーム・レジスタ・ ユニットとインクリメンタへ同時に送られ、(x16)だけインクリメントする 。インクリメントされたアドレスはそのあとEBUF PFnPCにストアされ る。
2.6 制御フロー命令がないと、32ビツト・インクリメンタは各プロシージ ャ命令ブリフェッチ・サイクルごとにEBUF PFnPCに入っているアドレ ス値を(x16)だけ調整する。
2.7 無条件制御フロー命令がニブコードされると、ブランチ命令のあとにフ ェッチされたすべてのブリフェッチ・データはフラッシュされ、EBUF PF nPCには新しいプロシージャ命令ストリーム・アドレスがロードされる。
2.7.1 相対無条件制御フロー命令のターゲット・アドレスはIFUに保持 され ているレジスタ・データからと制御 フロー命令の即値モード・オペラン ド・フィールド内に入っているオペ ランド・データからIFUによって計 算される。
2.7.2 絶対無条件ブランチのターゲット・アドレスはレジスタ基準値、ベ ー ス・レジスタ値およびインデック ス・レジスタ値からIELIによって計算される。
2、7.2.1 命令ブリフェッチ・サイクルは絶対アドレス・ブランチに対し てターゲット・アドレスがrEU から返されるまで停止する。実 行サイクルは続行される。
2.8 次のプロシージャ・プリフェッチ命令セ・ソトのアドレスはEBUF  PFnPCにストアされ、プリフェッチは1.2から続けられる。
2.9 プロシージャ命令からのリターンがニブコードされると、プリフェッチ がuPCレジスタにストアされているアドレスから続けられ、そのあと(x16 )だけインクリメントされ、あとでプリフェッチするためにMBUF PFnP Cレジスタに返される。
3ブランチ命令ストリームの処理: TBUF PFnPC3、I MBUF命 令ストリームの中の最初の命令セットに現れた条件付き制御フロー命令がニブコ ードされると、ターゲット・アドレスはそのターゲット・アドレスが現アドレス に対する相対アドレスならばIFUによって、絶対アドレスならばIFUによっ て判断される。
3.2「ブランチを行うバイアス」の場合:3.2.1 ブランチが絶対アドレ スに行われる場合は、ターゲット・アドレスが IEUから返されるまで命令ブリ フェッチ・サイクルを停止する。実 行サイクルは続行される。
3.2.2 PF−PCセレクタとインクリメンタを経由して転送することによ ってバラ ランチ・ターゲット・アドレスを TBUF PFnP(:にロードする。
3、2.3 ターゲット命令ストリームがブリフェッチされてTBUFに入れら れたあとあとで実行するためにIFIFOに送られる。 IFIFOとTBUF が一杯になると、ブリフェッチを停止する。
3.2.4 32ビツト・インクリメンタは各ブリフェッチ・サイクルごとにT BUF PFnPCに入っているアドレス値を (x16)だけ調整する。
3、2.5 ターゲット命令ストリーム内の2番目の命令セットに現れた条件付 き制 御フロー命令がニブコードされると ブリフェッチ・オペレーションを、 第1の(主)セット内のすべての条 件付きブランチ命令が解決されるま で停止する(しかし、先に進んで、 相対ターゲット・アドレスを計算し ターゲット・レジスタにストアす る)。
3.2.6 最初の命令セット内の条件付きブランチを「行う」と解釈された場 合: 3.2.6.1 ブランチのソースがプロシージャ進行中ビットから判断され たEBUF命令セットであったとき はMBUFまたはEBUFに入っている最初の条件付きフロー命令セッ トのあとに置かれた命令セット をフラッシュする。
3.2.6.2 プロシージャ進行中ビットの状態に基づいて、TBUF PF nPC値をMBUF PFnPCまたはEBUFへ転送する。
3、2.6.3 プロシージャ進行中ビットの状態に基づいて、ブリフェッチし たTBUF命令をMBUFまたはEBUFへ転送する。
3、2.6.4 2番目の条件付きブランチ命令セットが1デコードされていな ければ、プロシージャ進行中 ビットの状態に基づいて、MBUF またはEBUFプリフェッチ・オペ レーションを続行する。
3.2.6.5 2番目の条件付きブランチ命令がニブコードされていれば、そ の命令の処理を開始する(ス テップ3.3.1へ進む)。
れたメイン・ストリームからの 命令のIFIFOとrEuをフラッ シュする。
3.3.3.2 プロシージャ進行中ビットの状態から判断した通りに、TBU F PFnPC値をMBUF PFnPCまたはEBUFへ転送する。
3、3.3.3 プロシージャ進行中ビットの状態から判断した通りに、ブリ フェッチしたTBUF命令をMBUFまたはEBUFへ転送する。
3.3.3.4 プロシージャ進行中ビットの状態から判断した通りに、MBU Fま たはEBUFプリフェッチ・オペ レーションを続行する。
3、3.4 最初のセット内の条件付き制御フロー命令が「行われない」と解析 さ れた場合: 3.3.4.1 ターゲット命令ストリームからの命令セットのTBUFをフラ ゾ シュする。
3.3.4.2 2番目の条件付きブランチ命令がニブコードされなかった場合 は、プロシージャ進行中ビット の状態から判断した通りに、 MBUFまたはEBUFブリフェッチ・オペレーションを続ける。
3.3.4.3 2番目の条件付きブランチ命令がニブコードされた場合は、そ の命令の処理を開始する(ス テップ3.4.1へ進む)。
4、割込み、例外およびトラップ命令 4.1トラツプは広義には次のものからなる。
4、1.1 ハードウェア割込み 4、1.1.1 非同期(外部)発生事象、内部または外部。
4゜1.1.2 いつでも発生し、持続する。
4、1.1.3 アトミック(通常)命令間で優先順にサービスを受け、プロ シージャ命令を一時中止する。
4.1.1.4 割込みハンドラの開始アドレスはトラップ・ハンドラ入口点の 事前定義テーブルまでのペクト ル番号オフセットとして判断さ れる。
4.1.2 ソフトウェア・トラップ命令4.1.2.1 非同期(外部)発生 命令。
4.1.2.2 例外として実行されるソフトウェア命令。
4.1.2.3 トラップ・ハンドラの開始アドレスは、TBRまたはFTBレ ジス タにストアされたベース・アド レス値と結合されたトラップ番 号オフセットから判断される。
4.1.3 例外 4、1.3.1 命令と同期して発生する事象。
4.1.3.2 命令の実行時に処理される。
4.1.3.3 例外の結果により、期待された命令とすべての後続実行命令は キャンセルされる。
4.1.3.4 例外ハンドラの開始アドレスは、トラップ・ハンドラ入口点 の事前定義テーブルまでのト ラップ番号オフセットから判断 される。
4.2トラツプ命令ストリーム・オペレーションはそのとき実行中の命令ストリ ームとインラインで実行される。
4.3 トラップ処理ルーチンが次の割込み可能トラップの前にxPCアドレス をセーブすることを条件に、トラップはネストが可能である。
そうしないと、現トラップ・オペレーションの完了前にトラップが現れると、マ シンの状態が壊れることになる。
5、トラップ命令ストリームの処理: xPC5,1トラツプが現れたとき: 5、1. l 非同期割込みが起こると、そのとき実行中の命令の実行は一時中 止され る。
5.1.2 同期例外が起こると、例外を起こした命令が実行されるとトラップ が処 理される。
5.2トラツプが処理されたとき: 5.2.1 割込みは禁止される。
5、2.2 現在のrFJ(1ニアドレスばxPCトラップ状態リターン・アド レス・レジス タにストアされる。
5゜2.3 IFJCアドレスとそのあとのアドレスにあるIFIFOとMBU Fブリフェッチ・バッファはフラッシュされる。
5、2.4 アドレスIFJCとそのあとのアドレスの実行された命令とその命 令の結 果はIEUからフラッシュされる。
5.2.5 MBUF PFnPCに、トラップ−ハンドラ・ルーチンのアドレ スがロードさ れる。
5、2.5゜1 トラップのソースは、特殊レジスタ群に入っているトラップ番 号によって判断されたトラッ ブ・タイプに応じて、TBRまた はFTBレジスタをアドレス指定 している。
5、2.6 命令がプリフェッチされ、通常通りに実行するためにIFIFOに 入れられる。
5.2.7 トラップ・ルーチンの命令がそのあと実行される。
5.2.7.1 トラップ処理ルーチンはxPCアドレスを所定のロケーション に セーブする機能を備え、割込み を再び可能にする。xPCレジス タは特殊レジスタ移動命令で、 および特殊レジスタ・アドレス とデータ・バスを通して読み書 きされる。
5.2.8トラツプ命令からのリターンを実行することによってトラップ状態か ら 抜は出る必要がある。
5、2.8.1 以前にセーブしていたときは、xPCアドレスをその事前定義 口 ケーションから復元してから、 トラップ命令からのリターンを 実行する必要がある。
5.3トラツプ命令からのリターンが実行されたとE) U入みおよび例外の き: 5、3.1 割込みが可能にされる。
5.3.2 プロシージャ進行中ビットの状態がら判断したとおりに、xPCア ドレス が現在の命令ストリーム・レジスタ MBUFまたはEBUF PFnPCに戻され、プリフェッチがそのアドレスか ら続行 される。
5.3.3 xPCアドレスが新ストリーム・レジスタを通してIF、、−PC レジスタに復元される。
(以下余白) のトラップが割込み禁止され、ある種のプロセッサ状l) ■ 割込みと例外は、それらが可能にされている限り、プロセッサがメイン命令スト リームから実行されているか、プロシージャ命令ストリームから実行されている かに関係なく処理される。割込みと例外は優先順にサービスが受けられ、クリア されるまで持続している。トラップ・ハンドラの開始アドレスは、上述するよう に、トラップ・ハンドラの事前定義テーブルまでのベクトル番号オフセットとし て判断される。
割込みと例外は、本実施例では、基本的に2つのタイプがある。すなわち、命令 ストリームの中の特定の命令と同期して引き起こされるものと、命令ストリーム の中の特定の命令と非同期に引き起こされるものである。割込み、例外、トラッ プおよびフォールト(fault)の用語は、本明細書では相互に使い分けて用 いられている。非同期割込みは、命令ストリームと同期して動作していない、オ ン・チップまたはオフ・チップのハードウェアによって引き起こされる。例えば 、オン・チップ・タイマ/カウンタによって引き起こされる割込みは、オフ・チ ップから引き起こされるハードウェア割込みやマスク不能割込み(non−ma skable interrupt)(NMI)と同じように、非同期である。
非同期割込みが引き起こされると、プロセッサ・コンテキストが凍結され(fr ozen) 、すべて況情報がストアされ、プロセッサは受け取った特定の割込 みに対応する割込みハンドラにベクトルを向ける。割込みハンドラがその処理を 完了すると、プログラム実行は割込み発生時に実行中であったストリームの中の 最後に完了した命令のあとに置かれた命令から続けられる。
同期例外とは、命令ストリームの中の命令と同期して引き起こされる例外である 。これらの例外は特定の命令に関連して引き起こされ1問題の命令が実行される まで保留される。好適実施例では、同期例外はプリフェッチ時、命令デコード時 、または命令実行時に引き起こされる。プリフェッチ例外には、例えば、TLB 不一致、その他のVMU例外がある。デコード例外は、例えば、デコード中の命 令が違法命令であるか、プロセッサの現特権レベル(privilege 1e vel)に一致していないと、引き起こされる。実行例外は、例えば、ゼロによ る除算といった算術演算エラーが原因で引き起こされる。これらの例外が起こる と、好適実施例では、例外を引き起こした特定命令と例外とを対応づけ、その命 令が退避(retire)されるときまでその状態が維持される。その時点で、 以前に完了した命令がすべて退避され、例外を引き起こした命令からの試行的結 果があれば、試行的に実行された後続の命令の試行的結果と同じように、フラッ シェされる。そのあと、その命令で引き起こされた最高優先度例外に対応する例 外ハンドラに制御が渡される。
ソフトウェア・トラップ命令はCF−DET 274 (第2図)によってニブ コード・ステージで検出され、無条件コール命令その他の同期トラップと同じよ うに処理される。つまり、ターゲット・アドレスが計算され、ブリフェッチはそ のときのブリフェッチ待ち行列(EBUFまたはMBUF)まで続けられる。こ れと同時に、その例外は命令と対応づけられて記録され、命令が退避されるとき 処理される。他のタイプの同期例外はすべて、例外を引き起こした特定命令と対 応づけられて記録され、累積されるだけで、実行時に処理される。
2) 兆m叱正に: 非同期割込みは、割込みライン292を通してPCロジック・ユニット270に 通知される。第3図に示すように、これらのラインはPCロジック・ユニット2 70内の割込みロジック・ユニット363に通知するためのもので、NMIライ ン、IRQラインおよび1組の割込みレベル・ライン(LVL)からなっている 、 NMIラインはマスク不能割込みを通知し、外部ソースを起点としている。
これは、八−ドウエア・リセットを除き最高優先度割込みである。 IRQライ ンも外部ソースを起点としており、外部デバイスがハードウェア割込みをいつ要 求したかを通知する。好適実施例では、外部から起こされるハードウェア割込み は最高32個までユーザが定義することができ、割込みを要求した特定外部デバ イスは割込みレベル・ライン(LVL)上に割込み番号(0−31)を送出する 。メモリ・エラー・ラインはMCUlloによってアクティベート(活動化)さ れ、様々な種類のメモリ・エラーを通知する。その他の非同期割込みライン(° 図示せず)も割込みロジック・ユニット363に通知するために設けられている 。これらには、タイマ/カウンタ割込み、メモリ入出力(Ilo)エラー割込み 、マシン・チェック割込み、およびパフォーマンス・モニタ割込みを要求するた めのラインがある。
非同期割込みの各々は、上述する同期例外と同様に、対応する事前定義トラップ 番号が関連づけられている。これらのトラップ番号は32個が32個のハードウ ェア割込みレベルと関連づけられている。これらのトラップ番号のテーブルは割 込みロジック・ユニット363に維持されている。一般に、トラップ番号が大き くなると、トラップの優先度が高(なる。
非同期割込みの1つが割込みロジック・ユニット363に通知されると、割込み 制御ユニット363は割込み要求をINT REQ/ACKライン340を経由 してIEU 104へ送出する。また、割込み制御ユニット363はブリフェッ チ一時中止信号をライン343を経由してPC制画ユニット262へ送信し、P C制御ユニット262に命令をブリフェッチすることを中止させる。IEU 1 04はそのとき実行中の命令をすべてキャンセルし、すべての試行的結果を中止 するか、一部またはすべての命令を完了させる。好適実施例では、そのとき実行 中の命令をすべてキャンセルすることによって、非同期割込みに対する応答を高 速化している。いずれの場合も、実行pc制御ユニット366内のDPCは、I EU 104が割込みの受信を確認する前に、最後に完了し、退避された命令に 対応するように更新される。ブリフェッチされてMBtlF、 EBUF、 T BUFおよびIFIFO264に置かれている他の命令もすべてキャンセルされ る。
IEU 104は、割込みハンドラから割込みを受け取る準備状態にあるときだ け、割込み受信確認信号をINTREQ/ACKライン340を経由して割込み 制御ユニット363へ送り返す。この信号を受け取ると、割込み制御ユニット3 63は、以下で説明するように、該当するトラップ・ハンドラにディスバッチす る。
3)1凰土3 同期例外の場合は、割込み制御ユニット363は各命令セットごとに4個が1組 の内部例外ビット(図示せず)をもっており、各ビットはセット内の各命令に対 応づけられている。割込み制御ユニット363は各命令で見つかったとき、通知 するトラップ番号も維持している。
特定の命令セットがブリフェッチされている途中で、VMUが几B不一致または 別のVMU例外を通知すると、この情報はPCロジック・ユニット270へ、特 に割込み制御ユニット334へVMU制御ライン332,334を経由して送ら れる。割込み制御ユニット363は、この信号を受信すると、以後のブリフェッ チを一時中止するようにライン343を経由してPC制御ユニット362に通知 する。これと同時に、割込み制御ユニット363は、命令セットが送られる先の ブリフェッチ・バッファに関連するVMJissまたはVM−Excpビットの どちらか該当する方をセットする。そのあと、割込み制御ユニット363は、命 令セットの中の命令のどれも有効でないので、その命令セットに対応する4個の 内部例外標識ビット全部をセットし、問題を起こした命令セットの中の4命令の 各々に対応して受信した特定例外のトラップ番号をストアする。問題のある命令 より前の命令のシフトと実行は、問題の命令セットがIFIFo 264内で最 低レベルに達するまで通常通りに続行される。
同様に、ブリフェッチ・バッファ260、ニブコード・ユニット262またはI FIFO264を通して命令をシフトしている途中で他の同期例外が検出される と、この情報も割込み制御ユニット363へ送られ、ユニット363は、例外を 引き起こした命令に対応する内部例外標識ビットをセットし、その例外に対応す るトラップ番号をストアする。ブリフェッチ同期例外の場合と同じように、問題 を起こした命令より前の命令のシフトと実行は、問題の命令セットがIFIFo  264内で最低レベルに達するまで、通常通りに続行される。
好適実施例では、ブリフェッチ・バッファ260、ニブコード・ユニット262 またはIFIFO264を通して命令をシフトしている途中で検出される例外は 、ソフトウェア・トラップ命令の1タイプだけである。ソフトウェア・トラップ 命令は、CF−DETユニット274によってニブコード・ステージで検出され る。一部の実施例では、他の形態の同期例外がニブコード・ステージで検出され るが、他の同期例外の検出は、命令が実行ユニット104に到着するまで待つよ うにするのが好ましい。このようにすれば、特権命令を処理すると起こるような ある種の例外が、命令が実効的に順序内で実行される前に変化するおそれのある プロセッサ状態に基づいて通知されるのが防止される。違法命令のように、プロ セッサ状態に左右されない例外はニブコード・ステージで検出可能であるが、す べての実行前同期例外(VMU例外は別として)を同じロジックで検出するよう にすれば、最低限のハードウェアですむことになる。また、そのような例外の処 理は時間を重視することがめったにないので、命令が実行ユニット104に届く までの待ちによる時間浪費もない。
上述したように、ソフトウェア・トラップ命令はCF−DETユニット274に よって1デコード・ステージで検出される。割込みロジック・ユニット363内 のその命令に対応する内部例外標識ビットはセットされ、0から127までの番 号で、ソフトウェア・トラップ命令の即値モード・フィールドに指定できるソフ トウェア・トラップ番号はトラップ命令に対応づけられてストアされる。しかし 、ブリフェッチ同期例外と異なり、ソフトウェア・トラップは制御フロー命令だ けでなく、同期例外としても扱われるので、割込み制御ユニット363は、ソフ トウェア・トラップ命令が検出されたときブリフェッチを一時中止するようにP C制御ユニット362に通知しない、その代わりに、命令がIFIFo 264 を通してシフトされるのと同時に、IFtJ102はトラップ・ハンドラをブリ フェッチしてMBUF命令ストリーム・バッファに入れる。
命令セットがIFIFO264の最低レベルまで達すると、割込みロジック・ユ ニット363はその命令セットの例外標識ビットを4ビツト・ベクトルとして5 YNCHjNTjNFOライン341経由でIEU 104へ送り、命令セット の中で同期例外の発生源とすでに判断されていた命令があれば、どの命令である かを通知する。
IEU 104は即時に応答しないで、命令セットの中のすべての命令が通常の 方法でスケジュールされるようにする。整数算術演算例外といった別の例外は、 実行時に引き起こされる場合がある。特権命令が実行されたために起こる例外の ように、マシンの現在状態に左右される例外もこの時点で検出され、マシンの状 態が命令ストリーム内の以前のすべての命令に対して最新となるようにするため に、PSRに影響を与える可能性のあるすべての命令(特殊な移動やトラップ命 令からのリターンなど)は強制的に順序内で実行される。なんらかの同期命令の 発生源となった命令が退避される直前にあるときだけ、例外が起こったことが割 込みロジック・ユニット363に通知される。
rEU 104は試行的に実行され、同期例外を引き起こした最初の命令に先行 する命令ストリームに現れたすべての命令を退避し、試行的に実行され、命令ス トリームにそのあとに現れた命令からの試行的結果をフラッシュする。例外を引 き起こした特定の命令は、トラップから戻ると再実行されるのが普通であるので 、この命令もフラッシュされる。そのあと、実行PC制御ユニット366内のr FJcは実際に退避された最後の命令に対応するように更新され、例外が割込み 制御ユニット363に通知される。
例外の発生源である命令が退避されると、IEU 104は、退避される命令セ ット(レジスタ224)の中に同期例外を起こした命令があれば、どの命令であ るかを示した新しい4ビツト・ベクトルを、命令セット内の最初の例外の発生源 を示した情報と一緒に、5YNC)(jNT−INFOライン341を経由して 割込みロジック・ユニット363に返却する。IEU 104から返却される4 ビツト例外ベクトルに入っている情報は、割込みロジック・ユニット363から IEU 104に渡された4ビツト例外ベクトルとIEU 104で引き起こさ れた例外を累積したものである。ブリフェッチまたはIデコード時に検出された 例外が原因で割込み制御ユニット363にすでにストアされている情報があれば 、その情報と一緒にIEU104から割込み制御ユニット363に返却される情 報の残余部分は、割込み制御ユニット363が最高優先度同期例外の内容とその トラップ番号を判断するのに十分割込み受信確認信号がライン340経由でIE Uから受信されるか、あるいはゼロ以外の例外ベクトルがライン341経由で受 信された後、現DPCがリターン・アドレスとして特殊レジスタ412(第4図 )の1つであるxPCレジスタに一時的にストアされる。現プロセッサ状態レジ スタ(PSR)は先のPSR(PPSR)レジスタにもストアされ、そして現状 態比較レジスタCC5R)が特殊レジスタ412の中の旧状態比較レジスタPC 3R)にセーブされる。
トラップ・ハンドラのアドレスはトラップ・ベース・レジスタ・アドレスにオフ セットを加えたものとして計算される。 PCロジック・ユニット270はトラ ップ用に2つのベース・レジスタをもち、これらは共に特殊レジスタ412(第 4図)の一部であり、以前に実行された特殊移動命令によって初期化される。大 部分のトラップでは、ハンドラのアドレスを計算するために使用されるベース・ レジスタはトラップ・ベース・レジスタTBRである。
割込み制御ユニット363は現在保留中の最高優先度割込みまたは例外を判断し 、索引(look−up)テーブルを通して、それに関連づけられたトラップ番 号を判断する。これは、選択したベース・レジスタまでのオフセットとして、1 組のINT−OFFSETライン373を経由してブリフェッチPC制御ユニッ ト364へ渡される。ベクトル・アドレスは、オフセット・ビットを下位ビット としてTBRレジスタから得た上位ビットに連結するだけでめられるという利点 がある。このため、加算器の遅延が防止される。(本明細書では、2゛ビツトと はi°番目のビットのことである。)例えば、トラップの番号が0から255ま でで、これを8ビツト値で表すと、ハンドラ・アドレスは8ビツト・トラップ番 号を22ビツトのTBRストア値の最後に連結するとめられる。トラップ番号に 2桁の下位ビットを付加すると、トラップ・ハンドラ・アドレスは常にワード境 界上に置かれることになる。このようにして作られた連結ハンドラ・アドレスは 入力373の1つとしてブリフェッチ・セレクタPFJCSel 390 (第 4図)へ送られ、次のアドレスとして選択されて、そこから命令がブリフェッチ される。TBRレジスタを使用したトラップのベクトル・ハンドラ・アドレスは すべて17−ドだけ離れている。従って、トラップ・ハンドラ・アドレスにある 命令は、長くなったトラップ処理ルーチンへの予備的ブランチ命令でなければな らない。しかし、トラップには、システム・パフォーマンスの低下を防止するた めに、その扱いに注意が必要なものがいくつかある0例えば、TLB )ラップ は高速に実行させる必要がある。そのような理由から、好適実施例では、予備的 ブランチの費用を払わないで、小型のトラップ・ハンドラを呼び出せるようにし た高速トラップ・メカニズムが組み込まれている。さらに、高速トラップ・ハン ドラはメモリにも、例えば、オン・チップROMにも独立に配置させることがで きるので、RAMの位置(ロケーション)に関連するメモリ・システム問題がな くなる。
好適実施例では、高速トラップとなるトラップは上述したVMU例外だけである 。高速トラップの番号は他のトラップと区別され、O〜7の範囲になっている。
しかし、優先度はMMU例外と同じである0割込み制御ユニット363は、高速 トラップがそのとき保留中の最高優先度であると認めると、特殊レジスタ(FT B)から高速トラップ・ベース・レジスタ(FTB)を選択し、トラップ・オフ セットと結合するためにライン416上に送出する。ライン373°経由でブリ フェッチ・セレクタPFJCSel 390へ送られた結果のベクトル・アドレ スは、FTBレジスタからの上位22ビツトを連結したもので、そのあとに高速 トラップ番号を表した3ビツトが続き、そのあとに7個のゼロ・ビットが続いて いる。
従って、各高速トラップ・アドレスは128バイト、つまり、32ワードだけ離 れている。呼び出されると、プロセッサは開始ワードへブランチし、ブロックま たはそこから出たブランチ内でプログラムを実行させる。
32個またはそれ以下の命令で実現できる標準的な几B処理ルーチンのような、 小さなプログラムの実行は、実際の実行処理ルーチンへの予備的ブランチが回避 されるので、通常のトラップよりも高速化される。
好適実施例では、すべての命令は同じ4バイト長になっているが(つまり、4つ のアドレス・ロケーションを占有する)、注目すべきことは、命令が可変長にな ったマイクロプロセッサでも高速トラップ・メカニズムが利用できることである 。この場合、高速トラップ・ベクトル・アドレス間には、マイクロプロセッサで 使用できる最短長の命令を少なくとも2つ、好ましくは32個の平均サイズ命令 を受け入れるだけの十分なスペースが設けられることは勿論である。勿論、マイ クロプロセッサがトラップからのリターン命令を備えている場合には、ベクトル ・アドレス間には、ハンドラ内の少なくとも1つの他の命令をその命令に置ける だけの十分なスペースを設けてお(必要がある。
また、トラップ・ハンドラヘデイスバツチすると、プロセッサはカーネル・モー ドと割込み状態に入る。
これと並行して、状態比較レジスタ(CSR)のコピーが以前のキャリー状態レ ジスタ(PCSR>に置かれ、PSRのコピーが以前のPSR(PPSR)にス トアされる。カーネルと割込み状態モードはプロセッサ状況レジスタ(PSR) 内のビットで表される。現PSRの割込み状態ビットがセットされると、シャド ウ・レジスタまたはトラップ・レジスタRT[241〜RT[311が上述およ び第7b図に示すように、見えるようになる。割込みハンドラは新しいモードな PSRに書き込むだけでカーネル・モードから出ることができるが、割込み状態 から出るためには、トラップからのリターン(RTT)命令を実行する方法だけ が唯一の方法である。
IEU 104がRTT命令を実行すると、PCSRはCSRレジスタに復元さ れ、PP5RレジスタはPSRレジスタに復元されるので、PSR内の割込み状 態ビットは自動的にクリアされる。 PF−PCSELセレクタ390は特殊レ ジスタ・セット412の中の特殊レジスタxPCを次にそこからブリフェッチす るアドレスとして選択する。xPCはインクリメンタ394とバス396を通し て、MBUF PFnPCまたはEBIJF PFnPCのどちらか該当する方 に復元される。xPCをEBUF PFnPCに復元すべきか、またはMBUF  PFnPCに復元すべきかの判断は、復元されたあとのPSRの「プロシージ ャ進行中jビットに従って行われる。
注目すべきことは、プロセッサはトラップとブロシージャ命令の両方のリターン ・アドレスをストアするのに同じ特殊レジスタxPCを使用しないことである。
トラップのリターン・アドレスは上述したように特殊レジスタxPCにストアさ れるが、プロシージャ命令のあとリターンする先のアドレスは別の特殊レジスタ uPCにストアされる。従って、割込み状態は、プロセッサがプロシージャ命令 で呼び出されたエミュレーション・ストリームを実行している間でも、使用可能 のままになっている。他方、例外処理ルーチンは、エミュレーション・ストリー ムが完了したあと例外パンドラへ戻るためのアドレスをストアする特殊レジスタ がないので、いずれのプロシージャ命令をも含んでいてはならない。
5) エム上: ある種のプロセッサ状況情報は、トラップ・ハンドラ、特に、CSR,PSR、 リタンPC1およびある意味では”A”レジスタ・セットra[24]−ra[ 311ヘデイスバツチするとき自動的にバックアップがとられるが、他のコンテ キスト情報は保護されていない。例えば、浮動小数点状況レジスタ(FSR)の 内容は自動的にバックアップがとられない、トラップ・ハンドラがこれらのレジ スタを変更するためには、独自のバックアップを実行しなければならない。
トラップ・ハンドラヘディスバッチするとき自動的に行われるバックアップが制 限されているために、トラップのネストは自動的に行われない。トラップ・ハン ドラは必要とするレジスタのバックアップをとり、割込み条件をクリアし、トラ ップ処理のために必要な情報をシステム・レジスタから読み取り、その情報を適 当に処理する必要がある。割込みは、トラップ・ハンドラヘディスバッチすると 自動的に禁止される。処理を終えると、ハンドラはバックアップをとったレジス タを復元し、再び割込みを可能にし、RTT命令を実行して割込みから戻ること ができる。
ネストされたトラップを可能にするには、トラップ・ハンドラを第1部分と第2 部分に分割する必要がある。第1部分では、割込みが禁止されている間に、特殊 レジスタ移動命令を使用してxPCをコピーし、トラップ・ハンドラが維持して いるスタック上にブツシュしておく必要がある0次に、特殊レジスタ移動命令を 使用して、トラップ・ハンドラの第2部分の先頭のアドレスなxPCに移し、ト ラップからのリターン命令(RTT)を実行する必要がある。 RTTは割込み 状態を取り除き(PPSRをPSRに復元することによって)、制御をxPC内 のアドレスを移す、 xPCには、ハンドラの第2部分のアドレスが入っている 。第2部分はこの時点で割込みを可能にして、割込み可能モードで例外の処理を 続けることができる。注目すべきことは、シャドウ・レジスタRT[24]〜R T[311はこのハンドラの第1部分でのみ見ることができ、第2部分では見え ないことである。従って、第2部分では、ハンドラは、”A“レジスタ値がハン ドラによって変更される可能性がある場合には、その値を予約しておく必要があ る。トラップ処理ルーチンは終わったときは、バックアップにとったレジスタを すべて復元し、元のxPCをトラップ・ハンドラ・スタップからポツプし、それ を特殊レジスタ移動命令を使用してxPC特殊レジスタに戻して、別のRTTを 実行する必要がある。これにより、制御はメインまたはエミュレーション命令ス トリームの中の該当命令に返される。
6)−り之!二一二!1: 次の表工は、好適実施例で認識されるトラップのトラップ番号、優先度および処 理モードを示すものである。
(以下余白) 非同期/ F21iJL3 瓜1ユゴ 1皿−五1エヱ名0−127 通常 同期 トラッ プ命令128 通常 同期 FP例外 129 通常 同期 整数算術演算例外130 通常 同期 MMU (TLB 不一致または修正を除() 135 通常 同期 不整列メモリアドレス136 通常 同期 違法命令 137 通常 同期 特権命令 138 通常 同期 デバッグ例外 144 通常 非同期 性能モニタ 145 通常 非同期 タイマ/カウンタ146 通常 非同期 メモリI10 エラー160−191 通常 非同期 ハードウェア割込み192−253 予 約 254 通常 非同期 マシン・チェック255 通常 非同期 NMI O高速トラップ 同期 高速MMU TLB不一致1 高速トラップ 同期 高 速MMU TLB修正2−3 高速トラップ 同期 高速(予約)4−7 高速 トラップ 同期 高速(予約)lll−tA′−ユニット 第5図は、IEU 104の制御経路部分とデータ経路部分を示したものである 。主要データ経路は、rFU 102からの命令/オペランド・データ・バスを 始端としている。データ・バスとして、即値オペランドは才へランド位置合わせ ユニット470へ送られ、レジスタ・ファイル(REG ARRAY) 472 に渡される。レジスタ・データはレジスタ・ファイル472からバイパス・ユニ ット474を通って、レジスタ・ファイル出力バス476を経由し、分配バス4 80を経由して機能計算エレメント(FUO−、)の並列配列へ送られる6機能 ユニット478゜−0によって生成されたデータは、出力バス482を経由して バイパス・ユニット474またはレジスタ配列472または両方へ送り返される 。
ロード/ストア・ユニット484によってIEU 104のデータ経路部分が完 成される。ロード/ストア・ユニット484はIEU 104とCCU 106 間のデータ転送の管理を担当する。具体的には、CCU 106のデータ用キャ ッシュ134から取りaしたロード・データはロード/ストア・ユニット484 によってロード・データ・バス486を経由してレジスタ配列472へ転送され る。
CCU 106のデータ用キャッシュにストアされるデータは機能ユニットの配 分バス480から受信される。
IEU 104の制御経路部分はIEUデータ経路を通る情報の送出、管理、お よびその処理を行うことを担当する0本発明の好適実施例では、IEU制御経路 は複数の命令の並行実行を管理する機能を備え、IEUデータ経路は、IEU  104のほぼすべてのデータ経路エレメント間の複数のデータ転送を独立して行 う機能を備えている。IEU制御経路は命令/オペランド・バス124を経由し て命令を受信すると、それを応じて動作する。具体的には、命令セットはEデコ ード・ユニット490によって受信される1本発明の好適実施例では、Eデコー ド・ユニット490はIPIFOマスタ・レジスタ216゜224に保持されて いる両方の命令セットを受信して、デコードする。8命令すべてのデコードの結 果は、キャリー・チェッカ(CRY CHKR)ユニット492、依存性チェッ カ(DEP CHKR)ユニット494、レジスタ改名ユニット(REG RE NAME) 496、命令発行(ISSUER)ユニット498および退避制御 ユニット(RETIRE CLT) 500へ送られる。
キャリー・チェッカ・ユニット492はEデコード・ユニット490から制御ラ イン502を経由して、係属中の保留されている8命令に関するデコード化情報 を受信する。キャリー・チェッカ492の機能は、保留されている命令のうち、 プロセッサ状況ワードのキャリー・ビットに影響を与える、あるいはキャリー・ ビットの状態に左右される命令を識別することである。この制御情報は制御ライ ン504を経由して命令発行ユニット498へ送られる。
保留状態の8命令によって使用されているレジスタ・ファイル472のレジスタ を示しているデコード化情報は、制御ライン506を経由して直接にレジスタ改 名ユニット496へ送られる。この情報は、依存関係チェッカ・ユニット494 へも送られる。依存関係チェッカ・ユニット494の機能は、保留状態の命令の どれがレジスタをデータの宛先として参照しているか、もしあれば、どの命令が これらの宛先レジスタのいずれかに依存しているかを判断することである。レジ スタに依存する命令は、制御ライン508を経由してレジスタ改名ユニット49 6へ送られる制御信号によって識別される。
最後に、Eデコード・ユニット490は保留状態の8命令の各々の特定の内容と 機能を識別した制御情報を制御ライン510を経由して命令発行ユニット498 へ送る。命令発行ユニット498はデータ経路資源、特に、保留状態の命令の実 行のためにどの機能ユニットが使用できるかを判断することを担当する。アーキ テクチャ100の好適実施例によれば、命令発行ユニット498はデータ経路資 源が使用可能であること、キャリーとレジスタ依存関係の制約を条件として、8 個の保留状態命令のいずれかを順序外で実行できるようにする。レジスタ改名ユ ニット496は、実行できるように適当に制約が解除された命令のビット・マツ プを制御ライン512を経由して命令発行ユニット498へ送る。すでに実行さ れた(完了した)命令およびレジスタまたはキャリーに依存する命令は論理的に ビット・マツプから除かれる。
必要とする機能ユニット478゜−1が使用可能であるかどうかに応じて、命令 発行ユニット498は各システム・クロック・サイクルに複数の命令の実行を開 始することができる。機能ユニット478゜−7の状況は状況バス514を経由 して命令発行ユニット498へ送られる。
命令の実行を開始し、開始後の実行管理を行うための制御信号は命令発行ユニッ ト498から制御ライン516を経由してレジスタ改名ユニット496へ送られ 、また選択的に機能ユニット478゜−7へ送られる。制■信号を受けると、レ ジスタ改名ユニット496はレジスタ選択信号をレジスタ・ファイル・アクセス 制御バス518上に送出する。バス518上に送出された制御信号でどのレジス タが割込み可能にされたかは、実行中の命令を選択することによって、およびレ ジスタ改名ユニット496がその特定命令によって参照されたレジスタを判断す ることによって判断される。
バイパス制御ユニット(BYPASS CTL) 520は、一般的には、制御 ライン524上の制御信号を通してバイパス・データ・ルーチング・ユニット4 74の動作を制御する。バイパス制御ユニット520は機能ユニット478゜− 7の各々の状況をモニタし、制御ライン522を経由してレジスタ改名ユニット 496から送られてきたしジスタ参照に関連して、データをレジスタ・ファイル 472から機能ユニット478゜−1へ送るべきかどうか、あるいは機能ユニッ ト478゜−〇から出力されるデータをバイパス・ユニット474経由で機能ユ ニット宛先バス480へ即時に送って、命令発行ユニット498によって選択さ れた新発行の命令の実行のために使用できるかどうかを判断する。どちらの場合 も、命令発行ユニット498は機能ユニット478゜−7の各々への特定レジス タ・データを選択的に使用可能にすることによって、宛先バス480から機能ユ ニット47g、、ヘデータを送ることを直接に制御する。
IEU制御経路の残りのユニットには、退避制御ユニット500、制御フロー制 御(CF CTL)ユニット528、および完了制御(DONE CTL)ユニ ット536がある。退避制御ユニット500は順序外で実行された命令の実行を 無効または確認するように動作する。ある命令が順序外で実行されると、先行命 令もすべて退避されたならば、その命令は、確認または退避されることができる 。現セット中の保留状態の8命令のどれが実行されたかの識別情報が制御ライン 532上に送出されると、その識別情報に基づいて、退避制御ユニット500は バス51gに接続された制御ライン534上に制御信号を送出して、レジスタ配 列472にストアされた結果データを順序外で実行された命令の先行実行の結果 として実効的に確認する。
退避制卸ユニット500は、各命令を退避するとき、PCインクリメント/サイ ズ制御信号を制御ライン344を経由してIFtl 102へ送る。複数の命令 を順序外で実行でき、従って、同時に退避する準備状態に置くことができるので 、退避制御ユニット500は同時に退避された命令数に基づいてサイズ値を判断 する。最後に、IFIFOマスク・レジスタ224のすべての命令が実行され、 退避された場合は、退避制御ユニット500はIFIFO読取り制御信号を制御 ライン342を経由してIFU 102へ送って、IFIFOユニット264の シフト・オペレーションを開始することにより、Eデコード・ユニット490に 追加の4命令を実行保留命令として与える。
制御フロー制御ユニット528は各条件付きブランチ命令の論理的ブランチ結果 を検出するという、特定化された機能を備えている。制御フロー制御ユニット5 28は現在保留中の条件付きブランチ命令の8ビツト・ベクトル10をEデコー ド・ユニット490から制御ライン510を経由して受信する。8ビツト・ベク トル命令完了制御信号は、同じように完了制御ユニット540から制御ライン5 38を経由して受信される。この完了制御信号によって、制御フロー制御ユニッ ト528は、条件付きブランチ命令が、条件付き制御フロー状況を判断するのに 十分な個所まで完了すると、それを判別することができる。保留中の条件付きブ ランチ命令の制御フロー状況結果は、その実行時に制御フロー制御ユニット52 8によってストアされる。条件付き制御フロー命令の結果を判断するために必要 なデータは、レジスタ配列472内の一部状況レジスタがら制御ライン520を 経由して得られる。各条件付き制御フロー命令が実行されると、制御フロー制御 ユニットは新しい制御フロー結果信号を制御ライン348を経由しrIFU 1 02へ送る。好適実施例では、この制御フロー結果信号は2個の8ビツト・ベク トルを含んでおり、このベクトルは、保留されている可能性のある8個の制御フ ロー命令のそれぞれのビット位置別の状況結果が分かっているかどうか、また、 ビット位置の対応づけによって得られる対応する状況結果状態を定義している。
最後に、完了制御ユニット540は機能ユニット478゜−1の各々のオペレー ションに関する実行状況をモニタするためのものである0機能ユニット478゜ −0のいずれかが命令実行オペレーションの完了を通知すると、完了制御ユニッ ト540は対応する完了制御信号を制御ライン542上に送出して、レジスタ改 名ユニット496、命令発行ユニット498、退避制御ユニット500およびバ イパス制御ユニット520にアラート(警告)する。
機能ユニット478゜−0を並列配列構成にすることにより、IEU 104の 制御の一貫性を向上している。命令を正しく認識して、実行のためのスケジニー ルするためには、個々の機能ユニット478゜−〇の特性を命令発行ユニット4 98に知らせる必要がある0機能ユニット478a−−は、必要とする機能を実 行するために必要な特定制御フロー・オペレーションを判別し、実行することを 担当する。従って、命令発行ユニット498以外は、IEU制御ユニットには、 命令の制御フロー処理を独立して知らせる必要はない。命令発行ユニット498 と機能ユニット478゜−7は共同して、残りの制御フロー管理ユニット496 .500.520.528.540に実行させる機能を必要な制御信号のプロン プトで知らせる。従って、機能ユニット478゜−1の特定の制御フロー・オペ レーションの変更は、IEU 104の制御オペレーションに影響しない。さら に、既存の機能ユニット478゜−9の機能を強化する場合や、拡張精度浮動小 数点乗算ユニットや拡張精度浮動小数点ALU 、高速フーリエ計算機能ユニッ ト、三角関数計算ユニットなどの、別の機能ユニット478゜−0を1つまたは 2つ以上を追加する場合でも、命令発行ユニット498を若干変更するだけです む。必要なる変更を行うには、Eデコード・ユニット490によって隔離された 対応する命令フィールドに基づいて、特定の命令を認識し、その命令と必要とす る機能ユニット478゜−7とを関係づける必要がある。し−ジスタ・データの 選択の制御、データのルーチング、命令完了と退避は、機能ユニット478゜− 1の他の機能ユニットすべてに対して実行される他のすべての命令の処理と矛盾 がないようになっている。
A) IEtlデータ の・ IEUデータ経路の中心となるエレメントはレジスタ・ファイル472である。
しかし、本発明によれば、IEUデータ経路内には、個々の機能用に最適化され た並列データ経路がいくつか用意されている。主要データ経路は整数と浮動小数 点の2つである。各並列データ経路内では、レジスタ・ファイル472の一部が そのデータ経路内で行われるデータ操作をサポートするようになっている。
l) レジスタ・ファイルの・ 第6a図は、データ経路レジスタ・ファイル550の好適アーキテクチャの概要 図である。データ経路レジスタ・ファイル550は一部バッファ552、レジス タ・ファイル配列564、入力セレクタ559、および出力セレクタ556を含 んでいる。最終的にレジスタ配列564へ送られるデータは、結合データ入力バ ス558°を経由して一部バッファ552によって最初に受信されるのが代表例 である。つまり、データ経路レジスタ・ファイル550へ送られるデータはすべ て入力セレクタ559によって多重化されて、複数の入力バス558(好ましく は2つの)から入力バス558゛上に送出される。制御バス51a上に送出され たレジスタ選択およびイネーブル制御信号は一部バッファ552内の受信データ のレジスタ・ロケーションを選択する。一時バッファにストアされるデータを生 成した命令が退避されると、再び制御バス518上に送出された制御信号は一部 バッファ552からレジスタ・ファイル配列564内の論理的に対応づけられた レジスタヘデータ・バス560を経由してデータを転送することを許可する。し かし、命令が退避される前は、一時バッファ552にストアされたデータは一部 バッファにストアされたデータをデータ・バス560のバイパス部分を経由して 出力データ・セレクタ556へ送ることにより、後続の命令の実行時に使用する ことが可能である。制御バス51.S経由で送られる制御信号によって制御され るセレクタ556は、一時バッファ552のレジスタからのデータとレジスタ・ ファイル配列564のレジスタからのデータのどちらかを選択する。結果のデー タはレジスタ・ファイル出力バス564上に送出される。また、実行中の命令が 完了と同時に退避される場合は、つまり、その命令が順序内で実行された場合は 、結果データをバイパス延長部分558”を経由して直接にレジスタ配列554 へ送るように指示することができる。
本発明の好適実施例によれば、各データ経路レジスタ・ファイル550は2つの レジスタ操作を同時に行えるようになっている。従って、入力バス558を通し て2つの全レジスタ幅データ値を一部バッファ552に書き込むことができる。
内部的には、一時バッファ552はマルチプレクサ配列になっているので、入力 データを一部バッファ552内の任意の2レジスタへ同時に送ることができる。
同様に、内部マルチプレクサにより一部バッファ552の任意の5レジスタを選 択して、データをバス560上に出力することができる。レジスタ・ファイル配 列564は同じように入出力マルチプレクサを備えているので、2つのレジスタ を選択して、それぞれのデータを同時にバス560から受信することも、5つの レジスタを選択してバス562経由で送ることもできる。最後に、レジスタ・フ ァイル出力セレクタ556は、バス560,562から受信した10レジスタ・ データ値のうち任意の5つがレジスタ・ファイル出力バス564上に同時に出力 されるように実現するのが好ましい。
一部バッファ内のレジスタ・セットは第6b図にその概要が示されている。レジ スタ・セット552゛は8個のシングル・ワード(32ビツト)レジスタl0R D、11RD、、、l7RDから構成されている。レジスタ・セット552“は 4個のダブル・ワード・レジスタl0RD、l0RD+1(IORD4)、II RD、 IIRD+1(ISRD)、、、l3RD、 13RD+1(17RD )のセットとして使用することも可能である。
本発明の好適実施例によれば、レジスタ・ファイル配列564内の各レジスタを 重複して設ける代わりに、一時バッファ・レジスタ・セット552内のレジスタ は2個のrFIFOマスタ・レジスタ216,224内のそれぞれの命令の相対 ロケーションに基づいて、レジスタ改名ユニット496によって参照される。本 アーキテクチャ100で実現される各命令は、最高2つまでのレジスタまたは1 つのダブル・ワード・レジスタを出力として参照して、命令の実行によって生成 されたデータの宛先とすることができる0代表例として、命令は1つの出力レジ スタだけを参照する。従って、その位置を第6c図に示しているように、8個の 係留中命令のうち1つの出力レジスタを参照する命令2 (Iz)の場合は、デ ータ宛先レジスタl2RDが選択されて、命令の実行によって生成されたデータ を受け入れる。命令I2によって生成されたデータが後続の命令、例えば、■、 によって使用される場合は、l2RDレジスタにストアされたデータはバス56 0を経由して転送され、結果のデータは一部バッファ552に送り返されて、l 5RDで示したレジスタにストアされる。特に、命令■、は命令工2によって決 まるので、命令Isは、■2からの結果、データが得られるまでは実行すること ができない、しかし、理解されるように、命令■6は必要とする入力データを一 部バッファ552°の命令T2のデータ・ロケーションから得れば、命令I2の 退避前に実行することが可能である。
最後に、命令Izが退避されると、レジスタl2RDからのデータは、退避個所 の命令の論理位置から判断されて、レジスタ・ファイル配列564ないのレジス タ・ロケーションに書かれる。すなわち、退避制御ユニット560は、制御ライ ン510経由でEデコード・ユニット490から与えれなレジスタ参照フィール ド・データからレジスタ・ファイル配列内の宛先レジスタのアドレスを判断する 。命令Io−sが退避されると、l4RD−l7RDに入っている値は、IFI FOユニット264のシフトと同時にシフトされて、l0RD−l3RDに移さ れる。
命令I2からダブル・ワード結果値が得られる場合は、さらに複雑になる0本発 明の好適実施例によれば、ロケーションl2RDとl6RDの組合わせが、命令 I2が退避されるか、さもなければキャンセルまで、その命令から得た結果デー タをストアしておくために使用される。好適実施例では、命令I41)?の実行 は、命令工。−1のいずれかによるダブル・ワード出力の参照がレジスタ改名ユ ニット496によって検出された場合には、保留される。これにより、一時バツ ファ552°全体をダブル・ワード・レジスタのシングル・ランクとして使用す ることが可能になる。命令工。−3が退避されると、一時バッファ552゛はシ ングル・ワード・レジスタの2ランクとして再び使用することができる。さらに 、いずれかの命令I4−7の実行は、ダブル・ワード出力レジスタが必要な場合 には、命令が対応するlo−1にシフトされるまで保留される。
レジスタ・ファイル配列564の論理的編成は第7a図〜第7b図に示されてい る0本発明の好適実施例によれば、整数データ経路用のレジスタ・ファイル配列 564は40個の32ビツト幅レジスタから構成されている。このレジスタ・セ ットはレジスタ・セット”A”を構成し、ベース・レジスタ・セットra[0, ,23] 565、汎用レジスタra[24,,31] 566からなるトップ ・セット、および8個の汎用トラップ・レジスタra[24,,31]からなる シャドウ・レジスタ・セットとして編成されている0通常のオペレーションでは 、汎用レジスタra[o、、313565.566は整数データ経路用のレジス タ・ファイル配列のアクティブA“レジスタ・セットを構成している。
第7b図に示すように、トラップ・レジスタra [24,。
311567をスワップしてアクティブ・レジスタ・セット“A”に移しておけ ば、レジスタra[o、、23] 565のアクティブ・ベース・セットと一緒 にアクセスすることが可能である。”A”レジスタ・セットのこの構成は、割込 みの受信が確認されるか、例外トラップ処理ルーチンが実行されると、選択され る。レジスタ・セット”A”のこの状態は、割込み許可命令の実行またはトラッ プからのリターン命令の実行によって第7a図に示す状態に明示によって戻るま で維持される。
アーキテクチャ100によって実現された本発明の好適実施例では、浮動小数点 データ経路は第8図にその概要を示すように拡張精度レジスタ・ファイル配列5 72を使用する。レジスタ・ファイル配列572は、各々が64ビツト幅の32 個のレジスタrf[0,,31] から構成されている。浮動小数点レジスタ・ ファイル572は整数レジスタrb[0,,31]の”B”セットとして論理的 に参照することも可能である。アーキテクチャ100では、この”B”セットの レジスタは浮動小数点レジスタrf[0,,31]の各々の下位32ビツトに相 当している。
第3のデータ経路を表すものとして、プール演算子レジスタ・セット574が第 9図に示すように設けれている。これは、プール演算の論理結果をストアする。
このC“レジスタ・セット574は32個の1ビツト・レジスタrc[0,,3 11から構成されている。プール・レジスタ・セット574のオペレーションは 、プール演算の結果をプール・レジスタ・セット574の任意の命令選択レジス タへ送ることができる点でユニークである。
これは、等しい、等しくない、より大、その他単純なプール状況値などの条件を 表す1ビツト・フラグをストアするシングル・プロセッサ状況ワード・レジスタ を使用するのと対照的である。
浮動小数点レジスタ・セット572とプール・レジスタ・セット574は、双方 共、第6b図に示す整数一時バッファ552と同じアーキテクチャの一部バツフ ァによって補数がとられる。基本的違いは、一時バッファ・レジスタの幅が補数 をとるレジスタ・ファイル配列572.574の幅と同じなるように定義されて いることである。好適実施例では、幅はそれぞれ64ビツトと1ビツトになって いる。
多数の追加の特殊レジスタが、レジスタ配列472に少なくとも論理的に存在し ている。第7C図に示すように、レジスタ配列472に物理的に存在するレジス タはカーネル・スタック・ポインタ(kernel stackpointer )56g 、プロセッサ状態レジスタ(PSR) 569、旧プロセッサ状態レ ジスタ(PPSR) 570および8個の一部プロセッサ状態レジスタの配列( tPsR[0,,71) 571カらなっている。残りの特殊レジスタはアーキ テクチャ100の各所に分散している。特殊アドレスおよびデータ・バス354 はデータを選択して、特殊レジスタおよび”A“と”B”レジスタ・セット間で 転送するためのものである。特殊レジスタ移動命令は“A”または”B”レジス タ・セットからレジスタを選択し、転送の方向を選択し、特殊レジスタのアドレ スIDを指定するためのものである。
カーネル・スタック・ポインタ・レジスタとプロセッサ状態レジスタは、他の特 殊レジスタとは異なっている。カーネル・スタック・ポインタは、カーネル状態 にあるとき、標準のレジスタ間移動命令を実行することによってアクセス可能で ある。一時プロセッサ状態レジスタは直接にアクセスすることはできない。
その代わりに、このレジスタ配列はプロセッサ状態しジスタの値を伝播して、順 序外で実行される命令で使用できるようにする継承メカニズム (inheri tancemechanism)を実現するために使用される。初期伝播値はプ ロセッサ状態レジスタの値である。つまり、最後に退避された命令から得た値で ある。この初期値は一部プロセッサ状態レジスタから前方向に伝播され、順序外 で実行される命令が対応する位置にある一部プロセッサ状態レジスタ内の値をア クセスできるようにする。命令が依存し、変更できる条件コード・ビットは、そ の命令がもつ特性によって定義される。命令が依存関係、レジスタまたは条件コ ードによって制約されないことが、レジスタ依存関係チェッカ・ユニット494 とキャリー依存関係チェッカ492によ−って判断された場合は、命令は順序外 で実行することができる。
プロセッサ状態レジスタの条件コード・ビットの変更は論理的(、′対応するー ・時プロセッサ状態レジスタに指示される。具体的には、変更の可能性があるビ ットだけが一部ブロセッ勺状態レジスタに入っている値に適用され、上位のすべ ての一部プロセッサ状態レジスタに伝播される。その結果、順序外で実行される すべての命令は介在するPS[(変更命令によって適切に変更されたプロセッサ 状態レジスタ値から実行される。命令が退避されたときは、対応する一部ブロセ ッサ状讐レジスタ値だけがP S、Rレジスタ569に転送される。
その他の特殊レジスタは表IIに説明されている。
表II 扛3]ヨとと2 特殊移動 区図五2 R/W は土 PC−Rプログラム・カウンタニ一般的には、PCは現在実行中のプログ ラム命令ストリームの次のアド レスを格納している。
IFJCR/W IFUプログラム・カウンタ:IFJqは正確な次の実行アド レ スを格納している。
PFnPCRブリフェッチ・プログラム・カウンタ: MBUF、丁BUFおよ びEBUFPFnPCはそれぞれのプリフェッ チ命令ストリームの次のプリ フェッチ命令アドレスを格納し ている。
uPCR/W マイクロ・プログラム・カウンタ:プロシージャ命令のあとに 続く命令のアドレスを格納して いる。これはプロシジャ命令 がリターンしたとき最初に実行 される命令のアドレスである。
xPCR/W 割込み/例外プログラム・カウンタ:割込みまたは例外(また は両方)のリターン・アドレス を格納している。リターン・ アドレスはトラップ発生時の I、F−PCのアドレスである。
TBRW )−ラップ・ベース・アドレス:トラップ処理ルーチンヘディ スバッチするとき使用されるベ クトル・テーブルのベース・ア ドレス。各エントリはlワード 長である。割込みロジック・ユ ニット363から与えられるト ラップ番号は、このアドレスが 指しているテーブルまでのイン デックスとして使用される。
FTB W 高速トラップ・ベース・レジスタ:即時トラップ処理ルーチ ン・テーブルのベース・レジス タ。各テーブル・エントリは32 ワードであり、トラップ処理 ルーチンを直接に実行するため に使用される。割込みロジッ ク・ユニット363から与えられ るトラップ番号を32倍したもの は、このアドレスが指している テーブルまでのオフセットとし て使用される。
PBRW プロシージャ・ベース・レジスタ:プロシージャ・ルーチンへ ディスバッチするとき使用され るベクトル・テーブルのベー ス・アドレス、各エントリは1 ワード長であり、4ワード境界 に位置合わせされている。プロ シージャ命令フィールドとして 与えられるプロシージャ番号は このアドレスが指しているシー プルまでのインデックスとして 使用される。
PSRR/W プロセッサ状態レジスタ:プロセッサ状況ワードを格納してい る。状況データ・ビットは、 キャリー、オーバフロー、ゼ ロ、負、プロセッサ・モード、 現割込みレベル、実行中のプロ シージャ・ルーチン、0による 除算、オーバフロー例外、ハー ドウェア機能割込み可能、プロ シージャ割込み可能、割込み可 能などのビットがある。
PP5RR/W 旧プロセッサ状態レジスタ:命令が正しく完了するか、割込み またはトラップが引き起こされ ると、PSRからロードされる。
CSRR/W 状態比較(プール)レジスタ:シングル・ワードとしてアクセ ス可能なプール・レジスタ・ セット。
PCSRR/W 旧状態比較レジスタ:命令が正しく完了するか、割込みまたは トラップが引き起こされると、 CSRからロードされる。
2)−の 本発明の好適実施例に従って構築されるIEU 104の整数データ経路は第1 0図に示されている。説明の便宜上、整数データ経路580と結ばれる多数の制 御経路は図には示していない、これらの接続関係は第5図を参照して説明したと おりである。
データ経路580の入力データは位置合わせユニット582.584および整数 ロード/ストア・ユニット586から得られる。整数即値(integer i mmediate)データ値は、最初は命令埋込み(e+++bedded)デ ータ・フィールドとして与えられ、バス588経由でオペランド・ユニット47 0から得られる0位置合わせユニット582は整数データ値を隔離し、その結果 値を出力バス590を経由してマルチプレクサ592へ送られる。マルチプレク サ592への別の入力は特殊レジスタ・アドレスとデータ・バス354である。
命令ストリームから得られる即値(immediate)オペランドも、データ ・バス594経由でオペランド・ユニット570から得られる。これらの値は、 出力バス596上に送出される前に、位置合わせユニット584によって再度右 寄せされる。
整数ロード/ストア・ユニット586は外部データ・バス598を通してccu  ioeと双方向でやりとりする。
IEU 104へのインバウンド・データは整数ロード/ストア・ユニット58 6から入力データ・バス600を経由して入力ラッチ602へ転送される。マル チプレクサ592とラッチ602からの出力データは、マルチプレクサ608の マルチプレクサ入力バス604,606上に送出される0機能ユニット出力バス 482゛からのデータもマルチプレクサ608に送られる。このマルチプレクサ 608はアーキテクチャ100の好適実施例では、データを同時に出力マルチプ レクサ・バス610へ送る2つの通路を備えている。さらに、マルチプレクサ6 08を通るデータ転送は、システム・クロックの各半サイクル以内に完了するこ とができる0本アーキテクチャ100で実現される大部分の命令は、1つの宛先 レジスタを利用するので、最大4つまでの命令によって各システム・クロック・ サイクルの間データを一部バツファ612へ送ることができる。
一部バッファ612からのデータは一部レジスタ出力バス616を経由して整数 レジスタ・ファイル配列614へ、あるいは代替一時バッファ・レジスタ・バス 61gを経由して出力マルチプレクサ620へ転送することができる。整数レジ スタ配列出力バス622は整数レジスタ・データをマルチプレクサ620へ転送 することができる。一時バッファ612と整数レジスタ・ファイル配列614に 接続された出力バスは、それぞれ5個のレジスタ値を同時に出力することを可能 にする。つまり、合計5個までのソース・レジスタを参照する2つの命令を同時 に出すことができる。一時バッファ612、レジスタ・ファイル配列614およ びマルチプレクサ620は、アウトバウンド・レジスタ・データの転送を半シス テム・クロック・サイクルごとに行うことを可能にする。従って、最高4個まで の整数および浮動召集点命令を各クロック・サイクルの間に出すことができる。
マルチプレクサ620はアウトバウンド・レジスタ・データ値をレジスタ・ファ イル配列614から、あるいは一時バッファ612から直接に選択する働きをす る。
これにより、以前に順序外で実行された命令に依存する順序外実行命令をrEU  104によって実行させることができる。これにより、保留状態の命令を順序 外で実行することによってIEU整数データ経路の実行スルーブツト能力を最大 化すると共に、順序外のデータ結果を、実行され退避された命令から得たデータ 結果から正確に分離するという2目標を容易に達成することができる。マシンの 正確な状態を復元する必要のあるような割込みや他の例外条件が起こると、本発 明によれば、一時バッファ612に存在するデータ値を簡単にクリアすることが できる。従って、レジスタ・ファイル配列614は、割込みまたは他の例外条件 が発生する以前に完了し、退避された命令の実行によってのみ得られたデータ値 を正確に収めたままになっている。
マルチプレクサ620の各半システム・サイクル・オペレーション時に選択され たレジスタ・データ値は最高5つまでがマルチプレクサ出力バス624を経由し て整数バイパス・ユニット626へ送られる。このバイパス・ユニット626は 、基本的に、マルチプレクサが並列の配列からなり、その入力のいずれかに現れ たデータをその出力のいずれかへ送ることができる。バイパス・ユニット626 の入力は、マルチプレクサ592から出力バス604を経由する特殊レジスタ・ アドレス指定データ値または即値の整数値、バス624上に送出される最高5つ までのレジスタ・データ値、整数ロード/ストア・ユニット586からダブル整 数バス600を経由するロード・オペランド・データ、その出力バス596を経 由して位置合わせユニット584から得た即値オぺランド値、最後に、機能ユニ ット出力バス482からのバイパス・データ経路からなっている。このバイパス 経路とデータ・バス482はシステム・クロック・サイクルごとに4個のレジス タ値を同時に転送することができる。
データはバイパス・ユニット626から浮動小数点データ・バスに接続された整 数バイパス・バス628上に出力されて、最高5・つまでのレジスタ・データ値 を同時に転送する機能をもつ2つのオペランド・データ・バスと、整数ロード/ ストア・ユニット586へデータを送るために使用されるストア・データ・バス 632へ送られる。
機能ユニット分配バス480はルータ・ユニット634のオペレーションを通し て実現されている。また、ルータ・ユニット634はその入力から受信された5 個のレジスタ値を整数データ通路に設けられた機能ユニットへ送ることを可能に する並列のマルチプレクサ配列によって実現される。具体的には、ルータ・ユニ ット634はバイパス・ユニット626からバス630を経由して送られてきた 5個のレジスタ・データ値、アドレス・バス352を経由して送られてきた現I F−PCアドレス値、PC制御ユニツl−362によって判断され、ライン37 8°上に送出された制御フロー・オフセット値を受信する。ルータ・ユニット6 34ば、浮動小数点データ経路内に設けられたバイパス・ユニットから取り出さ れたオペランド・データ値をデータ・バス636を経由して受信することもでき る(オプション)。
ルータ・ユニット634によって受信されたレジスタ・データ値は、特殊レジス タ・アドレスおよびデータ・バス354上を転送されて、機能ユニット640. 642.644へ送られる。具体的には、ルータ・ユニット634は最高3つま でのレジスタ・オペランド値をルータ出力バス646.648,650を経由し て機能ユニット640.642.644の各々へ送る機能を備えている。本アー キテクチャ100の一般的アーキ゛テクチャによれば、最高2つまでの命令を同 時に機能ユニツl−11y40.642、644に対して出すことが可能である 。本発明の好適実施例によれば、3つの専用整数機能ユニットに、それぞれプロ グラマブル・シフト機能と2つの算術演算ロジック・ユニット機能をもたせるこ とができる。
ALUO機能ユニット644 、ALUI機能ユニット642およびシフタ機能 ユニット640はそれぞれの出力レジスタ・データを機能ユニット・バス482 °上に送出する。
ALUOとシフタ機能ユニット644.640から得た出力データも浮動小数点 デー・夕経路に接続された共用整数機能ユニット・バス650上に送出される。
類似の浮動小数点機能ユニット出力値データ・バス652が浮動小数点データ経 路から機能ユニット出力バス482゛へ設けられている。
A L tJ O機能ユニット644はIFU 102のブリフェッチ操作と整 数ロード/ストア・ユニット586のデータ操作の両方をサポートするために仮 想アドレス値を生成する場合にも使用される。ALUO機能ユニット644によ って計算された仮想アドレス値はIFtJ 102のターゲット・アドレス・バ ス346とCCU 106の両方に接続された出力バス654上に送出され、実 行ユニットの物理アドレス(EX PADDR)が得られる。ラッチ656は、 ALUO機能ユニッ)−644によって生成されたアドレスの仮想化部分をスト アするためのものである。アドレスのこの仮想化部分は出力バス658上に送出 されて、VMU 108へ送られる。
3)′ ハ 申データ の・線 法に、第11図は浮動小数点データ経路を示したものである。初期データは、こ の場合も、即値整数オペランド・バス588、即値オペランド・バス594およ び特殊レジスタ・アドレス・データ・バス354を含む、複数のソースから受信 される。外部データの最終的ソースは外部データ・バス598を通してCCU  106に接続された浮動小数点ロード/ストア・ユニット622である。
即値整数オペランドは、位置合わせ出力データ・バス668を経由してマルチプ レクサ666に渡す前に整数データ・フィールドを右寄せする働きをする位置合 わせユニット664によって受信される。マルチプレクサ666は特殊レジスタ ・アドレス・データ・バス354も受信する。即値オペランドは第2の位置合わ せユニット670へ送られ、右寄せされてから出力バス672上に送出される。
浮動小数点ロード/ストア・ユニット662からのインバウンド・データ(in bound data)は。
ロード・データ・バス676からラッチ674によって受信される。マルチプレ クサ666、ラッチ674および機能ユニット・データ・リターン・バス482 ”からのデータはマルチプレクサ678の入力から受信される。マルチプレクサ 678は選択可能なデータ経路を備え、2つのレジスタ・データ値がシステム・ クロックの半サイクルごとに、マルチプレクサ出力バス682を経由して一部バ ッファ680に書き込まれることを可能にする。
一時バッファ680は第6b図に示す一部バツファ552°と論理的に同じレジ スタ・セットを備えている。一時バッファ680はさらに、最高5個までのレジ スタ・データ値を一部バッファ680から読み取って、データ・バス686を経 由して浮動小数点レジスタ・ファイル配列684と、出力データ・バス690を 経由して出力マルチプレクサ688へ送ることができる。マルチプレクサ688 は、データ・バス692を経由して、浮動小数点ファイル配列684から最高5 個までのレジスタ・データ値も同時に受信する。マルチプレクサ688は最高5 個までのレジスタ・データ値を選択して、データ・バス696を経由してバイパ ス・ユニット694へ同時に転送する働きをする。バイパス・ユニット694は 、データ・バス672、マルチプレクサ666からの出力データ・バス698、 ロード・データ・バス676および機能ユニット・データ・リターン・バス48 2”のバイパス延長部分を経由して、位置合わせユニット670から与えられた 即値オペランド値も受信する。バイパス・ユニット694は最高5個までのレジ スタ・オペランド・データ値を同時に選択して、バイパス・ユニット出カバスフ 00、浮動小数点ロード/ストア・ユニット662に接続されたストア・データ ・バス702、および整数データ経路580のルータ・ユニット634に接続さ れた浮動小数点バイパス・バス636上に出力するように働(。
浮動小数点ルータ・ユニット704は、バイパス・・ユニット出カバスフ00と 整数データ経路バイパス・バス628とそれぞれの機能ユニット712.714 .716に接続された機能ユニット入カバスフ06.708,710との間で同 時にデータ経路を選択できる機能を備えている。
アーキテクチャ100の好適実施例による入カバスフ06゜708、710の各 々は、最高3個までのレジスタ・オペランド・データ値を機能ユニット712. 714.716の各々へ同時に転送することが可能である。これらの機能ユニッ ト712.714.716の出力バスは機能ユニット・データ・リターン・バス 482“に結合され、データをレジスタ・ファイル入力マルチプレクサ678へ 戻すようになっている。整数データ経路機能ユニット出力バス650を、機能ユ ニット・データ・リターン・バス482”に接続するために設けることも可能で ある。本発明のアーキテクチャ100によれば、マルチプレクサ機能ユニット7 12と浮動小数点ALU 714の機能ユニット出力バスを浮動小数点データ経 路機能ユニット・バス652を経由して整数データ経路500の機能ユニット・ データ・リターン・バス482゛に接続することが可能である。
4) プール・レジス ・データ の・プール演算データ経路720は第12図 に示されている。このデータ経路720は基本的に2種類の命令の実行をサポー トするために利用される。最初のタイプは、オペランド比較命令であり、この命 令では、整数レジスタ・セットと浮動小数点レジスタ・セットからi択された、 あるいは即値オペランドとして与えられた2つのオペランドが、ALU機能ユニ ットの1つで整数と浮動小数点データ経路を減算することによって比較される。
この比較は、ALU機能ユニット642.644.714.716のいずかによ る減算によって行われ、その結果の符号とゼし状況ビットは入力セレクタと比較 演算子結合ユニット722へ送られる。このユニット722は、制御信号を指定 した命令なEデコード・ユニット490から受け取ると、ALU機能ユニット6 42.644.714.716の出力を選択し、符号およびゼロ・ビットを結合 し、プール比較結果値を抽出する。出カバスフ23を通して比較演算の結果を入 力マルチプレクサ726とバイパス・ユニット742へ同時に転送することがで きる。整数および浮動小数点データ経路と同じように、バイパス・ユニット74 2は並列のマルチプレクサ配列として実現され、バイパス・ユニット742の入 力間で複数のデータ経路を選択して、複数のaカと結ぶことができる。バイパス ・ユニット742の他の入力はプール演算結果リターン・データ・バス724と データ・バス744上の2つのプール・オペランドからなっている。バイパス・ ユニット742は、最高2つまでの同時に実行中のプール命令を表したプール・ オペランドを、オペランド・バス748を経由してプール演算機能ユニット74 6へ転送することができる。また、バイパス・ユニット746は最高2個までの シングル・ビット・プール・オペランド・ビット(CFOlCFI)を制御フロ ー結果制御ライン750.752を経由して同時に転送することができる。
プール演算データ経路の残り部分は、比較結果バス723とプール結果バス72 4上に送出された比較およびプール演算結果値を、その入力として受信する入カ マルチブレクサ726を含んでいる。このバス724は最高2個までのプール結 果ビットを同時にマルチプレクサ726へ転送することができる。さらに、最高 2個までの比較結果ビットをバス723を経由してマルチプレクサ726へ転送 することができる。マルチプレクサ726はマルチプレクサの入力端に現れた任 意の2個の信号ビットをマルチプレクサの出力端を経由して、システム・クロッ クの各半サイクル時にプール演算一時バッファ728へ転送することができる。
一時バッファ728は、2つの重要な点が異なることを除けば、第6b図に示し た一部バッファ752°と論理的に同じである。第1の相違点は、一時バッファ 728内の各レジスタ・エントリがシングル・ビットからなることである。第2 の相違点は、8個の係留中命令スロットの各々に1つのレジスタだけが設けられ ていることである。これは、ブール演算の結果全部が定義によって1つの結果ビ ットによって定義されるためである。
一時バッファ728は最高4個までの出力オペランド値を同時に出力する。これ により、各々2つのソース・レジスタへのアクセスを必要とする2個のプール命 令を同時に実行させることができる。4個のプール・レジスタ値はシステム・ク ロックの各半サイクルごとにオペランド・バス736上に送出し、マルチプレク サ738へあるいはプール・オペランド・データ・バス734を経由してプール ・レジスタ・ファイル配列732へ転送することができる。プール・レジスタ・ ファイル配列732は、第9図に論理的に示すように、1個の32ビット幅デー タ・レジスタであり、任意に組み合わせた最高4個までのシングル・ビット・ロ ケ−ジョンを、一時バッファ728からのデータで修正し、システム・クロック の各半サイクルごとにプール・レジスタ・ファイル配列732から読み取って出 カバスフ40上に送出することができる。マルチプレクサ738はバス736. 740経由でその出力端から受信したプール・オペランドの任意のベアを、オペ ランド出カバスフ44上に送出してバイパス・ユニット742へ転送する。
プール演算機能ユニット746は2個のソース値についてプール演算を幅広(実 行する機能を備えている。
比較命令の場合には、ソース値は整数および浮動小数点レジスタ・セットのいず れかから得たベアのオペランドとIEU 104へ送られる任意の即値オペラン ドであり、プール命令の場合は、プール・レジスタ・オペランドの任意の2つで ある。表mと表IVは、本発明のアーキテクチャ100の好適実施例における論 理比較演算を示すものである。表Vは本発明のアーキテクチャ100の好適実施 例における直接プール演算を示すものである。表III−Vに示されている命令 条件コードと機能コードは対応する命令のセグメントを表している。
また、命令はベアのソース・オペランド・レジスタと、対応するプール演算結果 をストアするための宛先プール・レジスタを指定する。
表III 命令 張豆° 巳 東庄旦二ヱ rslはrs2より大 > ooo。
rslはrs2より大か >= oooi等しい rslはrs2より小 < 0010 rslはrs2より小か <= 0011等しい rslはrs2と等しくない t= oio。
rslはrs2と等しい 0101 予備 0110 無条件 1111 *rs= レジスタ・ソース 表IV 塗l巨り致羞J旧しム rslはrs2より大 > ooo。
rslはrs2より大か等しい >= 0001rslはrs2より小 < o oi。
rslはrs2より小か等しい <= 0011rslはrs2と等しくない  += olo。
rslはrs2と等しい 0101 無順序 ? 1000 無順序またはrslはrs2より大 ?> 1001無順序、rslはrs2よ り大か ?>= 1010等しい 無順序またはrslはrs2より小 ?< 1011無順序、rslはrs2よ り小か ?<= 1100等しい 無順序またはrslはrs2と等しい ?= 、1101予備 1.110−1 111 表V 命令 m 巳 儂1≦し二上 OZero 0000 bsl & bs2 AND 0001bsl & −bs2 ANN2 00 10bsl bsl 0011 −bsl & bs2 ANNI 0100bs2 bs2 0101 bsl ” bs2 XOR0110 bsl bs2 0R0111 −bsl & −bs2 NOR1000−bsl −bs2 XNOR100 1−bs2 N0T2 1010 bsl −bs2 0RN2 1011−bsl N0TI 1100 −bsl bs2 0RNI 1101−bsl −bs2 NAND 111 0*bs =プール・ソース・レジスタ B) ロード ストア ′ユニット 第13図はロード/ストア・ユニット760の例を示したものである。データ経 路580,660に別々に示されているが、ロード/ストア・ユニット586, 662は1つの共用ロード/ストア・ユニット760として実現するのが好まし い、それぞれのデータ経路580.660からのインタフェースはアドレス・バ ス762およびロードとストア・データ・バス764 (600,676)、  766(632,702)を経由している。
ロード/ストア・ユニット760によって使用されるアドレスは、IFU 10 2およびIEU 104の残り部分で使用される仮想アドレスとは対照的に、物 理アドレスである。 IFU 102は仮想アドレスで動作し、CCU 106 とVMU loJI間の調整に依存して物理アドレスを生成するのに対し、IE IJ 104ではロード/ストア・ユニット760を物理アドレス・モードで直 接に動作させる必要がある。この要件が必要になるのは、順序外で実行されるた めに、物理アドレス・データとストア・オペレーションがオーバラップするよう な命令が存在する場合、およびCCU 106からロード/ストア・ユニット7 60への順序外のデータ・リターンが存在する場合に、データ保全性を保つため である。データ保全性を保つために、ロード/ストア・ユニット760はストア 命令がIEU 104によって退避されるまで、ストア命令から得たデータをバ ッファに置いておく。その結果、ロード/ストア・ユニット760によってバッ ファに置かれたストア・データはロード/ストア・ユニット760に1つだけ存 在することができる。実行されたが退避されていないストア命令と同じ物理アド レスを参照するロード命令は、ストア命令が実際に退避されるまで実行が遅延さ れる。その時点で、ストア・データをロード/ストア・ユニット760からCC U 106へ転送し、CCUデータ・ロード・オペレーションの実行によって即 時にロード・バックすることができる。
具体的には、物理アドレス全体がVMU 10gからロード/ストア・アドレス ・バス762上に送出される。
ロード・アドレスは、一般的には、ロード・アドレス・レジスタ768゜−3に ストアされる。ストア・アドレスはストア・アドレス・レジスタ7703−0に ラッチされる。ロード/ストア制御ユニット774は命令発行ユニット498か ら受信した制御信号を受けて動作し、ロード・アドレスとストア・アドレスをレ ジスタ768、−0.770.−0にラッチすることを調整する。ロード/スト ア制御ユニット774はロード・アドレスをラッチするための制御信号を制御ラ イン778上に送出し、ストア・アドレスをラッチするための制御信号を制御ラ イン780上に送出する。ストア・データはストア・データ・レジスタ・セット 782.−0の論理的に対応するスロットにストア・アドレスをラッチするのと 同時にラッチされる。4x4x32ビット幅アドレス比較ユニット772には、 ロードおよびストア・アドレス・レジスタ768□。、7703−0に入ってい るアドレスの各々が同時に入力される。システム・クロックの各半サイクル時の 完全マトリックス・アドレス比較の実行は、制御ライン776を介してロード/ ストア制御ユニット774によって制御される。ストア・アドレスに一致するロ ード・アドレスの存在と論理ロケーションは、制御ライン776を経由してロー ド/ストア制御ユニット774へ送られる。
ロード・アドレスがVMU 10gから与えられ、保留中のストアがない場合は 、ロード・アドレスは、CCUロード・オペレーションの開始と同時に、バス7 62から直接にアドレス・セレクタ786へバイパスされる。
しかし、ストア・データが保留されている場合は、ロード・アドレスは使用可能 なロード・アドレス・ラッチ768゜−3にラッチされる。対応するストア・デ ータ命令が退避されるとの制御信号を退避制御ユニット500から受信すると、 ロード/ストア制御ユニット774はCCUデータ転送操作を開始し、制御ライ ン784を通してCCU 106へのアクセスの仲裁を行う。CCU106がレ ディ(ready)を通知すると、ロード/ストア制御ユニット774はCCU 物理アドレスをCCU PADDRアドレス・バス788上に送出するようにセ レクタ786に指示する。このアドレスはアドレス・バス790を経由して対応 するストア・レジスタ770.−0から得られる。
対応するストア・データ・レジスタ782.−0からのデータはCCUデータ・ バス792上に送出される。
ロード命令が命令発行ユニット498から出されると、ロード/ストア制御ユニ ット774はロード・アドレス・ラッチ768.−0の1つが要求されたロード ・アドレッスをラッチすることを許可する0選択された特定のラッチ768゜− 3は関係命令セット内のロード命令の位置に論理的に対応している。命令発行ユ ニット498は保留中の可能性のある2命令セツトのどちらかの中のロード命令 を示している5ビツト・ベクトルをロード/ストア制御ユニット774へ渡す、 コンパレータ772が一致するストア・アドレスを示していない場合は、ロード ・アドレスはアドレス・バス794を経由してセレクタ786へ送られ、CCU  PADDRアドレス・バス788上に出力される。アドレスの提供は、ロード /ストア制御ユニット774とCCU 106間でやりとりされるCCU要求と レディ制御信号に従って行われる。実行ID値(ExxD値)もロード/ストア 制御ユニット774によって準備されてCCU 106に対して畠され、CCU  106がExID値を含む要求データをそのあとで返却するときロード要求を 識別する。このID値は4ビツト・ベクトルからなり、現ロード要求を出したそ れぞれのロード・アドレス・ラッチ768゜−1を固有ビットで指定している。
5番目のビットはロード命令を収めている命令セットを識別するために使用され る。このID値は、従って、命令発行ユニット498からロード要求と一緒に送 られるビット・ベクトルと同じである。
先行する要求ロード・データが使用可能であることがCCU 106からロード /ストア制御ユニット774へ通知されると、ロード/ストア制御ユニット77 4は1位置合わせユニットがデータを受信し、それをロード・データ・バス76 4上に送出することを許可する1位置合わせユニット798はロード・データを 右寄せする働きをする。
CCU 106からデータが返却されると同時に、ロード/ストア制御ユニット 774はCCtJ 106からExID値を受信する。他方、ロード/ストア制 御ユニット774はロード・データがロード・データ・バス764上に送出され ることを知らせる制御信号を命令発行ユニット498へ送り、さらに、どのロー ド命令に対してロード・データが返却されるのかを示したビット・ベクトルを返 却する。
C)工EU′の 再び第5図を参照して、IEU制御経路のオペレーションを、第14図に示した タイミング図と関連づけて説明する。第14図に示した命令の実行タイミングは 本発明のオペレーションを例示したもので、種々態様に変更可能であることは勿 論である。
第14図のタイミング図はプロセッサ・システム・クロック・サイクルP。−8 のシーケンスを示している。各プロセッサ・サイクルは内部TサイクルT0から 始まる。本発明の好適実施例によるアーキテクチャ100では、各プロセッサ・ サイクルは2つのTサイクルからなっている。
プロセッサ・サイクル0のときは、IFtl 102とVMU108は物理アド レスを生成するように動作する。この物理アドレスはCCU 106へ送られ、 命令用キャッシュ・アクセス・オペレーションが開始される。要求された命令セ ットが命令用キャッシニ132にあると。
命令セットはプロセッサ・サイクルlのほぼ中間でIFtl 102へ戻される 。そのあと、IFU 102はブリフェッチ・ユニット260とIFIFo 2 G4を経由する命令セットの転送を管理し、転送された命令セットはまずIEU  104へ実行のために渡される。
1) Eデコード・ユニットの Eデコード・ユニット490は全命令セットを並列に受け取って、プロセッサ・ サイクル1が完了する前にデコードする。Eデコード・ユニット490は、好適 アーキテクチャ100では、バス124を経由して受け取ったすべての有効命令 を並列に直接デコードする機能を備えた順列組合せ理論に基づ(ロジック・ブロ ックとして実現されている。アーキテクチャ100によって認識される命令は、 各タイプ別に、命令、レジスタ要件および必要な資源の仕様と共に表VIに示さ れてる。
表VI 象3!」L盪 自土 ′とオペランド 本 しジスタ間移動 論理/算術演算機能コード:加算、減算、乗算、シフ トその他の指定。
宛先レジスタ PSRのみセット ソース・レジスタ1 ソース・レジスタ2または即 値定数値 レジスタ・セットA/B選択 即値からレジスタへ 宛先レジスタ 移動 即値整数または浮動小数点定 数値 レジスタ・セットA/B選択 ロード/ストア・ オペレーション機能コード:レジスタ ロードまたはストア の指 定、即値、ベースと即 値、またはベースとオフ セットの使用 ソース/宛先レジスタ ベース・レジスタ インデックス・レジスタまた 即値定数値 レジスタ・セットA/B選択 即値コール 符号付き即値変位 制御フロー オペレーション機能コード:ブランチ・タイプとトリ ガ条件の指定 ベース・レジスタ インデックス・レジスタ、即 値定数変位値、またはトラ・ノ ブ番号 レジスタ・セットA/B選択 特殊レジスタ移動 オペシー93フ機能コード:特殊/整数レジスタとの 間の移動の指定 特殊レジスタ・アドレス識別 子ソース/宛先レジスタ レジスタ・セットA/B選択 整数変換移動 オペレーション機能コード:浮動小数点から整数への 変換タイプの指定 ソース/宛先レジスタ レジスタ・セットA/B選択 ブール関数 プール関数コード: AND、ORなどの指定 宛先プール・レジスタ ソース・レジスタ1 ソース・レジスタ2 レジスタ・セットA/B選択 拡張プロシージャ プロシージャ指定子:プロシージャ・ベース値から のアドレス・オフセット の指定 オペレーション:値をプロ シージャ・ルーチンへ渡 す アトミック・プロ プロシージャ指定子:アドレシージャ ス値の指定 中−命令は、デコードされて命令を識別するフィールドのほかにこれらのフィー ルドを含んでいる。
Eデコード・ユニット490は命令セットの各命令を並列にデコードする。その 結果の命令の識別、命令機能、レジスタ参照および機能要件はEデコード・ユニ ット490の出力から得られる。この情報は再生成され、命令セット内のすべて の命令が退避されるまで、プロセッサ・サイクルの各半サイクル期間、Eデコー ド・ユニット490によってラッチされる。従って、保留状態の8命令すべてに 関する情報が、Eデコード・ユニット490の出力から絶えず得られるようにな っている。この情報は、8エレメント・ビット・ベクトルの形式で表示され、各 ベクトルのビットまたはサブフィールドは2つの保留中命令セット内の対応する 命令の物理ロケーションに論理的に対応している。従って、8個のベクトルが制 御ライン502を経由してキャリー・チェッカ492へ送られる。この場合、各 ベクトルは、対応する命令がプロセッサ状況ワードのキャリー・ビットに作用を 及ぼしているか、あるいはそれに依存しているかを指定している。8個のベクト ルが各命令の特定の内容と機能ユニット要件を示すために制御ライン510を経 由して送られる。8個のベクトルが制御ライン506を経由して送られ、8個の 保留中命令の各々によって使用されたレジスタ参照を指定している。これらのベ クトルはプロセッサ・サイクル1が終了する前に送られる。
2) キ リー・チェッカ・ユニ・ のキャリー・チェッカ・ユニット492は 第14図に示すオペレージジンのデータ依存関係フェーズ期間の間に依存関係検 査ユニット494と並列に動作する。キャリー・チェッカ・ユニット492は好 適アーキテクチャ100では順列組合せ理論に基づくロジックとして実現されて いる。従って、キャリー・チェッカ・ユニット492によるオペレーションの各 繰返し時に、命令がプロセッサ状態レジスタのキャリー・フラグを変更したかど うかについて8個の命令すべてが考慮される。これが必要とされるのは、その前 の命令によって設定されたキャリー・ビットの状況に依存する命令を順序外で実 行することを可能にするためである。制御ライン504上に送出された制御信号 により、キャリー・チェッカ・ユニット492は、キャリー・フラグに対する先 行命令の実行に依存する特定の命令を識別することができる。
さらに、キャリー・チェッカ・ユニット492は8個の保留中命令の各々につい てキャリー・ビットの一部的コピーをもっている。キャリー・ビットを変更して いない命令については、キャリー・チェッカ・ユニット492はプログラム命令 ストリームの順序でキャリー・ビットを次の命令に伝える。従って、順序外で実 行され、キャリー・ビットを変更する命令を実行させることが可能であり、さら に、その順序外で実行される命令に依存する後続の命令も、キャリー・ビットを 変更する命令のあとに置かれていても、実行することが可能である。さらに、キ ャリー・ビットがキャリー・チェッカ・ユニット492によって維持されている ので、これらの命令の退避以前に例外が起こったとき、キャリー・チェッカ・ユ ニットは内部一時キャリ−・ビット・レジスタをクリアするだけでよいことから 、順序外で実行することが容易になる。その結果、プロセッサ状況レジスタは、 順序外で実行される命令の実行による影響を受けない。キャリー・チェッカ・ユ ニット492が維持している一部キヤリー・ビット・レジスタは、順序外で実行 される各命令が完了すると更新される。順序外で実行される命令が退避されると 、プログラム命令ストリームの中で最後に退避された命令に対応するキャリー・ ビットはプロセッサ状況レジスタのキャリー・ビット・ロケーションへ転送デー タ依存関係チェッカ・ユニット494はEデコード・ユニット490から制御ラ イン506を経由して8個のレジスタ参照識別ベクトルを受け取る。各レジスタ の参照は32個のレジスタを一度に1つを識別するのに適した5ビツト値と、” A”、”B”またはプール・レジスタ・セット内に置かれているレジスタ・バン クを識別する2ビツト値によって示されている。浮動小数点レジスタ・セットは ”B”レジスタ・セットとも呼ばれる。各命令は最高3つまでのレジスタ参照フ ィールドをもつことができる。2つのソース・レジスタ・フィールドと1つの宛 先レジスタ・フィールドである。ある種の命令、特にレジスタ間移動命令は、宛 先レジスタを指定している場合があっても、Eデコード・ユニット490によっ て認識される命令ビット・フィールドは、実際に作成される出力データがないこ とを意味している場合がある。むしろ、命令の実行は、プロセッサ状況レジスタ の値の変更を判断することだけを目的としている。
データ依存関係チェッカ494も好適アーキテクチャ100において純然たる組 合せロジック(purecombinatorial logic)で実現され ているが、これはプログラム命令ストリーム内に後に現れる命令のソース・レジ スタ参照と相対的に前に置かれた命令の宛先レジスタ参照との間の依存関係を同 時に判断するように動作する。ビット配列は、どの命令が他の命令に依存するか を識別するだけでなく、各依存関係がどのレジスタに基づいて生じたかを識別す るデータ依存関係チェッカ494によって作られる。
キャリーとレジスタ・データの依存関係は、第2プロセツサ・サイクルの開始直 後に判別される。
4) レジスタ ユニットの・ ゛ レジスタ改名ユニット496は8個の保留中の命令すべてのレジスタ参照のID を制御ライン506を経由して、レジスタ依存関係を制御ライン508を経由し て受け取る。8個のエレメントからのマトリックスも制御ライン542を経由し て受け取る。これらのエレメントは、係留中命令の現セットの中でどの命令が実 行されたか(完了したか)を示している。この情報から、レジスタ改名ユニット 496は制御信号の8エレメント配列を制御ライン512を経由して命令発行ユ ニット498へ送る。このようにして送られた制御情報は、現セットのデータ依 存関係が判別された場合に、まだ実行されていない現在保留中の命、令のうちど の命令の実行が可能になったかについてレジスタ改名ユニット496が行った判 断を反映している。レジスタ改名ユニット496は実行のために同時に出される 最高6個までの命令を識別した選択制御信号をライン516を経由して受信する 。つまり、2側の整数命令、2個の浮動小数点命令および2個のプール命令であ る。
レジスタ改名ユニット496はバス518を経由してレジスタ・ファイル配列4 72へ送られた制御信号を通して、識別された命令を実行する際にアクセスする ソース・レジスタを選択するという、もう1つの機能を備えている。順序外で実 行される命令の宛先レジスタは対応するデータ経路の一部バッファ612,68 0.728に置かれているものとして選択される。順序内で実行される命令は完 了すると退避され、その結果データはレジスタ・ファイル614.684.73 2にストアされていく。ソース・レジスタの選択は、レジスタが以前に宛先とし て選択され、対応する以前の命令がまだ退避されていないかどうかによって決ま る。そのような場合には、ソース・レジスタは対応する一部バッファ612.6 80.728から選択される。以前の命令が退避されていた場合は、対応するレ ジスタ・ファイル614.684.732のレジスタが選択される。その結果、 レジスタ改名ユニット496は、順序外で実行される命令の場合には、レジスタ ・ファイル・レジスタの参照を一部バッファ・レジスタの参照に実効的に置き換 えるように動作する。
アーキテクチャ100によれば、一時バッファ612゜680、728は対応す るレジスタ・ファイル配列のレジスタ構造と重複していない。むしろ、8個の保 留命令の各々に対して1つの宛先レジスタ・スロットが用意されている。その結 果、一時バッファ宛先レジスタ参照の置換は、保留レジスタ・セット内の対応す る命令のロケーションによって判断される。そのあとのソース・レジスタ参照は ソース依存関係が発生した命令に対してデータ依存関係チェッカ494によって 識別される。従って、一時バッファ・レジスタ内の宛先スロットはレジスタ改名 ユニット496によって容易に判断することが可能である。
5)tA ′−ユニットの・ 命令発行ユニット498は発行できる命令のセットをレジスタ改名ユニット49 6の出力とEデコード・ユニット490によって識別された命令の機能要件に基 づいて判断する。命令発行ユニット498は制御ライン514を経由して報告さ れた機能ユニット478゜−0の各々の状況に基づいてこの判断を行う。従って 、命令発行ユニット498は発行すべき使用可能な命令セットをレジスタ改名ユ ニット496から受信すると、オペレーションを開始する。各命令を実行するた めにレジスタ・ファイルへのアクセスが必要であるとすると、命令発行ユニット 498は現在命令を実行中の機能ユニット498゜−7が使用可能であることを 予想する。レジスタ改名ユニット496へ発行すべき命令を判別する際の遅延を 最小にするために、命令発行ユニット498は専用の組合せロジックで実現され ている。
発行すべき命令を判別すると、レジスタ改名ユニット496はレジスタ・ファイ ルへのアクセスを開始し、このアクセスは第3プロセツサ・サイクルP2が終了 するまで続けられる。プロセッサ・サイクルP3が開始すると、命令発行ユニッ ト498は、rExecute OJで示すように1つまたは2つ以上の機能ユ ニット478゜−7によるオペレーションを開始し、レジスタ・ファイル配列4 72から送られてきたソース・データを受信して処理する。
代表例として、アーキテクチャ100で処理される大部分の命令は1プロセツサ ・サイクルで機能ユニットを通して実行される。しかし、一部の命令は、rEx ecute IJで示すように、同時に出された命令を完了するのに複数のプロ セッサ・サイクルを必要とする。Execute O命令とExecute 1 命令は、例えば、それぞれALUと浮動小数点乗算機能ユニットに実行させるこ とができる。ALU機能ユニットは、第14図に示すように、1プロセツサ・サ イクル内で出力データを発生し、この出力データはラッチしてお(たけて、第5 プロセツサ・サイクル24時に別の命令を実行する際に使用することができる。
浮動小数点乗算機能ユニットは内部バイブライン化機能ユニットにすることが好 ましい。従って、次のプロセッサ・サイクルで別の浮動小数点命令を出すことが できる。しかし、最初の命令の結果はデータに依存するプロセッサ・サイクル数 の間使用することができない、第14図に示す命令は、機能ユニットでの処理を 完了するためには、3プロセツサ・サイクルを必要とする。
各プロセッサ・サイクルの間に、命令発行ユニット498の機能は繰り返される 。その結果、現在の保留中の命令セットの状況と機能ユニット478゜−0の全 セットの使用可能状況は各プロセッサ・サイクルの間に再評価される。従って、 最適条件のとき、好適アーキテクチャ100はプロセッサ・サイクルごとに最高 6個までの命令を実行することができる。しかし、代表的な命令ミックスから得 られる総平均実行命令数は、1プロセツサ・サイクル当たり1.5個ないし2. 0個である。
命令発行ユニット498の機能で最後に考慮すべきことは、このユニットがトラ ップ条件の処理と特定命令の実行に関与することである。トラップ条件を発生す るためには、まだ退避されていないすべての命令をIEU 104からクリアす る必要がある。このような事態は、算術演算エラーに応答して機能ユニット47 8゜−7のいずれからか、あるいは例えば、違法命令をデコードしたときにEデ コード・ユニット490から、外部割込みを受信し、それが割込み要求/受信確 認制御ライン340を経由してIEU 104へ中継されたのに応答して、起こ ることがある。トラップ条件が発生したとき、命令発行ユニット498は現在r EU 104で保留されているすべての非退避命令を中止または無効にすること を受け持つ。同時に退避できない命令はすべて無効にされる。この結果は、プロ グラム命令ストリームを順序内で実行する従来の方式に対して割込みを正確に発 生させるために不可欠である。 IEo 104がトラップ処理プログラム・ル ーチンの実行を開始する準備状態になると、命令発行ユニット498は制御ライ ン340を経由するリターン制御信号によって割込みの受信を確認する。また、 従来の純然たる順序内ルーチンにおいである命令が実行される前に変更されたプ ロセッサ状態ビットに基づいて、その命令に対する例外条件が認識される可能性 を防止するために、命令発行ユニット498はPSRを変更する可能性のあるす べての命令(特殊移動やトラップからのリターンなど)が厳格に順序内で実行さ れるようにすることを受け持つ。
プログラム制御の流れを変更するある種の命令は、ニブコード・ユニット262 によって判別されない、この種の命令には、サブルーチン・リターン、プロシー ジャ命令からのリターン、トラップからのリターンがある。命令発行ユニット4 98は判別制御信号をIEUリターン制御ライン350を経由してIFU 10 2へ送る。特殊レジスタ412のうち対応するものが選択されて、コール命令の 実行時、トラップの発生時またはプロシージャ命令の出現時に存在していたIF −PC実行アドレスを出力する。
6)6 ユニ≠ の 完了制御ユニット540は機能ユニット478゜−0をモニタして、現在のオペ レーションの完了状況を調べる。
好適アーキテクチャ100では、完了制御ユニット540は各機能ユニットによ るオペレーションの完了を予想して、現在保留中の命令セットの中の各命令の実 行状況を示した完了ベクトルを、機能ユニット478゜−1による命令の実行完 了よりも約半プロセッサ・サイクル前にレジスタ改名ユニット496、バイパス 制御ユニット520および退避制御ユニット500へ送る。これにより、命令発 行ユニット498はレジスタ改名ユニット496を通して、実行を完了する機能 ユニットを次の命令発行サイクルに対して使用可能な資源として考慮することが できる。バイパス制御ユニット520は、機能ユニットから出力されたデータを バイパス・ユニット474を通るようにバイパスする準備を行うことができる。
最後に、退避開開ユニット500は、機能ユニット478゜−1かうレジスタ・ ファイル配列472ヘデータを転送するのと同時に対応する命令を退避するよう に動作する。
7)゛ ユニットの・ 完了制御ユニット540から送られた命令完了ベクトルのほかに、退避制御ユニ ット500はEデコード・ユニット490から出力された最も古い命令セットを モニタする。命令ストリーム順序の中の各命令に完了制御ユニット540によっ て完了の印(マーク)がつけられると、退避制御ユニット500は、制御ライン 534上に送出された制御信号を通して、一時バッファ・スロットからレジスタ ・ファイル配列472内の対応する命令が指定したファイル・レジスタ・ロケー ションへデータを転送することを指示する。1つまたは複数の命令が同時に退避 されると、PCInc/5ize制御信号が制御ライン344上に送出される。
各プロセッサ・サイクルごとに最高4個までの命令を退避することが可能である 。命令セット全体が退避されると、IPIFO読取り制御信号が制御ライン34 2上に送出されてIFIFo 264を前進させる。
8) フロー ユニットの 制御フロー制御ユニット528は、現在の係留中命令セット内の制御フロー命令 が解決されたかどうか、さらに、その結果ブランチが行われたかどうかを指定し た情報をrFU 102に絶えず与えるように動作する。制御フロー制御ユニッ ト528は、Eデコード・ユニット490による制御フロー・ブランチ命令の識 別情報を制御ライン510を経由して取得する。現在のレジスタ依存関係のセッ トは、制御ライン536を経由してデータ依存関係チェッカ・ユニット494か ら制御フロー制御ユニット528へ送られるので、制御フロー制御ユニット52 8はブランチ命令の結果が依存関係に拘束されているかどうか、あるいは判明し ているかどうかを判断することができる。レジスタ改名ユニット496からバス 51gを経由して送られたレジスタの参照は制御フロー制御ユニット528によ ってモニタされ、ブランチ決定を定義するプール・レジスタが判別される。従っ て、ブランチ決定は、制御フロー命令の順序外の実行以前でも判断することが可 能である。
制御フロー命令の実行と同時に、バイパス・ユニット472は、制御フローlと 制御フロー2の制御ライン750、752からなる制御ライン530を経由して 制御フローの結果を制御フロー制御ユニット528へ送るように指示される。最 後に、制御フロー制御ユニット528は各々が8ビツトの2個のベクトルを制御 ライン348を経由してIFU 102へ連続して送る。これらのベクトルは、 ベクトル内のビットに対応する論理ロケーションに置かれた命令が解決されたか 否か、およびその結果ブランチが行われたか否かを定義している。
好適アーキテクチャ100では、制御フロー制御ユニット528は制御ユニット 528への入力制御信号を受けて連続的に動作する組合せロジックとして実現さ れている。
9) バイパス ユニットの 命令発行ユニット498はバイパス制御ユニット520と緊密に協働して、レジ スタ・ファイル配列472と機能ユニット478゜−1間のデータのルーチング (経路指定)を制御する。バイパス制御ユニット520は、第14図に示すオペ レーションのレジスタ・ファイル・アクセス、出力およびストア・フェーズと関 連して動作する。レジスタ・ファイル・アクセスの間には、バイパス制御ユニッ ト520は命令の実行の出力フェーズの間に書き込まれている途中にあるレジス タ・ファイル配列472内の宛先レジスタのアクセスを、制御ライン522を通 して認識することができる。この場合、バイパス制御ユニット520は、バイパ スして機能ユニット配布バス480に返すように、機能ユニット出力バス482 上に送出されたデータを選択することを指示する。バイパス・ユニット52Gに 対する制御は、制御ライン542を通して命令発行ユニット498によって行わ れる。
IV、想メモ! ′ユニット VMU 108のインタフェース定義は第15図に示されている。VMU 10 8は主にVMU制御ロジック・ユニット800と内容アドレス(content  addressable)メモリ(CAM) 802から構成されている。V MU 10gの一般的機能は第16図にブロック図で示しである。
同図において、仮想アドレスの表現は、スペース10(sID[31:28]  )、仮想ページ番号(VADDR[27:141)、ページ・オフセット(PA DDR[13:4J) 、および要求ID (rlD[3+0])に分割されて いる。物理アドレスを生成するためのアルゴリズムでは、スペースIDを使用し て、スペース・テーブル842内の16個のレジスタから1つを選択するように なっている。選択したスペース・レジスタの内容と仮想ページ番号とを組み合わ せて、テーブル索引バッファ(TLB) 844をアクセスするときのアドレス として使用される。34ビツト・アドレスは内容アドレス・タグの慟きをし、バ ッファ844ないの対応するバッファ・レジスタを指定するために使用される。
タグに一致するものが見つかると、18ビツト幅レジスタ値が物理アドレス84 6の上位18ビツトとして得られる。ページ・オフセットと要求IDは物理アド レス846の下位14ビツトとして得られる。
タグに一致するものがテーブル索引バッファ844に見つからないと VMU不 一致が通知される。この場合は、!I!AU 112に維持されている完全ペー ジ・テーブル・データ構造をアクセスする従来のハツシュ・アルゴリズム848 を採用したVMU高速トラップ処理ルーチンを実行させる必要がある。このペー ジ・テーブル850はアーキテクチャ100によって現在使用中のすべてのメモ リ・ページのエントリを含んでいる。ハツシュ・アルゴリズム848は、現在の 仮想ページ変換操作を満たすために必要なページ・テーブル・エントリを判別す る。これらのページ・テーブル・エントリはMAU 112からレジスタ・セッ ト”A“のトラップ・レジスタヘロードされ、そのあと特殊レジスタ移動命令に よってテーブル索引バッファ844へ転送される0例外処理ルーチンから戻ると 、VMU不一致例外を引き起こした命令はIEU 104によって再実行される 。仮想アドレスから物理アドレスへの変換操作は例外を引き起こさないで完了す るはずである。
VMU制御ロジック800はIFU 102およびIEU 104とのデュアル ・インタフェースとなる。準備信号は制御ライン822を経由しテIEU 10 4 ヘ送られ、VMU 10gがアドレス変換のために使用可能であることを通 知する。好適実施例では、VMU 10gは常にIFU 102の変換要求を受 け付ける準備状態にある。IFU 102 i3よびIEU 104は共に、制 御ライン328および804を経由して要求を提示することができる。好適アー キテクチャ100では、IFUは優先してVMU 108をアクセスすることが できる。その結果、ビジー(使用中)制御ライン820は1つだけがIEU 1 04に出力される。
IFU 102およびIEU 104は共に、スペースIDと仮想ページ番号フ ィールドを、それぞれ、制御ライン326および808を経由してVMU制御ロ ジック800へ送る。
さらに、IEU 104は読み書き制御信号を制御信号806でaカする。この 制御信号は、参照された仮想メモリのメモリ・アクセス保護属性を変更するため に、そのアドレスをロード・オペレーションに使用すべきか、ストア・オペレー ションに使用すべきを必要に応じて定義している。仮想アドレスのスペースID と仮想ページ・フィールドはCAMユニット802に渡されて、実際の変換操作 が行われる。ページ・オフセットとExIDフィールドは最終的にIEU 10 4から直接にCCU 106へ送られる。物理ページと要求IDフィールドはア ドレス・ライン836を経由してCAMユニット802へ送られる。テーブル索 引バッファに一致するものが見つかると、ヒツト・ラインと制御出力ライン83 0を経由してVMU制御ロジック・ユニット800に通知される。その結果の1 8ビツト長の物理アドレスはアドレス出力ライン824上に出力される。
VMU制御ロジック・ユニット800は、ライン830からヒツトおよび制御出 力制御信号を受けると、仮想メモリ不一致と仮想メモリ例外制御信号をライン3 34.332上に出力する。仮想メモリ変換不一致とは、テーブル索引バッファ 844内のページ・テーブルIOと一致しなかったことを意味する。その他の変 換エラーはすべて仮想メモリ例外として報告される。
最後に、CAMユニット802内のデータ・テーブルは特殊レジスタ間移動命令 をIEU 104が実行することによって変更することができる。読み書き、レ ジスタ選択、リセット、ロードおよびクリア制御信号はIEU104から制御ラ イン810,812,814,816,818を経由して出力される。 CAM ユニット・レジスタに書くべきデータは特殊アドレス・データ・バス354に接 続されたアドレス・バス808を経由してIEU 104からVMU制御ロジッ ク・ユニット800によって受信される。このデータは初期設定、レジスタ選択 、右よび読み書き制御信号を制御する制御信号と同時にバス836を経由してC AMユニット802へ転送される。その結果、CAMユニット802内のデータ ・レジスタは、より高レベルのオペレーティング・システムで定義されているコ ンテキスト・スイッチを処理するとき必要になるストアのための読出しを含めて 、アーキテクチャ100の動的オペレーションの間に必要に応じて即座に書き出 すことができる。
■、キャッシュ ′ユニット CCU 106用のデータ・インタフェース上のコントロールを第17図に示す 、この場合も、インタフェースはIFU 102用とIEU 104用に別個に 設けている。さらに、論理的に別個になったインタフェースをCCU 106に 設けて、MCU 110と命令とデータの転送が行われる。IFUインタフェー スはアドレス・ライン324上に送出される物理ページ・アドレスと、アドレス ・ライン824上に送出されるVMU変換ページ・アドレスと、制御ライン29 4.296上を別個に転送される要求IDとからなっている。単方向データ転送 バス114は命令セット全体をIFU 102と並列に転送するためのものであ る。最後に、読取り/使用中(read/busy)制御信号と準備(read y)制御信号は制御ライン298.300.302を経由してCCU 106へ 送られる。
同様に、完全な物理アドレスはIEU 102から物理アドレス・バス788を 経由して送られる。要求ExrDはIEU 104のロード/ストア・ユニット との間で制御ライン796を経由して別個に送受される。80ビツト幅の単方向 データ・バスをCCU 106に設けて、IEU 104と結んでいる。しかし 、アーキテクチャ100の好適実施例では、下位の64ビツトだけがIEU 1 04によって使用される。全80ビツト・データ転送バスをCCU 106内に 用意し、サポートしたのは、浮動小数点データ経路660を変更することにより 、I EEE標準754に準拠する浮動小数点オペレーションをサポートするア ーキテクチャ100の将来の実現をサポートするためである。
IEU制御インタフェースは、要求、使用中、準備、読み書きおよび制御信号7 84を通して確立され、IFU102によって使用される対応する制御信号とほ ぼ同じである。ただし、ロード・オペレーションとストア・オペレーションを区 別するために読み書き制御信号が用意されている点が異なる。幅制御信号はIE U 104がCCU 106をアクセスする都度、その間に転送されるバイト数 を指定している。これに対して、命令キャッシュ132のアクセスは、いずれも 、固定128ビット幅データ・フェッチ・オペレーションである。
CCU 106は、命令用キャッシュ132とデータ用キャッシュ134に対し てほぼ従来のキャッシュ制御機能を実装している。好適アーキテクチャ100で は、命令用キャッシュ132は256個の128ビツト幅命令セットををストア できる高速メモリになっている。データ用キャッシュ134は1024個の32 ビツト幅データ・ワードをストアすることができる。命令用キャッシュ132お よびデータ用キャッシュ134の内容から即時に満たすことができない命令とデ ータ要求はMCU 110に引き渡される。命令用キャッシュが不一致(ミス) の場合は、28ビツト幅の物理アドレスがMCU 110ヘアドレス・バス86 0を経由して送られる。要求IDおよびCCU106とMCU 100のオペレ ーションを調整するための追加制御信号は制御ライン862上に送出される。M CUlloがMAU 112の必要な読取りアクセスを調整すると、2つの連続 する64ビツト幅データ転送がMAU 112から直接に命令用キャッシュ13 2へ行われる。データ・バス136が好適アーキテクチャ100において64ビ ット幅であるとすると、2転送が必要である。要求したデータがMCU 110 を経由して返送されるとき、要求オペレーションが保留されていた期間に保持さ れていた要求10も、制御ライン862を経由してCCU 106へ返送される 。
データ用キャッシュ134とMCU 110との間のデータ転送オペレーション は、命令用キャッシュの場合のオペレーションとほぼ同じである。データ・ロー ドとストア・オペレーションは単一バイトを参照できるので、全32ビット幅物 理アドレスがアドレス・バス864を経由してMCU 110へ送られる。イン タフェース制御信号と要求ExIDは制御ライン866を経由して転送される。
双方向64ビット幅データ転送はデータ用キャッシュ・バス138を経由して行 われる。
Vl、 L丘旦圭l亙1 高性能RISCをベースとしたマイクロプロセッサ・アーキテクチャは以上に説 明したとおりである。本発明のアーキテクチャによれば、命令を順序外に実行す ることができ、メインとターゲット命令ストリームのプリフェッチ命令転送経路 を別々に設け、およびプロシージャ命令認識と専用プリフェッチ経路を設けるこ とができる。命令実行ユニットは最適化されているので、最適化された複数のデ ータ処理経路で整数、浮動小数点およびプール演算をサポートすることができ、 またそれぞれの一時レジスタ・ファイルが設けられているので、容易に設定され るマシン状態の状況を正確に維持しながら、順序外の実行と命令取消しを容易に 行うことができる。
従って、上述した説明では、本発明の好適実施例を開示しているが、当業者にと って本発明の範囲内で種々変更および改良することが可能であることは勿論であ る。
1昏しジλヲ 昶1目7トレ入 FIG、JC FIG、8 FIG、9 9kS番+、=;1ダ 特殊しジスタ 特殊しジ入り・ FIG、−12 、、 PCT/JP 921001171国際調査報告 フロントページの続き (72)発明者 ミャヤマ、ヨシュキ アメリカ合衆国 95050 カリフォルニア州 サンタ クララ ランチョ  マコーミック ブールバード 2171 (72)発明者 ガルグ、サンジブ アメリカ合衆(E 94539 カリフォルニア州 フリーセント センティネ ル ドライブ46820 (72)発明者 ハギワラ、ヤスアキ アメリカ合衆国 95050 カリフォルニア州 サンタ クララ センロー  ストリート2250 アパート274 (72)発明者 ワン、ジョハネス アメリカ合衆国 94062 カリフォルニア州 レッドウッド シティ キン グ ストリート25 (72)発明者 ラウ、ティーリ アメリカ合衆国 94306 カリフォルニア州 パロ アルド カレッジ ア ヴエニュ−411アパート イー (72)発明者 トラン、クララ エイチ。
アメリカ合衆国 95130 カリフォルニア州 サン ノゼ メイフィールド  アヴエニュー 2045

Claims (1)

  1. 【特許請求の範囲】 1.プログラム・ストリームを実行するためのマイクロプロセッサであって、 a)命令を命令ストアからフェッチする手段であって、あらかじめ定めた複数の 命令を命令バッファに置いておくフェッチ手段と、 b)複数の命令を同時並行に実行するための実行手段であって、前記命令バッフ ァに結合され、実行すべき命令を選択するための手段と、命令で指定された機能 オペレーションを実行するための複数の機能ユニット手段とを含み、該複数の機 能ユニット手段はそれぞれの命令を実行する際に同時並行オペレーションが可能 である実行手段と を備えたことを特徴とするマイクロプロセッサ。 2.請求の範囲第1項に記載のマイクロプロセッサにおいて、前記実行手段は、 データをストアするためのレジスタ手段と、該レジスタ手段を前記複数の機能ユ ニット手段に並列に結合して前記レジスタ手段と前記複数の機能ユニット手段と の間でデータを転送するための手段とをさらに含むことを特徴とするマイクロプ ロセッサ。 3.請求の範囲第2項に記載のマイクロプロセッサにおいて、前記複数の機能ユ ニット手段はデータに対してあらかじめ定めた機能オペレーション・セットを実 行し、および前記選択手段は前記レジスタ手段に結合されて該複数の機能ユニッ ト手段へ転送すべきあらかじめ定めたデータを選択し、および前記複数の機能ユ ニット手段に結合されて、前記機能ユニット手段のうち前記あらかじめ定めたデ ータに対してそれぞれの機能オペレーションを実行するためのあらかじめ定めた 機能ユニットを選択することを特徴とするマイクロプロセッサ。 4.請求の範囲第3項に記載のマイクロプロセッサにおいて、前記複数の機能ユ ニット手段による機能オペレーションの実行は相互に独立しており、前記複数の 機能ユニット手段の各々は前記選択手段に結合されて、前記複数の機能ユニット 手段のそれぞれの実行ステータス(状況)を示すステータス信号を前記選択手段 に送ることを特徴とするマイクロプロセッサ。 5.請求の範囲第4項に記載のマイクロプロセッサにおいて、前記結合手段は、 複数のデータを前記レジスタ手段から前記複数の機能ユニット手段へ同時並行に 転送し、および複数のデータを前記複数の機能ユニット手段から前記レジスタ手 段へ同時並行に転送するためのバス手段を含むことを特徴とするマイクロプロセ ッサ。 6,プログラム・ストアに結合されたマイクロプロセッサであって、 実行すべき命令ストリームを取り出すための命令フェッチ・ユニットであって、 実行が保留されている複数の命令をストアしておくためのバッファを含む命令フ ェッチ・ユニットと、 前記バッファに結合された命令実行ユニットであって、複数の機能ユニットを含 み、該機能ユニットの各々は、データに対して計算オペレーションを独立に実行 するための手段、前記機能ユニットの各々へデータを供給するための手段であっ て、それぞれのデータを前記複数の機能ユニットのあらかじめ定めたものへ並列 に転送することを可能にする手段、および同時並行に実行すべき保留中の命令の セットを選択するための手段を含む命令実行ユニットと を備えたことを特徴とするマイクロプロセッサ。 7.請求の範囲第6項に記載のマイクロプロセッサにおいて、前記機能ユニット の各々はそれぞれのステータス信号を出力し、前記選択手段は前記ステータス信 号の各々を受信するように前記複数の機能ユニットに結合され、前記選択手段は 前記バッファから選択された命令を実行するために前記複数の機能ユニットの各 々のステータスを決定することを特徴とするマイクロプロセッサ。 8.請求の範囲第7項に記載のマイクロプロセッサにおいて、前記選択手段は前 記バッファから選択された命令の実行を同時並行に開始するために前記複数の機 能ユニットの各々のステータスを決定することを特徴とするマイクロプロセッサ 。 9.請求の範囲第7項に記載のマイクロプロセッサにおいて、前記選択手段は前 記複数の機能ユニットによって同時並行に実行させるための命令を統一して選択 し、それにより前記選択手段は前記複数の機能ユニットによって実行される機能 の変更を容易にサポートし、該変更には、前記機能ユニットのあらかじめ定めた ひとつ的よって実行される機能を変更すること、および前記機能ユニットの追加 機能ユニットを設けることが含まれることを特徴とするマイクロプロセッサ。 10.請求の範囲第7項に記載のマイクロプロセッサにおいて、前記選択手段は 、前記バッファに結合されて、実行すべき命令が使用可能であるかどうかを決定 するための手段と、前記それぞれのステータス信号に応答して、前記複数の機能 ユニットを通した命令の処理の開始をスケジュールするための手段とを含み、該 スケジュール手段は前記決定手段によっての実行のために使用可能であると決定 され、および前記スケジュール手段が前記複数の機能ユニットのうちあらかじめ 定めた機能を実施する少なくとも1つの機能ユニットの使用可能ステータスを決 定した命令をスケジュールし、それにより前記選択手段は前記複数の機能ユニッ トによって実行される機能の変更を容易にサポートし、該変更には、前記機能ユ ニットのあらかじめ定めたひとつによって実行される機能を変更すること、およ び前記スケジュール手段の変更を通してのみ前記機能ユニットの追加機能ユニッ トを設けることが含まれることを特徴とするマイクロプロセッサ。
JP50215393A 1991-07-08 1992-07-07 マイクロプロセッサ及びデータ処理装置 Expired - Fee Related JP3441071B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US72705891A 1991-07-08 1991-07-08
US727,058 1991-07-08

Related Child Applications (7)

Application Number Title Priority Date Filing Date
JP11192704A Division JP2000039996A (ja) 1999-07-07 1999-07-07 ス―パ―スカラ処理システム及びデ―タ処理方法
JP11192703A Division JP2000029698A (ja) 1999-07-07 1999-07-07 ス―パ―スカラ処理システム及びデ―タ処理方法
JP11192702A Division JP2000029697A (ja) 1999-07-07 1999-07-07 ス―パ―スカラ処理装置、デ―タ処理方法及びコンピュ―タシステム
JP2001054373A Division JP2001229023A (ja) 1991-07-08 2001-02-28 スーパースカラ処理システム及びデータ処理方法
JP2001054371A Division JP2001273139A (ja) 1991-07-08 2001-02-28 スーパースカラ処理装置、データ処理方法及びコンピュータシステム
JP2001054372A Division JP2001243067A (ja) 1991-07-08 2001-02-28 スーパースカラ処理システム及びデータ処理方法
JP2002267999A Division JP3627735B2 (ja) 1991-07-08 2002-09-13 スーパースカラープロセッサ及びデータ処理装置

Publications (2)

Publication Number Publication Date
JPH06501124A true JPH06501124A (ja) 1994-01-27
JP3441071B2 JP3441071B2 (ja) 2003-08-25

Family

ID=24921163

Family Applications (16)

Application Number Title Priority Date Filing Date
JP50215393A Expired - Fee Related JP3441071B2 (ja) 1991-07-08 1992-07-07 マイクロプロセッサ及びデータ処理装置
JP2001054372A Withdrawn JP2001243067A (ja) 1991-07-08 2001-02-28 スーパースカラ処理システム及びデータ処理方法
JP2001054371A Withdrawn JP2001273139A (ja) 1991-07-08 2001-02-28 スーパースカラ処理装置、データ処理方法及びコンピュータシステム
JP2001054373A Withdrawn JP2001229023A (ja) 1991-07-08 2001-02-28 スーパースカラ処理システム及びデータ処理方法
JP2002267999A Expired - Lifetime JP3627735B2 (ja) 1991-07-08 2002-09-13 スーパースカラープロセッサ及びデータ処理装置
JP2004265342A Expired - Lifetime JP3724497B2 (ja) 1991-07-08 2004-09-13 スーパースカラープロセッサ及びデータ処理装置
JP2004298617A Expired - Lifetime JP3724499B2 (ja) 1991-07-08 2004-10-13 スーパースカラープロセッサ及びデータ処理装置
JP2004328494A Expired - Lifetime JP3724500B2 (ja) 1991-07-08 2004-11-12 スーパースカラープロセッサ及びデータ処理装置
JP2004360050A Expired - Lifetime JP3724502B2 (ja) 1991-07-08 2004-12-13 スーパースカラープロセッサ及びデータ処理装置
JP2005005252A Expired - Lifetime JP3757982B2 (ja) 1991-07-08 2005-01-12 スーパースカラープロセッサ及びデータ処理装置
JP2005035339A Withdrawn JP2005129087A (ja) 1991-07-08 2005-02-14 スーパースカラープロセッサ及びデータ処理装置
JP2005074144A Expired - Lifetime JP3864976B2 (ja) 1991-07-08 2005-03-16 スーパースカラープロセッサ及びデータ処理装置
JP2005117624A Expired - Lifetime JP3724505B2 (ja) 1991-07-08 2005-04-15 スーパースカラープロセッサ及びデータ処理装置
JP2005142583A Expired - Lifetime JP3724507B2 (ja) 1991-07-08 2005-05-16 スーパースカラープロセッサ及びデータ処理装置
JP2005175209A Expired - Lifetime JP3744534B2 (ja) 1991-07-08 2005-06-15 スーパースカラープロセッサ及びデータ処理装置
JP2006024711A Withdrawn JP2006172496A (ja) 1991-07-08 2006-02-01 スーパースカラープロセッサ及びデータ処理装置

Family Applications After (15)

Application Number Title Priority Date Filing Date
JP2001054372A Withdrawn JP2001243067A (ja) 1991-07-08 2001-02-28 スーパースカラ処理システム及びデータ処理方法
JP2001054371A Withdrawn JP2001273139A (ja) 1991-07-08 2001-02-28 スーパースカラ処理装置、データ処理方法及びコンピュータシステム
JP2001054373A Withdrawn JP2001229023A (ja) 1991-07-08 2001-02-28 スーパースカラ処理システム及びデータ処理方法
JP2002267999A Expired - Lifetime JP3627735B2 (ja) 1991-07-08 2002-09-13 スーパースカラープロセッサ及びデータ処理装置
JP2004265342A Expired - Lifetime JP3724497B2 (ja) 1991-07-08 2004-09-13 スーパースカラープロセッサ及びデータ処理装置
JP2004298617A Expired - Lifetime JP3724499B2 (ja) 1991-07-08 2004-10-13 スーパースカラープロセッサ及びデータ処理装置
JP2004328494A Expired - Lifetime JP3724500B2 (ja) 1991-07-08 2004-11-12 スーパースカラープロセッサ及びデータ処理装置
JP2004360050A Expired - Lifetime JP3724502B2 (ja) 1991-07-08 2004-12-13 スーパースカラープロセッサ及びデータ処理装置
JP2005005252A Expired - Lifetime JP3757982B2 (ja) 1991-07-08 2005-01-12 スーパースカラープロセッサ及びデータ処理装置
JP2005035339A Withdrawn JP2005129087A (ja) 1991-07-08 2005-02-14 スーパースカラープロセッサ及びデータ処理装置
JP2005074144A Expired - Lifetime JP3864976B2 (ja) 1991-07-08 2005-03-16 スーパースカラープロセッサ及びデータ処理装置
JP2005117624A Expired - Lifetime JP3724505B2 (ja) 1991-07-08 2005-04-15 スーパースカラープロセッサ及びデータ処理装置
JP2005142583A Expired - Lifetime JP3724507B2 (ja) 1991-07-08 2005-05-16 スーパースカラープロセッサ及びデータ処理装置
JP2005175209A Expired - Lifetime JP3744534B2 (ja) 1991-07-08 2005-06-15 スーパースカラープロセッサ及びデータ処理装置
JP2006024711A Withdrawn JP2006172496A (ja) 1991-07-08 2006-02-01 スーパースカラープロセッサ及びデータ処理装置

Country Status (8)

Country Link
US (7) US5560032A (ja)
EP (3) EP1526446A3 (ja)
JP (16) JP3441071B2 (ja)
KR (2) KR100299691B1 (ja)
AT (2) ATE291755T1 (ja)
DE (2) DE69233493T2 (ja)
HK (2) HK1014784A1 (ja)
WO (1) WO1993001546A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782521B2 (en) 1992-03-31 2004-08-24 Seiko Epson Corporation Integrated structure layout and layout of interconnections for an instruction execution unit of an integrated circuit chip

Families Citing this family (187)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
DE69233493T2 (de) 1991-07-08 2005-07-28 Seiko Epson Corp. RISC-Prozessor mit erweiterbarer Architektur
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
JP3531166B2 (ja) 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69423376T2 (de) * 1993-04-23 2000-10-12 Advanced Micro Devices Inc Unterbrechungsverarbeitung
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices Inc Superskalarbefehlsdekoder
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US6101597A (en) * 1993-12-30 2000-08-08 Intel Corporation Method and apparatus for maximum throughput scheduling of dependent operations in a pipelined processor
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
JPH0877021A (ja) * 1994-09-01 1996-03-22 Fujitsu Ltd 割込処理装置および方法
JP3543181B2 (ja) * 1994-11-09 2004-07-14 株式会社ルネサステクノロジ データ処理装置
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5802346A (en) * 1995-06-02 1998-09-01 International Business Machines Corporation Method and system for minimizing the delay in executing branch-on-register instructions
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5680578A (en) * 1995-06-07 1997-10-21 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
US5778434A (en) * 1995-06-07 1998-07-07 Seiko Epson Corporation System and method for processing multiple requests and out of order returns
US5822778A (en) * 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5794063A (en) * 1996-01-26 1998-08-11 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5765035A (en) * 1995-11-20 1998-06-09 Advanced Micro Devices, Inc. Recorder buffer capable of detecting dependencies between accesses to a pair of caches
US5787241A (en) * 1995-12-18 1998-07-28 Integrated Device Technology, Inc. Method and apparatus for locating exception correction routines
US5764943A (en) * 1995-12-28 1998-06-09 Intel Corporation Data path circuitry for processor having multiple instruction pipelines
US6092184A (en) * 1995-12-28 2000-07-18 Intel Corporation Parallel processing of pipelined instructions having register dependencies
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
US6688888B1 (en) * 1996-03-19 2004-02-10 Chi Fai Ho Computer-aided learning system and method
US5748934A (en) * 1996-05-31 1998-05-05 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order and that permits multiple precision data words
US5802556A (en) * 1996-07-16 1998-09-01 International Business Machines Corporation Method and apparatus for correcting misaligned instruction data
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5882993A (en) 1996-08-19 1999-03-16 Advanced Micro Devices, Inc. Integrated circuit with differing gate oxide thickness and process for making same
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
US6631454B1 (en) 1996-11-13 2003-10-07 Intel Corporation Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies
US5828868A (en) * 1996-11-13 1998-10-27 Intel Corporation Processor having execution core sections operating at different clock rates
GB2361082B (en) * 1996-11-13 2002-01-30 Intel Corp Processor
US5838941A (en) * 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US6222840B1 (en) * 1996-12-30 2001-04-24 Compaq Computer Corporation Method and system for performing concurrent read and write cycles in network switch
US6016540A (en) * 1997-01-08 2000-01-18 Intel Corporation Method and apparatus for scheduling instructions in waves
US5996063A (en) * 1997-03-03 1999-11-30 International Business Machines Corporation Management of both renamed and architected registers in a superscalar computer system
US6055616A (en) * 1997-06-25 2000-04-25 Sun Microsystems, Inc. System for efficient implementation of multi-ported logic FIFO structures in a processor
US6075931A (en) * 1997-06-25 2000-06-13 Sun Microsystems, Inc. Method for efficient implementation of multi-ported logic FIFO structures in a processor
US6052777A (en) * 1997-06-25 2000-04-18 Sun Microsystems, Inc. Method for delivering precise traps and interrupts in an out-of-order processor
US6094719A (en) * 1997-06-25 2000-07-25 Sun Microsystems, Inc. Reducing data dependent conflicts by converting single precision instructions into microinstructions using renamed phantom registers in a processor having double precision registers
US6058472A (en) * 1997-06-25 2000-05-02 Sun Microsystems, Inc. Apparatus for maintaining program correctness while allowing loads to be boosted past stores in an out-of-order machine
US5884070A (en) * 1997-06-25 1999-03-16 Sun Microsystems, Inc. Method for processing single precision arithmetic operations in system where two single precision registers are aliased to one double precision register
US5948106A (en) * 1997-06-25 1999-09-07 Sun Microsystems, Inc. System for thermal overload detection and prevention for an integrated circuit processor
US6098165A (en) * 1997-06-25 2000-08-01 Sun Microsystems, Inc. Fetching and handling a bundle of instructions comprising instructions and non-complex instructions
US5987594A (en) * 1997-06-25 1999-11-16 Sun Microsystems, Inc. Apparatus for executing coded dependent instructions having variable latencies
US5941977A (en) * 1997-06-25 1999-08-24 Sun Microsystems, Inc. Apparatus for handling register windows in an out-of-order processor
US5870597A (en) * 1997-06-25 1999-02-09 Sun Microsystems, Inc. Method for speculative calculation of physical register addresses in an out of order processor
US6049868A (en) * 1997-06-25 2000-04-11 Sun Microsystems, Inc. Apparatus for delivering precise traps and interrupts in an out-of-order processor
US5898853A (en) * 1997-06-25 1999-04-27 Sun Microsystems, Inc. Apparatus for enforcing true dependencies in an out-of-order processor
US5850533A (en) * 1997-06-25 1998-12-15 Sun Microsystems, Inc. Method for enforcing true dependencies in an out-of-order processor
US5999727A (en) * 1997-06-25 1999-12-07 Sun Microsystems, Inc. Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions
US5978864A (en) * 1997-06-25 1999-11-02 Sun Microsystems, Inc. Method for thermal overload detection and prevention for an intergrated circuit processor
US5875316A (en) * 1997-06-25 1999-02-23 Sun Microsystems, Inc. Method for handling complex instructions in an out-of-order processor
US6189022B1 (en) 1997-08-20 2001-02-13 Honeywell International Inc. Slack scheduling for improved response times of period transformed processes
US6289437B1 (en) * 1997-08-27 2001-09-11 International Business Machines Corporation Data processing system and method for implementing an efficient out-of-order issue mechanism
JP3452771B2 (ja) * 1997-10-02 2003-09-29 富士通株式会社 命令制御システム及びその方法
US6029244A (en) * 1997-10-10 2000-02-22 Advanced Micro Devices, Inc. Microprocessor including an efficient implementation of extreme value instructions
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6442585B1 (en) 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6549930B1 (en) * 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6289441B1 (en) 1998-01-09 2001-09-11 Sun Microsystems, Inc. Method and apparatus for performing multiple branch predictions per cycle
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6226713B1 (en) 1998-01-21 2001-05-01 Sun Microsystems, Inc. Apparatus and method for queueing structures in a multi-level non-blocking cache subsystem
US6065110A (en) * 1998-02-09 2000-05-16 International Business Machines Corporation Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue
US6061785A (en) * 1998-02-17 2000-05-09 International Business Machines Corporation Data processing system having an apparatus for out-of-order register operations and method therefor
US6108761A (en) * 1998-02-20 2000-08-22 Unisys Corporation Method of and apparatus for saving time performing certain transfer instructions
US6157998A (en) * 1998-04-03 2000-12-05 Motorola Inc. Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers
US6393552B1 (en) 1998-06-19 2002-05-21 International Business Machines Corporation Method and system for dividing a computer processor register into sectors
US6336160B1 (en) 1998-06-19 2002-01-01 International Business Machines Corporation Method and system for dividing a computer processor register into sectors and storing frequently used values therein
US6398556B1 (en) 1998-07-06 2002-06-04 Chi Fai Ho Inexpensive computer-aided learning methods and apparatus for learners
US9792659B2 (en) * 1999-04-13 2017-10-17 Iplearn, Llc Computer-aided methods and apparatus to access materials in a network environment
US6360194B1 (en) * 1998-09-08 2002-03-19 Bull Hn Information Systems Inc. Different word size multiprocessor emulation
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US6567840B1 (en) 1999-05-14 2003-05-20 Honeywell Inc. Task scheduling and message passing
US6598118B1 (en) 1999-07-30 2003-07-22 International Business Machines Corporation Data processing system with HSA (hashed storage architecture)
US6516404B1 (en) 1999-07-30 2003-02-04 International Business Machines Corporation Data processing system having hashed architected processor facilities
US6823471B1 (en) 1999-07-30 2004-11-23 International Business Machines Corporation Method for providing high availability within a data processing system via a reconfigurable hashed storage subsystem
US6446165B1 (en) 1999-07-30 2002-09-03 International Business Machines Corporation Address dependent caching behavior within a data processing system having HSA (hashed storage architecture)
US6658556B1 (en) * 1999-07-30 2003-12-02 International Business Machines Corporation Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction
US6470442B1 (en) 1999-07-30 2002-10-22 International Business Machines Corporation Processor assigning data to hardware partition based on selectable hash of data address
US6449691B1 (en) 1999-07-30 2002-09-10 International Business Machines Corporation Asymmetrical cache properties within a hashed storage subsystem
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6567975B1 (en) * 1999-11-08 2003-05-20 Sun Microsystems, Inc. Method and apparatus for inserting data prefetch operations using data flow analysis
GB2362730B (en) * 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
US6601162B1 (en) * 2000-01-19 2003-07-29 Kabushiki Kaisha Toshiba Processor which executes pipeline processing having a plurality of stages and which has an operand bypass predicting function
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6754807B1 (en) 2000-08-31 2004-06-22 Stmicroelectronics, Inc. System and method for managing vertical dependencies in a digital signal processor
US6671799B1 (en) 2000-08-31 2003-12-30 Stmicroelectronics, Inc. System and method for dynamically sizing hardware loops and executing nested loops in a digital signal processor
US7079133B2 (en) * 2000-11-16 2006-07-18 S3 Graphics Co., Ltd. Superscalar 3D graphics engine
US6981130B2 (en) * 2001-09-25 2005-12-27 Texas Instruments Incorporated Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel
US7013382B1 (en) * 2001-11-02 2006-03-14 Lsi Logic Corporation Mechanism and method for reducing pipeline stalls between nested calls and digital signal processor incorporating the same
JP4272371B2 (ja) * 2001-11-05 2009-06-03 パナソニック株式会社 デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US6876559B1 (en) * 2002-02-01 2005-04-05 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US7120780B2 (en) * 2002-03-04 2006-10-10 International Business Machines Corporation Method of renaming registers in register file and microprocessor thereof
US7000095B2 (en) * 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US7437532B1 (en) 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
US7267620B2 (en) * 2003-05-21 2007-09-11 Taylor Made Golf Company, Inc. Golf club head
GB2402760B (en) * 2003-06-12 2006-01-11 Advanced Risc Mach Ltd Improvements in flexibility of use of a data processing apparatus
USH2212H1 (en) * 2003-09-26 2008-04-01 The United States Of America As Represented By The Secretary Of The Navy Method and apparatus for producing an ion-ion plasma continuous in time
US7096345B1 (en) 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7406406B2 (en) * 2004-12-07 2008-07-29 Bull Hn Information Systems Inc. Instructions to load and store containing words in a computer system emulator with host word size larger than that of emulated machine
US7308527B2 (en) * 2005-01-24 2007-12-11 International Business Machines Corporation System for indicating a plug position for a memory module in a memory system
US20060179286A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation System and method for processing limited out-of-order execution of floating point loads
US7490254B2 (en) * 2005-08-02 2009-02-10 Advanced Micro Devices, Inc. Increasing workload performance of one or more cores on multiple core processors
US7328330B2 (en) * 2005-08-16 2008-02-05 International Business Machines Corporation Queue design supporting dependency checking and issue for SIMD instructions within a general purpose processor
EP2541431A1 (en) * 2005-10-07 2013-01-02 Altera Corporation Data input for systolic array processors
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7913069B2 (en) * 2006-02-16 2011-03-22 Vns Portfolio Llc Processor and method for executing a program loop within an instruction word
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7647486B2 (en) 2006-05-02 2010-01-12 Atmel Corporation Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US8966228B2 (en) * 2009-03-20 2015-02-24 Arm Limited Instruction fetching following changes in program flow
US9329996B2 (en) * 2011-04-27 2016-05-03 Veris Industries, Llc Branch circuit monitor with paging register
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US9454371B2 (en) 2011-12-30 2016-09-27 Intel Corporation Micro-architecture for eliminating MOV operations
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
KR101756966B1 (ko) 2015-03-25 2017-07-11 전북대학교 산학협력단 계면개질제 및 이를 이용한 전자소자
KR102593320B1 (ko) 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10671395B2 (en) * 2017-02-13 2020-06-02 The King Abdulaziz City for Science and Technology—KACST Application specific instruction-set processor (ASIP) for simultaneously executing a plurality of operations using a long instruction word
US10496596B2 (en) * 2017-02-13 2019-12-03 King Abdulaziz City For Science And Technology Application specific instruction-set processor (ASIP) architecture having separated input and output data ports
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
CN113609904B (zh) * 2021-06-30 2024-03-29 杭州电子科技大学 一种基于动态全局信息建模和孪生网络的单目标跟踪算法
US11599358B1 (en) * 2021-08-12 2023-03-07 Tenstorrent Inc. Pre-staged instruction registers for variable length instruction set machine
CN113778528B (zh) * 2021-09-13 2023-03-24 北京奕斯伟计算技术股份有限公司 指令发送方法、装置、电子设备及存储介质

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3346851A (en) * 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US4003462A (en) * 1976-02-06 1977-01-18 Perrott L F Log sorting system
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4296470A (en) * 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
JPS5616248A (en) * 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
US4434461A (en) 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
JPS5757345A (en) * 1980-09-24 1982-04-06 Toshiba Corp Data controller
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
US4434641A (en) * 1982-03-11 1984-03-06 Ball Corporation Buckle resistance for metal container closures
US4410393A (en) * 1982-06-24 1983-10-18 The United States Of America As Represented By The Secretary Of The Army Preparation of steel surfaces for adhesive bonding by etching with H3 PO4 -polyhydric alcohol mixture
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4800486A (en) * 1983-09-29 1989-01-24 Tandem Computers Incorporated Multiple data patch CPU architecture
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPS60225943A (ja) * 1984-04-25 1985-11-11 Hitachi Ltd 例外割込み処理方式
US4766564A (en) * 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
JPH0769818B2 (ja) 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
CA1242803A (en) * 1984-12-27 1988-10-04 Nobuhisa Watanabe Microprocessor with option area facilitating interfacing with peripheral devices
JPH0762823B2 (ja) * 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JPH0810430B2 (ja) 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
JPS63172343A (ja) 1987-01-12 1988-07-16 Hitachi Ltd 命令先取り方式
DE3702899A1 (de) * 1987-01-31 1988-08-11 Porsche Ag Brennraum fuer eine hubkolben-brennkraftmaschine
JPS63284648A (ja) * 1987-05-18 1988-11-21 Fujitsu Ltd キャッシュメモリ制御方法
JPS63318634A (ja) 1987-06-23 1988-12-27 Nec Corp 命令先取り方式
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
JPS6436336U (ja) 1987-08-28 1989-03-06
US5003462A (en) * 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
JPH0222736A (ja) 1988-07-12 1990-01-25 Nec Corp 中央処理装置
JPH0673105B2 (ja) 1988-08-11 1994-09-14 株式会社東芝 命令パイプライン方式のマイクロプロセッサ
JPH0287229A (ja) 1988-09-24 1990-03-28 Nec Corp 実行命令の先取り制御方式
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
JPH0769824B2 (ja) 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式
GB8828817D0 (en) * 1988-12-09 1989-01-18 Int Computers Ltd Data processing apparatus
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5226166A (en) 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5293500A (en) 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
JPH0769825B2 (ja) 1989-02-10 1995-07-31 三菱電機株式会社 並列処理装置
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
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
JP3153906B2 (ja) 1989-02-24 2001-04-09 アドヴァンスド マイクロ デヴァイセス インコーポレイテッド コンピュータの分散型パイプライン制御装置及び方法
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0314025A (ja) * 1989-06-13 1991-01-22 Nec Corp 命令実行制御方式
DE69032812T2 (de) 1989-07-07 1999-04-29 Hitachi Ltd Vorrichtung und Verfahren zur parallelen Verarbeitung
DE69031257T2 (de) * 1989-09-21 1998-02-12 Texas Instruments Inc Integrierte Schaltung mit einem eingebetteten digitalen Signalprozessor
JP2856784B2 (ja) 1989-10-27 1999-02-10 株式会社東芝 電子計算機
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
JPH03147134A (ja) 1989-11-02 1991-06-24 Oki Electric Ind Co Ltd 命令シーケンス制御装置
JP2814683B2 (ja) 1989-11-08 1998-10-27 日本電気株式会社 命令処理装置
DE3940450A1 (de) 1989-12-07 1991-06-13 Voith Gmbh J M Rakeleinrichtung
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
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
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
JP2878792B2 (ja) 1990-06-22 1999-04-05 株式会社東芝 電子計算機
JP2877468B2 (ja) 1990-08-09 1999-03-31 株式会社東芝 電子計算機
DE69130723T2 (de) * 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
USH1291H (en) * 1990-12-20 1994-02-01 Hinton Glenn J Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
JP3141429B2 (ja) 1991-04-11 2001-03-05 ソニー株式会社 記録再生装置の映像調整装置
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
DE69233493T2 (de) * 1991-07-08 2005-07-28 Seiko Epson Corp. RISC-Prozessor mit erweiterbarer Architektur
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
DE69224887T2 (de) 1991-07-08 1998-07-23 Seiko Epson Corp Single-chip seitendrucker-steuerschaltung
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
JPH06501805A (ja) 1991-07-08 1994-02-24 トランスメタ コーポレイション 複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャ
WO1993001563A1 (en) 1991-07-08 1993-01-21 Seiko Epson Corporation Risc microprocessor architecture with isolated architectural dependencies
JP3333196B2 (ja) 1991-07-08 2002-10-07 セイコーエプソン株式会社 トラップ処理方法
JPH0820949B2 (ja) 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
JPH07504773A (ja) 1992-03-18 1995-05-25 セイコーエプソン株式会社 マルチ幅のメモリ・サブシステムをサポートするためのシステム並びに方法
IT1259012B (it) * 1992-07-27 1996-03-11 Alcatel Italia Metodo e circuiti per la riduzione della potenza di picco del segnale filtrato trasmesso in un collegamento di tipo numerico
JP3147134B2 (ja) 1992-11-30 2001-03-19 三菱マテリアル株式会社 チップ型サーミスタ及びその製造方法
JP3218524B2 (ja) 1993-12-22 2001-10-15 村田機械株式会社 ワークホルダーのはみ出し検出装置
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US7897110B2 (en) 2005-12-20 2011-03-01 Asml Netherlands B.V. System and method for detecting at least one contamination species in a lithographic apparatus

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782521B2 (en) 1992-03-31 2004-08-24 Seiko Epson Corporation Integrated structure layout and layout of interconnections for an instruction execution unit of an integrated circuit chip
US7174525B2 (en) 1992-03-31 2007-02-06 Seiko Epson Corporation Integrated structure layout and layout of interconnections for an instruction execution unit of an integrated circuit chip
US7555738B2 (en) 1992-03-31 2009-06-30 Seiko Epson Corporation Integrated structure layout and layout of interconnections for an instruction execution unit of an integrated circuit chip

Also Published As

Publication number Publication date
KR930702720A (ko) 1993-09-09
US7555632B2 (en) 2009-06-30
JP2005243049A (ja) 2005-09-08
JP2005044382A (ja) 2005-02-17
EP0547247A1 (en) 1993-06-23
JP2005209231A (ja) 2005-08-04
US5832292A (en) 1998-11-03
EP0886209A3 (en) 2001-10-10
US7028161B2 (en) 2006-04-11
US20060149925A1 (en) 2006-07-06
US6282630B1 (en) 2001-08-28
EP1526446A2 (en) 2005-04-27
EP0547247B1 (en) 2001-04-04
DE69233493T2 (de) 2005-07-28
KR100299691B1 (ko) 2001-11-22
KR100335750B1 (ko) 2002-05-09
JP2005235232A (ja) 2005-09-02
JP2005050369A (ja) 2005-02-24
JP3864976B2 (ja) 2007-01-10
JP2005327309A (ja) 2005-11-24
US20070101103A1 (en) 2007-05-03
EP0886209B1 (en) 2005-03-23
JP3724497B2 (ja) 2005-12-07
JP3744534B2 (ja) 2006-02-15
JP3724500B2 (ja) 2005-12-07
ATE200357T1 (de) 2001-04-15
DE69231762T2 (de) 2001-07-26
DE69233493D1 (de) 2005-04-28
EP1526446A3 (en) 2007-04-04
US6038653A (en) 2000-03-14
WO1993001546A1 (en) 1993-01-21
JP3724499B2 (ja) 2005-12-07
JP3724502B2 (ja) 2005-12-07
HK1019251A1 (en) 2000-01-28
JP2005100473A (ja) 2005-04-14
JP3724507B2 (ja) 2005-12-07
JP2003114798A (ja) 2003-04-18
JP3757982B2 (ja) 2006-03-22
JP2005174350A (ja) 2005-06-30
EP0886209A2 (en) 1998-12-23
US5560032A (en) 1996-09-24
US7941635B2 (en) 2011-05-10
HK1014784A1 (en) 1999-09-30
JP2005122737A (ja) 2005-05-12
JP3724505B2 (ja) 2005-12-07
JP2001243067A (ja) 2001-09-07
US20020016903A1 (en) 2002-02-07
JP3627735B2 (ja) 2005-03-09
DE69231762D1 (de) 2001-05-10
JP2001273139A (ja) 2001-10-05
JP2005129087A (ja) 2005-05-19
JP2006172496A (ja) 2006-06-29
JP3441071B2 (ja) 2003-08-25
JP2001229023A (ja) 2001-08-24
ATE291755T1 (de) 2005-04-15

Similar Documents

Publication Publication Date Title
JPH06501124A (ja) 拡張可能riscマイクロプロセッサ・アーキテクチャ
JP3729202B2 (ja) スーパースカラーマイクロプロセッサ
JP3552995B2 (ja) データ処理装置
JPH06502034A (ja) アーキテクチャ上の依存関係を隔離したriscマイクロプロセッサ・アーキテクチャ
JP2000039996A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法
JP2000122867A (ja) トラップ処理方法
JP2000122865A (ja) 命令実行処理方法
JP2000029697A (ja) ス―パ―スカラ処理装置、デ―タ処理方法及びコンピュ―タシステム
JP2000122866A (ja) デ―タ処理装置
JP2000029698A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090620

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100620

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 9

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

LAPS Cancellation because of no payment of annual fees
R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350