JP2000122865A - 命令実行処理方法 - Google Patents

命令実行処理方法

Info

Publication number
JP2000122865A
JP2000122865A JP11336927A JP33692799A JP2000122865A JP 2000122865 A JP2000122865 A JP 2000122865A JP 11336927 A JP11336927 A JP 11336927A JP 33692799 A JP33692799 A JP 33692799A JP 2000122865 A JP2000122865 A JP 2000122865A
Authority
JP
Japan
Prior art keywords
instruction
register
unit
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.)
Pending
Application number
JP11336927A
Other languages
English (en)
Inventor
Re Toron Guen
トロン グエン,レ
Delek J Lenz
デレク ジェイ. レンツ,
Yoshiyuki Miyayama
ヨシユキ ミヤヤマ,
Sanjibu Garuku
サンジブ ガルク,
Yasuaki Hagiwara
ヤスアキ ハギワラ,
Johanes Wan
ジョハネス ワン,
Kwan H Tran
クワン エイチ. トラン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP11336927A priority Critical patent/JP2000122865A/ja
Publication of JP2000122865A publication Critical patent/JP2000122865A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 入口点アドレスをテーブルからフェッチした
り、予備的ブランチ命令をフェッチして実行するために
必要な時間的遅れを除去する。 【解決手段】 メイン命令ストリームから命令を取りメ
イン・バッファに記憶して実行する、メイン命令ストリ
ーム内のプロシージャまたはブランチ・ターゲット命令
に対応して、エミュレーションまたはブランチ・ターゲ
ット命令ストリームからさらに命令を取り記憶して実行
する、メイン命令ストリームへの第1復帰アドレスを指
示し所定の命令に関して発生する同期例外に対応して、
第1ハンドラ命令ストリームをフェッチし記憶し実行し
て、メイン命令ストリームへの第2復帰アドレスを指示
するエミュレーションまたはブランチ・ターゲット命令
ストリーム内の別の所定命令に関して発生する同期例外
に対応して、第2ハンドラ命令ストリームをフェッチし
記憶して命令を実行する各ステップを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サ・アーキテクチャに関し、さらに具体的には、マイク
ロプロセッサにおける割り込みと例外の処理に関する。
【0002】なお、本明細書の記述は本件出願の優先権
の基礎たる米国特許出願07/726,942号の明細
書の記載に基づくものであって、当該米国特許出願の番
号を参照することによって当該米国特許出願の明細書の
記載内容が本明細書の一部分を構成するものとする。
【0003】
【従来の技術】関連特許出願相互参照 以下に列挙した米国特許出願は本件特許出願と同時に米
国特許出願され、係属中のものであるが、これらの米国
特許出願に開示されており、かつそれぞれに対応して出
願された日本での特許出願に開示されている事項は、そ
の出願番号を本明細書で引用することにより本明細書の
一部を構成するものとする。 1.発明の名称「高性能RISCマイクロプロセッサ・
アーキテクチャ」(High−Performance
RISC Microprocessor Arch
itecture)SMOS 7984 MCF/GB
R,米国特許出願第07/727,006号、1991
年7月8日出願、発明者Le T.Nguyen他、お
よびこれに対応する特願平5−502150(特表平6
−501122号公報)。 2.発明の名称「拡張可能RISCマイクロプロセッサ
・アーキテクチヤ」(Extensible RISC
Microprocessor Architect
ure)SMOS 7985 MCF/GBR,米国特
許出願第07/727,058号、1991年7月8日
出願、発明者Le T.Nguyen他、およびこれに
対応する特願平5−502153(特表平6−5011
24号公報)。 3.「アーキテクチャ上の依存関係を隔離したRISC
マイクロプロセッサ・アーキテクチャ」(RISC M
icroprocessor Architectur
e with isolated Architect
ural Dependencies)SMOS 79
87 MCF/GBR,米国特許出願第07/726,
744号、1991年7月8日出願、発明者Le T.
Nguyen他、およびこれに対応する特願平5−50
2152(特表平6−502034号公報)。 4.発明の名称「複数型レジスタ・セットを採用したR
ISCマイクロプロセッサ・アーキテクチャ」(RIS
C Microprocessor Architec
ture Implementing Multipl
e TypedRegister Sets)SMOS
7988 MCF/GBR/RCC,米国特許出願第
07/726,773号、1991年7月8日出願、発
明者Sanjiv Garg他、およびこれに対応する
特願平5−502403(特表平6−501805号公
報)。 5.発明の名称「シングル・チップ・ページ・プリンタ
・コントローラ」(Single Chip Page
Printer Controller)SMOS
7991 MCF/GBR,米国特許出願第07/72
6,929号、1991年7月8日出願、発明者Der
ek J.Lentze他、およびこれに対応する特願
平5−502149(特表平6−501586号公
報)。 6.発明の名称「複数の異種プロセッサをサポートする
ことのできるマイクロプロセッサ・アーキテクチャ」
(Microprocessor Architect
ure Capable of Supporting
MultipleHeterogeneous Pr
ocessors)SMOS 7992MCF/WM
B,米国特許出願第07/726,893号、1991
年7月8日出願、発明者Derek J.Lentze
他、およびこれに対応する特願平5−502151(特
表平6−501123号公報)。
【0004】関連技術の説明 代表的なマイクロプロセッサでは、制御の流れ(フロ
ー)を変える命令が現れるか、例外が発生するのでなけ
れば、命令は順序通りに実行されるのが普通である。例
外に関しては、特定の事象が発生したとき、その事象が
命令ストリームの中の特定の命令に関連して起こったか
否かに関係なく、制御の流れを変更する機構が組み込ま
れている。例えば、マイクロプロセッサは割込み要求
(IRQ)リード(1ead)を含んでいる場合があ
り、このリードが外部デバイスによってアクティベート
(活動化)されると、マイクロプロセッサは次に実行す
べき命令のアドレスの表示を含めて、マシンの現在状態
(ステート)に関するある種の情報をセーブしておき、
そのあと、直ちに割込みハンドラ(1nterrupt
handler)に制御権(コントロール)を渡すと、
割込みハンドラはある所定のアドレスから開始するよう
になっている。別の例では、ある特定の命令の実行中
に、ゼロによる除算(divide−by−zero)
などの例外エラーが発生すると、マイクロプロセッサは
マシンの現在状態に関する情報をセーブしてから、制御
権を例外ハンドラに渡すようになっている。また、別の
例では、ある種のマイクロプロセッサは、それぞれの命
令セットに「ソフトウェア・トラップ」命令を用意して
いる。この場合も、マイクロプロセッサはマシンの現在
状態に関する情報をセーブしてから、制御権を例外ハン
ドラに渡すようになっている。本明細書で用いられてい
る割込み、トラップ、障害および例外の用語は交換可能
に使用されている。
【0005】一部のマイクロプロセッサでは、割込みが
外部で発生すると、マイクロプロセッサは制御権を同じ
割込みハンドラの入口点(entry point)に
渡すようになっている。複数の外部デバイスが存在し、
それらのデバイスが割込み要求リードをアクティベート
できる場合は、割込みハンドラはどのデバイスが割込み
を引き起こしたかをまず判断してから、その特定デバイ
スを処理するコード部分に制御権を渡さなければならな
い。例えば、インテル8048マイクロプロセッサはI
NT入力を含んでおり、これがアクティベートされる
と、マイクロコントローラは制御権を絶対メモリ・ロケ
ーション3へ渡すようになっている。また、8048は
RESET入力も含んでおり、これがアクティベートさ
れると、マイクロコントローラは制御権を絶対メモリ・
ロケーション0へ渡すようになっている。また、内部タ
イマ/カウンタも含んでおり、これが割込みを引き起こ
すと制御権が絶対メモリ・ロケーション7へ渡されるよ
うになっている。
【0006】他のマイクロプロセッサは割込み要求リー
ドの他に「割込みレベル」リードを含んでいる。これら
のマイクロプロセッサでは、外部デバイスが割込み要求
リードをアクティベートするとき、その特定のデバイス
に固有のトラップ番号も割込みレベル・ライン上に送出
する。これを受けて、マイクロプロセッサの内部ハード
ウェアは制御権、つまり、「ベクトル」を各々が異なる
トラップ番号に対応している複数の割込みハンドラの1
つに渡す。同様に、いくつかのマイクロプロセッサで
は、内部で発生した例外を処理するように書かれたすべ
てのルーチンに対して1つだけの入口点があらかじめ定
められており、他のマイクロプロセッサでは、発生する
可能性のある内部例外の各特定のタイプに対して定義さ
れたトラップ番号に依存するルーチンヘ自動的にベクト
ルを渡す機構が備わっている。
【0007】従来は、割込みハンドラおよび例外ハンド
ラにベクトルが渡される場合、該当のハンドラの入口点
を判断するために、いくつかの手法が用いられていた。
ある手法では、特定のテーブル・ベース・アドレスを始
点として、アドレス・テーブルが作成されており、その
ベース・アドレスは固定しているか、ユーザが定義でき
るようになっている。テーブルの各エントリ(項目)は
アドレスの長さと同じ長さに、例えば、2バイトまたは
4バイト長になっており、対応するトラップ番号に対す
る入口点を収容していた。割込みまたは例外が発生する
と、マイクロプロセッサはまずテーブルのベース・アド
レスを判断してから、トラップ番号をm倍したものを加
え(ただし、mは各エントリ内のバイト数である)、そ
のあと、求めたアドレスにストアされている情報をプロ
グラム・カウンタ(PC)にロードし、テーブル・エン
トリに指定されているアドレスから始まるルーチンヘ制
御権を渡していた。
【0008】他のマイクロプロセッサでは、ハンドラの
アドレスだけをストアするのではなく、ブランチ命令全
体をテーブル内の各エントリにストアしていた。各エン
トリ内のバイト数はブランチ命令のバイト数と等しくな
っていた。割込みまたは例外を受け取ると、マイクロプ
ロセッサはまずテーブル・ベース・アドレスを判断し、
トラップ番号をm倍したものを加え、その結果をプログ
ラム・カウンタにロードするだけであった。そのあと最
初に実行される命令はテーブル内のブランチ命令であ
り、最終的に制御権が該当の例外ハンドラに渡されてい
た。
【0009】
【発明が解決しようとする課題】ハンドラにベクトルを
渡す上述の手法のどちらも、予備的オペレーションを実
行してからでなければ、ハンドラのオペレーション部分
は実行を開始できないために遅延(待ち時間)が起こっ
ている。最初に挙げた手法では、入口点アドレスを最初
にテーブルから取り出してからでなければ、入口点アド
レスをプログラム・カウンタにロードできなかった。2
番目に挙げた手法では、予備的ブランチ命令を取り出し
て、実行させてからでなければ、ハンドラの重要部分は
実行を開始できなかった。トラップ番号をm倍したもの
をテーブル・ベース・アドレスに加える計算時に起こる
加算の遅延は、ベース・アドレスからの上位ビットを下
位ビットとしてトラップ番号を連結し、そのあとにlo
2 m個のゼロ・ビットを続けるだけで回避できるが、
上述した予備的オペレーションが原因で起こる遅延はそ
のまま残っていた。このような遅延は、ある種の割込み
を処理するためのレスポンス・タイム(応答時間)を重
要とするシステムでは、支障となるおそれがある。
【0010】従来のマイクロプロセッサにおける例外処
理に関係するもう1つの問題は、トラップ・ハンドラが
メイン命令フローに戻ったとき、「マシンの状態」(s
tate of machine)を復元できるように
ストアしておく必要がある情報量に関係するものであ
る。できるだけ多くの情報をストアする必要性と、トラ
ップ・ハンドラヘディスパッチするときの遅延を最小に
する必要性とはトレードオフの関係にある。特に、オン
・チップ・データ・レジスタについては、オン・チップ
・データ・レジスタはどれもストアしておかないで、デ
ータを各レジスタに一時的にストアすることをハンドラ
に任せておき、そのあとでハンドラが独自の目的に使用
できるようにする手法が用いられていた。この場合、ハ
ンドラは戻る前にレジスタに入っているデータを置き換
える必要があった。この場合には、これらのレジスタを
ストアし、復元する必要があるので、ハンドラのオペレ
ーションが大幅に遅くなる可能性がある。別の手法で
は、ハードウェアがレジスタの内容をスタック上に自動
的にストアしてから、制御権をハンドラに渡すようにし
ている。この手法も、ハードウェアを複雑化すると共
に、ハンドラヘの制御権移動が大幅に遅延化する可能性
があるので、不適切である。従って、上述したベクトル
手法による場合は、トラップ・ハンドラの呼出し時にレ
ジスタの内容を保護するために既存の手法で起こる遅延
は、高性能マイクロプロセッサでは許容し得ないもので
ある。
【0011】
【課題を解決するための手段】本発明によれば、公知シ
ステムにおける上述した問題の多くを解消するマイクロ
プロセッサ・アーキテクチャが採用されている。特に、
「高速トラップ」例外ディスパッチ手法が採用されてい
る。この手法によれば、ハンドラ全体を単一のベクトル
・アドレス・テーブル・エントリにストアしておくこと
ができる。各テーブル・エントリには、少なくとも2
個、好ましくはそれ以上の命令を収めておくだけのスペ
ースがあるので、高速トラップが起こったとき、マイク
ロプロセッサはトラップ番号をm倍したものをベース・
アドレスに連結することで求めたアドレスヘブランチす
るだけでよいようになっている。入口点アドレスをテー
ブルからフェッチしたり、予備的ブランチ命令をフェッ
チして実行するために必要な時間的遅れは、除去され
る。マイクロプロセッサには、重要度の低いタイプのト
ラップの場合には、時間効率の劣る他のベクトル手法を
取り入れることも可能である。
【0012】本発明の別の形態では、トラップが現れる
と、プロセッサは割込み状態に入り、いくつかのシャド
ウ・レジスタを自動的にフォアグランド(前景)にシフ
トし対応する前景レジスタ・セットをバックグランド
(背景)にシフトする。レジスタ内容は転送されず、そ
の代わりに、シャドウ・レジスタが通常のレジスタの代
わりに使用可能にされるだけである。従って、ハンドラ
は、メイン命令ストリームのために必要なデータを壊す
かどうかを気にすることなく即時に使用可能なレジスタ
・セットをもつことになる。
【0013】上掲の米国特許出願第07/727,00
6号(PCT/JP92/00868)、発明の名称
「高性能RISCマイクロプロセッサ・アーキテクチ
ャ」(High−Performance RISC
MicroprocessorArchitectur
e)(特表平6−501122号公報)には、その実行
時前に命令をプリフェッチする高度マイクロプロセッサ
が命令プリフェッチ要求の順序外の返却を処理できるこ
と、同一の実行時の間に2つ以上の命令を実行できるこ
と、および命令ストリームにおける命令の列に対して順
序外で命令を実行することもできることが説明されてい
る。本発明の別の形態では、命令の実行の前と実行時の
間に命令に対して発生した同期例外の正確さを保つため
のメカニズムが組み込まれている。
【0014】上記特許出願に記載されているマイクロプ
ロセッサ・アーキテクチャには、さらに、メイン命令フ
ローの中のプロシージャ命令またはエミュレーション命
令から呼び出された別のプロシーレジャ命令フローを処
理するための機構が組み込まれている。プロシージャ命
令フローヘの制御権の移動は、メイン命令フローの中で
すでにプリフェッチされたどの命令もフラッシュするこ
となく、別に設けたエミュレーション・プリフェッチ待
ち行列によって行われる。本発明の別の形態によれば、
割込み状態は、プロセッサがメイン命令ストリームから
実行されているか、またはプロシージャ命令ストリーム
から実行されているかに関係なく、使用可能のままにな
っており、プロセッサは、トラップから戻るときどちら
の命令ストリームヘ戻るべきかを示した標識をもってい
る。さらに、メイン命令ストリーム用とエミュレーショ
ン命令ストリーム用に別個のプリフェッチ・プログラム
・カウンタが維持されており、プロセッサはトラップ・
ハンドラが呼び出されたとき現命令ストリームからプリ
フェッチPCだけをストアし、ハンドラが戻るときプリ
フェッチPCを正しいプリフェッチ・プログラム・カウ
ンタに復元する。
【0015】
【発明の実施の形態】以下、本発明の実施の形態を図面
を参照しつつ説明する。 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.要約および結論 I.マイクロプロセッサ・アーキテクチャの概要 図1は、本発明のアーキテクチャ100の概要を示すも
のである。命令フェッチ・ユニット(IFU)102と
命令実行ユニット(IEU)104は、アーキテクチャ
100の中心となる機能要素である。仮想メモリ・ユニ
ット(VMU)108、キャッシュ制御ユニット(CU
U)106、およびメモリ制御ユニット(MCU)11
0は、IFU102とIEU104の機能を直接にサポ
ートするためのものである。また、メモリ・アレイ・ユ
ニット(MAU)112は基本的要素として、アーキテ
クチャ100を動作させるためのものである。もっと
も、MAU112はアーキテクチャ100の1つの一体
的なコンポーネントとして直接的に存在しない。つま
り、本発明の好適実施例では、IFU102、IEU1
04、VMU108、CCU106、およびMCU11
0は従来の0.8ミクロン設計ルールの低電力CMOS
プロセスを利用してシングル・シリコン・チップ上に実
装され、約1,200,000個のトランジスタから構
成されている。アーキテクチャ100の標準プロセッサ
またはシステムのクロック速度は40MHzである。し
かし、本発明の好適実施例によれば、プロセッサの内部
クロック速度は160MHzである。
【0016】IFU102の基本的役割は命令をフェッ
チし、IEU104による実行が保留されている間命令
をバッファに置いておき、一般的には、次の命令をフェ
ッチするとき使用される次の仮想アドレスを計算するこ
とである。
【0017】本発明の好適実施例では、各命令は長さが
32ビットに固定されている。命令セッ卜、つまり、4
個の命令からなる「バケット」(bucket)は、C
CU106内の命令用キャッシュ132から128ビッ
ト幅の命令バス114を経由してIFU102によって
同時にフェッチされる。命令セットの転送は、制御ライ
ン116経由で送られてきた制御信号によって調整され
て、IFU102とCCU106間で行われる。フェッ
チされる命令セットの仮想アドレスは、IFU仲裁、制
御およびアドレスを兼ねたバス118経由でIFU10
2から出力され、さらにIEU104とVMU108間
を結合する仲裁、制御およびアドレス共用バス120上
に送出される。VMU108へのアクセスの仲裁(ar
bitration)は、IFU102とIEU104
の両方がVMU108を共通の共用資源として利用する
ことから行われる。本発明の好適実施例では、仮想アド
レスの物理ページ内のアドレスを定義する下位ビット
は、IFU102から制御ライン116を経由して直接
にキャッシュ制御ユニット106へ転送される。IFU
102から与えられる仮想アドレスの仮想上位ビットは
バス118、120のアドレス部分によってVMU10
8へ送られ、そこで対応する物理ページ・アドレスに変
換される。IFU102では、この物理ページ・アドレ
スは、変換要求がVMU108に出されたあと内部プロ
セッサ・クロック・サイクルの1/2の間に、VMU1
08からアドレス制御ライン122経由で直接にキャッ
シュ制御ユニット106へ転送される。
【0018】IFU102によってフェッチされた命令
ストリームの方は命令ストリーム・バス124経由でI
EU104に渡される。制御信号は、制御ライン126
を介してIFU102とIEU104間でやりとりされ
る。さらに、ある種の命令フェッチ・アドレス、例え
ば、IEU104内に存在するレジスタ・ファイルヘの
アクセスを必要とするアドレスは、制御ライン126内
のターゲット・アドレス・リターン・バスを経由してI
FU102へ送り返される。
【0019】IEU104は、CCU106内に設けら
れたデータ用キャッシュ134との間で80ビット幅双
方向データ・バス130を通してデータをストアし、デ
ータを取り出す。IEUがデータ・アクセスするときの
物理アドレス全体は制御バス128のアドレス部分によ
ってCCU106へ渡される。また、制御バス128を
通して、データ転送を管理するための制御信号をIEU
104とCCU106との間でやりとりすることもでき
る。IEU104は、仮想データ・アドレスをCCU1
06へ渡すのに適した物理データ・アドレスに変更する
ための資源としてVMU108を使用する。データ・ア
ドレスの仮想化部分は、仲裁、制御およびアドレス・バ
ス120を経由してVMU108へ渡される。IFU1
02に対するオペレーションと異なり、VMU108は
対応する物理アドレスをバス120経由でIEU104
へ返却する。アーキテクチャ100の好適実施例では、
IEU104は物理アドレスを使用して、ロード/スト
ア・オペレーションが正しいプログラム・ストリーム順
序で行われていることを確かめている。
【0020】CCU106は、物理アドレスで定義した
データ要求を命令用キャッシユ132とデータ用キャッ
シュ134のどちらか該当する方から満足できるかどう
かを判断する従来のハイレベル機能を備えている。アク
セス要求が命令用キャッシュ132またはデータ用キャ
ッシュ134ヘアクセスすることで正しく満足できる場
合は、CCU106はデータ・バス114、130を経
由するデータ転送を調整して、その転送を行う。
【0021】データ・アクセス要求が命令用キャッシュ
132またはデータ用キャッシュ134から満足できな
い場合は、CCU106は対応する物理アドレスをMC
U110へ渡し、MAU112が要求しているのは読取
りアクセスであるか書込みアクセスであるかを判別し、
各要求ごとにCCU106のソースまたは宛先キャッシ
ュ132、134を識別するのに十分な制御情報および
要求オペレーションをIFU102またはIEU104
から出された最終的データ要求と関係づけるための追加
識別情報も一緒に渡される。
【0022】MCU110は、好ましくは、ポート・ス
イッチ・ユニット142を備えており、このユニットは
単方向データ・バス136によってCCU106の命令
用キャッシュ132に接続され、双方向データ・バス1
38によってデータ用キャッシュ134に接続されてい
る。ポート・スイッチ142は基本的には大きなマルチ
プレクサであり、制御バス140から得た物理アドレス
を複数のポート(P0−Pn )1460-n のいずれかへ
送ることを可能にし、また、ポートからデー夕・バス1
36、138へのデータの双方向転送を可能にする。M
CU110によって処理される各メモリ・アクセス要求
は、MAU112をアクセスするとき要求されるメイン
・システム・メモリ・バス162へのアクセスを仲裁す
る目的でポート1460-n の1つと関連づけられる。デ
ータ転送の接続が確立されると、MCU110は制御情
報を制御バス140経由でCCU106に渡して、ポー
ト1460-n のうち対応する1つを経由して命令用キャ
ッシュ132またはデータ用キャッシュ134とMAU
112との間でデータを転送することを開始する。アー
キテクチャ100の好適実施例では、MCU110は、
実際には、CCU106とMAU112間を転送する途
中にあるデータをストアまたはラッチしない。このよう
にしたのは、転送の待ち時間を最小にし、MCU110
に1つだけ存在するデータを追跡または管理しないです
むようにするためである。
【0023】II.命令フェッチ・ユニット 命令フェッチ・ユニット102の主要エレメントを図2
に示す。これらのエレメントのオペレーションおよび相
互関係を理解しやすくするために、以下では、これらの
エレメントがIFUデータ経路と制御経路に関与する場
合を考慮して説明する。
【0024】A)IFUデータ経路 IFUデータ経路は、命令セットを受け取ってプリフェ
ッチ・バッファ260に一時的にストアしておく命令バ
ス114から始まる。プリフェッチ・バッファ260か
らの命令セットはIデコード・ユニット262を通って
IFIFOユニット264へ渡される。命令FIFO2
64の最後の2ステージにストアされた命令セットは、
データ・バス278、280を通してIEU104に連
続的に取り出して利用することができる。
【0025】プリフェッチ・バッファ・ユニット260
は、一度に1つの命令セットを命令バス114から受け
取る。完全な128ビット幅命令セットは、一般に、プ
リフェッチ・バッファ260のメイン・バッファ(MB
UF)188部分の4つの128ビット幅プリフェッチ
・バッファ・ロケーションの1つに並列に書き込まれ
る。追加の命令セットは最高4つまで同じように、2つ
の128ビット幅ターゲット・バッファ(TBUF)1
90のプリフェッチ・バッファ・ロケーションにまたは
2つの128ビット幅プロシージャ・バッファ(EBU
F)192のプリフェッチ・バッファ・ロケーションに
書き込むことが可能である。好適アーキテクチャ100
では、MBUF188、TBUF190またはEBUF
192内のプリフェッチ・バッファ・ロケーションのい
ずれかに置かれている命令セットは、プリフェッチ・バ
ッファ出力バス196へ転送することが可能である。さ
らに、直接フォールスルー(fall throug
h)命令セット・バス194は、命令バス114をプリ
フェッチ・バッファ出力バス196と直接に接続するこ
とによって、MBUF188、TBUF190およびE
BUF192をバイパスするためのものである。
【0026】好適アーキテクチャ100では、MBUF
188は名目的またはメイン命令ストリーム中の命令セ
ットをバッファするために利用される。TBUF190
は、試行的なターゲット・ブランチ命令ストリームから
プリフェッチした命令セットをバッファするために利用
される。その結果、プリフェッチ・バッファ・ユニット
260を通して、条件付きブランチ命令のあとに置かれ
ている可能性のある両方の命令ストリームをプリフェッ
チすることができる。この機能により、MAU112の
待ち時間は長くなるとしても、少なくともCCU112
への以後のアクセス待ち時間がなくなるので、条件付き
ブランチ命令の解決時にどの命令ストリームが最終的に
選択されるかに関係なく、条件付きブランチ命令のあと
に置かれた正しい次の命令セットを得て、実行すること
ができる。本発明の好適アーキテクチャ100では、M
BUF188とTBUF190があるために、命令フェ
ッチ・ユニット102は、現れる可能性のある両方の命
令ストリームをプリフェッチすることができ、命令実行
ユニット104に関連して以下に説明するように、正し
いと想定された命令ストリレムを引き続き実行すること
ができる。条件付きブランチ命令が解決されたとき、正
しい命令ストリームがプリフェッチされて、MBUF1
88に入れられた場合は、TBUF190に残っている
命令セットは無効にされるだけである。他方、正しい命
令ストリームの命令セットがTBUF190に存在する
場合は、命令プリフェッチ・バッファ・ユニット260
を通して、これらの命令セットがTBUF190から直
接に、並行にMBUF188内のそれぞれのバッファ・
ロケーションヘ転送される。それ以前にMBUF188
にストアされた命令セットは、TBUF190から転送
された命令セットを重ね書きすることによって、事実上
無効にされる。MBUFロケーションヘ転送するTBU
F命令セットがなければ、そのロケーションには無効の
印が付けられるだけである。
【0027】同様に、EBUF192は、プリフェッチ
・バッファ260を経由する別の代替プリフェッチ経路
となるものである。EBUF192は、好ましくは、M
BUF188命令ストリームに現れた単一の命令、つま
り、「プロシージャ」命令で指定されたオペレーション
を実現するために使用される代替命令ストリームをプリ
フェッチする際に利用される。このようにすると、複雑
な命令や拡張された命令はソフトウェア・ルーチンまた
はプロシージャを通して実現することができ、すでにプ
リフェッチされてMBUF188に入れられた命令スト
リームを乱すことなくプリフェッチ・バッファ・ユニッ
ト260を通して処理することができる。一般的には、
本発明によれば、最初にTBUF190に現れたプロシ
ージャ命令を処理することができるが、プロシージャ命
令ストリームのプリフェッチは保留され、以前に現れた
保留中の条件付きブランチ命令ストリームがすべて解決
される。これにより、プロシレジャ命令ストリームに現
れた条件付きブランチ命令は、TBUF190の使用を
通して矛盾なく処理されることになる。従って、プロシ
ージャ・ストリームでブランチが行われる場合は、ター
ゲット命令セットはすでにプリフェッチされてTBUF
190に入れられているので、EBUF192へ並列に
転送することができる。
【0028】最後に、MBUF188、TBUF190
およびEBUF192の各々はプリフェッチ・バッファ
出力バス196に接続され、プリフェッチ・ユニットに
よってストアされた命令セットを出力バス196上に送
出するようになっている。さらに、バス194を通過す
るフローは、命令セットを命令バス114から直接に出
力バス196へ転送するためのものである。
【0029】好適アーキテクチャ100では、MBUF
188、TBUF190、EBUF192内のプリフェ
ッチ・バッファは直接的にはFIFO構造を構成してい
ない。その代わりに、どのバッファ・ロケーションも出
力バス196に接続されているので、命令用キャッシュ
132から取り出された命令セットのプリフェッチ順序
に大幅な自由度をもたせることができる。つまり、命令
フェッチ・ユニツト102は命令ストリームに一定順序
で並んだ命令順に命令セットを判断して、要求するのが
一般的になっている。しかし、命令セットがIFU10
2へ返されるときの順序は、要求したある命令セットが
使用可能で、CCU106だけからアクセス可能であ
り、他の命令セットはMAU102のアクセスを必要と
するような場合に合わせて、順序外に現れることも可能
である。
【0030】命令セットは一定順序でプリフェッチ・バ
ッファ・ユニット260へ返されない場合があっても、
出力バス196上に出力される命令セットの列は、一般
的に、IFU102から出された命令セット要求の順序
に従っていなければならない。順序内(in−orde
r)の命令ストリーム列は、例えば、ターゲット・ブラ
ンチ・ストリームの試行的実行に影響されるためであ
る。
【0031】Iデコード・ユニット262は、IFIF
Oユニット264のスペースが許すかぎり、プリフェッ
チ・バッファ出力バス196から命令セットを、普通は
1サイクルに1つの割合で受け取る。1つの命令セット
を構成する4個の命令からなる各セットはIデコード・
ユニット262によって並列にデコードされる。関係の
制御フロー情報がIFU102の制御経路部分のために
ライン318から抜き出されている間は、命令セットの
内容はIデコード・ユニット262によって変更されな
い。
【0032】Iデコード・ユニット162からの命令セ
ットはIFIFOユニット264の128ビット幅入力
バス198上に送出される。内部的には、IFIFOユ
ニット264はマスタ/スレーブ・レジスタ200、2
04、208、212、216、220、224の列か
ら構成されている。各レジスタはその後続レジスタに接
続され、マスタ・レジスタ200、208、216の内
容がFIFOオペレーションの内部プロセッサ・サイク
ルの前半時にスレーブ・レジスタ204、212、22
0へ転送され、そのあとオペレーションの後半サイクル
時に次の後続マスタ・レジスタ208、216、224
へ転送されるようになっている。入力バス198はマス
タ・レジスタ200、208、216、224の各々の
入力に接続され、FIFOオペレーションの後半サイク
ル時に命令セットがIデコード・ユニット262からマ
スタ・レジスタに直接にロードされるようになってい
る。しかし、マスタ・レジスタを入力バス198からロ
ードすることは、IFIFOユニット264内でデータ
をFIFOシフトすることと同時に行う必要はない。そ
の結果、命令FIFOユニット264内にストアされた
命令セットの現在の深さに関係なく、さらに、IFIF
Oユニット264内でデー夕をFIFOシフトすること
から独立して、入力バス198から連続的にIFIFO
ユニット264に入れていくことができる。
【0033】マスタ/スレーブ・レジスタ200、20
4、208、212、216、220、224の各々
は、128ビット幅命令セットの全ビットを並列にスト
アできるほかに、制御情報のいくつかのビットをそれぞ
れの制御レジスタ202、206、210、214、2
18、222、226にストアすることもできる。好ま
しくは、制御ビットのセットは、例外不一致(exce
ption miss)と例外修正(exceptio
n modify)(VMU)、メモリなし(MC
U)、ブランチ・バイアス、ストリーム、およびオフセ
ット(IFU)からなっている。この制御情報は、IF
IFOマスタ・レジスタに入力バス198から新しい命
令セットをロードするのと同時に、IFU102の制御
経路部分から発生する。そのあと、制御レジスタ情報は
命令セットと並行してIFIFOユニット263内で並
列にシフトされる。
【0034】最後に、好適アーキテクチャ100では、
IFIFOユニット264からの命令セットの出力は最
後の2マスタ・レジスタ216、224から同時に得ら
れて、I_Bucket 0とI Bucket 1命
令セット出力バス278、280上に送出される。さら
に、対応する制御レジスタ情報がIBASV0とIBA
SV1制御フィールド・バス282、284上に送出さ
れる。これらの出力バス278、282、280、28
4はすべてIEU104へ通じる命令ストリーム・バス
124となるものである。
【0035】B)IFU制御経路 IFU102制御経路は、プリフェッチ・バッファ・ユ
ニット260、Iデコード・ユニット262およびIF
IFOユニット264のオペレーションを直接にサポー
トする。プリフェッチ制御ロジック・ユニット266は
主にプリフェッチ・バッファ・ユニット260のオペレ
ーションを管理する。プリフェッチ制御ロジック・ユニ
ット266とIFU102は一般的には、クロック・ラ
イン290からシステム・クロック信号を受信して、I
FUのオペレーションとIEU104、CCU106お
よびVMU108のオペレーションとの同期をとるよう
にしている。命令セットを選択して、MBUF188、
TBUF190およびEBUF192に書き込むための
制御信号は制御ライン304上に送出される。
【0036】多数の制御信号は、制御ライン316上に
送出されて、プリフェッチ制御ロジック・ユニット26
6へ送られる。具体的には、フェッチ要求制御信号はプ
リフェッチ・オペレーションを開始するために送出され
る。制御ライン316上に送出される他の制御信号は要
求したプリフェッチ・オペレーションが目標とする宛先
がMBUF188であるか、TBUF190であるか、
EBUF192であるかを指定している。プリフェッチ
要求を受けて、プリフェッチ制御ロジック・ユニット2
66はID値を生成し、プリフェッチ要求をCCU10
6に通知できるかどうかを判断する。ID値の生成は、
循環4ビット・カウンタを使用して行われる。
【0037】4ビット・カウンタの使用は、次の3つの
点で重要である。第1は、最大9個までの命令セットを
プリフェッチ・バッファ・ユニット260で一度にアク
テイブにできることである。すなわち、MBUF188
での4命令セット、TBUF190での2命令セット、
EBUF192での命令セット、およびフロー・スルー
・バス194経由で直接にIデコード・ユニット262
に渡される1命令セットである。第2は、命令セットが
各々4バイトの4個の命令からなることである。その結
果、フェッチする命令を選択するどのアドレスも、その
最下位4ビットは余分になっている。最後は、プリフェ
ッチ要求アドレスの最下位4ビットとして挿入すること
で、プリフェッチ要求IDをプリフェッチ要求と容易に
関連づけることができることである。これにより、CC
U106とのインタフェースとなるために必要な総アド
レス数が減少することになる。
【0038】IFU102から出されたプリフェッチ要
求の順序に対して順序外で命令セットがCCU106か
ら返却されるようにするために、アーキテクチャ100
では、CCU106からの命令セットの返却と一緒にI
D要求値が返されるようになっている。しかし、順序外
の命令セット返却機能によると、16個の固有IDが使
いつくされるおそれがある。条件付き命令の組合せが順
序外で実行されると、要求されたが、まだ返却されてい
ない追加のプリフェッチと命令セットがあるので、ID
値を再使用することが可能になる。従って、4ビット・
カウンタは保持しておくのが好ましく、それ以降の命令
セットのプリフェッチ要求が出されないことになり、そ
の場合には、次のID値は、未処理のまま残っているフ
ェッチ要求やそのときプリフェッチ・バッファ260に
保留されている別の命令セットに関連づけられたものと
なる。
【0039】プリフェッチ制御ロジック・ユニット26
6は状況レジスタ配列(アレイ)268を直接に管理
し、この配列はMBUF188、TBUF190および
EBUF192内の各命令セット・プリフェッチ・バッ
ファ・ロケーションに論理的に対応する状況記憶ロケー
ションからなっている。プリフェッチ制御ロジック・ユ
ニット266は、選択およびデータ・ライン306を通
して、データをスキャンし、読み取って、状況レジスタ
配列268に書き込むことができる。配列268内で
は、メイン・バッファ・レジスタ308は、4個の4ビ
ットID値(MBID)、4個の1ビット予約フラグ
(MB RES)および4個の1ビット有効フラグ(M
B VAL)をストアしておくためのものであり、これ
らの各々は論理ビット位置別にMBUF180内のそれ
ぞれの命令セット記憶ロケーションに対応づけられてい
る。同様に、ターゲット・バッファ・レジスタ310と
拡張バッファ・レジスタ312は、それぞれ2個の4ビ
ットID値(TB ID、EBID)、2個の1ビット
予約フラグ(TB RES、EB RES)および2個
の1ビット有効フラグ(TB VAL、EB VAL)
をストアしておくためのものである。最後に、フロー・
スルー状況レジスタ314は1個の4ビットID値(F
T TD)、1個の予約フラグ・ビット(FT RE
S)および1個の有効フラグ・ビット(FT VAL)
をストアしておくためのものである。
【0040】状況レジスタ配列268が最初にスキャン
され、該当するときは、プリフェッチ要求がCCU26
6に出されるたびにプリフェッチ制御ロジック・ユニッ
ト266によって更新され、そのあとは、命令セットが
返されるたびにスキャンされ、更新される。具体的に説
明すると、制御ライン316からプリフェッチ要求信号
を受け取ると、プリフェッチ制御ロジック・ユニット2
66は現在の循環カウンタ生成ID値をインクリメント
し、状況レジスタ配列268をスキャンして、使用可能
なID値があるかどうか、プリフェッチ要求信号で指定
されたタイプのプリフェッチ・バッファ・ロケーション
が使用可能であるかどうかを判断し、CCUIBUSY
制御ライン300の状態を調べてCCU106がプリフ
ェッチ要求を受け付けることができるかどうかを判断
し、受付け可能ならば、制御ライン298上のCCU
IREAD制御信号を肯定し、インクリメントされたI
D値をCCU106と結ばれたCCU ID出力バス2
94上に送出する。プリフェッチ記憶ロケーションは、
対応する予約状況フラグと有効状況フラグが共に偽であ
る場合に使用が可能である。プリフェッチIDは、要求
がCCU106に出されるのと並行して、MBUF18
8、TBUF190、またはEBUF192内の目標と
する記憶ロケーションに対応する、状況レジスタ配列2
68内のID記憶ロケーションに書き込まれる。さら
に、対応する予約状況フラグが真にセットされる。
【0041】CCU106が以前に要求された命令セッ
トをIFU102へ返却できるときは、CCU IRE
ADY信号が制御ライン302上で肯定され、対応する
命令セットIDがCCU ID制御ライン296上に送
出される。プリフェッチ制御ロジック・ユニット266
は状況レジスタ配列268内のID値と予約フラグをス
キャンして、プリフェッチ・バッファ・ユニット260
内の命令セットの目標とする宛先を判別する。一致する
ものは1つだけが可能である。判別されると、命令セッ
トはバス114を経由してプリフェッチ・バッファ・ユ
ニット260内の該当ロケーションに書き込まれ、フロ
ー・スルー要求と判別されたときは、直接にIデコード
・ユニット262に渡される。どちらの場合も、対応す
る状況レジスタ配列268に入っている有効状況フラグ
は真にセットされる。
【0042】PCロジック・ユニット270は、以下で
詳しく説明するように、IFU102全体を調べて、M
BUF188、TBUF190およびEBUF192命
令ストリームの仮想アドレスを探し出す。この機能を実
行する際、PCロジック・ブロック270はIデコード
・ユニット262を制御すると同時に、そこから動作す
る。具体的には、Iデコード・ユニット262によって
デコードされ、プログラムの命令ストリームのフローの
変化と係わりがある可能性のある命令部分はバス318
を経由して制御フロー検出ユニット274へ送られると
共に、直接にPCロジック・ブロック270へ送られ
る。制御フロー検出ユニット274は、条件付きブラン
チ命令と無条件ブランチ命令、コール型命令、ソフトウ
ェア・トラップ・プロシージャ命令および種々のリター
ン命令を含む制御フロー命令を構成する各命令を、デコ
ードされた命令セットの中から判別する。制御フロー検
出ユニット274は制御信号をライン322を経由して
PCロジック・ユニット270へ送る。この制御信号
は、Iデコード・ユニット262に存在する命令セット
内の制御フロー命令のロケーションと種類を示してい
る。これを受けて、PCロジック・ユニット270は、
一般的には、命令に入れられて、ライン318経由でP
Cロジック・ユニットヘ転送されたデータから制御フロ
ー命令のターゲット・アドレスを判断する。例えば、条
件付きブランチ命令に対して先に実行するためにブラン
チ・ロジック・バイアスが選択された場合は、PCロジ
ック・ユニット270は条件付きブランチ命令ターゲッ
ト・アドレスから命令セットをプリフェッチすることを
指示し、別々に追跡することを開始する。従って、制御
ライン316上のプリフェッチ要求を次に肯定すると、
PCロジック・ユニット270はさらにライン316を
経由する制御信号を肯定し、先行するプリフェッチ命令
セットがMBUF188またはEBUF192へ送られ
たものと想定すると、プリフェッチの宛先をTBUF1
90として選択する。プリフェッチ要求をCCU106
へ渡すことができるとプリフェッチ制御ロジック・ユニ
ット266が判断すると、プリフェッチ制御ロジック・
ユニット266は、この場合もライン316を経由して
イネーブル(許可)信号をPCロジック・ユニット27
0へ送って、ターゲット・アドレスのページ・オフセッ
ト部分(CCU PADDR〔13:4〕)をアドレス
・ライン324を経由して直接にCCU106へ渡すこ
とを可能にする。これと同時に、PCロジック・ユニッ
ト270は、新しい仮想ページから物理ページヘの変換
が必要な場合には、さらに、VMU要求信号を制御ライ
ン328を経由して、ターゲット・アドレスの仮想化部
分(VMU VADDR〔13:14〕)をアドレス・
ライン326を経由してVMU108へ渡して、物理ア
ドレスに変換する。ページ変換が必要でない場合は、V
MU108によるオペレーションは必要でない。その代
わりに、以前の変換結果がバス122に接続された出力
ラッチに保存されているので、CCU106によって即
時に使用される。
【0043】PCロジック・ユニット270が要求した
仮想から物理への変換時にVMU108にオペレーショ
ン・エラーが起こると、VMU例外およびVMU不一致
制御(miss control)ライン332、33
4を通して報告される。VMU不一致制御ライン334
は変換索引緩衝機構(trans1ation loo
kaside buffer:TLB)の不一致を報告
する。VMU例外ライン332上のVMU例外制御信号
は、他の例外が起こると発生する。いずれの場合も、P
Cロジック・ユニットは、命令ストリーム中の現在の実
行個所をストアしておき、そのあと無条件ブランチが行
われたのと同じように、それを受けて、エラー条件を診
断し処理するための専用例外処理ルーチン命令ストリー
ムをプリフェッチすることによって、エラー条件を処理
する。VMU例外および不一致制御信号は、発生した例
外の種類を示しているので、PCロジック・ユニット2
70は対応する例外処理ルーチンのプリフェッチ・アド
レスを判別することができる。
【0044】IFIFO制御ロジック・ユニット272
はIFIFOユニット264を直接にサポートするため
のものである。具体的には、PCロジック・ユニット2
70は制御ライン336を経由して制御信号を出力し、
命令セットがIデコード・ユニット262から入力バス
198経由で使用可能であることをIFIFO制御ロジ
ック・ユニット272に通知する。IFIFO制御ユニ
ット272は命令セットを受け取るために、最も奥の使
用可能なマスタ・レジスタ200、208、216、2
24を選択する役割をもっている。マスタ・レジスタ2
02、210、218、226の各々の出力は制御バス
338を経由してIFIFO制御ユニット272へ渡さ
れる。各マスタ制御レジスタによってストアされる制御
ビットは2ビット・バッファ・アドレス(IF_Bx_
ADR)、単一ストリーム・インジケータ・ビット(I
F_Bx_STRM)、および単一有効ビット(IF_
Bx_VLD)からなっている。2ビット・バッファ・
アドレスは対応する命令セット内の最初の有効命令を指
定している。つまり、CCU106から返された命令セ
ットは、例えば、ブランチ・オペレーションのターゲッ
ト命令が命令セット内の最初の命令ロケーションに置か
れるように境界合わせされていないことがある。従っ
て、バッファ・アドレス値は、実行の対象として考慮さ
れる、命令セット内の最初の命令を一意的に示すために
与えられる。
【0045】ストリーム・ビットは、条件付き制御フロ
ー命令を含んでいる命令セットのロケーションを示し、
IFIFOユニット264を通る命令のストリームに潜
在的制御フローの変更を引き起こすマーカとして使用さ
れることを基本としている。メイン命令ストリームは一
般にストリーム・ビット値が0のときMBUF188を
通して処理される。例えば、相対条件付きブランチ命令
が現れると、対応する命令セットはマークがつけられ、
ストリーム・ビット値が1となる。条件付命令セットは
Iデコード・ユニット262によって検出される。条件
付制御フロー命令は最高4つまで命令セットに存在する
ことができる。そのあと、命令セット時IFIFOユニ
ット264の最も奥の使用可能なマスタ・レジスタにス
トアされる。
【0046】条件付ブランチ命令のターゲット・アドレ
スを判断するために、現在のIEU104の実行点アド
レス(DPC)、ストリーム・ビットで指定された条件
付命令が入っている命令セットの相対ロケーション、制
御フロー検出ユニット274から得られた命令セット内
の条件付命令ロケーション・オフセットは、制御ライン
318を通して対応するブランチ命令フィールドから得
た相対ブランチ・オフセット値と結合される。その結果
はブランチ・ターゲットの仮想アドレスとなり、PCロ
ジック・ユニット270によってストアされる。ターゲ
ット命令ストリームの最初の命令セットは、このアドレ
スを使用してプリフェッチしてTBUF190に入れる
ことができる。PCロジック・ユニット270のために
事前に選択されたブランチ・バイアスに応じて、IFI
FOユニット264はMBUF188またはTBUF1
90からロードが続けられる。1つまたは2つ以上の条
件付フロー命令を含んでいる2番目の命令セットが現れ
ると、その命令セットはストリーム・ビット値に0のマ
ークが付けられる。2番目のターゲット・ストリームは
フェッチできないので、ターゲット・アドレスはPCロ
ジック・ユニット270によって計算されてストアされ
るが、プリフェッチは行われない。さらに、それ以降の
命令セットはIデコード・ユニッ卜262を通して処理
することができない。少なくとも、条件付きフロー制御
命令を含んでいることが分かった命令セットは1つも処
理されない。
【0047】本発明の好適実施例では、PCロジック・
ユニット270は、最高2個までの命令セットに現れた
条件付きフロー命令を最高8個まで管理することができ
る。ストリーム・ビットの変化でマークが付けられた2
命令セットの各々のターゲット・アドレスは4つのアド
レス・レジスタの配列にストアされ、ターゲット・アド
レスは命令セット内の対応する条件付きフロー命令のロ
ケーションに対して論理的位置に置かれる。
【0048】最初の順序内条件付きフロー命令のブラン
チ結果が解決されると、PCロジック・ユニット270
はブランチが行われる場合は、TBUF190の内容を
MBUF188に転送し、TBUF190の内容に無効
のマークを付けるように、ライン316上の制御信号に
よってプリフェッチ制御ユニット260に指示する。正
しくない命令ストリーム、つまり、ブランチが行われな
い場合はターゲット・ストリームからの、ブランチが行
われる場合はメイン命令ストリームからの命令セットが
IFIFOユニット264にあると、IFIFOユニッ
ト264からクリアされる。2番目またはそれ以降の条
件付きフロー制御命令が第1ストリーム・ビットのマー
クが付けられた命令セットに存在すると、その命令は統
一された方法で処理される。すなわち、ターゲット・ス
トリームからの命令セットはプリフェッチされ、MBU
F188またはTBUF190からの命令セットはブラ
ンチ・バイアスに応じてIデコード・ユニット262を
通して処理され、条件付きフロー命令が最終的に解決さ
れると、正しくないストリーム命令セットがIFIFO
ユニット264からクリアされる。
【0049】IFIFOユニット264から正しくない
ストリーム命令がクリアされたとき、2番目の条件付き
フロー命令がIFIFOユニット264に残っていて、
最初の条件付きフロー命令セットにそれ以降の条件付き
フロー命令が含まれていないと、第2ストリーム・ビッ
トのマークが付いた命令セットのターゲット・アドレス
はアドレス・レジスタの最初の配列にプロモートされ
る。いずれの場合も、条件付きフロー命令を含んでいる
次の命令セットはIデコード・ユニット262を通して
評価することが可能になる。従って、ストリーム・ビッ
トをトグルとして使用すると、ブランチ・ターゲット・
アドレスを計算する目的のために、また、ブランチ・バ
イアスが特定の条件付きフロー制御命令では正しくなか
ったとあとで判断された場合に、それより上をクリアす
べき命令セット・ロケーションにマークを付ける目的の
ために、潜在的制御フローの変化にマークを付けてお
き、IFIFOユニット264を通して追跡することが
できる。
【0050】命令セットをマスタ・レジスタから実際に
クリアするのではなく、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、20
8、216、224のいずかに書き込み、対応する状況
情報をマスタ制御レジスタ202、210、218、2
26に書き込むことができる。
【0051】最後に、制御および状況バス230上の追
加の制御ラインはIFIFOユニット264のIFIF
Oオペレーションを可能にし、指示する。IFIFOシ
フトは、制御ライン336を通してPCロジック・ユニ
ット270から出力されたシフト要求制御信号を受けて
IFIFOユニット264によって行われる。IFIF
O制御ユニット272は、命令セットを受け入れるマス
タ・レジスタ200、208、216、224が使用可
能であると、制御信号をライン316を経由してプリフ
ェッチ制御ユニット266に送って、プリフェッチ・バ
ッファ260から次の該当命令セットを転送することを
要求する。命令セットが転送されると、配列266内の
対応する有効ビットがリセットされる。
【0052】C)IFU/IEU制御インタフェース IFU102とIEU104とを結ぶ制御インタフェー
スは制御バス126によって提供される。この制御バス
126はPCロジック・ユニット270に接続され、複
数の制御、アドレスおよび特殊データ・ラインから構成
されている。割込み要求と受信確認制御信号を制御ライ
ン340を経由して渡すことにより、IFU102は割
込みオペレーションを通知し、IEU104との同期を
とることができる。外部で発生した割込み信号はライン
292経由でロジック・ユニット270へ送られる。こ
れを受けて、割込み要求制御信号がライン340上に送
出されると、IEU104は試行的に実行された命令を
キャンセルする。割込みの内容に関する情報は、割込み
情報ライン341を通してやりとりされる。IEU10
4がPCロジック・ユニット270によって判断された
割込みサービス・ルーチンのアドレスからプリフェッチ
された命令の受信を開始する準備状態になると、IEU
104はライン340上の割込み受信確認制御信号を肯
定する。IFU102によってプリフェッチされた割込
みサービス・ルーチンがそのあと開始される。
【0053】IFIFO読取り(IFIFO RD)制
御信号はIEU104から制御ライン342上に出力さ
れ、最も奥のマスタ・レジスタ224に存在する命令セ
ットが実行を完了したことおよび次の命令セットが必要
であることを通知する。この制御信号を受けると、PC
ロジック・ユニット270はIFIFOユニット264
でIFIFOシフト・オペレーションを実行するように
IFIFO制御ロジック・ユニット272に指示する。
【0054】PCインクリメント要求とサイズ値(PC
INC/SIZE)は制御ライン344上に送出され
て、現在のプログラム・カウンタ値を命令の対応するサ
イズ数だけ更新するようにPCロジック・ユニット27
0に指示する。これにより、PCロジック・ユニット2
70は、現在のプログラム命令ストリーム中の最初の順
序内実行命令のロケーションを正確に指した個所に実行
プログラム・カウンタ(DPC)を維持することができ
る。
【0055】ターゲット・アドレス(TARGET A
DDR)はアドレス・ライン346を経由してPCロジ
ック・ユニット270に返される。このターゲット・ア
ドレスは、IEU104のレジスタ・ファイルにストア
されているデータによって決まるブランチ命令の仮想タ
ーゲット・アドレスである。従って、ターゲット・アド
レスを計算するためにIEU104のオペレーションが
必要である。
【0056】制御フロー結果(CF RESULT)制
御信号は制御ライン348を経由してPCロジック・ユ
ニット270へ送られて、現在保留されている条件付き
ブランチ命令が解決されたかどうか、その結果がブラン
チによるものなのか、ブランチによらないものなのかを
示している。これらの制御信号に基づいて、PCロジッ
ク・ユニット270は、条件付きフロー命令の実行の結
果として、プリフェッチ・バッファ260とIFIFO
ユニット264に置かれている命令セットのどれをキャ
ンセルする必要があるかを判断することができる。
【0057】いくつかのIEU命令リターン型制御信号
(IEUリターン)が制御ライン350上を送出され
て、IEU104によってある命令が実行されたことを
IEU102に通知する。これらの命令には、プロシー
ジャ命令からのリターン、トラップからのリターンおよ
びサブルーチン・コールからのリターンがある。トラッ
プからのリターン命令はハードウェア割込み処理ルーチ
ンとソフトウェア・トラップ処理ルーチンで同じように
使用される。サブルーチン・コールからのリターンもジ
ャンプとリンク型コールと併用される。どの場合も、リ
ターン制御信号は、以前に割込みがかけられた命令スト
リームに対して命令フェッチ・オペレーションを再開す
るようにIFU102に通知するために送られる。これ
らの信号をIEU104から出すことにより、システム
100の正確なオペレーションを維持することができ
る。「割込みがかけられた」命令ストリームの再開はリ
ターン命令の実行個所から行われる。
【0058】現命令実行PCアドレス(現IF_PC)
はアドレス・バス352を経由してIEU104へ送ら
れる。このアドレス値(DPC)はIEU104によっ
て実行される正確な命令を指定している。つまり、IE
U104が現在のIF PCアドレスを通過した命令を
先に試行的に実行している間は、このアドレスは、割込
み、例外、その他に正確なマシンの状態が分かっている
ことが必要な事象の発生に対してアーキテクチャ100
を正確に制御するために保持されていなければならな
い。現在実行中の命令ストリームの中の正確なマシンの
状態を進めることが可能であるとIEU104が判断す
ると、PC Inc/Size信号がIFU102に送
られ、即時に現在のIF_PCアドレス値に反映され
る。
【0059】最後に、アドレスおよび双方向データ・バ
ス354は特殊レジスタのデータを転送するためのもの
である。このデータはIEU104によってIFU10
2内の特殊レジスタに入れられ、あるいはそこから読み
取られるようにプログラムすることが可能である。特殊
レジスタのデータは一般にIFU102が使用できるよ
うに、IEU104によってロードされ、あるいは計算
される。
【0060】D)PCロジック・ユニットの詳細 PC制御ユニット362、割込み制御ユニット363、
プリフェッチPC制御ユニット364および実行PC制
御ユニット366を含むPCロジック・ユニット270
の詳細図は図3に示されている。PC制御ユニット36
2はインタフェース・バス126を通してプリフェッチ
制御ユニット266、IFIFO制御ロジック・ユニッ
ト272、およびIEU104から制御信号を受けて、
プリフェッチおよび実行PC制御ユニット364、36
6に対してタイミング制御を行う。割込み制御ユニット
363は、プリフェッチ・トラップ・アドレス・オフセ
ットを判断してそれぞれのトラップ・タイプを処理する
該当処理ルーチンを選択することを含めて、割込みと例
外の正確な管理を担当する。プリフェッチ・PC制御ユ
ニット364は、特に、トラップ処理とプロシージャ・
ルーチン命令のフローのためのリターン・アドレスをス
トアすることを含めて、プリフェッチ・バッファ18
8、190、192をサポートするために必要なプログ
ラム・カウンタの管理を担当する。このオペレーション
をサポートするために、プリフェッチPC制御ユニット
364は、物理アドレス・バス・ライン324上のCC
U PADDERアドレスとアドレス・ライン326上
のVMU VMADDRアドレスを含むプリフェッチ仮
想アドレスを生成することを担当する。その結果、プリ
フェッチPC制御ユニット364は、現在のプリフェッ
チPC仮想アドレス値を保持することを担当する。
【0061】プリフェッチ・オペレーションは一般に制
御ライン316上を送出された制御信号を通してIFI
FO制御ロジック・ユニット272によって開始され
る。これを受けて、PC制御ユニット362はいくつか
の制御信号を生成して制御ライン372上に出力し、プ
リフェッチPC制御ユニット364を動作させて、アド
レス・ライン324、326上にPADDRアドレス
と、必要に応じてVMADDRアドレスを生成する。値
が0から4までのインクリメント信号も制御ライン37
4上に送出される場合もあるが、これは、PC制御ユニ
ット362が現在のプリフェッチ・アドレスから命令セ
ットのフェッチを再実行しているか、一連のプリフェッ
チ要求の中の2番目の要求に対して位置合わせを行って
いるか、プリフェッチのために次の全順次命令セットを
選択しているか、によって決まる。最後に、現在のプリ
フェッチ・アドレスPF_PCがバス370上に送出さ
れ、実行PC制御ユニット366へ渡される。
【0062】新しいプリフェッチ・アドレスは、いくつ
かのソースから発生する。アドレスの主要なソースは、
バス352経由で実行PC制御ユニット366から送出
された現在のIF PCアドレスである。原理的には、
IF_PCアドレスからはリターン・アドレスが得ら
れ、これは、初期コール、トラップまたはプロシージャ
命令が現れたとき、プリフェッチPC制御ユニット36
4によってあとで使用されるものである。IF_PCア
ドレスは、これらの命令が現れるたびに、プリフェッチ
PC制御ユニット364内のレジスタにストアされる。
このようにして、PC制御ユニット362は制御ライン
350を通してIEUリターン信号を受けたとき、プリ
フェッチPC制御ユニット364内のリターン・アドレ
ス・レジスタを選択して新しいプリフェッチ仮想アドレ
スを取り出すだけでよく、これによって元のプログラム
命令ストリームを再開する。
【0063】プリフェッチ・アドレスのもう1つのソー
スは、実行PC制御ユニット366から相対ターゲット
・アドレス・バス382を経由して、あるいはIEU1
04から絶対ターゲット・アドレス・バス346を経由
して送出されたターゲット・アドレス値である。相対タ
ーゲット・アドレスとは、実行PC制御ユニット366
によって直接に計算できるアドレスである。絶対ターゲ
ット・アドレスは、これらのターゲット・アドレスがI
EUレジスタ・ファイルに入っているデータに依存する
ので、IEU104に生成させる必要がある。ターゲッ
ト・アドレスはターゲット・アドレス・バス384を通
ってプリフェッチPC制御ユニット364へ送られ、プ
リフェッチ仮想アドレスとして使用される。相対ターゲ
ット・アドレスを計算する際、対応するブランチ命令の
オペランド部分もIデコード・ユニット262からバス
318のオペランド変位部分を経由して送られる。
【0064】プリフェッチ仮想アドレスのもう1つのソ
ースは、実行PC制御ユニット366である。リターン
・アドレス・バス352’は、現在のIF_PC値(D
PC)をプリフェッチPC制御ユニット364へ転送す
るためのものである。このアドレスは、割込み、トラッ
プ、その他にコールなどの制御フロー命令が命令ストリ
ーム内に現れた個所でリターン・アドレスとして使用さ
れる。プリフェッチPC制御ユニット364は、新しい
命令ストリームをプリフェッチするために解放される。
PC制御ユニット362は、対応する割込みまたはトラ
ップ処理ルーチンまたはサブルーチンが実行されると、
IEU104からライン350を経由してIEUリター
ン信号を受け取る。他方、PC制御ユニット362はラ
イン372上のPFPC信号の1つを通して、およびラ
イン350経由で送られてきて実行されたリターン命令
のIDに基づいて、現在のリターン仮想アドレスを収め
ているレジスタを選択する。そのあと、このアドレスが
使用されて、PCロジック・ユニット270によるプリ
フェッチ・オペレーションを続行する。
【0065】最後に、プリフェッチ仮想アドレスが取り
出されるもう1つのソースは、特殊レジスタ・アドレス
およびデータ・バス354である。IEU104によっ
て計算またはロードされたアドレス値、または少なくと
もベース・アドレス値は、データとしてバス354を経
由しでプリフェッチPC制御ユニット364へ転送され
る。ベース・アドレスは、トラップ・アドレス・テーブ
ル、高速トラップ・テーブル、およびベース・プロシー
ジャ命令ディスパッチ・テーブルのアドレスを含んでい
る。バス354を通して、プリフェッチおよびPC制御
ユニット364、366内のレジスタの多くを読み取る
こともできるので、マシンの状態の対応する側面をIE
U104を通して処理することが可能である。
【0066】実行PC制御ユニット366は、PC制御
ユニット362の制御を受けて、現在のIF PCアド
レス値を計算することを主な役割としている。この役割
において、実行PC制御ユニット366はPC制御ユニ
ット362からExPC制御ライン378を経由して送
られてきた制御信号と、制御ライン380を経由して送
られてきたインクリメント/サイズ制御信号を受けて、
IF_PCアドレスを調整する。これらの制御信号は、
主に、ライン342経由で送られてきたIFIFO読取
り制御信号とIEU104から制御ライン344経由で
送られてきたPCインクリメント/サイズ値を受けると
生成される。
【0067】1)PFおよびExPC制御/データ・ユ
ニットの詳細 図4は、プリフェッチおよび実行PC制御ユニット36
4、366の詳細ブロック図である。これらのユニット
は主に、レジスタ、インクリメンタ(増分器)その他の
類似部品、セレタタおよび加算器ブロックから構成され
ている。これらのブロック間のデータ転送を管理する制
御は、PFPC制御ライン372、ExPC制御ライン
378およびインクリメント制御ライン374、380
を通してPC制御ユニット362によって行われる。説
明を分かりやすくするために、図4のブロック図には、
これらの個々の制御ラインは示されていない。しかし、
これらの制御信号が以下に説明するように、これらのブ
ロックヘ送られることは勿論である。
【0068】プリフェッチPC制御ユニット364の中
心となるものはプリフェッチ・セレクタ(PF_PC
SEL)であり、これは現プリフェッチ仮想アドレスの
中央セレタタとして動作する。この現プリフェッチ・ア
ドレスはプリフェッチ・セレクタから出力バス392を
通ってインクリメンタ・ユニット394へ送られて、次
のプリフェッチ・アドレスを生成する。この次のプリフ
ェッチ・アドレスはインクリメンタ出力バス396を通
ってレジスタMBUF PFnPC398、TBUF
PFnPC400、およびEBUF PFnPC402
の並列配列へ送られる。これらのレジスタ398、40
0、402は実効的には次の命令プリフェッチ・アドレ
スをストアしているが、本発明の好適実施例によれば、
別々のプリフェッチ・アドレスがMBUF188、TB
UF190、およびEBUF192に保持されている。
MBUF、TBUFおよびEBUF PFnPCレジス
タ398、400、402にストアされたプリフェッチ
・アドレスは、アドレス・バス404、408、410
からプリフェッチ・セレタタ390へ渡される。従っ
て、PC制御ユニット362はプリフェッチ・レジスタ
398、400、402の別の1つをプリフェッチ・セ
レクタが選択することを指示することだけでプリフェッ
チ命令ストリームの即時切替えを指示することができ
る。ストリームの中の次の命令セットをプリフェッチす
るために、そのアドレス値がインクリメンタ394によ
ってインクリメントされると、その値がプリフェッチ・
アドレス398、400、402のうち該当するレジス
タヘ返却される。もう1つの並列レジスタ配列は簡略化
のため単一の特殊レジスタ・ブロック412として示さ
れているが、この配列はいくつかの特殊アドレスをスト
アするためのものである。レジスタ・ブロック412は
トラップ・リターン・アドレス・レジスタ、プロシージ
ャ命令リターン・アドレス・レジスタ、プロシージャ命
令ディスパッチ・テーブル・ベース・アドレス・レジス
タ、トラップ・ルーチン・ディスパッチ・テーブル・ベ
ース・アドレス・レジスタ、および高速トラップ・ルー
チン・ベース・アドレス・レジスタから構成されてい
る。PC制御ユニット362の制御を受けて、これらの
リターン・アドレス・レジスタはバス352を通して現
IF_PC実行アドレスを受け入れることができる。レ
ジスタ・ブロック412内のリターンおよびベース・ア
ドレス・レジスタにストアされたアドレス値はIEU1
04から独立して読み書きすることができる。レジスタ
が選択され、値が特殊レジスタ・アドレスおよびデータ
・バス354を経由して転送される。
【0069】特殊レジスタ・ブロック412内のセレク
タはPC制御ユニット362によって制御され、レジス
タ・ブロック412のレジスタにストアされたアドレス
を特殊レジスタ出力バス416上に送出して、プリフェ
ッチ・セレクタ390へ渡すことができる。リターン・
アドレスは直接にプリフェッチ・セレクタ390へ渡さ
れる。ベース・アドレス値は割込み制御ユニット363
から割込みオフセット・バス373経由で送られてきた
オフセット値と結合される。ソースからバス373経由
でプリフェッチ・セレクタ390へ渡された特殊アドレ
スは、新しいプリフェッチ命令ストリームの初期アドレ
スとして使用され、そのあとインクリメンタ394とプ
リフェッチ・レジスタ398、400、402の1つを
通るアドレスのインクリメント・ループを続行すること
ができる。
【0070】プリフェッチ・セレクタ390へ送られる
アドレスのもう1つのソースは、ターゲット・アドレス
・レジスタ・ブロック414内のレジスタ配列である。
ブロック414内のターゲット・レジスタには、好適実
施例によれば、8つの潜在的ブランチ・ターゲット・ア
ドレスがストアされる。これらの8つの記憶ロケーショ
ンはIFIFOユニット264の最下位の2マスタ・レ
ジスタ216、224に保持されている8つの潜在的に
実行可能な命令に論理的に対応している。これらの命令
のどれでもが、および潜在的にはすべてが条件付きブラ
ンチ命令となり得るので、ターゲット・レジスタ・ブロ
ック414は、あらかじめ計算されたターゲット・アド
レスをストアしておくので、TBUF190を通してタ
ーゲット命令ストリームをプリフェッチするために使用
するのを待たせることができる。特に、PC制御ユニッ
ト362がターゲット命令ストリームのプリフェッチを
即時に開始するように条件付きブランチ・バイアスがセ
ットされると、ターゲット・アドレスはターゲット・レ
ジスタ・ブロック414からアドレス・バス418を経
由してプリフェッチ・セレクタ390へ送られる。イン
クリメンタ394によってインクリメントされたあと、
アドレスはTBUF PFnPC400へ戻されてスト
アされ、ターゲット命令ストリームをあとでプリフェッ
チするオペレーションで使用される。別のブランチ命令
がターゲット命令ストリームに現れると、その2番目の
ブランチのターゲット・アドレスが計算され、最初の条
件付きブランチ命令が解決されて使用されるまでの間、
ターゲット・レジスタ配列414にストアされている。
【0071】ターゲット・レジスタ・ブロック414に
ストアされた、計算で求めたターゲット・アドレスは、
実行PC制御ユニット366内のターゲット・アドレス
計算ユニットからアドレス・ライン382を経由して、
あるいはIEU104から絶対ターゲット・アドレス・
バス346を経由して転送される。
【0072】プリフェッチPF_PCセレタタ390を
通って転送されるアドレス値は、完全な32ビット仮想
アドレス値である。ページ・サイズは本発明の好適実施
例では、16Kバイトに固定されており、最大ページ・
オフセット・アドレス値〔13:0〕に対応している。
従って、現プリフェッチ仮想ページ・アドレス〔27:
14〕に変化がなければ、VMUページの変換は不要で
ある。プリフェッチ・セレタタ390内のコンパレータ
はそのことを検出する。VMU変換要求信号(VMXL
AT)は、インクリメントがページ境界をこえて行われ
たか、制御のフローが別のページ・アドレスヘブランチ
したために、仮想ページ・アドレスが変化したとき、ラ
イン372を経由してPC制御ユニット362へ送られ
る。他方、PC制御ユニット362はライン324上の
CCU PADDRのほかに、VM VADDRアドレ
スをバッファ・ユニット420からライン326上に送
出し、該当の制御信号をVMU制御ライン326、32
8、330上に送出して、VMU仮想ページから物理ペ
ージヘの変換を得るように指示する。ページ変換が必要
でない場合は、現物理ページ・アドレス〔31:14〕
はバス122上のVMUユニット108の出力側のラッ
チによって保持される。
【0073】バス370上に送出された仮想アドレスは
インクリメント制御ライン374から送られてきた信号
を受けて、インクリメンタ394によってインクリメン
トされる。インクリメンタ394は、次の命令セットを
選択するために、命令セットを表す値(4命令または1
6バイト)だけインクリメントする。CCUユニット1
06へ渡されるプリフェッチ・アドレスの下位4ビット
はゼロになっている。従って、最初のブランチ・ターゲ
ット命令セット内の実際のターゲット・アドレス命令は
最初の命令ロケーションに置かれていない場合がある。
しかし、アドレスの下位4ビットはPC制御ユニット3
62へ送られるので、最初のブランチ命令のロケーショ
ンをIFU102が判別することができる。ターゲット
・アドレスの下位ビット〔3:2〕を2ビット・バッフ
ァ・アドレスとして返して、位置合わせされていないタ
ーゲット命令セットから実行すべき正しい最初の命令を
選択するための検出と処理は、新しい命令ストリーム、
つまり、命令ストリームの中の最初の非順次命令セット
・アドレスの最初のプリフェッチのときだけ行われる。
命令セットの最初の命令のアドレスと命令セットをプリ
フェッチする際に使用されるプリフェッチ・アドレスと
の間の非位置合わせの関係は、現順次命令ストリームが
存続している間無視することができ、そのあとも無視さ
れる。
【0074】図4に示した機能ブロックの残り部分は実
行PC制御ユニット366を構成している。本発明の好
適実施例によれば、実行PC制御ユニット366は独立
に機能するプログラム・カウンタ・インクリメンタを独
自に備えている。この機能の中心となるのは実行セレク
タ(DPC SEL)430である。実行セレタタ43
0からアドレス・バス352’上に出力されるアドレス
はアーキテクチャ100の現在の実行アドレス(DP
C)である。この実行アドレスは加算ユニツト434へ
送られる。ライン380上に送出されたインクリメント
/サイズ制御信号は1から4までの命令インクリメント
値を指定しており、この値は加算ユニット434によっ
てセレタタ430から得たアドレスに加えられる。加算
ユニツト434が出力ラッチ機能を実行するたびに、イ
ンクリメントされた次の実行アドレスがアドレス・ライ
ン436を経て直接に実行セレクタ430に返され、次
の命令インクリメント・サイクルで使用される。
【0075】初期実行アドレスとその後のすべての新し
いストリーム・アドレスは、アドレス・ライン440を
経由して新ストリーム・レジスタ・ユニット438から
得られる。新ストリーム・レジスタ・ユニット438
は、プリフェッチ・セレクタ390からPFPCアドレ
ス・バス370を経由して送られきた新しい現プリフェ
ッチ・アドレスを直接にアドレス・バス440に渡すこ
とも、あとで使用するためにストアしておくこともでき
る。つまり、プリフェッチPC制御ユニット364が新
しい仮想アドレスからプリフェッチを開始することを判
断した場合は、新しいストリーム・アドレスは新ストリ
ーム・レジスタ・ユニット438によって一時的にスト
アされる。PC制御ユニット363は、プリフェッチと
実行インクリメントの両サイクルに関与することによっ
て、実行アドレスが新命令ストリームを開始した制御フ
ロー命令に対応するプログラム実行個所までに達するま
で新ストリーム・アドレスを新ストリーム・レジスタ4
38に置いておく。新ストリーム・アドレスはそのあと
新ストリーム・レジスタ・ユニット438から出力され
て実行セレクタ430へ送られ、新命令ストリーム内の
実行アドレスを独立して生成することを開始する。
【0076】本発明の好適実施例によれば、新ストリー
ム・レジスタ・ユニット438は2つの制御フロー命令
ターゲット・アドレスをバッファリングする機能を備え
ている。新ストリーム・アドレスを即時に取り出すこと
により、殆ど待ち時間がなく実行PC制御ユニット36
6を現実行アドレス列の生成から新実行アドレス・スト
リーム列の生成に切り替えることができる。
【0077】最後に、IF_PCセレタタ(IF_PC
SEL)は最終的に現IF_PCアドレスをアドレス
・バス352上に送出してIEU104へ送るためのも
のである。IF_PCセレタタ442への入力は実行セ
レクタ430または新ストリーム・レジスタ・ユニット
438から得た出力アドレスである。殆どの場合、IF
_PCセレタタ442はPC制御ユニット262の指示
を受けて、実行セレタタ430から出力された実行アド
レスを選択する。しかし、新命令ストリームの実行開始
のために使用される新仮想アドレスヘ切り替える際の待
ち時間をさらに短縮するために、新ストリーム・レジス
タ・ユニット438からの選択したアドレスをバイパス
して、バス440経由で直接にIF_PCセレクタ44
2へ送り、現IF_PC実行アドレスとして得ることが
できる。
【0078】実行PC制御ユニット366は、すべての
相対ブランチ・ターゲット・アドレスを計算する機能を
備えている。現実行点アドレスと新ストリーム・レジス
タ・ユニット438から得たアドレスは、アドレス・バ
ス352’、440を経由して制御フロー・セレタタ
(CF_PC)446に渡される。その結果、PC制御
ユニット362は大幅な柔軟性をもって、ターゲット・
アドレス計算の基となる正確な初期アドレスを選択する
ことができる。この初期アドレス、つまり、ベース・ア
ドレスはアドレス・バス454を経由してターゲット・
アドレスALU450へ送られる。ターゲットALU4
50への入力となるもう1つの値は、制御フロー変位計
算ユニット452からバス458経由で送られてくる。
相対ブランチ命令は、アーキテクチャ100の好適実施
例によれば、新相対ターゲット・アドレスを指定した即
値モード定数の形態をした変位値を含んでいる。制御フ
ロー変位計算ユニット452はIデコード・ユニットの
オペランド出力バス318から初めて得たオペランド変
位値を受け取る。最後に、オフセット・レジスタ値はラ
イン456を経由してターゲット・アドレスALU45
0へ送られる。オフセット・レジスタ448はPC制御
ユニット362から制御ライン378’を経由してオフ
セット値を受け取る。オフセット値の大きさはアドレス
・ライン454上を送られるベース・アドレスから相対
ターゲット・アドレスを計算するときの現ブランチ命令
のアドレスまでのアドレス・オフセットに基づいてPC
制御ユニット362によって判断される。つまり、PC
制御ユニット362は、IFIFO制御ロジック・ユニ
ット272を制御することによって、現実行点アドレス
の命令(CP_PCによって要求された)とIデコード
・ユニット262によって現在処理中の、従ってPCロ
ジック・ユニット270によって処理中の命令を分離し
ている命令の個数を追跡して、その命令のターゲット・
アドレスを判断する。
【0079】相対ターゲット・アドレスがターゲット・
アドレスALU450によって計算されると、そのター
ゲット・アドレスはアドレス・バス382を通して対応
するターゲット・レジスタ414に書き込まれる。
【0080】2)PC制御アルゴリズムの詳細 1.メイン命令ストリームの処理:MBUF PFnP
C l.1 次のメイン・フロー・プリフェッチ命令のアド
レスはMBUF PFnPCにストアされる。
【0081】1.2 制御フロー命令がないときは、3
2ビット・インクリメンタはMBUF PFnPCに入
っているアドレス値を、各プリフェッチ・サイクルごと
に16バイト(x16)だけ調整する。
【0082】1.3 無条件制御フロー命令がIデコー
ドされると、命令セットに続いてフェッチされたすべて
のプリフェッチ・データはフラッシュされ、MBUF
PFnPCには、ターゲット・レジスタ・ユニット、P
PCセレタタおよびインクリメンタを通して、新し
いメイン命令ストリーム・アドレスがロードされる。新
しいアドレスは新ストリーム・レジスタにもストアされ
る。
【0083】1.3.1 相対無条件制御フローのター
ゲット・アドレスはIFUが保持しているレジスタ・デ
ータからと制御フロー命令の後に置かれたオペランド・
データからIFUによって計算される。
【0084】1.3.2 絶対無条件制御フローのター
ゲット・アドレスはレジスタ基準値、ベース・レジスタ
値、およびインデックス・レジスタ値からIEUによっ
て最終的に計算される。
【0085】1.3.2.1 命令プリフェッチ・サイ
クルは絶対アドレス制御フロー命令に対してターゲット
・アドレスがIEUから返されるまで停止する。命令実
行サイクルは続行される。
【0086】1.4 無条件制御フロー命令から得た次
のメイン・フロー・プリフェッチ命令のアドレスはバイ
パスされて、ターゲット・アドレス・レジスタ・ユニッ
ト、PF_PCセレタタおよびインクリメンタを経由し
て送られ、最終的にMBUFPFnPCにストアされ、
プリフェッチは1.2から続けられる。 2.プロシージャ命令ストリームの処理:EBUF P
FnPC 2.1 プロシージャ命令はメインまたはブランチ・タ
ーゲット命令ストリームの中でプリフェッチされる。タ
ーゲット・ストリームの中でフェッチされた場合は、条
件付き制御フロー命令が解決され、プロシージャ命令が
MBUFへ転送されるまでプロシージャ・ストリームの
プリフェッチを停止する。これにより、プロシージャ命
令ストリームに現れた条件付き制御フローを処理する際
にTBUFを使用できる。
【0087】2.1.1 プロシージャ命令はプロシー
ジャ命令ストリームの中に置いてはならない。つまり、
プロシージャ命令はネストしてはならない。プロシージ
ャ命令からリターンすると、実行はメイン命令ストリー
ムに戻る。ネストを可能にするためには、ネストしたプ
ロシージャ命令から別の専用リターンが必要である。ア
ーキテクチャはこの種の命令を容易にサポートできる
が、プロシージャ命令をネストする機能があっても、ア
ーキテクチャの性能が向上する見込みはない。
【0088】2.1.2 メイン命令ストリームにおい
ては、第1および第2条件付き制御フロー命令を含む命
令セットを含んでいるプロシージャ命令ストリームは、
第1命令セットの中の条件付き制御フロー命令が解決
し、第2条件付き制御フロー命令セットがMBUFへ転
送されるまで第2条件付き制御フロー命令セットに対し
てプリフェッチを停止する。
【0089】2.2 プロシージャ命令は、命令の即値
モード・オペランド・フィールドとして含まれている相
対オフセットによって、プロシージャ・ルーチンの開始
アドレスを示している。
【0090】2.2.1 プロシージャ命令から得られ
たオフセット値はIFUに維持されているプロシージャ
・ベース・アドレス(PBR)レジスタに入っている値
と結合される。このPBRレジスタは、特殊レジスタの
移動命令が実行されると、特殊アドレスおよびデータ・
バスを通して読み書き可能である。
【0091】2.3 プロシージャ命令が現れると、次
のメイン命令ストリームIF PCアドレスはDPCリ
ターン・アドレス・レジスタにストアされ、プロセッサ
・ステータス・レジスタ(PSR)内のプロシージャ進
行中ビット(procedure−in−progre
ss bit)がセットされる。
【0092】2.4 プロシージャ・ストリームの開始
アドレスはPBRレジスタ(プロシージャ命令オペラン
ド・オフセット値を加えて)からPF_PCセレタタヘ
送られる。
【0093】2.5 プロシージャ・ストリームの開始
アドレスは新ストリーム・レジスタ・ユニットとインク
リメントへ同時に送られ、(x16)だけインクリメン
トする。インクリメントされたアドレスはそのあとEB
UF PFnPCにストアされる。
【0094】2.6 制御フロー命令がないと、32ビ
ット・インクリメンタは各プロシージャ命令プリフェッ
チ・サイクルごとにEBUF PFnPCに入っている
アドレス値を(x16)だけ調整する。
【0095】2.7 無条件制御フロー命令がIデコー
ドされると、ブランチ命令のあとにフェツチされたすべ
てのプリフェッチ・データはフラッシュされ、EBUF
PFnPCには新しいプロシージャ命令ストリーム・
アドレスがロードされる。
【0096】2.7.1 相対無条件制御フロー命令の
ターゲット・アドレスはIFUに保持されているレジス
タ・データからと制御フロー命令の即値モード・オペラ
ンド・フィールド内に入っているオペランド・データか
らIFUによって計算される。
【0097】2.7.2 絶対無条件ブランチのターゲ
ット・アドレスはレジスタ基準値、ベース・レジスタ値
およびインデックス・レジスタ値からIEUによって計
算される。
【0098】2.7.2.1 命令プリフェッチ・サイ
クルは絶対アドレス・ブランチに対してターゲット・ア
ドレスがIEUから返されるまで停止する。実行サイク
ルは続行される。
【0099】2.8 次のプロシージャ・プリフェッチ
命令セットのアドレスはEBUFPFnPCにストアさ
れ、プリフェッチは1.2から続けられる。
【0100】2.9 プロシージャ命令からのリターン
がIデコードされると、プリフェッチがuPCレジスタ
にストアされているアドレスから続けられ、そのあと
(x16)だけインクリメントされ、あとでプリフェッ
チするためにMBUF PFnPCレジスタに返され
る。 3.ブランチ命令ストリームの処理:TBUF PFn
PC 3.1 MBUF命令ストリームの中の最初の命令セッ
トに現れた条件付き制御フロー命令がIデコードされる
と、ターゲット・アドレスはそのターゲット・アドレス
が現アドレスに対する相対アドレスならばIFUによっ
て、絶対アドレスならばIFUによって判断される。
【0101】3.2 「ブランチを行うバイアス」の場
合: 3.2.1 ブランチが絶対アドレスに行われる場合
は、ターゲット・アドレスがIEUから返されるまで命
令プリフェッチ・サイクルを停止する。実行サイクルは
続行される。
【0102】3.2.2 PF PCセレクタとインク
リメンタを経由して転送することによってブランチ・タ
ーゲット・アドレスをTBUF PFnPCにロードす
る。
【0103】3.2.3 ターゲット命令ストリームが
プリフェッチされてTBUFに入れられたあとあとで実
行するためにIFIFOに送られる。IFIFOとTB
UFが一杯になると、プリフェッチを停止する。
【0104】3.2.4 32ビット・インクリメンタ
各プリフェッチ・サイクルごとにTBUF PFnPC
に入っているアドレス値を(x16)だけ調整する。
【0105】3.2.5 ターゲット命令ストリーム内
の2番目の命令セットに現れた条件付き制御フロー命令
がIデコードされるとプリフェッチ・オペレーション
を、第1の(主)セット内のすべての条件付きブランチ
命令が解決されるまで停止する(しかし、先に進んで、
相対ターゲット・アドレスを計算しターゲット・レジス
タにストアする)。
【0106】3.2.6 最初の命令セット内の条件付
きブランチを「行う」と解釈された場合: 3.2.6.1 ブランチのソースがプロシージャ進行
中ビットから判断されたEBUF命令セットであったと
きはMBUFまたはEBUFに入っている最初の条件付
きフロー命令セットのあとに置かれた命令セットをフラ
ッシュする。
【0107】3.2.6.2 プロシージャ進行中ビッ
トの状態に基づいて、TBUFPFnPC値をMBUF
PFnPCまたはEBUFへ転送する。
【0108】3.2.6.3 プロシージャ進行中ビッ
トの状態に基づいて、プリフェッチしたTBUF命令を
MBUFまたはEBUFへ転送する。
【0109】3.2.6.4 2番目の条件付きブラン
チ命令セットがIデコードされていなければ、プロシー
ジャ進行中ビットの状態に基づいて、MBUFまたはE
BUFプリフェッチ・オペレーションを続行する。
【0110】3.2.6.5 2番目の条件付きブラン
チ命令がIデコードされていれば、その命令の処理を開
始する(ステップ3.3.1へ進む)。
【0111】3.2.7 最初の条件付き命令セットの
中の命令に対する条件付き制御を「行わない」と解釈さ
れた場合: 3.2.7.1 ターゲット命令ストリームからの命令
セットと命令のIFIFOとIEUをフラッシュする。
【0112】3.2.7.2 MBUFまたはEBUF
プリフェッチ・オペレーションを続行する。
【0113】3.3 「ブランチが行われないバイア
ス」の場合: 3.3.1 命令をプリフェッチしてMBUFに入れる
ことを停止する。実行サイクルを続ける。
【0114】3.3.1.1 最初の条件付き命令セッ
トの中の条件付き制御フロー命令が相対ならば、ターゲ
ット・アドレスを計算し、ターゲット・レジスタにスト
アする。
【0115】3.3.1.2 最初の条件付き命令セッ
トの中の条件付き制御フロー命令が絶対ならば、IEU
がターゲット・アドレスを計算して、そのアドレスをタ
ーゲット・レジスタに返すまで待つ。
【0116】3.3.1.3 2番目の命令セットの中
の条件付き制御フロー命令のIデコードが行われると、
最初の条件付き命令セットの中の条件付き制御フロー命
令が解決されるまでプリフェッチ・オペレーションを停
止する。
【0117】3.3.2 最初の条件付きブランチのタ
ーゲット・アドレスが計算されると、TBUF PFn
PCにロードし、メイン命令ストリームの実行と並行し
て命令をプリフェッチしてTBUFに入れることを開始
する。ターゲット命令セットはロードされない(従っ
て、ブランチ・ターゲット命令は最初の命令セットの中
の各条件付き制御フロー命令が解決されたとき用意され
ている)。
【0118】3.3.3 最初のセットの中の条件付き
制御フロー命令が「行われる」と解釈された場合: 3.3.3.1 ブランチのソースがEBUF命令スト
リームであるとプロシージャ進行中ビットの状態から判
断されると、MBUFまたはEBUFをフラッシュし、
最初の条件付きブランチ命令セットのあとに置かれたメ
イン命令ストリームからの命令のIFIFOとIEUを
フラッシュする。
【0119】3.3.3.2 プロシージャ進行中ビッ
トの状態から判断した通りに、TBUF PFnPC値
をMBUFまたはEBUFへ転送する。
【0120】3.3.3.3 プロシージャ進行中ビッ
トの状態から判断した通りに、プリフェッチしたTBU
F命令をMBUFまたはEBUFへ転送する。
【0121】3.3.3.4 プロシージャ進行中ビッ
トの状態から判断した通りに、MBUFまたはEBUF
プリフェッチ・オペレーションを続行する。
【0122】3.3.4 最初のセット内の条件付き制
御フロー命令が「行われない」と解析された場合: 3.3.4.1 ターゲット命令ストリームからの命令
セットのTBUFをフラッシュする。
【0123】3.3.4.2 2番目の条件付きブラン
チ命令がIデコードされなかった場合は、プロシージャ
進行中ビットの状態から判断した通りに、MBUFまた
はEBUFプリフェッチ・オペレーションを続ける。
【0124】3.3.4.3 2番目の条件付きブラン
チ命令がIデコードされた場合は、その命令の処理を開
始する(ステップ3.4.1へ進む)。 4.割込み、例外およびトラップ命令 4.1 トラップは広義には次のものからなる。
【0125】4.1.1 ハードウェア割込み 4.1.1.1 非同期(外部)発生事象、内部または
外部。
【0126】4.1.1.2 いつでも発生し、持続す
る。
【0127】4.1.1.3 アトミック(通常)命令
間で優先順にサービスを受け、プロシージャ命令を一時
中止する。
【0128】4.1.1.4 割込みハンドラの開始ア
ドレスはトラップ・ハンドラ入口点の事前定義テーブル
までのベクトル番号オフセットとして判断される。
【0129】4.1.2 ソフトウェア・トラップ命令 4.1.2.1 非同期(外部)発生命令。
【0130】4.1.2.2 例外として実行されるソ
フトウェア命令。
【0131】4.1.2.3 トラップ・ハンドラの開
始アドレスは、TBRまたはFTBレジスタにストアさ
れたベース・アドレス値と結合されたトラップ番号オフ
セットから判断される。
【0132】4.1.3 例外 4.1.3.1 命令と同期して発生する事象。
【0133】4.1.3.2 命令の実行時に処理され
る。
【0134】4.1.3.3 例外の結果により期待さ
れた命令とすべての後続実行命令はキャンセルされる。
【0135】4.1.3.4 例外ハンドラの開始アド
レスは、トラップ・ハンドラ入口点の事前定義テーブル
までのトラップ番号オフセットから判断される。
【0136】4.2 トラップ命令ストリーム・オペレ
ーションはそのとき実行中の命令ストリームとインライ
ンで実行される。
【0137】4.3 トラップ処理ルーチンが次の割込
み可能トラップの前にxPCアドレスをセーブすること
を条件に、トラップはネストが可能である。そうしない
と、現トラップ・オペレーションの完了前にトラップが
現れると、マシンの状態が壊れることになる。 5.トラップ命令ストリームの処理:xPC 5.1 トラップが現れたとき: 5.1.1 非同期割込みが起こると、そのとき実行中
の命令の実行は一時中止される。
【0138】5.1.2 同期例外が起こると、例外
を起こした命令が実行されるとトラップが処理される。
【0139】5.2 トラップが処理されたとき: 5.2.1 割込みは禁止される。
【0140】5.2.2 現在のIF PCアドレスは
xPCトラップ状態リターン・アドレス・レジスタにス
トアされる。
【0141】5.2.3 IF_PCアドレスとそのあ
とのアドレスにあるIFIFOとMBUFプリフェッチ
・バッファはフラッシュされる。
【0142】5.2.4 アドレスIF_PCとそのあ
とのアドレスの実行された命令とその命令の結果はIE
Uからフラッシュされる。
【0143】5.2.5 MBUF PFnPCに、ト
ラップ・ハンドラ・ルーチンのアドレスがロードされ
る。
【0144】5.2.5.1 トラップのソースは、特
殊レジスタ群に入っているトラップ番号によって判断さ
れたトラップ・タイプに応じて、TBRまたはFTBレ
ジスタをアドレス指定している。
【0145】5.2.6 命令がプリフェッチされ、通
常通りに実行するためにIFIFOに入れられる。
【0146】5.2.7 トラップ・ルーチンの命令が
そのあと実行される。
【0147】5.2.7.1 トラップ処理ルーチンは
xPCアドレスを所定のロケーションにセーブする機能
を備え、割込みを再び可能にする。xPCレジスタは特
殊レジスタ移動命令で、および特殊レジスタ・アドレス
とデータ・バスを通して読み書きされる。
【0148】5.2.8 トラップ命令からのリターン
を実行することによってトラップ状態から抜け出る必要
がある。
【0149】5.2.8.1 以前にセーブしていたと
きは、xPCアドレスをその事前定義ロケーションから
復元してから、トラップ命令からのリターンを実行する
必要がある。
【0150】5.3 トラップ命令からのリターンが実
行されたとき: 5.3.1 割込みが可能にされる。
【0151】5.3.2 プロシージャ進行中ビット
の状態から判断したとおりに、xPCアドレスが現在の
命令ストリーム・レジスタMBUFまたはEBUF P
FnPCに戻され、プリフェッチがそのアドレスから続
行される。
【0152】5.3.3 xPCアドレスが新ストリー
ム・レジスタを通してIF_PCレジスタに復元され
る。
【0153】E)割り込みおよび例外の処理 1)概要 割込みと例外は、それらが可能にされている限り、プロ
セッサがメイン命令ストリームから実行されているか、
プロシージャ命令ストリームから実行されているかに関
係なく処理される。割込みと例外は優先順にサービスが
受けられ、クリアされるまで持続している。トラップ・
ハンドラの開始アドレスは、下述するように、トラップ
・ハンドラの事前定義テーブルまでのベクトル番号オフ
セットとして判断される。
【0154】割込みと例外は、本実施例では、基本的に
2つのタイプがある。すなわち、命令ストリームの中の
特定の命令と同期して引き起こされるものと、命令スト
リームの中の特定の命令と非同期に引き起こされるもの
である。割込み、例外、トラップおよびフォールト(f
ault)の用語は、本明細書では相互に使い分けて用
いられている。非同期割込みは、命令ストリームと同期
して動作していない、オン・チップまたはオフ・チップ
のハードウェアによって引き起こされる。例えば、オン
・チップ・タイマ/カウンタによって引き起こされる割
込みは、オフ・チップから引き起こされるハードウェア
割込みやマスク不能割込み(non−maskable
interrupt)(NMI)と同じように、非同
期である。非同期割込みが引き起こされると、プロセッ
サ・コンテキストが凍結され(frozen)、すべて
のトラップが割込み禁止され、ある種のプロセッサ状況
情報がストアされ、プロセッサは受け取った特定の割込
みに対応する割込みハンドラにベクトルを向ける。割込
みハンドラがその処理を完了すると、プログラム実行は
割込み発生時に実行中であったストリームの中の最後に
完了した命令のあとに置かれた命令から続けられる。
【0155】同期例外とは、命令ストリームの中の命令
と同期して引き起こされる例外である。これらの例外は
特定の命令に関連して引き起こされ、問題の命令が実行
されるまで保留される。好適実施例では、同期例外はプ
リフェッチ時、命令デコード時、または命令実行時に引
き起こされる。プリフェッチ例外には、例えば、TLB
不一致、その他のVMU例外がある。デコード例外は、
例えば、デコード中の命令が違法命令であるか、プロセ
ッサの現特権レベル(privilege leve
l)に一致していないと、引き起こされる。実行例外
は、例えば、ゼロによる除算といった算術演算エラーが
原因で引き起こされる。これらの例外が起こると、好適
実施例では、例外を引き起こした特定命令と例外とを対
応づけ、その命令が退避(retire)されるときま
でその状態が維持される。その時点で、以前に完了した
命令がすべて退避され、例外を引き起こした命令からの
試行的結果があれば、試行的に実行された後続の命令の
試行的結果と同じように、フラッシュされる。そのあ
と、その命令で引き起こされた最高優先度例外に対応す
る例外ハンドラに制御が渡される。
【0156】ソフトウェア・トラップ命令はCF_DE
T274(図2)によってIデコード・ステージで検出
され、無条件コール命令その他の同期トラップと同じよ
うに処理される。つまり、ターゲット・アドレスが計算
され、プリフェッチはそのときのプリフェッチ待ち行列
(EBUFまたはMBUF)まで続けられる。これと同
時に、その例外は命令と対応づけられて記録され、命令
が退避されるとき処理される。他のタイプの同期例外は
すべて、例外を引き起こした特定命令と対応づけられて
記録され、累積されるだけで、実行時に処理される。
【0157】2)非同期割り込み 非同期割込みは、割込みライン292を通してPCロジ
ック・ユニット270に通知される。図3に示すよう
に、これらのラインはPCロジック・ユニット270内
の割込みロジック・ユニット363に通知するためのも
ので、NMIライン、IRQラインおよび1組の割込み
レベル・ライン(LVL)からなっている。NMIライ
ンはマスク不能割込みを通知し、外部ソースを起点とし
ている。これは、ハードウェアリセットを除き最高優先
度割込みである。IRQラインも外部ソースを起点とし
ており、外部デバイスがハードウェア割込みをいつ要求
したかを通知する。好適実施例では、外部から起こされ
るハードウェア割込みは最高32個までユーザが定義す
ることができ、割込みを要求した特定外部デバイスは割
込みレベル・ライン(LVL)上に割込み番号(0−3
1)を送出する。メモリ・エラー・ラインはMCU11
0によってアクティベート(活動化)され、様々な種類
のメモリ・エラーを通知する。その他の非同期割込みラ
イン(図示せず)も割込みロジック・ユニット363に
通知するために設けられている。これらには、タイマ/
カウンタ割込み、メモリ入出力(I/O)エラー割込
み、マシン・チェック割込み、およびパフォーマンス・
モニタ割込みを要求するためのラインがある。非同期割
込みの各々は、下述する同期例外と同様に、対応する事
前定義トラップ番号が関連づけられている。これらのト
ラップ番号は32個が32個のハードウェア割込みレベ
ルと関連づけられている。これらのトラップ番号のテー
ブルは割込みロジック・ユニット363に維持されてい
る。一般に、トラップ番号が大きくなると、トラップの
優先度が高くなる。
【0158】非同期割込みの1つが割込みロジック・ユ
ニット363に通知されると、割込み制御ユニット36
3は割込み要求をINT REQ/ACKライン340
を経由してIEU104へ送出する。また、割込み制御
ユニット363はプリフェッチ一時中止信号をライン3
43を経由してPC制御ユニット262へ送信し、PC
制御ユニット262に命令をプリフェッチすることを中
止させる。IEU104はそのとき実行中の命令をすべ
てキャンセルし、すべての試行的結果を中止するか、一
部またはすべての命令を完了させる。好適実施例では、
そのとき実行中の命令をすべてキャンセルすることによ
って、非同期割込みに対する応答を高速化している。い
ずれの場合も、実行PC制御ユニット366内のDPC
は、IEU104が割込みの受信を確認する前に、最後
に完了し、退避された命令に対応するように更新され
る。プリフェッチされてMBUF、EBUF、TBUF
およびIFIFO264に置かれている他の命令もすべ
てキャンセルされる。
【0159】IEU104は、割込みハンドラから割込
みを受け取る準備状態にあるときだけ、割込み受信確認
信号をINT REQ/ACKライン340を経由して
割込み制御ユニット363へ送り返す。この信号を受け
取ると、割込み制御ユニット363は、以下で説明する
ように、該当するトラップ・ハンドラにディスパッチす
る。
【0160】3)同期例外 同期例外の場合は、割込み制御ユニット363は各命令
セットごとに4個が1組の内部例外ビット(図示せず)
をもっており、各ビットはセット内の各命令に対応づけ
られている。割込み制御ユニット363は各命令で見つ
かったとき、通知するトラップ番号も維持している。
【0161】特定の命令セットがプリフェッチされてい
る途中で、VMUがTLB不一致または別のVMU例外
を通知すると、この情報はPCロジック・ユニット27
0へ、特に割込み制御ユニット334へVMU制御ライ
ン332、334を経由して送られる。割込み制御ユニ
ット363は、この信号を受信すると、以後のプリフェ
ッチを一時中止するようにライン343を経由してPC
制御ユニット362に通知する。これと同時に、割込み
制御ユニット363は、命令セットが送られる先のプリ
フェッチ・バッファに関連するVM MissまたはV
M_Excpビットのどちらか該当する方をセットす
る。そのあと、割込み制御ユニット363は、命令セッ
トの中の命令のどれも有効でないので、その命令セット
に対応する4個の内部例外標識ビット全部をセットし、
問題を起こした命令セットの中の4命令の各々に対応し
て受信した特定例外のトラップ番号をストアする。問題
のある命令より前の命令のシフトと実行は、問題の命令
セットがIFIFO264内で最低レベルに達するまで
通常通りに続行される。
【0162】同様に、プリフェッチ・バッファ260、
Iデコード・ユニット262またはIFIFO264を
通して命令をシフトしている途中で他の同期例外が検出
されると、この情報も割込み制御ユニット363へ送ら
れ、ユニット363は、例外を引き起こした命令に対応
する内部例外標識ビットをセットし、その例外に対応す
るトラップ番号をストアする。プリフェッチ同期例外の
場合と同じように、問題を起こした命令より前の命令の
シフトと実行は、問題の命令セットがIFIFO264
内で最低レベルに達するまで、通常通りに続行される。
【0163】好適実施例では、プリフェッチ・バッファ
260、Iデコード・ユニット262またはIFIFO
264を通して命令をシフトしている途中で検出される
例外は、ソフトウェア・トラップ命令の1タイプだけで
ある。ソフトウェア・トラップ命令は、CF_DETユ
ニット274によってIデコード・ステージで検出され
る。一部の実施例では、他の形態の同期例外がIデコー
ド・ステージで検出されるが、他の同期例外の検出は、
命令が実行ユニット104に到着するまで待つようにす
るのが好ましい。このようにすれば、特権命令を処理す
ると起こるようなある種の例外が、命令が実効的に順序
内で実行される前に変化するおそれのあるプロセッサ状
態に基づいて通知されるのが防止される。違法命令のよ
うに、プロセッサ状態に左右されない例外はIデコード
・ステージで検出可能であるが、すべての実行前同期例
外(VMU例外は別として)を同じロジックで検出する
ようにすれば、最低限のハードウェアですむことにな
る。また、そのような例外の処理は時間を重視すること
がめったにないので、命令が実行ユニット104に届く
までの待ちによる時間浪費もない。
【0164】上述したように、ソフトウェア・トラップ
命令はCF_DETユニット274によってIデコード
・ステージで検出される。割込みロジック・ユニット3
63内のその命令に対応する内部例外標識ビットはセッ
トされ、0から127までの番号で、ソフトウェア・ト
ラップ命令の即値モード・フィールドに指定できるソフ
トウェア・トラップ番号はトラップ命令に対応づけられ
てストアされる。しかし、プリフェッチ同期例外と異な
り、ソフトウェア・トラップは制御フロー命令だけでな
く、同期例外としても扱われるので、割込み制御ユニッ
ト363は、ソフトウェア・トラップ命令が検出された
ときプリフェッチを一時中止するようにPC制御ユニッ
ト362に通知しない。その代わりに、命令がIFIF
O264を通してシフトされるのと同時に、IFU10
2はトラップ・ハンドラをプリフェッチしてMBUF命
令ストリーム・バッファに入れる。
【0165】命令セットがIFIFO264の最低レベ
ルまで達すると、割込みロジック・ユニット363はそ
の命令セットの例外標識ビットを4ビット・ベクトルと
してSYNCH INT INFOライン341経由で
IEU104へ送り、命令セットの中で同期例外の発生
源とすでに判断されていた命令があれば、どの命令であ
るかを通知する。IEU104は即時に応答しないで、
命令セットの中のすべての命令が通常の方法でスケジュ
ールされるようにする。整数算術演算例外といった別の
例外は、実行時に引き起こされる場合がある。特権命令
が実行されたために起こる例外のように、マシンの現在
状態に左右される例外もこの時点で検出され、マシンの
状態が命令ストリーム内の以前のすべての命令に対して
最新となるようにするために、PSRに影響を与える可
能性のあるすべての命令(特殊な移動やトラップ命令か
らのリターンなど)は強制的に順序内で実行される。な
んらかの同期命令の発生源となった命令が退避される直
前にあるときだけ、例外が起こったことが割込みロジッ
ク・ユニット363に通知される。
【0166】IEU104は試行的に実行され、同期例
外を引き起こした最初の命令に先行する命令ストリーム
に現れたすべての命令を退避し、試行的に実行され、命
令ストリームにそのあとに現れた命令からの試行的結果
をフラッシュする。例外を引き起こした特定の命令は、
トラップから戻ると再実行されるのが普通であるので、
この命令もフラッシュされる。そのあと、実行PC制御
ユニット366内のIF_PCは実際に退避された最後
の命令に対応するように更新され、例外が割込み制御ユ
ニット363に通知される。
【0167】例外の発生源である命令が退避されると、
IEU104は、退避される命令セット(レジスタ22
4)の中に同期例外を起こした命令があれば、どの命令
であるかを示した新しい4ビット・ベクトルを、命令セ
ット内の最初の例外の発生源を示した情報と一緒に、S
YNCH_INT_INFOライン341を経由して割
込みロジック・ユニット363に返却する。IEU10
4から返却される4ビット例外ベクトルに入っている情
報は、割込みロジック・ユニット363からIEU10
4に渡された4ビット例外ベクトルとIEU104で引
き起こされた例外を累積したものである。プリフェッチ
またはIデコード時に検出された例外が原因で割込み制
御ユニット363にすでにストアされている情報があれ
ば、その情報と一緒にIEU104から割込み制御ユニ
ット363に返却される情報の残余部分は、割込み制御
ユニット363が最高優先度同期例外の内容とそのトラ
ップ番号を判断するのに十分である。
【0168】4)ハンドラ・ディスパッチとリターン 割込み受信確認信号がライン340経由でIEU104
から受信されるか、あるいはゼロ以外の例外ベクトルが
ライン341経由で受信された後、現DPCがリターン
・アドレスとして、特殊レジスタ412(図4)の1つ
であるxPCレジスタに一時的にストアされる。現プロ
セッサ状態レジスタ(PSR)は先のPSR(PPS
R)レジスタにもストアされ、そして現状態比較レジス
タ(CSR)が特殊レジスタ412の中の旧状態比較レ
ジスタ(PCSR)にセーブされる。
【0169】トラップ・ハンドラのアドレスはトラップ
・ベース・レジスタ・アドレスにオフセットを加えたも
のとして計算される。PCロジック・ユニット270は
トラップ用に2つのベース・レジスタをもち、これらは
共に特殊レジスタ412(図4)の一部であり、以前に
実行された特殊移動命令によって初期化される。大部分
のトラップでは、ハンドラのアドレスを計算するために
使用されるベース・レジスタはトラップ・ベース・レジ
スタTBRである。
【0170】割込み制御ユニット363は現在保留中の
最高優先度割込みまたは例外を判断し、索引(look
−up)テーブルを通して、それに関連づけられたトラ
ップ番号を判断する。これは、選択したベース・レジス
タまでのオフセットとして、1組のINT_OFFSE
Tライン373を経由してプリフェッチPC制御ユニッ
ト364へ渡される。ベクトル・アドレスは、オフセッ
ト・ビットを下位ビットとしてTBRレジスタから得た
上位ビットに連結するだけで求められるという利点があ
る。このため、加算器の遅延が防止される。(本明細書
では、2’ビットとはi’番目のビットのことであ
る。)例えば、トラップの番号が0から255までで、
これを8ビット値で表すと、ハンドラ・アドレスは8ビ
ット・トラップ番号を22ビットのTBRストア値の最
後に連結すると求められる。トラップ番号に2桁の下位
ビットを付加すると、トラップ・ハンドラ・アドレスは
常にワード境界上に置かれることになる。このようにし
て作られた連結ハンドラ・アドレスは入力373の1つ
としてプリフェッチ・セレタタPF PCSel390
(図4)へ送られ、次のアドレスとして選択されて、そ
こから命令がプリフェッチされる。TBRレジスタを使
用したトラップのベクトル・ハンドラ・アドレスはすべ
て1ワードだけ離れている。従って、トラップ・ハンド
ラ・アドレスにある命令は、長くなったトラップ処理ル
ーチンヘの予備的ブランチ命令でなければならない。し
かし、トラップには、システム・パフォーマンスの低下
を防止するために、その扱いに注意が必要なものがいく
つかある。例えば、TLBトラップは高速に実行させる
必要がある。そのような理由から、好適実施例では、予
備的ブランチの費用を払わないで、小型のトラップ・ハ
ンドラを呼び出せるようにした高速トラップ・メカニズ
ムが組み込まれている。さらに、高速トラップ・ハンド
ラはメモリにも、例えば、オン・チップROMにも独立
に配置させることができるので、RAMの位置(ロケー
ション)に関連するメモリ・システム問題がなくなる。
【0171】好適実施例では、高速トラップとなるトラ
ップは上述したVMU例外だけである。高速トラップの
番号は他のトラップと区別され、0〜7の範囲になって
いる。しかし、優先度はMMU例外と同じである。割込
み制御ユニット363は、高速トラップがそのとき保留
中の最高優先度であると認めると、特殊レジスタ(FT
B)から高速トラップ・ベース・レジスタ(FTB)を
選択し、トラップ・オフセットと結合するためにライン
416上に送出する。ライン373’経由でプリフェッ
チ・セレタタPF PC Sel390へ送られた結果
のベクトル・アドレスは、FTBレジスタからの上位2
2ビットを連結したもので、そのあとに高速トラップ番
号を表した3ビットが続き、そのあとに7個のゼロ・ビ
ットが続いている。従って、各高速トラップ・アドレス
は128バイト、つまり、32ワードだけ離れている。
呼び出されると、プロセッサは開始ワードヘブランチ
し、ブロックまたはそこから出たブランチ内でプログラ
ムを実行させる。32個またはそれ以下の命令で実現で
きる標準的なTLB処理ルーチンのような、小さなプロ
グラムの実行は、実際の実行処理ルーチンヘの予備的ブ
ランチが回避されるので、通常のトラップよりも高速化
される。
【0172】好適実施例では、すべての命令は同じ4バ
イト長になっているが(つまり、4つのアドレス・ロケ
ーションを占有する)、注目すべきことは、命令が可変
長になったマイクロプロセッサでも高速トラップ・メカ
ニズムが利用できることである。この場合、高速トラッ
プ・ベクトル・アドレス間には、マイクロプロセッサで
使用できる最短長の命令を少なくとも2つ、好ましくは
32個の平均サイズ命令を受け入れるだけの十分なスペ
ースが設けられることは勿論である。勿論、マイクロプ
ロセッサがトラップからのリターン命令を備えている場
合には、ベクトル・アドレス間には、ハンドラ内の少な
くとも1つの他の令令をその命令に置けるだけの十分な
スペースを設けておく必要がある。
【0173】また、トラップ・ハンドラヘディスパッチ
すると、プロセッサはカーネル・モードと割込み状態に
入る。これと並行して、状態比較レジスタ(CSR)の
コピーが以前のキャリー状態レジスタ(PCSR)に置
かれ、PSRのコピーが以前のPSR(PPSR)にス
トアされる。カーネルと割込み状態モードはプロセッサ
状況レジスタ(PSR)内のビットで表される。現PS
Rの割込み状態ビットがセットされると、シャドウ・レ
ジスタまたはトラップ・レジスタRT〔24〕〜RT
〔31〕が上述および図7(B)に示すように、見える
ようになる。割込みハンドラは新しいモードをPSRに
書き込むだけでカーネル・モードから出ることができる
が、割込み状態から出るためには、トラップからのリタ
ーン(RTT)命令を実行する方法だけが唯一の方法で
ある。
【0174】IEU104がRTT命令を実行すると、
PCSRはCSRレジスタに復元され、PPSRレジス
タはPSRレジスタに復元されるので、PSR内の割込
み状態ビットは自動的にクリアされる。PF_PC S
ELセレクタ390は特殊レジスタ・セット412の中
の特殊レジスタxPCを次にそこからプリフェッチする
アドレスとして選択する。xPCはインクリメンタ39
4とバス396を通して、MBUF PFnPCまたは
EBUF PFnPCのどちらか該当する方に復元され
る。xPCをEBUF PFnPCに復元すべきか、ま
たはMBUFPFnPCに復元すべきかの判断は、復元
されたあとのPSRの「プロシージャ進行中」ビットに
従って行われる。
【0175】注目すべきことは、プロセッサはトラップ
とプロシージャ命令の両方のリターン・アドレスをスト
アするのに同じ特殊レジスタxPCを使用しないことで
ある。トラップのリターン・アドレスは上述したように
特殊レジスタxPCにストアされるが、プロシージャ命
令のあとリータンする先のアドレスは別の特殊レジスタ
uPCにストアされる。従って、割込み状態は、プロセ
ッサがプロシージャ命令で呼び出されたエミュレーショ
ン・ストリームを実行している間でも、使用可能のまま
になっている。他方、例外処理ルーチンは、エミュレー
ション・ストリームが完了したあと例外ハンドラヘ戻る
ためのアドレスをストアする特殊レジスタがないので、
いずれのプロシージャ命令をも含んでいてはならない。
【0176】5)ネスト ある種のプロセッサ状況情報は、トラップ・ハンドラ、
特に、CSR、PSR、リタンPC、およびある意味で
は“A”レジスタ・セットra〔64〕〜ra〔31〕
ヘディスパッチするとき自動的にバックアップがとられ
るが、他のコンテキスト情報は保護されていない。例え
ば、浮動小数点状況レジスタ(FSR)の内容は自動的
にバックアップがとられない。トラップ・ハンドラがこ
れらのレジスタを変更するためには、独自のバック・ア
ップを実行しなければならない。
【0177】トラップ・ハンドラヘディスパッチすると
き自動的に行われるバックアップが制限されているため
に、トラップのネストは自動的に行われない。トラップ
・ハンドラは必要とするレジスタのバックアップをと
り、割込み条件をクリアし、トラップ処理のために必要
な情報をシステム・レジスタから読み取り、その情報を
適当に処理する必要がある。割込みは、トラップ・ハン
ドラヘディスパッチすると自動的に禁止される。処理を
終えると、ハンドラはバックアップをとったレジスタを
復元し、再び割込みを可能にし、RTT命令を実行して
割込みから戻ることができる。
【0178】ネストされたトラップを可能にするには、
トラップ・ハンドラを第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を実行する必要がある。これによ
り、制御はメインまたはエミュレーション命令ストリー
ムの中の該当命令に返される。
【0179】6)トラップ一覧表 次の〔表1〕は、好適実施例で認識されるトラップのト
ラップ番号、優先度および処理モードを示すものであ
る。
【0180】 〔表1〕 非同期/ トラップ番号 処理モード 同期 トラップ名 0−127 通常 同期 トラップ命令 128 通常 同期 FP例外 129 通常 同期 整数算術演算例外 130 通常 同期 MMU(TLB 不一致または修正を 除く) 135 通常 同期 不整列メモリアドレス 136 通常 同期 違法命令 137 通常 同期 特権命令 138 通常 同期 デバッグ例外 144 通常 非同期 性能モニタ 145 通常 非同期 タイマ/カウンタ 146 通常 非同期 メモリI/Oエラー 160−191 通常 非同期 ハードウェア割込み 192−253 予約 254 通常 非同期 マシン・チェック 255 通常 非同期 NMI 0 高速トラップ 同期 高速MMU TLB不一致 1 高速トラップ 同期 高速MMU TLB 修正 2−3 高速トラッア 同期 高速(予約) 4−7 高速トラップ 同期 高速(予約) III. 命令実行ユニット 図5は、IEU104の制御経路部分とデータ経路部分
を示したものである。主要データ経路は、IFU102
からの命令/オペランド・データ・バスを始端としてい
る。データ・バスとして、即値オペランドはオペランド
位置合わせユニット470へ送られ、レジスタ・ファイ
ル(REG ARRAY)472に渡される。レジスタ
・データはレジスタ・ファイル472からレジスタ・フ
ァイル出力バス476を経由し、バイパス・ユニット4
74を通って、分配バス480を経由して機能計算エレ
メント(FU0-n )の並列配列へ送られる。機能ユニッ
ト4780-n によって生成されたデータは、出力バス4
82を経由してバイパス・ユニット474またはレジス
タ配列472または両方へ送り返される。
【0181】ロード/ストア・ユニット484によって
IEU104のデータ経路部分が完成される。ロード/
ストア・ユニット484はIEU104とCCU106
間のデータ転送の管理を担当する。具体的には、CCU
106のデータ用キャッシュ134から取り出したロー
ド・データはロード/ストア・ユニット484によって
ロード・データ・バス486を経由してレジスタ配列4
72へ転送される。CCU106のデータ用キャッシュ
にストアされるデータは機能ユニットの配分バス480
から受信される。
【0182】IEU104の制御経路部分はIEUデー
タ経路を通る情報の送出、管理、およびその処理を行う
ことを担当する。本発明の好適実施例では、IEU制御
経路は複数の命令の並行実行を管理する機能を備え、I
EUデータ経路は、IEU104のほぼすべてのデータ
経路エレメント間の複数のデータ転送を独立して行う機
能を備えている。IEU制御経路は命令/オペランド・
バス124を経由して命令を受信すると、それに応じて
動作する。具体的には、命令セットはEデコード・ユニ
ット490によって受信される。本発明の好適実施例で
は、Eデコード・ユニット490はIFIFOマスタ・
レジスタ216、224に保持されている両方の命令セ
ットを受信して、デコードする。8命令すべてのデコー
ドの結果は、キャリー・チェッカ(CRY CHKR)
ユニット492、依存性チェッカ(DEP CHKR)
ユニット494、レジスタ改名ユニット(REG RE
NAME)496、命令発行(ISSUER)ユニット
498および退避制御ユニット(RETIRE CL
T)500へ送られる。
【0183】キャリー・チェッカ・ユニット492はE
デコード・ユニット490から制御ライン502を経由
して、係属中の保留されている8命令に関するデコード
化情報を受信する。キャリー・チェッカ492の機能
は、保留されている命令のうち、プロセッサ状況ワード
のキャリー・ビットに影響を与える、あるいはキャリー
・ビットの状態に左右される命令を識別することであ
る。この制御情報は制御ライン504を経由して命令発
行ユニット498へ送られる。
【0184】保留状態の8命令によって使用されている
レジスタ・ファイル472のレジスタを示しているデコ
ード化情報は、制御ライン506を経由して直接にレジ
スタ改名ユニット496へ送られる。この情報は、依存
関係チェッカ・ユニット494へも送られる。依存関係
チェッカ・ユニット494の機能は、保留状態の命令の
どれがレジスタをデータの宛先として参照しているか、
もしあれば、どの命令がこれらの宛先レジスタのいずれ
かに依存しているかを判断することである。レジスタに
依存する命令は、制御ライン508を経由してレジスタ
改名ユニット496へ送られる制御信号によって識別さ
れる。
【0185】最後に、Eデコード・ユニット490は保
留状態の8命令の各々の特定の内容と機能を識別した制
御情報を制御ライン510を経由して命令発行ユニット
498へ送る。命令発行ユニット498はデータ経路資
源、特に、保留状態の命令の実行のためにどの機能ユニ
ットが使用できるかを判断することを担当する。アーキ
テクチャ100の好適実施例によれば、命令発行ユニッ
ト498はデータ経路資源が使用可能であること、キャ
リーとレジスタ依存関係の制約を条件として、8個の保
留状態命令のいずれかを順序外で実行できるようにす
る。レジスタ改名ユニット496は、実行できるように
適当に制約が解除された命令のビット・マップを制御ラ
イン512を経由して命令発行ユニット498へ送る。
すでに実行された(完了した)命令およびレジスタまた
はキャリーに依存する命令は論理的にビット・マップか
ら除かれる。
【0186】必要とする機能ユニット4780-n が使用
可能であるかどうかに応じて、命令発行ユニット498
は各システム・クロック・サイクルに複数の命令の実行
を開始することができる。機能ユニット4780-n の状
況は状況バス514を経由して命令発行ユニット498
へ送られる。命令の実行を開始し、開始後の実行管理を
行うための制御信号は命令発行ユニット498から制御
ライン516を経由してレジスタ改名ユニット496へ
送られ、また選択的に機能ユニット4780-nへ送られ
る。制御信号を受けると、レジスタ改名ユニット496
はレジスタ選択信号をレジスタ・ファイル・アクセス制
御バス518上に送出する。バス518上に送出された
制御信号でどのレジスタが割込み可能にされたかは、実
行中の命令を選択することによって、およびレジスタ改
名ユニット496がその特定命令によって参照されたレ
ジスタを判断することによって判断される。
【0187】バイパス制御ユニット(BYPASS C
TL)520は、一般的には、制御ライン524上の制
御信号を通してバイパス・データ・ルーチング・ユニッ
トト474の動作を制御する。バイパス制御ユニット5
20は機能ユニット4780- n の各々の状況をモニタ
し、制御ライン522を経由してレジスタ改名ユニット
496から送られてきたレジスタ参照に関連して、デー
タをレジスタ・ファイル472から機能ユニット478
0-n へ送るべきかどうか、あるいは機能ユニット478
0-n から出力されるデータをバイパス・ユニツト474
経由で機能ユニット宛先バス480へ即時に送って、命
令発行ユニット498によって選択された新発行の命令
の実行のために使用できるかどうかを判断する。どちら
の場合も、命令発行ユニット498は機能ユニット47
0-n の各々への特定レジスタ・データを選択的に使用
可能にすることによって、宛先バス480から機能ユニ
ット4780-n ヘデータを送ることを直接に制御する。
【0188】IEU制御経路の残りのユニットには、退
避制御ユニット500、制御フロー制御(CF CT
L)ユニット528、および完了制御(DONE CT
L)ユニット536がある。退避制御ユニット500は
順序外で実行された命令の実行を無効または確認するよ
うに動作する。ある命令が順序外で実行されると、先行
命令もすべて退避されたならば、その命令は、確認また
は退避されることができる。現セット中の保留状態の8
命令のどれが実行されたかの識別情報が制御ライン53
2上に送出されると、その識別情報に基づいて、退避制
御ユニット500はバス518に接続された制御ライン
534上に制御御信号を送出して、レジスタ配列472
にストアされた結果データを順序外で実行された命令の
先行実行の結果として実効的に確認する。
【0189】退避制御ユニット500は、各命令を退避
するとき、PCインクリメント/サイズ制御信号を制御
ライン344を経由してIFU102へ送る。複数の命
令を順序外で実行でき、従って、同時に退避する準備状
態に置くことができるので、退避制御ユニット500は
同時に退避された命令数に基づいてサイズ値を判断す
る。最後に、IFIFOマスタ・レジスタ224のすべ
ての命令が実行され、退避された場合は、退避制御ユニ
ット500はIFIFO読取り制御信号を制御ライン3
42を経由してIFU102へ送って、IFIFOユニ
ット264のシフト・オペレーションを開始することに
より、Eデコード・ユニット490に追加の4命令を実
行保留命令として与える。
【0190】制御フロー制御ユニット528は各条件付
きブランチ命令の論理的ブランチ結果を検出するとい
う、特定化された機能を備えている。制御フロー制御ユ
ニット528は現在保留中の条件付きブランチ命令の8
ビット・ベクトルIDをEデコード・ユニット490か
ら制御ライン510を経由して受信する。8ビット・ベ
クトル命令完了制御信号は、同じように完了制御ユニッ
ト540から制御ライン538を経由して受信される。
この完了制御信号によって、制御フロー制御ユニット5
28は、条件付きブランチ命令が、条件付き制御フロー
状況を判断するのに十分な個所まで完了すると、それを
判別することができる。保留中の条件付きブランチ命令
の制御フロー状況結果は、その実行時に制御フロー制御
ユニット528によってストアされる。条件付き制御フ
ロー命令の結果を判断するために必要なデータは、レジ
スタ配列472内の一時状況レジスタから制御ライン5
20を経由して得られる。各条件付き制御フロー命令が
実行されると、制御フロー制御ユニット528は新しい
制御フロー結果信号を制御ライン348を経由してIF
U102へ送る。好適実施例では、この制御フロー結果
信号は2個の8ビット・ベクトルを含んでおり、このベ
クトルは、保留されている可能性のある8個の制御フロ
ー命令のそれぞれのビット位置別の状況結果が分かって
いるかどうか、また、ビット位置の対応づけによって得
られる対応する状況結果状態を定義している。
【0191】最後に、完了制御ユニット540は機能ユ
ニット4780-n の各々のオペレーションに関する実行
状況をモニタするためのものである。機能ユニット47
0- n のいずれかが命令実行オペレーションの完了を通
知すると、完了制御ユニット540は対応する完了制御
信号を制御ライン542上に送出して、レジスタ改名ユ
ニット496、命令発行ユニット498、退避制御ユニ
ット500およびバイパス制御ユニット520にアラー
ト(警告)する。
【0192】機能ユニット478o-n を並列配列構成に
することにより、IEU104の制御の一貫性を向上し
ている。命令を正しく認識して、実行のためのスケジュ
ールするためには、個々の機能ユニット478o-n の特
性を命令発行ユニット498に知らせる必要がある。機
能ユニット478o-n は、必要とする機能を実行するた
めに必要な特定制御フロー・オペレーションを判別し、
実行することを担当する。従って、命令発行ユニット4
98以外は、IEU制御ユニットには、命令の制御フロ
ー処理を独立して知らせる必要はない。命令発行ユニッ
ト498と機能ユニット478o-n は共同して、残りの
制御フロー管理ユニット496、500、520、52
8、540に実行させる機能を必要な制御信号のプロン
プトで知らせる。従って、機能ユニット478o-n の特
定の制御フロー・オペレーションの変更は、IEU10
4の制御オペレーションに影響しない。さらに、既存の
機能ユニット478o-n の機能を強化する場合や、拡張
精度浮動小数点乗算ユニットや拡張精度浮動小数点AL
U、高速フーリェ計算機能ユニット、三角関数計算ユニ
ットなどの、別の機能ユニット478o-n を1つまたは
2つ以上を追加する場合でも、命令発行ユニット498
を若干変更するだけですむ。必要なる変更を行うには、
Eデコード・ユニット490によって隔離された対応す
る命令フィールドに基づいて、特定の命令を認識し、そ
の命令と必要とする機能ユニット478o-n とを関係づ
ける必要がある。レジスタ・データの選択の制御、デー
タのルーチング、命令完了と退避は、機能ユニット47
o-n の他の機能ユニットすべてに対して実行される他
のすべての命令の処理と矛盾がないようになっている。
【0193】A)IEUデータ経路の詳細 IEUデータ経路の中心となるエレメントはレジスタ・
ファイル472である。しかし、本発明によれば、IE
Uデータ経路内には、個々の機能用に最適化された並列
データ経路がいくつか用意されている。主要データ経路
は整数と浮動小数点の2つである。各並列データ経路内
では、レジスタ・ファイル472の一部がそのデータ経
路内で行われるデータ操作をサポートするようになって
いる。
【0194】1)レジスタ・ファイルの詳細 図6(A)は、データ経路レジスタ・ファイル550の
好適アーキテクチャの概要図である。データ経路レジス
タ・ファイル550は一時バッファ552、レジスタ・
ファイル配列564、入力セレタタ559、および出力
セレクタ556を含んでいる。最終的にレジスタ配列5
64へ送られるデータは、結合データ入力バス558’
を経由して一時バッファ552によって最初に受信され
るのが代表例である。つまり、データ経路レジスタ・フ
ァイル550へ送られるデータはすべて入力セレタタ5
59によって多重化されて、複数の入力バス558(好
ましくは2つの)から入力バス558’上に送出され
る。制御バス518上に送出されたレジスタ選択および
イネーブル制御信号は一時バッファ552内の受信デー
タのレジスタ・ロケーションを選択する。一時バッファ
にストアされるデータを生成した命令が退避されると、
再び制御バス518上に送出された制御信号は一時バッ
ファ552からレジスタ・ファイル配列564内の論理
的に対応づけられたレジスタヘデータ・バス560を経
由してデータを転送することを許可する。しかし、命令
が退避される前は、一時バッファ552にストアされた
データは一時バッファにストアされたデータをデータ・
バス560のバイパス部分を経由して出力データ・セレ
タタ556へ送ることにより、後続の命令の実行時に使
用することが可能である。制御バス518経由で送られ
る制御信号によって制御されるセレタタ556は、一時
バッファ552のレジスタからのデータとレジスタ・フ
ァイル配列564のレジスタからのデー夕のどちらかを
選択する。結果のデータはレジスタ・ファイル出力バス
554上に送出される。また、実行中の命令が完了と同
時に退避される場合は、つまり、その命令が順序内で実
行された場合は、結果データをバイパス延長部分55
8”を経由して直接にレジスタ配列564へ送るように
指示することができる。
【0195】本発明の好適実施例によれば、各データ経
路レジスタ・ファイル550は2つのレジスタ操作を同
時に行えるようになっている。従って、入力バス558
を通して2つの全レジスタ幅データ値を一時バッファ5
52に書き込むことができる。内部的には、一時バッフ
ァ552はマルチプレクサ配列になっているので、入力
データを一時バッファ552内の任意の2レジスタヘ同
時に送ることができる。同様に、内部マルチプレクサに
より一時バッファ552の任意の5レジスタを選択し
て、データをバス560上に出力することができる。レ
ジスタ・ファイル配列564は同じように人出力マルチ
プレクサを備えているので、2つのレジスタを選択し
て、それぞれのデータを同時にバス560から受信する
ことも、5つのレジスタ・を選択してバス562経由で
送ることもできる。最後に、レジスタ・ファイル出力セ
レクタ556は、バス560、562から受信した10
レジスタ・データ値のうち任意の5つがレジスタ・ファ
イル出力バス554上に同時に出力されるように実現す
るのが好ましい。
【0196】一時バッファ内のレジスタ・セットは図6
(B)にその概要が示されている。レジスタ・セット5
52’は8個のシングル・ワード(32ビット)レジス
タI0RD、I1RD...I7RDから構成されてい
る。レジスタ・セット552’は4個のダブル・ワード
・レジスタI0RD、I0RD+1(I0RD4)、I
1RD、I1RD+1(ISRD...I3RD、I3
RD+1(I7RD)のセットとして使用することも可
能である。
【0197】本発明の好適実施例によれば、レジスタ・
ファイル配列564内の各レジスタを重複して設ける代
わりに、一時バッファ・レジスタ・セット552内のレ
ジスタは2個のIFIFOマスタ・レジスタ216、2
24内のそれぞれの命令の相対ロケーションに基づい
て、レジスタ改名ユニット496によって参照される。
本アーキテクチャ100で実現される各命令は、最高2
つまでのレジスタまたは1つのダブル・ワード・レジス
タを出力として参照して、命令の実行によって生成され
たデータの宛先とすることができる。代表例として、命
令は1つの出力レジスタだけを参照する。従って、その
位置を図6(C)に示しているように、8個の保留中命
令のうち1つの出力レジスタを参照する命令2(I2
の場合は、データ宛先レジスタI2RDが選択されて、
命令の実行によって生成されたデータを受け入れる。命
令I2 によって生成されたデータが後続の命令、例え
ば、I 5 によって使用される場合は、I2RDレジスタ
にストアされたデータはバス560を経由して転送さ
れ、結果のデータは一時バッファ552に送り返され
て、I5RDで示したレジスタにストアされる。特に、
命令I5 は命令I2 によって決まるので、命令I5 は、
2 からの結果データが得られるまでは実行することが
できない。しかし、理解されるように、命令I5 は必要
とする入力データを一時バッファ552’の命令I2
データ・ロケーションから得れば、命令I2 の退避前に
実行することが可能である。
【0198】最後に、命令I2 が退避されると、レジス
タI2RDからのデータは、退避個所の命令の論理位置
から判断されて、レジスタ・ファイル配列564内のレ
ジスタ・ロケーションに書かれる。すなわち、退避制御
ユニット560は、制御ライン510経由でEデコード
・ユニット490から与えれたレジスタ参照フィールド
・データからレジスタ・ファイル配列内の宛先レジスタ
のアドレスを判断する。命令I0-3 が退避されると、I
4RD−I7RDに入っている値は、IFIFOユニッ
ト264のシフトと同時にシフトされて、I0RD−I
3RDに移される。
【0199】命令I2 からダブル・ワード結果値が得ら
れる場合は、さらに複雑になる。本発明の好適実施例に
よれば、ロケーションI2RDとI6RDの組合わせ
が、命令I2 が退避されるか、さもなければキャンセル
まで、その命令から得た結果データをストアしておくた
めに使用される。好適実施例では、命令I4-7 の実行
は、命令I0-3 のいずれかによるダブル・ワード出力の
参照がレジスタ改名ユニット496によって検出された
場合には、保留される。これにより、一時バッファ55
2’全体をダブル・ワード・レジスタのシングル・ラン
クとして使用することが可能になる。命令I0-3 が退避
されると、一時バッファ552’はシングル・ワード・
レジスタの2ランクとして再び使用するこができる。さ
らに、いずれかの命令I4-7 の実行は、ダブル・ワード
出力レジスタが必要な場合には、命令が対応するI0-3
にシフトされるまで保留される。
【0200】レジスタ・ファイル配列564の論理的編
成は図7(A)〜図7(B)に示されている。本発明の
好適実施例によれば、整数データ経路用のレジスタ・フ
ァイル配列564は40個の32ビット幅レジスタから
構成されている。このレジスタ・セットはレジスタ・セ
ット“A”を構成し、ベース・レジスタ・セットra
〔0..23〕565、汎用レジスタra〔24..3
1〕566からなるトップ・セット、および8個の汎用
トラップ・レジスタra〔24..31〕からなるシャ
ドウ・レジスタ・セットとして編成されている。通常の
オペレーションでは、汎用レジスタra〔0..31〕
565、566は整数データ経路用のレジスタ・ファイ
ル配列のアクティブ“A”レジスタ・セットを構成して
いる。
【0201】図7(B)に示すように、トラップ・レジ
スタra〔24..31〕567をスワップしてアクテ
ィブ・レジスタ・セット“A”に移しておけば、レジス
タra〔0..23〕565のアクティブ・ベース・セ
ットと一緒にアクセスすることが可能である。“A”レ
ジスタ・セットのこの構成は、割込みの受信が確認され
るか、例外トラップ処理ルーチンが実行されると、選択
される。レジスタ・セット“A”のこの状態は、割込み
許可命令の実行またはトラップからのリターン命令の実
行によって図7(A)に示す状態に明示によって戻るま
で維持される。
【0202】アーキテクチャ100によって実現された
本究明の好適実施例では、浮動小数点データ経路は図8
にその概要を示すように拡張精度レジスタ・ファイル配
列572を使用する。レジスタ・ファイル配列572
は、各々が64ビット幅の32個のレジスタrf
〔0..31〕から構成されている。浮動小数点レジス
タ・ファイル572は整数レジスタrb〔0..31〕
の“B”セットとして論理的に参照することも可能であ
る。アーキテクチャ100では、この“B”セットのレ
ジスタは浮動小数点レジスタrf〔0..31〕の各々
の下位32ビットに相当している。
【0203】第3のデータ経路を表すものとして、ブー
ル演算子レジスタ・セット574が図9に示すように設
けられている。これは、ブール演算の論理結果をストア
する。この“C”レジスタ・セット574は32個の1
ビット・レジスタrc〔0..31〕から構成されてい
る。ブール・レジスタ・セット574のオペレーション
は、ブール演算の結果をブール・レジスタ・セット57
4の任意の命令選択レジスタヘ送ることができる点でユ
ニークである。これは、等しい、等しくない、より大、
その他単純なブール状況値などの条件を表す1ビット・
フラグをストアするシングル・プロセッサ状況ワード・
レジスタを使用するのと対照的である。
【0204】浮動小数点レジスタ・セット572とブー
ル・レジスタ・セット574は、双方共、図6(B)に
示す整数一時バッファ552と同じアーキテクチャの一
時バッファによって補数がとられる。基本的違いは、一
時バッファ・レジスタの幅が補数をとるレジスタ・ファ
イル配列572、574の幅と同じなるように定義され
ていることである。好適実施例では、幅はそれぞれ64
ビットと1ビットになっている。
【0205】多数の追加の特殊レジスタが、レジスタ配
列472に少なくとも論理的に存在している。図7
(C)に示すように、レジスタ配列472に物理的に存
在するレジスタはカーネル・スタック・ポインタ(ke
rnelstackpointer)568、プロセッ
サ状態レジスタ(PSR)569、旧プロセッサ状態レ
ジスタ(PPSR)570および8個の一時プロセッサ
状態レジスタの配列(tPSR〔0..7〕)571か
らなっている。残りの特殊レジスタはアーキテクチャ1
00の各所に分散している。特殊アドレスおよびデータ
・バス354はデータを選択して、特殊レジスタおよび
“A”と“B”レジスタ・セット間で転送するためのも
のである。特殊レジスタ移動命令は“A”または“B”
レジスタ・セットからレジスタを選択し、転送の方向を
選択し、特殊レジスタのアドレスIDを指定するための
ものである。
【0206】カーネル・スタック・ポインタ・レジスタ
とプロセッサ状態レジスタは、他の特殊レジスタとは異
なっている。カーネル・スタック・ポインタは、カーネ
ル状態にあるとき、標準のレジスタ間移動命令を実行す
ることによってアクセス可能である。一時プロセッサ状
態レジスタは直接にアクセスすることはできない。その
代わりに、このレジスタ配列はプロセッサ状態レジスタ
の値を伝播して、順序外で実行される命令で使用できる
ようにする縦承メカニズム(inheritance
mechanism)を実現するために使用される。初
期伝播値はプロセッサ状態レジスタの値である。つま
り、最後に退避された命令から得た値である。この初期
値は一時プロセッサ状態レジスタから前方向に伝播さ
れ、順序外で実行される命令が対応する位置にある一時
プロセッサ状態レジスタ内の値をアクセスできるように
する。命令が依存し、変更できる条件コード・ビット
は、その命令がもつ特性によって定義される。命令が依
存関係、レジスタまたは条件コードによって制約されな
いことが、レジスタ依存関係チェッカ・ユニット494
とキャリー依存関係チェッカ492によって判断された
場合は、命令は順序外で実行することができる。プロセ
ッサ状態レジスタの条件コード・ビットの変更は論理的
に対応する一時プロセッサ状態レジスタに指示される。
具体的には、変更の可能性があるビットだけが一時プロ
セッサ状態レジスタに入っている値に適用され、上位の
すべての一時プロセッサ状態レジスタに伝播される。そ
の結果、順序外で実行されるすべての命令は介在するP
SR変更命令によって適切に変更されたプロセッサ状態
レジスタ値から実行される。命令が退避されたときは、
対応する一時プロセッサ状態レジスタ値だけがPSRレ
ジスタ569に転送される。
【0207】その他の特殊レジスタは〔表2〕に説明さ
れている。
【0208】 〔表2〕 特殊レジスタ 特殊移動 レジスタ R/W 説明 PC R プログラム・カウンタ:一般的には、PCは現在実行 中のプログラム命令ストリームの次のアドレスを格納 している。 IF_PC R/W IFUプログラム・カウンタ:IF PCは正確な次 の実行アドレスを格納している。 PFnPC R プリフェッチ・プログラム・カウンタ:MBUF、T BUFおよびEBUFPFnPCはそれぞれのプリフ ェッチ命令ストリームの次のプリフェッチ命令アドレ スを格納している。 uPC R/W マイクロ・プログラム・カウンタ:プロシージャ命令 のあとに続く命令のアドレスを格納している。これは プロシージャ命令がリターンしたとき最初に実行され る命令のアドレスである。 xPC R/W 割込み/例外プログラム・カウンタ:割込みまたは例 外(または両方)のリターン・アドレスを格納してい る。リターン・アドレスはトラップ発生時のIF_P Cのアドレスである。 TBR W トラップ・ベース・アドレス:トラップ処理ルーチン ヘディスパッチするとき使用されるベクトル・テーブ ルのベース・アドレス。各エントリは1ワード長であ る。割込みロジック・ユニット363から与えられる トラップ番号は、このアドレスが指しているテーブル までのインデックスとして使用される。 FTB W 高速トラップ・ベース・レジスタ:即時トラップ処理 ルーチン・テーブルのベース・レジスタ。各テーブル ・エントリは32ワードであり、トラップ処理ルーチ ンを直接に実行するために使用される。割込みロジッ ク・ユニット363から与えられるトラップ番号を3 2倍したものは、このアドレスが指しているテーブル までのオフセットとして使用される。 PBR W プロシージャ・ベース・レジスタ:プロシージャ・ル ーチンヘディスパッチするとき使用されるベクトル・ テーブルのベース・アドレス。各エントリは1ワード 長であり、4ワード境界に位置合わせされている。プ ロシージャ命令フィールドとして与えられるプロシー ジャ番号はこのアドレスが指しているテーブルまでの インデックスとして使用される。 PSR R/W プロセッサ状態レジスタ:プロセッサ状況ワードを格 納している。状況データ・ビットは、キヤリー、オー バフロー、ゼロ、負、プロセッサ・モード、現割込み レベル、実行中のプロシージャ・ルーチン、0による 除算、オーバフロー例外、ハードウェア機能割込み可 能、プロシージャ割込み可能、割込み可能などのビッ トがある。 PPSR R/W 旧プロセッサ状態レジスタ:命令が正しく完了するか 、割込みまたはトラップが引き起こされると、PSR からロードされる。 CSR R/W 状態比較(ブール)レジスタ:シングル・ワードとし てアクセス可能なブール・レジスタ・セット。 PCSR R/W 旧状態比較レジスタ:命令が正しく完了するか、割込 みまたはトラップが引き起こされると、CSRからロ ードされる。
【0209】2)整数データ経路の詳細 本発明の好適実施例に従って構築されるIEU104の
整数データ経路は図10に示されている。説明の便宜
上、整数データ経路580と結ばれる多数の制御経路は
図には示していない。これらの接続関係は図5を参照し
て説明したとおりである。
【0210】データ経路580の入力データは位置合わ
せユニット582、584および整数ロード/ストア・
ユニット586から得られる。整数即値(intege
rimmediate)データ値は、最初は命令埋込み
(embedded)データ・フィールドとして与えら
れ、バス588経由でオペランド・ユニット470から
得られる。位置合わせユニット582は整数ータ値を隔
離し、その結果値を出力バス590を経由してマルチプ
レクサ592へ送られる。マルチプレクサ592への別
の入力は特殊レジスタ・アドレスとデータ・バス354
である。
【0211】命令ストリームから得られる即値(imm
ediate)オペランドも、データ・バス594経由
でオペランド・ユニット570から得られる。これらの
値は、出力バス596上に送出される前に、位置合わせ
ユニット584によって再度右寄せされる。
【0212】整数ロード/ストア・ユニット586は外
部データ・バス598を通してCCU106と双方向で
やりとりする。IEU104へのインバウンド・データ
は整数ロード/ストア・ユニット586から入力データ
・バス600を経由して入力ラッチ602へ転送され
る。マルチプレクサ592とラッチ602からの出力デ
ータは、マルチプレクサ608のマルチプレクサ入力バ
ス604、606上に送出される。機能ユニット出力バ
ス482’からのデータもマルチプレクサ608に送ら
れる。このマルチプレクサ608はアーキテクチャ10
0の好適実施例では、データを同時に出力マルチプレク
サ・バス610へ送る2つの通路を備えている。さら
に、マルチプレクサ608を通るデータ転送は、システ
ム・クロックの各半サイクル以内に完了することができ
る。本アーキテクチャ100で実現される大部分の命令
は、1つの宛先レジスタを利用するので、最大4つまで
の命令によって各システム・クロック・サイクルの間デ
ータを一時バッファ612へ送ることができる。
【0213】一時バッファ612からのデータは一時レ
ジスタ出力バス616を経由して整数レジスタ・ファイ
ル配列614へ、あるいは代替一時バッファ・レジスタ
・バス618を経由して出力マルチプレクサ620へ転
送することができる。整数レジスタ配列出力バス622
は整数レジスタ・データをマルチプレクサ620へ転送
することができる。一時バッファ612と整数レジスタ
・ファイル配列614に接続された出力バスは、それぞ
れ5個のレジスタ値を同時に出力することを可能にす
る。つまり、合計5個までのソース・レジスタを参照す
る2つの命令を同時に出すことができる。一時バッファ
612、レジスタ・ファイル配列614およびマルチプ
レクサ620は、アウトバウンド・レジスタ・データの
転送を半システム・クロック・サイクルごとに行うこと
を可能にする。従って、最高4個までの整数および浮動
小数点命令を各クロック・サイクルの間に出すことがで
きる。
【0214】マルチプレクサ620はアウトバウンド・
レジスタ・データ値をレジスタ・ファイル配列614か
ら、あるいは一時バッファ612から直接に選択する働
きをする。これにより、以前に順序外で実行された命令
に依存する順序外実行命令をIEU104によって実行
させることができる。これにより、保留状態の命令を順
序外で実行することによってIEU整数データ経路の実
行スループット能力を最大化すると共に、順序外のデー
タ結果を、実行され退避された命令から得たデータ結果
から正確に分離するという2目標を容易に達成すること
ができる。マシンの正確な状態を復元する必要のあるよ
うな割込みや他の例外条件が起こると、本発明によれ
ば、一時バッファ612に存在するデータ値を簡単にク
リアすることができる。従って、レジスタ・ファイル配
列614は、割込みまたは他の例外条件が発生する以前
に完了し、退避された命令の実行によってのみ得られた
データ値を正確に収めたままになっている。
【0215】マルチプレクサ620の各半システム・サ
イクル・オペレーション時に選択されたレジスタ・デー
タ値は最高5つまでがマルチプレクサ出力バス624を
経由して整数バイパス・ユニット626へ送られる。こ
のバイパス・ユニット626は、基本的に、マルチプレ
クサが並列の配列からなり、その入力のいずれかに現れ
たデータをその出力のいずれかへ送ることができる。バ
イパス・ユニット626の入力は、マルチプレクサ59
2から出力バス604を経由する特殊レジスタ・アドレ
ス指定データ値または即値の整数値、バス624上に送
出される最高5つまでのレジスタ・データ値、整数ロー
ド/ストア・ユニット586からダブル整数バス600
を経由するロード・オペランド・データ、その出力バス
596を経由して位置合わせユニット584から得た即
値オペランド値、最後に、機能ユニット出力バス482
からのバイパス・データ経路からなっている。このバイ
パス経路とデータ・バス482はシステム・クロック・
サイクルごとに4個のレジスタ値を同時に転送すること
ができる。
【0216】データはバイパス・ユニット626から浮
動小数点データ・バスに接続された整数バイパス・バス
628上に出力されて、最高5つまでのレジスタ・デー
タ値を同時に転送する機能をもつ2つのオペランド・デ
ータ・バスと、整数ロード/ストア・ユニット586ヘ
データを送るために使用されるストア・データ・バス6
32へ送られる。
【0217】機能ユニット分配バス480はルータ・ユ
ニット634のオペレーションを通して実現されてい
る。また、ルータ・ユニット634はその入力から受信
された5個のレジスタ値を整数データ通路に設けられた
機能ユニットヘ送ることを可能にする並列のマルチプレ
クサ配列によって実現される。具体的には、ルータ・ユ
ニット634はバイパス・ユニット626からバス63
0を経由して送られてきた5個のレジスタ・データ値、
アドレス・バス352を経由して送られてきた現IF
PCアドレス値、PC制御ユニット362によって判断
され、ライン378’上に送出された制御フロー・オフ
セット値を受信する。ルータ・ユニット634は、浮動
小数点データ経路内に設けられたバイパス・ユニットか
ら取り出されたオペランド・データ値をデータ・バス6
36を経由して受信することもできる(オプション)。
【0218】ルータ・ユニット634によって受信され
たレジスタ・データ値は、特殊レジスタ・アドレスおよ
びデータ・バス354上を転送されて、機能ユニット6
40、642、644へ送られる。具体的には、ルータ
・ユニット634は最高3つまでのレジスタ・オペラン
ド値をルータ出力バス646、648、650を経由し
て機能ユニット640、642、644の各々へ送る機
能を備えている。本アーキテクチャ100の一般的アー
キテクチャによれば、最高2つまでの命令を同時に機能
ユニット640、642、644に対して出すことが可
能である。本発明の好適実施例によれば、3つの専用整
数機能ユニットに、それぞれプログラマブル・シフト機
能と2つの算術演算ロジック・ユニット機能をもたせる
ことができる。
【0219】ALU0機能ユニット644、ALU1機
能ユニット642およびシフタ機能ユニット640はそ
れぞれの出力レジスタ・データを機能ユニット・バス4
82I上に送出する。ALU0とシフタ機能ユニット6
44、640から得た出力データも浮動小数点データ経
路に接続された共用整数機能ユニット・バス650上に
送出される。類似の浮動小数点機能ユニット出力値デー
タ・バス652が浮動小数点データ経路から機能ユニッ
ト出力バス482’へ設けられている。
【0220】ALU0機能ユニット644はIFU10
2のプリフェッチ操作と整数ロード/ストア・ユニット
586のデータ操作の両方をサポートするために仮想ア
ドレス値を生成する場合にも使用される。ALU0機能
ユニット644によって計算された仮想アドレス値はI
FU102のターゲット・アドレス・バス346とCC
U106の両方に接続された出力バス654上に送出さ
れ、実行ユニットの物理アドレス(EX PADDR)
が得られる。ラッチ656は、ALU0機能ユニット6
44によって生成されたアドレスの仮想化部分をストア
するためのものである。アドレスのこの仮想化部分は出
力バス658上に送出されて、VMU108へ送られ
る。
【0221】3)浮動小数点データ経路の詳細 次に、図11は浮動小数点データ経路を示したものであ
る。初期データは、この場合も、即値整数オペランド・
バス588、即値オペランド・バス594および特殊レ
ジスタ・アドレス・データ・バス354を含む、複数の
ソースから受信される。外部データの最終的ソースは外
部データ・バス598を通してCCU106に接続され
た浮動小数点ロード/ストア・ユニット622である。
【0222】即値整数オペランドは、位置合わせ出力デ
ータ・バス668を経由してマルチプレクサ666に渡
す前に整数データ・フィールドを右寄せする働きをする
位置合わせユニット664によって受信される。マルチ
プレクサ666は特殊レジスタ・アドレス・データ・バ
ス354も受信する。即値オペランドは第2の位置合わ
せユニット670へ送られ、右寄せされてから出力バス
672上に送出される。浮動小数点ロード/ストア・ユ
ニット662からのインバウンド・データ(inbou
nd data)は、ロード・データ・バス676から
ラッチ674によって受信される。マルチプレクサ66
6、ラッチ674および機能ユニット・データ・リター
ン・バス482”からのデータはマルチプレクサ678
の入力から受信される。マルチプレクサ678は選択可
能なデータ経路を備え、2つのレジスタ・データ値がシ
ステム・クロックの半サイクルごとに、マルチプレクサ
出力バス682を経由して一時バッファ680に書き込
まれることを可能にする。一時バッファ680は図6
(B)に示す一時バッファ552’と論理的に同じレジ
スタ・セットを備えている。一時バッファ680はさら
に、最高5個までのレジスタ・データ値を一時バッファ
680から読み取って、データ・バス686を経由して
浮動小数点レジスタ・ファイル配列684と、出力デー
タ・バス690を経由して出力マルチプレクサ688へ
送ることができる。マルチプレクサ688は、データ・
バス692を経由して、浮動小数点ファイル配列684
から最高5個までのレジスタ・データ値も同時に受信す
る。マルチプレクサ688は最高5個までのレジスタ・
データ値を選択して、データ・バス696を経由してバ
イパス・ユニット694へ同時に転送する働きをする。
バイパス・ユニット694は、データ・バス672、マ
ルチプレクサ666からの出力データ・バス698、ロ
ード・データ・バス676および機能ユニット・データ
・リターン・バス482”のバイパス延長部分を経由し
て、位置合わせユニット670から与えられた即値オペ
ランド値も受信する。バイパス・ユニット694は最高
5個までのレジスタ・オペランド・データ値を同時に選
択して、バイパス・ユニット出力バス700、浮動小数
点ロード/ストア・ユニット662に接続されたストア
・データ・バス702、および整数デー夕経路580の
ルータ・ユニット634に接続された浮動小数点バイパ
ス・バス636上に出力するように働く。
【0223】浮動小数点ルータ・ユニット704は、バ
イパス・ユニット出力バス700と整数データ経路バイ
パス・バス628とそれぞれの機能ユニット712、7
14、716に接続された機能ユニット入力バス70
6、708、710との間で同時にデータ経路を選択で
きる機能を備えている。アーキテクチャ100の好適実
施例による入力バス706、708、710の各々は、
最高3個までのレジスタ・オペランド・データ値を機能
ユニット712、714、716の各々へ同時に転送す
ることが可能である。これらの機能ユニット712、7
14、716の出力バスは機能ユニット・データ・リタ
ーン・バス482”に結合され、データをレジスタ・フ
ァイル入力マルチプレクサ678へ戻すようになってい
る。整数データ経路機能ユニット出力バス650を、機
能ユニット・データ・リターン・バス482”に接続す
るために設けることも可能である。本発明のアーキテク
チャ100によれば、マルチプレクサ機能ユニット71
2と浮動小数点ALU714の機能ユニット出力バスを
浮動小数点データ経路機能ユニット・バス652を経由
して整数データ経路500の機能ユニット・データ・リ
ターン・バス482”に接続することが可能である。
【0224】4) ブール・レジスタ・データ経路の詳
細 ブール演算データ経路720は図12に示されている。
このデータ経路720は基本的に2種類の命令の実行を
サポートするために利用される。最初のタイプは、オペ
ランド比較命令であり、この命令では、整数レジスタ・
セットと浮動小数点レジスタ・セットから選択された、
あるいは即値オペランドとして与えられた2つのオペラ
ンドが、ALU機能ユニットの1つで整数と浮動小数点
データ経路を減算することによって比較される。この比
較は、ALU機能ユニット642、644、714、7
16のいずかによる減算によって行われ、その結果の符
号とゼロ状況ビットは入力セレクタと比較演算子結合ユ
ニット722へ送られる。このユニット722は、制御
信号を指定した命令をEデコード・ユニット490から
受け取ると、ALU機能ユニット642、644、71
4、716の出力を選択し、符号およびゼロ・ビットを
結合し、ブール比較結果値を抽出する。出力バス723
を通して比較演算の結果を入力マルチプレクサ726と
バイパス・ユニット742へ同時に転送することができ
る。整数および浮動小数点データ経路と同じように、バ
イパス・ユニット742は並列のマルチプレクサ配列と
して実現され、バイパス・ユニット742の入力間で複
数のデータ経路を遇択して、複数の出力と結ぶことがで
きる。バイパス・ユニット742の他の人力はブール演
算結果リターン・データ・バス724とデータ・バス7
44上の2つのブール・オペランドからなっている。バ
イパス・ユニット742は、最高2つまでの同時に実行
中のブール命令を表したブール・オペランドを、オペラ
ンド・バス748を経由してブール演算機能ユニット7
46へ転送することができる。また、バイパス・ユニッ
ト746は最高2個までのシングル・ビット・ブール・
オペランド・ビット(CF0、CF1)を制御フロー結
果制御ライン750、752を経由して同時に転送する
ことができる。
【0225】ブール演算データ経路の残り部分は、比較
結果バス723とブール結果バス724上に送出された
比較およびブール演算結果値を、その入力として受信す
る入力マルチプレクサ726を含んでいる。このバス7
24は最高2個までのブール結果ビットを同時にマルチ
プレクサ726へ転送することができる。さらに、最高
2個までの比較結果ビットをバス723を経由してマル
チプレクサ726へ転送することができる。マルチプレ
クサ726はマルチプレクサの入力端に現れた任意の2
個の信号ビットをマルチプレクサの出力端を経由して、
システム・クロックの各半サイクル時にブール演算一時
バッファ728へ転送することができる。一時バッファ
728は、2つの重要な点が異なることを除けば、図6
(B)に示した一時バッファ752’と論理的に同じで
ある。第1の相違点は、一時バッファ728内の各レジ
スタ・エントリがシングル・ビットからなることであ
る。第2の相違点は、8個の保留中命令スロットの各々
に1つのレジスタだけが設けられていることである。こ
れは、ブール演算の結果全部が定義によって1つの結果
ビットによって定義されるためである。
【0226】一時バッファ728は最高4個までの出力
オペランド値を同時に出力する。これにより、各々2つ
のソース・レジスタヘのアクセスを必要とする2個のブ
ール命令を同時に実行させることができる。4個のブー
ル・レジスタ値はシステム・クロックの各半サイクルご
とにオペランド・バス736上に送出し、マルチプレク
サ738へあるいはブール・オペランド・データ・バス
734を経由してブール・レジスタ・ファイル配列73
2へ転送することができる。ブール・レジスタ・ファイ
ル配列732は、図9に論理的に示すように、1個の3
2ビット幅データ・レジスタであり、任意に組み合わせ
た最高4個までのシングル・ビット・ロケーションを、
一時バッファ728からのデータで修正し、システム・
クロックの各半サイクルごとにブール・レジスタ・ファ
イル配列732から読み取って出力バス740上に送出
することができる。マルチプレクサ738はバス73
6、740経由でその出力端から受信したブール・オペ
ランドの任意のペアを、オペランド出力バス744上に
送出してバイパス・ユニット742へ転送する。
【0227】ブール演算機能ユニット746は2個のソ
ース値についてブール演算を幅広く実行する機能を備え
ている。比較命令の場合には、ソース値は整数および浮
動小数点レジスタ・セットのいずれかから得たペアのオ
ペランドとIEU104へ送られる任意の即値オペラン
ドであり、ブール命令の場合は、ブール・レジスタ・オ
ペランドの任意の2つである。〔表3〕と〔表4〕は、
本発明のアーキテクチャ100の好適実施例における論
理比較演算を示すものである。〔表5〕は本発明のアー
キテクチャ100の好適実施例における直接ブール演算
を示すものである。〔表2〕ー〔表5〕に示されている
命令条件コードと機能コードは対応する命令のセグメン
トを表している。また、命令はペアのソース・オペラン
ド・レジスタと、対応するブール演算結果をストアする
ための宛先ブール・レジスタを指定する。
【0228】 〔表3〕 整数の比較 命令 条件* 記号 条件コード rs1はrs2より大 > 0000 rs1はrs2より大か ≧ 0001 等しい rs1はrs2より小 < 0010 rs1はrs2より小か ≦ 0011 等しい rs1はrg2と等しくない != 0100 rs1はrs2と等しい == 0101 予備 0110 無条件 1111 *rs = レジスタ・ソース 〔表4〕 浮動小数点の比較 命令 条件 記号 条件コード rs1はrs2より大 > 0000 rs1はrs2より大か等しい ≧ 0001 rs1はrs2より小 < 0010 rs1はrs2より小か等しい ≦ 0011 rs1はrs2と等しくない != 0100 rs1はrs2と等しい == 0101 無順序 ? 1000 無順序またはrs1はrs2より大 ?> 1001 無順序、rs1はrs2 より大か ?≧ 1010 等しい 無順序またはrs1はrs2より小 ?< 1011 無順序、rs1はrs2より小か ?≦ 1100 等しい 無順序またはrs1はrs2と等しい ?= 1101 予備 1110−1111 〔表5〕 ブール演算 命令 演算* 記号 条件コード 0 Zero 0000 bs1&bs2 AND 0001 bs1&−bs2 ANN2 0010 bs1 bs1 0011 −bs1&bs2 ANN1 0100 bs2 bs2 0101 bs1 bs2 XOR 0110 bs1 bs2 OR 0111 −bs1&−bs2 NOR 1000 −bs1 bs2 XNOR 1001 −bs2 NOT2 1010 bs1 −bs2 ORN2 1011 −bs1 NOT1 1100 −bs1 bs2 ORN1 1101 −bs1 −bs2 NAND 1110 1 ONE 1111 *bs = ブール・ソース・レジスタ。
【0229】B)ロード/ストア制御ユニット 図13はロード/ストア・ユニット760の例を示した
ものである。データ経路580、660に別々に示され
ているが、ロード/ストア・ユニット586、662は
1つの共用ロード/ストア・ユニット760として実現
するのが好ましい。それぞれのデータ経路580、66
0からのインタフェースはアドレス・バス762および
ロードとストア・データ・バス764(600、67
6)、766(632、702)を経由している。
【0230】ロード/ストア・ユニット760によって
使用されるアドレスは、IFU102およびIEU10
4の残り部分で使用される仮想アドレスとは対照的に、
物理アドレスである。IFU102は仮想アドレスで動
作し、CCU106とVMU108間の調整に依存して
物理アドレスを生成するのに対し、IEU104ではロ
ード/ストア・ユニット760を物理アドレス・モード
で直接に動作させる必要がある。この要件が必要になる
のは、順序外で実行されるために、物理アドレス・デー
タとストア・オペレーションがオーバラップするような
命令が存在する場合、およびCCU106からロード/
ストア・ユニット760への順序外のデータ・リターン
が存在する場合に、データ保全性を保つためである。デ
ータ保全性を保つために、ロード/ストア・ユニット7
60はストア命令がIEU104によって退避されるま
で、ストア命令から得たデータをバッファに置いてお
く。その結果、ロード/ストア・ユニット760によっ
てバッファに置かれたストア・デー夕はロード/ストア
・ユニット760に1つだけ存在することができる。実
行されたが退避されていないストア命令と同じ物理アド
レスを参照するロード命令は、ストア命令が実際に退避
されるまで実行が遅延される。その時点で、ストア・デ
ータをロード/ストア・ユニット760からCCU10
6へ転送し、CCUデータ・ロード・オペレーションの
実行によって即時にロード・バックすることができる。
【0231】具体的には、物理アドレス全体がVMU1
08からロード/ストア・アドレス・バス762上に送
出される。ロード・アドレスは、一般的には、ロード・
アドレス・レジスタ7680-3 にストアされる。ストア
・アドレスはストア・アドレス・レジスタ7703-0
ラッチされる。ロード/ストア制御ユニット774は命
令発行ユニット498から受信した制御信号を受けて動
作し、ロード・アドレスとストア・アドレスをレジスタ
7683-0 、7703-0 にラッチすることを調整する。
ロード/ストア制御ユニット774はロード・アドレス
をラッチするための制御信号を制御ライン778上に送
出し、ストア・アドレスをラッチするための制御信号を
制御ライン780上に送出する。ストア・データはスト
ア・データ・レジスタ・セット7823-0 の論理的に対
応するスロットにストア・アドレスをラッチするのと同
時にラッチされる。4x4x32ビット幅アドレス比較
ユニット772には、ロードおよびストア・アドレス・
レジスタ76833-0 、7703-0 に入っているアドレ
スの各々が同時に入力される。システム・クロックの各
半サイクル時の完全マトリックス・アドレス比較の実行
は、制御ライン776を介してロード/ストア制御ユニ
ット774によって制御される。ストア・アドレスに一
致するロード・アドレスの存在と論理ロケーションは、
制御ライン776を経由してロード/ストア制御ユニッ
ト774へ送られる。
【0232】ロード・アドレスがVMU108から与え
られ、保留中のストアがない場合は、ロード・アドレス
は、CCUロード・オペレーションの開始と同時に、バ
ス762から直接にアドレス・セレクタ786ヘバイパ
スされる。しかし、ストア・データが保留されている場
合は、ロード・アドレスは使用可能なロード・アドレス
・ラッチ7680-3 にラッチされる。対応するストア・
データ命令が退避されるとの制御信号を退避制御ユニッ
ト500から受信すると、ロード/ストア制御ユニット
774はCCUデータ転送操作を開始し、制御ライン7
84を通してCCU106へのアクセスの仲裁を行う。
CCU106がレディ(ready)を通知すると、ロ
ード/ストア制御ユニット774はCCU物理アドレス
をCCUPADDRアドレス・バス788上に送出する
ようにセレクタ786に指示する。このアドレスはアド
レス・バス790を経由して対応するストア・レジスタ
7703-0 から得られる。対応するストア・データ・レ
ジスタ7823-0 からのデータはCCUデータ・バス7
92上に送出される。
【0233】ロード命令が命令発行ユニット498から
出されると、ロード/ストア制御ユニット774はロー
ド・アドレス・ラッチ7683-0 の1つが要求されたロ
ード・アドレスをラッチすることを許可する。選択され
た特定のラッチ7680-3 は関係命令セット内のロード
命令の位置に論理的に対応している。命令発行ユニット
498は保留中の可能性のある2命令セットのどちらか
の中のロード命令を示している5ビット・ベクトルをロ
ード/ストア制御ユニット774へ渡す。コンパレータ
772が一致するストア・アドレスを示していない場合
は、ロード・アドレスはアドレス・バス794を経由し
てセレクタ786へ送られ、CCU PADDRアドレ
ス・バス788上に出力される。アドレスの提供は、ロ
ード/ストア制御ユニット774とCCU106間でや
りとりされるCCU要求とレディ制御信号に従って行わ
れる。実行ID値(ExID値)もロード/ストア制御
ユニット774によって準備されてCCU106に対し
て出され、CCU106がExID値を含む要求データ
をそのあとで返却するときロード要求を識別する。この
ID値は4ビット・ベクトルからなり、現ロード要求を
出したそれぞれのロード・アドレス・ラッチ7680-3
を固有ビットで指定している。5番目のビットはロード
命令を収めている命令セットを識別するために使用され
る。このID値は、従って、命令発行ユニット498か
らロード要求と一緒に送られるビット・ベクトルと同じ
である。
【0234】先行する要求ロード・データが使用可能で
あることがCCU106からロード/ストア制御ユニッ
ト774へ通知されると、ロード/ストア制御ユニット
774は、位置合わせユニットがデータを受信し、それ
をロード・データ・バス764上に送出することを許可
する。位置合わせユニット798はロード・データを右
寄せする働きをする。
【0235】CCU106からデータが返却されると同
時に、ロード/ストア制御ユニット774はCCU10
6からExID値を受信する。他方、ロード/ストア制
御ユニット774はロード・データがロード・データ・
バス764上に送出されることを知らせる制御信号を命
令発行ユニット498へ送り、さらに、どのロード命令
に対してロード・データが返却されるのかを示したビッ
ト・ベクトルを返却する。
【0236】C)IEU制御経路の詳細 再び図5を参照して、IEU制御経路のオペレーション
を、図14に示したタイミング図と関連づけて説明す
る。図14に示した命令の実行タイミングは本発明のオ
ペレーションを例示したもので、種々態様に変更可能で
あることは勿論である。
【0237】図14のタイミング図はプロセッサ・シス
テム・クロック・サイクルP0-6 のシーケンスを示して
いる。各プロセッサ・サイクルは内部TサイクルT。か
ら始まる。本発明の好適実施例によるアーキテクチャ1
00では、各プロセッサ・サイクルは2つのTサイクル
からなっている。
【0238】プロセッサ・サイクル0のときは、IFU
102とVMU108は物理アドレスを生成するように
動作する。この物理アドレスはCCU106へ送られ、
命令用キャッシュ・アクセス・オペレーションが開始さ
れる。要求された命令セットが命令用キャッシュ132
にあると、命令セットはプロセッサ・サイクル1のほぼ
中間でIFU102へ戻される。そのあと、IFU10
2はプリフェッチ・ユニット260とIFIFO264
を経由する命令セットの転送を管理し、転送された命令
セットはまずIEU104へ実行のために渡される。
【0239】1)Eデコード・ユニットの詳細 Eデコード・ユニット490は全命令セットを並列に受
け取って、プロセッサ・サイクル1が完了する前にデコ
ードする。Eデコード・ユニット490は、好適アーキ
テクチャ100では、バス124を経由して受け取った
すべての有効命令を並列に直接デコードする機能を備え
た順列組合せ理論に基づくロジック・ブロックとして実
現されている。アーキテテクチヤ100によって認識さ
れる命令は、各タイプ別に、命令、レジスタ要件および
必要な資源の仕様と共に〔表6〕に示されてる。
【0240】 〔表6〕 命令/仕様 命令 制御とオペランド情報* レジスタ間移動 論理/算術演算機能コード: 加算、減算、乗算、シフトその他の指定。
【0241】 宛先レジスタ PSRのみセット ソース・レジスタ1 ソース・レジスタ2または即値定数値 レジスタ・セットA/B選択 即値からレジスタヘ 宛先レジスタ 移動 即値整数または浮動小数点定数値 レジスタ・セットA/B 選択 ロード/ストア・レジスタ オペレーション機能コード: ロードまたはストアの指定、即値、ベースと 即値、またはベースとオフセットの使用 ソース/宛先レジスタ ベース・レジスタ インデックス・レジスタまた 即値定数値 レジスタ・セットA/B選択 即値コール 符号付き即値変位 制御フロー オペレーション機能コード: ブランチ・タイプとトリガ条件の指定 ベース・レジスタ インデックス・レジスタ、即値定数変位値、また はトラップ番号 レジスタ・セットA/B選択 特殊レジスタ移動 オペレーション機能コード: 特殊/整数レジスタとの間の移動の指定 特殊レジスタ・アドレス識別子ソース/宛先レジ スタ レジスタ・セットA/B選択 整数変換移動 オペレーション機能コード: 浮動小数点から整数への変換タイプの指定 ソース/宛先レジスタ レジスタ・セットトA/B選択 ブール関数 ブール関数コード:AND、ORなどの指定 宛先ブール・レジスタ ソース・レジスタ1 ソース・レジスタ2 レジスタ・セットA/B 選択 拡張プロシージャ ブロシージャ指定子: プロシージャ・ベース値からのアドレス・オ フセットの指定 オペレーション: 値をプロシージャ・ルーチンヘ渡す アトミック・プロシージャ プロシージャ指定子:アドレス値の指定 *−命令は、デコードされて命令を識別するフィールドのほかにこれらのフィー ルドを含んでいる。
【0242】Eデコード・ユニット490は命令セット
の各命令を並列にデコードする。その結果の命令の識
別、命令機能、レジスタ参照および機能要件はEデコー
ド・ユニット490の出力から得られる。この情報は再
生成され、命令セット内のすべての命令が退避されるま
で、プロセッサ・サイクルの各半サイクル期間、Eデコ
ード・ユニット490によってラッチされる。従って、
保留状態の8命令すべてに関する情報が、Eデコード・
ユニット490の出力から絶えず得られるようになって
いる。この情報は、8エレメント・ビット・ベクトルの
形式で表示され、各ベクトルのビットまたはサブフィー
ルドは2つの保留中命令セット内の対応する命令の物理
ロケーションに論理的に対応している。従って、8個の
ベクトルが制御ライン502を経由してキャリー・チェ
ッカ492へ送られる。この場合、各ベクトルは、対応
する命令がプロセッサ状況ワードのキャリー・ビットに
作用を及ぼしているか、あるいはそれに依存しているか
を指定している。8個のベクトルが各命令の特定の内容
と機能ユニット要件を示すために制御ライン510を経
由して送られる。8個のベクトルが制御ライン506を
経由して送られ、8個の保留中命令の各々によって使用
されたレジスタ参照を指定している。これらのベクトル
はプロセッサ・サイクル1が終了する前に送られる。
【0243】2)キャリー・チェッカ・ユニットの詳細 キャリー・チェッカ・ユニット492は図14に示すオ
ペレーションのデータ依存関係フェーズ期間の間に依存
関係検査ユニット494と並列に動作する。キャリー・
チェッカ・ユニット492は好適アーキテクチャ100
では順列組合せ理論に基づくロジックとして実現されて
いる。従って、キャリー・チェッカ・ユニット492に
よるオペレーションの各繰返し時に、命令がプロセッサ
状態レジスタのキヤリー・フラグを変更したかどうかに
ついて8個の命令すべてが考慮される。これが必要とさ
れるのは、その前の命令によって設定されたキャリー・
ビットの状況に依存する命令を順序外で実行することを
可能にするためである。制御ライン504上に送出され
た制御信号により、キャリー・チェッカ・ユニット49
2は、キャリー・フラグに対する先行命令の実行に依存
する特定の命令を識別することができる。
【0244】さらに、キャリー・チェッカ・ユニット4
92は8個の保留中命令の各々についてキャリー・ビッ
トの一時的コピーをもっている。キャリー・ビットを変
更していない命令については、キャリー・チェッカ・ユ
ニット492はプログラム命令ストリームの順序でキャ
リー・ビットを次の命令に伝える。従って、順序外で実
行され、キャリー・ビットを変更する命令を実行させる
ことが可能であり、さらに、その順序外で実行される命
令に依存する後続の命令も、キャリー・ビットを変更す
る命令のあとに置かれていても、実行することが可能で
ある。さらに、キャリー・ビットがキャリー・チェッカ
・ユニット492によって維持されているので、これら
の命令の退避以前に例外が起こったとき、キャリー・チ
ェッカ・ユニットは内部一時キャリー・ビット・レジス
タをクリアするだけでよいことから、順序外で実行する
ことが容易になる。その結果、プロセッサ状況レジスタ
は、順序外で実行される命令の実行による影響を受けな
い。キャリー・チェッカ・ユニット492が維持してい
る一時キャリー・ビット・レジスタは、順序外で実行さ
れる各命令が完了すると更新される。順序外で実行され
る命令が退避されると、プログラム命令ストリームの中
で最後に退避された命令に対応するキャリー・ビットは
プロセッサ状況レジスタのキャリー・ビット・ロケーシ
ョンヘ転送される。
【0245】3)データ依存関係チェッカ・ユニットの
詳細 データ依存関係チェッカ・ユニット494はEデコード
・ユニット490から制御ライン506を経由して8個
のレジスタ参照識別ベクトルを受け取る。各レジスタの
参照は32個のレジスタを一度に1つを識別するのに適
した5ビット値と、“A”、“B”またはブール・レジ
スタ・セット内に置かれているレジスタ・バンクを識別
する2ビット値によって示されている。浮動小数点レジ
スタ・セットは“B”レジスタ・セットとも呼ばれる。
各命令は最高3つまでのレジスタ参照フィールドをもつ
ことができる。2つのソース・レジスタ・フィールドと
1つの宛先レジスタ・フィールドである。ある種の命
令、特にレジスタ間移動命令は、宛先レジスタを指定し
ている場合があっても、Eデコード・ユニット490に
よって認識される命令ビット・フィールドは、実際に作
成される出力データがないことを意味している場合があ
る。むしろ、命令の実行は、プロセツサ状況レジスタの
値の変更を判断することだけを目的としている。
【0246】データ依存関係チェッカ494も好適アー
キテクチャ100において純然たる組合せロジック(p
urecombinatorial logic)で実
現されているが、これはプログラム命令ストリーム内に
後に現れる命令のソース・レジスタ参照と相対的に前に
置かれた命令の宛先レジスタ参照との間の依存関係を同
時に判断するように動作する。ビット配列は、どの命令
が他の命令に依存するかを識別するだけでなく、各依存
関係がどのレジスタに基づいて生じたかを識別するデー
タ依存関係チェッカ494によって作られる。
【0247】キャリーとレジスタ・データの依存関係
は、第2プロセッサ・サイクルの開始直後に判別され
る。
【0248】4)レジスタ改名ユニットの詳細 レジスタ改名ユニット496は8個の保留中の命令すべ
てのレジスタ参照のIDを制御ライン506を経由し
て、レジスタ依存関係を制御ライン508を経由して受
け取る。8個のエレメントからのマトリックスも制御ラ
イン542を経由して受け取る。これらのエレメント
は、保留中命令の現セットの中でどの命令が実行された
か(完了したか)を示している。この情報から、レジス
タ改名ユニット496は制御信号の8エレメント配列を
制御ライン512を経由して命令発行ユニット498へ
送る。このようにして送られた制御情報は、現セットの
データ依存関係が判別された場合に、まだ実行されてい
ない現在保留中の命令のうちどの命令の実行が可能にな
ったかについてレジスタ改名ユニット496が行った判
断を反映している。レジスタ改名ユニット496は実行
のために同時に出される最高6個までの命令を識別した
選択制御信号をライン516を経由して受信する。つま
り、2個の整数命令、2個の浮動小数点命令および2個
のブール命令である。
【0249】レジスタ改名ユニット496はバス518
を経由してレジスタ・ファイル配列472へ送られた制
御信号を通して、識別された命令を実行する際にアクセ
スするソース・レジスタを選択するという、もう1つの
機能を備えている。順序外で実行される命令の宛先レジ
スタは対応するデータ経路の一時バッファ612、68
0、728に置かれているものとして選択される。順序
内で実行される命令は完了すると退避され、その結果デ
ータはレジスタ・ファイル614、684、732にス
トアされていく。ソース・レジスタの選択は、レジスタ
が以前に宛先として選択され、対応する以前の命令がま
だ退避されていないかどうかによって決まる。そのよう
な場合には、ソース・レジスタは対応する一時バッファ
612、680、728から選択される。以前の命令が
退避されていた場合は、対応するレジスタ・ファイル6
14、684、732のレジスタが選択される。その結
果、レジスタ改名ユニット496は、順序外で実行され
る命令の場合には、レジスタ・ファイル・レジスタの参
照を一時バッフア・レジスタの参照に実効的に置き換え
るように動作する。
【0250】アーキテクチャ100によれば、一時バッ
ファ612、680、728は対応するレジスタ・ファ
イル配列のレジスタ構造と重複していない。むしろ、8
個の保留命令の各々に対して1つの宛先レジスタ・スロ
ットが用意されている。その結果、一時バッファ宛先レ
ジスタ参照の置換は、保留レジスタ・セット内の対応す
る命令のロケーションによって判断される。そのあとの
ソース・レジスタ参照はソース依存関係が発生した命令
に対してデータ依存関係チェッカ494によって識別さ
れる。従って、一時バッファ・レジスタ内の宛先スロッ
トはレジスタ改名ユニット496によって容易に判断す
ることが可能である。
【0251】5)命令発行ユニットの詳細 命令発行ユニット498は発行できる命令のセットをレ
ジスタ改名ユニット496の出力とEデコード・ユニッ
ト490によって識別された命令の機能要件に基づいて
判断する。命令発行ユニット498は制御ライン514
を経由して報告された機能ユニット4780-n の各々の
状況に基づいてこの判断を行う。従って、命令発行ユニ
ット498は発行すべき使用可能な命令セットをレジス
タ改名ユニット496から受信すると、オペレーション
を開始する。各命令を実行するためにレジスタ・ファイ
ルヘのアクセスが必要であるとすると、命令発行ユニッ
ト498は現在命令を実行中の機能ユニット4980-n
が使用可能であることを予想する。レジスタ改名ユニッ
ト496へ発行すべき命令を判別する際の遅延を最小に
するために、命令発行ユニット498は専用の組合せロ
ジックで実現されている。
【0252】発行すべき命令を判別すると、レジスタ改
名ユニット496はレジスタ・ファイルヘのアクセスを
開始し、このアクセスは第3プロセッサ・サイクルP2
が終了するまで続けられる。プロセッサ・サイクルP3
が開始すると、命令発行ユニット498は、「Exec
ute 0」で示すように1つまたは2つ以上の機能ユ
ニット4780-n によるオペレーションを開始し、レジ
スタ・ファイル配列472から送られてきたソース・デ
ータを受信して処理する。
【0253】代表例として、アーキテクチャ100で処
理される大部分の命令は1プロセッサ・サイクルで機能
ユニットを通して実行される。しかし、一部の命令は、
「Execute 1」で示すように、同時に出された
命令を完了するのに複数のプロセッサ・サイクルを必要
とする。Execute 0命令とExecute1命
令は、例えば、それぞれALUと浮動小数点乗算機能ユ
ニットに実行させることができる。ALU機能ユニット
は、図14に示すように、1プロセッサ・サイクル内で
出力データを発生し、この出力データはラッチしておく
だけで、第5プロセッサ・サイクルP4 時に別の命令を
実行する際に使用することができる。浮動小数点乗算機
能ユニットは内部パイプライン化機能ユニットにするこ
とが好ましい。従って、次のプロセッサ・サイクルで別
の浮動小数点命令を出すことができる。しかし、最初の
命令の結果はデータに依存するプロセッサ・サイクル数
の間使用することができない。図14に示す命令は、機
能ユニットでの処理を完了するためには、3プロセッサ
・サイクルを必要とする。
【0254】各プロセッサ・サイクルの間に、命令発行
ユニット498の機能は繰り返される。その結果、現在
の保留中の命令セットの状況と機能ユニット4780-n
の全セットの使用可能状況は各プロセッサ・サイクルの
間に再評価される。従って、最適条件のとき、好適アー
キテクチャ100はプロセッサ・サイクルごとに最高6
個までの命令を実行することができる。しかし、代表的
な命令ミックスから得られる総平均実行命令数は、1プ
ロセッサ・サイクル当たり1.5個ないし2.0個であ
る。
【0255】命令発行ユニット498の機能で最後に考
慮すべきことは、このユニットがトラップ条件の処理と
特定命令の実行に関与することである。トラップ条件を
発生するためには、まだ退避されていないすペての命令
をIEU104からクリアする必要がある。このような
事態は、算術演算エラーに応答して機能ユニット478
0-n のいずれからか、あるいは例えば、違法命令をデコ
ードしたときにEデコード・ユニット490から、外部
割込みを受信し、それが割込み要求/受信確認制御ライ
ン340を経由してIEU104へ中継されたのに応答
して、起こることがある。トラップ条件が発生したと
き、命令発行ユニット498は現在IEU104で保留
されているすべての非退避命令を中止または無効にする
ことを受け持つ。同時に退避できない命令はすべて無効
にされる。この結果は、プログラム命令ストリームを順
序内で実行する従来の方式に対して割込みを正確に発生
させるために不可欠である。IEU104がトラップ処
理プログラム・ルーチンの実行を開始する準備状態にな
ると、命令発行ユニット498は制御ライン340を経
由するリターン制御信号によって割込みの受信を確認す
る。また、従来の純然たる順序内ルーチンにおいてある
命令が実行される前に変更されたプロセッサ状態ビット
に基づいて、その命令に対する例外条件が認識される可
能性を防止するために、命令発行ユニット498はPS
Rを変更する可能性のあるすべての命令(特殊移動やト
ラップからのリターンなど)が厳格に順序内で実行され
るようにすることを受け持つ。
【0256】プログラム制御の流れを変更するある種の
命令は、Iデコード・ユニット262によって判別され
ない。この種の命令には、サブルーチン・リターン、プ
ロシージャ命令からのリターン、トラップからのリター
ンがある。命令発行ユニット498は判別制御信号をI
EUリターン制御ライン350を経由してIFU102
へ送る。特殊レジスタ412のうち対応するものが選択
されて、コール命令の実行時、トラップの発生時または
プロシージャ命令の出現時に存在していたIF_PC実
行アドレスを出力する。
【0257】6)完了制御ユニットの詳細 完了制御ユニット540は機能ユニット4780-n をモ
ニタして、現在のオペレーションの完了状況を調べる。
好適アーキテクチャ100では、完了制御ユニット54
0は各機能ユニットによるオペレーションの完了を予想
して、現在保留中の命令セットの中の各命令の実行状況
を示した完了ベクトルを、機能ユニット4780-n によ
る命令の実行完了よりも約半プロセッサ・サイクル前に
レジスタ改名ユニット496、バイパス制御ユニット5
20および退避制御ユニット500へ送る。これによ
り、命令発行ユニット498はレジスタ改名ユニット4
96を通して、実行を完了する機能ユニットを次の命令
発行サイクルに対して使用可能な資源として考慮するこ
とができる。バイパス制御ユニット520は、機能ユニ
ットから出力されたデータをバイパス・ユニット474
を通るようにバイパスする準備を行うことができる。最
後に、退避制御ユニット500は、機能ユニツト478
0-n からレジスタ・ファイル配列472ヘデータを転送
するのと同時に対応する命令を退避するように動作す
る。
【0258】7)退避制御ユニットの詳細 完了制御ユニット540から送られた命令完了ベクトル
のほかに、退避制御ユニット500はEデコード・ユニ
ット490から出力された最も古い命令セットをモニタ
する。命令ストリーム順序の中の各命令に完了制御ユニ
ット540によって完了の印(マーク)がつけられる
と、退避制御ユニット500は、制御ライン534上に
送出された制御信号を通して、一時バッファ・スロット
からレジスタ・ファイル配列472内の対応する命令が
指定したファイル・レジスタ・ロケーションヘデータを
転送することを指示する。1つまたは複数の命令が同時
に退避されると、PC Inc/Size制御信号が制
御ライン344上に送出される。各プロセッサ・サイク
ルごとに最高4個までの命令を退避することが可能であ
る。命令セット全体が退避されると、IFIFO読取り
制御信号が制御ライン342上に送出されてIFIFO
264を前進させる。
【0259】8)制御フロー制御ユニットの詳細 制御フロー制御ユニット528は、現在の保留中命令セ
ット内の制御フロー命令が解決されたかどうか、さら
に、その結果ブランチが行われたかどうかを指定した情
報をIFU102に絶えず与えるように動作する。制御
フロー制御ユニット528は、Eデコード・ユニット4
90による制御フロー・ブランチ命令の識別情報を制御
ライン510を経由して取得する。現在のレジスタ依存
関係のセットは、制御ライン536を経由してデータ依
存関係チェッカ・ユニット494から制御フロー制御ユ
ニット528へ送られるので、制御フロー制御ユニット
528はブランチ命令の結果が依存関係に拘束されてい
るかどうか、あるいは判明しているかどうかを判断する
ことができる。レジスタ改名ユニット496からバス5
18を経由して送られたレジスタの参照は制御フロー制
御ユニット528によってモニタされ、ブランチ決定を
定義するブール・レジスタが判別される。従って、ブラ
ンチ決定は、制御フロー命令の順序外の実行以前でも判
断することが可能である。
【0260】制御フロー命令の実行と同時に、バイパス
・ユニット472は、制御フロー1と制御フロー2の制
御ライン750、752からなる制御ライン530を経
由して制御フローの結果を制御フロー制御ユニット52
8へ送るように指示される。最後に、制御フロー制御ユ
ニット528は各々が8ビットの2個のベクトルを制御
ライン348を経由してIFU102へ連続して送る。
これらのベクトルは、ベクトル内のビットに対応する論
理ロケーションに置かれた命令が解決されたか否か、お
よびその結果ブランチが行われたか否かを定義してい
る。
【0261】好適アーキテクチャ100では、制御フロ
ー制御ユニット528は制御ユニット528への入力制
御信号を受けて連続的に動作する組合せロジックとして
実現されている。
【0262】9)バイパス制御ユニットの詳細 命令発行ユニット498はバイパス制御ユニット520
と緊密に協働して、レジスタ・ファイル配列472と機
能ユニット4780-n 間のデータのルーチング(経路指
定)を制御する。バイパス制御ユニット520は、図1
4に示すオペレーションのレジスタ・ファイル・アクセ
ス、出力およびストア・フェーズと関連して動作する。
レジスタ・ファイル・アクセスの間には、バイパス制御
ユニット520は命令の実行の出力フェーズの間に書き
込まれている途中にあるレジスタ・ファイル配列472
内の宛先レジスタのアクセスを、制御ライン522を通
して認識することができる。この場合、バイパス制御ユ
ニット520は、バイパスして機能ユニット配布バス4
80に返すように、機能ユニット出力バス482上に送
出されたデータを選択することを指示する。バイパス・
ユニット520に対する制御は、制御ライン542を通
して命令発行ユニット498によって行われる。
【0263】IV.仮想メモリ制御ユニット VMU108のインタフェース定義は図15に示されて
いる。VMU108は主にVMU制御ロジック・ユニッ
ト800と内容アドレス(content addre
ssable)メモリ(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の下位14ビットとして得られる。
【0264】タグに一致するものがテーブル索引バッフ
ァ844に見つからないとVMU不一致が通知される。
この場合は、MAU112に維持されている完全ページ
・テーブル・データ構造をアクセスする従来のハッシュ
・アルゴリズム848を採用したVMU高速トラップ処
理ルーチンを実行させる必要がある。このページ・テー
ブル850はアーキテクチャ100によって現在使用中
のすべてのメモリ・ページのエントリを含んでいる。ハ
ッシュ・アルゴリズム848は、現在の仮想ページ変換
操作を満たすために必要なページ・テーブル・エントリ
を判別する。これらのページ・テーブル・エントリはM
AU112からレジスタ・セット“A”のトラップ・レ
ジスタヘロードされ、そのあと特殊レジスタ移動命令に
よってテーブル索引バッファ844へ転送される。例外
処理ルーチンから戻ると、VMU不一致例外を引き起こ
した命令はIEU104によって再実行される。仮想ア
ドレスから物理アドレスヘの変換操作は例外を引き起こ
さないで完了するはずである。
【0265】VMU制御ロジック800はIFU102
およびIEU104とのデュアル・インタフェースとな
る。準備信号は制御ライン822を経由してIEU10
4へ送られ、VMU108がアドレス変換のために使用
可能であることを通知する。好適実施例では、VMU1
08は常にIFU102の変換要求を受け付ける準備状
態にある。IFU102およびIEU104は共に、制
御ライン328および804を経由して要求を提示する
ことができる。好適アーキテクチャ100では、IFU
は優先してVMU108をアクセスすることができる。
その結果、ビジー(使用中)制御ライン820は1つだ
けがIEU104に出力される。
【0266】IFU102およびIEU104は共に、
スペースIDと仮想ページ番号フィールドを、それぞ
れ、制御ライン326および808を経由してVMU制
御ロジック800へ送る。さらに、IEU104は読み
書き制御信号を制御ライン806で出力する。この制御
信号は、参照された仮想メモリのメモリ・アクセス保護
属性を変更するために、そのアドレスをロード・オペレ
ーションに使用すべきか、ストア・オペレーションに使
用すべきを必要に応じて定義している。仮想アドレスの
スペースIDと仮想ページ・フィールドはCAMユニッ
ト802に渡されて、実際の変換操作が行われる。ペー
ジ・オフセットとExIDフィールドは最終的にIEU
104から直接にCCU106へ送られる。物理ページ
と要求IDフィールドはアドレス・ライン836を経由
してCAMユニット802へ送られる。テーブル索引バ
ッファに一致するものが見つかると、ヒット・ラインと
制御出力ライン830を経由してVMU制御ロジック・
ユニット800に通知される。その結果の18ビット長
の物理アドレスはアドレス出力ライン824上に出力さ
れる。
【0267】VMU制御ロジック・ユニット800は、
ライン830からヒットおよび制御出力制御信号を受け
ると、仮想メモリ不一致と仮想メモリ例外制御信号をラ
イン334、332上に出力する。仮想メモリ変換不一
致とは、テーブル索引バッファ844内のページ・テー
ブルIDと一致しなかったことを意味する。その他の変
換エラーはすべて仮想メモリ例外として報告される。
【0268】最後に、CAMユニット802内のデータ
・テーブルは特殊レジスタ間移動命令をIEU104が
実行することによって変更することができる。読み書
き、レジスタ選択、リセット、ロードおよびクリア制御
信号はIEU104から制御ライン810、812、8
14、816、818を経由して出力される。CAMユ
ニット・レジスタに書くべきデータは特殊アドレス・デ
ータ・バス354に接続されたアドレス・バス808を
経由してIEU104からVMU制御ロジック・ユニッ
ト800によって受信される。このデータは初期設定、
レジスタ選択、および読み書き制御信号を制御する制御
信号と同時にバス836を経由してCAMユニット80
2へ転送される。その結果、CAMユニット802内の
データ・レジスタは、より高レベルのオペレーティング
・システムで定義されているコンテキスト・スイッチを
処理するとき必要になるストアのための読出しを含め
て、アーキテクチャ100の動的オペレーションの間に
必要に応じて即座に書き出すことができる。
【0269】V.キャッシュ制御ユニット CCU106のデータ・インタフェースに対する制御は
図17に示されている。この場合も、IFU102とI
EU104用に別々のインタフェースが設けられてい
る。さらに、論理的に別個のインタフェースがCCU1
06に用意され、命令とデータ転送のためにMCU11
0と結ばれている。
【0270】IFUインタフェースはアドレス・ライン
324上に送出される物理ページ・アドレス、アドレス
・ライン824上に送出されるVMU変換ページ・アド
レス、および制御ライン294、296上を別々に転送
される要求IDからなっている。単方向データ転送バス
114は命令セット全体をIFU102と並列に転送す
るためのものである。最後に、読取り/使用中および準
備制御信号は制御ライン298、300、302を経由
してCCU106へ送られる。
【0271】同様に、物理アドレス全体は物理アドレス
・バス788を経由してIEU102へ送られる。要求
ExIDは制御ライン796を経由してIEU104の
ロード/ストア・ユニットとの間で別々に受渡される。
80ビット幅単方向データ・バスはCCU106からI
EU104に出力される。しかし、アーキテクチャ10
0の好適実施例では、下位の64ビットだけがIEU1
04によって使用される。全80ビット・データ転送バ
スをCCU106内で使用できるようにし、かつサポー
トしているのは、本アーキテクチャ100の引き続いて
の実行をサポートするためであり、浮動小数点データ経
路660を変更することによって、IEEE標準754
に準拠する浮動小数点のオペレーションをサポートす
る。
【0272】IEU制御インタフェースは要求、使用
中、準備、読み書きを通して、および制御信号784を
通して確立され、実質的には、IFU102によって使
用される対応する制御信号と同じである。例外は、ロー
ド・オペレーションとストア・オペレーションを区別す
るための読み書き制御信号が設けられていることであ
る。幅制御信号はIEU104による各CCU106へ
のアクセス時に転送されるバイト数を指定している。こ
れに対して、命令用キャッシュ132のすべてのアクセ
スは固定した128ビット幅データ・フェッチ・オペレ
ーションになっている。
【0273】CCU106は命令用キャッシュ132と
データ用キャッシュ134に対して従来とほぼ同じキャ
ッシュ制御機能を備えている。好適アーキテクチャ10
0では、命令用キャッシュ132は256個の128ビ
ット幅命令セットをストアする機能を備えた高速メモリ
になっている。データ用キャッシュ134は1024個
の32ビット幅ワードのデータをストアする機能を備え
ている。命令用キャッシュ132とデータ用キャッシュ
134の内容から即時に満足できない命令要求とデータ
要求はMCU110に渡される。命令用キャッシュがミ
スした場合は、28ビット幅物理アドレスがアドレス・
バス860を経由してMCU110に渡される。要求I
DおよびCCU106とMCU110のオペレーション
を調整するための追加制御信号は制御ライン862上に
送出される。MCU110がMAU112の必要な読取
りアクセスを調整すると、2つの連続する64ビット幅
データ転送が直接にMAU112から命令用キャッシュ
132へ行われる。2つの転送が必要になるのは、デー
タ・バス136が好適アーチキチャ100では、64ビ
ット幅バスになっているためである。要求したデータが
MCU110を通して返却されると、要求オペレーショ
ンの保留中に維持されていた要求IDも制御ライン86
2を経由してCCU106へ返却される。
【0274】データ用キャッシュ134とMCU110
との間のデータ転送オペレーションは、命令用キャッシ
ュの転送オペレーションとほぼ同じである。データ・ロ
ードとストア・オペレーションは単一バイトを参照でき
るので、全32ビット幅の物理アドレスがアドレス・バ
ス864を経由してMCU110へ送られる。インタフ
ェース制御信号と要求ExIDは制御ライン866を経
由して転送される。双方向の64ビット幅データ転送は
データ用キャッシュ・バス138を経由して行われる。
【0275】VI.要約および結論 高性能RISCをベースとしたマイクロプロセッサ・ア
ーキテクチャは以上に説明したとおりである。本発明の
アーキテクチャによれば、命令を順序外に実行すること
ができ、メインとターゲット命令ストリームのプリフェ
ッチ命令転送経路を別々に設け、およびプロシージャ命
令認識と専用プリフェッチ経路を設けることができる。
命令実行ユニットは最適化されているので、最適化され
た複数のデータ処理経路で整数、浮動小数点およびブー
ル演算をサポートすることができ、またそれぞれの一時
レジスタ・ファイルが設けられているので、容易に設定
されるマシン状態の状況を正確に維持しながら、順序外
の実行と命令取消しを容易に行うことができる。
【0276】従って、上述した説明では、本発明の好適
実施例を開示しているが、当業者にとって本発明の範囲
内で種々変更および改良することが可能であることは勿
論である。
【図面の簡単な説明】
【図1】 本発明を実施する好適実施例のマイクロプロ
セッサ・アーキテクチャを示す簡略ブロック図である。
【図2】 本発明に従って構築された命令フェッチ・ユ
ニットを示す詳細ブロック図である。
【図3】 本発明に従って構築されたプログラム・カウ
ンタ・ロジック・ユニットを示すブロック図である。
【図4】 プログラム・カウンタ・データと制御経路ロ
ジックを示す別の詳細ブロック図である。
【図5】 本発明の命令実行ユニットを示す簡略ブロッ
ク図である。
【図6】 (A)は本発明の好適実施例において使用さ
れているレジスタ・ファイル・アーキテクチャを示す簡
略ブロック図、(B)は本発明の好適実施例において使
用されている一時バッファ・レジスタ・ファイルの記憶
レジスタ形式を図形で示す図、(C)は本発明の命令F
IFOユニットの最後の2ステージに存在しているとき
の1次および2次命令セットを図形で示す図である。
【図7】 本発明の好適実施例に従って設けられた1次
整数レジスタ・セットの再構成可能ステート(状態)を
図形で示す図である。
【図8】 本発明の好適実施例に従って設けられた再構
成可能浮動小数点および2次整数レジスタ・セットを図
形で示す図である。
【図9】 本発明の好適実施例において設けられた3次
ブール・レジスタ・セットを図形で示す図である。
【図10】 本発明の好適実施例に従って構成された命
令実行ユニットの1次整数処理データ経路部分を示す詳
細ブロック図である。
【図11】 本発明の好適実施例に従って構成された命
令実行ユニットの1次浮動小数点データ経路部分を示す
詳細ブロック図である。
【図12】 本発明の好適実施例に従って構成された命
令実行ユニットのブール演算データ経鈷部分を示す詳細
ブロック図である。
【図13】 本発明の好適実施例に従って構成されたロ
ード/ストア・ユニットを示す詳細ブロック図である。
【図14】 本発明に従って複数の命令を実行する際
の、本発明の好適実施例の好ましいオペレーション・シ
ーケンスを示すタイミング図である。
【図15】 本究明の好適実施例に従って構成された仮
想メモリ制御ユニットを示す簡略ブロック図である。
【図16】 本発明の好適実施例で使用される仮想メモ
リ制御アルゴリズムを図形で示す図である。
【図17】 本発明の好適実施例で使用されるキャッシ
ュ制御ユニットを示す簡略ブロック図である。
【符号の説明】
100…アーキテクチャ、102…命令フェッチ・ユニ
ット(IFU)、104…命令実行ユニット(IE
U)、106…キャッシュ制御ユニット(CUU)、1
08…仮想メモリ・ユニット(VMU)、112…メモ
リ・アレイ・ユニット(MAU)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ミヤヤマ, ヨシユキ アメリカ合衆国 95050 カリフォルニア 州 サンタ クララ ランチョ マコーミ ック ブールバード 2171 (72)発明者 ガルク, サンジブ アメリカ合衆国 94539 カリフォルニア 州 フリーモント センティネル ドライ ブ 46820 (72)発明者 ハギワラ, ヤスアキ アメリカ合衆国 95050 カリフォルニア 州 サンタ クララ モンロー ストリー ト 2250 アパート 274 (72)発明者 ワン, ジョハネス アメリカ合衆国 94062 カリフォルニア 州 レッドウッド シティ キング スト リート 25 (72)発明者 トラン, クワン エイチ. アメリカ合衆国 95130 カリフォルニア 州 サン ノゼ メイフィールド アヴェ ニュー 2045

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 マイクロプロセッサで用いるための命令
    実行処理方法であって、メイン命令ストリームから命令
    を取り、命令をプリフェッチ・バッファのメイン・バッ
    ファに記憶するステップと、前記メイン・バッファから
    前記命令を実行するステップとを有し、前記メイン命令
    ストリーム内のプロシージャまたはブランチ・ターゲッ
    ト命令に対応して、(a)エミュレーションまたはブラ
    ンチ・ターゲット命令ストリームからさらに命令を取
    り、これらをプリフェッチ・バッファのプロシージャ・
    バッファに、またはプリフェッチ・バッファのターゲッ
    ト・バッファにそれぞれ記憶するステップと、(b)プ
    リフェッチしなくてもよいように、前記プロシージャま
    たはターゲット命令に続く前記メイン・バッファ内に前
    記命令を保持しながら、前記命令を実行するステップと
    を有し、前記メイン命令ストリームへの第1復帰アドレ
    スを指示し、前記メイン命令ストリーム内の所定の命令
    に関して発生する同期例外に対応して、(a)第1ハン
    ドラ命令ストリームをフェッチし、それをプリフェッチ
    ・バッファのプロシージャ・バッファに記憶するステッ
    プと、(b)命令を再フェッチしなくてもいいように、
    前記所定命令に続く前記メイン・バッファ内に前記命令
    を保持しながら、前記第1ハンドラ命令ストリームから
    の命令を実行して、前記メイン命令ストリームへの第2
    復帰アドレスを指示するステップとを有し、前記エミュ
    レーションまたは前記ブランチ・ターゲット命令ストリ
    ーム内の別の所定命令に関して発生する同期例外に対応
    して、(a)第2ハンドラ命令ストリームをフェッチ
    し、それをプリフェッチ・バッファのプロシージャ・バ
    ッファに記憶するステップと、(b)前記エミュレーシ
    ョンまたは前記ブランチ・ターゲット命令ストリームへ
    の第3復帰アドレスの指示、および前記メイン命令スト
    リームへの前記第3復帰アドレスの前記指示の両方を保
    持しながら、前記第2ハンドラ命令ストリームからの命
    令を実行するステップとを有することを特徴とする命令
    実行処理方法。
  2. 【請求項2】 さらに、前記第2ハンドラ命令ストリー
    ム内でのトラップ命令からの復帰に対応して、前記第2
    復帰アドレスで始まる前記メイン命令ストリームからの
    命令の実行を再開するステップと、前記第3ハンドラ命
    令ストリーム内でのトラップ命令からの復帰に対応し
    て、前記第3復帰アドレスで始まる前記エミュレーショ
    ン命令ストリームからの命令の実行を再開するステップ
    とを有することを特徴とする請求項1記載の命令実行処
    理方法。
  3. 【請求項3】 さらに、前記エミュレーション命令スト
    リーム内のプロシージャ命令からの復帰に対応して、前
    記第1復帰アドレスで始まる前記メイン命令ストリーム
    からの命令の実行を再開するステップを有することを特
    徴とする請求項1記載の命令実行処理方法。
JP11336927A 1999-11-29 1999-11-29 命令実行処理方法 Pending JP2000122865A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11336927A JP2000122865A (ja) 1999-11-29 1999-11-29 命令実行処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11336927A JP2000122865A (ja) 1999-11-29 1999-11-29 命令実行処理方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP50215493A Division JP3333196B2 (ja) 1991-07-08 1992-07-07 トラップ処理方法

Publications (1)

Publication Number Publication Date
JP2000122865A true JP2000122865A (ja) 2000-04-28

Family

ID=18303926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11336927A Pending JP2000122865A (ja) 1999-11-29 1999-11-29 命令実行処理方法

Country Status (1)

Country Link
JP (1) JP2000122865A (ja)

Similar Documents

Publication Publication Date Title
JP3552995B2 (ja) データ処理装置
JP3654139B2 (ja) スーパースカラーマイクロプロセッサ及びデータ処理装置
JP3441071B2 (ja) マイクロプロセッサ及びデータ処理装置
JP2000122865A (ja) 命令実行処理方法
JP2000122866A (ja) デ―タ処理装置
JP2000122867A (ja) トラップ処理方法
JP2000039996A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法
JP2000029697A (ja) ス―パ―スカラ処理装置、デ―タ処理方法及びコンピュ―タシステム
JP2000029698A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法