(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサを用いて、複数の命令を同時に実行する命令実行方法であって、
第１のプロセッササイクル中に、複数の命令を含む命令の組を、メモリからプリフェッチする動作を開始し、該命令の組の少なくとも一つをプリフェッチバッファに保持し、
該プリフェッチバッファに保持されていた命令の組を、複数の前記命令の組を保持可能な容量を有し、該命令の組を単位として扱う多段のバッファに空きが生じたとき、転送しておき、
前記第１のプロセッササイクルより後のプロセッササイクルにおいて、前記多段のバッファの所定の位置に保持された命令の組に含まれる複数命令を同時にデコードし、
該デコードより後のプロセッササイクルにおいて、前記デコードされた前記複数の命令の間の依存関係を、少なくとも前記マイクロプロセッサが使用するレジスタの使用条件に基づいてチェックすると共に、該依存関係に基づく実行上の制約がないと判断された前記命令については、複数の機能ユニットに順序外での実行を可能に割り当て、
前記多段のバッファに空きが生じた場合には、前記プリフェッチバッファにプリフェチした命令の組を順次、前記多段のバッファに転送すると共に、前記多段のバッファへの転送によって前記プリフェッチバッファに空きがある場合には、前記命令の組の前記プリフェッチバッファへの前記プリフェッチ動作を、前記デコード以降の処理とは無関係に継続し、
前記多段のバッファに保持され命令の組のうち先にデコードされた命令に含まれる前記複数の命令が、前記機能ユニットにより全て実行された後のプロセッササイクルにおいて、前記多段のバッファに保持された命令の組を当該多段のバッファから取り除くと共に、当該多段のバッファに保持された他の命令の組を、前記デコード可能な位置まで前進させる
マイクロプロセッサを用いた命令実行方法。
【請求項２】
請求項１記載のマイクロプロセッサを用いた命令実行方法であって、
前記多段のバッファに保持された命令の組に含まれる複数の命令を同時にデコードする所定の位置は、前記多段のバッファに記憶された前記複数の命令が転送される方向における最終段を少なくとも含む位置である
マイクロプロセッサを用いた命令実行方法。
【請求項３】
前記複数の命令のデコードは、前記第１のプロセッササイクルに引き続く第２のプロセッササイクル中に開始される請求項２記載のマイクロプロセッサを用いた命令実行方法。
【請求項４】
前記依存関係のチェックと前記複数の機能ユニットへの前記複数の命令の割り当てを行なう前記プロセッササイクルは、前記第２のプロセッササイクルに引き続く第３のプロセッササイクルである請求項３記載のマイクロプロセッサを用いた命令実行方法。
【請求項５】
請求項１ないし請求項４記載の命令実行方法であって、
前記マイクロプロセッサは、バスを介して接続された外部メモリからデータを読み出す処理を実行する命令実行方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＲＩＳＣ型マイクロプロセッサ・アーキテクチャの設計に関し、具体的には、複数の命令を同時平行に実行することのできるＲＩＳＣマイクロプロセッサ・アーキテクチャに関する。
なお、以下に列挙した米国特許出願は本件特許出願と同時に米国特許出願され、係属中のものであるが、これらの米国特許出願に開示されており、かつそれぞれ対応して出願された日本での特許出願に開示されている事項は、その出願番号を本明細書で引用することにより本明細書の一部を構成するものとする。
（１）発明の名称「拡張可能ＲＩＳＣマイクロプロセッサ・アーキテクチャ」（Ｅｘｔｅｎｓｉｂｌｅ  ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）ＳＭＯＳ  ７９８５  ＭＣＦ／ＧＢＲ，米国特許出願第０７／７２７，０５８号）１９９１年７月８日出願、発明者Ｌｅ  Ｔ．Ｎｇｕｙｅｎ他、およびこれに対応する特願平５ー５０２１５３号（特表平６ー５０１１２４号公報）。
（２）発明の名称「アーキテクチャ上の依存関係を隔離したＲＩＳＣマイクロプロセッサ・アーキテクチャ」（ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｗｉｔｈ  ｉｓｏｌａｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒａｌ  Ｄｅｐｅｎｄｅｎｃｉｅｓ）ＳＭＯＳ  ７９８７  ＭＣＦ／ＧＢＲ，米国特許出願第０７／７２６，７４４号、１９９１年７月８日出願、発明者Ｌｅ  Ｔ．Ｎｇｕｙｅｎ他、及びこれに対応する特願平５ー５０２１５２号（特表平６ー５０２０３４号公報）。
（３）発明の名称「複数型レジスタ・セットを採用したＲＩＳＣマイクロプロセッサ・アーキテクチャ」（ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｉｍｐｌｅｍｅｎｔｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｔｙｐｅｄ  Ｒｅｇｉｓｔｅｒ  Ｓｅｔｓ）ＳＭＯＳ  ７９８８  ＭＣＦ／ＧＢＲ／ＲＣＣ，米国特許出願第０７／７２６，７７３号、１９９１年７月８日出願、発明者Ｓａｎｊｉｖ  Ｇａｒｇ他、及びこれに対応する特願平５ー５０２４０３号（特表平６ー５０１８０５号公報。
（４）発明の名称「高速トラップと例外状態をインプリメントしたＲＩＳＣマイクロプロセッサ・アーキテクチャ（ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｉｍｐｌｅｍｅｎｔｉｎｇ  Ｆａｓｔ  Ｔｒａｐ  ａｎｄ  Ｅｘｃｅｐｔｉｏｎ  Ｓｔａｔｅ）ＳＭＯＳ  ７９８９  ＭＣＦ／ＧＢＲ／ＷＳＷ，米国特許出願第０７／７２６，９４２号、１９９１年７月８日出願、発明者Ｌｅ  Ｔ．Ｎｇｕｙｅｎ他、及びこれに対応する特願平５ー５０２１５４号（特表平６ー５０２０３５号公報）。
（５）発明の名称「シングル・チップ・ページ・プリンタ・コントローラ」（Ｓｉｎｇｌｅ  Ｃｈｉｐ  Ｐａｇｅ  Ｐｒｉｎｔｅｒ  Ｃｏｎｔｒｏｌｌｅｒ）ＳＭＯＳ  ７９９１  ＭＣＦ／ＧＢＲ，米国特許出願第０７／７２６，９２９号、１９９１年７月８日出願、発明者Ｄｅｒｅｋ  Ｊ．Ｌｅｎｔｚ他、及びこれに対応する特願平５ー５０２１４９号（特表平６ー５０１５８６号公報）。
（６）発明の名称「複数の異種プロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャ」（Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｃａｐａｂｌｅ  ｏｆ  Ｓｕｐｐｏｒｔｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｐｒｏｃｅｓｓｏｒｓ）ＳＭＯＳ  ７９９２  ＭＣＦ／ＷＭＢ，米国特許出願第０７／７２６，８９３号、１９９１年７月８日出願、発明者Ｄｅｒｅｋ  Ｊ．Ｌｅｎｔｚ他、及びこれに対応する特願平５ー５０２１５１号（特表平６ー５０１１２３号公報）。
【０００２】
本明細書の記述は本件出願の優先権の基礎たる米国特許出願０７／７２７，０６６号の明細書の記載に基づくものであって、当該米国特許出願の番号を参照することによって、当該米国特許出願の明細書の記載内容が本明細書の一部分を構成するものとする。
【０００３】
【従来の技術】
近年、マイクロプロセッサ・アーキテクチャの設計は複合命令セット・コンピュータ（ＣＩＳＣ−Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャを採用したものから、より単純化された縮小命令セット・コンピュータ（ＲＩＳＣ−Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャを採用したものまでに発達している。ＣＩＳＣアーキテクチャは大部分がハードウェアで命令実行パイプラインを実現し、サポートしていることを特徴としている。従来のパイプライン構造の代表的なものは、命令フェッチ、命令デコード、データ・ロード、命令実行、データ・ストアのステージからなり、これらの順序は固定している。命令の組の異なる部分をパイプラインのそれぞれのステージを通して同時平行に実行すると、パフォーマンス上の利点が得られる。パイプラインを長くすると、利用できる実行ステージの数が増加し、同時平行に実行できる命令数が増加する。
【０００４】
ＣＩＳＣパイプライン・アーキテクチャの効率を制約する一般的問題として、２つある。最初の問題は、先に実行される条件コード設定命令がパイプラインを通して実質的に実行を完了するまで、条件付ブランチ命令が正しく評価できないことである。
従って、そのあとに続く条件付命令の実行が遅延または停止（ｓｔａｌｌ）されるので、いくつかのパイプライン・ステージが数プロセッサ・サイクルの間インアクティブ（ｉｎａｃｔｉｖｅ）、すなわち不動作のままになっている。代表例として条件コードは実行ステージを通してある命令の処理が完了したときだけ、プロセッサ状況レジスタ（ＰＳＲ）とも呼ばれる条件コード・レジスタに書かれている。そのために、ブランチ条件コードが判断されるまでの数プロセッサ・サイクルの間、条件付きブランチ命令をデコード・ステージにおいたままパイプラインを停止させなければならない。パイプラインが停止すると、スループットの損失が大になる。さらにコンピュータの平均スループットはプログラム命令ストリームの中で条件付きブランチ命令が条件コード設定命令のあとに近接して現れる頻度によって左右される。
【０００５】
第２の問題は、プログラム命令ストリームの中で近接して置かれている命令がプロセッサ・レジスタ・ファイルの同じレジスタを参照する傾向があることから起こる問題である。データ・レジスタは、連続する命令のストア・ステージとロード・ステージにおいてデータの宛先、またはソースとして頻繁に使用されている。一般的にデータをレジスタ・ファイルにストアする命令が少なくとも１つの実行ステージを通して処理を完了してからでなければ、後続命令のロード・ステージ処理でレジスタ・ファイルをアクセスすることができないようになっている。多数の命令を実行するには、ストア・データを得るために１実行ステージで複数のプロセッサ・サイクルを必要とするので、実行ステージのオペレーションが続いている間、パイプライン全体が停止しているのが代表的である。その結果、コンピュータの実行スループットは、命令ストリームが実行される順序に左右されることになる。
【０００６】
第３の問題は、命令自体の実行から起こる問題ではなく、マイクロプロセッサ自体のハードウェア・サポートによる命令実行環境の維持、すなわち、マシンの状態（ｓｔａｔｅ−ｏｆ−ｍａｃｈｉｎｅ）から起こる問題である。現在のＣＩＳＣマイクロプロセッサのハードウエア・サブシステムは、命令の実行中にトラップ条件が現れると、それを検出できるようになっている。各トラップを処理するには、対応するトラップ処理ルーチンをプロセッサに実行させる必要がある。トラップが検出されたとき、実行パイプラインをクリアして、トラップ処理ルーチンが即時に実行できるようにする必要がある。同時にトラップが現れた正確な個所で、そのときのマシンの状態を設定しなければならない。この正確な個所は、そのとき実行中の最初の命令が割り込みとトラップのために完了したときと、例外のために実行されなかった命令の直前に現れる。そのあと、マシンの状態と、この場合も、トラップの内容に応じて実行中の命令自体を処理ルーチンの完了時に復元しなければならい。その結果、各トラップまたは関連事象（イベント）が起こると、処理ルーチンの開始時と終了時にパイプラインをクリアし、正確なマシンの状態をセーブし、復元するために待ち時間が生じ、プロセッサのスループットがその分だけ減少することになる。
【０００７】
ＣＩＳＣアーキテクチャが潜在的にもつスループットを向上するために、これらの問題に対する解決方法がいろいろと試みられている。条件付きブランチ命令が正しく実行されると想定すれば、ブランチ条件コードの最終的判断に先立って、パイプライン実行を試行的に進めることが可能である。また、レジスタが修正されると想定すれば、後続の命令を試行的に実行することが可能である。処理ルーチンの実行を必要とするような例外の発生を最小にすることによって、プログラム命令ストリームの処理に割り込みをかける例外の発生頻度を少なくすることを、別のハードウエアで行うことが可能である。
【０００８】
これらの解決方法は、明らかに追加ハードウエアを複雑化するものではあるが、その方法自身にも別の問題がある。つまり、ブランチ条件コードの最終的判断またはレジスタ・ファイルのストア・アクセスに先立って命令の実行を続けるためには、条件付きブランチのロケーションを含むプログラム命令ストリーム内の複数の個所のいずれかにレジスタ・ファイルの各々の修正内容に、及び例外が発生した場合には、最後の複数の命令の実行が完了した以前の個所にマシンの状態が復元可能であることが必要である。その結果、さらに別のサポート・ハードウエアが必要になり、しかも、いずれかのパイプライン・ステージのサイクル・タイムが大幅に増加しないように、ハードウエアを設計しなければならない。
【０００９】
ＲＩＳＣアーキテクチャでは、マイクロプロセッサ・アーキテクチャのハードウエアによる実現を大幅に単純化することによって、上記の問題の多くを解決することを試みている。極端な場合には、各ＲＩＳＣ命令はロード・サイクル、実行サイクル・及びストア・サイクルからなる３つのパイプライン化プログラム・サイクルだけで実行される。ロード及びストア・データをバイパスすることによって、従来のＲＩＳＣアーキテクチャは３ステージ・パイプラインにおいてサイクルあたり１命令の実行を可能にすることを基本にしている。
【００１０】
可能な限り、ＲＩＳＣアーキテクチャにおけるハードウエア・サポートは最小化され、必要とする機能はソフトウェア・ルーチンで実行するようにしている。その結果、ＲＩＳＣアーキテクチャは、最適に適合したパイプラインで実行される単純なロード／ストア命令セットの使用により大幅な柔軟性と高速化が期待できる。また、実際にはＲＩＳＣアーキテクチャは短い高性能パイプラインと増加した命令数を実行する必要性との調和を図ると、必要とするすべての機能を実現できることが判明している。
【００１１】
ＲＩＳＣアーキテクチャの設計は一般的に、ブランチ、レジスタ参照及び例外に関してＣＩＳＣアーキテクチャに起こっている問題を回避し、あるいは最小化するようになっている。ＲＩＳＣアーキテクチャにおけるパイプラインは短く、スピードが最適化されている。パイプラインを短くすると、パイプライン停止（ｓｔａｌｌ）またはクリアによって生じる結果を最小化するとともに、マシンの状態を以前の実行個所に復元する際に起こる問題を最小化することができる。
【００１２】
しかし、一般に認識されている現水準を大幅に超えたスループット・パフォーマンスの向上は、従来のＲＩＳＣアーキテクチャによっては容易に達成することができない。その結果、これに変わるスーパースカラー（ｓｕｐｅｒ−ｓｃａｌｅｒ）と呼ばれるアーキテクチャが種々提案されている。これらのアーキテクチャは、一般的には、複数の命令を同時並行に実行することによって、プロセッサのスループットを比例的に向上させることを試みている。残念ながら、この種のアーキテクチャの場合もＣＩＳＣアーキテクチャの問題と同じでないとしても、条件付きブランチ、レジスタ参照、及び例外処理に同じような問題が起こっている。
【００１３】
【発明が解決しようとする課題】
したがって、本発明の一般的目的は従来のＣＩＳＣアーキテクチャとＲＩＳＣアーキテクチャに対して大幅なパフォーマンス向上が得られ、さらにマイクロプロセッサで実現するのに適した高性能の、ＲＩＳＣベースのスーパースカラー型プロセッサ・アーキテクチャを提供することである。
【００１４】
【課題を解決するための手段】
この目的を達成するために、本発明は、
マイクロプロセッサを用いて、複数の命令を同時に実行する命令実行方法であって、
第１のプロセッササイクル中に、複数の命令を含む命令の組を、メモリからプリフェッチし、
該プリフェッチした命令の組を、前記第１のプロセッササイクルより後のプロセッササイクルにおいて、複数の前記命令の組を保持可能な容量を有するバッファに保持し、
前記バッファの所定の位置に保持された命令の組に含まれる複数命令を同時にデコードし、
該デコードより後のプロセッササイクルにおいて、前記デコードされた前記複数の命令の間の依存関係を、少なくとも前記レジスタの使用条件に基づいてチェックすると共に、該依存関係に基づく実行上の制約がないと判断された前記命令については、複数の機能ユニットに順序外での実行を可能に割り当て、
前記命令の組の前記プリフェッチを、前記バッファに空きがある場合には、前記デコード以降の処理とは無関係に継続して、前記バッファに、前記メモリからプリフェチした命令の組を順次保持し、
前記バッファに保持されデコードされた命令の組に含まれる前記複数の命令が、前記機能ユニットにより全て実行された後のプロセッササイクルにおいて、前記バッファに保持された命令の組を当該バッファから取り除くと共に、当該バッファに保持された他の命令の組を、前記デコード可能な位置まで前進させる
ことを要旨としている。ここで用いられるマイクロプロセッサ・アーキテクチャはメモリからフェッチした命令を同時並行に実行することを可能にしている。このマイクロプロセッサ・アーキテクチャはメモリから命令の組をフェッチするための命令プリフェッチ・ユニットを備えている。各命令の組は複数の固定長命令から構成されている。
【００１５】
こうしたマイクロプロセッサは、レジスタ・ファイルを備えることができ、レジスタ・ファイルはレジスタ・データを一時的にストアしておくために使用される別セットのデータ・レジスタを含むことも可能である。これらの一時データ・レジスタは、命令が順序外（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）で実行される際に機能ユニットによって処理されたデータを受け入れるために命令実行ユニットによって利用される。一時データ・レジスタにストアされたデータは選択的に保持され、そのあと先行するすべての順序内（ｉｎ−ｏｒｄｅｒ）命令の実行が完了してリタイアされた、命令ストリーム内の命令ロケーションまで正確なマシン状態が進んだときクリアされるか、レジスタ・ファイルにリタイアされる。
【００１６】
最後にメモリからの命令の組のプリフェッチは、メイン・プログラム命令ストリーム、ターゲット条件付きブランチ命令ストリーム及びプロシージャ命令ストリームのプリフェッチを可能にする複数のプリフェッチ経路によって容易化されている。ターゲット条件付きブランチ・プリフェッチ経路を利用すると、条件付きブランチ命令となり得る両方の命令ストリーム、つまりメインとターゲットを同時にプリフェッチすることが可能である。プロシージャ命令プリフェッチ経路を利用すると、メインまたはターゲット命令ストリームにある一つの命令を実行する拡張プロシージャの実行を可能にする上で効果的な補足的命令ストリームを可能にする。また、プロシージャ・プリフェッチ経路によると、少なくともメイン・プリフェッチ・バッファをクリアすることなく、これらの拡張プロシージャをフェッチして実行することができる。
【００１７】
以上のとおり、本発明の利点は、基本的にＲＩＳＣ型のコア・アーキテクチャを利用して非常に高性能なスループットを実現するアーキテクチャを提供することにある。
本発明の別の利点は、サイクルごとに複数の命令の実行を可能にしたことにある。
さらに、本発明の利点は、複数の命令を同時並行に実行することを最適化するために必要な機能ユニットを動的に（ダイナミック）に選択して、利用することを可能にしたことである。さらに本発明の別の利点は、正確なマシン状態復帰機能をサポートするメカニズムと一体化したレジスタ・ファイル・ユニットを設けたことにある。
【００１８】
さらに、本発明の別の利点は、レジスタ・ファイル・ユニット内に複数のレジスタ・ファイルを内蔵し、これらのレジスタ・ファイルは汎用化され、タイプ化され、複数の独立並列整数レジスタ・ファイルとしてのオペレーション、浮動少数点ファイルと整数ファイルとしてのレジスタ・ファイルのオペレーションおよび専用ブール・レジスタ・ファイルのオペレーションを含む、複数のレジスタ・ファイル機能を備えていることにある。
【００１９】
さらに、本発明の別の利点は、ロードとストア・オペレーション及び例外と割り込みの処理を効率的な命令キャンセル・メカニズムやロード／ストア順序シンクロナイザを含む、正確なマシン状態復帰機能の使用により正確に実行できるようにしたことである。さらに、本発明の別の利点は、専用レジスタ・ファイル・ユニットによってトラップ状態をサポートして待ち時間を最小化し、処理スループットを向上したことにある。
【００２０】
さらに、本発明の別の利点は、メイン及びターゲット・ブランチ・プリフェッチ待ち行列を設け、それによって正確でないターゲット・ブランチ・ストリームが先に実行されても、本発明によって得られる全体的な処理スループットに与える影響を最小化したことにある。さらに、プロシージャ命令プリフェッチ待ち行列が設けられているので、メインまたはターゲット・ブランチ命令ストリームの実行に効率的に割り込んで、プロシージャ・ルーチンの実行を通して新規命令を実現することを可能にし、特にプロシージャ・ルーチンを外部から修正することによって、組み込みプロシージャ命令を実現することを可能にしたことである。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。なお、以下の目次に従って順次説明する。
【００２２】
目次
Ｉ．    マイクロプロセッサ・アーキテクチャの概要
ＩＩ．  命令フェッチユニット
Ａ）ＩＦＵデータ経路
Ｂ）ＩＦＵ制御経路
Ｃ）ＩＦＵ／ＩＥＵ制御インタフェース
Ｄ）ＰＣロジック・ユニットの詳細
１）ＰＦおよびＥｘＰＣ制御／データ・ユニットの詳細
２）ＰＣ制御アルゴリズムの詳細
Ｅ）割込みおよび例外の処理
１）概要
２）非同期割込み
３）同期例外
４）ハンドラ・ディスパッチとリターン
５）ネスト
６）トラップ一覧表
ＩＩＩ．命令実行ユニット
Ａ）ＩＥＵデータ経路の詳細
１）レジスタ・ファイルの詳細
２）整数データ経路の詳細
３）浮動小数点データ経路の詳細
４）ブール・レジスタ・データ経路の詳細
Ｂ）ロード／ストア制御ユニット
Ｃ）ＩＥＵ制御経路の詳細
１）Ｅデコード・ユニットの詳細
２）キャリー・チェッカ・ユニットの詳細
３）データ依存関係チェッカ・ユニットの詳細
４）レジスタ改名ユニットの詳細
５）命令発行ユニットの詳細
６）完了制御ユニットの詳細
７）リタイア制御ユニットの詳細
８）制御フロー制御ユニットの詳細
９）バイパス制御ユニットの詳細
ＩＶ．仮想メモリ制御ユニット
Ｖ．  キャッシュ制御ユニット
ＶＩ．要約及び結論
以下に目次に従って説明する。
【００２３】
Ｉ．マイクロプロセッサ・アーキテクチャの概要
図１は本発明のアーキテクチャ１００の概要を示すものである。命令フェッチ・ユニット（ＩＦＵ）１０２と命令実行ユニット（ＩＥＵ）１０４はアーキテクチャ１００の中心となる機能要素である。仮想メモリ・ユニット（ＶＭＵ）１０８、キャッシュ制御ユニット（ＣＵＵ）１０６、およびメモリ制御ユニット（ＭＣＵ）１１０は、ＩＦＵ１０２とＩＥＵ１０４の機能を直接にサポートするためのものである。また、メモリ・アレイ・ユニット（ＭＡＵ）１１２は基本的要素として、アーキテクチャ１００を動作させるためのものである。もっともＭＡＵ１１２はアーキテクチャ１００の一つの一体的なコンポーネントとして直接的に存在しない。つまり、本発明の好適実施例ではＩＦＵ１０２、ＩＥＵ１０４、ＶＭＵ１０８、ＣＣＵ１０６およびＭＣＵ１１０は従来の０．８ミクロン設計ルールの低電力ＣＭＯＳプロセスを利用してシングル・シリコン・チップ上に実装され、約１，２００，０００個のトランジスタから構成されている。アーキテクチャ１００の標準プロセッサまたはシステムのクロック速度は４０ＭＨｚである。しかし、本発明の好適実施例によれば、プロセッサの内部クロック速度は１６０ＭＨｚである。
【００２４】
ＩＦＵ１０２の基本的役割は命令をフェッチし、ＩＥＵ１０４による実行が保留されている間命令をバッファに置いておき、一般的には次の命令をフェッチするとき使用される次の仮想アドレスを計算することである。
【００２５】
本発明の好適実施例では、各命令は長さが３２ビットに固定されている。命令の組、つまり、４個の命令からなる「バケット」（ｂｕｃｋｅｔ）はＣＣＵ１０６内の命令用キャッシュ１３２から１２８ビット幅の命令バス１１４を経由してＩＦＵ１０２によって同時にフェッチされる。命令の組の転送は、制御ライン１１６経由で送られてきた制御信号によって調整されて、ＩＦＵ１０２とＣＣＵ１０６間で行われる。フェッチされる命令の組の仮想アドレスはＩＦＵ仲裁、制御およびアドレスを兼ねたバス１１８経由でＩＦＵ１０２から出力され、さらにＩＥＵ１０４とＶＭＵ１０８間を結合する仲裁、制御およびアドレス共用バス１２０上に送出される。ＶＭＵ１０８へのアクセスの仲裁（ａｒｂｉｔｒａｔｉｏｎ）はＩＦＵ１０２とＩＥＵ１０４の両方がＶＭＵ１０８を共通の共用資源として利用することから行われる。本発明の好適実施例では、仮想アドレスの物理ページ内のアドレスを定義する下位ビットは、ＩＦＵ１０２から制御ライン１１６を経由して直接にキャッシュ制御ユニット１０６へ転送される。ＩＦＵ１０２から与えられる仮想アドレスの仮想上位ビットは、バス１１８、１２０のアドレス部分によってＶＭＵ１０８へ送られ、そこで対応する物理ページ・アドレスに変換される。ＩＦＵ１０２では、この物理ページ・アドレスは変換要求がＶＭＵ１０８に出されたあと内部プロセッサ・クロック・サイクルの１／２の間に、ＶＭＵ１０８からアドレス制御ライン１２２経由で直接にキャッシュ制御ユニット１０６へ転送される。
【００２６】
ＩＦＵ１０２によってフェッチされた命令ストリームの方は命令ストリーム・バス１２４経由でＩＥＵ１０４に渡される。制御信号は、制御ライン１２６を介してＩＦＵ１０２とＩＥＵ１０４間でやりとりされる。さらに、ある種の命令フェッチ・アドレス、例えばＩＥＵ１０４内に存在するレジスタ・ファイルへアクセスを必要とするアドレスは、制御ライン１２６内のターゲット・アドレス・リターン・バスを経由してＩＦＵ１０２へ送り返される。
【００２７】
ＩＥＵ１０４は、ＣＣＵ１０６内に設けられたデータ用キャッシュ１３４との間で８０ビット幅双方向データ・バス１３０を通してデータをストアし、データを取り出す。ＩＥＵ１０４がデータ・アクセスするときの物理アドレス全体は制御バス１２８のアドレス部分によってＣＣＵ１０６へ渡される。また、制御バス１２８を通して、データ転送を管理するための制御信号をＩＥＵ１０４とＣＣＵ１０６との間でやりとりすることもできる。ＩＥＵ１０４は、仮想データ・アドレスをＣＣＵ１０６へ渡すのに適した物理データ・アドレスに変更するための資源としてＶＭＵ１０８を使用する。データ・アドレスの仮想化部分は、仲裁、制御およびアドレス・バス１２０を経由してＶＭＵ１０８へ渡される。ＩＦＵ１０２に対するオペレーションと異なり、ＶＭＵ１０８は対応する物理アドレスをバス１２０経由でＩＥＵ１０４へ返却する。アーキテクチャ１００の好適実施例では、ＩＥＵ１０４は物理アドレスを使用して、ロード／ストア・オペレーションが正しいプログラム・ストリーム順序で行われていることを確かめている。
【００２８】
ＣＣＵ１０６は、物理アドレスで定義したデータ要求を命令用キャッシュ１３２とデータ用キャッシュ１３４のどちらか該当する方から満足できるかどうかを判断する従来のハイレベル機能を備えている。アクセス要求が命令用キャッシュ１３２またはデータ用キャッシュ１３４へアクセスすることで正しく満足できる場合は、ＣＣＵ１０６はデータ・バス１１４、１２８を経由するデータ転送を調整して、その転送を行う。
【００２９】
データ・アクセス要求が命令用キャッシュ１３２またはデータ用キャッシュ１３４から満足できない場合は、ＣＣＵ１０６は対応する物理アドレスをＭＣＵ１１０へ渡し、ＭＡＵ１１２が、要求しているのは読取りアクセスであるか書込みアクセスであるかを判別し、各要求ごとにＣＣＵ１０６のソースまたは宛先キャッシュ１３２、１３４を識別するのに十分な制御情報および要求オペレーションをＩＦＵ１０２またはＩＥＵ１０４から出された最終的データ要求と関係づけるための追加識別情報も一緒にＭＣＵ１１０へ渡される。
【００３０】
ＭＣＵ１１０は、好ましくはポート・スイッチ・ユニット１４２を備えており、このユニットは単方向データ・バス１３６によってＣＣＵ１０６との命令用キャッシュ１３２に接続され、双方向データ・バス１３８によってデータ用キャッシュ１３４に接続されている。ポート・スイッチ１４２は基本的には大きなマルチプレクサであり、制御バス１４０から得た物理アドレスを複数のポートＰO Ｐn １４６0-n のいずれかへ送ることを可能にし、また、ポートからデータ・バス１３６、１３８へのデータの双方向転送を可能にする。ＭＣＵ１１０によって処理される各メモリ・アクセス要求は、ＭＡＵ１１２をアクセスするとき要求されるメイン・システム・メモリ・バス１６２へのアクセスを仲裁する目的でポート１４６0-n の１つと関連づけられる。データ転送の接続が確立されると、ＭＣＵは制御情報を制御バス１４０経由でＣＣＵ１０６に渡して、ポート１４１およびポート１４６0-n のうち対応する１つを経由して命令用キャッシュ１３２またはデータ用キャッシュ１３４とＭＡＵ１１２との間でデータを転送することを開始する。アーキテクチャ１００の好適実施例では、ＭＣＵ１１０は、実際にはＣＣＵ１０６とＭＡＵ１１２間を転送する途中にあるデータをストアまたはラッチしない。このようにしたのは、転送の待ち時間を最小にし、ＭＣＵ１１０に一つだけ存在するデータを追跡または管理しないですむようにするためである。
【００３１】
ＩＩ．命令フェッチ・ユニット
命令フェッチ・ユニット１０２の主要エレメントを図２に示す。これらのエレメントのオペレーションおよび相互関係を理解しやすくするために、以下ではこれらのエレメントがＩＦＵデータ経路と制御経路に関与する場合を考慮して説明する。
【００３２】
Ａ）ＩＦＵデータ経路
ＩＦＵデータ経路は、命令の組を受け取ってプリフェッチ・バッファ２６０に一時的にストアしておく命令バス１１４から始まる。プリフェッチ・バッファ２６０からの命令の組はＩデコード・ユニット２６２を通ってＩＦＩＦＯユニット２６４へ渡される。命令ＦＩＦＯ２６４の最後の２ステージにストアされた命令の組は、データ・バス２７８、２８０を通してＩＥＵ１０４に連続的に取り出して利用することができる。
【００３３】
プリフェッチ・バッファ・ユニット２６０は一度に１つの命令の組を命令バス１１４から受け取る。完全な１２８ビット幅の命令の組は、一般にプリフェッチ・バッファ２６０のメイン・バッファ（ＭＢＵＦ）１８８部分の４つの１２８ビット幅プリフェッチ・バッファ・ロケーションの１つに並列に書き込まれる。追加の命令の組は最高４つまで同じように、２つの１２８ビット幅ターゲット・バッファ（ＴＢＵＦ）１９０のプリフェッチ・バッファ・ロケーションに、または２つの１２８ビット幅プロシージャ・バッファ（ＥＢＵＦ）１９２のプリフェッチ・バッファ・ロケーションに書き込むことが可能である。好適アーキテクチャ１００では、ＭＢＵＦ１８８、ＴＢＵＦ１９０またはＥＢＵＦ１９２内のプリフェッチ・バッファ・ロケーションのいずれかに置かれている命令の組は、プリフェッチ・バッファ出力バス１９６へ転送することが可能である。さらに、直接フォールスルー（ｆａｌｌ  ｔｈｒｏｕｇｈ）命令セット・バス１９４は、命令バス１１４をプリフェッチ・バッファ出力バス１９６と直接に接続することによってＭＢＵＦ１８８、ＴＢＵＦ１９０およびＥＢＵＦ１９２をバイパスするためのものである。
【００３４】
好適アーキテクチャ１００では、ＭＢＵＦ１８８は名目的またはメイン命令ストリーム中の命令の組をバッファするために利用される。ＴＢＵＦ１９０は、試行的なターゲット・ブランチ命令ストリームからプリフェッチした命令の組をバッファするために利用される。その結果、プリフェッチ・バッファ・ユニット２６０を通して、条件付きブランチ命令のあとに置かれている可能性のある両方の命令ストリームをプリフェッチすることができる。この機能により、ＭＡＵ１１２の待ち時間は長くなるとしても、少なくともＣＣＵ１１２への以後のアクセス待ち時間がなくなるので、条件付きブランチ命令の解決時にどの命令ストリームが最終的に選択されるかに関係なく、条件付きブランチ命令のあとに置かれた正しい次の命令の組を得て、実行することができる。本発明の好適アーキテクチャ１００では、ＭＢＵＦ１８８とＴＢＵＦ１９０があるために、命令フェッチ・ユニット１０２は現れる可能性のある両方の命令ストリームをプリフェッチすることができ、命令実行ユニット１０４に関連して以下に説明するようにただしいと想定された命令ストリームを引き続き実行することができる。条件付きブランチ命令が解決されたとき、正しい命令ストリームがプリフェッチされて、ＭＢＵＦ１８８に入れられた場合は、ＴＢＵＦ１９０に残っている命令の組は無効にされるだけである。他方、正しい命令ストリームの命令の組がＴＢＵＦ１９０に存在する場合は、命令プリフェッチ・バッファ・ユニット２６０を通して、これらの命令の組がＴＢＵＦ１９０から直接に並行にＭＢＵＦ１８８内のそれぞれのバッファ・ロケーションへ転送される。それ以前にＭＢＵＦ１８８にストアされた命令の組は、ＴＢＵＦ１９０から転送された命令の組を重ね書きすることによって事実上無効にされる。ＭＢＵＦロケーションへ転送するＴＢＵＦ命令の組が無ければ、そのロケーションには無効の印が付けられるだけである。
【００３５】
同様に、ＥＢＵＦ１９２はプリフェッチ・バッファ２６０を経由する別の代替プリフェッチ経路となるものである。ＥＢＵＦ１９２は好ましくはＭＢＵＦ１８８命令ストリームに現れた単一の命令、つまり、「プロシージャ」命令で指定されたオペレーションを実現するために使用される代替命令ストリームをプリフェッチする際に利用される。このようにすると、複雑な命令や拡張された命令はソフトウェア・ルーチンまたはプロシージャを通して実現することができ、すでにプリフェッチされてＭＢＵＦ１８８に入れられた命令ストリームを乱すことなくプリフェッチ・バッファ・ユニット２６０を通して処理することができる。一般的には、本発明によれば、最初にＴＢＵＦ１９０に現れたプロシージャ命令を処理することができるが、プロシージャ命令ストリームのプリフェッチは保留され、以前に現れた保留中の条件付きブランチ命令ストリームが全て解決される。これにより、プロシージャ命令ストリームに現れた条件付きブランチ命令は、ＴＢＵＦ１９０の使用を通して矛盾なく処理されることになる。従って、プロシージャ・ストリームでブランチが行われる場合は、ターゲットとなる命令の組はすでにプリフェッチされてＴＢＵＦ１９０に入れられているので、ＥＢＵＦ１９２へ並列に転送することができる。
【００３６】
最後にＭＢＵＦ１８８、ＴＢＵＦ１９０およびＥＢＵＦ１９２の各々はプリフェッチ・バッファ出力バス１９６に接続され、プリフェッチ・ユニットによってストアされた命令の組を出力バス１９６上に送出するようになっている。さらに、バス１９４を通過するフローは命令の組を命令バス１１４から直接に出力バス１９６へ転送するためのものである。
【００３７】
好適アーキテクチャ１００ではＭＢＵＦ１８８、ＴＢＵＦ１９０、ＥＢＵＦ１９２内のプリフェッチ・バッファは直接的にはＦＩＦＯ構造を構成していない。その代わりにどのバッファ・ロケーションも出力バス１９６に接続されているので、命令用キャッシュ１３２から取り出された命令の組のプリフェッチ順序に大幅な自由度をもたせることができる。つまり、命令フェッチ・ユニット１０２は命令ストリームに一定順序で並んだ命令順に命令の組を判断して要求するのが一般的になっている。しかし、命令の組がＩＦＵ１０２へ返されるときの順序は、要求したある命令の組が使用可能で、ＣＣＵ１０６だけからアクセス可能であり、他の命令の組はＭＡＵ１０２のアクセスを必要とするような場合に合わせて順序外に現れることも可能である。
【００３８】
命令の組は一定順序でプリフェッチ・バッファ・ユニット２６０へ返されない場合があっても、出力バス１９６上に出力される命令の組の列は、一般的にＩＦＵ１０２から出された命令の組要求の順序に従っていなければならない。順序内（ｉｎ−ｏｒｄｅｒ）の命令ストリーム列は、例えばターゲット・ブランチ・ストリームの試行的実行に影響されるためである。
【００３９】
Ｉデコード・ユニット２６２は、ＩＦＩＦＯユニット２６４のスペースが許す限り、プリフェッチ・バッファ出力バス１９６から命令の組を、普通は１サイクルに１つの割合で受け取る。一つの命令の組を構成する４個の命令からなる各セットはＩデコード・ユニット２６２によって並行にデコードされる。関係の制御フロー情報がＩＦＵ１０２の制御経路部分のためにライン３１８から抜き出されている間は、命令の組の内容はＩデコード・ユニット２６２によって変更されない。
【００４０】
Ｉデコード・ユニット２６２からの命令の組はＩＦＩＦＯユニット２６４の１２８ビット幅入力バス１９８上に送出される。内部的には、ＩＦＩＦＯユニット２６４はマスタ／スレーブ・レジスタ２００、２０４、２０８、２１２、２１６、２２０、２２４の列から構成されている。各レジスタはその後続レジスタに接続され、マスタ・レジスタ２００、２０８、２１６の内容がＦＩＦＯオペレーションの内部プロセッサ・サイクルの前半時にスレーブ・レジスタ２０４、２１２、２２０へ転送され、そのあとオペレーションの後半サイクル時に次の後続マスタ・レジスタ２０８、２１６、２２４へ転送されるようになっている。入力バス１９８はマスタ・レジスタ２００、２０８、２１６、２２４の各々の入力に接続され、ＦＩＦＯオペレーションの後半サイクル時に命令の組がＩデコード・ユニット２６２からマスタ・レジスタに直接にロードされるようになっている。しかし、マスタ・レジスタを入力バス１９８からロードすることは、ＩＦＩＦＯユニット２６４内でデータをＦＩＦＯシフトすることと同時に行う必要はない。その結果、命令ＦＩＦＯユニット２６４内にストアされた命令の組の現在の深さに関係なく、さらに、ＩＦＩＦＯユニット２６４内でデータをＦＩＦＯシフトすることから独立して入力バス１９８から連続的にＩＦＩＦＯユニット２６４に入れていくことができる。
【００４１】
マスタ／スレーブ・レジスタ２００、２０４、２０８、２１２、２１６、２２０、２２４の各々は、１２８ビット幅の命令の組の全ビットを並列にストアできるほかに、制御情報のいくつかのビットをそれぞれの制御レジスタ２０２、２０６、２１０、２１４、２１８、２２２、２２６にストアすることもできる。好ましくは、制御ビットのセットは、例外不一致（ｅｘｃｅｐｔｉｏｎ  ｍｉｓｓ）と例外修正（ｅｘｃｅｐｔｉｏｎ  ｍｏｄｉｆｙ）（ＶＭＵ）、メモリなし（ＭＣＵ）、ブランチ・バイアス、ストリーム、およびオフセット（ＩＦＵ）からなっている。この制御情報はＩＦＩＦＯマスタ・レジスタに入力バス１９８から新しい命令の組をロードするのと同時に、ＩＦＵ１０２の制御経路部分から発生する。そのあと、制御レジスタ情報は命令の組と並行してＩＦＩＦＯユニット２６４内で並列にシフトされる。
【００４２】
最後に好適アーキテクチャ１００ではＩＦＩＦＯユニット２６４からの命令の組の出力は最後の２マスタ・レジスタ２１６、２２４から同時に得られて、Ｉ＿Ｂｕｃｋｅｔ＿０とＩ＿Ｂｕｃｋｅｔ＿１命令セット出力バス２７８、２８０上に送出される。さらに、対応する制御レジスタ情報がＩＢＡＳＶ０とＩＢＡＳＢ１制御フィールドバス２８２、２８４上に送出される。これらの出力バス２７８、２８２、２８０、２８４は全てＩＥＵ１０４へ通じる命令ストリーム・バス１２４となるものである。
【００４３】
Ｂ）ＩＦＵ制御経路
ＩＦＵ１０２制御経路は、プリフェッチ・バッファ・ユニット２６０、Ｉデコード・ユニット２６２およびＩＦＩＦＯユニット２６４のオペレーションを直接にサポートする。プリフェッチ制御ロジック・ユニット２６６は主にプリフェッチ・バッファ・ユニット２６０のオペレーションを管理する。プリフェッチ制御ロジック・ユニット２６６とＩＦＵ１０２は一般的にはクロック・ライン２９０からシステム・クロック信号を受信して、ＩＦＵのオペレーションとＩＥＵ１０４、ＣＣＵ１０６およびＶＭＵ１０８のオペレーションとの同期をとるようにしている。命令の組を選択して、ＭＢＵＦ１８８、ＴＢＵＦ１９０およびＥＢＵＦ１９２に書き込むための制御信号は制御ライン３０４上に送出される。
【００４４】
多数の制御信号は、制御ライン３１６上に送出されて、プリフェッチ制御ロジック・ユニット２６６へ送られる。具体的には、フェッチ要求制御信号はプリフェッチ・オペレーションを開始するために送出される。制御ライン３１６上に送出される他の制御信号は要求したプリフェッチ・オペレーションが目標とする宛先かＭＢＵＦ１８８であるか、ＴＢＵＦ１９０であるか、ＥＢＵＦ１９２であるかを指定している。プリフェッチ要求を受けて、プリフェッチ制御ロジック・ユニット２６６はＩＤ値を生成し、プリフェッチ要求をＣＣＵ１０６に通知できるかどうかを判断する。ＩＤ値の生成は、循環４ビット・カウンタを使用して行われる。
【００４５】
４ビット・カウンタの使用は次の３つの点で重要である。第１は最大９個までの命令の組をプリフェッチ・バッファ・ユニット２６０で一度にアクティブにできることである。すなわち、ＭＢＵＦ１８８での４つの命令の組、ＴＢＵＦ１９０での２つの命令の組、ＥＢＵＦ１９２での２つの命令の組、およびフロー・スルー・バス１９４経由で直接にＩデコード・ユニット２６２に渡される１つの命令の組である。第２は、命令の組が各々４バイトの４個の命令からなることである。その結果、フェッチする命令を選択するどのアドレスも、その最下位４ビットは余分になっている。最後は、プリフェッチ要求アドレスの最下位４ビットとして挿入することで、プリフェッチ要求ＩＤをプリフェッチ要求と容易に関連づけることができることである。これにより、ＣＣＵ１０６とのインターフェースとなるために必要な総アドレス数が減少することになる。
【００４６】
ＩＦＵ１０２から出されたプリフェッチ要求の順序に対して順序外で命令の組がＣＣＵ１０６から返却されるようにするために、アーキテクチャ１００ではＣＣＵ１０６からの命令の組の返却と一緒にＩＤ要求値が返されるようになっている。しかし、順序外の命令の組返却機能によると、１６個の固有ＩＤが使いつくされるおそれがある。条件付き命令の組合せが順序外で実行されると、要求されたがまだ返却されていない追加のプリフェッチと命令の組があるので、ＩＤ値を再使用することが可能になる。したがって、４ビット・カウンタは保持しておくのが好ましく、それ以降の命令の組のプリフェッチ要求が出されないことになり、その場合には次のＩＤ値は、未処理のまま残っているフェッチ要求やそのときプリフェッチ・バッファ２６０に保留されている別の命令の組に関連づけられたものとなる。
【００４７】
プリフェッチ制御ロジック・ユニット２６６はプリフェッチ状況配列（アレイ）２６８を直接に管理し、この配列はＭＢＵＦ１８８、ＴＢＵＦ１９０およびＥＢＵＦ１９２内の各命令セット・プリフェッチ・バッファ・ロケーションに論理的に対応する状況記憶ロケーションからなっている。プリフェッチ制御ロジック・ユニット２６６は選択およびデータ・ライン３０６を通して、データをスキャンし、読み取って、状況レジスタ配列２６８に書き込むことができる。配列２６８内では、メイン・バッファ・レジスタ３０８は４個の４ビットＩＤ値（ＭＢ  ＩＤ）、４個の１ビット予約フラグ（ＭＢ  ＲＥＳ）および４個の１ビット有効フラグ（ＭＢ  ＶＡＬ）をストアしておくためのものであり、これらの各々は論理ビット位置別にＭＢＵＦ１８０内のそれぞれの命令の組の記憶ロケーションに対応づけられている。同様に、ターゲット・バッファ・レジスタ３１０と拡張バッファ・レジスタ３１２は、それぞれ２個の４ビットＩＤ値（ＴＢ  ＩＤ、ＥＢ  ＩＤ）、２個の１ビット予約フラグ（ＴＢ  ＲＥＳ、ＥＢ  ＲＥＳ）および２個の１ビット有効フラグ（ＴＢ  ＶＡＬ、ＥＢ  ＶＡＬ）をストアしておくためのものである。最後にフロー・スルー状況レジスタ３１４は１個の４ビットＩＤ値（ＦＴ  ＩＤ）、１個の予約フラグ・ビット（ＦＴ  ＲＥＳ）および１個の有効フラグ・ビット（ＦＴ  ＶＡＬ）をストアしておくためのものである。
【００４８】
状況レジスタ配列２６８が最初にスキャンされ、該当するときは、プリフェッチ要求がＣＣＵ１０６に出されるたびにプリフェッチ制御ロジック・ユニット２６６によって更新され、そのあとは命令の組が返されるたびにスキャンされ、更新される。具体的に説明すると、制御ライン３１６からプリフェッチ要求信号を受け取ると、プリフェッチ制御ロジック・ユニット２６６は現在の循環カウンタ生成ＩＤ値をインクリメントし、状況レジスタ配列２６８をスキャンして、使用可能なＩＤ値があるかどうか、プリフェッチ要求信号で指定されたタイプのプリフェッチ・バッファ・ロケーションが使用可能であるかどうかを判断し、ＣＣＵ  ＩＢＵＳＹ制御ライン３００の状態を調べてＣＣＵ１０６がプリフェッチ要求を受け付けることができるかどうかを判断し、受付可能ならば、制御ライン２９８上のＣＣＵ  ＩＲＥＡＤ制御信号を肯定し、インクリメントされたＩＤ値をＣＣＵ１０６と結ばれたＣＣＵ  ＩＤ出力バス２９４上に送出する。プリフェッチ記憶ロケーションは、対応する予約状況フラグと有効状況フラグが共に偽である場合に使用が可能である。
【００４９】
プリフェッチＩＤは要求がＣＣＵ１０６に出されるのと並行して、ＭＢＵＦ１８８、ＴＢＵＦ１９０、またはＥＢＵＦ１９２内の目標とする記憶ロケーションに対応する状況レジスタ配列２６８内のＩＤ記憶ロケーションに書き込まれる。さらに、対応する予約状況フラグが真にセットされる。
【００５０】
ＣＣＵ１０６が以前に要求された命令の組をＩＦＵ１０２へ返却できるときは、ＣＣＵ  ＩＲＥＡＤＹ信号が制御ライン３０２上で肯定され、対応する命令の組のＩＤがＣＣＵ  ＩＤ制御ライン２９６上に送出される。プリフェッチ制御ロジック・ユニット２６６は状況レジスタ配列２６８内のＩＤ値と予約フラグをスキャンして、プリフェッチ・バッファ・ユニット２６０内の命令の組の目標とする宛先を判別する。一致するものは一つだけが可能である。判別されると、命令の組はバス１１４を経由してプリフェッチ・バッファ・ユニット２６０内の該当ロケーションに書き込まれ、フロー・スルー要求と判別されたときは、直接にＩデコード・ユニット２６２に渡される。どちらの場合も、対応する状況レジスタ配列に入っている有効状況フラグは真にセットされる。
【００５１】
ＰＣロジック・ユニット２７０は、以下で詳しく説明するように、ＩＦＵ１０２全体を調べてＭＢＵＦ１８８、ＴＢＵＦ１９０およびＥＢＵＦ１９２命令ストリームの仮想アドレスを探し出す。この機能を実行する際、ＰＣロジック・ブロック２７０はＩデコード・ユニット２６２を制御すると同時に、そこから動作する。具体的には、Ｉデコード・ユニット２６２によってデコードされ、プログラムの命令ストリームのフローの変化と関わりがある可能性のある命令部分はバス３１８を経由して制御フロー検出ユニット２７４へ送られると共に、直接にＰＣロジック・ブロック２７０へ送られる。制御フロー検出ユニット２７４は条件付きブランチ命令と無条件ブランチ命令、コール型命令、ソフトウェア・トラップ・プロシージャ命令および種々のリターン命令を含む制御フロー命令を構成する各命令をデコードされた命令の組の中から判別する。制御フロー検出ユニット２７４は制御信号をライン３２２を経由して、ＰＣロジック・ユニット２７０へ送る。この制御信号は、Ｉデコード・ユニット２６２に存在する命令の組の内の制御フロー命令のロケーションと種類を示している。これを受けて、ＰＣロジック・ユニット２７０は、一般的には命令に入れられて、ライン３１８経由でＰＣロジック・ユニットへ転送されたデータから制御フロー命令のターゲット・アドレスを判断する。例えば、条件付きブランチ命令に対して先に実行するためにブランチ・ロジック・バイアスが選択された場合には、ＰＣロジック・ユニット２７０は条件付きブランチ命令ターゲット・アドレスから命令の組をプリフェッチすることを指示し、別々に追跡することを開始する。したがって、制御ライン３１６上のプリフェッチ要求を次に肯定すると、ＰＣロジック・ユニット２７０はさらにライン３１６を経由する制御信号を肯定し、先行してプリフェッチされた命令の組がＭＢＵＦ１８８またはＥＢＵＦ１９２へ送られたものと想定すると、プリフェッチの宛先をＴＢＵＦ１９０として選択する。プリフェッチ要求をＣＣＵ１０６へ渡すことができるとプリフェッチ制御ロジック・ユニット２６６が判断すると、プリフェッチ制御ロジック・ユニット２６６は、この場合もライン３１６を経由してイネーブル（許可）信号をＰＣロジック・ユニット２７０へ送って、ターゲット・アドレスのページ・オフセット部分（ＣＣＵ  ＰＡＤＤＲ〔１３：４〕）をアドレス・ライン３２４を経由して直接にＣＣＵ１０６へ渡すことを可能にする。これと同時に、ＰＣロジック・ユニット２７０は新しい仮想ページから物理ページへの変換が必要な場合には、さらに、ＶＭＵ要求信号を制御ライン３２８を経由して、ターゲット・アドレスの仮想化部分（ＶＭＵ  ＶＡＤＤＲ〔１３：１４〕）をアドレス・ライン３２６を経由してＶＭＵ１０８へ渡して、物理アドレスに変換する。ページ変換が必要でない場合は、ＶＭＵ１０８によるオペレーションは必要でない。その代わりに、以前の変換結果がバス１２２に接続された出力ラッチに保存されているので、ＣＣＵ１０６によって即時に使用される。
【００５２】
ＰＣロジック・ユニット２７０が要求した仮想から物理への変換時にＶＭＵ１０８にオペレーション・エラーが起こると、ＶＭＵ例外およびＶＭＵ不一致制御（ｍｉｓｓ  ｃｏｎｔｒｏｌ）ライン３３２、３３４を通して報告される。ＶＭＵ不一致制御ライン３３４は変換索引緩衝機構（Ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ：ＴＬＢ）の不一致を報告する。ＶＭＵ例外ライン３３２上のＶＭＵ例外制御信号は他の例外が起こると発生する。いずれの場合も、ＰＣロジック・ユニットは命令ストリーム中の現在の実行個所をストアしておき、そのあと無条件ブランチが行われたのと同じように、それを受けてエラー条件を診断し処理するための専用例外処理ルーチン命令ストリームをプリフェッチすることによって、エラー条件を処理する。ＶＭＵ例外および不一致制御信号は、発生した例外の種類を示しているので、ＰＣロジック・ユニット２７０は対応する例外処理ルーチンのプリフェッチ・アドレスを判別することができる。
【００５３】
ＩＦＩＦＯ制御ロジック・ユニット２７２はＩＦＩＦＯユニット２６４を直接にサポートするためのものである。具体的には、ＰＣロジック・ユニット２７０は制御ライン３３６を経由して制御信号を出力し、命令の組がＩデコード・ユニット２６２から入力バス１９８経由で使用可能であることをＩＦＩＦＯ制御ロジック・ユニット２７２に通知する。ＩＦＩＦＯ制御ユニット２７２は命令の組を受け取るために、最も奥の使用可能なマスタ・レジスタ２００、２０８、２１６、２２４を選択する役割をもっている。マスタ・レジスタ２０２、２１０、２１８、２２６の各々の出力は制御バス３３８を経由してＩＦＩＦＯ制御ユニット２７２へ渡される。各マスタ制御レジスタによってストアされる制御ビットは２ビット・バッファ・アドレス（ＩＦ＿Ｂｘ＿ＡＤＲ）、単一ストリーム・インジケータ・ビット（ＩＦ＿Ｂｘ＿ＳＴＲＭ）、および単一有効ビット（ＩＦ＿Ｂｘ＿ＶＬＤ）からなっている。２ビット・バッファ・アドレスは対応する命令の組の内の最初の有効命令を指定している。つまり、ＣＣＵ１０６から返された命令の組は、例えば、ブランチ・オペレーションのターゲット命令が命令の組の内の最初の命令ロケーションに置かれるように境界合わせされていないことがある。したがって、バッファ・アドレス値は、実行の対象として考慮される、命令の組の内の最初の命令を一意的に示すために与えられる。
【００５４】
ストリーム・ビットは、条件付き制御フロー命令を含んでいる命令の組のロケーションを示し、ＩＦＩＦＯユニット２６４を通る命令のストリームに潜在的制御フローの変更を引き起こすマーカとして使用されることを基本としている。メイン命令ストリームは一般にストリーム・ビット値が０のときＭＢＵＦ１８８を通して処理される。例えば、相対条件付きブランチ命令が現れるとすると、対応する命令の組はマークが付けられ、ストリーム・ビット値が１となる。条件付き命令の組はＩデコード・ユニット２６２によって検出される。条件付き制御フロー命令は最高４つまで命令の組に存在することができる。そのあと、命令の組はＩＦＩＦＯユニット２６４の最も奥の使用可能なマスタ・レジスタにストアされる。
【００５５】
条件付きブランチ命令のターゲット・アドレスを判断するために、現在のＩＥＵ１０４の実行点アドレス（ＤＰＣ）、ストリーム・ビットで指定された条件付き命令が入っている命令の組の相対ロケーション、制御フロー検出ユニット２７４から得られた命令の組の内の条件付き命令ロケーション・オフセットは、制御ライン３１８を通して対応するブランチ命令フィールドから得られた相対ブランチ・オフセット値と結合される。その結果はブランチ・ターゲットの仮想アドレスとなり、ＰＣロジック・ユニット２７０によってストアされる。ターゲット命令ストリームの最初の命令の組は、このアドレスを使用してプリフェッチしてＴＢＵＦ１９０に入れることができる。ＰＣロジック・ユニット２７０のために事前に選択されたブランチ・バイアスに応じてＩＦＩＦＯユニット２６４はＭＢＵＦ１８８またはＴＢＵＦ１９０からロードが続けられる。１つまたは２つ以上の条件付フロー命令を含んでいる２番目の命令の組が現れると、その命令の組はストリーム・ビット値に０のマークが付けられる。２番目のターゲット・ストリームはフェッチできないので、ターゲット・アドレスはＰＣロジック・ユニット２７０によって計算されてストアされるが、プリフェッチは行われない。さらに、それ以降の命令の組はＩデコード・ユニット２６２を通して処理することができない。少なくとも、条件付きフロー制御命令を含んでいることが分かった命令の組は１つも処理されない。
【００５６】
本発明の好適実施例では、ＰＣロジック・ユニット２７０は最高２個までの命令の組に現れた条件付きフロー命令を最高８個まで管理することができる。ストリーム・ビットの変化でマークが付けられた２命令の組の各々のターゲット・アドレスは４つのアドレス・レジスタの配列にストアされ、ターゲット・アドレスは命令の組の内の対応する条件付きフロー命令のロケーションに対して論理的位置に置かれる。
【００５７】
最初の順序内条件付きフロー命令のブランチ結果が解決されると、ＰＣロジック・ユニット２７０は、ブランチが行われる場合にはＴＢＵＦ１９０の内容をＭＶＵＦ１８８に転送し、ＴＢＵＦ１９０の内容に無効のマークを付けるように、ライン３１６上の制御信号によってプリフェッチ制御ユニット２６６に指示する。正しくない命令ストリーム、つまりブランチが行われない場合はターゲット・ストリームからの、ブランチが行われる場合はメイン・ストリームからの命令の組が、ＩＦＩＦＯユニット２６４にあるとＩＦＩＦＯユニット２６４からクリアされる。２番目またはそれ以降の条件付きフロー制御命令が第１ストリーム・ビットのマークが付けられた命令の組に存在すると、その命令は統一された方法で処理される。すなわち、ターゲット・ストリームからの命令の組はプリフェッチされ、ＭＢＵＦ１８８またはＴＢＵＦ１９０からの命令の組はブランチ・バイアスに応じてＩデコード・ユニット２６２を通して処理され、条件付きフロー命令が最終的に解決されると、正しくないストリーム命令の組がＩＦＩＦＯユニット２６４からクリアされる。
【００５８】
ＩＦＩＦＯユニット２６４から正しくないストリーム命令がクリアされたとき、２番目の条件付きフロー命令がＩＦＩＦＯユニット２６４に残っていて、最初の条件付きフロー命令の組にそれ以降の条件付きフロー命令が含まれていないと、第２ストリーム・ビットのマークが付いた命令の組のターゲット・アドレスはアドレス・レジスタの最初の配列にプロモートされる。いずれの場合も、条件付きフロー命令を含んでいる次の命令の組はＩデコード・ユニット２６２を通して評価することが可能になる。したがって、ストリーム・ビットをトグルとして使用すると、ブランチ・ターゲット・アドレスを計算する目的のために、また、ブランチ・バイアスが特定の条件付きフロー制御命令では正しくなかったと、後で判断された場合に、それより上をクリアすべき命令の組のロケーションにマークをつける目的のために、潜在的制御フローの変化にマークをつけておき、ＩＦＩＦＯユニット２６４を通して追跡することができる。
【００５９】
命令の組をマスタ・レジスタから実際にクリアするのではなく、ＩＦＩＦＯ制御ロジック・ユニット２７２はＩＦＩＦＯユニット２６４の対応するマスタ・レジスタの制御レジスタに入っている有効ビット・フラグをリセットするだけである。このクリア・オペレーションはライン３３６に送出される制御信号でＰＣロジック・ユニット２７０によって開始される。マスタ制御レジスタ２０２、２１０、２１８、２２６の各々の入力は状況バス２３０を通してＩＦＩＦＯ制御ロジック・ユニット２７２が直接にアクセスすることができる。好適実施例のアーキテクチャ１００ではこれらのマスタ制御レジスタ２０２、２１０、２１８、２２６内のビットはＩＦＩＦＯユニット２６４によるデータ・シフト・オペレーションと並行して、または独立してＩＦＩＦＯ制御ユニット２７２によってセットすることが可能である。この機能により、ＩＥＵ１０４のオペレーションと非同期に、命令の組をマスタ・レジスタ２００、２０８、２１６、２２４のいずれかに書込み、対応する状況情報をマスタ制御レジスタ２０２、２１０、２１８、２２６に書き込むことができる。
【００６０】
最後に、制御および状況バス２３０上の追加の制御ラインはＩＦＩＦＯユニット２６４のＩＦＩＦＯオペレーションを可能にし、指示する。ＩＦＩＦＯシフトは制御ライン３３６を通してＰＣロジック・ユニット２７０から出力されたシフト要求制御信号を受けてＩＦＩＦＯユニット２６４によって行われる。ＩＦＩＦＯ制御ユニット２７２は、命令の組を受け入れるマスタ・レジスタ２００、２０８、２１６、２２４が使用可能であると、制御信号をライン３１６を経由してプリフェッチ制御ユニット２６６に送ってプリフェッチ・バッファ２６０から次の該当命令の組を転送することを要求する。命令の組が転送されると、配列２６８内の対応する有効ビットがリセットされる。
【００６１】
Ｃ）ＩＦＵ／ＩＥＵ制御インタフェース
ＩＦＵ１０２とＩＥＵ１０４とを結ぶ制御インタフェースは制御バス１２６によって提供される。この制御バス１２６はＰＣロジック・ユニット２７０に接続され、複数の制御、アドレスおよび特殊データ・ラインから構成されている。割り込み要求と受信確認制御信号を制御ライン３４０を経由して渡すことにより、ＩＦＵ１０２は割り込みオペレーションを通知し、ＩＥＵ１０４との同期をとることができる。外部で発生した割り込み信号はライン２９２経由でロジック・ユニット２７０へ送られる。これを受けて、割り込み要求制御信号がライン３４０上に送出されると、ＩＥＵ１０４は試行的に実行された命令をキャンセルする。割り込みの内容に関する情報は、割り込み情報ライン３４１を通してやりとりされる。ＩＥＵ１０４がＰＣロジック・ユニット２７０によって判断された割り込みサービス・ルーチンのアドレスからプリフェッチされた命令の受信を開始する準備状態になると、ＩＥＵ１０４はライン３４０上の割り込み受信確認制御信号を肯定する。ＩＦＵ１０２によってプリフェッチされた割り込みサービス・ルーチンがそのあと開始される。
【００６２】
ＩＦＩＦＯ読取り（ＩＦＩＦＯ  ＲＤ）制御信号はＩＥＵ１０４から出力され、最も奥のマスタ・レジスタ２２４に存在する命令の組が実行を完了したことおよび次の命令の組が必要であることを通知する。この制御信号を受けると、ＰＣロジック・ユニット２７０はＩＦＩＦＯユニット２６４でＩＦＩＦＯシフト・オペレーションを実行するようにＩＦＩＦＯ制御ロジック・ユニット２７２に指示する。
【００６３】
ＰＣインクリメント要求とサイズ値（ＰＣ  ＩＮＣ／ＳＩＺＥ）は制御ライン３４４上に送出されて、現在のプログラム・カウンタ値を命令の対応するサイズ数だけ更新するようにＰＣロジック・ユニット２７０に指示する。これによりＰＣロジック・ユニット２７０は、現在のプログラム命令ストリーム中の最初の順序内実行命令のロケーションを正確に指した個所に実行プログラム・カウンタ（ＤＰＣ）を維持することができる。
【００６４】
ターゲット・アドレス（ＴＡＲＧＥＴ  ＡＤＤＲ）はアドレス・ライン３４６を経由してＰＣロジック・ユニット２７０に返される。このターゲット・アドレスはＩＥＵ１０４のレジスタ・ファイルにストアされているデータによって決まるブランチ命令の仮想ターゲット・アドレスである。したがって、ターゲット・アドレスを計算するためにＩＥＵ１０４のオペレーションが必要である。
【００６５】
制御フロー結果（ＣＦ  ＲＥＳＵＬＴ）制御信号は制御ライン３４８を経由して、ＰＣロジック・ユニット２７０へ送られて、現在保留されている条件付きブランチ命令が解決されたかどうか、その結果がブランチによるものなのか、ブランチによらないものなのかを示している。これらの制御信号に基づいて、ＰＣロジック・ユニット２７０は、条件付きフロー命令の実行の結果として、プリフェッチ・バッファ２６０とＩＦＩＦＯユニット２６４に置かれている命令の組のどれをキャンセルする必要があるかを判断することができる。
【００６６】
いくつかのＩＥＵ命令リターン型制御信号（ＩＥＵリターン）が制御ライン３５０上を送出されて、ＩＥＵ１０４によってある命令が実行されたことをＩＦＵ１０２に通知する。これらの命令には、プロシージャ命令からのリターン、トラップからのリターンおよびサブルーチン・コールからのリターンがある。トラップからのリターン命令はハードウェア割り込み処理ルーチンとソフトウェア・トラップ処理ルーチンで同じように使用される。サブルーチン・コールからのリターンもジャンプとリンク型コールと併用される。どの場合も、リターン制御信号は以前に割り込みがかけられた命令ストリームに対して命令フェッチ・オペレーションを再開するようにＩＦＵ１０２に通知するために送られる。これらの信号をＩＥＵ１０４から出すことにより、システム１００の正確なオペレーションを維持することができる。「割り込みがかけられた」命令ストリームの再開はリターン命令の実行個所から行われる。
【００６７】
現命令実行ＰＣアドレス（現ＩＦ＿ＰＣ）はアドレス・バス３５２を経由してＩＥＵ１０４へ送られる。このアドレス値（ＤＰＣ）はＩＥＵ１０４によって実行される正確な命令を指定している。つまり、ＩＥＵ１０４が現在のＩＦ＿ＰＣアドレスを通過した命令を先に試行的に実行している間は、このアドレスは割り込み、例外その他に正確なマシンの状態が分かっていることが必要な事象の発生に対してアーキテクチャ１００を正確に制御するために保持されていなければならない。現在実行中の命令ストリームの中の正確なマシンの状態を進めることが可能であるとＩＥＵ１０４が判断すると、ＰＣ  Ｉｎｃ／Ｓｉｚｅ信号がＩＦＵ１０２に送られ、即時に現在のＩＦ＿ＰＣアドレス値に反映される。
【００６８】
最後に、アドレスおよび双方向データ・バス３５４は特殊レジスタのデータを転送するためのものである。このデータはＩＥＵ１０４によってＩＦＵ１０２内の特殊レジスタに入れられ、あるいはそこから読み取られるようにプログラムすることが可能である。特殊レジスタのデータは一般にＩＦＵ１０２が使用できるようにＩＥＵ１０４によってロードされ、あるいは計算される。
【００６９】
Ｄ）ＰＣロジック・ユニットの詳細
ＰＣ制御ユニット３６２、割り込み制御ユニット３６３、プリフェッチＰＣ制御ユニット３６４および実行ＰＣ制御ユニット３６６を含むＰＣロジック・ユニット２７０の詳細図は図３に示されている。
【００７０】
ＰＣ制御ユニット３６２はインタフェース・バス１２６を通してプリフェッチ制御ユニット２６６、ＩＦＩＦＯ制御ロジック・ユニット２７２、およびＩＥＵ１０４から制御信号を受けて、プリフェッチおよび実行ＰＣ制御ユニット３６４、３６６に対してタイミング制御を行う。割り込み制御ユニット３６３はプリフェッチ・トラップ・アドレス・オフセットを判断してそれぞれのトラップ・タイプを処理する該当処理ルーチンを選択することを含めて、割り込みと例外の正確な管理を担当する。プリフェッチＰＣ制御ユニット３６４は、特にトラップ処理とプロシージャ・ルーチン命令のフローのためのリターン・アドレスをストアすることを含めて、プリフェッチ・バッファ１８８、１９０、１９２をサポートするために必要なプログラム・カウンタの管理を担当する。このオペレーションをサポートするために、プリフェッチＰＣ制御ユニット３６４は物理アドレス・バス・ライン３２４上のＣＣＵ  ＰＡＤＤＥＲアドレスとアドレスライン３２６上のＶＭＵ  ＶＭＡＤＤＲアドレスを含むプリフェッチ仮想アドレスを生成することを担当する。その結果、プリフェッチＰＣ制御ユニット３６４は現在のプリフェッチＰＣ仮想アドレス値を保持することを担当する。
【００７１】
プリフェッチ・オペレーションは一般に制御ライン３１６上を送出された制御信号を通してＩＦＩＦＯ制御ロジック・ユニット２７２によって開始される。これを受けて、ＰＣ制御ユニット３６２はいくつかの制御信号を生成して制御ライン３７２上に出力し、プリフェッチＰＣ制御ユニットを動作させてアドレス・ライン３２４、３２６上にＰＡＤＤＲアドレスと、必要に応じてＶＭＡＤＤＲアドレスを生成する。値が０から４までのインクリメント信号も制御ライン３７４上に送出される場合もあるが、これはＰＣ制御ユニット３６２が現在のプリフェッチ・アドレスから命令の組のフェッチを再実行しているか、一連のプリフェッチ要求の中の２番目の要求に対して位置合わせを行っているか、プリフェッチのために次の全順次命令の組を選択しているか、によって決まる。最後に現在のプリフェッチ・アドレスＰＦ＿ＰＣがバス３７０上に送出され、実行ＰＣ制御ユニット３６６へ渡される。
【００７２】
新しいプリフェッチ・アドレスはいくつかのソースから発生する。アドレスの主要なソースはバス３５２経由で実行ＰＣ制御ユニット３６６から送出された現在のＩＦ＿ＰＣアドレスである。原理的には、ＩＦ＿ＰＣアドレスからはリターン・アドレスが得られ、これは、初期コール、トラップまたはプロシージャ命令が現れたとき、プリフェッチＰＣ制御ユニットによってあとで使用されるものである。ＩＦ＿ＰＣアドレスは、これらの命令が現れるたびに、プリフェッチＰＣ制御ユニット３６４内のレジスタにストアされる。このようにして、ＰＣ制御ユニット３６２は制御ライン３５０を通してＩＥＵリターン信号を受けたとき、プリフェッチＰＣ制御ユニット３６４内のリターン・アドレス・レジスタを選択して新しいプリフェッチ仮想アドレスを取り出すだけでよく、これによって元のプログラム命令ストリームを再開する。
【００７３】
プリフェッチ・アドレスのもう一つのソースは実行ＰＣ制御ユニット３６６から相対ターゲット・アドレス・バス３８２を経由して、あるいはＩＥＵ１０４から絶対ターゲット・アドレス・バス３４６を経由して送出されたターゲット・アドレス値である。相対ターゲット・アドレスとは、実行ＰＣ制御ユニット３６６によっで直接に計算できるアドレスである。絶対ターゲット・アドレスは、これらのターゲット・アドレスがＩＥＵレジスタ・ファイルに入っているデータに依存するので、ＩＥＵ１０４に生成させる必要がある。ターゲット・アドレスはターゲット・アドレス・バス３８４を通ってプリフェッチＰＣ制御ユニット３６４へ送られ、プリフェッチ仮想アドレスとして使用される。相対ターゲット・アドレスを計算する際、対応するブランチ命令のオペランド部分もＩデコード・ユニット２６２からバス３１８のオペランド変位部分を経由して送られる。
【００７４】
プリフェッチ仮想アドレスのもう１つのソースは、実行ＰＣ制御ユニット３６６である。リターン・アドレス・バス３５２'は、現在のＩＦ＿ＰＣ値（ＤＰＣ）をプリフェッチＰＣ制御ユニット３６４へ転送するためのものである。
【００７５】
このアドレスは、割り込み、トラップその他コールなどの制御フロー命令が命令ストリーム内に現れた個所でリターン・アドレスとして使用される。プリフェッチＰＣ制御ユニット３６４は、新しい命令ストリームをプリフェッチするために解放される。ＰＣ制御ユニット３６２は、対応する割り込みまたはトラップ処理ルーチンまたはサブルーチンが実行されると、ＩＥＵ１０４からライン３５０を経由してＩＥＵリターン信号を受け取る。他方、ＰＣ制御ユニット３６２はライン３７２上のＰＦＰＣ信号の一つを通して、およびライン３５０経由で送られてきて実行されたリターン命令のＩＤに基づいて、現在のリターン仮想アドレスを収めているレジスタを選択する。そのあと、このアドレスが使用されてＰＣロジック・ユニット２７０によるプリフェッチ・オペレーションを続行する。
【００７６】
最後に、プリフェッチ仮想アドレスが取り出されるもう一つのソースは、特殊レジスタ・アドレスおよびデータ・バス３５４である。ＩＥＵ１０４によって計算またはロードされたアドレス値、または少なくともベース・アドレス値はデータとしてバス３５４を経由してプリフェッチＰＣ制御ユニット３６４へ転送される。ベース・アドレスはトラップ・アドレス・テーブル、高速トラップ・テーブル、およびベース・プロシージャ命令ディスパッチ・テーブルのアドレスを含んでいる。バス３５４を通して、プリフェッチおよびＰＣ制御ユニット３６４、３６６内のレジスタの多くを読み取ることもできるので、マシンの状態の対応する側面をＩＥＵ１０４を通して処理することが可能である。
【００７７】
実行ＰＣ制御ユニット３６６は、ＰＣ制御ユニット３６２の制御を受けて、現在のＩＦ＿ＰＣアドレス値を計算することを主な役割としている。この役割において、実行ＰＣ制御ユニット３６６は、ＰＣ制御ユニット３６２からＥｘＰＣ制御ライン３７８を経由して送られてきた制御信号と、制御ライン３８０を経由して送られてきたインクリメント／サイズ制御信号を受けて、ＩＦ＿ＰＣアドレスを調整する。これらの制御信号は主に、ライン３４２経由で送られてきたＩＦＩＦＯ読取り制御信号とＩＥＵ１０４から制御ライン３４４経由で送られてきたＰＣインクリメント／サイズ値を受け取ると生成される。
１）ＰＦおよびＥｘＰＣ制御／データ・ユニットの詳細
図４はプリフェッチおよび実行ＰＣ制御ユニット３６４、３６６の詳細ブロック図である。
これらのユニットは主にレジスタ、インクリメンタ（増分器）その他の類似部品、セレクタおよび加算器ブロックから構成されている。これらのブロック間のデータ転送を管理する制御は、ＰＦＰＣ制御ライン３７２、ＥｘＰＣ制御ライン３７８およびインクリメント制御ライン３７４、３８０を通してＰＣ制御ユニット３６２によって行われる。説明を分かりやすくするために、図４のブロック図には、これらの個々の制御ラインは示されていない。しかし、これらの制御信号が以下に説明するように、これらのブロックへ送られることは勿論である。
【００７８】
プリフェッチＰＣ制御ユニット３６４の中心となるものはプリフェッチ・セレクタ（ＰＦ＿ＰＣ＿ＳＥＬ）３９０であり、これは現プリフェッチ仮想アドレスの中央セレクタとして動作する。この現プリフェッチ・アドレスはプリフェッチ・セレクタ３９０から出力バス３９２を通ってインクリメンタ・ユニット３９４へ送られて、次のプリフェッチ・アドレスを生成する。この次のプリフェッチ・アドレスはインクリメンタ出力バス３９６を通ってレジスタＭＢＵＦ＿ＰＦｎＰＣ３９８、ＴＢＵＦ＿ＰＦｎＰＣ４００、およびＥＢＵＦ＿ＰＦｎＰＣ４０２の並列配列へ送られる。これらのレジスタ３９８、４００、４０２は実効的には次の命令プリフェッチ・アドレスをストアしているが、本発明の好適実施例によれば別々のプリフェッチ・アドレスがＭＢＵＦ１８８、ＴＢＵＦ１９０およびＥＢＵＦ１９２に保持されている。ＭＢＵＦ、ＴＢＵＦおよびＥＢＵＦ＿ＰＦｎＰＣレジスタ３９８、４００、４０２にストアされたプリフェッチ・アドレスはアドレス・バス４０４、４０８、４１０からプリフェッチ・セレクタ３９０へ渡される。したがって、ＰＣ制御ユニット３６２はプリフェッチ・レジスタ３９８、４００、４０２の別の１つをプリフェッチ・セレクタが選択することを指示することだけでプリフェッチ命令ストリームの即時切り換えを指示することができる。ストリームの中の次の命令の組をプリフェッチするために、そのアドレス値がインクリメンタ３９４によってインクリメントされると、その値がプリフェッチ・アドレス３９８、４００、４０２のうち該当するレジスタへ返却される。もう１つの並列レジスタ配列は簡略化のため単一の特殊レジスタ・ブロック４１２と示されているが、この配列はいくつかの特殊アドレスをストアするためのものである。レジスタ・ブロック４１２はトラップ・リターン・アドレス・レジスタ、プロシージャ命令リターン・アドレス・レジスタ、プロシージャ命令ディスパッチ・テーブル・ベース・アドレス・レジスタ、トラップ・ルーチン・ディスパッチ・テーブル・ベース・アドレス・レジスタ、および高速トラップ・ルーチン・ベース・アドレス・レジスタから構成されている。ＰＣ制御ユニット３６２の制御を受けて、これらのリターン・アドレス・レジスタはバス３５２'を通して現ＩＦ＿ＰＣ実行アドレスを受け入れることができる。レジスタ・ブロック４１２内のリターンおよびベース・アドレス・レジスタにストアされたアドレス値はＩＥＵ１０４から独立して読み書きすることができる。レジスタが選択され、値が特殊レジスタ・アドレスおよびデータ・バス３５４を経由して転送される。
【００７９】
特殊レジスタ・ブロック４１２内のセレクタはＰＣ制御ユニット３６２によって制御され、レジスタ・ブロック４１２のレジスタにストアされたアドレスを特殊レジスタ出力バス４１６上に送出してプリフェッチ・セレクタ３９０へ渡すことができる。リターン・アドレスは直接にプリフェッチ・セレクタ３９０へ渡される。ベース・アドレス値は割り込み制御ユニット３６３から割り込みオフセット・バス３７３経由で送られてきたオフセット値と結合される。ソースからバス３７３'経由でプリフェッチ・セレクタ３９０へ渡された特殊アドレスは、新しいプリフェッチ命令ストリームの初期アドレスとして使用され、そのあとインクリメンタ３９４とプリフェッチ・レジスタ３９８、４００、４０２の１つを通るアドレスのインクリメント・ループを続行することができる。
【００８０】
プリフェッチ・セレクタ３９０へ送られるアドレスのもう１つのソースは、ターゲット・アドレス・レジスタ・ブロック４１４内のレジスタ配列である。ブロック４１４内のターゲット・レジスタには好適実施例によれば８つの潜在的ブランチ・ターゲット・アドレスがストアされる。これらの８つの記憶ロケーションはＩＦＩＦＯユニット２６４の最下位の２マスタ・レジスタ２１６、２２４に保持されている８つの潜在的に実行可能な命令に論理的に対応している。これらの命令のどれでもが、および潜在的にはすべてが条件付きブランチ命令となり得るので、ターゲット・レジスタ・ブロック４１４は予め計算されたターゲット・アドレスをストアしておくので、ＴＢＵＦ１９０を通してターゲット命令ストリームをプリフェッチするために使用するのを待たせることかできる。特に、ＰＣ制御ユニット３６２がターゲット命令ストリームのプリフェッチを即時に開始するように条件付きブランチ・バイアスがセットされると、ターゲット・アドレスはターゲット・レジスタ・ブロック４１４からアドレス・バス４１８を経由してプリフェッチ・セレクタ３９０へ送られる。インクリメンタ３９４によってインクリメントされたあと、アドレスはＴＢＵＦ＿ＰＦｎＰＣ４００へ戻されてストアされ、ターゲット命令ストリームをあとでプリフェッチするオペレーションで使用される。別のブランチ命令がターゲット命令ストリームに現れると、その２番目のブランチのターゲット・アドレスが計算され、最初の条件付きブランチ命令が解決されて使用されるまでの間、ターゲット・レジスタ配列４１４にストアされている。
【００８１】
ターゲット・レジスタ・ブロック４１４にストアされた計算で求めたターゲット・アドレスは実行ＰＣ制御ユニット３６６内のターゲット・アドレス計算ユニットからアドレス・ライン３８２を経由して、あるいはＩＥＵ１０４から絶対ターゲット・アドレス・バス３４６を経由して転送される。
【００８２】
プリフェッチＰＦ＿ＰＣセレクタ３９０を通って転送されるアドレス値は、完全な３２ビット仮想アドレス値である。ページ・サイズは本発明の好適実施例では１６Ｋバイトに固定されており、最大ページ・オフセット・アドレス値〔１３：０〕に対応している。したがって、現プリフェッチ仮想ページ・アドレス〔２７：１４〕に変化がなければＶＭＵページの変換は不要である。プリフェッチ・セレクタ３９０内のコンパレータはそのことを検出する。ＶＭＵ変換要求信号（ＶＭＸＬＡＴ）は、インクリメントがページ境界をこえて行われたか、制御のフローが別のページ・アドレスへブランチしたために、仮想ページ・アドレスが変化したとき、ライン３７２'を経由してＰＣ制御ユニット３６２へ送られる。他方、ＰＣ制御ユニット３６２はライン３２４上のＣＣＵ  ＰＡＤＤＲのほかに、ＶＭ  ＶＡＤＤＲアドレスをバッファ・ユニット４２０からライン３２６上に送出し、該当の制御信号をＶＭＵ制御ライン３２６、３２８、３３０上に送出して、ＶＭＵ仮想ページから物理ページへの変換を得るように指示する。ページ変換が必要でない場合は、現物理ページ・アドレス〔３１：１４〕はバス１２２上のＶＭＵユニット１０８の出力側のラッチによって保持される。
【００８３】
バス３７０上に送出された仮想アドレスはインクリメント制御ライン３７４から送られてきた信号を受けて、インクリメンタ３９４によってインクリメントされる。インクリメンタ３９４は、次の命令の組を選択するために、命令の組を表す値（４命令または１６バイト）だけインクリメントする。ＣＣＵユニット１０６へ渡されるプリフェッチ・アドレスの下位４ビットはゼロになっている。したがって、最初のブランチ・ターゲット命令の組の内の実際のターゲット・アドレス命令は最初の命令ロケーションに置かれていない場合がある。しかしアドレスの下位４ビットはＰＣ制御ユニット３６２へ送られるので、最初のブランチ命令のロケーションをＩＦＵ１０２が判別することができる。ターゲット・アドレスの下位ビット〔３：２〕を２ビット・バッファ・アドレスとして返して、位置合わせされていないターゲット命令の組から実行すべき正しい最初の命令を選択するための検出と処理は、新しい命令ストリーム、つまり、命令ストリームの中の最初の非順次命令の組のアドレスの最初のプリフェッチのときだけ行われる。命令の組の最初の命令のアドレスと命令の組をプリフェッチする際に使用されるプリフェッチ・アドレスとの間の非位置合わせの関係は、現順次命令ストリームが存続している間無視することができ、そのあとも無視される。
【００８４】
図４に示した機能ブロックの残りの部分は実行ＰＣ制御ユニット３６６を構成している。本発明の好適実施例によれば、実行ＰＣ制御ユニット３６６は独立に機能するプログラム・カウンタ・インクリメンタを独自に備えている。この機能の中心となるのは実行セレクタ（ＤＰＣ＿ＳＥＬ）４３０である。実行セレクタ４３０からアドレス・バス３５２'上に出力されるアドレスはアーキテクチャ１００の現在の実行アドレス（ＤＰＣ）である。この実行アドレスは加算ユニット４３４へ送られる。ライン３８０上に送出されたインクリメント／サイズ制御信号は１から４までの命令インクリメント値を指定しており、この値は加算ユニット４３４によってセレクタ４３０から得たアドレスに加えられる。加算器４３２が出力ラッチ機能を実行するたびに、インクリメントされた次の実行アドレスがアドレス・ライン４３６を経て直接に実行セレクタ４３０に返され、次の命令インクリメント・サイクルで使用される。
【００８５】
初期実行アドレスとその後の全ての新しいストリーム・アドレスは、アドレスライン４４０を経由して新ストリーム・レジスタ・ユニット４３８から得られる。新ストリーム・レジスタ・ユニット４３８はプリフェッチ・セレクタ３９０からＰＦＰＣアドレス・バス３７０を経由して送られてきた新しい現プリフェッチ・アドレスを直接にアドレス・バス４４０に渡すことも、後で使用するためにストアしておくこともできる。つまり、プリフェッチＰＣ制御ユニット３６４が新しい仮想アドレスからプリフェッチを開始することを判断した場合は、新しいストリーム・アドレスは新ストリーム・レジスタ・ユニット４３８によって一時的にストアされる。ＰＣ制御ユニット３６２は、プリフェッチと実行インクリメントの両サイクルに関与することによって、実行アドレスが新命令ストリームを開始した制御フロー命令に対応するプログラム実行箇所までに達するまで新ストリーム・アドレスを新ストリーム・レジスタ４３８に置いておく。新ストリーム・アドレスはそのあと新ストリーム・レジスタ・ユニット４３８から出力されて、実行セレクタ４３０へ送られ、新命令ストリーム内の実行アドレスを独立して生成することを開始する。
【００８６】
本発明の好適実施例によれば、新ストリーム・レジスタ・ユニット４３８は２つの制御フロー命令ターゲット・アドレスをバッファリングする機能を備えている。新ストリーム・アドレスを即時に取り出すことにより、殆ど待ち時間がなく実行ＰＣ制御ユニット３６６を現実行アドレス列の生成から新実行アドレス・ストリーム列の生成に切り換えることができる。
【００８７】
最後にＩＦ＿ＰＣセレクタ（ＩＦ＿ＰＣ＿ＳＥＬ）４４２は最終的に現ＩＦ＿ＰＣアドレスをアドレス・バス３５２上に送出してＩＥＵ１０４へ送るためのものである。ＩＦ＿ＰＣセレクタ４４２への入力は実行セレクタ４３０または新ストリーム・レジスタ・ユニット４３８から得た出力アドレスである。ほとんどの場合、ＩＦ＿ＰＣセレクタ４４２はＰＣ制御ユニット３６２の指示を受けて、実行セレクタ４３０から出力された実行アドレスを選択する。しかし、新命令ストリームの実行開始のために使用される新仮想アドレスへ切り替える際の待ち時間をさらに短縮するために、新ストリーム・レジスタ・ユニット４３８からの選択したアドレスをバイパスして、バス４４０経由で直接にＩＦ＿ＰＣセレクタ４４２へ送り、現ＩＦ＿ＰＣ実行アドレスとして得ることができる。
【００８８】
実行ＰＣ制御ユニット３６６は、全ての相対ブランチ・ターゲット・アドレスを計算する機能を備えている。現実行点アドレスと新ストリーム・レジスタ・ユニット４３８から得たアドレスは、アドレス・バス３５２'、４４０を経由して制御フロー・セレクタ（ＣＦ＿ＰＣ）４４６に渡される。その結果、ＰＣ制御ユニット３６２は大幅な柔軟性を持ってターゲット・アドレス計算の基となる正確な初期アドレスを選択することができる。
【００８９】
この初期アドレス、つまり、ベースアドレスはアドレス・バス４５４を経由してターゲット・アドレスＡＬＵ４５０へ送られる。ターゲットＡＬＵ４５０への入力となるもう１つの値は、制御フロー変位計算ユニット４５２からバス４５８経由で送られてくる。相対ブランチ命令は、アーキテクチャ１００の好適実施例によれば新相対ターゲット・アドレスを指定した即値モード定数の形態をした変位値を含んでいる。制御フロー変位計算ユニット４５２はＩデコード・ユニットのオペランド出力バス３１８から初めて得たオペランド変位値を受け取る。最後に、オフセット・レジスタ値はライン４５６を経由してターゲット・アドレスＡＬＵ４５０へ送られる。オフセット・レジスタ４４８はＰＣ制御ユニット３６２から制御ライン３７８'を経由してオフセット値を受け取る。オフセット値の大きさはアドレス・ライン４５４上を送られるベース・アドレスから相対ターゲット・アドレスを計算するときの現ブランチ命令のアドレスまでのアドレス・オフセットに基づいてＰＣ制御ユニット３６２によって判断される。つまり、ＰＣ制御ユニット３６２は、ＩＦＩＦＯ制御ロジック・ユニット２７２を制御することによって、現実行点アドレスの命令（ＣＰ  ＰＣによって要求された）とＩデコード・ユニット２６２によって現在処理中の、従ってＰＣロジック・ユニット２７０によって処理中の命令を分離している命令の個数を追跡して、その命令のターゲット・アドレスを判断する。
【００９０】
相対ターゲット・アドレスがターゲット・アドレスＡＬＵ４５０によって計算されると、そのターゲット・アドレスはアドレス・バス３８２を通して、対応するターゲット・レジスタ４１４に書き込まれる。
【００９１】
２）ＰＣ制御アルゴリズムの詳細
１．メイン命令ストリームの処理：ＭＢＵＦ＿ＰＦｎＰＣ
１．１  次のメイン・フロープリフェッチ命令のアドレスはＭＢＵＦ＿ＰＦｎ
ＰＣにストアされる
１．２  制御フロー命令がないときは、３２ビット・インクリメンタはＭＢＵ
Ｆ＿ＰＦｎＰＣに入っているアドレス値を各プリフェッチ・サイクル
ごとに１６バイト（ｘ１６）だけ調整する
１．３  無条件制御フロー命令がＩデコードされると、命令の組に続いてフ
ェッチされた全てのプリフェッチ・データはフラッシュされ、ＭＢＵ
Ｆ＿ＰＦｎＰＣにはターゲット・レジスタ・ユニット、ＰＦ＿ＰＣセ
レクタおよびインクリメンタを通して、新しいメイン命令ストリーム
・アドレスがロードされる。新しいアドレスは新ストリーム・レジス
タにもストアされる
１．３．１  相対無条件制御フローのターゲット・アドレスはＩＦＵ
が保持しているレジスタ・データからと制御フロー命令
の後に置かれたオペランド・データからＩＦＵによって
計算される
１．３．２  絶対無条件制御フローのターゲット・アドレスはレジス
タ基準値、ベース・レジスタ値、及びインデックス・レ
ジスタ値からＩＥＵによって最終的に計算される
１．３．２．１  命令プリフェッチ・サイクルは絶対アドレス制御
フロー命令に対してターゲット・アドレスがＩＥ
Ｕから返されるまで停止する。命令実行サイクル
は続行される
１．４  無条件制御フロー命令から得た次のメイン・フロー・プリフェッチ命
令のアドレスはバイパスされて、ターゲット・アドレス・レジスタ・
ユニット、ＰＦ＿ＰＣセレクタおよびインクリメンタを経由して送ら
れ、最終的にＭＢＵＦ＿ＰＦｎＰＣにストアされ、プリフェッチは
１．２から続けられる
２．プロシージャ命令ストリームの処理：ＥＢＵＦ＿ＰＦｎＰＣ
２．１  プロシージャ命令はメインまたはブランチ・ターゲット命令ストリー
ムの中でプリフェッチされる。ターゲット・ストリームの中でフェッ
チされた場合は条件付き制御フェッチ命令が解決され、プロシージャ
命令がＭＢＵＦへ転送されるまでプロシージャ・ストリームのプリフ
ェッチを停止する。これにより、プロシージャ命令ストリームに現れ
た条件付き制御フローを処理する際にＴＢＵＦを使用できる
２．１．１  プロシージャ命令はプロシージャ命令ストリームの中に
おいてはならない。つまり、プロシージャ命令はネスト
してはならない。プロシージャ命令からリターンすると
、実行は主命令ストリームに戻る。ネストを可能にする
ためには、ネストしたプロシージャ命令から別の専用リ
ターンが必要である。アーキテクチャはこの種の命令を
容易にサポートできるが、プロシージャ命令をネストす
る機能があっても、アーキテクチャの性能が向上する見
込みはない
２．１．２  メイン命令ストリームにおいては、第１及び第２条件付
き制御フロー命令を含む命令の組を含んでいるプロシ
ージャ命令ストリームは第１命令の組の中の条件付き
制御フロー命令が解決し、第２条件付き制御フロー命令
セットがＭＢＵＦへ転送されるまで第２条件付き制御フ
ロー命令の組に対してプリフェッチを停止する
２．２  プロシージャ命令は、命令の即値モード・オペランド・フィールドと
して含まれている相対オフセットによって、プロシージャ・ルーチン
の開始アドレスを示している
２．２．１  プロシージャ命令から得られたオフセット値はＩＦＵに
維持されているプロシージャ・ベース・アドレス（ＰＢ
Ｒ）レジスタに入っている値と結合される。このＰＢＲ
レジスタは、特殊レジスタの移動命令が実行されると、
特殊アドレスおよびデータバスを通して読み書き可能で
ある
２．３  プロシージャ命令が現れると、次のメイン命令ストリームＩＦ＿ＰＣ
アドレスはＤＰＣリターン・アドレス・レジスタにストアされ、プロ
セッサ・ステータス・レジスタ（ＰＳＲ）内のプロシージャ進行中ビ
ット（ｐｒｏｃｅｄｕｒｅ−ｉｎ−ｐｒｏｇｒｅｓｓ  ｂｉｔ）がセ
ットされる
２．４  プロシージャ・ストリームの開始アドレスは、ＰＢＲレジスタ（プロ
シージャ命令オペランド・オフセット値を加えて）からＰＦ＿ＰＣセ
レクタへ送られる
２．５  プロシージャ・ストリームの開始アドレスは、新ストリーム・レジス
タ・ユニットとインクリメンタへ同時に送られ、（ｘ１６）だけイン
クリメントする。インクリメントされたアドレスはそのあとＥＢＵＦ
ＰＦｎＰＣにストアされる
２．６  制御フロー命令がないと、３２ビット・インクリメンタは各プロシー
ジャ命令プリフェッチ・サイクルごとにＥＢＵＦ＿ＰＦｎＰＣに入っ
ているアドレス値を、（ｘ１６）だけ調整する
２．７  無条件制御フロー命令がＩデコードされると、ブランチ命令のあとに
フェッチされた全てのプリフェッチ・データはフラッシュされ、ＥＢ
ＵＦ＿ＰＦｎＰＣには新しいプロシージャ命令ストリーム・アドレス
がロードされる
２．７．１  相対無条件制御フロー命令のターゲット・アドレスはＩ
ＦＵに保持されているレジスタデータからと制御フロー
命令の即値モード・オペランド・フィールド内に入って
いるオペランド・データとからＩＦＵによって計算され
る
２．７．２  絶対無条件ブランチのターゲット・アドレスはレジスタ
基準値、ベース・レジスタ値およびインデックス・レジ
スタ値からＩＥＵによって計算される
２．７．２．１  命令プリフェッチ・サイクルは絶対アドレス・ブ
ランチに対してターゲット・アドレスがＩＥＵか
ら返されるまで停止する。実行サイクルは続行さ
れる
２．８  次にプリフェッチされたプロシージャの命令の組のアドレスはＥＢＵＦ
ＰＦｎＰＣにストアされプリフェッチは１．２から続けられる
２．９  プロシージャ命令からのリターンがＩデコードされると、プリフェッ
チがｕＰＣレジスタにストアされているアドレスから続けられ、その
あと（ｘ１６）だけインクリメントされ、あとでプリフェッチするた
めにＭＢＵＦ＿ＰＦｎＰＣレジスタに返される
３  ブランチ命令ストリームの処理：ＴＢＵＦ＿ＰＦｎＰＣ
３．１  ＭＢＵＦ命令ストリームの中の最初の命令の組に現れた条件つき制
御フロー命令がＩデコードされると、ターゲット・アドレスはそのタ
ーゲット・アドレスが現アドレスに対する相対アドレスならばＩＦＵ
によって絶対アドレスならばＩＥＵによって判断される
３．２  「ブランチを行うバイアス」の場合：
３．２．１  ブランチが絶対アドレスに行われる場合はターゲット・
アドレスがＩＥＵから返されるまで命令プリフェッチ・
サイクルを停止する。実行サイクルは続行される
３．２．２  ＰＦ＿ＰＣセレクタとインクリメンタを経由して転送す
ることによってブランチ・ターゲット・アドレスをＴ＿
ＢＵＦ＿ＰＦｎＰＣにロードする
３．２．３  ターゲット命令ストリームがプリフェッチされてＴＢＵ
Ｆに入れられたあとで実行するためにＩＦＩＦＯに送ら
れる。ＩＦＩＦＯとＴＢＵＦが一杯になると、プリフェ
ッチを停止する
３．２．４  ３２ビット・インクリメンタは各プリフェッチ・サイク
ルごとにＴＢＵＦ＿ＰＦｎＰＣに入っているアドレス値
を（ｘ１６）だけ調整する
３．２．５  ターゲット命令ストリーム内の２番目の命令の組に現
れた条件付き制御フロー命令がＩデコードされるとプリ
フェッチ・オペレーションを、第１の（主）セット内の
全ての条件付きブランチ命令が解決されるまで停止する
（しかし、先に進んで、相対ターゲット・アドレスを計
算しターゲット・レジスタにストアする）
３．２．６  最初の命令の組の内の条件付きブランチを「行う」と解
釈された場合：
３．２．６．１  ブランチのソースがプロシージャ進行中ビットか
ら判断されたＥＢＵＦ命令の組であったときは
ＭＢＵＦまたはＥＢＵＦに入っている最初の条件
付きフロー命令の組のあとに置かれた命令セッ
トをフラッシュする
３．２．６．２  プロシージャ進行中ビットの状態に基づいて、Ｔ
ＢＵＦ＿ＰＦｎＰＣ値をＭＢＵＦ＿ＰＦｎＰＣま
たはＥＢＵＦへ転送する
３．２．６．３  プロシージャ進行中ビットの状態に基づいて、プ
リフェッチしたＴＢＵＦ命令をＭＢＵＦまたはＥ
ＢＵＦへ転送する
３．２．６．４  ２番目の条件付きブランチ命令の組がＩデコー
ドされていなければ、プロシージャ進行中ビット
の状態に基づいて、ＭＢＵＦまたはＥＢＵＦプリ
フェッチ・オペレーションを続行する
３．２．６．５  ２番目の条件付きブランチ命令がＩデコードされ
ていれば、その命令の処理を開始する（ステップ
３．３．１へ進む）
３．２．７  最初の条件付き命令の組の中の命令に対する条件付き
制御を「行わない」と解釈された場合：
３．２．７．１  ターゲット命令ストリームからの命令の組と命
令のＩＦＩＦＯとＩＥＵをフラッシュする
３．２．７．２  ＭＢＵＦまたはＥＢＵＦプリフェッチ・オペレー
ションを続行する
３．３  「ブランチが行われないバイアス」の場合：
３．３．１  命令をプリフェッチしてＭＢＵＦに入れることを停止す
る。実行サイクルを続ける
３．３．１．１  最初の条件付き命令の組の中の条件付き制御フ
ロー命令が相対ならばターゲット・アドレスを計
算し、ターゲット・レジスタにストアする
３．３．１．２  最初の条件付き命令の組の中の条件付き制御フ
ロー命令が絶対ならば、ＩＥＵがターゲット・ア
ドレスを計算して、そのアドレスをターゲット・
レジスタに返すまで待つ
３．３．１．３  ２番目の命令の組の中の条件付き制御フロー命
令のＩデコードが行われると、最初の条件付き命
令セットの中の条件付き制御フロー命令が解決さ
れるまでプリフェッチ・オペレーションを停止す
る
３．３．２  最初の条件付きブランチのターゲット・アドレスが計算
されると、ＴＢＵＦ＿ＰＦｎＰＣにロードし、メイン命
令ストリームの実行と並行して命令をプリフェッチして
ＴＢＵＦに入れることを開始する。ターゲット命令セッ
トはロードされない（したがって、ブランチ・ターゲッ
ト命令は最初の命令の組の中の各条件付き制御フロー命
令が解決されたとき用意されている）
３．３．３  最初のセットの中の条件つき制御フロー命令が「行われ
る」と解釈された場合：
３．３．３．１  ブランチのソースがＥＢＵＦ命令ストリームであ
るとプロシージャ進行中ビットの状態から判断さ
れると、ＭＢＵＦまたはＥＢＵＦをフラッシュし
、最初の条件付きブランチ命令の組のあとに置
かれたメイン・ストリームからの命令のＩＦＩＦ
ＯとＩＥＵをフラッシュする
３．３．３．２  プロシージャ進行中ビットの状態から判断した通
りに、ＴＢＵＦ＿ＰＦｎＰＣ値をＭＢＵＦ＿ＰＦ
ｎＰＣまたはＥＢＵＦへ転送する
３．３．３．３  プロシージャ進行中ビットの状態から判断した通
りに、プリフェッチしたＴＢＵＦ命令をＭＢＵＦ
またはＥＢＵＦへ転送する
３．３．３．４  プロシージャ進行中ビットの状態から判断した通
りに、ＭＢＵＦまたはＥＢＵＦプリフェッチ・オ
ペレーションを続行する
３．３．４  最初のセット内の条件付き制御フロー命令が「行われな
い」と解析された場合：
３．３．４．１  ターゲット命令ストリームからの命令の組のＴ
ＢＵＦをフラッシュする
３．３．４．２  ２番目の条件付きブランチ命令がＩデコードされ
なかった場合は、プロシージャ進行中ビットの状
態から判断した通りに、ＭＢＵＦまたはＥＢＵＦ
プリフェッチ・オペレーションを続ける
３．３．４．３  ２番目の条件付きブランチ命令がＩデコードされ
た場合は、その命令の処理を開始する（ステップ
３．４．１へ進む）
４  割り込み、例外およびトラップ命令
４．１  トラップは広義には次のものからなる
４．１．１  ハードウェア割り込み
４．１．１．１  非同期（外部）発生事象、内部または外部
４．１．１．２  いつでも発生し、持続する
４．１．１．３  アトミック（通常）命令間で優先順にサービスを
受け、プロシージャ命令を一時中止する
４．１．１．４  割り込みハンドラの開始アドレスはトラップ・ハ
ンドラ入り口点の事前定義テーブルまでのベクト
ル番号オフセットとして判断される
４．１．２  ソフトウェア・トラップ命令
４．１．２．１  非同期（外部）発生命令
４．１．２．２  例外として実行されるソフトウェア命令
４．１．２．３  トラップ・ハンドラの開始アドレスは、ＴＢＲま
たはＦＴＢレジスタにストアされたベース・アド
レス値と結合されたトラップ番号オフセットから
判断される
４．１．３  例外
４．１．３．１  命令と同期して発生する事象
４．１．３．２  命令の実行時に処理される
４．１．３．３  例外の結果により、期待された命令とすべての後
続実行命令はキャンセルされる
４．１．３．４  例外ハンドラの開始アドレスは、トラップ・ハ
ンドラ入り口点の事前定義テーブルまでのトラッ
プ番号オフセットから判断される
４．２  トラップ命令ストリーム・オペレーションはそのとき実行中の命令ス
トリームとインラインで実行される
４．３  トラップ処理ルーチンが次の割り込み可能トラップの前にｘＰＣアド
レスをセーブすることを条件に、トラップはネストが可能である。そ
うしないと、現トラップ・オペレーションの完了前にトラップが現れ
ると、マシンの状態が壊れることになる
５  トラップ命令ストリームの処理：ｘＰＣ
５．１  トラップが現れた時：
５．１．１  非同期割り込みが起こると、そのとき実行中の命令は一
時中断される
５．１．２  同期例外が起こると、例外を起こした命令が実行される
とトラップが処理される
５．２  トラップが処理されたとき：
５．２．１  割り込みは禁止される
５．２．２  現在のＩＦ＿ＰＣアドレスはｘＰＣトラップ状態リター
ン・アドレス・レジスタにストアされる
５．２．３  ＩＦ＿ＰＣアドレスとそのあとのアドレスにあるＩＦＩ
ＦＯとＭＢＵＦプリフェッチ・バッファはフラッシュさ
れる
５．２．４  アドレスＩＦ＿ＰＣと、そのあとのアドレスの実行され
た命令と、その命令の結果はＩＥＵからフラッシュされ
る
５．２．５  ＭＢＵＦ＿ＰＦｎＰＣに、トラップ・ハンドラ・ルーチ
ンのアドレスがロードされる
５．２．５．１  トラップのソースは特殊レジスタ群に入っている
トラップ番号によって判断されたトラップ・タイ
プに応じてＴＢＲまたはＦＴＢレジスタをアドレ
ス指定している
５．２．６  命令がプリフェッチされ、通常通りに実行するためにＩ
ＦＩＦＯに入れられる
５．２．７  トラップ・ルーチンの命令がそのあと実行される
５．２．７．１  トラップ処理ルーチンはｘＰＣアドレスを所定の
ロケーションにセーブする機能を備え、割り込み
を再び可能にする。ｘＰＣレジスタは特殊レジス
タ移動命令で、および特殊レジスタ・アドレスと
データ・バスを通して読み書きされる
５．２．８  トラップ命令からのリターンを実行することによってト
ラップ状態から抜け出る必要がある
５．２．８．１  以前にセーブしていた時はｘＰＣアドレスをその
事前定義ロケーションから復元してからトラップ
命令からのリターンを実行する必要がある
５．３  トラップ命令からのリターンが実行されたとき：
５．３．１  割り込みが可能にされる
５．３．２  プロシージャ進行中ビットの状態から判断したとおりに
、ｘＰＣアドレスが現在の命令ストリーム・レジスタＭ
ＢＵＦまたはＥＢＵＦ＿ＰＦｎＰＣに戻され、プリフェ
ッチがそのアドレスから続行される
５．３．３  ｘＰＣアドレスが新ストリーム・レジスタを通してＩＦ
ＰＣレジスタに復元される。
【００９２】
Ｅ）割り込みおよび例外の処理
１）概要
割り込みと例外は、それらが可能にされている限り、プロセッサがメイン命令ストリームから実行されているか、プロシージャ命令ストリームから実行されているか、プロシージャ命令ストリームから実行されているかに関係なく処理される。割り込みと例外は優先順にサービスが受けられ、クリアされるまで持続している。トラップ・ハンドラの開始アドレスは下述するように、トラップ・ハンドラの事前定義テーブルまでのベクトル番号オフセットとして判断される。
【００９３】
割り込みと例外は、本実施例では基本的に２つのタイプがある。すなわち、命令ストリームの中の特定の命令と同期して引き起こされるものと、命令ストリームの中の特定の命令と非同期に引き起こされるものである。割り込み、例外、トラップおよびフォールト（ｆａｕｌｔ）の用語は、本明細書では相互に使い分けて用いられている。非同期割り込みは、命令ストリームと同期して動作していない、オン・チップまたはオフ・チップのハードウエアによって引き起こされる。例えば、オン・チップ・タイマ／カウンタによって引き起こされる割り込みは、オフ・チップから引き起こされるハードウエア割り込みやマスク不能割り込み（ｎｏｎ−ｍａｓｋａｂｌｅ  ｉｎｔｅｒｒｕｐｔ）（ＮＭＩ）と同じように、非同期である。非同期割り込みが引き起こされると、プロセッサ・コンテキストが凍結され（ｆｒｏｚｅｎ）、すべてのトラップが割り込み禁止され、ある種のプロセッサ状況情報がストアされ、プロセッサは受け取った特定の割り込みに対応する割り込みハンドラにベクトルを向ける。割り込みハンドラがその処理を完了すると、プログラム実行は割り込み発生時に実行中であったストリームの中の最後に完了した命令のあとに置かれた命令から続けられる。
【００９４】
同期例外とは、命令ストリームの中の命令と同期して引き起こされる例外である。これらの例外は特定の命令に関連して引き起こされ、問題の命令が実行されるまで保留される。好適実施例では、同期例外はプリフェッチ時、命令デコード時、または命令実行時に引き起こされる。プリフェッチ例外には、例えばＴＬＢ不一致、その他のＶＭＵ例外がある。デコード例外は、例えばデコード中の命令が違法命令であるか、プロセッサの現特権レベル（ｐｒｉｖｉｌｅｇｅ  ｌｅｖｅｌ）に一致していないと引き起こされる。実行例外は、例えばゼロによる除算といった算術演算エラーが原因で引き起こされる。これらの例外が起こると、好適実施例では例外を引き起こした特定命令と例外とを対応づけ、その命令がリタイア（ｒｅｔｉｒｅ）されるときまでその状態が維持される。その時点で、以前に完了した命令がすべてリタイアされ、例外を引き起こした命令からの試行的結果があれば、試行的に実行された後続の命令の試行的結果と同じようにフラッシュされる。そのあと、その命令で引き起こされた最高優先度例外に対応する例外ハンドラに制御が渡される。
【００９５】
ソフトウェア・トラップ命令はＣＦ＿ＤＥＴ２７４（図２）によってＩデコード・ステージで検出され、無条件コール命令その他の同期トラップと同じように処理される。つまり、ターゲット・アドレスが計算され、プリフェッチはそのときのプリフェッチ待ち行列（ＥＢＵＦまたはＭＢＵＦ）まで続けられる。これと同時に、その例外は命令と対応づけられて記録され、命令がリタイアされるとき処理される。他のタイプの同期例外はすべて、例外を引き起こした特定命令と対応づけられて記録され、累積されるだけで実行時に処理される。
【００９６】
２）非同期割り込み：
非同期割り込みは、割り込みライン２９２を通してＰＣロジック・ユニット２７０に通知される。図３に示すように、これらのラインはＰＣロジック・ユニット２７０内の割り込みロジック・ユニット３６３に通知するためのもので、ＮＭＩライン、ＩＲＱラインおよび１組の割り込みレベル・ライン（ＬＶＬ）からなっている。ＮＭＩラインはマスク不能割り込みを通知し、外部ソースを起点としている。これは、ハードウエア・リセットを除き最高優先度割り込みである。ＩＲＱラインも外部ソースを起点としており、外部デバイスがハードウエア割り込みをいつ要求したかを通知する。好適実施例では、外部から起こされるハードウエア割り込みは最高３２個までユーザが定義することができ、割り込みを要求した特定外部デバイスは割り込みレベル・ライン（ＬＶＬ）上に割り込み番号（０−３１）を送出する。メモリ・エラー・ラインはＭＣＵ１１０によってアクティベート（活性化）され、様々な種類のメモリ・エラーを通知する。その他の非同期割り込みライン（図示せず）も割り込みロジック・ユニット３６３に通知するために設けられている。これらには、タイマ／カウンタ割り込み、メモリ入出力（Ｉ／Ｏ）エラー割り込み、マシン・チェック割り込み、およびパフォーマンス・モニタ割り込みを要求するためのラインがある。
【００９７】
非同期割り込みの各々は下述する同期例外と同様に対応する事前定義トラップ番号が関連付けられている。これらのトラップ番号は３２個が３２個のハードウエア割り込みレベルと関連付けられている。これらのトラップ番号のテーブルは割り込みロジック・ユニット３６３に維持されている。一般にトラップ番号が大きくなると、トラップの優先度が高くなる。
【００９８】
非同期割り込みの一つが割り込みロジック・ユニット３６３に通知されると、割り込み制御ユニット３６３は割り込み要求をＩＮＴ  ＲＥＱ／ＡＣＫライン３４０を経由してＩＥＵ１０４へ送出する。また、割り込み制御ユニット３６３はプリフェッチ一時中止信号をライン３４３を経由してＰＣ制御ユニット３６２へ送信し、ＰＣ制御ユニット３６２に命令をプリフェッチすることを中止させる。ＩＥＵ１０４はそのときの実行中の命令を全てキャンセルし、すべての試行的結果を中止するか、一部またはすべての命令を完了させる。好適実施例では、そのとき実行中の命令をすべてキャンセルすることによって、非同期割り込みに対する応答を高速化している。いずれの場合も、実行ＰＣ制御ユニット３６６内のＤＰＣは、ＩＥＵ１０４が割り込みの受信を確認する前に、最後に完了し、リタイアされた命令に対応するように更新される。プリフェッチされて、ＭＢＵＦ、ＥＢＵＦ、ＴＢＵＦおよびＩＦＩＦＯ２６４に置かれている他の命令もすべてキャンセルされる。
【００９９】
ＩＥＵ１０４は割り込みハンドラから割り込みを受け取る準備状態にあるときだけ、割り込み受信確認信号をＩＮＴ  ＲＥＱ／ＡＣＫライン３４０を経由して、割り込み制御ユニット３６３へ送り返す。この信号を受け取ると、割り込み制御ユニット３６３は、以下で説明するように、該当するトラップ・ハンドラにディスパッチする。
【０１００】
３）同期例外
同期例外の場合は、割り込み制御ユニット３６３は各命令の組ごとに４個が１組の内部例外ビット（図示せず）をもっており、各ビットはセット内の各命令に対応づけられている。割り込み制御ユニット３６３は各命令で見つかったとき、通知するトラップ番号も維持している。
【０１０１】
特定の命令の組がプリフェッチされている途中で、ＶＭＵがＴＬＢ不一致または別のＶＭＵ例外を通知するとこの情報はＰＣロジック・ユニット２７０へ、特に割り込み制御ユニット３６３へＶＭＵ制御ライン３３２、３３４を経由して送られる。割り込み制御ユニット３６３は、この信号を受信すると、以後のプリフェッチを一時中止するようにライン３４３を経由して、ＰＣ制御ユニット３６２に通知する。これと同時に、割り込み制御ユニット３６３は、命令の組が送られる先のプリフェッチ・バッファに関連するＶＭ＿ＭｉｓｓまたはＶＭ＿Ｅｘｃｐビットのどちらか該当する方をセットする。そのあと、割り込み制御ユニット３６３は命令の組の中の命令のどれも有効でないので、その命令の組に対応する４個の内部例外標識ビットを全部セットし、問題を起こした命令の組の中の４命令の各々に対応して受信した特定例外のトラップ番号をストアする。問題のある命令より前の命令のシフトと実行は、問題の命令の組がＩＦＩＦＯ２６４内で最低レベルに達するまで通常通りに続行される。
【０１０２】
同様に、プリフェッチ・バッファ２６０、Ｉデコート・ユニット２６２またはＩＦＩＦＯ２６４を通して命令をシフトしている途中で他の同期例外が検出されると、この情報も割り込み制御ユニット３６３へ送られ、ユニット３６３は例外を引き起こした命令に対応する内部例外標識ビットをセットし、その例外に対応するトラップ番号をストアする。プリフェッチ同期例外の場合と同じように、問題を起こした命令より前の命令のシフトと実行は、問題の命令の組がＩＦＩＦＯ２６４内で最低レベルに達するまで通常通りに続行される。
【０１０３】
好適実施例では、プリフェッチ・バッファ２６０、Ｉデコード・ユニット２６２またはＩＦＩＦＯ２６４を通して命令をシフトしている途中で検出される例外は、ソフトウェア・トラップ命令の１タイプだけである。ソフトウェア・トラップ命令は、ＣＦ＿ＤＥＴユニット２７４によってＩデコード・ステージで検出される。一部の実施例では他の形態の同期例外がＩデコード・ステージで検出されるが、他の同期例外の検出は、命令が実行ユニット１０４に到着するまで待つようにするのが好ましい。このようにすれば、特権命令を処理すると起こるようなある種の例外が、命令が実効的に順序内で実行される前に変化する恐れのあるプロセッサ状態に基づいて通知されるのが防止される。違法命令のように、プロセッサ状態に左右されない例外はＩデコード・ステージで検出可能であるが、すべての実行前同期例外（ＶＭＵ例外は別として）を同じロジックで検出するようにすれば、最低限のハードウエアですむことになる。また、そのような例外の処理は時間を重視することがめったにないので、命令が実行ユニット１０４に届くまでの待ちによる時間浪費もない。
【０１０４】
上述したように、ソフトウェア・トラップ命令は、ＣＦ＿ＤＥＴユニット２７４によってＩデコード・ステージで検出される。割り込みロジック・ユニット３６３内のその命令に対応する内部例外標識ビットはセットされ、０から１２７までの番号で、ソフトウェア・トラップ命令の即値モード・フィールドに指定できるソフトウェア・トラップ番号はトラップ命令に対応付けられてストアされる。しかし、プリフェッチ同期例外と異なり、ソフトウェア・トラップは制御フロー命令だけでなく、同期例外としても扱われるので、割り込み制御ユニット３６３は、ソフトウェア・トラップ命令が検出されたときプリフェッチを一時中止するようにＰＣ制御ユニット３６２に通知しない。その代わりに、命令がＩＦＩＦＯ２６４を通してシフトされるのと同時にＩＦＵ１０２はトラップ・ハンドラをプリフェッチしてＭＢＵＦ命令ストリーム・バッファに入れる。
【０１０５】
命令の組がＩＦＩＦＯ２６４の最低レベルまで達すると、割り込みロジック・ユニット３６３はその命令の組の例外標識ビットを４ビット・ベクトルとしてＳＹＮＣＨ  ＩＮＴ  ＩＮＦＯライン３４１経由でＩＥＵ１０４へ送り、命令の組の中で同期例外の発生源とすでに判断されていた命令があれば、どの命令であるかを通知する。ＩＥＵ１０４は即時に応答しないで、命令の組の中の全ての命令が通常の方法でスケジュールされるようにする。整数算術演算例外と言った別の例外は、実行時に引き起こされる場合がある。特権命令が実行されたために起こる例外のように、マシンの現在状態に左右される例外もこの時点で検出され、マシンの状態が命令ストリーム内の以前の全ての命令に対して最新となるようにするために、ＰＳＲに影響を与える可能性のあるすべての命令（特殊な移動やトラップ命令からのリターンなど）は強制的に順序内で実行される。なんらかの同期命令の発生源となった命令がリタイアされる直前にあるときだけ、例外が起こったことが割り込みロジック・ユニット３６３に通知される。
【０１０６】
ＩＥＵ１０４は試行的に実行され、同期例外を引き起こした最初の命令に先行する命令に現れた全ての命令をリタイアし、試行的に実行され、命令ストリームにそのあとに現れた命令からの試行的結果をフラッシュする。例外を引き起こした特定の命令は、トラップから戻ると再実行されるのが普通であるので、この命令もフラッシュされる。そのあと、実行ＰＣ制御ユニット３６６内のＩＦ＿ＰＣは実際にリタイアされた最後の命令に対応するように更新され、例外が割り込み制御ユニット３６３に通知される。
【０１０７】
例外の発生源である命令がリタイアされると、ＩＥＵ１０４はリタイアされる命令の組（レジスタ２２４）の中に同期例外を起こした命令があれば、どの命令であるかを示した新しい４ビット・ベクトルを命令の組内の最初の例外の発生源を示した情報と一緒に、ＳＹＮＣＨ  ＩＮＴ  ＩＮＦＯライン３４１を経由して割り込みロジック・ユニット３６３に返却する。ＩＥＵ１０４から返却される４ビット例外ベクトルに入っている情報は、割り込みロジック・ユニット３６３からＩＥＵ１０４に渡された４ビット例外ベクトルとＩＥＵ１０４で引き起こされた例外を累積したものである。プリフェッチまたはＩデコード時に検出された例外が原因で割り込み制御ユニット３６３にすでにストアされている情報があれば、その情報と一緒にＩＥＵ１０４から割り込み制御ユニット３６３に返却される情報の残余部分は、割り込み制御ユニット３６３が最高優先度同期例外の内容とそのトラップ番号を判断するのに十分である。
４）ハンドラ・ディスパッチとリターン：
割り込み受信確認信号がライン３４０経由でＩＥＵから受信されるか、あるいはゼロ以外の例外ベクトルがライン３４１経由で受信された後、現ＤＰＣがリターン・アドレスとして特殊レジスタ４１２（図４）の一つであるｘＰＣレジスタに一時的にストアされる。現プロセッサ状態レジスタ（ＰＳＲ）は先のＰＳＲ（ＰＰＳＲ）レジスタにもストアされ、そして現状態比較レジスタ（ＣＳＲ）が特殊レジスタ４１２の中の旧状態比較レジスタ（ＰＣＳＲ）にセーブされる。
【０１０８】
トラップ・ハンドラのアドレスはトラップ・ベース・レジスタ・アドレスにオフセットを加えたものとして計算される。ＰＣロジック・ユニット２７０はトラップ用に２つのベースレジスタを持ち、これらは共に特殊レジスタ４１２（図４）の一部であり、以前に実行された特殊移動命令によって初期化される。大部分のトラップでは、ハンドラのアドレスを計算するために使用されるベース・レジスタはトラップ・ベース・レジスタＴＢＲである。
【０１０９】
割り込み制御ユニット３６３は、現在保留中の最高優先度割り込みまたは例外を判断し、索引（ｌｏｏｋ−ｕｐ）テーブルを通して、それに関連付けられたトラップ番号を判断する。これは、選択したベース・レジスタまでのオフセットとして、１組のＩＮＴ  ＯＦＦＳＥＴライン３７３を経由してプリフェッチＰＣ制御ユニット３６４へ渡される。ベクトル・アドレスは、オフセット・ビットを下位ビットとしてＴＢＲレジスタから得た上位ビットに連結するだけで求められるという利点がある。このため、加算器の遅延が防止される。（本明細書では２'ビットとはｉ'番目のビットのことである。）例えばトラップの番号が０から２５５までで、これを８ビット値で表すと、ハンドラ・アドレスは８ビット・トラップ番号を２２ビットとＴＢＲストア値の最後に連結すると求められる。トラップ番号に２桁の下位ビットを付加すると、トラップ・ハンドラ・アドレスは常にワード境界上に置かれることになる。このようにして作られた連結ハンドラ・アドレスは入力３７３の一つとしてプリフェッチ・セレクタＰＦ＿ＰＣ＿Ｓｅｌ３９０（図４）へ送られ、次のアドレスとして選択され、そこから命令がプリフェッチされる。ＴＢＲレジスタを使用したトラップのベクトル・ハンドラ・アドレスは全て１ワードだけ離れている。したがって、トラップ・ハンドラ・アドレスにある命令は、長くなったトラップ処理ルーチンへの予備的ブランチ命令でなければならない。しかし、トラップにはシステム・パフォーマンスの低下を防止するために、その扱いに注意が必要なものがいくつかある。例えばＴＬＢトラップは高速に実行させる必要がある。そのような理由から、好適実施例では、予備的ブランチの費用を払わないで、小型のトラップ・ハンドラを呼び出せるようにした高速トラップ・メカニズムが組み込まれている。さらに、高速トラップ・ハンドラはメモリにも、例えば、オン・チップＲＯＭにも独立に配置させることができるので、ＲＡＭの位置（ロケーション）に関連するメモリ・システム問題がなくなる。
【０１１０】
好適実施例では、高速トラップとなるトラップは上述したＶＭＵ例外だけである。高速トラップの番号は他のトラップと区別され、０〜７の範囲になっている。しかし、優先度はＭＭＵ例外と同じである。割り込み制御ユニット３６３は、高速トラップがそのとき保留中の最高優先度であると認めると、特殊レジスタ（ＦＴＢ）から高速トラップ・ベース・レジスタ（ＦＴＢ）を選択し、トラップ・オフセットと結合するためにライン４１６上に送出する。ライン３７３'経由でプリフェッチ・セレクタＰＦ＿ＰＣ＿Ｓｅｌ３９０へ送られた結果のベクトル・アドレスはＦＴＢレジスタからの上位２２ビットを連結したもので、そのあとに高速トラップ番号を表した３ビットが続き、そのあとに７個のゼロ・ビットが続いている。したがって、各高速トラップ・アドレスは１２８バイト、つまり３２ワードだけ離れている。呼び出されると、プロセッサは開始ワードへブランチし、ブロックまたはそこからでたブランチ内でプログラムを実行させる。
【０１１１】
３２個またはそれ以下の命令で実現できる標準的なＴＬＢ処理ルーチンのような小さなプログラムの実行は、実際の実行処理ルーチンへの予備的ブランチが回避されるので、通常のトラップよりも高速化される。
【０１１２】
好適実施例では、すべての命令は同じ４バイト長になっているが（つまり、４つのアドレス・ロケーションを占有する）、注目すべきことは命令が可変長になったマイクロプロセッサでも高速トラップ・メカニズムが利用できることである。この場合、高速トラップ・ベクトル・アドレス間には、マイクロプロセッサで使用できる最短長の命令を少なくとも２つ、好ましくは３２個の平均サイズ命令を受け入れるだけの十分なスペースが設けられることは勿論である。勿論、マイクロプロセッサがトラップからのリターン命令を備えている場合には、ベクトル・アドレス間にはハンドラ内の少なくとも１つの他の命令をその命令におけるだけの十分なスペースを設けておく必要がある。
【０１１３】
また、トラップ・ハンドラへディスパッチすると、プロセッサはカーネル・モードと割り込み状態に入る。これと並行して状態比較レジスタ（ＣＳＲ）のコピーが以前のキャリー状態レジスタ（ＰＣＳＲ）に置かれ、ＰＳＲのコピーが以前のＰＳＲ（ＰＰＳＲ）にストアされる。カーネルと割り込み状態モードはプロセッサ状況レジスタ（ＰＳＲ）内のビットで表される。現ＰＳＲの割り込み状態ビットがセットされるとシャドウ・レジスタまたはトラップ・レジスタＲＴ〔２４〕〜ＲＴ〔３１〕が上述および図７（ｂ）に示すように見えるようになる。割り込みハンドラは新しいモードをＰＳＲに書込むだけでカーネル・モードから出ることができるが、割り込み状態から出るためには、トラップからのリターン（ＲＴＴ）命令を実行する方法だけが唯一の方法である。
【０１１４】
ＩＥＵ１０４がＲＴＴ命令を実行すると、ＰＣＳＲは、ＣＳＲレジスタに復元され、ＰＰＳＲレジスタはＰＳＲレジスタに復元されるので、ＰＳＲ内の割り込み状態ビットは自動的にクリアされる。ＰＦ＿ＰＣ＿ＳＥＬセレクタ３９０は特殊レジスタ・セット４１２の中の特殊レジスタｘＰＣを次にそこからプリフェッチするアドレスとして選択する。ｘＰＣはインクリメンタ３９４とバス３９６を通してＭＢＵＦ＿ＰＦｎＰＣまたはＥＢＵＦ＿ＰＦｎＰＣのどららか該当する方に復元される。ｘＰＣをＥＢＵＦ＿ＰＦｎＰＣに復元すべきか、またはＭＢＵＦ  ＰＦｎＰＣに復元すべきかの判断は、復元された後のＰＳＲの「プロシージャ進行中」ビットにしたがって行われる。
【０１１５】
注目すべきことは、プロセッサはトラップとプロシージャ命令の両方のリターン・アドレスをストアするのに同じ特殊レジスタｘＰＣを使用しないことである。トラップのリターン・アドレスは上述したように特殊レジスタｘＰＣにストアされるが、プロシージャ命令のあとリターンする先のアドレスは別の特殊レジスタｕＰＣにストアされる。したがって、割り込み状態は、プロセッサが、プロシージャ命令で呼び出されたエミュレーション・ストリームを実行している間でも、使用可能のままになっている。他方、例外処理ルーチンはエミュレーション・ストリームが完了した後、例外ハンドラへ戻るためのアドレスをストアする特殊レジスタがないので、いずれのプロシージャ命令をも含んでいてはならない。
５）ネスト：
ある種のプロセッサ状況情報は、トラップ・ハンドラ、特にＣＳＲ、ＰＳＲ、リターンＰＣおよびある意味では“Ａ”レジスタ・セットｒａ〔２４〕〜ｒａ〔３１〕へディスパッチするとき自動的にバックアップが取られるが、他のコンテキスト情報は保護されていない。例えば浮動小数点状況レジスタ（ＦＳＲ）の内容は自動的にバックアップがとられない。トラップ・ハンドラがこれらのレジスタを変更するためには、独自のバックアップを実行しなければならない。
【０１１６】
トラップ・ハンドラへディスパッチするとき自動的に行われるバックアップが制限されているために、トラップのネストは自動的に行われない。トラップ・ハンドラは必要とするレジスタのバックアップをとり、割り込み条件をクリアし、トラップ処理のために必要な情報をシステム・レジスタから読取り、その情報を適当に処理する必要がある。割り込みは、トラップ・ハンドラへディスパッチすると自動的に禁止される。処理を終えると、ハンドラはバックアップをとったレジスタを復元し、再び割り込みを可能にし、ＲＴＴ命令を実行して割り込みから戻ることができる。
【０１１７】
ネストされたトラップを可能にするには、トラップ・ハンドラを第１部分と第２部分に分割する必要がある。第１部分では、割り込みが禁止されている間に、特殊レジスタ移動命令を使用してｘＰＣをコピーし、トラップ・ハンドラが維持しているスタック上にプッシュしておく必要がある。次に、特殊レジスタ移動命令を使用して、トラップ・ハンドラの第２部分の先頭のアドレスをｘＰＣに移し、トラップからのリターン命令（ＲＴＴ）を実行する必要がある。ＲＴＴは割り込み状態を取り除き（ＰＰＳＲをＰＳＲに復元することによって）、制御をｘＰＣ内のアドレスに移す。ｘＰＣには、ハンドラの第２部分のアドレスが入っている。第２部分はこの時点で割り込みを可能にして、割り込み可能モードで例外の処理を続けることができる。注目すべきことは、シャドウ・レジスタＲＴ〔２４〕〜ＲＴ〔３１〕はこのハンドラの第１部分でのみ見ることができ、第２部分では見えないことである。したがって、第２部分ではハンドラは“Ａ”レジスタ値がハンドラによって変更される可能性がある場合には、その値を予約しておく必要がある。トラップ処理ルーチンは終わったときは、バックアップにとったレジスタを全て復元し、元のｘＰＣをトラップ・ハンドラ・スタップからポップし、それを特殊レジスタ移動命令を使用してｘＰＣ特殊レジスタに戻して、別のＲＴＴを実行する必要がある。これにより、制御はメインまたはエミュレーション命令ストリームの中の該当命令に返される。
６）トラップ一覧表：
次の表Ｉは、好適実施例で認識されるトラップのトラップ番号、優先度および処理モードを示すものである。
【０１１８】
表Ｉ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
トラップ番号 処理モード 同期 トラップ名
０−１２７        通常            同期      トラップ命令
１２８            通常            同期      ＦＰ例外
１２９            通常            同期      整数算術演算例外
１３０            通常            同期      ＭＭＵ（ＴＬＢ不一致または
修正を除く）
１３５            通常            同期      不整列メモリアドレス
１３６            通常            同期      違法命令
１３７            通常            同期      特権命令
１３８            通常            同期      デバッグ例外
１４４            通常            非同期    性能モニタ
１４５            通常            非同期    タイマ／カウンタ
１４６            通常            非同期    メモリＩ／Ｏエラー
１６０ー１９１    通常            非同期    ハードウェア割込み
１９２ー２５３    予約
２５４            通常            非同期    マシン・チェック
２５５            通常            非同期    ＮＭＩ
０                高速トラップ    同期      高速ＭＭＵ  ＴＬＢ不一致
１                高速トラップ    同期      高速ＭＭＵ  ＴＬＢ修正
２ー３            高速トラップ    同期      高速（予約）
４ー７            高速トラップ    同期      高速（予約）
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
ＩＩＩ．命令実行ユニット
図５はＩＥＵ１０４の制御経路部分とデータ経路部分を示したものである。主要データ経路は、ＩＦＵ１０２からの命令／オペランド・データ・バスを始端としている。データ・バスとして、即値オペランドはオペランド位置合わせユニット４７０へ送られ、レジスタ・ファイル（ＲＥＧ  ＡＲＲＡＹ）４７２に渡される。レジスタ・データはレジスタ・ファイル４７２からバイパス・ユニット４７４を通って、レジスタ・ファイル出力バス４７６を経由し、分配バス４８０を経由して機能計算エレメント（ＦＵ0-n ）の並列配列へ送られる。機能ユニット４７８0-n によって生成されたデータは出力バス４８２を経由して、バイパス・ユニット４７４またはレジスタ配列４７２または両方へ送り返される。
【０１１９】
ロード／ストア・ユニット４８４によってＩＥＵ１０４のデータ経路部分が完成される。ロード／ストア・ユニット４８４はＩＥＵ１０４とＣＣＵ１０６間のデータ転送の管理を担当する。具体的には、ＣＣＵ１０６のデータ用キャッシュ１３４から取り出したロード・データはロード／ストア・ユニット４８４によってロード・データ・バス４８６を経由してレジスタ配列４７２へ転送される。ＣＣＵ１０６のデータ用キャッシュにストアされるデータは機能ユニットの分配バス４８０から受信される。
【０１２０】
ＩＥＵ１０４の制御経路部分はＩＥＵデータ経路を通る情報の送出、管理、およびその処理を行うことを担当する。本発明の好適実施例では、ＩＥＵ制御経路は複数の命令の並行実行を管理する機能を備え、ＩＥＵデータ経路はＩＥＵ１０４のほぼすべてのデータ経路エレメント間の複数のデータ転送を独立して行う機能を備えている。ＩＥＵ制御経路は命令／オペランド・バス１２４を経由して命令を受信すると、それに応じて動作する。具体的には命令の組はＥデコード・ユニット４９０によって受信される。本発明の好適実施例では、Ｅデコード・ユニット４９０はＩＦＩＦＯマスタ・レジスタ２１６、２２４に保持されている両方の命令の組を受信して、デコードする。８命令すべてのデコードの結果は、キャリー・チェッカ（ＣＲＹ  ＣＨＫＲ）ユニット４９２、依存性チェッカ（ＤＥＰ  ＣＨＫＲ）ユニット４９４、レジスタ改名ユニット（ＲＥＧ  ＲＥＮＡＭＥ）４９６、命令発行（ＩＳＳＵＥＲ）ユニット４９８、およびリタイア制御ユニット（ＲＥＴＩＲＥ  ＣＬＴ）５００へ送られる。
【０１２１】
キャリー・チェッカ・ユニット４９２はＥデコード・ユニット４９０から制御ライン５０２を経由して、係属中の保留されている８命令に関するデコード化情報を受信する。キャリー・チェッカ４９２の機能は、保留されている命令のうち、プロセッサ状況ワードのキャリー・ビットに影響を与える、あるいはキャリー・ビットの状態に左右される命令を識別することである。この制御情報は、制御ライン５０４を経由して命令発行ユニット４９８へ送られる。
【０１２２】
保留状態の８命令によって使用されているレジスタ・ファイル４７２のレジスタを示しているデコード化情報は、制御ライン５０６を経由して直接にレジスタ改名ユニット４９６へ送られる。この情報は、依存関係チェッカ・ユニット４９４へも送られる。依存関係チェッカ・ユニット４９４の機能は、保留状態の命令のどれがレジスタをデータの宛先として参照しているか、もしあればどの命令がこれらの宛先レジスタのいずれかに依存しているかを判断することである。レジスタに依存する命令は、制御ライン５０８を経由してレジスタ改名ユニット４９６へ送られる制御信号によって識別される。
【０１２３】
最後にＥデコード・ユニット４９０は保留状態の８命令の各々の特定の内容と機能を識別した制御情報を制御ライン５１０を経由して命令発行ユニット４９８へ送る。命令発行ユニット４９８はデータ経路資源、特に、保留状態の命令の実行のためにどの機能ユニットが使用できるかを判断することを担当する。アーキテクチャ１００の好適実施例によれば、命令発行ユニット４９８はデータ経路資源が使用可能であること、キャリーとレジスタ依存関係の制約を条件として８個の保留状態命令のいずれかを順序外で実行できるようにする。レジスタ改名ユニット４９６は、実行できるよう適当に制約が解除された命令のビット・マップを制御ライン５１２を経由して、命令発行ユニット４９８へ送る。すでに実行された（完了した）命令およびレジスタまたはキャリーに依存する命令は論理的にビット・マップから除かれる。
【０１２４】
必要とする機能ユニット４７８0-n が使用可能であるかどうかに応じて、命令発行ユニット４９８は各システム・クロック・サイクルに複数の命令の実行を開始することができる。機能ユニット４７８0-n の状況は状況バス５１４を経由して、命令発行ユニット４９８へ送られる。命令の実行を開始し、開始後の実行管理を行うための制御信号は命令発行ユニット４９８から制御ライン５１６を経由してレジスタ改名ユニット４９６に送られ、また選択的に機能ユニット４７８0-n へ送られる。制御信号を受けると、レジスタ改名ユニット４９６はレジスタ選択信号をレジスタ・ファイル・アクセス制御バス５１８上に送出する。バス５１８上に送出された制御信号でどのレジスタが割り込み可能にされたかは、実行中の命令を選択することによって、およびレジスタ改名ユニット４９６がその特定命令によって参照されたレジスタを判断することによって判断される。
【０１２５】
バイパス制御ユニット（ＢＹＰＡＳＳ  ＣＴＬ）５２０は、一般的には制御ライン５２４上の制御信号を通してバイパス・データ・ルーチング・ユニット４７４の動作を制御する。バイパス制御ユニット５２０は機能ユニット４７８0-n の各々の状況をモニタし、制御ライン５２２を経由して、レジスタ改名ユニット４９６から送られてきたレジスタ参照に関連して、データをレジスタ・ファイル４７２から機能ユニット４７８0-n へ送るべきかどうか、あるいは機能ユニット４７８0-n から出力されるデータをバイパス・ユニット４７４経由で機能ユニット宛先バス４８０へ即時に送って、命令発行ユニット４９８によって選択された新発行の命令の実行のために使用できるかどうかを判断する。どちらの場合も、命令発行ユニット４９８は機能ユニット４７８0-n の各々への特定レジスタ・データを選択的に使用可能にすることによって、宛先バス４８０から機能ユニット４７８0-n へデータを送ることを直接に制御する。
【０１２６】
ＩＥＵ制御経路の残りのユニットには、リタイア制御ユニット５００、制御フロー制御（ＣＦ  ＣＴＬ）ユニット５２８、および完了制御（ＤＯＮＥ  ＣＴＬ）ユニット５３６がある。リタイア制御ユニット５００は順序外で実行された命令の実行を無効または確認するように動作する。ある命令が順序外で実行されると、先行命令も全てリタイアされたならば、その命令は、確認またはリタイアされることができる。現セット中の保留状態の８命令のどれが実行されたかの識別情報が制御ライン５３２上に送出されると、その識別情報に基づいて、リタイア制御ユニット５００はバス５１８に接続された制御ライン５３４上に制御信号を送出して、レジスタ配列４７２にストアされた結果データを順序外で実行された命令の先行実行の結果として実効的に確認する。
【０１２７】
リタイア制御ユニット５００は、各命令をリタイアするとき、ＰＣインクリメント／サイズ制御信号を制御ライン３４４を経由してＩＦＵ１０２へ送る。複数の命令を順序外で実行でき、したがって、同時にリタイアする準備状態におくことができるので、リタイア制御ユニット５００は同時にリタイアされた命令数に基づいてサイズ値を判断する。最後に、ＩＦＩＦＯマスタ・レジスタ２２４のすべての命令が実行され、リタイアされた場合は、リタイア制御ユニット５００はＩＦＩＦＯ読取り制御信号を制御ライン３４２を経由してＩＦＵ１０２へ送ってＩＦＩＦＯユニット２６４のシフト・オペレーションを開始することにより、Ｅデコード・ユニット４９０に追加の４命令を実行保留命令として与える。
【０１２８】
制御フロー制御ユニット５２８は各条件付きブランチ命令の論理的ブランチ結果を検出するという特定化された機能を備えている。制御フロー制御ユニット５２８は現在保留中の条件付きブランチ命令の８ビット・ベクトルＩＤをＥデコード・ユニット４９０から制御ライン５１０を経由して受信する。８ビット・ベクトル命令完了制御信号は、同じように完了制御ユニット５４０から制御ライン５３２を経由して受信される。この完了制御信号によって、制御フロー制御ユニット５２８は、条件付きブランチ命令が、条件付き制御フロー状況を判断するのに十分な箇所まで完了すると、それを判別することができる。保留中の条件付きブランチ命令の制御フロー状況結果は、その実行時に制御フロー制御ユニット５２８によってストアされる。条件付き制御フロー命令の結果を判断するために必要なデータは、レジスタ配列４７２内の一時状況レジスタから制御ライン５３０を経由して得られる。各条件付き制御フロー命令が実行されると、制御フロー制御ユニットは新しい制御フロー結果信号を制御ライン３４８を経由してＩＦＵ１０２に送る。好適実施例では、この制御フロー結果信号は２個の８ビット・ベクトルを含んでおり、このベクトルは、保留されている可能性のある８個の制御フロー命令のそれぞれのビット位置別の状況結果が分かっているかどうか、また、ビット位置の対応づけによって得られる対応する状況結果状態を定義している。
【０１２９】
最後に、完了制御ユニット５４０は機能ユニット４７８0-n の各々のオペレーションに関する実行状況をモニタするためのものである。機能ユニット４７８0-n のいずれかが命令実行オペレーションの完了を通知すると、完了制御ユニット５４０は対応する完了制御信号を制御ライン５４２上に送出して、レジスタ改名ユニット４９６、命令発行ユニット４９８、リタイア制御ユニット５００およびバイパス制御ユニット５２０にアラート（警告）する。
【０１３０】
機能ユニット４７８0-n を並列配列構成にすることにより、ＩＥＵ１０４の制御の一貫性を向上している。命令を正しく認識して、実行のためのスケジュールするためには、個々の機能ユニット４７８0-n の特性を命令発行ユニット４９８に知らせる必要がある。機能ユニット４７８0-n は必要とする機能を実行するために必要な特定制御フロー・オペレーションを判別し、実行することを担当する。従って、命令発行ユニット４９８以外はＩＥＵ制御ユニットには、命令の制御フロー処理を独立して知らせる必要はない。命令発行ユニット４９８と機能ユニット４７８0-n は共同して、残りの制御フロー管理ユニット４９６、５００、５２０、５２８、５４０に実行させる機能を必要な制御信号のプロンプトで知らせる。従って、機能ユニット４７８0-n の特定の制御フロー・オペレーションの変更はＩＥＵ１０４の制御オペレーションに影響しない。さらに、既存の機能ユニット４７８0-n の機能を強化する場合や、拡張精度浮動小数点乗算ユニットや拡張精度浮動小数点ＡＬＵ、高速フーリエ計算機能ユニット、三角関数計算ユニットなどの別の機能ユニット４７８0-n を１つまたは２つ以上を追加する場合でも、命令発行ユニット４９８を若干変更するだけですむ。必要なる変更を行うには、Ｅデコード・ユニット４９０によって隔離された対応する命令フィールドに基づいて、特定の命令を認識し、その命令を必要とする機能ユニット４７８0-n とを関係づける必要がある。レジスタ・データの選択の制御、データのルーチング、命令完了とリタイアは、機能ユニット４７８0-n の他の機能ユニットすべてに対して実行される他のすべての命令の処理と矛盾がないようになっている。
【０１３１】
Ａ）ＩＥＵデータ経路の詳細
ＩＥＵデータ経路の中心となるエレメントはレジスタ・ファイル４７２である。しかし、本発明によればＩＥＵデータ経路内には、個々の機能用に最適化された並列データ経路がいくつか用意されている。主要データ経路は整数と浮動少数点の２つである。各並列データ経路内では、レジスタ・ファイル４７２の一部がそのデータ経路内で行われるデータ操作をサポートするようになっている。
【０１３２】
１）レジスタ・ファイルの詳細
図６（ａ）は、データ経路レジスタ・ファイル５５０の好適アーキテクチャの概要図である。データ経路レジスタ・ファイル５５０は一時バッファ５５２、レジスタ・ファイル配列５５４、入力セレクタ５５９、および出力セレクタ５５６を含んでいる。最終的にレジスタ配列５５４へ送られるデータは結合データ入力バス５５８'を経由して一時バッファ５５２によって最初に受信されるのが代表例である。つまり、データ経路レジスタ・ファイル５５０へ送られるデータはすべて入力セレクタ５５９によって多重化されて、複数の入力バス５５８（好ましくは２つの）から入力バス５５８'上に送出される。制御バス５１８上に送出されたレジスタ選択およびイネーブル制御信号は一時バッファ５５２内の受信データのレジスタ・ロケーションを選択する。一時バッファにストアされるデータを生成した命令がリタイアされると、再び制御バス５１８上に送出された制御信号は一時バッファ５５２からレジスタ・ファイル配列５５４内の論理的に対応づけられたレジスタへデータ・バス５６０を経路してデータを転送することを許可する。しかし、命令がリタイアされる前は、一時バッファ５５２にストアされたデータは一時バッファにストアされたデータをデータ・バス５６０のバイパス部分を経由して出力データ・セレクタ５５６へ送ることにより、後続の命令の実行時に使用することが可能である。制御バス５１８経由で送られる制御信号によって制御されるセレクタ５５６は、一時バッファ５５２のレジスタからのデータとレジスタ・ファイル配列５５４のレジスタからのデータのどちらかを選択する。結果のデータはレジスタ・ファイル出力バス５６４上に送出される。また、実行中の命令が完了と同時にリタイアされる場合は、つまり、その命令が順序内で実行された場合は、結果データをバイパス延長部分５５８”を経由して直接にレジスタ配列５５４へ送るように指示することができる。
【０１３３】
本発明の好適実施例によれば、各データ経路レジスタ・ファイル５５０は２つのレジスタ操作を同時に行なえるようになっている。したがって、入力バス５５８を通して２つの全レジスタ幅データ値を一時バッファ５５２に書き込むことができる。内部的には、一時バッファ５５２はマルチプレクサ配列になっているので、入力データを一時バッファ５５２内の任意の２レジスタへ同時に送ることができる。同様に、内部マルチプレクサにより一時バッファ５５２の任意の５レジスタを選択して、データをバス５６０上に出力することができる。レジスタ・ファイル配列５５４は同じように入出力マルチプレクサを備えているので、２つのレジスタを選択して、それぞれのデータを同時にバス５６０から受信することも、５つのレジスタを選択してバス５６２経由で送ることもできる。最後に、レジスタ・ファイル出力セレクタ５５６は、バス５６０、５６２から受信した１０レジスタ・データ値のうち、任意の５つがレジスタ・ファイル出力バス５６４上に同時に出力されるように実現するのが好ましい。
【０１３４】
一時バッファ内のレジスタ・セットは図６（ｂ）にその概要が示されている。レジスタ・セット５５２'は８個のシングル・ワード（３２ビット）レジスタＩ０ＲＤ、Ｉ１ＲＤ・・・Ｉ７ＲＤから構成されている。レジスタ・セット５５２'は４個のダブル・ワード・レジスタＩ０ＲＤ、Ｉ０ＲＤ＋１（Ｉ４ＲＤ）、Ｉ１ＲＤ、Ｉ１ＲＤ＋１（Ｉ５ＲＤ）・・・Ｉ３ＲＤ、Ｉ３ＲＤ＋１（Ｉ７ＲＤ）のセットとして使用することも可能である。
【０１３５】
本発明の好適実施例によれば、レジスタ・ファイル配列５５４内の各レジスタを重複して設ける代わりに、一時バッファ・レジスタ・セット５５２内のレジスタは２個のＩＦＩＦＯマスタ・レジスタ２１６、２２４内のそれぞれの命令の相対ロケーションに基づいて、レジスタ改名ユニット４９６によって参照される。本アーキテクチャ１００で実現される各命令は、最高２つまでのレジスタまたは１つのダブル・ワード・レジスタを出力として参照して、命令の実行によって生成されたデータの宛先とすることができる。代表例として、命令は１つの出力レジスタだけを参照する。したがって、その位置を図６（ｃ）に示しているように、８個の保留中命令のうち１つの出力レジスタを参照する命令２（Ｉ2 ）の場合は、データ宛先レジスタＩ２ＲＤが選択されて、命令の実行によって生成されたデータを受け入れる。命令Ｉ2 によって生成されたデータが後続の命令、例えばＩ5 によって使用される場合は、Ｉ２ＲＤレジスタにストアされたデータはバス５６０を経由して転送され、結果のデータは一時バッファ５５２に送り返されて、Ｉ５ＲＤで示したレジスタにストアされる。特に、命令Ｉ5 は命令Ｉ2 によって決まるので、命令Ｉ5 は、Ｉ2 からの結果データが得られるまでは実行することができない。しかし、理解されるように、命令Ｉ5 は必要とする入力データを一時バッファ５５２'の命令Ｉ2 のデータ・ロケーションから得れば、命令Ｉ2 のリタイア前に実行することが可能である。
【０１３６】
最後に、命令Ｉ2 がリタイアされると、レジスタＩ２ＲＤからのデータは、リタイア箇所の命令の論理位置から判断されて、レジスタ・ファイル配列５５４内のレジスタ・ロケーションに書かれる。すなわち、リタイア制御ユニット５００は、制御ライン５１０経由でＥデコード・ユニット４９０から与えられたレジスタ参照フィールド・データからレジスタ・ファイル配列内の宛先レジスタのアドレスを判断する。命令Ｉ0-3 がリタイアされると、Ｉ４ＲＤ−Ｉ７ＲＤに入っている値は、ＩＦＩＦ０ユニット２６４のシフトと同時にシフトされて、Ｉ０ＲＤ−Ｉ３ＲＤに移される。
【０１３７】
命令Ｉ2 からダブル・ワード結果値が得られる場合は、さらに複雑になる。本発明の好適実施例によれば、ロケーションＩ２ＲＤとＩ６ＲＤの組合せが、命令Ｉ2 がリタイアされるか、さもなければキャンセルまで、その命令から得た結果データをストアしておくために使用される。好適実施例では、命令Ｉ4-7 の実行は命令Ｉ0-3 のいずれかによるダブル・ワード出力の参照がレジスタ改名ユニット４９６によって検出された場合には、保留される。これにより、一時バッファ５５２'全体をダブル・ワード・レジスタのシングル・ランクとして使用することが可能になる。命令Ｉ0-3 がリタイアされると、一時バッファ５５２'はシングル・ワード・レジスタの２ランクとして再び使用することができる。さらに、いずれかの命令Ｉ4-7 の実行は、ダブル・ワード出力レジスタが必要な場合には、命令が対応するＩ0-3 にシフトされるまで保留される。
【０１３８】
レジスタ・ファイル配列５５４の論理的変性は図７（ａ）〜図７（ｂ）に示されている。本発明の好適実施例によれば、整数データ経路用のレジスタ・ファイル配列５５４は４０個の３２ビット幅レジスタから構成されている。このレジスタ・セットはレジスタ・セット“Ａ”を構成し、ベース・レジスタ・セットｒａ〔０．．２３〕５６５、汎用レジスタｒａ〔２４．．３１〕５６６からなるトップ・セット、および８個の汎用トラップ・レジスタｒａ〔２４．．３１〕からなるシャドウ・レジスタ・セットとして編成されている。通常のオペレーションでは、汎用レジスタｒａ〔０．．３１〕５６５、５６６は整数データ経路用のレジスタ・ファイル配列のアクティブ“Ａ”レジスタ・セットを構成している。
【０１３９】
図７（ｂ）に示すように、トラップ・レジスタｒａ〔２４．．３１〕５６７をスワップしてアクティブ・レジスタ・セット“Ａ”に移しておけば、レジスタｒａ〔０．．２３〕５６５のアクティブ・ベース・セットと一緒にアクセスすることが可能である。“Ａ”レジスタ・セットのこの構成は、割り込みの受信が確認されるか、例外トラップ処理ルーチンが実行されると、選択される。レジスタ・セット“Ａ”のこの状態は、割り込み許可命令の実行またはトラップからのリターン命令の実行によって図７（ａ）に示す状態に明示によって戻るまで維持される。
【０１４０】
アーキテクチャ１００によって実現された本発明の好適実施例では、浮動小数点データ経路は図８にその概要を示すように拡張精度レジスタ・ファイル配列５７２を使用する。レジスタ・ファイル配列５７２は、各々が６４ビット幅の３２個のレジスタｒｆ〔０．．３１〕から構成されている。浮動小数点レジスタ・ファイル５７２は整数レジスタｒｂ〔０．．３１〕の“Ｂ”セットとして論理的に参照することも可能である。アーキテクチャ１００では、この“Ｂ”セットのレジスタは浮動小数点レジスタｒｆ〔０．．３１〕の各々の下位３２ビットに相当している。
【０１４１】
第３のデータ経路を表すものとして、ブール演算子レジスタ・セット５７４が図９に示すように設けられている。これは、ブール演算の論理結果をストアするこの“Ｃ”レジスタ・セット５７４は３２個の１ビット・レジスタｒｃ〔０．．３１〕から構成されている。ブール・レジスタ・セット５７４のオペレーションは、ブール演算の結果をブール・レジスタ・セット５７４の任意の命令選択レジスタへ送ることができる点でユニークである。
これは、等しい、等しくない、より大、その他単純なブール状況値などの条件を表す１ビット・フラグをストアするシングル・プロセッサ状況ワード・レジスタを使用するのと対照的である。
【０１４２】
浮動小数点レジスタ・セット５７２とブール・レジスタ・セット５７４は双方共、図６（ｂ）に示す整数一時バッファ５５２と同じアーキテクチャの一時バッファによって補数がとられる。基本的違いは、一時バッファ・レジスタの幅が補数をとるレジスタ・ファイル配列５７２、５７４の幅と同じになるように定義されていることである。好適実施例では、幅はそれぞれ６４ビットと１ビットになっている。
【０１４３】
多数の追加の特殊レジスタが、レジスタ配列４７２に少なくとも論理的に存在している。図７（ｃ）に示すように、レジスタ配列４７２に物理的に存在するレジスタはカーネル・スタック・ポインタ（ｋｅｒｎｅｌ  ｓｔａｃｋ  ｐｏｉｎｔｅｒ）５６８、プロセッサ状態レジスタ（ＰＳＲ）５６９、旧プロセッサ状態レジスタ（ＰＰＳＲ）５７０および８個の一時プロセッサ状態レジスタの配列（ｔＰＳＲ〔０．．７〕）５７１からなっている。残りの特殊レジスタはアーキテクチャ１００の各所に分散している。特殊アドレスおよびデータ・バス３５４はデータを選択して、特殊レジスタおよび“Ａ”と“Ｂ”レジスタ・セット間で転送するためのものである。特殊レジスタ移動命令は“Ａ”または“Ｂ”レジスタ・セットからレジスタを選択し、転送の方向を選択し、特殊レジスタのアドレスＩＤを指定するためのものである。
【０１４４】
カーネル・スタック・ポインタ・レジスタとプロセッサ状態レジスタは、他の特殊レジスタとは異なっている。カーネル・スタック・ポインタはカーネル状態にあるとき、標準のレジスタ間移動命令を実行することによってアクセス可能である。一時プロセッサ状態レジスタは直接にアクセスすることはできない。その代わりに、このレジスタ配列はプロセッサ状態レジスタの値を伝播して、順序外で実行される命令で使用できるようにする継承メカニズム（ｉｎｈｅｒｉｔａｎｃｅ  ｍｅｃｈａｎｉｓｍ）を実現するために使用される。初期伝播値はプロセッサ状態レジスタの値である。つまり、最後にリタイアされた命令から得た値である。この初期値は一時プロセッサ状態レジスタから前方向に伝播され、順序外で実行される命令が対応する位置にある一時プロセッサ状態レジスタ内の値をアクセスできるようにする。命令が依存し、変更できる条件コード・ビットは、その命令がもつ特性によって定義される。命令が依存関係、レジスタまたは条件コードによって制約されないことが、レジスタ依存関係チェッカ・ユニット４９４とキャリー依存関係チェッカ４９２によって判断された場合は、命令は順序外で実行することができる。
【０１４５】
プロセッサ状態レジスタの条件コード・ビットの変更は論理的に対応する一時プロセッサ状態レジスタに指示される。具体的には、変更の可能性があるビットだけが一時プロセッサ状態レジスタに入っている値に適用され、上位のすべての一時プロセッサ状態レジスタに伝播される。その結果、順序外で実行されるすべての命令は介在するＰＳＲ変更命令によって適切に変更されたプロセッサ状態レジスタ値から実行される。命令がリタイアされたときは、対応する一時プロセッサ状態レジスタ値だけがＰＳＲレジスタ５６９に転送される。
その他の特殊レジスタは表ＩＩに説明されている。
【０１４６】
表ＩＩ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
特殊レジスタ
特殊移動
レジスタ Ｒ／Ｗ 説明
ＰＣ          Ｒ            プログラム・カウンタ：一般的にはＰＣは現在実
行中のプログラム命令ストリームの次のアドレス
を格納している
ＩＦ＿ＰＣ    Ｒ／Ｗ        ＩＦＵプログラム・カウンタ：
ＩＦ＿ＰＣは正確な次の実行アドレスを格納して
いる
ＰＦｎＰＣ    Ｒ            プリフェッチ・プログラム・カウンタ：ＭＢＵＦ
、ＴＢＵＦおよびＥＢＵＦ＿ＰＦｎＰＣはそれぞ
れのプリフェッチ命令ストリームの次のプリフェ
ッチ命令アドレスを格納している
ｕＰＣ        Ｒ／Ｗ        マイクロ・プログラム・カウンタ：プロシージャ
命令のあとに続く命令のアドレスを格納している
。これはプロシージャ命令がリターンしたとき最
初に実行される命令のアドレスである
ｘＰＣ        Ｒ／Ｗ        割り込み／例外プログラム・カウンタ：割り込み
または例外（または両方）のリターン・アドレス
を格納している。リターン・アドレスはトラップ
発生時のＩＦ＿ＰＣアドレスである
ＴＢＲ        Ｗ            トラップ・ベース・アドレス：トラップ処理ルー
チンへディスパッチするとき使用されるベクトル
・テーブルのベース・アドレス。各エントリは１
ワード長である。割り込みロジック・ユニット３
６３から与えられるトラップ番号は、このアドレ
スが指しているテーブルまでのインデックスとし
て使用される
ＦＴＢ        Ｗ            高速トラップ・ベース・レジスタ：即時トラップ
処理ルーチン・テーブルのベース・レジスタ。各
テーブル・エントリは３２ワードであり、トラッ
プ処理ルーチンを直接に実行するために使用され
る。割り込みロジック・ユニット３６３から与え
られるトラップ番号を３２倍したものは、このア
ドレスが指しているテーブルまでのオフセットと
して使用される
ＰＢＲ        Ｗ            プロシージャ・ベース・レジスタ：プロシージャ
・ルーチンへディスパッチするとき使用されるベ
クトル・テーブルのベース・アドレス。各エント
リは１ワード長であり、４ワード境界に位置合わ
せされている。プロシージャ命令フィールドとし
て与えられるプロシージャ番号はこのアドレスが
指しているテーブルまでのインデックスとして使
用される
ＰＳＲ        Ｒ／Ｗ        プロセッサ状態レジスタ：プロセッサ状況ワード
を格納している。状況データ・ビットは、キャリ
ー、オーバーフロー、ゼロ、負、プロセッサ・モ
ード、現割り込みレベル、実行中のプロシージャ
・ルーチン、０による除算、オーバフロー例外、
ハードウェア機能割り込み可能、プロシージャ割
り込み可能、割り込み可能などのビットがある。ＰＰＳＲ
Ｒ／Ｗ        旧プロセッサ状態レジスタ：命令が正しく完了す
るか、割り込みまたはトラップが引き起こされる
と、ＰＳＲからロードされる
ＣＳＲ        Ｒ／Ｗ        状態比較（ブール）レジスタ：シングル・ワード
としてアクセス可能なブール・レジスタ・セットＰＣＳＲ
Ｒ／Ｗ        旧状態比較レジスタ：命令が正しく完了するか、
割り込みまたはトラップが引き起こされると、Ｃ
ＳＲからロードされる。
【０１４７】
２）整数データ経路の詳細
本発明の好適実施例に従って構築されるＩＥＵ１０４の整数データ経路は、図１０に示されている。説明の便宜上、整数データ経路５８０と結ばれる多数の制御経路は、図には示していない。これらの接続関係は図５を参照して説明したとおりである。
【０１４８】
データ経路５８０の入力データは、位置合わせユニット５８２、５８４および整数ロード／ストア・ユニット５８６から得られる。整数即値（ｉｎｔｅｇｅｒ  ｉｍｍｅｄｉａｔｅ）データ値は、最初は命令埋め込み（ｅｍｂｅｄｄｅｄ）データ・フィールドとして与えられ、バス５８８経由でオペランド・ユニット４７０から得られる。位置合わせユニット５８２は整数データ値を隔離し、その結果値が出力バス５９０を経由してマルチプレクサ５９２へ送られる。マルチプレクサ５９２への別の入力は、特殊レジスタ・アドレスとデータ・バス３５４である。
【０１４９】
命令ストリームから得られる即値（ｉｍｍｅｄｉａｔｅ）オペランドも、データ・バス５９４経由でオペランド・ユニット４７０から得られる。これらの値は、出力バス５９６上に送出される前に、位置合わせユニット５８４によって再度右寄せされる。
【０１５０】
整数ロード／ストア・ユニット５８６は外部データ・バス５９８を通してＣＣＵ１０６と双方向でやりとりする。ＩＥＵ１０４へのインバウンド・データは整数ロード／ストア・ユニット５８６から入力データ・バス６００を経由して入力ラッチ６０２へ転送される。マルチプレクサ５９２とラッチ６０２からの出力データは、マルチプレクサ６０８のマルチプレクサ入力バス６０４、６０６上に送出される。機能ユニット出力バス４８２'からのデータもマルチプレクサ６０８に送られる。このマルチプレクサ６０８はアーキテクチャ１００の好適実施例では、データを同時に出力マルチプレクサ・パス６１０へ送る２つの通路を備えている。さらに、マルチプレクサ６０８を通るデータ転送は、システム・クロックの各半サイクル以内に完了することができる。本アーキテクチャ１００で実現される大部分の命令は、１つの宛先レジスタを利用するので、最大４つまでの命令によって各システム・クロック・サイクルの間データを一時バッファ６１２へ送ることができる。
【０１５１】
一時バッファ６１２からのデータは一時レジスタ出力バス６１６を経由して整数レジスタ・ファイル配列６１４へ、あるいは代替一時バッファ・レジスタ・バス６１８を経由して出力マルチプレクサ６２０へ転送することができる。整数レジスタ配列出力バス６２２は整数レジスタ・データをマルチプレクサ６２０へ転送することができる。一時バッファ６１２と整数レジスタ・ファイル配列６１４に接続された出力バスは、それぞれ５個のレジスタ値を同時に出力することを可能にする。つまり、合計５個までのソース・レジスタを参照する２つの命令を同時に出すことができる。一時バッファ６１２、レジスタ・ファイル配列６１４およびマルチプレクサ６２０はアウトバウンド・レジスタ・データの転送を半システム・クロック・サイクルごとに行うことを可能にする。したがって、最高４個までの整数および浮動小数点命令を各クロック・サイクルの間に出すことができる。
【０１５２】
マルチプレクサ６２０はアウトバウンド・レジスタ・データ値をレジスタ・ファイル配列６１４からあるいは一時バッファ６１２から直接に選択する働きをする。これにより、以前に順序外で実行された命令に依存する順序外実行命令をＩＥＵ１０４によって実行させることができる。これにより、保留状態の命令を順序外で実行することによってＩＥＵ整数データ経路の実行スループット能力を最大化すると共に、順序外のデータ結果を、実行されリタイアされた命令から得たデータ結果から正確に分離するという２目標を容易に達成することができる。マシンの正確な状態を復元する必要のあるような割り込みや他の例外条件が起こると、本発明によれば一時バッファ６１２に存在するデータ値を簡単にクリアすることができる。したがって、レジスタ・ファイル配列６１４は、割り込みまたは他の例外条件が発生する以前に完了し、リタイアされた命令の実行によってのみ得られたデータ値を正確に収めたままになっている。
【０１５３】
マルチプレクサ６２０の各半システム・サイクル・オペレーション時に選択されたレジスタ・データ値は最高５つまでがマルチプレクサ出力バス６２４を経由して整数バイパス・ユニット６２６へ送られる。このバイパス・ユニット６２６は基本的にマルチプレクサが並列の配列からなり、その入力のいずれかに現れたデータをその出力のいずれかへ送ることができる。バイパス・ユニット６２６の入力は、マルチプレクサ５９２から出力バス６０４を経由する特殊レジスタ・アドレス指定データ値または即値の整数値、バス６２４上に送出される最高５つまでのレジスタ・データ値、整数ロード／ストア・ユニット５８６からダブル整数バス６００を経由するロード・オペランド・データ、その出力バス５９６を経由して位置合わせユニット５８４から得た即値オペランド値、最後に機能ユニット出力バス４８２からのバイパス・データ経路からなっている。このバイパス経由とデータ・バス４８２はシステム・クロック・サイクルごとに４個のレジスタ値を同時に転送することができる。
【０１５４】
データはバイパス・ユニット６２６から浮動小数点データ・バスに接続された整数バイパス・バス６２８上に出力されて、最高５つまでのレジスタ・データ値を同時に転送する機能をもつ２つのオペランド・データ・バスと、整数ロード／ストア・ユニット５８６へデータを送るために使用されるストア・データ・バス６３２へ送られる。
【０１５５】
機能ユニット分配バス４８０はルータ・ユニット６３４のオペレーションを通して実現されている。また、ルータ・ユニット６３４はその入力から受信された５個のレジスタ値を整数データ通路に設けられた機能ユニットへ送ることを可能にする並列のマルチプレクサ配列によって実現される。具体的には、ルータ・ユニット６３４はバイパス・ユニット６２６からバス６３０を経由して送られてきた５個のレジスタ・データ値、アドレス・バス３５２を経由して送られてきた現ＩＦ＿ＰＣアドレス値、ＰＣ制御ユニット３６２によって判断され、ライン３７８'上に送出された制御フロー・オフセット値を受信する。ルータ・ユニット６３４は、浮動小数点データ経路内に設けられたバイパス・ユニットから取り出されたオペランド・データ値をデータバス６３６を経由して受信することもできる（オプション）。
【０１５６】
ルータ・ユニット６３４によって受信されたレジスタ・データ値は、特殊レジスタ・アドレスおよびデータ・バス３５４上を転送されて、機能ユニット６４０、６４２、６４４へ送られる。具体的には、ルータ・ユニット６３４は最高３つまでのレジスタ・オペランド値をルータ出力バス６４６、６４８、６５０を経由して機能ユニット６４０、６４２、６４４の各々へ送る機能を備えている。本アーキテクチャ１００の一般的アーキテクチャによれば、最高２つまでの命令を同時に機能ユニット６４０、６４２、６４４に対して出すことが可能である。本発明の好適実施例によれば、３つの専用整数機能ユニットに、それぞれプログラマブル・シフト機能と２つの算術演算ロジック・ユニット機能を持たせることができる。
【０１５７】
ＡＬＵ０機能ユニット６４４、ＡＬＵ１機能ユニット６４２及びシフタ機能ユニット６４０はそれぞれの出力レジスタ・データを機能ユニット・バス４８２'上に送出する。ＡＬＵ０とシフタ機能ユニット６４４、６４０から得た出力データも浮動小数点データ経路に接続された共用整数機能ユニット・バス６５０上に送出される。類似の浮動小数点機能ユニット出力値データ・バス６５２が、浮動少数点データ経路から機能ユニット出力バス４８２'へ設けられている。
【０１５８】
ＡＬＵ０機能ユニット６４４はＩＦＵ１０２のプリフェッチ操作と整数ロード／ストア・ユニット５８６のデータ操作の両方をサポートするために仮想アドレス値を生成する場合にも使用される。ＡＬＵ０機能ユニット６４４によって計算された仮想アドレス値はＩＦＵ１０２のターゲット・アドレス・バス３４６とＣＣＵ１０６の両方に接続された出力バス６５４上に送出され、実行ユニットの物理アドレス（ＥＸ  ＰＡＤＤＲ）が得られる。ラッチ６５６は、ＡＬＵ０機能ユニット６４４によって生成されたアドレスの仮想化部分をストアするためのものである。アドレスのこの仮想化部分は出力バス６５８上に送出されて、ＶＭＵ１０８へ送られる。
３）浮動小数点データ経路の詳細
次に、図１１は浮動小数点データ経路を示したものである。初期データは、この場合も、即値整数オペランド・バス５８８、即値オペランド・バス５９４および特殊レジスタ・アドレス・データ・バス３５４を含む複数のソースから受信される。外部データの最終的ソースは外部データバス５９８を通してＣＣＵ１０６に接続された浮動小数点ロード／ストア・ユニット６２２である。
【０１５９】
即値整数オペランドは、位置合わせ出力データ・バス６６８を経由してマルチプレクサ６６６に渡す前に整数データ・フィールドを右寄せする働きをする位置合わせユニット６６４によって受信される。マルチプレクサ６６６は特殊レジスタ・アドレス・データ・バス３５４も受信する。即値オペランドは第２の位置合わせユニット６７０へ送られ、右寄せされてから出力バス６７２上に送出される。浮動少数点ロード／ストア・ユニット６６２からのインバウンド・データ（ｉｎｂｏｕｎｄ  ｄａｔａ）は、ロード・データ・バス６７６からラッチ６７４によって受信される。マルチプレクサ６６６、ラッチ６７４および機能ユニット・データ・リターン・バス４８２”からのデータはマルチプレクサ６７８の入力から受信される。マルチプレクサ６７８は選択可能なデータ経路を備え、２つのレジスタ・データ値がシステム・クロックの半サイクルごとに、マルチプレクサ出力バス６８２を経由して一時バッファ６８０に書き込まれることを可能にする。一時バッファ６８０は図６（ｂ）に示す一時バッファ５５２'と論理的に同じレジスタ・セットを備えている。一時バッファ６８０はさらに最高５個までのレジスタ・データ値を一時バッファ６８０から読み取って、データ・バス６８６を経由して浮動小数点レジスタ・ファイル配列６８４と、出力データ・バス６９０を経由して出力マルチプレクサ６８８へ送ることができる。マルチプレクサ６８８は、データ・バス６９２を経由して、浮動小数点ファイル配列６８４から最高５個までのレジスタ・データ値も同時に受信する。マルチプレクサ６８８は最高５個までのレジスタ・データ値を選択して、データ・バス６９６を経由してバイパス・ユニット６９４へ同時に転送する働きをする。バイパス・ユニット６９４は、データ・バス６７２、マルチプレクサ６６６からの出力データ・バス６９８、ロード・データ・バス６７６および機能ユニット・データ・リターン・バス４８２”のバイパス延長部分を経由して、位置合わせユニット６７０から与えられた即値オペランド値も受信する。バイパス・ユニット６９４は最高５個までのレジスタ・オペランドデータ値を同時に選択して、バイパス・ユニット・出力バス７００、浮動小数点ロード／ストア・ユニット６６２に接続されたストア・データ・バス７０２、および整数データ経路５８０のルータ・ユニット６３４に接続された浮動小数点バイパス・バス６３６上に出力するように働く。
【０１６０】
浮動小数点ルータ・ユニット７０４は、バイパス・ユニット出力バス７００と整数データ経路バイパス・バス６２８とそれぞれの機能ユニット７１２、７１４、７１６に接続された機能ユニット入力バス７０６、７０８、７１０との間で同時にデータ経路を選択できる機能を備えている。
【０１６１】
アーキテクチャ１００の好適実施例による入力バス７０６、７０８、７１０の各々は最高３個までのレジスタ・オペランド・データ値を機能ユニット７１２、７１４、７１６の各々へ同時に転送することが可能である。これらの機能ユニット７１２、７１４、７１６の出力バスは機能ユニット・データ・リターン・バス４８２”に結合され、データをレジスタ・ファイル入力マルチプレクサ６７８へ戻すようになっている。整数データ経路機能ユニット出力バス６５０を機能ユニット・データ・リターン・バス４８２”に接続するために設けることも可能である。本発明のアーキテクチャ１００によれば、マルチプレクサ機能ユニット７１２と浮動小数点ＡＬＵ７１４の機能ユニット出力バスを浮動少数点データ経路機能ユニット・バス６５２を経由して整数データ経路５００の機能ユニット・データ・リターン・バス４８２'に接続することが可能である。
【０１６２】
４）ブール・レジスタ・データ経路の詳細
ブール演算データ経路７２０は図１２に示されている。このデータ経路７２０は基本的に２種類の命令の実行をサポートするために利用される。最初のタイプはオペランド比較命令であり、この命令では、整数レジスタ・セットと浮動小数点レジスタ・セットから選択された、あるいは即値オペランドとして与えられた２つのオペランドが、ＡＬＵ機能ユニットの１つで整数と浮動少数点データ経路を減算することによって比較される。この比較は、ＡＬＵ機能ユニット６４２、６４４、７１４、７１６のいずれかによる減算によって行われ、その結果の符号とゼロ状況ビットは入力セレクタと比較演算子結合ユニット７２２へ送られる。このユニット７２２は、制御信号を指定した命令をＥデコード・ユニット４９０から受け取るとＡＬＵ機能ユニット６４２、６４４、７１４、７１６の出力を選択し、符号およびゼロ・ビットを結合し、ブール比較結果値を抽出する。出力バス７２３を通して比較演算の結果を入力マルチプレクサ７２６とバイパス・ユニット７４２へ同時に転送することができる。整数および浮動小数点データ経路と同じように、バイパスユニット７４２は並列のマルチプレクサ配列として実現され、バイパス・ユニット７４２の入力間で複数のデータ経路を選択して、複数の出力と結ぶことができる。バイパス・ユニット７４２の他の入力はブール演算結果リターン・データ・バス７２４とデータ・バス７４４上の２つのブール・オペランドからなっている。バイパス・ユニット７４２は最高２つまでの同時に実行中のブール命令を表したブール・オペランドを、オペランド・バス７４８を経由してブール演算機能ユニット７４６へ転送することができる。また、バイパス・ユニット７４６は最高２個までのシングル・ビット・ブール・オペランド・ビット（ＣＦ０、ＣＦ１）を制御フロー結果制御ライン７５０、７５２を経由して同時に転送することができる。
【０１６３】
ブール演算データ経路の残り部分は、比較結果バス７２３とブール結果バス７２４上に送出された比較およびブール演算結果値を、その入力として受信する入力マルチプレクサ７２６を含んでいる。このバス７２４は最高２個までのブール結果ビットを同時にマルチプレクサ７２６へ転送することができる。さらに、最高２個までの比較結果ビットをバス７２３を経由してマルチプレクサ７２６へ転送することができる。マルチプレクサ７２６はマルチプレクサの入力端に現れた任意の２個の信号ビットをマルチプレクサの出力端を経由して、システム・クロックの各半サイクル時にブール演算一時バッファ７２８へ転送することができる。一時バッファ７２８は２つの重要な点が異なることを除けば、図６（ｂ）に示した一時バッファ７５２'と論理的に同じである。第１の相違点は、一時バッファ７２８内の各レジスタ・エントリがシングル・ビットからなることである。第２の相違点は８個の保留中命令スロットの各々に一つのレジスタだけが設けられていることである。これは、ブール演算の結果全部が定義によって１つの結果ビットによって定義されるためである。
【０１６４】
一時バッファ７２８は最高４個までの出力オペランド値を同時に出力する。これにより、各々２つのソース・レジスタへのアクセスを必要とする２個のブール命令を同時に実行させることができる。４個のブール・レジスタ値はシステム・クロックの各半サイクルごとにオペランド・バス７３６上に送出し、マルチプレクサ７３８へあるいはブール・オペランド・データバス７３４を経由してブール・レジスタ・ファイル配列７３２へ転送することができる。ブール・レジスタ・ファイル配列７３２は、図９に論理的に示すように、１個の３２ビット幅データ・レジスタであり、任意に組合せた最高４個までのシングル・ビット・ロケーションを一時バッファ７２８からのデータで修正し、システム・クロックの各半サイクルごとにブール・レジスタ・ファイル配列７３２から読み取って出力バス７４０上に送出することができる。マルチプレクサ７３８はバス７３６、７４０経由でその出力端から受信したブール・オペランドの任意のペアをオペランド出力バス７４４上に送出してバイパス・ユニット７４２へ転送する。
【０１６５】
ブール演算機能ユニット７４６は２個のソース値についてブール演算を幅広く実行する機能を備えている。比較命令の場合には、ソース値は整数および浮動少数点レジスタ・セットのいずれかから得たペアのオペランドとＩＥＵ１０４へ送られる任意の即値オペランドであり、ブール命令の場合は、ブール・レジスタ・オペランドの任意の２つである。表ＩＩＩと表ＩＶは、本発明のアーキテクチャ１００の好適実施例における論理比較演算を示すものである。表Ｖは本発明のアーキテクチャ１００の好適実施例における直接ブール演算を示すものである。表ＩＩＩ−Ｖに示されている命令条件コードと機能コードは対応する命令のセグメントを表している。また、命令はペアのソース・オペランド・レジスタと対応するブール演算結果をストアするための宛先ブール・レジスタを指定する。
【０１６６】
表ＩＩＩ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
整数の比較
命令
条件＊ 記号 条件コード
ｒｓ１はｒｓ２より大              ＞          ００００
ｒｓ１はｒｓ２より大か等しい      ＞＝        ０００１
ｒｓ１はｒｓ２より小              ＜          ００１０
ｒｓ１はｒｓ２より小か等しい      ＜＝        ００１１
ｒｓ１はｒｓ２と等しくない        ？          ０１００
ｒｓ１はｒｓ２と等しい            ＝＝        ０１０１
予備                                          ０１１０
無条件                                        １１１１
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
＊ｒｓ＝レジスタ・ソース
表ＩＶ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
浮動小数点の比較
命令
条件 記号 条件コード
ｒｓ１はｒｓ２より大                  ＞          ００００
ｒｓ１はｒｓ２より大か等しい          ＞＝        ０００１
ｒｓ１はｒｓ２より小                  ＜          ００１０
ｒｓ１はｒｓ２より小か等しい          ＜＝        ００１１
ｒｓ１はｒｓ２と等しくない            ？          ０１００
ｒｓ１はｒｓ２と等しい                ＝＝        ０１０１
無順序                                ？          １０００
無順序またはｒｓ１はｒｓ２より大      ？＞        １００１
無順序、ｒｓ１はｒｓ２より大か等しい  ？＞＝      １０１０
無順序またはｒｓ１はｒｓ２より小      ？＜        １０１１
無順序、ｒｓ１はｒｓ２より小か等しい  ？＜＝      １１００
無順序またはｒｓ１はｒｓ２と等しい    ？＝        １１０１
予備                                        １１１０−１１１１
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
表Ｖ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
ブール演算
命令
演算＊ 記号 機能コード
０                          Ｚｅｒｏ      ００００
ｂｓ１＆ｂｓ２              ＡＮＤ        ０００１
ｂｓ１＆−ｂｓ２            ＡＮＮ２      ００１０
ｂｓ１                      ｂｓ１        ００１１
−ｂｓ１＆ｂｓ２            ＡＮＮ１      ０１００
ｂｓ２                      ｂｓ２        ０１０１
ｂｓ１−  ｂｓ２              ＸＯＲ        ０１１０
ｂｓ１    ｂｓ２            ＯＲ          ０１１１
−ｂｓ１＆−ｂｓ２          ＮＯＲ        １０００
−ｂｓ１−  ｂｓ２            ＸＮＯＲ      １００１
−ｂｓ２                    ＮＯＴ２      １０１０
ｂｓ１  −ｂｓ２            ＯＲＮ２      １０１１
−ｂｓ１                    ＮＯＴ１      １１００
−ｂｓ１  ｂｓ２            ＯＲＮ１      １１０１
−ｂｓ１  −ｂｓ２          ＮＡＮＤ      １１１０
１                          ＯＮＥ        １１１１
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
＊ｂｓ＝ブール・ソース・レジスタ。
【０１６７】
Ｂ）ロード／ストア制御ユニット
図１３はロード／ストア・ユニット７６０の例を示したものである。データ経路５８０、６６０に別々に示されているが、ロード／ストア・ユニット５８６、６６２は一つの共用ロード／ストア・ユニット７６０として実現するのが好ましい。それぞれのデータ経路５８０、６６０からのインタフェースはアドレス・バス７６２およびロードとストア・データ・バス７６４（６００、６７６）、７６６（６３２、７０２）を経由している。
【０１６８】
ロード／ストア・ユニット７６０によって使用されるアドレスは、ＩＦＵ１０２およびＩＥＵ１０４の残り部分で使用される仮想アドレスとは対照的に、物理アドレスである。ＩＦＵ１０２は仮想アドレスで動作し、ＣＣＵ１０６とＶＭＵ１０８間の調整に依存して物理アドレスを生成するのに対し、ＩＥＵ１０４ではロード／ストア・ユニット７６０を物理アドレス・モードで直接に動作させる必要がある。この要件が必要になるのは、順序外で実行されるために、物理アドレス・データとストア・オペレーションがオーバラップするような命令が存在する場合、およびＣＣＵ１０６からロード／ストア・ユニット７６０への順序外のデータ・リターンが存在する場合に、データ保全性を保つためである。データ保全性を保つためにロード／ストア・ユニット７６０はストア命令がＩＥＵ１０４によってリタイアされるまで、ストア命令から得たデータをバッファに置いておく。その結果、ロード／ストア・ユニット７６０によってバッファに置かれたストア・データはロード／ストア・ユニット７６０に一つだけ存在することができる。実行されたがリタイアされていないストア命令と同じ物理アドレスを参照するロード命令は、ストア命令が実際にリタイアされるまで実行が遅延される。その時点で、ストア・データをロード／ストア・ユニット７６０からＣＣＵ１０６へ転送し、ＣＣＵデータ・ロード・オペレーションの実行によって即時にロード・バックすることができる。
【０１６９】
具体的には、物理アドレス全体がＶＭＵ１０８からロード／ストア・アドレス・バス７６２上に送出される。ロード・アドレスは一般的にはロード・アドレス・レジスタ７６８0-3 にストアされる。ストア・アドレスはストア・アドレス・レジスタ７７０3-0 にラッチされる。ロード／ストア制御ユニット７７４は命令発行ユニット４９８から受信した制御信号を受けて動作し、ロード・アドレスとストア・アドレスをレジスタ７６８3-0 、７７０3-0 にラッチすることを調整する。ロード／ストア制御ユニット７７４は、ロード・アドレスをラッチするための制御信号を制御ライン７７８上に送出し、ストア・アドレスをラッチするための制御信号を制御ライン７８０上に送出する。ストア・データはストア・データ・レジスタ・セット７８２3-0 の論理的に対応するスロットにストア・アドレスをラッチするのと同時にラッチされる。４ｘ４ｘ３２ビット幅アドレス比較ユニット７７２には、ロードおよびストア・アドレス・レジスタ７６８3-0 、７７０3-0 に入っているアドレスの各々が同時に入力される。システム・クロックの各半サイクル時の完全マトリックス・アドレス比較の実行は、制御ライン７７６を介してロード／ストア制御ユニット７７４によって制御される。ストア・アドレスに一致するロード・アドレスの存在と論理ロケーションは、制御ライン７７６を経由してロード／ストア制御ユニット７７４へ送られる。
【０１７０】
ロード・アドレスがＶＭＵ１０８から与えられ、保留中のストアがない場合は、ロード・アドレスは、ＣＣＵロード・オペレーションの開始と同時に、バス７６２から直接にアドレス・セレクタ７８６へバイパスされる。しかし、ストア・データが保留されている場合は、ロード・アドレスは使用可能なロード・アドレス・ラッチ７６８0-3 にラッチされる。対応するストア・データ命令がリタイアされると制御信号をリタイア制御ユニット５００から受信すると、ロード／ストア制御ユニット７７４はＣＣＵデータ転送操作を開始し、制御ライン７８４を通してＣＣＵ１０６へのアクセスの仲裁を行う。ＣＣＵ１０６がレディ（ｒｅａｄｙ）を通知すると、ロード／ストア制御ユニット７７４はＣＣＵ物理アドレスをＣＣＵ  ＰＡＤＤＲアドレス・バス７８８上に送出するようにセレクタ７８６に指示する。このアドレスはアドレス・バス７９０を経由して対応するストア・レジスタ７７０3-0 から得られる。対応するストア・データ・レジスタ７８２3-0 からのデータはＣＣＵデータ・バス７９２上に送出される。
【０１７１】
ロード命令が命令発行ユニット４９８から出されると、ロード／ストア制御ユニット７７４はロード・アドレス・ラッチ７６８3-0 の一つが要求されたロード・アドレスをラッチすることを許可する。選択された特定のラッチ７６８0-3 は関係命令の組の内のロード命令の位置に論理的に対応している。命令発行ユニット４９８は保留中の可能性のある２命令の組のどららかの中のロード命令を示している５ビット・ベクトルをロード／ストア制御ユニット７７４へ渡す。コンパレータ７７２が一致するストア・アドレスを示していない場合は、ロード・アドレスはアドレス・バス７９４を経由してセレクタ７８６へ送られ、ＣＣＵ  ＰＡＤＤＲアドレス・バス７８８上に出力される。アドレスの提供は、ロード／ストア制御ユニット７７４とＣＣＵ１０６間でやりとりされるＣＣＵ要求とレディ制御信号に従って行われる。実行ＩＤ値（ＥｘＩＤ値）もロード／ストア制御ユニット７７４によって準備されてＣＣＵ１０６に対して出され、ＣＣＵ１０６がＥｘＩＤ値を含む要求データをそのあとで返却するときロード要求を識別する。このＩＤ値は４ビット・ベクトルからなり、現ロード要求を出したそれぞれのロード・アドレス・ラッチ７６８0-3 を固有ビットで指定している。５番目のビットはロード命令を収めている命令の組を識別するために使用される。このＩＤ値は、したがって命令発行ユニット４９８からロード要求と一緒に送られるビット・ベクトルと同じである。
【０１７２】
先行する要求ロード・データが使用可能であることがＣＣＵ１０６からロード／ストア制御ユニット７７４へ通知されると、ロード／ストア制御ユニット７７４は位置合わせユニットがデータを受信し、それをロード・データ・バス７６４上に送出することを許可する。位置合わせユニット７９８はロード・データを右寄せする働きをする。
【０１７３】
ＣＣＵ１０６からデータが返却されると同時に、ロード／ストア制御ユニット７７４は、ＣＣＵ１０６からＥｘＩＤ値を受信する。他方、ロード／ストア制御ユニット７７４はロード・データがロード・データ・バス７６４上に送出されることを知らせる制御信号を命令発行ユニット４９８へ送り、さらに、どのロード命令に対してロード・データが返却されるのかを示したビット・ベクトルを返却する。
【０１７４】
Ｃ）ＩＥＵ制御経路の詳細
再び、図５を参照して、ＩＥＵ制御経路のオペレーションを図１４に示したタイミング図と関連づけて説明する。図１４に示した命令の実行タイミングは、本発明のオペレーションを例示したもので、種々態様に変更可能であることは勿論である。
【０１７５】
図１４のタイミング図は、プロセッサ・システム・クロック・サイクルＰO-6 のシーケンスを示している。各プロセッサ・サイクルは内部ＴサイクルＴO から始まる。本発明の好適実施例によるアーキテクチャ１００では、各プロセッサ・サイクルは２つのＴサイクルからなっている。
【０１７６】
プロセッサ・サイクル０のときは、ＩＦＵ１０２とＶＭＵ１０８は物理アドレスを生成するように動作する。この物理アドレスはＣＣＵ１０６へ送られ、命令用キャッシュ・アクセス・オペレーションが開始される。要求された命令の組が命令用キャッシュ１３２にあると、命令の組はプロセッサ・サイクル１のほぼ中間でＩＦＵ１０２へ戻される。そのあと、ＩＦＵ１０２はプリフェッチ・ユニット２６０とＩＦＩＦＯ２６４を経由する命令の組の転送を管理し、転送された命令の組はまずＩＥＵ１０４へ実行のために渡される。
【０１７７】
１）Ｅデコード・ユニットの詳細
Ｅデコード・ユニット４９０は全命令の組を並列に受け取って、プロセッサ・サイクル１が完了する前にデコードする。Ｅデコード・ユニット４９０は好適アーキテクチャ１００では、バス１２４を経由して受け取ったすべての有効命令を並列に直接デコードする機能を備えた順列組合せ理論に基づくロジック・ブロックとして実現されている。アーキテクチャ１００によって認識される命令は、各タイプ別に、命令、レジスタ要件および必要な資源の仕様とともに表ＶＩに示されている。
【０１７８】
表ＶＩ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
命令／仕様
命令 制御とオペランド情報＊
レジスタ間移動              論理／算術演算機能コード：
加算、減算、乗算、シフトその他の指定
宛先レジスタ
ＰＳＲのみセット
ソース・レジスタ１
ソース・レジスタ２または即値定数値
レジスタセットＡ／Ｂ選択
即値からレジスタへ          宛先レジスタ
移動                        即値整数または浮動小数点定数値
レジスタ・セットＡ／Ｂ選択
ロード／ストア・レジスタ    オペレーション機能コード：
ロードまたはストアの指定、即値、ベースと
即値、またはベースとオフセットの使用
ソース／宛先レジスタ
ベース・レジスタ
インデックス・レジスタまたは即値定数値
レジスタ・セットＡ／Ｂ選択
即値コール                  符号付き即値変位
制御フロー                  オペレーション機能コード：
ブランチ・タイプとトリガ条件の指定
ベース・レジスタ
インデックス・レジスタ、即値定数変位値、また
はトラップ番号
レジスタ・セットＡ／Ｂ選択
特殊レジスタ移動            オペレーション機能コード：
特殊／整数レジスタとの間の移動の指定
特殊レジスタ・アドレス識別子ソース／宛先レジ
スタ
レジスタ・セットＡ／Ｂ選択
整数変換移動                オペレーション機能コード：
浮動小数点から整数への変換タイプの指定
ソース／宛先レジスタ
レジスタ・セットＡ／Ｂ選択
ブール関数                  ブール関数コード：ＡＮＤ、ＯＲなどの指定
宛先ブール・レジスタ
ソース・レジスタ１
ソース・レジスタ２
レジスタ・セットＡ／Ｂ選択
拡張プロシージャ            プロシージャ指定子：プロシージャ・ベース値か
らのアドレス・オフセットの指定
オペレーション：値をプロシージャ・ルーチンへ
渡す
アトミック・プロシージャ    プロシージャ指定子：アドレス値の指定
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
＊−命令は、デコードされて命令を識別するフィールドのほかにこれらのフィールドを含んでいる。
【０１７９】
Ｅデコード・ユニット４９０は命令の組の各命令を並列にデコードする。その結果の命令の識別、命令機能、レジスタ参照および機能要件はＥデコード・ユニット４９０の出力から得られる。この情報は再生成され、命令の組の内のすべての命令がリタイアされるまでプロセッサ・サイクルの各半サイクル期間、Ｅデコード・ユニット４９０によってラッチされる。したがって、保留状態の８命令すべてに関する情報がＥデコード・ユニット４９０の出力から絶えず得られるようになっている。この情報は８エレメント・ビット・ベクトルの形式で表示され、各ベクトルのビットまたはサブフィールドは２つの保留中命令の組の内の対応する命令の物理ロケーションに論理的に対応している。したがって、８個のベクトルが制御ライン５０２を経由してキャリー・チェッカ４９２へ送られる。この場合、各ベクトルは対応する命令がプロセッサ状況ワードのキャリー・ビットに作用を及ぼしているか、あるいはそれに依存しているかを指定している。８個のベクトルが各命令の特定の内容と機能ユニット要件を示すために制御ライン５１０を経由して送られる。８個のベクトルが制御ライン５０６を経由して送られ、８個の保留中命令の各々によって使用されたレジスタ参照を指定している。これらのベクトルはプロセッサ・サイクル１が終了する前に送られる。
【０１８０】
２）キャリー・チェッカ・ユニットの詳細
キャリー・チェッカ・ユニット４９２は図１４に示すオペレーションのデータ依存関係フェーズ期間の間に依存関係検査ユニット４９４と並列に動作する。キャリー・チェッカ・ユニット４９２は好適アーキテクチャ１００では順列組合せ理論に基づくロジックとして実現されている。したがって、キャリー・チェッカ・ユニット４９２によるオペレーションの各繰り返し時に、命令がプロセッサ状態レジスタのキャリー・フラグを変更したかどうかについて８個の命令すべてが考慮される。これが必要とされるのは、その前の命令によって設定されたキャリー・ビットの状況に依存する命令を順序外で実行することを可能にするためである。制御ライン５０４上に送出された制御信号により、キャリー・チェッカ・ユニット４９２は、キャリー・フラグに対する先行命令の実行に依存する特定の命令を識別することができる。
【０１８１】
さらに、キャリー・チェッカ・ユニット４９２は８個の保留中命令の各々についてキャリー・ビットの一時的コピーをもっている。キャリー・ビットを変更していない命令については、キャリー・チェッカ・ユニット４９２はプログラム命令ストリームの順序でキャリー・ビットを次の命令に伝える。したがって、順序外で実行され、キャリー・ビットを変更する命令を実行させることが可能であり、さらに、その順序外で実行される命令に依存する後続の命令も、キャリー・ビットを変更する命令のあとに置かれていても、実行することが可能である。さらに、キャリー・ビットがキャリー・チェッカ・ユニット４９２によって維持されているので、これらの命令のリタイア以前に例外が起こったとき、キャリー・チェッカ・ユニットは内部一時キャリー・ビット・レジスタをクリアするだけでよいことから、順序外で実行することが容易になる。その結果、プロセッサ状況レジスタは、順序外で実行される命令の実行による影響を受けない。キャリー・チェッカ・ユニット４９２が維持している一時キャリー・ビット・レジスタは、順序外で実行される各命令が完了すると更新される。順序外で実行される命令がリタイアされると、プログラム命令ストリームの中で最後にリタイアされた命令に対応するキャリー・ビットはプロセッサ状況レジスタのキャリー・ビット・ロケーションへ転送される。
【０１８２】
３）データ依存関係チェッカ・ユニットの詳細
データ依存関係チェッカ・ユニット４９４はＥデコード・ユニット４９０から制御ライン５０６を経由して８個のレジスタ参照識別ベクトルを受け取る。各レジスタの参照は３２個のレジスタを一度に１つを識別するのに適した５ビット値と“Ａ”“Ｂ”またはブール・レジスタ・セット内に置かれているレジスタ・バンクを識別する２ビット値によって示されている。浮動小数点レジスタ・セットは“Ｂ”レジスタ・セットとも呼ばれる。各命令は最高３つまでのレジスタ参照フィールドを持つことができる。２つのソース・レジスタ・フィールドと１つの宛先レジスタ・フィールドである。ある種の命令、特にレジスタ間移動命令は、宛先レジスタを指定している場合があっても、Ｅデコード・ユニット４９０によって認識される命令ビット・フィールドは実際に作製される出力データがないことを意味している場合がある。むしろ、命令の実行は、プロセッサ状況レジスタの値の変更を判断することだけを目的としている。
【０１８３】
データ依存関係チェッカ４９４も好適アーキテクチャ１００において純然たる組合せロジック（ｐｕｒｅ  ｃｏｍｂｉｎａｔｏｒｉａｌ  ｌｏｇｉｃ）で実現されているが、これはプログラム命令ストリーム内に後に現れる命令のソース・レジスタ参照と相対的に前に置かれた命令の宛先レジスタ参照との間の依存関係を同時に判断するように動作する。ビット配列は、どの命令が他の命令に依存するかを識別するだけでなく、各依存関係がどのレジスタに基づいて生じたかを識別するデータ依存関係チェッカ４９４によって作られる。
キャリーとレジスタ・データの依存関係は、第２プロセッサ・サイクルの開始直後に判別される。
【０１８４】
４）レジスタ改名ユニットの詳細
レジスタ改名ユニット４９６は８個の保留中の命令すべてのレジスタ参照のＩＤを制御ライン５０６を経由してレジスタ依存関係を制御ライン５０８を経由して受け取る。８個のエレメントからのマトリックスも制御ライン５４２を経由して受け取る。これらのエレメントは保留中命令の現セットの中でどの命令が実行されたか（完了したか）を示している。この情報からレジスタ改名ユニット４９６は制御信号の８エレメント配列を制御ライン５１２を経由して命令発行ユニット４９８へ送る。このようにして送られた制御情報は、現セットのデータ依存関係が判別された場合に、まだ実行されていない現在保留中の命令のうちどの命令の実行が可能になったかについてレジスタ改名ユニット４９６が行った判断を反映している。レジスタ改名ユニット４９６は実行のために同時に出される最高６個までの命令を識別した選択制御信号をライン５１６を経由して受信する。つまり、２個の整数命令、２個の浮動小数点命令および２個のブール命令である。
【０１８５】
レジスタ改名ユニット４９６はバス５１８を経由してレジスタ・ファイル配列４７２へ送られた制御信号を通して、識別された命令を実行する際にアクセスするソース・レジスタを選択するというもう一つの機能を備えている。順序外で実行される命令の宛先レジスタは、対応するデータ経路の一時バッファ６１２、６８０、７２８に置かれているものとして選択される。順序内で実行される命令は完了するとリタイアされ、その結果データはレジスタ・ファイル６１４、６８４、７３２にストアされていく。ソース・レジスタの選択は、レジスタが以前に宛先として選択され、対応する以前の命令がまだリタイアされていないかどうかによって決まる。そのような場合には、ソース・レジスタは対応する一時バッファ６１２、６８０、７２８から選択される。以前の命令がリタイアされていた場合は、対応するレジスタ・ファイル６１４、６８４、７３２のレジスタが選択される。その結果、レジスタ改名ユニット４９６は順序外で実行される命令の場合には、レジスタ・ファイル・レジスタの参照を一時バッファ・レジスタの参照に実効的に置き換えるように動作する。
【０１８６】
アーキテクチャ１００によれば、一時バッファ６１２、６８０、７２８は対応するレジスタ・ファイル配列のレジスタ構造と重複していない。むしろ、８個の保留命令の各々に対して１つの宛先レジスタ・スロットが用意されている。その結果、一時バッファ宛先レジスタ参照の置換は、保留レジスタ・セット内の対応する命令のロケーションによって判断される。そのあとのソース・レジスタ参照はソース依存関係が発生した命令に対してデータ依存関係チェッカ４９４によって識別される。したがって、一時バッファ・レジスタ内の宛先スロットはレジスタ改名ユニット４９６によって容易に判断することが可能である。
【０１８７】
５）命令発行ユニットの詳細
命令発行ユニット４９８は、発行できる命令のセットをレジスタ改名ユニット４９６の出力とＥデコード・ユニット４９０によって識別された命令の機能要件に基づいて判断する。命令発行ユニット４９８は制御ライン５１４を経由して報告された機能ユニット４７８0-n の各々の状況に基づいてこの判断を行う。したがって、命令発行ユニット４９８は発行すべき使用可能な命令の組をレジスタ改名ユニット４９６から受信すると、オペレーションを開始する。各命令を実行するためにレジスタ・ファイルへのアクセスが必要であるとすると、命令発行ユニット４９８は現在命令を実行中の機能ユニット４９８0-n が使用可能であることを予想する。レジスタ改名ユニット４９６へ発行すべき命令を判別する際の遅延を最小にするために、命令発行ユニット４９８は専用の組合せロジックで実現されている。
【０１８８】
発行すべき命令を判別すると、レジスタ改名ユニット４９６はレジスタ・ファイルへのアクセスを開始し、このアクセスは第３プロセッサ・サイクルＰ2 が終了するまで続けられる。プロセッサ・サイクルＰ3 が開始すると、命令発行ユニット４９８は「Ｅｘｅｃｕｔｅ  ０」で示すように１つまたは２つ以上の機能ユニット４７８0-n によるオペレーションを開始し、レジスタ・ファイル配列４７２から送られてきたソース・データを受信して処理する。
【０１８９】
代表例として、アーキテクチャ１００で処理される大部分の命令は１プロセッサ・サイクルで機能ユニットを通して実行される。しかし、一部の命令は、「Ｅｘｅｃｕｔｅ  １」で示すように、同時に出された命令を完了するのに複数のプロセッサ・サイクルを必要とする。Ｅｘｅｃｕｔｅ  ０命令とＥｘｅｃｕｔｅ  １命令は、例えばそれぞれＡＬＵと浮動小数点乗算機能ユニットに実行させることができる。ＡＬＵ機能ユニットは図１４に示すように、１プロセッサ・サイクル内で出力データを発生し、この出力データはラッチしておくだけで、第５プロセッサ・サイクルＰ4 時に別の命令を実行する際に使用することができる。浮動少数点乗算機能ユニットは内部パイプライン化機能ユニットにすることが好ましい。したがって、次のプロセッサ・サイクルで別の浮動小数点命令を出すことができる。しかし、最初の命令の結果はデータに依存するプロセッサ・サイクル数の間使用することができない。図１４に示す命令は、機能ユニットでの処理を完了するためには、３プロセッサ・サイクルを必要とする。
【０１９０】
各プロセッサ・サイクルの間に、命令発行ユニット４９８の機能は繰り返される。その結果、現在の保留中の命令の組の状況と機能ユニット４７８0-n の全セットの使用可能状況は各プロセッサ・サイクルの間に再評価される。したがって、最適条件のとき、好適アーキテクチャ１００はプロセッサ・サイクルごとに最高６個までの命令を実行することができる。しかし、代表的な命令ミックスから得られる総平均実行命令数は１プロセッサ・サイクル当たり１．５個ないし２．０個である。
【０１９１】
命令発行ユニット４９８の機能で最後に考慮すべきことは、このユニットがトラップ条件の処理と特定命令の実行に関与することである。トラップ条件を発生するためには、まだリタイアされていないすべての命令をＩＥＵ１０４からクリアする必要がある。このような事態は、算術演算エラーに応答して、機能ユニット４７８0-n のいずれからか、あるいは例えば違法命令をデコードしたときにＥデコード・ユニット４９０から外部割り込みを受信し、それが割り込み要求／受信確認制御ライン３４０を経由して、ＩＥＵ１０４へ中継されたのに応答して、起こることがある。トラップ条件が発生しとき、命令発行ユニット４９８は現在ＩＥＵ１０４で保留されているすべての非リタイア命令を中止または無効にすることを受け持つ。同時にリタイアできない命令はすべて無効にされる。この結果は、プログラム命令ストリームを順序内で実行する従来の方式に対して割り込みを正確に発生させるために不可欠である。ＩＥＵ１０４がトラップ処理プログラム・ルーチンの実行を開始する準備状態になると、命令発行ユニット４９８は制御ライン３４０を経由するリターン制御信号によって割り込みの受信を確認する。また、従来の純然たる順序内ルーチンにおいてある命令が実行される前に変更されたプロセッサ状態ビットに基づいてその命令に対する例外条件が認識される可能性を防止するために命令発行ユニット４９８は、ＰＳＲを変更する可能性のあるすべての命令（特殊移動やトラップからのリターンなど）が厳格に順序内で実行されるようにすることを受け持つ。
【０１９２】
プログラム制御の流れを変更するある種の命令は、Ｉデコード・ユニット２６２によって判別されない。この種の命令には、サブルーチン・リターン、プロシージャ命令からのリターン、トラップからのリターンがある。命令発行ユニット４９８は判別制御信号をＩＥＵリターン制御ライン３５０を経由してＩＦＵ１０２へ送る。特殊レジスタ４１２のうち対応するものが選択されて、コール命令の実行時、トラップの発生時またはプロシージャ命令の出現時に存在していたＩＦ  ＰＣ実行アドレスを出力する。
【０１９３】
６）完了制御ユニットの詳細
完了制御ユニット５４０は機能ユニット４７８0-n をモニタして、現在のオペレーションの完了状況を調べる。好適アーキテクチャ１００では、完了制御ユニット５４０は各機能ユニットによるオペレーションの完了を予想して、現在保留中の命令の組の中の各命令の実行状況を示した完了ベクトルを機能ユニット４７８0-n による命令の実行完了よりも約半プロセッサ・サイクル前にレジスタ改名ユニット４９６、バイパス制御ユニット５２０およびリタイア制御ユニット５００へ送る。これにより、命令発行ユニット４９８はレジスタ改名ユニット４９６を通して、実行を完了する機能ユニットを次の命令発行サイクルに対して使用可能な資源として考慮することができる。バイパス制御ユニット５２０は、機能ユニットから出力されたデータをバイパス・ユニット４７４を通るようにバイパスする準備を行うことができる。最後に、リタイア制御ユニット５００は機能ユニット４７８0-n からレジスタ・ファイル配列４７２へデータを転送するのと同時に対応する命令をリタイアするように動作する。
【０１９４】
７）リタイア制御ユニットの詳細
完了制御ユニット５４０から送られた命令完了ベクトルの他に、リタイア制御ユニット５００はＥデコード・ユニット４９０から出力された最も古い命令の組をモニタする。命令ストリーム順序の中の各命令に完了制御ユニット５４０によって完了の印（マーク）が付けられると、リタイア制御ユニット５００は、制御ライン５３４上に送出された制御信号を通して一時バッファ・スロットからレジスタ・ファイル配列４７２内の対応する命令が指定したファイル・レジスタ・ロケーションへデータを転送することを指示する。１つまたは複数の命令が同時にリタイアされると、ＰＣ  Ｉｎｃ／ｓｉｚｅ制御信号が制御ライン３４４上に送出される。各プロセッサ・サイクルごとに最高４個までの命令をリタイアすることが可能である。命令の組の全体がリタイアされると、ＩＦＩＦＯ読取り制御信号が制御ライン３４２上に送出されてＩＦＩＦＯ２６４を前進させる。
【０１９５】
８）制御フロー制御ユニットの詳細
制御フロー制御ユニット５２８は、現在の保留中命令の組の内の制御フロー命令が解決されたかどうか、さらに、その結果ブランチが行われたかどうかを指定した情報をＩＦＵ１０２に絶えず与えるように動作する。制御フロー制御ユニット５２８はＥデコード・ユニット４９０による制御フロー・ブランチ命令の識別情報を制御ライン５１０を経由して取得する。現在のレジスタ依存関係のセットは、制御ライン５３６を経由してデータ依存関係チェッカ・ユニット４９４から制御フロー制御ユニット５２８へ送られるので、制御フロー制御ユニット５２８はブランチ命令の結果が依存関係に拘束されているかどうか、あるいは判明しているかどうかを判断することができる。レジスタ改名ユニット４９６からバス５１８を経由して、送られたレジスタの参照は制御フロー制御ユニット５２８によってモニタされ、ブランチ決定を定義するブール・レジスタが判別される。したがって、ブランチ決定は制御フロー命令の順序外の実行以前でも判断することが可能である。
【０１９６】
制御フロー命令の実行と同時に、バイパス・ユニット４７４は、制御フロー１と制御フロー２の制御ライン７５０、７５２からなる制御ライン５３０を経由して制御フローの結果を制御フロー制御ユニット５２８へ送るように指示される。最後に、制御フロー制御ユニット５２８は各々が８ビットの２個のベクトルを制御ライン３４８を経由して、ＩＦＵ１０２へ連続して送る。これらのベクトルは、ベクトル内のビットに対応する論理ロケーションに置かれた命令が解決されたか否かおよびその結果ブランチが行われたか否かを定義している。
好適アーキテクチャ１００では、制御フロー制御ユニット５２８は制御ユニット５２８への入力制御信号を受けて連続的に動作する組合せロジックとして実現されている。
【０１９７】
９）バイパス制御ユニットの詳細
命令発行ユニット４９８は、バイパス制御ユニット５２０と厳密に協働して、レジスタ・ファイル配列４７２と機能ユニット４７８0-n 間のデータのルーチング（経路指定）を制御する。バイパス制御ユニット５２０は図１４に示すオペレーションのレジスタ・ファイル・アクセス、出力およびストア・フェーズと関連して動作する。レジスタ・ファイル・アクセスの間にはバイパス制御ユニット５２０は命令の実行の出力フェーズの間に書き込まれている途中にあるレジスタ・ファイル配列４７２内の宛先レジスタのアクセスを制御ライン５２２を通して認識することができる。この場合、バイパス制御ユニット５２０はバイパスして機能ユニット配布バス４８０に返すように、機能ユニット出力バス４８２上に送出されたデータを選択することを指示する。バイパス・ユニット５２０に対する制御は、制御ライン５４２を通して命令発行ユニット４９８によって行われる。
【０１９８】
ＩＶ．仮想メモリ制御ユニット
ＶＭＵ１０８のインタフェース定義は図１５に示されている。ＶＭＵ１０８は主にＶＭＵ制御ロジック・ユニット８００と内容アドレス（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ）メモリ（ＣＡＭ）８０２から構成されている。ＶＭＵ１０８の一般的機能は図１６にブロック図で示してある。同図において、仮想アドレスの表現はスペースＩＤ（ｓＩＤ〔３１：２８〕）、仮想ページ番号（ＶＡＤＤＲ〔２７：１４〕）、ページ・オフセット（ＰＡＤＤＲ〔１３：４〕）、および要求ＩＤ（ｒＩＤ〔３：０〕）に分割されている。物理アドレスを生成するためのアルゴリズムでは、スペースＩＤを使用して、スペース・テーブル８４２内の１６個のレジスタから１つを選択するようになっている。選択したスペース・レジスタの内容と仮想ページ番号とを組み合わせて、テーブル索引バッファ（ＴＬＢ）８４４をアクセスするときのアドレスとして使用される。３４ビット・アドレスは内容アドレス・タグの働きをし、バッファ８４４内の対応するバッファ・レジスタを指定するために使用される。タグに一致するものが見つかると、１８ビット幅レジスタ値が物理アドレス８４６の上位１８ビットとして得られる。ページ・オフセットと要求ＩＤは物理アドレス８４６の下位１４ビットとして得られる。
【０１９９】
タグに一致するものがテーブル索引バッファ８４４に見つからないと、ＶＭＵ不一致が通知される。この場合は、ＭＡＵ１１２に維持されている完全ページ・テーブル・データ構造をアクセスする従来のハッシュ・アルゴリズム８４８を採用したＶＭＵ高速トラップ処理ルーチンを実行させる必要がある。このページ・テーブル８５０はアーキテクチャ１００によって現在使用中のすべてのメモリ・ページのエントリを含んでいる。ハッシュ・アルゴリズム８４８は現在の仮想ページ変換操作を満たすために必要なページ・テーブル・エントリを判別する。これらのページ・テーブル・エントリはＭＡＵ１１２からレジスタ・セット“Ａ”のトラップ・レジスタへロードされ、そのあと特殊レジスタ移動命令によってテーブル索引バッファ８４４へ転送される。例外処理ルーチンから戻ると、ＶＭＵ不一致例外を引き起こした命令はＩＥＵ１０４によって再実行される。仮想アドレスから物理アドレスへの変換操作は例外を引き起こさないで完了するはずである。
【０２００】
ＶＭＵ制御ロジック８００はＩＦＵ１０２およびＩＥＵ１０４とのデュアル・インタフェースとなる。準備信号は制御ライン８２２を経由して、ＩＥＵ１０４へ送られ、ＶＭＵ１０８がアドレス変換のために使用可能であることを通知する。好適実施例では、ＶＭＵ１０８は常にＩＦＵ１０２の変換要求を受け付ける準備状態にある。ＩＦＵ１０２およびＩＥＵ１０４は共に、制御ライン３２８および８０４を経由して要求を提示することができる。好適アーキテクチャ１００では、ＩＦＵは優先してＶＭＵ１０８をアクセスすることができる。その結果、ビジー（使用中）制御ライン８２０は１つだけがＩＥＵ１０４に出力される。
【０２０１】
ＩＦＵ１０２およびＩＥＵ１０４は共にスペースＩＤと仮想ページ番号フィールドをそれぞれ制御ライン３２６および８０８を経由して、ＶＭＵ制御ロジック８００へ送る。さらにＩＥＵ１０４は読み書き制御信号を制御信号８０６で出力する。この制御信号は、参照された仮想メモリのメモリ・アクセス保護属性を変更するために、そのアドレスをロード・オペレーションに使用すべきか、ストア・オペレーションに使用すべきかを必要に応じて定義している。仮想アドレスのスペースＩＤと仮想ページ・フィールドは、ＣＡＭユニット８０２に渡されて、実際の変換操作が行われる。ぺージ・オフセットとＥｘＩＤフィールドは最終的にＩＥＵ１０４から直接にＣＣＵ１０６へ送られる。物理ページと要求ＩＤフィールドは、アドレス・ライン８３６を経由してＣＡＭユニット８０２へ送られる。テーブル索引バッファに一致するものが見つかると、ヒット・ラインと制御出力ライン８３０を経由してＶＭＵ制御ロジック・ユニット８００に通知される。その結果の１８ビット長の物理アドレスはアドレス出力ライン８２４上に出力される。
【０２０２】
ＶＭＵ制御ロジック・ユニット８００は、ライン８３０からヒットおよび制御出力制御信号を受けると、仮想メモリ不一致と仮想メモリ例外制御信号をライン３３４、３３２上に出力する。仮想メモリ変換不一致とは、テーブル索引バッファ８４４内のページ・テーブルＩＤと一致しなかったことを意味する。その他の変換エラーはすべて仮想メモリ例外として報告される。
【０２０３】
最後にＣＡＭユニット８０２内のデータ・テーブルは特殊レジスタ間移動命令をＩＥＵ１０４が実行することによって変更することができる。読み書き、レジスタ選択、リセット、ロードおよびクリア制御信号はＩＥＵ１０４から制御ライン８１０、８１２、８１４、８１６、８１８を経由して出力される。ＣＡＭユニット・レジスタに書くべきデータは、特殊アドレス・データ・バス３５４に接続されたアドレス・バス８０８を経由してＩＥＵ１０４からＶＭＵ制御ロジック・ユニット８００によって受信される。このデータは初期設定、レジスタ選択、および読み書き制御信号を制御する制御信号と同時にバス８３６を経由してＣＡＭユニット８０２へ転送される。その結果、ＣＡＭユニット８０２内のデータ・レジスタは、より高レベルのオペレーティング・システムで定義されているコンテキスト・スイッチを処理するとき必要になるストアのための読出しを含めて、アーキテクチャ１００の動的オペレーションの間に必要に応じて即座に書き出すことができる。
【０２０４】
Ｖ．キャッシュ制御ユニット
ＣＣＵ１０６のデータ・インタフェースに対する制御は、図１７に示されている。この場合も、ＩＦＵ１０２とＩＥＵ１０４用に別々のインタフェースが設けられている。さらに論理的に別個のインタフェースがＣＣＵ１０６に用意され、命令とデータ転送のためにＭＣＵ１１０と結ばれている。ＩＦＵインタフェースはアドレス・ライン３２４上に送出される物理ページ・アドレス、アドレス・ライン８２４上に送出されるＶＭＵ変換ページ・アドレス、および制御ライン２９４、２９６上を別々に転送される要求ＩＤからなっている。単方向データ転送バス１１４は命令の組の全体をＩＦＵ１０２と並列に転送するためのものである。最後に、読取り／使用中および準備制御信号は制御ライン２９８、３００、３０２を経由して、ＣＣＵ１０６へ送られる。
【０２０５】
同様に、物理アドレス全体は物理アドレス・バス７８８を経由して、ＩＥＵ１０４へ送られる。要求ＥｘＩＤは制御ライン７９６を経由して、ＩＥＵ１０４のロード／ストア・ユニットとの間で別々に受渡される。８０ビット幅単方向データ・バスはＣＣＵ１０６からＩＥＵ１０４に出力される。しかし、アーキテクチャ１００の好適実施例では、下位の６４ビットだけがＩＥＵ１０４によって使用される。全８０ビット・データ転送バスをＣＣＵ１０６内で使用できるようにし、かつ、サポートしているのは、本アーキテクチャ１００の引き続いての実行をサポートするためであり、浮動少数点データ経路６６０を変更することによって、ＩＥＥＥ標準７５４に準拠する浮動小数点のオペレーションをサポートする。
【０２０６】
ＩＥＵ制御インターフェースは、要求、使用中、準備、読み書きを通して、および制御信号７８４を通して確立され、実質的にはＩＦＵ１０２によって使用される対応する制御信号と同じである。例外は、ロード・オペレーションとストア・オペレーションを区別するための読み書き制御信号が設けられていることである。幅制御信号はＩＥＵ１０４による各ＣＣＵ１０６へのアクセス時に転送されるバイト数を指定している。これに対して、命令用キャッシュ１３２の全てのアクセスは固定した１２８ビット幅データ・フェッチ・オペレーションになっている。
【０２０７】
ＣＣＵ１０６は命令用キャッシュ１３２とデータ用キャッシュ１３４に対して従来とほぼ同じキャッシュ制御機能を備えている。好適アーキテクチャ１００では，命令用キャッシュ１３２は２５６個の１２８ビット幅の命令の組をストアする機能を備えた高速メモリになっている。データ用キャッシュ１３４は１０２４個の３２ビット幅ワードのデータをストアする機能を備えている。命令用キャッシュ１３２とデータ用キャッシュ１３４の内容から即時に満足できない命令要求とデータ要求はＭＣＵ１１０に渡される。命令用キャッシュがミスした場合は、２８ビット幅物理アドレスがアドレス・バス８６０を経由してＭＣＵ１１０に渡される。要求ＩＤおよびＣＣＵ１０６とＭＣＵ１１０のオペレーションを調整するための追加制御信号は制御ライン８６２上に送出される。ＭＣＵ１１０がＭＡＵ１１２の必要な読取りアクセスを調整すると、２つの連続する６４ビット幅データ転送が直接にＭＡＵ１１２から命令用キャッシュ１３２へ行われる。２つの転送が必要になるのは、データ・バス１３６が好適アーキテクチャ１００では、６４ビット幅バスになっているためである。要求したデータがＭＣＵ１１０を通して返却されると、要求オペレーションの保留中に維持されていた要求ＩＤも制御ライン８６２を経由してＣＣＵ１０６へ返却される。
【０２０８】
データ用キャッシュ１３４とＭＣＵ１１０との間のデータ転送オペレーションは、命令用キャッシュの転送オペレーションとほぼ同じである。データ・ロードとストア・オペレーションは単一バイトを参照できるので、全３２ビット幅の物理アドレスがアドレス・バス８６４を経由して、ＭＣＵ１１０へ送られる。インタフェース制御信号と要求ＥｘＩＤは制御ライン８６６を経由して、転送される。双方向の６４ビット幅データ転送はデータ用キャッシュ・バス１３８を経由して行われる。
【０２０９】
高性能ＲＩＳＣをベースとしたマイクロプロセッサ・アーキテクチャは以上に説明した通りである。このアーキテクチャによれば、命令を順序外に実行することができ、メインとターゲット命令ストリームのプリフェッチ命令転送経路を別々に設け、およびプロシージャ命令認識と専用プリフェッチ経路を設けることができる。命令実行ユニットは最適化されているので、最適化された複数のデータ処理経路で整数、浮動小数点およびブール演算をサポートすることができ、また、それぞれの一時レジスタ・ファイルが設けられているので、容易に設定されるマシン状態の状況を正確に維持しながら、順序外の実行と命令取消しを容易に行うことができる。したがって、上述した説明では、本発明の好適実施例を開示しているが、当業者にとって本発明の範囲内で種々変更および改良することが可能であることは勿論である。
【図面の簡単な説明】
【図１】  本発明を実現するマイクロプロセッサ・アーキテクチャを示す簡略図である。
【図２】  本発明の命令フェッチ・ユニットを示す詳細ブロック図である。
【図３】  本発明のプログラム・カウンタ・ロジック・ユニットを示すブロック図である。
【図４】  プログラム・カウンタ・データと制御経路ロジックを示す別の詳細ブロック図である。
【図５】  本発明の命令実行ユニットを示す簡略ブロック図である。
【図６】  レジスタ・ファイル・アーキテクチャ及び１次及び２次命令の組を図形で示す図である。
【図７】  １次整数レジスタの再構成ステージを図形で示す図である。
【図８】  本発明の再構成可能浮動小数点及び２次整数レジスタ・セットを図形で示す図である。
【図９】  本発明の３次ブール・レジスタ・セットを図形で示す図である。
【図１０】  本発明の命令実行ユニットの１次整数処理データ経路部分を示す詳細ブロック図である。
【図１１】  本発明の命令実行ユニットの１次浮動小数点データ経路部分を示す詳細ブロック図である。
【図１２】  本発明の命令実行ユニットのブール演算データ経路部分を示す詳細ブロック図である。
【図１３】  本発明のロード／ストア・ユニットを示すブロック図である。
【図１４】  本発明のオペレーション順序を示すタイミング図である。
【図１５】  本発明の仮想メモリ制御ユニットを示す簡略ブロック図である。
【図１６】  本発明の仮想メモリ制御アルゴリズムを示すブロック図である。
【図１７】  本発明のキャッシュ制御ユニットを示す簡略ブロック図である。
【符号の説明】
１００…アーキテクチャの概要
１０２…命令フェッチ・ユニット（ＩＦＵ）
１０４…命令実行ユニット（ＩＥＵ）
１０６…キャッシュ制御ユニット（ＣＵＵ）
１０８…仮想メモリ・ユニット（ＶＭＵ）
１１０…メモリ制御ユニット（ＭＣＵ）
１１２…メモリ・アレイ・ユニット（ＭＡＵ）
【図１】
0003702873.tif 000002
【図２】
0003702873.tif 000003
【図３】
0003702873.tif 000004
【図４】
0003702873.tif 000005
【図５】
0003702873.tif 000006
【図６】
0003702873.tif 000007
【図７】
0003702873.tif 000008
【図８】
0003702873.tif 000009
【図９】
0003702873.tif 000010
【図１０】
0003702873.tif 000011
【図１１】
0003702873.tif 000012
【図１２】
0003702873.tif 000013
【図１３】
0003702873.tif 000014
【図１４】
0003702873.tif 000015
【図１５】
0003702873.tif 000016
【図１６】
0003702873.tif 000017
【図１７】
0003702873.tif 000018