JP3333196B2 - トラップ処理方法 - Google Patents
トラップ処理方法Info
- Publication number
- JP3333196B2 JP3333196B2 JP50215493A JP50215493A JP3333196B2 JP 3333196 B2 JP3333196 B2 JP 3333196B2 JP 50215493 A JP50215493 A JP 50215493A JP 50215493 A JP50215493 A JP 50215493A JP 3333196 B2 JP3333196 B2 JP 3333196B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- unit
- register
- address
- control
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Devices For Executing Special Programs (AREA)
Description
し、さらに具体的には、マイクロプロセッサにおける割
り込みと例外の処理に関する。
米国特許出願07/726,942号の明細書の記載に基づくもの
であって、当該米国特許出願の番号を参照することによ
って当該米国特許出願の明細書の記載内容が本明細書の
一部分を構成するものとする。
米国特許出願され、係属中のものであるが、これらの米
国特許出願に開示されており、かつそれぞれに対応して
出願された日本での特許出願に開示されている事項は、
その出願番号を本明細書で引用することにより本明細書
の一部を構成するものとする。 1.発明の名称「高性能RISCマイクロプロセッサ・アーキ
テクチャ」(High−Performance RISC Microprocesso
r Architecture)SMOS 7984 MCF/GBR,米国特許出願
第07/727,006号、1991年7月8日出願、発明者Le T.Ng
uyen他、およびこれに対応する特願平5−502150(特表
平6−501122号公報)。 2.発明の名称「拡張可能RISCマイクロプロセッサ・アー
キテクチャ」(Extensible RISC Microprocessor Ar
chitecture)SMOS 7985 MCF/GBR,米国特許出願第07/7
27,058号、1991年7月8日出願、発明者Le T.Nguyen
他、およびこれに対応する特願平5−502153(特表平6
−501124号公報)。 3.「アーキテクチャ上の依存関係を隔離したRISCマイク
ロプロセッサ・アーキテクチャ」(RISC Microprocess
or Architecture with isolated Architectural D
ependencies)SMOS 7987 MCF/GBR,米国特許出願第07/
726,744号、1991年7月8日出願、発明者Le T.Nguyen
他、およびこれに対応する特願平5−502152(特表平6
−502034号公報)。 4.発明の名称「複数型レジスタ・セットを採用したRISC
マイクロプロセッサ・アーキテクチャ」(RISC Microp
rocessor Architecture Implementing Multiple Ty
ped Register Sets)SMOS 7988 MCF/GBR/RCC,米国
特許出願第07/726,773号、1991年7月8日出願、発明者
Sanjiv Garg他、およびこれに対応する特願平5−5024
03(特表平6−501805号公報)。 5.発明の名称「シングル・チップ・ページ・プリンタ・
コントローラ」(Single Chip Page Printer Contr
oller)SMOS 7991 MCF/GBR,米国特許出願第07/726,92
9号、1991年7月8日出願、発明者Derek J.Lentze他、
およびこれに対応する特願平5−502149(特表平6−50
1586号公報)。 6.発明の名称「複数の異種プロセッサをサポートするこ
とのできるマイクロプロセッサ・アーキテクチャ」(Mi
croprocessor Architecture Capable of Supportin
g Multiple Heterogeneous Processors)SMOS 7992
MCF/WMB,米国特許出願第07/726,893号、1991年7月8
日出願、発明者Derek J.Lentze他、およびこれに対応
する特願平5−502151(特表平6−501123号公報)。
ー)を変える命令が現れるか、例外が発生するのでなけ
れば、命令は順序通りに実行されるのが普通である。例
外に関しては、特定の事象が発生したとき、その事象が
命令ストリームの中の特定の命令に関連して起こったか
否かに関係なく、制御の流れを変更する機構が組み込ま
れている。例えば、マイクロプロセッサは割込み要求
(IRQ)リード(lead)を含んでいる場合があり、この
リードが外部デバイスによってアクティベート(活動
化)されると、マイクロプロセッサは次に実行すべき命
令のアドレスの表示を含めて、マシンの現在状態(ステ
ート)に関するある種の情報をセーブしておき、そのあ
と、直ちに割込みハンドラ(lnterrupt handler)に制
御権(コントロール)を渡すと、割込みハンドラはある
所定のアドレスから開始するようになっている。別の例
では、ある特定の命令の実行中に、ゼロによる除算(di
vide−by−zero)などの例外エラーが発生すると、マイ
クロプロセッサはマシンの現在状態に関する情報をセー
ブしてから、制御権を例外ハンドラに渡すようになって
いる。また、別の例では、ある種のマイクロプロセッサ
は、それぞれの命令セットに「ソフトウェア・トラッ
プ」命令を用意している。この場合も、マイクロプロセ
ッサはマシンの現在状態に関する情報をセーブしてか
ら、制御権を例外ハンドラに渡すようになっている。本
明細書で用いられている割込み、トラップ、障害および
例外の用語は交換可能に使用されている。
すると、マイクロプロセッサは制御権を同じ割込みハン
ドラの入口点(entry point)に渡すようになってい
る。複数の外部デバイスが存在し、それらのデバイスが
割込み要求リードをアクティベートできる場合は、割込
みハンドラはどのデバイスが割込みを引き起こしたかを
まず判断してから、その特定デバイスを処理するコード
部分に制御権を渡さなければならない。例えば、インテ
ル8048マイクロプロセッサはINT入力を含んでおり、こ
れがアクティベートされると、マイクロコントローラは
制御権を絶対メモリ・ロケーション3へ渡すようになっ
ている。また、8048はRESET入力も含んでおり、これが
アクティベートされると、マイクロコントローラは制御
権を絶対メモリ・ロケーション0へ渡すようになってい
る。また、内部タイマ/カウンタも含んでおり、これが
割込みを引き起こすと制御権が絶対メモリ・ロケーショ
ン7へ渡されるようになっている。
「割込みレベル」リードを含んでいる。これらのマイク
ロプロセッサでは、外部デバイスが割込み要求リードを
アクティベートするとき、その特定のデバイスに固有の
トラップ番号も割込みレベル・ライン上に送出する。こ
れを受けて、マイクロプロセッサの内部ハードウェアは
制御権、つまり、「ベクトル」を各々が異なるトラップ
番号に対応している複数の割込みハンドラの1つに渡
す。同様に、いくつかのマイクロプロセッサでは、内部
で発生した例外を処理するように書かれたすべてのルー
チンに対して1つだけの入口点があらかじめ定められて
おり、他のマイクロプロセッサでは、発生する可能性の
ある内部例外の各特定のタイプに対して定義されたトラ
ップ番号に依存するルーチンへ自動的にベクトルを渡す
機構が備わっている。
ルが渡される場合、該当のハンドラの入口点を判断する
ために、いくつかの手法が用いられていた。ある手法で
は、特定のテーブル・ベース・アドレスを始点として、
アドレス・テーブルが作成されており、そのベース・ア
ドレスは固定しているか、ユーザが定義できるようにな
っている。テーブルの各エントリ(項目)はアドレスの
長さと同じ長さに、例えば、2バイトまたは4バイト長
になっており、対応するトラップ番号に対する入口点を
収容していた。割込みまたは例外が発生すると、マイク
ロプロセッサはまずテーブルのベース・アドレスを判断
してから、トラップ番号をm倍したものを加え(ただ
し、mは各エントリ内のバイト数である)、そのあと、
求めたアドレスにストアされている情報をプログラム・
カウンタ(PC)にロードし、テーブル・エントリに指定
されているアドレスから始まるルーチンへ制御権を渡し
ていた。
けをストアするのではなく、ブランチ命令全体をテーブ
ル内の各エントリにストアしていた。各エントリ内のバ
イト数はブランチ命令のバイト数と等しくなっていた。
割込みまたは例外を受け取ると、マイクロプロセッサは
まずテーブル・ベース・アドレスを判断し、トラップ番
号をm倍したものを加え、その結果をプログラム・カウ
ンタにロードするだけであった。そのあと最初に実行さ
れる命令はテーブル内のブランチ命令であり、最終的に
制御権が該当の例外ハンドラに渡されていた。
備的オペレーションを実行してからでなければ、ハンド
ラのオペレーション部分は実行を開始できないために遅
延(待ち時間)が起こっている。最初に挙げた手法で
は、入口点アドレスを最初にテーブルから取り出してか
らでなければ、入口点アドレスをプログラム・カウンタ
にロードできなかった。2番目に挙げた手法では、予備
的ブランチ命令を取り出して、実行させてからでなけれ
ば、ハンドラの重要部分は実行を開始できなかった。ト
ラップ番号をm倍したものをテーブル・ベース・アドレ
スに加える計算時に起こる加算の遅延は、ベース・アド
レスからの上位ビットを下位ビットとしてトラップ番号
を連結し、そのあとにlog2m個のゼロ・ビットを続ける
だけで回避できるが、上述した予備的オペレーションが
原因で起こる遅延はそのまま残っていた。このような遅
延は、ある種の割込みを処理するためのレスポンス・タ
イム(応答時間)を重要とするシステムでは、支障とな
るおそれがある。
るもう1つの問題は、トラップ・ハンドラがメイン命令
フローに戻ったとき、「マシンの状態」(state of m
achine)を復元できるようにストアしておく必要がある
情報量に関係するものである。できるだけ多くの情報を
ストアする必要性と、トラップ・ハンドラへディスパッ
チするときの遅延を最小にする必要性とはトレードオフ
の関係にある。特に、オン・チップ・データ・レジスタ
については、オン・チップ・データ・レジスタはどれも
ストアしておかないで、データを各レジスタに一時的に
ストアすることをハンドラに任せておき、そのあとでハ
ンドラが独自の目的に使用できるようにする手法が用い
られていた。この場合、ハンドラは戻る前にレジスタに
入っているデータを置き換える必要があった。この場合
には、これらのレジスタをストアし、復元する必要があ
るので、ハンドラのオペレーションが大幅に遅くなる可
能性がある。別の手法では、ハードウェアがレジスタの
内容をスタック上に自動的にストアしてから、制御権を
ハンドラに渡すようにしている。この手法も、ハードウ
ェアを複雑化すると共に、ハンドラへの制御権移動が大
幅に遅延化する可能性があるので、不適切である。従っ
て、上述したベクトル手法による場合は、トラップ・ハ
ンドラの呼出し時にレジスタの内容を保護するために既
存の手法で起こる遅延は、高性能マイクロプロセッサで
は許容し得ないものである。
の多くを解消するマイクロプロセッサ・アーキテクチャ
が採用されている。特に、「高速トラップ」例外ディス
パッチ手法が採用されている。この手法によれば、ハン
ドラ全体を単一のベクトル・アドレス・テーブル・エン
トリにストアしておくことができる。各テーブル・エン
トリには、少なくとも2個、好ましくはそれ以上の命令
を収めておくだけのスペースがあるので、高速トラップ
が起こったとき、マイクロプロセッサはトラップ番号を
m倍したものをベース・アドレスに連結することで求め
たアドレスへブランチするだけでよいようになってい
る。入口点アドレスをテーブルからフェッチしたり、予
備的ブランチ命令をフェッチして実行するために必要な
時間的遅れは、除去される。マイクロプロセッサには、
重要度の低いタイプのトラップの場合には、時間効率の
劣る他のベクトル手法を取り入れることも可能である。
ッサは割込み状態に入り、いくつかのシャドウ・レジス
タを自動的にフォアグランド(前景)にシフトし対応す
る前景レジスタ・セットをバックグランド(背景)にシ
フトする。レジスタ内容は転送されず、その代わりに、
シャドウ・レジスタが通常のレジスタの代わりに使用可
能にされるだけである。従って、ハンドラは、メイン命
令ストリームのために必要なデータを壊すかどうかを気
にすることなく即時に使用可能なレジスタ・セットをも
つことになる。
8)、発明の名称「高性能RISCマイクロプロセッサ・ア
ーキテクチャ」(High−Performance RISC Microproc
essor Architecture)(特表平6−501122号公報)に
は、その実行時前に命令をプリフェッチする高度マイク
ロプロセッサが命令プリフェッチ要求の順序外の返却を
処理できること、同一の実行時の間に2つ以上の命令を
実行できること、および命令ストリームにおける命令の
列に対して順序外で命令を実行することもできることが
説明されている。本発明の別の形態では、命令の実行の
前と実行時の間に命令に対して発生した同期例外の正確
さを保つためのメカニズムが組み込まれている。
アーキテクチャには、さらに、メイン命令フローの中の
プロシージャ命令またはエミュレーション命令から呼び
出された別のプロシーレジャ命令フローを処理するため
の機構が組み込まれている。プロシージャ命令フローへ
の制御権の移動は、メイン命令フローの中ですでにプリ
フェッチされたどの命令もフラッシュすることなく、別
に設けたエミュレーション・プリフェッチ待ち行列によ
って行われる。本発明の別の形態によれば、割込み状態
は、プロセッサがメイン命令ストリームから実行されて
いるか、またはプロシージャ命令ストリームから実行さ
れているかに関係なく、使用可能のままになっており、
プロセッサは、トラップから戻るときどちらの命令スト
リームへ戻るべきかを示した標識をもっている。さら
に、メイン命令ストリーム用とエミュレーション命令ス
トリーム用に別個のプリフェッチ・プログラム・カウン
タが維持されており、プロセッサはトラップ・ハンドラ
が呼び出されたとき現命令ストリームからプリフェッチ
PCだけをストアし、ハンドラが戻るときプリフェッチPC
を正しいプリフェッチ・プログラム・カウンタに復元す
る。
る。 I.マイクロプロセッサ・アーキテクチャの概要 II.命令フェッチ・ユニット A) IFUデータ経路 B) IFU制御経路 C) IFU/IEU制御インタフェース D) PCロジック・ユニットの詳細 1)PFおよびExPC制御/データ・ユニットの詳
細 2)PC制御アルゴリズムの詳細 E) 割込みおよび例外処理 1) 概要 2) 非同期割込み 3) 同期例外 4) ハンドラ・ディスパッチとリターン 5) ネスト 6) トラップー覧表 III.命令実行ユニット A) IEUデータ経路の詳細 1) レジスタ・アレイ・ユニットの詳細 2) 整数データ経路の詳細 3) 浮動小数点データ経路の詳細 4) ブール・レジスタ・データ経路の詳細 B) ロード/ストア制御ユニット C) IEU 制御経路の詳細 1) Eデコード・ユニットの詳細 2) キャリー・チェッカ・ユニットの詳細 3) データ依存関係チェッカ・ユニットの詳
細 4) レジスタ改名ユニットの詳細 5) 命令発行ユニットの詳細 6) 完了制御ユニットの詳細 7) 退避制御ユニットの詳細 8) 制御フロー制御ユニットの詳細 9) バイパス制御ユニットの詳細 IV.仮想メモリ制御ユニット V. キャッシュ制御ユニット VI.要約および結論
のである。命令フェッチ・ユニット(IFU)102と命令実
行ユニット(IEU)104は、アーキテクチャ100の中心と
なる機能要素である。仮想メモリ・ユニット(VMU)10
8、キャッシュ制御ユニット(CCU)106、およびメモリ
制御ユニット(MCU)110は、IFU102とIEU104の機能を直
接にサポートするためのものである。また、メモリ・ア
レイ・ユニット(MAU)112は基本的要素として、アーキ
テクチャ100を動作させるためのものである。もっと
も、MAU112はアーキテクチャ100の1つの一体的なコン
ポーネントとして直接的に存在しない。つまり、本発明
の好適実施例では、IFU102、IEU104、VMU108、CCU106、
およびMCU110は従来の0.8ミクロン設計ルールの低電力C
MOSプロセスを利用してシングル・シリコン・チップ上
に実装され、約1,200,000個のトランジスタから構成さ
れている。アーキテクチャ100の標準プロセッサまたは
システムのクロック速度は40MHzである。しかし、本発
明の好適実施例によれば、プロセッサの内部クロック速
度は160MHzである。
る実行が保留されている間命令をバッファに置いてお
き、一般的には、次の命令をフェッチするとき使用され
る次の仮想アドレスを計算することである。
固定されている。命令セット、つまり、4個の命令から
なる「バケット」(bucket)は、CCU106内の命令用キャ
ッシュ132から128ビット幅の命令バス114を経由してIFU
102によって同時にフェッチされる。命令セットの転送
は、制御ライン116経由で送られてきた制御信号によっ
て調整されて、IFU102とCCU106間で行われる。フェッチ
される命令セットの仮想アドレスは、IFU仲裁、制御お
よびアドレス共用バス118経由でIFU102から出力され、
さらにIEU104とVMU108間を結合する仲裁、制御およびア
ドレス共用バス120上に送出される。VMU108へのアクセ
スの仲裁(arbitration)は、IFU102とIEU104の両方がV
MU108を共通の共用資源として利用することから行われ
る。本発明の好適実施例では、仮想アドレスの物理ペー
ジ内のアドレスを定義する下位ビットは、IFU102から制
御ライン116を経由して直接にキャッシュ制御ユニット
(CCU)106へ転送される。IFU102から与えられる仮想ア
ドレスの仮想上位ビットは仲裁、制御およびアドレス共
用バス118、120のアドレス部分によってVMU108へ送ら
れ、そこで対応する物理ページ・アドレスに変換され
る。IFU102では、この物理ページ・アドレスは、変換要
求がVMU108に出されたあと内部プロセッサ・クロック・
サイクルの1/2の間に、VMU108から制御ライン122経由で
直接にキャッシュ制御ユニット(CCU)106へ転送され
る。
命令ストリーム・バス124経由でIEU104に渡される。制
御信号は、制御ライン126を介してIFU102とIEU104間で
やりとりされる。さらに、ある種の命令フェッチ・アド
レス、例えば、IEU104内に存在するレジスタ・アレイ・
ユニットへのアクセスを必要とするアドレスは、制御ラ
イン126内のターゲット・アドレス・リターン・バスを
経由してIFU102へ送り返される。
134との間で80ビット幅双方向データ・バス130を通して
データをストアし、データを取り出す。IEUがデータ・
アクセスするときの物理アドレス全体は制御バス128の
アドレス部分によってCCU106へ渡される。また、制御バ
ス128を通して、データ転送を管理するための制御信号
をIEU104とCCU106との間でやりとりすることもできる。
IEU104は、仮想データ・アドレスをCCU106へ渡すのに適
した物理データ・アドレスに変更するための資源として
VMU108を使用する。データ・アドレスの仮想化部分は、
仲裁、制御およびアドレス共用バス120を経由してVMU10
8へ渡される。IFU102に対するオペレーションと異な
り、VMU108は対応する物理アドレスを仲裁、制御および
アドレス共用バス120経由でIEU104へ返却する。アーキ
テクチャ100の好適実施例では、IEU104は物理アドレス
を使用して、ロード/ストア・オペレーションが正しい
プログラム・ストリーム順序で行われていることを確か
めている。
用キャッシユ132とデータ用キャッシュ134のどちらか該
当する方から満足できるかどうかを判断する従来のハイ
レベル機能を備えている。アクセス要求が命令用キャッ
シュ132またはデータ用キャッシュ134へアクセスするこ
とで正しく満足できる場合は、CCU106はバス114、130を
経由するデータ転送を調整して、その転送を行う。
用キャッシュ132またはデータ用キャッシュ134のどちら
でも満足できない場合、CCU106は、対応する物理アドレ
スをMCU110へ渡すと共に、MAU112が各要求ごとにCCU106
のソースまたは宛先キャッシュ132、134に要求している
のは読取りアクセスであるか書込みアクセスであるかを
識別するのに十分な制御情報、およびIFU102またはIEU1
04から出された最終的データ要求と要求オペレーション
を関係づけるための追加識別情報を一緒に渡す。
142を備えており、このユニットは単方向データ・バス1
36によってCCU106の命令用キャッシュ132に接続され、
双方向データ・バス138によってデータ用キャッシュ134
に接続されている。ポート・スイッチ・ユニット142は
基本的には大きなマルチプレクサであり、制御バス140
から得た物理アドレスを複数のポート(P0−Pn)1460-n
のいずれかへ送ることを可能にし、また、ポートからデ
ータ・バス136、138へのデータの双方向転送を可能にす
る。MCU110によって処理される各メモリ・アクセス要求
は、MAU112をアクセスするとき要求されるメイン・シス
テム・メモリ・バス162へのアクセスを仲裁する目的で
ポート1460-nの1つと関連づけられる。データ転送の接
続が確立されると、MCU110は制御情報を制御バス140経
由でCCU106に渡して、ポート1460-nのうち対応する1つ
を経由して命令用キャッシュ132またはデータ用キャッ
シュ134とMAU112との間でデータを転送することを開始
する。アーキテクチャ100の好適実施例では、MCU110
は、実際には、CCU106とMAU112間を転送する途中にある
データをストアまたはラッチしない。このようにしたの
は、転送の待ち時間を最小にし、MCU110に1つだけ存在
するデータを追跡または管理しないですむようにするた
めである。
に示す。これらのエレメントのオペレーションおよび相
互関係を理解しやすくするために、以下では、これらの
エレメントがIFUデータ経路と制御経路に関与する場合
を考慮して説明する。
ッチ・バッファ・ユニット260に一時的にストアしてお
く命令バス114から始まる。プリフェッチ・バッファ・
ユニット260からの命令セットはIデコード・ユニット2
62を通ってIFIFOユニット264へ渡される。命令FIFOユニ
ット264の最後の2ステージにストアされた命令セット
は、出力バス278、280を通してIEU104に連続的に取り出
して利用することができる。
つの命令セットを命令バス114から受け取る。完全な128
ビット幅命令セットは、一般に、プリフェッチ・バッフ
ァ・ユニット260のメイン・バッファ(MBUF)188部分の
4つの128ビット幅プリフェッチ・バッファ・ロケーシ
ョンの1つに並列に書き込まれる。追加の命令セットは
最高4つまで同じように、2つの128ビット幅ターゲッ
ト・バッファ(TBUF)190のプリフェッチ・バッファ・
ロケーションにまたは2つの128ビット幅プロシージャ
・バッファ(EBUF)192のプリフェッチ・バッファ・ロ
ケーションに書き込むことが可能である。好適アーキテ
クチャ100では、MBUF188、TBUF190またはEBUF192内のプ
リフェッチ・バッファ・ロケーションのいずれかに置か
れている命令セットは、プリフェッチ・バッファ出力バ
ス196へ転送することが可能である。さらに、フロー・
スルー・バス194は、命令バス114をプリフェッチ・バッ
ファ出力バス196と直接に接続することによって、MBUF1
88、TBUF190およびEBUF192をバイパスするためのもので
ある。
メイン命令ストリーム中の命令セットをバッファするた
めに利用される。TBUF190は、試行的なターゲット・ブ
ランチ命令ストリームからプリフェッチした命令セット
をバッファするために利用される。その結果、プリフェ
ッチ・バッファ・ユニット260を通して、条件付きブラ
ンチ命令のあとに置かれている可能性のある両方の命令
ストリームをプリフェッチすることができる。この機能
により、MAU112の待ち時間は長くなるとしても、少なく
ともCCU106への以後のアクセス待ち時間がなくなるの
で、条件付きブランチ命令の解決時にどの命令ストリー
ムが最終的に選択されるかに関係なく、条件付きブラン
チ命令のあとに置かれた正しい次の命令セットを得て、
実行することができる。本発明の好適アーキテクチャ10
0では、MBUF188とTBUF190があるために、命令フェッチ
・ユニット102は、現れる可能性のある両方の命令スト
リームをプリフェッチすることができ、命令実行ユニッ
ト104に関連して以下に説明するように、正しいと想定
された命令ストリームを引き続き実行することができ
る。条件付きブランチ命令が解決されたとき、正しい命
令ストリームがプリフェッチされて、MBUF188に入れら
れた場合は、TBUF190に残っている命令セットは無効に
されるだけである。他方、正しい命令ストリームの命令
セットがTBUF190に存在する場合は、命令プリフェッチ
・バッファ・ユニット260を通して、これらの命令セッ
トがTBUF190から直接に、並行にMBUF188内のそれぞれの
バッファ・ロケーションへ転送される。それ以前にMBUF
188にストアされた命令セットは、TBUF190から転送され
た命令セットを重ね書きすることによって、事実上無効
にされる。MBUFロケーションへ転送するTBUF命令セット
がなければ、そのロケーションには無効の印が付けられ
るだけである。
ット260を経由する別の代替プリフェッチ経路となるも
のである。EBUF192は、好ましくは、MBUF188命令ストリ
ームに現れた単一の命令、つまり、「プロシージャ」命
令で指定されたオペレーションを実現するために使用さ
れる代替命令ストリームをプリフェッチする際に利用さ
れる。このようにすると、複雑な命令や拡張された命令
はソフトウェア・ルーチンまたはプロシージャを通して
実現することができ、すでにプリフェッチされてMBUF18
8に入れられた命令ストリームを乱すことなくプリフェ
ッチ・バッファ・ユニット260を通して処理することが
できる。一般的には、本発明によれば、最初にTBUF190
に現れたプロシージャ命令を処理することができるが、
プロシージャ命令ストリームのプリフェッチは保留さ
れ、以前に現れた保留中の条件付きブランチ命令ストリ
ームがすべて解決される。これにより、プロシージャ命
令ストリームに現れた条件付きブランチ命令は、TBUF19
0の使用を通して矛盾なく処理されることになる。従っ
て、プロシージャ・ストリームでブランチが行われる場
合は、ターゲット命令セットはすでにプリフェッチされ
てTBUF190に入れられているので、EBUF192へ並列に転送
することができる。
リフェッチ・バッファ出力バス196に接続され、プリフ
ェッチ・ユニットによってストアされた命令セットをプ
リフェッチ・バッファ出力バス196上に送出するように
なっている。さらに、フロー・スルー・バス194は、命
令セットを命令バス114から直接にプリフェッチ・バッ
ファ出力バス196へ転送するためのものである。
F192内のプリフェッチ・バッファは直接的にはFIFO構造
を構成していない。その代わりに、どのバッファ・ロケ
ーションもプリフェッチ・バッファ出力バス196に接続
されているので、命令用キャッシュ132から取り出され
た命令セットのプリフェッチ順序に大幅な自由度をもた
せることができる。つまり、命令フェッチ・ユニツト10
2は命令ストリームに一定順序で並んだ命令順に命令セ
ットを判断して、要求するのが一般的になっている。し
かし、命令セットがIFU102へ返されるときの順序は、要
求したある命令セットが使用可能で、CCU106だけからア
クセス可能であり、他の命令セットはMAU112のアクセス
を必要とするような場合に合わせて、順序外に現れるこ
とも可能である。
ニット260へ返されない場合があっても、プリフェッチ
・バッファ出力バス196上に出力される命令セットの列
は、一般的に、IFU102から出された命令セット要求の順
序に従っていなければならない。順序内(in−order)
の命令ストリーム列は、例えば、ターゲット・ブランチ
・ストリームの試行的実行に影響されるためである。
ペースが許すかぎり、プリフェッチ・バッファ出力バス
196から命令セットを、普通は1サイクルに1つの割合
で受け取る。1つの命令セットを構成する4個の命令か
らなる各セットはIデコード・ユニット262によって並
列にデコードされる。関係の制御フロー情報がIFU102の
制御経路部分のためにライン318から抜き出されている
間は、命令セットの内容はIデコード・ユニット262に
よって変更されない。
ニット264の128ビット幅入力バス198上に送出される。
内部的には、IFIFOユニット264はマスタ/スレーブ・レ
ジスタ200、204、208、212、216、220、224の列から構
成されている。各レジスタはその後続レジスタに接続さ
れ、マスタ・レジスタ200、208、216の内容がFIFOオペ
レーションの内部プロセッサ・サイクルの前半時にスレ
ーブ・レジスタ204、212、220へ転送され、そのあとオ
ペレーションの後半サイクル時に次の後続マスタ・レジ
スタ208、216、224へ転送されるようになっている。入
力バス198はマスタ・レジスタ200、208、216、224の各
々の入力に接続され、FIFOオペレーションの後半サイク
ル時に命令セットがIデコード・ユニット262からマス
タ・レジスタに直接にロードされるようになっている。
しかし、マスタ・レジスタを入力バス198からロードす
ることは、IFIFOユニット264内でデータをFIFOシフトす
ることと同時に行う必要はない。その結果、IFIFOユニ
ット264内にストアされた命令セットの現在の深さに関
係なく、さらに、IFIFOユニット264内でデータをFIFOシ
フトすることから独立して、入力バス198から連続的にI
FIFOユニット264に入れていくことができる。
6、220、224の各々は、128ビット幅命令セットの全ビッ
トを並列にストアできるほかに、制御情報のいくつかの
ビットをそれぞれの制御レジスタ202、206、210、214、
218、222、226にストアすることもできる。好ましく
は、制御ビットのセットは、例外不一致(exception m
iss)と例外修正(exception modify)(VMU)、メモ
リなし(MCU)、ブランチ・バイアス、ストリーム、お
よびオフセット(IFU)からなっている。この制御情報
は、IFIFOマスタ・レジスタに入力バス198から新しい命
令セットをロードするのと同時に、IFU102の制御経路部
分から発生する。そのあと、制御レジスタ情報は命令セ
ットと並行してIFIFOユニット264内で並列にシフトされ
る。
264からの命令セットの出力は最後の2マスタ・レジス
タ216、224から同時に得られて、I_Bucket_0とI_Bucket
_1命令セットの出力バス278、280上に送出される。さら
に、対応する制御レジスタ情報がIBASV0とIBASV1制御フ
ィールドの出力バス282、284上に送出される。これらの
出力バス278、282、280、284はすべてIEU104へ通じる命
令ストリーム・バス124となるものである。
ト260、Iデコード・ユニット262およびIFIFOユニット2
64のオペレーションを直接にサポートする。プリフェッ
チ制御ロジック・ユニット266は主にプリフェッチ・バ
ッファ・ユニット260のオペレーションを管理する。プ
リフェッチ制御ロジック・ユニット266とIFU102は一般
的には、クロック・ライン290からシステム・クロック
信号を受信して、IFUのオペレーションとIEU104、CCU10
6およびVMU108のオペレーションとの同期をとるように
している。命令セットを選択して、MBUF188、TBUF190お
よびEBUF192に書き込むための制御信号は制御ライン304
上に送出される。
プリフェッチ制御ロジック・ユニット266へ送られる。
具体的には、フェッチ要求制御信号はプリフェッチ・オ
ペレーションを開始するために送出される。制御ライン
316上に送出される他の制御信号は要求したプリフェッ
チ・オペレーションが目標とする宛先がMBUF188である
か、TBUF190であるか、EBUF192であるかを指定してい
る。プリフェッチ要求を受けて、プリフェッチ制御ロジ
ック・ユニット266はID値を生成し、プリフェッチ要求
をCCU106に通知できるかどうかを判断する。ID値の生成
は、循環4ビット・カウンタを使用して行われる。
ある。第1は、最大9個までの命令セットをプリフェッ
チ・バッファ・ユニット260で一度にアクテイブにでき
ることである。すなわち、MBUF188での4命令セット、T
BUF190での2命令セット、EBUF192での2命令セット、
およびフロー・スルー・バス194経由で直接にIデコー
ド・ユニット262に渡される1命令セットである。第2
は、命令セットが各々4バイトの4個の命令からなるこ
とである。その結果、フェッチする命令を選択するどの
アドレスも、その最下位4ビットは余分になっている。
最後は、プリフェッチ要求アドレスの最下位4ビットと
して挿入することで、プリフェッチ要求IDをプリフェッ
チ要求と容易に関連づけることができることである。こ
れにより、CCU106とのインタフェースとなるために必要
な総アドレス数が減少することになる。
順序外で命令セットがCCU106から返却されるようにする
ために、アーキテクチャ100では、CCU106からの命令セ
ットの返却と一緒にID要求値が返されるようになってい
る。しかし、順序外の命令セット返却機能によると、16
個の固有IDが使いつくされるおそれがある。条件付き命
令の組合せが順序外で実行されると、要求されたが、ま
だ返却されていない追加のプリフェッチと命令セットが
あるので、ID値を再使用することが可能になる。従っ
て、4ビット・カウンタは保持しておくのが好ましく、
それ以降の命令セットのプリフェッチ要求が出されない
ことになり、その場合には、次のID値は、未処理のまま
残っているフェッチ要求やそのときプリフェッチ・バッ
ファ・ユニット260に保留されている別の命令セットに
関連づけられたものとなる。
スタ配列(アレイ)268を直接に管理し、この配列はMBU
F188、TBUF190およびEBUF192内の各命令セット・プリフ
ェッチ・バッファ・ロケーションに論理的に対応する状
況記憶ロケーションからなっている。プリフェッチ制御
ロジック・ユニット266は、選択およびデータ・ライン3
06を通して、データをスキャンし、読み取って、状況レ
ジスタ配列268に書き込むことができる。状況レジスタ
配列268内では、メイン・バッファ・レジスタ308は、4
個の4ビットID値(MB ID)、4個の1ビット予約フラ
グ(MB RES)および4個の1ビット有効フラグ(MB V
AL)をストアしておくためのものであり、これらの各々
は論理ビット位置別にMBUF180内のそれぞれの命令セッ
ト記憶ロケーションに対応づけられている。同様に、タ
ーゲット・バッファ・レジスタ310と拡張バッファ・レ
ジスタ312は、それぞれ2個の4ビットID値(TB ID、E
B ID)、2個の1ビット予約フラグ(TB RES、EB RE
S)および2個の1ビット有効フラグ(TB VAL、EB VA
L)をストアしておくためのものである。最後に、フロ
ー・スルー状況レジスタ314は1個の4ビットID値(FT
TD)、1個の予約フラグ・ビット(FT RES)および
1個の有効フラグ・ビット(FT VAL)をストアしてお
くためのものである。
るときは、プリフェッチ要求がCCU106に出されるたびに
プリフェッチ制御ロジック・ユニット266によって更新
され、そのあとは、命令セットが返されるたびにスキャ
ンされ、更新される。具体的に説明すると、制御ライン
316からプリフェッチ要求信号を受け取ると、プリフェ
ッチ制御ロジック・ユニット266は現在の循環カウンタ
生成ID値をインクリメントし、状況レジスタ配列268を
スキャンして、使用可能なID値があるかどうか、プリフ
ェッチ要求信号で指定されたタイプのプリフェッチ・バ
ッファ・ロケーションが使用可能であるかどうかを判断
し、CCU IBUSYの制御ライン300の状態を調べてCCU106
がプリフェッチ要求を受け付けることができるかどうか
を判断し、受付け可能ならば、制御ライン298上のCCU
IREAD制御信号を肯定し、インクリメントされたID値をC
CU106と結ばれたCCU IDの出力ライン294上に送出す
る。プリフェッチ記憶ロケーションは、対応する予約状
況フラグと有効状況フラグが共に偽である場合に使用が
可能である。プリフェッチIDは、要求がCCU106に出され
るのと並行して、MBUF188、TBUF190、またはEBUF192内
の目標とする記憶ロケーションに対応する、状況レジス
タ配列268内のID記憶ロケーションに書き込まれる。さ
らに、対応する予約状況フラグが真にセットされる。
できるときは、CCU IREADY信号が制御ライン302上で肯
定され、対応する命令セットIDがCCU IDの出力ライン2
96上に送出される。プリフェッチ制御ロジック・ユニッ
ト266は状況レジスタ配列268内のID値と予約フラグをス
キャンして、プリフェッチ・バッファ・ユニット260内
の命令セットの目標とする宛先を判別する。一致するも
のは1つだけが可能である。判別されると、命令セット
は命令バス114を経由してプリフェッチ・バッファ・ユ
ニット260内の該当ロケーションに書き込まれ、フロー
・スルー要求と判別されたときは、直接にIデコード・
ユニット262に渡される。どちらの場合も、対応する状
況レジスタ配列268に入っている有効状況フラグは真に
セットされる。
ように、IFU102全体を調べて、MBUF188、TBUF190および
EBUF192命令ストリームの仮想アドレスを探し出す。こ
の機能を実行する際、PCロジック・ユニット270はIデ
コード・ユニット262を制御すると同時に、そこから動
作する。具体的には、Iデコード・ユニット262によっ
てデコードされ、プログラムの命令ストリームのフロー
の変化と係わりがある可能性のある命令部分はバス318
を経由して制御フロー検出ユニット274へ送られると共
に、直接にPCロジック・ユニット270へ送られる。制御
フロー検出ユニット274は、条件付きブランチ命令と無
条件ブランチ命令、コール型命令、ソフトウェア・トラ
ップ・プロシージャ命令および種々のリターン命令を含
む制御フロー命令を構成する各命令を、デコードされた
命令セットの中から判別する。制御フロー検出ユニット
274は制御信号をライン322を経由してPCロジック・ユニ
ット270へ送る。この制御信号は、Iデコード・ユニッ
ト262に存在する命令セット内の制御フロー命令のロケ
ーションと種類を示している。これを受けて、PCロジッ
ク・ユニット270は、一般的には、命令に入れられて、
ライン318経由でPCロジック・ユニット270へ転送された
データから制御フロー命令のターゲット・アドレスを判
断する。例えば、条件付きブランチ命令に対して先に実
行するためにブランチ・ロジック・バイアスが選択され
た場合は、PCロジック・ユニット270は条件付きブラン
チ命令ターゲット・アドレスから命令セットをプリフェ
ッチすることを指示し、別々に追跡することを開始す
る。従って、制御ライン316上のプリフェッチ要求を次
に肯定すると、PCロジック・ユニット270はさらに制御
ライン316を経由する制御信号を肯定し、先行するプリ
フェッチ命令セットがMBUF188またはEBUF192へ送られた
ものと想定すると、プリフェッチの宛先をTBUF190とし
て選択する。プリフェッチ要求をCCU106へ渡すことがで
きるとプリフェッチ制御ロジック・ユニット266が判断
すると、プリフェッチ制御ロジック・ユニット266は、
この場合も制御ライン316を経由してイネーブル(許
可)信号をPCロジック・ユニット270へ送って、ターゲ
ット・アドレスのページ・オフセット部分(CCU PADDR
〔13:4〕)をアドレス・ライン324を経由して直接にCCU
106へ渡すことを可能にする。これと同時に、PCロジッ
ク・ユニット270は、新しい仮想ページから物理ページ
への変換が必要な場合には、さらに、VMU要求信号を制
御ライン328を経由して、ターゲット・アドレスの仮想
化部分(VMU VADDR〔13:14〕)をアドレス・ライン326
を経由してVMU108へ渡して、物理アドレスに変換する。
ページ変換が必要でない場合は、VMU108によるオレペー
ションは必要でない。その代わりに、以前の変換結果が
制御ライン122に接続された出力ラッチに保存されてい
るので、CCU106によって即時に使用される。
の変換時にVMU108にオペレーション・エラーが起こる
と、VMU例外およびVMU不一致制御(miss control)ラ
イン332、334を通して報告される。VMU不一致制御ライ
ン334は変換索引緩衝機構(translation lookaside b
uffer:TLB)の不一致を報告する。VMU例外ライン332上
のVMU例外制御信号は、他の例外が起こると発生する。
いずれの場合も、PCロジック・ユニット270は、命令ス
トリーム中の現在の実行個所をストアしておき、そのあ
と無条件ブランチが行われたのと同じように、それを受
けて、エラー条件を診断し処理するための専用例外処理
ルーチン命令ストリームをプリフェッチすることによっ
て、エラー条件を処理する。VMU例外および不一致制御
信号は、発生した例外の種類を示しているので、PCロジ
ック・ユニット270は対応する例外処理ルーチンのプリ
フェッチ・アドレスを判別することができる。
を直接にサポートするためのものである。具体的には、
PCロジック・ユニット270は制御ライン336を経由して制
御信号を出力し、命令セットがIデコード・ユニット26
2から入力バス198経由で使用可能であることをIFIFO制
御ロジック・ユニット272に通知する。IFIFO制御ロジッ
ク・ユニット272は命令セットを受け取るために、最も
奥の使用可能なマスタ・レジスタ200、208、216、224を
選択する役割をもっている。マスタ制御レジスタ202、2
10、218、226の各々の出力は制御バス338を経由してIFI
FO制御ロジック・ユニット272へ渡される。各マスタ制
御レジスタによってストアされる制御ビットは2ビット
・バッファ・アドレス(IF_Bx_ADR)、単一ストリーム
・インジケータ・ビット(IF_Bx_STRM)、および単一有
効ビット(IF_Bx_VLD)からなっている。2ビット・バ
ッファ・アドレスは対応する命令セット内の最初の有効
命令を指定している。つまり、CCU106から返された命令
セットは、例えば、ブランチ・オペレーションのターゲ
ット命令が命令セット内の最初の命令ロケーションに置
かれるように境界合わせされていないことがある。従っ
て、バッファ・アドレス値は、実行の対象として考慮さ
れる、命令セット内の最初の命令を一意的に示すために
与えられる。
んでいる命令セットのロケーションを示し、IFIFOユニ
ット264を通る命令のストリームに潜在的制御フローの
変更を引き起こすマーカとして使用されることを基本と
している。メイン命令ストリームは一般にストリーム・
ビット値が0のときMBUF188を通して処理される。例え
ば、相対条件付きブランチ命令が現れると、対応する命
令セットはマークがつけられ、ストリーム・ビット値が
1となる。条件付命令セットはIデコード・ユニット26
2によって検出される。条件付制御フロー命令は最高4
つまで命令セットに存在することができる。そのあと、
命令セット時IFIFOユニット264の最も奥の使用可能なマ
スタ・レジスタにストアされる。
るために、現在のIEU104の実行点アドレス(DPC)、ス
トリーム・ビットで指定された条件付命令が入っている
命令セットの相対ロケーション、制御フロー検出ユニッ
ト274から得られた命令セット内の条件付命令ロケーシ
ョン・オフセットは、制御ライン318を通して対応する
ブランチ命令フィールドから得た相対ブランチ・オフセ
ット値と結合される。その結果はブランチ・ターゲット
の仮想アドレスとなり、PCロジック・ユニット270によ
ってストアされる。ターゲット命令ストリームの最初の
命令セットは、このアドレスを使用してプリフェッチし
てTBUF190に入れることができる。PCロジック・ユニッ
ト270のために事前に選択されたブランチ・バイアスに
応じて、IFIFOユニット264はMBUF188またはTBUF190から
ロードが続けられる。1つまたは2つ以上の条件付フロ
ー命令を含んでいる2番目の命令セットが現れると、そ
の命令セットはストリーム・ビット値に0のマークが付
けられる。2番目のターゲット・ストリームはフェッチ
できないので、ターゲット・アドレスはPCロジック・ユ
ニット270によって計算されてストアされるが、プリフ
ェッチは行われない。さらに、それ以降の命令セットは
Iデコード・ユニット262を通して処理することができ
ない。少なくとも、条件付きフロー制御命令を含んでい
ることが分かった命令セットは1つも処理されない。
は、最高2個までの命令セットに現れた条件付きフロー
命令を最高8個まで管理することができる。ストリーム
・ビットの変化でマークが付けられた2命令セットの各
々のターゲット・アドレスは4つのアドレス・レジスタ
の配列にストアされ、ターゲット・アドレスは命令セッ
ト内の対応する条件付きフロー命令のロケーションに対
して論理的位置に置かれる。
決されると、PCロジック・ユニット270はブランチが行
われる場合は、TBUF190の内容をMBUF188に転送し、TBUF
190の内容に無効のマークを付けるように、制御ライン3
16上の制御信号によってプリフェッチ制御ロジック・ユ
ニット266に指示する。正しくない命令ストリーム、つ
まり、ブランチが行われない場合はターゲット・ストリ
ームからの、ブランチが行われる場合はメイン命令スト
リームからの命令セットがIFIFOユニット264にあると、
IFIFOユニット264からクリアされる。2番目またはそれ
以降の条件付きフロー制御命令が第1ストリーム・ビッ
トのマークが付けられた命令セットに存在すると、その
命令は統一された方法で処理される。すなわち、ターゲ
ット・ストリームからの命令セットはプリフェッチさ
れ、MBUF188またはTBUF190からの命令セットはブランチ
・バイアスに応じてIデコード・ユニット262を通して
処理され、条件付きフロー命令が最終的に解決される
と、正しくないストリーム命令セットがIFIFOユニット2
64からクリアされる。
リアされたとき、2番目の条件付きフロー命令がIFIFO
ユニット264に残っていて、最初の条件付きフロー命令
セットにそれ以降の条件付きフロー命令が含まれていな
いと、第2ストリーム・ビットのマークが付いた命令セ
ットのターゲット・アドレスはアドレス・レジスタの最
初の配列にプロモートされる。いずれの場合も、条件付
きフロー命令を含んでいる次の命令セットはIデコード
・ユニット262を通して評価することが可能になる。従
って、ストリーム・ビットをトグルとして使用すると、
ブランチ・ターゲット・アドレスを計算する目的のため
に、また、ブランチ・バイアスが特定の条件付きフロー
制御命令では正しくなかったとあとで判断された場合
に、それより上をクリアすべき命令セット・ロケーショ
ンにマークを付ける目的のために、潜在的制御フローの
変化にマークを付けておき、IFIFOユニット264を通して
追跡することができる。
のではなく、IFIFO制御ロジック・ユニット272はIFIFO
ユニット264の対応するマスタ・レジスタの制御レジス
タに入っている有効ビット・フラグをリセットするだけ
である。このクリア・オペレーションはライン336に送
出される制御信号でPCロジック・ユニット270によって
開始される。マスタ制御レジスタ202、210、218、226の
各々の入力は状況バス230を通してIFIFO制御ロジック・
ユニット272が直接にアクセスすることができる。好適
実施例のアーキテクチャ100では、これらのマスタ制御
レジスタ202、210、218、226内のビットは、IFIFOユニ
ット264によるデータ・シフト・オペレーションと並行
してまたは独立してIFIFO制御ロジック・ユニット272に
よってセットすることが可能である。この機能により、
IEU104のオペレーションと非同期に、命令セットをマス
タ・レジスタ200、208、216、224のいずかに書き込み、
対応する状況情報をマスタ制御レジスタ202、210、21
8、226に書き込むことができる。
ンはIFIFOユニット264のIFIFOオペレーションを可能に
し、指示する。IFIFOシフトは、制御ライン336を通して
PCロジック・ユニット270から出力されたシフト要求制
御信号を受けてIFIFOユニット264によって行われる。IF
IFO制御ロジック・ユニット272は、命令セットを受け入
れるマスタ・レジスタ200、208、216、224が使用可能で
あると、制御信号を制御ライン316を経由してプリフェ
ッチ制御ロジック・ユニット266に送って、プリフェッ
チ・バッファ・ユニット260から次の該当命令セットを
転送することを要求する。命令セットが転送されると、
状況レジスタ配列268内の対応する有効ビットがリセッ
トされる。
ス126によって提供される。この制御バス126はPCロジッ
ク・ユニット270に接続され、複数の制御、アドレスお
よび特殊データ・ラインから構成されている。割込み要
求と受信確認制御信号を制御ライン340を経由して渡す
ことにより、IFU102は割込みオペレーションを通知し、
IEU104との同期をとることができる。外部で発生した割
込み信号は割込みライン292経由でPCロジック・ユニッ
ト270へ送られる。これを受けて、割込み要求制御信号
がライン340上に送出されると、IEU104は試行的に実行
された命令をキャンセルする。割込みの内容に関する情
報は、割込み情報ライン341を通してやりとりされる。I
EU104がPCロジック・ユニット270によって判断された割
込みサービス・ルーチンのアドレスからプリフェッチさ
れた命令の受信を開始する準備状態になると、IEU104は
ライン340上の割込み受信確認制御信号を肯定する。IFU
102によってプリフェッチされた割込みサービス・ルー
チンがそのあと開始される。
イン342上に出力され、最も奥のマスタ・レジスタ224に
存在する命令セットが実行を完了したことおよび次の命
令セットが必要であることを通知する。この制御信号を
受けると、PCロジック・ユニット270はIFIFOユニット26
4でIFIFOシフト・オペレーションを実行するようにIFIF
O制御ロジック・ユニット272に指示する。
制御ライン344上に送出されて、現在のプログラム・カ
ウンタ値を命令の対応するサイズ数だけ更新するように
PCロジック・ユニット270に指示する。これにより、PC
ロジック・ユニット270は、現在のプログラム命令スト
リーム中の最初の順序内実行命令のロケーションを正確
に指した個所に実行プログラム・カウンタ(DPC)を維
持することができる。
ライン346を経由してPCロジック・ユニット270に返され
る。このターゲット・アドレスは、IEU104のレジスタ・
アレイにストアされているデータによって決まるブラン
チ命令の仮想ターゲット・アドレスである。従って、タ
ーゲット・アドレスを計算するためにIEU104のオペレー
ションが必要である。
348を経由してPCロジック・ユニット270へ送られて、現
在保留されている条件付きブランチ命令が解決されたか
どうか、その結果がブランチによるものなのか、ブラン
チによらないものなのかを示している。これらの制御信
号に基づいて、PCロジック・ユニット270は、条件付き
フロー命令の実行の結果として、プリフェッチ・バッフ
ァ・ユニット260とIFIFOユニット264に置かれている命
令セットのどれをキャンセルする必要があるかを判断す
ることができる。
ン)が制御ライン350上を送出されて、IEU104によって
ある命令が実行されたことをIFU102に通知する。これら
の命令には、プロシージャ命令からのリターン、トラッ
プからのリターンおよびサブルーチン・コールからのリ
ターンがある。トラップからのリターン命令はハードウ
ェア割込み処理ルーチンとソフトウェア・トラップ処理
ルーチンで同じように使用される。サブルーチン・コー
ルからのリターンもジャンプとリンク型コールと併用さ
れる。どの場合も、リターン制御信号は、以前に割込み
がかけられた命令ストリームに対して命令フェッチ・オ
ペレーションを再開するようにIFU102に通知するために
送られる。これらの信号をIEU104から出すことにより、
アーキテクチャ100の正確なオペレーションを維持する
ことができる。「割込みがかけられた」命令ストリーム
の再開はリターン命令の実行個所から行われる。
52を経由してIEU104へ送られる。このアドレス値(DP
C)はIEU104によって実行される正確な命令を指定して
いる。つまり、IEU104が現在のIF_PCアドレスを通過し
た命令を先に試行的に実行している間は、このアドレス
は、割込み、例外、その他に正確なマシンの状態が分か
っていることが必要な事象の発生に対してアーキテクチ
ャ100を正確に制御するために保持されていなければな
らない。現在実行中の命令ストリームの中の正確なマシ
ンの状態を進めることが可能であるとIEU104が判断する
と、PC Inc/Size信号がIFU102に送られ、即時に現在の
IF_PCアドレス値に反映される。
殊レジスタのデータを転送するためのものである。この
データはIEU104によってIFU102内の特殊レジスタに入れ
られ、あるいはそこから読み取られるようにプログラム
することが可能である。特殊レジスタのデータは一般に
IFU102が使用できるように、IEU104によってロードさ
れ、あるいは計算される。
ェッチPC制御ユニット364および実行PC制御ユニット366
を含むPCロジック・ユニット270の詳細図は図3に示さ
れている。PC制御ユニット362は、制御ライン316を通し
てプリフェッチ制御ロジック・ユニット266、及びIFIFO
制御ロジック・ユニット272から、またインタフェース
・バス126を通してIEU104から制御信号を受けて、プリ
フェッチおよび実行PC制御ユニット364、366に対してタ
イミング制御を行う。割込み制御ユニット363は、プリ
フェッチ・トラップ・アドレス・オフセットを判断して
それぞれのトラップ・タイプを処理する該当処理ルーチ
ンを選択することを含めて、割込みと例外の正確な管理
を担当する。プリフェッチ・PC制御ユニット364は、特
に、トラップ処理とプロシージャ・ルーチン命令のフロ
ーのためのリターン・アドレスをストアすることを含め
て、バッファ188、190、192をサポートするために必要
なプログラム・カウンタの管理を担当する。このオペレ
ーションをサポートするために、プリフェッチPC制御ユ
ニット364は、物理アドレス・バス・ライン324上のCCU
PADDERアドレスとアドレス・ライン326上のVMU VMAD
DRアドレスを含むプリフェッチ仮想アドレスを生成する
ことを担当する。その結果、プリフェッチPC制御ユニッ
ト364は、現在のプリフェッチPC仮想アドレス値を保持
することを担当する。
6上を送出された制御信号を通してIFIFO制御ロジック・
ユニット272によって開始される。これを受けて、PC制
御ユニット362はいくつかの制御信号を生成して制御ラ
イン372上に出力し、プリフェッチPC制御ユニット364を
動作させて、アドレス・ライン324、326上にPADDRアド
レスと、必要に応じてVMADDRアドレスを生成する。値が
0から4までのインクリメント信号も制御ライン374上
に送出される場合もあるが、これは、PC制御ユニット36
2が現在のプリフェッチ・アドレスから命令セットのフ
ェッチを再実行しているか、一連のプリフェッチ要求の
中の2番目の要求に対して位置合わせを行っているか、
プリフェッチのために次の全順次命令セットを選択して
いるか、によって決まる。最後に、現在のプリフェッチ
・アドレスPF_PCがバス370上に送出され、実行PC制御ユ
ニット366へ渡される。
から発生する。アドレスの主要なソースは、バス352経
由で実行PC制御ユニット366から送出された現在のIF_PC
アドレスである。原理的には、IF_PCアドレスからはリ
ターン・アドレスが得られ、これは、初期コール、トラ
ップまたはプロシージャ命令が現れたとき、プリフェッ
チPC制御ユニット364によってあとで使用されるもので
ある。IF_PCアドレスは、これらの命令が現れるたび
に、プリフェッチPC制御ユニット364内のレジスタにス
トアされる。このようにして、PC制御ユニット362は制
御ライン350を通してIEUリターン信号を受けたとき、プ
リフェッチPC制御ユニット364内のリターン・アドレス
・レジスタを選択して新しいプリフェッチ仮想アドレス
を取り出すだけでよく、これによって元のプログラム命
令ストリームを再開する。
PC制御ユニット366から相対ターゲット・アドレス・バ
ス382を経由して、あるいはIEU104から絶対ターゲット
・アドレス・バス346を経由して送出されたターゲット
・アドレス値である。相対ターゲット・アドレスとは、
実行PC制御ユニット366によって直接に計算できるアド
レスである。絶対ターゲット・アドレスは、これらのタ
ーゲット・アドレスがIEUレジスタ・アレイに入ってい
るデータに依存するので、IEU104に生成させる必要があ
る。ターゲット・アドレスはターゲット・アドレス・バ
ス384を通ってプリフェッチPC制御ユニット364へ送ら
れ、プリフェッチ仮想アドレスとして使用される。相対
ターゲット・アドレスを計算する際、対応するブランチ
命令のオペランド部分もIデコード・ユニット262から
バス318のオペランド変位部分を経由して送られる。
行PC制御ユニット366である。リターン・アドレス・バ
ス352'は、現在のIF_PC値(DPC)をプリフェッチPC制御
ユニット364へ転送するためのものである。このアドレ
スは、割込み、トラップ、その他にコールなどの制御フ
ロー命令が命令ストリーム内に現れた個所でリターン・
アドレスとして使用される。プリフェッチPC制御ユニッ
ト364は、新しい命令ストリームをプリフェッチするた
めに解放される。PC制御ユニット362は、対応する割込
みまたはトラップ処理ルーチンまたはサブルーチンが実
行されると、IEU104からライン350を経由してIEUリター
ン信号を受け取る。他方、PC制御ユニット362はライン3
72上のPFPC信号の1つを通して、およびライン350経由
で送られてきて実行されたリターン命令のIDに基づい
て、現在のリターン仮想アドレスを収めているレジスタ
を選択する。そのあと、このアドレスが使用されて、PC
ロジック・ユニット270によるプリフェッチ・オペレー
ションを続行する。
う1つのソースは、特殊レジスタ・アドレスおよびデー
タ・バス354である。IEU104によって計算またはロード
されたアドレス値、または少なくともベース・アドレス
値は、データとしてバス354を経由しでプリフェッチPC
制御ユニット364へ転送される。ベース・アドレスは、
トラップ・アドレス・テーブル、高速トラップ・テーブ
ル、およびベース・プロシージャ命令ディスパッチ・テ
ーブルのアドレスを含んでいる。バス354を通して、プ
リフェッチおよび実行PC制御ユニット364、366内のレジ
スタの多くを読み取ることもできるので、マシンの状態
の対応する側面をIEU104を通して処理することが可能で
ある。
を受けて、現在のIF_PCアドレス値を計算することを主
な役割としている。この役割において、実行PC制御ユニ
ット366はPC制御ユニット362からExPC制御ライン378を
経由して送られてきた制御信号と、制御ライン380を経
由して送られてきたインクリメント/サイズ制御信号を
受けて、IF_PCアドレスを調整する。これらの制御信号
は、主に、ライン342経由で送られてきたIFIFO読取り制
御信号とIEU104から制御ライン344経由で送られてきたP
Cインクリメント/サイズ値を受けると生成される。
4、366の詳細ブロック図である。これらのユニットは主
に、レジスタ、インクリメンタ(増分器)その他の類似
部品、セレクタおよび加算器ブロックから構成されてい
る。これらのブロック間のデータ転送を管理する制御
は、PFPC制御ライン372、ExPC制御ライン378およびイン
クリメント制御ライン374、380を通してPC制御ユニット
362によって行われる。説明を分かりやすくするため
に、図4のブロック図には、これらの個々の制御ライン
は示されていない。しかし、これらの制御信号が以下に
説明するように、これらのブロックへ送られることは勿
論である。
プリフェッチ・セレクタ(PF_PC SEL)390であり、こ
れは現プリフェッチ仮想アドレスの中央セレクタとして
動作する。この現プリフェッチ・アドレスはプリフェッ
チ・セレクタ390から出力バス392を通ってインクリメン
タ・ユニット394へ送られて、次のプリフェッチ・アド
レスを生成する。この次のプリフェッチ・アドレスはイ
ンクリメンタ出力バス396を通ってレジスタMBUF PFnPC
398、TBUF PFnPC400、およびEBUF PFnPC402の並列配
列へ送られる。これらのレジスタ398、400、402は実効
的には次の命令プリフェッチ・アドレスをストアしてい
るが、本発明の好適実施例によれば、別々のプリフェッ
チ・アドレスがMBUF188、TBUF190、およびEBUF192に保
持されている。MBUF、TBUFおよびEBUF PFnPCレジスタ3
98、400、402にストアされたプリフェッチ・アドレス
は、アドレス・バス404、408、410からプリフェッチ・
セレクタ390へ渡される。従って、PC制御ユニット362は
プリフェッチ・レジスタ398、400、402の別の1つをプ
リフェッチ・セレクタ390が選択することを指示するこ
とだけでプリフェッチ命令ストリームの即時切替えを指
示することができる。ストリームの中の次の命令セット
をプリフェッチするために、そのアドレス値がインクリ
メンタ394によってインクリメントされると、その値が
プリフェッチ・アドレス398、400、402のうち該当する
レジスタへ返却される。もう1つの並列レジスタ配列は
簡略化のため単一の特殊レジスタ・ブロック412として
示されているが、この配列はいくつかの特殊アドレスを
ストアするためのものである。レジスタ・ブロック412
はトラップ・リターン・アドレス・レジスタ、プロシー
ジャ命令リターン・アドレス・レジスタ、プロシージャ
命令ディスパッチ・テーブル・ベース・アドレス・レジ
スタ、トラップ・ルーチン・ディスパッチ・テーブル・
ベース・アドレス・レジスタ、および高速トラップ・ル
ーチン・ベース・アドレス・レジスタから構成されてい
る。PC制御ユニット362の制御を受けて、これらのリタ
ーン・アドレス・レジスタはバス352を通して現IF_PC実
行アドレスを受け入れることができる。レジスタ・ブロ
ック412内のリターンおよびベース・アドレス・レジス
タにストアされたアドレス値はIEU104から独立して読み
書きすることができる。レジスタが選択され、値が特殊
レジスタ・アドレスおよびデータ・バス354を経由して
転送される。
ニット362によって制御され、レジスタ・ブロック412の
レジスタにストアされたアドレスを特殊レジスタ出力バ
ス416上に送出して、プリフェッチ・セレクタ390へ渡す
ことができる。リターン・アドレスは直接にプリフェッ
チ・セレクタ390へ渡される。ベース・アドレス値は割
込み制御ユニット363から割込みオフセット・バス373経
由で送られてきたオフセット値と結合される。ソースか
らバス373経由でプリフェッチ・セレクタ390へ渡された
特殊アドレスは、新しいプリフェッチ命令ストリームの
初期アドレスとして使用され、そのあとインクリメント
394とプリフェッチ・レジスタ398、400、402の1つを通
るアドレスのインクリメント・ループを続行することが
できる。
う1つのソースは、ターゲット・アドレス・レジスタ・
ブロック414内のレジスタ配列である。ブロック414内の
ターゲット・レジスタには、好適実施例によれば、8つ
の潜在的ブランチ・ターゲット・アドレスがストアされ
る。これらの8つの記憶ロケーションはIFIFOユニット2
64の最下位の2マスタ・レジスタ216、224に保持されて
いる8つの潜在的に実行可能な命令に論理的に対応して
いる。これらの命令のどれでもが、および潜在的にはす
べてが条件付きブランチ命令となり得るので、ターゲッ
ト・レジスタ・ブロック414は、あらかじめ計算された
ターゲット・アドレスをストアしておくので、TBUF190
を通してターゲット命令ストリームをプリフェッチする
ために使用するのを待たせることができる。特に、PC制
御ユニット362がターゲット命令ストリームのプリフェ
ッチを即時に開始するように条件付きブランチ・バイア
スがセットされると、ターゲット・アドレスはターゲッ
ト・レジスタ・ブロック414からアドレス・バス418を経
由してプリフェッチ・セレクタ390へ送られる。インク
リメンタ394によってインクリメントされたあと、アド
レスはTBUF PFnPC400へ戻されてストアされ、ターゲッ
ト命令ストリームをあとでプリフェッチするオペレーシ
ョンで使用される。別のブランチ命令がターゲット命令
ストリームに現れると、その2番目のブランチのターゲ
ット・アドレスが計算され、最初の条件付きブランチ命
令が解決されて使用されるまでの間、ターゲット・レジ
スタ配列414にストアされている。
た、計算で求めたターゲット・アドレスは、実行PC制御
ユニット366内のターゲット・アドレス計算ユニットか
らアドレス・ライン382を経由して、あるいはIEU104か
ら絶対ターゲット・アドレス・バス346を経由して転送
される。
転送されるアドレス値は、完全な32ビット仮想アドレス
値である。ページ・サイズは本発明の好適実施例では、
16Kバイトに固定されており、最大ページ・オフセット
・アドレス値〔13:0〕に対応している。従って、現プリ
フェッチ仮想ページ・アドレス〔27:14〕に変化がなけ
れば、VMUページの変換は不要である。プリフェッチ・
セレクタ390内のコンパレータはそのことを検出する。V
MU変換要求信号(VMXLAT)は、インクリメントがページ
境界をこえて行われたか、制御のフローが別のページ・
アドレスへブランチしたために、仮想ページ・アドレス
が変化したとき、ライン372を経由してPC制御ユニット3
62へ送られる。他方、PC制御ユニット362はライン324上
のCCU PADDRのほかに、VM VADDRアドレスをバッファ
・ユニット420からアドレス・ライン326上に送出し、該
当の制御信号をVMU制御ライン328上に送出して、VMU仮
想ページから物理ページへの変換を得るように指示す
る。ページ変換が必要でない場合は、現物理ページ・ア
ドレス〔31:14〕は制御ライン122上のVMU108の出力側の
ラッチによって保持される。
ト制御ライン374から送られてきた信号を受けて、イン
クリメンタ394によってインクリメントされる。インク
リメンタ394は、次の命令セットを選択するために、命
令セットを表す値(4命令または16バイト)だけインク
リメントする。CCU106へ渡されるプリフェッチ・アドレ
スの下位4ビットはゼロになっている。従って、最初の
ブランチ・ターゲット命令セット内の実際のターゲット
・アドレス命令は最初の命令ロケーションに置かれてい
ない場合がある。しかし、アドレスの下位4ビットはPC
制御ユニット362へ送られるので、最初のブランチ命令
のロケーションをIFU102が判別することができる。ター
ゲット・アドレスの下位ビット〔3:2〕を2ビット・バ
ッファ・アドレスとして返して、位置合わせされていな
いターゲット命令セットから実行すべき正しい最初の命
令を選択するための検出と処理は、新しい命令ストリー
ム、つまり、命令ストリームの中の最初の非順次命令セ
ット・アドレスの最初のプリフェッチのときだけ行われ
る。命令セットの最初の命令のアドレスと命令セットを
プリフェッチする際に使用されるプリフェッチ・アドレ
スとの間の非位置合わせの関係は、現順次命令ストリー
ムが存続している間無視することができ、そのあとも無
視される。
ニット366を構成している。本発明の好適実施例によれ
ば、実行PC制御ユニット366は独立に機能するプログラ
ム・カウンタ・インクリメンタを独自に備えている。こ
の機能の中心となるのは実行セレクタ(DPC SEL)430
である。実行セレクタ430からアドレス・バス352'上に
出力されるアドレスはアーキテクチャ100の現在の実行
アドレス(DPC)である。この実行アドレスは加算ユニ
ツト434へ送られる。ライン380上に送出されたインクリ
メント/サイズ制御信号は1から4までの命令インクリ
メント値を指定しており、この値は加算ユニット434に
よって実行セレクタ430から得たアドレスに加えられ
る。加算ユニツト434が出力ラッチ機能を実行するたび
に、インクリメントされた次の実行アドレスがアドレス
・ライン436を経て直接に実行セレクタ430に返され、次
の命令インクリメント・サイクルで使用される。
ム・アドレスは、アドレス・ライン440を経由して新ス
トリーム・レジスタ・ユニット438から得られる。新ス
トリーム・レジスタ・ユニット438は、プリフェッチ・
セレクタ390からPFPCアドレス・バス370を経由して送ら
れきた新しい現プリフェッチ・アドレスを直接にアドレ
ス・バス440に渡すことも、あとで使用するためにスト
アしておくこともできる。つまり、プリフェッチPC制御
ユニット364が新しい仮想アドレスからプリフェッチを
開始することを判断した場合は、新しいストリーム・ア
ドレスは新ストリーム・レジスタ・ユニット438によっ
て一時的にストアされる。PC制御ユニット362は、プリ
フェッチと実行インクリメントの両サイクルに関与する
ことによって、実行アドレスが新命令ストリームを開始
した制御フロー命令に対応するプログラム実行個所まで
に達するまで新ストリーム・アドレスを新ストリーム・
レジス438に置いておく。新ストリーム・アドレスはそ
のあと新ストリーム・レジスタ・ユニット438から出力
されて実行セレクタ430へ送られ、新命令ストリーム内
の実行アドレスを独立して生成することを開始する。
タ・ユニット438は2つの制御フロー命令ターゲット・
アドレスをバッファリングする機能を備えている。新ス
トリーム・アドレスを即時に取り出すことにより、殆ど
待ち時間がなく実行PC制御ユニット366を現実行アドレ
ス列の生成から新実行アドレス・ストリーム列の生成に
切り替えることができる。
現IF_PCアドレスをアドレス・バス352上に送出してIEU1
04へ送るためのものである。IF_PCセレクタ442への入力
は実行セレクタ430または新ストリーム・レジスタ・ユ
ニット438から得た出力アドレスである。殆どの場合、I
F_PCセレクタ442はPC制御ユニット362の指示を受けて、
実行セレクタ430から出力された実行アドレスを選択す
る。しかし、新命令ストリームの実行開始のために使用
される新仮想アドレスへ切り替える際の待ち時間をさら
に短縮するために、新ストリーム・レジスタ・ユニット
438からの選択したアドレスをバイパスして、バス440経
由で直接にIF_PCセレクタ442へ送り、現IF_PC実行アド
レスとして得ることができる。
ターゲット・アドレスを計算する機能を備えている。現
実行点アドレスと新ストリーム・レジスタ・ユニット43
8から得たアドレスは、アドレス・バス352'、440を経由
して制御フロー・セレクタ(CF_PC)446に渡される。そ
の結果、PC制御ユニット362は大幅な柔軟性をもって、
ターゲット・アドレス計算の基となる正確な初期アドレ
スを選択することができる。この初期アドレス、つま
り、ベース・アドレスはアドレス・バス454を経由して
ターゲット・アドレスALU450へ送られる。ターゲットAL
U450への入力となるもう1つの値は、制御フロー変位計
算ユニット452からバス458経由で送られてくる。相対ブ
ランチ命令は、アーキテクチャ100の好適実施例によれ
ば、新相対ターゲット・アドレスを指定した即値モード
定数の形態をした変位値を含んでいる。制御フロー変位
計算ユニット452はIデコード・ユニットのオペランド
出力バス318から初めて得たオペランド変位値を受け取
る。最後に、オフセット・レジスタ値はライン456を経
由してターゲット・アドレスALU450へ送られる。オフセ
ット・レジスタ448はPC制御ユニット362から制御ライン
378'を経由してオフセット値を受け取る。オフセット値
の大きさはアドレス・ライン454上を送られるベース・
アドレスから相対ターゲット・アドレスを計算するとき
の現ブランチ命令のアドレスまでのアドレス・オフセッ
トに基づいてPC制御ユニット362によって判断される。
つまり、PC制御ユニット362は、IFIFO制御ロジック・ユ
ニット272を制御することによって、現実行点アドレス
の命令(CP_PCによって要求された)とIデコード・ユ
ニット262によって現在処理中の、従ってPCロジック・
ユニット270によって処理中の命令を分離している命令
の個数を追跡して、その命令のターゲット・アドレスを
判断する。
U450によって計算されると、そのターゲット・アドレス
はアドレス・バス382を通して対応するターゲット・レ
ジスタ414に書き込まれる。
スはMBUF PFnPCにストアされる。 1.2 制御フロー命令がないときは、32ビット・インク
リメンタはMBUF PFnPCに入っているアドレス値を、各
プリフェッチ・サイクルごとに16バイト(x16)だけ調
整する。 1.3 無条件制御フロー命令がIデコードされると、命
令セットに続いてフェッチされたすべてのプリフェッチ
・データはフラッシュされ、MBUF PFnPCには、ターゲ
ット・レジスタ・ユニット、PF_PCセレクタおよびイン
クリメンタを通して、新しいメイン命令ストリーム・ア
ドレスがロードされる。新しいアドレスは新ストリーム
・レジスタにもストアされる。 1.3.1 相対無条件制御フローのターゲット・アドレス
はIFUが保持しているレジスタ・データからと制御フロ
ー命令の後に置かれたオペランド・データからIFUによ
って計算される。 1.3.2 絶対無条件制御フローのターゲット・アドレス
はレジスタ基準値、ベース・レジスタ値、およびインデ
ックス・レジスタ値からIEUによって最終的に計算され
る。 1.3.2.1 命令プリフェッチ・サイクルは絶対アドレス
制御フロー命令に対してターゲット・アドレスがIEUか
ら返されるまで停止する。命令実行サイクルは続行され
る。 1.4 無条件制御フロー命令から得た次のメイン・フロ
ー・プリフェッチ命令のアドレスはバイパスされて、タ
ーゲット・アドレス・レジスタ・ユニット、PF_PCセレ
クタおよびインクリメンタを経由して送られ、最終的に
MBUF PFnPCにストアされ、プリフェッチは1.2から続け
られる。
ゲット命令ストリームの中でプリフェッチされる。ター
ゲット・ストリームの中でフェッチされた場合は、条件
付き制御フロー命令が解決され、プロシージャ命令がMB
UFへ転送されるまでプロシージャ・ストリームのプリフ
ェッチを停止する。これにより、プロシージャ命令スト
リームに現れた条件付き制御フローを処理する際にTBUF
を使用できる。 2.1.1 プロシージャ命令はプロシージャ命令ストリー
ムの中に置いてはならない。つまり、プロシージャ命令
はネストしてはならない。プロシージャ命令からリター
ンすると、実行はメイン命令ストリームに戻る。ネスト
を可能にするためには、ネストしたプロシージャ命令か
ら別の専用リターンが必要である。アーキテクチャはこ
の種の命令を容易にサポートできるが、プロシージャ命
令をネストする機能があっても、アーキテクチャの性能
が向上する見込みはない。 2.1.2 メイン命令ストリームにおいては、第1および
第2条件付き制御フロー命令を含む命令セットを含んで
いるプロシージャ命令ストリームは、第1命令セットの
中の条件付き制御フロー命令が解決し、第2条件付き制
御フロー命令セットがMBUFへ転送されるまで第2条件付
き制御フロー命令セットに対してプリフェッチを停止す
る。 2.2 プロシージャ命令は、命令の即値モード・オペラ
ンド・フィールドとして含まれている相対オフセットに
よって、プロシージャ・ルーチンの開始アドレスを示し
ている。 2.2.1 プロシージャ命令から得られたオフセット値はI
FUに維持されているプロシージャ・ベース・アドレス
(PBR)レジスタに入っている値と結合される。このPBR
レジスタは、特殊レジスタの移動命令が実行されると、
特殊アドレスおよびデータ・バスを通して読み書き可能
である。 2.3 プロシージャ命令が現れると、次のメイン命令ス
トリームIF_PCアドレスはDPCリターン・アドレス・レジ
スタにストアされ、プロセッサ・ステータス・レジスタ
(PSR)内のプロシージャ進行中ビット(procedure−in
−progress bit)がセットされる。 2.4 プロシージャ・ストリームの開始アドレスはPBRレ
ジスタ(プロシージャ命令オペランド・オフセット値を
加えて)からPF_PCセレクタへ送られる。 2.5 プロシージャ・ストリームの開始アドレスは新ス
トリーム・レジスタ・ユニットとインクリメントへ同時
に送られ、(x16)だけインクリメントする。インクリ
メントされたアドレスはそのあとEBUF PFnPCにストア
される。 2.6 制御フロー命令がないと、32ビット・インクリメ
ンタは各プロシージャ命令プリフェッチ・サイクルごと
にEBUF PFnPCに入っているアドレス値を(x16)だけ調
整する。 2.7 無条件制御フロー命令がIデコードされると、ブ
ランチ命令のあとにフェツチされたすべてのプリフェッ
チ・データはフラッシュされ、EBUF PFnPCには新しい
プロシージャ命令ストリーム・アドレスがロードされ
る。 2.7.1 相対無条件制御フロー命令のターゲット・アド
レスはIFUに保持されているレジスタ・データからと制
御フロー命令の即値モード・オペランド・フィールド内
に入っているオペランド・データからIFUによって計算
される。 2.7.2 絶対無条件ブランチのターゲット・アドレスは
レジスタ基準値、ベース・レジスタ値およびインデック
ス・レジスタ値からIEUによって計算される。 2.7.2.1 命令プリフェッチ・サイクルは絶対アドレス
・ブランチに対してターゲット・アドレスがIEUから返
されるまで停止する。実行サイクルは続行される。 2.8 次のプロシージャ・プリフェッチ命令セットのア
ドレスはEBUF PFnPCにストアされ、プリフェッチは1.2
から続けられる。 2.9 プロシージャ命令からのリターンがIデコードさ
れると、プリフェッチがuPCレジスタにストアされてい
るアドレスから続けられ、そのあと(x16)だけインク
リメントされ、あとでプリフェッチするためにMBUF PF
nPCレジスタに返される。
れた条件付き制御フロー命令がIデコードされると、タ
ーゲット・アドレスはそのターゲット・アドレスが現ア
ドレスに対する相対アドレスならばIFUによって、絶対
アドレスならばIEUによって判断される。 3.2 「ブランチを行うバイアス」の場合: 3.2.1 ブランチが絶対アドレスに行われる場合は、タ
ーゲット・アドレスがIEUから返されるまで命令プリフ
ェッチ・サイクルを停止する。実行サイクルは続行され
る。 3.2.2 PF_PCセレクタとインクリメンタを経由して転送
することによってブランチ・ターゲット・アドレスをTB
UF PFnPCにロードする。 3.2.3 ターゲット命令ストリームがプリフェッチされ
てTBUFに入れられたあとで実行するためにIFIFOに送ら
れる。IFIFOとTBUFが一杯になると、プリフェッチを停
止する。 3.2.4 32ビット・インクリメンタ各プリフェッチ・サ
イクルごとにTBUF PFnPCに入っているアドレス値を(x
16)だけ調整する。 3.2.5 ターゲット命令ストリーム内の2番目の命令セ
ットに現れた条件付き制御フロー命令がIデコードされ
るとプリフェッチ・オペレーションを、第1の(主)セ
ット内のすべての条件付きブランチ命令が解決されるま
で停止する(しかし、先に進んで、相対ターゲット・ア
ドレスを計算しターゲット・レジスタにストアする)。 3.2.6 最初の命令セット内の条件付きブランチを「行
う」と解釈された場合: 3.2.6.1 ブランチのソースがプロシージャ進行中ビッ
トから判断されたEBUF命令セットであったときはMBUFま
たはEBUFに入っている最初の条件付きフロー命令セット
のあとに置かれた命令セットをフラッシュする。 3.2.6.2 プロシージャ進行中ビットの状態に基づい
て、TBUF PFnPC値をMBUF PFnPCまたはEBUFへ転送す
る。 3.2.6.3 プロシージャ進行中ビットの状態に基づい
て、プリフェッチしたTBUF命令をMBUFまたはEBUFへ転送
する。 3.2.6.4 2番目の条件付きブランチ命令セットがIデ
コードされていなければ、プロシージャ進行中ビットの
状態に基づいて、MBUFまたはEBUFプリフェッチ・オペレ
ーションを続行する。 3.2.6.5 2番目の条件付きブランチ命令がIデコード
されていれば、その命令の処理を開始する(ステップ3.
3.1へ進む)。 3.2.7 最初の条件付き命令セットの中の命令に対する
条件付き制御を「行わない」と解釈された場合: 3.2.7.1 ターゲット命令ストリームからの命令セット
と命令のIFIFOとIEUをフラッシュする。 3.2.7.2 MBUFまたはEBUFプリフェッチ・オペレーショ
ンを続行する。 3.3 「ブランチが行われないバイアス」の場合: 3.3.1 命令をプリフェッチしてMBUFに入れることを停
止する。実行サイクルを続ける。 3.3.1.1 最初の条件付き命令セットの中の条件付き制
御フロー命令が相対ならば、ターゲット・アドレスを計
算し、ターゲット・レジスタにストアする。 3.3.1.2 最初の条件付き命令セットの中の条件付き制
御フロー命令が絶対ならば、IEUがターゲット・アドレ
スを計算して、そのアドレスをターゲット・レジスタに
返すまで待つ。 3.3.1.3 2番目の命令セットの中の条件付き制御フロ
ー命令のIデコードが行われると、最初の条件付き命令
セットの中の条件付き制御フロー命令が解決されるまで
プリフェッチ・オペレーションを停止する。 3.3.2 最初の条件付きブランチのターゲット・アドレ
スが計算されると、TBUF PFnPCにロードし、メイン命
令ストリームの実行と並行して命令をプリフェッチして
TBUFに入れることを開始する。ターゲット命令セットは
ロードされない(従って、ブランチ・ターゲット命令は
最初の命令セットの中の各条件付き制御フロー命令が解
決されたとき用意されている)。 3.3.3 最初のセットの中の条件付き制御フロー命令が
「行われる」と解釈された場合: 3.3.3.1 ブランチのソースがEBUF命令ストリームであ
るとプロシージャ進行中ビットの状態から判断される
と、MBUFまたはEBUFをフラッシュし、最初の条件付きブ
ランチ命令セットのあとに置かれたメイン命令ストリー
ムからの命令のIFIFOとIEUをフラッシュする。 3.3.3.2 プロシージャ進行中ビットの状態から判断し
た通りに、TBUF PFnPC値をMBUFまたはEBUFへ転送す
る。 3.3.3.3 プロシージャ進行中ビットの状態から判断し
た通りに、プリフェッチしたTBUF命令をMBUFまたはEBUF
へ転送する。 3.3.3.4 プロシージャ進行中ビットの状態から判断し
た通りに、MBUFまたはEBUFプリフェッチ・オペレーショ
ンを続行する。 3.3.4 最初のセット内の条件付き制御フロー命令が
「行われない」と解析された場合: 3.3.4.1 ターゲット命令ストリームからの命令セット
のTBUFをフラッシュする。 3.3.4.2 2番目の条件付きブランチ命令がIデコード
されなかった場合は、プロシージャ進行中ビットの状態
から判断した通りに、MBUFまたはEBUFプリフェッチ・オ
ペレーションを続ける。 3.3.4.3 2番目の条件付きブランチ命令がIデコード
された場合は、その命令の処理を開始する(ステップ3.
4.1へ進む)。
スを受け、プロシージャ命令を一時中止する 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.1.2 同期例外が起こると、例外を起こした命令が実
行されるとトラップが処理される。 5.2 トラップが処理されたとき: 5.2.1 割込みは禁止される。 5.2.2 現在のIF_PCアドレスはxPCトラップ状態リター
ン・アドレス・レジスタにストアされる。 5.2.3 IF_PCアドレスとそのあとのアドレスにあるIFIF
OとMBUFプリフェッチ・バッファはフラッシュされる。 5.2.4 アドレスIF_PCとそのあとのアドレスの実行され
た命令とその命令の結果は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 トラップ命令からのリターンが実行されたとき: 5.3.1 割込みが可能にされる。 5.3.2 プロシージャ進行中ビットの状態から判断した
とおりに、xPCアドレスが現在の命令ストリーム・レジ
スタMBUFまたはEBUF PFnPCに戻され、プリフェッチが
そのアドレスから続行される。 5.3.3 xPCアドレスが新ストリーム・レジスタを通して
IF_PCレジスタに復元される。
ロセッサがメイン命令ストリームから実行されている
か、プロシージャ命令ストリームから実行されているか
に関係なく処理される。割込みと例外は優先順にサービ
スが受けられ、クリアされるまで持続している。トラッ
プ・ハンドラの開始アドレスは、下述するように、トラ
ップ・ハンドラの事前定義テーブルまでのベクトル番号
オフセットとして判断される。
プがある。すなわち、命令ストリームの中の特定の命令
と同期して引き起こされるものと、命令ストリームの中
の特定の命令と非同期に引き起こされるものである。割
込み、例外、トラップおよびフォールト(fault)の用
語は、本明細書では相互に使い分けて用いられている。
非同期割込みは、命令ストリームと同期して動作してい
ない、オン・チップまたはオフ・チップのハードウェア
によって引き起こされる。例えば、オン・チップ・タイ
マ/カウンタによって引き起こされる割込みは、オフ・
チップから引き起こされるハードウェア割込みやマスク
不能割込み(non−maskable interrupt)(NMI)と同
じように、非同期である。非同期割込みが引き起こされ
ると、プロセッサ・コンテキストが凍結され(froze
n)、すべてのトラップが割込み禁止され、ある種のプ
ロセッサ状況情報がストアされ、プロセッサは受け取っ
た特定の割込みに対応する割込みハンドラにベクトルを
向ける。割込みハンドラがその処理を完了すると、プロ
グラム実行は割込み発生時に実行中であったストリーム
の中の最後に完了した命令のあとに置かれた命令から続
けられる。
引き起こされる例外である。これらの例外は特定の命令
に関連して引き起こされ、問題の命令が実行されるまで
保留される。好適実施例では、同期例外はプリフェッチ
時、命令デコード時、または命令実行時に引き起こされ
る。プリフェッチ例外には、例えば、TLB不一致、その
他のVMU例外がある。デコード例外は、例えば、デコー
ド中の命令が違法命令であるか、プロセッサの現特権レ
ベル(privilege level)に一致していないと、引き起
こされる。実行例外は、例えば、ゼロによる除算といっ
た算術演算エラーが原因で引き起こされる。これらの例
外が起こると、好適実施例では、例外を引き起こした特
定命令と例外とを対応づけ、その命令が退避(retire)
されるときまでその状態が維持される。その時点で、以
前に完了した命令がすべて退避され、例外を引き起こし
た命令からの試行的結果があれば、試行的に実行された
後続の命令の試行的結果と同じように、フラッシュされ
る。そのあと、その命令で引き起こされた最高優先度例
外に対応する例外ハンドラに制御が渡される。
ト(CF_DET)274(図2)によってIデコード・ステー
ジで検出され、無条件コール命令その他の同期トラップ
と同じように処理される。つまり、ターゲット・アドレ
スが計算され、プリフェッチはそのときのプリフェッチ
待ち行列(EBUFまたはMBUF)まで続けられる。これと同
時に、その例外は命令と対応づけられて記録され、命令
が退避されるとき処理される。他のタイプの同期例外は
すべて、例外を引き起こした特定命令と対応づけられて
記録され、累積されるだけで、実行時に処理される。
ク・ユニット270に通知される。図3に示すように、こ
れらのラインはPCロジック・ユニット270内の割込み制
御ユニット363に通知するためのもので、NMIライン、IR
Qラインおよび1組の割込みレベル・ライン(LVL)から
なっている。NMIラインはマスク不能割込みを通知し、
外部ソースを起点としている。これは、ハードウェアリ
セットを除き最高優先度割込みである。IRQラインも外
部ソースを起点としており、外部デバイスがハードウェ
ア割込みをいつ要求したかを通知する。好適実施例で
は、外部から起こされるハードウェア割込みは最高32個
までユーザが定義することができ、割込みを要求した特
定外部デバイスは割込みレベル・ライン(LVL)上に割
込み番号(0−31)を送出する。メモリ・エラー・ライ
ンはMCU110によってアクティベート(活動化)され、様
々な種類のメモリ・エラーを通知する。その他の非同期
割込みライン(図示せず)も割込み制御ユニット363に
通知するために設けられている。これらには、タイマ/
カウンタ割込み、メモリ入出力(I/O)エラー割込み、
マシン・チェック割込み、およびパフォーマンス・モニ
タ割込みを要求するためのラインがある。非同期割込み
の各々は、下述する同期例外と同様に、対応する事前定
義トラップ番号が関連づけられている。これらのトラッ
プ番号は32個が32個のハードウェア割込みレベルと関連
づけられている。これらのトラップ番号のテーブルは割
込み制御ユニット363に維持されている。一般に、トラ
ップ番号が大きくなると、トラップの優先度が高くな
る。
されると、割込み制御ユニット363は割込み要求をINT
REQ/ACKライン340を経由してIEU104へ送出する。また、
割込み制御ユニット363はプリフェッチ一時中止信号を
ライン343を経由してPC制御ユニット362へ送信し、PC制
御ユニット362に命令をプリフェッチすることを中止さ
せる。IEU104はそのとき実行中の命令をすべてキャンセ
ルし、すべての試行的結果を中止するか、一部またはす
べての命令を完了させる。好適実施例では、そのとき実
行中の命令をすべてキャンセルすることによって、非同
期割込みに対する応答を高速化している。いずれの場合
も、実行PC制御ユニット366内のDPCは、IEU104が割込み
の受信を確認する前に、最後に完了し、退避された命令
に対応するように更新される。プリフェッチされてMBU
F、EBUF、TBUFおよびIFIFOユニット264に置かれている
他の命令もすべてキャンセルされる。
状態にあるときだけ、割込み受信確認信号をINT REQ/A
CKライン340を経由して割込み制御ユニット363へ送り返
す。この信号を受け取ると、割込み制御ユニット363
は、以下で説明するように、該当するトラップ・ハンド
ラにディスパッチする。
セットごとに4個が1組の内部例外ビット(図示せず)
をもっており、各ビットはセット内の各命令に対応づけ
られている。割込み制御ユニット363は各命令で見つか
ったとき、通知するトラップ番号も維持している。
VMUがTLB不一致または別のVMU例外を通知すると、この
情報はPCロジック・ユニット270へ、特に割込み制御ユ
ニット334へVMU制御ライン332、334を経由して送られ
る。割込み制御ユニット363は、この信号を受信する
と、以後のプリフェッチを一時中止するようにライン34
3を経由してPC制御ユニット362に通知する。これと同時
に、割込み制御ユニット363は、命令セットが送られる
先のプリフェッチ・バッファに関連するVM_MissまたはV
M_Excpビットのどちらか該当する方をセットする。その
あと、割込み制御ユニット363は、命令セットの中の命
令のどれも有効でないので、その命令セットに対応する
4個の内部例外標識ビット全部をセットし、問題を起こ
した命令セットの中の4命令の各々に対応して受信した
特定例外のトラップ番号をストアする。問題のある命令
より前の命令のシフトと実行は、問題の命令セットがIF
IFOユニット264内で最低レベルに達するまで通常通りに
続行される。
デコード・ユニット262またはIFIFOユニット264を通し
て命令をシフトしている途中で他の同期例外が検出され
ると、この情報も割込み制御ユニット363へ送られ、割
込み制御ユニット363は、例外を引き起こした命令に対
応する内部例外標識ビットをセットし、その例外に対応
するトラップ番号をストアする。プリフェッチ同期例外
の場合と同じように、問題を起こした命令より前の命令
のシフトと実行は、問題の命令セットがIFIFOユニット2
64内で最低レベルに達するまで、通常通りに続行され
る。
260、Iデコード・ユニット262またはIFIFOユニット264
を通して命令をシフトしている途中で検出される例外
は、ソフトウェア・トラップ命令の1タイプだけであ
る。ソフトウェア・トラップ命令は、制御フロー検出ユ
ニット(CF_DET)274によってIデコード・ステージで
検出される。一部の実施例では、他の形態の同期例外が
Iデコード・ステージで検出されるが、他の同期例外の
検出は、命令が命令実行ユニット104に到着するまで待
つようにするのが好ましい。このようにすれば、特権命
令を処理すると起こるようなある種の例外が、命令が実
効的に順序内で実効される前に変化するおそれのあるプ
ロセッサ状態に基づいて通知されるのが防止される。違
法命令のように、プロセッサ状態に左右されない例外は
Iデコード・ステージで検出可能であるが、すべての実
行前同期例外(VMU例外は別として)を同じロジックで
検出するようにすれば、最低限のハードウェアですむこ
とになる。また、そのような例外の処理は時間を重視す
ることがめったにないので、命令が命令実行ユニット10
4に届くまでの待ちによる時間浪費もない。
フロー検出ユニット(CF_DET)274によってIデコード
・ステージで検出される。割込み制御ユニット363内の
その命令に対応する内部例外標識ビットはセットされ、
0から127までの番号で、ソフトウェア・トラップ命令
の即値モード・フィールドに指定できるソフトウェア・
トラップ番号はトラップ命令に対応づけられてストアさ
れる。しかし、プリフェッチ同期例外と異なり、ソフト
ウェア・トラップは制御フロー命令だけでなく、同期例
外としても扱われるので、割込み制御ユニット363は、
ソフトウェア・トラップ命令が検出されたときプリフェ
ッチを一時中止するようにPC制御ユニット362に通知し
ない。その代わりに、命令がIFIFOユニット264を通して
シフトされるのと同時に、IFU102はトラップ・ハンドラ
をプリフェッチしてMBUF命令ストリーム・バッファに入
れる。
ると、割込み制御ユニット363はその命令セットの例外
標識ビットを4ビット・ベクトルとしてSYNCH_INT_INFO
ライン341経由でIEU104へ送り、命令セットの中で同期
例外の発生源とすでに判断されていた命令があれば、ど
の命令であるかを通知する。IEU104は即時に応答しない
で、命令セットの中のすべての命令が通常の方法でスケ
ジュールされるようにする。整数算術演算例外といった
別の例外は、実行時に引き起こされる場合がある。特権
命令が実行されたために起こる例外のように、マシンの
現在状態に左右される例外もこの時点で検出され、マシ
ンの状態が命令ストリーム内の以前のすべての命令に対
して最新となるようにするために、PSRに影響を与える
可能性のあるすべての命令(特殊な移動やトラップ命令
からのリターンなど)は強制的に順序内で実行される。
なんらかの同期命令の発生源となった命令が退避される
直前にあるときだけ、例外が起こったことが割込み制御
ユニット363に通知される。
た最初の命令に先行する命令ストリームに現れたすべて
の命令を退避し、命令ストリームにそのあとに現れ試行
的に実行された命令からの試行的結果をフラッシュす
る。例外を引き起こした特定の命令は、トラップから戻
ると再実行されるのが普通であるので、この命令もフラ
ッシュされる。そのあと、実行PC制御ユニット366内のI
F_PCは実際に退避された最後の命令に対応するように更
新され、例外が割込み制御ユニット363に通知される。
退避される命令セット(レジスタ224)の中に同期例外
を起こした命令があれば、どの命令であるかを示した新
しい4ビット・ベクトルを、命令セット内の最初の例外
の発生源を示した情報と一緒に、SYNCH_INT_INFOライン
341を経由して割込み制御ユニット363に返却する。IEU1
04から返却される4ビット例外ベクトルに入っている情
報は、割込み制御ユニット363からIEU104に渡された4
ビット例外ベクトルとIE104で引き起こされた例外を累
積したものである。プリフェッチまたはIデコード時に
検出された例外が原因で割込み制御ユニット363にすで
にストアされている情報があれば、その情報と一緒にIE
U104から割込み制御ユニット363に返却される情報の残
余部分は、割込み制御ユニット363が最高優先度同期例
外の内容とそのトラップ番号を判断するのに十分であ
る。
信されるか、あるいはゼロ以外の例外ベクトルがライン
341経由で受信された後、現DPCがリターン・アドレスと
して、特殊レジスタ・ブロック412(図4)の1つであ
るxPCレジスタに一時的にストアされる。現プロセッサ
状態レジスタ(PSR)は先のPSR(PPSR)レジスタにもス
トアされ、そして現状態比較レジスタ(CSR)が特殊レ
ジスタ・ブロック412の中の旧状態比較レジスタ(PCS
R)にセーブされる。
レジスタ・アドレスにオフセットを加えたものとして計
算される。PCロジック・ユニット270はトラップ用に2
つのベース・レジスタをもち、これらは共に特殊レジス
タ・ブロック412(図4)の一部であり、以前に実行さ
れた特殊移動命令によって初期化される。大部分のトラ
ップでは、ハンドラのアドレスを計算するために使用さ
れるベース・レジスタはトラップ・ベース・レジスタTB
Rである。
込みまたは例外を判断し、索引(look−up)テーブルを
通して、それに関連づけられたトラップ番号を判断す
る。これは、選択したベース・レジスタまでのオフセッ
トとして、1組のINT_OFFSETライン373を経由してプリ
フェッチPC制御ユニット364へ渡される。ベクトル・ア
ドレスは、オフセット・ビットを下位ビットとしてTBR
レジスタから得た上位ビットに連結するだけで求められ
るという利点がある。このため、加算器の遅延が防止さ
れる。(本明細書では、2'ビットとはi'番目のビットの
ことである。)例えば、トラップ番号が0から255まで
で、これを8ビット値で表すと、ハンドラ・アドレスは
8ビット・トラップ番号を22ビットのTBRストア値の最
後に連結すると求められる。トラップ番号に2桁の下位
ビットを付加すると、トラップ・ハンドラ・アドレスは
常にワード境界上に置かれることになる。このようにし
て作られた連結ハンドラ・アドレスは入力373の1つと
してプリフェッチ・セレクタ(PF_PC SEL)390(図
4)へ送られ、次のアドレスとして選択されて、そこか
ら命令がプリフェッチされる。TBRレジスタを使用した
トラップのベクトル・ハンドラ・アドレスはすべて1ワ
ードだけ離れている。従って、トラップ・ハンドラ・ア
ドレスにある命令は、長くなったトラップ処理ルーチン
への予備的ブランチ命令でなければならない。しかし、
トラップには、システム・パフォーマンスの低下を防止
するために、その扱いに注意が必要なものがいくつかあ
る。例えば、TLBトラップは高速に実行させる必要があ
る。そのような理由から、好適実施例では、予備的ブラ
ンチの費用を払わないで、小型のトラップ・ハンドラを
呼び出せるようにした高速トラップ・メカニズムが組み
込まれている。さらに、高速トラップ・ハンドラはメモ
リにも、例えば、オン・チップROMにも独立に配置させ
ることができるので、RAMの位置(ロケーション)に関
連するメモリ・システム問題がなくなる。
したVMU例外だけである。高速トラップの番号は他のト
ラップと区別され、0〜7の範囲になっている。しか
し、優先度はMMU例外と同じである。割込み制御ユニッ
ト363は、高速トラップがそのとき保留中の最高優先度
であると認めると、特殊レジスタ(FTB)から高速トラ
ップ・ベース・レジスタ(FTB)を選択し、トラップ・
オフセットと結合するためにライン416上に送出する。
ライン373'経由でプリフェッチ・セレクタ(PF_PC SE
L)390へ送られた結果のベクトル・アドレスは、FTBレ
ジスタからの上位22ビットを連結したもので、そのあと
に高速トラップ番号を表した3ビットが続き、そのあと
に7個のゼロ・ビットが続いている。従って、各高速ト
ラップ・アドレスは128バイト、つまり、32ワードだけ
離れている。呼び出されると、プロセッサは開始ワード
へブランチし、ブロックまたはそこから出たブランチ内
でプログラムを実行させる。32個またはそれ以下の命令
で実現できる標準的なTLB処理ルーチンのような、小さ
なプログラムの実行は、実際の実行処理ルーチンへの予
備的ブランチが回避されるので、通常のトラップよりも
高速化される。
っているが(つまり、4つのアドレス・ロケーションを
占有する)、注目すべきことは、命令が可変長になった
マイクロプロセッサでも高速トラップ・メカニズムが利
用できることである。この場合、高速トラップ・ベクト
ル・アドレス間には、マイクロプロセッサで使用できる
最短長の命令を少なくとも2つ、好ましくは32個の平均
サイズ命令を受け入れるだけの十分なスペースが設けら
れることは勿論である。勿論、マイクロプロセッサがト
ラップからのリターン命令を備えている場合には、ベク
トル・アドレス間には、ハンドラ内の少なくとも1つの
他の令令をその命令に置けるだけの十分なスペースを設
けておく必要がある。
ロセッサはカーネル・モードと割込み状態に入る。これ
と並行して、状態比較レジスタ(CSR)のコピーが以前
のキャリー状態レジスタ(PCSR)に置かれ、PSRのコピ
ーが以前のPSR(PPSR)にストアされる。カーネルと割
込み状態モードはプロセッサ状況レジスタ(PSR)内の
ビットで表される。現PSRの割込み状態ビットがセット
されると、シャドウ・レジスタまたはトラップ・レジス
タRT〔24〕〜RT〔31〕が上述および図7(B)に示すよ
うに、見えるようになる。割込みハンドラは新しいモー
ドをPSRに書き込むだけでカーネル・モードから出るこ
とができるが、割込み状態から出るためには、トラップ
からのリターン(RTT)命令を実行する方法だけが唯一
の方法である。
復元され、PPSRレジスタはPSRレジスタに復元されるの
で、PSR内の割込み状態ビットは自動的にクリアされ
る。プリフェッチ・セレクタ(PF_PC SEL)390は特殊
レジスタ・ブロック412の中の特殊レジスタxPCにストア
されたアドレスを次にそこからプリフェッチするアドレ
スとして選択する。xPCはインクリメンタ394とバス396
を通して、MBUF PFnPCまたはEBUF PFnPCのどちらか該
当する方に復元される。xPCをEBUF PFnPCに復元すべき
か、またはMBUF PFnPCに復元すべきかの判断は、復元
されたあとのPSRの「プロシージャ進行中」ビットに従
って行われる。
ジャ命令の両方のリターン・アドレスをストアするのに
同じ特殊レジスタxPCを使用しないことである。トラッ
プのリターン・アドレスは上述したように特殊レジスタ
xPCにストアされるが、プロシージャ命令のあとリータ
ンする先のアドレスは別の特殊レジスタuPCにストアさ
れる。従って、割込み状態は、プロセッサがプロシージ
ャ命令で呼び出されたエミュレーション・ストリームを
実行している間でも、使用可能のままになっている。他
方、例外処理ルーチンは、エミュレーション・ストリー
ムが完了したあと例外ハンドラへ戻るためのアドレスを
ストアする特殊レジスタがないので、いずれのプロシー
ジャ命令をも含んでいてはならない。
ラ、特に、CSR、PSR、リタンPC、およびある意味では
“A"レジスタ・セットra〔64〕〜ra〔31〕へディスパッ
チするとき自動的にバックアップがとられるが、他のコ
ンテキスト情報は保護されていない。例えば、浮動小数
点状況レジスタ(FSR)の内容は自動的にバックアップ
がとられない。トラップ・ハンドラがこれらのレジスタ
を変更するためには、独自のバック・アップを実行しな
ければならない。
行われるバックアップが制限されているために、トラッ
プのネストは自動的に行われない。トラップ・ハンドラ
は必要とするレジスタのバックアップをとり、割込み条
件をクリアし、トラップ処理のために必要な情報をシス
テム・レジスタから読み取り、その情報を適当に処理す
る必要がある。割込みは、トラップ・ハンドラへディス
パッチすると自動的に禁止される。処理を終えると、ハ
ンドラはバックアップをとったレジスタを復元し、再び
割込みを可能にし、RTT命令を実行して割込みから戻る
ことができる。
ハンドラを第1部分と第2部分に分割する必要がある。
第1部分では、割込みが禁止されている間に、特殊レジ
スタ移動命令を使用してxPCをコピーし、トラップ・ハ
ンドラが維持しているスタック上にプッシュしておく必
要がある。次に、特殊レジスタ移動命令を使用して、ト
ラップ・ハンドラの第2部分の先頭のアドレスをxPCに
移し、トラップからのリターン命令(RTT)を実行する
必要がある。RTTは割込み状態を取り除き(PPSRをPSRに
復元することによって)、制御をxPC内のアドレスを移
す。xPCには、ハンドラの第2部分のアドレスが入って
いる。第2部分はこの時点で割込みを可能にして、割込
み可能モードで例外の処理を続けることができる。注目
すべきことは、シャドウ・レジスタRT〔24〕〜RT〔31〕
はこのハンドラの第1部分でのみ見ることができ、第2
部分では見えないことである。従って、第2部分では、
ハンドラは、“A"レジスタ値がハンドラによって変更さ
れる可能性がある場合には、その値を予約しておく必要
がある。トラップ処理ルーチンは終わったときは、バッ
クアップにとったレジスタをすべて復元し、元のxPCを
トラップ・ハンドラ・スタップからポップし、それを特
殊レジスタ移動命令を使用してxPC特殊レジスタに戻し
て、別のRTTを実行する必要がある。これにより、制御
はメインまたはエミュレーション命令ストリームの中の
該当命令に返される。
トラップ番号、優先度および処理モードを示すものであ
る。
したものである。主要データ経路は、IFU102からの命令
/オペランド・データ・バスを始端としている。データ
・バスとして、即値オペランドはオペランド位置合わせ
ユニット470へ送られ、レジスタ・アレイ(REG ARRA
Y)・ユニット472に渡される。レジスタ・データはレジ
スタ・アレイ・ユニット472からレジスタ・アレイ出力
バス476を経由し、バイパス・ユニット474を通って、機
能ユニット分配バス480を経由して機能計算エレメント
(FU0-n)である機能ユニット4780-nの並列配列へ送ら
れる。機能ユニット4780-nによって生成されたデータ
は、出力バス482を経由してバイパス・ユニット474また
はレジスタ・アレイ・ユニット472または両方へ送り返
される。
タ経路部分が完成される。ロード/ストア・ユニット48
4はIEU104とCCU106間のデータ転送の管理を担当する。
具体的には、CCU106のデータ用キャッシュ134から取り
出したロード・データはロード/ストア・ユニット484
によってロード・データ・バス486を経由してレジスタ
・アレイ・ユニット472へ転送される。CCU106のデータ
用キャッシュにストアされるデータは機能ユニット分配
バス480から受信される。
送出、管理、およびその処理を行うことを担当する。本
発明の好適実施例では、IEU制御経路は複数の命令の並
行実行を管理する機能を備え、IEUデータ経路は、IEU10
4のほぼすべてのデータ経路エレメント間の複数のデー
タ転送を独立して行う機能を備えている。IEU制御経路
は命令ストリーム・バス124を経由して命令を受信する
と、それに応じて動作する。具体的には、命令セットは
Eデコード・ユニット490によって受信される。本発明
の好適実施例では、Eデコード・ユニット490はIFIFOマ
スタ・レジスタ216、224に保持されている両方の命令セ
ットを受信して、デコードする。8命令すべてのデコー
ドの結果は、キャリー・チェッカ(CRY CHKR)ユニッ
ト492、依存性チェッカ(DEP CHKR)ユニット494、レ
ジスタ改名ユニット(REG RENAME)496、命令発行(IS
SUER)ユニット498および退避制御ユニット(RETIRE C
LT)500へ送られる。
ニット490から制御ライン502を経由して、係属中の保留
されている8命令に関するデコード化情報を受信する。
キャリー・チェッカ・ユニット492の機能は、保留され
ている命令のうち、プロセッサ状況ワードのキャリー・
ビットに影響を与える、あるいはキャリー・ビットの状
態に左右される命令を識別することである。この制御情
報は制御ライン504を経由して命令発行ユニット498へ送
られる。
アレイ・ユニット472のレジスタを示しているデコード
化情報は、制御ライン506を経由して直接にレジスタ改
名ユニット496へ送られる。この情報は、依存性チェッ
カ・ユニット494へも送られる。依存性チェッカ・ユニ
ット494の機能は、保留状態の命令のどれがレジスタを
データの宛先として参照しているか、もしあれば、どの
命令がこれらの宛先レジスタのいずれかに依存している
かを判断することである。レジスタに依存する命令は、
制御ライン506を経由してレジスタ改名ユニット496へ送
られる制御信号によって識別される。
令の各々の特定の内容と機能を識別した制御情報を制御
ライン510を経由して命令発行ユニット498へ送る。命令
発行ユニット498はデータ経路資源、特に、保留状態の
命令の実行のためにどの機能ユニットが使用できるかを
判断することを担当する。アーキテクチャ100の好適実
施例によれば、命令発行ユニット498はデータ経路資源
が使用可能であること、キャリーとレジスタ依存関係の
制約を条件として、8個の保留状態命令のいずれかを順
序外で実行できるようにする。レジスタ改名ユニット49
6は、実行できるように適当に制約が解除された命令の
ビット・マップを制御ライン512を経由して命令発行ユ
ニット498へ送る。すでに実行された(完了した)命令
およびレジスタまたはキャリーに依存する命令は論理的
にビット・マップから除かれる。
うかに応じて、命令発行ユニット498は各システム・ク
ロック・サイクルに複数の命令の実行を開始することが
できる。機能ユニット4780-nの状況は状況バス514を経
由して命令発行ユニット498へ送られる。命令の実行を
開始し、開始後の実行管理を行うための制御信号は命令
発行ユニット498から制御ライン516を経由してレジスタ
改名ユニット496へ送られ、また選択的に機能ユニット4
780-nへ送られる。制御信号を受けると、レジスタ改名
ユニット496はレジスタ選択信号をレジスタ・アレイ・
アクセス制御バス518上に送出する。バス518上に送出さ
れた制御信号でどのレジスタが割込み可能にされたか
は、実行中の命令を選択することによって、およびレジ
スタ改名ユニット496がその特定命令によって参照され
たレジスタを判断することによって判断される。
には、制御ライン524上の制御信号を通してバイパス・
ユニット474の動作を制御する。バイパス制御ユニット5
20は機能ユニット4780-nの各々の状況をモニタし、制御
ライン522を経由してレジスタ改名ユニット496から送ら
れてきたレジスタ参照に関連して、データをレジスタ・
アレイ・ユニット472から機能ユニット4780-nへ送るべ
きかどうか、あるいは機能ユニット4780-nから出力され
るデータをバイパス・ユニツト474経由で機能ユニット
分配バス480へ即時に送って、命令発行ユニット498によ
って選択された新発行の命令の実行のために使用できる
かどうかを判断する。どちらの場合も、命令発行ユニッ
ト498は機能ユニット4780-nの各々への特定レジスタ・
データを選択的に使用可能にすることによって、機能ユ
ニット分配バス480から機能ユニット4780-nへデータを
送ることを直接に制御する。
00、制御フロー制御(CF CTL)ユニット528、および完
了制御(DONE CTL)ユニット540がある。退避制御ユニ
ット500は順序外で実行された命令の実行を無効または
確認するように動作する。ある命令が順序外で実行され
ると、先行命令もすべて退避されたならば、その命令
は、確認または退避されることができる。現セット中の
保留状態の8命令のどれが実行されたかの識別情報が制
御ライン542上に送出されると、その識別情報に基づい
て、退避制御ユニット500はバス518に接続された制御ラ
イン534上に制御御信号を送出して、レジスタ・アレイ
・ユニット472にストアされた結果データを順序外で実
行された命令の先行実行の結果として実効的に確認す
る。
インクリメント/サイズ制御信号を制御ライン344を経
由してIFU102へ送る。複数の命令を順序外で実行でき、
従って、同時に退避する準備状態に置くことができるの
で、退避制御ユニット500は同時に退避された命令数に
基づいてサイズ値を判断する。最後に、IFIFOマスタ・
レジスタ224のすべての命令が実行され、退避された場
合は、退避制御ユニット500はIFIFO読取り制御信号を制
御ライン342を経由してIFU102へ送って、IFIFOユニット
264のシフト・オペレーションを開始することにより、
Eデコード・ユニット490に追加の4命令を実行保留命
令として与える。
令の論理的ブランチ結果を検出するという、特定化され
た機能を備えている。制御フロー制御ユニット528は現
在保留中の条件付きブランチ命令の8ビット・ベクトル
IDをEデコード・ユニット490から制御ライン510を経由
して受信する。8ビット・ベクトル命令完了制御信号
は、同じように完了制御ユニット540から制御ライン542
を経由して受信される。この完了制御信号によって、制
御フロー制御ユニット528は、条件付きブランチ命令
が、条件付き制御フロー状況を判断するのに十分な個所
まで完了すると、それを判別することができる。保留中
の条件付きブランチ命令の制御フロー状況結果は、その
実行時に制御フロー制御ユニット528によってストアさ
れる。条件付き制御フロー命令の結果を判断するために
必要なデータは、レジスタ・アレイ・ユニット472内の
一時状況レジスタから制御ライン530を経由して得られ
る。各条件付き制御フロー命令が実行されると、制御フ
ロー制御ユニット528は新しい制御フロー結果信号を制
御ライン348を経由してIFU102へ送る。好適実施例で
は、この制御フロー結果信号は2個の8ビット・ベクト
ルを含んでおり、このベクトルは、保留されている可能
性のある8個の制御フロー命令のそれぞれのビット位置
別の状況結果が分かっているかどうか、また、ビット位
置の対応づけによって得られる対応する状況結果状態を
定義している。
の各々のオペレーションに関する実行状況をモニタする
ためのものである。機能ユニット4780-nのいずれかが命
令実行オペレーションの完了を通知すると、完了制御ユ
ニット540は対応する完了制御信号を制御ライン542上に
送出して、レジスタ改名ユニット496、命令発行ユニッ
ト498、退避制御ユニット500およびバイパス制御ユニッ
ト520にアラート(警告)する。
り、IEU104の制御の一貫性を向上している。命令を正し
く認識して、実行のためのスケジュールするためには、
個々の機能ユニット478o-nの特性を命令発行ユニット49
8に知らせる必要がある。機能ユニット478o-nは、必要
とする機能を実行するために必要な特定制御フロー・オ
ペレーションを判別し、実行することを担当する。従っ
て、命令発行ユニット498以外は、IEU制御ユニットに
は、命令の制御フロー処理を独立して知らせる必要はな
い。命令発行ユニット498と機能ユニット478o-nは共同
して、残りの制御フロー管理ユニット496、500、520、5
28、540に実行させる機能を必要な制御信号のプロンプ
トで知らせる。従って、機能ユニット478o-nの特定の制
御フロー・オペレーションの変更は、IEU104の制御オペ
レーションに影響しない。さらに、既存の機能ユニット
478o-nの機能を強化する場合や、拡張精度浮動小数点乗
算ユニットや拡張精度浮動小数点ALU、高速フーリェ計
算機能ユニット、三角関数計算ユニットなどの、別の機
能ユニット478o-nを1つまたは2つ以上を追加する場合
でも、命令発行ユニット498を若干変更するだけです
む。必要なる変更を行うには、Eデコード・ユニット49
0によって隔離された対応する命令フィールドに基づい
て、特定の命令を認識し、その命令と必要とする機能ユ
ニット478o-nとを関係づける必要がある。レジスタ・デ
ータの選択の制御、データのルーチング、命令完了と退
避は、機能ユニット478o-nの他の機能ユニットすべてに
対して実行される他のすべての命令の処理と矛盾がない
ようになっている。
アレイ・ユニット472である。しかし、本発明によれ
ば、IEUデータ経路内には、個々の機能用に最適化され
た並列データ経路がいくつか用意されている。主要デー
タ経路は整数と浮動小数点の2つである。各並列データ
経路内では、レジスタ・アレイ・ユニット472の一部が
そのデータ経路内で行われるデータ操作をサポートする
ようになっている。
けるデータ経路レジスタ・ファイル550の好適アーキテ
クチャの概要図である。データ経路レジスタ・ファイル
550は一時バッファ552、レジスタ・アレイ554、入力セ
レクタ559、および出力セレクタ556を含んでいる。最終
的にレジスタ・アレイ554へ送られるデータは、結合デ
ータ入力バス558'を経由して一時バッファ552によって
最初に受信されるのが代表例である。つまり、データ経
路レジスタ・ファイル550へ送られるデータはすべて入
力セレクタ559によって多重化されて、複数の入力バス5
58(好ましくは2つの)から入力バス558'上に送出され
る。制御バス518上に送出されたレジスタ選択およびイ
ネーブル制御信号は一時バッファ552内の受信データの
レジスタ・ロケーションを選択する。一時バッファ552
にストアされるデータを生成した命令が退避されると、
再び制御バス518上に送出された制御信号は一時バッフ
ァ552からレジスタ・アレイ554内の論理的に対応づけら
れたレジスタへデータ・バス560を経由してデータを転
送することを許可する。しかし、命令が退避される前
は、一時バッファ552にストアされたデータは一時バッ
ファにストアされたデータをデータ・バス560のバイパ
ス部分を経由して出力セレクタ556へ送ることにより、
後続の命令の実行時に使用することが可能である。制御
バス518経由で送られる制御信号によって制御される出
力セレクタ556は、一時バッファ552のレジスタからのデ
ータとレジスタ・アレイ554のレジスタからのデータの
どちらかを選択する。結果のデータはレジスタ・アレイ
出力バス564上に送出される。また、実行中の命令が完
了と同時に退避される場合は、つまり、その命令が順序
内で実行された場合は、結果データをバイパス延長部分
558"を経由して直接にレジスタ・アレイ554へ送るよう
に指示することができる。
・ファイル550は2つのレジスタ操作を同時に行えるよ
うになっている。従って、入力バス558を通して2つの
全レジスタ幅データ値を一時バッファ552に書き込むこ
とができる。内部的には、一時バッファ552はマルチプ
レクサ配列になっているので、入力データを一時バッフ
ァ552内の任意の2レジスタへ同時に送ることができ
る。同様に、内部マルチプレクサにより一時バッファ55
2の任意の5レジスタを選択して、データをバス560上に
出力することができる。レジスタ・アレイ554は同じよ
うに人出力マルチプレクサを備えているので、2つのレ
ジスタを選択して、それぞれのデータを同時にバス560
から受信することも、5つのレジスタ・を選択してバス
562経由で送ることもできる。最後に、出力セレクタ556
は、バス560、562から受信した10レジスタ・データ値の
うち任意の5つがレジスタ・アレイ出力バス564上に同
時に出力されるように実現するのが好ましい。
にその概要が示されている。レジスタ・セット552'は8
個のシングル・ワード(32ビット)レジスタI0RD、I1R
D...I7RDから構成されている。レジスタ・セット552'は
4個のダブル・ワード・レジスタI0RD、I0RD+1(I0RD
4)、I1RD、I1RD+1(ISRD...I3RD、I3RD+1(I7RD)
のセットとして使用することも可能である。
内の各レジスタを重複して設ける代わりに、一時バッフ
ァ・レジスタ・セット552内のレジスタは2個のIFIFOマ
スタ・レジスタ216、224内のそれぞれの命令の相対ロケ
ーションに基づいて、レジスタ改名ユニット496によっ
て参照される。本アーキテクチャ100で実現される各命
令は、最高2つまでのレジスタまたは1つのダブル・ワ
ード・レジスタを出力として参照して、命令の実行によ
って生成されたデータの宛先とすることができる。代表
例として、命令は1つの出力レジスタだけを参照する。
従って、その位置を図6(C)に示しているように、8
個の保留中命令のうち1つの出力レジスタを参照する命
令2(I2)の場合は、データ宛先レジスタI2RDが選択さ
れて、命令の実行によって生成されたデータを受け入れ
る。命令I2によって生成されたデータが後続の命令、例
えば、I5によって使用される場合は、I2RDレジスタにス
トアされたデータはバス560を経由して転送され、結果
のデータは一時バッファ552に送り返されて、I5RDで示
したレジスタにストアされる。特に、命令I5は命令I2に
よって決まるので、命令I5は、I2からの結果データが得
られるまでは実行することができない。しかし、理解さ
れるように、命令I5は必要とする入力データをレジスタ
・セット552'の命令I2のデータ・ロケーションから得れ
ば、命令I2の退避前に実行することが可能である。
データは、退避個所の命令の論理位置から判断されて、
レジスタ・アレイ554内のレジスタ・ロケーションに書
かれる。すなわち、退避制御ユニット500は、制御ライ
ン510経由でEデコード・ユニット490から与えれたレジ
スタ参照フィールド・データからレジスタ・アレイ内の
宛先レジスタのアドレスを判断する。命令I0-3が退避さ
れると、I4RD−I7RDに入っている値は、IFIFOユニット2
64のシフトと同時にシフトされて、I0RD−I3RDに移され
る。
さらに複雑になる。本発明の好適実施例によれば、ロケ
ーションI2RDとI6RDの組合わせが、命令I2が退避される
か、さもなければキャンセルまで、その命令から得た結
果データをストアしておくために使用される。好適実施
例では、命令I4-7の実行は、命令I0-3のいずれかによる
ダブル・ワード出力の参照がレジスタ改名ユニット496
によって検出された場合には、保留される。これによ
り、レジスタ・セット552'全体をダブル・ワード・レジ
スタのシングル・ランクとして使用することが可能にな
る。命令I0-3が退避されると、レジスタ・セット552'は
シングル・ワード・レジスタの2ランクとして再び使用
するこができる。さらに、いずれかの命令I4-7の実行
は、ダブル・ワード出力レジスタが必要な場合には、命
令が対応するI0-3にシフトされるまで保留される。
7(B)に示されている。本発明の好適実施例によれ
ば、整数データ経路用のレジスタ・アレイ554は40個の3
2ビット幅レジスタから構成されている。このレジスタ
・セットはレジスタ・セット“A"を構成し、ベース・レ
ジスタ・セットra〔0..23〕565、汎用レジスタra〔24..
31〕566からなるトップ・セット、および8個の汎用ト
ラップ・レジスタrt〔24..31〕567からなるシャドウ・
レジスタ・セットとして編成されている。通常のオペレ
ーションでは、レジスタra〔0..31〕565、566は整数デ
ータ経路用のレジスタ・アレイのアクティブ“A"レジス
タ・セットを構成している。
4..31〕567をスワップしてアクティブ・レジスタ・セッ
ト“A"に移しておけば、レジスタra〔0..23〕565のアク
ティブ・ベース・セットと一緒にアクセスすることが可
能である。“A"レジスタ・セットのこの構成は、割込み
の受信が確認されるか、例外トラップ処理ルーチンが実
行されると、選択される。レジスタ・セット“A"のこの
状態は、割込み許可命令の実行またはトラップからのリ
ターン命令の実行によって図7(A)に示す状態に明示
によって戻るまで維持される。
実施例では、浮動小数点データ経路は図8にその概要を
示すように浮動小数点レジスタ・セット572を使用す
る。浮動小数点レジスタ・セット572は、各々が64ビッ
ト幅の32個のレジスタrf〔0..31〕から構成されてい
る。浮動小数点レジスタ・セット572は整数レジスタrb
〔0..31〕の“B"セットとして論理的に参照することも
可能である。アーキテクチャ100では、この“B"セット
のレジスタは浮動小数点レジスタrf〔0..31〕の各々の
下位32ビットに相当している。
タ・セット574が図9に示すように設けられている。こ
れは、ブール演算の論理結果をストアする。このブール
・レジスタ・セット574は32個の1ビット・レジスタrc
〔0..31〕から構成されている。ブール・レジスタ・セ
ット574のオペレーションは、ブール演算の結果をブー
ル・レジスタ・セット574の任意の命令選択レジスタへ
送ることができる点でユニークである。これは、等し
い、等しくない、より大、その他単純なブール状況値な
どの条件を表す1ビット・フラグをストアするシングル
・プロセッサ状況ワード・レジスタを使用するのと対照
的である。
・セット574は、双方共、図6(B)に示す一時バッフ
ァ552'と同じアーキテクチャの一時バッファによって補
数がとられる。基本的違いは、一時バッファのレジスタ
の幅が補数をとるレジスタ・セット572、574の幅と同じ
なるように定義されていることである。好適実施例で
は、幅はそれぞれ64ビットと1ビットになっている。
ニット472に少なくとも論理的に存在している。図7
(C)に示すように、レジスタ・アレイ・ユニット472
に物理的に存在するレジスタはカーネル・スタック・ポ
インタ(kernelstackpointer)568、プロセッサ状態レ
ジスタ(PSR)569、旧プロセッサ状態レジスタ(PPSR)
570および8個の一時プロセッサ状態レジスタの配列(t
PSR〔0..7〕)571からなっている。残りの特殊レジスタ
はアーキテクチャ100の各所に分散している。特殊アド
レスおよびデータ・バス354はデータを選択して、特殊
レジスタおよび“A"と“B"レジスタ・セット間で転送す
るためのものである。特殊レジスタ移動命令は“A"また
は“B"レジスタ・セットからレジスタを選択し、転送の
方向を選択し、特殊レジスタのアドレスIDを指定するた
めのものである。
サ状態レジスタは、他の特殊レジスタとは異なってい
る。カーネル・スタック・ポインタは、カーネル状態に
あるとき、標準のレジスタ間移動命令を実行することに
よってアクセス可能である。一時プロセッサ状態レジス
タは直接にアクセスすることはできない。その代わり
に、このレジスタ配列はプロセッサ状態レジスタの値を
伝播して、順序外で実行される命令で使用できるように
する縦承メカニズム(inheritance mechanism)を実現
するために使用される。初期伝播値はプロセッサ状態レ
ジスタの値である。つまり、最後に退避された命令から
得た値である。この初期値は一時プロセッサ状態レジス
タから前方向に伝播され、順序外で実行される命令が対
応する位置にある一時プロセッサ状態レジスタ内の値を
アクセスできるようにする。命令が依存し、変更できる
条件コード・ビットは、その命令がもつ特性によって定
義される。命令が依存関係、レジスタまたは条件コード
によって制約されないことが、依存性チェッカ・ユニッ
ト494とキャリー・チェッカ・チェッカ492によって判断
された場合は、命令は順序外で実行することができる。
プロセッサ状態レジスタの条件コード・ビットの変更は
論理的に対応する一時プロセッサ状態レジスタに指示さ
れる。具体的には、変更の可能性があるビットだけが一
時プロセッサ状態レジスタに入っている値に適用され、
上位のすべての一時プロセッサ状態レジスタに伝播され
る。その結果、順序外で実行されるすべての命令は介在
するPSR変更命令によって適切に変更されたプロセッサ
状態レジスタ値から実行される。命令が退避されたとき
は、対応する一時プロセッサ状態レジスタ値だけがPSR
レジスタ569に転送される。 その他の特殊レジスタは〔表2〕に説明されている。
データ経路は図10に示されている。説明の便宜上、整数
データ経路580と結ばれる多数の制御経路は図には示し
ていない。これらの接続関係は図5を参照して説明した
とおりである。
2、584および整数ロード/ストア・ユニット586から得
られる。整数即値(integer immediate)データ値は、
最初は命令埋込み(embedded)データ・フィールドとし
て与えられ、バス588経由でオペランド・ユニット470か
ら得られる。位置合わせユニット582は整数データ値を
隔離し、その結果値を出力バス590を経由してマルチプ
レクサ592へ送られる。マルチプレクサ592への別の入力
は特殊レジスタ・アドレスとデータ・バス354である。
ランドも、データ・バス594経由でオペランド・ユニッ
ト570から得られる。これらの値は、出力バス596上に送
出される前に、位置合わせユニット584によって再度右
寄せされる。
ス598を通してCCU106と双方向でやりとりする。IEU104
へのインバウンド・データは整数ロード/ストア・ユニ
ット586から入力データ・バス600を経由して入力ラッチ
602へ転送される。マルチプレクサ592とラッチ602から
の出力データは、マルチプレクサ608のマルチプレクサ
入力バス604、606上に送出される。機能ユニット出力バ
ス482'からのデータもマルチプレクサ608に送られる。
このマルチプレクサ608はアーキテクチャ100の好適実施
例では、データを同時に出力マルチプレクサ・バス610
へ送る2つの通路を備えている。さらに、マルチプレク
サ608を通るデータ転送は、システム・クロックの各半
サイクル以内に完了することができる。本アーキテクチ
ャ100で実現される大部分の命令は、1つの宛先レジス
タを利用するので、最大4つまでの命令によって各シス
テム・クロック・サイクルの間データを一時バッファ61
2へ送ることができる。
ス616を経由して整数レジスタ・アレイ614へ、あるいは
代替一時バッファ・レジスタ・バス618を経由して出力
マルチプレクサ620へ転送することができる。整数レジ
スタ配列出力バス622は整数レジスタ・データをマルチ
プレクサ620へ転送することができる。一時バッファ612
と整数レジスタ・アレイ614に接続された出力バスは、
それぞれ5個のレジスタ値を同時に出力することを可能
にする。つまり、合計5個までのソース・レジスタを参
照する2つの命令を同時に出すことができる。一時バッ
ファ612、整数レジスタ・アレイ614およびマルチプレク
サ620は、アウトバウンド・レジスタ・データの転送を
半システム・クロック・サイクルごとに行うことを可能
にする。従って、最高4個までの整数および浮動小数点
命令を各クロック・サイクルの間に出すことができる。
ータ値を整数レジスタ・アレイ614から、あるいは一時
バッファ612から直接に選択する働きをする。これによ
り、以前に順序外で実行された命令に依存する順序外実
行命令をIEU104によって実行させることができる。これ
により、保留状態の命令を順序外で実行することによっ
てIEU整数データ経路の実行スループット能力を最大化
すると共に、順序外のデータ結果を、実行され退避され
た命令から得たデータ結果から正確に分離するという2
目標を容易に達成することができる。マシンの正確な状
態を復元する必要のあるような割込みや他の例外条件が
起こると、本発明によれば、一時バッファ612に存在す
るデータ値を簡単にクリアすることができる。従って、
整数レジスタ・アレイ614は、割込みまたは他の例外条
件が発生する以前に完了し、退避された命令の実行によ
ってのみ得られたデータ値を正確に収めたままになって
いる。
レーション時に選択されたレジスタ・データ値は最高5
つまでがマルチプレクサ出力バス624を経由してバイパ
ス・ユニット626へ送られる。このバイパス・ユニット6
26は、基本的に、マルチプレクサが並列の配列からな
り、その入力のいずれかに現れたデータをその出力のい
ずれかへ送ることができる。バイパス・ユニット626の
入力は、マルチプレクサ592から出力バス604を経由する
特殊レジスタ・アドレス指定データ値または即値の整数
値、バス624上に送出される最高5つまでのレジスタ・
データ値、整数ロード/ストア・ユニット586からダブ
ル整数バス600を経由するロード・オペランド・デー
タ、その出力バス596を経由して位置合わせユニット584
から得た即値オペランド値、最後に、機能ユニット出力
バス482からのバイパス・データ経路からなっている。
このバイパス経路とデータ・バス482はシステム・クロ
ック・サイクルごとに4個のレジスタ値を同時に転送す
ることができる。
タ・バスに接続された整数バイパス・バス628上に出力
されて、最高5つまでのレジスタ・データ値を同時に転
送する機能をもつ2つのオペランド・データ・バスと、
整数ロード/ストア・ユニット586へデータを送るため
に使用されるストア・データ・バス632へ送られる。
のレジスタ値を整数データ通路に設けられた機能ユニッ
トへ送ることを可能にする並列のマルチプレクサ配列に
よって実現される。具体的には、ルータ・ユニット634
はバイパス・ユニット626からバス630を経由して送られ
てきた5個のレジスタ・データ値、アドレス・バス352
を経由して送られてきた現IF_PCアドレス値、PC制御ユ
ニット362によって判断され、ライン378'上に送出され
た制御フロー・オフセット値を受信する。ルータ・ユニ
ット634は、浮動小数点データ経路内に設けられたバイ
パス・ユニット626から取り出されたオペランド・デー
タ値をデータ・バス636を経由して受信することもでき
る(オプション)。
データ値は、特殊レジスタ・アドレスおよびデータ・バ
ス354上を転送されて、機能ユニット640、642、644へ送
られる。具体的には、ルータ・ユニット634は最高3つ
までのレジスタ・オペランド値をルータ出力バス646、6
48、650を経由して機能ユニット640、642、644の各々へ
送る機能を備えている。本アーキテクチャ100の一般的
アーキテクチャによれば、最高2つまでの命令を同時に
機能ユニット640、642、644に対して出すことが可能で
ある。本発明の好適実施例によれば、3つの専用整数機
能ユニットに、それぞれプログラマブル・シフト機能と
2つの算術演算ロジック・ユニット機能をもたせること
ができる。
フタ機能ユニット640はそれぞれの出力レジスタ・デー
タを機能ユニット・バス482I上に送出する。ALU0とシフ
タ機能ユニット644、640から得た出力データも浮動小数
点データ経路に接続された共用整数機能ユニット・バス
650上に送出される。類似の浮動小数点機能ユニット出
力値データ・バス652が浮動小数点データ経路から機能
ユニット出力バス482'へ設けられている。
整数ロード/ストア・ユニット586のデータ操作の両方
をサポートするために仮想アドレス値を生成する場合に
も使用される。ALU0機能ユニット644によって計算され
た仮想アドレス値はIFU102のターゲット・アドレス・バ
ス346とCCU106の両方に接続された出力バス654上に送出
され、実行ユニットの物理アドレス(EX PADDR)が得
られる。ラッチ656は、ALU0機能ユニット644によって生
成されたアドレスの仮想化部分をストアするためのもの
である。アドレスのこの仮想化部分は出力バス658上に
送出されて、VMU108へ送られる。
る。初期データは、この場合も、即値整数オペランド・
バス588、即値オペランド・バス594および特殊レジスタ
・アドレス・データ・バス354を含む、複数のソースか
ら受信される。外部データの最終的ソースは外部データ
・バス598を通してCCU106に接続された浮動小数点ロー
ド/ストア・ユニット662である。
668を経由してマルチプレクサ666に渡す前に整数データ
・フィールドを右寄せする働きをする位置合わせユニッ
ト664によって受信される。マルチプレクサ666は特殊レ
ジスタ・アドレス・データ・バス354も受信する。即値
オペランドは第2の位置合わせユニット670へ送られ、
右寄せされてから出力バス672上に送出される。浮動小
数点ロード/ストア・ユニット662からのインバウンド
・データ(inbound data)は、ロード・データ・バス6
76からラッチ674によって受信される。マルチプレクサ6
66、ラッチ674および機能ユニット・データ・リターン
・バス482"からのデータはマルチプレクサ678の入力か
ら受信される。マルチプレクサ678は選択可能なデータ
経路を備え、2つのレジスタ・データ値がシステム・ク
ロックの半サイクルごとに、マルチプレクサ出力バス68
2を経由して一時バッファ680に書き込まれることを可能
にする。一時バッファ680は図6(B)に示す一時バッ
ファ552と論理的に同じレジスタ・セットを備えてい
る。一時バッファ680はさらに、最高5個までのレジス
タ・データ値を一時バッファ680から読み取って、デー
タ・バス686を経由して浮動小数点レジスタ・アレイ684
と、出力データ・バス690を経由して出力マルチプレク
サ688へ送ることができる。マルチプレクサ688は、デー
タ・バス692を経由して、浮動小数点レジスタ・アレイ6
84から最高5個までのレジスタ・データ値も同時に受信
する。マルチプレクサ688は最高5個までのレジスタ・
データ値を選択して、データ・バス696を経由してバイ
パス・ユニット694へ同時に転送する働きをする。バイ
パス・ユニット694は、データ・バス672、マルチプレク
サ666からの出力データ・バス698、ロード・データ・バ
ス676および機能ユニット・データ・リターン・バス48
2"のバイパス延長部分を経由して、位置合わせユニット
670から与えられた即値オペランド値も受信する。バイ
パス・ユニット694は最高5個までのレジスタ・オペラ
ンド・データ値を同時に選択して、バイパス・ユニット
出力バス700、浮動小数点ロード/ストア・ユニット662
に接続されたストア・データ・バス702、および整数デ
ータ経路580のルータ・ユニット634に接続された浮動小
数点バイパス・バス636上に出力するように働く。
ット出力バス700と整数データ経路バイパス・バス628と
それぞれの機能ユニット712、714、716に接続された機
能ユニット入力バス706、708、710との間で同時にデー
タ経路を選択できる機能を備えている。アーキテクチャ
100の好適実施例による入力バス706、708、710の各々
は、最高3個までのレジスタ・オペランド・データ値を
機能ユニット712、714、716の各々へ同時に転送するこ
とが可能である。これらの機能ユニット712、714、716
の出力バスは機能ユニット・データ・リターン・バス48
2"に結合され、データをレジスタ・アレイ入力マルチプ
レクサ678へ戻すようになっている。整数データ経路機
能ユニット出力バス650を、機能ユニット・データ・リ
ターン・バス482"に接続するために設けることも可能で
ある。本発明のアーキテクチャ100によれば、マルチプ
レクサ機能ユニット712と浮動小数点ALU714の機能ユニ
ット出力バスを浮動小数点データ経路機能ユニット・バ
ス652を経由して整数データ経路500の機能ユニット・デ
ータ・リターン・バス482"に接続することが可能であ
る。
のデータ経路720は基本的に2種類の命令の実行をサポ
ートするために利用される。最初のタイプは、オペラン
ド比較命令であり、この命令では、整数レジスタ・セッ
トと浮動小数点レジスタ・セットから選択された、ある
いは即値オペランドとして与えられた2つのオペランド
が、ALU機能ユニットの1つで整数と浮動小数点データ
経路を減算することによって比較される。この比較は、
ALU機能ユニット642、644、714、716のいずかによる減
算によって行われ、その結果の符号とゼロ状況ビットは
入力セレクタと比較演算子結合ユニット722へ送られ
る。このユニット722は、制御信号を指定した命令をE
デコード・ユニット490から受け取ると、ALU機能ユニッ
ト642、644、714、716の出力を選択し、符号およびゼロ
・ビットを結合し、ブール比較結果値を抽出する。出力
バス723を通して比較演算の結果を入力マルチプレクサ7
26とバイパス・ユニット742へ同時に転送することがで
きる。整数および浮動小数点データ経路と同じように、
バイパス・ユニット742は並列のマルチプレクサ配列と
して実現され、バイパス・ユニット742の入力間で複数
のデータ経路を選択して、複数の出力と結ぶことができ
る。バイパス・ユニット742の他の人力はブール演算結
果リターン・データ・バス724とデータ・バス744上の2
つのブール・オペランドからなっている。バイパス・ユ
ニット742は、最高2つまでの同時に実行中のブール命
令を表したブール・オペランドを、オペランド・バス74
8を経由してブール演算機能ユニット746へ転送すること
ができる。また、バイパス・ユニット742は最高2個ま
でのシングル・ビット・ブール・オペランド・ビット
(CF0、CF1)を制御フロー結果制御ライン750、752を経
由して同時に転送することができる。
3とブール結果バス724上に送出された比較およびブール
演算結果値を、その入力として受信する入力マルチプレ
クサ726を含んでいる。このバス724は最高2個までのブ
ール結果ビットを同時にマルチプレクサ726へ転送する
ことができる。さらに、最高2個までの比較結果ビット
をバス723を経由してマルチプレクサ726へ転送すること
ができる。マルチプレクサ726はマルチプレクサの入力
端に現れた任意の2個の信号ビットをマルチプレクサの
出力端を経由して、システム・クロックの各半サイクル
時にブール演算一時バッファ728へ転送することができ
る。一時バッファ728は、2つの重要な点が異なること
を除けば、図6(B)に示したレジスタ・セット552'と
論理的に同じである。第1の相違点は、一時バッファ72
8内の各レジスタ・エントリがシングル・ビットからな
ることである。第2の相違点は、8個の保留中命令スロ
ットの各々に1つのレジスタだけが設けられていること
である。これは、ブール演算の結果全部が定義によって
1つの結果ビットによって定義されるためである。
を同時に出力する。これにより、各々2つのソース・レ
ジスタへのアクセスを必要とする2個のブール命令を同
時に実行させることができる。4個のブール・レジスタ
値はシステム・クロックの各半サイクルごとにオペラン
ド・バス736上に送出し、マルチプレクサ738へあるいは
ブール・オペランド・データ・バス734を経由してブー
ル・レジスタ・アレイ732へ転送することができる。ブ
ール・レジスタ・アレイ732は、図9に論理的に示すよ
うに、1個の32ビット幅データ・レジスタであり、任意
に組み合わせた最高4個までのシングル・ビット・ロケ
ーションを、一時バッファ728からのデータで修正し、
システム・クロックの各半サイクルごとにブール・レジ
スタ・アレイ732から読み取って出力バス740上に送出す
ることができる。マルチプレクサ738はバス736、740経
由でその出力端から受信したブール・オペランドの任意
のペアを、オペランド出力バス744上に送出してバイパ
ス・ユニット742へ転送する。
てブール演算を幅広く実行する機能を備えている。比較
命令の場合には、ソース値は整数および浮動小数点レジ
スタ・セットのいずれかから得たペアのオペランドとIE
U104へ送られる任意の即値オペランドであり、ブール命
令の場合は、ブール・レジスタ・オペランドの任意の2
つである。〔表3〕と〔表4〕は、本発明のアーキテク
チャ100の好適実施例における論理比較演算を示すもの
である。〔表5〕は本発明のアーキテクチャ100の好適
実施例における直接ブール演算を示すものである。〔表
2〕−〔表5〕に示されている命令条件コードと機能コ
ードは対応する命令のセグメントを表している。また、
命令はペアのソース・オペランド・レジスタと、対応す
るブール演算結果をストアするための宛先ブール・レジ
スタを指定する。
のである。データ経路580、660に別々に示されている
が、ロード/ストア・ユニット586、662は1つの共用ロ
ード/ストア・ユニット760として実現するのが好まし
い。それぞれのデータ経路580、660からのインタフェー
スはアドレス・バス762およびロードとストア・データ
・バス764(600、676)、766(632、702)を経由してい
る。
ドレスは、IFU102およびIEU104の残り部分で使用される
仮想アドレスとは対照的に、物理アドレスである。IFU1
02は仮想アドレスで動作し、CCU106とVMU108間の調整に
依存して物理アドレスを生成するのに対し、IEU104では
ロード/ストア・ユニット760を物理アドレス・モード
で直接に動作させる必要がある。この要件が必要になる
のは、順序外で実行されるために、物理アドレス・デー
タとストア・オペレーションがオーバラップするような
命令が存在する場合、およびCCU106からロード/ストア
・ユニット760への順序外のデータ・リターンが存在す
る場合に、データ保全性を保つためである。データ保全
性を保つために、ロード/ストア・ユニット760はスト
ア命令がIEU104によって退避されるまで、ストア命令か
ら得たデータをバッファに置いておく。その結果、ロー
ド/ストア・ユニット760によってバッファに置かれた
ストア・データはロード/ストア・ユニット760に1つ
だけ存在することができる。実行されたが退避されてい
ないストア命令と同じ物理アドレスを参照するロード命
令は、ストア命令が実際に退避されるまで実効が遅延さ
れる。その時点で、ストア・データをロード/ストア・
ユニット760からCCU106へ転送し、CCUデータ・ロード・
オペレーションの実行によって即時にロード・バックす
ることができる。
ストア・アドレス・バス762上に送出される。ロード・
アドレスは、一般的には、ロード・アドレス・レジスタ
7683-0にストアされる。ストア・アドレスはストア・ア
ドレス・レジスタ7703-0にラッチされる。ロード/スト
ア制御ユニット774は命令発行ユニット498から受信した
制御信号を受けて動作し、ロード・アドレスとストア・
アドレスをレジスタ7683-0、7703-0にラッチすることを
調整する。ロード/ストア制御ユニット774はロード・
アドレスをラッチするための制御信号を制御ライン778
上に送出し、ストア・アドレスをラッチするための制御
信号を制御ライン780上に送出する。ストア・データは
ストア・データ・レジスタ・セット7823-0の論理的に対
応するスロットにはストア・アドレスをラッチするのと
同時にラッチされる。4x4x32ビット幅アドレス比較ユニ
ット772には、ロードおよびストア・アドレス・レジス
タ7683-0、7703-0に入っているアドレスの各々が同時に
入力される。システム・クロックの各半サイクル時の完
全マトリックス・アドレス比較の実行は、制御ライン77
6を介してロード/ストア制御ユニット774によって制御
される。ストア・アドレスに一致するロード・アドレス
の存在と論理ロケーションは、制御ライン776を経由し
てロード/ストア制御ユニット774へ送られる。
トアがない場合は、ロード・アドレスは、CCUロード・
オペレーションの開始と同時に、バス762から直接にア
ドレス・セレクタ786へバイパスされる。しかし、スト
ア・データが保留されている場合は、ロード・アドレス
は使用可能なロード・アドレス・ラッチ7683-0にラッチ
される。対応するストア・データ命令が退避されるとの
制御信号を退避制御ユニット500から受信すると、ロー
ド/ストア制御ユニット774はCCUデータ転送操作を開始
し、制御ライン784を通してCCU106へのアクセスの仲裁
を行う。CCU106がレディ(ready)を通知すると、ロー
ド/ストア制御ユニット774はCCU物理アドレスをCCU P
ADDRアドレス・バス788上に送出するようにアドレス・
セレクタ786に指示する。このアドレスはアドレス・バ
ス790を経由して対応するストア・レジスタ7703-0から
得られる。対応するストア・データ・レジスタ7823-0か
らのデータはCCUデータ・バス792上に送出される。
ロード/ストア制御ユニット774はロード・アドレス・
ラッチ7683-0の1つが要求されたロード・アドレスをラ
ッチすることを許可する。選択された特定のラッチ768
3-0は関係命令セット内のロード命令の位置に論理的に
対応している。命令発行ユニット498は保留中の可能性
のある2命令セットのどちらかの中のロード命令を示し
ている5ビット・ベクトルをロード/ストア制御ユニッ
ト774へ渡す。コンパレータ772が一致するストア・アド
レスを示していない場合は、ロード・アドレスはアドレ
ス・バス794を経由してアドレス・セレクタ786へ送ら
れ、CCU PADDRアドレス・バス788上に出力される。ア
ドレスの提供は、ロード/ストア制御ユニット774とCCU
106間でやりとりされるCCU要求とレディ制御信号に従っ
て行われる。実行ID値(ExID値)もロード/ストア制御
ユニット774によって準備されてCCU106に対して出さ
れ、CCU106がExID値を含む要求データをそのあとで返却
するときロード要求を識別する。このID値は4ビット・
ベクトルからなり、現ロード要求を出したそれぞれのロ
ード・アドレス・ラッチ7683-0を固有ビットで指定して
いる。5番目のビットはロード命令を収めている命令セ
ットを識別するために使用される。このID値は、従っ
て、命令発行ユニット498からロード要求と一緒に送ら
れるビット・ベクトルと同じである。
CCU106からロード/ストア制御ユニット774へ通知され
ると、ロード/ストア制御ユニット774は、位置合わせ
ユニットがデータを受信し、それをロード・データ・バ
ス764上に送出することを許可する。位置合わせユニッ
ト798はロード・データを右寄せする働きをする。
トア制御ユニット774はCCU106からExID値を受信する。
他方、ロード/ストア制御ユニット774はロード・デー
タがロード・データ・バス764上に送出されることを知
らせる制御信号を命令発行ユニット498へ送り、さら
に、どのロード命令に対してロード・データが返却され
るのかを示したビット・ベクトルを返却する。
を、図14に示したタイミング図と関連づけて説明する。
図14に示した命令の実行タイミングは本発明のオペレー
ションを例示したもので、種々態様に変更可能であるこ
とは勿論である。
ク・サイクルP0-6のシーケンスを示している。各プロセ
ッサ・サイクルは内部TサイクルT。から始まる。本発
明の好適実施例によるアーキテクチャ100では、各プロ
セッサ・サイクルは2つのTサイクルからなっている。
物理アドレスを生成するように動作する。この物理アド
レスはCCU106へ送られ、命令用キャッシュ・アクセス・
オペレーションが開始される。要求された命令セットが
命令用キャッシュ132にあると、命令セットはプロセッ
サ・サイクル1のほぼ中間でIFU102へ戻される。そのあ
と、IFU102はプリフェッチ・バッファ・ユニット260とI
FIFOユニット264を経由する命令セットの転送を管理
し、転送された命令セットはまずIEU104への実行のため
に渡される。
け取って、プロセッサ・サイクル1が完了する前にデコ
ードする。Eデコード・ユニット490は、好適アーキテ
クチャ100では、命令ストリーム・バス124を経由して受
け取ったすべての有効命令を並列に直接デコードする機
能を備えた順列組合せ理論に基づくロジック・ブロック
として実現されている。アーキテクチヤ100によって認
識される命令は、各タイプ別に、命令、レジスタ要件お
よび必要な資源の仕様と共に〔表6〕に示されてる。
列にデコードする。その結果の命令の識別、命令機能、
レジスタ参照および機能要件はEデコード・ユニット49
0の出力から得られる。この情報は再生成され、命令セ
ット内のすべての命令が退避されるまで、プロセッサ・
サイクルの各半サイクル期間、Eデコード・ユニット49
0によってラッチされる。従って、保留状態の8命令す
べてに関する情報が、Eデコード・ユニット490の出力
から絶えず得られるようになっている。この情報は、8
エレメント・ビット・ベクトルの形式で表示され、各ベ
クトルのビットまたはサブフィールドは2つの保留中命
令セット内の対応する命令の物理ロケーションに論理的
に対応している。従って、8個のベクトルが制御ライン
502を経由してキャリー・チェッカ・ユニット492へ送ら
れる。この場合、各ベクトルは、対応する命令がプロセ
ッサ状況ワードのキャリー・ビットに作用を及ぼしてい
るか、あるいはそれに依存しているかを指定している。
8個のベクトルが各命令の特定の内容と機能ユニット要
件を示すために制御ライン510を経由して送られる。8
個のベクトルが制御ライン506を経由して送られ、8個
の保留中命令の各々によって使用されたレジスタ参照を
指定している。これらのベクトルはプロセッサ・サイク
ル1が終了する前に送られる。
レーションのデータ依存関係フェーズ期間の間に依存性
チェッカ・ユニット494と並列に動作する。キャリー・
チェッカ・ユニット492は好適アーキテクチャ100では順
列組合せ理論に基づくロジックとして実現されている。
従って、キャリー・チェッカ・ユニット492によるオペ
レーションの各繰返し時に、命令がプロセッサ状態レジ
スタのキヤリー・フラグを変更したかどうかについて8
個の命令すべて考慮される。これが必要とされるのは、
その前の命令によって設定されたキャリー・ビットの状
況に依存する命令を順序外で実行することを可能にする
ためである。制御ライン504上に送出された制御信号に
より、キャリー・チェッカ・ユニット492は、キャリー
・フラグに対する先行命令の実行に依存する特定の命令
を識別することができる。
保留中命令の各々についてキャリー・ビットの一時的コ
ピーをもっている。キャリー・ビットを変更していない
命令については、キャリー・チェッカ・ユニット492は
プログラム命令ストリームの順序でキャリー・ビットを
次の命令に伝える。従って、順序外で実行され、キャリ
ー・ビットを変更する命令を実行させることが可能であ
り、さらに、その順序外で実行される命令に依存する後
続の命令も、キャリー・ビットを変更する命令のあとに
置かれていても、実行することが可能である。さらに、
キャリー・ビットがキャリー・チェッカ・ユニット492
によって維持されているので、これらの命令の退避以前
に例外が起こったとき、キャリー・チェッカ・ユニット
は内部一時キャリー・ビット・レジスタをクリアするだ
けでよいことから、順序外で実行することが容易にな
る。その結果、プロセッサ状況レジスタは、順序外で実
行される命令の実行による影響を受けない。キャリー・
チェッカ・ユニット492が維持している一時キャリー・
ビット・レジスタは、順序外で実行される各命令が完了
すると更新される。順序外で実行される命令が退避され
ると、プログラム命令ストリームの中で最後に退避され
た命令に対応するキャリー・ビットはプロセッサ状況レ
ジスタのキャリー・ビット・ロケーションへ転送され
る。
ト490から制御ライン506を経由して8個のレジスタ参照
識別ベクトルを受け取る。各レジスタの参照は32個のレ
ジスタを一度に1つを識別するのに適した5ビット値
と、“A"、“B"またはブール・レジスタ・セット内に置
かれているレジスタ・バンクを識別する2ビット値によ
って示されている。浮動小数点レジスタ・セットは“B"
レジスタ・セットとも呼ばれる。各命令は最高3つまで
のレジスタ参照フィールドをもつことができる。2つの
ソース・レジスタ・フィールドと1つの宛先レジスタ・
フィールドである。ある種の命令、特にレジスタ間移動
命令は、宛先レジスタを指定している場合があっても、
Eデコード・ユニット490によって認識される命令ビッ
ト・フィールドは、実際に作成される出力データがない
ことを意味している場合がある。むしろ、命令の実行
は、プロセツサ状況レジスタの値の変更を判断すること
だけを目的としている。
00において純然たる組合せロジック(purecombinatoria
l logic)で実現されているが、これはプログラム命令
ストリーム内に後に現れる命令のソース・レジスタ参照
と相対的に前に置かれた命令の宛先レジスタ参照との間
の依存関係を同時に判断するように動作する。ビット配
列は、どの命令が他の命令に依存するかを識別するだけ
でなく、各依存関係がどのレジスタに基づいて生じたか
を識別する依存性チェッカ・ユニット494によって作ら
れる。 キャリーとレジスタ・データの依存関係は、第2プロ
セッサ・サイクルの開始直後に判別される。
てのレジスタ参照のIDを制御ライン506を経由して、レ
ジスタ依存関係を制御ライン536を経由して受け取る。
8個のエレメントからのマトリックスも制御ライン542
を経由して受け取る。これらのエレメントは、保留中命
令の現セットの中でどの命令が実行されたか(完了した
か)を示している。この情報から、レジスタ改名ユニッ
ト496は制御信号の8エレメント配列を制御ライン512を
経由して命令発行ユニット498へ送る。このようにして
送られた制御情報は、現セットのデータ依存関係が判別
された場合に、まだ実行されていない現在保留中の命令
のうちどの命令の実行が可能になったかについてレジス
タ改名ユニット496が行った判断を反映している。レジ
スタ改名ユニット496は実行のために同時に出される最
高6個までの命令を識別した選択制御信号をライン516
を経由して受信する。つまり、2個の整数命令、2個の
浮動小数点命令および2個のブール命令である。
タ・アレイ・ユニット472へ送られた制御信号を通し
て、識別された命令を実行する際にアクセスするソース
・レジスタを選択するという、もう1つの機能を備えて
いる。順序外で実行される命令の宛先レジスタは対応す
るデータ経路の一時バッファ612、680、728に置かれて
いるものとして選択される。順序内で実行される命令は
完了すると退避され、その結果データはレジスタ・アレ
イ614、684、732にストアされていく。ソース・レジス
タの選択は、レジスタが以前に宛先として選択され、対
応する以前の命令がまだ退避されていないかどうかによ
って決まる。そのような場合には、ソース・レジスタは
対応する一時バッファ612、680、728から選択される。
以前の命令が退避されていた場合は、対応するレジスタ
・アレイ614、684、732のレジスタが選択される。その
結果、レジスタ改名ユニット496は、順序外で実行され
る命令の場合には、レジスタ・アレイの参照を一時バッ
フア・レジスタの参照に実効的に置き換えるように動作
する。
0、728は対応するレジスタ・アレイのレジスタ構造と重
複していない。むしろ、8個の保留命令の各々に対して
1つの宛先レジスタ・スロットが用意されている。その
結果、一時バッファ宛先レジスタ参照の置換は、保留レ
ジスタ・セット内の対応する命令のロケーションによっ
て判断される。そのあとのソース・レジスタ参照はソー
ス依存関係が発生した命令に対して依存性チェッカ・ユ
ニット494によって識別される。従って、一時バッファ
・レジスタ内の宛先スロットはレジスタ改名ユニット49
6によって容易に判断することが可能である。
ジスタ改名ユニット496の出力とEデコード・ユニット4
90によって識別された命令の機能要件に基づいて判断す
る。命令発行ユニット498は制御ライン514を経由して報
告された機能ユニット4780-nの各々の状況に基づいてこ
の判断を行う。従って、命令発行ユニット498は発行す
べき使用可能な命令セットをレジスタ改名ユニット496
から受信すると、オペレーションを開始する。各命令を
実行するためにレジスタ・アレイへのアクセスが必要で
あるとすると、命令発行ユニット498は現在命令を実行
中の機能ユニット4780-nが使用可能であることを予想す
る。レジスタ改名ユニット496へ発行すべき命令を判別
する際の遅延を最小にするために、命令発行ユニット49
8は専用の組合せロジックで実現されている。
496はレジスタ・アレイへのアクセスを開始し、このア
クセスは第3プロセッサ・サイクルP2が終了するまで続
けられる。プロセッサ・サイクルP3が開始すると、命令
発行ユニット498は、「Execute 0」で示すように1つ
または2つ以上の機能ユニット4780-nによるオペレーシ
ョンを開始し、レジスタ・アレイ・ユニット472から送
られてきたソース・データを受信して処理する。
分の命令は1プロセッサ・サイクルで機能ユニットを通
して実行される。しかし、一部の命令は、「Execute
1」で示すように、同時に出された命令を完了するのに
複数のプロセッサ・サイクルを必要とする。Execute
0命令とExecute 1命令は、例えば、それぞれALUと浮
動小数点乗算機能ユニットに実行させることができる。
ALU機能ユニットは、図14に示すように、1プロセッサ
・サイクル内で出力データを発生し、この出力データは
ラッチしておくだけで、第5プロセッサ・サイクルP4時
に別の命令を実行する際に使用することができる。浮動
小数点乗算機能ユニットは内部パイプライン化機能ユニ
ットにすることが好ましい。従って、次のプロセッサ・
サイクルで別の浮動小数点命令を出すことができる。し
かし、最初の命令の結果はデータに依存するプロセッサ
・サイクル数の間使用することができない。図14に示す
命令は、機能ユニットでの処理を完了するためには、3
プロセッサ・サイクルを必要とする。
8の機能は繰り返される。その結果、現在の保留中の命
令セットの状況と機能ユニット4780-nの全セットの使用
可能状況は各プロセッサ・サイクルの間に再評価され
る。従って、最適条件のとき、好適アーキテクチャ100
はプロセッサ・サイクルごとに最高6個までの命令を実
行することができる。しかし、代表的な命令ミックスか
ら得られる総平均実行命令数は、1プロセッサ・サイク
ル当たり1.5個ないし2.0個である。
は、このユニットがトラップ条件の処理と特定命令の実
行に関与することである。トラップ条件を発生するため
には、まだ退避されていないすぺての命令をIEU104から
クリアする必要がある。このような事態は、算術演算エ
ラーに応答して機能ユニット4780-nのいずれからか、あ
るいは例えば、違法命令をデコードしたときにEデコー
ド・ユニット490から、外部割込みを受信し、それが割
込み要求/受信確認制御ライン340を経由してIEU104へ
中継されたのに応答して、起こることがある。トラップ
条件が発生したとき、命令発行ユニット498は現在IEU10
4で保留されているすべての非退避命令を中止または無
効にすることを受け持つ。同時に退避できない命令はす
べて無効にされる。この結果は、プログラム命令ストリ
ームを順序内で実行する従来の方式に対して割込みを正
確に発生させるために不可欠である。IEU104がトラップ
処理プログラム・ルーチンの実行を開始する準備状態に
なると、命令発行ユニット498は制御ライン340を経由す
るリターン制御信号によって割込みの受信を確認する。
また、従来の純然たる順序内ルーチンにおいてある命令
が実行される前に変更されたプロセッサ状態ビットに基
づいて、その命令に対する例外条件が認識される可能性
を防止するために、命令発行ユニット498はPSRを変更す
る可能性のあるすべての命令(特殊移動やトラップから
のリターンなど)が厳格に順序内で実行されるようにす
ることを受け持つ。
デコード・ユニット262によって判別されない。この種
の命令には、サブルーチン・リターン、プロシージャ命
令からのリターン、トラップからのリターンがある。命
令発行ユニット498は判別制御信号をIEUリターン制御ラ
イン350を経由してIFU102へ送る。特殊レジスタ・ブロ
ック412のうち対応するものが選択されて、コール命令
の実行時、トラップの発生時またはプロシージャ命令の
出現時に存在していたIF_PC実行アドレスを出力する。
して、現在のオペレーションの完了状況を調べる。好適
アーキテクチャ100では、完了制御ユニット540は各機能
ユニットによるオペレーションの完了を予想して、現在
保留中の命令セットの中の各命令の実行状況を示した完
了ベクトルを、機能ユニット4780-nによる命令の実行完
了よりも約半プロセッサ・サイクル前にレジスタ改名ユ
ニット496、バイパス制御ユニット520および退避制御ユ
ニット500へ送る。これにより、命令発行ユニット498は
レジスタ改名ユニット496を通して、実行を完了する機
能ユニットを次の命令発行サイクルに対して使用可能な
資源として考慮することができる。バイパス制御ユニッ
ト520は、機能ユニットから出力されたデータをバイパ
ス・ユニット474を通るようにバイパスする準備を行う
ことができる。最後に、退避制御ユニット500は、機能
ユニツト4780-nからレジスタ・アレイ・ユニット472へ
データを転送するのと同時に対応する命令を退避するよ
うに動作する。
のほかに、退避制御ユニット500はEデコード・ユニッ
ト490から出力された最も古い命令セットをモニタす
る。命令ストリーム順序の中の各命令に完了制御ユニッ
ト540によって完了の印(マーク)がつけられると、退
避制御ユニット500は、制御ライン534上に送出された制
御信号を通して、一時バッファ・スロットからレジスタ
・アレイ・ユニット472内の対応する命令が指定したレ
ジスタ・ロケーションへデータを転送することを指示す
る。1つまたは複数の命令が同時に退避されると、PC
Inc/Size制御信号が制御ライン344上に送出される。各
プロセッサ・サイクルごとに最高4個までの命令を退避
することが可能である。命令セット全体が退避される
と、IFIFO読取り制御信号が制御ライン342上に送出され
てIFIFOユニット264を前進させる。
ット内の制御フロー命令が解決されたかどうか、さら
に、その結果ブランチが行われたかどうかを指定した情
報をIFU102に絶えず与えるように動作する。制御フロー
制御ユニット528は、Eデコード・ユニット490による制
御フロー・ブランチ命令の識別情報を制御ライン510を
経由して取得する。現在のレジスタ依存関係のセット
は、制御ライン536を経由して依存性チェッカ・ユニッ
ト494から制御フロー制御ユニット528へ送られるので、
制御フロー制御ユニット528はブランチ命令の結果が依
存関係に拘束されているかどうか、あるいは判明してい
るかどうかを判断することができる。レジスタ改名ユニ
ット496からバス518を経由して送られたレジスタの参照
は制御フロー制御ユニット528によってモニタされ、ブ
ランチ決定を定義するブール・レジスタが判別される。
従って、ブランチ決定は、制御フロー命令の順序外の実
行以前でも判断することが可能である。
ユニット472は、バイパス制御ユニット520により制御フ
ロー0と制御フロー1の制御ライン750、752からなる制
御ライン530を経由して制御フローの結果を制御フロー
制御ユニット528へ送るように指示される。最後に、制
御フロー制御ユニット528は各々が8ビットの2個のベ
クトルを制御ライン348を経由してIFU102へ連続して送
る。これらのベクトルは、ベクトル内のビットに対応す
る論理ロケーションに置かれた命令が解決されたか否
か、およびその結果ブランチが行われたか否かを定義し
ている。
ト528は制御ユニット528への入力制御信号を受けて連続
的に動作する組分せロジックとして実現されている。
密に協働して、レジスタ・アレイ・ユニット472と機能
ユニット4780-n間のデータのルーチング(経路指定)を
制御する。バイパス制御ユニット520は、図14に示すオ
ペレーションのレジスタ・アレイ・アクセス、出力およ
びストア・フェーズと関連して動作する。レジスタ・ア
レイ・アクセスの間には、バイパス制御ユニット520は
命令の実行の出力フェーズの間に書き込まれている途中
にあるレジスタ・アレイ・ユニット472内の宛先レジス
タのアクセスを、制御ライン522を通して認識すること
ができる。この場合、バイパス制御ユニット520は、バ
イパスして機能ユニット分配バス480に返すように、機
能ユニット出力バス482上に送出されたデータを選択す
ることを指示する。バイパス制御ユニット520に対する
制御は、制御ライン542を通して命令発行ユニット498に
よって行われる。
VMU108は主にVMU制御ロジック・ユニット800と内容アド
レス(content addressable)メモリ(CAM)802から構
成されている。VMU108の一般的機能は図16にブロック図
で示してある。同図において、仮想アドレスの表現は、
スペースID(sID〔31:28〕)、仮想ページ番号(VADDR
〔27:14〕)、ページ・オフセット(PADDR〔13:4〕)、
および要求ID(rID〔3:0〕)に分割されている。物理ア
ドレスを生成するためのアルゴリズムでは、スペースID
を使用して、スペース・テーブル842内の16個のレジス
タから1つを選択するようになっている。選択したスペ
ース・レジスタの内容と仮想ページ番号とを組み合わせ
て、テーブル索引バッファ(TLB)844をアクセスすると
きのアドレスとして使用される。34ビット・アドレスは
内容アドレス・タグの働きをし、バッファ844内の対応
するバッファ・レジスタを指定するために使用される。
タグに一致するものが見つかると、18ビット幅レジスタ
値が物理アドレス846の上位18ビットとして得られる。
ページ・オフセットと要求IDは物理アドレス846の下位1
4ビットとして得られる。
つからないとVMU不一致が通知される。この場合は、MAU
112に維持されている完全ページ・テーブル・データ構
造をアクセスする従来のハッシュ・アルゴリズム848を
採用したVMU高速トラップ処理ルーチンを実行させる必
要がある。このページ・テーブル850はアーキテクチャ1
00によって現在使用中のすべてのメモリ・ページのエン
トリを含んでいる。ハッシュ・アルゴリズム848は、現
在の仮想ページ変換操作を満たすために必要なページ・
テーブル・エントリを判別する。これらのページ・テー
ブル・エントリはMAU112からレジスタ・セット“A"のト
ラップ・レジスタへロードされ、そのあと特殊レジスタ
移動命令によってテーブル索引バッファ844へ転送され
る。例外処理ルーチンから戻ると、VMU不一致例外を引
き起こした命令はIEU104によって再実行される。仮想ア
ドレスから物理アドレスへの変換操作は例外を引き起こ
さないで完了するはずである。
ル・インタフェースとなる。準備信号は制御ライン822
を経由してIEU104へ送られ、VMU108がアドレス変換のた
めに使用可能であることを通知する。好適実施例では、
VMU108は常にIFU102の変換要求を受け付ける準備状態に
ある。IFU102およびIEU104は共に、制御ライン328およ
び804を経由して要求を提示することができる。好適ア
ーキテクチャ100では、IFUは優先してVMU108をアクセス
することができる。その結果、ビジー(使用中)制御ラ
イン820は1つだけがIEU104に出力される。
番号フィールドを、それぞれ、アドレス・ライン326お
よび808を経由してVMU制御ロジック800へ送る。さら
に、IEU104は読み書き制御信号を制御ライン806で出力
する。この制御信号は、参照された仮想メモリのメモリ
・アクセス保護属性を変更するために、そのアドレスを
ロード・オペレーションに使用すべきか、ストア・オペ
レーションに使用すべきを必要に応じて定義している。
仮想アドレスのスペースIDと仮想ページ・フィールドは
CAMユニット802に渡されて、実際の変換操作が行われ
る。ページ・オフセットとExIDフィールドは最終的にIE
U104から直接にCCU106へ送られる。物理ページと要求ID
フィールドはアドレス・ライン836を経由してCAMユニッ
ト802へ送られる。テーブル索引バッファに一致するも
のが見つかると、ヒット・ラインと制御出力ライン930
を経由してVMU制御ロジック・ユニット800に通知され
る。その結果の18ビット長の物理アドレスはアドレス出
力ライン824上に出力される。
らヒットおよび制御出力制御信号を受けると、仮想メモ
リ不一致と仮想メモリ例外制御信号をライン334、332上
に出力する。仮想メモリ変換不一致とは、テーブル索引
バッファ844内のページ・テーブルIDと一致しなかった
ことを意味する。その他の変換エラーはすべて仮想メモ
リ例外として報告される。
レジスタ間移動命令をIEU104が実行することによって変
更することができる。読み書き、レジスタ選択、リセッ
ト、ロードおよびクリア制御信号はIEU104から制御ライ
ン810、812、814、816、818を経由して出力される。CAM
ユニット・レジスタに書くべきデータは特殊アドレス・
データ・バス354に接続されたアドレス・バス808を経由
してIEU104からVMU制御ロジック・ユニット800によって
受信される。このデータは初期設定、レジスタ選択、お
よび読み書き制御信号を制御する制御信号と同時にバス
836を経由してCAMユニット802へ転送される。その結
果、CAMユニット802内のデータ・レジスタは、より高レ
ベルのオペレーティング・システムで定義されているコ
ンテキスト・スイッチを処理するとき必要になるストア
のための読出しを含めて、アーキテクチャ100の動的オ
ペレーションの間に必要に応じて即座に書き出すことが
できる。
に示されている。この場合も、IFU102とIEU104用に別々
のインタフェースが設けられている。さらに、論理的に
別個のインタフェースがCCU106に用意され、命令とデー
タ転送のためにMCU110と結ばれている。
れる物理ページ・アドレス、アドレス・ライン824上に
送出されるVMU変換ページ・アドレス、およびIDの出力
ライン294、296上を別々に転送される要求IDからなって
いる。単方向データ転送バス(命令バス)114は命令セ
ット全体をIFU102と並列に転送するためのものである。
最後に、読取り/使用中および準備制御信号は制御ライ
ン298、300、302を経由してCCU106へ送られる。
を経由してIEU104へ送られる。要求ExIDは制御ライン79
6を経由してIEU104のロード/ストア・ユニットとの間
で別々に受渡される。80ビット幅単方向データ・バスは
CCU106からIEU104に出力される。しかし、アーキテクチ
ャ100の好適実施例では、下位の64ビットだけがIEU104
によって使用される。全80ビット・データ転送バスをCC
U106内で使用できるようにし、かつサポートしているの
は、本アーキテクチャ100の引き続いての実行をサポー
トするためであり、浮動小数点データ経路660を変更す
ることによって、IEEE標準754に準拠する浮動小数点の
オペレーションをサポートする。
書きを通して、および制御信号784を通して確立され、
実質的には、IFU102によって使用される対応する制御信
号と同じである。例外は、ロード・オペレーションとス
トア・オペレーションを区別するための読み書き制御信
号が設けられていることである。幅制御信号はIEU104に
よる各CCU106へのアクセス時に転送されるバイト数を指
定している。これに対して、命令用キャッシュ132のす
べてのアクセスは固定した128ビット幅データ・フェッ
チ・オペレーションになっている。
34に対して従来とほぼ同じキャッシュ制御機能を備えて
いる。好適アーキテクチャ100では、命令用キャッシュ1
32は256個の128ビット幅命令セットをストアする機能を
備えた高速メモリになっている。データ用キャッシュ13
4は1024個の32ビット幅ワードのデータをストアする機
能を備えている。命令用キャッシュ132とデータ用キャ
ッシュ134の内容から即時に満足できない命令要求とデ
ータ要求はMCU110に渡される。命令用キャッシュがミス
した場合は、28ビット幅物理アドレスがアドレス・バス
860を経由してMCU110に渡される。要求IDおよびCCU106
とMCU110のオペレーションを調整するための追加制御信
号は制御ライン862上に送出される。MCU110がMAU112の
必要な読取りアクセスを調整すると、2つの連続する64
ビット幅データ転送が直接にMAU112から命令用キャッシ
ュ132へ行われる。2つの転送が必要になるのは、デー
タ・バス136が好適アーキテクチャ100では、64ビット幅
バスになっているためである。要求したデータがMCU110
を通して返却されると、要求オペレーションの保留中に
維持されていた要求IDも制御ライン862を経由してCCU10
6へ返却される。
オペレーションは、命令用キャッシュの転送オペレーシ
ョンとほぼ同じである。データ・ロードとストア・オペ
レーションは単一バイトを参照できるので、全32ビット
幅の物理アドレスがアドレス・バス864を経由してMCU11
0へ送られる。インタフェース制御信号と要求ExIDは制
御ライン866を経由して転送される。双方向の64ビット
幅データ転送はデータ用キャッシュのデータ・バス138
を経由して行われる。
キテクチャは以上に説明したとおりである。本発明のア
ーキテクチャによれば、命令を順序外に実行することが
でき、メインとターゲット命令ストリームのプリフェッ
チ命令転送経路を別々に設け、およびプロシージャ命令
認識と専用プリフェッチ経路を設けることができる。命
令実行ユニットは最適化されているので、最適化された
複数のデータ処理経路で整数、浮動小数点およびブール
演算をサポートすることができ、またそれぞれの一時レ
ジスタ・アレイが設けられているので、容易に設定され
るマシン状態の状況を正確に維持しながら、順序外の実
行と命令取消しを容易に行うことができる。
示しているが、当業者にとって本発明の範囲内で種々変
更および改良することが可能であることは勿論である。 [図面の簡単な説明]
セッサ・アーキテクチャを示す簡略ブロック図である。
ニットを示す詳細ブロック図である。
ンタ・ロジック・ユニットを示すブロック図である。
ジックを示す別の詳細ブロック図である。
ク図である。
れているレジスタ・アレイ・ユニット・アーキテクチャ
を示す簡略ブロック図、(B)は本発明の好適実施例に
おいて使用されている一時バッファ・レジスタ・ファイ
ルの記憶レジスタ形式を図形で示す図、(C)は本発明
のIFIFOユニットの最後の2ステージに存在していると
きの1次および2次命令セットを図形で示す図である。
整数レジスタ・セットの再構成可能ステート(状態)を
図形で示す図である。
成可能浮動小数点および2次整数レジスタ・セットを図
形で示す図である。
ブール・レジスタ・セットを図形で示す図である。
令実行ユニットの1次整数処理データ経路部分を示す詳
細ブロック図である。
令実行ユニットの1次浮動小数点データ経路部分を示す
詳細ブロック図である。
令実行ユニットのブール演算データ経路部分を示す詳細
ブロック図である。
ード/ストア・ユニットを示す詳細ブロック図である。
の、本発明の好適実施例の好ましいオペレーション・シ
ーケンスを示すタイミング図である。
想メモリ制御ユニットを示す簡略ブロック図である。
リ制御アルゴリズムを図形で示す図である。
ュ制御ユニットを示す簡略ブロック図である。
ユニット(IEU)、106…キャッシュ制御ユニット(CC
U)、108…仮想メモリ・ユニット(VMU)、110…メモリ
制御ユニット(MCU)、112…メモリ・アレイ・ユニット
(MAU)
Claims (4)
- 【請求項1】トラップ・ハンドラのアドレスを求めるた
めに使用される少なくとも2つのトラップ・ベース・レ
ジスタを有し、トラップ・ベース・レジスタ・アドレス
にトラップ番号に基づくオフセットを連結しトラップ・
ハンドラのアドレスを求めてトラップを処理するトラッ
プ処理方法において、 前記トラップ・ベース・レジスタの1つを高速トラップ
・ベース・レジスタとすると共に、 前記トラップ番号のうち少ないビット数で表される特定
範囲のトラップ番号を高速トラップ番号とし、 トラップ番号が前記高速トラップ番号か否かを判断し
て、 前記トラップ番号が前記高速トラップ番号の場合には、
前記高速トラップ・ベース・レジスタを選択し、該高速
トラップ・ベース・レジスタ・アドレスに前記高速トラ
ップ番号を表すビットとゼロ・ビットを連結することに
より、 トラップ・ハンドラのアドレスを求めてトラップを処理
することを特徴とするトラップ処理方法。 - 【請求項2】前記トラップ・ハンドラのアドレスにある
命令は、予備的ブランチ命令を含むことを特徴とする請
求項1記載のトラップ処理方法。 - 【請求項3】前記高速トラップのベクトル・ハンドラの
アドレス間は、少なくとも数ワード離れていることを特
徴とする請求項1記載のトラップ処理方法。 - 【請求項4】前記高速トラップのベクトル・アドレス間
には、マイクロプロセッサで使用できる最短長の命令を
少なくとも2つ受入れるスペースが設けられていること
を特徴とする請求項3記載のトラップ処理方法。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US72694291A | 1991-07-08 | 1991-07-08 | |
| US726,942 | 1991-07-08 | ||
| PCT/JP1992/000872 WO1993001547A1 (en) | 1991-07-08 | 1992-07-07 | Risc microprocessor architecture implementing fast trap and exception state |
Related Child Applications (7)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11336927A Division JP2000122865A (ja) | 1999-11-29 | 1999-11-29 | 命令実行処理方法 |
| JP11336929A Division JP2000122867A (ja) | 1999-11-29 | 1999-11-29 | トラップ処理方法 |
| JP11336928A Division JP2000122866A (ja) | 1999-11-29 | 1999-11-29 | デ―タ処理装置 |
| JP2000175145A Division JP3552995B2 (ja) | 1991-07-08 | 2000-06-12 | データ処理装置 |
| JP2000175144A Division JP2001022583A (ja) | 1991-07-08 | 2000-06-12 | 命令実行処理方法 |
| JP2000175146A Division JP3879812B2 (ja) | 1991-07-08 | 2000-06-12 | トラップ処理方法及びトラップ処理装置 |
| JP2000237838A Division JP2001067220A (ja) | 1991-07-08 | 2000-08-07 | トラップ処理方法及び例外処理方法並びに処理装置及びマイクロプロセッサ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH06502035A JPH06502035A (ja) | 1994-03-03 |
| JP3333196B2 true JP3333196B2 (ja) | 2002-10-07 |
Family
ID=24920677
Family Applications (6)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP50215493A Expired - Lifetime JP3333196B2 (ja) | 1991-07-08 | 1992-07-07 | トラップ処理方法 |
| JP2000175145A Expired - Fee Related JP3552995B2 (ja) | 1991-07-08 | 2000-06-12 | データ処理装置 |
| JP2000175144A Withdrawn JP2001022583A (ja) | 1991-07-08 | 2000-06-12 | 命令実行処理方法 |
| JP2000175146A Expired - Lifetime JP3879812B2 (ja) | 1991-07-08 | 2000-06-12 | トラップ処理方法及びトラップ処理装置 |
| JP2000237838A Withdrawn JP2001067220A (ja) | 1991-07-08 | 2000-08-07 | トラップ処理方法及び例外処理方法並びに処理装置及びマイクロプロセッサ |
| JP2003126853A Expired - Lifetime JP3750743B2 (ja) | 1991-07-08 | 2003-05-02 | 例外処理方法並びに例外処理装置及びマイクロプロセッサ |
Family Applications After (5)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000175145A Expired - Fee Related JP3552995B2 (ja) | 1991-07-08 | 2000-06-12 | データ処理装置 |
| JP2000175144A Withdrawn JP2001022583A (ja) | 1991-07-08 | 2000-06-12 | 命令実行処理方法 |
| JP2000175146A Expired - Lifetime JP3879812B2 (ja) | 1991-07-08 | 2000-06-12 | トラップ処理方法及びトラップ処理装置 |
| JP2000237838A Withdrawn JP2001067220A (ja) | 1991-07-08 | 2000-08-07 | トラップ処理方法及び例外処理方法並びに処理装置及びマイクロプロセッサ |
| JP2003126853A Expired - Lifetime JP3750743B2 (ja) | 1991-07-08 | 2003-05-02 | 例外処理方法並びに例外処理装置及びマイクロプロセッサ |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US5448705A (ja) |
| EP (2) | EP0945787A3 (ja) |
| JP (6) | JP3333196B2 (ja) |
| KR (1) | KR100294276B1 (ja) |
| AT (1) | ATE188786T1 (ja) |
| DE (1) | DE69230554T2 (ja) |
| WO (1) | WO1993001547A1 (ja) |
Families Citing this family (72)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1993001546A1 (en) | 1991-07-08 | 1993-01-21 | Seiko Epson Corporation | Extensible risc microprocessor architecture |
| US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
| US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
| WO1993020505A2 (en) * | 1992-03-31 | 1993-10-14 | Seiko Epson Corporation | Superscalar risc instruction scheduling |
| JP3637920B2 (ja) | 1992-05-01 | 2005-04-13 | セイコーエプソン株式会社 | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 |
| EP1107111A3 (en) * | 1992-12-31 | 2002-02-06 | Seiko Epson Corporation | System and method for register renaming |
| 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 |
| JPH06242948A (ja) * | 1993-02-16 | 1994-09-02 | Fujitsu Ltd | パイプライン処理計算機 |
| JP2596712B2 (ja) * | 1993-07-01 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 |
| US5548776A (en) * | 1993-09-30 | 1996-08-20 | Intel Corporation | N-wide bypass for data dependencies within register alias table |
| DE69420540T2 (de) * | 1994-01-03 | 2000-02-10 | Intel Corp., Santa Clara | Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor |
| GB2286265B (en) * | 1994-01-26 | 1998-02-18 | Advanced Risc Mach Ltd | selectable processing registers |
| US5515521A (en) * | 1994-02-08 | 1996-05-07 | Meridian Semiconductor, Inc. | Circuit and method for reducing delays associated with contention interference between code fetches and operand accesses of a microprocessor |
| US5673427A (en) * | 1994-03-01 | 1997-09-30 | Intel Corporation | Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue |
| NL9400607A (nl) * | 1994-04-15 | 1995-11-01 | Arcobel Graphics Bv | Dataverwerkingscircuit, vermenigvuldigingseenheid met pijplijn, ALU en schuifregistereenheid ten gebruike bij een dataverwerkingscircuit. |
| JP3672634B2 (ja) | 1994-09-09 | 2005-07-20 | 株式会社ルネサステクノロジ | データ処理装置 |
| US5642516A (en) * | 1994-10-14 | 1997-06-24 | Cirrus Logic, Inc. | Selective shadowing of registers for interrupt processing |
| JP3670290B2 (ja) * | 1995-02-14 | 2005-07-13 | 富士通株式会社 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
| US5644742A (en) * | 1995-02-14 | 1997-07-01 | Hal Computer Systems, Inc. | Processor structure and method for a time-out checkpoint |
| US6006030A (en) * | 1995-02-17 | 1999-12-21 | Vlsi Technology, Inc. | Microprocessor with programmable instruction trap for deimplementing instructions |
| US5887152A (en) * | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
| US5692170A (en) * | 1995-04-28 | 1997-11-25 | Metaflow Technologies, Inc. | Apparatus for detecting and executing traps in a superscalar processor |
| US6052801A (en) * | 1995-05-10 | 2000-04-18 | Intel Corporation | Method and apparatus for providing breakpoints on a selectable address range |
| US5659679A (en) * | 1995-05-30 | 1997-08-19 | Intel Corporation | Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system |
| US5694589A (en) * | 1995-06-13 | 1997-12-02 | Intel Corporation | Instruction breakpoint detection apparatus for use in an out-of-order microprocessor |
| US5621886A (en) * | 1995-06-19 | 1997-04-15 | Intel Corporation | Method and apparatus for providing efficient software debugging |
| US5740413A (en) * | 1995-06-19 | 1998-04-14 | Intel Corporation | Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping |
| US5774709A (en) * | 1995-12-06 | 1998-06-30 | Lsi Logic Corporation | Enhanced branch delay slot handling with single exception program counter |
| US5761492A (en) * | 1996-05-07 | 1998-06-02 | Lucent Technologies Inc. | Method and apparatus for uniform and efficient handling of multiple precise events in a processor by including event commands in the instruction set |
| US5729729A (en) * | 1996-06-17 | 1998-03-17 | Sun Microsystems, Inc. | System for fast trap generation by creation of possible trap masks from early trap indicators and selecting one mask using late trap indicators |
| US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
| US5958061A (en) * | 1996-07-24 | 1999-09-28 | Transmeta Corporation | Host microprocessor with apparatus for temporarily holding target processor state |
| US6199152B1 (en) | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
| US5937437A (en) * | 1996-10-28 | 1999-08-10 | International Business Machines Corporation | Method and apparatus for monitoring address translation performance |
| US5764971A (en) * | 1996-12-11 | 1998-06-09 | Industrial Technology Research Institute | Method and apparatus for implementing precise interrupts in a pipelined data processing system |
| US5784606A (en) * | 1996-12-16 | 1998-07-21 | International Business Machines Corporation | Method and system in a superscalar data processing system for the efficient handling of exceptions |
| US5850556A (en) * | 1996-12-26 | 1998-12-15 | Cypress Semiconductor Corp. | Interruptible state machine |
| US5978900A (en) * | 1996-12-30 | 1999-11-02 | Intel Corporation | Renaming numeric and segment registers using common general register pool |
| US6253317B1 (en) * | 1997-01-09 | 2001-06-26 | Sun Microsystems, Inc. | Method and apparatus for providing and handling traps |
| US5987601A (en) * | 1997-02-14 | 1999-11-16 | Xyron Corporation | Zero overhead computer interrupts with task switching |
| US6122729A (en) * | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
| CN1107909C (zh) * | 1997-07-11 | 2003-05-07 | 全斯美达有限公司 | 带临时保存目标处理器状态的装置的主处理器 |
| KR100522468B1 (ko) * | 1997-07-11 | 2005-10-19 | 트랜스메타 코포레이션 | 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서 |
| US6128728A (en) * | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
| US6039765A (en) * | 1997-12-15 | 2000-03-21 | Motorola, Inc. | Computer instruction which generates multiple results of different data types to improve software emulation |
| US6061787A (en) * | 1998-02-02 | 2000-05-09 | Texas Instruments Incorporated | Interrupt branch address formed by concatenation of base address and bits corresponding to highest priority interrupt asserted and enabled |
| US6339752B1 (en) * | 1998-12-15 | 2002-01-15 | Bull Hn Information Systems Inc. | Processor emulation instruction counter virtual memory address translation |
| US6253299B1 (en) * | 1999-01-04 | 2001-06-26 | International Business Machines Corporation | Virtual cache registers with selectable width for accommodating different precision data formats |
| US6327650B1 (en) * | 1999-02-12 | 2001-12-04 | Vsli Technology, Inc. | Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor |
| US6493781B1 (en) * | 1999-08-19 | 2002-12-10 | Koninklijke Philips Electronics N.V. | Servicing of interrupts with stored and restored flags |
| US6745321B1 (en) * | 1999-11-08 | 2004-06-01 | International Business Machines Corporation | Method and apparatus for harvesting problematic code sections aggravating hardware design flaws in a microprocessor |
| US6523097B1 (en) * | 1999-11-12 | 2003-02-18 | International Business Machines Corporation | Unvalue-tagged memory without additional bits |
| US6678817B1 (en) * | 2000-02-22 | 2004-01-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for fetching instructions from the memory subsystem of a mixed architecture processor into a hardware emulation engine |
| US6968469B1 (en) | 2000-06-16 | 2005-11-22 | Transmeta Corporation | System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored |
| FR2817460B1 (fr) * | 2000-12-04 | 2003-09-05 | Ge Med Sys Global Tech Co Llc | Procede et systeme pour simuler l'elargissement de diametre d'une lesion d'un vaisseau sanguin, en particulier une stenose, a l'aide d'une prothese endovasculaire |
| US6889279B2 (en) * | 2000-12-11 | 2005-05-03 | Cadence Design Systems, Inc. | Pre-stored vector interrupt handling system and method |
| US20030014474A1 (en) * | 2001-05-30 | 2003-01-16 | Mckaig Ray S. | Alternate zero overhead task change circuit |
| EP1523347B1 (en) | 2002-07-19 | 2011-05-18 | Baxter International Inc. | Systems and methods for performing peritoneal dialysis |
| DE60335724D1 (de) * | 2002-09-03 | 2011-02-24 | Silicon Hive Bv | Vorrichtung und verfahren zur verarbeitung von geschachtelten unterbrechungen |
| US7165018B2 (en) | 2002-11-22 | 2007-01-16 | Texas Instruments Incorporated | Address range comparator for detection of multi size memory accesses with data matching qualification and full or partial overlap |
| US7493478B2 (en) * | 2002-12-05 | 2009-02-17 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
| US7360070B1 (en) * | 2003-08-13 | 2008-04-15 | Apple Inc. | Specialized processing upon an occurrence of an exceptional situation during the course of a computation |
| US7014122B2 (en) * | 2003-12-24 | 2006-03-21 | International Business Machines Corporation | Method and apparatus for performing bit-aligned permute |
| US7613911B2 (en) * | 2004-03-12 | 2009-11-03 | Arm Limited | Prefetching exception vectors by early lookup exception vectors within a cache memory |
| GB2412192B (en) * | 2004-03-18 | 2007-08-29 | Advanced Risc Mach Ltd | Function calling mechanism |
| JP2007041837A (ja) * | 2005-08-03 | 2007-02-15 | Nec Electronics Corp | 命令プリフェッチ装置及び命令プリフェッチ方法 |
| US20080077782A1 (en) * | 2006-09-26 | 2008-03-27 | Arm Limited | Restoring a register renaming table within a processor following an exception |
| JP5507317B2 (ja) | 2010-04-12 | 2014-05-28 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ及び割込み制御方法 |
| KR102025338B1 (ko) * | 2011-12-28 | 2019-09-26 | 삼성전자 주식회사 | 신호 처리 장치, 이를 구비한 디스플레이 장치 및 신호 처리 방법 |
| EP3286640A4 (en) | 2015-04-24 | 2019-07-10 | Optimum Semiconductor Technologies, Inc. | COMPUTER PROCESSOR WITH SEPARATE REGISTERS FOR ADDRESSING A MEMORY |
| GB2589895B (en) * | 2019-12-11 | 2022-03-16 | Advanced Risc Mach Ltd | Intermodal calling branch instruction |
| KR102268112B1 (ko) * | 2019-12-24 | 2021-06-22 | 한국항공우주연구원 | 위성 커맨드 저장 처리 방법 및 위성 커맨드 저장 처리 시스템 |
Family Cites Families (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3346851A (en) * | 1964-07-08 | 1967-10-10 | Control Data Corp | Simultaneous multiprocessing computer system |
| GB1301471A (ja) * | 1968-10-29 | 1972-12-29 | ||
| US3789365A (en) * | 1971-06-03 | 1974-01-29 | Bunker Ramo | Processor interrupt system |
| US3771138A (en) * | 1971-08-31 | 1973-11-06 | Ibm | Apparatus and method for serializing instructions from two independent instruction streams |
| US4034349A (en) * | 1976-01-29 | 1977-07-05 | Sperry Rand Corporation | Apparatus for processing interrupts in microprocessing systems |
| AU529675B2 (en) * | 1977-12-07 | 1983-06-16 | Honeywell Information Systems Incorp. | Cache memory unit |
| US4315314A (en) * | 1977-12-30 | 1982-02-09 | Rca Corporation | Priority vectored interrupt having means to supply branch address directly |
| US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
| US4228495A (en) * | 1978-12-19 | 1980-10-14 | Allen-Bradley Company | Multiprocessor numerical control system |
| 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 |
| US4434641A (en) * | 1982-03-11 | 1984-03-06 | Ball Corporation | Buckle resistance for metal container closures |
| US4635194A (en) * | 1983-05-02 | 1987-01-06 | International Business Machines Corporation | Instruction buffer bypass apparatus |
| US4800486A (en) * | 1983-09-29 | 1989-01-24 | Tandem Computers Incorporated | Multiple data patch CPU architecture |
| 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 |
| 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 | 株式会社日立製作所 | デ−タ処理装置 |
| JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
| US4926323A (en) * | 1988-03-03 | 1990-05-15 | Advanced Micro Devices, Inc. | Streamlined instruction processor |
| 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 |
| US4897810A (en) * | 1988-06-13 | 1990-01-30 | Advanced Micro Devices, Inc. | Asynchronous interrupt status bit circuit |
| JPH0673105B2 (ja) * | 1988-08-11 | 1994-09-14 | 株式会社東芝 | 命令パイプライン方式のマイクロプロセッサ |
| JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
| 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 |
| JPH0314025A (ja) * | 1989-06-13 | 1991-01-22 | Nec Corp | 命令実行制御方式 |
| DE69031257T2 (de) * | 1989-09-21 | 1998-02-12 | Texas Instruments Inc | Integrierte Schaltung mit einem eingebetteten digitalen Signalprozessor |
| JP2835103B2 (ja) * | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
| EP0479390B1 (en) * | 1990-10-05 | 1999-01-07 | Koninklijke Philips Electronics N.V. | Processing device including a memory circuit and a group of functional units |
-
1992
- 1992-07-07 JP JP50215493A patent/JP3333196B2/ja not_active Expired - Lifetime
- 1992-07-07 WO PCT/JP1992/000872 patent/WO1993001547A1/en not_active Ceased
- 1992-07-07 KR KR1019930700689A patent/KR100294276B1/ko not_active Expired - Fee Related
- 1992-07-07 EP EP99112833A patent/EP0945787A3/en not_active Withdrawn
- 1992-07-07 DE DE69230554T patent/DE69230554T2/de not_active Expired - Lifetime
- 1992-07-07 EP EP92914386A patent/EP0547240B1/en not_active Expired - Lifetime
- 1992-07-07 AT AT92914386T patent/ATE188786T1/de active
-
1993
- 1993-05-24 US US08/065,063 patent/US5448705A/en not_active Expired - Lifetime
-
1994
- 1994-11-21 US US08/345,333 patent/US5481685A/en not_active Expired - Lifetime
-
2000
- 2000-06-12 JP JP2000175145A patent/JP3552995B2/ja not_active Expired - Fee Related
- 2000-06-12 JP JP2000175144A patent/JP2001022583A/ja not_active Withdrawn
- 2000-06-12 JP JP2000175146A patent/JP3879812B2/ja not_active Expired - Lifetime
- 2000-08-07 JP JP2000237838A patent/JP2001067220A/ja not_active Withdrawn
-
2003
- 2003-05-02 JP JP2003126853A patent/JP3750743B2/ja not_active Expired - Lifetime
Non-Patent Citations (2)
| Title |
|---|
| bit 臨時増刊 Vol.23 No.4 1991 3月、共立出版刊行 p617−619 |
| IEEE MICRO Vol 9 No 2 p26−38 1989 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0547240B1 (en) | 2000-01-12 |
| KR100294276B1 (ko) | 2001-09-17 |
| KR930702719A (ko) | 1993-09-09 |
| JP3879812B2 (ja) | 2007-02-14 |
| HK1014783A1 (en) | 1999-09-30 |
| JP2001067220A (ja) | 2001-03-16 |
| DE69230554D1 (de) | 2000-02-17 |
| JP2001022584A (ja) | 2001-01-26 |
| ATE188786T1 (de) | 2000-01-15 |
| JP2001027949A (ja) | 2001-01-30 |
| WO1993001547A1 (en) | 1993-01-21 |
| US5481685A (en) | 1996-01-02 |
| JP2001022583A (ja) | 2001-01-26 |
| JP2003330708A (ja) | 2003-11-21 |
| US5448705A (en) | 1995-09-05 |
| EP0945787A3 (en) | 2008-12-31 |
| JP3552995B2 (ja) | 2004-08-11 |
| DE69230554T2 (de) | 2000-07-06 |
| EP0945787A2 (en) | 1999-09-29 |
| JP3750743B2 (ja) | 2006-03-01 |
| JPH06502035A (ja) | 1994-03-03 |
| EP0547240A1 (en) | 1993-06-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3333196B2 (ja) | トラップ処理方法 | |
| JP3654139B2 (ja) | スーパースカラーマイクロプロセッサ及びデータ処理装置 | |
| JP3441071B2 (ja) | マイクロプロセッサ及びデータ処理装置 | |
| JP3876443B2 (ja) | マイクロプロセッサ装置 | |
| JP2000039996A (ja) | ス―パ―スカラ処理システム及びデ―タ処理方法 | |
| JP2000122867A (ja) | トラップ処理方法 | |
| JP2000122865A (ja) | 命令実行処理方法 | |
| JP2000122866A (ja) | デ―タ処理装置 | |
| JP2000029697A (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: 20080726 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090726 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100726 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110726 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110726 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120726 Year of fee payment: 10 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120726 Year of fee payment: 10 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120726 Year of fee payment: 10 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| EXPY | Cancellation because of completion of term |