(57)【特許請求の範囲】
【請求項１】
Ｎビット幅のデ−タ経路を有するアドレスユニットを有しており且つＮビット仮想アドレスフィールドを有する拡張ア−キテクチュアをサポートすることが可能であり且つｍをＮ未満としてｍビット仮想アドレスフィールドを有する従来のアーキテクチュアと逆互換性を有するコンピュータであって、尚前記従来のアーキテクチュアは仮想アドレスマップを有しており、そのカーネル及びユーザアドレスは該ｍビット仮想アドレスのビット（ｍ−１）の値により区別されるものであって、前記Ｎビット仮想アドレスのＲ個の最大桁ビットはアドレス０で開始する下部領域及びアドレス２N−１で終了する上部領域を包含する複数個の領域を画定しており、前記拡張アーキテクチュアが、前記下部領域の最下部において開始する２VSIZEバイトユーザ空間と、前記下部領域以外の領域の一つの最下部において開始する第一カーネル空間と、前記上部領域の最上部で終了する第二カーネル空間とを包含する仮想アドレスマップを有しており、前記第二カーネル空間は前記従来のアーキテクチュアのッカーネル空間と同一の寸法であり、２VSIZEは前記従来のアーキテクチュアのユーザ空間の寸法よりも大きいが一つの領域の寸法よりも小さくｍビットアドレスをＮビットへ符号拡張する手段が設けられていることを特徴とするコンピュータ。
【請求項２】
請求項１において、ＶＳＩＺＥがｍよりも大きいことを特徴とするコンピュータ。
【請求項３】
請求項１において、前記第一カーネル空間が前記上部領域の最下部から開始することを特徴とするコンピュータ。
【請求項４】
コンピュータシステムにおいて、アドレス論理が設けられており、前記アドレス論理が、ビットが最大桁ビットに対してＶＡ（Ｎ−１）と命名されており且つ最小桁ビットに対してＶＡ（０）として命名されており且つＲ個の最大桁ＶＡビットが複数個の領域を画定するＮビット仮想アドレス（ＶＡ）を発生する手段と、前記ＶＡの少なくとも一部に応答してそれが応答するＶＡビットに基づいて物理的アドレスを発生するアドレス変換手段と、前記アドレス変換手段と関連しておりＶＳＩＺＥを（Ｎ−Ｒ）以下として前記Ｒ個の最大桁ＶＡビットの少なくともいくつかに応答すると共にＶＡ（ＶＳＩＺＥ−１）を包含する一つの範囲のＶＡビット及びＶＡ（ＶＳＩＺＥ−１）より桁下のビットに応答し且つＶＡ（Ｎ−Ｒ−１）乃至ＶＡ（ＶＳＩＺＥ）に応答することなしにマップした物理アドレスを発生するＴＬＢと、前記Ｒ個の最大桁ＶＡビットの少なくとも幾つかに応答すると共にＶＡ（Ｎ−Ｒ−１）乃至ＶＡ（ＶＳＩＺＥ）に応答し少なくとも一つの特定の領域ＶＡ（Ｎ−Ｒ−１）乃至ＶＡ（ＶＳＩＺＥ）がすべて０でない場合にエラー信号を発生する手段が設けられていることを特徴とするコンピュータシステム。
【請求項５】
請求項４において、前記アドレス変換手段が、一つの範囲のマップされていないアドレスを画定する少なくとも幾つかのＶＡビットに応答し前記ＴＬＢにより変換されることなしにＶＡビットから直接的にとられるビットを持ったマップされていない物理アドレスを発生する手段を有することを特徴とするコンピュータシステム。
【請求項６】
請求項４において、本コンピュータはユーザモードとカーネルモードとを包含する複数個のモードのうちの選択した一つとすることが可能であり、前記複数個の領域の一つがユーザ領域として指定されており、前記アドレスエラー発生手段が、本コンピュータがユーザモードにある場合にアドレスエラーを特定し且つ前記Ｒ個の最大桁ＶＡビットが前記ユーザ領域以外の領域を特定し、前記アドレスエラー発生手段が、本コンピュータがカーネルモードにある場合には、すべての領域における少なくとも一つのアドレスに対してアドレスエラーを特定することがないことを特徴とするコンピュータシステム。
【請求項７】
請求項４において、カーネルモードにおいて許可されたアドレスの範囲が、ｍをＶＳＩＺＥ以下として、ＶＡ（Ｎ−１）乃至ＶＡ（ｍ−１）を持ったアドレスを包含することを特徴とするコンピュータシステム。
【請求項８】
拡張アーキテクチュアをサポートすることの可能なコンピュータシステムにおいて、Ｎビット仮想アドレス（ＶＡ）フィールドがビットＶＡ（Ｎ−１）乃至ＶＡ（０）を有しており、本コンピュータは、ｍをＮ未満として、ビットＶＡ（ｍ−１）乃至ＶＡ（０）を有するｍビットＶＡフィールドにより特性づけられる従来のアーキテクチュアと逆互換性があり、アドレス論理が設けられており、前記アドレス論理が、ＶＡ（Ｎ−１）とＶＡ（ｍ）との間の範囲内のＶＡビットの第一高次組及びＶＡ（ｍ）とＶＡ（０）との間の範囲内のＶＡビットの第一低次組に応答しそれが応答するＶＡビットに基づいて物理アドレスを発生するアドレス変換手段と、ＶＡ（Ｎ−１）とＶＡ（ｍ）との間の範囲内のＶＡビットの第二高次組及びＶＡ（ｍ−１）とＶＡ（０）との間の範囲内のＶＡビットの第二低次組とに応答して前記ＶＡが使用可能でないものとして定義した範囲内ものである場合にアドレスエラーを発生するアドレスエラー手段と、尚前記第一及び第二高次組はそれぞれその中に第一及び第二個数のビットを有しており、ＮビットＶＡに応答して前記ＮビットＶＡのビットの第一高次及び低次組を前記アドレス変換手段へ伝送し且つ前記ＮビットＶＡのビットの前記第二高次及び低次組を前記アドレスエラー手段へ伝送させる手段と、ｍビットＶＡに応答して第一回数繰り返された前記ｎビットＶＡのＶＡ（ｍ−１）の値及び前記ｍビットＶＡのビットの前記第一低次組を前記アドレス変換手段へ伝送すると共に前記第二回数繰り返された前記ｍビットＶＡのＶＡ（ｍ−１）の値及び前記ｍビットＶＡのビットの前記第二低次組を前記アドレスエラー手段へ伝送する手段とを有することを特徴とするコンピュータシステム。
【請求項９】
請求項８において、前記第一組が、ＶＡ（Ｎ−１）とＶＡ（ｍ）との間の範囲内のすべてのＶＡビットよりもより少ない数有することを特徴とするコンピュータシステム。
【請求項１０】
請求項８において、前記第二組が、ＶＡ（ｍ−１）とＶＡ（０）との間の範囲内のすべてのＶＡビットを有することを特徴とするコンピュータシステム。
【請求項１１】
請求項８において、前記第三組が、ＶＡ（ｎ−１）とＶＡ（ｍ）との間の範囲内のすべてのＶＡビットを有することを特徴とするコンピュータシステム。
【請求項１２】
請求項８において、前記第四組が、ＶＡ（ｍ−１）とＶＡ（０）との間の範囲内のすべてのＶＡビットよりも少ない数有することを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大略、コンピュータアーキテクチュアに関するものであって、更に詳細には、より大きなワード寸法及びアドレス空間を持つために命令セットアーキテクチュアを拡張する技術に関するものである。
【０００２】
【背景技術】
【０００３】
最大のプログラムは一年毎に約０．５乃至１ビットでそのアドレス空間の必要性を増大させている。まもなく、１９７０年代に１６ビットのアドレッシングが不十分なものとなったように、このようなプログラムに対して３２ビットアドレス空間は不十分なものとなる。このような現象の一つの例は、ＩＢＭ／３６０上での２４ビットアドレッシングが不十分なものであることが判明したために、３１ビットのアドレッシングを採用したＩＢＭ／３７０である。
【０００４】
コンピュータ製造業者は、新たな命令セット（組）へ移行することにより新たなコンピュータにおいてより大きなアドレス空間へ遷移する傾向がある。新たな命令組へ移行することは、ユーザ及び製造業者の両方にとって潜在的に致命的な結果をもたらすことがある。ユーザの観点からは、このことは、古いマシンに対して書かれたプログラムが新しいマシンでは稼動しないことを意味している。ソフトウェアにかなりの投資をしたユーザは、ソフトウェアを変換するか又は置換するための費用を支払うか又は新しいマシンにおいて組み込まれた種々の進んだものの利点を諦めるかの何れかの不快な決断に迫られる。製造業者の観点からは、このような移行は、ユーザの憤りを買い且つこのような新しいマシンの当初の販売が停滞することとなる蓋然性がある。
【０００５】
ある設計者は、命令組を拡張するためにセグメント化と呼ばれる技術を使用している。多数の３２ビットアーキテクチュアは、既に、アドレス空間を拡張するためにセグメント化構成を提示している。その例はＩＢＭ／３７０（ＥＳＡモード）、ＩＢＭパワー及びＨＰプレシジョン等である。
【０００６】
セグメント化は例えばインテル８０２８６マイクロプロセサにおける如く広く使用されているが、それは必ずしも満足のいくものではない。例えばＤＥ−ハネウェルハードウエア上のマルチクス（Ｍｕｌｔｉｃｓ）システムのような２，３の例外を除いて、セグメント化は非効率的であり且つプログラマが見ることのできるものであることが判明した。満杯のアドレスはマルチワードオブジェクトとなり、そのことはアクセス及び計算を行うために複数個の命令及び／又はサイクルを必要とする。更に、殆どのセグメント化方法は、セグメント寸法よりも大きな単一のデータオブジェクトへのアクセスを可能とするものではないが、そのことはより大きなアドレス空間に対して主要な使用態様の一つである。
【０００７】
従来使用されている別の技術は、従来の（例えば、１６ビット）アーキテクチュアと新しい（例えば、３２ビット）アーキテクチュアの両方を同一のハードウェア上に実現することである。例えば、ＤＥＣ  ＶＡＸ  １１／７８０は、幾つかの制限が伴うが、ＰＤＰ−１１プログラムを実行することが可能なモードを有していた。この技術は、おもに、マイクロコード化した実行の場合に適用可能なものであり、その場合には、従来のアーキテクチュアは単に付加的なマイクロコードとして実行されるに過ぎない。ハードワイヤード構成の場合には、設計者は、基本的に二つのＣＰＵを使用することが強制されるか又は少なくともより複雑なものを取り扱うことを余儀なくされ、その複雑性が性能に著しく影響を与える場合がある。いずれのアプローチもチップのダイ面積を著しく消費する蓋然性があり、そのことは単一チップで構成する場合に重要な考慮事項である。
【０００８】
いずれにしても、コンパチビリティモード即ち互換モードはコストがかかる場合があり、特に、従来のアーキテクチュアと新しいアーキテクチュアとがアドレス寸法を越えた態様で異なる場合にそのことが言える。このことは、互換モードをしばらく持ち運んでいるが後で捨て去るような余分な荷物としている。例えば、ＶＡＸファミリの後のバージョンのものはＰＤＰ−１１エミュレーションをサポートするものではない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、上述した如く従来技術における欠点を解消し、拡張アーキテクチュアに対するハ−ドウェアが既存のアーキテクチュアをもサポートするような態様で既存のアーキテクチュアを拡張するための効率的な技術を提供することを目的としている。
【課題を解決するための手段】
【００１０】
バックワードコンパチビリティ即ち後方互換又は逆互換は、最少の量の付加的なハードウェアを必要とするに過ぎず且つ動作速度における影響も最少のものである。更に、拡張アーキテクチュアに対するプログラミングモデルは簡単な拡張であり、大量のソフトウェアの再設計を必要とするような過激的な変化ではない。
【００１１】
整数演算に対するデータワード寸法が、マシンレジスタ及びデータ経路をｍビットからＮビットへ拡大させ且つレジスタ内にロードさせる場合にｍ又はそれ以下のビットのエンティティをＮビットへ符号拡張することにより、ｍビットからＮビットへ拡張される。この場合に、「符号拡張（ｓｉｇｎ−ｅｘｔｅｎｄｉｎｇ）」という用語は、ｍビットエンティティの最大桁ビット（即ち、符号（サイン）ビット）をＮビット容器の（Ｎ−ｍ）最大桁ビット位置（そうでない場合には、不定）内に書込むことを意味している。
【００１２】
拡張アーキテクチュア命令組の第一サブセットは、従来のアーキクテクチュアからの命令を包含している。これらの命令（即ち、インストラクション）は、ｍビット命令と呼ばれ、ｍビット（又はそれ以下）エンティティのＮビット符号拡張したものとすることが可能なＮビットエンティティで動作するために再定義されている。コンパチビリティ即ち、互換性のために、該ｍビット命令は、ｍビットエンティティのＮビット符号拡張したもので動作する場合には、正しいｍビット結果のＮビット符号拡張版であるＮビット結果を発生せねばならない。
【００１３】
第二サブセットは、従来のアーキテクチュアにおいて定義されていない命令を包含している。これらの命令はＮビット命令と呼ばれ、通常ｍビットエンティティの符号拡張版ではないＮビットエンティティで動作する。絶対のＮビット命令が必要とされるか否かは、符号拡張エンティティ及び符号拡張されていないエンティティに関しての対応するｍビット命令の動作に依存する。
【００１４】
例えば論理演算などのようなｍビット命令の幾つかは、ｍビットエンティティのＮビット符号拡張版に関して動作する場合には当然に、Ｎビットへ符号拡張された正しいｍビット結果に対応するＮビット結果を発生する。したがって、互換性は、これらの命令のさらなる定義を必要とするものではなく、符号拡張されていないＮビットエンティティに関して正しく動作する。したがって、これらのｍビット命令に対応する別のＮビット命令を設けることは必要ではない。
【００１５】
例えば幾つかのシフト命令等のようなその他のｍビット命令の場合には事情がことなる。これらの命令がｍビットエンティティのＮビット符号拡張版に関して動作する場合には、そのＮビット結果はＮビットに符号拡張された正しいｍビット結果に対応しない場合がある。符号拡張された結果を当然に保証するものではない命令の場合には、互換性は、これらの命令が符号拡張された結果を保証するように定義されることを必要とする。このことは、符号拡張されていないＮビットオペランドに対してこれらの命令が正しい結果を発生しない傾向にあることを意味する。従って、これらのｍビット命令に対応する別のＮビット命令が必要とされる。
【００１６】
加算動作は符号拡張された結果を保証するものではない命令の一つであり、従って結果のｍビット部分を符号拡張するためのエキストラな回路を必要とする。しかしながら、加算はサイクル時間に関して下限をセットする傾向がある。従って、すべての加算動作に対して符号拡張を実施することは、より長いサイクル時間を必要とするか、又はその加算が二つのサイクルで実施されることを必要とする。本発明の１側面によれば、加算に対する符号拡張は必要な場合にのみ実施されるものであり、それは、ｍビットの２の補数のオーバーフローが検知された場合である。パイプライン型の構成の場合には、サイクル当たり一つの命令の場合、このことは、パイプラインをストール即ち停止させ、符号拡張を実施し、且つパイプラインのシーケンスの再開始期間中に正しい値をパイプライン内に挿入することにより達成される。
【００１７】
本拡張アーキテクチュアは、ビット（ｍ−１）の上の部分を包含するＮビット仮想アドレスフィールドの種々の部分に関してのエラーチェック及びアドレス変換を実施する。従来のアーキテクチュアのｍビットアドレスは、アドレス変換及びエラーチェックメカニズムにより必要とされる全てのエキストラな高次ビットに対して符号ビット（ビット（ｍ−１））の値を与えることにより受入れられる。
【００１８】
具体的な構成においては、Ｎビットアドレッシング及びｍビットアドレッシングは共通のアドレス発生回路を共用する。この構成においはて、本拡張アーキテクチュアは符号拡張された形態でのＮビットエンティティとしてｍビットアドレスを発生するとともに格納し且つこれらのエンティティに関するアドレス計算の結果が符号拡張された形態であることを必要とすることにより、ｍビットアーキテクチュアのアドレッシングをサポートしている。
【００１９】
拡大された仮想アドレス空間に対するサポートは、部分的には、データアドレス加算器と、ブランチ（分岐）加算器と、プログラムカウンタ（ＰＣ）を包含する仮想アドレスデータ経路をＮビットへ広げることにより与えられている。一実施形態においては、Ｎビット仮想空間が、高次仮想アドレスビットにより区別された多数の領域へ分割されている。例えば、Ｎ＝６４及びｍ＝３２である特定の実施例においては、ＶＡ（６３．．６２）として指定された仮想アドレスビット（６３．．６２）が、アドレス０，２62，２×２62，３×２62で開始する４つの領域を提示している。本拡張アーキテクチュアは最大で２VSIZEバイトの多数の均一な仮想サブスペースを与えており、尚、ＶＳＩＺＥはその構成に依存する。この特定の実施例においては、ＶＳＩＺＥは３６乃至６２の範囲に拘束される。  マシンがユーザモードにあるか、スーパーバイザモードにあるか、またはカーネルモードにあるかに依存して、これらの領域のある部分が使用可能となる。ユーザモードは、アドレス０で開始する２VSIZEバイトのフラットなスペースをアドレスすることが可能である。ＶＡ（６１．．ＶＳＩＺＥ）は、ＴＬＢにより変換されることはなく、且つＶＡ（６３．．ＶＳＩＺＥ）がすべて０でない場合には、アドレスエラーが発生する。スパーバイザモードは、ユーザモード空間、アドレス２62で開始する２VSIZEバイト空間、及び４番目の領域の最上部近傍の２29バイト空間をアドレスすることが可能である。カーネルモードは、第一及び第二領域内の空間、第三領域における多数のマップされていない空間、アドレス３×２62で開始する（２VSIZE−２31）バイト空間、及び第四領域の最上部における２31バイト空間をアドレスすることが可能である。２64バイト空間の最上部及び最下部における２31バイト空間は、互換性空間と呼称される。何故ならば、それらのアドレスは６４ビットに符号拡張された３２ビットアドレスの形態であり、且つ従って、３２ビットアドレッシングに対してのアクセスが可能だからである。
【００２０】
特定の構成においては、従来のア−キテクチュアが有効なユーザアドレス（ＭＳＢ＝０）が２の補数のオーバーフローから発生することを可能としていた。この特別の場合を本拡張アーキテクチュアにおいて取扱うためには、マシンがｍビットプログラム（即ち、従来のアーキテクチュアに対して書かれたもの）で稼動しているか、又はＮビットプログラム（即ち、本拡張アーキテクチュアに対して書かれたもの）で稼動しているかのいずれかを特定するためにマシンのステ−タスレジスタ内にアドレスモードを供給することが必要である。ｍビットユーザモードにおいては、２の補数のオーバーフローが発生する場合にそのアドレスを符号拡張することが必要である。
【００２１】
ｍビットモード用の簡明なアプローチは、Ｎビットの２の補数のオーバーフローの場合における符号拡張出力を保証するために仮想アドレス経路内に符号拡張ハードウェアを設けることである。しかしながら、タイミングの拘束条件がこのような符号拡張に対して不利に作用する場合には、（Ｎ−ｍ）個の最大桁ビットをゼロへ強制させるだけで十分である。従って、一実施例においては、アドレス変換ユニットへの経路内にゼロ化回路が設けられている。この回路は、ｍビットカーネルモード及びＮビットモードにおいて最大桁（Ｎ−ｍ）がビットが不変のまま通過される場合のｍビットユーザモードに対して喚起される。
【００２２】
この符号拡張特性を使用することは、従来のアーキテクチュアをサポートするために不当な量のエキストラなハードウェアを必要とすることなしに、データワード寸法及び仮想アドレス寸法を拡張するためのエレガントな方法を与えている。エラー例外を有するＶＳＩＺＥビットの仮想アドレッシングを使用することは二つの利点を有している。第一に、それは、与えられたプロセサに対してのＴＬＢが既存のＶＳＩＺＥに対して必要な長さであることを必要とするのみで、将来のインプリメーテイション即ち構成のものにおいて仮想アドレス空間を増大させることを可能としている。第二に、その他の目的のためのマップされていない仮想アドレスビットの使用は禁止されているので、あるＶＳＩＺＥを有するプロセサに対して書かれたプログラムがより大きなＶＳＩＺＥを有する後のプロセサで稼動するということである。
【発明を実施するための最良の形態】
【００２３】
序論及び定義
本発明は、一層大きなデータワード寸法及び一層大きな仮想アドレス空間のいずれか一方又は両方により特徴付けられる新たなアアーキテクチュアに対して既存のアーキテクチュアを拡張する技術を提供している。
【００２４】
以下に説明する特定の従来の３２ビットアーキテクチュアはＲＩＳＣ（減少命令組コンピュータ）アーキテクチュアであり、それはカリフォルニア州サニーベルのミップスコンピュータシステムズ，インコーポレイテッドにより製造されているＲ２０００，Ｒ３０００，Ｒ６０００として知られているＲＩＳＣプロセサ上で実現されたＲＩＳＣアーキテクチュアである。このアーキテクチュアに関する包括的な説明は、Ｇｅｒｒｙ  Ｋａｎｅ著「ミップスＲＩＳＣアーキテクチュア（ＭＩＰＳ  ＲＩＳＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ）」、プレンテスホール出版社１９８８年（ライブラリ・オブ・コングレスＮｏ．８８−０６０２９０）に記載されている。６４ビット拡張は、多数の新たな６４ビット命令を与えるが、実質的に全ての従来の３２ビット命令を包含している。
【００２５】
技術用語の点について説明すると、「ダブルワード（二重ワード）」及び「ハーフワード（半ワード）」という用語は、通常、６４ビットエンティティ及び１６ビットエンティティをそれぞれ意味している。「ワード（ｗｏｒｄ）」という用語は、時折概括的に使用され且つ時折３２ビットエンティティのことを意味する。ビットは、通常、ビット（０）が最小桁（最も右側）ビットとして番号付けがなされる。一つのワード又はハーフワード内のバイトはビッグエンディアン（ｂｉｇ−ｅｎｄｉａｎ）（バイト０）最も左側）又はリトルエンディアン（ｌｉｔｔｌｅ−ｅｎｄｉａｎ）（バイト０）最も右側）系で順番付けさせることが可能である。
【００２６】
「符号拡張（ｓｉｇｎ−ｅｘｔｅｎｓｉｏｎ）」という用語は、データエンティティがそれが格納される容器の寸法よりも小さい場合に実施される動作乃至は演算のことを意味する。このような場合に、最大桁ビット（即ち、符号ビット）は、左側の空きビット位置内において繰り返される。例えば、６４ビット容器内に格納されるべき３２ビットエンティティの符号拡張は、６４ビット容器のビット位置は（３１．．０）にその３２ビットエンティティを格納し且つその容器のビット位置（６３．．３２）の全ての中にその３２ビットエンティティのビット（３１）の値を格納することを必要とする。
【００２７】
「ゼロ拡張（ｚｅｒｏ−ｅｘｔｅｎｓｉｏｎ）」という用語は、容器よりも小さなデータエンティティの左側のビット位置を充填するために０を使用する場合の動作乃至は演算のことを意味する。「拡張（ｅｘｔｅｎｓｉｏｎ）」という用語は、場合によって（例えば、特定の命令の定義に依存して）、符号拡張か又はゼロ拡張のいずれかを意味するために使用される。
【００２８】
「真の６４ビットエンティティ」という用語は、６４ビットエンティティのデータ内容が３２ビットを越えたものである場合、即ち６４ビットへ符号拡張された３２ビット又はそれ以下のエンティティではない場合の６４ビットエンティティのことを意味するために時折使用される。
【００２９】
「２の補数オーバーフロー」という用語は、二つの最大桁ビットからのキャリーアウト（ｃａｒｒｙｏｕｔ）が異なる場合の状態を意味している。このことは、二つの正の数、又は二つの負の数の加算が許容可能な範囲外の結果を発生する場合に発生する。６４ビットの数の場合には、その範囲は−２63乃至（２63−１）である。ビット（６３）からのキャリーアウトが発生しないオーバーフローは、例えば、（２63−１）を１に加算しようとする場合に発生する。正しい結果は２63であるが、計算された結果は−２63である。オーバーフローなしのキャリーアウトは、例えば、−１（それは、２の補数２進形態において６４個の位置である）を１に加算する場合に発生する。正しい結果は０であるが、計算結果はビット（６３）からのキャリーアウトを有する０である。
【００３０】
「３２ビットオーバーフロー」又は「３２ビット２の補数オーバーフロー」という用語は、ビット（３１）及びビット（３０）からのキャリーアウトが異なる場合の状態を意味している。これは、二つの文脈において発生する。３２ビットエンティティを加算する文脈においては、それは、上述したものと同一の意味及び効果を有している。各々が６４ビットに符号拡張されている２個の３２ビットエンティティを加算する文脈においては、このようなオーバーフローの結果は、ビット（３１）と異なるビット（３２）を持った６４ビットエンティティであり、即ちもはや符号拡張形態にない６４ビットエンティティである。
【００３１】
このオーバーフローと符号拡張との間の関係は、８ビットエンティティを１６ビットへ符号拡張するより簡単な文脈において説明する。最初に、符号拡張したエンティティを加算した結果を符号拡張する場合、例えば１６進数７Ｆ及び８０の和の場合について検討する。８ビットエンティティとして、その和はＦＦである。これらの符号拡張したものの和、即ち００７ＦとＦＦ８０の和はＦＦＦＦであり、それは和ＦＦの符号拡張版である。次に、符号拡張したエンティティを加算した結果が符号拡張したものでない場合、例えば７Ｆと０１の和の場合について検討する。８ビットエンティティとして、その和は８０である。それは２の補数オーバーフローを表わしている。これらの符号拡張したものの和、即ち００７Ｆと０００１の和は００８０である。しかしながら、その結果は符号拡張したエンティティではない。何故ならば、適切な符号拡張したエンティティはＦＦ８０だからである。
【００３２】
システム概観
図１は、単一チッププロセサ１０のブロック図である。以下に指摘した２，３の例外を除いて、本システムの概略的な説明は、従来のプロセサ及び本発明の拡張アーキテクチュアを組込んだ開発中のプロセサに適用される。このハイレベルにおける主要な差異は、従来のプロセサが、３２ビットワード寸法及び仮想アドレスにより特徴付けられており、一方本拡張アーキテクチュアは６４ビットワード寸法及び最大で６４ビットまでの仮想アドレスにより特性付けられている点である。以下に説明する機能的構成及びパイプラインはＲ２０００プロセサに対応している。
【００３３】
プロセサ１０は、６個の同期された機能的ユニットを有しており、即ち、マスターパイプライン制御ユニット（ＭＰＣ）１２と、実行ユニット（ＥＵ）１５と、アドレスユニット（ＡＵ）１７と、トランスレーション（変換）ルックアサイドバッファ（ＴＬＢ）２０とシステムコプロセサ２２と、外部インタフェース制御器（ＥＩＣ）２５とを有している。これらの機能ユニットは、データ／命令バス３０、仮想アドレスバス３２、物理アドレスバス３３を包含する多数の内部バスを介して互いに通信する。オフチップの通信はデータ、アドレス及びタグバス３５を介して行なわれる。
【００３４】
命令は、５段パイプラインで、サイクル当たり１個の命令のピークレートで発生される。ＭＰＣ１２は、データ／命令バス３０からラッチされた命令フィールドをデコードするための命令デコード回路３７を有している。命令をデコードすると、該デコードＭＰＣは適宜の制御信号をその他の機能ユニットへ供給する。それは、更に、何らかの異常な条件が発生するとパイプラインを制御する欠陥処理論理３８を有している。例えば、キャッシュミスが発生する場合は、ＭＰＣがパイプラインをストール即ち停止させる。例えばアドレス変換などのような別の動作が干渉なしで完了することが出来ない場合には、ＭＰＣがパイプラインをシャットダウンし且つオペレーティングシステムへ制御を転送させる。ＭＰＣは、更に、同時的な例外を直列化させ且つ例外サービスの後に実行が精密に再開することが可能であることを確保する。
【００３５】
ＥＵ１５について以下に詳細に説明する。この初期的な説明のためには、該ＥＵが、多数の汎用レジスタ、論理、シフト及び加算演算を実施するためのＡＬＵ４５、乗算／除算ユニット４７を包含するレジスタファイル４２を有している点を指摘するだけで十分である。レジスタファイル４２は３２個のレジスタを有しており、レジスタ（０）は値０へハードワイヤードされている。更に、命令を乗算及び除算するために使用される特別レジスタＨＩ及びＬＯが存在している。従来のアーキテクチュア及びハードウェア構成においては、レジスタ、ＡＬＵ及び実行ユニット内のデータ経路は３２ビット幅であり、本拡張アーキテクチュアにおいては、それらは６４ビット幅である。
【００３６】
該ＥＵは、すべてのサイクルにおいて該レジスタから２個のソースオペランドを設置する。該オペランドは、ＡＬＵへ送給されるか、又はＡＵ１７又はＥＩＣ２５へ送給される。同時的に、ＥＵは、ＡＬＵ，ＡＵ，又はメモリからの一つの結果を該レジスタ内へ書き戻す。バイパス動作は、例えその結果がレジスタファイル内に書き込まれなかった場合であっても、ＡＬＵ又はメモリ参照が、そのソースオペランドを前の動作から取ることを可能としている。乗算／除算セクション４７は、本プロセサの残部から自律的に動作し従って、それはその他のＡＬＵ動作と並列的に動作することが可能である。
【００３７】
ＡＵ１７について以下に詳細に説明する。この初期的な説明に当たっては、ＡＵが、プログラムカウンタ（ＰＣ）５０を有しておりかつレジスタファイル４２をＥＵ１５と共用している点を指摘するだけで十分である。従来のアーキテクチュア及びハードウエア構成においては、ＡＵ内のＰＣおよびデータ経路は３２ビット幅であるが、本拡張アーキテクチュア及びハードウエア構成においては、それらは６４ビット幅である。本拡張アーキテクチュア及びハードウエア構成においては、ＰＣ及びデータ経路は６４ビット幅である。ＡＵは、サイクル当たり２個のクロックフェーズの各々の上で一つの命令又はデータ仮想アドレスを発生する。それは、現在のＰＣから、ＰＣからのブランチ（分岐）オフセットから、又はＥＵから直接来るジャンプアドレスから命令アドレスを発生する。サブルーチンのコールで、ＡＵは更に、ＰＣをリターンリンクとしてＥＵへパスする。ＡＵは、ＥＵによって供給される命令オフセット及びベースレジスタからデータアドレスを発生する。
【００３８】
ＴＬＢ２０は完全に連想的であり、且つ物理アドレスに対するマッピングのために、交互のクロックフェーズで命令及びデータ仮想アドレスを受取る。各変換は、仮想アドレスを現在の処理識別子と結合させる。従って、ＴＬＢは、プロセサ間でのコンテックス（文脈）スイッチでクリアさせる必要はない。システムコプロセサ２２は、仮想アドレスを物理アドレスへ変換し、且つカーネル状態とユーザ状態との間での変換及び例外を管理する。それは、更に、キャッシュサブシステムを制御し且つ診断制御及びエラー回復機能を提供している。コプロセサ（０）と呼ばれるシステムコプロセサの一つ、及びＴＬＢ２０は共に、メモリ管理ユニットとして呼称することが可能である。このシステムコプロセサは、カーネル／ユーザモード、インタラプトイネーブル、プロセサの診断状態、及び拡張アーキテクチュアにおいては３２ビットモード及びスーパーバイザモードを指示するビットを有するステータスレジスタ５１を包含する多数の特別レジスタを有している。
【００３９】
ＥＩＣ２５は、別体の命令及びデータキャッシュ、メインメモリ及び外部コプロセサとのプロセサインタフェースを管理する。それは、システムの信頼性を助けるために全てのキャッシュ動作に関してのデータ及びアドレス−タグパリティを発生し、且つテストする。ＥＩＣは、更に、外部インタラプト及び内部ソフトウェアインタラプトを監視する。
【００４０】
従来のアーキテクチャ−命令組概観
全てのプロセサ命令は一つの３２ビットワードから構成されている。表１は三つのプロセサ命令タイプ（即値、ジャンプ、レジスタ）及びコプロセサ命令に対する命令フォーマットを示している。即値タイプ命令は、ロード、ストア、ＡＬＵ即値、及びブランチ（分岐）命令を包含している。ジャンプタイプ命令は直接ジャンプ命令を包含している。レジスタタイプ命令は、ＡＬＵ３オペランド（加算、減算、セット及び論理）、シフト、乗算／除算、間接ジャンプ、及び例外命令を包含している。
【００４１】
即値命令は、二つのレジスタ及び１６ビット即値フィールドを特定する。ロード及びストア命令の場合には、該レジスタはベースレジスタ及び発信元（ソース）／宛て先レジスタであり、且つ即値フィールドは符号拡張され且つベースレジスタの内容に加算されるアドレス変位（オフセット）を包含している。その結果得られる仮想アドレスが変換され、且つアドレスされたメモリ位置と発信元／宛て先レジスタとの間でデータが転送される。計算的（ＡＬＵ即値）命令の場合には、即値フィールドが拡張され、発信元（ソース）レジスタの内容と結合され、且つその結果が宛て先レジスタ内にストア即ち格納される。ブランチ即ち分岐命令の場合には、即値フィールドが符号拡張され且つＰＣに加算されてターゲットアドレスを形成する。
【００４２】
レジスタ命令は、最大で３個のレジスタ及び１個の数値フィールドを特定する。加算、減算、ＡＮＤ、ＯＲ、ＸＯＲ、ＮＯＲ命令の場合には、二つの発信元レジスタが結合され且つその結果が宛て先レジスタ内にストアされる。セット・オン・レス・ザン（ｓｅｔ−ｏｎ−ｌｅｓｓ−ｔｈａｎ）命令の場合には、二つの発信元レジスタが比較され、且つ相対的な値に依存して、宛て先レジスタが１又は０の値にセットされる。シフト命令の場合には、一方の発信元即ち供給元（ソース）レジスタの内容が発信元レジスタの内容の低次ビットにより定義される数だけ又は特定された数だけシフトされ、符号拡張されるか又はゼロ拡張され、且つ宛て先レジスタ内にストア即ち格納される。乗算命令の場合には、二つのソース即ち発信元レジスタの内容が乗算され且つその二重結果がＬＯ及びＨＩ特別レジスタ内に格納される。除算即ち割算命令の場合には、一つのソース即ち発信元レジスタの内容が、他のレジスタの内容で除算即ち割算され、且つその商及び余りがＬＯレジスタ及びＨＩレジスタ内に格納される。ＬＯレジスタ及びＨＩレジスタは、更に、ムーブ（ｍｏｖｅ）即ち移動命令により書込み及び読取りを行なうことが可能である。
【００４３】
命令の多く（ロード、セット・オン・レス・ザン、乗算、除算）は「符号なし」の対応するものを有しており、その場合に、オペランドは２の補数の整数ではなく符号なし整数として取扱われる。加算及び減算命令も「符号なし」の対応するものを有しているが、その用語は異なった意味合いを有している。通常の加算及び減算命令はオーバーフロー（ビット（３０）及びビット（３１）からのキャリーアウトが異なる）でトラップするが、符号なしのものはオーバーフローでトラップすることはない。トラップしたりトラップしなかったりする別々の命令の定義は、オーバーフローを特定する条件コードを使用することに対する選択された代替物を表わしている。
【００４４】
従来の実行ユニット
図２Ａは、Ｒ２０００プロセサに対応するＥＵ１５の従来の実施例における構成及びデータ経路を示したブロック図である。図２は、本発明を理解するために関連する部分のみを示した模式的な概略図である。例えば、この図は、実際には二相クロックを使用したラッチをベースとした構成であるがレジスタをベースとした表示で示されている。更に、ＲＦ、ＡＬＵ、ＭＥＭ、ＷＢステージに対するハードウエアが示されているが、ＩＦステージに対するものは示されていない。理解すべきことであるが、ＭＰＣ１２による命令デコードから得られる制御信号はこの図の中の種々の要素へ伝送される。二三の例外を除いて、これらの制御信号は概略「ＣＴＬ」として示してあり、尚ＣＴＬは異なった場所においては異なった信号を示している。
【００４５】
この実施例においては、レジスタファイル４２、ＡＬＵ４５及びその他の全てのレジスタ及びデータ経路は３２ビット幅である。ＡＬＵ４５は、シフトユニット５２と、論理ユニット５３と、加算器５５と、ＡＬＵマルチプレクサ５７とから構成されるものとして示されている。ＡＬＵと関連して条件分岐回路が設けられており、それは、二つのデータオペランドを比較する比較回路５８と、分岐決定論理６０とを有している。該分岐決定論理は、特定の分岐命令に依存して、その比較の結果、又は該オペランドの一方の符号ビット（ビット（３１））又はその両方に基づいて分岐決定を行ない、且つ制御信号をＡＵ１７へ送給する。ゼロ決定は、レジスタ（０）と比較することにより行なわれる。
【００４６】
マルチプレクサ５７は、シフトユニット、論理ユニット、加算器の出力から選択されたＡＬＵ出力を供給する。シフトユニット５２は、単一のオペランドを受取るが、論理ユニット５３及び加算器５５の各々は二つのオペランドを受取る。その第二オペランドは、レジスタデータであるか、又はオペランドマルチプレクサ６４により選択される如く、拡張回路６３により拡張された即値データである場合がある。
【００４７】
加算器５５は、加算、減算及びセット・オン・レス・ザン命令（後者のものの場合には減算が関与する）を実行する。該加算器は、ビット（３０）及びビット（３１）からの異なったキャリーアウトとして明らかにする３２ビットオーバーフローをモニタする回路を有している。上述した如く、加算及び減算命令の幾つかはこの様なオーバーフローでトラップする。
【００４８】
パイプラインレジスタ６５ａ−ｂ，６７，６８がデータ経路に沿った種々の点に介挿されている。これらのレジスタは、ＭＰＣ１２が、レジスタのそれぞれのクロック入力をディスエーブルさせるために使用されるストール（停止）条件を特定しない限り、全てのサイクルでクロック動作される。バイパスマルチプレクサ７０は、パイプラインレジスタ６５ａ，６７，６８の何れか一つからのオペランドをＡＬＵに供給する。このことは、ＡＬＵが、そのデータがレジスタファイル内にロードされる前に、ロードされたか又は処理されたデータへアクセスすることを可能としている。ＡＬＵは、更に、パイプラインレジスタ６５ｂからオペランドを受取る。
【００４９】
全ての命令は、実行期間中、五つのパイプラインステージの同一のシーケンスに従う。これらのステージは、命令フェッチ（ＩＦ）、レジスタファイル（ＲＦ）からのソースオペランドフェッチ、ＡＬＵ演算又はデータオペランドアドレス発生（ＡＬＵ）、データメモリ参照（ＭＥＭ）、レジスタファイルへの書き戻し（ＷＢ）である。ＩＦサイクル期間中、プロセサは、命令仮想アドレスを命令物理アドレスへ変換し且つそれを命令キャッシュへ送給する。プロセサチップは該命令を受取り且つＲＦサイクル期間中にそれをデコードする。ソースオペランドは、ＡＬＵサイクル期間中に、適宜の演算、論理又はアドレスユニットへ移行する。その命令がメモリ参照を行なう場合には、データキャッシュが、ＭＥＭサイクル期間中に、変換されたデータアドレスを受取り且つＷＢサイクル期間中に、レジスタファイル書込みのためにデータをリターンさせる。ＡＬＵ演算のための書込みは同一のパイプラインステージで行なわれる。パイプラインにおける命令間のバイパスは、分岐及びメモリ参照の待ち時間を一サイクルに維持し且つ引続く命令においてＡＬＵ結果を使用することを可能とする。
【００５０】
ＲＦサイクル期間中、データがレジスタファイル４２から読取られ且つパイプラインレジスタ６５ａ−ｂの一方又は両方の中にクロック入力される。ＡＬＵサイクル期間中、選択されたパイプラインレジスタからのデータがＡＬＵにより処理され、その結果がパイプラインレジスタ６７内にクロック入力される。多数の条件分岐命令がデータエンティティのサイン即ち符号に依存する。このために、バイパスマルチプレクサ出力のビット（３１）（符号ビット）がＡＵ１７と関連する符号ビットテスト論理へ送給される。ＭＥＭサイクル期間中に、パイプラインレジスタ６７の内容又はメモリからのフェッチの結果がパイプラインレジスタ６８内にクロック入力される。ロードマルチプレクサ７２は、命令デコーダからの信号に基づいてソース即ち発信元乃至は供給元を決定する。ＷＢサイクル期間中に、パイプラインレジスタ６８の内容が、レジスタファイルへ送給され且つ適宜のレジスタ内にクロック入力される。
【００５１】
メモリ（典型的には、キャッシュメモリ）からのデータがロード論理７５へ送給され、それは、命令デコーダから信号を受取る。完全な３２ビットワードより少ないものをメモリからロードするロード命令の場合、ロード論理は、特定の命令に依存して、３２ビットへの符号拡張又はゼロ拡張を実施する。その符号拡張の結果は、メモリからのバイト又はハーフワードの最も左側のビットが左側のあいたビット位置内において繰返される。ゼロ拡張の結果は、ロードされたデータエンティティにより充填されなかったビット位置がゼロで書込みが行なわれる。  図２Ｂは３２ビットシフタ５２の拡大したブロック図である。理解される如く、このシフタは、左側シフトに対して０をシフト入力する能力を有しており、且つ論理右シフトに対して０か又は演算右シフトに対して符号ビット（ビット（３１））の何れかをシフトさせるためのマルチプレクサ７６が設けられている。
【００５２】
従来のアーキテクチャ−アドレッシング概観
時折３２ビットアーキテクチャとして呼称される従来のアーキテクチャにおいては、仮想アドレスは３２ビットエンティティである。仮想メモリシステムは、３２ビット仮想アドレス空間で構成されているアドレスをマシンの物理空間へ変換することによりそのマシンの物理メモリ空間の論理的拡大を与えている。物理アドレスにおけるビット数はＰＳＩＺＥとして指定される。Ｒ２０００及びＲ３０００プロセサの場合、ＰＳＩＺＥ＝３２であり且つ仮想アドレスマッピングは４０９６バイト（４ＫＢ）ページを使用している。従って、ＴＬＢを介してのマッピングは、３２ビット仮想アドレスの最大桁２０ビットのみ、即ち仮想ページ番号（ＶＰＮ）のみに影響を与え、オフセットとして呼称される残りの１２ビットは不変のまま通過される。オフセットにおけるビット数はＯＳＩＺＥとして指定される。Ｒ６０００プロセサの場合、ＯＳＩＺＥ＝１４、ＰＳＩＺＥ＝３６であり且つページは１８ビットＶＰＮを有する１６３８４バイト（１６ＫＢ）である。この仮想アドレスはアドレス空間識別子（ＡＳＩＤ）で拡張される。ＡＳＩＤフィールドは、Ｒ２０００及びＲ３０００プロセサの場合６ビットであり、Ｒ６０００プロセサの場合８ビットである。
【００５３】
以下の説明においては、仮想アドレスの与えられたビット（ｉ）又は与えられたビット（ｊ．．ｋ）はＶＡ（ｉ）又はＶＡ（ｊ．．ｋ）として言及される。同様に、物理アドレスにおけるビットはＰＡ（ｉ）又はＰＡ（ｊ．．ｋ）として言及される。ＴＬＢからのビット出力は、ＴＬＢ（ｊ．．ｋ）として言及され、そのビット位置は物理アドレスにおける対応するビット位置を参照している。従って、オフセットビットが変換されない場合には、ＴＬＢ出力ビットは、Ｒ２０００及びＲ３０００プロセサの場合、ＴＬＢ（（ＰＳＩＺＥ−１）．．ＯＳＩＺＥ）又はＴＬＢ（３１．．１２）であり、Ｒ６０００プロセサの場合ＴＬＢ（３５．．１４）である。
【００５４】
３２ビットアーキテクチャをサポートする従来のプロセサ（Ｒ２０００，Ｒ３０００，Ｒ６０００）は、マシンのステータスレジスタ内の一つ又はそれ以上のビットにより決定されて、ユーザモード又はカーネルモードで動作することが可能である。
【００５５】
図３Ａはユーザモード仮想アドレス空間に対するアドレスマップである。ユーザモードで動作するプロセサは、２31バイト（２ＧＢ）の単一で一様のマップされた仮想アドレス空間を与える。この文脈において、「マップされた」という用語は、仮想アドレスがＴＬＢ２０により変換されていることを意味しており、一方「マップされていない」という用語は、そのアドレスがＴＬＢ２０により変換されておらず且つその物理アドレスビットが仮想アドレスから直接的に取られていることを意味している。全ての有効なユーザモード仮想アドレスはビット（３１）＝０を有しており、ビット（３１）＝１を有するアドレスの変換又はこの様なアドレスからのフェッチをしようとする試みはアドレスエラー例外を発生させる。
【００５６】
データアドレスの計算は、ベースレジスタの内容に即値オフセットを加算することを必要とする。有効なユーザモードアドレスでないようなビット（３１）＝１を持ったベースレジスタの内容でスタートすることが可能であり、且つ、負のオフセットを加算することにより、ビット（３１）＝０及び２の補数のオーバーフローを持ったデータアドレスを与えることが可能である。更に、ビット（３１）＝０を持ったベースレジスタの内容でスタートすることも可能であり、且つオフセットを加算することにより、２の補数のオーバーフローを有しビット（３１）＝１を持ったデータアドレスを与えることが可能である。３２ビットアーキテクチャは、何れの場合においてもそのオーバーフローを無視するが、ビット（３１）＝１となる場合には、アドレスエラー例外が発生する。
【００５７】
命令アドレスの計算は、ＰＣの内容に即値オフセット（即ち１）を加算することを必要とする。この場合には、ＰＣは、ビット（３１）＝１を有するアドレスを有することは不可能であり、従って２の補数のオーバーフローで有効なユーザアドレスを形成することは不可能である。
【００５８】
図３Ｂはカーネルモード仮想アドレス空間に対するアドレスマップである。カーネルモードでの動作の場合、四つの別々の仮想アドレス空間が同時的に使用可能であり、仮想アドレスの高次ビットにより区別されている。ＶＡ（３１）＝０の場合、選択された仮想アドレス空間が完全な２ＧＢの現在のユーザアドレス空間をカバーしている。ＶＡ（３１．．２９）＝１００の場合、選択された仮想アドレス空間は２29バイト（０．５ＧＢ）キャッシュされ、マップされていないカーネル物理アドレス空間である。ＶＡ（３１．．２９）＝１０１の場合、選択された仮想アドレス空間は０．５ＧＢのキャッシュされておらず、マップされていないカーネル物理アドレス空間である。ＶＡ（３１．．３０）＝１１の場合、選択された仮想アドレス空間は２30バイト（１ＧＢ）のマップされたカーネル仮想空間である。マップされていないカーネル空間に対する仮想アドレス（ＶＡ（３１．．３０）＝１０を有するアドレス）はＴＬＢを介して通過するものではないが、それらは０−（２29−１）の範囲内の物理アドレスに対し一つのブロックとしてマップされる（制限された意味合いにおいて）。即ち、それらは、ＰＡ（３１．．２９）＝０００を有する物理アドレスを有している。カーネルアドレス動作は、拘束されており、従ってベースアドレスレジスタは結果と同一の空間へポイントせねばならない。
【００５９】
従来のアドレス発生及び変換
図３Ｃは、ＡＵ１７の従来の実施例及びＲ２０００プロセサに対応する関連したアドレス変換回路における構成及びアドレス経路を示したブロック図である。この実施例においては、ＰＣ５０及び全てのその他のレジスタ及びデータ経路は３２ビット幅である。ロード及びストア命令用の仮想データアドレスはデータアドレス加算器７７により計算される。加算器７７は、該レジスタのうちの一つからのベースアドレスを、その命令の中の１６ビット即値フィールドから派生されたオフセットと結合させる。符号拡張回路７８は、そのオフセットが加算器において結合される前に、その１６ビットオフセットを３２ビットへ符号拡張する。その命令がロードであるか又はストアであるかに依存して、そのデータエンティティはアドレスされたメモリ位置から読取られ且つ宛て先レジスタ内にロードされるか、又はソース即ち発信元乃至は供給元のレジスタ内のデータエンティティがアドレスされたメモリ位置内に書込まれる。
【００６０】
ＡＵの命令アドレス部分は、ＰＣ５０及び次のアドレスマルチプレクサ８０を有しており、該マルチプレクサは四つの入力のうちの選択した一つで該ＰＣをロードする。通常のシーケンス動作のために選択された第一の入力は次のシーケンスのアドレスである。これは、ＰＣの内容を受取り且つそれをインクリメントするインクリメンタ８２により与えられる。第二の入力は、ジャンプ命令の場合に選択されるものであり、それはジャンプアドレスである。これは、その命令から供給されるか又はレジスタファイルから供給される。第三の入力は、取られたブランチ即ち分岐を有する分岐命令の場合に選択され、それは分岐加算器８５により与えられる分岐ターゲットアドレスである。該分岐加算器は、ＰＣの内容及び分岐命令内の１６ビット即値フィールドから派生されたオフセットを結合させる。４番目の入力は、エクセプション即ち例外の場合に選択されるものであって、それは例外ベクトルである。これは、その入力端において固定された例外ベクトルを受取る例外マルチプレクサにより供給される。
【００６１】
データアドレス加算器７７及びＰＣ５０からの仮想アドレスは、物理アドレスを発生するアドレス変換回路へ送給される。１２ビットオフセット（ＶＡ（１１．．０））は、全てのアドレスに対してＴＬＢ２０をバイパスし且つＰＡ（１１．．０）を定義する。ＶＡ（３１．．１２）がＴＬＢへ送給され且つＶＡ（２９．．１２）がＴＬＢをバイパスする。一組のマルチプレクサ８３及び８５が制御されて、マップされた空間に対してＴＬＢ（３１．．１２）又はマップされていないカーネル空間に対して先行する三つの０とＶＡ（２８．．１２）を選択する。上述した如く、マップされていないカーネル空間はＶＡ（３１．．３０）＝１０を有するものであり、且つ該マルチプレクサを制御するために使用されるのはこの条件である。
【００６２】
Ｒ２０００及びＲ３０００プロセサにおいては、ＴＬＢ２０は６４個のエントリを有するオンチップＴＬＢと完全に連想しており、そのエントリの全ては拡張された仮想アドレスとのマッチ即ち整合に対して同時的にチェックされる。ＴＬＢエントリは６４ビットエントリとして定義されているが、５０ビットのみがストアされるに過ぎず、即ち２０ビットＶＰＮと、６ビットＡＳＩＤと、２０ビットページフレーム番号（ＰＦＮ）と、そのページがキャッシュされているか否か、そのページがダーティ即ち汚れているか否か、及びそのエントリが有効であるか否かに関してそのページに対しキャッシュアルゴリズムを特定する４個のビットである。Ｒ６０００プロセサにおいては、このＴＬＢは二組の連想型キャッシュ内ＴＬＢである。
【００６３】
拡張アーキテクチャに対する命令組
本拡張アーキテクチャは、レジスタ、ＡＬＵ及びＥＵ内のその他のデータ経路が６４ビット幅であるハードウエアコンフィギュレーション（形態）を採用している。そのインストラクションセット即ち命令組は、従来の（即ち、３２ビット）の全ての命令を有すると共に、ダブルワードを取扱うための多数の６４ビット命令を有している。従って、本拡張アーキテクチャは、従来のアーキテクチャの上位セットである。しかしながら、理解すべきことであるが、３２ビット命令は実際には６４ビットエンティティを処理するが、ある場合には、６４ビットエンティティはその実際のデータ内容が３２ビット以下（ワード、半ワード、及びバイト）であるエンティティの符号拡張又はゼロ拡張したものである。
【００６４】
以下の説明から理解される如く、３２ビット命令の多くは、真の６４ビットエンティティに関して正しく動作し、且つ６４ビットへ符号拡張された３２ビットエンティティに関しても正しく動作する。ＭＰＣ内の命令デコード回路は、その命令が３２ビット命令のうちの一つであるか又はダブルワード命令のうちの一つであるか否かを特定するために十分な情報をＥＵへ供給することが可能である。  本拡張アーキテクチャの重要な特徴は、拡張アーキテクチャをサポートするハードウエア構成が、３２ビット命令のみを有しており且つ３２ビット又はそれより小さなエンティティを処理するプログラムを稼動させることが可能であり且つ３２ビットアーキテクチャをサポートする従来のプロセサにより発生されるものと同一の結果を正確に発生させることが可能である。このことは、３２ビット命令が、３２ビットデータエンティティの６４ビット符号拡張版に関して動作即ち演算を行ない且つ正しい３２ビットの結果の６４ビット符号拡張版の結果を発生させることを必要とすることにより達成されている。以下の説明においては、３２ビット命令のうちのどれが符号拡張エンティティに関して当然に動作即ち演算を行なって符号拡張結果を発生し、且つそのうちのどれが符号拡張エンティティに関して動作即ち演算を行なうが爾後の符号拡張を必要とするかについて説明する。符号拡張エンティティに関して動作する３２ビット命令が当然に符号拡張結果を発生するものではない場合には、エキストラな符号拡張回路が必要とされる。このことは、その命令は、一般的には、真の６４ビットエンティティに関して作用しないものであることを意味している。これらの場合には、その命令組に対して別体の６４ビット（ダブルワード）命令が付加される。
【００６５】
命令は一連のテーブル内にリストされており、その命令の記述及びそのオペコード（即ち、命令コード）、３２ビット命令の場合には、必要とされる場合に、その結果を符号拡張させるか又はそうでない場合には適切に定義された量とするのにどの様なタイプの拡張が必要であるかの表示、及び６４ビット命令の場合には、その命令が拡張アーキテクチャにとって独特のものであることの表示を特定している。テーブル即ち表３Ａ−３Ｄはほとんどの即値命令を示している。上述した如く、即値命令は、オペコード、一対のレジスタ、及びデータであるか又はアドレス計算用のオフセットである即値フィールドを特定する。
【００６６】
表３Ａはロード命令を示している。バイト及び半ワードロード命令（ＬＢ，ＬＢＵ，ＬＨ，ＬＨＵ）は、３２ビットマシンで実行される場合には、３２ビットへ符号拡張又はゼロ拡張された結果を発生する。注意すべきことであるが、符号なしロード命令（ＬＢＵ，ＬＨＵ）は、８又は１６ビットから３２ビットへのゼロ拡張を使用する。従って、６４ビットへのゼロ拡張は符号拡張と等価であり、且つこれらの命令は６４ビットへの符号拡張を有する６４ビットマシンで動作する。同様に、ワードロード命令（ＬＷ）及び特別の非整合型ワードロード命令（ＬＷＬ，ＬＷＲ）はビット（３１）から符号拡張するために６４ビットアーキテクチャで定義されており、従って新しい命令を必要とすることはない。真の６４ビットエンティティに関する動作即ち演算は、４個の新しいダブルワードロード命令及び０で左側のビット（６３．．３２）を充填する符号なしバイト及び半ワードロード命令（ＬＢＵ，ＬＨＵ）と類推的に動作する符号なしワードロード命令（ＬＷＵ）を必要とする。
【００６７】
表３Ｂはストア命令を示している。符号拡張された６４ビットエンティティとしてストアされるバイト、半ワード及びワードの場合、既存の命令は３２ビット及び６４ビット動作に対し同一の動作を行なう。なぜならば、該命令は、少なくとも、６４ビットレジスタの上位３２ビットを無視するからである。新たなダブルワードストア命令（ＳＤ，ＳＤＬ，ＳＤＲ，ＳＣＤ）は６４ビットアーキテクチャのために必要である。
【００６８】
表３ＣはＡＬＵ即値命令を示している。ビット毎の論理即値命令（ＡＮＤＩ，ＯＲＩ，ＸＯＲＩ）は、符号拡張入力オペランドと共に供給される場合に、符号拡張結果を発生する。注意すべきことであるが、１６ビット即値は、レジスタ値と結合される前に、３２ビットアーキテクチャにおいては３２ビットへゼロ拡張され且つ６４ビットアーキテクチャにおいては６４ビットへゼロ拡張される。従って、これらの命令は３２ビット及び６４ビットの両方の動作に対して動作する。
【００６９】
加算命令（ＡＤＤＩ及びＡＤＤＩＵ）は、異なった理由により付加的な６４ビット命令を必要としている。ＡＤＤＩは、３２ビットアーキテクチャにおいては、３２ビットの２の補数のオーバーフローでトラップし、且つ宛て先レジスタ内に結果を書込まないように定義されている。従って、二つの符号拡張エンティティを加算した結果が書込まれると、その結果は符号拡張形態にあり、従ってその結果の符号拡張は必要とされない。しかしながら、６４ビットの２の補数のオーバーフローでトラップする別の６４ビット命令（ＤＡＤＤＩ）が、真の６４ビットエンティティに関する動作に対して必要とされる。なぜならば、３２ビットオーバーフローは関係ないからである。
【００７０】
ＡＤＤＩＵは３２ビットのオーバーフローでトラップすることはなく、従って符号拡張入力に関して動作する場合に符号拡張されない結果を発生することが可能である。従って、その結果の符号拡張が必要とされ、且つ６４ビットエンティティに関する動作即ち演算がその結果を符号拡張することのない新たな命令（ＤＡＤＤＩＵ）を必要とする。
【００７１】
即値ロード（ＬＵＩ）は、メモリロードを行なう場合に符号拡張を必要とする。セット・オン・レス・ザン命令（ＳＬＴＩ及びＳＬＴＩＵ）は１又は０をロードし、その６４ビット版は符号拡張された（且つゼロ拡張された）３２ビット版である。別の符号拡張回路が必要とされることはなく、従って新たな命令が必要とされることはない。
【００７２】
表３Ｄは条件分岐命令を示している。二つのエンティティの同一性をテストする分岐命令（ＢＥＱ，ＢＮＥ，ＢＥＱＬ，ＢＮＥＬ）は６４ビットのビット毎の比較を行ない、従って、符号拡張入力オペランド及び真の６４ビットオペランドに関して同一の態様で動作即ち演算を行なう。従って、新たな命令が必要とされることはない。残りの条件付き分岐命令は符号ビット、即ちビット（６３）をテストするが、符号拡張入力オペランドの場合、これは３２ビット演算即ち動作に対するビット（３１）と同一である。従って、新たな命令は必要とされない。
【００７３】
表４Ａ−４Ｃはレジスタ命令のほとんどを示している。上述した如く、レジスタ命令は最大で３個のレジスタを特定する。表４ＡはＡＬＵ３オペランドレジスタ命令を示しており、二つのレジスタの内容が処理され且つ結果又はその結果を表わす値が３番目のレジスタ内にストアされる。加算及び減算命令（ＡＤＤ，ＡＤＤＵ，ＳＵＢ，ＳＵＢＵ）は、ＡＤＤＩ及びＡＤＤＩＵに関して上述したのと同一の理由により新たな６４ビット命令を必要とする。ＡＤＤ及びＳＵＢは、３２ビットオーバーフローでトラップすべく定義されており、従って６４ビットオーバーフローでトラップするＤＡＤＤ及びＤＳＵＢ命令を必要とする。ＡＤＤＵ及びＳＵＢＵは符号拡張結果を発生すべく保証されておらず、従ってその結果の符号拡張を必要とする。従って、符号拡張のないダブルワード加算及び減算のために新たな命令（ＤＡＤＤＵ及びＤＳＵＢＵ）が必要である。
【００７４】
セット・オン・レス・ザン命令（ＳＬＴ及びＳＬＴＵ）は、３２ビットにおいて０及び１のゼロ拡張値を与え、従って６４ビットにおいて符号拡張版を与える。従って、新たな命令は必要ではない。ビット毎の論理命令（ＡＮＤ，ＯＲ，ＸＯＲ，ＮＯＲ）は、符号拡張入力オペランドが与えられると、当然に、符号拡張結果を発生し、従って新たな命令は必要とはされない。
【００７５】
表４Ｂはシフト命令を示している。符号拡張エンティティをシフトさせることは、通常、符号拡張結果を発生させるものではなく、従って符号拡張回路が必要とされる。符号拡張の前に（何らかのシフトが発生すると仮定して）、ビット（３１）内に０をシフト入力させるために、論理右シフト動作（ＳＲＬ及びＳＲＬＶ）に対する特別の論理も必要とされる。従って、３２ビットを超えるシフトのための命令及び付加的なダブルワードシフト命令が与えられている。
【００７６】
シフトライト演算命令（ＳＲＡ及びＳＲＡＶ）は、左側から符号拡張し、従って符号拡張エンティティ及び真の６４ビットエンティティに対して正しい結果を与える。それにも拘らず、別のダブルワード命令（ＤＳＲＡ及びＤＳＲＡＶ）が与えられている。これは可変シフトのために必要である。なぜならば、ＳＲＡはシフト量を決定するために特定されたレジスタのビット（４．．０）を使用し、一方真の６４ビットエンティティに対するシフト量を特定するためにビット（５．．０）が必要だからである。これは、シフト量がその命令内において５ビットフィールドであるＳＲＡの場合には問題ではない。それにも拘らず、新たな６４ビット命令を定義することが便利である。
【００７７】
表４Ｃは乗算及び除算命令を示している。乗算命令においては、ダブル（二重）結果の低次（下位）ワードがＬＯ特別レジスタ内にロードされ且つそのダブル結果の高次（高位）ワードがＨＩ特別レジスタ内にロードされる。６４ビットのＬＯ及びＨＩレジスタを３２ビットの結果で充填するためには別々の符号拡張が必要とされる。同様に、除算即ち割算命令に関しては、商及び余りがＬＯ及びＨＩ特別レジスタ内にそれぞれロードされ且つ別の符号拡張がこの場合にも必要とされる。従って、別々のダブルワード乗算及び除算命令が必要とされる。特別レジスタと汎用レジスタとの間で内容を転送する命令は、符号拡張したエンティティ及び真の６４ビットエンティティに対して等しく良好に動作し、且つ付加的な命令が必要とされることはない。
【００７８】
表５Ａ及び５Ｂは、直接（即値）及び間接ジャンプ（レジスタ）命令を示している。３２ビットアーキテクチャにおける直接ジャンプ命令においては、２６ビットターゲットアドレスが２ビットシフトレフト即ち左側へシフトされ且つＰＣのビット（３１．．２８）と結合され且つその結果がジャンプされる。拡張アーキテクチャにおいては、その結合はＰＣのビット（６３．．２８）となされる。そのアドレスが符号拡張されたものであると、何ら付加的な命令なしで正しい動作即ち演算が行なわれる。間接ジャンプ、即ちレジスタの内容へのジャンプは、３２ビットアドレスが６４ビットに符号拡張されている場合には、当然に発生する。
【００７９】
表６Ａ及び６Ｂは例外命令を示している。条件分岐命令に関して上述したのと同一の理由により、トラップ命令に対して何ら新たな命令が必要とされることはない。
【００８０】
拡張アーキテクチャに対する実行ユニット
図４は拡張アーキテクチャをサポートする実行ユニットの一実施例の中における構成及びデータ経路を示した概略ブロック図である。図４内の要素は大略６４ビット幅であり且つ図２における要素は３２ビット幅であるが、図２における要素に対応する要素には図４においても同一の参照番号を付してある。図２における如く、関連性のあるパイプラインステージのみを示してある。
【００８１】
命令組によって定義されるアーキテクチャとハードウエア構成との間の区別をすることが重要である。例えば、従来の３２ビットアーキテクチャに関連して上述したハードウエア形態は、内部的に５ステージ（段）パイプラインを使用しており各サイクルが二つのフェーズ（相）に分割されているＲ２０００及びＲ３０００プロセサに関連してのものである。従来のＲ６０００プロセサは幾分異なった５ステージパイプラインを有しており、一方６４ビットアーキテクチャをサポートするために現在開発中のプロセサは８ステージパイプラインを有している。  拡張命令組アーキテクチャをサポートするハードウエアは、Ｒ２０００／Ｒ３０００ハードウエア構成の拡張として表わされている。このことは、拡張アーキテクチャ及びそれをサポートするためのハードウエア形成方法の説明を簡単化させる。しかしながら、理解すべきことであるが、本拡張アーキテクチャをサポートするためのハードウエア形態は従来のプロセサのものと同一のものであることは必要ではない。
【００８２】
上述した拡張アーキテクチャをサポートするために、符号拡張されたエンティティに関する動作即ち演算結果が符号拡張結果を保証することがないデータ経路内にエキストラな拡張回路が挿入されている。このために、拡張回路１２０が、シフトユニット５２とＡＬＵマルチプレクサ５７との間のデータ経路内に挿入されている。この拡張回路は、ある種の３２ビットシフト命令に対してのみ活性化され、その事実は、３２Ｓとして指定された一組の信号を有する制御入力によって概略示される。この３２Ｓ信号は、就中、符号拡張又はゼロ拡張が必要とされるか否かを特定する。
【００８３】
同様に、メモリサブシステムからデータエンティティを供給するロード論理１２５は、この場合には、３２ビットワード及び半ワード及びバイトに対し６４ビットへの符号拡張又はゼロ拡張を与えねばならない。このロード論理は、一般的な制御信号ＣＴＬ及び３２ビットロードに対する拡張を特定する付加的な信号３２Ｌを受取るものとして示されている。このロード論理は、概念的には、３２ビットエンティティを６４ビットへ符号拡張するものとして考えることが可能であり、その場合に、３２ビットエンティティ自身が３２ビット未満のエンティティの符号拡張されたもの又はゼロ拡張されたものである場合がある。
【００８４】
加算器５５は、６４ビットの２の補数のオーバーフローをモニタする回路を有しており、それは、ＤＡＤＤ及びＤＳＵＢ命令に対しトラップを発生する。互換性のために、該加算器は、更に、ＡＤＤ及びＳＵＢ命令に対するトラップを発生する３２ビットオーバーフローもモニタする。このことは、３２ビットオーバーフローでトラップすることがないがその場合に符号拡張を必要とするＡＤＤＵ及びＳＵＢＵ命令に対しても必要である。
【００８５】
従って、結果が符号拡張された形態であるためには、各々が６４ビットに符号拡張されている二つの３２ビットの符号付き整数を結合した結果を符号拡張させることが必要であることが少なくとも時折存在する。ハードウエアに対する直接的な拡張は、加算器５５とＡＬＵマルチプレクサ５７との間に符号拡張回路を設けることである（これは、ちょうど、シフト動作に対し拡張回路１２０を設ける場合に行なわれるものと同じである）。しかしながら、加算はシフト及び論理演算よりも一層時間のかかる動作即ち演算であり、且つ加算器に続いて符号拡張回路を付加することは全体的に性能が劣化することとなる。加算演算を実行する時間はサイクル時間に関して下限を設定する傾向があるので、簡潔的な解決方法は、全ての加算に対して２サイクルを必要とするか、又は全ての動作即ち演算に対してより長いサイクルを必要とするかの何れかである。
【００８６】
３２ビットの２の補数のオーバーフローは比較的稀に発生するものであるから、図４Ａに示した如きハードウエア構成を使用することが可能である。この構成においては、加算器５５からの出力はＡＬＵマルチプレクサ５７及びパイプラインレジスタ６７を介して進行することはなく、その代わりに、別のパイプラインレジスタ１３０を介して進行し且つロードマルチプレクサ７２へ指向される。パイプラインレジスタ１３０の出力もバイパスマルチプレクサ７０の入力端へ送給される（これは、パイプラインレジスタ６７の出力と同様である）。従って、パイプラインレジスタ１３０はパイプラインレジスタ６７の並列的拡張として見ることが可能であり、ほとんどの加算結果はＡＬＵマルチプレクサを介してではなく、直接的にロードマルチプレクサ内に導入される。
【００８７】
しかしながら、３２ビットの２の補数のオーバーフローが符号拡張したオペランドの加算において発生する場合に対処するために、付加的なデータ経路が設けられねばならない。このことは、パイプラインレジスタ１３０の出力端に結合されているが、パイプラインレジスタ１３０からロードマルチプレクサ７２及びバイパスマルチプレクサ７０へのデータ経路の外側にある符号拡張回路１４０により達成される。オーバーフローマルチプレクサ１４５として呼称されるエキストラなマルチプレクサが、ＡＬＵマルチプレクサ５７とパイプラインレジスタ６７との間の経路内に挿入されており、符号拡張回路１４０からの出力を選択することが可能である。
【００８８】
ＡＤＤＵ又はＳＵＢＵ命令で３２ビットオーバーフローが発生すると、ＭＰＣ１２はパイプラインを停止させ且つ信号ＳＥ  ＳＴＡＬＬでオーバーフローマルチプレクサ１４５を制御して、符号拡張回路１４０からの出力を選択する。このことは、図４Ｂに概略的に示されている。この符号拡張された出力は、加算の正しい結果を表わしている。従って、ロードマルチプレクサ７２及びバイパスマルチプレクサ７０には、パイプライン再開始シーケンス期間中にパイプライン内に挿入される正しい結果を供給することが可能である。従って、符号拡張回路１４０は、それが必要とされるオーバーフローの場合においてのみ臨界的なデータ経路内に存在し、オーバーフローが発生することのない６４ビットオペランド又は３２ビット符号拡張オペランドの加算に対しては臨界経路の外側に存在している。
【００８９】
図４Ｃは、６４ビットシフタ５２及びそれと関連する拡張回路１２０の拡大概略ブロック図である。該シフタは、全てのレストシフト即ち左側へのシフトに対して０をシフト入力する能力を有しており、且つ演算ライトシフト（右側へのシフト）に対する符号ビット（ビット（６３））又は論理ライトシフトに対する０の何れかをシフトさせるためのマルチプレクサ１５２が設けられている。３２ビットシフトに対する互換性は、マルチプレクサ１５３及び１５５により与えられている。３２ビット論理ライトシフトの場合、マルチプレクサ１５３は、該シフタの上部セクション内に０をロードし、従って０がビット（３１）からスタートする空とされた位置内にシフト入力される。マルチプレクサ１５５は、その結果のビット（６３．．３２）に対し該シフタの上部セクション又は下部セクションのビット（３１）の３２個のコピーを選択する。このことは、３２ビットレフトシフトに対し符号拡張を与えるために必要である。それは、３２ビットライトシフトに対しては厳格には必ずしも必要ではない。なぜならば、マルチプレクサ１５２及び１５３は、その入力が符号拡張される場合に符号拡張された結果を確保することが可能だからである。
【００９０】
拡張アーキテクチャ用のアドレス動作
本拡張アーキテクチャにおいては、仮想アドレスは６４ビットエンティティである。拡張アーキテクチャのアドレッシング即ちアドレス動作の主要な目的は、従来のアーキテクチャのアドレッシングをサブセットとして維持しながら、拡張されたフラットな（セグメント化されていない）副次的空間を与えることである。このために、従来のアーキテクチャのアドレス空間は符号拡張された形態で転送される。従って、従来のアーキテクチャの３２ビットアドレスは符号拡張された形態で格納され且つ処理される。
【００９１】
拡張アーキテクチャに対するプロセサは、そのマシンのステータスレジスタ内のビットにより決定されて、ユーザモード、スーパーバイザモード、又はカーネルモードで動作することが可能である。そのステータスレジスタは、更に、そのマシンが３２ビットモードであるか又は６４ビットモードであるか否かを特定するビットを有している。３２ビットモードにおいては、アドレスは６４ビット符号拡張エンティティとして格納され且つ処理される。
【００９２】
上述した如く、典型的なアドレス寸法ＰＳＩＺＥはそのプロセサに依存する。本６４ビットアーキテクチャをサポートするためのＲ４０００と呼称される現在開発中のプロセサはＰＳＩＺＥ＝３６を有している。本拡張アーキテクチャは、固定された仮想アドレスにより特性付けられるものではなく、３２−６２ビットの範囲内でプロセサ依存性の仮想アドレス寸法ＶＳＩＺＥを意図するものである。以下に説明する如く。このことは、２VSIZEバイトの数の仮想空間を与える。ＶＳＩＺＥを使用することの実際的な意味は、ＴＬＢがＶＡ（６１．．ＶＳＩＺＥ）を変換する必要性がないということである。従って、ＶＳＩＺＥが妥当性のある予見可能な必要性を反映すべく選択されているということを仮定すると、ＴＬＢは必要なものよりも大きなものであることは必要ではない。ＶＳＩＺＥは、より大きな仮想アドレス空間に対する必要性が発生する場合に、後のプロセサ構成において増加させることが可能であり、且つより大きなＴＬＢの負担を負わねばならないのはこの時だけである。
【００９３】
Ｒ４０００プロセサはＶＳＩＺＥ＝４０を有している。このことは、それが１０２４ＧＢの仮想アドレス空間を与えることを意味しており、そのことは当分の間適切なものと考えられる。互換性の観点から重要な点はユーザプログラムの互換性を維持することである。従って、本発明の拡張アーキテクチャは、３２ビットユーザモードでのアドレッシング互換性を維持することによりユーザプログラムに対する互換性を与えている。しかしながら、カーネルプログラムは同一のアーキテクチャ内であっても、それぞれのプロセサによって互換性を欠如する傾向がある。従って、本拡張アーキテクチャは３２ビットカーネルモードにおける互換性を保証するものではない。
【００９４】
３２ビットユーザモードにおいて互換性を維持するためには、ビット（３１）＝０を持った結果を有するアドレス計算は、３２ビットの２の補数のオーバーフローが発生したとしても、有効なユーザアドレスと考えねばならない。このことは、その結果が符号拡張されていること、又は、この場合において等価なこととして、ビット（６３．．３２）を強制的に０とさせることを必要とする。従って、３２ビットユーザモードにおいては、ビット（６３．．３１）は全て０であり、且つ該アドレスは２ＧＢユーザアドレス空間を参照し、それは拡張されたユーザアドレス空間のサブセットとして表われる。そうでない場合には、アドレス例外が発生する。ステータスレジスタ内に３２ビットモードビットを必要とするのは、従来のアーキテクチャにおいては２の補数のオーバーフローが許可されているという事実である。しかしながら、この３２ビットモードは、ＴＬＢミスの場合にＴＬＢ再充填ベクトルを選択するために使用することが可能であるという点においてそれ自身有用なものである。
【００９５】
３２ビットカーネルモードにおいては、仮想アドレス空間は４ＧＢであり、それは五つの領域に分割されており、該領域は仮想アドレスの３２ビット部分の高次即ち高位ビットにより区別されている。３２ビットモードにおいては、アドレス変換メカニズムへ供給される任意のアドレスが符号拡張形態にあることを仮定する。ＶＡ（３１）＝０である場合には、ＶＡ（６３．．３２）は全て０であり、且つ選択された仮想アドレス空間は完全な２ＧＢの現在のユーザアドレス空間をカバーする。カーネル及びスーパーバイザアドレスはＶＡ（３１）＝１を有しており、従ってＶＡ（６３．．３２）は全て１である。従って、四つの０．５ＧＢ空間は２64バイト空間の局限的上端に存在しており、即ち（２64−２32＋８００００００Ｈ）と（２64−１）との間のアドレスを有している。ＶＡ（３１．．２９）＝１００の場合には、選択された仮想アドレス空間は０．５ＧＢキャッシュのマップされていないカーネル物理アドレス空間である。ＶＡ（３１．．２９）＝１０１の場合には、選択された仮想アドレス空間は０．５ＧＢのキャッシュされておらずマップされていないカーネル物理アドレス空間である。ＶＡ（３１．．２９）＝１１０の場合には、選択された仮想アドレス空間は０．５ＧＢのマップされたスーパーバイザ仮想アドレス空間である。ＶＡ（３１．．２９）＝１１１の場合には、選択された仮想アドレス空間は０．５ＧＢのマップされたカーネル仮想アドレス空間である。これらの０．５ＧＢ空間の最初の二つは、３２ビットプロセサ上での３２ビットアーキテクチャにおける０．５ＧＢ空間に対応している。スーパーバイザ仮想アドレス空間を設けることは、３２ビットアーキテクチャの１ＧＢのマップされたカーネル仮想空間のさらなる区別化を表わしている。
【００９６】
図５Ａは、６４ビットユーザモード仮想アドレス空間に対するアドレスマップを示している。６４ビットユーザモードにおいては、プロセサは、６２≧ＶＳＩＺＥ≧３６として、２VSIZEバイトの単一の一様な仮想アドレス空間を与える。構成されているものよりも大きなアドレスでトラップする限り、異なったプロセサ構成は、異なった仮想アドレス空間寸法を実現することが可能である。ＶＳＩＺＥビットが構成される場合には、全ての有効なユーザモード仮想アドレスはＶＡ（６３．．ＶＳＩＺＥ）全て０を有しており、且つ全て０以外のビットを有するアドレスを参照とする試みはアドレスエラー例外を発生する。これらのビットをその他の使用に対して非合法的なものとすることは、ＶＳＩＺＥに対するより大きな値により特性付けられるその後のプロセサ構成でユーザプログラムが稼動することを保証する。
【００９７】
６４ビットベースレジスタ及び６４ビットへ符号拡張された１６ビットオフセットの加算を必要とする仮想アドレス計算は、ビット（６１．．０）からビット（６３．．６２）内にオーバーフローしてはならない。その仮想アドレスは、独特の仮想アドレスを形成するために、アドレス空間識別子フィールドの内容で拡張される。これらの拡張された仮想アドレスのマッピングにおいて、物理アドレスは１対１である必要はないが、二つの仮想アドレスが同一の物理アドレスへマップすることが許容されている。
【００９８】
図５Ｂは６４ビットスーパーバイザモード仮想アドレス空間に対するアドレスマップを示している。６４ビットスーパーバイザモードにおいては、２VSIZEバイトの二つの仮想アドレス空間及び２29バイト（０．５ＧＢ）空間が存在している。ＶＡ（６３．．６２）＝００の場合には、選択される仮想アドレス空間は現在のユーザアドレス空間の２VSIZEバイトである。ＶＡ（６３．．６２）＝０１の場合には、選択される仮想アドレス空間は、アドレス２62でスタートする現在のスーパーバイザアドレス空間の２VSIZEバイトである。ＶＡ（６３．．６２）＝１１である場合、及びＶＡ（３１．．２９）＝１１０である場合には、該アドレスは（２64−２32＋Ｃ０００００００Ｈ）の開始アドレスを有する０．５ＧＢスーパーバイザアドレス空間を参照する。
【００９９】
図５Ｃは６４ビットカーネルモード仮想アドレス空間に対するアドレスマップを示している。６４ビットカーネルモードにおいては、四つの別々の仮想アドレス空間領域を同時的に使用することが可能であり、それらは仮想アドレスの高次ビット即ちＶＡ（６３．．６２）により区別されている。ＶＡ（６３．．６２）＝００である場合には、選択される仮想アドレス空間は現在のユーザアドレス空間の２VSIZEバイトである。ＶＡ（６３．．６２）＝０１である場合には、選択される仮想アドレスは現在のスーパーバイザアドレス空間の２VSIZEバイトである。ＶＡ（６３．．６２）＝１０である場合には、選択される仮想アドレス空間は、アドレス範囲２×２62乃至（３×２62−１）内に位置されている８個の２PSIZEバイトのマップされていないカーネル物理空間のうちの一つである。特定のアンマップト即ちマップされていない空間は、ＶＡ（６１．．５９）の値に依存し、且つ該空間はアドレス２59バイト離れてスタートする。（２59−２PSIZE）バイトギャップ内のアドレス（全て０でないＶＡ（５８．．ＶＳＩＺＥ）を有するアドレス）はアドレスエラーを発生させる。ＶＡ（６３．．６２）＝１１である場合には、選択される仮想アドレス空間は、ＶＡ（６１．．ＶＳＩＺＥ）が全て０である場合にアドレス３×２62でスタートする（２VSIZE−２31）バイトカーネル仮想アドレス空間か、又はＶＡ（６１．．３１）が全て１である場合の３２ビットカーネルモード空間と互換性のある２ＧＢ領域の何れかである。
【０１００】
従って、理解される如く、３２ビットアドレッシング領域は拡張されたアドレッシングのサブセットである。６４ビットに符号拡張されている３２ビットアドレスは、２64バイト仮想アドレス空間の上部及び下部の２ＧＢ部分へマップする。３２ビットアーキテクチャの仮想アドレッシング及び６４ビットアドレッシングの３２ビットモードは、該アドレスを２の補数の符号付きアドレスとして見ることにより、より近付けた対応付けとさせることが可能である。この様に見る場合には、３２ビット空間は、−２31から、−２31と−１との間のカーネルアドレス及び０と（２31−１）との間のユーザアドレスを有する（２31−１）へ拡張する。同様に、６４ビット空間は、−２63から、０と（２63−１）との間のユーザ及びスーパーバイザアドレスと−２63と−１との間のカーネルアドレスを有する（２63−１）へ拡張する。従って、３２ビットアドレス空間は、−２31と−１との間の３２ビットモードカーネル及びスーパーバイザアドレス及び０と（２31−１）との間の３２ビットモードユーザアドレスを有する６４ビットアドレス空間の中央のサブセットとして考えることが可能である。
【０１０１】
拡張アーキテクチャ用のアドレス発生及び変換
図５Ｄは、ＡＵ１７及びそれと関連しており６４ビットアーキテクチャの拡張アドレッシングをサポートするアドレス変換回路の一実施例における構成及びアドレス経路を示したブロック図である。このデータアドレス発生回路及び命令アドレス発生回路は、種々の要素が６４ビット幅であるという点において従来技術と異なっている。例えば、符号拡張回路７８は、１６ビットオフセットを６４ビットへ拡張させ且つ例外ベクトルは符号拡張された形態で格納される。
【０１０２】
このアドレス変換回路は、サブセットとして３２ビットアドレッシングを維持しながらフラットな（即ち、セグメント化されていない）拡張された仮想アドレス空間を与える部分を包含する６４ビットアドレスを受付けるという点において従来のアーキテクチャと異なっている。従来のアーキテクチャにおける如く、１２ビットオフセットＶＡ（１１．．０）はＴＬＢ２０をバイパスし且つＰＡ（１１．．０）を定義する。
【０１０３】
ＶＡ（６３．．６２）及びＶＡ（（ＶＳＩＺＥ−１）．．１２）はＴＬＢ２０へ送給され、且つＶＡ（６３．．２９）はアドレステスト及び制御論理１７０へ送給される。マルチプレクサ１７２が該経路内に挿入されており且つ３２ビットユーザモードにおいてＶＡ（６３．．３２）に対し０を代入する。高次ビットのゼロ化は、２の補数のオーバーフローとなった有効なユーザアドレス（ＶＡ（３１）＝０）が符号拡張された形態にあることを確保する。
【０１０４】
一組のマルチプレクサ１８０，１８２，１８５が、マップされた空間に対するＴＬＢビット又はマップされていないカーネル空間に対する仮想アドレスビットの何れかを選択することによりＰＡ（（ＰＳＩＺＥ−１）．．１２）を供給する。マップされた空間の場合には、該マルチプレクサはＴＬＢ（（ＰＳＩＺＥ−１）．．１２）を選択し、それはＶＡ（１１．．０）と結合されて物理アドレスを与える。
【０１０５】
上述した如く、マップされていない空間はＶＡ（６３．．６２）＝１０を持った２PSIZEバイト空間及びＶＡ（６３．．３１）全て１及びＶＡ（３０）＝０を持った二つの２29バイト空間を包含している。これらの条件の論理的ＯＲがマルチプレクサ１８０，１８２，１８５を制御するために使用されており、従って、それらは、物理アドレスに対してＴＬＢビットではなくＶＡビットを選択する。特に、ＶＡ（６２）＝１の場合には、互換性非マップ型空間が表示され且つ一組のマルチプレクサ１９０及び１９２によりＶＡ（（ＰＳＩＺＥ−１）．．２９）に対し０が代入されて、結果的に得られる物理アドレスが０と（２29−１）との間であることを確保する。注意すべきことであるが、その空間が完全な２PSIZEバイトであるか又は単に０．５ＧＢであるか否かを決定するためにはマップされていない空間に対してのＶＡ（６２）をテストすることが必要であるに過ぎない。従って、ほとんどエキストラなハードウエアを必要とすることなしに、拡張アドレッシングのサブセットとして３２ビットアドレッシングをサポートすることが可能である。
【０１０６】
Ｒ４０００プロセサに対するＴＬＢは、拡張仮想アドレスとのマッチに対して全てがチェックされる４０個のエントリを有する完全に連想的なオンチップのＴＬＢである。各ＴＬＢエントリは偶数−奇数ページ対をマップする。ページ寸法は、どの仮想アドレスビットがＴＬＢにより無視されるべきであるかを特定するビットマスクによりエントリ毎に制御される。ページ寸法は、４ＫＢ（ＶＡ（１１．．０）がＴＬＢをバイパス）から１６ＭＢ（ＶＡ（１１．．０）がＴＬＢをバイパスし且つＶＡ（２３．．１２）がＴＬＢにより無視される）の間で変化することが可能である。
【０１０７】
表７は、ＶＳＩＺＥ＝４０及びＰＳＩＺＥ＝３６の場合のＲ４０００プロセサに対するＴＬＢフォーマットを示している。公称的なＴＬＢエントリは２５６ビットであり、将来のプロセサ構成に対してＶＳＩＺＥ及びＰＳＩＺＥの拡張の余裕を有している。「−」で示されたフィールドは格納されない。
【０１０８】
図５ＥはＲ４０００プロセサに対するアドレステスト及び制御論理１７０を示した概略ブロック図である。該プロセサが、与えられたモード（ユーザ、スーパーバイザ、カーネル）にある場合に、他のものではなく所定のアドレスにアクセスすることを可能としているのはこの論理である。ＶＡ（３６）及びＶＡ（３５）に対するこの図の中の参照はＶＡ（ＰＳＩＺＥ）及びＶＡ（ＰＳＩＺＥ−１）へ一般化させることが可能であり、一方ＶＡ（４０）及びＶＡ（３９）に対する参照はＶＡ（ＶＳＩＺＥ）及びＶＡ（ＶＳＩＺＥ−１）へ一般化させることが可能である。多数の信号の名称は、ＮＺ又はＡＯとそれに続くビット位置を意味する二つの二桁の番号から構成されている。ＮＺ信号は、それが真である場合に、その範囲内のビットが全て０でないことを意味しており、ＡＯ信号は、それが真である場合に、該ビットが全て１であることを意味している。例えば、ＮＺ３５３２は、ＶＡ（３５．．３２）が全て０でない場合にアサートされ、一方ＡＯ３５３２は、ＶＡ（３５．．３２）が全て１である場合にアサートされる。これらの信号は、仮想アドレスが上述した種々の拘束条件を満足することをテストするために使用される。
【０１０９】
以上詳説した如く、本発明は、著しいハードウエアのオーバーヘッドを必要とすることなしに逆互換性を維持しながらコンピュータアーキテクチャを拡張する有効な技術を提供している。本発明の拡張型仮想アドレッシング技術は、将来のプロセサを実現するに当り成長する余裕を有する十分なアドレス空間を提供している。
【０１１０】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。例えば、上述した説明では、３２ビット整数演算をサブセットとして有する６４ビット整数演算を実行し且つ３２ビットアドレッシングをサブセットとして有する６４ビットアドレッシングを実行するプロセサについて説明しているが、両方の拡張が６４ビットである必要はない。アドレッシングを拡張することなしに整数演算を拡張するか、又はその逆の構成とすることも可能である。更に、３２ビットアドレッシングと６４ビットアドレッシングとが共通のアドレス発生回路を共用するものとして説明したが、単にアドレス変換とエラーチェック回路のみを共用する構成とすることも可能であり、その場合においても顕著な効果を達成することが可能である。
【０１１１】
表１−省略記号
ＡＬＵ      ＡＬＵ動作又はデータオペランドアドレス発生（サイクル）
ＡＳＩＤ    アドレス空間識別子
ＡＵ        アドレスユニット
ＥＩＣ      外部インターフェース制御器
ＥＵ        実行ユニット
ＩＦ        命令フェッチ（サイクル）
ＭＥＭ      データメモリ参照（サイクル）
ＭＰＣ      マスターパイプライン制御ユニット
ＯＳＩＺＥ  仮想アドレス内のオフセット寸法
ＰＡ        物理アドレス
ＰＣ        プログラムカウンタ
ＰＦＮ      ページフレーム番号
ＰＳＩＺＥ  物理アドレス寸法
ＲＦ        レジスタファイルからのソース（供給元）オペランドフェッチ（サ            イクル）
ＲＩＳＣ    減少命令組コンピュータ
ＴＬＢ      変換ルックアサイドバッファ
ＶＡ        仮想アドレス
ＶＰＮ      仮想ページ番号
ＶＳＩＺＥ  仮想アドレス寸法
ＷＢ        レジスタファイルへの書き戻し（サイクル）
表２−命令フォーマット
Ｉ−ｔｙｐｅ（即値）
（ビット） （フィールド）
３１．．２６  オペレーションコード（命令コード）
２５．．２１  ソースレジスタ特定子
２０．．１６  ソース／宛先レジスタ特定子又はサブオペレーションコード（副              命令コード）
１５．．０    即値分岐変位又はアドレス変位
Ｊ−ｔｙｐｅ（ジャンプ）
（ビット） （フィールド）
３１．．２６  オペレーションコード（命令コード）
２５．．０    ターゲット、ジャンプターゲットアドレス
Ｒ−ｔｙｐｅ（レジスタ）
（ビット） （フィールド）
３１．．２６  オペレーションコード（命令コード）
２５．．２１  ソースレジスタ特定子
２０．．１６  ソース／宛先レジスタ特定子又はサブオペレーションコード
１５．．１１  宛先レジスタ特定子
１０．．６    シフト量
５．．０      機能フィールド
コプロセサ
（ビット） （フィールド）
３１．．２６  オペレーションコード（命令コード）
２５．．２１  サブオペレーションコード（副命令コード）
２０．．０    命令の残部の解釈はコプロセサ特定性
表３Ａ−ロード命令
説明 Ｏｐｃｏｄｅ Ｅｘｔ ６４−ｂｉｔ
バイトをロード                ＬＢ            Ｓ
符号無しバイトをロード        ＬＢＵ          Ｚ
半ワードをロード              ＬＨ            Ｓ
符号無し半ワードをロード      ＬＨＵ          Ｚ
ワードをロード                ＬＷ            Ｓ
ワードレフトをロード          ＬＷＬ          Ｓ
ワードライトをロード          ＬＷＲ          Ｓ
リンク済をロード              ＬＬ            Ｓ
ダブルワードをロード          ＬＤ                      ＊
ダブルワードレフトをロード    ＬＤＬ                    ＊
ダブルワードライトをロード    ＬＤＲ                    ＊
リンク済ダブルワードをロード  ＬＬＤ                    ＊
符号無しワードをロード        ＬＷＵ          Ｚ        ＊
表３Ｂ−ストア命令
バイトをストア                ＳＢ
半ワードをストア              ＳＨ
ワードをストア                ＳＷ
ワードレフトをストア          ＳＷＬ
ワードライトをストア          ＳＷＲ
条件付ストア                  ＳＣ
ダブルワードをストア          ＳＤ                      ＊
ダブルワードレフトをストア    ＳＤＬ                    ＊
ダブルワードライトをストア    ＳＤＲ                    ＊
条件付ダブルワードをストア    ＳＣＤ                    ＊
表３Ｃ−ＡＬＵ即値命令
説明 Ｏｐｃｏｄｅ Ｅｘｔ ６４−ｂｉｔ
即値加算                      ＡＤＤＩ
符号無し即値加算              ＡＤＤＩＵ      Ｓ
ダブルワード即値加算          ＤＡＤＤＩ                ＊
ダブルワード符号無し即値加算  ＤＡＤＤＩＵ              ＊
即値レス・ザンでセット        ＳＬＴＩ
符号無し即値レス・ザンセット  ＳＬＴＩＵ
即値加算                      ＡＮＤＩ
即値ＯＲ                      ＯＲＩ
即値排他的ＯＲ                ＸＯＲＩ
上位即値ロード                ＬＵＩ          Ｓ
表３Ｄ−分岐命令
説明 Ｏｐｃｏｄｅ Ｅｘｔ ６４−ｂｉｔ
等しい場合に分岐              ＢＥＱ
等しくない場合に分岐          ＢＮＥ
０以下の場合に分岐            ＢＬＥＺ
０を超える場合に分岐          ＢＧＴＺ
等しい見込の場合に分岐        ＢＥＱＬ
等しい見込でない場合に分岐    ＢＮＥＬ
０以下の見込の場合に分岐      ＢＬＥＺＬ
０を超える見込の場合に分岐    ＢＧＴＺＬ
０未満で分岐                  ＢＬＴＺ†
０以上で分岐                  ＢＧＥＺ†
０未満及びリンクで分岐        ＢＬＴＺＡＬ†
０以上及びリンクで分岐        ＢＧＥＺＡＬ†
０未満見込で分岐              ＢＬＴＺＬ†
０以上見込で分岐              ＢＧＥＺＬ†
０未満及びリンク見込で分岐    ＢＬＴＺＡＬＬ†
０以上及びリンク見込で分岐    ＢＧＥＺＡＬＬ†
†  これらの命令に対するＯｐｃｏｄｅはＲＥＧＩＭＭ。特定したＯｐｃｏｄｅ    （オペコード）は実際にはｓｕｂ−ｏｐｃｏｄｅ（サブオペコード）。
【０１１２】
表４Ａ−ＡＬＵ３オペランドレジスタタイプ命令
説明 Ｆｕｎｃｔｉｏｎ Ｅｘｔ ６４−ｂｉｔ
加算                          ＡＤＤ            Ｓ
加算符号なし                  ＡＤＤＵ          Ｓ
減算                          ＳＵＢ            Ｓ
減算符号なし                  ＳＵＢＵ          Ｓ
ダブルワード加算              ＤＡＤＤ                  ＊
ダブルワード加算符号なし      ＤＡＤＤＵ                ＊
ダブルワード減算              ＤＳＵＢ                  ＊
ダブルワード減算符号なし      ＤＳＵＢＵ                ＊
レスザンでセット              ＳＬＴ
レスザンでセット符号なし      ＳＬＴＵ
Ａｎｄ                        ＡＮＤ
Ｏｒ                          ＯＲ
Ｅｘｃｌｕｓｉｖｅ  Ｏｒ      ＸＯＲ
Ｎｏｒ                        ＮＯＲ
（注）Ｏｐｃｏｄｅ（オペコード）は特別。ＦＵＮＣＴＩＯＮは機能フィールド      内に格納。
【０１１３】
表４Ｃ−乗算／除算命令
説明 Ｆｕｎｃｔｉｏｎ Ｅｘｔ ６４−ｂｉｔ
乗算                          ＭＵＬＴ          Ｓ
乗算符号なし                  ＭＵＬＴＵ        Ｓ
除算                          ＤＩＶ            Ｓ
除算符号なし                  ＤＩＶＵ          Ｓ
ダブルワード乗算              ＤＭＵＬＴ                ＊
ダブルワード乗算符号なし      ＤＭＵＬＴＵ              ＊
ダブルワード除算              ＤＤＩＶ                  ＊
ダブルワード除算符号なし      ＤＤＩＶＵ                ＊
ＨＩから転送                  ＭＦＨＩ
ＨＩへ転送                    ＭＴＨＩ
ＬＯから転送                  ＭＦＬＯ
ＬＯへ転送                    ＭＴＬＯ
（注）Ｏｐｃｏｄｅ（オペコード）は特別。ＦＵＮＣＴＩＯＮは機能フィールド      内に格納。
【０１１４】
表５Ａ−直接ジャンプ命令
説明 Ｏｐｃｏｄｅ
ジャンプ                      Ｊ
ジャンプ及びリンク            ＪＡＬ
表５Ｂ−間接ジャンプ命令
説明 Ｆｕｎｃｔｉｏｎ
レジスタへジャンプ            ＪＲ
ジャンプ及びリンクレジスタ    ＪＡＬＲ
（注）Ｏｐｃｏｄｅ（オペコード）は特別。ＦＵＮＣＴＩＯＮは機能フィールド      内に格納。
【０１１５】
表６Ａ−例外命令
説明 Ｆｕｎｃｔｉｏｎ
システムコール                ＳＹＳＣＡＬＬ
ブレーク                      ＢＲＥＡＫ
大きいか等しい場合にトラップ  ＴＧＥ
大きいか等しい場合にトラップ  ＴＧＥＵ
符号なし
未満の場合にトラップ          ＴＬＴ
未満の場合にトラップ符号なし  ＴＬＴＵ
等しい場合にトラップ          ＴＥＱ
等しくない場合にトラップ      ＴＮＥ
（注）Ｏｐｃｏｄｅ（オペコード）は特別。ＦＵＮＣＴＩＯＮは機能フィールド      内に格納。
【０１１６】
表６Ｂ
Ｓｕｂ−Ｏｐｃｏｄｅ
大きいか等しい場合にトラップ即値  ＴＧＥＩ
大きいか等しい場合にトラップ符号  ＧＥＩＵ
なし即値
未満の場合にトラップ即値          ＴＬＴＩ
未満の場合にトラップ符号なし即値  ＴＬＴＩＵ
等しい場合にトラップ即値          ＴＥＱＩ
等しくない場合にトラップ即値      ＴＮＥＩ
（注）Ｏｐｃｏｄｅ（オペコード）はＲＥＧＩＭＭ。
【０１１７】
表７−ＴＬＢフォーマット
Ｂｉｔｓ Ｆｉｅｌｄ
２５５．．２１７      −
２１６．．２０５      比較マスク
２０４．．１９２      −
１９１．．１９０      領域（００＝ユーザ，０１＝スーパーバイザ，１１＝カ                      ーネル）
１８９．．１６８      −
１６７．．１４１      ＶＰＮ／２
１４０                グローバル（セットされると、整合論理内のＡＳＩＤを                      無視）
１３９．．１３６      −
１３５．．１２８      ＡＳＩＤ
１２７．．９４        −
９３．．７０          ＰＦＮ
６９．．６７          キャッシュアルゴリズム
６６                  ダーティ
６５                  有効
６４                  −
６３．．０            対の第２ページ用のビット（１２７．．６４）に対応
【図面の簡単な説明】
【０１１８】
【図１】従来のアーキテクチャか又は本発明の拡張アーキテクチャの何れかを組込んだプロセサを示した概略ブロック図。
【図２Ａ】従来の実行ユニットを示した概略ブロック図。
【図２Ｂ】従来の実行ユニットおけるシフタを示した拡大概略ブロック図。
【図３Ａ】従来のユーザモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図３Ｂ】従来のカーネルモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図３Ｃ】従来のアドレスユニット及びアドレス変換回路を示した概略ブロック図。
【図４Ａ】拡張アーキテクチャ用の実行ユニットを示した概略ブロック図。
【図４Ｂ】マスターパイプライン制御ユニットの一部を示した概略ブロック図。
【図４Ｃ】拡張アーキテクチャ用の実行ユニットにおけるシフタを示した拡大概略ブロック図。
【図５Ａ】拡張アーキテクチャのユーザモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図５Ｂ】拡張アーキテクチャのスーパーバイザモードの仮想アドレス空間に対するアドレスマップを示した概略図。
【図５Ｃ】拡張アーキテクチャのカーネルモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図５Ｄ】拡張アーキテクチャ用のアドレスユニット及びアドレス変換回路を示した概略ブロック図。
【図５Ｅ】アドレステスト及び制御論理を示した概略ブロック図。
【符号の説明】
【０１１９】
１０  単一チッププロセサ
１２  マスターパイプライン制御
１５  実行ユニット
１７  アドレスユニット
２０  変換ルックアサイドバッファ
２２  システムコプロセサ
２５  外部インターフェース制御器
３０  データ／命令バス
３２  仮想アドレスバス
３５  データ／アドレス／タグバス
【図１】
0003657949.tif 000002
【図２Ａ】
0003657949.tif 000003
【図２Ｂ】
0003657949.tif 000004
【図３Ａ】
0003657949.tif 000005
【図３Ｂ】
0003657949.tif 000006
【図３Ｃ】
0003657949.tif 000007
【図４Ａ】
0003657949.tif 000008
【図４Ｂ】
0003657949.tif 000009
【図４Ｃ】
0003657949.tif 000010
【図５Ａ】
0003657949.tif 000011
【図５Ｂ】
0003657949.tif 000012
【図５Ｃ】
0003657949.tif 000013
【図５Ｄ】
0003657949.tif 000014
【図５Ｅ】
0003657949.tif 000015