【発明の詳細な説明】
アーキテクチャ上の依存関係を隔離したRISC:マイクロプロセッサ・アーキ
テクチャ、舌 参照
以下に列挙した米国特許出願は本件特許出願と同時に米国特許出願され、係属中
のものであるが、これらの米国特許出願に開示されており、かつそれぞれ対応し
て出願された日本での特許出願に開示されている事項は、その出願番号を本明細
書で引用することにより本明細書の一部を構成するものとする。
1、発明の名称[高性能RISCマイクロブロセブロサ・アーキテクチャJ (
High−Performance RISCMicroprocessor
Architecture) 5MO57984MCF/GBR。
米国特許出願第07/727.006号、1991年7月8日出願、発明者Le
T、Nguyen他、およびこれに対応する特願平号。
2、発明の名称「拡張可能RISCマイクロプロセッサ・アーキテクチャJ (
Extensible RISCMicroprocessorArchite
cture) SMOS 7985 MCF/GBR,米国特許出願第07/7
27.058号、1991年7月8日出願、発明者Le T、Nguyen他、
およびこれに対応する特願平−3、発明の名称「複数型レジスタ・セットを採用
したRISCマイクロプロセッサ・アーキテクチャJ (RISCMicrop
rocessor Architecture ImplementingMu
ltiple Typed Register 5ets) SMOS 798
8 MCF/GBR/RCC,米国特許出願第07/726.773号、199
1年7月8日出願、発明者5anjiv Garg他、およびこれに対応する特
願平−号。
4、発明の名称「高速トラップと例外状態をインブリ、メントしたRISCマイ
クロプロセッサ・アーキテクチャJ (RISCMicroprocessor
ArchitectureImplementing Fast Trap
and Exception State)3MO37989MCF/GBR/
WSW、米国特許出願第07/726.942号、1991年7月8日出願、発
明者Le T、Nguyen他、およびこれに対応する特願平−号。
5、発明の名称「シングル・チップ・ページ・プリンタ・コントローラJ (S
ingle Chip Page Pr1nterController) S
MOS 7991 MCF/GBR/HKW、米国特許出願第07/726.9
29号、1991年7月8日出願、発明者Derek J、Lentz他、およ
びこれに対応する特願平−号。
6、発明の名称「複数の異種プロセッサをサポートすることのできるマイクロプ
ロセッサ・アーキテクチャJ (Microprocessor Archit
ecture Capable ofSupporting Multiple
Heterogeneous Processors)SMOS 7992
M(1:F/WMB、米国特許出願第07/726.893号、1991年7月
8日出願、発明者Derek J、Lentz他、およびこれに対応する特願平
−号。
1匪立11
1− fL玉立豆1
本発明は、マイクロプロセッサ・アーキテクチャに関し、さらに具体的には、異
なるマイクロプロセッサ要件を満足するように変更が容易化されたモジ−ニール
化マイクロプロセッサ・アーキテクチャに関する。
なお、本明細書の記述は本件出願の優先権の基礎たる米国特許出願07/726
.744号の明細書の記載に基づくものであって、当該米国特許出願の番号を参
照することによって当該米国特許出願の明細書の記載内容が本明細書の一部分を
構成するものとする。
2、乳11エユjL9
メーカがマイクロプロセッサを設計するとき、設計作業は新しい命令セットとア
ーキテクチャの定義から始めて、主要な機能ブロックとその相互接続関係を明確
化してい(のが代表的である。次に、機能ブロックの各々はロジック(論理)ま
たは回路レベルで設計され、定義した特定のマイクロプロセッサ・アーキテクチ
ャ用に最適化される。この作業全体は、新しいマイクロプロセッサを設計するた
びに最初から始められるのが代表的である。この作業は非常に時間がかかり、か
つエラーが発生しやすいために、製品化して市場に出すまでに長期間を要するの
で望ましくない。
一般的に、集積回路設計の分野では、設計者は新製品の設計を市場化するまでの
期間を短縮するために、作成して、使用することを試みている。これらは事前に
定義され、そして事前に設計された回路部分であり、設計者はコンピュータ支援
設計(CAD)システムでこれらを呼び出し、必要に応じて大規模統合化システ
ムに組み入れることが可能になっている。マクロセルと標準セルは、多(の場合
、個々のロジック・ゲートなどのSSI機能ブロックにも、RAMやPALなと
の一部のMSIやLSIブロックにも利用できるようになっている。これらの小
型化された機能ブロックは新しいマイクロプロセッサや他の回路を設計するとき
に利用すると便利であるが、製品化して市場に出すまでに要する全期間を大幅に
短縮する上では役立っていない。
いくつかの例では、確かに、マイクロプロセッサ全体、または少なくともマイク
ロプロセッサのビット・スライス部分は標準セルとしてすでに定義されている。
しかし、これらは、その応用が単一のマイクロプロセッサ・アーキテクチャおよ
びその若干の変形に限られている。命令セットと利用可能な資源は変更が容易で
ないことは確かである。種々のVLSI設計手法は、Weste他著rcMO3
VLSI設計の原理。システムの展望J (Principles of CM
OS VLSI Design、 A SystemsPerspective
)、 pp、 236−255 (1988)に説明されているが、これは本明
細書で引用することにより、本明細書の一部を構成するものとする。
l豆旦盟1
本発明によれば、マイクロプロセッサはモージュル方式で設計されているため、
マイクロプロセッサの主要機能部分を殆どあるいは全く変更しないで別のマイク
ロプロセッサ・アーキテクチャの設計に再使用できるようになっている。特に、
アーキテクチャはフロント・エンド部分とバック・エンド部分とに分割されてお
り、フロント・エンドは命令プロセッサ・ユニット(instruction
processor unit −IPU)を含み、バック・エンドは入出力(
Ilo)インタフェース・モジュールとメモリ・インタフェース・モジュールと
を含んでいる。フロント・エンド部分は、命令フェッチ・ユニット(instr
uction fetch unit −IFU)と命令実行ユニット(ins
truction execution unit −IELI)とを含んでい
ることがあり、場合によっては、アドレスを仮想形式から物理形式に変換するた
めの仮想メモリ・ユニット(virtual memory unit −VM
U)を含んでいることもある。他方、バック・エンド部分は、キャッシュ制御ユ
ニット(cache control unit −CCLI)およびCCUと
メモリとの間に接続されたメモリ制御ユニット(memory control
unit −MCU)を含んでいることもできる。バック・エンド部分は、フ
ロント・エンドから命令フェッチ要求に応答して、フェッチした命令情報をフロ
ント・エンドへ送り返す。そのあと、IPUはバック・エンドから返された命令
情報を、IPLI独自の命令セットに従い、IPLI独自の内部手法を用いて処
理する。IPUは、バック・エンドがどのような方法で命令をフェッチするかを
知っている必要がなく、また、バック・エンドはIPUがどのような方法で命令
を解釈するか、あるいはCCUに対するアドレスを生成するかを知っている必要
はない。バック・エンドはIPUからのデータ読み書き要求に応答することもで
きる。この場合も、IPUはバック・エンドがどのような方法で要求に従ってデ
ータを読み書きするか、あるいはデータがキャッシュされるかどうかを知ってい
る必要はない。同様に、バック・エンドはIPUから出された読み書き要求の目
的または用法を知っている必要はない。
以上から理解されるように、このモジュール設計手法を用いると、ある特定のマ
イクロプロセッサ・アーキテクチャ用に設計されたバック・エンド部分は、殆ど
変更を加えないで、別のマイクロプロセッサ・アーキテクチャを実現するために
使用することができ、この別のマイクロプロセッサ・アーキテクチャは最初のも
のと同じにする必要は全(ない。特に、全(異なる命令セットを実現するために
2つの異なるIPUを設計することが可能であり、その場合、異なる固定長また
は可変長の命令で構成し、アドレス指定方式を異なったものにすることさえ可能
である。バック・エンド部分を一度設計すれば、再設計する必要がないので、市
場化するまでの期間が大幅に短縮化されることになる。
同様に、2つの異なるバック・エンド部分を設計して、1つのフロント・エンド
部分と一緒に使用することができるので、ユーザには2つまたはそれ以上のパフ
ォーマンス・オプションが提供されることになる。
区1日と褒崖」d夏用
本発明の上記および他の利点と特徴は、添付図面を参照して下述する本発明の詳
細な説明から容易に理解されるはずであろう。なお、添付図面において、同種部
分には同一の参照符号を付して示しである。
第1図は、本発明を実施する好適実施例のマイクロプロセッサ・アーキテクチャ
を示す簡略ブロック図である。
第2図は、本発明に従って構築された命令フェッチ・ユニットを示す詳細ブロッ
ク図である。
第3図は、本発明に従って構築されたプログラム・カウンタ・ロジック・ユニッ
トを示すブロック図である。
第4図は、プログラム・カウンタ・データと制御経路ロジックを示す別の詳細ブ
ロック図である。
第5図は、本発明の命令実行ユニットを示す簡略ブロック図である。
第6a図は、本発明の好適実施例において使用されているレジスタ・ファイル・
アーキテクチャを示す簡略ブロック図である。
第6b図は、本発明の好適実施例において使用されている一時バッファ・レジス
タ・ファイルの記憶レジスタ形式を図形で示す図である。
第6c図は、本発明の命令FIFOユニットの最後の2ステージに存在している
ときの1次および2次命令セットを図形で示す図である。
第78図ないし第7c図は、本発明の好適実施例に従って設けられた1次整数レ
ジスタ・セットの再構成可能ステート(状態)を図形で示す図である。
第8図は、本発明の好適実施例に従って設けられた再構成可能浮動小数点および
2次整数レジスタ・セットを図形で示す図である。
第9図は、本発明の好適実施例において設けられた3次プール・レジスタ・セッ
トを図形で示す図である。
第1O図は、本発明の好適実施例に従って構成された命令実行ユニットの1次整
数処理データ経路部分を示す詳細ブロック図である。
第11図は、本発明の好適実施例に従って構成された命令実行ユニットの1次浮
動小数点データ経路部分を示す詳細ブロック図である。
第12図は、本発明の好適実施例に従って構成された命令実行ユニットのプール
演算データ経路部分を示す詳細ブロック図である。
第13図は、本発明の好適実施例に従って構成されたロード/ストア・ユニット
を示す詳細ブロック図である。
第14図は、本発明に従って複数の命令を実行する際の、本発明の好適実施例の
好ましいオペレーション・シーケンスを示すタイミング図である。
第15図は、本発明の好適実施例に従って構成された仮想メモリ制御ユニットを
示す簡略ブロック図である。
第16図は、本発明の好適実施例で使用される仮想メモリ制御アルゴリズムを図
形で示す図である。
第17図は、本発明の好適実施例で使用されるキャッシュ制御ユニットを示す簡
略ブロック図である。
第18図は、第1図に示したマイクロプロセッサ・アーキテクチャがフロント・
エンドとバック・エンドに分割されていることを示す図である。
第19図は、第18図に示したアーキテクチャと同じバック・エンド部分を使用
している別のマイクロプロセッサ・アーキテクチャを示すブロック図である。
11Δ1豊皇jl
■、 マイクロプロセッサ・アーキテクチャの概要、、、、、、、、、、、、、
、、、、、、1111、命令フェッチ・ユニット、1.、、、、、、 16A)
IFUデータ経路、、、、、、、、、、、、17C) IFU/IEU制御イ
ンタフェース10901、37D) PCロジック・ユニットの詳細、、、、、
、401) PFおよびExPC制御/データ・ユニットの詳細、、、、、、、
、、、、、、452) PC制御アルゴリズムの詳細、、、、55E)割込みお
よび例外の処理、、、、、、、、711)概要、、、、、、、、、、、、、、7
12)非同期割込み、、、、、、、、、、733) 同期例外、、、、、、、、
、、、、754) ハンドラ・ディスバッチと
6)トラップ一覧表、、、、、、、、、87II1.命令実行ユニット1,1.
、、、、、、、、 89A) IEUデータ経路の詳細、、、、、、、、、97
1) レジスタ・ファイルの詳細1.、.972)整数データ経路の詳細、 、
、 、 、 、 1093)浮動小数点データ経路の詳細、 、 、 115
4) プール・レジスタ・データ
経路の詳細、 、 、 、 、 、 、 、 、 、 118B) ロード/ス
トア制御ユニット、 、 、 、 、 、 125C) IEU制御経路の詳細
、 、 、 、 、 、 、 、 、 、 1291) Eデコード・ユニット
の詳細、 、 、 1302) キャリー・チェッカ・ユニットの3) データ
依存関係チェッカ・ユニットの詳細・・・・・・・・・・・・1364) レジ
スタ改名ユニットの詳細、 、 、 1375)命令発行ユニットの詳細、 、
、 、 、 1396)完了制御ユニットの詳細、 、 、 、 、 143
7)退避制御ユニットの詳細、 、 、 、 、 1448)制御フロー制御ユ
ニットの詳細、 、 1449) バイパス制御ユニットの詳細、 、 、 1
46IV、仮想メモリ制御ユニット、 、 、 、 、 、 、 、 、 14
7■、 キャッシュ制御ユニット、 、 、 、 、 、 、 、 、 150
V1.設計のモジュール性、 、 、 、 、 、 、 、 、 、 、 15
31、マイクロプロセッサ・アーキテクチャの第1図は、本発明のアーキテクチ
ャ100の概要を示すものである。命令フェッチ・ユニット(IFU) 102
と命令実行ユニット(IEU) 104は、アーキテクチャ100の中心となる
機能要素である。仮想メモリ・ユニット(VMU) 108 、キャッシュ制御
ユニット(CUU) 106 、およびメモリ制御ユニット(MCU) 110
は、IFU 102とIEU 104の機能を直接にサポートするためのもので
ある。また、メモリ・アレイ・ユニット(MAU) 112は基本的要素として
、アーキテクチャ100を動作させるためのものである。もっとも、MAD 1
12はアーキテクチャ100の1つの一体的なコンポーネントとして直接的に存
在しない。つまり、本発明の好適実施例では、IFU 102、 IEU 10
4、VMU 108、CCU 106、およびMCU 110は従来の0.8ミ
クロン設計ルールの低電力CMOSプロセスを利用してシングル・シリコン・チ
ップ上に実装され、約1,200,000個のトランジスタから構成されている
。アーキテクチャ100の標準プロセッサまたはシステムのクロック速度は40
MHzである。しかし、本発明の好適実施例によれば、プロセッサの内部クロ
ック速度は160 MHzである。
IFU 102の基本的役割は命令をフェッチし、IEU104による実行が保
留されている間命令をバッファに置いておき、一般的には、次の命令をフェッチ
するとき使用される次の仮想アドレスを計算することである。
本発明の好適実施例では、各命令は長さが32ビツトに固定されている。命令セ
ット、つまり、4個の命令からなる「パケットJ (bucket)は、CCU
106内の命令用キャッシュ132から128ビット幅の命令バス114を経
由してIFU 102によって同時にフェッチされる。命令セットの転送は、制
御ライン116経由で送られてきた制御信号によって調整されて、IFU 10
2と600106間で行われる。フェッチされる命令セットの仮想アドレスは、
IFU仲裁、制御およびアドレスを兼ねたバス118経由でIFU 102から
出力され、さらに12口104とVMU 10g間を結合する仲裁、制御および
アドレス共用バ、ス120上に送出される。VMU 108へのアクセスの仲裁
(arbitration)は、IFU 102とIEU 104の両方がVM
U 108を共通の共用資源として利用することがら行われる。本発明の好適実
施例では、仮想アドレスの物理ページ内のアドレスを定義する下位ビットは、I
FU102から制御ライン116を経由して直接にキャッシュ制御ユニット10
6へ転送される。IFU 102から与えられる仮想アドレスの仮想上位ビット
はバス118,120のアドレス部分によってVMU 10gへ送られ、そこで
対応する物理ページ・アドレスに変換される。IFU 102では、この物理ペ
ージ・アドレスは、変換要求がVMU108に出されたあと内部プロセッサ・ク
ロック・サイクルの172の間に、VMLI 10gからアドレス制御ライン1
22経由で直接にキャッシュ制御ユニット106へ転送される。
IFU 102によってフェッチされた命令ストリームの方は命令ストリーム・
バス124経由でIEU104に渡される。制御信号は、制御ライン126を介
してIFLI 102とIEU 104間でやりとりされる。さらに、ある種の
命令フェッチ・アドレス、例えば、IEU 104内に存在するレジスタ・ファ
イルへのアクセスを必要とするアドレスは、制御ライン12ε内のターゲット・
アドレス・リターン・バスを経由してIFLIへ送り返される。
IEU 104は、CCU 106内に設けられたデータ用キャッシュ134と
の間で80ビツト幅双方向データ・バス130を通してデータをストアし、デー
タを取り出す。IEUがデータ・アクセスするときの物理アドレス全体は制御バ
ス128のアドレス部分によってCCU 106へ渡される。また、制御バス1
28を通して、データ転送を管理するための制御信号をIEU 104とCCU
106との間でやりとりすることもできる。IEU 104は、仮想データ・
アドレスをCCU 106へ渡すのに適した物理データ・アドレスに変更するた
めの資源としてVMU108を使用する。データ・アドレスの仮想化部分は、仲
裁、制御およびアドレス・バス120を経由してVMU108へ渡される。IF
U 102に対するオペレーションと異なり、VMU 10gは対応する物理ア
ドレスをバス120経由でIELI 104へ返却する。アーキテクチャ100
の好適実施例では、IEU 104は物理アドレスを使用して、ロード/ストア
・オペレーションが正しいプログラム・ストリーム順序で行われていることを確
かめている。
CCIJ 106は、物理アドレスで定義したデータ要求を命令用キャッシュ1
32とデータ用キャッシュ134のどちらか該当する方から満足できるかどうか
を判断する従来のハイレベル機能を備えている。アクセス要求が命令用キャッシ
ュ132またはデータ用キャッシュ134ヘアクセスすることで正しく満足でき
る場合は、CCU106はデータ・バス114.128を経由するデータ転送を
調整して、その転送を行う。
データ・アクセス要求が命令用キャッシュ132またはデータ用キャッシュ13
4から満足できない場合は、CCU 106は対応する物理アドレスをMCU
110へ渡し、MAU 112が要求しているのは読取りアクセスであるか書込
みアクセスであるかを判別し、各要求ごとにCCU106のソースまたは宛先キ
ャッシュ132.134を識別するのに十分な制御情報および要求オペレーショ
ンをIFU 102またはIEU 104から出された最終的データ要求と関係
づけるための追加識別情報も一緒に渡される。
MC[J 110は、好ましくは、ボート・スイッチ・ユニット142を備えて
おり、このユニットは単方向データ・バス136によってCCU 106の命令
用キャッシュ132に接続され、双方向データ・バス138によってデータ用キ
ャッシュ134に接続されている。ボート・スイッチ142は基本的には、大き
なマルチプレクサであり、制御バス140から得た物理アドレスを複数のボート
P。P、 146゜−0のいずれかへ送ることを可能にし、また、ボートからデ
ータ・バス136.138へのデータの双方向転送を可能にする。MCU 11
0によって処理される各メモリ・アクセス要求は、MAU 112をアクセスす
るとき要求されるメイン・システム・メモリ・バス162へのアクセスを仲裁す
る目的でボート146゜−0の1つと関連づけられる。データ転送の接続が確立
されると、MCUは制御情報を制御バス140経由でCCU 106に渡して、
ボート141およびボート146゜−0のうち対応する1つを経由して命令用キ
ャッシュ132またはデータ用キャッシュ134とMAU 112との間でデー
タを転送することを開始する。アーキテクチャ100の好適実施例では、MCU
110は、実際には、CCU 106とMAU 112間を転送する途中にあ
るデータをストアまたはラッチしない。このようにしたのは、転送の待ち時間を
最小にし、MCU 110に1つだけ存在するデータを追跡または管理しないで
すむようにするためである。
Il、紅1ヱ王ユ天二三三二上
命令フェッチ・ユニット102の主要エレメントを第2図に示す。これらのエレ
メントのオペレーションおよび相互関係を理解しやすくするために、以下では、
これらのエレメントがIFUデータ経路と制御経路に関与する場合を考慮して説
明する。
A) IF旦二乙二11藤
IFUデータ経路は、命令セットを受け取ってブリフェッチ・バッファ260に
一時的にストアしてお(命令バス114から始まる。ブリフェッチ・バッファ2
60からの命令セットはニブコード・ユニット262を通ってIFIFOユニッ
ト264へ渡される。命令PIF0264の最後の2ステージにストアされた命
令セットは、データ・バス278.280を通してIEU 104に連続的に取
り出し、て利用することができる。
ブリフェッチ・バッファ・ユニット260は、一度に1つの命令セットを命令バ
ス114から受け取る。完全な128ビット幅命令セットは、一般に、ブリフェ
ッチ・バッファ260のメイン・バッファ(MBUF)188部分の4つの12
8ビット幅プリフェッチ・バッファ・ロケーションの1つに並列に書き込まれる
。追加の命令セットは最高4つまで同じように、2つの128ビット幅ターゲッ
ト・バッファ(TBUF) 190のブリフェッチ・バッファ・ロケーションに
または2つの128ビット幅プロシージャ・バッファ(EBUF) 192のブ
リフェッチ・バッファ・ロケーションに書き込むことが可能である。好適アーキ
テクチャ100では、MBUF 18g、TBUF 190またはEBUF19
2内のブリフェッチ・バッファ・ロケーションのいずれかに置かれている命令セ
ットは、ブリフェッチ・バッファ出力バス196へ転送することが可能である。
さらに、直接フォールスルー(fall through)命令セット・バス1
94は、命令バス114をブリフェッチ・バッファ出力バス196と直接に接続
することによって、MBUF 188、TBUF 190およびEBUF 19
2をバイパスするためのものである。
好適アーキテクチャ100では、MBUF 18gは名目的またはメイン命令ス
トリーム中の命令セットをバッファするために利用される。TBUF 190は
、試行的なターゲット・ブランチ命令ストリームからブリフェッチした命令セッ
トをバッファするために利用される。その結果、ブリフェッチ・バッファ・ユニ
ット260を通して、条件付きブランチ命令のあとに置かれている可能性のある
両方の命令ストリームをブリフェッチすることができる。この機能により、MA
U 112の待ち時間は長くなるとしても、少な(ともCCU 112への以後
のアクセス待ち時間がなくなるので、条件付きブランチ命令の解決時にどの命令
ストリームが最終的に選択されるかに関係なく、条件付きブランチ命令のあとに
置かれた正しい次の命令セットを得て、実行することができる。本発明の好適ア
ーキテクチャ100では、MBUF 188とTBUF 190があるために、
命令フェッチ・ユニット102は、現れる可能性のある両方の命令ストリームを
ブリフェッチすることができ、命令実行ユニット104に関連して以下に説明す
るように、正しいと想定された命令ストリームを引き続き実行することができる
。条件付きブランチ命令が解決されたとき、正しい命令ストリームがプリフェッ
チされて、MBUF 18gに入れられた場合は、TBUF 190に残ってい
る命令セットは無効にされるだけである。他方、正しい命令ストリームの命令セ
ットがTBUF 190に存在する場合は、命令プリフェッチ・バッファ・ユニ
ット260を通して、これらの命令セットがTBUF 190から直接に、並行
にMBUF 18g内のそれぞれのバッファ・ロケーションへ転送される。それ
以前にMBUF 188にストアされた命令セットは、TBUF190から転送
された命令セットを重ね書きすることによって、事実上無効にされる。
MBUFロケーションへ転送するTBUF命令セットがなければ、そのロケーシ
ョンには無効の印が付けられるだけである。
同様に、EBUF 192は、ブリフェッチ・バッファ260を経由する別の代
替プリフェッチ経路となるものである。EBUF 192は、好ましくは、MB
UF 18g命令ストリームに現れた単一の命令、つまり、「プロシージャ」命
令で指定されたオペレーションを実現するために使用される代替命令ストリーム
をブリフェッチする際に利用される。このようにすると、複雑な命令や拡張され
た命令はソフトウェア・ルーチンまたはプロシージャを通して実現することがで
き、すでにブリフェッチされてMBUF 188に入れられた命令ストリームを
乱すことな(ブリフェッチ・バッファ・ユニット260を通して処理することが
できる。一般的には、本発明によれば、最初にTBUF190に現れたプロシー
ジャ命令を処理することができるが、プロシージャ命令ストリームのブリフェッ
チは保留され、以前に現れた保留中の条件付きブランチ命令ストリームがすべて
解決される。これにより、プロシージャ命令ストリームに現れた条件付きブラン
チ命令は、TBUF 190の使用を通して矛盾な(処理されることになる。従
って、プロシージャ・ストリームでブランチが行われる場合は、ターゲット命令
セットはすでにブリフェッチされてTBUF 190に入れられているので、E
BUF 192へ並列に転送することができる。
最後に、MBUF 18g、TBUF 190およびEBUF 192の各々は
ブリフェッチ・バッファ出力バス196に接続され、ブリフェッチ・ユニットに
よってストアされた命令セットを出力バス196上に送出するようになっている
。さらに、バス194を通過するフローは、命令セットを命令バス114から直
接に出力バス196へ転送するためのものである。
好適アーキテクチャ100では、MBUF 188゜TBUF 190、EBU
F 192内のブリフェッチ・バッファは直接的にはFIFO構造を構成してい
ない。その代わりに、どのバッファ・ロケーションも出力バス196に接続され
ているので、命令用キャッシュ132から取り出された命令セットのプリフェッ
チ順序に大幅な自由度をもたせることができる。つまり、命令フェッチ・二ニッ
ト102は命令ストリームに一定順序で並んだ命令順に命令セットを判断して、
要求するのが一般的になっている。しかし、命令セットがrFU 102へ返さ
れるときの順序は、要求したある命令セットが使用可能で、CCU 106だけ
からアクセス可能であり、他の命令セットはMAD 102のアクセスを必要と
するような場合に合わせて、順序外に現れることも可能である。
命令セットは一定順序でブリフェッチ・バッファ・196上に出力される命令セ
ットの列は、一般的に、IFU 102から出された命令セット要求の順序に従
っていなければならない、順序内(in−order)の命令ストリーム列は、
例えば、ターゲット・ブランチ・ストリームの試行的実行に影響されるためであ
る。
ニブコード・ユニット262は、IFIFOユニット264のスペースが許すか
ぎり、ブリフェッチ・バッファ出力バス196から命令セットを、普通は1サイ
クルに1つの割合で受け取る。1つの命令セットを構成する4個の命令からなる
各セットは■デコード・ユニット262によって並列にデコードされる。関係の
制御フロー情報がIFU 102の制御経路部分のためにライン31gから抜き
出されている間は、命令セットの内容は■デコード・ユニット262によって変
更されない。
Iデコード・ユニット162からの命令セットはIFIFOユニット264の1
28ビット幅入カバス198上に送出される。内部的には、IFIFOユニット
264はマスタ/スレーブ・レジスタ200.204,208.212.216
.220.224の列から構成されている。各レジスタはその後続レジスタに接
続され、マスク・レジスタ200.208.216の内容がFIFOオペレーシ
ョンの内部プロセッサ・サイクルの前半時にスレーブ・レジスタ204、サイク
ル時に次の後続マスク・レジスタ208.216.224へ転送されるようにな
っている。入力バス198はマスク・レジスタ200.208.216.224
の各々の入力に接続され、FIFOオペレーションの後半サイクル時に命令セッ
トがIデコード・ユニット262からマスク・レジスタに直接にロードされるよ
うになっている。しかし、マスク・レジスタを入力バス19gからロードするこ
とは、IFIFOユニット264内でデータをFIFOシフトすることと同時に
行う必要はない。その結果、命令FIFOユニット264内にストアされた命令
セットの現在の深さに関係なく、さらに、IFIFOユニット264内でデータ
をFIFOシフトすることから独立して、入力バス198から連続的にIFIF
Oユニット264に入れていくことができる。
マスタ/スレーブ・レジスタ200.204.208.212.216.220
.224の各々は、128ビット幅命令セットの全ビットを並列にストアできる
ほかに、制御情報のいくつかのビットをそれぞれの制御レジスタ202,206
.210.214.218.222.226にストアすることもできる。好まし
くは、制御ビットのセットは、例外不一致(exception m1ss)と
例外修正(exception modify)(VMU) 、メモリなしくM
CU) 、ブランチ・バイアス、ストリーム、およびオフセット(IFU)から
なっている。この制御情報は、IFIFOマスク・レジスタに入力バス198か
ら新しい命令セットをロードするのと同時に、IFU102の制御経路部分から
発生する。そのあと、制御レジスタ情報は命令セットと並行してIFIFOユニ
ット263内で並列にシフトされる。
最後に、好適アーキテクチャ100では、 IFIFOユニット264からの命
令セットの出力は最後の2マスク・レジスタ216,224から同時に得られて
、IJucket−0とI−Bucketj命令セット出力バス278,280
上に送出される。さらに、対応する制御レジスタ情報がIBASVOとIBAS
V1制御フィールド−ハス282,284上に送出される。これらの出力バス2
78.282,280,284はすべてIEU 104へ通じる命令ストリーム
・バス124となるものである。
B)■L五里且1
1F0102制御経路は、プリフェッチ・バッファ・ユニット260、ニブコー
ド・ユニット262およびIFIFOユニット264のオペレーションを直接に
サポートする。
プリフェッチ制御ロジック・ユニット266は主にプリフェッチ・バッファ・ユ
ニット260のオペレーションを管理する。ブリフェッチ制御ロジック・ユニッ
ト266とIFU 102は一般的には、クロック・ライン290からシステム
・クロック信号を受信して、IFUのオペレーションとIEU 104、CCU
106およびVMU 10g (7)オペレーションとの同期をとるようにし
ている。命令セットを選択シテ、MBUF 188、TBUF 190およびE
BUF 192に多数の制御信号は、制御ライン316上に送出されて、ブリフ
ェッチ制御ロジック・ユニット266へ送られる。具体的には、フェッチ要求制
御信号はプリフェッチ・オペレーションを開始するために送出される。制御ライ
ン316上に送出される他の制御信号は要求したプリフェッチ・オペレーション
が目標とする宛先がMBUF 188であるか、TBtJF 190であるか、
EBUF 192であるかを指定している。プリフェッチ要求を受けて、ブリフ
ェッチ制御ロジック・ユニット266はID値を生成し、プリフェッチ要求をC
CU 106に通知できるかどうかを判断する。 ID値の生成は、循環4ビツ
ト・カウンタを使用して行われる。
4ビツト・カウンタの使用は、次の3つの点で重要である。第1は、最大9個ま
での命令セットをプリフェッチ・バッファ・ユニット260で一度にアクティブ
にできることである。すなわち、MBUF 18gでの4命令セツト、TBUF
190での2命令セツト、EBUF 192での命令セット、およびフロー・
スルー・バス194経由で直接にIデコード・ユニット262に渡される1命令
セツトである。第2は、命令セットが各々4バイトの4個の命令からなることで
ある。その結果、フェッチする命令を選択するどのアドレスも、その最下位4ビ
ットは余分になっている。最後は、プリフェッチ要求アドレスの最下位4ビツト
として挿入することで、プリフェッチ要求IDをプリフェッチ要求と容易に関連
づけることができることである。これにより、CCU106とのインタフェース
となるために必要な総アドレス数が減少することになる。
IFU 102から出されたプリフェッチ要求の順序に対して順序外で命令セッ
トがCCU 106から返却されるようにするために、アーキテクチャ100で
は、CCU 106からの命令セットの返却と一緒にID要求値が返されるよう
になっている。しかし、順序外の命令セット返却機能によると、16個の固有I
Dが使いつくされるおそれがある。条件付き命令の組合せが順序外で実行される
と、要求されたが、まだ返却されていない追加のプリフェッチと命令セットがあ
るので、ID値を再使用することが可能になる。従って、4ビツト・カウンタは
保持しておくのが好ましく、それ以降の命令セットのプリフェッチ要求が出され
ないことになり、その場合には、次のID値は、未処理のまま残っているフェッ
チ要求やそのときプリフェッチ・バッファ260に保留されている別の命令セッ
トに関連づけられたものとなる。
ブリフェッチ制御ロジック・ユニット266はプリフェッチ状況配列(アレイ)
268を直接に管理し、この配列はMBUF188、TBUF 190およびE
BUF 192内の各命令セット・プリフェッチ・バッファ・ロケーションに論
理的に対応する状況記憶ロケーションからなっている。ブリフェッチ制御ロジッ
ク・ユニット266は、選択およびデータ・ライン306を通して、データをス
キャンし、読み取って、状況レジスタ配列268に書き込むことができる。配列
268内では、メイン・バッファ・レジスタ308は、4個の4ビツトID値(
MB ID) 、4個の1ビツト予約フラグ(MB RES)および4個の1ビ
ツト有効フラグ(MB VAL)をストアしておくためのものであり、これらの
各々は論理ビット位置別にMBUF 180内のそれぞれの命令セット記憶ロケ
ーションに対応づけられている。同様に、ターゲット・バッファ・レジスタ31
0と拡張バッファ・レジスタ312は、それぞれ2個の4ビツトID値(TB
ID、 EB ID)、2個の1ビツト予約フラグ(TB RES、 EB R
ES)および2個の1ビツト有効フラグ(TB VAL、 EB VAL)をス
トアしてお(ためのものである。最後に、フロー・スルー状況レジスタ314は
1個の4ビツトID値(FT TD) 、1個の予約フラグ・ビット(FT R
ES)および1個の有効フラグ・ビット(FT VAL)をストアしておくため
のものであ状況レジスタ配列268が最初にスキャンされ、該当するときは、プ
リフェッチ要求がCCU 266に出されるたびにプリフェッチ制御ロジック・
ユニット266によって更新され、そのあとは、命令セットが返されるたびにス
キャンされ、更新される。具体的に説明すると1、制御ライン316からプリフ
ェッチ要求信号を受け取ると、プリフェッチ制御ロジック・ユニット216は現
在の循環カウンタ生成ID値をインクリメントし、状況レジスタ配列268をス
キャンして、使用可能なID値があるかどうか、ブリフェッチ要求信号で指定さ
れたタイプのプリフェッチ・バッファ・ロケーションが使用可能であるかどうか
を判断し、CCU IBUSY制御ライン300の状態を調べてCCU 106
がプリフェッチ要求を受け付けることができるかどうかを判断し、受付は可能な
らば、制御ライン298上のCCU IREAD制御信号を肯定し、インクリメ
ントされたID値をCCU 106と結ばれたCCU ID出力バス294上に
送出する。プリフェッチ記憶ロケーションは、対応する予約状況フラグと有効状
況フラグが共に偽である場合に使用が可能である。
プリフェッチIDは、要求がCCU 106に出されるのと並行して、MBLI
F 18B、丁BUF 190、またはEBUF 192内の目標とする記憶ロ
ケーションに対応する、状況レジスタ配列268内のID記憶ロケーションに書
き込まれる。さらに、対応する予約状況フラグが真にセットされCCU 106
が以前に要求された命令セットをIFU 102へ返却できるときは、CCU
IREADY信号が制御ライン302上で肯定され、対応する命令セットIDが
CCU ID制御ライン296上に送出される。プリフェッチ制御ロジック・ユ
ニット266は状況レジスタ配列268内のID値と予約フラグをスキャンして
、プリフェッチ・バッファ・ユニット260内の命令セットの目標とする宛先を
判別する。一致するものは1つだけが可能である。
判別されると、命令セットはバス114を経由してプリフェッチ・バッファ・ユ
ニット260内の該当ロケーションに書き込まれ、フロー・スルー要求と判別さ
れたときは、直接にIデコード・ユニット262に渡される。どちらの場合も、
対応する状況レジスタ配列に入っている有効状況フラグは真にセットされる。
PCロジック・ユニット270は、以下で詳しく説明するように、IFo 10
2全体を調ヘテ、MBUF I88、TBLIF190およびEBUF 192
命令ストリームの仮想アドレスを探し出す。この機能を実行する際、PCロジッ
ク・ブロック270はニブコード・ユニット262を制御すると同時に、そこか
ら動作する。具体的には、ニブコード・ユニット262によってデコードされ、
プログラムの命令ストリームのフローの変化と係わりがある可能性のある命令部
分はバス318を経由して制御フロー検出ユニット274へ送られると共に、直
接にPCロジック・ブロック270へ送られる。制御フロー検出ユニット274
は、条件付きブランチ命令と無条件ブランチ命令、コール型命令、ソフトウェア
・トラップ・プロシージャ命令および種々のリターン命令を含む制御フロー命令
を構成する各命令を、デコードされた命令セットの中から判別する。制御フロー
検出ユニット274は制御信号をライン322を経由してPCロジック・ユニッ
ト270へ送る。この制御信号は、■デコード・ユニット262に存在する命令
セット内の制御フロー命令のロケーションと種類を示している。これを受けて、
PCロジック・ユニット270は、一般的には、命令に入れられて、ライン31
8経由でPCロジック・ユニットへ転送されたデータから制御フロー命令のター
ゲット・アドレスを判断する。例えば、条件付きブランチ命令に対して先に実行
するためにブランチ・ロジック・バイアスが選択された場合は、PCロジック・
ユニット270は条件付きブランチ命令ターゲット・アドレスから命令セットを
ブリフェッチすることを指示し、別々に追跡することを開始する。従って、制御
ライン316上のプリフェッチ要求を次に肯定すると、PCロジック・ユニット
270はさらにライン316を経由する制御信号を肯定し、先行するプリフェッ
チ命令セットがMBUF18gまたはEBUF 192へ送られたものと想定す
ると、ブリフェッチの宛先をTBUF 190として選択する。プリフェッチ要
求をCCU 106へ渡すことができるとプリフェッチ制御ロジック・ユニット
266が判断すると、プリフェッチ制御ロジック・ユニット266は、この場合
もライン316を経由してイネーブル(許可)信号をPCロジック・ユニット2
70へ送って、ターゲット・アドレスのページ・オフセット部分 (CCU P
ADDR[13:4])をアドレス・ライン324を経由して直接にCCU 1
06へ渡すことを可能にする。これと同時に、PCロジック・ユニット270は
、新しい仮想ページから物理ページへの変換が必要な場合には、さらに、VMU
要求信号を制御ライン328を経由して、ターゲット・アドレスの仮想化部分(
VMU VADDRE13:x41)をアドレス・ライン326を経由してVM
LI 10gへ渡して、物理アドレスに変換する。ページ変換が必要でない場合
は、VMLI 10gによるオペレーションは必要でない。その代わりに、以前
の変換結果がバス122に接続された出力ラッチに保存されているので、CCU
106によって即時に使用される。
PCロジック・ユニット270が要求した仮想から物理への変換時にVMU 1
0gにオペレーション・エラーが起こると、VMU例外およびVMLI不一致制
御(miss control)ライン332.334を通して報告される。
VMU不一致制御ライン334は変換索引緩衝機構(translation
1ookaside buffer: TLB)の不一致を報告する。VMU例
外ライン332上のVMU例外制御信号は、他の例外が起こると発生する。いず
れの場合も、PCロジック・ユニットは、命令ストリーム中の現在の実行個所を
ストアしておき、そのあと無条件ブランチが行われたのと同じように、それを受
けて、エラー条件を診断し処理するための専用例外処理ルーチン命令ストリーム
をブリフェッチすることによって、エラー条件を処理する。VMU例外および不
一致制御信号は、発生した例外の種類を示しているので、PCロジック・ユニッ
ト270は対応する例外処理ルーチンのブリフェッチ・アドレスを判別すること
ができる。
IFIFO制御ロジック・ユニット272はIFIFOユニット264を直接に
サポートするためのものである。具体的には、PCロジック・ユニット270は
制御ライン336を経由して制御信号を出力し、命令セットがIデコード・ユニ
ット262から入力バス198経由で使用可能であることをIFIFO制御ロジ
ック・ユニット272に通知する。IFIFO制御ユニット272は命令セット
を受け取るために、屋も奥の使用可能なマスク・レジスタ200.208.21
6,224を選択する役割をもっている。マスク・レジスタ202.210.2
18.226の各々の出力は制御バス338を経由してIFIFO制御ユニット
272へ渡される。各マスク制御レジスタによってストアされる制御ビットは2
ビツト・バッファ・アドレス(IFJx−ADR) 、単一ストリーム・インジ
ケータ・ビット(IFJx−3TRM)、および単一有効ビット(IF−Bx−
VLD)からなっている。2ビツト・バッファ・アドレスは対応する命令セット
内の最初の有効命令を指定している。つまり、CCU 106から返された命令
セットは、例えば、ブランチ・オペレーションのターゲット命令が命令セット内
の最初の命令ロケーションに置かれるように境界合わせされていないことがある
。従って、バッファ・アドレス値は、実行の対象として考慮されストリーム・ビ
ットは、条件付き制御フロー命令を含んでいる命令セットのロケーションを示し
、IFIFOユニット264を通る命令のストリームに潜在的制御フローの変更
を引き起こすマーカとして使用されることを基本としている。メイン命令ストリ
ームは一般にストリーム・ビット値が0のときMBUF 18111を通して処
理される。例えば、相対条件付きブランチ命令が現れると、対応する命令セット
はマークがつけられ、ストリーム・ビット値が1となる。条件付命令セットはI
デコード・ユニット262によって検出される。条件付制御フロー命令は最高4
つまで命令セットに存在することができる。そのあと、命令セットはIFIFO
ユニット264の最も奥の使用可能なマスク・レジスタにストアされる。
条件付ブランチ命令のターゲット・アドレスを判断するために、現在のIEU
104の実行点アドレス(DPC) 、ストリーム・ビットで指定された条件付
命令が入っている命令セットの相対ロケーション、制御フロー検出ユニット27
4から得られた命令セット内の条件付命令ロケーション・オフセットは、制御ラ
イン31gを通して対応するブランチ命令フィールドから得た相対ブランチ・オ
フセット値と結合される。その結果はブランチ・ターゲットの仮想アドレスとな
り、PCロジック・ユニット270によってストアされる。ターゲット命令スト
リームの最初の命令セットは、このアドレスを使用してブリフェッチしてTBU
F 190に入れることができる。PCロジック・ユニット270のために事前
に選択されたブランチ・バイアスに応じて、IFIFOユニット264はMBU
F 188またはTBUF 190からロードが続けられる。1つまたは2つ以
上の条件付フロー命令を含んでいる2番目の命令セットが現れると、その命令セ
ットはストリーム・ビット値に0のマークが付けられる。2番目のターゲット・
ストリームはフェッチできないので、ターゲット・アドレスはPCロジック・ユ
ニット270によって計算されてストアされるが、ブリフェッチは行われない。
さらに、それ以降の命令セットはニブコード・ユニット262を通して処理する
ことができない。少な(とも、案件付きフロー制御向、3令を含んでいることが
分かった命令セットはl−′):も処理されない。
本発明の好適実施例では、PCロジック・ユニット270は、最高2個までの命
令セットに現れた条件付きフロー命令を最高8個まで管理することができる。ス
トリーム・ビットの変化でマークが付けられた2命令セツトの各々のターゲット
・アドレスは4つのアドレス・レジスタの配列にストアされ、ターゲット・アド
レスは命令セット内の対応する条件付きフロー命令のロケーションに対して論理
的位置に置かれる。
最初の順序内条件付きフロー命令のブランチ結果が解決されると、PCロジック
・ユニット270はブランチが行われる場合は、TBUF 190の内容をMB
UF 18gに転送し、TBUF 190の内容に無効のマークを付けるように
、ライン316上の制御信号によってブリフェッチ制御ユニット260に指示す
る。正しくない命令ストリーム、つまり、ブランチが行われない場合はターゲッ
ト・ストリームからの、ブランチが行われる場合はメイン・ストリームからの命
令セットがIFIFOユニット264があると、IFIFOユニット264から
クリアされる。2番目またはそれ以降の条件付きフロー制御命令が第1ストリー
ム・ビットのマークが付けられた命令セットに存在すると、その命令は統一され
た方法で処理される。すなわち、ターゲット・ストリームからの命令セットはブ
リフェッチされ、MBUF 188またはTBUF 190からの命令セットは
ブランチ・バイアスに応じてニブコード・ユニット262を通して処理され、条
件付きフロー命令が最終的に解決されると、正しくないストリーム命令セットが
rFIFoユニット264からクリアされる。
IFIFOユニット264から正しくないストリーム命令がクリアされたとき、
2番目の条件付きフロー命令がIFIFOユニット264に残っていて、最初の
条件付きフロー命令セットにそれ以降の条件付きフロー命令が含まれていないと
、第2ストリーム・ビットのマークが付、いた命令セットのターゲット・アドレ
スはアドレス・レジスタの最初の配列にプロモートされる。いずれの場合も、条
件付きフロー命令を含んでいる次の命令セットは■デコード・ユニット262を
通して評価することが可能になる。従って、ストリーム・ビットをトグルとして
使用すると、ブランチ・ターゲット・アドレスを計算する目的のために、また、
ブランチ・バイアスが特定の条件付きフロー制御命令では正しくなかったとあと
で判断された場合に、それより上をクリアすべき命令セット・ロケーションにマ
ークを付ける目的のために、潜在的制御フローの変化にマークを付けておき、r
FIFOユニット264を通して追跡することができる。
命令セットをマスク・レジスタから実際にクリアするのではなく、IFIFO制
御ロジック・ユニット272はIFIFOユニット264の対応するマスク・レ
ジスタの制御レジスタに入っている有効ビット・フラグをリセットするだけであ
る。このクリア・オペレーションはライン336に送出される制御信号でPCロ
ジック・ユニット270によって開始される。マスク制御レジスタ202゜21
0.218,226の各々の入力は状況バス230を通してIFIFO制御ロジ
ック・ユニット272が直接にアクセスすることができる。好適実施例のアーキ
テクチャ100では、これらのマスク制御レジスタ202.210.218.2
26内のビットは、IFIFOユニット264によるデータ・シフト・オペレー
ションと並行してまたは独立してIFIFO制御ユニット272によってセット
することが可能である。この機能により、IEU 104のオペレーションと非
同期に、命令セットをマスク・レジスタ200.208.216.224のいず
かに書き込み、対応する状況情報をマスク制御レジスタ202.210.218
.226に書き込むことができる。
最後に、制御および状況バス230上の追加の制御ラインはrFIFoユニット
264のIFIFOオペレーションを可能にし、指示する。IFIFOシフトは
、制御ライン336を通してPCロジック・ユニット270から出力されたシフ
ト要求制御信号を受けてIFIFOユニット264によって行われる。IFIF
O制御ユニット272は、命令セットを受け入れるマスク・レジスタ200.2
08.216゜224が使用可能であると、制御信号をライン316を経由して
プリフェッチ制御ユニット266に送って、ブリフェッチ・バッファ260から
次の該当命令セットを転送することを要求する。命令セットが転送されると、配
列266内の対応する有効ビットがリセットされる。
C) IFU/IEU湘′インタフェースrFIJ 102とIE[J 104
とを結ぶ制御インタフェースは制御バス126によって提供される。この制御バ
ス126はPCロジック・ユニット270に接続され、複数の制御、アドレスお
よび特殊データ・ラインから構成されている。割込み要求と受信確認制御信号を
制御ライン340を経由して渡すことにより、IFtl 102は割込みオペレ
ーションを通知し、IEU 104との同期をとることができる。外部で発生し
た割込み信号はライン292経由でロジック・ユニット270へ送られる。これ
を受けて、割込み要求制御信号がライン340上に送出されると、IEU 10
4は試行的に実行された命令をキャンセルする。割込みの内容に関する情報は、
割込み情報ライン341を通してやりとりされる。IEU 104がPCロジッ
ク・ユニット270によって判断された割込みサービス・ルーチンのアドレスか
らプリフェッチされた命令の受信を開始する準備状態になると、IEU 104
はライン340上の割込み受信確認制御信号を肯定する。IFU102によって
ブリフェッチされた割込みサービス・ルーチンがそのあと開始される。
IFIFO読取り(IFIFORD)制御信号はIEU 104から出力され、
最も奥のマスク・レジスタ224に存在する命令セットが実行を完了したことお
よび次の命令セットが必要であることを通知する。この制御信号を受けると、P
Cロジック・ユニット270はIFIFOユニット264でIFIFOシフト・
オペレーションを実行するようにIFIFO制御ロジック・ユニット272に指
示する。
PCインクリメント要求とサイズ値(PCING/5IZE)は制御ライン34
4上に送出されて、現在のプログラム・カウンタ値を命令の対応するサイズ数だ
け更新するようにPCロジック・ユニット270に指示する。これにより、PC
ロジック・ユニット270は、現在のプログラム命令ストリーム中の最初の順序
的実行命令のロケーションを正確に指した個所に実行プログラム・カウンタ(D
PC)を維持することができる。
ターゲット・アドレス(TARGET ADDR)はアドレス・ライン346を
経由してPCロジック・ユニット270に返される。このターゲット・アドレス
は、IEU 104のレジスタ・ファイルにストアされているデータによって決
まるブランチ命令の仮想ターゲット・アドレスである。従って、ターゲット・ア
ドレスを計算するためにIEU 104のオペレーションが必要である。
制御フロー結果(CF REStlLT)制御信号は制御ライン348を経由し
てPCロジック・ユニット270へ送られて、現在保留されている条件付きブラ
ンチ命令が解決されたかどうか、その結果がブランチによるものなのか、ブラン
チによらないものなのかを示している。これらの制御信号に基づいて、PCロジ
ック・ユニット270は、条件付きフロー命令の実行の結果として、プリフェッ
チ・バッファ260とIFIFOユニット264に置かれている命令セットのど
れをキャンセルする必要があるかを判断することができる。
いくつかのIEU命令リターン型制御信号(IEUリターン)が制御ライン35
0上を送出されて、IEU 104によっである命令が実行されたことをIEU
102に通知する。これらの命令には、プロシージャ命令からのリターン、ト
ラップからのリターンおよびサブルーチン・コールからのリターンがある。トラ
ップからのリターン命令はハードウェア割込み処理ルーチンとソフトウェア・ト
ラップ処理ルーチンで同じように使用される。サブルーチン・コールからのリタ
ーンもジャンプとリンク型コールと併用される。どの場合も、リターン制御信号
は、以前に割込みがかけられた命令ストリームに対して命令フェッチ・オペレー
ションを再開するようにIFU 102に通知するために送られる。これらの信
号をIEU 104から出すことにより、システム100の正確なオペレーショ
ンを維持することができる。[割込みがかけられた」命令ストリームの再開はリ
ターン命令の実行個所から行われる。
現命令実行PCアドレス(現IFjC)はアドレス・バス352を経由してIE
U 104へ送られる。このアドレス値(DPC)はIEU 104によって実
行される正確な命令を指定している。つまり、IEU 104が現在のIFJC
アドレスを通過した命令を先に試行的に実行している間は、このアドレスは、割
込み、例外、その他に正確なマシンの状態が分かっていることが必要な事象の発
生に対してアーキテクチャ100を正確に制御するために保持されていなければ
ならない。現在実行中の命令ストリームの中の正確なマシンの状態を進めること
が可能であるとIEU 104が判断すると、PCInc/5ize信号がIF
U 102に送られ、即時に現在のIF−PCアドレス値に反映される。
最後に、アドレスおよび双方向データ・バス354は特殊レジスタのデータを転
送するためのものである。
このデータはIEU 104によってIFU 102内の特殊レジスタに入れら
れ、あるいはそこから読み取られるようにプログラムすることが可能である。特
殊レジスタのデータは一般にIFU 102が使用できるように、 IEU10
4によってロードされ、あるいは計算される。
D) PCロジック・ユニットの;
PC制御ユニット362、割込み制御ユニット363、ブリフェッチPC制御ユ
ニット364および実行PC制御ユニット366を含むPCロジック・ユニット
270の詳細図は第3図に示されている。PC制御ユニット362はインタフェ
ース・バス126を通してブリフェッチ制御ユニット266 、 IFIFO制
御ロジック・ユニット272、およびIEU 104から制御信号を受けて、プ
リフェッチおよび実行PC制御ユニット364,366に対してタイミング制御
を行う。割込み制御ユニット363は、プリフェッチ・トラップ・アドレス・オ
フセットを判断してそれぞれのトラップ・タイプを処理する該当処理ルーチンを
選択することを含めて、割込みと例外の正確な管理を担当する。プリフェッチP
C制御ユニット364は、特に、トラップ処理とプロシージャ・ルーチン命令の
フローのためのリターン・アドレスをストアすることを含めて、プリフェッチ・
バッファ188.190.192をサポートするために必要なプログラム・カウ
ンタの管理を担当する。このオペレーションをサポートするために、プリフェッ
チPC制御ユニット364は、物理アドレス・バス・ライン324上のCCU
PADDERアドレスとアドレス・ライン326上のVMU VMADDRアド
レスを含むブリフェッチ仮想アドレスを生成することを担当する。その結果、プ
リフェッチPC制御ユニット364は、現在のプリフェッチPC仮想アドレス値
を保持することを担当する。
プリフェッチ・オペレーションは一般に制御ライン316上を送出された制御信
号を通してIFIFO制御ロジック・ユニット272によって開始される。これ
を受けて、PC制御ユニット362はい(つかの制御信号を生成して制御ライン
372上に出力し、プリフェッチPC制御ユニットを動作させて、アドレス・ラ
イン324.326上にPADDRアドレスと、必要に応じてVMADDRアド
レスを生成する。値が0から4までのインクリメント信号も制御ライン374上
に送出される場合もあるが、これは、PC制御ユニット362が現在のプリフェ
ッチ・アドレスから命令セットのフェッチを再実行しているか、一連のプリフェ
ッチ要求の中の2番目の要求に対して位置合わせを行っているか、プリフェッチ
のために次の全順次命令セットを選択しているか、によって決まる。最後に、現
在のプリフェッチ・アドレスPFjCがバス370上に送出され、実行PC制御
ユニット366へ渡される。
新しいプリフェッチ・アドレスは、いくつかのソースから発生する。アドレスの
主要なソースは、バス352経由で実行PC制御ユニット366から送出された
現在のIFjCアドレスである。原理的には、IF−PCアドレスからはリター
ン・アドレスが得られ、これは、初期コール、トラップまたはプロシージャ命令
が現れたとき、プリフェッチPC制御ユニットによってあとで使用されるもので
ある。IJPCアドレスは、これらの命令が現れるたびに、プリフェッチPC制
御ユニット364内のレジスタにストアされる。このようにして、PC制御ユニ
ット362は制御ライン350を通してIEUリターン信号を受けたとき、ブリ
フェッチPC制御ユニット364内のリターン・アドレス・レジスタを選択して
新しいプリフェッチ仮想アドレスを取り出すだけでよく、これによって元のプロ
グラム命令ストリームを再開する。
プリフェッチ・アドレスのもう1つのソースは、実行PC制御ユニット366か
ら相対ターゲット・アドレス・バス382を経由して、あるいはIEU 104
から絶対ターゲット・アドレス・バス346を経由して送出されたターゲット・
アドレス値である。相対ターゲット・アドレスとは、実行PC制御ユニット36
6によって直接に計算できるアドレスである。絶対ターゲット・アドレ、スは、
これらのターゲット・アドレスがIEUレジスタ・ファイルに入っているデータ
に依存するので、IEU 104に生成させる必要がある。ターゲット・アドレ
スはターゲット・アドレス・バス384を通ってブリフェッチPC制御ユニット
364へ送られ、ブリフェッチ仮想アドレスとして使用される。相対ターゲット
・アドレスを計算する際、対応するブランチ命令のオペランド部分もニブコード
・ユニット262からバス318のオペランド変位部分を経由して送られる。
ブリフェッチ仮想アドレスのもう1つのソースは、実行PC制御ユニット366
である。リターン・アドレス・バス352゛は、現在のI jPc値(DPC)
をプリフェッチPC制御ユニット364へ転送するためのものである。
このアドレスは、割込み、トラップ、その他にコールなどの制御フロー命令が命
令ストリーム内に現れた個所でリターン・アドレスとして使用される。プリフェ
ッチPC制御ユニット364は、新しい命令ストリームをプリフェッチするため
に解放される。PC制御ユニット362は、対応する割込みまたはトラップ処理
ルーチンまたはサブルーチンが実行されると、■2U104からライン350を
経由してIEUリターン信号を受け取る。他方、PC制御ユニット362はライ
ン372上のPFPC信号の1つを通して、およびライン350経由で送られて
きて実行されたリターン命令のIDに基づいて、現在のリターン仮想アドレスを
収めているレジスタを選択する。そのあと、このアドレスが使用されて、PCロ
ジック・ユニット270によるブリフェッチ・オペレーションを続行する。
最後に、ブリフェッチ仮想アドレスが取り出されるもう1つのソースは、特殊レ
ジスタ・アドレスおよびデータ・バス354である。IEU 104によって計
算またはロードされたアドレス値、または少なくともベース・アドレス値は、デ
ータとしてバス354を経由してプリフェッチPC制御ユニット364へ転送さ
れる。ベース・アドレスは、トラップ・アドレス・テーブル、高速トラップ・テ
ーブル、およびベース・プロシージャ命令ディスバッチ・テーブルのアドレスを
含んでいる。バス354を通して、プリフェッチおよびpci+I?iBユニッ
ト364,366内のレジスタの多くを読み取ることもできるので、マシンの状
態の対応する側面をIEIJ 104を通して処理することが可能である。
実行PC制御ユニット366は、PC制御ユニット362の制御を受けて、現在
のI FJCアドレス値を計算することを主な役割としている。この役割におい
て、実行PC制御ユニット366はPC制御ユニット362からExPC制御ラ
イン378を経由して送られてきた制御信号と、制御ライン380を経由して送
られてきたインクリメント/サイズ制御信号を受けて、IF、、−PCアドレス
を調整する。これらの制御信号は、主に、ライン342経由で送られてきたIF
IFO読取り制御信号とIEU 104から制御ライン344経由で送られてき
たPCインクリメント/サイズ値を受けると生成される。
1) PFおよびExPC11′ データ・ユニットの;細部4図は、プリフェ
ッチおよび実行PC制御ユニット364.366の詳細ブロック図である。これ
らのユニットは主に、レジスタ、インクリメンタ(増分器)その他の類似部品、
セレクタおよび加算器ブロックから構成されている。これらのブロック間のデー
タ転送を管理する制御□□は、PFPC制御ライン372 、ExPC制御ライ
ン378オよびインクリメント制御ライン374.380を通してPC制御ユニ
ット362によって行われる。説明を分かりやすくするために、第4図のブロッ
ク図には、これらの個々の制御ラインは示されていない。しかし、これらの制御
信号が以下に説明するように、これらのブロックへ送られることは勿論である。
ブリフェッチPC制御ユニット364の中心となるものはプリフェッチ・セレク
タ(PF−PC5EL)であり、これは現ブリフェッチ仮想アドレスの中央セレ
クタとして動作する。この現ブリフェッチ・アドレスはプリフェッチ・セレクタ
から出力バス392を通ってインクリメンタ・ユニット394へ送られて、次の
プリフェッチ・アドレスを生成する。この次のプリフェッチ・アドレスはインク
リメンタ出力バス396を通ってレジスタMBUF PFnPC398、TBU
F PFnPC400、およびEBLIF PFnPC402の並列配列へ送ら
れる。これらのレジスタ398゜400.402は実効的には次の命令ブリフェ
ッチ・アドレスをストアしているが、本発明の好適実施例によれば、別々のプリ
フェッチ・アドレスがMBUF tgg、TBIJF190、およびEBUF
192に保持されている。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゛を通して現I
FJC実行アドレスを受け入れることができる。レジスタ・ブロック412内の
リターンおよびベース・アドレス・レジスタにストアされたアドレス値はIEU
104から独立して読み書きすることができる。レジスタが選択され、値が特
殊レジスタ・アドレスおよびデータ・バス354を経由して転送される。
特殊レジスタ・ブロック412内のセレクタはPC制御ユニット362によって
制御され、レジスタ・ブロック412のレジスタにストアされたアドレスを特殊
レジスタ出力バス416上に送出して、プリフェッチ・セレクタ390へ渡すこ
とができる。リターン・アドレスは直接にプリフェッチ・セレクタ390へ渡さ
れる。ベース・アドレス値は割込み制御ユニット363から割込み ・オフセッ
ト・バス373経由で送られてきたオフセット値と結合される。ソースからバス
373゛経由でプリフェッチ・セレクタ390へ渡された特殊アドレスは、新し
いプリフェッチ命令ストリームの初期アドレスとして使用され、そのあとインク
リメンタ394とプリフェッチ・レジスタ398.400.402の1つを通る
アドレスのインクリメント・ループを続行することができる。。
プリフェッチ・セレクタ390へ送られるアドレスのもう1つのソースは、ター
ゲット・アドレス・レジスタ・ブロック414内のレジスタ配列である。ブロッ
ク414内のターゲット・レジスタには、好適実施例によれば、8つの潜在的ブ
ランチ・ターゲット・アドレスがストアされる。これらの8つの記憶ロケーショ
ンはIFIFOユニット264の最下位の2マスク・レジスタ216.224に
保持されている8つの潜在的に実行可能な命令に論理的に対応している。これら
の命令のどれでもが、および潜在的にはすべてが条件付きブランチ命令となり得
るので、ターゲット・レジスタ・ブロック414は、あらかじめ計算されたター
ゲット・アドレスをストアしておくので、TBUF 190を通してターゲット
命令ストリームをプリフェッチするために使用するのを待たせることができる。
特に、PC制御ユニット362がターゲット命令ストリームのプリフェッチを即
時に開始するように条件付きブランチ・バイアスがセットされると、ターゲット
・アドレスはターゲット・レジスタ・ブロック414からアドレス・バス418
を経由してプリフェッチ・セレクタ390へ送られる。インクリメンタ394に
よってインクリメントされたあと、アドレスはTBUF PFnPC400へ戻
されてストアされ、ターゲット命令ストリームをあとでプリフェッチするオペレ
ーションで使用される。別のブランチ命令がターゲット命令ストリームに現れる
と、その2番目のブランチのターゲット・アドレスが計算され、最初の条件付き
ブランチ命令が解決されて使用されるまでの間、ターゲット・レジスタ配列41
4にストアされている。
ターゲット・レジスタ・ブロック414にストアされた、計算でめたターゲット
・アドレスは、実行PC制御ユニット366内のターゲット・アドレス計算ユニ
ットからアドレス・ライン382を経由して、あるいはIEU 104から絶対
ターゲット・アドレス・バス346を経由して転送される。
ブリフェッチPF−PCセレクタ390を通って転送されるアドレス値は、完全
な32ビツト仮想アドレス値である。ページ・サイズは本発明の好適実施例では
、16にバイトに固定されており、最大ページ・オフセット・アドレス値[13
:O]に対応している。従って、現ブリフェッチ仮想ページ・アドレス[27:
14]に変化がなければ、VMUページの変換は不要である。プリフェッチ・セ
レクタ390内のコンパレータはそのことを検出する。VM口変換要求信号(V
MXLAT)は、インクリメントがページ境界をこえて行われたか、制御のフロ
ーが別のページ・アドレスへブランチしたために、仮想ページ・アドレスが変化
したとき、ライン372°を経由してPC制御ユニット362へ送られる。他方
、PC制御ユニット362はライン324上のCCU PADDRのほかに、V
lj VADDRアドレスをバッファ・ユニット420からライン326上に送
出し、該当の制御信号をVMU制御ライン326.328.330上に送出しテ
、VMU仮想ヘーシカラ物理ページへの変換を得るように指示する。ページ変換
が必要でない場合は、現物理ページ・アドレス[31:14] はバス122上
のVMU :L ニー ブト108ノ出力側のラッチによって保持される。
バス370上に送出された仮想アドレスはインクリメント制御ライン374から
送られてきた信号を受けて、インクリメンタ394によってインクリメントされ
る。
インクリメンタ394は、次の命令セットを選択するために、命令セットを表す
値(4命令または16バイト)だけインクリメントする。CCUユニット106
へ渡されるプリフェッチ・アドレスの下位4ビツトはゼロになっている。従って
、最初のブランチ・ターゲット命令セット内の実際のターゲット・アドレス命令
は最初の命令ロケーションに置かれていない場合がある。しかし、アドレスの下
位4ビツトはPC制御ユニット362へ送られるので、最初のブランチ命令のロ
ケーションをIFU 102が判別することができる。ターゲット・アドレスの
下位ビット[3: 21を2ビツト・バッファ・アドレスとして返して、位置合
わせされていないターゲット命令セットから実行すべき正しい最初の命令を選択
するための検出と処理は、新しい命令ストリーム、つまり、命令ストリームの中
の最初の非順次命令セット・アドレスの最初のブリフェッチのときだけ行われる
。命令セットの最初の命令のアドレスと命令セットをプリフェッチする際に使用
されるプリフェッチ・アドレスとの間の非位置合わせの関係は、現順次命令スト
リームが存続している間無視することができ、そのあとも無視される。
第4図に示した機能ブロックの残り部分は実行PC制御ユニット366を構成し
ている。本発明の好適実施例によれば、実行PC制御ユニット366は独立に機
能するプログラム・カウンタ・インクリメンタを独自に備えている。この機能の
中心となるのは実行セレクタ(DPC5EL) 430である。実行セレクタ4
30からアドレス・バス352゛上に出力されるアドレスはアーキテクチャ10
0の現在の実行アドレス(DPC)である。この実行アドレスは加算ユニット4
34へ送られる。ライン380上に送出されたインクリメント/サイズ制御信褥
は1から4までの命令インクリメント値を指定しており、この値は加算ユニット
434によってセレクタ430から得たアドレスに加えられる。加算器432が
出力ラッチ機能を実行するたびに、インクリメントされた次の実行アドレスがア
ドレス・ライン436を経て直接に実行セレクタ430に返され、次の命令イン
クリメント・サイクルで使用される。
初期実行アドレスとその後のすべての新しいストリーム・アドレスは、アドレス
・ライン440を経由して新ストリーム・レジスタ・ユニット438から得られ
る。新ストリーム・レジスタ・ユニット438は、プリフェッチ・セレクタ39
0からPFPCアドレス・バス370を経由して送られきた新しい現ブリフェッ
チ・アドレスを直接にアドレス・バス440に渡すことも、あとで使用するため
にストアしておくこともできる。つまり、ブリフェッチPC制御ユニット364
が新しい仮想アドレスからプリフェッチを開始することを判断した場合は、新し
いストリーム・アドレスは新ストリーム・レジスタ・ユニット438によって一
時的にストアされる。PC制御ユニット363は、プリフェッチと実行インクリ
メントの両サイクルに関与することによって、実行アドレスが新命令ストリーム
を開始した制御フロー命令に対応するプログラム実行個所までに達するまで新ス
トリーム・アドレスを新ストリーム・レジスタ438に置いてお(。新ストリー
ム・アドレスはそのあと新ストリーム・レジスタ・ユニット438から出力され
て実行セレクタ430へ送られ、新命令ストリーム内の実行アドレスを独立して
生成することを開始する。
本発明の好適実施例によれば、新ストリーム・レジスタ・ユニット438は2つ
の制御フロー命令ターゲット・アドレスをバッファリングする機能を備えている
。新ストリーム・アドレスを即時に取り出すことにより、殆ど待ち時間がな(実
行PC制御ユニット366を現実行アドレス列の生成から新実行アドレス・スト
リーム列の生成に切り替えることができる。
最後に、IJPCセレクタ(IF−PC5EL)は最終的に現実行点アドレスを
アドレス・バス352上に送出してIEU 104へ送るためのものである。I
F−PCセレクタ442への入力は実行セレクタ430または新ストリーム・レ
ジスタ・ユニット438から得た出力アドレスである。殆どの場合、IFjCセ
レクタ442はPC制御ユニット262の指示を受けて、実行セレクタ430か
ら出力された実行アドレスを選択する。しかし、新命令ストリームの実行開始の
ために使用される新仮想アドレスへ切り替える際の待ち時間をさらに短縮するた
めに、新ストリーム・レジスタ・ユニット438からの選択したアドレスをバイ
パスして、バス440経由で直接にIFjCセレクタ442へ送り、現IF−P
C実行アドレスとして得ることができる。
実行PC制御ユニット366は、すべての相対ブランチ・ターゲット・アドレス
を計算する機能を備えている。現実行点アドレスと新ストリーム・レジスタ・ユ
ニット438から得たアドレスは、アドレス・バス352’、 340を経由し
て制御フロー・セレクタ(CF−PC)446に渡される。その結果、PC制御
ユニット362は大幅な柔軟性をもって、ターゲット・アドレス計算の基となる
正確な初期アドレスを選択することができる。
この初期アドレス、つまり、ベース・アドレスはアドレス・バス454を経由し
てターゲット・アドレスA[、U450へ送られる。ターゲットALU 450
への入力となるもう1つの値は、制御フロー変位計算ユニット452からバス4
58経由で送られてくる。相対ブランチ命令は、アーキテクチャ100の好適実
施例によれば、新相対ターゲット・アドレスを指定した即値モード定数の形態を
した変位値を含んでいる。制御フロー変位計算ユニット452はIデコード・ユ
ニットのオペランド出力バス318から初めて得たオペランド変位値を受け取る
。最後に、オフセット・レジスタ値はライン456を経由してターゲット・アド
レスALU 450へ送られる。
オフセット・レジスタ448はPC制御ユニット362から制御ライン378゛
を経由してオフセット値を受け取る。
オフセット値の大きさはアドレス・ライン454上を送られるベース・アドレス
から相対ターゲット・アドレスを計算するときの現ブランチ命令のアドレスまで
のアドレス・オフセットに基づいてPC制御ユニット362によって判断される
。つまり、PC制御ユニット362は、IFIF(]制御ロジック・ユニット2
72を制御することによって、現実行点アドレスの命令(CPJCによって要求
された)と■デコード・ユニット262によって現在処理中の、従ってPCロジ
ック・ユニット270によって処理中の命令を分離している命令の個数を追跡し
て、その命令のターゲット・アドレスを判断する。
相対ターゲット・アドレスがターゲット・アドレスALU 450によって計算
されると、そのターゲット・アドレスはアドレス・バス382を通して対応する
ターゲット・レジスタ414に書き込まれる。
2) PC告1′アルゴリズムの打綿
1、メイン命令ストリームの処理: MBUF PFnPCl、1 次のメイン
・フロー・ブリフェッチ命令のアドレスはMBUF PFnPCにストアされる
。
1.2 制御フロー命令がないときは、32ピツト・インクリメンタはMBLI
F PFnPCに入っているアドレス値を、各ブリフェッチ・サイクルごとに1
6バイト(x16)だけ調整する。
1.3 無条件制御フロー命令がニブコードされると、命令セットに続いてフェ
ッチされたすべてのブリフェッチ・データはフラッシュされ、MBUF PFn
PCには、ターゲット・レジスタ・ユニット、PFJCセレクタおよびインクリ
メンタを通して、新しいメイン命令ストリーム・アドレスがロードされる。新し
いアドレスは新ストリーム・レジスタにもストアされる。
1.3.1 相対無条件制御フローのターゲット・アドレスはIFUが保持して
いる
レジスタ・データからと制御フロー
命令の後に置かれたオペランド・
データからIFUによって計算され
る。
1、3.2 絶対無条件制御フローのターゲット・アドレスはレジスタ基準値、
ベース・レジスタ値、およびイン
デックス・レジスタ値からIEUに
よって最終的に計算される。
1、3.2.1 命令ブリフェッチ・サイクルは絶対アドレス制御フロー命令に
対してターゲット・アドレスが
IEUから返されるまで停止す
る。命令実行サイクルは続行さ
れる。
1.4 無条件制御フロー命令から得た次のメイン・フロー・ブリフェッチ命令
のアドレスはバイパスされて、ターゲット・アドレス・レジスタ・ユニット、P
jPCセレクタおよびインクリメンタを紅白して送られ、最終的にMBLIF
PFnPCにストアされ、プリフェッチは1.2から続けられる。
2、プロシージャ命令ストリームの処理: EBUF PFnPC2,1プロシ
ージャ命令はメインまたはブランチ・ターゲット命令ストリームの中でブリフェ
ッチされる。ターゲット・ストリームの中でフェッチされた場合は、条件付き制
御フロー命令が解決され、プロシージャ命令がMBUFへ転送されるまでプロシ
ージャ・ストリームのプリフェッチを停止する。これにより、プロシージャ命令
ストリームに現れた条件付き制御フローを処理する際にTBUFを使用できる。
2、1.1 プロシージャ命令はプロシージャ命令ストリームの中に置いてはな
らな
い。つまり、プロシージャ命令はネ
ストしてはならない。プロシージャ
命令からリターンすると、実行は主
命令ストリームに戻る。ネストを可
能にするためには、ネストしたプロ
シージャ命令から別の専用リターン
が必要である。アーキテクチャはこ
の種の命令を容易にサポートできる
が、プロシージャ命令をネストする
機能があっても、アーキテクチャの
性能が向上する見込みはない。
2.1.2 メイン命令ストリームにおいては、第1および第2条件付き制御フ
ロー
命令を含む命令セットを含んでいる
プロシージャ命令ストリームは、第
1命令セツトの中の条件付き制御フ
ロー命令が解決し、第2条件付き制
御フロー命令セットがMBUFへ転送されるまで第2条件付き制御フロー命
令セットに対してブリフェッチを停
止する。
2.2 プロシージャ命令は、命令の即値モード・オペランド・フィールドとし
て含まれている相対オフセットによって、プロシージャ・ルーチンの開始アドレ
スを示している。
2.2.1 プロシージャ命令から得られたオフセット値はIFUに維持されて
いるプ
ロシージャ・ベース・アドレス
(PBR)レジスタに入っている値と結合される。このPBRレジスタは、特
殊レジスタの移動命令が実行される
と、特殊アドレスおよびデータ・バ
スを通して読み書き可能である。
2.3 プロシージャ命令が現れると、次のメイン命令ストリームIFJCアド
レスはDPCリターン・アドレス・レジスタにストアされ、プロセッサ・ステー
タス・レジスタ(PSR)内のプロシージャ進行中ビット(procedure
−in−progress bit)がセットされる。
2.4 プロシージャ・ストリームの開始アドレスはPBRレジスタ(プロシー
ジャ命令オペランド・オフセット値を加えて)からPFjCセレクタへ送られる
。
2.5 プロシージャ・ストリームの開始アドレスは新ストリーム・レジスタ・
ユニットとインクリメンタへ同時に送られ、(x16)だけインクリメントする
。インクリメントされたアドレスはそのあとEBUF PFnPCにストアされ
る。
2.6 制御フロー命令がないと、32ビツト・インクリメンタは各プロシージ
ャ命令プリフェッチ・サイクルごとにEBUF PFnPCに入っているアドレ
ス値を(x16)だけ調整する。
2.7 無条件制御フロー命令がニブコードされると、ブランチ命令のあとにフ
ェッチされたすべてのプリフェッチ・データはフラッシュされ、EBUF PF
nPCには新しいプロシージャ命令ストリーム・アドレスがロードされる。
2.7.1 相対無条件制御フロー命令のターゲット・アドレスはIFUに保持
され
ているレジスタ・データからと制御
フロー命令の即値モード・オペラン
ド・フィールド内に入っているオペ
ランド・データからIFUによって計
算される。
2.7.2 絶対無条件ブランチのターゲット・アドレスはレジスタ基準値、ベ
ー
ス・レジスタ値およびインデック
ス・レジスタ値からIEUによって計
算される。
2、7.2.1 命令ブリフェッチ・サイクルは絶対アドレス・ブランチに対し
てターゲット・アドレスがIEU
から返されるまで停止する。実
行サイクルは続行される。
2.8 次のプロシージャ・プリフェッチ命令セットのアドレスはEBUF P
FnPCにストアされ、プリフェッチは1.2から続けられる。
2.9 プロシージャ命令からのリターンがニブコードされると、プリフェッチ
がuPCレジスタにストアされているアドレスから続けられ、そのあと(x16
)だけインクリメントされ、あとでプリフェッチするためにMBUF PFnP
Cレジスタに返される。
3ブランチ命令ストリームの処理: TBUF PFnPC3,1MBLIF命
令ストリームの中の最初の命令セットに現れた条件付き制御フロー命令がニブコ
ードされると、ターゲット・アドレスはそのターゲット・アドレスが現アドレス
に対する相対アドレスならばIFUによって、絶対アドレスならばIFUによっ
て判断される。
3.2「ブランチを行うバイアス」の場合=3.2.1 ブランチが絶対アドレ
スに行われる場合は、ターゲット・アドレスが
IEUから返されるまで命令ブリ
フェッチ・サイクルを停止する。実
行サイクルは続行される。
3.2.2 PFJCセレクタとインクリメンタを紅白して転送することによっ
てバラ
ランチ・ターゲット・アドレスを
TBUF PFnPCにロードする。
3、2.3 ターゲット命令ストリームがプリフェッチされてTBUFに入れら
れたあとあとで実行するためにIFTPOに送られる。IFrFOとTBUFが
一杯になると、プリフェッチを停止する。
3.2.4 32ビツト・インクリメンタは各プリフェッチ・サイクルごとにT
BUF
PFnP(:に入っているアドレス値を(x16)だけ調整する。
3.2.5 ターゲット命令ストリーム内の2番目の命令セットに現れた条件付
き制
御フロー命令がニブコードされると
プリフェッチ・オペレーションを、
第1の(主)セット内のすべての条
件付きブランチ命令が解決されるま
で停止する(しかし、先に進んで、
相対ターゲット・アドレスを計算し
ターゲット・レジスタにストアす
る)。
3.2.6 最初の命令セット内の条件付きブランチを「行う」と解釈された場
合=
3、2.6.1 ブランチのソースがプロシージャ進行中ビットから判断され
たEBUF命令セットであったとき
はMBUFまたはEBUFに入っている最初の条件付きフロー命令セッ
トのあとに置かれた命令セット
をフラッシュする。
3、2.6.2 プロシージャ進行中ビットの状態に基づいて、TBUF PF
nPC値をMBUF PFnPCまたばEBUFへ転送する。
3、2.6.3 プロシージャ進行中ビットの状態に基づいて、ブリフェッチし
たTBUF命令をMBUFまたはEB[JFへ転送する。
3、2.6.4 2番目の条件付きブランチ命令セットがニブコードされていな
ければ、プロシージャ進行中
ビットの状態に基づいて、MBUF
またはEBUFブリフェッチ・オペ
レーションを続行する。
3.2.6.5 2番目の条件付きブランチ命令がニブコードされていれば、そ
の命令の処理を開始する(ス
テップ3.3.1へ進む)。
3.2.7 最初の条件付き命令セットの中の命令に対する条件付き制御を「行
わな
いJと解釈された場合;
3、2.7.1 ターゲット命令ストリームからの命令セットと命令のIFIF
Oと
IEUをフラッシュする。
3.2.7.2 MBUFまたはEBUFブリフェッチ・オペレーションを続行
する。
3.3「ブランチが行われないバイアス」の場合=3.3.1 命令をブリフェ
ッチしてMBUFに入れることを停止する。実行サイクルを
続ける。
3、3.1.1 最初の条件付き命令セットの中の条件付き制御フロー命令が相
対ならば、ターゲット・アドレ
スを計算し、ターゲット・レジ
スタにストアする。
3、3.1.2 最初の条件付き命令セットの中の条件付き制御フロー命令が絶
対ならば、IEUがターゲット・
アドレスを計算して、そのアド
レスをターゲット・レジスタに
返すまで待つ。
3、3.1.3 2番目の命令セットの中の条件付き制御フロー命令のエデコー
ドが行われると、最初の条件付
き命令セットの中の条件付き制
御フロー命令が解決されるまで
ブリフェッチ・オペレーション
を停止する。
3、3.2 最初の条件付きブランチのターゲット・アドレスが計算されると、
TBLIFPFnPCにロードし、メイン命令ストリームの実行と並行して命令
をプリ
フェッチしてTBUFに入れることを開始する。ターゲット命令セットは
ロードされない(従って、ブラン
チ・ターゲット命令は最初の命令
セットの中の各条件付き制御フロー
命令が解決されたとき用意されてい
る)。
3、3.3 最初のセットの中の条件付き制御フロー命令が「行われる」と解釈
され
た場合:
3、3.3.1 ブランチのソースがEBUF命令ストリームであるとプロシー
ジャ
進行中ビットの状態から判断さ
れると、MBUFまたはEBUFをフ
ラッシュし、最初の条件付きブ
ランチ命令セットのあとに置か
れたメイン・ストリームからの
命令のIFIFOとIEUをフラッ
シュする。
3.3.3.2 プロシージャ進行中ビットの状態から判断した通りに、 TB
UF
PFnPC値をMBUF PFnPCまたはEBUFへ転送する。
3.3.3.3 プロシージャ進行中ビットの状態から判断した通りに、ブリ
フェッチした丁BUF命令をMBUFまたはEBUFへ転送する。
3、3.3.4 プロシージャ進行中ビットの状態から判断した通りに、MBt
lFま
たはEBUFブリフェッチ・オペ
レーションを続行する。
3、3.4 最初のセット内の条件付き制御フロー命令が「行われない」と解析
さ
れた場合:
3.3.4.1 ターゲット命令ストリームからの命令セットのTBUFをブラ
ン
シュする。
3.3.4.2 2番目の条件付きブランチ命令がニブコードされなかった場合
は、プロシージャ進行中ビット
の状態から判断した通りに、
MBUFまたはEB[JFプリフェッチ・オペレーションを続ける。
3、:14.3 2番目の条件付きブランチ命令がニブコードされた場合は、そ
の命令の処理を開始する(ス
テップ3.4.1へ進む)。
4、割込み、例外およびトラップ命令
4.1トラツプは広義には次のものからなる。
4、1.1 ハードウェア割込み
4.1.1.1 非同期(外部)発生事象、内部または外部。
4.1.1.2 いつでも発生し、持続する。
4.1.1.3 アトミック(通常)命令間で優先順にサービスを受け、プロ
シージャ命令を一時中止する。
4.1.1.4 割込みハンドラの開始アドレスはトラップ・ハンドラ入口点の
事前定義テーブルまでのペクト
ル番号オフセットとして判断さ
4、1.2.1 非同期(外部)発生命令。
4.1.2.2 例外として実行されるソフトウェア命令。
4.1.2.3トラツプ・ハンドラの開始アドレスは、TBRまたはFTBレジ
ス
タにストアされたベース・アド
レス値と結合されたトラップ番
号オフセットから判断される。
4.1.3 例外
4、1.3.1 命令と同期して発生する事象。
4.1.3.2 命令の実行時に処理される。
4.1.3.3 例外の結果により、期待された命令とすべての後続実行命令は
キャンセルされる。
4.1.3.4 例外ハンドラの開始アドレスは、トラップ・ハンドラ入口点
の事前定義テーブルまでのト
ラップ番号オフセットから判断
される。
4.2トラツプ命令ストリーム・オペレーションはそのとき実行中の命令ストリ
ームとインラインで実行される。
4.3トラツプ処理ルーチンが次の割込み可能トラップの前にxPCアドレスを
セーブすることを条件に、トラップはネストが可能である。
そうしないと、現トラップ・オペレーションの完了前にトラップが現れると、マ
シンの状態が壊れることになる。
5、トラップ命令ストリームの処理: xPC5,1トラツプが現れたとき:
5、1.1 非同期割込みが起こると、そのとき実行中の命令の実行は一時中止
され
る。
5.1.2 同期例外が起こると、例外を起こした命令が実行されるとトラップ
が処
理される。
5.2トラツプが処理されたとき:
5、2.1 割込みは禁止される。
5、2.2 現在のIFjCアドレスはxPCトラップ状態リターン・アドレス
・レジス
タにストアされる。
5.2.3 IF4PCアドレスとそのあとのアドレスにあるIFIFOとMB
UFブリフェッチ・バッファはフラッシュされる。
5、2.4 アドレスIFJCとそのあとのアドレスの実行された命令とその命
令の結
果はIE[Jからフラッシュされる。
5.2.5 MBUF PFnPCに、トラップ・ハンドラ・ルーチンのアドレ
スがロードさ
5.2.5.1 トラップのソースは、特殊レジスタ群に入っているトラップ番
号によって判断されたトラフ
プ・タイプに応じて、TBRまた
はFTBレジスタをアドレス指定
している。
5、2.6 命令がブリフェッチされ、通常通りに実行するためにIFIFOに
入れられる。
5.2.7 トラップ・ルーチンの命令がそのあと実行される。
5、2.7.1 )ラップ処理ルーチンはxPCアドレスを所定のロケーション
に
セーブする機能を備え、割込み
を再び可能にする。xPCレジス
タは特殊レジスタ移動命令で、
および特殊レジスタ・アドレス
とデータ・バスを通して読み書
きされる。
5.2.8 トラップ命令からのリターンを実行することによってトラップ状態
から
抜は出る必要がある。
5、2.8.1 以前にセーブしていたときは、xPCアドレスをその事前定義
口
ケーションから復元してから、
トラップ命令からのリターンを
実行する必要がある。
5.3トラツプ命令からのリターンが実行されたとき:
5、3.1 割込みが可能にされる。
5、3.2 プロシージャ進行中ビットの状態から判断したとおりに、xPCア
ドレス
が現在の命令ストリーム・レジスタ
i、IBUFまたはEBUF PFnPCに戻され、プリフェッチがそのアドレ
スから続行
される。
5.3.3 xPCアドレスが新ストリーム・レジスタを通してIFjCレジス
タに復元
される。
E)゛みおよび の
1) LW
割込みと例外は、それらが可能にされている限り、プロセッサがメイン命令スト
リームから実行されているか、プロシージャ命令ストリームから実行されている
かに関係なく処理される。割込みと例外は優先順にサービスが受けられ、クリア
されるまで持続している。トラップ・ハンドラの開始アドレスは、下述するよう
に、トラップ・ハンドラの事前定義テーブルまでのベクトル番号オフセットとし
て判断される。
割込みと例外は、本実施例では、基本的に2つのタイプがある。すなわち、命令
ストリームの中の特定の命令と同期して引き起こされるものと、命令ストリーム
の中の特定の命令と非同期に引き起こされるものである。割込み、例外、トラッ
プおよびフォールト(fault)の用語は、本明細書では相互に使い分けて用
いられている。非同期割込みは、命令ストリームと同期して動作していない、オ
ン・チップまたはオフ・チップのハードウェアによって引き起こされる。例えば
、オン・チップ・タイマ/カウンタによって引き起こされる割込みは、オフ・チ
ップから引き起こされるハードウェア割込みやマスク不能割込み(non−ma
skable interrupt)(NMI)と同じように、非同期である。
非同期割込みが引き起こされると、プロセッサ・コンテキストが凍結され(fr
ozen) 、すべてのトラップが割込み禁止され、ある種のプロセッサ状況情
報がストアされ、プロセッサは受け取った特定の割込みに対応する割込みハンド
ラにベクトルを向ける。割込みハンドラがその処理を完了すると、プログラム実
行は割込み発生時に実行中であったストリームの中の最後に完了した命令のあと
に置かれた命令から続けられる。
同期例外とは、命令ストリームの中の命令と同期して引き起こされる例外である
。これらの例外は特定の命令に関連して引き起こされ、問題の命令が実行される
まで保留される。好適実施例では、同期例外はプリフェッチ時、命令デコード時
、または命令実行時に引き起こされる。プリフェッチ例外には、例えば、TLB
不一致、その他のVMU例外がある。デコード例外は、例えば、デコード中の命
令が違法命令であるか、プロセッサの現特権レベル(privilege 1e
vel)に一致していないと、引き起こされる。実行例外は、例えば、ゼロによ
る除算といった算術演算エラーが原因で引き起こされる。これらの例外が起こる
と、好適実施例では、例外を引き起こした特定命令と例外とを対応づけ、その命
令が退避(retire)されるときまでその状態が維持される。その時点で、
以前に完了した命令がすべて退避され、例外を引き起こした命令からの試行的結
果があれば、試行的に実行された後続の命令の試行的結果と同じように、フラッ
シュされる。そのあと、その命令で引き起こされた最高優先度例外に対応する例
外ハンドラに制御が渡される。
ソフトウェア・トラップ命令はCFJET 274 (第2図)によって■デコ
ード・ステージで検出され、無条件コール命令その他の同期トラップと同じよう
に処理される。つまり、ターゲット・アドレスが計算され、プリフェッチはその
ときのプリフェッチ待ち行列(EBUFまたはMBUF)まで続けられる。これ
と同時に、その例外は命令と対応づけられて記録され、命令が退避されるとき処
理される。他のタイプの同期例外はすべて、例外を引き起こした特定命令と対応
づけられて記録され、累積されるだけで、実行時に処理される。
2) 兆11頭夜立:
非同期割込みは、割込みライン292を通してPCロジック・ユニット270に
通知される。第3図に示すように、これらのラインはPCロジック・ユニット2
70内の割込みロジック・ユニット363に通知するためのもので、NMIライ
ン、IRQラインおよび1組の割込みレベル・ライン(LVL)からなっている
。NMIラインはマスク不能割込みを通知し、外部ソースを起点としている。こ
れは、ハードウェア・リセットを除き最高優先度割込みである。IRQラインも
外部ソースを起点としており、外部デバイスがハードウェア割込みをいつ要求し
たかを通知する。好適実施例では、外部から起こされるハードウェア割込みは最
高32個までユーザが定義することができ、割込みを要求した特定外部デバイス
は割込みレベル・ライン(LVL)上に割込み番号(0−31)を送出する。メ
モリ・エラー・ラインはMCUlloによってアクティベート(活動化)され、
様々な種類のメモリ・エラーを通知する。その他の非同期割込みライン(図示せ
ず)も割込みロジック・ユニット363に通知するために設けられている。これ
らには、タイマ/カウンタ割込み、メモリ入出力(Ilo)エラー割込み、マシ
ン・チェック割込み、およびパフォーマンス・モニタ割込みを要求するためのラ
インがある。
非同期割込みの各々は、下述する同期例外と同様に、対応する事前定義トラップ
番号が関連づけられている。これらのトラップ番号は32個が32個のハードウ
ェア割込みレベルと関連づけられている。これらのトラップ番号のテーブルは割
込みロジック・ユニット363に維持されている。一般に、トラップ番号が大き
くなると、トラップの優先度が高くなる。
非同期割込みの1つが割込みロジック・ユニット363に通知されると、割込み
制御ユニット363は割込み要求をINT REQ/ACKライン340を経由
してIEU 104へ送出する。また、割込み制御ユニット363はプリフェッ
チ一時中止信号をライン343を経由してPC制御ユニット262へ送信し、P
C制御ユニット262に命令をブリフェッチすることを中止させる。 IEU
104はそのとき実行中の命令をすべてキャンセルし、すべての試行的結果を中
止するか、一部またはすべての命令を完了させる。好適実施例では、そのとき実
行中の命令をすべてキャンセルすることによって、非同期割込みに対する応答を
高速化している。いずれの場合も、実行pc制御ユニット366内のDPCは、
IEU 104が割込みの受信を確認する前に、最後に完了し、退避された命令
に対応するように更新される。ブリフェッチされてMBUF、 EBUF、TB
UFおよびIFIFO264に置かれている他の命令もすべてキャンセルされる
。
IEU 104は、割込みハンドラから割込みを受け取る準備状態にあるときだ
け、割込み受信1iil!認信号をINTREQ/ACKライン340を経由し
て割込み制御ユニット363へ送り返す。この信号を受け取ると、割込み制御ユ
ニット363は、以下で説明するように、該当するトラップ・ハンドラにディス
バッチする。
3) 同JLf吐外
同期例外の場合は、割込み制御ユニット363は各命令セットごとに4個が1組
の内部例外ビット(図示せず)をもっており、各ビットはセット内の各命令に対
応づけられている。割込み制御ユニット363は各命令で見つかったとき1通知
するトラップ番号も維持しでいる。
特定の命令セットがブリフェッチされている途中で、VMLIが丁LB不一致ま
たは別のVMLI例外を通知すると、この情報はPCロジック・ユニット270
へ、特に割込み制御ユニット334 ヘVMU ’HIJ@ライン332.33
4を経由して送られる。割込み制御ユニット363は、この信号を受信すると、
以後のブリフェッチを一時中止するようにライン343を経由してPC制御ユニ
ット362に通知する。これと同時に、割込み制御ユニット363は、命令セッ
トが送られる先のブリフェッチ・バッファに関連するVM−MissまたはVM
−Excpビットのどちらか該当する方をセットする。そのあと、割込み制御ユ
ニット363は、命令セットの中の命令のどれも有効でないので、その命令セッ
トに対応する4個の内部例外標識ビット全部をセットし、問題を起こした命令セ
ットの中の4命令の各々に対応して受信した特定例外のトラップ番号をストアす
る。問題のある命令より前の命令のシフトと実行は、問題の命令セットがIFI
Fo 264内で最低レベルに達するまで通常通りに続行される。
同様に、ブリフェッチ・バッファ260、■デコード・ユニット262またはI
FIFO264を通して命令をシフトしている途中で他の同期例外が検出される
と、この情報も割込み制御ユニット363へ送られ、ユニット363は、例外を
引き起こした命令に対応する内部例外標識ビットをセットし、その例外に対応す
るトラップ番号をストアする。ブリフェッチ同期例外の場合と同じように、問題
を起こした命令より前の命令のシフトと実行は、問題の命令セットがIFIFo
264内で最低レベルに達するまで、通常通りに続行される。
好適実施例では、ブリフェッチ・バッファ260、■デコード・ユニット262
またはIFIFO264を通して命令をシフトしている途中で検出される例外は
、ソフトウェア・トラップ命令の1タイプだけである。ソフトウェア・トラップ
命令は、CjDETユニット274によってIデコード・ステージで検出される
。一部の実施例では、他の形態の同期例外がIデコード・ステージで検出される
が、他の同期例外の検出は、命令が実行ユニット104に到着するまで待つよう
にするのが好ましい。このようにすれば、特権命令を処理すると起こるようなあ
る種の例外が、命令が実効的に順序内で実行される前に変化するおそれのあるプ
ロセッサ状態に基づいて通知されるのが防止される。違法命令のように、プロセ
ッサ状態に左右されない例外はIデコード・ステージで検出可能であるが、すべ
ての実行前周期例外(VMυ例外は別として)を同じロジックで検出するように
すれば、最低限のハードウェアですむことになる。また、そのような例外の処理
は時間を重視することがめったにないので、命令が実行ユニット104に届(ま
での待ちによる時間浪費もない。
上述したように、ソフトウェア・トラップ命令はCjDETユニット274によ
って1デコード・ステージで検出される。割込みロジック・ユニット363内の
その命令に対応する内部例外標識ビットはセットされ、OからI27までの番号
で、ソフトウェア・トラップ命令の即値モード・フィールドに指定できるソフト
ウェア・トラップ番号はトラップ命令に対応づけられてストアされる。しかし、
ブリフェッチ同期例外と異なり、ソフトウェア・トラップは制御フロー命令だけ
でな(、同期例外としても扱われるので、割込み制御ユニ・リド363は、ソフ
トウェア・トラップ命令が検出されたときブリフェッチを一時中止するようにP
C制御ユニット362に通知しない。その代わりに、命令がIFIFO264を
通してシフトされるのと同時に、IFU102はトラップ・ハンドラをブリフェ
ッチしてMBUF命令ストリーム・バッファに入れる。
命令セットがIFIFO264の最低レベルまで達すると、割込みロジック・ユ
ニット363はその命令セットの例外標識ビットを4ビツト・ベクトルとして5
YNCH〜INTjNFOライン341経由でIEU 104へ送り、命令セッ
トの中で同期例外の発生源とすでに判断されていた命令があれば、どの命令であ
るかを通知する。
IEU 104は即時に応答しないで、命令セットの中のすべての命令が通常の
方法でスケジュールされるようにする。整数算術演算例外といった別の例外は、
実行時に引き起こされる場合がある。特権命令が実行されたために起こる例外の
ように、マシンの現在状態に左右される例外もこの時点で検出され、マシンの状
態が命令ストリーム内の以前のすべての命令に対して屋新となるようにするため
に、PSRに影響を与える可能性のあるすべての命令(特殊な移動やトラップ命
令からのリターンなど)は強制的に順序内で実行される。なんらかの同期命令の
発生源となった命令が退避される直前にあるときだけ、例外が起こったことが割
込みロジック・ユニット363に通知される。
IEU 104は試行的に実行され、同期例外を引き起こした最初の命令に先行
する命令ストリームに現れたすべての命令を退避し、試行的に実行され、命令ス
トリームにそのあとに現れた命令からの試行的結果をフラッシュする。例外を引
き起こした特定の命令は、トラップから戻ると再実行されるのが普通であるので
、この命令もフラッシュされる。そのあと、実行PC制御ユニット366内のI
F−PCは実際に退避された最後の命令に対応するように更新され、例外が割
込み制御ユニット363に通知される。
例外の発生源である命令が退避されると、IEU 104は、退避される命令セ
ット(レジスタ224)の中に同期例外を起こした命令があれば、どの命令であ
るかを示した新しい4ビツト・ベクトルを、命令セット内の最初の例外の発生源
を示した情報と一緒に、5YNCHINT−INFOライン341を経由して割
込みロジック・ユニット363に返却する。IELI 104から返却される4
ビツト例外ベクトルに入っている情報は、割込みロジック・ユニット363から
IEU 104に渡された4ビツト例外ベクトルとIEU 104で引き起こさ
れた例外を累積したものである。ブリフェッチまたはニブコード時に検出された
例外が原因で割込み制御ユニット363にすでにストアされている情報があれば
、その情報と一緒にIEU104から割込み制御ユニット363に返却される情
報の残余部分は、割込み制御ユニット363が最高優先度同期例外の内容とその
トラップ番号を判断するのに十分割込み受信確認信号がライン340経由でIE
Uから受信されるか、あるいはゼロ以外の例外ベクトルがライン341経由で受
信された後、現DPCがリターン・アドレスとして特殊レジスタ412(第4図
)の1つであるxPCレジスタに一時的にストアされる。現プロセッサ状態レジ
スタ(PSR)は先のPSR(PPSR)レジスタにもストアされ、そして現状
態比較レジスタ(C3R)が特殊レジスタ412の中の旧状態比較レジスタPC
3R)にセーブされる。
トラップ・ハンドラのアドレスはトラップ・ベース・レジスタ・アドレスにオフ
セットを加えたものとして計算される。PCロジック・ユニット270はトラッ
プ用に2つのベース・レジスタをもち、これらは共に特殊レジスタ412(第4
図)の一部であり、以前に実行された特殊移動命令によって初期化される。大部
分のトラップでは、ハンドラのアドレスを計算するために使用されるベース・レ
ジスタはトラップ・ベース・レジスタTBRである。
割込み制御ユニット363は現在保留中の最高優先度割込みまたは例外を判断し
、索引(look−up)テーブルを通して、それに関連づけられたトラップ番
号を判断する。これは、選択したベース・レジスタまでのオフセットとして、1
組のIN’jOFFSETライン373を経由してブリフェッチPCIII@ユ
ニット364へ渡される。ベクトル・アドレスは、オフセット・ビットを下位ビ
ットとしてTBRレジスタから得た上位ビットに連結するだけでめられるという
利点がある。このため、加算器の遅延が防止される。(本明細書では、2゛ビツ
トとはi゛番目ビットのことである。)例えば、トラップの番号が0から255
までで、これを8ビツト値で表すと、ハンドラ・アドレスは8ビツト・トラップ
番号を22ビツトのTBRストア値の最後に連結するとめられる。トラップ番号
に2桁の下位ビットを付加すると、トラップ・ハンドラ・アドレスは常にワード
境界上に置かれることになる。このようにして作られた連結ハンドラ・アドレス
は入力373の1つとしてプリフェッチ・セレクタPFJCSel 390 (
第4図)へ送られ、次のアドレスとして選択されて、そこから命令がブリフェッ
チされる。 TBRレジスタを使用したトラップのベクトル・ハンドラ・アドレ
スはすべて1ワードだけ離れている。従って、トラップ・ハンドラ・アドレスに
ある命令は、長くなったトラップ処理ルーチンへの予備的ブランチ命令でなけれ
ばならない。しかし、トラップには、システム・パフォーマンスの低下を防止す
るために、その扱いに注意が必要なものがいくつかある。例えば、TLBトラッ
プは高速に実行させる必要がある。そのような理由から、好適実施例では、予備
的ブランチの費用を払わないで、小型のトラップ・ノーンドラを呼び出せるよう
にした高速トラップ・メカニズムが組み込まれている。さらに、高速トラップ・
ハンドラはメモリにも、例えば、オン・チップROMにも独立に配置させること
ができるので、RAMの位置(ロケーション)に関連するメモリ・システム問題
がなくなる。
好適実施例では、高速トラップとなるトラップは上述したVMU例外だけである
。高速トラップの番号は他のトラップと区別され、O〜7の範囲になっている。
しかし、優先度はMMU例外と同じである0割込み制御ユニット363は、高速
トラップがそのとき保留中の最高優先度であると認めると、特殊レジスタ(FT
B)から高速トラップ・ベース・レジスタ(FTB)を選択し、トラップ・オフ
セットと結合するためにライン416上に送出する。ライン373′経由でプリ
フェッチ・セレクタPF−PCSel 390へ送られた結果のベクトル・アド
レスは、FTBレジスタからの上位22ビツトを連結したもので、そのあとに高
速トラップ番号を表した3ビツトが続き、そのあとに7個のゼロ・ビットが続い
ている。
従って、各高速トラップ・アドレスは128バイト、つまり、32ワードだけ離
れている。呼び出されると、プロセッサは開始ワードへブランチし、ブロックま
たはそこから出たブランチ内でプログラムを実行させる。
32個またはそれ以下の命令で実現できる標準的なTLB処理ルーチンのような
、小さなプログラムの実行は、実際の実行処理ルーチンへの予備的ブランチが回
避されるので、通常のトラップよりも高速化される。
好適実施例では、すべての命令は同じ4バイト長になっているが(つまり、4つ
のアドレス・ロケーションを占有する)、注目すべきことは、命令が可変長にな
ったマイクロプロセッサでも高速トラップ・メカニズムが利用できることである
。この場合、高速トラップ・ベクトル・アドレス間には、マイクロプロセッサで
使用できる最短長の命令を少なくとも2つ、好ましくは32個の平均サイズ命令
を受け入れるだけの十分なスペースが設けられることは勿論である。勿論、マイ
クロプロセッサがトラップからのリターン命令を備えている場合には、ベクトル
・アドレス間には、ハンドラ内の少なくとも1つの他の命令をその命令に置ける
だけの十分なスペースを設けておく必要がある。
また、トラップ・へンドラヘディスバッチすると、プロセッサはカーネル・モー
ドと割込み状態に入る。
これと並行して、状態比較レジスタ(CSR)のコピーが以前のキャリー状態レ
ジスタ(PCSR)に置かれ、 PSRのコピーが以前のPSR(PPSR)に
ストアされる。カーネルと割込み状態モードはプロセッサ状況レジスタ(PSR
)内のビットで表される。現PSRの割込み状態ビットがセットされると、シャ
ドウ・レジスタまたはトラップ・レジスタRT[24]〜RT[31]が上述お
よび第7b図に示すように、見えるようになる0割込みハンドラは新しいモード
をPSRに書き込むだけでカーネル・モードから出ることができるが、割込み状
態から出るためには、トラップからのリターン(RTT)命令を実行する方法だ
けが唯一の方法である。
IEU 104がRTT命令を実行すると、PCSRはC5Rレジスタに復元さ
れ、PP5RレジスタはPSRレジスタに復元されるので、PSR内の割込み状
態ビットは自動的にクリアされる。PjPCSELセレクタ390は特殊レジス
タ・セット412の中の特殊レジスタxPCを次にそこからブリフェッチするア
ドレスとして選択するaxPCはインクリメンタ394とバス396を通して、
MB[lF PFnPCまたはEBUF PFnPCのどちらか該当する方に復
元される。xPcをEBUF PFnPCに復元すべきか、またはMBUF P
FnPCに復元すべきかの判断は、復元されたあとのPSRの「プロシージャ進
行中jビットに従って行われる。
注目すべきことは、プロセッサはトラップとプロシージャ命令の両方のリターン
・アドレスをストアするのに同じ特殊レジスタxPCを使用しないことである。
トラップのリターン・アドレスは上述したように特殊レジスタxPCにストアさ
れるが、プロシージャ命令のあとリターンする先のアドレスは別の特殊レジスタ
uPCにストアされる。従って、割込み状態は、プロセッサがプロシージャ命令
で呼び出されたエミュレーション・ストリームを実行している間でも、使用可能
のままになっている。他方、例外処理ルーチンは、エミュレーション・ストリー
ムが完了したあと例外ハンドラへ戻るためのアドレスをストアする特殊レジスタ
がないので、いずれのプロシージャ命令をも含んでいてはならない。
5) ネスト:
ある種のプロセッサ状況情報は、トラップ・ハンドラ、特に、C5R,PSR、
リタンPc、およびある意味では“A”レジスタ・セットra[241〜ra[
3月ヘディスバッチするとき自動的にバックアップがとられるが、他のコンテキ
スト情報は保護されていない。例えば、浮動小数点状況レジスタ(FSR)の内
容は自動的にバックアップがとられない。トラップ・ハンドラがこれらのレジス
タを変更するためには、独自のバックアップを実行しなければならない。
トラップ・ハンドラヘディスパッチするとき自動的に行われるバックアップが制
限されているために、トラップのネストは自動的に行われない。トラップ・ハン
ドラは必要とするレジスタのバックアップをとり、割込み条件をクリアし、トラ
ップ処理のために必要な情報をシステム・レジスタから読み取り、その情報を適
当に処理する必要がある。割込みは、トラップ・ハンドラヘディスパッチすると
自動的に禁止される。処理を終えると、ハンドラはバックアップをとったレジス
タを復元し、再び割込みを可能にし、RTT命令を実行して割込みから戻ること
ができる。
ネストされたトラップを可能にするには、トラップ・ハンドラを第1部分と第2
部分に分割する必要がある。第1部分では、割込みが禁止されている間に。
特殊レジスタ移動命令を使用してxPCをコピーし、トラップ・ハンドラが維持
しているスタック上にブツシュしておく必要がある。次に、特殊レジスタ移動命
令を使用して、トラップ・ハンドラの第2部分の先頭のアドレスをxPCに移し
、トラップからのリターン命令(RTT)を実行する必要がある。RTTは割込
み状態を取り除き(PP5RをPSRに復元することによって)、制御をxPC
内のアドレスを移す。xPCには、ハンドラの第2部分のアドレスが入っている
。第2部分はこの時点で割込みを可能にして、割込み可能モードで例外の処理を
続けることができる。注目すべきことは、シャドウ・レジスタRT[24] −
RT[31]はこのハンドラの第1部分でのみ見ることができ、第2部分では見
えないことである。従って、第2部分では、ハンドラは、”A゛レジスタ値ハン
ドラによって変更される可能性がある場合には、その値を予約してお(必要があ
る。トラップ処理ルーチンは終わったときは、バックアップにとったレジスタを
すべて復元し、元のxPCをトラップ・ハンドラ・スタップからポツプし、それ
を特殊レジスタ移動命令を使用してxPC特殊レジスタに戻して、別のRTTを
実行する必要がある。これにより、制御−はメインまたはエミュレーション命令
ストリームの中の該当命令に返される。′
6)L1エスユ11:
次の表工は、好適実施例で認識されるトラップのトラップ番号、優先度および処
理モードを示すものである。
(以下余白)
恋ユ
非同期/
■ゴ且A 釦しユ 鳳凰−L之ユブヱ
Q−127通常 同期 トラップ命令
128 通常 同期 FP例外
129 通常 同期 整数算術演算例外130 通常 同期 MMU (TLB
不一致または修正を除く)
135 通常 同期 不整列メモリアドレス136 通常 同期 違法命令
137 通常 同期 特権命令
138 通常 同期 デバッグ例外
144 通常 非同期 性能モニタ
145 通iK 非同期 タイマ/カウンタ146 通常 非同期 メモリI1
0エラー160−191 通常 非同期 ハードウェア割込み192−253
予約
254 通常 非同期 マシン・チェック255 通常 非同期 NMI
O高速トラップ 同期 高速MMU TLB不一致1 高速トラップ 同期 高
速MMU TLB修正2−3 高速トラップ 同期 高速(予約)4−7 高速
トラップ 同期 高速(予約)IIl、命」」L比三三しL上
第5図は、IEU 104の制御経路部分とデータ経路部分を示したものである
。主要データ経路は、IFU 102からの命令/オペランド・データ・バスを
始端としている。データ・バスとして、即値オペランドはオペランド位置合わせ
ユニット470へ送られ、レジスタ・ファイル(REG ARRAY) 472
に渡される。レジスタ・データはレジスタ・ファイル472からバイパス・ユニ
、ット474を通って、レジスタ・ファイル出力バス476を経由し、分配バス
480を経由して機能計算エレメント(FU、 −、)の並列配列へ送られる。
機能ユニット478、、によって生成されたデータは、出力バス482を経由し
てバイパス・ユニット474またはレジスタ配列472または両方へ送り返され
る。
ロード/ストア・ユニット484によってiEU 104のデータ経路部分が完
成される。ロード/ストア・ユニット484はIEIJ 104とCCU 10
6間のデータ転送の管理を担当する。具体的には、CCU 106のデータ用キ
ャッシュ134から取り出したロード・データはロード/ストア・ユニット48
4によってロード・データ・バス486を経由してレジスタ配列472へ転送さ
れる。
CCU 106のデータ用キャッシュにストアされるデータは機能ユニットの配
分バス480から受信される。
IEU 104の制御経路部分はIEUデータ経路を通る情報の送出、管理、お
よびその処理を行うことを担当する。本発明の好適実施例では、IEU制御経路
は複数の命令の並行実行を管理する機能を備え、IEUデータ経路は、IEU
104のほぼすべてのデータ経路エレメント間の複数のデータ転送を独立して行
う機能を備えている。IELI制御経路は命令/オペランド・バス124を経由
して命令を受信すると、それを応じて動作する。具体的には、命令セットはEデ
コード・ユニット490によって受信される。本発明の好適実施例では、Eデ2
24に保持されている両方の命令セットを受信して、デコードする。8命令すべ
てのデコードの結果は、キャリー・チェッカ(CRY Cf(KR)ユニット4
92、依存性チェッカ(DEP CHKR)ユニット494、レジスタ改名ユニ
ット(REG RENAME) 496、命令発行(ISSUER)ユニット4
98および退避制御ユニット(RETIRE CLT) 500へ送られる。
キャリー・チェッカ・ユニット492はEデコード・ユニット490から制御ラ
イン502を経由して、係属中の保留されている8命令に関するデコード化情報
を受信する。キャリー・チェッカ492の機能は、保留されている命令のうち、
プロセッサ状況ワードのキャリー・ビットに影響を与久る、あるいはキャリー・
ビットの状態に左右される命令を識別することである。この制御情報は制御ライ
ン504を経由して命令発行ユニット498へ送られる。
保留状態の8命令によって使用されているレジスタ・ファイル472のレジスタ
を示しているデコード化情報は、制御ライン506を経由して直接にレジスタ改
名ユニット496へ送られる。この情報は、依存関係チェッカ・ユニット494
へも送られる。依存関係チェッカ・ユニット494の機能は、保留状態の命令の
どれがレジスタをデータの宛先として参照しているか、もしあれば、どの命令が
これらの宛先レジスタのいずれかに依存しているかを判断することである。レジ
スタに依存する命令は、制御ライン508を経由してレジスタ改名ユニット49
6へ送られる制御信号によって識別される。
最後に、Eデコード・ユニット490は保留状態の8命令の各々の特定の内容と
機能を識別した制御情報を制御ライン510を経由して命令発行ユニット498
へ送る。命令発行ユニット498はデータ経路資源、特に、保留状態の命令の実
行のためにどの機能ユニットが使用できるかを判断することを担当する。アーキ
テクチャ100の好適実施例によれば、命令発行ユニット498はデータ経路資
源が使用可能であること、キャリーとレジスタ依存関係の制約を条件として、8
個の保留状態命令のいずれかを順序外で実行できるようにする。レジスタ改名ユ
ニット496は、実行できるように適当に制約が解除された命令のビット・マツ
プを制御ライン512を経由して命令発行ユニット498へ送る。すでに実行さ
れた(完了した)命令およびレジスタまたはキャリーに依存する命令は論理的J
こビット・マツプから除かれる。
必要とする機能ユニット478゜−わが使用可能である力)どうかに応じて、命
令発行ユニット498番ま各システス514を経由して命令発行ユニット498
へ送られる。
命、令の実行を開始し、開始後の実行管理を行うための制御信号は命令発行ユニ
ット498から制御ライン516を経由してレジスタ改名ユニット496へ送ら
れ、また信号をレジスタ・ファイル・アクセス制御ノ(スジ18上に送出する。
バス518上に送出された制御信号でどのレジスタが割込み可能にされたかは、
実行中の命令を選択することによって、およびレジスタ改名ユニット496がそ
の特定命令によって参照されたレジスタを判1断することによって判断される。
バイパス制御ユニット(BYPASS にTL) 5204よ、一般的には、制
御ライン524上の制御信号を通してノくイノ〈ス・データ・ルーチング・ユニ
ット474の動作を開制御する。バイパス制御ユニット520(ま機能ユニット
478゜−7の各々の状況をモニタし、制御ライン522を経由してレジスタ改
名ユニット496から送られてきたレジスタ参照に関連して、データをレジスタ
・ファイル472から機能ユニット478゜−7へ送るべきかどうか、あるいは
機能ユニット478゜−7から出力されるデータをバイパス・ユニット474経
由で機能ユニット宛先バス480へ即時に送って、命令発行ユニット498によ
って選択された新発行の命令の実行のために使用できるかどうかを判断する。ど
ちらの場合も、命令発行ユニット498は機能ユニット478゜−0の各々への
特定レジスタ・データを選択的に使用可能にすることによって、宛先バス480
から機能ユニット478゜−。ヘデータを送ることを直接に制御する。
IEu制御経路の残りのユニットには、退避制御ユニット500、制御フロー制
御(CF CTL)ユニット528、および完了制御(DONE CTL)ユニ
ット536がある。退避制御ユニット500は順序外で実行された命令の実行を
無効または確認するように動作する。ある命令が順序外で実行されろと、先行命
令もすべて退避されたならば、その命令は、確認または退避されることができる
。現セット中の保留状態の8命令のどれが実、行されたかの識別情報が制御ライ
ン532上に送出されると、その識別情報に基づいて、退避制御ユニット500
はバス51gに接続された制御ライン534上に制御信号を送出して、レジスタ
配列472にストアされた結果データを順序外で実行された命令の先行実行の結
果として実効的に確認する。
退避制御ユニット500は、各命令を退避するとき、PCインクリメント/サイ
ズ制御信号を制御ライン344を経由してIFtJ 102へ送る。複数の命令
を順序外で実行でき、従って、同時に退避する準備状態に置(ことができるので
、退避制御ユニット500は同時に退避された命令数に基づいてサイズ値を判断
する。最後に、IFIFOマスク・レジスタ224のすべての命令が実行され、
退避された場合は、退避制御ユニット500はIFIFO読取り制御信号を制御
ライン342を経由してIFtl 102へ送って、IFIFOユニット264
のシフト・オペレーションを開始することにより、Eデコード・ユニット490
に追加の4命令を実行保留命令として与える。
制御フロー制御ユニット528は各条件付きブランチ命令の論理的ブランチ結果
を検出するという、特定化された機能を備えている。制御フロー制御ユニット5
28は現在保留中の条件付きブランチ命令の8ビツト・ベクトルIDをEデコー
ド・ユニット490から制御ライン510を経由して受信する。8ビツト・ベク
トル命令完了制御信号は、同じように完了制御ユニット540から制御ライン5
38を経由して受信される。この完了制御信号によって、制御フロー制御ユニッ
ト528は、条件付きブランチ命令が、条件付き制御フロー状況を判断するのに
十分な個所まで完了すると、それを判別することができる。保留中の条件付きブ
ランチ命令の制御フロー状況結果は、その実行時に制御フロー制御ユニット52
8によってストアされる。条件付き制御フロー命令の結果を判断するために必要
なデータは、レジスタ配列472内の一部状況レジスタから制御ライン520を
経由して得られる。各条件付き制御フロー命令が実行されると、制御フロー制御
ユニットは新しい制御フロー結果信号を制御ライン348を経由してIFU 1
02へ送る。好適実施例では、この制御フロー結果信号は2個の8ビツト・ベク
トルを含んでおり、このベクトルは、保留されている可能性のある8個の制御フ
ロー命令のそれぞれのビット位置別の状況結果が分かっているかどうか、また、
ビット位置の対応づけによって得られる対応する状況結果状態を定義している。
最後に、完了制御ユニット540は機能ユニット478゜−1の各々のオペレー
ションに関する実行状況をモニタするためのものである。機能ユニット478o
−0のいずれかが命令実行オペレーションの完了を通知すると、完了制御ユニッ
ト540は対応する完了制御信号を制御ライン542上に送出して、レジスタ改
名ユニット496、命令発行ユニット498、退避制御ユニット500およびバ
イパス制御ユニット520にアラート(警告)する。
機能ユニット478o−ゎを並列配列構成にすることにより、IEU 104の
制御の一貫性を向上している。命令を正しく認識して、実行のためのスケジエー
ルするためには、個々の機能ユニット478゜−1の特性を命令発行ユニット4
98に知らせる必要がある。機能ユニット478゜−〇は、必要とする機能を実
行するために必要な特定制御フロー・オペレーションを判別し、実行することを
担当する。従って、命令発行ユニット498以外は、IEU制御ユニットには、
命令の制御フロー処理を独立して知らせる必要はない。命令発行ユニット498
と機能ユニット478゜−0は共同して、残りの制御フロー管理ユニット496
.500.520.528.540に実行させる機能を必要な制御信号のプロン
プトで知らせる。従って、機能ユニット478o−の特定の制御フロー・オペレ
ーションの変更は、IEU 104の制御オペレーションに影響しない。さらに
、既存の機能ユニット478゜−0の機能を強化する場合や、拡張精度浮動小数
点乗算ユニットや拡張精度浮動小数点ALU 、高速フーリエ計算機能ユニット
、三角関数計算ユニットなどの、別の機能ユニット478゜−0を1つまたは2
つ以上を追加する場合でも、命令発行ユニット498を若干変更するだけですむ
。必要なる変更を行うには、Eデコード・ユニット490によって隔離された対
応する命令フィールドに基づいて、特定の命令を認識し、その命令と必要とする
機能ユニット478o−0とを関係づける必要がある。レジスタ・データの選択
の制御、データのルーチング、命令完了と退避は、i能ユニット478.−、の
他の機能ユニットすべてに対して実行される他のすべての命令の処理と矛盾がな
いようになっている。
A) IEUデータ の;
IEUデータ経路の中心となるエレメントはレジスタ・ファイル472である。
しかし、本発明によれば、IEUデータ経路内には、個々の機能用に最適化され
た並列データ経路がいくつか用意されている。主要データ経路は整数と浮動小数
点の2つである。各並列データ経路内では、レジスタ・ファイル472の一部が
そのデータ経路内で行われるデータ操作をサポートするようになっている。
l) レジスタ・ファイルの・
第6a図は、データ経路レジスタ・ファイル550の好適アーキテクチャの概要
図である。データ経路レジスタ・ファイル550は一部バッファ552、レジス
タ・ファイル配列564、入力セレクタ559、および出力セレクタ556を含
んでいる。最終的にレジスタ配列564へ送られるデータは、結合データ入力バ
ス558°を経由して一部バッファ552によって最初に受信されるのが代表例
である。つまり、データ経路レジスタ・ファイル550へ送られるデータはすべ
て入力セレクタ559によって多重化されて、複数の入力バス558(好ましく
は2つの)から入力バス558°上に送出される。制御バス518上に送出され
たレジスタ選択およびイネーブル制御信号は一部バツファ552内の受信データ
のレジスタ・ロケーションを選択する。一時バッファにストアされるデータを生
成した命令が退避されると、再び制御バス518上に送出された制御信号は一部
バツファ552からレジスタ・ファイル配列564内の論理的に対応づけられた
レジスタヘデータ・バス560を経由してデータを転送することを許可する。し
かし、命令が退避される前は、一時バッファ552にストアされたデータは一部
バッファにストアされたデータをデータ・バス560のバイパス部分を経由して
出力データ・セレクタ556へ送ることにより、後続の命令の実行時に使用する
ことが可能である。制御バス51g経由で送られる制御信号によって制御される
セレクタ556は、一時バッファ552のレジスタからのデータとレジスタ・フ
ァイル配列564のレジスタからのデータのどちらかを選択する。結果のデータ
はレジスタ・ファイル出力バス564上に送出される。また、実行中の命令が完
了と同時に退避される場合は、つまり、その命令が順序内で実行された場合は、
結果データをバイパス延長部分558“を経由して直接にレジスタ配列554へ
送るように指示することができる。
本発明の好適実施例によれば、各データ経路レジスタ・ファイル550は2つの
レジスタ操作を同時に行えるようになっている。従って、入力バス558を通し
て2つの全レジスタ幅データ値を一部バッファ552に書き込むことができる。
内部的には、一時バッファ552はマルチプレクサ配列になっているので、入力
データを一部バッファ552内の任意の2レジスタへ同時に送ることができる。
同様に、内部マルチプレクサにより一部バッファ552の任意の5レジスタを選
択して、データをバス560上に出力することができる。レジスタ・ファイル配
列564は同じように入出力マルチプレクサを備えているので、2つのレジスタ
を選択して、それぞれのデータを同時にバス560から受信することも、5つの
レジスタを選択してバス562経由で送ることもできる。最後に、レジスタ・フ
ァイル出力セレクタ556は、バス560.562から受信した10レジスタ・
データ値のうち任意の5つがレジスタ・ファイル出力バス564上に同時に出力
されるように実現するのが好ましい。
一部バッファ内のレジスタ・セットは第6b図にその概要が示されている。レジ
スタ・セット552°は8個のシングル・ワード(32ビツト)レジスタl0R
D、11RD、 、 、 17RDから構成されている。レジスタ・セット55
2°は4個のダブル・ワード・レジスタl0RD、l0RD+1(IORD4)
、IIRD、 IIRD+I(ISRD)、、、l3RD、l3RD+1(l7
RD)のセットとして使用することも可能である。
本発明の好適実施例によれば、レジスタ・ファイル配列564内の各レジスタを
重複して設ける代わりに、一時バッファ・レジスタ・セット552内のレジスタ
は2個のIFIFOマスク・レジスタ216.224内のそれぞれの命令の相対
ロケーションに基づいて、レジスタ改名ユニット496によって参照される。本
アーキテクチャ100で実現される各命令は、最高2つまでのレジスタまたは1
つのダブル・ワード・レジスタを出力として参照して、命令の実行によって生成
されたデータの宛先とすることができる。代表例として、命令は1つの出力レジ
スタだけを参照する。従って、その位置を第6c図に示しているように、8個の
係留中命令のうち1つの出力レジスタを参照する命令2 (Iりの場合は、デー
タ宛先レジスタl2RDが選択されて、命令の実行によって生成されたデータを
受け入れる。命令工2によって生成されたデータが後続の命令、例えば、I6に
よって使用される場合は、l2RDレジスタにストアされたデータはバス560
を経由して転送され、結果のデータは一部バッファ552に送り返されて、l5
RDで示したレジスタにストアされる。特に、命令工、は命令I2によって決ま
るので、命令I、は、■、からの結果データが得られるまでは実行することがで
きない。しかし、理解されるように、命令工、は必要とする入力データを一部バ
ッファ552°の命令I2のデーターロケーションから得れば、命令■、の退避
前に実行することが可能であ最後に、命令■2が退避されると、レジスタ12R
Dからのデータは、退避個所の命令の論理位置から判断されて、レジスタ・ファ
イル配列564ないのレジスタ・ロケーションに書かれる。すなわち、退避制御
ユニット560は、制御ライン510経由でEデコード・ユニット490から与
えれなレジスタ参照フィールド・データからレジスタ・ファイル配列内の宛先レ
ジスタのアドレスを判断する。命令■。、が退避されると、l4RD−l7RD
に入っている値は、IFIFQユニット264のシフトと同時にシフトされて、
l0RD−l3RDに移される。
命令I2からダブル・ワード結果値が得られる場合は、さらに複雑になる。本発
明の好適実施例によれば、ロケーションr2RDと16RDの組合わせが、命令
I2が退避されるか、さもなければキャンセルまで、その命令から得た結果デー
タをストアしておくために使用される。好適実施例では、命令I4.、の実行は
、命令■。−1のいずれかによるダブル・ワード出力の参照がレジスタ改名ユニ
ット496によって検出された場合には、保留される。これにより、一時バッフ
ァ552°全体をダブル・ワード・レジスタのシングル・ランクとして使用する
ことが可能になる。命令■。−3が退避されると、一時バッファ552゛はシン
グル・ワード・レジスタの2ランクとして再び使用することができる。さらに、
いずれかの命令I4−1の実行は、ダブル・ワード出力レジスタが必要な場合に
は、命令が対応する工。−3にシフトされるまで保留される。
レジスタ・ファイル配列564の論理的編成は第7a図〜第7b図に示されてい
る。本発明の好適実施例によれば、整数データ経路用のレジスタ・ファイル配列
564は40個の32ビツト幅レジスタから構成されている。このレジスタ・セ
ットはレジスタ・セット”A”を構成し、ベース・レジスタ・セットra[o、
、23] 565、汎用レジスタra[24,,31] 566からなるトップ
・セット、および8個の汎用トラップ・レジスタra[24,,31]からなる
シャドウ・レジスタ・セットとして編成されている。通常のオペレーションでは
、汎用レジスタra[0,,31] 565.566は整数データ経路用のレジ
スタ・ファイル配列のアクティブ”Aルジスタ・セットを構成している。
第7b図に示すように、トラップ・レジスタra[24,。
311567をスワップしてアクティブ・レジスタ・セット”A“に移しておけ
ば、レジスタra[0,,23] 565のアクティブ・ベース・セットと一緒
にアクセスすることが可能である。”A”レジスタ・セットのこの構成は、割込
みの受信が確認されるか、例外トラップ処理ルーチンが実行されると、選択され
る。レジスタ・セット”A゛のこの状態は、割込み許可命令の実行またはトラッ
プからのリターン命令の実行によって第7a図に示す状態に明示によって戻るま
で維持される。
アーキテクチャ100によって実現された本発明の好適実施例では、浮動小数点
データ経路は第8図にその概要を示すように拡張精度レジスタ・ファイル配列5
72を使用する。レジスタ・ファイル配列572は、各々が64ビツト幅の32
個のレジスタrf[0,,31]から構成されている。浮動小数点レジスタ・フ
ァイル572は整数レジスタrb[0,,31]の”B”セットとして論理的に
参照することも可能である。アーキテクチャ100では、この”B′上セツトレ
ジスタは浮動小数点レジスタrf[o、、31]の各々の下位32ビツトに相当
している。
第3のデータ経路を表すものとして、プール演算子レジスタ・セット574が第
9図に示すように設けられている。これは、プール演算の論理結果をストアする
。この”C”レジスタ・セット574は32個の1ビツト・レジスタrc [0
,、313から構成されている。プール・レジスタ・セット574のオペレーシ
ョンは、プール演算の結果をプール・レジスタ・セット574の任意の命令選択
レジスタへ送ることができる点でユニークである。これは、等しい、等しくない
、より大、その他単純なプール状況値などの条件を表す1ビツト・フラグをスト
アするシングル・プロセッサ状況ワード・レジスタを使用するのと対照的である
。
浮動小数点レジスタ・セット572とプール・レジスタ・セット574は、双方
共、第6b図に示す整数一時バッファ552と同じアーキテクチャの一部バツフ
ァによって補数がとられる。基本的違いは、一時バッファ・レジスタの幅が補数
をとるレジスタ・ファイル配列572.574の幅と同じなるように定義されて
いることである。好適実施例では、幅はそれぞれ64ビツトと1ビツトになって
いる。
多数の追加の特殊レジスタが、レジスタ配列472に少なくとも論理的に存在し
ている。第7C図に示すように、レジスタ配列472に物理的に存在するレジス
タはカーネル・スタック・ポインタ(kernel 5tackpointer
)568 、プロセッサ状態レジスタ(PSR) 569、旧プロセッサ状態レ
ジスタ(PPSR) 570および8個の一部プロセッサ状態レジスタの配列(
tPSR[0,、月)571からなっている。残・りの特殊レジスタはアーキテ
クチャ100の各所に分散している。特殊アドレスおよびデータ・バス354は
データを選択して、特殊レジスタおよび”A”と”B”レジスタ・セット間で転
送するためのものである。特殊レジスタ移動命令は”A”または”B”レジスタ
・セットからレジスタを選択し、転送の方向を選択し、特殊レジスタのアドレス
IDを指定するためのものである。
カーネル・スタック・ポインタ・レジスタとプロセッサ状態レジスタは、他の特
殊レジスタとは異なっている。カーネル・スタック・ポインタは、カーネル状態
にあるとき、標準のレジスタ間移動命令を実行することによってアクセス可能で
ある。一時プロセッサ状態レジスタは直接にアクセスすることはできない。
その代わりに、このレジスタ配列はプロセッサ状態レジスタの値を伝播して、順
序外で実行される命令で使用できるようにする継承メカニズム (inheri
tancemechanism)を実現するために使用される。初期伝播値はプ
ロセッサ状態レジスタの値である。つまり、最後に退避された命令から得た値で
ある。この初期値は一部プロセッサ状態レジスタから前方向に伝播され、順序外
で実行される命令が対応する位置にある一部プロセッサ状態レジスタ内の値をア
クセスできるようにする。命令が依存し、変更できる条件コード・ビットは、そ
の命令がもつ特性によって定義される。命令が依存関係、レジスタまたは条件コ
ードによって制約されないことが、レジスタ依存関係チェッカ・ユニット494
とキャリー依存関係チェッカ492によって判断された場合は、命令は順序外で
実行することができる。
プロセッサ状態レジスタの条件コード・ビットの変更は論理的に対応する一部プ
ロセッサ状態レジスタに指示される。具体的には、変更の可能性があるビットだ
けが一部プロセッサ状態レジスタに入っている値に適用され、上位のすべての一
部プロセッサ状態レジスタに伝播される。その結果、順序外で実行されるすべて
の命令は介在するPSR変更命令によって適切に変更されたプロセッサ状態レジ
スタ値から実行される。命令が退避されたときは、対応する一部プロセッサ状態
レジスタ値だけがPSRレジスタ569に転送される。
その他の特殊レジスタは表IIに説明されている。
表II
竺1ヒj二L2
特殊移動
レジスタ T 託朋
PCRプログラム・カウンタニ一般的
には、PCは現在実行中のプログ
ラム命令ストリームの次のアド
レスを格納している。
IFJCR/W IFUプログラム・カウンタ:IF−PCは正確な次の実行ア
ドレ
スを格納している。
PFnPCRブリフェッチ・プログラム・カウンタ: MBUF、 TBUFお
よびEBUFPFnPCはそれぞれのプリフェッ
チ命令ストリームの次のプリ
フェッチ命令アドレスを格納し
ている。
uPCR/W マイクロ・プログラム・カウンタ:プロシージャ命令のあとに
続く命令のアドレスを格納して
いる。これはプロシージャ命令
がリターンしたとき最初に実行
される命令のアドレスである。
xPCR/W 割込み/例外プログラム・カウンタ:割込みまたは例外(また
は両方)のリターン・アドレス
を格納している。リターン・
アドレスはトラップ発生時の
IFjCのアドレスである。
TBRW )ラップ・ベース・アドレス:トラップ処理ルーチンヘディ
スバッチするとき使用されるベ
クトル・テーブルのベース・ア
ドレス。各エントリは1ワード
長である。割込みロジック・ユ
ニット363から与えられるト
ラップ番号は、このアドレスが
指しているテーブルまでのイン
デックスとして使用される。
FTB W 高速トラップ・ベース・レジスタ:即時トラップ処理ルーチ
ン・テーブルのベース・レジス
タ。各テーブル・エントリは32
ワードであり、トラップ処理
ルーチンを直接に実行するため
に使用される。割込みロジッ
ク・ユニット363から与えられ
るトラップ番号を32倍したもの
は、このアドレスが指している
テーブルまでのオフセットとし
て使用される。
PBRW プロシージャ・ベース・レジスタ:プロシージャ・ルーチンへ
ディスバッチするとき使用され
るベクトル・テーブルのペー
ス・アドレス。各エントリは1
ワード長であり、4ワード境界
シージャ命令フィールドとして
与えられるプロシージャ番号は
このアドレスが指しているシー
プルまでのインデックスとして
使用される。
PSRR/W プロセッサ状態レジスタ:プロセッサ状況ワードを格納してい
る。状況データ・ビットは、
キャリー、オーバフロー、ゼ
ロ、負、プロセッサ・モード、
現割込みレベル、実行中のプロ
シージャ・ルーチン、Oによる
除算、オーバフロー例外、ハー
ドウェア機能割込み可能、プロ
シージャ割込み可能、割込み可
能などのビットがある。
PP5RR/W 旧プロセッサ状態レジスタ:命令が正しく完了するか、割込み
またはトラップが引き起こされ
ると、PSRからロードされる。
C3RR/W 状態比較(プール)レジスタ:シングル・ワードとしてアクセ
ス可能なプール・レジスタ・
しく完了するか、割込みまたは
トラップが引き起こされると、
CSRからロードされる。
2) データ の・
本発明の好適実施例に従って構築されるrEu 104の整数データ経路は第1
0図に示されている。説明の便宜上、整数データ経路580と結ばれる多数の制
御経路は図には示していない、これらの接続関係は第5図を参照して説明したと
おりである。
データ経路580の入力データは位置合わせユニット582.584および整数
ロード/ストア・ユニット586から得られる。整数即値(integer i
mmediate)データ値は、最初は命令埋込み(embedded)データ
・フィールドとして与えられ、バス588経由でオペランド・ユニット470か
ら得られる。位置合わせユニット582は整数データ値を隔離し、その結果値を
出力バス590を経由してマルチプレクサ592へ送られる。マルチプレクサ5
92への別の入力は特殊レジスタ・アドレスとデータ・バス354である。
命令ストリームから得られる即値(immediate)オペランドも、データ
・バス594経由でオペランド・ユニット570から得られる。これらの値は、
出力バス596上に送出される前に、位置合わせユニット584によって再度右
寄せされる。
整数ロード/ストア・ユニット586は外部データ・バス598を通してCCU
106と双方向でやりとりする。
IEU 104へのインバウンド・データは整数ロード/ストア・ユニット58
6から入力データ・バス600を経由して入力ラッチ602へ転送される。マル
チプレクサ592とラッチ602からの出力データは、マルチプレクサ608の
マルチプレクサ入力バス6θ4.606上に送出される。機能ユニット出力バス
482°からのデータもマルチプレクサ608に送られる。このマルチプレクサ
608はアーキテクチャ100の好適実施例では、データを同時に出力マルチプ
レクサ・バス610へ送る2つの通路を備えている。さらに、マルチプレクサ6
08を通るデータ転送は、システム・クロックの各半サイクル以内に完了するこ
とができる。本アーキテクチャ100で実現される大部分の命令は、1つの宛先
レジスタを利用するので、最大4つまでの命令によって各システム・クロツタ・
サイクルの間データを一部バッファ612へ送ることができる。
一部バッファ612からのデータは一部レジスタ出力バス616を経由して整数
レジスタ・ファイル配列614へ、あるいは代替一時バッファ・レジスタ・バス
618を経由して出力マルチプレクサ620へ転送することができる。整数レジ
スタ配列出力バス622は整数レジスタ・データをマルチプレクサ620へ転送
することができ−る。一時バッファ612と整数レジスタ・ファイル配列614
に接続された出力バスは、それぞれ5個のレジスタ値を同時に出力することを可
能にする。つまり、合計5個までのソース・レジスタを参照する2つの命令を同
時に出すことができる。一時バッファ612、レジスタ・ファイル配列614お
よびマルチプレクサ620は、アウトバウンド・レジスタ・データの転送を半シ
ステム・クロック・サイクルごとに行うことを可能にする。従って、最高4個ま
での整数および浮動召集点命令を各クロック・サイクルの間に出すことができる
。
マルチプレクサ620はアウトバウンド・レジスタ・データ値をレジスタ・ファ
イル配列614から、あるいは一時バッファ612から直接に選択する働きをす
る。
これにより、以前に順序外で実行された命令に依存する順序外実行命令をIEU
104によって実行させることができる。これにより、保留状態の命令を順序
外で実行することによってIEU整数データ経路の実行スルーブツト能力を最大
化すると共に、順序外のデータ結果を、実行され退避された命令から得たデータ
結果から正確に分離するという2目標を容易に達成することができる。マシンの
正確な状態を復元する必要のあるような割込みや他の例外条件が起こると、本発
明によれば、一時バッファ612に存在するデータ値を簡単にクリアすることが
できる。従って、レジスタ・ファイル配列614は、割込みまたは他の例外条件
が発生する以前に完了し、退避された命令の実行によってのみ得られたデータ値
を正確に収めたままになっている。
マルチプレクサ620の各半システム・サイクル・オペレージジン時に選択され
たレジスタ・データ値は最高5つまでがマルチプレクサ出力バス624を経由し
て整数バイパス・ユニット626へ送られる。このバイパス・ユニット626は
、基本的に、マルチプレクサが並列の配列からなり、その入力のいずれかに現れ
たデータをその出力のいずれかへ送ることができる。バイパス・ユニット626
の入力は、マルチプレクサ592から出力バス604を経由する特殊レジスタ・
アドレス指定データ値または即値の整数値、バス624上に送出される最高5つ
までのレジスタ・データ値、整数ロード/ストア・ユニット586からダブル整
数バス600を経由するロード・才へランド・データ、その出力バス596を経
由して位置合わせユニット584から得た即値オペランド値、最後に、機能ユニ
ット出力バス482からのバイパス・データ経路からなっている。このバイパス
経路とデータ・バス482はシステム・クロック・サイクルごとに4個のレジス
タ値を同時に転送することができる。
データはバイパス・ユニット626から浮動小数点データ・バスに接続された整
数バイパス・バス628上に出力されて、最高5つまでのレジスタ・データ値を
同時に転送する機能をもつ2つのオペランド・データ・バスと、整数ロード/ス
トア・ユニット586へデータを送るために使用されるストア・データ・ノ〈ス
632へ送られる。
機能ユニット分配バス480はルータ・ユニット634のオペレーションを通し
て実現されている。また、ルータ・ユニット634はその入力から受信された5
個のレジスタ値を整数データ通路に設けられた機能ユニットへ送ることを可能に
する並列のマルチプレクサ配列によって実現される。具体的には、ルータ・ユニ
ット634はバイパス・ユニット626からバス630を経由して送られてきた
5個のレジスタ・データ値、アドレス・バス352を経由して送られてきた現I
F−PCアドレス値、PC制御ユニット362によって判断され、ライン378
°上に送出された制御フロー・オフセット値を受信する。ルータ・ユニット63
4は、浮動小数点データ経路内に設けられたバイパス・ユニットから取り出され
たオペランド・データ値をデータ・バス636を経由して受信することもできる
(オプション)。
ルータ・ユニット634によって受信されたレジスタ・データ値は、特殊レジス
タ・アドレスおよびデータ・バス354上を転送されて、機能ユニット640.
642.644へ送られる。具体的には、ルータ・ユニット634は最高3つま
でのレジスタ・オペランド値をルータ出力バス646.648.650を経由し
て機能ユニット640.642.644の各々へ送る機能を備えている。本アー
キテクチャ100の一般的アーキテクチャによれば、■高2つまでの命令を同時
に機能ユニット 640゜642.644に対して出すことが可能である。本発
明の好適実施例によれば、3つの専用整数機能ユニットに、それぞれプログラマ
ブル・シフト機能と2つの算術演算ロジック・ユニット機能をもたせることがで
きる。
ALUO機能ユニット644 、 ALUI機能ユニット642およびシフタ機
能ユニット640はそれぞれの出力レジスタ・データを機能ユニット・バス48
2゛上に送出する。
ALUOとシフタ機能ユニット644,640から得た出力データも浮動小数点
データ経路に接続された共用整数機能ユニット・バス650上に送出される。類
似の浮動小数点機能ユニット出力値データ・バス652が浮動小数点データ経路
から機能ユニット出力バス482゛へ設けられている。
ALUO機能ユニット644はIFU 102のブリフェッチ操作と整数ロード
/ストア・ユニット586のデータ操作の両方をサポートするために仮想アドレ
ス値を生成する場合にも使用される。ALUO機能ユニット644によって計算
された仮想アドレス値はIFU 102のターゲット・アドレス・バス346と
CCU 106の両方に接続された出力バス654上に送出され、実行ユニット
の物理アドレス(EX PADDR)が得られる。ラッチ656は、ALIJO
til能ユニット644によって生成されたアドレスの仮想化部分をストアする
ためのものである。アドレスのこの仮想化部分は出力バス658上に送出されて
、VMU 103次に、第11図は浮動小数点データ経路を示したものである。
初期データは、この場合も、即値整数オペランド・バス588、即値オペランド
・バス594および特殊レジスタ・アドレス・データ・バス354を含む、複数
のソースから受信される。外部データの最終的ソースは外部データ・バス598
を通してCCU 106に接続された浮動小数点ロード/ストア・ユニット62
2であ即値整数オペランドは、位置合わせ出力データ・バス668を経由してマ
ルチプレクサ666に渡す前に整数データ・フィールドを右寄せする働きをする
位置合わせユニット664によって受信される。マルチプレクサ666は特殊レ
ジスタ・アドレス・データ・バス354も受信する。即値オペランドは第2の位
置合わせユニット670へ送られ、右寄せされてから出力バス672上に送出さ
れる。浮動小数点ロード/ストア・ユニット662からのインバウンド・データ
(inbound data)は、ロード・データ・バス676からラッチ67
4によって受信される。マルチプレクサ666、ラッチ674および機能ユニッ
ト・データ・リターン・バス482”からのデータはマルチプレクサ678の人
力から受信される。マルチプレクサ678は選択可能なデータ経路を備え、2つ
のレジスタ・データ値がシステム・クロックの半サイクルごとに、マルチプレク
サ出力バス682を経由して一部バッファ680に書き込まれることを可能にす
る。
一時バッファ680は第6b図に示す一部バツファ552°と論理的に同じレジ
スタ・セットを備えている。一時バッファ680はさらに、最高5個までのレジ
スタ・データ値を一部バッファ680から読み取って、データ・バス686を経
由して浮動小数点レジスタ・ファイル配列684と、出力データ・バス690を
経由して出力マルチプレクサ688へ送ることができる。マルチプレクサ688
は、データ・バス692を経由して、浮動小数点ファイル配列684から最高5
個までのレジスタ・データ値も同時に受信する。マルチプレクサ688は最高5
個までのレジスタ・データ値を選択して、データ・バス696を経由してバイパ
ス・ユニット694へ同時に転送する働きをする。バイパス・ユニット694は
、データ・バス572、マルチプレクサ666からの出力データ・バス698、
ロード・データ・バス676および機能ユニット・データ・リターン・バス48
2”のバイパス延長部分を経由して、位置合わせユニット670から与久られた
即値オペランド値も受信する。バイパス・ユニット694は最高5個までのレジ
スタ・オペランド・データ値を同時に選択して、バイパス・ユニット出カバスフ
00、浮動小数点ロード/ストア・ユニット662に接続されたストア・データ
・バス702、および整数データ経路580のルータ・ユニット634に接続さ
れた浮動小数点バイパス・バス636上に出力するように働く。
浮動小数点ルータ・ユニット704は、バイパス・ユニット出カバスフ00と整
数データ経路バイパス・バス628とそれぞれの機能ユニット712.714.
716に接続された機能ユニット入カバスフ06.708.710との間で同時
にデータ経路を選択できる機能を備えている。アーキテクチャ100の好適実施
例による入カバスフ06゜708.710の各々は、最高3個までのレジスタ・
オペランド・データ値を機能ユニット712.714.716の各々へ同時に転
送することが可能である。これらの機能ユニット712,714.716の出力
バスは機能ユニット・データ・リターン・バス482゛に結合され、データをレ
ジスタ・ファイル入力マルチブレフサ678へ戻すようになっている。整数デー
タ経路機能ユニット出力バス650を、機能ユニット・データ・リターン・バス
482”に接続するために設けることも可能である。本発明のアーキテクチャ1
00によれば、マルチプレクサ機能ユニット712と浮動小数点ALU 714
の機能ユニット出力バスを浮動小数点データ経路機能ユニット・バス652を経
由して整数データ経路500の機能ユニット・データ・リターン・バス482゛
に接続することが可能であブール演算データ経路720は第12図に示されてい
る。このデータ経路720は基本的に2種類の命令の実行をサポートするために
利用される。最初のタイプは、オペランド比較命令であり、この命令では、整数
レジスタ・セットと浮動小数点レジスタ・セットから選択された、あるいは即値
オペランドとして与えられた2つのオペランドが、ALU機能ユニットの1つで
整数と浮動小数点データ経路を減算することによって比較される。この比較は、
ALU機能ユニット642.6441.714.716のいずかによる減算によ
って行われ、その結果の符号とゼロ状況ビットは入力セレクタと比較演算子結合
ユニット722へ送られる。このユニット722は、制御信号を指定した命令な
Eデコード・ユニット490から受け取ると、ALU機能ユニット642.64
4.714.716の出力を選択し、符号およびゼロ・ビットを結合し、プール
比較結果値を抽出する。出カバスフ23を通して比較演算の結果を入力マルチプ
レクサ726とバイパス・ユニット742へ同時に転送することができる。整数
および浮動小数点データ経路と同じように、バイパス・ユニット742は並列の
マルチプレクサ配列として実現され、バイパス・ユニット742の入力間で複数
のデータ経路を選択して、複数の出力と結ぶことができる。バイパス・ユニット
742の他の入力はプール演算結果リターン・データ・バス724とデータ・ノ
\スフ44上の2つのプール・オペランドからなってし)る。バイパス・ユニッ
ト742は、最高2つまでの同時に実行中のプール命令を表したプール・オペラ
ンドを、オペランド・バス748を経由してプール演算機能ユニット746へ転
送することができる。また、バイノτス・ユニット746は最高2個までのシン
グル・ビット・プール・オペランド・ビット(CFOlCFI)を制御フロー結
果制御ライン750.752を経由して同時に転送することができる。
プール演算データ経路の残り部分は、比較結果Rスフ23とプール結果バス72
4上に送出された比較およびプール演算結果値を、その入力として受信する入カ
マルチブレクサ726を含んでいる。このノ\スフ24Cよ最高2個までのプー
ル結果ビットを同時にマルチプレクサ726へ転送することができる。さらに、
最高2個までの比較結果ビットをバス723を経由してマルチプレクサ726へ
転送することができる。マルチプレクサ726はマルチプレクサの入力端に現れ
た任意の2個の信号ビットをマルチプレクサの出力端を経由して、システム・ク
ロックの各半サイクル時にプール演算一時バッファ728へ転送することができ
る。一時バッファ728は、2つの重要な点が異なることを除けば、第6b図に
示した一部バッファ752゛と論理的に同じである。第1の相違点は、一時バッ
ファ728内の各レジスタ・エントリがシングル・ビットからなることである。
第2の相違点は、8個の係留中命令スロットの各々に1つのレジスタだけが設け
られていることである。これは、ブール演算の結果全部が定義によって1つの結
果ビットによって定義されるためである。
一時バッファ728は最高4個までの出力オペランド値を同時に出力する。これ
により、各々2つのソース・レジスタへのアクセスを必要とする2個のプール命
令を同時に実行させることができる。4個のプール・レジスタ値はシステム・ク
ロックの各半サイクルごとにオペランド・バス736上に送出し、マルチプレク
サ738へあるいはプール・オペランド・データ・バス734を経由してプール
・レジスタ・ファイル配列732へ転送することができる。プール・レジスタ・
ファイル配列732は、第9図に論理的に示すように、1個の32ビット幅デー
タ・レジスタであり、任意に組み合わせた最高4個までのシングル・ビット・ロ
ケーションを、一時バッファ728からのデータで修正し、システム・クロック
の各半サイクルごとにプール・レジスタ・ファイル配列732から読み取って出
カッ<スフ40上に送出することかできる。マルチプレクサ738はバス736
.740経由でその出力端から受信したプール・オペランドの任意のベアを、オ
ペランド出カッ<スフ44上に送出してバイパス・ユニット742へ転送する。
プール演算機能ユニット746は2個のソース値についてブール演算を幅広く実
行する機能を備えている。
比較命令の場合には、ソース値は整数および浮動小数点レジスタ・セットのいず
れかから得たベアのオペランドとIEI3104へ送られる任意の即値オペラン
ドであり、プール命令の場合は、プール・レジスタ・オペランドの任意の2つで
ある。表INと表工vは、本発明のアーキテクチャ100の好適実施例における
論理比較演算を示すものである。表Vは本発明のアーキテクチャ100の好適実
施例における直接プール演算を示すものである。表l11−Vに示されている命
令条件コードと機能コードは対応する命令のセグメントを表してし)る。
また、命令はベアのソース・オペランド・レジスタと、対応するプール演算結果
をストアするための宛先プール・レジスタを指定する。
表III
!11お較
rslはrs2より大 > ooo。
rslはrs2より大か >= 0001等しい
rslはrs2より小 < 0010
rslはrs2より小か <= 0011等しい
rslはrs2と等しくない != 0100rslはrs2と等しい 010
1
予備 011O
無条件 1111
本rs = レジスタ・ソース
表rv
温l巳り改羞j旧証社
命令
rslはrsZより大か等しい >= 0001rslはrsZより小 < 0
010
rslはrsZより小か等しい <= 0011rslはrsZと等しくない
I= 0100rslはrsZと等しい 0101
無順序 ? 1000
無順序またはrslはrsZより大 ?> 1001無順序、rslはrsZよ
り大か ?>= 1010等しい
無順序またはrslはrsZより小 ?< 1oll無順序、rslはrsZよ
り小か ?<= 1100等しい
無順序またはrslはrsZと等しい ?= 1101予備 1110−111
1
表■
命令
1見ま 巳 1且」し二重
OZero 0000
bsl & bs2 AND 0001bsl k −bs2 ANN2 00
10bsl bsl 0011
−bsl & bs2 ANNI 0100bs2 bs2 0101
bsl −bs2 XOR0110
bsl bs2 0R0111
−bsl & −bs2 NOR1000−bsl −bs2 XNOR100
1−bs2 N0T2 1010
bsl −bs2 0RN2 1011−bsl N0TI 1100
−bsl bs2 0RN1. 1101−bsl −bs2 NAND 11
10*bs =プール・ソース・レジスタ
B) ロード ストア湘′ユニット
第13図はロード/ストア・ユニット760の例を示したものである。データ経
路580,660に別々に示されているが、ロード/ストア・ユニット586.
662は1つの共用ロード/ストア・ユニット760として実現するのが好まし
い。それぞれのデータ経路580.660からのインタフェースはアドレス・バ
ス762およびロードとストア・データ・バス764 (600,676)、
766(632,702)を経由している。
ロード/ストア・ユニット760によって使用されるアドレスは、rFU 10
2およびIEU 104の残り部分で使用される仮想アドレスとは対照的に、物
理アドレスである。IFU 102は仮想アドレスで動作し、CCU 106と
VMU 10g間の調整に依存して物理アドレスを生成するのに対し、IEU
104ではロード/ストア・ユニット760を物理アドレス・モードで直接に動
作させる必要がある。この要件が必要になるのは、順序外で実行されるために、
物理アドレス・データとストア・オペレーションがオーバラップするような命令
が存在する場合、およびCCU 106からロード/ストア・ユニット760へ
の順序外のデータ・リターンが存在する場合に、データ保全性を保つためである
。データ保全性を保つために、ロード/ストア・ユニット760はストア命令が
IEU 104によって退避されるまで、ストア命令から得たデータをバッファ
に置いておく。その結果、ロード/ストア・ユニット760によってバッファに
置かれたストア・データはロード/ストア・ユニット760に1つだけ存在する
ことができる。実行されたが退避されていないストア命令と同じ物理アドレスを
参照するロード命令は、ストア命令が実際に退避されるまで実行が遅延される。
その時点で、ストア・データをロード/ストア・ユニット760からCCU 1
06へ転送し、CCUデータ・ロード・オペレーションの実行によって即時にロ
ード・バックすることができる。
具体的には、物理アドレス全体がVMU 10gからロード/ストア・アドレス
・バス762上に送出されろ。
ロード・アドレスは、一般的には、ロード・アドレス・レジスタ768゜−1に
ストアされる。ストア・アドレスはストア・アドレス・レジスタ770.−0に
ラッチされる。ロード/ストア制御ユニット774は命令発行ユニット498か
ら受信した制御信号を受けて動作し、ロード・アドレスとストア・アドレスをレ
ジスタ768、−0.7702−oにラッチすることを調整する。ロード/スト
ア制御ユニット774はロード・アドレスをラッチするための制御信号を制御ラ
イン778上に送出し、ストア・アドレスをラッチするための制御信号を制御ラ
イン780上に送出する。ストア・データはストア・データ・レジスタ・セット
782□−0の論理的に対応するスロットにストア・アドレスをラッチするのと
同時にラッチされる。4x4x32ビット幅アドレス比較ユニット772には、
ロードおよびストア・アドレス・レジスタ768!−0,770j−6に入って
いるアドレスの各々が同時に入力される。システム・クロックの各半サイクル時
の完全マトリックス・アドレス比較の実行は、制御ライン776を介してロード
/ストア制御ユニット774によって制御される。ストア・アドレスに一致する
ロード・アドレスの存在と論理ロケーションは、制御ライン776を経由してロ
ード/ストア制御ユニット774へ送られる。
ロード・アドレスがVMU 10gから与えられ、保留中のストアがない場合は
、ロード・アドレスは、CCUロード・オペレーションの開始と同時に、バス7
62から直接にアドレス・セレクタ786へバイパスされる。
しかし、ストア・デ、−夕が保留されている場合は、ロード・アドレスは使用可
能なロード・アドレス・ラッチ768゜−3にラッチされる。対応するストア・
データ命令が退避されるとの制御信号を退避制御ユニット500から受信すると
、ロード/ストア制御ユニット774はCCUデータ転送操作を開始し、制御ラ
イン784を通してCCU 106へのアクセスの仲裁を行う。CCU106が
レディ(ready)を通知すると、ロード/ストア制御ユニット774はCC
U物理アドレスをCCU PADDRアドレス・バス788上に送出するように
セレクタ786に指示する。このアドレスはアドレス・バス790を経由して対
応するストア・レジスタ770.−0から得られる。
対応するストア・データ・レジスタ782.−0からのデータはCCUデータ・
バス792上に送出される。
ロード命令が命令発行ユニット498から出されると、ロード/ストア制御ユニ
ット774はロード・アドレス・ラッチ7681−0の1つが要求されたロード
・アドレッスをラッチすることを許可する。選択された特定のラッチ768゜−
1は関係命令セット内のロード命令の位置に論理的に対応している。命令発行ユ
ニット498は保留中の可能性のある2命令セツトのどちらかの中のロード命令
を示している5ビツト・ベクトルをロード/ストア制御ユニット774へ渡す。
コンパレータ772が一致するストア・アドレスを示していない場合は、ロード
・アドレスはアドレス・バス794を経由してセレクタ786へ送られ、CCU
PADDRアドレス・バス788上に出力される。アドレスの提供は、ロード
/ストア制御ユニット774とCCU 106間でやりとりされるCCU要求と
レディ制御信号に従って行われる。実行ID値(ExID値)もロード/ストア
制御ユニット774によって準備されてCCU 106に対して出され、CCU
106がExID値を含む要求データをそのあとで返却するときロード要求を
識別する。このID値は4ビツト・ベクトルからなり、現ロード要求を出したそ
れぞれのロード・アドレス・ラッチ768゜−3を固有ビットで指定している。
5番目のビットはロード命令を収めている命令セットを識別するために使用され
る。このID値は、従って、命令発行ユニット498からロード要求と一緒に送
られるビット・ベクトルと同じである。
先行する要求ロード・データが使用可能であることがCCU 106からロード
/ストア制御ユニット774へ通知されると、ロード/ストア制御ユニツト77
4は、位置合わせユニットがデータを受信し、それをロード・データ・バス76
4上に送出することを許可する。位置合わせユニット798はロード・データを
右寄せする働きをする。
CCU 106からデータが返却されると同時に、ロード/ストア制御ユニット
774はCCU 106からExID値を受信する。他方、ロード/ストア制御
ユニット774はロード・データがロード・データ・バス764上に送出される
ことを知らせる制御信号を命令発行ユニット498へ送り、さらに、どのロード
命令に対してロード・データが返却されるのかを示したビット・ベクトルを返却
する。
C) IEU の・
再び第5図を参照して、IEU制御経路のオペレーションを、第14図に示した
タイミング図と関連づけて説明する。第14図に示した命令の実行タイミングは
本発明のオペレーションを例示したもので、種々態様に変更可能であることは勿
論である。
第14図のタイミング図はプロセッサ・システム・クロック・サイクルP0−6
のシーケンスを示している。各プロセッサ・サイクルは内部TサイクルT0から
始まる。本発明の好適実施例によるアーキテクチャ100では、各プロセッサ・
サイクルは2つのTサイクルからなっている。
プロセッサ・サイクル0のときは、IFU 102とVMU108は物理アドレ
スを生成するように動作する。この物理アドレスはCCU 106へ送られ、命
令用キャッシュ・アクセス・オペレーションが開始される。要求された命令セッ
トが命令用キャッシュ132にあると、命令セットはプロセッサ・サイクル1の
ほぼ中間でIFU 102へ戻される。そのあと、IFU 102はブリフェッ
チ・ユニット260とIFIFO264を経由する命令セットの転送を管理し、
転送された命令セットはまずIEU 104へ実行のために渡される。
1) Eデコード・ユニットの・
Eデコード・ユニット490は全命令セットを並列に受け取って、プロセッサ・
サイクル1が完了する前にデコードする。Eデコード・ユニット490は、好適
アーキテクチャ100では、バス124を経由して受け取ったすべての有効命令
を並列に直接デコードする機能を備えた順列組合せ理論に基づくロジック・ブロ
ックとして実現されている。アーキテクチャ100によって認識される命令は、
各タイプ別に、命令、レジスタ要件および必要な資源の仕様と生前こ表VIに示
されてる。
表VI
激jシ」二座
紅土 とオペランド *
レジスタ間移動 論理/算術演算機能コード:加算、減算、乗算、シフ
トその他の指定。
宛先レジスタ
PSRのみセット
ソース・レジスタ2または即
値定数値
レジスタ・セットA/B選択
即値からレジスタへ 宛先レジスタ
移動 即値整数または浮動小数点定
数値
レジスタ・セットA/B選択
ロード/ストア・ オペレーション機能コード:レジスタ ロードまたはストア
の指
定、即値、ベースと即
値、またはベースとオフ
セットの使用
ソース/宛先レジスタ
ベース・レジスタ
インデックス・レジスタまた
即値定数値
レジスタ・セットA/B選択
即値コール 符号付き即値変位
制御フロー オペレーション機能コード:ブランチ・タイプとトリ
ガ条件の指定
ベース・レジスタ
インデックス・レジスタ、即
値定数変位値、またはトラッ
プ番号
レジスタ・セットA/B選択
特殊レジスタ移動 オペレーション機能コード:特殊/整数レジスタとの
間の移動の指定
特殊レジスタ・アドレス識別
子ソース/宛先レジスタ
レジスタ・セットA/B選択
整数変換移動 オペレーション機能コード:浮動小数点から整数への
変換タイプの指定
ソース/宛先レジスタ
レジスタ・セットA/B選択
ブール関数 プール関数コード: AND、ORなどの指定
宛先プール・レジスタ
ソース・レジスター
レジスタ・セットA/B選択
拡張プロシージャ プロシージャ指定子:プロシージャ・ベース値から
のアドレス・オフセット
の指定
オペレーション:値をプロ
シージャ・ルーチンへ渡
す
アトミック・プロ プロシージャ指定子:アドレンーンヤ ス値の指定
傘−命令は、デコードされて命令を識別するフィールドのほかにこれらのフィー
ルドを含んでいる。
Eデコード・ユニット490は命令セットの各命令を並列にデコードする。その
結果の命令の識別、命令機能、レジスタ参照および機能要件はEデコード・ユニ
ット490の出力から得られる。この情報は再生成され、命令セット内のすべて
の命令が退避されるまで、プロセッサ・サイクルの各半サイクル期間、Eデコー
ド・ユニット490によってラッチされる。従って、保留状態の8命令すべてに
関する情報が、Eデコード・ユニット490の出力から絶えず得られるようにな
っている。この情報は、8エレメント・ビット・ベクトルの形式で表示され、各
ベクトルのビットまたはサブフィールドは2つの係留中命令セット内の対応する
命令の物理ロケーションに論理的に対応している。従って、8個のベクトルが制
御ライン502を経由してキャリー・チェッカ492へ送られる。この場合、各
ベクトルは、対応する命令がプロセッサ状況ワードのキャリー・ビットに作用を
及ぼしているか、あるいはそれに依存しているかを指定している。8個のベクト
ルが各命令の特定の内容と機能ユニット要件を示すために制御ライン510を経
由して送られる。8個のベクトルが制御ライン506を経由して送られ、8個の
係留中命令の各々によって使用されたレジスタ参照を指定している。これらのベ
クトルはプロセッサ・サイクルlが終了する前に送られる。
2) キャリー・チェ・力・ユニットの・キャリー・チェッカ・ユニット492
は第14図に示すオペレーションのデータ依存関係フェーズ期間の間に依存関係
検査ユニット494と並列に動作する。キャリー・チェッカ・ユニット492は
好適アーキテクチャ100では順列組合せ理論に基づくロジックとして実現され
ている。従って、キャリー・チェッカ・ユニット492によるオペレーションの
各繰返し時に、命令がプロセッサ状態レジスタのキャリー・フラグを変更したか
どうかについて8個の命令すべてが考慮される。これが必要とされるのは、その
前の命令によって設定されたキャリー・ビットの状況に依存する命令を順序外で
実行することを可能にするためである。制御ライン504上に送出された制御信
号により、キャリー・チェッカ・ユニット492は、キャリー・フラグに対する
先行命令の実行に依存する特定の命令を識別することができる。
さらに、キャリー・チェッカ・ユニット492は8個の保留中命令の各々につい
てキャリー・ビットの一部的コピーをもっている。キャリー・ビットを変更して
いない命令については、キャリー・チェッカ・ユニット492はプログラム命令
ストリームの順序でキャリー・ビットを次の命令に伝える。従って、順序外で実
行され、キャリー・ビットを変更する命令を実行させることが可能であり、さら
に、その順序外で実行される命令に依存する後続の命令も、キャリー・ビットを
変更する命令のあとに置かれていても、実行することが可能である。さらに、キ
ャリー・ビットがキャリー・チェッカ・ユニット492によって維持されている
ので、これらの命令の退避以前に例外が起こったとき、キャリー・チェッカ・ユ
ニットは内部一時キャリ−・ビット・レジスタをクリアするだけでよいことから
、順序外で実行することが容易になる。その結果、プロセッサ状況レジスタは、
順序外で実行される命令の実行による影響を受けない。キャリー・チェッカ・ユ
ニット492が維持している一部キヤリー・ビット・レジスタは、順序外で実行
される各命令が完了すると更新される。順序外で実行される命令が退避されると
、プログラム命令ストリームの中で最後に退避された命令に対応するキャリー・
ビットはプロセッサ状況レジスタのキャリー・ビット・ロケーションへ転送ド・
ユニット490から制御ライン506を経由して8個のレジスタ参照識別ベクト
ルを受け取る。各レジスタの参照は32個のレジスタを一度に1つを識別するの
に適した5ビツト値と、”A”、”B”またはプール・レジスタ・セット内に置
かれているレジスタ・バンクを識別する2ビツト値によって示されている。浮動
小数点レジスタ・セットは”B”レジスタ・セットとも呼ばれる。各命令は最高
3つまでのレジスタ参照フィールドをもつことができる。2つのソース・レジス
タ・フィールドと1つの宛先レジスタ・フィールドである。ある種の命令、特に
レジスタ間移動命令は、宛先レジスタを指定している場合があっても、Eデコー
ド・ユニット490によって認識される命令ビット・フィールドは、実際に作成
される出力データがないことを意味している場合がある。むしろ、命令の実行は
、プロセッサ状況レジスタの値の変更を判断することだけを目的としている。
データ依存関係チェッカ494も好適アーキテクチャ100において純然たる組
合せロジック(purecombinatorial logic)で実現され
ているが、これはプログラム命令ストリーム内に後に現れる命令のソース・レジ
スタ参照と相対的に前に置かれた命令の宛先レジスタ参照との間の依存関係を同
時に判断するように動作する。ビット配列は、どの命令が他の命令に依存するか
を識別するだけでなく、各依存関係がどのレジスタに基づいて生じたかを識別す
るデータ依存関係チェッカ494によって作られる。
キャリーとレジスタ・データの依存関係は、第2プロセツサ・サイクルの開始直
後に判別される。
4) レジスタ ユニットの・
レジスタ改名ユニット496は8個の保留中の命令すべてのレジスタ参照の10
を制御ライン506を経由して、レジスタ依存関係を制御ライン508を経由し
て受け取る。8個のエレメントからのマトリックスも制御ライン542を経由し
て受け取る。これらのエレメントは、保留中命令の現セットの中でどの命令が実
行されたか(完了したか)を示している。この情報から、レジスタ改名ユニット
496は制御信号の8エレメント配列を制御ライン512を経由して命令発行ユ
ニット498へ送る。このようにして送られた制御情報は、現セットのデータ依
存関係が判別された場合に、まだ実行されていない現在保留中の命令のうちどの
命令の実行が可能になったかについてレジスタ改名ユニット496が行った判断
を反映している。レジスタ改名ユニット496は実行のために同時に出される最
高6個までの命令を識別した選択制御信号をライン516を経由して受信する。
つまり、2個の整数命令、2個の浮動小数点命令および2個のプール命令である
。
レジスタ改名ユニット496はバス518を経由してレジスタ・ファイル配列4
72へ送られた制御信号を通して、識別された命令を実行する際にアクセスする
ソース・レジスタを選択するという、もう1つの機能を備えている。順序外で実
行される命令の宛先レジスタは対応するデータ経路の一部バツファ612,68
0.728に置かれているものとして選択される。順序内で実行される命令は完
了すると退避され、その結果データはレジスタ・ファイル614.684.73
2にストアされてい(。ソース・レジスタの選択は、レジスタが以前に宛先とし
て選択され、対応する以前の命令がまだ退避されていないかどうかによって決ま
る。そのような場合には、ソース・レジスタは対応する一部バツファ612.6
80.728から選択される。以前の命令が退避されていた場合は、対応するレ
ジスタ・ファイル614.684.732のレジスタが選択される。その結果、
レジスタ改名ユニット496は、順序外で実行される命令の場合には、レジスタ
・ファイル・レジスタの参照を一時バツファ・レジスタの参照に実効的に置き換
えるように動作する。
アーキテクチャ100によれば、一時バッファ612.680、728は対応す
るレジスタ・ファイル配列のレジスタ構造と重複していない。むしろ、8個の保
留命令の各々に対して1つの宛先レジスタ・スロットが用意されている。その結
果、一時バッファ宛先レジスタ参照の置換は、保留レジスタ・セット内の対応す
る命令のロケーションによって判断される。そのあとのソース・レジスタ参照は
ソース依存関係が発生した命令に対してデータ依存関係チェッカ494によって
識別される。従って、一時バッファ・レジスタ内の宛先スロットはレジスタ改名
ユニット496によって容易に判断することが可能である。
5) rA ユニットの・
命令発行ユニット498は発行できる命令のセットをレジスタ改名ユニット49
6の出力とEデコード・ユニット490によって識別された命令の機能要件に基
づいて判断する。命令発行ユニット498は制御ライン514を経由して報告さ
れた機能ユニット478.、の各々の状況に基づいてこの判断を行う。従って、
命令発行ユニット498は発行すべき使用可能な命令セットをレジスタ改名ユニ
ット496から受信すると、オペレーションを開始する。各命令を実行するため
にレジスタ・ファイルへのアクセスが必要であるとすると、命令発行ユニット4
98は現在命令を実行中の機能ユニット498゜−1が使用可能であることを予
想する。レジスタ改名ユニット496へ発行すべき命令を判別する際の遅延を最
小にするために、命令発行ユニット498は専用の組合せロジックで実現されて
いる。
発行すべき命令を判別すると、レジスタ改名ユニット496はレジスタ・ファイ
ルへのアクセスを開始し、このアクセスは第3プロセツサ・サイクルP2が終了
するまで続けられる。プロセッサ・サイクルP、が開始すると、命令発行ユニッ
ト498は、rExecute OJで示すように1つまたは2つ以上の機能ユ
ニット478゜−0によるオペレーションを開始し、レジスタ・ファイル配列4
72から送られてきたソース・データを受信して処理する。
代表例として、アーキテクチャ100で処理される大部分の命令は1プロセツサ
・サイクルで機能ユニットを通して実行される。しかし、一部の命令は、rEx
ecute IJで示すように、同時に出された命令を完了するのに複数のプロ
セッサ・サイクルを必要とする。 Execute O命令とExecute
1命令は、例えば、それぞれALUと浮動小数点乗算機能ユニットに実行させる
ことができる。ALU機能ユニットは、第14図に示すように、lプロセッサ・
サイクル内で出力データを発生し、この出力データはラッチしておくだけで、第
5プロセツサ・サイクル24時に別の命令を実行する際に使用することができる
。浮動小数点乗算機能ユニットは内部パイプライン化機能ユニットにすることが
好ましい。従って、次のプロセッサ・サイクルで別の浮動小数点命令を出すこと
ができる。しかし、最初の命令の結果はデータに依存するプロセッサ・サイクル
数の開側用することができない、第14図に示す命令は、機能ユニットでの処理
を完了するためには、3プロセツサ・サイクルを必要とする。
各プロセッサ・サイクルの間に、命令発行ユニット498の機能は繰り返される
。その結果、現在の保留中の命令セットの状況と機能ユニット478o−oの全
セットの使用可能状況は各プロセッサ・サイクルの間に再評価される。従って、
最適条件のとき、好適アーキテクチャ100はプロセッサ・サイクルごとに最高
6個までの命令を実行することができる。しかし、代表的な命令ミックスから得
られる総平均実行命令数は、1プロセツサ・サイクル当たり1.5個ないし2.
0個である。
命令発行ユニット498の機能で最後に考慮すべきことは、このユニットがトラ
ップ条件の処理と特定命令の実行に関与することである。トラップ条件を発生す
るためには、まだ退避されていないすべての命令をIEU 104からクリアす
る必要がある。このような事態は、算術演算エラーに応答して機能ユニット47
8.、のいずれからか、あるいは例えば、違法命令をデコードしたときにEデコ
ード・ユニット490から、外部割込みを受信し、それが割込み要求/受信確認
制御ライン340を経由してIEU 104へ中継されたのに応答して、起こる
ことがある。トラップ条件が発生したとき、命令発行ユニット498は現在IE
U 104で保留されているすべての非退避命令を中止または無効にすることを
受け持つ。同時に退避できない命令はすべて無効にされる。この結果は、プログ
ラム命令ストリームを順序内で実行する従来の方式に対して割込みを正確に発生
させるために不可欠である。IEU 104がトラップ処理プログラム・ルーチ
ンの実行を開始する準備状態になると、命令発行ユニット498は制御ライン3
40を経由するリターン制御信号によって割込みの受信を確認する。また、従来
の純然たる順序内ルーチンにおいである命令が実行される前に変更されたプロセ
ッサ状態ビットに基づいて、その命令に対する例外条件が認識される可能性を防
止するために、命令発行ユニット498はPSRを変更する可能性のあるすべて
の命令(特殊移動やトラップからのリターンなど)が厳格に順序内で実行される
ようにすることを受け持つ。
プログラム制御の流れを変更するある種の命令は、Iデコード・ユニット262
によって判別されない。この種の命令には、サブルーチン・リターン、プロシー
ジャ命令からのリターン、トラップからのリターンがある。命令発行ユニット4
98は判別制御信号をIEUすターン制御ライン350を経由してIFU 10
2へ送る。特殊レジスタ412のうち対応するものが選択されて、コール命令の
実行時、トラップの発生時またはプロシージャ命令の出現時に存在していたIF
JC実行アドレスを出力する。
6)6 ユニットの・
完了制御ユニット540は機能ユニット478゜−7をモニタして、現在のオペ
レーションの完了状況を調べる。
好適アーキテクチャ100では、完了制御ユニット540は各機能ユニットによ
るオペレーションの完了を予想して、現在保留中の命令セットの中の各命令の実
行状況を示した完了ベクトルを、機能ユニット478゜−7による命令の実行完
了よりも約半プロセッサ・サイクル前にレジスタ改名ユニット496、バイパス
制御ユニット520および退避制御ユニット500へ送る。これにより、命令発
行ユニット498はレジスタ改名ユニット496を通して、実行を完了する機能
ユニットを次の命令発行サイクルに対して使用可能な資源として考慮することが
できる。バイパス制御ユニット520は、機能ユニットから出力されたデータを
バイパス・ユニット474を通るようにバイパスする準備を行うことができる。
最後に、退避制御ユニット500は、機能ユニット478゜−1からレジスタ・
ファイル配列472ヘデータを転送するのと同時に対応する命令を退避するよう
に動作する。
7)゛ ユニットの・
完了制御ユニット540から送られた命令完了ベクトルのほかに、退避制御ユニ
ット500はEデコード・ユニット490から出力された最も古い命令セットを
モニタする。命令ストリーム順序の中の各命令に完了制御ユニット540によっ
て完了の印(マーク)がつけられると、退避制御ユニット500は、制御ライン
534上に送出された制御信号を通して、一時バッファ・スロットからレジスタ
・ファイル配列472内の対応する命令が指定したファイル・レジスタ・ロケー
ションへデータを転送することを指示する。1つまたは複数の命令が同時に退避
されると、PCInc/5ize制御信号が制御ライン344上に送出される。
各プロセッサ・サイクルごとに最高4個までの命令を退避することが可能である
。命令セット全体が退避されると、IFIFO読取り制御信号が制御ライン34
2上に送出されてIFIFo 264を前進させる。
8)′フロー ユニットの・細
制御フロー制御ユニット528は、現在の係留中命令セット内の制御フロー命令
が解決されたかどうか、さらに、その結果ブランチが行われたかどうかを指定し
た情報をIFU 102に絶えず与えるように動作する。制御フロー制御ユニッ
ト528は、Eデコード・ユニット490による制御フロー・ブランチ命令の識
別情報を制御ライン510を経由して取得する。現在のレジスタ依存関係のセッ
トは、制御ライン536を経由してデータ依存関係チェッカ・ユニット494か
ら制御フロー制御ユニット528へ送られるので、制御フロー制御ユニ・ント5
28はブランチ命令の結果が依存関係に拘束されているかどうか、あるいは判明
しているかどうかを判断することができる。レジスタ改名ユニット496からノ
てス51gを経由して送られたレジスタの参照は制御フロー制御ユニット528
によってモニタされ、ブランチ決定を定義するプール・レジスタが判別される。
従って、ブランチ決定は、制御フロー命令の順序外の実行以前でも判断すること
が可能である。
制御フロー命令の実行と同時に、バイパス・ユニット472は、制御フロー1と
制御フロー2の制御ライン750.752からなる制御ライン530を経由して
制御フローの結果を制御フロー制御ユニット528へ送るように指示される。最
後に、制御フロー制御ユニット528は各々が8ビツトの2個のベクトルを制御
ライン348を経由してIFU 1’02へ連続して送る。これらのベクトルは
、ベクトル内のビットに対応する論理ロケーションに置かれた命令が解決された
か否か、およびその結果ブランチが行われたか否かを定義している。
好適アーキテクチャ100では、制御フロー制御ユニット528は制御ユニット
528への入力制御信号を受けて連続的に動作する組合せロジックとして実現さ
れている。
9) バイパス ユニットの;
命令発行ユニット498はバイパス制御ユニット520と緊密に協働して、レジ
スタ・ファイル配列472と機能ユニット478o−7間のデータのルーチング
(経路指定)を制御する。バイパス制御ユニット520は、第14図に示すオペ
レーションのレジスタ・ファイル・アクセス、出力およびストア・フェーズと関
連して動作する。レジスタ・ファイル・アクセスの間には、バイパス、制御ユニ
ット520は命令の実行の出力フェーズの間に書き込まれている途中にあるレジ
スタ・ファイル配列472内の宛先レジスタのアクセスを、制御ライン522を
通して認識することができる。この場合、バイパス制御ユニット520は、バイ
パスして機能ユニット配布バス480に返すように、機能ユニット出力バス48
2上に送出されたデータを選択することを指示する。バイパス・ユニット520
に対する制御は、制御ライン542を通して命令発行ユニット498によって行
われる。
rv、想メモリ ′ユニット
VMU 10gのインタフェース定義は第15図に示されている。7M[J 1
08は主にVMU制御ロジック・ユニット800 と内容アドレス(conte
nt addressable)メモリ(CAM) 802から構成されている
。VMU 10gの一般的機能は第16図にブロック図で示しである。
同図において、仮想アドレスの表現は、スペースより(slD(31:28))
、仮想ページ番号(VADDR[27:14])、ID (rID[3:O])
に分割されている。物理アドレスを生成するためのアルゴリズムでは、スペース
IDを使用して、スペース・テーブル842内の16個のレジスタから1つを選
択するようになっている。選択したスペース・レジスタの内容と仮想ページ番号
とを組み合わせて、テーブル索引バッファ(TLB) 844をアクセスすると
きのアドレスとして使用される。34ビツト・アドレスは内容アドレス・タグの
働きをし、バッファ844ないの対応するバッファ・レジスタを指定するために
使用される。タグに一致するものが見つかると、18ビツト幅レジスタ値が物理
アドレス846の上位18ビツトとして得られる。ページ・オフセットと要求I
Dは物理アドレ、ス846の下位14ビツトとして得られる。
タグに一致するものがテーブル索引バッファ844に見つからないとVMU不一
致が通知される。この場合は、MAD 112に維持されている完全ページ・テ
ーブル・データ構造をアクセスする従来のハツシュ・アルゴリズム848を採用
したVMU高速トラップ処理ルーチンを実行させる必要がある。このページ・テ
ーブル850はアーキテクチャ100によって現在使用中のすべてのメモリ・ペ
ージのエントリを含んでいる。ハツシュ・アルゴリズム848は、現在の仮想ペ
ージ変換操作を満たすために必要なページ・テーブル・エントリを判別する。こ
れらのページ・テーブル・エントリはMALI 112からレジスタ・セット”
A゛のトラップ・レジスタヘロードされ、そのあと特殊レジスタ移動命令によっ
てテーブル索引バッファ844へ転送される。例外処理ルーチンから戻ると、v
MU不一致例外を引き起こした命令はIEU 104によって再実行される。仮
想アドレスから物理アドレスへの変換操作は例外を引き起こさないで完了するは
ずである。
VMU制御ロジック800はIFU 102およびIEtJ 104とのデュア
ル・インタフェースとなる。準備信号は制御ライン822ヲ経由LテIEU 1
04 ヘ送られ、VMU 108がアドレス変換のために使用可能であることを
通知する。好適実施例では、VMU 10gは常にIFtl 102の変換要求
を受け付ける準備状態にある。 IFU 102およびIEU 104は共に、
制御ライン328および804を経由して要求を提示することができる。好適ア
ーキテクチャ100では、IFUは優先してVMU 10gをアクセスすること
ができる。その結果、ビジー(使用中)制御ライン820は1つだけがIEU
104に出力される。
IFU 102およびIEU 104は共に、スペースIDと仮想ページ番号フ
ィールドを、それぞれ、制御ライン326および808を経由してVMU制御ロ
ジック800へ送る。
さらに、rEU I(14は読み書き制御信号を制御信号806で出力する。こ
の制御信号は、参照された仮想メモリのメモリ・アクセス保護属性を変更するた
めに、そのアドレスをロード・オペレーションに使用すべきか、ストア・オペレ
ーションに使用すべきを必要に応じて定義している。仮想アドレスのスペースI
Dと仮想ページ・フィールドはCAMユニット802に渡されて、実際の変換操
作が行われる。ページ・オフセットとExTDフィールドは最終的にIEU 1
04から直接にCCU 106へ送られる。物理ページと要求IDフィールドは
アドレス・ライン836を経由してCAMユニット802へ送られる。テーブル
索引バッファに一致するものが見つかると、ヒツト・ラインと制御出力ライン8
30を経由してVMU制御ロジック・ユニット800に通知される。その結果の
18ビツト長の物理アドレスはアドレス出力ライン824上に出力される。
VMυ制御ロジック・ユニット800は、ライン830からヒツトおよび制御出
力制御信号を受けると、仮想メモリ不一致と仮想メモリ例外制御信号をライン3
34.332上に出力する。仮想メモリ変換不一致とは、テーブル索引バッファ
844内のページ・テーブルIDと一致しなかったことを意味する。その他の変
換エラーはすべて仮想メモリ例外として報告される。
最後に、CAMユニット802内のデータ・テーブルは特殊レジスタ間移動命令
をIEU 104が実行することによって変更することができる。読み書き、レ
ジスタ選択、リセット、ロードおよびクリア制御信号はIEU104から制御ラ
イン810.812.814.816.81gを経由して出力される。CAMユ
ニット・レジスタに書くべきデータは特殊アドレス・データ・バス354に接続
されたアドレス・バス808を経由してIEU 104からVMU制御ロジック
・ユニット800によって受信される。このデータは初期設定、レジスタ選択、
Sよび読み書き制御信号を制御する制御信号と同時にバス836を経由してCA
Mユニット802へ転送される。その結果、CAMユニット802内のデータ・
レジスタは、より高レベルのオペレーティング・システムで定義されているコン
テキスト・スイッチを処理するとき必要になるストアのための読出しを含めて、
アーキテクチャ100の動的オペレーションの間に必要に応じて即座に書き出す
ことができる。
■、 キャッシュ ユニット
CCU 106のデータ・インタフェースに対する制御は第17図に示されてい
る。この場合も、IFU102とIEU104用に別々のインタフェースが設け
られている。さらに、論理的に別個のインタフェースがCCU 106に用意さ
れ、命令とデータ転送のためにMCU 110と結ばれている。
IFUインタフェースはアドレス・ライン324上に送出される物理ページ・ア
ドレス、アドレス・ライン824上に送出されるVMU変換ページ・アドレス、
および制御ライン294.296上を別々に転送される要求rDからなっている
。単方向データ転送バス114は命令セット全体をIFU 102と並列に転送
するためのものである。最後に、読取り/使用中および準備制御信号は制御ライ
ン298.300.302を経由してCCU 106へ送られる。
同様に、物理アドレス全体は物理アドレス・バス788を経由してIEU 10
2へ送られる。要求ExIDは制御ライン796を経由してIEU 104のロ
ード/ストア・ユニットとの間で別々に受渡される。80ビツト幅単方向データ
・バスはCCU 106からIEU 104に出力される。
しかし、アーキテクチャ100の好適実施例では、下位の64ビツトだけがIE
U 104によって使用される。全80ビツト・データ転送バスをCCU 10
6内で使用できるようにし、かつサポートしているのは、本アーキテクチャ10
0の引き続いての実行をサポートするためであり、浮動小数点データ経路660
を変更することによって、IEEE標$ 754に準拠する浮動小数点のオペレ
ーションをサポートする。
IEU制御インタフェースは要求、使用中、準備、読み書きを通して、および制
御信号784を通して確立され、実質的には、IFU 102によって使用され
る対応する制御信号と同じである。例外は、ロード・オペレーションとストア・
オペレーションを区別するための読み書き制御信号が設けられていることである
。幅制御信号はIEU 104による各CCU 106へのアクセス時に転送さ
れるバイト数を指定している。これに対して、命令用キャッシュ132のすべて
のアクセスは固定した128ビツト幅データ・フェッチ・オペレーションになっ
ている。
CCU 106は命令用キャッシュ132とデータ用キャッシュ134に対して
従来とほぼ同じキャッシュ制御機能を備えている。好適アーキテクチャ100で
は、命令用キャッシュ132は256個の128ビツト幅命令セットをストアす
る機能を備えた高速メモリになっている。
データ用キャッシュ134は1024個の32ビツト幅ワードのデータをストア
する機能を備えている。命令用キャッシュ132とデータ用キャッシュ134の
内容から即時に満足できない命令要求とデータ要求はMCU 110に渡される
。命令用キャッシュがミスした場合は、28ビツト幅物理アドレスがアドレス・
バス860を経由してMCU 110に渡される。要求IDおよびCCU 10
6とMCUlloのオペレーションを調整するための追加制御信号は制御ライン
862上に送出される。MCU 110がMAU112の必要な読取りアクセス
を調整すると、2つの連続する64ビツト幅データ転送が直接にMALI 11
2力)ら命令用キャッシュ132へ行われる。2つの転送が必要になるのは、デ
ータ・バス136が好適アーテキチャ100では、64ビツト幅バスになってい
るためである。要求したデータがMCU 110を通して返却されると、要求オ
ペレーションの保留中に維持されていた要求IDもIII御ラビライン862由
してCCU 106へ返却される。
転送オペレーションは、命令用キャッシュの転送オペレーションとほぼ同じであ
る。データ・ロードとストア・オペレーションは単一バイトを参照できるので、
全32ビット幅の物理アドレスがアドレス・ノ\ス864を経由してMCU 1
10へ送られる。インタフェースl1lill信号と要求ExlDは制御ライン
866を経由して転送される。双方向の64ビツト幅データ転送はデータ用キャ
ッシュ・バス13gを経由して行われる。
Vl、 11立至乏王二工1
上述したように、マイクロプロセッサ・アーキテクチャ100は、異なるマイク
ロプロセッサ・アーキテクチャ仕様に合わせて再設計を容易化するモジュール方
式で設計されている。第18図は、フロント・エンド部分1010とバック・エ
ンド部分1012に分割された図1のアーキテクチャを示している。IFU 1
02とIEU 104力)らなるVMU 108とIPU 1008はフロント
・エンド部分1010を構成し、CCU 106とMCU 110はバック・エ
ンド部分1012に置かれている。
第19図は第18図のモジュール化アーキテクチャが異なるマイクロプロセッサ
・アーキテクチャを実現するために簡単に変更できる様子を示している。このア
ーキテクチャ100°では、新しいフロント・エンド1010’はアーキテクチ
ャ100におけると同じバック・エンド1012と一緒に使用される設計になっ
ている。フロント・エンド1010°は新しいIPU 100Fと新しいVMU
108°を含んでおり、アーキテクチャ100によって実現されるものと全く
異なる命令セットを処理する。
例えば、アーキテクチャ100はRISC設計であるのに対し、アーキテクチャ
100゛はcrscマイクロプロセッサ設計をエミュレートしている。例えば、
アーキテクチャ100゛はインテル8048Bアーキテクチヤと命令セットをエ
ミュレートすることができる。アーキテクチャ100と100゛の命令セットは
全く異なるものである。事実、アーキテクチャ100における命令セットは、各
々が4バイトに固定されているのに対し、アーキテクチャ100′における命令
セットは可変長になっている。さらに、IPo 100gはセグメント化機能を
備えていないのに対し、IPo 1008’は備えている。フロント・エンド部
分101Oとフロント・エンド部分1010’には、他にも相違点が多数存在す
るが、バック・エンド部分1012は同じままになっている、フロント・エンド
部分101Oと1010’の各々がバック・エンド1012と通信するときに経
由するボートには、前述したようにプロトコルが明確化されて定義されている。
以上の説明から理解されるように、モジュール化設計手法によると、実質的に異
なるアーキテクチャと命令セットをもつ2つまたはそれ以上のマイクロプロセッ
サを、各マイクロプロセッサを初めから設計し直す場合よりも、はるかに短時間
で設計することが可能になる。
以上、本発明の好適実施例を説明してきたが1本発明の範囲内で種々の態様に変
形および変更することが当業者にとって可能であることは勿論である。
特殊レジスタ hり1了ドレス
FIG、−6C
FIG、−8FIG、9
1!!+碌レゾスタ
FIG、12
国際調査報告 M?/、lD Q2/nnQ7nフロントページの続き
(72)発明者 ミャヤマ、ヨシュキ
アメリカ合衆国 95050 カリフォルニア州 サンタ クララ ランチョ
マコーミック ブールバード 2171
(72)発明者 ガルグ、サンジブ
アメリカ合衆国 94539 カリフォルニア州 フリーモント センティネル
ドライブ46820
(72)発明者 ハギワラ、ヤスアキ
アメリカ合衆国 95050 カリフォルニア州 サンタ クララ センロー
ストリート2250 アパート 274
(72)発明者 ワン、ジョハネス
アメリカ合衆国 94062 カリフォルニア州 レッドウッド シティ キン
グ ストリート25
(72)発明者 トラン、クララ エイチ。
アメリカ合衆国 95130 カリフォルニア州 サン ノゼ メイフィールド
アヴ工ニュー 2045
(72)発明者 ラウ、ティーリ
アメリカ合衆国 94306 カリフォルニア州 パロ アルド 力レッジ ア
ヴエニュ−411アパート イ−