JP3554342B2 - 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア - Google Patents
拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア Download PDFInfo
- Publication number
- JP3554342B2 JP3554342B2 JP05285892A JP5285892A JP3554342B2 JP 3554342 B2 JP3554342 B2 JP 3554342B2 JP 05285892 A JP05285892 A JP 05285892A JP 5285892 A JP5285892 A JP 5285892A JP 3554342 B2 JP3554342 B2 JP 3554342B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- shift
- bits
- instructions
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Description
【産業上の利用分野】
本発明は、大略、コンピュータアーキテクチュアに関するものであって、更に詳細には、より大きなワード寸法及びアドレス空間を持つために命令セットアーキテクチュアを拡張する技術に関するものである。
【0002】
【従来の技術】
最大のプログラムは一年毎に約0.5乃至1ビットでそのアドレス空間の必要性を増大させている。まもなく、1970年代に16ビットのアドレッシングが不十分なものとなったように、このようなプログラムに対して32ビットアドレス空間は不十分なものとなる。このような現象の一つの例は、IBM/360上での24ビットアドレッシングが不十分なものであることが判明したために、31ビットのアドレッシングを採用したIBM/370である。
【0003】
コンピュータ製造業者は、新たな命令セット(組)へ移行することにより新たなコンピュータにおいてより大きなアドレス空間へ遷移する傾向がある。新たな命令組へ移行することは、ユーザ及び製造業者の両方にとって潜在的に致命的な結果をもたらすことがある。ユーザの観点からは、このことは、古いマシンに対して書かれたプログラムが新しいマシンでは稼動しないことを意味している。ソフトウェアにかなりの投資をしたユーザは、ソフトウェアを変換するか又は置換するための費用を支払うか又は新しいマシンにおいて組み込まれた種々の進んだものの利点を諦めるかの何れかの不快な決断に迫られる。製造業者の観点からは、このような移行は、ユーザの憤りを買い且つこのような新しいマシンの当初の販売が停滞することとなる蓋然性がある。
【0004】
ある設計者は、命令組を拡張するためにセグメント化と呼ばれる技術を使用している。多数の32ビットアーキテクチュアは、既に、アドレス空間を拡張するためにセグメント化構成を提示している。その例はIBM/370(ESAモード)、IBMパワー及びHPプレシジョン等である。
【0005】
セグメント化は例えばインテル80286マイクロプロセサにおける如く広く使用されているが、それは必ずしも満足のいくものではない。例えばDE−ハネウェルハードウエア上のマルチクス(Multics)システムのような2,3の例外を除いて、セグメント化は非効率的であり且つプログラマが見ることのできるものであることが判明した。満杯のアドレスはマルチワードオブジェクトとなり、そのことはアクセス及び計算を行うために複数個の命令及び/又はサイクルを必要とする。更に、殆どのセグメント化方法は、セグメント寸法よりも大きな単一のデータオブジェクトへのアクセスを可能とするものではないが、そのことはより大きなアドレス空間に対して主要な使用態様の一つである。
【0006】
従来使用されている別の技術は、従来の(例えば、16ビット)アーキテクチュアと新しい(例えば、32ビット)アーキテクチュアの両方を同一のハードウェア上に実現することである。例えば、DEC VAX 11/780は、幾つかの制限が伴うが、PDP−11プログラムを実行することが可能なモードを有していた。この技術は、おもに、マイクロコード化した実行の場合に適用可能なものであり、その場合には、従来のアーキテクチュアは単に付加的なマイクロコードとして実行されるに過ぎない。ハードワイヤード構成の場合には、設計者は、基本的に二つのCPUを使用することが強制されるか又は少なくともより複雑なものを取り扱うことを余儀なくされ、その複雑性が性能に著しく影響を与える場合がある。いずれのアプローチもチップのダイ面積を著しく消費する蓋然性があり、そのことは単一チップで構成する場合に重要な考慮事項である。
【0007】
いずれにしても、コンパチビリティモード即ち互換モードはコストがかかる場合があり、特に、従来のアーキテクチュアと新しいアーキテクチュアとがアドレス寸法を越えた態様で異なる場合にそのことが言える。このことは、互換モードをしばらく持ち運んでいるが後で捨て去るような余分な荷物としている。例えば、VAXファミリの後のバージョンのものはPDP−11エミュレーションをサポートするものではない。
【0008】
【課題を解決するための手段】
本発明は、拡張アーキテクチュアに対するハ−ドウェアが既存のアーキテクチュアをもサポートするような態様で既存のアーキテクチュアを拡張するための効率的な技術を提供している。バックワードコンパチビリティ即ち逆互換は、最少の量の付加的なハードウェアを必要とするに過ぎず且つ動作速度における影響も最少のものである。更に、拡張アーキテクチュアに対するプログラミングモデルは簡単な拡張であり、大量のソフトウェアの再設計を必要とするような過激的な変化ではない。
【0009】
整数演算に対するデータワード寸法が、マシンレジスタ及びデータ経路をmビットからNビットへ拡大させ且つレジスタ内にロードさせる場合にm又はそれ以下のビットのエンティティをNビットへ符号拡張することにより、mビットからNビットへ拡張される。この場合に、「符号拡張(sign−extending)」という用語は、mビットエンティティの最大桁ビット(即ち、符号(サイン)ビット)をNビット容器の(N−m)最大桁ビット位置(そうでない場合には、不定)内に書込むことを意味している。
【0010】
拡張アーキテクチュア命令組の第一サブセットは、従来のアーキクテクチュアからの命令を包含している。これらの命令(即ち、インストラクション)は、mビット命令と呼ばれ、mビット(又はそれ以下)エンティティのNビット符号拡張したものとすることが可能なNビットエンティティで動作するために再定義されている。コンパチビリティ即ち、互換性のために、該mビット命令は、mビットエンティティのNビット符号拡張したもので動作する場合には、正しいmビット結果のNビット符号拡張版であるNビット結果を発生せねばならない。
【0011】
第二サブセットは、従来のアーキテクチュアにおいて定義されていない命令を包含している。これらの命令はNビット命令と呼ばれ、通常mビットエンティティの符号拡張版ではないNビットエンティティで動作する。絶対のNビット命令が必要とされるか否かは、符号拡張エンティティ及び符号拡張されていないエンティティに関しての対応するmビット命令の動作に依存する。
【0012】
例えば論理演算などのようなmビット命令の幾つかは、mビットエンティティのNビット符号拡張版に関して動作する場合には当然に、Nビットへ符号拡張された正しいmビット結果に対応するNビット結果を発生する。したがって、互換性は、これらの命令のさらなる定義を必要とするものではなく、符号拡張されていないNビットエンティティに関して正しく動作する。したがって、これらのmビット命令に対応する別のNビット命令を設けることは必要ではない。
【0013】
例えば幾つかのシフト命令等のようなその他のmビット命令の場合には事情がことなる。これらの命令がmビットエンティティのNビット符号拡張版に関して動作する場合には、そのNビット結果はNビットに符号拡張された正しいmビット結果に対応しない場合がある。符号拡張された結果を当然に保証するものではない命令の場合には、互換性は、これらの命令が符号拡張された結果を保証するように定義されることを必要とする。このことは、符号拡張されていないNビットオペランドに対してこれらの命令が正しい結果を発生しない傾向にあることを意味する。従って、これらのmビット命令に対応する別のNビット命令が必要とされる。
【0014】
加算動作は符号拡張された結果を保証するものではない命令の一つであり、従って結果のmビット部分を符号拡張するためのエキストラな回路を必要とする。しかしながら、加算はサイクル時間に関して下限をセットする傾向がある。従って、すべての加算動作に対して符号拡張を実施することは、より長いサイクル時間を必要とするか、又はその加算が二つのサイクルで実施されることを必要とする。本発明の1側面によれば、加算に対する符号拡張は必要な場合にのみ実施されるものであり、それは、mビットの2の補数のオーバーフローが検知された場合である。パイプライン型の構成の場合には、サイクル当たり一つの命令の場合、このことは、パイプラインをストール即ち停止させ、符号拡張を実施し、且つパイプラインのシーケンスの再開始期間中に正しい値をパイプライン内に挿入することにより達成される。
【0015】
本拡張アーキテクチュアは、ビット(m−1)の上の部分を包含するNビット仮想アドレスフィールドの種々の部分に関してのエラーチェック及びアドレス変換を実施する。従来のアーキテクチュアのmビットアドレスは、アドレス変換及びエラーチェックメカニズムにより必要とされる全てのエキストラな高次ビットに対して符号ビット(ビット(m−1))の値を与えることにより受入れられる。
【0016】
具体的な構成においては、Nビットアドレッシング及びmビットアドレッシングは共通のアドレス発生回路を共用する。この構成においはて、本拡張アーキテクチュアは符号拡張された形態でのNビットエンティティとしてmビットアドレスを発生するとともに格納し且つこれらのエンティティに関するアドレス計算の結果が符号拡張された形態であることを必要とすることにより、mビットアーキテクチュアのアドレッシングをサポートしている。
【0017】
拡大された仮想アドレス空間に対するサポートは、部分的には、データアドレス加算器と、ブランチ(分岐)加算器と、プログラムカウンタ(PC)を包含する仮想アドレスデータ経路をNビットへ広げることにより与えられている。一実施形態においては、Nビット仮想空間が、高次仮想アドレスビットにより区別された多数の領域へ分割されている。例えば、N=64及びm=32である特定の実施例においては、VA(63..62)として指定された仮想アドレスビット(63..62)が、アドレス0,262,2×262,3×262で開始する4つの領域を提示している。本拡張アーキテクチュアは最大で2VSIZE バイトの多数の均一な仮想サブスペースを与えており、尚、VSIZEはその構成に依存する。この特定の実施例においては、VSIZEは36乃至62の範囲に拘束される。
マシンがユーザモードにあるか、スーパーバイザモードにあるか、またはカーネルモードにあるかに依存して、これらの領域のある部分が使用可能となる。ユーザモードは、アドレス0で開始する2VSIZE バイトのフラットなスペースをアドレスすることが可能である。VA(61..VSIZE)は、TLBにより変換されることはなく、且つVA(63..VSIZE)がすべて0でない場合には、アドレスエラーが発生する。スパーバイザモードは、ユーザモード空間、アドレス262で開始する2VSIZE バイト空間、及び4番目の領域の最上部近傍の229バイト空間をアドレスすることが可能である。カーネルモードは、第一及び第二領域内の空間、第三領域における多数のマップされていない空間、アドレス3×262で開始する(2VSIZE −231)バイト空間、及び第四領域の最上部における231バイト空間をアドレスすることが可能である。264バイト空間の最上部及び最下部における231バイト空間は、互換性空間と呼称される。何故ならば、それらのアドレスは64ビットに符号拡張された32ビットアドレスの形態であり、且つ従って、32ビットアドレッシングに対してのアクセスが可能だからである。
【0018】
特定の構成においては、従来のア−キテクチュアが有効なユーザアドレス(MSB=0)が2の補数のオーバーフローから発生することを可能としていた。この特別の場合を本拡張アーキテクチュアにおいて取扱うためには、マシンがmビットプログラム(即ち、従来のアーキテクチュアに対して書かれたもの)で稼動しているか、又はNビットプログラム(即ち、本拡張アーキテクチュアに対して書かれたもの)で稼動しているかのいずれかを特定するためにマシンのステ−タスレジスタ内にアドレスモードを供給することが必要である。mビットユーザモードにおいては、2の補数のオーバーフローが発生する場合にそのアドレスを符号拡張することが必要である。
【0019】
mビットモード用の簡明なアプローチは、Nビットの2の補数のオーバーフローの場合における符号拡張出力を保証するために仮想アドレス経路内に符号拡張ハードウェアを設けることである。しかしながら、タイミングの拘束条件がこのような符号拡張に対して不利に作用する場合には、(N−m)個の最大桁ビットをゼロへ強制させるだけで十分である。従って、一実施例においては、アドレス変換ユニットへの経路内にゼロ化回路が設けられている。この回路は、mビットカーネルモード及びNビットモードにおいて最大桁(N−m)がビットが不変のまま通過される場合のmビットユーザモードに対して喚起される。
【0020】
この符号拡張特性を使用することは、従来のアーキテクチュアをサポートするために不当な量のエキストラなハードウェアを必要とすることなしに、データワード寸法及び仮想アドレス寸法を拡張するためのエレガントな方法を与えている。エラー例外を有するVSIZEビットの仮想アドレッシングを使用することは二つの利点を有している。第一に、それは、与えられたプロセサに対してのTLBが既存のVSIZEに対して必要な長さであることを必要とするのみで、将来のインプリメーテイション即ち構成のものにおいて仮想アドレス空間を増大させることを可能としている。第二に、その他の目的のためのマップされていない仮想アドレスビットの使用は禁止されているので、あるVSIZEを有するプロセサに対して書かれたプログラムがより大きなVSIZEを有する後のプロセサで稼動するということである。
【0021】
【実施例】
序論及び定義
本発明は、一層大きなデータワード寸法及び一層大きな仮想アドレス空間のいずれか一方又は両方により特徴付けられる新たなアアーキテクチュアに対して既存のアーキテクチュアを拡張する技術を提供している。
【0022】
以下に説明する特定の従来の32ビットアーキテクチュアはRISC(減少命令組コンピュータ)アーキテクチュアであり、それはカリフォルニア州サニーベルのミップスコンピュータシステムズ,インコーポレイテッドにより製造されているR2000,R3000,R6000として知られているRISCプロセサ上で実現されたRISCアーキテクチュアである。このアーキテクチュアに関する包括的な説明は、Gerry Kane著「ミップスRISCアーキテクチュア(MIPS RISC Architecture)」、プレンテスホール出版社1988年(ライブラリ・オブ・コングレスNo.88−060290)に記載されている。64ビット拡張は、多数の新たな64ビット命令を与えるが、実質的に全ての従来の32ビット命令を包含している。
【0023】
技術用語の点について説明すると、「ダブルワード(二重ワード)」及び「ハーフワード(半ワード)」という用語は、通常、64ビットエンティティ及び16ビットエンティティをそれぞれ意味している。「ワード(word)」という用語は、時折概括的に使用され且つ時折32ビットエンティティのことを意味する。ビットは、通常、ビット(0)が最小桁(最も右側)ビットとして番号付けがなされる。一つのワード又はハーフワード内のバイトはビッグエンディアン(big−endian)(バイト0)最も左側)又はリトルエンディアン(little−endian)(バイト0)最も右側)系で順番付けさせることが可能である。
【0024】
「符号拡張(sign−extension)」という用語は、データエンティティがそれが格納される容器の寸法よりも小さい場合に実施される動作乃至は演算のことを意味する。このような場合に、最大桁ビット(即ち、符号ビット)は、左側の空きビット位置内において繰り返される。例えば、64ビット容器内に格納されるべき32ビットエンティティの符号拡張は、64ビット容器のビット位置は(31..0)にその32ビットエンティティを格納し且つその容器のビット位置(63..32)の全ての中にその32ビットエンティティのビット(31)の値を格納することを必要とする。
【0025】
「ゼロ拡張(zero−extension)」という用語は、容器よりも小さなデータエンティティの左側のビット位置を充填するために0を使用する場合の動作乃至は演算のことを意味する。「拡張(extension)」という用語は、場合によって(例えば、特定の命令の定義に依存して)、符号拡張か又はゼロ拡張のいずれかを意味するために使用される。
【0026】
「真の64ビットエンティティ」という用語は、64ビットエンティティのデータ内容が32ビットを越えたものである場合、即ち64ビットへ符号拡張された32ビット又はそれ以下のエンティティではない場合の64ビットエンティティのことを意味するために時折使用される。
【0027】
「2の補数オーバーフロー」という用語は、二つの最大桁ビットからのキャリーアウト(carryout)が異なる場合の状態を意味している。このことは、二つの正の数、又は二つの負の数の加算が許容可能な範囲外の結果を発生する場合に発生する。64ビットの数の場合には、その範囲は−263乃至(263−1)である。ビット(63)からのキャリーアウトが発生しないオーバーフローは、例えば、(263−1)を1に加算しようとする場合に発生する。正しい結果は263であるが、計算された結果は−263である。オーバーフローなしのキャリーアウトは、例えば、−1(それは、2の補数2進形態において64個の位置である)を1に加算する場合に発生する。正しい結果は0であるが、計算結果はビット(63)からのキャリーアウトを有する0である。
【0028】
「32ビットオーバーフロー」又は「32ビット2の補数オーバーフロー」という用語は、ビット(31)及びビット(30)からのキャリーアウトが異なる場合の状態を意味している。これは、二つの文脈において発生する。32ビットエンティティを加算する文脈においては、それは、上述したものと同一の意味及び効果を有している。各々が64ビットに符号拡張されている2個の32ビットエンティティを加算する文脈においては、このようなオーバーフローの結果は、ビット(31)と異なるビット(32)を持った64ビットエンティティであり、即ちもはや符号拡張形態にない64ビットエンティティである。
【0029】
このオーバーフローと符号拡張との間の関係は、8ビットエンティティを16ビットへ符号拡張するより簡単な文脈において説明する。最初に、符号拡張したエンティティを加算した結果を符号拡張する場合、例えば16進数7F及び80の和の場合について検討する。8ビットエンティティとして、その和はFFである。これらの符号拡張したものの和、即ち007FとFF80の和はFFFFであり、それは和FFの符号拡張版である。次に、符号拡張したエンティティを加算した結果が符号拡張したものでない場合、例えば7Fと01の和の場合について検討する。8ビットエンティティとして、その和は80である。それは2の補数オーバーフローを表わしている。これらの符号拡張したものの和、即ち007Fと0001の和は0080である。しかしながら、その結果は符号拡張したエンティティではない。何故ならば、適切な符号拡張したエンティティはFF80だからである。
【0030】
システム概観
図1は、単一チッププロセサ10のブロック図である。以下に指摘した2,3の例外を除いて、本システムの概略的な説明は、従来のプロセサ及び本発明の拡張アーキテクチュアを組込んだ開発中のプロセサに適用される。このハイレベルにおける主要な差異は、従来のプロセサが、32ビットワード寸法及び仮想アドレスにより特徴付けられており、一方本拡張アーキテクチュアは64ビットワード寸法及び最大で64ビットまでの仮想アドレスにより特性付けられている点である。以下に説明する機能的構成及びパイプラインはR2000プロセサに対応している。
【0031】
プロセサ10は、6個の同期された機能的ユニットを有しており、即ち、マスターパイプライン制御ユニット(MPC)12と、実行ユニット(EU)15と、アドレスユニット(AU)17と、トランスレーション(変換)ルックアサイドバッファ(TLB)20とシステムコプロセサ22と、外部インタフェース制御器(EIC)25とを有している。これらの機能ユニットは、データ/命令バス30、仮想アドレスバス32、物理アドレスバス33を包含する多数の内部バスを介して互いに通信する。オフチップの通信はデータ、アドレス及びタグバス35を介して行なわれる。
【0032】
命令は、5段パイプラインで、サイクル当たり1個の命令のピークレートで発生される。MPC12は、データ/命令バス30からラッチされた命令フィールドをデコードするための命令デコード回路37を有している。命令をデコードすると、該デコードMPCは適宜の制御信号をその他の機能ユニットへ供給する。それは、更に、何らかの異常な条件が発生するとパイプラインを制御する欠陥処理論理38を有している。例えば、キャッシュミスが発生する場合は、MPCがパイプラインをストール即ち停止させる。例えばアドレス変換などのような別の動作が干渉なしで完了することが出来ない場合には、MPCがパイプラインをシャットダウンし且つオペレーティングシステムへ制御を転送させる。MPCは、更に、同時的な例外を直列化させ且つ例外サービスの後に実行が精密に再開することが可能であることを確保する。
【0033】
EU15について以下に詳細に説明する。この初期的な説明のためには、該EUが、多数の汎用レジスタ、論理、シフト及び加算演算を実施するためのALU45、乗算/除算ユニット47を包含するレジスタファイル42を有している点を指摘するだけで十分である。レジスタファイル42は32個のレジスタを有しており、レジスタ(0)は値0へハードワイヤードされている。更に、命令を乗算及び除算するために使用される特別レジスタHI及びLOが存在している。従来のアーキテクチュア及びハードウェア構成においては、レジスタ、ALU及び実行ユニット内のデータ経路は32ビット幅であり、本拡張アーキテクチュアにおいては、それらは64ビット幅である。
【0034】
該EUは、すべてのサイクルにおいて該レジスタから2個のソースオペランドを設置する。該オペランドは、ALUへ送給されるか、又はAU17又はEIC25へ送給される。同時的に、EUは、ALU,AU,又はメモリからの一つの結果を該レジスタ内へ書き戻す。バイパス動作は、例えその結果がレジスタファイル内に書き込まれなかった場合であっても、ALU又はメモリ参照が、そのソースオペランドを前の動作から取ることを可能としている。乗算/除算セクション47は、本プロセサの残部から自律的に動作し従って、それはその他のALU動作と並列的に動作することが可能である。
【0035】
AU17について以下に詳細に説明する。この初期的な説明に当たっては、AUが、プログラムカウンタ(PC)50を有しておりかつレジスタファイル42をEU15と共用している点を指摘するだけで十分である。従来のアーキテクチュア及びハードウエア構成においては、AU内のPCおよびデータ経路は32ビット幅であるが、本拡張アーキテクチュア及びハードウエア構成においては、それらは64ビット幅である。本拡張アーキテクチュア及びハードウエア構成においては、PC及びデータ経路は64ビット幅である。AUは、サイクル当たり2個のクロックフェーズの各々の上で一つの命令又はデータ仮想アドレスを発生する。それは、現在のPCから、PCからのブランチ(分岐)オフセットから、又はEUから直接来るジャンプアドレスから命令アドレスを発生する。サブルーチンのコールで、AUは更に、PCをリターンリンクとしてEUへパスする。AUは、EUによって供給される命令オフセット及びベースレジスタからデータアドレスを発生する。
【0036】
TLB20は完全に連想的であり、且つ物理アドレスに対するマッピングのために、交互のクロックフェーズで命令及びデータ仮想アドレスを受取る。各変換は、仮想アドレスを現在の処理識別子と結合させる。従って、TLBは、プロセサ間でのコンテックス(文脈)スイッチでクリアさせる必要はない。システムコプロセサ22は、仮想アドレスを物理アドレスへ変換し、且つカーネル状態とユーザ状態との間での変換及び例外を管理する。それは、更に、キャッシュサブシステムを制御し且つ診断制御及びエラー回復機能を提供している。コプロセサ(0)と呼ばれるシステムコプロセサの一つ、及びTLB20は共に、メモリ管理ユニットとして呼称することが可能である。このシステムコプロセサは、カーネル/ユーザモード、インタラプトイネーブル、プロセサの診断状態、及び拡張アーキテクチュアにおいては32ビットモード及びスーパーバイザモードを指示するビットを有するステータスレジスタ51を包含する多数の特別レジスタを有している。
【0037】
EIC25は、別体の命令及びデータキャッシュ、メインメモリ及び外部コプロセサとのプロセサインタフェースを管理する。それは、システムの信頼性を助けるために全てのキャッシュ動作に関してのデータ及びアドレス−タグパリティを発生し、且つテストする。EICは、更に、外部インタラプト及び内部ソフトウェアインタラプトを監視する。
【0038】
従来のアーキテクチャ−命令組概観
全てのプロセサ命令は一つの32ビットワードから構成されている。表1は三つのプロセサ命令タイプ(即値、ジャンプ、レジスタ)及びコプロセサ命令に対する命令フォーマットを示している。即値タイプ命令は、ロード、ストア、ALU即値、及びブランチ(分岐)命令を包含している。ジャンプタイプ命令は直接ジャンプ命令を包含している。レジスタタイプ命令は、ALU3オペランド(加算、減算、セット及び論理)、シフト、乗算/除算、間接ジャンプ、及び例外命令を包含している。
【0039】
即値命令は、二つのレジスタ及び16ビット即値フィールドを特定する。ロード及びストア命令の場合には、該レジスタはベースレジスタ及び発信元(ソース)/宛て先レジスタであり、且つ即値フィールドは符号拡張され且つベースレジスタの内容に加算されるアドレス変位(オフセット)を包含している。その結果得られる仮想アドレスが変換され、且つアドレスされたメモリ位置と発信元/宛て先レジスタとの間でデータが転送される。計算的(ALU即値)命令の場合には、即値フィールドが拡張され、発信元(ソース)レジスタの内容と結合され、且つその結果が宛て先レジスタ内にストア即ち格納される。ブランチ即ち分岐命令の場合には、即値フィールドが符号拡張され且つPCに加算されてターゲットアドレスを形成する。
【0040】
レジスタ命令は、最大で3個のレジスタ及び1個の数値フィールドを特定する。加算、減算、AND、OR、XOR、NOR命令の場合には、二つの発信元レジスタが結合され且つその結果が宛て先レジスタ内にストアされる。セット・オン・レス・ザン(set−on−less−than)命令の場合には、二つの発信元レジスタが比較され、且つ相対的な値に依存して、宛て先レジスタが1又は0の値にセットされる。シフト命令の場合には、一方の発信元即ち供給元(ソース)レジスタの内容が発信元レジスタの内容の低次ビットにより定義される数だけ又は特定された数だけシフトされ、符号拡張されるか又はゼロ拡張され、且つ宛て先レジスタ内にストア即ち格納される。乗算命令の場合には、二つのソース即ち発信元レジスタの内容が乗算され且つその二重結果がLO及びHI特別レジスタ内に格納される。除算即ち割算命令の場合には、一つのソース即ち発信元レジスタの内容が、他のレジスタの内容で除算即ち割算され、且つその商及び余りがLOレジスタ及びHIレジスタ内に格納される。LOレジスタ及びHIレジスタは、更に、ムーブ(move)即ち移動命令により書込み及び読取りを行なうことが可能である。
【0041】
命令の多く(ロード、セット・オン・レス・ザン、乗算、除算)は「符号なし」の対応するものを有しており、その場合に、オペランドは2の補数の整数ではなく符号なし整数として取扱われる。加算及び減算命令も「符号なし」の対応するものを有しているが、その用語は異なった意味合いを有している。通常の加算及び減算命令はオーバーフロー(ビット(30)及びビット(31)からのキャリーアウトが異なる)でトラップするが、符号なしのものはオーバーフローでトラップすることはない。トラップしたりトラップしなかったりする別々の命令の定義は、オーバーフローを特定する条件コードを使用することに対する選択された代替物を表わしている。
【0042】
従来の実行ユニット
図2Aは、R2000プロセサに対応するEU15の従来の実施例における構成及びデータ経路を示したブロック図である。図2は、本発明を理解するために関連する部分のみを示した模式的な概略図である。例えば、この図は、実際には二相クロックを使用したラッチをベースとした構成であるがレジスタをベースとした表示で示されている。更に、RF、ALU、MEM、WBステージに対するハードウエアが示されているが、IFステージに対するものは示されていない。理解すべきことであるが、MPC12による命令デコードから得られる制御信号はこの図の中の種々の要素へ伝送される。二三の例外を除いて、これらの制御信号は概略「CTL」として示してあり、尚CTLは異なった場所においては異なった信号を示している。
【0043】
この実施例においては、レジスタファイル42、ALU45及びその他の全てのレジスタ及びデータ経路は32ビット幅である。ALU45は、シフトユニット52と、論理ユニット53と、加算器55と、ALUマルチプレクサ57とから構成されるものとして示されている。ALUと関連して条件分岐回路が設けられており、それは、二つのデータオペランドを比較する比較回路58と、分岐決定論理60とを有している。該分岐決定論理は、特定の分岐命令に依存して、その比較の結果、又は該オペランドの一方の符号ビット(ビット(31))又はその両方に基づいて分岐決定を行ない、且つ制御信号をAU17へ送給する。ゼロ決定は、レジスタ(0)と比較することにより行なわれる。
【0044】
マルチプレクサ57は、シフトユニット、論理ユニット、加算器の出力から選択されたALU出力を供給する。シフトユニット52は、単一のオペランドを受取るが、論理ユニット53及び加算器55の各々は二つのオペランドを受取る。その第二オペランドは、レジスタデータであるか、又はオペランドマルチプレクサ64により選択される如く、拡張回路63により拡張された即値データである場合がある。
【0045】
加算器55は、加算、減算及びセット・オン・レス・ザン命令(後者のものの場合には減算が関与する)を実行する。該加算器は、ビット(30)及びビット(31)からの異なったキャリーアウトとして明らかにする32ビットオーバーフローをモニタする回路を有している。上述した如く、加算及び減算命令の幾つかはこの様なオーバーフローでトラップする。
【0046】
パイプラインレジスタ65a−b,67,68がデータ経路に沿った種々の点に介挿されている。これらのレジスタは、MPC12が、レジスタのそれぞれのクロック入力をディスエーブルさせるために使用されるストール(停止)条件を特定しない限り、全てのサイクルでクロック動作される。バイパスマルチプレクサ70は、パイプラインレジスタ65a,67,68の何れか一つからのオペランドをALUに供給する。このことは、ALUが、そのデータがレジスタファイル内にロードされる前に、ロードされたか又は処理されたデータへアクセスすることを可能としている。ALUは、更に、パイプラインレジスタ65bからオペランドを受取る。
【0047】
全ての命令は、実行期間中、五つのパイプラインステージの同一のシーケンスに従う。これらのステージは、命令フェッチ(IF)、レジスタファイル(RF)からのソースオペランドフェッチ、ALU演算又はデータオペランドアドレス発生(ALU)、データメモリ参照(MEM)、レジスタファイルへの書き戻し(WB)である。IFサイクル期間中、プロセサは、命令仮想アドレスを命令物理アドレスへ変換し且つそれを命令キャッシュへ送給する。プロセサチップは該命令を受取り且つRFサイクル期間中にそれをデコードする。ソースオペランドは、ALUサイクル期間中に、適宜の演算、論理又はアドレスユニットへ移行する。その命令がメモリ参照を行なう場合には、データキャッシュが、MEMサイクル期間中に、変換されたデータアドレスを受取り且つWBサイクル期間中に、レジスタファイル書込みのためにデータをリターンさせる。ALU演算のための書込みは同一のパイプラインステージで行なわれる。パイプラインにおける命令間のバイパスは、分岐及びメモリ参照の待ち時間を一サイクルに維持し且つ引続く命令においてALU結果を使用することを可能とする。
【0048】
RFサイクル期間中、データがレジスタファイル42から読取られ且つパイプラインレジスタ65a−bの一方又は両方の中にクロック入力される。ALUサイクル期間中、選択されたパイプラインレジスタからのデータがALUにより処理され、その結果がパイプラインレジスタ67内にクロック入力される。多数の条件分岐命令がデータエンティティのサイン即ち符号に依存する。このために、バイパスマルチプレクサ出力のビット(31)(符号ビット)がAU17と関連する符号ビットテスト論理へ送給される。MEMサイクル期間中に、パイプラインレジスタ67の内容又はメモリからのフェッチの結果がパイプラインレジスタ68内にクロック入力される。ロードマルチプレクサ72は、命令デコーダからの信号に基づいてソース即ち発信元乃至は供給元を決定する。WBサイクル期間中に、パイプラインレジスタ68の内容が、レジスタファイルへ送給され且つ適宜のレジスタ内にクロック入力される。
【0049】
メモリ(典型的には、キャッシュメモリ)からのデータがロード論理75へ送給され、それは、命令デコーダから信号を受取る。完全な32ビットワードより少ないものをメモリからロードするロード命令の場合、ロード論理は、特定の命令に依存して、32ビットへの符号拡張又はゼロ拡張を実施する。その符号拡張の結果は、メモリからのバイト又はハーフワードの最も左側のビットが左側のあいたビット位置内において繰返される。ゼロ拡張の結果は、ロードされたデータエンティティにより充填されなかったビット位置がゼロで書込みが行なわれる。図2Bは32ビットシフタ52の拡大したブロック図である。理解される如く、このシフタは、左側シフトに対して0をシフト入力する能力を有しており、且つ論理右シフトに対して0か又は演算右シフトに対して符号ビット(ビット(31))の何れかをシフトさせるためのマルチプレクサ76が設けられている。
【0050】
従来のアーキテクチャ−アドレッシング概観
時折32ビットアーキテクチャとして呼称される従来のアーキテクチャにおいては、仮想アドレスは32ビットエンティティである。仮想メモリシステムは、32ビット仮想アドレス空間で構成されているアドレスをマシンの物理空間へ変換することによりそのマシンの物理メモリ空間の論理的拡大を与えている。物理アドレスにおけるビット数はPSIZEとして指定される。R2000及びR3000プロセサの場合、PSIZE=32であり且つ仮想アドレスマッピングは4096バイト(4KB)ページを使用している。従って、TLBを介してのマッピングは、32ビット仮想アドレスの最大桁20ビットのみ、即ち仮想ページ番号(VPN)のみに影響を与え、オフセットとして呼称される残りの12ビットは不変のまま通過される。オフセットにおけるビット数はOSIZEとして指定される。R6000プロセサの場合、OSIZE=14、PSIZE=36であり且つページは18ビットVPNを有する16384バイト(16KB)である。この仮想アドレスはアドレス空間識別子(ASID)で拡張される。ASIDフィールドは、R2000及びR3000プロセサの場合6ビットであり、R6000プロセサの場合8ビットである。
【0051】
以下の説明においては、仮想アドレスの与えられたビット(i)又は与えられたビット(j..k)はVA(i)又はVA(j..k)として言及される。同様に、物理アドレスにおけるビットはPA(i)又はPA(j..k)として言及される。TLBからのビット出力は、TLB(j..k)として言及され、そのビット位置は物理アドレスにおける対応するビット位置を参照している。従って、オフセットビットが変換されない場合には、TLB出力ビットは、R2000及びR3000プロセサの場合、TLB((PSIZE−1)..OSIZE)又はTLB(31..12)であり、R6000プロセサの場合TLB(35..14)である。
【0052】
32ビットアーキテクチャをサポートする従来のプロセサ(R2000,R3000,R6000)は、マシンのステータスレジスタ内の一つ又はそれ以上のビットにより決定されて、ユーザモード又はカーネルモードで動作することが可能である。
【0053】
図3Aはユーザモード仮想アドレス空間に対するアドレスマップである。ユーザモードで動作するプロセサは、231バイト(2GB)の単一で一様のマップされた仮想アドレス空間を与える。この文脈において、「マップされた」という用語は、仮想アドレスがTLB20により変換されていることを意味しており、一方「マップされていない」という用語は、そのアドレスがTLB20により変換されておらず且つその物理アドレスビットが仮想アドレスから直接的に取られていることを意味している。全ての有効なユーザモード仮想アドレスはビット(31)=0を有しており、ビット(31)=1を有するアドレスの変換又はこの様なアドレスからのフェッチをしようとする試みはアドレスエラー例外を発生させる。
【0054】
データアドレスの計算は、ベースレジスタの内容に即値オフセットを加算することを必要とする。有効なユーザモードアドレスでないようなビット(31)=1を持ったベースレジスタの内容でスタートすることが可能であり、且つ、負のオフセットを加算することにより、ビット(31)=0及び2の補数のオーバーフローを持ったデータアドレスを与えることが可能である。更に、ビット(31)=0を持ったベースレジスタの内容でスタートすることも可能であり、且つオフセットを加算することにより、2の補数のオーバーフローを有しビット(31)=1を持ったデータアドレスを与えることが可能である。32ビットアーキテクチャは、何れの場合においてもそのオーバーフローを無視するが、ビット(31)=1となる場合には、アドレスエラー例外が発生する。
【0055】
命令アドレスの計算は、PCの内容に即値オフセット(即ち1)を加算することを必要とする。この場合には、PCは、ビット(31)=1を有するアドレスを有することは不可能であり、従って2の補数のオーバーフローで有効なユーザアドレスを形成することは不可能である。
【0056】
図3Bはカーネルモード仮想アドレス空間に対するアドレスマップである。カーネルモードでの動作の場合、四つの別々の仮想アドレス空間が同時的に使用可能であり、仮想アドレスの高次ビットにより区別されている。VA(31)=0の場合、選択された仮想アドレス空間が完全な2GBの現在のユーザアドレス空間をカバーしている。VA(31..29)=100の場合、選択された仮想アドレス空間は229バイト(0.5GB)キャッシュされ、マップされていないカーネル物理アドレス空間である。VA(31..29)=101の場合、選択された仮想アドレス空間は0.5GBのキャッシュされておらず、マップされていないカーネル物理アドレス空間である。VA(31..30)=11の場合、選択された仮想アドレス空間は230バイト(1GB)のマップされたカーネル仮想空間である。マップされていないカーネル空間に対する仮想アドレス(VA(31..30)=10を有するアドレス)はTLBを介して通過するものではないが、それらは0−(229−1)の範囲内の物理アドレスに対し一つのブロックとしてマップされる(制限された意味合いにおいて)。即ち、それらは、PA(31..29)=000を有する物理アドレスを有している。カーネルアドレス動作は、拘束されており、従ってベースアドレスレジスタは結果と同一の空間へポイントせねばならない。
【0057】
従来のアドレス発生及び変換
図3Cは、AU17の従来の実施例及びR2000プロセサに対応する関連したアドレス変換回路における構成及びアドレス経路を示したブロック図である。この実施例においては、PC50及び全てのその他のレジスタ及びデータ経路は32ビット幅である。ロード及びストア命令用の仮想データアドレスはデータアドレス加算器77により計算される。加算器77は、該レジスタのうちの一つからのベースアドレスを、その命令の中の16ビット即値フィールドから派生されたオフセットと結合させる。符号拡張回路78は、そのオフセットが加算器において結合される前に、その16ビットオフセットを32ビットへ符号拡張する。その命令がロードであるか又はストアであるかに依存して、そのデータエンティティはアドレスされたメモリ位置から読取られ且つ宛て先レジスタ内にロードされるか、又はソース即ち発信元乃至は供給元のレジスタ内のデータエンティティがアドレスされたメモリ位置内に書込まれる。
【0058】
AUの命令アドレス部分は、PC50及び次のアドレスマルチプレクサ80を有しており、該マルチプレクサは四つの入力のうちの選択した一つで該PCをロードする。通常のシーケンス動作のために選択された第一の入力は次のシーケンスのアドレスである。これは、PCの内容を受取り且つそれをインクリメントするインクリメンタ82により与えられる。第二の入力は、ジャンプ命令の場合に選択されるものであり、それはジャンプアドレスである。これは、その命令から供給されるか又はレジスタファイルから供給される。第三の入力は、取られたブランチ即ち分岐を有する分岐命令の場合に選択され、それは分岐加算器85により与えられる分岐ターゲットアドレスである。該分岐加算器は、PCの内容及び分岐命令内の16ビット即値フィールドから派生されたオフセットを結合させる。4番目の入力は、エクセプション即ち例外の場合に選択されるものであって、それは例外ベクトルである。これは、その入力端において固定された例外ベクトルを受取る例外マルチプレクサにより供給される。
【0059】
データアドレス加算器77及びPC50からの仮想アドレスは、物理アドレスを発生するアドレス変換回路へ送給される。12ビットオフセット(VA(11..0))は、全てのアドレスに対してTLB20をバイパスし且つPA(11..0)を定義する。VA(31..12)がTLBへ送給され且つVA(29..12)がTLBをバイパスする。一組のマルチプレクサ83及び85が制御されて、マップされた空間に対してTLB(31..12)又はマップされていないカーネル空間に対して先行する三つの0とVA(28..12)を選択する。上述した如く、マップされていないカーネル空間はVA(31..30)=10を有するものであり、且つ該マルチプレクサを制御するために使用されるのはこの条件である。
【0060】
R2000及びR3000プロセサにおいては、TLB20は64個のエントリを有するオンチップTLBと完全に連想しており、そのエントリの全ては拡張された仮想アドレスとのマッチ即ち整合に対して同時的にチェックされる。TLBエントリは64ビットエントリとして定義されているが、50ビットのみがストアされるに過ぎず、即ち20ビットVPNと、6ビットASIDと、20ビットページフレーム番号(PFN)と、そのページがキャッシュされているか否か、そのページがダーティ即ち汚れているか否か、及びそのエントリが有効であるか否かに関してそのページに対しキャッシュアルゴリズムを特定する4個のビットである。R6000プロセサにおいては、このTLBは二組の連想型キャッシュ内TLBである。
【0061】
拡張アーキテクチャに対する命令組
本拡張アーキテクチャは、レジスタ、ALU及びEU内のその他のデータ経路が64ビット幅であるハードウエアコンフィギュレーション(形態)を採用している。そのインストラクションセット即ち命令組は、従来の(即ち、32ビット)の全ての命令を有すると共に、ダブルワードを取扱うための多数の64ビット命令を有している。従って、本拡張アーキテクチャは、従来のアーキテクチャの上位セットである。しかしながら、理解すべきことであるが、32ビット命令は実際には64ビットエンティティを処理するが、ある場合には、64ビットエンティティはその実際のデータ内容が32ビット以下(ワード、半ワード、及びバイト)であるエンティティの符号拡張又はゼロ拡張したものである。
【0062】
以下の説明から理解される如く、32ビット命令の多くは、真の64ビットエンティティに関して正しく動作し、且つ64ビットへ符号拡張された32ビットエンティティに関しても正しく動作する。MPC内の命令デコード回路は、その命令が32ビット命令のうちの一つであるか又はダブルワード命令のうちの一つであるか否かを特定するために十分な情報をEUへ供給することが可能である。
本拡張アーキテクチャの重要な特徴は、拡張アーキテクチャをサポートするハードウエア構成が、32ビット命令のみを有しており且つ32ビット又はそれより小さなエンティティを処理するプログラムを稼動させることが可能であり且つ32ビットアーキテクチャをサポートする従来のプロセサにより発生されるものと同一の結果を正確に発生させることが可能である。このことは、32ビット命令が、32ビットデータエンティティの64ビット符号拡張版に関して動作即ち演算を行ない且つ正しい32ビットの結果の64ビット符号拡張版の結果を発生させることを必要とすることにより達成されている。以下の説明においては、32ビット命令のうちのどれが符号拡張エンティティに関して当然に動作即ち演算を行なって符号拡張結果を発生し、且つそのうちのどれが符号拡張エンティティに関して動作即ち演算を行なうが爾後の符号拡張を必要とするかについて説明する。符号拡張エンティティに関して動作する32ビット命令が当然に符号拡張結果を発生するものではない場合には、エキストラな符号拡張回路が必要とされる。このことは、その命令は、一般的には、真の64ビットエンティティに関して作用しないものであることを意味している。これらの場合には、その命令組に対して別体の64ビット(ダブルワード)命令が付加される。
【0063】
命令は一連のテーブル内にリストされており、その命令の記述及びそのオペコード(即ち、命令コード)、32ビット命令の場合には、必要とされる場合に、その結果を符号拡張させるか又はそうでない場合には適切に定義された量とするのにどの様なタイプの拡張が必要であるかの表示、及び64ビット命令の場合には、その命令が拡張アーキテクチャにとって独特のものであることの表示を特定している。テーブル即ち表3A−3Dはほとんどの即値命令を示している。上述した如く、即値命令は、オペコード、一対のレジスタ、及びデータであるか又はアドレス計算用のオフセットである即値フィールドを特定する。
【0064】
表3Aはロード命令を示している。バイト及び半ワードロード命令(LB,LBU,LH,LHU)は、32ビットマシンで実行される場合には、32ビットへ符号拡張又はゼロ拡張された結果を発生する。注意すべきことであるが、符号なしロード命令(LBU,LHU)は、8又は16ビットから32ビットへのゼロ拡張を使用する。従って、64ビットへのゼロ拡張は符号拡張と等価であり、且つこれらの命令は64ビットへの符号拡張を有する64ビットマシンで動作する。同様に、ワードロード命令(LW)及び特別の非整合型ワードロード命令(LWL,LWR)はビット(31)から符号拡張するために64ビットアーキテクチャで定義されており、従って新しい命令を必要とすることはない。真の64ビットエンティティに関する動作即ち演算は、4個の新しいダブルワードロード命令及び0で左側のビット(63..32)を充填する符号なしバイト及び半ワードロード命令(LBU,LHU)と類推的に動作する符号なしワードロード命令(LWU)を必要とする。
【0065】
表3Bはストア命令を示している。符号拡張された64ビットエンティティとしてストアされるバイト、半ワード及びワードの場合、既存の命令は32ビット及び64ビット動作に対し同一の動作を行なう。なぜならば、該命令は、少なくとも、64ビットレジスタの上位32ビットを無視するからである。新たなダブルワードストア命令(SD,SDL,SDR,SCD)は64ビットアーキテクチャのために必要である。
【0066】
表3CはALU即値命令を示している。ビット毎の論理即値命令(ANDI,ORI,XORI)は、符号拡張入力オペランドと共に供給される場合に、符号拡張結果を発生する。注意すべきことであるが、16ビット即値は、レジスタ値と結合される前に、32ビットアーキテクチャにおいては32ビットへゼロ拡張され且つ64ビットアーキテクチャにおいては64ビットへゼロ拡張される。従って、これらの命令は32ビット及び64ビットの両方の動作に対して動作する。
【0067】
加算命令(ADDI及びADDIU)は、異なった理由により付加的な64ビット命令を必要としている。ADDIは、32ビットアーキテクチャにおいては、32ビットの2の補数のオーバーフローでトラップし、且つ宛て先レジスタ内に結果を書込まないように定義されている。従って、二つの符号拡張エンティティを加算した結果が書込まれると、その結果は符号拡張形態にあり、従ってその結果の符号拡張は必要とされない。しかしながら、64ビットの2の補数のオーバーフローでトラップする別の64ビット命令(DADDI)が、真の64ビットエンティティに関する動作に対して必要とされる。なぜならば、32ビットオーバーフローは関係ないからである。
【0068】
ADDIUは32ビットのオーバーフローでトラップすることはなく、従って符号拡張入力に関して動作する場合に符号拡張されない結果を発生することが可能である。従って、その結果の符号拡張が必要とされ、且つ64ビットエンティティに関する動作即ち演算がその結果を符号拡張することのない新たな命令(DADDIU)を必要とする。
【0069】
即値ロード(LUI)は、メモリロードを行なう場合に符号拡張を必要とする。セット・オン・レス・ザン命令(SLTI及びSLTIU)は1又は0をロードし、その64ビット版は符号拡張された(且つゼロ拡張された)32ビット版である。別の符号拡張回路が必要とされることはなく、従って新たな命令が必要とされることはない。
【0070】
表3Dは条件分岐命令を示している。二つのエンティティの同一性をテストする分岐命令(BEQ,BNE,BEQL,BNEL)は64ビットのビット毎の比較を行ない、従って、符号拡張入力オペランド及び真の64ビットオペランドに関して同一の態様で動作即ち演算を行なう。従って、新たな命令が必要とされることはない。残りの条件付き分岐命令は符号ビット、即ちビット(63)をテストするが、符号拡張入力オペランドの場合、これは32ビット演算即ち動作に対するビット(31)と同一である。従って、新たな命令は必要とされない。
【0071】
表4A−4Cはレジスタ命令のほとんどを示している。上述した如く、レジスタ命令は最大で3個のレジスタを特定する。表4AはALU3オペランドレジスタ命令を示しており、二つのレジスタの内容が処理され且つ結果又はその結果を表わす値が3番目のレジスタ内にストアされる。加算及び減算命令(ADD,ADDU,SUB,SUBU)は、ADDI及びADDIUに関して上述したのと同一の理由により新たな64ビット命令を必要とする。ADD及びSUBは、32ビットオーバーフローでトラップすべく定義されており、従って64ビットオーバーフローでトラップするDADD及びDSUB命令を必要とする。ADDU及びSUBUは符号拡張結果を発生すべく保証されておらず、従ってその結果の符号拡張を必要とする。従って、符号拡張のないダブルワード加算及び減算のために新たな命令(DADDU及びDSUBU)が必要である。
【0072】
セット・オン・レス・ザン命令(SLT及びSLTU)は、32ビットにおいて0及び1のゼロ拡張値を与え、従って64ビットにおいて符号拡張版を与える。従って、新たな命令は必要ではない。ビット毎の論理命令(AND,OR,XOR,NOR)は、符号拡張入力オペランドが与えられると、当然に、符号拡張結果を発生し、従って新たな命令は必要とはされない。
【0073】
表4Bはシフト命令を示している。符号拡張エンティティをシフトさせることは、通常、符号拡張結果を発生させるものではなく、従って符号拡張回路が必要とされる。符号拡張の前に(何らかのシフトが発生すると仮定して)、ビット(31)内に0をシフト入力させるために、論理右シフト動作(SRL及びSRLV)に対する特別の論理も必要とされる。従って、32ビットを超えるシフトのための命令及び付加的なダブルワードシフト命令が与えられている。
【0074】
シフトライト演算命令(SRA及びSRAV)は、左側から符号拡張し、従って符号拡張エンティティ及び真の64ビットエンティティに対して正しい結果を与える。それにも拘らず、別のダブルワード命令(DSRA及びDSRAV)が与えられている。これは可変シフトのために必要である。なぜならば、SRAはシフト量を決定するために特定されたレジスタのビット(4..0)を使用し、一方真の64ビットエンティティに対するシフト量を特定するためにビット(5..0)が必要だからである。これは、シフト量がその命令内において5ビットフィールドであるSRAの場合には問題ではない。それにも拘らず、新たな64ビット命令を定義することが便利である。
【0075】
表4Cは乗算及び除算命令を示している。乗算命令においては、ダブル(二重)結果の低次(下位)ワードがLO特別レジスタ内にロードされ且つそのダブル結果の高次(高位)ワードがHI特別レジスタ内にロードされる。64ビットのLO及びHIレジスタを32ビットの結果で充填するためには別々の符号拡張が必要とされる。同様に、除算即ち割算命令に関しては、商及び余りがLO及びHI特別レジスタ内にそれぞれロードされ且つ別の符号拡張がこの場合にも必要とされる。従って、別々のダブルワード乗算及び除算命令が必要とされる。特別レジスタと汎用レジスタとの間で内容を転送する命令は、符号拡張したエンティティ及び真の64ビットエンティティに対して等しく良好に動作し、且つ付加的な命令が必要とされることはない。
【0076】
表5A及び5Bは、直接(即値)及び間接ジャンプ(レジスタ)命令を示している。32ビットアーキテクチャにおける直接ジャンプ命令においては、26ビットターゲットアドレスが2ビットシフトレフト即ち左側へシフトされ且つPCのビット(31..28)と結合され且つその結果がジャンプされる。拡張アーキテクチャにおいては、その結合はPCのビット(63..28)となされる。そのアドレスが符号拡張されたものであると、何ら付加的な命令なしで正しい動作即ち演算が行なわれる。間接ジャンプ、即ちレジスタの内容へのジャンプは、32ビットアドレスが64ビットに符号拡張されている場合には、当然に発生する。
【0077】
表6A及び6Bは例外命令を示している。条件分岐命令に関して上述したのと同一の理由により、トラップ命令に対して何ら新たな命令が必要とされることはない。
【0078】
拡張アーキテクチャに対する実行ユニット
図4は拡張アーキテクチャをサポートする実行ユニットの一実施例の中における構成及びデータ経路を示した概略ブロック図である。図4内の要素は大略64ビット幅であり且つ図2における要素は32ビット幅であるが、図2における要素に対応する要素には図4においても同一の参照番号を付してある。図2における如く、関連性のあるパイプラインステージのみを示してある。
【0079】
命令組によって定義されるアーキテクチャとハードウエア構成との間の区別をすることが重要である。例えば、従来の32ビットアーキテクチャに関連して上述したハードウエア形態は、内部的に5ステージ(段)パイプラインを使用しており各サイクルが二つのフェーズ(相)に分割されているR2000及びR3000プロセサに関連してのものである。従来のR6000プロセサは幾分異なった5ステージパイプラインを有しており、一方64ビットアーキテクチャをサポートするために現在開発中のプロセサは8ステージパイプラインを有している。
拡張命令組アーキテクチャをサポートするハードウエアは、R2000/R3000ハードウエア構成の拡張として表わされている。このことは、拡張アーキテクチャ及びそれをサポートするためのハードウエア形成方法の説明を簡単化させる。しかしながら、理解すべきことであるが、本拡張アーキテクチャをサポートするためのハードウエア形態は従来のプロセサのものと同一のものであることは必要ではない。
【0080】
上述した拡張アーキテクチャをサポートするために、符号拡張されたエンティティに関する動作即ち演算結果が符号拡張結果を保証することがないデータ経路内にエキストラな拡張回路が挿入されている。このために、拡張回路120が、シフトユニット52とALUマルチプレクサ57との間のデータ経路内に挿入されている。この拡張回路は、ある種の32ビットシフト命令に対してのみ活性化され、その事実は、32Sとして指定された一組の信号を有する制御入力によって概略示される。この32S信号は、就中、符号拡張又はゼロ拡張が必要とされるか否かを特定する。
【0081】
同様に、メモリサブシステムからデータエンティティを供給するロード論理125は、この場合には、32ビットワード及び半ワード及びバイトに対し64ビットへの符号拡張又はゼロ拡張を与えねばならない。このロード論理は、一般的な制御信号CTL及び32ビットロードに対する拡張を特定する付加的な信号32Lを受取るものとして示されている。このロード論理は、概念的には、32ビットエンティティを64ビットへ符号拡張するものとして考えることが可能であり、その場合に、32ビットエンティティ自身が32ビット未満のエンティティの符号拡張されたもの又はゼロ拡張されたものである場合がある。
【0082】
加算器55は、64ビットの2の補数のオーバーフローをモニタする回路を有しており、それは、DADD及びDSUB命令に対しトラップを発生する。互換性のために、該加算器は、更に、ADD及びSUB命令に対するトラップを発生する32ビットオーバーフローもモニタする。このことは、32ビットオーバーフローでトラップすることがないがその場合に符号拡張を必要とするADDU及びSUBU命令に対しても必要である。
【0083】
従って、結果が符号拡張された形態であるためには、各々が64ビットに符号拡張されている二つの32ビットの符号付き整数を結合した結果を符号拡張させることが必要であることが少なくとも時折存在する。ハードウエアに対する直接的な拡張は、加算器55とALUマルチプレクサ57との間に符号拡張回路を設けることである(これは、ちょうど、シフト動作に対し拡張回路120を設ける場合に行なわれるものと同じである)。しかしながら、加算はシフト及び論理演算よりも一層時間のかかる動作即ち演算であり、且つ加算器に続いて符号拡張回路を付加することは全体的に性能が劣化することとなる。加算演算を実行する時間はサイクル時間に関して下限を設定する傾向があるので、簡潔的な解決方法は、全ての加算に対して2サイクルを必要とするか、又は全ての動作即ち演算に対してより長いサイクルを必要とするかの何れかである。
【0084】
32ビットの2の補数のオーバーフローは比較的稀に発生するものであるから、図4Aに示した如きハードウエア構成を使用することが可能である。この構成においては、加算器55からの出力はALUマルチプレクサ57及びパイプラインレジスタ67を介して進行することはなく、その代わりに、別のパイプラインレジスタ130を介して進行し且つロードマルチプレクサ72へ指向される。パイプラインレジスタ130の出力もバイパスマルチプレクサ70の入力端へ送給される(これは、パイプラインレジスタ67の出力と同様である)。従って、パイプラインレジスタ130はパイプラインレジスタ67の並列的拡張として見ることが可能であり、ほとんどの加算結果はALUマルチプレクサを介してではなく、直接的にロードマルチプレクサ内に導入される。
【0085】
しかしながら、32ビットの2の補数のオーバーフローが符号拡張したオペランドの加算において発生する場合に対処するために、付加的なデータ経路が設けられねばならない。このことは、パイプラインレジスタ130の出力端に結合されているが、パイプラインレジスタ130からロードマルチプレクサ72及びバイパスマルチプレクサ70へのデータ経路の外側にある符号拡張回路140により達成される。オーバーフローマルチプレクサ145として呼称されるエキストラなマルチプレクサが、ALUマルチプレクサ57とパイプラインレジスタ67との間の経路内に挿入されており、符号拡張回路140からの出力を選択することが可能である。
【0086】
ADDU又はSUBU命令で32ビットオーバーフローが発生すると、MPC12はパイプラインを停止させ且つ信号SE STALLでオーバーフローマルチプレクサ145を制御して、符号拡張回路140からの出力を選択する。このことは、図4Bに概略的に示されている。この符号拡張された出力は、加算の正しい結果を表わしている。従って、ロードマルチプレクサ72及びバイパスマルチプレクサ70には、パイプライン再開始シーケンス期間中にパイプライン内に挿入される正しい結果を供給することが可能である。従って、符号拡張回路140は、それが必要とされるオーバーフローの場合においてのみ臨界的なデータ経路内に存在し、オーバーフローが発生することのない64ビットオペランド又は32ビット符号拡張オペランドの加算に対しては臨界経路の外側に存在している。
【0087】
図4Cは、64ビットシフタ52及びそれと関連する拡張回路120の拡大概略ブロック図である。該シフタは、全てのレストシフト即ち左側へのシフトに対して0をシフト入力する能力を有しており、且つ演算ライトシフト(右側へのシフト)に対する符号ビット(ビット(63))又は論理ライトシフトに対する0の何れかをシフトさせるためのマルチプレクサ152が設けられている。32ビットシフトに対する互換性は、マルチプレクサ153及び155により与えられている。32ビット論理ライトシフトの場合、マルチプレクサ153は、該シフタの上部セクション内に0をロードし、従って0がビット(31)からスタートする空とされた位置内にシフト入力される。マルチプレクサ155は、その結果のビット(63..32)に対し該シフタの上部セクション又は下部セクションのビット(31)の32個のコピーを選択する。このことは、32ビットレフトシフトに対し符号拡張を与えるために必要である。それは、32ビットライトシフトに対しては厳格には必ずしも必要ではない。なぜならば、マルチプレクサ152及び153は、その入力が符号拡張される場合に符号拡張された結果を確保することが可能だからである。
【0088】
拡張アーキテクチャ用のアドレス動作
本拡張アーキテクチャにおいては、仮想アドレスは64ビットエンティティである。拡張アーキテクチャのアドレッシング即ちアドレス動作の主要な目的は、従来のアーキテクチャのアドレッシングをサブセットとして維持しながら、拡張されたフラットな(セグメント化されていない)副次的空間を与えることである。このために、従来のアーキテクチャのアドレス空間は符号拡張された形態で転送される。従って、従来のアーキテクチャの32ビットアドレスは符号拡張された形態で格納され且つ処理される。
【0089】
拡張アーキテクチャに対するプロセサは、そのマシンのステータスレジスタ内のビットにより決定されて、ユーザモード、スーパーバイザモード、又はカーネルモードで動作することが可能である。そのステータスレジスタは、更に、そのマシンが32ビットモードであるか又は64ビットモードであるか否かを特定するビットを有している。32ビットモードにおいては、アドレスは64ビット符号拡張エンティティとして格納され且つ処理される。
【0090】
上述した如く、典型的なアドレス寸法PSIZEはそのプロセサに依存する。本64ビットアーキテクチャをサポートするためのR4000と呼称される現在開発中のプロセサはPSIZE=36を有している。本拡張アーキテクチャは、固定された仮想アドレスにより特性付けられるものではなく、32−62ビットの範囲内でプロセサ依存性の仮想アドレス寸法VSIZEを意図するものである。以下に説明する如く。このことは、2VSIZE バイトの数の仮想空間を与える。VSIZEを使用することの実際的な意味は、TLBがVA(61..VSIZE)を変換する必要性がないということである。従って、VSIZEが妥当性のある予見可能な必要性を反映すべく選択されているということを仮定すると、TLBは必要なものよりも大きなものであることは必要ではない。VSIZEは、より大きな仮想アドレス空間に対する必要性が発生する場合に、後のプロセサ構成において増加させることが可能であり、且つより大きなTLBの負担を負わねばならないのはこの時だけである。
【0091】
R4000プロセサはVSIZE=40を有している。このことは、それが1024GBの仮想アドレス空間を与えることを意味しており、そのことは当分の間適切なものと考えられる。互換性の観点から重要な点はユーザプログラムの互換性を維持することである。従って、本発明の拡張アーキテクチャは、32ビットユーザモードでのアドレッシング互換性を維持することによりユーザプログラムに対する互換性を与えている。しかしながら、カーネルプログラムは同一のアーキテクチャ内であっても、それぞれのプロセサによって互換性を欠如する傾向がある。従って、本拡張アーキテクチャは32ビットカーネルモードにおける互換性を保証するものではない。
【0092】
32ビットユーザモードにおいて互換性を維持するためには、ビット(31)=0を持った結果を有するアドレス計算は、32ビットの2の補数のオーバーフローが発生したとしても、有効なユーザアドレスと考えねばならない。このことは、その結果が符号拡張されていること、又は、この場合において等価なこととして、ビット(63..32)を強制的に0とさせることを必要とする。従って、32ビットユーザモードにおいては、ビット(63..31)は全て0であり、且つ該アドレスは2GBユーザアドレス空間を参照し、それは拡張されたユーザアドレス空間のサブセットとして表われる。そうでない場合には、アドレス例外が発生する。ステータスレジスタ内に32ビットモードビットを必要とするのは、従来のアーキテクチャにおいては2の補数のオーバーフローが許可されているという事実である。しかしながら、この32ビットモードは、TLBミスの場合にTLB再充填ベクトルを選択するために使用することが可能であるという点においてそれ自身有用なものである。
【0093】
32ビットカーネルモードにおいては、仮想アドレス空間は4GBであり、それは五つの領域に分割されており、該領域は仮想アドレスの32ビット部分の高次即ち高位ビットにより区別されている。32ビットモードにおいては、アドレス変換メカニズムへ供給される任意のアドレスが符号拡張形態にあることを仮定する。VA(31)=0である場合には、VA(63..32)は全て0であり、且つ選択された仮想アドレス空間は完全な2GBの現在のユーザアドレス空間をカバーする。カーネル及びスーパーバイザアドレスはVA(31)=1を有しており、従ってVA(63..32)は全て1である。従って、四つの0.5GB空間は264バイト空間の局限的上端に存在しており、即ち(264−232+8000000H)と(264−1)との間のアドレスを有している。VA(31..29)=100の場合には、選択された仮想アドレス空間は0.5GBキャッシュのマップされていないカーネル物理アドレス空間である。VA(31..29)=101の場合には、選択された仮想アドレス空間は0.5GBのキャッシュされておらずマップされていないカーネル物理アドレス空間である。VA(31..29)=110の場合には、選択された仮想アドレス空間は0.5GBのマップされたスーパーバイザ仮想アドレス空間である。VA(31..29)=111の場合には、選択された仮想アドレス空間は0.5GBのマップされたカーネル仮想アドレス空間である。これらの0.5GB空間の最初の二つは、32ビットプロセサ上での32ビットアーキテクチャにおける0.5GB空間に対応している。スーパーバイザ仮想アドレス空間を設けることは、32ビットアーキテクチャの1GBのマップされたカーネル仮想空間のさらなる区別化を表わしている。
【0094】
図5Aは、64ビットユーザモード仮想アドレス空間に対するアドレスマップを示している。64ビットユーザモードにおいては、プロセサは、62≧VSIZE≧36として、2VSIZE バイトの単一の一様な仮想アドレス空間を与える。構成されているものよりも大きなアドレスでトラップする限り、異なったプロセサ構成は、異なった仮想アドレス空間寸法を実現することが可能である。VSIZEビットが構成される場合には、全ての有効なユーザモード仮想アドレスはVA(63..VSIZE)全て0を有しており、且つ全て0以外のビットを有するアドレスを参照とする試みはアドレスエラー例外を発生する。これらのビットをその他の使用に対して非合法的なものとすることは、VSIZEに対するより大きな値により特性付けられるその後のプロセサ構成でユーザプログラムが稼動することを保証する。
【0095】
64ビットベースレジスタ及び64ビットへ符号拡張された16ビットオフセットの加算を必要とする仮想アドレス計算は、ビット(61..0)からビット(63..62)内にオーバーフローしてはならない。その仮想アドレスは、独特の仮想アドレスを形成するために、アドレス空間識別子フィールドの内容で拡張される。これらの拡張された仮想アドレスのマッピングにおいて、物理アドレスは1対1である必要はないが、二つの仮想アドレスが同一の物理アドレスへマップすることが許容されている。
【0096】
図5Bは64ビットスーパーバイザモード仮想アドレス空間に対するアドレスマップを示している。64ビットスーパーバイザモードにおいては、2VSIZE バイトの二つの仮想アドレス空間及び229バイト(0.5GB)空間が存在している。VA(63..62)=00の場合には、選択される仮想アドレス空間は現在のユーザアドレス空間の2VSIZE バイトである。VA(63..62)=01の場合には、選択される仮想アドレス空間は、アドレス262でスタートする現在のスーパーバイザアドレス空間の2VSIZE バイトである。VA(63..62)=11である場合、及びVA(31..29)=110である場合には、該アドレスは(264−232+C0000000H)の開始アドレスを有する0.5GBスーパーバイザアドレス空間を参照する。
【0097】
図5Cは64ビットカーネルモード仮想アドレス空間に対するアドレスマップを示している。64ビットカーネルモードにおいては、四つの別々の仮想アドレス空間領域を同時的に使用することが可能であり、それらは仮想アドレスの高次ビット即ちVA(63..62)により区別されている。VA(63..62)=00である場合には、選択される仮想アドレス空間は現在のユーザアドレス空間の2VSIZE バイトである。VA(63..62)=01である場合には、選択される仮想アドレスは現在のスーパーバイザアドレス空間の2VSIZE バイトである。VA(63..62)=10である場合には、選択される仮想アドレス空間は、アドレス範囲2×262乃至(3×262−1)内に位置されている8個の2PSIZE バイトのマップされていないカーネル物理空間のうちの一つである。特定のアンマップト即ちマップされていない空間は、VA(61..59)の値に依存し、且つ該空間はアドレス259バイト離れてスタートする。(259−2PSIZE )バイトギャップ内のアドレス(全て0でないVA(58..VSIZE)を有するアドレス)はアドレスエラーを発生させる。VA(63..62)=11である場合には、選択される仮想アドレス空間は、VA(61..VSIZE)が全て0である場合にアドレス3×262でスタートする(2VSIZE −231)バイトカーネル仮想アドレス空間か、又はVA(61..31)が全て1である場合の32ビットカーネルモード空間と互換性のある2GB領域の何れかである。
【0098】
従って、理解される如く、32ビットアドレッシング領域は拡張されたアドレッシングのサブセットである。64ビットに符号拡張されている32ビットアドレスは、264バイト仮想アドレス空間の上部及び下部の2GB部分へマップする。32ビットアーキテクチャの仮想アドレッシング及び64ビットアドレッシングの32ビットモードは、該アドレスを2の補数の符号付きアドレスとして見ることにより、より近付けた対応付けとさせることが可能である。この様に見る場合には、32ビット空間は、−231から、−231と−1との間のカーネルアドレス及び0と(231−1)との間のユーザアドレスを有する(231−1)へ拡張する。同様に、64ビット空間は、−263から、0と(263−1)との間のユーザ及びスーパーバイザアドレスと−263と−1との間のカーネルアドレスを有する(263−1)へ拡張する。従って、32ビットアドレス空間は、−231と−1との間の32ビットモードカーネル及びスーパーバイザアドレス及び0と(231−1)との間の32ビットモードユーザアドレスを有する64ビットアドレス空間の中央のサブセットとして考えることが可能である。
【0099】
拡張アーキテクチャ用のアドレス発生及び変換
図5Dは、AU17及びそれと関連しており64ビットアーキテクチャの拡張アドレッシングをサポートするアドレス変換回路の一実施例における構成及びアドレス経路を示したブロック図である。このデータアドレス発生回路及び命令アドレス発生回路は、種々の要素が64ビット幅であるという点において従来技術と異なっている。例えば、符号拡張回路78は、16ビットオフセットを64ビットへ拡張させ且つ例外ベクトルは符号拡張された形態で格納される。
【0100】
このアドレス変換回路は、サブセットとして32ビットアドレッシングを維持しながらフラットな(即ち、セグメント化されていない)拡張された仮想アドレス空間を与える部分を包含する64ビットアドレスを受付けるという点において従来のアーキテクチャと異なっている。従来のアーキテクチャにおける如く、12ビットオフセットVA(11..0)はTLB20をバイパスし且つPA(11..0)を定義する。
【0101】
VA(63..62)及びVA((VSIZE−1)..12)はTLB20へ送給され、且つVA(63..29)はアドレステスト及び制御論理170へ送給される。マルチプレクサ172が該経路内に挿入されており且つ32ビットユーザモードにおいてVA(63..32)に対し0を代入する。高次ビットのゼロ化は、2の補数のオーバーフローとなった有効なユーザアドレス(VA(31)=0)が符号拡張された形態にあることを確保する。
【0102】
一組のマルチプレクサ180,182,185が、マップされた空間に対するTLBビット又はマップされていないカーネル空間に対する仮想アドレスビットの何れかを選択することによりPA((PSIZE−1)..12)を供給する。マップされた空間の場合には、該マルチプレクサはTLB((PSIZE−1)..12)を選択し、それはVA(11..0)と結合されて物理アドレスを与える。
【0103】
上述した如く、マップされていない空間はVA(63..62)=10を持った2PSIZE バイト空間及びVA(63..31)全て1及びVA(30)=0を持った二つの229バイト空間を包含している。これらの条件の論理的ORがマルチプレクサ180,182,185を制御するために使用されており、従って、それらは、物理アドレスに対してTLBビットではなくVAビットを選択する。特に、VA(62)=1の場合には、互換性非マップ型空間が表示され且つ一組のマルチプレクサ190及び192によりVA((PSIZE−1)..29)に対し0が代入されて、結果的に得られる物理アドレスが0と(229−1)との間であることを確保する。注意すべきことであるが、その空間が完全な2PSIZE バイトであるか又は単に0.5GBであるか否かを決定するためにはマップされていない空間に対してのVA(62)をテストすることが必要であるに過ぎない。従って、ほとんどエキストラなハードウエアを必要とすることなしに、拡張アドレッシングのサブセットとして32ビットアドレッシングをサポートすることが可能である。
【0104】
R4000プロセサに対するTLBは、拡張仮想アドレスとのマッチに対して全てがチェックされる40個のエントリを有する完全に連想的なオンチップのTLBである。各TLBエントリは偶数−奇数ページ対をマップする。ページ寸法は、どの仮想アドレスビットがTLBにより無視されるべきであるかを特定するビットマスクによりエントリ毎に制御される。ページ寸法は、4KB(VA(11..0)がTLBをバイパス)から16MB(VA(11..0)がTLBをバイパスし且つVA(23..12)がTLBにより無視される)の間で変化することが可能である。
【0105】
表7は、VSIZE=40及びPSIZE=36の場合のR4000プロセサに対するTLBフォーマットを示している。公称的なTLBエントリは256ビットであり、将来のプロセサ構成に対してVSIZE及びPSIZEの拡張の余裕を有している。「−」で示されたフィールドは格納されない。
【0106】
図5EはR4000プロセサに対するアドレステスト及び制御論理170を示した概略ブロック図である。該プロセサが、与えられたモード(ユーザ、スーパーバイザ、カーネル)にある場合に、他のものではなく所定のアドレスにアクセスすることを可能としているのはこの論理である。VA(36)及びVA(35)に対するこの図の中の参照はVA(PSIZE)及びVA(PSIZE−1)へ一般化させることが可能であり、一方VA(40)及びVA(39)に対する参照はVA(VSIZE)及びVA(VSIZE−1)へ一般化させることが可能である。多数の信号の名称は、NZ又はAOとそれに続くビット位置を意味する二つの二桁の番号から構成されている。NZ信号は、それが真である場合に、その範囲内のビットが全て0でないことを意味しており、AO信号は、それが真である場合に、該ビットが全て1であることを意味している。例えば、NZ3532は、VA(35..32)が全て0でない場合にアサートされ、一方AO3532は、VA(35..32)が全て1である場合にアサートされる。これらの信号は、仮想アドレスが上述した種々の拘束条件を満足することをテストするために使用される。
【0107】
以上詳説した如く、本発明は、著しいハードウエアのオーバーヘッドを必要とすることなしに逆互換性を維持しながらコンピュータアーキテクチャを拡張する有効な技術を提供している。本発明の拡張型仮想アドレッシング技術は、将来のプロセサを実現するに当り成長する余裕を有する十分なアドレス空間を提供している。
【0108】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。例えば、上述した説明では、32ビット整数演算をサブセットとして有する64ビット整数演算を実行し且つ32ビットアドレッシングをサブセットとして有する64ビットアドレッシングを実行するプロセサについて説明しているが、両方の拡張が64ビットである必要はない。アドレッシングを拡張することなしに整数演算を拡張するか、又はその逆の構成とすることも可能である。更に、32ビットアドレッシングと64ビットアドレッシングとが共通のアドレス発生回路を共用するものとして説明したが、単にアドレス変換とエラーチェック回路のみを共用する構成とすることも可能であり、その場合においても顕著な効果を達成することが可能である。
【0109】
【0110】
【0111】
【0112】
【0113】
【0114】
【0115】
【図面の簡単な説明】
【図1】従来のアーキテクチャか又は本発明の拡張アーキテクチャの何れかを組込んだプロセサを示した概略ブロック図。
【図2A】従来の実行ユニットを示した概略ブロック図。
【図2B】従来の実行ユニットおけるシフタを示した拡大概略ブロック図。
【図3A】従来のユーザモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図3B】従来のカーネルモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図3C】従来のアドレスユニット及びアドレス変換回路を示した概略ブロック図。
【図4A】拡張アーキテクチャ用の実行ユニットを示した概略ブロック図。
【図4B】マスターパイプライン制御ユニットの一部を示した概略ブロック図。
【図4C】拡張アーキテクチャ用の実行ユニットにおけるシフタを示した拡大概略ブロック図。
【図5A】拡張アーキテクチャのユーザモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図5B】拡張アーキテクチャのスーパーバイザモードの仮想アドレス空間に対するアドレスマップを示した概略図。
【図5C】拡張アーキテクチャのカーネルモード仮想アドレス空間に対するアドレスマップを示した概略図。
【図5D】拡張アーキテクチャ用のアドレスユニット及びアドレス変換回路を示した概略ブロック図。
【図5E】アドレステスト及び制御論理を示した概略ブロック図。
【符号の説明】
10 単一チッププロセサ
12 マスターパイプライン制御
15 実行ユニット
17 アドレスユニット
20 変換ルックアサイドバッファ
22 システムコプロセサ
25 外部インターフェース制御器
30 データ/命令バス
32 仮想アドレスバス
35 データ/アドレス/タグバス
Claims (17)
- 処理ユニットとメモリサブシステムとからなるコンピュータシステムの処理ユニットにおいて、
前記メモリサブシステムからフェッチされた命令に応答し対応する動作を特定する手段と、
多数のmビットロード命令、多数の論理演算命令、多数のmビットシフト命令及び多数のmビット加算命令を有しておりmビット命令と呼ばれる第一サブセットの命令並びに多数のNビットロード命令、多数のNビットシフト命令、多数のNビット加算命令を有しておりNビット命令と呼ばれる第二サブセットの命令と、
前記メモリサブシステムから最大でNビット長のエンティティを検索するために指定されたロード動作を実施するロード回路と、
検索したmビットのエンティティをNビットへ符号拡張するために制御動作可能なロード符号拡張手段と、
一組のNビットレジスタを持ったレジスタファイルと、
二つのNビットオペランドの間で特定された論理演算を実施するための論理回路と、
Nビットオペランドに関して特定されたシフト動作を実施するシフト回路と、
シフト動作の結果をmビットからNビットへ符号拡張すべく制御動作可能なシフト符号拡張手段と、
一対のNビットオペランドの間で特定された加算演算を実施するための加算器と、
前記加算器における演算結果をmビットからNビットへ符号拡張すべく制御動作可能な加算符号拡張手段と、
前記加算器におけるmビットオーバーフローを検知する手段と、
前記ロード回路、前記論理回路、前記シフト回路及び前記加算器の各々の出力ポートから前記レジスタファイルへのNビットデータ経路を画定する手段と、
前記レジスタファイルから前記論理回路、前記シフト回路及び前記加算器の各々の入力ポートへNビットデータ経路を画定する手段と、
少なくとも一つのmビットロード命令に応答して前記ロード符号拡張手段を活性化させる手段と、
少なくとも一つのmビットシフト命令に応答して前記シフト符号拡張手段を活性化させる手段と、
少なくとも一つのmビット加算命令及びmビットオーバーフローの発生に応答して前記加算符号拡張手段を活性化させる手段と、
を有しており、前記ロード符号拡張手段を活性化させる手段、前記シフト符号拡張手段を活性化させる手段、及び前記加算符号拡張手段を活性化させる手段がNビットのロード、シフト及び加算命令に応答するものでないことを特徴とする処理ユニット。 - 請求項1において、N=64及びm=32であることを特徴とする処理ユニット。
- 請求項1において、更に、前記ロード回路及び前記ロード符号拡張手段と関連しており更にmビットの検索されたエンティティを画定するためにmビット未満の検索されたエントリをmビットへ符号拡張又はゼロ拡張させる手段が設けられていることを特徴とする処理ユニット。
- 請求項1において、前記加算符号拡張手段を活性化させる手段がmビットオーバーフローのイベントにのみ応答することを特徴とする処理ユニット。
- 請求項1において、前記mビット加算命令がmビットオーバーフローでトラップし且つ結果を発生させることのないADD及びSUD命令を有しており、且つmビットオーバーフローでトラップすることがなく且つ結果を発生するADDU及びSUBU命令を有しており、且つ前記加算符号拡張手段を活性化させる手段が前記ADDU及びSUBU命令に応答し且つ前記ADD及びSUB命令に応答することがないことを特徴とする処理ユニット。
- 請求項1において、更に、前記加算器内にNビットオーバーフロー検知手段が設けられており、且つ前記Nビット加算命令が、Nビットオーバーフローでトラップし且つ結果を発生することのないDADD及びDSUB命令を有しており且つNビットオーバーフローでトラップすることがなく且つ結果を発生するDADDU及びDSUBU命令を有していることを特徴とする処理ユニット。
- 二つのNビットオペランドを結合すべく動作可能であり最大桁ビットはビット(N−1)と指定され且つ最小桁ビットがビット(0)として指定されるデータプロセサの実行ユニットにおける加算器において、
Nビット加算と命名された第一オペコードに応答して一対の入力オペランドを加算し且つその加算結果を供給する手段、
mビット加算と命名された第二オペコードに応答し一対の入力オペランドを加算し且つ少なくとも初期的な結果のビット(m)が初期的な結果のビット(m−1)に等しくない場合にはその結果を供給する前にビット(N−1)乃至ビット(m)を初期的結果のビット(m−1)の値にセットする手段、
を有していることを特徴とする加算器。 - Nビットオペランドをシフトすべく動作可能であり最大桁ビットはビット(N−1)として指定され且つ最小桁ビットはビット(0)として指定されるデータプロセサの実行ユニットにおけるシフトユニットにおいて、
Nビット論理右シフトと命名された第一オペコードに応答して入力オペランドを指定した数のビット位置だけ右側へシフトさせ且つその指定した数がゼロでない場合には空きとされたビット位置を0で充填させる手段、
mビット論理右シフトと命名された第二オペコードに応答して入力オペランドを指定した数のビット位置だけ右側へシフトさせ且つその指定した数がゼロでない場合には空きとされたビット位置及び次のN−m個の最大桁ビット位置を0で充填させる手段、
を有していることを特徴とするシフトユニット。 - Nビットオペランドをシフトすべく動作可能であり最大桁ビットはビット(N−1)として指定され且つその最小桁ビットはビット(0)として指定されるデータプロセサの実行ユニットにおけるシフトユニットにおいて、
Nビット左シフトとして命名された第一オペコードに応答して(1)入力オペランドを指定された数のビット位置だけ左側へシフトさせ且つその指定された数がゼロでない場合には(2)空きとされたビット位置を0で充填させる手段、
mビット左シフトと命名された第二オペコードに応答して(1)入力オペランドを指定された数のビット位置だけ左側へシフトさせ且つその指定された数がゼロでない場合には(2)空きとされたビット位置を0で充填させ且つ(3)その結果のビット(N−1)乃至ビット(m)をその結果のビット(m−1)の値へセットさせる手段、
を有していることを特徴とするシフトユニット。 - 請求項1において、前記シフト回路、前記シフト符号拡張手段、及び前記シフト符号拡張手段を活性化させる手段が、共に、
Nビット論理右シフトと指定される第1オペコードに応答してNビットオペランドを指定した数Sのビット位置だけ右へシフトさせ且つその指定した数がゼロでない場合にはビット(N−1)乃至ビット(N−S)のビット位置を0で充填する手段、
mビット論理右シフトと指定される第2オペコードに応答してNビットオペランドを指定した数Sのビット位置だけ右へシフトさせ且つその指定した数がゼロでない場合にはビット(N−1)乃至ビット(m−S)のビット位置を0で充填する手段、
Nビット左シフトと指定される第3オペコードに応答して(1)Nビットオペランドを指定した数Sのビット位置だけ左へシフトさせ且つその指定した数がゼロでない場合には(2)ビット(S−1)乃至ビット(0)のビット位置を0で充填する手段、
mビット左シフトと指定される第4オペコードに応答して(1)Nビットオペランドを指定した数Sのビット位置だけ左へシフトさせ且つその指定した数がゼロでない場合には(2)初期的結果を与えるためにビット(S−1)乃至ビット(0)のビット位置を0で充填し且つ(3)ビット(N−1)乃至ビット(m)を前記初期的結果のビット(m−1)の値へ設定する手段、
を有していることを特徴とする処理ユニット。 - 処理ユニットとメモリサブシステムとからなるコンピュータシステムにおける処理ユニットにおいて、
メモリサブシステムからフェッチされた命令に応答して対応する動作を特定するデコーダが設けられており、動作を実施することが可能なmビットエンティティはビット(m−1)として指定される最大桁ビットとビット(0)として指定される最小桁ビットとを有しており且つ動作を実施することが可能なNビットエンティティはビット(N−1)として指定される最大桁ビットとビット(0)として指定される最小桁ビットとを有しており、
前記命令は、mビット命令と呼称される命令の第一サブセットと、Nビット命令と呼称される命令の第二サブセットとを包含しており、尚Nはmよりも大きいものであり、
前記mビット命令は、多数のmビットロード命令と、多数の論理演算命令と、多数のmビットシフト命令と、多数のmビット加算命令とを包含しており、
前記Nビット命令は、多数のNビットロード命令と、多数のNビットシフト命令と、多数のNビット加算命令とを包含しており、
前記メモリサブシステムから最大でNビット長のエンティティを検索するために指定されたロード動作を実施するロード回路が設けられており、前記ロード回路は、mビットエンティティのビット(m−1)に等しいNビット結果のビット(N−1)乃至ビット(N−m)及びmビットエンティティのビット(m−1)乃至ビット(0)に等しいNビット結果のビット(m−1)乃至ビット(0)を有しているNビット結果へ検索したmビットエンティティを変換させるために少なくとも一つのmビットロード命令に応答して制御動作可能な関連するロード符号拡張回路を有しており、
一組のNビットレジスタを有するレジスタファイルが設けられており、
二つのNビットオペランドの間で特定した論理演算を実施し且つ結果を与える論理回路が設けられており、
Nビットオペランドに関して特定したシフト動作を実施し且つ結果を与えるシフト回路が設けられており、
シフト動作の結果を該結果のビット(m−1)に等しいビット(N−1)乃至ビット(N−m)を有するNビットエンティティへ変化させるために少なくとも一つのmビットシフト命令に応答して制御動作可能なシフト符号拡張回路が設けられており、
一対のNビットオペランドの間で特定した加算演算を実施し且つ結果を与える加算器が設けられており、前記加算器はビット(m−1)及びビット(m−2)のビット位置からのキャリーアウトを有しており、ビット(m−1)及びビット(m−2)のビット位置からのキャリーアウトが異なる条件をmビットオーバーフローと呼称し、
少なくとも一つのmビット加算命令が実行され且つmビットオーバーフローが発生して前記加算器における演算結果を前記結果のビット(m−1)に等しいビット(N−1)乃至ビット(N−m)を有するNビットエンティティへ変化させる場合に制御動作可能な加算符号拡張回路が設けられており、
前記ロード回路、前記論理回路、前記シフト回路、及び前記加算器の各々の出力ポートから前記レジスタファイルへのNビットデータ経路が設けられており、
前記レジスタファイルから前記論理回路、前記シフト回路、及び前記加算器の各々の入力ポートへNビットデータ経路が設けられており、
前記ロード符号拡張回路、前記シフト符号拡張回路、及び前記加算符号拡張回路がNビットロード命令、Nビットシフト命令、及びNビット加算命令に応答するものでない、
ことを特徴とする処理ユニット。 - 請求項11において、N=64及びm=32であることを特徴とする処理ユニット。
- 請求項11において、前記加算符号拡張回路は、mビットオーバーフローが発生した場合にのみ動作することを特徴とする処理ユニット。
- 請求項11において、前記mビット加算命令は、mビットオーバーフローでトラップし且つ結果を発生することのないADD及びSUB命令と、mビットオーバーフローでトラップすることが無く且つ結果を発生するADDU及びSUBU命令とを包含しており、前記加算符号拡張回路を活性化させる手段が前記ADDU及びSUBU命令に応答するが前記ADD及びSUB命令には応答するものではない、ことを特徴とする処理ユニット。
- 請求項11において、更に、前記加算器におけるNビットオーバーフローを検知する手段が設けられており、且つ前記Nビット加算命令が、Nビットオーバーフローでトラップし且つ結果を発生することの無いDADD及びDSUB命令と、Nビットオーバーフローでトラップすることが無く且つ結果を発生するDADDU及びDSUBU命令とを包含していることを特徴とする処理ユニット。
- Nビットオペランドに関して特定されたシフト動作を実施し且つNビット結果を与えるコンピュータシステムの処理ユニットにおけるシフトユニットにおいて、
前記処理ユニットは、mビットシフト命令と呼称される第一サブセットの命令と、Nビットシフト命令と呼称される第二サブセットの命令とを包含している命令を実行し、
入力オペランド及び結果の各々はビット(N−1)として指定される最大桁ビットとビット(0)として指定される最小桁ビットとを有しており、
Nはmよりも大きく、
シフトされるべきNビットエンティティを受取るNビット入力と、シフト動作から発生するNビットエンティティを与えるNビット出力と、シフト動作に対する指定した数Sのビット位置及び方向を特定する制御入力と、右シフト用にビット(N−1)を置換させるための値を受取る第1シフト入力端子と、左シフト用にビット(0)を置換させるための値を受取る第2入力端子とを具備しているNビットシフタが設けられており、
前記Nビットオペランドのビット(N−1)乃至ビット(m)を受取るべく結合されている第1(N−m)ビット入力と、(N−m)個の0を受取る第2入力と、前記シフタの前記入力のビット(N−1)乃至ビット(m)のビット位置へ結合されている出力とを具備している第1データセレクタが設けられており、
前記第1データセレクタは、前記Nビットシフト命令に対して前記Nビットオペランドのビット(N−1)乃至ビット(m)を通過させ、且つ前記指定した数のビット位置がゼロではない場合に、mビット論理右シフトと指定される命令に対して前記(N−m)個の0を通過させ、
前記シフタの前記入力のビット(m−1)乃至ビット(0)のビット位置は前記Nビットオペランドのビット(m−1)乃至ビット(0)を受けとるべく結合されており、
前記Nビット入力オペランドのビット(N−1)を受取るべく結合されている第1入力と、0を受取る第2入力と、前記シフタの前記第1シフト入力へ結合されている出力とを具備している第2データセレクタが設けられており、
前記第2データセレクタは、mビット及びNビット演算右シフトと指定される命令に対して前記Nビット入力オペランドのビット(N−1)を通過させ、且つmビット及びNビット論理右シフトと指定される命令に対して前記0を通過させ、
前記第2シフト入力は0を受取るべく結合されており、
前記シフタの前記出力のビット(N−1)乃至ビット(m)のビット位置へ結合されている第1入力と、前記シフタの前記出力のビット(m−1)の(N−m)個のコピーを受取るべく結合されている第2入力と、前記Nビット結果のビット(N−1)乃至ビット(m)を与える出力とを具備している第3データセレクタが設けられており、
前記第3データセレクタは、前記Nビットシフト命令に対して前記シフタの前記出力のビット(N−1)乃至ビット(N−m)のビット位置を通過させ、且つmビット左シフトと指定される命令に対して前記シフタの前記出力のビット(m−1)の前記(N−m)個のコピーを通過させ、
前記シフタの前記出力のビット(m−1)乃至ビット(0)のビット位置は前記Nビット結果のビット(m−1)乃至ビット(0)を与えるべく結合されている、
ことを特徴とするシフトユニット。 - Nビットオペランドに関して特定したシフト動作を実施し且つコンピュータシステムの処理ユニットにNビット結果を与えるシフトユニットにおいて、
前記処理ユニットはmビットシフト命令と呼称される命令の第一サブセットと、Nビットシフト命令と呼称される命令の第二サブセットとを包含する命令を実行し、
前記入力オペランド及び前記結果の各々はビット(N−1)として指定される最大桁ビットとビット(0)として指定される最小桁ビットとを有しており、
Nはmより大きく、
シフトされるべきNビットエンティティを受取るNビット入力と、シフト動作から発生するNビットエンティティを与えるNビット出力と、シフト動作に対して指定した数Sのビット位置及び方向を指定する制御入力と、右シフト用にビット(N−1)を置換させるための値を受取る第1シフト入力端子と、左シフト用にビット(0)を置換させる値を受取る第2入力端子とを具備しているNビットシフタが設けられており、
前記シフタの前記入力のビット(N−1)乃至ビット(m)のビット位置へ、(a)前記Nビットシフト命令のための前記Nビットオペランドのビット(N−1)乃至ビット(m)及び(b)前記指定した数のビット位置がゼロでない場合にmビット論理右シフトと指定される命令に対して(N−m)個の0を通信する手段が設けられており、
前記シフタの前記入力のビット(m−1)乃至ビット(0)のビット位置が前記Nビットオペランドのビット(m−1)乃至ビット(0)を受取るべく結合されており、
前記シフタの前記第1シフト入力へ、(a)mビット及びNビット演算右シフトと指定される命令に対して前記Nビット入力オペランドのビット(N−1)及び(b)mビット及びNビット論理右シフトと指定される命令に対して0を通信する手段が設けられており、
前記第2シフト入力は0を受取るべく結合されており、
前記Nビット結果のビット(N−1)乃至ビット(m)として、(a)前記Nビットシフト命令に対する前記シフタの前記出力のビット(N−1)乃至ビット(m)のビット位置及び(b)mビット左シフトと指定される命令に対する前記シフタの前記出力のビット(m−1)の(N−m)個のコピーを与える手段が設けられており、
前記シフタの前記出力のビット(m−1)乃至ビット(0)のビット位置は前記Nビット結果のビット(m−1)乃至ビット(0)を与えるべく結合されている、
ことを特徴とするシフトユニット。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US66827591A | 1991-03-11 | 1991-03-11 | |
| US668275 | 1991-03-11 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003320267A Division JP3657949B2 (ja) | 1991-03-11 | 2003-09-11 | 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH08106416A JPH08106416A (ja) | 1996-04-23 |
| JP3554342B2 true JP3554342B2 (ja) | 2004-08-18 |
Family
ID=24681686
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP05285892A Expired - Lifetime JP3554342B2 (ja) | 1991-03-11 | 1992-03-11 | 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア |
| JP2003320267A Expired - Lifetime JP3657949B2 (ja) | 1991-03-11 | 2003-09-11 | 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003320267A Expired - Lifetime JP3657949B2 (ja) | 1991-03-11 | 2003-09-11 | 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US5420992A (ja) |
| EP (2) | EP0871108B1 (ja) |
| JP (2) | JP3554342B2 (ja) |
| DE (2) | DE69227604T2 (ja) |
Families Citing this family (82)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6336180B1 (en) * | 1997-04-30 | 2002-01-01 | Canon Kabushiki Kaisha | Method, apparatus and system for managing virtual memory with virtual-physical mapping |
| US6038584A (en) * | 1989-11-17 | 2000-03-14 | Texas Instruments Incorporated | Synchronized MIMD multi-processing system and method of operation |
| US5826057A (en) * | 1992-01-16 | 1998-10-20 | Kabushiki Kaisha Toshiba | Method for managing virtual address space at improved space utilization efficiency |
| US5848289A (en) * | 1992-11-27 | 1998-12-08 | Motorola, Inc. | Extensible central processing unit |
| US5680632A (en) * | 1992-12-24 | 1997-10-21 | Motorola, Inc. | Method for providing an extensible register in the first and second data processing systems |
| DE69434967T2 (de) * | 1993-05-27 | 2008-01-17 | Matsushita Electric Industrial Co., Ltd., Kadoma | Programmumsetzungseinheit und verbesserter Prozessor für Adressierung |
| IT1260848B (it) * | 1993-06-11 | 1996-04-23 | Finmeccanica Spa | Sistema a multiprocessore |
| US5606683A (en) * | 1994-01-28 | 1997-02-25 | Quantum Effect Design, Inc. | Structure and method for virtual-to-physical address translation in a translation lookaside buffer |
| US5564056A (en) * | 1994-03-01 | 1996-10-08 | Intel Corporation | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming |
| GB2289353B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
| GB2307072B (en) * | 1994-06-10 | 1998-05-13 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
| WO1996012231A1 (en) * | 1994-10-14 | 1996-04-25 | Silicon Graphics, Inc. | A translation buffer for detecting and preventing conflicting virtual addresses from being stored therein |
| US5680598A (en) * | 1995-03-31 | 1997-10-21 | International Business Machines Corporation | Millicode extended memory addressing using operand access control register to control extended address concatenation |
| JPH0969047A (ja) * | 1995-09-01 | 1997-03-11 | Sony Corp | Risc型マイクロプロセッサおよび情報処理装置 |
| US5649125A (en) * | 1995-10-30 | 1997-07-15 | Motorola, Inc. | Method and apparatus for address extension across a multiplexed communication bus |
| US5961580A (en) * | 1996-02-20 | 1999-10-05 | Advanced Micro Devices, Inc. | Apparatus and method for efficiently calculating a linear address in a microprocessor |
| JP3546980B2 (ja) * | 1996-03-29 | 2004-07-28 | 松下電器産業株式会社 | データ処理装置 |
| US5732404A (en) * | 1996-03-29 | 1998-03-24 | Unisys Corporation | Flexible expansion of virtual memory addressing |
| US6085302A (en) * | 1996-04-17 | 2000-07-04 | Advanced Micro Devices, Inc. | Microprocessor having address generation units for efficient generation of memory operation addresses |
| US5835968A (en) * | 1996-04-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Apparatus for providing memory and register operands concurrently to functional units |
| US5813045A (en) * | 1996-07-24 | 1998-09-22 | Advanced Micro Devices, Inc. | Conditional early data address generation mechanism for a microprocessor |
| US5826074A (en) * | 1996-11-22 | 1998-10-20 | S3 Incorporated | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register |
| US6195746B1 (en) * | 1997-01-31 | 2001-02-27 | International Business Machines Corporation | Dynamically typed register architecture |
| US5872963A (en) * | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
| US6223275B1 (en) * | 1997-06-20 | 2001-04-24 | Sony Corporation | Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions |
| US6862563B1 (en) | 1998-10-14 | 2005-03-01 | Arc International | Method and apparatus for managing the configuration and functionality of a semiconductor design |
| US6366998B1 (en) | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
| US6260098B1 (en) * | 1998-12-17 | 2001-07-10 | International Business Machines Corporation | Shared peripheral controller |
| AU4848100A (en) * | 1999-05-13 | 2000-12-05 | Arc International U.S. Holdings Inc. | Method and apparatus for loose register encoding within a pipelined processor |
| JP3606435B2 (ja) * | 1999-09-29 | 2005-01-05 | 富士通株式会社 | モードを変更する分岐命令を制御する命令処理装置および方法 |
| US6449712B1 (en) * | 1999-10-01 | 2002-09-10 | Hitachi, Ltd. | Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions |
| GB2355085A (en) * | 1999-10-05 | 2001-04-11 | Sharp Kk | Translating a source operation to a target operation |
| US6662361B1 (en) * | 2000-01-14 | 2003-12-09 | International Business Machines Corporation | Method, system, program, and data structures for transforming an instruction in a first bit architecture to an instruction in a second bit architecture |
| WO2001069411A2 (en) | 2000-03-10 | 2001-09-20 | Arc International Plc | Memory interface and method of interfacing between functional entities |
| US7171543B1 (en) * | 2000-03-28 | 2007-01-30 | Intel Corp. | Method and apparatus for executing a 32-bit application by confining the application to a 32-bit address space subset in a 64-bit processor |
| US8874882B1 (en) * | 2000-03-30 | 2014-10-28 | Intel Corporation | Compiler-directed sign/zero extension of a first bit size result to overwrite incorrect data before subsequent processing involving the result within an architecture supporting larger second bit size values |
| US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
| US7093236B2 (en) | 2001-02-01 | 2006-08-15 | Arm Limited | Tracing out-of-order data |
| US7093108B2 (en) | 2001-02-01 | 2006-08-15 | Arm Limited | Apparatus and method for efficiently incorporating instruction set information with instruction addresses |
| US6889312B1 (en) * | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
| US7107439B2 (en) * | 2001-08-10 | 2006-09-12 | Mips Technologies, Inc. | System and method of controlling software decompression through exceptions |
| US7200735B2 (en) * | 2002-04-10 | 2007-04-03 | Tensilica, Inc. | High-performance hybrid processor with configurable execution units |
| US6880065B1 (en) | 2002-09-30 | 2005-04-12 | Palmone, Inc. | Memory management method and system thereof |
| US7424597B2 (en) * | 2003-03-31 | 2008-09-09 | Hewlett-Packard Development Company, L.P. | Variable reordering (Mux) instructions for parallel table lookups from registers |
| JP2007528046A (ja) * | 2003-06-17 | 2007-10-04 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マイクロコントローラ及びアドレス指定方法 |
| US7707389B2 (en) * | 2003-10-31 | 2010-04-27 | Mips Technologies, Inc. | Multi-ISA instruction fetch unit for a processor, and applications thereof |
| US8006071B2 (en) | 2004-03-31 | 2011-08-23 | Altera Corporation | Processors operable to allow flexible instruction alignment |
| US7406406B2 (en) * | 2004-12-07 | 2008-07-29 | Bull Hn Information Systems Inc. | Instructions to load and store containing words in a computer system emulator with host word size larger than that of emulated machine |
| US7584233B2 (en) * | 2005-06-28 | 2009-09-01 | Qualcomm Incorporated | System and method of counting leading zeros and counting leading ones in a digital signal processor |
| US7523434B1 (en) * | 2005-09-23 | 2009-04-21 | Xilinx, Inc. | Interfacing with a dynamically configurable arithmetic unit |
| US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
| US7734901B2 (en) * | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
| US7721073B2 (en) * | 2006-01-23 | 2010-05-18 | Mips Technologies, Inc. | Conditional branch execution in a processor having a data mover engine that associates register addresses with memory addresses |
| US7721075B2 (en) * | 2006-01-23 | 2010-05-18 | Mips Technologies, Inc. | Conditional branch execution in a processor having a write-tie instruction and a data mover engine that associates register addresses with memory addresses |
| US7721074B2 (en) * | 2006-01-23 | 2010-05-18 | Mips Technologies, Inc. | Conditional branch execution in a processor having a read-tie instruction and a data mover engine that associates register addresses with memory addresses |
| GB2435116B (en) * | 2006-02-10 | 2010-04-07 | Imagination Tech Ltd | Selecting between instruction sets in a microprocessors |
| US20070204139A1 (en) | 2006-02-28 | 2007-08-30 | Mips Technologies, Inc. | Compact linked-list-based multi-threaded instruction graduation buffer |
| US7721071B2 (en) * | 2006-02-28 | 2010-05-18 | Mips Technologies, Inc. | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor |
| US20080016326A1 (en) | 2006-07-14 | 2008-01-17 | Mips Technologies, Inc. | Latest producer tracking in an out-of-order processor, and applications thereof |
| US7370178B1 (en) * | 2006-07-14 | 2008-05-06 | Mips Technologies, Inc. | Method for latest producer tracking in an out-of-order processor, and applications thereof |
| US7657708B2 (en) * | 2006-08-18 | 2010-02-02 | Mips Technologies, Inc. | Methods for reducing data cache access power in a processor using way selection bits |
| US7650465B2 (en) | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
| US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
| US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
| US8078846B2 (en) | 2006-09-29 | 2011-12-13 | Mips Technologies, Inc. | Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated |
| US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
| US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
| US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
| US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
| CN102360162B (zh) | 2007-02-06 | 2015-08-26 | 佳能株式会社 | 刻印方法和刻印装置 |
| JP2008204249A (ja) * | 2007-02-21 | 2008-09-04 | Renesas Technology Corp | データプロセッサ |
| US8832679B2 (en) * | 2007-08-28 | 2014-09-09 | Red Hat, Inc. | Registration process for determining compatibility with 32-bit or 64-bit software |
| US9652210B2 (en) * | 2007-08-28 | 2017-05-16 | Red Hat, Inc. | Provisioning a device with multiple bit-size versions of a software component |
| US20090182984A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Execute Relative Long Facility and Instructions Therefore |
| JP5326314B2 (ja) | 2008-03-21 | 2013-10-30 | 富士通株式会社 | プロセサおよび情報処理装置 |
| JP2010160622A (ja) * | 2009-01-07 | 2010-07-22 | Toshiba Corp | シミュレータ |
| US20150227366A1 (en) * | 2014-02-12 | 2015-08-13 | Imagination Technologies Limited | Processor with granular add immediates capability & methods |
| US9690680B1 (en) | 2016-09-23 | 2017-06-27 | International Business Machines Corporation | Testing hybrid instruction architecture |
| US12008369B1 (en) | 2021-08-31 | 2024-06-11 | Apple Inc. | Load instruction fusion |
| CN113535227B (zh) * | 2021-09-07 | 2021-12-21 | 深圳市云中鹤科技股份有限公司 | 一种数字化技术架构的部署方法和装置 |
| US12217060B1 (en) | 2022-09-23 | 2025-02-04 | Apple Inc. | Instruction fusion |
| US12288066B1 (en) | 2022-09-23 | 2025-04-29 | Apple Inc. | Operation fusion for instructions bridging execution unit types |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3828316A (en) * | 1973-05-30 | 1974-08-06 | Sperry Rand Corp | Character addressing in a word oriented computer system |
| US4161784A (en) * | 1978-01-05 | 1979-07-17 | Honeywell Information Systems, Inc. | Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands |
| US4206503A (en) * | 1978-01-10 | 1980-06-03 | Honeywell Information Systems Inc. | Multiple length address formation in a microprogrammed data processing system |
| US4388685A (en) * | 1978-08-04 | 1983-06-14 | Digital Equipment Corporation | Central processor with apparatus for extended virtual addressing |
| US4398243A (en) * | 1980-04-25 | 1983-08-09 | Data General Corporation | Data processing system having a unique instruction processor system |
| US4434459A (en) * | 1980-04-25 | 1984-02-28 | Data General Corporation | Data processing system having instruction responsive apparatus for both a basic and an extended instruction set |
| US4386399A (en) * | 1980-04-25 | 1983-05-31 | Data General Corporation | Data processing system |
| EP0039227A3 (en) * | 1980-04-25 | 1982-09-01 | Data General Corporation | Data processing system |
| US4409655A (en) * | 1980-04-25 | 1983-10-11 | Data General Corporation | Hierarchial memory ring protection system using comparisons of requested and previously accessed addresses |
| US4366548A (en) * | 1981-01-02 | 1982-12-28 | Sperry Corporation | Adder for exponent arithmetic |
| JPS5897184A (ja) * | 1981-12-02 | 1983-06-09 | Hitachi Ltd | アドレス変換方式 |
| US4608634A (en) * | 1982-02-22 | 1986-08-26 | Texas Instruments Incorporated | Microcomputer with offset in store-accumulator operations |
| US4507731A (en) * | 1982-11-01 | 1985-03-26 | Raytheon Company | Bidirectional data byte aligner |
| JPS6097435A (ja) * | 1983-11-02 | 1985-05-31 | Hitachi Ltd | 演算処理装置 |
| US4785393A (en) * | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
| US4868740A (en) * | 1986-06-04 | 1989-09-19 | Hitachi, Ltd. | System for processing data with multiple virtual address and data word lengths |
| WO1988002148A1 (en) * | 1986-09-15 | 1988-03-24 | Motorola, Inc. | A transparent translation method and apparatus for use in a memory management unit |
| US4992934A (en) * | 1986-12-15 | 1991-02-12 | United Technologies Corporation | Reduced instruction set computing apparatus and methods |
| US4774652A (en) * | 1987-02-18 | 1988-09-27 | Apple Computer, Inc. | Memory mapping unit for decoding address signals |
| JPH073653B2 (ja) * | 1987-06-30 | 1995-01-18 | 三菱電機株式会社 | シフタ |
| JP2993975B2 (ja) * | 1989-08-23 | 1999-12-27 | 株式会社リコー | 中央演算処理装置 |
| US5201056A (en) * | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
-
1992
- 1992-03-07 EP EP98108325A patent/EP0871108B1/en not_active Expired - Lifetime
- 1992-03-07 EP EP92103929A patent/EP0503514B1/en not_active Expired - Lifetime
- 1992-03-07 DE DE69227604T patent/DE69227604T2/de not_active Expired - Lifetime
- 1992-03-07 DE DE69231451T patent/DE69231451T2/de not_active Expired - Lifetime
- 1992-03-11 JP JP05285892A patent/JP3554342B2/ja not_active Expired - Lifetime
-
1994
- 1994-04-05 US US08/223,388 patent/US5420992A/en not_active Expired - Lifetime
-
1995
- 1995-02-21 US US08/391,946 patent/US5568630A/en not_active Expired - Lifetime
-
2003
- 2003-09-11 JP JP2003320267A patent/JP3657949B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JP3657949B2 (ja) | 2005-06-08 |
| JP2004094959A (ja) | 2004-03-25 |
| DE69227604D1 (de) | 1998-12-24 |
| EP0871108B1 (en) | 2000-09-13 |
| DE69231451D1 (de) | 2000-10-19 |
| EP0503514A2 (en) | 1992-09-16 |
| US5420992A (en) | 1995-05-30 |
| DE69231451T2 (de) | 2001-05-10 |
| EP0871108A1 (en) | 1998-10-14 |
| EP0503514B1 (en) | 1998-11-18 |
| JPH08106416A (ja) | 1996-04-23 |
| DE69227604T2 (de) | 1999-06-24 |
| US5568630A (en) | 1996-10-22 |
| EP0503514A3 (ja) | 1994-01-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3554342B2 (ja) | 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア | |
| KR100231380B1 (ko) | 감소된 명령 세트 프로세서 내부 레지스터의 데이타를 조작하는 방법 및 장치 | |
| KR100218572B1 (ko) | 고성능 프로세서의 번역버퍼에 대해 세분성 힌트를 이용하는 프로세서 동작 방법 및 장치 | |
| KR100230105B1 (ko) | 간략화된 명령 세트 프로세서의 성능 개선 방법 및 그 프로세서 시스템 | |
| KR100230643B1 (ko) | 고성능 프로세서의 브랜치 예상 동작 방법 및 장치 | |
| US5781750A (en) | Dual-instruction-set architecture CPU with hidden software emulation mode | |
| US5193167A (en) | Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system | |
| US5995746A (en) | Byte-compare operation for high-performance processor | |
| US6820195B1 (en) | Aligning load/store data with big/little endian determined rotation distance control | |
| US9250904B2 (en) | Modify and execute sequential instruction facility and instructions therefor | |
| US6167509A (en) | Branch performance in high speed processor | |
| JP5379825B2 (ja) | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ | |
| JP6849275B2 (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
| JPH0135366B2 (ja) | ||
| CN110321165A (zh) | 复数向量融合乘加和复数向量乘法的高效实现 | |
| JP2011509474A (ja) | コンピュータを動作させる方法及びシステム | |
| JP2025507837A (ja) | スケーラブルベクトル命令セットアーキテクチャのためのサブベクトルサポート命令 | |
| JP2608680B2 (ja) | Cpu実行方法 | |
| Edition | PA-RISC 1.1 Architecture and Instruction Set Reference Manual |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040302 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040312 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040406 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040507 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090514 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090514 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100514 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110514 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110514 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120514 Year of fee payment: 8 |
|
| EXPY | Cancellation because of completion of term |
