JPH08106416A - 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア - Google Patents
拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュアInfo
- Publication number
- JPH08106416A JPH08106416A JP4052858A JP5285892A JPH08106416A JP H08106416 A JPH08106416 A JP H08106416A JP 4052858 A JP4052858 A JP 4052858A JP 5285892 A JP5285892 A JP 5285892A JP H08106416 A JPH08106416 A JP H08106416A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- bits
- address
- instructions
- sign
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 22
- 238000013519 translation Methods 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 239000004606 Fillers/Extenders Substances 0.000 claims description 3
- 230000004044 response Effects 0.000 claims 14
- 238000007792 addition Methods 0.000 claims 8
- 230000003213 activating effect Effects 0.000 claims 6
- 238000001514 detection method Methods 0.000 claims 2
- 230000004913 activation Effects 0.000 claims 1
- 238000004364 calculation method Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 23
- 230000000295 complement effect Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 14
- 230000014616 translation Effects 0.000 description 14
- 238000012360 testing method Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 108010091769 Shiga Toxin 1 Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- HNPWTDUZIXAJSA-UHFFFAOYSA-N 5,5-dimethyl-2-(3-methylbutanoyl)cyclohexane-1,3-dione Chemical compound CC(C)CC(=O)C1C(=O)CC(C)(C)CC1=O HNPWTDUZIXAJSA-UHFFFAOYSA-N 0.000 description 1
- 101710165590 Mitochondrial pyruvate carrier 1 Proteins 0.000 description 1
- 102100024828 Mitochondrial pyruvate carrier 1 Human genes 0.000 description 1
- 101710101695 Probable mitochondrial pyruvate carrier 1 Proteins 0.000 description 1
- 241000719193 Seriola rivoliana Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Abstract
データワード寸法を拡張する。 【構成】mビット命令がmビットエンティティのNビッ
ト符号拡張したもので動作する場合に、Nビット結果を
発生し、それが、Nビットへ符号拡張された正しいmビ
ット結果に対応しないときは、mビット命令に対応する
別のNビット命令が必要であり、最大でNビット仮想ア
ドレス空間に対するサポートが仮想アドレスデータ経路
を広げることにより部分的に与え、付加的なハードウエ
アを最小としてmビットアーキテクチャのアドレッシン
グをサポートしている。このことは、mビットアドレス
を符号拡張された形態でNビットエンティティとして格
納し、これらのエンティティに関するアドレス計算の結
果が符号拡張された形態にあることにより可能とされ
る。
Description
ーキテクチュアに関するものであって、更に詳細には、
より大きなワード寸法及びアドレス空間を持つために命
令セットアーキテクチュアを拡張する技術に関するもの
である。
至1ビットでそのアドレス空間の必要性を増大させてい
る。まもなく、1970年代に16ビットのアドレッシ
ングが不十分なものとなったように、このようなプログ
ラムに対して32ビットアドレス空間は不十分なものと
なる。このような現象の一つの例は、IBM/360上
での24ビットアドレッシングが不十分なものであるこ
とが判明したために、31ビットのアドレッシングを採
用したIBM/370である。
ト(組)へ移行することにより新たなコンピュータにお
いてより大きなアドレス空間へ遷移する傾向がある。新
たな命令組へ移行することは、ユーザ及び製造業者の両
方にとって潜在的に致命的な結果をもたらすことがあ
る。ユーザの観点からは、このことは、古いマシンに対
して書かれたプログラムが新しいマシンでは稼動しない
ことを意味している。ソフトウェアにかなりの投資をし
たユーザは、ソフトウェアを変換するか又は置換するた
めの費用を支払うか又は新しいマシンにおいて組み込ま
れた種々の進んだものの利点を諦めるかの何れかの不快
な決断に迫られる。製造業者の観点からは、このような
移行は、ユーザの憤りを買い且つこのような新しいマシ
ンの当初の販売が停滞することとなる蓋然性がある。
グメント化と呼ばれる技術を使用している。多数の32
ビットアーキテクチュアは、既に、アドレス空間を拡張
するためにセグメント化構成を提示している。その例は
IBM/370(ESAモード)、IBMパワー及びH
Pプレシジョン等である。
マイクロプロセサにおける如く広く使用されているが、
それは必ずしも満足のいくものではない。例えばDE−
ハネウェルハードウエア上のマルチクス(Multic
s)システムのような2,3の例外を除いて、セグメン
ト化は非効率的であり且つプログラマが見ることのでき
るものであることが判明した。満杯のアドレスはマルチ
ワードオブジェクトとなり、そのことはアクセス及び計
算を行うために複数個の命令及び/又はサイクルを必要
とする。更に、殆どのセグメント化方法は、セグメント
寸法よりも大きな単一のデータオブジェクトへのアクセ
スを可能とするものではないが、そのことはより大きな
アドレス空間に対して主要な使用態様の一つである。
(例えば、16ビット)アーキテクチュアと新しい(例
えば、32ビット)アーキテクチュアの両方を同一のハ
ードウェア上に実現することである。例えば、DEC
VAX 11/780は、幾つかの制限が伴うが、PD
P−11プログラムを実行することが可能なモードを有
していた。この技術は、おもに、マイクロコード化した
実行の場合に適用可能なものであり、その場合には、従
来のアーキテクチュアは単に付加的なマイクロコードと
して実行されるに過ぎない。ハードワイヤード構成の場
合には、設計者は、基本的に二つのCPUを使用するこ
とが強制されるか又は少なくともより複雑なものを取り
扱うことを余儀なくされ、その複雑性が性能に著しく影
響を与える場合がある。いずれのアプローチもチップの
ダイ面積を著しく消費する蓋然性があり、そのことは単
一チップで構成する場合に重要な考慮事項である。
即ち互換モードはコストがかかる場合があり、特に、従
来のアーキテクチュアと新しいアーキテクチュアとがア
ドレス寸法を越えた態様で異なる場合にそのことが言え
る。このことは、互換モードをしばらく持ち運んでいる
が後で捨て去るような余分な荷物としている。例えば、
VAXファミリの後のバージョンのものはPDP−11
エミュレーションをサポートするものではない。
クチュアに対するハ−ドウェアが既存のアーキテクチュ
アをもサポートするような態様で既存のアーキテクチュ
アを拡張するための効率的な技術を提供している。バッ
クワードコンパチビリティ即ち逆互換は、最少の量の付
加的なハードウェアを必要とするに過ぎず且つ動作速度
における影響も最少のものである。更に、拡張アーキテ
クチュアに対するプログラミングモデルは簡単な拡張で
あり、大量のソフトウェアの再設計を必要とするような
過激的な変化ではない。
シンレジスタ及びデータ経路をMビットからNビットへ
拡大させ且つレジスタ内にロードさせる場合にm又はそ
れ以下のビットのエンティティをNビットへ符号拡張す
ることにより、mビットからNビットへ拡張される。こ
の場合に、「符号拡張(sign−extendin
g)」という用語は、mビットエンティティの最大桁ビ
ット(即ち、符号(サイン)ビット)をNビット容器の
(N−m)最大桁ビット位置(そうでない場合には、不
定)内に書込むことを意味している。
ットは、従来のアーキクテクチュアからの命令を包含し
ている。これらの命令(即ち、インストラクション)
は、mビット命令と呼ばれ、mビット(又はそれ以下)
エンティティのNビット符号拡張したものとすることが
可能なNビットエンティティで動作するために再定義さ
れている。コンパチビリティ即ち、互換性のために、該
nビット命令は、nビットエンティティのNビット符号
拡張したもので動作する場合には、正しいmビット結果
のNビット符号拡張版であるNビット結果を発生せねば
ならない。
アにおいて定義されていない命令を包含している。これ
らの命令はNビット命令と呼ばれ、通常mビットエンテ
ィティの符号拡張版ではないNビットエンティティで動
作する。絶対のNビット命令が必要とされるか否かは、
符号拡張エンティティ及び符号拡張されていないエンテ
ィティに関しての対応するnビット命令の動作に依存す
る。
の幾つかは、nビットエンティティのNビット符号拡張
版に関して動作する場合には当然に、Nビッチへ符号拡
張された正しいNビット結果に対応するNビット結果を
発生する。したがって、互換性は、これらの命令のさら
なる定義を必要とするものではなく、符号拡張されてい
ないNビットエンティティに関して正しく動作する。し
たがって、これらのnビッチ命令に対応する別のNビッ
ト命令を設けることは必要ではない。
他のnビット命令の場合には事情がことなる。これらの
命令がmビットエンティティのNビット符号拡張版に関
して動作する場合には、そのNビット結果はNビットに
符号拡張された正しいnビット結果に対応しない場合が
ある。符号拡張された結果を当然に保証するものではな
い命令の場合には、互換性は、これらの命令が符号拡張
された結果を保証するように定義されることを必要とす
る。このことは、符号拡張されていないNビットオペラ
ンドに対してこれらの命令が正しい結果を発生しない傾
向にあることを意味する。従って、これらのnビット命
令に対応する別のNビット命令が必要とされる。
ものではない命令の一つであり、従って結果のnビット
部分を符号拡張するためのエキストラな回路を必要とす
る。しかしながら、加算はサイクル時間に関して下限を
セットする傾向がある。従って、すべての加算動作に対
して符号拡張を実施することは、より長いサイクル時間
を必要とするか、又はその加算が二つのサイクルで実施
されることを必要とする。本発明の1側面によれば、加
算に対する符号拡張は必要な場合にのみ実施されるもの
であり、それは、mビットの2の補数のオーバーフロー
が検知された場合である。パイプライン型の構成の場合
には、サイクル当たり一つの命令の場合、このことは、
パイプラインをストール即ち停止させ、符号拡張を実施
し、且つパイプラインのシーケンスの再開始期間中に正
しい値をパイプライン内に挿入することにより達成され
る。
1)の上の部分を包含するNビット仮想アドレスフィー
ルドの種々の部分に関してのエラーチェック及びアドレ
ス変換を実施する。従来のアーキテクチュアのmビット
アドレスは、アドレス変換及びエラーチェックメカニズ
ムにより必要とされる全てのエキストラな高次ビッチに
対して符号ビット(ビット(m−1))の値を与えるこ
とにより受入れられる。
ッシング及びnビットアドレッシングは共通のアドレス
発生回路を共用する。この構成においはて、本拡張アー
キテクチュアは符号拡張された形態でのNビットエンテ
ィティとしてnビットアドレスを発生するとともに格納
し且つこれらのエンティティに関するアドレス計算の結
果が符号拡張された形態であることを必要とすることに
より、nビットアーキテクチュアのアドレッシングをサ
ポートしている。
ートは、部分的には、データアドレス加算器と、ブラン
チ(分岐)加算器と、プログラムカウンタ(PC)を包
含する仮想アドレスデータ経路をNビットへ広げること
により与えられている。一実施形態においては、Nビッ
ト仮想空間が、高次仮想アドレスビットにより区別され
た多数の領域へ分割されている。例えば、N=64及び
m=32である特定の実施例においては、VA(6
3..62)として指定された仮想アドレスビット(6
3..62)が、アドレス0,262,2×262,3×2
62で開始する4つの領域を提示している。本拡張アーキ
テクチュアは最大で2VSIZE バイトの多数の均一な仮想
サブスペースを与えており、尚、VSIZEはその構成
に依存する。この特定の実施例においては、VSIZE
は36乃至62の範囲に拘束される。マシンがユーザモ
ードにあるか、スーパーバイザモードにあるか、または
カーネルモードにあるかに依存して、これらの領域のあ
る部分が使用可能となる。ユーザモードは、アドレス0
で開始する2VSIZE バイトのフラットなスペースをアド
レスすることが可能である。VA(61..VSIZ
E)は、TLBにより変換されることはなく、且つVA
(63..VSIZE)がすべて0でない場合には、ア
ドレスエラーが発生する。スパーバイザモードは、ユー
ザモード空間、アドレス262で開始する2VSIZE バイト
空間、及び4番目の領域の最上部近傍の229バイト空間
をアドレスすることが可能である。カーネルモードは、
第一及び第二領域内の空間、第三領域における多数のマ
ップされていない空間、アドレス3×262で開始する
(2VSIZE −231)バイト空間、及び第四領域の最上部
における231バイト空間をアドレスすることが可能であ
る。264バイト空間の最上部及び最下部における231バ
イト空間は、互換性空間と呼称される。何故ならば、そ
れらのアドレスは64ビットに符号拡張された32ビッ
トアドレスの形態であり、且つ従って、32ビットアド
レッシングに対してのアクセスが可能だからである。
チュアが有効なユーザアドレス(MSB=0)が2の補
数のオーバーフローから発生することを可能としてい
た。この特別の場合を本拡張アーキテクチュアにおいて
取扱うためには、マシンがmビットプログラム(即ち、
従来のアーキテクチュアに対して書かれたもの)で稼動
しているか、又はNビットプログラム(即ち、本拡張ア
ーキテクチュアに対して書かれたもの)で稼動している
かのいずれかを特定するためにマシンのステ−タスレジ
スタ内にアドレスモードを供給することが必要である。
mビットユーザモードにおいては、2の補数のオーバー
フローが発生する場合にそのアドレスを符号拡張するこ
とが必要である。
Nビットの2の補数のオーバーフローの場合における符
号拡張出力を保証するために仮想アドレス経路内に符号
拡張ハードウェアを設けることである。しかしながら、
タイミングの拘束条件がこのような符号拡張に対して不
利に作用する場合には、(N−m)個の最大桁ビットを
ゼロへ強制させるだけで十分である。従って、一実施例
においては、アドレス変換ユニットへの経路内にゼロ化
回路が設けられている。この回路は、mビットカーネル
モード及びNビットモードにおいて最大桁(N−m)が
ビットが不変のまま通過される場合のmビットユーザモ
ードに対して喚起される。
のアーキテクチュアをサポートするために不当な量のエ
キストラなハードウェアを必要とすることなしに、デー
タワード寸法及び仮想アドレス寸法を拡張するためのエ
レガントな方法を与えている。エラー例外を有するVS
IZEビットの仮想アドレッシングを使用することは二
つの利点を有している。第一に、それは、与えられたプ
ロセサに対してのTLBが既存のVSIZEに対して必
要な長さであることを必要とするのみで、将来のインプ
リメーテイション即ち構成のものにおいて仮想アドレス
空間を増大させることを可能としている。第二に、その
他の目的のためのマップされていない仮想アドレスビッ
トの使用は禁止されているので、あるVSIZEを有す
るプロセサに対して書かれたプログラムがより大きなV
SIZEを有する後のプロセサで稼動するということで
ある。
仮想アドレス空間のいずれか一方又は両方により特徴付
けられる新たなアアーキテクチュアに対して既存のアー
キテクチュアを拡張する技術を提供している。
ーキテクチュアはRISC(減少命令組コンピュータ)
アーキテクチュアであり、それはカリフォルニア州サニ
ーベルのミップスコンピュータシステムズ,インコーポ
レイテッドにより製造されているR2000,R300
0,R6000として知られているRISCプロセサ上
で実現されたRISCアーキテクチュアである。このア
ーキテクチュアに関する包括的な説明は、Gerry
Kane著「ミップスRISCアーキテクチュア(MI
PS RISC Architecture)」、プレ
ンテスホール出版社1988年(ライブラリ・オブ・コ
ングレスNo.88−060290)に記載されてい
る。64ビット拡張は、多数の新たな64ビット命令を
与えるが、実質的に全ての従来の32ビット命令を包含
している。
ルワード(二重ワード)」及び「ハーフワード(半ワー
ド)」という用語は、通常、64ビットエンティティ及
び16ビットエンティティをそれぞれ意味している。
「ワード(word)」という用語は、時折概括的に使
用され且つ時折32ビットエンティティのことを意味す
る。ビットは、通常、ビット(0)が最小桁(最も右
側)ビットとして番号付けがなされる。一つのワード又
はハーフワード内のバイトはビッグエンディアン(bi
g−endian)(バイト0)最も左側)又はリトル
エンディアン(little−endian)(バイト
0)最も右側)系で順番付けさせることが可能である。
n)」という用語は、データエンティティがそれが格納
される容器の寸法よりも小さい場合に実施される動作乃
至は演算のことを意味する。このような場合に、最大桁
ビット(即ち、符号ビット)は、左側の空きビット位置
内において繰り返される。例えば、64ビット容器内に
格納されるべき32ビットエンティティの符号拡張は、
64ビット容器のビット位置は(31..0)にその3
2ビットエンティティを格納し且つその容器のビット位
置(63..32)の全ての中にその32ビットエンテ
ィティのビット(31)の値を格納することを必要とす
る。
n)」という用語は、容器よりも小さなデータエンティ
ティの左側のビット位置を充填するために0を使用する
場合の動作乃至は演算のことを意味する。「拡張(ex
tension)」という用語は、場合によって(例え
ば、特定の命令の定義に依存して)、符号拡張か又はゼ
ロ拡張のいずれかを意味するために使用される。
語は、64ビットエンティティのデータ内容が32ビッ
トを越えたものである場合、即ち64ビットへ符号拡張
された32ビット又はそれ以下のエンティティではない
場合の64ビットエンティティのことを意味するために
時折使用される。
は、二つの最大桁ビットからのキャリーアウト(car
ryout)が異なる場合の状態を意味している。この
ことは、二つの正の数、又は二つの負の数の加算が許容
可能な範囲外の結果を発生する場合に発生する。64ビ
ットの数の場合には、その範囲は−263乃至(263−
1)である。ビット(63)からのキャリーアウトが発
生しないオーバーフローは、例えば、(263−1)を1
に加算しようとする場合に発生する。正しい結果は263
であるが、計算された結果は−263である。オーバーフ
ローなしのキャリーアウトは、例えば、−1(それは、
2の補数2進形態において64個の位置である)を1に
加算する場合に発生する。正しい結果は0であるが、計
算結果はビット(63)からのキャリーアウトを有する
0である。
ビット2の補数オーバーフロー」という用語は、ビット
(31)及びビット(30)からのキャリーアウトが異
なる場合の状態を意味している。これは、二つの文脈に
おいて発生する。32ビットエンティティを加算する文
脈においては、それは、上述したものと同一の意味及び
効果を有している。各々が64ビットに符号拡張されて
いる2個の32ビットエンティティを加算する文脈にお
いては、このようなオーバーフローの結果は、ビット
(31)と異なるビット(32)を持った64ビットエ
ンティティであり、即ちもはや符号拡張形態にない64
ビットエンティティである。
係は、8ビットエンティティを16ビットへ符号拡張す
るより簡単な文脈において説明する。最初に、符号拡張
したエンティティを加算した結果を符号拡張する場合、
例えば16進数7F及び80の和の場合について検討す
る。8ビットエンティティとして、その和はFFであ
る。これらの符号拡張したものの和、即ち007FとF
F80の和はFFFFであり、それは和FFの符号拡張
版である。次に、符号拡張したエンティティを加算した
結果が符号拡張したものでない場合、例えば7Fと01
の和の場合について検討する。8ビットエンティティと
して、その和は80である。それは2の補数オーバーフ
ローを表わしている。これらの符号拡張したものの和、
即ち007Fと0001の和は0080である。しかし
ながら、その結果は符号拡張したエンティティではな
い。何故ならば、適切な符号拡張したエンティティはF
F80だからである。
以下に指摘した2,3の例外を除いて、本システムの概
略的な説明は、従来のプロセサ及び本発明の拡張アーキ
テクチュアを組込んだ開発中のプロセサに適用される。
このハイレベルにおける主要な差異は、従来のプロセサ
が、32ビットワード寸法及び仮想アドレスにより特徴
付けられており、一方本拡張アーキテクチュアは64ビ
ットワード寸法及び最大で64ビットまでの仮想アドレ
スにより特性付けられている点である。以下に説明する
機能的構成及びパイプラインはR2000プロセサに対
応している。
ユニットを有しており、即ち、マスターパイプライン制
御ユニット(MPC)12と、実行ユニット(EU)1
5と、アドレスユニット(AU)17と、トランスレー
ション(変換)ルックアサイドバッファ(TLB)20
とシステムコプロセサ22と、外部インタフェース制御
器(EIC)25とを有している。これらの機能ユニッ
トは、データ/命令バス30、仮想アドレスバス32、
物理アドレスバス33を包含する多数の内部バスを介し
て互いに通信する。オフチップの通信はデータ、アドレ
ス及びタグバス35を介して行なわれる。
たり1個の命令のピークレートで発生される。MPC1
2は、データ/命令バス30からラッチされた命令フィ
ールドをデコードするための命令デコード回路37を有
している。命令をデコードすると、該デコードMPCは
適宜の制御信号をその他の機能ユニットへ供給する。そ
れは、更に、何らかの異常な条件が発生するとパイプラ
インを制御する欠陥処理論理38を有している。例え
ば、キャッシュミスが発生する場合は、MPCがパイプ
ラインをストール即ち停止させる。例えばアドレス変換
などのような別の動作が干渉なしで完了することが出来
ない場合には、MPCがパイプラインをシャットダウン
し且つオペレーティングシステムへ制御を転送させる。
MPCは、更に、同時的な例外を直列化させ且つ例外サ
ービスの後に実行が精密に再開することが可能であるこ
とを確保する。
この初期的な説明のためには、該EUが、多数の汎用レ
ジスタ、論理、シフト及び加算演算を実施するためのA
LU45、乗算/除算ユニット47を包含するレジスタ
ファイル42を有している点を指摘するだけで十分であ
る。レジスタファイル42は32個のレジスタを有して
おり、レジスタ(0)は値0へハードワイヤードされて
いる。更に、命令を乗算及び除算するために使用される
特別レジスタHI及びLOが存在している。従来のアー
キテクチュア及びハードウェア構成においては、レジス
タ、ALU及び実行ユニット内のデータ経路は32ビッ
ト幅であり、本拡張アーキテクチュアにおいては、それ
らは64ビット幅である。
ジスタから2個のソースオペランドを設置する。該オペ
ランドは、ALUへ送給されるか、又はAU17又はE
IC25へ送給される。同時的に、EUは、ALU,A
U,又はメモリからの一つの結果を該レジスタ内へ書き
戻す。バイパス動作は、例えその結果がレジスタファイ
ル内に書き込まれなかった場合であっても、ALU又は
メモリ参照が、そのソースオペランドを前の動作から取
ることを可能としている。乗算/除算セクション47
は、本プロセサの残部から自律的に動作し従って、それ
はその他のALU動作と並列的に動作することが可能で
ある。
この初期的な説明に当たっては、AUが、プログラムカ
ウンタ(PC)50を有しておりかつレジスタファイル
42をEU15と共用している点を指摘するだけで十分
である。従来のアーキテクチュア及びハードウエア構成
においては、AU内のPCおよびデータ経路は32ビッ
ト幅であるが、本拡張アーキテクチュア及びハードウエ
ア構成においては、それらは64ビット幅である。本拡
張アーキテクチュア及びハードウエア構成においては、
PC及びデータ経路は64ビット幅である。AUは、サ
イクル当たり2個のクロックフェーズの各々の上で一つ
の命令又はデータ仮想アドレスを発生する。それは、現
在のPCから、PCからのブランチ(分岐)オフセット
から、又はEUから直接来るジャンプアドレスから命令
アドレスを発生する。サブルーチンのコールで、AUは
更に、PCをリターンリンクとしてEUへパスする。A
Uは、EUによって供給される命令オフセット及びベー
スレジスタからデータアドレスを発生する。
理アドレスに対するマッピングのために、交互のクロッ
クフェーズで命令及びデータ仮想アドレスを受取る。各
変換は、仮想アドレスを現在の処理識別子と結合させ
る。従って、TLBは、プロセサ間でのコンテックス
(文脈)スイッチでクリアさせる必要はない。システム
コプロセサ22は、仮想アドレスを物理アドレスへ変換
し、且つカーネル状態とユーザ状態との間での変換及び
例外を管理する。それは、更に、キャッシュサブシステ
ムを制御し且つ診断制御及びエラー回復機能を提供して
いる。コプロセサ(0)と呼ばれるシステムコプロセサ
の一つ、及びTLB20は共に、メモリ管理ユニットと
して呼称することが可能である。このシステムコプロセ
サは、カーネル/ユーザモード、インタラプトイネーブ
ル、プロセサの診断状態、及び拡張アーキテクチュアに
おいては32ビットモード及びスーパーバイザモードを
指示するビットを有するステータスレジスタ51を包含
する多数の特別レジスタを有している。
ッシュ、メインメモリ及び外部コプロセサとのプロセサ
インタフェースを管理する。それは、システムの信頼性
を助けるために全てのキャッシュ動作に関してのデータ
及びアドレス−タグパリティを発生し、且つテストす
る。EICは、更に、外部インタラプト及び内部ソフト
ウェアインタラプトを監視する。
されている。表1は三つのプロセサ命令タイプ(即値、
ジャンプ、レジスタ)及びコプロセサ命令に対する命令
フォーマットを示している。即値タイプ命令は、ロー
ド、ストア、ALU即値、及びブランチ(分岐)命令を
包含している。ジャンプタイプ命令は直接ジャンプ命令
を包含している。レジスタタイプ命令は、ALU3オペ
ランド(加算、減算、セット及び論理)、シフト、乗算
/除算、間接ジャンプ、及び例外命令を包含している。
ト即値フィールドを特定する。ロード及びストア命令の
場合には、該レジスタはベースレジスタ及び発信元(ソ
ース)/宛て先レジスタであり、且つ即値フィールドは
符号拡張され且つベースレジスタの内容に加算されるア
ドレス変位(オフセット)を包含している。その結果得
られる仮想アドレスが変換され、且つアドレスされたメ
モリ位置と発信元/宛て先レジスタとの間でデータが転
送される。計算的(ALU即値)命令の場合には、即値
フィールドが拡張され、発信元(ソース)レジスタの内
容と結合され、且つその結果が宛て先レジスタ内にスト
ア即ち格納される。ブランチ即ち分岐命令の場合には、
即値フィールドが符号拡張され且つPCに加算されてタ
ーゲットアドレスを形成する。
び1個の数値フィールドを特定する。加算、減算、AN
D、OR、XOR、NOR命令の場合には、二つの発信
元レジスタが結合され且つその結果が宛て先レジスタ内
にストアされる。セット・オン・レス・ザン(set−
on−less−than)命令の場合には、二つの発
信元レジスタが比較され、且つ相対的な値に依存して、
宛て先レジスタが1又は0の値にセットされる。シフト
命令の場合には、一方の発信元即ち供給元(ソース)レ
ジスタの内容が発信元レジスタの内容の低次ビットによ
り定義される数だけ又は特定された数だけシフトされ、
符号拡張されるか又はゼロ拡張され、且つ宛て先レジス
タ内にストア即ち格納される。乗算命令の場合には、二
つのソース即ち発信元レジスタの内容が乗算され且つそ
の二重結果がLO及びHI特別レジスタ内に格納され
る。除算即ち割算命令の場合には、一つのソース即ち発
信元レジスタの内容が、他のレジスタの内容で除算即ち
割算され、且つその商及び余りがLOレジスタ及びHI
レジスタ内に格納される。LOレジスタ及びHIレジス
タは、更に、ムーブ(move)即ち移動命令により書
込み及び読取りを行なうことが可能である。
・ザン、乗算、除算)は「符号なし」の対応するものを
有しており、その場合に、オペランドは2の補数の整数
ではなく符号なし整数として取扱われる。加算及び減算
命令も「符号なし」の対応するものを有しているが、そ
の用語は異なった意味合いを有している。通常の加算及
び減算命令はオーバーフロー(ビット(30)及びビッ
ト(31)からのキャリーアウトが異なる)でトラップ
するが、符号なしのものはオーバーフローでトラップす
ることはない。トラップしたりトラップしなかったりす
る別々の命令の定義は、オーバーフローを特定する条件
コードを使用することに対する選択された代替物を表わ
している。
来の実施例における構成及びデータ経路を示したブロッ
ク図である。図2は、本発明を理解するために関連する
部分のみを示した模式的な概略図である。例えば、この
図は、実際には二相クロックを使用したラッチをベース
とした構成であるがレジスタをベースとした表示で示さ
れている。更に、RF、ALU、MEM、WBステージ
に対するハードウエアが示されているが、IFステージ
に対するものは示されていない。理解すべきことである
が、MPC12による命令デコードから得られる制御信
号はこの図の中の種々の要素へ伝送される。二三の例外
を除いて、これらの制御信号は概略「CTL」として示
してあり、尚CTLは異なった場所においては異なった
信号を示している。
42、ALU45及びその他の全てのレジスタ及びデー
タ経路は32ビット幅である。ALU45は、シフトユ
ニット52と、論理ユニット53と、加算器55と、A
LUマルチプレクサ57とから構成されるものとして示
されている。ALUと関連して条件分岐回路が設けられ
ており、それは、二つのデータオペランドを比較する比
較回路58と、分岐決定論理60とを有している。該分
岐決定論理は、特定の分岐命令に依存して、その比較の
結果、又は該オペランドの一方の符号ビット(ビット
(31))又はその両方に基づいて分岐決定を行ない、
且つ制御信号をAU17へ送給する。ゼロ決定は、レジ
スタ(0)と比較することにより行なわれる。
論理ユニット、加算器の出力から選択されたALU出力
を供給する。シフトユニット52は、単一のオペランド
を受取るが、論理ユニット53及び加算器55の各々は
二つのオペランドを受取る。その第二オペランドは、レ
ジスタデータであるか、又はオペランドマルチプレクサ
64により選択される如く、拡張回路63により拡張さ
れた即値データである場合がある。
ン・レス・ザン命令(後者のものの場合には減算が関与
する)を実行する。該加算器は、ビット(30)及びビ
ット(31)からの異なったキャリーアウトとして明ら
かにする32ビットオーバーフローをモニタする回路を
有している。上述した如く、加算及び減算命令の幾つか
はこの様なオーバーフローでトラップする。
68がデータ経路に沿った種々の点に介挿されている。
これらのレジスタは、MPC12が、レジスタのそれぞ
れのクロック入力をディスエーブルさせるために使用さ
れるストール(停止)条件を特定しない限り、全てのサ
イクルでクロック動作される。バイパスマルチプレクサ
70は、パイプラインレジスタ65a,67,68の何
れか一つからのオペランドをALUに供給する。このこ
とは、ALUが、そのデータがレジスタファイル内にロ
ードされる前に、ロードされたか又は処理されたデータ
へアクセスすることを可能としている。ALUは、更
に、パイプラインレジスタ65bからオペランドを受取
る。
ラインステージの同一のシーケンスに従う。これらのス
テージは、命令フェッチ(IF)、レジスタファイル
(RF)からのソースオペランドフェッチ、ALU演算
又はデータオペランドアドレス発生(ALU)、データ
メモリ参照(MEM)、レジスタファイルへの書き戻し
(WB)である。IFサイクル期間中、プロセサは、命
令仮想アドレスを命令物理アドレスへ変換し且つそれを
命令キャッシュへ送給する。プロセサチップは該命令を
受取り且つRFサイクル期間中にそれをデコードする。
ソースオペランドは、ALUサイクル期間中に、適宜の
演算、論理又はアドレスユニットへ移行する。その命令
がメモリ参照を行なう場合には、データキャッシュが、
MEMサイクル期間中に、変換されたデータアドレスを
受取り且つWBサイクル期間中に、レジスタファイル書
込みのためにデータをリターンさせる。ALU演算のた
めの書込みは同一のパイプラインステージで行なわれ
る。パイプラインにおける命令間のバイパスは、分岐及
びメモリ参照の待ち時間を一サイクルに維持し且つ引続
く命令においてALU結果を使用することを可能とす
る。
ァイル42から読取られ且つパイプラインレジスタ65
a−bの一方又は両方の中にクロック入力される。AL
Uサイクル期間中、選択されたパイプラインレジスタか
らのデータがALUにより処理され、その結果がパイプ
ラインレジスタ67内にクロック入力される。多数の条
件分岐命令がデータエンティティのサイン即ち符号に依
存する。このために、バイパスマルチプレクサ出力のビ
ット(31)(符号ビット)がAU17と関連する符号
ビットテスト論理へ送給される。MEMサイクル期間中
に、パイプラインレジスタ67の内容又はメモリからの
フェッチの結果がパイプラインレジスタ68内にクロッ
ク入力される。ロードマルチプレクサ72は、命令デコ
ーダからの信号に基づいてソース即ち発信元乃至は供給
元を決定する。WBサイクル期間中に、パイプラインレ
ジスタ68の内容が、レジスタファイルへ送給され且つ
適宜のレジスタ内にクロック入力される。
からのデータがロード論理75へ送給され、それは、命
令デコーダから信号を受取る。完全な32ビットワード
より少ないものをメモリからロードするロード命令の場
合、ロード論理は、特定の命令に依存して、32ビット
への符号拡張又はゼロ拡張を実施する。その符号拡張の
結果は、メモリからのバイト又はハーフワードの最も左
側のビットが左側のあいたビット位置内において繰返さ
れる。ゼロ拡張の結果は、ロードされたデータエンティ
ティにより充填されなかったビット位置がゼロで書込み
が行なわれる。図2Bは32ビットシフタ52の拡大し
たブロック図である。理解される如く、このシフタは、
左側シフトに対して0をシフト入力する能力を有してお
り、且つ論理右シフトに対して0か又は演算右シフトに
対して符号ビット(ビット(31))の何れかをシフト
させるためのマルチプレクサ76が設けられている。
観 時折32ビットアーキテクチャとして呼称される従来の
アーキテクチャにおいては、仮想アドレスは32ビット
エンティティである。仮想メモリシステムは、32ビッ
ト仮想アドレス空間で構成されているアドレスをマシン
の物理空間へ変換することによりそのマシンの物理メモ
リ空間の論理的拡大を与えている。物理アドレスにおけ
るビット数はPSIZEとして指定される。R2000
及びR3000プロセサの場合、PSIZE=32であ
り且つ仮想アドレスマッピングは4096バイト(4K
B)ページを使用している。従って、TLBを介しての
マッピングは、32ビット仮想アドレスの最大桁20ビ
ットのみ、即ち仮想ページ番号(VPN)のみに影響を
与え、オフセットとして呼称される残りの12ビットは
不変のまま通過される。オフセットにおけるビット数は
OSIZEとして指定される。R6000プロセサの場
合、OSIZE=14、PSIZE=36であり且つペ
ージは18ビットVPNを有する16384バイト(1
6KB)である。この仮想アドレスはアドレス空間識別
子(ASID)で拡張される。ASIDフィールドは、
R2000及びR3000プロセサの場合6ビットであ
り、R6000プロセサの場合8ビットである。
えられたビット(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)
である。
従来のプロセサ(R2000,R3000,R600
0)は、マシンのステータスレジスタ内の一つ又はそれ
以上のビットにより決定されて、ユーザモード又はカー
ネルモードで動作することが可能である。
対するアドレスマップである。ユーザモードで動作する
プロセサは、231バイト(2GB)の単一で一様のマッ
プされた仮想アドレス空間を与える。この文脈におい
て、「マップされた」という用語は、仮想アドレスがT
LB20により変換されていることを意味しており、一
方「マップされていない」という用語は、そのアドレス
がTLB20により変換されておらず且つその物理アド
レスビットが仮想アドレスから直接的に取られているこ
とを意味している。全ての有効なユーザモード仮想アド
レスはビット(31)=0を有しており、ビット(3
1)=1を有するアドレスの変換又はこの様なアドレス
からのフェッチをしようとする試みはアドレスエラー例
外を発生させる。
の内容に即値オフセットを加算することを必要とする。
有効なユーザモードアドレスでないようなビット(3
1)=1を持ったベースレジスタの内容でスタートする
ことが可能であり、且つ、負のオフセットを加算するこ
とにより、ビット(31)=0及び2の補数のオーバー
フローを持ったデータアドレスを与えることが可能であ
る。更に、ビット(31)=0を持ったベースレジスタ
の内容でスタートすることも可能であり、且つオフセッ
トを加算することにより、2の補数のオーバーフローを
有しビット(31)=1を持ったデータアドレスを与え
ることが可能である。32ビットアーキテクチャは、何
れの場合においてもそのオーバーフローを無視するが、
ビット(31)=1となる場合には、アドレスエラー例
外が発生する。
オフセット(即ち1)を加算することを必要とする。こ
の場合には、PCは、ビット(31)=1を有するアド
レスを有することは不可能であり、従って2の補数のオ
ーバーフローで有効なユーザアドレスを形成することは
不可能である。
に対するアドレスマップである。カーネルモードでの動
作の場合、四つの別々の仮想アドレス空間が同時的に使
用可能であり、仮想アドレスの高次ビットにより区別さ
れている。VA(31)=0の場合、選択された仮想ア
ドレス空間が完全な2GBの現在のユーザアドレス空間
をカバーしている。VA(31..29)=100の場
合、選択された仮想アドレス空間は229バイト(0.5
GB)キャッシュされ、マップされていないカーネル物
理アドレス空間である。VA(31..29)=101
の場合、選択された仮想アドレス空間は0.5GBのキ
ャッシュされておらず、マップされていないカーネル物
理アドレス空間である。VA(31..30)=11の
場合、選択された仮想アドレス空間は230バイト(1G
B)のマップされたカーネル仮想空間である。マップさ
れていないカーネル空間に対する仮想アドレス(VA
(31..30)=10を有するアドレス)はTLBを
介して通過するものではないが、それらは0−(229−
1)の範囲内の物理アドレスに対し一つのブロックとし
てマップされる(制限された意味合いにおいて)。即
ち、それらは、PA(31..29)=000を有する
物理アドレスを有している。カーネルアドレス動作は、
拘束されており、従ってベースアドレスレジスタは結果
と同一の空間へポイントせねばならない。
セサに対応する関連したアドレス変換回路における構成
及びアドレス経路を示したブロック図である。この実施
例においては、PC50及び全てのその他のレジスタ及
びデータ経路は32ビット幅である。ロード及びストア
命令用の仮想データアドレスはデータアドレス加算器7
7により計算される。加算器77は、該レジスタのうち
の一つからのベースアドレスを、その命令の中の16ビ
ット即値フィールドから派生されたオフセットと結合さ
せる。符号拡張回路78は、そのオフセットが加算器に
おいて結合される前に、その16ビットオフセットを3
2ビットへ符号拡張する。その命令がロードであるか又
はストアであるかに依存して、そのデータエンティティ
はアドレスされたメモリ位置から読取られ且つ宛て先レ
ジスタ内にロードされるか、又はソース即ち発信元乃至
は供給元のレジスタ内のデータエンティティがアドレス
されたメモリ位置内に書込まれる。
次のアドレスマルチプレクサ80を有しており、該マル
チプレクサは四つの入力のうちの選択した一つで該PC
をロードする。通常のシーケンス動作のために選択され
た第一の入力は次のシーケンスのアドレスである。これ
は、PCの内容を受取り且つそれをインクリメントする
インクリメンタ82により与えられる。第二の入力は、
ジャンプ命令の場合に選択されるものであり、それはジ
ャンプアドレスである。これは、その命令から供給され
るか又はレジスタファイルから供給される。第三の入力
は、取られたブランチ即ち分岐を有する分岐命令の場合
に選択され、それは分岐加算器85により与えられる分
岐ターゲットアドレスである。該分岐加算器は、PCの
内容及び分岐命令内の16ビット即値フィールドから派
生されたオフセットを結合させる。4番目の入力は、エ
クセプション即ち例外の場合に選択されるものであっ
て、それは例外ベクトルである。これは、その入力端に
おいて固定された例外ベクトルを受取る例外マルチプレ
クサにより供給される。
らの仮想アドレスは、物理アドレスを発生するアドレス
変換回路へ送給される。12ビットオフセット(VA
(11..0))は、全てのアドレスに対してTLB2
0をバイパスし且つPA(11..0)を定義する。V
A(31..12)がTLBへ送給され且つVA(2
9..12)がTLBをバイパスする。一組のマルチプ
レクサ83及び85が制御されて、マップされた空間に
対してTLB(31..12)又はマップされていない
カーネル空間に対して先行する三つの0とVA(2
8..12)を選択する。上述した如く、マップされて
いないカーネル空間はVA(31..30)=10を有
するものであり、且つ該マルチプレクサを制御するため
に使用されるのはこの条件である。
ては、TLB20は64個のエントリを有するオンチッ
プTLBと完全に連想しており、そのエントリの全ては
拡張された仮想アドレスとのマッチ即ち整合に対して同
時的にチェックされる。TLBエントリは64ビットエ
ントリとして定義されているが、50ビットのみがスト
アされるに過ぎず、即ち20ビットVPNと、6ビット
ASIDと、20ビットページフレーム番号(PFN)
と、そのページがキャッシュされているか否か、そのペ
ージがダーティ即ち汚れているか否か、及びそのエント
リが有効であるか否かに関してそのページに対しキャッ
シュアルゴリズムを特定する4個のビットである。R6
000プロセサにおいては、このTLBは二組の連想型
キャッシュ内TLBである。
のその他のデータ経路が64ビット幅であるハードウエ
アコンフィギュレーション(形態)を採用している。そ
のインストラクションセット即ち命令組は、従来の(即
ち、32ビット)の全ての命令を有すると共に、ダブル
ワードを取扱うための多数の64ビット命令を有してい
る。従って、本拡張アーキテクチャは、従来のアーキテ
クチャの上位セットである。しかしながら、理解すべき
ことであるが、32ビット命令は実際には64ビットエ
ンティティを処理するが、ある場合には、64ビットエ
ンティティはその実際のデータ内容が32ビット以下
(ワード、半ワード、及びバイト)であるエンティティ
の符号拡張又はゼロ拡張したものである。
ト命令の多くは、真の64ビットエンティティに関して
正しく動作し、且つ64ビットへ符号拡張された32ビ
ットエンティティに関しても正しく動作する。MPC内
の命令デコード回路は、その命令が32ビット命令のう
ちの一つであるか又はダブルワード命令のうちの一つで
あるか否かを特定するために十分な情報をEUへ供給す
ることが可能である。本拡張アーキテクチャの重要な特
徴は、拡張アーキテクチャをサポートするハードウエア
構成が、32ビット命令のみを有しており且つ32ビッ
ト又はそれより小さなエンティティを処理するプログラ
ムを稼動させることが可能であり且つ32ビットアーキ
テクチャをサポートする従来のプロセサにより発生され
るものと同一の結果を正確に発生させることが可能であ
る。このことは、32ビット命令が、32ビットデータ
エンティティの64ビット符号拡張版に関して動作即ち
演算を行ない且つ正しい32ビットの結果の64ビット
符号拡張版の結果を発生させることを必要とすることに
より達成されている。以下の説明においては、32ビッ
ト命令のうちのどれが符号拡張エンティティに関して当
然に動作即ち演算を行なって符号拡張結果を発生し、且
つそのうちのどれが符号拡張エンティティに関して動作
即ち演算を行なうが爾後の符号拡張を必要とするかにつ
いて説明する。符号拡張エンティティに関して動作する
32ビット命令が当然に符号拡張結果を発生するもので
はない場合には、エキストラな符号拡張回路が必要とさ
れる。このことは、その命令は、一般的には、真の64
ビットエンティティに関して作用しないものであること
を意味している。これらの場合には、その命令組に対し
て別体の64ビット(ダブルワード)命令が付加され
る。
り、その命令の記述及びそのオペコード(即ち、命令コ
ード)、32ビット命令の場合には、必要とされる場合
に、その結果を符号拡張させるか又はそうでない場合に
は適切に定義された量とするのにどの様なタイプの拡張
が必要であるかの表示、及び64ビット命令の場合に
は、その命令が拡張アーキテクチャにとって独特のもの
であることの表示を特定している。テーブル即ち表3A
−3Dはほとんどの即値命令を示している。上述した如
く、即値命令は、オペコード、一対のレジスタ、及びデ
ータであるか又はアドレス計算用のオフセットである即
値フィールドを特定する。
及び半ワードロード命令(LB,LBU,LH,LH
U)は、32ビットマシンで実行される場合には、32
ビットへ符号拡張又はゼロ拡張された結果を発生する。
注意すべきことであるが、符号なしロード命令(LB
U,LHU)は、8又は16ビットから32ビットへの
ゼロ拡張を使用する。従って、64ビットへのゼロ拡張
は符号拡張と等価であり、且つこれらの命令は64ビッ
トへの符号拡張を有する64ビットマシンで動作する。
同様に、ワードロード命令(LW)及び特別の非整合型
ワードロード命令(LWL,LWR)はビット(31)
から符号拡張するために64ビットアーキテクチャで定
義されており、従って新しい命令を必要とすることはな
い。真の64ビットエンティティに関する動作即ち演算
は、4個の新しいダブルワードロード命令及び0で左側
のビット(63..32)を充填する符号なしバイト及
び半ワードロード命令(LBU,LHU)と類推的に動
作する符号なしワードロード命令(LWU)を必要とす
る。
張された64ビットエンティティとしてストアされるバ
イト、半ワード及びワードの場合、既存の命令は32ビ
ット及び64ビット動作に対し同一の動作を行なう。な
ぜならば、該命令は、少なくとも、64ビットレジスタ
の上位32ビットを無視するからである。新たなダブル
ワードストア命令(SD,SDL,SDR,SCD)は
64ビットアーキテクチャのために必要である。
ット毎の論理即値命令(ANDI,ORI,XORI)
は、符号拡張入力オペランドと共に供給される場合に、
符号拡張結果を発生する。注意すべきことであるが、1
6ビット即値は、レジスタ値と結合される前に、32ビ
ットアーキテクチャにおいては32ビットへゼロ拡張さ
れ且つ64ビットアーキテクチャにおいては64ビット
へゼロ拡張される。従って、これらの命令は32ビット
及び64ビットの両方の動作に対して動作する。
異なった理由により付加的な64ビット命令を必要とし
ている。ADDIは、32ビットアーキテクチャにおい
ては、32ビットの2の補数のオーバーフローでトラッ
プし、且つ宛て先レジスタ内に結果を書込まないように
定義されている。従って、二つの符号拡張エンティティ
を加算した結果が書込まれると、その結果は符号拡張形
態にあり、従ってその結果の符号拡張は必要とされな
い。しかしながら、64ビットの2の補数のオーバーフ
ローでトラップする別の64ビット命令(DADDI)
が、真の64ビットエンティティに関する動作に対して
必要とされる。なぜならば、32ビットオーバーフロー
は関係ないからである。
でトラップすることはなく、従って符号拡張入力に関し
て動作する場合に符号拡張されない結果を発生すること
が可能である。従って、その結果の符号拡張が必要とさ
れ、且つ64ビットエンティティに関する動作即ち演算
がその結果を符号拡張することのない新たな命令(DA
DDIU)を必要とする。
行なう場合に符号拡張を必要とする。セット・オン・レ
ス・ザン命令(SLTI及びSLTIU)は1又は0を
ロードし、その64ビット版は符号拡張された(且つゼ
ロ拡張された)32ビット版である。別の符号拡張回路
が必要とされることはなく、従って新たな命令が必要と
されることはない。
のエンティティの同一性をテストする分岐命令(BE
Q,BNE,BEQL,BNEL)は64ビットのビッ
ト毎の比較を行ない、従って、符号拡張入力オペランド
及び真の64ビットオペランドに関して同一の態様で動
作即ち演算を行なう。従って、新たな命令が必要とされ
ることはない。残りの条件付き分岐命令は符号ビット、
即ちビット(63)をテストするが、符号拡張入力オペ
ランドの場合、これは32ビット演算即ち動作に対する
ビット(31)と同一である。従って、新たな命令は必
要とされない。
示している。上述した如く、レジスタ命令は最大で3個
のレジスタを特定する。表4AはALU3オペランドレ
ジスタ命令を示しており、二つのレジスタの内容が処理
され且つ結果又はその結果を表わす値が3番目のレジス
タ内にストアされる。加算及び減算命令(ADD,AD
DU,SUB,SUBU)は、ADDI及びADDIU
に関して上述したのと同一の理由により新たな64ビッ
ト命令を必要とする。ADD及びSUBは、32ビット
オーバーフローでトラップすべく定義されており、従っ
て64ビットオーバーフローでトラップするDADD及
びDSUB命令を必要とする。ADDU及びSUBUは
符号拡張結果を発生すべく保証されておらず、従ってそ
の結果の符号拡張を必要とする。従って、符号拡張のな
いダブルワード加算及び減算のために新たな命令(DA
DDU及びDSUBU)が必要である。
びSLTU)は、32ビットにおいて0及び1のゼロ拡
張値を与え、従って64ビットにおいて符号拡張版を与
える。従って、新たな命令は必要ではない。ビット毎の
論理命令(AND,OR,XOR,NOR)は、符号拡
張入力オペランドが与えられると、当然に、符号拡張結
果を発生し、従って新たな命令は必要とはされない。
張エンティティをシフトさせることは、通常、符号拡張
結果を発生させるものではなく、従って符号拡張回路が
必要とされる。符号拡張の前に(何らかのシフトが発生
すると仮定して)、ビット(31)内に0をシフト入力
させるために、論理右シフト動作(SRL及びSRL
V)に対する特別の論理も必要とされる。従って、32
ビットを超えるシフトのための命令及び付加的なダブル
ワードシフト命令が与えられている。
V)は、左側から符号拡張し、従って符号拡張エンティ
ティ及び真の64ビットエンティティに対して正しい結
果を与える。それにも拘らず、別のダブルワード命令
(DSRA及びDSRAV)が与えられている。これは
可変シフトのために必要である。なぜならば、SRAは
シフト量を決定するために特定されたレジスタのビット
(4..0)を使用し、一方真の64ビットエンティテ
ィに対するシフト量を特定するためにビット(5..
0)が必要だからである。これは、シフト量がその命令
内において5ビットフィールドであるSRAの場合には
問題ではない。それにも拘らず、新たな64ビット命令
を定義することが便利である。
乗算命令においては、ダブル(二重)結果の低次(下
位)ワードがLO特別レジスタ内にロードされ且つその
ダブル結果の高次(高位)ワードがHI特別レジスタ内
にロードされる。64ビットのLO及びHIレジスタを
32ビットの結果で充填するためには別々の符号拡張が
必要とされる。同様に、除算即ち割算命令に関しては、
商及び余りがLO及びHI特別レジスタ内にそれぞれロ
ードされ且つ別の符号拡張がこの場合にも必要とされ
る。従って、別々のダブルワード乗算及び除算命令が必
要とされる。特別レジスタと汎用レジスタとの間で内容
を転送する命令は、符号拡張したエンティティ及び真の
64ビットエンティティに対して等しく良好に動作し、
且つ付加的な命令が必要とされることはない。
ジャンプ(レジスタ)命令を示している。32ビットア
ーキテクチャにおける直接ジャンプ命令においては、2
6ビットターゲットアドレスが2ビットシフトレフト即
ち左側へシフトされ且つPCのビット(31..28)
と結合され且つその結果がジャンプされる。拡張アーキ
テクチャにおいては、その結合はPCのビット(6
3..28)となされる。そのアドレスが符号拡張され
たものであると、何ら付加的な命令なしで正しい動作即
ち演算が行なわれる。間接ジャンプ、即ちレジスタの内
容へのジャンプは、32ビットアドレスが64ビットに
符号拡張されている場合には、当然に発生する。
条件分岐命令に関して上述したのと同一の理由により、
トラップ命令に対して何ら新たな命令が必要とされるこ
とはない。
の一実施例の中における構成及びデータ経路を示した概
略ブロック図である。図4内の要素は大略64ビット幅
であり且つ図2における要素は32ビット幅であるが、
図2における要素に対応する要素には図4においても同
一の参照番号を付してある。図2における如く、関連性
のあるパイプラインステージのみを示してある。
とハードウエア構成との間の区別をすることが重要であ
る。例えば、従来の32ビットアーキテクチャに関連し
て上述したハードウエア形態は、内部的に5ステージ
(段)パイプラインを使用しており各サイクルが二つの
フェーズ(相)に分割されているR2000及びR30
00プロセサに関連してのものである。従来のR600
0プロセサは幾分異なった5ステージパイプラインを有
しており、一方64ビットアーキテクチャをサポートす
るために現在開発中のプロセサは8ステージパイプライ
ンを有している。拡張命令組アーキテクチャをサポート
するハードウエアは、R2000/R3000ハードウ
エア構成の拡張として表わされている。このことは、拡
張アーキテクチャ及びそれをサポートするためのハード
ウエア形成方法の説明を簡単化させる。しかしながら、
理解すべきことであるが、本拡張アーキテクチャをサポ
ートするためのハードウエア形態は従来のプロセサのも
のと同一のものであることは必要ではない。
るために、符号拡張されたエンティティに関する動作即
ち演算結果が符号拡張結果を保証することがないデータ
経路内にエキストラな拡張回路が挿入されている。この
ために、拡張回路120が、シフトユニット52とAL
Uマルチプレクサ57との間のデータ経路内に挿入され
ている。この拡張回路は、ある種の32ビットシフト命
令に対してのみ活性化され、その事実は、32Sとして
指定された一組の信号を有する制御入力によって概略示
される。この32S信号は、就中、符号拡張又はゼロ拡
張が必要とされるか否かを特定する。
ンティティを供給するロード論理125は、この場合に
は、32ビットワード及び半ワード及びバイトに対し6
4ビットへの符号拡張又はゼロ拡張を与えねばならな
い。このロード論理は、一般的な制御信号CTL及び3
2ビットロードに対する拡張を特定する付加的な信号3
2Lを受取るものとして示されている。このロード論理
は、概念的には、32ビットエンティティを64ビット
へ符号拡張するものとして考えることが可能であり、そ
の場合に、32ビットエンティティ自身が32ビット未
満のエンティティの符号拡張されたもの又はゼロ拡張さ
れたものである場合がある。
ーバーフローをモニタする回路を有しており、それは、
DADD及びDSUB命令に対しトラップを発生する。
互換性のために、該加算器は、更に、ADD及びSUB
命令に対するトラップを発生する32ビットオーバーフ
ローもモニタする。このことは、32ビットオーバーフ
ローでトラップすることがないがその場合に符号拡張を
必要とするADDU及びSUBU命令に対しても必要で
ある。
ためには、各々が64ビットに符号拡張されている二つ
の32ビットの符号付き整数を結合した結果を符号拡張
させることが必要であることが少なくとも時折存在す
る。ハードウエアに対する直接的な拡張は、加算器55
とALUマルチプレクサ57との間に符号拡張回路を設
けることである(これは、ちょうど、シフト動作に対し
拡張回路120を設ける場合に行なわれるものと同じで
ある)。しかしながら、加算はシフト及び論理演算より
も一層時間のかかる動作即ち演算であり、且つ加算器に
続いて符号拡張回路を付加することは全体的に性能が劣
化することとなる。加算演算を実行する時間はサイクル
時間に関して下限を設定する傾向があるので、簡潔的な
解決方法は、全ての加算に対して2サイクルを必要とす
るか、又は全ての動作即ち演算に対してより長いサイク
ルを必要とするかの何れかである。
比較的稀に発生するものであるから、図4Aに示した如
きハードウエア構成を使用することが可能である。この
構成においては、加算器55からの出力はALUマルチ
プレクサ57及びパイプラインレジスタ67を介して進
行することはなく、その代わりに、別のパイプラインレ
ジスタ130を介して進行し且つロードマルチプレクサ
72へ指向される。パイプラインレジスタ130の出力
もバイパスマルチプレクサ70の入力端へ送給される
(これは、パイプラインレジスタ67の出力と同様であ
る)。従って、パイプラインレジスタ130はパイプラ
インレジスタ67の並列的拡張として見ることが可能で
あり、ほとんどの加算結果はALUマルチプレクサを介
してではなく、直接的にロードマルチプレクサ内に導入
される。
ーバーフローが符号拡張したオペランドの加算において
発生する場合に対処するために、付加的なデータ経路が
設けられねばならない。このことは、パイプラインレジ
スタ130の出力端に結合されているが、パイプライン
レジスタ130からロードマルチプレクサ72及びバイ
パスマルチプレクサ70へのデータ経路の外側にある符
号拡張回路140により達成される。オーバーフローマ
ルチプレクサ145として呼称されるエキストラなマル
チプレクサが、ALUマルチプレクサ57とパイプライ
ンレジスタ67との間の経路内に挿入されており、符号
拡張回路140からの出力を選択することが可能であ
る。
ーバーフローが発生すると、MPC12はパイプライン
を停止させ且つ信号SE STALLでオーバーフロー
マルチプレクサ145を制御して、符号拡張回路140
からの出力を選択する。このことは、図4Bに概略的に
示されている。この符号拡張された出力は、加算の正し
い結果を表わしている。従って、ロードマルチプレクサ
72及びバイパスマルチプレクサ70には、パイプライ
ン再開始シーケンス期間中にパイプライン内に挿入され
る正しい結果を供給することが可能である。従って、符
号拡張回路140は、それが必要とされるオーバーフロ
ーの場合においてのみ臨界的なデータ経路内に存在し、
オーバーフローが発生することのない64ビットオペラ
ンド又は32ビット符号拡張オペランドの加算に対して
は臨界経路の外側に存在している。
と関連する拡張回路120の拡大概略ブロック図であ
る。該シフタは、全てのレストシフト即ち左側へのシフ
トに対して0をシフト入力する能力を有しており、且つ
演算ライトシフト(右側へのシフト)に対する符号ビッ
ト(ビット(63))又は論理ライトシフトに対する0
の何れかをシフトさせるためのマルチプレクサ152が
設けられている。32ビットシフトに対する互換性は、
マルチプレクサ153及び155により与えられてい
る。32ビット論理ライトシフトの場合、マルチプレク
サ153は、該シフタの上部セクション内に0をロード
し、従って0がビット(31)からスタートする空とさ
れた位置内にシフト入力される。マルチプレクサ155
は、その結果のビット(63..32)に対し該シフタ
の上部セクション又は下部セクションのビット(31)
の32個のコピーを選択する。このことは、32ビット
レフトシフトに対し符号拡張を与えるために必要であ
る。それは、32ビットライトシフトに対しては厳格に
は必ずしも必要ではない。なぜならば、マルチプレクサ
152及び153は、その入力が符号拡張される場合に
符号拡張された結果を確保することが可能だからであ
る。
ビットエンティティである。拡張アーキテクチャのアド
レッシング即ちアドレス動作の主要な目的は、従来のア
ーキテクチャのアドレッシングをサブセットとして維持
しながら、拡張されたフラットな(セグメント化されて
いない)副次的空間を与えることである。このために、
従来のアーキテクチャのアドレス空間は符号拡張された
形態で転送される。従って、従来のアーキテクチャの3
2ビットアドレスは符号拡張された形態で格納され且つ
処理される。
そのマシンのステータスレジスタ内のビットにより決定
されて、ユーザモード、スーパーバイザモード、又はカ
ーネルモードで動作することが可能である。そのステー
タスレジスタは、更に、そのマシンが32ビットモード
であるか又は64ビットモードであるか否かを特定する
ビットを有している。32ビットモードにおいては、ア
ドレスは64ビット符号拡張エンティティとして格納さ
れ且つ処理される。
IZEはそのプロセサに依存する。本64ビットアーキ
テクチャをサポートするためのR4000と呼称される
現在開発中のプロセサはPSIZE=36を有してい
る。本拡張アーキテクチャは、固定された仮想アドレス
により特性付けられるものではなく、32−62ビット
の範囲内でプロセサ依存性の仮想アドレス寸法VSIZ
Eを意図するものである。以下に説明する如く。このこ
とは、2VSIZE バイトの数の仮想空間を与える。VSI
ZEを使用することの実際的な意味は、TLBがVA
(61..VSIZE)を変換する必要性がないという
ことである。従って、VSIZEが妥当性のある予見可
能な必要性を反映すべく選択されているということを仮
定すると、TLBは必要なものよりも大きなものである
ことは必要ではない。VSIZEは、より大きな仮想ア
ドレス空間に対する必要性が発生する場合に、後のプロ
セサ構成において増加させることが可能であり、且つよ
り大きなTLBの負担を負わねばならないのはこの時だ
けである。
有している。このことは、それが1024GBの仮想ア
ドレス空間を与えることを意味しており、そのことは当
分の間適切なものと考えられる。互換性の観点から重要
な点はユーザプログラムの互換性を維持することであ
る。従って、本発明の拡張アーキテクチャは、32ビッ
トユーザモードでのアドレッシング互換性を維持するこ
とによりユーザプログラムに対する互換性を与えてい
る。しかしながら、カーネルプログラムは同一のアーキ
テクチャ内であっても、それぞれのプロセサによって互
換性を欠如する傾向がある。従って、本拡張アーキテク
チャは32ビットカーネルモードにおける互換性を保証
するものではない。
維持するためには、ビット(31)=0を持った結果を
有するアドレス計算は、32ビットの2の補数のオーバ
ーフローが発生したとしても、有効なユーザアドレスと
考えねばならない。このことは、その結果が符号拡張さ
れていること、又は、この場合において等価なこととし
て、ビット(63..32)を強制的に0とさせること
を必要とする。従って、32ビットユーザモードにおい
ては、ビット(63..31)は全て0であり、且つ該
アドレスは2GBユーザアドレス空間を参照し、それは
拡張されたユーザアドレス空間のサブセットとして表わ
れる。そうでない場合には、アドレス例外が発生する。
ステータスレジスタ内に32ビットモードビットを必要
とするのは、従来のアーキテクチャにおいては2の補数
のオーバーフローが許可されているという事実である。
しかしながら、この32ビットモードは、TLBミスの
場合にTLB再充填ベクトルを選択するために使用する
ことが可能であるという点においてそれ自身有用なもの
である。
想アドレス空間は4GBであり、それは五つの領域に分
割されており、該領域は仮想アドレスの32ビット部分
の高次即ち高位ビットにより区別されている。32ビッ
トモードにおいては、アドレス変換メカニズムへ供給さ
れる任意のアドレスが符号拡張形態にあることを仮定す
る。VA(31)=0である場合には、VA(63..
32)は全て0であり、且つ選択された仮想アドレス空
間は完全な2GBの現在のユーザアドレス空間をカバー
する。カーネル及びスーパーバイザアドレスはVA(3
1)=1を有しており、従ってVA(63..32)は
全て1である。従って、四つの0.5GB空間は264バ
イト空間の局限的上端に存在しており、即ち(264−2
32+8000000H)と(264−1)との間のアドレ
スを有している。VA(31..29)=100の場合
には、選択された仮想アドレス空間は0.5GBキャッ
シュのマップされていないカーネル物理アドレス空間で
ある。VA(31..29)=101の場合には、選択
された仮想アドレス空間は0.5GBのキャッシュされ
ておらずマップされていないカーネル物理アドレス空間
である。VA(31..29)=110の場合には、選
択された仮想アドレス空間は0.5GBのマップされた
スーパーバイザ仮想アドレス空間である。VA(3
1..29)=111の場合には、選択された仮想アド
レス空間は0.5GBのマップされたカーネル仮想アド
レス空間である。これらの0.5GB空間の最初の二つ
は、32ビットプロセサ上での32ビットアーキテクチ
ャにおける0.5GB空間に対応している。スーパーバ
イザ仮想アドレス空間を設けることは、32ビットアー
キテクチャの1GBのマップされたカーネル仮想空間の
さらなる区別化を表わしている。
ドレス空間に対するアドレスマップを示している。64
ビットユーザモードにおいては、プロセサは、62≧V
SIZE≧36として、2VSIZE バイトの単一の一様な
仮想アドレス空間を与える。構成されているものよりも
大きなアドレスでトラップする限り、異なったプロセサ
構成は、異なった仮想アドレス空間寸法を実現すること
が可能である。VSIZEビットが構成される場合に
は、全ての有効なユーザモード仮想アドレスはVA(6
3..VSIZE)全て0を有しており、且つ全て0以
外のビットを有するアドレスを参照とする試みはアドレ
スエラー例外を発生する。これらのビットをその他の使
用に対して非合法的なものとすることは、VSIZEに
対するより大きな値により特性付けられるその後のプロ
セサ構成でユーザプログラムが稼動することを保証す
る。
へ符号拡張された16ビットオフセットの加算を必要と
する仮想アドレス計算は、ビット(61..0)からビ
ット(63..62)内にオーバーフローしてはならな
い。その仮想アドレスは、独特の仮想アドレスを形成す
るために、アドレス空間識別子フィールドの内容で拡張
される。これらの拡張された仮想アドレスのマッピング
において、物理アドレスは1対1である必要はないが、
二つの仮想アドレスが同一の物理アドレスへマップする
ことが許容されている。
仮想アドレス空間に対するアドレスマップを示してい
る。64ビットスーパーバイザモードにおいては、2
VSIZE バイトの二つの仮想アドレス空間及び229バイト
(0.5GB)空間が存在している。VA(63..6
2)=00の場合には、選択される仮想アドレス空間は
現在のユーザアドレス空間の2VSIZE バイトである。V
A(63..62)=01の場合には、選択される仮想
アドレス空間は、アドレス262でスタートする現在のス
ーパーバイザアドレス空間の2VSIZE バイトである。V
A(63..62)=11である場合、及びVA(3
1..29)=110である場合には、該アドレスは
(264−232+C0000000H)の開始アドレスを
有する0.5GBスーパーバイザアドレス空間を参照す
る。
ドレス空間に対するアドレスマップを示している。64
ビットカーネルモードにおいては、四つの別々の仮想ア
ドレス空間領域を同時的に使用することが可能であり、
それらは仮想アドレスの高次ビット即ちVA(63..
62)により区別されている。VA(63..62)=
00である場合には、選択される仮想アドレス空間は現
在のユーザアドレス空間の2VSIZE バイトである。VA
(63..62)=01である場合には、選択される仮
想アドレスは現在のスーパーバイザアドレス空間の2
VSIZE バイトである。VA(63..62)=10であ
る場合には、選択される仮想アドレス空間は、アドレス
範囲2×262乃至(3×262−1)内に位置されている
8個の2PS IZE バイトのマップされていないカーネル物
理空間のうちの一つである。特定のアンマップト即ちマ
ップされていない空間は、VA(61..59)の値に
依存し、且つ該空間はアドレス259バイト離れてスター
トする。(259−2PSIZE )バイトギャップ内のアドレ
ス(全て0でないVA(58..VSIZE)を有する
アドレス)はアドレスエラーを発生させる。VA(6
3..62)=11である場合には、選択される仮想ア
ドレス空間は、VA(61..VSIZE)が全て0で
ある場合にアドレス3×262でスタートする(2VSIZE
−231)バイトカーネル仮想アドレス空間か、又はVA
(61..31)が全て1である場合の32ビットカー
ネルモード空間と互換性のある2GB領域の何れかであ
る。
レッシング領域は拡張されたアドレッシングのサブセッ
トである。64ビットに符号拡張されている32ビット
アドレスは、264バイト仮想アドレス空間の上部及び下
部の2GB部分へマップする。32ビットアーキテクチ
ャの仮想アドレッシング及び64ビットアドレッシング
の32ビットモードは、該アドレスを2の補数の符号付
きアドレスとして見ることにより、より近付けた対応付
けとさせることが可能である。この様に見る場合には、
32ビット空間は、−231から、−231と−1との間の
カーネルアドレス及び0と(231−1)との間のユーザ
アドレスを有する(231−1)へ拡張する。同様に、6
4ビット空間は、−263から、0と(263−1)との間
のユーザ及びスーパーバイザアドレスと−263と−1と
の間のカーネルアドレスを有する(263−1)へ拡張す
る。従って、32ビットアドレス空間は、−231と−1
との間の32ビットモードカーネル及びスーパーバイザ
アドレス及び0と(231−1)との間の32ビットモー
ドユーザアドレスを有する64ビットアドレス空間の中
央のサブセットとして考えることが可能である。
変換 図5Dは、AU17及びそれと関連しており64ビット
アーキテクチャの拡張アドレッシングをサポートするア
ドレス変換回路の一実施例における構成及びアドレス経
路を示したブロック図である。このデータアドレス発生
回路及び命令アドレス発生回路は、種々の要素が64ビ
ット幅であるという点において従来技術と異なってい
る。例えば、符号拡張回路78は、16ビットオフセッ
トを64ビットへ拡張させ且つ例外ベクトルは符号拡張
された形態で格納される。
て32ビットアドレッシングを維持しながらフラットな
(即ち、セグメント化されていない)拡張された仮想ア
ドレス空間を与える部分を包含する64ビットアドレス
を受付けるという点において従来のアーキテクチャと異
なっている。従来のアーキテクチャにおける如く、12
ビットオフセットVA(11..0)はTLB20をバ
イパスし且つPA(11..0)を定義する。
ZE−1)..12)はTLB20へ送給され、且つV
A(63..29)はアドレステスト及び制御論理17
0へ送給される。マルチプレクサ172が該経路内に挿
入されており且つ32ビットユーザモードにおいてVA
(63..32)に対し0を代入する。高次ビットのゼ
ロ化は、2の補数のオーバーフローとなった有効なユー
ザアドレス(VA(31)=0)が符号拡張された形態
にあることを確保する。
85が、マップされた空間に対するTLBビット又はマ
ップされていないカーネル空間に対する仮想アドレスビ
ットの何れかを選択することによりPA((PSIZE
−1)..12)を供給する。マップされた空間の場合
には、該マルチプレクサはTLB((PSIZE−
1)..12)を選択し、それはVA(11..0)と
結合されて物理アドレスを与える。
VA(63..62)=10を持った2PSIZE バイト空
間及びVA(63..31)全て1及びVA(30)=
0を持った二つの229バイト空間を包含している。これ
らの条件の論理的ORがマルチプレクサ180,18
2,185を制御するために使用されており、従って、
それらは、物理アドレスに対してTLBビットではなく
VAビットを選択する。特に、VA(62)=1の場合
には、互換性非マップ型空間が表示され且つ一組のマル
チプレクサ190及び192によりVA((PSIZE
−1)..29)に対し0が代入されて、結果的に得ら
れる物理アドレスが0と(229−1)との間であること
を確保する。注意すべきことであるが、その空間が完全
な2PSIZEバイトであるか又は単に0.5GBであるか
否かを決定するためにはマップされていない空間に対し
てのVA(62)をテストすることが必要であるに過ぎ
ない。従って、ほとんどエキストラなハードウエアを必
要とすることなしに、拡張アドレッシングのサブセット
として32ビットアドレッシングをサポートすることが
可能である。
張仮想アドレスとのマッチに対して全てがチェックされ
る40個のエントリを有する完全に連想的なオンチップ
のTLBである。各TLBエントリは偶数−奇数ページ
対をマップする。ページ寸法は、どの仮想アドレスビッ
トがTLBにより無視されるべきであるかを特定するビ
ットマスクによりエントリ毎に制御される。ページ寸法
は、4KB(VA(11..0)がTLBをバイパス)
から16MB(VA(11..0)がTLBをバイパス
し且つVA(23..12)がTLBにより無視され
る)の間で変化することが可能である。
=36の場合のR4000プロセサに対するTLBフォ
ーマットを示している。公称的なTLBエントリは25
6ビットであり、将来のプロセサ構成に対してVSIZ
E及びPSIZEの拡張の余裕を有している。「−」で
示されたフィールドは格納されない。
レステスト及び制御論理170を示した概略ブロック図
である。該プロセサが、与えられたモード(ユーザ、ス
ーパーバイザ、カーネル)にある場合に、他のものでは
なく所定のアドレスにアクセスすることを可能としてい
るのはこの論理である。VA(36)及びVA(35)
に対するこの図の中の参照はVA(PSIZE)及びV
A(PSIZE−1)へ一般化させることが可能であ
り、一方VA(40)及びVA(39)に対する参照は
VA(VSIZE)及びVA(VSIZE−1)へ一般
化させることが可能である。多数の信号の名称は、NZ
又はAOとそれに続くビット位置を意味する二つの二桁
の番号から構成されている。NZ信号は、それが真であ
る場合に、その範囲内のビットが全て0でないことを意
味しており、AO信号は、それが真である場合に、該ビ
ットが全て1であることを意味している。例えば、NZ
3532は、VA(35..32)が全て0でない場合
にアサートされ、一方AO3532は、VA(35..
32)が全て1である場合にアサートされる。これらの
信号は、仮想アドレスが上述した種々の拘束条件を満足
することをテストするために使用される。
ドウエアのオーバーヘッドを必要とすることなしに逆互
換性を維持しながらコンピュータアーキテクチャを拡張
する有効な技術を提供している。本発明の拡張型仮想ア
ドレッシング技術は、将来のプロセサを実現するに当り
成長する余裕を有する十分なアドレス空間を提供してい
る。
詳細に説明したが、本発明は、これら具体例にのみ限定
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。例えば、上述した説明では、32ビット整数演算を
サブセットとして有する64ビット整数演算を実行し且
つ32ビットアドレッシングをサブセットとして有する
64ビットアドレッシングを実行するプロセサについて
説明しているが、両方の拡張が64ビットである必要は
ない。アドレッシングを拡張することなしに整数演算を
拡張するか、又はその逆の構成とすることも可能であ
る。更に、32ビットアドレッシングと64ビットアド
レッシングとが共通のアドレス発生回路を共用するもの
として説明したが、単にアドレス変換とエラーチェック
回路のみを共用する構成とすることも可能であり、その
場合においても顕著な効果を達成することが可能であ
る。
IONは機能フィールド内に格納。
IONは機能フィールド内に格納。
ーキテクチャの何れかを組込んだプロセサを示した概略
ブロック図。
図。
拡大概略ブロック図。
するアドレスマップを示した概略図。
対するアドレスマップを示した概略図。
回路を示した概略ブロック図。
した概略ブロック図。
を示した概略ブロック図。
けるシフタを示した拡大概略ブロック図。
ドレス空間に対するアドレスマップを示した概略図。
ドの仮想アドレス空間に対するアドレスマップを示した
概略図。
アドレス空間に対するアドレスマップを示した概略図。
及びアドレス変換回路を示した概略ブロック図。
ブロック図。
Claims (23)
- 【請求項1】 処理ユニットとメモリサブシステムとを
有するコンピュータシステムにおいて、前記処理ユニッ
トが、前記メモリのサブシステムから設置された命令に
応答し対応する動作を特定する手段と、多数の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ビットのロード、シフト及び加算命令に応答するも
のでないことを特徴とするコンピュータシステム。 - 【請求項2】 請求項1において、N=64及びN=3
2であることを特徴とするコンピュータシステム。 - 【請求項3】 請求項1において、更に、前記ロード回
路及び前記ロード符号拡張手段と関連しており更にmビ
ットの検索されたエンティティを画定するためにmビッ
ト未満の検索されたエントリをmビットへ符号拡張又は
ゼロ拡張させる手段が設けられていることを特徴とする
コンピュータシステム。 - 【請求項4】 請求項1において、前記加算符号拡張手
段を活性化させる手段がmビットオーバーフローのイベ
ントにのみ応答することを特徴とするコンピュータシス
テム。 - 【請求項5】 請求項1において、前記mビット加算命
令がmビットオーバーフローでトラップし且つ結果を発
生させることのないADD及びSUD命令を有してお
り、且つmビットオーバーフローでトラップすることが
なく且つ結果を発生するADDU及びSUBU命令を有
しており、且つ前記加算符号拡張手段を活性化させる手
段が前記ADDU及びSUBU命令に応答し且つ前記A
DD及びSUB命令に応答することがないことを特徴と
するコンピューターシステム。 - 【請求項6】 請求項1において、更に、前記加算器内
にNビットオーバーフロー検知手段が設けられており、
且つ前記Nビット加算命令が、Nビットオーバーフロー
でトラップし且つ結果を発生することのないDADD及
びDSUB命令を有しており且つNビットオーバーフロ
ーでトラップすることがなく且つ結果を発生するDAD
DU及びDSUBU命令を有していることを特徴とする
コンピュータシステム。 - 【請求項7】 データプロセサの実行ユニットにおい
て、二つのNビットオペランドを結合すべく動作可能な
加算器が設けられており、最大桁ビットはビット(N−
1)と指定され且つ最小桁ビットがビット(0)として
指定され、Nビットaddと命名された第一オペコード
に応答して一対の入力オペランドを加算し且つその加算
結果を供給する手段が設けられており、mビットadd
と命名された第二オペコードに応答し一対の入力オペラ
ンドを加算し且つ少なくとも初期的な結果のビット
(m)が初期的な結果のビット(m−1)に等しくない
場合にはその結果を供給する前にビット(N−1)乃至
ビット(m)を初期的結果のビット(m−1)の値にセ
ットする手段が設けられていることを特徴とする実行ユ
ニット。 - 【請求項8】 データプロセサの実行ユニットにおい
て、Nビットオペランドをシフトすべく動作可能なシフ
トユニットが設けられており、最大桁ビットはビット
(N−1)として指定され且つ最小桁ビットはビット
(0)として指定され、Nビット論理右シフトと命名さ
れた第一オペコードに応答して入力オペランドを指定し
た数のビット位置だけ右側へシフトさせ且つその指定し
た数がゼロでない場合には空きとされたビット位置を0
で充填させる手段が設けられており、mビット論理右シ
フトと命名された第二オペコードに応答して入力オペラ
ンドを指定した数のビット位置だけ右側へシフトさせ且
つその指定した数がゼロでない場合には空きとされたビ
ット位置は1及び次のn−m個の最大桁ビット位置は1
を0で充填させる手段が設けられていることを特徴とす
る実行ユニット。 - 【請求項9】 データプロセサの実行ユニットにおい
て、Nビットオペランドをシフトすべく動作可能なシフ
トユニットが設けられており、その最大桁ビットはビッ
ト(N−1)として指定され且つその最小桁ビットはビ
ット(0)として指定され、Nビット左シフトとして命
名された第一オペコードに応答して(1)入力オペラン
ドを指定された数のビット位置だけ左側へシフトさせ且
つその指定された数がゼロでない場合には(2)空きと
されたビット位置を0で充填させる手段が設けられてお
り、mビット左シフトと命名された第二オペコードに応
答して(1)入力オペランドを指定された数のビット位
置だけ左側へシフトさせ且つその指定された数がゼロで
ない場合には(2)空きとされたビット位置は1を0で
充填させ且つ(3)その結果のビット(N−1)乃至
(m)をその結果のビット(N−1)の値へセットさせ
る手段が設けられていることを特徴とする実行ユニッ
ト。 - 【請求項10】 Nビット幅のデ−タ経路及びレジスタ
を有しており且つNビットデータエンティティに対して
画定された拡張ア−キテクチュアをサポートすることが
可能であり、mビットデータエンティティ(なお、mは
N未満)に対して画定されたアーキテクチュアと逆互換
性があり且つmビット命令と呼ばれる一組の命令を有す
るコンピュータにおいてその他の修正なしにNビットエ
ンティティに関して動作すべく再定義された場合に符号
拡張された結果を発生するためにNビット符号拡張エン
ティティに関して本来的に動作を行う前記mビット命令
の第一サブセットが設けられており、その他の修正なし
でNビットエンティティに関して動作すべく再定義され
た場合に必ずしも符号拡張されていない結果を発生する
ためにNビット符号拡張エンティティに関して動作する
前記Nビット命令の第二サブセットが設けられており、
mビット未満のデータエンティティをロードし且つ該エ
ンティティのmビットへの拡張を実施する前記mビット
命令の第三サブセットが設けられており、その他の修正
なしでNビットエンティティに関して動作すべく再定義
されており前記mビット命令の第一サブセットを有する
前記拡張アーキテクチュア命令セットの第一サブセット
が設けられており、Nビットエンティティに関して動作
すべく再定義されており且つ更にビット(N−1)乃至
(m)がビット(mN−1)の値と等しいことを確保す
べく定義されており前記mビット命令の第二サブセット
を包含する前記拡張アーキテクチュア命令セットの第二
サブセットが設けられており、mビット未満のデータエ
ンティティをロードし且つ前記mビット命令の第三サブ
セットがmビットに対して実施するのと同一のタイプの
拡張をNビットに対して実施すべく再定義されており前
記mビット命令の第三サブセットを包含する前記拡張ア
ーキテクチュア命令セットの第三サブセットが設けられ
ており、その他の修正なしでNビットエンティティに関
して動作すべく再定義されており少なくとも前記mビッ
ト命令の第二サブセットのいくつかを包含する前記拡張
アーキテクチュア命令セットの第四サブセットが設けら
れていることを特徴とするコンピュータ。 - 【請求項11】 請求項10において、更に、前記拡張
アーキテクチュア命令セットの第一サブセットが論理演
算命令、セット命令及びブランチ命令を有しており、前
記拡張アーキテクチュア命令セットの第二サブセットが
加算及び減算命令乗算及び除算命令及びシフト命令を有
しており、前記拡張アーキテクチュア命令セットの第四
サブセットが加算及び減算命令及び乗算及び除算命令及
びシフト命令を有していることを特徴とするコンピュー
タ。 - 【請求項12】 Nビット幅のデ−タ経路を有するアド
レスユニットを有しており且つNビット仮想アドレスフ
ィールドを有する拡張ア−キテクチュアをサポートする
ことが可能であり且つmをN未満としてmビット仮想ア
ドレスフィールドを有する従来のアーキテクチュアと逆
互換性を有するコンピュータであって、尚前記従来のア
ーキテクチュアは仮想アドレスマップを有しており、そ
のカーネル及びユーザアドレスは該mビット仮想アドレ
スのビット(m−1)の値により区別されるものであっ
て、前記Nビット仮想アドレスのR個の最大桁ビットは
アドレス0で開始する下部領域及びアドレス2N −1で
終了する上部領域を包含する複数個の領域を画定してお
り、前記拡張アーキテクチュアが、前記下部領域の最下
部において開始する2VSIZE バイトユーザ空間と、前記
下部領域以外の領域の一つの最下部において開始する第
一カーネル空間と、前記上部領域の最上部で終了する第
二カーネル空間とを包含する仮想アドレスマップを有し
ており、前記第二カーネル空間は前記従来のアーキテク
チュアのッカーネル空間と同一の寸法であり、2VSIZE
は前記従来のアーキテクチュアのユーザ空間の寸法より
も大きいが一つの領域の寸法よりも小さくmビットアド
レスをNビットへ符号拡張する手段が設けられているこ
とを特徴とするコンピュータ。 - 【請求項13】 請求項12において、VSIZEがm
よりも大きいことを特徴とするコンピュータ。 - 【請求項14】 請求項12において、前記第一カーネ
ル空間が前記上部領域の最下部から開始することを特徴
とするコンピュータ。 - 【請求項15】 コンピュータシステムにおいて、アド
レス論理が設けられており、前記アドレス論理が、ビッ
トが最大桁ビットに対してVA(N−1)と命名されて
おり且つ最小桁ビットに対してVA(0)として命名さ
れており且つR個の最大桁VAビットが複数個の領域を
画定するNビット仮想アドレス(VA)を発生する手段
と、前記VAの少なくとも一部に応答してそれが応答す
るVAビットに基づいて物理的アドレスを発生するアド
レス変換手段と、前記アドレス変換手段と関連しており
VSIZEを(N−R)以下として前記R個の最大桁V
Aビットの少なくともいくつかに応答すると共にVA
(VSIZE−1)を包含する一つの範囲のVAビット
及びVA(VSIZE−1)より桁下のビットに応答し
且つVA(N−R−1)乃至VA(VSIZE)に応答
することなしにマップした物理アドレスを発生するTL
Bと、前記R個の最大桁VAビットの少なくとも幾つか
に応答すると共にVA(N−R−1)乃至VA(VSI
ZE)に応答し少なくとも一つの特定の領域VA(N−
R−1)乃至VA(VSIZE)がすべて0でない場合
にエラー信号を発生する手段が設けられていることを特
徴とするコンピュータシステム。 - 【請求項16】 請求項15において、前記アドレス変
換手段が、一つの範囲のマップされていないアドレスを
画定する少なくとも幾つかのVAビットに応答し前記T
LBにより変換されることなしにVAビットから直接的
にとられるビットを持ったマップされていない物理アド
レスを発生する手段を有することを特徴とするコンピュ
ータシステム。 - 【請求項17】 請求項15において、本コンピュータ
はユーザモードとカーネルモードとを包含する複数個の
モードのうちの選択した一つとすることが可能であり、
前記複数個の領域の一つがユーザ領域として指定されて
おり、前記アドレスエラー発生手段が、本コンピュータ
がユーザモードにある場合にアドレスエラーを特定し且
つ前記R個の最大桁VAビットが前記ユーザ領域以外の
領域を特定し、前記アドレスエラー発生手段が、本コン
ピュータがカーネルモードにある場合には、すべての領
域における少なくとも一つのアドレスに対してアドレス
エラーを特定することがないことを特徴とするコンピュ
ータシステム。 - 【請求項18】 請求項15において、カーネルモード
において許可されたアドレスの範囲が、mをVSIZE
以下として、VA(N−1)乃至VA(m−1)を持っ
たアドレスを包含することを特徴とするコンピュータシ
ステム。 - 【請求項19】 拡張アーキテクチュアをサポートする
ことの可能なコンピュータシステムにおいて、Nビット
仮想アドレス(VA)フィールドがビットVA(N−
1)乃至VA(0)を有しており、本コンピュータは、
mをN未満として、ビットVA(m−1)乃至VA
(0)を有するmビットVAフィールドにより特性づけ
られる従来のアーキテクチュアと逆互換性があり、アド
レス論理が設けられており、前記アドレス論理が、VA
(N−1)とVA(m)との間の範囲内のVAビットの
第一高次組及びVA(m)とVA(0)との間の範囲内
のVAビットの第一低次組に応答しそれが応答するVA
ビットに基づいて物理アドレスを発生するアドレス変換
手段と、VA(N−1)とVA(m)との間の範囲内の
VAビットの第二高次組及びVA(m−1)とVA
(0)との間の範囲内のVAビットの第二低次組とに応
答して前記VAが使用可能でないものとして定義した範
囲内ものである場合にアドレスエラーを発生するアドレ
スエラー手段と、尚前記第一及び第二高次組はそれぞれ
その中に第一及び第二個数のビットを有しており、Nビ
ットVAに応答して前記NビットVAのビットの第一高
次及び低次組を前記アドレス変換手段へ伝送し且つ前記
NビットVAのビットの前記第二高次及び低次組を前記
アドレスエラー手段へ伝送させる手段と、mビットVA
に応答して第一回数繰り返された前記nビットVAのV
A(m−1)の値及び前記mビットVAのビットの前記
第一低次組を前記アドレス変換手段へ伝送すると共に前
記第二回数繰り返された前記mビットVAのVA(m−
1)の値及び前記mビットVAのビットの前記第二低次
組を前記アドレスエラー手段へ伝送する手段とを有する
ことを特徴とするコンピュータシステム。 - 【請求項20】 請求項19において、前記第一組が、
VA(N−1)とVA(m)との間の範囲内のすべての
VAビットよりもより少ない数有することを特徴とする
コンピュータシステム。 - 【請求項21】 請求項19において、前記第二組が、
VA(m−1)とVA(0)との間の範囲内のすべての
VAビットを有することを特徴とするコンピュータシス
テム。 - 【請求項22】 請求項19において、前記第三組が、
VA(n−1)とVA(m)との間の範囲内のすべての
VAビットを有することを特徴とするコンピュータシス
テム。 - 【請求項23】 請求項19において、前記第四組が、
VA(m−1)とVA(0)との間の範囲内のすべての
VAビットよりも少ない数有することを特徴とするコン
ピュータシステム。
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 true JPH08106416A (ja) | 1996-04-23 |
JP3554342B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7945766B2 (en) | 2008-03-21 | 2011-05-17 | Fujitsu Limited | Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file |
Families Citing this family (79)
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 |
EP1229440B1 (en) * | 1993-05-27 | 2007-05-02 | Matsushita Electric Industrial Co., Ltd. | Program converting unit and processor improved in address management |
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 |
US5835968A (en) * | 1996-04-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Apparatus for providing memory and register operands concurrently to functional units |
US6085302A (en) * | 1996-04-17 | 2000-07-04 | Advanced Micro Devices, Inc. | Microprocessor having address generation units for efficient generation of memory operation addresses |
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 |
CN100351782C (zh) * | 1999-05-13 | 2007-11-28 | Arc国际美国控股公司 | 用于设计数字处理器的方法以及装置 |
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 |
CN1902600A (zh) * | 2003-06-17 | 2007-01-24 | 皇家飞利浦电子股份有限公司 | 微控制器和寻址方法 |
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 |
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 |
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 |
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 |
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 |
GB2435116B (en) * | 2006-02-10 | 2010-04-07 | Imagination Tech Ltd | Selecting between instruction sets in a microprocessors |
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 |
US20070204139A1 (en) | 2006-02-28 | 2007-08-30 | Mips Technologies, Inc. | Compact linked-list-based multi-threaded instruction graduation buffer |
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 |
US20080016326A1 (en) | 2006-07-14 | 2008-01-17 | Mips Technologies, Inc. | 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 |
US9946547B2 (en) * | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
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 |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
EP2584408B1 (en) | 2007-02-06 | 2020-10-07 | Canon Kabushiki Kaisha | Imprint method and imprint apparatus |
JP2008204249A (ja) * | 2007-02-21 | 2008-09-04 | Renesas Technology Corp | データプロセッサ |
US9652210B2 (en) | 2007-08-28 | 2017-05-16 | Red Hat, Inc. | Provisioning a device with multiple bit-size versions of a software component |
US8832679B2 (en) * | 2007-08-28 | 2014-09-09 | Red Hat, Inc. | Registration process for determining compatibility with 32-bit or 64-bit software |
US20090182984A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Execute Relative Long Facility and Instructions Therefore |
JP2010160622A (ja) * | 2009-01-07 | 2010-07-22 | Toshiba Corp | シミュレータ |
US10768930B2 (en) * | 2014-02-12 | 2020-09-08 | MIPS Tech, LLC | Processor supporting arithmetic instructions with branch on overflow and 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 | 深圳市云中鹤科技股份有限公司 | 一种数字化技术架构的部署方法和装置 |
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 |
US4386399A (en) * | 1980-04-25 | 1983-05-31 | Data General Corporation | Data processing 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 |
EP0039227A3 (en) * | 1980-04-25 | 1982-09-01 | Data General Corporation | Data processing system |
US4398243A (en) * | 1980-04-25 | 1983-08-09 | Data General Corporation | Data processing system having a unique instruction processor 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
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7945766B2 (en) | 2008-03-21 | 2011-05-17 | Fujitsu Limited | Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file |
Also Published As
Publication number | Publication date |
---|---|
DE69231451D1 (de) | 2000-10-19 |
JP3657949B2 (ja) | 2005-06-08 |
EP0503514B1 (en) | 1998-11-18 |
JP3554342B2 (ja) | 2004-08-18 |
JP2004094959A (ja) | 2004-03-25 |
DE69227604T2 (de) | 1999-06-24 |
US5420992A (en) | 1995-05-30 |
EP0503514A2 (en) | 1992-09-16 |
EP0871108A1 (en) | 1998-10-14 |
EP0871108B1 (en) | 2000-09-13 |
DE69231451T2 (de) | 2001-05-10 |
DE69227604D1 (de) | 1998-12-24 |
EP0503514A3 (ja) | 1994-01-26 |
US5568630A (en) | 1996-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5420992A (en) | Backward-compatible computer architecture with extended word size and address space | |
JP5357181B2 (ja) | コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム | |
JP5052678B2 (ja) | コンピュータを動作させる方法及びシステム | |
JP5039905B2 (ja) | 2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令 | |
US5781750A (en) | Dual-instruction-set architecture CPU with hidden software emulation mode | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
JP5379825B2 (ja) | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ | |
JP2011509475A5 (ja) | ||
WO2009087158A2 (en) | Compare and branch facility and instruction therefore | |
US20090182988A1 (en) | Compare Relative Long Facility and Instructions Therefore | |
KR101285072B1 (ko) | 실행 관련 명령어 | |
US7315921B2 (en) | Apparatus and method for selective memory attribute control | |
US20090182992A1 (en) | Load Relative and Store Relative Facility and Instructions Therefore | |
US20090182985A1 (en) | Move Facility and Instructions Therefore | |
JP2011509473A (ja) | Rotatetheninsertselectedbitsファシリティ及びそのための命令 | |
US20220197654A1 (en) | Apparatus and method for complex matrix conjugate transpose | |
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 |