JPH06119166A - 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法 - Google Patents

簡略命令セットプロセッサでレジスタ内データ操作を行なう方法

Info

Publication number
JPH06119166A
JPH06119166A JP3254082A JP25408291A JPH06119166A JP H06119166 A JPH06119166 A JP H06119166A JP 3254082 A JP3254082 A JP 3254082A JP 25408291 A JP25408291 A JP 25408291A JP H06119166 A JPH06119166 A JP H06119166A
Authority
JP
Japan
Prior art keywords
register
byte
address
instruction
unaligned
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
Application number
JP3254082A
Other languages
English (en)
Other versions
JP3105960B2 (ja
Inventor
Richard L Sites
エル シートス リチャード
Richard T Witek
ティー ウィテック リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH06119166A publication Critical patent/JPH06119166A/ja
Application granted granted Critical
Publication of JP3105960B2 publication Critical patent/JP3105960B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 RISC型プロセッサアーキテクチャの全て
の利点を活用しつつも既存のCISC型プロセッサにつ
いて既に形成されているデータ構造、コードを高性能プ
ロセッサに使用するよう変換できるようにする。 【構成】 RISC(簡略命令セット)型の高性能CP
U10は、標準固定命令16〜19を用いる。ロードロ
ック/記憶条件命令によりアトミックバイト書き込みを
行うことができる。条件移動命令により多数の短い分岐
を排除できる。条件移動命令では、レジスタがテストさ
れ、条件に合致する場合に第2レジスタが第3レジスタ
へ移動され、このファンクションが短い分岐に取って替
わり、命令流のシーケンスを維持。分岐のターゲットを
予想し、新命令をフェッチすることにより実行速度が高
められる。標準サイズ命令の未使用ビットを用いて、ジ
ャンプ命令、サブルーチンへのジャンプ命令に対する予
想ターゲットアドレスのヒントが与えられる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデジタルコンピュータに
係り、より詳細には、簡略化した命令セットを実行する
高性能プロセッサに係る。
【0002】
【従来の技術】複雑な命令セットのプロセッサ、即ちC
ISCプロセッサは、それらの命令セットに非常に多数
の命令を有していることを特徴とするもので、複雑なメ
モリアクセスモードを伴うメモリ−メモリ命令をしばし
ば含んでいる。これらの命令は通常は可変長さのもので
あり、単純な命令はおそらく長さが1バイトしかない
が、その長さは数十バイトに達することもある。VAX
(登録商標)命令セットはCISCの主たる例で、1又
は2バイトのオペレーションコードと0ないし6個のオ
ペランド指定子とを有する命令を使用しており、各オペ
ランド指定子は長さが1バイトから多数バイトまで達す
る。オペランド指定子のサイズは、アドレスモード、変
位のサイズ(バイト、ワード又はロングワード)等によ
って異なる。オペランド指定子の第1バイトは、そのオ
ペランドに対するアドレスモードを記述するもので、一
方、オペレーションコードは、オペランドの数1、2又
は3を定める。しかしながら、オペレーションコード自
体がデコードされるときは、オペランド指定子がまだデ
コードされていないために命令の全長がまだプロセッサ
に分からない。VAN型のプロセッサの別の特徴は、ク
オドワード又はロングワード参照に加えてバイト又はバ
イトストリングのメモリ参照を用いていることであり、
即ちメモリ参照は1バイトから多ワードまでの可変長さ
のものであり、不整列のバイト参照を含んでいる。
【0003】簡略命令セットのプロセッサ即ちRISC
プロセッサは、命令の数が少なくて簡単にデコードでき
ることを特徴とすると共に、全ての演算/論理オペレー
ションをレジスタ対レジスタで行わねばならないことを
特徴とする。別の特徴は、複雑なメモリアクセスができ
ないことで、全てのメモリアクセスはレジスタロード/
記憶オペレーションであり、そして少数の比較的簡単な
アドレスモード、即ちオペランドアドレスを指定する若
干の方法しかないことである。命令は1つの長さしかな
く、メモリアクセスは通常整列された標準データ幅のも
のである。命令の実行はマイクロコーデイングとは異な
る直接固定布線式のものである。命令サイクルタイムは
固定であり、命令は比較的単純に定められ、それらは全
て1つの短いサイクルで実行される(平均的に、という
のは、パイプラインが実際の実行を数サイクルに分散す
るからである)。
【0004】CISCプロセッサの1つの利点は書き込
みソースコードにある。種々のパワフルな命令、メモリ
アクセスモード及びデータ形式により、コードの各ライ
ンに対してより多くの作業が行われるはずであるが(実
際には、コンパイラはこの利点を完全に活用するコード
を発生しない)、ソースコードのコンパクトさにおいて
得られるものは、実行時間を犠牲として得られるもので
ある。特に、現在システムに要求される性能レベルを実
現するために命令実行のパイプライン化が必要となると
きには、次々の命令のデータ又は状態の依存性と、メモ
リアクセス時間対マシンサイクルタイムの大きな相違と
によって、著しいストール及び例外が生じ、実行速度が
低下する。RISCプロセッサの利点はコードの実行速
度にあるが、コードの各ラインによって実行される作業
が少なくそしてあるタスクを実行するためのコードが非
常に長くなるという欠点がある。VAXコードの1つの
ラインは、RISCコードの多数のラインと同じものを
実行できる。
【0005】CPUがメモリよりも相当に速かったとき
には、1命令当たりに多くの作業を行なうのが効果的で
あった。というのは、もしそうでなければ、CPUはメ
モリが命令を送り出すのを常に待機することになるから
であり、このファクタは、命令をより複雑化し、サブル
ーチンとして実行されるであろうものを覆ってしまうこ
とになる。CPU及びメモリの速度のバランスがとれる
ようになってくると、メモリシステムが各サイクル中に
1つの命令とあるデータを送り出せるという仮定のもと
に、RISC方式のような単純な解決策を実現できるよ
うになった。ハイアラーキメモリ技術及び高速アクセス
サイクルがこれらのより速いメモリ速度をもたらした。
CISC対RISCの選択に影響を及ぼす別のファクタ
は、VLSI構造のCPUによってオフチップ対オンチ
ップ相互接続部の相対的なコストが変わることである。
ボードではなくチップの構造により経済性が変化し、即
ちまず、1つのチップ上で充分なほどアーキテクチャを
簡単にし、次いで、メモリ参照のためにオフチップにな
るのを回避するようにより多くのオンチップメモリが可
能(そして必要)になった。比較においての更に別のフ
ァクタは、CISC解決策の場合のようにより複雑な命
令及びアドレスモードを加えると、命令実行プロセスの
段階が複雑化する(従って低速化する)ことである。複
雑なファンクションは、単純な命令の同等のシーケンス
よりもファンクションの実行をより高速化するが、命令
のサイクルタイムを長くし、全ての命令の実行速度を下
げ、従って、追加されるファンクションは、命令実行速
度の低下を補償するに充分なほど全性能を高めるもので
なければならない。
【0006】
【発明が解決しようとする課題】RISCプロセッサの
性能利点は、これら及び他のファクタを考慮しても、そ
の欠点に勝るものであると考えられ、既存のソフトウエ
アベースに対してそれがないとすれば、ほとんどの新し
いプロセッサはおそらくRISCの特徴を用いて設計さ
れることになろう。問題は、多くの会社が、過去10年
ないし15年に最も広く使用されてきたCISC型プロ
セッサを用いてアプリケーションプログラムやデータ構
造においてオペレータのトレーニングやコード自体のコ
ストを含む長年のオペレーション背景に既に多大な資本
を投資していることである。新たなプロセッサアーキテ
クチャを受け入れるために全てのコード及びデータ構造
を書き直す作業に要する経費及び障害は、最終的に実現
できると予想される性能利点が顕著なものであったとし
ても、計り知れないものである。
【0007】従って、本発明の目的は、RISC型プロ
セッサアーキテクチャの全ての性能利点を達成し、しか
も、既存のCISC型プロセッサに対してこれまでに形
成されているデータ構造及びコードを高性能プロセッサ
に使用するように変換できるようにすることである。
【0008】
【課題を解決するための手段】本発明の一実施例によれ
ば、標準化された固定命令サイズを用いたRISC型の
高性能プロセッサであって、簡単なアドレスモードを用
いて簡単化されたメモリアクセスデータ幅のみを許すプ
ロセッサが提供される。命令セットは、レジスタ−レジ
スタオペレーション(ALU等を用いた演算論理型オペ
レーション)と、メモリを参照するレジスタロード/記
憶オペレーションとに限定され、メモリ−メモリオペレ
ーションは行われないし、ALUや他の論理機能を実行
するレジスタ−メモリオペレーションも行われない。こ
れら命令によって実行されるファンクションは、デコー
ドが簡単で且つ短いサイクルで実行する非マイクロコー
ド実施を許すように限定される。1つの実施例では,オ
ンチップのフローティングポイント処理が行われ,オン
チップの命令及びデータキャッシュが使用される。
【0009】既に確立されているデータ構造を使用でき
るようにするためにバイト操作命令が含まれる。これら
の命令は、非整列ロード及び記憶命令と共に、レジスタ
内バイト抽出、挿入及びマスキングを行う構成体を含ん
でいて、たとえ実際のメモリオペレーションが整列クオ
ドワードの性質であっても、バイトアドレスを使用でき
るようにする。
【0010】ロード/ロック及び記憶/条件命令を設け
ることにより、アトミックバイト書き込みを実施するこ
とができる。多バイト(例えば、クオドワード)整列メ
モリにバイトアドレスを書き込むために、CPUは、ク
オドワード(又はロングワード)をロードしそしてこの
位置をロックし、クオドワードの残り部分が妨げられな
いようにしつつレジスタのバイトアドレスに書き込みを
行い、次いで、クオドワードがロード/ロックオペレー
ション以来別のプロセッサによって書き込まれたかどう
かに基づいて、更新したクオドワードを条件に応じてメ
モリに記憶する。
【0011】本発明の1つの特徴による別のバイト操作
命令は、バイト比較命令である。レジスタ内のクオドワ
ードの全てのバイトが別のレジスタ内の対応するバイト
と比較される。その結果、単一バイト(比較された各バ
イトごとに1ビット)が第3レジスタに入れられる。こ
のオペレーションは汎用レジスタに対して行われるので
(特殊なハードウェア位置ではくなくて)、多数のバイ
ト比較を順次に行うことができ、割り込み等に対して追
加の状態を考慮する必要はない。このバイト比較はバイ
トゼロ化命令と共に効果的に使用することができ、バイ
トゼロ化命令ではクオドワードの選択されたバイトがゼ
ロにされ、レジスタの下位バイトのビットによってバイ
トが選択される。即ち、バイト比較の結果を用いて別の
レジスタのバイトをゼロにすることができる。
【0012】実行の速度は,命令流のシーケンスに強く
依存しており、フェッチした命令流がフラッシュされて
新たなシーケンスが始まる間には分岐によってシーケン
スが破壊されストールが発生される。条件に応じた移動
命令を設けることにより、多数の短い分岐を全て排除す
ることができる。条件に応じた移動命令はレジスタをテ
ストし、条件に合致する場合には第2レジスタを第3へ
移動する。このファンクションを短い分岐と取り替える
ことによって命令流のシーケンス性を維持することがで
きる。
【0013】分岐を回避できない場合には、分岐のター
ゲットを予想しそしてこの予想に基づいて新たな命令を
予めフェッチすることにより実行速度を上げることがで
きる。一実施例の特徴によれば、全ての順方向分岐は行
わないと予想しそして全ての逆方向分岐(ループに対し
て一般にそうであるように)は行うものと予想すること
を必要とする分岐予想の規定に従うようにされる。コン
パイルの際には、最も生じ勝ちな経路が順方向ではなく
て逆方向となり、従って予想される経路より頻繁に取ら
れて、適当な命令が予めフェッチされる。
【0014】別の性能改善は、標準サイズ命令の未使用
ビットを用いて、ジャンプ及びサブルーチンへのジャン
プ等のためのめの予想されるターゲットアドレスのヒン
トを与えることである。従って、ターゲットは、実際の
アドレスを計算してレジスタに入れる前に予めフェッチ
することができる。命令の実行時に上記ヒントのターゲ
ットアドレスが計算アドレスに一致する場合には、予め
フェッチしたアドレスが既にパイプラインにあり、著し
く速く実行できることになる。上記ヒントはコンパイラ
によってジャンプ命令に加えられる。
【0015】更に、ジャンプ命令の未使用の変位部分
は、実際のジャンプの形式、即ちジャンプ、サブルーチ
ンへのジャンプ,サブルーチンからの復帰を定めるフィ
ールドを含むことができ、従って、予想されるターゲッ
トアドレスをスタックに入れて、命令が実行されてしま
う前に予めのフェッチを行えるようにするか、或いはヒ
ントによって定められたオペレーションに適した他の動
作を行えるようにする。ヒントはハードウェアによって
無視されてもよく、もしこのようにされれば、コードは
速度が下がるだけで適切に実行される。
【0016】一実施例の特徴によれば、プロセッサは可
変メモリページサイズを使用しており、仮想アドレス動
作を実施するための変換バッファの入力を最適に使用す
ることができる。ページテーブル入力にはグラニュラリ
ティヒントが追加され、この入力についてのページサイ
ズが定められる。非常に多数の逐次のページが同じ保護
及びアクセス権を分担する場合には、これら全てのペー
ジを同じページテーブル入力で参照することができ、従
って、変換バッファをより効率的に使用できるようにな
る。変換バッファにおけるヒントの見込みが増大し、ペ
ージテーブルをアクセスし損なう回数が最小にされる。
【0017】更に別の特徴は、データブロックを使用す
る前にそれをメモリハイアラーキの高速アクセスキャッ
シュに移動するように働く予めのフェッチ命令が追加さ
れることである。この予めのフェッチ命令は、ベクトル
プロセッサと同様のファンクションを実行するようにコ
ンパイラによって挿入されるが、ベクトルハードウェア
は必要としない。この予めのフェッチ命令は、メモリ例
外又は保護或いはアクセス違反を発生せず、従って、予
めのフェッチが失敗しても実行速度を低下することはな
い。又、命令は任意であり、プロセッサがこれを実行で
きない場合には、通常のコードが問題なく実行される。
【0018】本発明の新規な特徴は、特許請求の範囲に
指摘する。しかしながら、本発明自体及びその特徴と効
果は、添付図面を参照して特定実施例の以下の詳細な説
明を読むことにより容易に理解されよう。
【0019】
【実施例】図1を参照すれば、本発明の特徴を組み込ん
でおり一実施例に基づいて構成されたコンピュータシス
テムは、CPU10を備えており、このCPUはシステ
ムバス11によってメインメモリ12に接続され、I/
Oユニット13もシステムバスを経てアクセスされる。
このシステムは、スタンドアローンワークステーション
から中間レンジのマルチプロセッサまでの種々のレベル
のものでよく、この場合、CPU15のような他のCP
Uもシステムバス11を経てメインメモリ12をアクセ
スする。
【0020】CPU10は単一チップの集積回路装置で
あるのが好ましいが、マルチチップ形態で構成されたプ
ロセッサに本発明の特徴を用いることもできる。単一チ
ップ内には、インテガー実行ユニット16(“E−ボッ
クス”と称する)と共に、フローティングポイント実行
ユニット17(“F−ボックス”と称する)が含まれ
る。命令フェッチ及びデコードは、命令ユニット18即
ち“I−ボックス”において行われ、そしてアドレスユ
ニット即ち“A−ボックス”19は、アドレス発生、メ
モリマネージメント、書き込みバッファ動作及びバスイ
ンターフェイスのファンクションを実行する。メモリは
ハイアラーキであり、オンチップ命令及びデータキャッ
シュが一実施例において命令ユニット18及びアドレス
ユニット19に含まれており、一方、より大きな第2レ
ベルのキャッシュ20はオフチップであり、アドレスユ
ニット19のキャッシュ制御器によって制御される。
【0021】CPU10は以下に述べる命令セットを使
用しており、全ての命令は固定サイズのもので、この場
合は32ビット即ち1ロングワードである。使用する命
令及びデータの形式は、図2に示すように、バイト、ワ
ード、ロングワード及びクオドワードに対するものであ
る。ここで使用する1バイトは8ビットであり、1ワー
ドは16ビット即ち2バイトであり、ロングワードは3
2ビット即ち4バイトであり、そしてクオドワードは6
4ビット即ち8バイトである。CPU10内のデータ路
及びレジスタは一般に64ビット即ちクオドワードサイ
ズであり、メモリ12及びキャッシュは基本的な転送単
位としてクオドワードを使用している。クオドワード又
はロングワードのみのロード及び記憶を行えるようにす
ることにより性能が促進されるが、公知のソフトウェア
開発に用いられていたデータ形式に対応できるようにす
るために、クオドワード又はロングワードのみのロード
と記憶の特徴を維持しつつ、ある独特の命令によってバ
イト操作が許容される。
【0022】図3には、命令ユニット18又はI−ボッ
クスが詳細に示されている。命令ユニット18の主なフ
ァンクションは、E−ボックス16、A−ボックス19
及びF−ボックス17に命令を発行することである。命
令ユニット18は、おそらく8Kバイトの命令流データ
を記憶する命令キャッシュ21を備えており、パイプラ
インが進行する場合にこの命令流データのクオドワード
(2つの命令)が各サイクルごとに命令レジスタ22に
ロードされる。命令ユニット18は、好ましい実施例で
は、デコーダ23及び24において2つの命令を並列に
デコードし、次いで、チェック回路25により必要なリ
ソースが両方の命令に対して使用できるかどうかチェッ
クする。これらのリソースが使用できそして二重発行が
可能な場合には、バス26及び27を経てレジスタアド
レスをそしてマイクロコントロールバス28及び29を
経てコントロールビットをCPU10内の適当なエレメ
ントに送ることにより両方の命令が発行される。第1命
令に対してしかリソースが使用できず且つこれら命令を
二重発行できない場合には、命令ユニット18はデコー
ダ23から第1命令のみを発行する。命令ユニット18
は、リソースが第2命令に対して使用でき(デコーダ2
4から)そして第1命令に対して使用できない場合に
は、命令を発行しない。命令ユニット18は、第1命令
に対するリソースが使用できるようになるまで命令を発
行しない。一対の命令のうちの第1のみが発行される
(デコーダ23から)場合には、命令ユニット18は別
の命令を命令レジスタ22に送り込んで二重発行を再び
試みることはしない。二重発行は、整列されたクオドワ
ード対がメモリ(又は命令キャッシュ21)からフェッ
チされて整列されたクオドワードとして命令レジスタ2
2にロードされたときにこれらクオドワード対に対して
試みられるだけである。
【0023】命令ユニット18は、レジスタ22にロー
ドされるべき命令流の命令に応答する分岐予想回路30
を含んでいる。この予想回路30は、サブルーチン復帰
スタック31と共に、分岐アドレスを予想しそしてアド
レス発生回路32に命令流をそれが必要となる前に予め
フェッチさせるために用いられる。サブルーチン復帰ス
タック31(例えば、4つの入力を有する)は、以下に
述べるように、ジャンプ、サブルーチンへのジャンプ及
び復帰命令内のヒントビットによって制御される。仮想
PC(プログラムカウンタ)33は、命令流データに対
するアドレスを選択された順序で発生するためにアドレ
ス発生回路32に含まれている。
【0024】1つの分岐予想方法は、分岐変位の符号ビ
ットの値を使用して条件分岐を予想することであり、こ
れにより、回路30は、入力35に現れる分岐命令内の
変位の符号ビットに応答する。符号ビットが負である場
合には、分岐が行われることを予想し、アドレス回路3
2はレジスタRaに変位を加えて、フェッチすべき新た
なアドレスシーケンスの第1アドレスを発生する。符号
が正である場合には、分岐が行われないと予想し、その
ときの命令流がシーケンスにおいて継続される。
【0025】命令ユニット18は、8入力の完全連想変
換バッファ(TB)36を含んでいて、最近使用された
命令流アドレス変換と、8Kバイトページに対する保護
情報とををキャッシュ記憶する。公称64ビットアドレ
スが可能であるが、実際の問題として、現在では43ビ
ットアドレスで充分である。各サイクルごとに、43ビ
ット仮想プログラムカウンタ33が命令流TB36に与
えられる。仮想PCに関連したページテーブル入力(P
TE)がTB36にキャッシュ記憶される場合には、こ
の仮想PCを含むページに対するページフレーム番号
(PFN)及び保護ビットが命令ユニット18によって
使用されて、アドレス変換及びアクセスチェックが完了
される。従って、物理的なアドレスが命令キャッシュ2
1のアドレス入力37に加えられるか、又はキャッシュ
ミスがある場合には、この命令流の物理的なアドレスが
バス38によりアドレスユニット19を経てキャッシュ
20又はメモリ12へ加えられる。好ましい実施例で
は、命令流TB36が以下に述べるように4つのグラニ
ュラリティヒントブロックサイズのいずれかをサポート
し、これにより、TB36におけるヒントの確立が高め
られる。
【0026】実行ユニット即ちE−ボックス16が図4
に詳細に示されている。この実行ユニット16は、演算
/論理ユニット(ALU)40と、バレルシフタ41
と、インテガー(整数)乗算器42とを含む64ビット
のインテガー実行データ路を備えている。又、実行ユニ
ット16は、レジスタR0からR31を含む32レジス
タ64ビット幅のレジスタファイル43を含んでいる
が、R31は全て0として固定布線される。レジスタフ
ァイル43は4つの読み取りポートと、2つの書き込み
ポートとを有しており、インテガー実行データ路及びア
ドレスユニット19の両方に対しオペランド(結果)の
ソーシング(シンキング)を行えるようにする。バス構
造体44は、レジスタファイル43の読み取りポートの
2つを、命令ユニット18からバス28又は29を経て
送られたデコードされた命令の制御ビットにより指定さ
れたALU40、シフタ42又は乗算器42の選択され
た入力へ接続すると共に、適当なファンクションの出力
を書き込みポートの1つに接続して、結果を記憶する。
即ち、命令からのアドレスフィールドはバス26又は2
7によって送られて、命令の実行に使用するレジスタを
選択し、そして制御バス28又は29はALU等におけ
るオペレーションを定義し、バス構造体44のどの内部
バスを使用するか等を定義する。
【0027】A−ボックス即ちアドレスユニット19が
図5に詳細に示されている。A−ボックス19は、5つ
のファンクション、即ち変換バッファ48、入ってくる
データに対するロードサイロ49、出ていく書き込みデ
ータに対する書き込みバッファ50、データキャッシュ
へのインターフェイス51及びバス11への外部インタ
ーフェイス52を用いたアドレス変換を含んでいる。ア
ドレス変換データ路は、有効なアドレスを発生する(読
み取り及び書き込みポートの第2セットを経てレジスタ
ファイル43をアクセスすると共にPCをアクセスする
ことにより)変位アダー53と、アドレスバス54に物
理アドレスを発生するデータTB48と、パイプライン
に必要とされるマルチプレクサ及びバイパス装置とを有
している。
【0028】32入力の完全連想データ変換バッファ4
8は、8Kバイトページに対する最近使用されたデータ
流ページテーブル入力をキャッシュ記憶する。各入力は
4つのグラニュラリテヒントブロックサイズのいずれか
をサポートし、検出器55は、以下で述べるようにグラ
ニュラリティヒントに応答して、仮想アドレスバス56
から物理アドレスバス54へ送られた仮想アドレスの下
位ビットの数を変更する。
【0029】ロード及び記憶命令に対して、有効な43
ビット仮想アドレスがバス56を経てTB48に送られ
る。送られた仮想アドレスのPTEがTB48にキャッ
シュ記憶される場合には、そのアドレスを含むページに
対するPFN及び保護ビットがアドレスユニット19に
よって用いられて、アドレス変換及びアクセスチェック
を完了する。
【0030】書き込みバッファ50は、次の2つの目的
を果たす。即ち、(1)記憶データを受け入れるために
広帯域(しかし限定された)リソースを設けることによ
りCPUのストールサイクルの数を最小にする。これ
は、各CPUサイクルごとに1つのクオドワードという
ピークレートで記憶データを発生できるために必要とさ
れるもので、このピークレートは外部キャッシュ20が
データを受け入れられるレートよりも大きいものであ
る。(2)記憶データを整列された32バイトキャッシ
ュブロックへ集合させて,CPU10から外部キャッシ
ュ20へデータを書き込めるレートを最大にするよう試
みる。書き込みバッファ50は8つの入力を有してい
る。書き込みバッファ入力は、書き込むべきデータを含
んでいない場合に無効であり、書き込むべきデータを含
んでいる場合に有効である。書き込みバッファ50は、
2つのポインタ、即ちヘッドポインタ57とテイルポイ
ンタ58とを含んでいる。ヘッドポインタ57は、最も
長い時間周期にわたって有効であった有効な書き込みバ
ッファ入力を指す。テイルポインタ58は、次に有効と
なる有効バッファ入力スロットを指す。書き込みバッフ
ァ50が完全にいっぱいに(空に)なると、ヘッダ及び
テイルポインタは同じ有効(無効)入力を指す。書き込
みバッファ50に新たな記憶情報が送られるたびに、命
令によって発生された物理アドレスが各有効書き込みバ
ッファ入力のアドレスと比較される。アドレスが有効書
き込みバッファ入力のアドレスと同じ整列された32バ
イトブロックにある場合には、記憶データがその入力と
合流され、入力のロングワードマスクビットが更新され
る。書き込みバッファに一致アドレスが見つからない場
合には、テイルポインタ58によって指示された入力に
記憶データが書き込まれ、入力が有効化され、テイルポ
インタ58が次の入力に増加される。
【0031】アドレスユニット19は、完全に折り返さ
れたメモリ参照パイプラインを含んでおり、これは、デ
ータキャッシュ59(D−キャッシュ)をいっぱいにす
ることが必要になるまで各サイクルごとに新たなロード
又は記憶命令を受け入れることができる。データキャッ
シュ59のラインはロードミス(外れ)の際に割り当て
られるだけであるから、アドレスユニット19は、ロー
ドミスが生じるまで各サイクルごとに新たな命令を受け
入れる。ロードミスが生じたときには、命令ユニット1
8は、レジスタファイル43のロードポートを使用する
全ての命令(ロード、記憶、ジャンプサブルーチン等の
命令)の発行を停止する。
【0032】各データキャッシュ59のルックアップの
結果はパイプラインにおいて後で分かり(以下で述べる
段階S7)そしてパイプの段階S3において命令が発生
されるので、アドレスユニット19のパイプラインにお
いて、データキャッシュ59をミスするロード命令より
後方に2つの命令が生じる。これら2つの命令は次のよ
うに取り扱われる。第1に、データキャッシュ59にヒ
ットする(当たる)ロードは、ミスのもとでヒットする
ように完了することができる。第2に、ロードミスはサ
イロ49に入れられ、第1ロードミスが完了した後に順
に再生される。第3に、パイプラインに対して公称時間
に記憶命令がデータキャッシュ59に与えられる。これ
らはサイロ結合され、ロードミスに対して順に書き込み
バッファ50に与えられる。
【0033】図6に詳細に示されたオンチップのパイプ
ラインフローティングポイントユニット17即ちF−ボ
ックスは、以下に述べる命令セットに基づいてDEC及
びIEEEフローティングポイント命令を実行すること
ができる。グローティングポイントユニット17は、3
2入力64ビットのフローティングポイントレジスタフ
ァイル61と、フローティングポイント演算論理ユニッ
ト62とを備えている。除算及び乗算は、乗算/除算回
路63において行われる。バス構造体64は、レジスタ
ファイル61の2つの読み取りポートを、命令ユニット
18からバス28又は29を経て送られたデコードされ
た命令の制御ビットによって指示される適当なファンク
ション回路に相互接続する。オペレーションのために選
択されるレジスタは、命令デコードからの出力バス26
又は27によって定められる。フローティングポイント
ユニット17は各サイクルごとに命令を受け入れること
ができるが、フローティングポイント除算命令の場合に
は数サイクルに一回しか受け入れられない。全てのフロ
ーティングポイント命令に対し2サイクル以上の待ち時
間は禁止される。
【0034】ここに示す実施例では、CPU10は、8
Kバイトのデータキャッシュ59と、8Kバイトの命令
キャッシュ21とを有しており、これらキャッシュのサ
イズは利用できるチップエリアによって決まる。オンチ
ップのデータキャッシュ59は、書き込みスルー、直接
マップ式、読み取り割り当ての物理キャッシュであり、
32バイト(1ヘクサワード)ブロックを有している。
システムは、無効バス(図示せず)を用いることにより
データキャッシュ59をメモリ12とコヒレントに維持
する。データキャッシュ59はデータアレイ66にロン
グワードパリティを有しており、タグ記憶部67の各タ
グ入力ごとに1つのパリティがある。
【0035】命令キャッシュ21は、例えば、8Kバイ
ト又は16Kバイトであり、或いはダイのエリアに基づ
いてもっと大きくても小さくてもよい。TB36との物
理的なアドレッシングを用いるものとして上記したが、
これは仮想キャッシュであってもよく、この場合はメモ
リ12とのコヒレンスを維持するための構成体を含まな
い。キャッシュ21が物理的にアドレスされるキャッシ
ュである場合には、チップがメモリとのコヒレンスを維
持するための回路を含むことになり、(1)書き込みバ
ッファ50の入力がバスインターフェイス52に送られ
たときには、アドレスが複写命令キャッシュ21のタグ
と比較され、命令キャッシュ21の対応ブロックが条件
に応じて無効化され、(2)無効バスが命令キャッシュ
21に接続される。
【0036】CPU10内のメインデータ路及びレジス
タは全て64ビット幅である。即ち、インテガーレジス
タ43の各々とフローティングポイントレジスタ61の
各々は、64ビットレジスタであり、ALU40は2つ
の64ビット入力40a及び40bと、64ビット出力
40cとを有している。実際には2つ以上のバスで構成
される実行ユニット16のバス構造体44は、インテガ
ーレジスタ43とALU40の入力及び出力との間にオ
ペランドを転送するための64ビット幅のデータ路を有
している。命令デコーダ23及び24はレジスタアドレ
ス出力26及び27を発生し、これらはインテガーレジ
スタ43及び/又はフローティングポイントレジスタ6
1のアドレス回路に送られ、ALU41又は62の入力
としてどのレジスタオペランドを使用するかそしてレジ
スタ43又はレジスタ61のいずれがALU(又は他の
機能ユニット)の出力の行き先であるかを選択する。
【0037】二重発行の判断は、次の要求に基づいて回
路25によって行われる。つまり、1サイクル内に発行
できるのは、第1カラムからの1つの命令と、第2カラ
ムからの1つの命令だけである。 カラムA カラムB インテガーオペレーション フローティングオペレーション フローティングロード/記憶 インテガーロード/記憶 フローティング分岐 インテガー分岐 JSR 即ち、CPU10は、インテガーロード又は記憶命令を
インテガーオペレーション命令と共に二重発行すること
ができるが、インテガー分岐をインテガーロード又は記
憶と共に二重発行することはできない。もちろん、回路
25は、同じサイクル中に2つの命令を発行できる前に
リソースを使用できるかどうかもチェックする。
【0038】重要な特徴は、図1ないし6のCPU10
のRISC特性である。このCPU10によって実行さ
れる命令は、常に同じサイズで、この場合32ビットで
あり、可変サイズ命令を許容するものではない。これら
の命令は平均1マシンサイクルで実行され(以下で述べ
るようにパイプライン構成にされ、ストールがないと仮
定する)、可変数のサイクルで実行されるのではない。
命令セットは、レジスタ対レジスタの演算論理型のオペ
レーション又はレジスタ対メモリ(又はメモリ対レジス
タ)のロード/記憶型のオペレーションのみを含み、間
接的のような複雑なメモリアドレスモードはない。AL
U40においてオペレーションを実行する命令は、常に
そのオペランドをレジスタファイル43から(又は命令
自体のフィールドから)入手し、そして常にその結果を
レジスタファイル43に書き込む。即ち、これらオペラ
ンドは、決してメモリから得られるのではなくそしてそ
の結果が決してメモリへ書き込まれるのではない。メモ
リからのロードは常にレジスタファイル43又は61へ
行われ、メモリへの記憶は常にレジスタファイルのレジ
スタから行われる。
【0039】図7を参照すれば、CPU10は、インテ
ガーオペレーション及びメモリ参照命令のための7段パ
イプラインを有している。命令ユニット18は、命令キ
ャッシュ21のヒット/ミスを判断するために7段パイ
プラインを有している。図7は、実行ユニット16、命
令ユニット18及びアドレスユニット19のパイプライ
ンのためのパイプライン図である。フローティングポイ
ントユニット17は、実行ユニット16と並列にパイプ
ラインを定めるが、通常はより多くの実行段を用いてい
る。7つの段は、S0ないしS6と称され、1つの段は
1つのマシンサイクル(クロックサイクル)で実行され
るものとする。最初の4つの段S0、S1、S2及びS
3は命令ユニット18において実行され、そして最後の
3つの段S4、S5及びS6は、命令がオペレーション
であるかロード/記憶であるかに基づいて実行ユニット
16又はアドレスユニット19の一方又は他方で実行さ
れる。全てのボックスにはバイパス装置があって、1つ
の命令の結果を次の命令のオペランドとして使用できる
ようにし、しかもレジスタファイル43又は61に書き
込む必要がないようにする。
【0040】パイプラインの第1段S0は命令フェッチ
即ちIF段であり、その間に命令ユニット18がPC3
3のアドレスをベースとして用いて命令キャッシュ21
から2つの新たな命令をフェッチする。第2段S1は、
スワップ段であり、その間に2つのフェッチされた命令
が回路25によって評価され、それらを同時に発行でき
るかどうか調べられる。第3段S2はデコード段であ
り、デコーダ23及び24において2つの命令がデコー
ドされ、制御信号28及び29とレジスタアドレス26
及び27とが発生される。第4段S3は、オペレーショ
ン命令のためのレジスタファイル43アクセス段である
と共に、全ての命令の発行チェック判断ポイント及び命
令発行段である。第5段S4は、オペレーション命令で
ある場合に計算の(例えば、ALU40の)サイクル1
であり、又、命令ユニット18はアドレス発生器32に
おいて新たなPC33を計算し、メモリ参照命令である
場合にはアドレスユニット19がアダー53を用いて有
効データ流アドレスを計算する。第6段S5は、オペレ
ーション命令である場合に計算の(例えば、ALU40
の)サイクル2であり、又、メモリ参照のためのデータ
TB48ルックアップ段でもある。最後の段S6は、レ
ジスタ書き込みを有するオペレーション命令のための書
き込み段であり、その間に、例えばALU40の出力4
0cが書き込みポートを経てレジスタファイル43に書
き込まれ、そして又、この段は、命令流又はデータ流参
照のためのデータキャッシュ59又は命令キャッシュ2
1のヒット/ミス判断ポイントでもある。
【0041】CPU10のパイプラインは、命令処理の
これら7つの段S0ないしS6を4つのスタティックな
実行段及び3つのダイナミックな実行段に分割する。第
1の4つの段S0ないしS3は、前記した命令フェッ
チ、スワップ、デコード及び発行ロジックより成る。こ
れらの段S0ないしS3は、リソースを待機するか又は
他のリソースに対してストールとなる間に多数のサイク
ルにわたり命令が同じパイプライン段において有効に保
たれるという点でスタティックである。上記のストール
はパイプライン凍結とも称する。パイプライン凍結は、
ゼロ命令が発行される間又は1つの対の一方の命令が発
行されそして第2が発行段に保持される間に生じる。パ
イプライン凍結は、1つ又は複数の有効命令が発行され
るべく与えられるが進行し得ないことを意味する。
【0042】全ての発行条件を満足すると、パイプライ
ンを経て完了に向かって発行が継続するように許され
る。S3における発行の後は、所与のパイプ段S4ない
しS6に命令を保持することはできない。これは発行段
S3(回路25)までであり、命令の継続が許される前
に全てのリソースの競合が解決されるよう確保する。発
行段S3の後の停止命令は、中断状態のみを意味する。
【0043】中断は多数の理由で生じる。一般に、これ
らは2つの分類に分けられる。即ち、例外(割り込みを
含む)と、非例外である。これら2つの基本的な相違
は、例外の場合、中断状態を生じた命令(二重発行命令
を含む)に続いてフェッチされた全ての命令をパイプラ
インからフラッシュしそして命令のフェッチを再指定ア
ドレスから再開することを必要とすることである。非例
外中断状態の例は、分岐ミス予想、サブルーチン呼び出
し及び復帰ミス予想と、命令キャッシュ21のミスであ
る。データキャッシュ59のミスは中断状態を生じない
が、パイプライン凍結を生じることがある。
【0044】例外の場合には、CPU10は、まず、例
外命令の後に発行された全ての命令を中断する。あるエ
ラー状態の性質により、これは書き込みサイクルと同様
に後で生じることがある。次いで、例外命令のアドレス
が内部プロセッサレジスタにラッチされる。パイプライ
ンが完全にドレイン状態となると、プロセッサは、PA
Lコードディスパッチにより与えられたアドレスにおい
て命令の実行を開始する。インテガー及びフローテイン
グポイントレジスタファイル43及び61の両方に対す
る全ての未解決の書き込みが完了しそして全ての未解決
の命令がパイプライン内のポイントを通過して、マシン
チェックがなくても例外なく全ての命令が完了すると保
証されるときに、パイプラインがドレイン状態となる。
【0045】図8には、図1ないし7のCPU10によ
り実行される命令セットの種々の形式の命令が示されて
いる。1つの形式はメモリ命令70であり、これは、ビ
ット<31:26>の6ビットオペレーションコード
と、ビット<25:21>及び<20:16>の2つの
5ビットレジスタアドレスフィールドRa及びRbと、
ビット<15:0>の16ビット符号化変位とである。
この命令は、レジスタ43とメモリ(メモリ12又はキ
ャッシュ59又は20)との間でデータを転送したり、
レジスタファイルのレジスタに有効データをロードした
り、サブルーチンジャンプをしたりするのに用いられ
る。変位フィールド<15:0>はバイトオフセットで
あり、レジスタRbの内容に符号拡張及び追加されて仮
想アドレスを形成する。仮想アドレスは、特定の命令に
よってメモリロード/記憶アドレス又は結果値として用
いられる。
【0046】図8には分岐命令フォーマット71も示さ
れており、これは、ビット<31:26>の6ビットオ
ペレーションコードと、ビット<25:21>の5ビッ
トアドレスフィールドと、ビット<20:0>の21ビ
ット符号化分岐変位とを含んでいる。この変位はロング
ワードオフセットとして処理され、2ビット左へシフト
され(ロングワード境界をアドレスする):64ビット
まで符号拡張されそしてPC33の更新内容に追加され
てターゲット仮想アドレスを形成する(オーバーフロー
は無視する)ことを意味する。
【0047】オペレーション命令72及び73は図8に
示すフォーマットであり、1つのフォーマット72は3
つのレジスタオペランドに対するものでありそして1つ
のフォーマット73は2つのレジスタオペランド及びリ
テラルに対するものである。オペレーションフォーマッ
トは、インテガーレジスタオペレーションを実行する命
令に用いるもので、レジスタファイル43に2つのソー
スオペランドと1つの行き先オペランドを許すものであ
る。ソースオペランドの1つはリテラル定数である。ビ
ット12は、オペレーション命令が2つのソースレジス
タオペレーションに対するものであるか1つのソースレ
ジスタ及びリテラルに対するものであるかを定める。ビ
ット<31:26>の6ビットオペレーションコードに
加えて、オペレーションフォーマットは、ビット<1
1:5>の7ビットファンクションフィールドを有して
いて、演算論理オペレーションに対して幅の広い選択範
囲を与える。ソースレジスタRaはいずれの場合もビッ
ト<25:21>に指定されそして行き先レジスタRc
はビット<4:0>に指定される。ビット12がゼロの
場合、ソースレジスタRbはビット<20:16>で定
められ、一方、ビット12が1の場合は、8ビットのゼ
ロ拡張リテラル定数が命令のビット<20:13>で形
成される。このリテラルは、0から255の範囲の正の
整数として解釈され、64ビットにゼロ拡張される。
【0048】又、図8は、フローティングポイントレジ
スタ61対フローティングポイントレジスタ61のオペ
レーションを実行する命令に使用されるフローティング
ポイントオペレーション命令フォーマット74を示して
いる。フローティングポイントオペレーション命令は、
前記したビット<31:26>の6ビットオペレーショ
ンコードと、ビット<15:5>の11ビットファンク
ションフィールドとを含んでいる。3つのオペランドフ
ィールドFa、Fb及びFcがあって、その各々は、命
令によって定められたインテガー又はフローティングポ
イントオペレンドのいずれかを指定し、レジスタ13の
みはFa、Fb及びFcによって指定されるが、これら
レジスタはインテガー又はフローティングポイント値を
含むことができる。リテラルはサポートされない。フロ
ーテイングポイントの変換は、図8のフローティングポ
イントオペレーションフォーマット74のサブセットを
使用し、レジスタ対レジスタの変換動作を実行する。F
bオペランドはソースを指定しそしてFaオペランドは
レジ31(全てゼロ)でなければならない。
【0049】図8の他の命令フォーマット75は、特権
アーキテクチャライブラリ(PAL又はPALコード)
命令に対するものであり、これらは拡張プロセッサファ
ンクションを指定するのに用いられる。これらの命令に
おいて、前記したビット<31:26>には6ビットオ
ペレーションコードが与えられ、そして26ビットのP
ALコードファンクションフィールド<25:0>はオ
ペレーションを指定する。PALコード命令に対するソ
ース及び行き先オペランドは、個々の命令定義で指定さ
れた固定レジスタに供給される。
【0050】図8の命令フォーマットにおける6ビット
オペレーションコードフィールド<31:26>は、2
個即ち64個の異なった命令しかコード化できない。
従って、命令セットは64に限定される。しかしなが
ら、命令フォーマット72、73及び74の“ファンク
ション”フィールドは、ビット<31:26>内に同じ
オペレーションコードを有する種々の命令を許す。又、
ジャンプ命令の“ヒント”ビットは、以下で述べるよう
にJSR、RETのような種々のものを許す。
【0051】図9には、内部アドレスバス56を経て送
られる仮想アドレスのフォーマット76が示されてい
る。このアドレスは、その幅が公称64ビットである
が、もちろん、次の数年間実際に実施するためには相当
に小さなアドレスが使用される。例えば、43ビットの
アドレスは、8テラバイトのアドレスレンジを与える。
このフォーマットは、使用されるページサイズに基づい
て、例えば13ビットないし16ビットサイズのバイト
オフセット77を備えている。ページが8Kバイトの場
合には、ページ内バイトフィールド77が13ビットで
あり、16Kバイトページの場合には、フィールド77
が14ビットであり、32Kバイトページの場合にはそ
れが15ビットであり、そして64Kバイトページの場
合には、16ビットである。図示されたフォーマット7
6は、実施によって可変サイズのSeg1、Seg2及
びSeg3と示された3つのセグメントフィールド7
8、79及び80を備えている。セグメントSeg1、
Seg2及びSeg3は、例えば、10ないし13ビッ
トである。各セグメントサイズが10ビットの場合に
は、Seg3によって定められるセグメントが1Kペー
ジであり、Seg2のセグメントが1Mページであり、
そしてSeg1のセグメントが1Gページである。セグ
メント番号フィールドSeg1、Seg2及びSeg3
は、所与の実施については同じサイズのものである。セ
グメント番号フィールドはページサイズに基づくもので
あり、即ち所与のレベルにある全てのページテーブル入
力は1ページを越えることがなく、従って、ページテー
ブルをアクセスするためのページスワッピングは最小と
される。PTEのページフレーム番号(PFN)フィー
ルドは、常に32ビット幅であり、従って、ページサイ
ズが増すにつれて、仮想及び物理アドレスサイズも増加
する。
【0052】物理アドレスはせいぜい48ビットである
が、プロセッサはある数の上位ビットを実行しないこと
により、より小さな物理アドレススペースを実行しても
よい。実行された2つの最上位物理アドレスビットは、
アドレススペースについてのキャッシュ記憶の方針又は
実行に依存する形式を選択する。異なった実行は、シス
テムに対して適した異なった使い方及び制約をこれらビ
ットに課する。例えば、30ビット<20:0>物理ア
ドレススペースをもつワークステーションにおいては、
ビット<29>がメモリとI/Oとの間を選択し、そし
てビット<28>がI/Oスペース内のキャッシュ記憶
をイネーブル又はディスエイブルし、メモリスペースに
おいてゼロでなければならない。
【0053】典型的に、マルチプログラムシステムにお
いては、多数のプロセッサが物理メモリ12(又はキャ
ッシュ)に同時に存在することがあり、従って、メモリ
保護及び多数のアドレススペースがCPU10によって
使用されて、1つのプロセスが他のプロセス又はオペレ
ーティングシステムの妨げとならないように確保され
る。ソフトウィアの信頼性を更に改善するために、4つ
のハイアラーキアクセスモードがメモリアクセス制御を
与える。これらは、最も高い特権から最も低い特権に向
かって、カーナル、エグズキューティブ、スーパーバイ
ザー及びユーザである。保護は個々のページレベルで指
定され、ページは、4つのアクセスモードの各々につい
て、アクセス不能、リードオンリ又は読み取り/書き込
みである。アクセス可能なページは、データ又は命令ア
クセスしか行わないように制限することができる。
【0054】変換バッファ36又は48に記憶されるか
或いはオペレーティングシステムによってメモリ12に
設定されたページテーブルに記憶されるページテーブル
入力即ちPTE81が図10に示されている。PTE8
1はその幅がクオドワードであり、ビット<63:32
>の32ビットページフレーム番号即ちPFN82と、
保護特徴等を実行するためにテーブルAに既済されたよ
うにビット<15:0>を有するフィールド83内のあ
るソフトウェア及びハードウェア制御情報とを含んでい
る。
【0055】特定の特徴は、2ビット<6:5>のグラ
ニュラリティヒント84である。ソフトウェアによりこ
れらビットは非ゼロ値にセットされ、変換バッファ36
又は48にヒントが送られて、ページのブロックが大き
な単一ページとして処理されるようになる。このブロッ
クは8ページの整列されたグループであり、NはPT
E<6:5>の値であり、例えば、(ページサイズ+3
N)下位ゼロの仮想アドレスで始まる1、8、64又は
512ページのグループである。上記ブロックは、仮想
的及び物理的の両方で整列された物理的に連続するペー
ジのグループであり、ブロック内では、PFNの下位3
Nビットが識別マッピングを記述し(即ち、ページ内バ
イトフィールドに加えることによって物理アドレスの一
部分として用いられる)そして上位(32−3N)PF
Nビットは全て等しい。ブロック内では、全てのPTE
は、ビット<15:0>、即ちテーブルAの同じ保護、
欠陥、グラニュラリティ及び有効ビットに対して同じ値
を有している。ハードウェアはこのヒントを使用し、
8、64又は512の別々のTB入力ではなくて単一の
TB入力で全ブロックをマップする。グラニュラリティ
ヒントは、実際に同じ保護、欠陥及び有効ビットで連続
仮想ページにマップされるフレームバッファ又は非ペー
ジプールのような大きなメモリ構造の場合に適してい
る。グラニュラリティヒントの使用例は、表示のための
ビデオフレームの記憶であり、ここでは、1フレームを
定めるデータのブロックが高分解能カラー表示に対して
64の8KBページを専有し、従って、64のページテ
ーブル入力を用いてこのフレームの物理アドレスをマッ
プするのを回避するために、使用することができるもの
である。これは、例えば、フレームバッファを参照して
スクリーン上に垂直線を引く場合に、物理メモリ12か
らTB48へPTEが多量にスワッピングされるのを回
避する。
【0056】図11を再び参照すれば、バス56上の仮
想アドレスを用いてTB48内のPTEがサーチされ、
もし見つからない場合には、Seg1フィールド78を
用いて、内部レジスタ86に記憶されたベースアドレス
において見つかった第1ページテーブル85をインデッ
クスする。テーブル85のSeg1インデックスにおい
て見つかった入力87は第2ページテーブル88のベー
スアドレスであり、これに対してSeg2フィールド7
9を用いて入力89がインデックスされる。入力89は
第3ページテーブル90のベースを指し、Seg3フィ
ールド80はPTE91をインデックスするのに用いら
れ、これは物理ページフレーム番号であって、仮想アド
レスからのバイトオフセット77とアダー92において
合成されてバス54に物理アドレスを発生する。上記し
たように、バイトオフセット77のサイズはグラニュラ
リティヒント84に基づいて変化し得る。
【0057】図8の命令フォーマットを用いて、図1の
CPUは、9種類の命令を含む命令セットを実行する。
これらは、(1)インテガーロード及び記憶命令と、
(2)インテガー制御命令と、(3)インテガー演算命
令と、(4)論理及びシフト命令と、(5)バイト操作
と、(6)フローティングポイントロード及び記憶と、
(7)フローティングポイント制御と、(8)フローテ
ィングポイント演算と、(9)その他とを含んでいる。
【0058】インテガーロード及び記憶命令は、図8の
メモリフォーマット70を使用しており、次のものを含
んでいる。 LDA − ロードアドレス LDAH − ロードアドレス高(シフト高) LDL − ロード符号拡張ロングワード LDQ − ロードクオドワード LDL_L − ロード符号拡張ロングワードロック LDQ_L − ロードクオドワードロック LDQ_U − ロードクオドワード不整列 STL − 記憶ロッグワード STQ − 記憶クオドワード STL_C − 記憶ロングワード条件 STQ_C − 記憶クオドワード条件 STQ_U − 記憶クオドワード不整列 これらの各々について、符号拡張された16ビット変位
にレジスタRbを加える(又はLDAHに対する符号拡
張された変位を65536倍する)ことにより仮想アド
レスが計算される。
【0059】ロード命令LDL及びLDQについては、
ソースオペランドがメモリの計算されたアドレスからフ
ェッチされ、このアドレスはロングワードの場合は符号
拡張されてレジスタRaに書き込まれている。データが
本来整列されていない場合には、整列例外が発生され
る。記憶命令STL及びSTQについては、レジスタR
aの内容がメモリの計算された仮想アドレスに書き込ま
れる。ロードアドレス命令LDA及びLDAHは、ロー
ド命令LDL及びLDQと同様であるが、アドレス後の
オペレーションストップが計算され、64ビットの計算
された仮想アドレスがレジスタRaに書き込まれる。
【0060】ロードロック及び記憶条件命令(LDL_
L、LDQ_L、STL_L及びSTQ_L)は、ここ
に述べるアーキテクチャの重要な特徴を発揮する。特
に、命令のこの組み合わせは、共有メモリ位置のアトミ
ック更新を与えることにより、マルチプロセッサ又はパ
イプライン式プロセッサシステムにおけるデータの完全
性を確保するように働く。この形式の他の命令の場合と
同様に、命令で指定されたレジスタRbの内容を命令で
与えられた符号拡張された16ビット変位に加えること
により仮想アドレスが計算される。LDL_L又はLD
Q_L命令が欠陥なく実行されると、CPU10は、バ
ス54からのターゲット物理アドレスを図5のロックさ
れた物理アドレスレジスタ95に記録し、ロックフラグ
96をセットする。記憶条件命令が実行されるときにロ
ックフラグ96がまだセットされている場合には、記憶
が行われ、即ちオペランドが物理アドレスとしてメモリ
に書き込まれそしてロックフラグ96の値(1)がRa
に戻され、ロックフラグがゼロにセットされる。さもな
くば、ロックフラグがゼロの場合、メモリへの記憶は行
われず、Raに戻される値はゼロである。
【0061】CPU10のロックフラグがセットされそ
して別のCPU15がメモリ12内の物理アドレスのロ
ックされた範囲内で記憶を行う場合には、CPU10の
ロックフラグ96がクリアされる。このために、CPU
10はメモリ12への全ての書き込みを監視し、レジス
タ95のアドレスが一致した場合には、フラグ96がク
リアされる。ロック範囲は、レジスタ95にロックされ
た物理アドレスを含む2バイトの整列ブロックであ
る。この値2は、CPUの構造によって異なるもの
で、少なくとも8バイトであり(最小ロック範囲は整列
クオドワードである)、即ちこの値はせいぜいこのCP
Uのページサイズである(最大ロック範囲は1物理ペー
ジである)。又、CPU10のロックフラグ96は、C
PUが例外、割り込み、又はPALコード呼び出し命令
に遭遇したときにクリアされる。
【0062】CPU10で実行される命令シーケンス LDQ_L 変更 STQ_L BEQ は、分岐が失敗する場合は共有メモリ12のデータのア
トミック読み取り−変更−書き込みを行い、分岐が実行
される場合は記憶がメモリ12内の位置を変更せず、従
って、シーケンスはそれが後から続くまで繰り返され
る。即ち、分岐は、レジスタRaがゼロに等しくなって
記憶条件命令によりRaに戻されたロックフラグの値が
ゼロになる(記憶が後に続かなかった)ことを意味する
場合に行われる。この命令シーケンスが添付資料Aに詳
細に示されている。
【0063】2つのロードロック命令が記憶条件を介在
せずに実行される場合には、第2のものが第1のものの
状態をロックフラグ96及びレジスタ95ににオーバー
ライトする。2つの記憶条件命令がロードロック命令を
介在せずに実行される場合には、第2の記憶が常に失敗
する。というのは、第1のものがロックフラグ96をク
リアするからである。
【0064】ロード不整列命令LDQ_U及びLDL_
Uは、ロード命令LDQ又はLDLと同じであるが、仮
想アドレスの下位3ビットがクリアされ(ロード不整列
命令はバイトアドレスに使用される)、従って、整列ク
オドワード又はロングワードがフェッチされる。又、整
列欠陥は、バイトアドレス(不整列アドレス)が見られ
た場合には簡単なLDQ又はLDL命令に対するもので
あるから信号されない。ロード不整列命令は、以下で述
べるようにバイト操作に対して使用される。記憶不整列
命令STQ_Uは、STQ命令と同様であるが、仮想ア
ドレスの下位3ビットを除去し、不整列アドレスのため
に欠陥を信号しない。
【0065】命令の制御形式は、8つの条件分岐命令
と、無条件分岐と、サブルーチンへの分岐と、サブルー
チン命令への分岐とを含んでおり、これらは全て図8の
分岐命令フォーマット71又はメモリ命令フォーマット
70を使用している。これらの制御命令は次の通りであ
る。 分岐命令フォーマットを使用するもの: BEQ − レジスタがゼロに等しい場合に分岐 BNE − レジスタがゼロに等しくない場合に分岐 BLT − レジスタがゼロより小さい場合に分岐 BLE − レジスタがゼロに等しいかそれより小さ
い場合に分岐 BGT − レジスタがゼロより大きい場合に分岐 BGE − レジスタがゼロに等しいかそれより大き
い場合に分岐 BLBC − レジスタの下位ビットがクリアされた場
合に分岐 BLBS − レジスタの下位ビットがセットされた場
合に分岐 BR − 無条件分岐 BSR − サブルーチンへの分岐 メモリ命令フォーマットを使用するもの: JMP − ジャンプ JSR − サブルーチンへの分岐 RET − サブルーチンからの復帰 JSR_COROUTINE − サブルーチン復帰
へのジャンプ
【0066】条件分岐命令については、レジスタRaが
テストされ、指定の関係が真である場合に、PCにター
ゲット仮想アドレスがロードされ、さもなくば、次に続
く命令で実行が続けられる。条件分岐又は無条件分岐に
対する変位は、符号化ロングワードオフセットとして処
理され、これは、2ビット左へシフトされ(ロングワー
ド境界をアドレスするように)、64ビットに符号拡張
されそして更新されたPCに加えられて、ターゲット仮
想アドレスを形成することを意味する。条件又は無条件
分岐命令はPC関連のみであり、21ビットの符号化変
位は、+/−1Mロングワードの順方向/逆方向分岐距
離を与える。
【0067】無条件分岐命令BR又はBSRについて
は、BR又はJMPに続く命令のアドレス(即ち、更新
されたPC)がレジスタRaに書き込まれた後に、PC
にターゲット仮想アドレスがロードされる。BR及びB
SRは、同じオペレーションを行い、これらは分岐予想
ロジックに対するヒントが異なるだけであり、BSRは
サブルーチン呼び出しとして予想され(復帰アドレスを
分岐予想スタックにプッシュする)、一方、BRは分岐
として予想される(プッシュせず)。
【0068】ジャンプ及び復帰命令については、この命
令に続く命令のアドレス(更新されたPC)がレジスタ
Raに書き込まれ、その後、PCにターゲット仮想アド
レスがロードされる。新たなPCはレジスタRbから送
られ、Rbの2つの下位ビットは無視される。Ra及び
Rbは同じレジスタを指定し、古い値を用いたターゲッ
ト計算が新たな値の指定の前に行われる。
【0069】4つの全ての命令JMP、JSR、RET
及びJSR_COROUTINEは同じオペレーション
を実行し、これらは分岐予想ロジックに対するヒントが
異なるだけである。命令の変位フィールド(変位として
使用されない)はこの情報を送るのに使用される。4つ
の異なる“オペレーションコード”は、変位<15:1
4>において異なるビットパターンをセットし、ヒント
オペランドは変位<13:0>をセットする。これらの
ビットは次のように用いられる。 この構造では、生じ易いロングワードターゲットアドレ
スの下位16ビット(有用な命令キャッシュ21のアク
セスを早期にスタートさせるに充分なビット)を指定す
ることができ、そして復帰から(及び他のより頻度の低
いオペレーションから)の呼び出しを区別することがで
きる。このテーブルに基づく情報はヒントとしてしか使
用できず、これらビットの正しい設定により性能を改善
できるが、正しい動作にとって必要とされるものではな
い。
【0070】従って、CPUが高い性能を得るために
は、分岐予想モデルに基づく明確なヒントが次のように
与えられる。 (1)計算分岐(JSR、RET、JMP)の多くの実
施に対し、レジスタRbにアクセスする前に、予想され
るターゲット命令キャッシュ21のアドレスを良好に推
定するのに相当の性能が得られる。 (2)CPUは、第1の(又は唯一の)命令キャッシュ
21が小型で、1ページ(8ないし64KB)より大き
くないように構成される。 (3)良好な性能を得るにはサブルーチン復帰を正しく
予想することが重要であり、従って、任意であるが、C
PUは予想されるサブルーチン復帰命令キャッシュ21
アドレスの小さなスタックを含んでもよい。
【0071】このために、CPU10は3種類の分岐予
想ヒント、即ち生じ易いターゲットアドレス、復帰アド
レススタック動作及び条件分岐実行を与える。
【0072】計算分岐(JSR/RET/JMP)の場
合には、そうでない場合に未使用となる変位ビットを用
いて、最も生じ易いターゲットアドレスの下位16ビッ
トが指定される。これらビットを用いるPC関連の計算
は、条件分岐に使用されるPC関連計算と厳密に同じで
ある。下位16ビットは、最も大きいと考えられるペー
ジ内の命令キャッシュ21のブロックを指定するのに充
分なもので、従って、最も生じ易いターゲットに対して
命令キャッシュ21の早期のアクセスを開始するために
分岐予想ロジックにとって充分なものであると予想され
る。
【0073】全ての分岐に対し、ヒント又はオペレーシ
ョンコードビットを用いて、簡単な分岐、サブルーチン
呼び出し、サブルーチン復帰、及び共通ルーチンリンク
が区別される。これらの区別により、分岐予想ロジック
は、予想される復帰アドレスの正確なスタックを維持す
ることができる。
【0074】条件分岐の場合、ターゲット変位の符号は
分岐予想ロジックにより実行/失敗ヒントとして使用さ
れる。順方向の条件分岐(肯定変位)は失敗すると予想
される。逆方向の条件分岐(否定変位)は実行されると
予想される。条件分岐は予想された復帰アドレススタッ
クに影響しない。
【0075】インテガー演算命令は、レジスタ43の整
数(インテガー)に対し、加算、減算、乗算及び符号付
と符号無の比較オペレーションを実行し、その結果をイ
ンテガーレジスタ43に戻す。これらの命令は、図8の
インテガーオペレーションフォーマットのいずれかを使
用し(3レジスタ、又は2レジスタ及びリテラル)、次
のものを含んでいる。 ADDL − ロングワードを加算 ADDQ − クオドワードを加算 CMPEQ − に等しい符号付クオドワードを比較 CMPLT − より小さい符号付クオドワードを比
較 CMPLE − に等しいか又は小さい符号付クオド
ワードを比較 CMPULT − より小さい符号なしクオドワードを
比較 CMPULE − に等しいか又は小さい符号なしクオ
ドワードを比較 MULL − ロングワードを乗算 MULQ − クオドワードを乗算 UMULH − 符号なしクオドワード乗算高 SUBL − ロングワードを減算 SUBL − クオドワードを減算
【0076】ADDL命令の場合には、レジスタRaが
レジスタRbに加算されるか又はリテラルに加算され、
符号拡張された32ビットの和がレジスタRcに書き込
まれ、レジスタRa及びRbの上位32ビットが無視さ
れる。ADDQ命令の場合には、レジスタRaがレジス
タRbに加算されるか又はリテラルに加算され、64ビ
ットの和がレジスタRcに書き込まれる。符号なしの比
較命令は桁上げをテストするのに使用でき、ADDを用
いて2つの値を加えた後に、符号なしの和がいずれか一
方の入力よりも小さい場合には、最上位ビットからの桁
上げが生じている。
【0077】比較命令の場合には、レジスタRaがレジ
スタRb又はリテラルと比較され、指定の関係が真の場
合には、値1がレジスタRcに書き込まれ、さもなく
ば、ゼロがレジスタRcに書き込まれる。
【0078】乗算命令は、レジスタRaにレジスタRb
の内容又はリテラルを乗算し、その積がレジスタRcに
書き込まれる。MULLの場合には、積が32ビットの
符号拡張値であり、MULQは64ビット積を生じる。
符号なしクオドワード乗算高命令UMULHの場合に
は、レジスタRa及びRb又はリテラルが符号なし番号
として乗算され、128ビットの結果を生じる。上位6
4ビットがレジスタRcに書き込まれる。
【0079】減算命令の場合には、レジスタRb又はリ
テラルがレジスタRaから減算され、その差が行き先レ
ジスタRcに書き込まれる。この差は、SUBLについ
ては符号拡張された32ビット値であり、SUBQにつ
いては64ビット値である。符号なしの比較命令を使用
して借用についてのテストを行うことができ、符号なし
の被減数(Ra)が符号なしの減数(Rb)よりも符号
なし程度が低い場合には、借用となる。
【0080】論理命令はオペレーションフォーマットの
ものであり、クオドワードのブールオペレーションを実
行する。これらの命令は次の通りである。 AND − 論理積 BIS − 論理和 XOR − 論理差 BIC − 補数を伴う論理積 ORNOT − 補数を伴う論理和 EQV − 論理等価 これらの命令は、レジスタRaとレジスタRb又はリテ
ラルとの間で指定のブール関数を実行し、その結果を行
き先レジスタRcに書き込む。“ノット”関数は、OR
NOTをゼロで行うことによって実行できる(Ra=R
31)。
【0081】シフト命令は、オペレーションフォーマッ
トのものであり、シフタ41において次のような左右の
論理シフト及び右の演算シフトを実行する。 SLL − 左シフト論理 SRL − 右シフト論理 SRA − 右シフト演算 演算左シフト命令はない。というのは、典型的に、演算
左シフトを用いる場合には、論理シフトが行われるから
である。アドレス計算において2の小さな累乗の乗算を
行う場合には、論理左シフトを受け入れることができ
る。演算左シフトは、オーバーフロー検出を必要とする
ので、非常に複雑になる。インテガー乗算は、オーバー
フローチェックを伴う演算左シフトを実行するのに使用
しなければならない。ビットフィールドの抽出は2つの
論理シフトで行うことができ、符号拡張は、左論理シフ
ト及び右演算シフトで行うことができる。論理シフトの
場合には、レジスタRaがレジスタRbのカウント又は
リテラルの分だけ0ないし63ビットの範囲で論理的に
左又は右へシフトされそしてその結果がレジスタRcに
書き込まれ、ゼロビットが空きのビット位置に伝播され
る。同様に、右シフト演算命令の場合には、レジスタR
bがレジスタRaのカウント又はリテラルの分だけ0な
いし63ビットの範囲で演算的に右へシフトされそして
その結果がレジスタRcに書き込まれ、符号ビット(R
bv<63>)が空きのビット位置に伝播される。
【0082】性能を改善できるようにする重要な特徴
は、条件に応じた移動インテガーCMOV命令である。
これらの命令は、分岐を伴うことなく条件に応じて実行
され、命令流のシーケンスを維持する。これらの命令は
オペレーションフォーマットのもので、次のものを含ん
でいる。 CMOVEQ − レジスタがゼロに等しい場合の条
件移動 CMOVNE − レジスタがゼロに等しくない場合
の条件移動 CMOVLT − レジスタがゼロより小さい場合の
条件移動 CMOVLE − レジスタがゼロ以下である場合の
条件移動 CMOVGT − レジスタがゼロより大きい場合の
条件移動 CMOVGE − レジスタがゼロ以上である場合の
条件移動 CMOVLBC − レジスタ下位ビットクリアの場合
の条件移動 CMOVLBS − レジスタ下位ビットセットの場合
の条件移動 これらの条件移動命令を実行する場合には、レジスタR
aがテストされ、そして指定の関係が真である場合に、
レジスタRbの値がレジスタRcに書き込まれる。この
代替えをもつ利点は実行速度にある。例えば、命令CM
OVEQRa、Rb、Rcは、厳密に次のものに等し
い。 BNE Ra、ラベル OR R31、Rb、Rc ラベル ... 但し、CMOVの方法は多くの実施例において相当に速
度の速いものとなる。2つのレジスタの内容の大きい方
を見出す分岐なしシーケンスR1=MAX(R1、R
2)は次の通りである。 CMPLT R1、R2、R3 !R3=1 但し、
R1<R2の場合 CMOVNE R3、R2、R1 !NOT(R1<R
2)の場合何もしない !R1<R2の場合R2をR1へ移動 もちろん、分岐を使用しない利点は、命令流が逐次にフ
ェッチされそして命令キャッシュ又は予めフェッチの待
ち行列をフラッシュする必要がないことである。条件移
動は、たとえ分岐が正しく予想されたとしても、分岐よ
りも高速である。分岐が正しく予想されない場合には、
条件移動の方が著しく速くなる。というのは、分岐オペ
レーションが解除されるからである。
【0083】別の重要な特徴は、レジスタ内のバイトオ
ペランドで動作するための命令を発生することである。
これらは、ロード/記憶命令において全幅64ビットの
メモリアクセスを行えるようにし、しかも種々のレジス
タ内バイト操作と共に広範囲のバイトオペレーションを
行えるようにする。その利点は、メモリ内のバイトオペ
レーションを許したアーキテクチャーに対して書き込ま
れたコードを使用でき、しかもメモリアクセスを全クオ
ドワードの整列境界に限定できることである。バイト操
作命令は図8のオペレーションフォーマット72又は7
3であり、次のような比較バイト、抽出バイト、マスク
バイト及びゼロバイト命令を含んでいる。 CMPBGE − 比較バイト EXTBL − 抽出バイト低 EXTWL − 抽出ワード低 EXTLL − 抽出ロングワード低 EXTQL − 抽出クオドワード低 EXTWH − 抽出ワード高 EXTLH − 抽出ロングワード高 EXTQH − 抽出クオドワード高 INSBL − 挿入バイト低 INSWL − 挿入ワード低 INSLL − 挿入ロングワード低 INSQL − 挿入クオドワード低 INSWH − 挿入ワード高 INSLH − 挿入ロングワード高 INSQH − 挿入クオドワード高 MSKBL − マスクバイト低 MSKWL − マスクワード低 MSKLL − マスクロングワード低 MSKQL − マスククオドワード低 MSKWH − マスクワード高 MSKLH − マスクロングワード高 MSKQH − マスククオドワード高 ZAP − ゼロバイト ZAPNOT − ゼロバイトノット
【0084】比較バイト命令は、レジスタRaとRb
(又はRaとリテラル)の対応バイト間で8つの並列な
符号なしバイト比較を行い、8つの結果をレジスタRc
の下位8ビットに記憶し、レジスタRcの上位56ビッ
トはゼロにセットされる。レジスタRcのビット0はバ
イト0に対応し、Rcのビット1はバイト1に対応し、
等々となっている。Raの対応するバイトがRbに等し
いかそれより大きい場合(符号なし)、結果のビットが
Rcにセットされる。
【0085】抽出バイト命令はレジスタRaを0−7バ
イトシフトし(低の場合右へシフトし、高の場合左へシ
フトする)、次いで、1、2、4又は8バイトをレジス
タRcへ抽出し、シフトすべきバイトの数はレジスタR
bのビット<2:0>によって指定され、抽出すべきバ
イトの数はファンクションコードで指定され、残りのビ
ットにはゼロが満たされる。抽出バイト高命令は、レジ
スタRbのビット<2:0>によって指定された量を8
から引いたバイト数だけ左へシフトを行う。これらの抽
出バイト命令は、添付資料のバイト抽出の例に述べられ
たように、メモリ内の非整列マルチバイトデータを操作
すべき場合にはバイト操作に特に有用である。
【0086】挿入バイト命令は、レジスタRaからのバ
イトをシフトしそしてそれらをゼロのフィールドに挿入
し、結果をレジスタRcに記憶し、レジスタRbのビッ
ト<2:0>は0ないし7バイトのシフト量を選択し、
そしてファンクションコードは、1、2、4又は8バイ
トのフィールド幅を選択する。これらの挿入バイト命令
は、任意のバイト整列でレジスタに入れられたバイト、
ワード、ロングワード又はクオドワードデータを発生す
ることができる。
【0087】バイトマスク命令MSKxL及びMSKx
Hは、レジスタRaの選択されたバイトをゼロにセット
し、結果をレジスタRcに記憶し、レジスタRb<2:
0>はゼロバイトのフィールドのスタート位置を選択
し、ファンクションコードは、1、2、4又は8バイト
の最大幅を選択する。マスク命令は、任意のバイト整列
でレジスタにわたって分散することのできるゼロのバイ
ト、ワード、ロングワード又はクオドワードフィールド
を発生する。
【0088】ゼロバイト命令ZAP及びZAPNOT
は、レジスタRaの選択されたバイトをゼロにセット
し、結果をレジスタRcに記憶し、レジスタRb<7:
0>はゼロにすべきバイトを選択し、ここで、Rbのビ
ット0はバイト0に対応し、Rbのビット1はバイト1
に対応し、等々となる。Rbの対応ビットがZAPに対
して1でありそしてZAPNOTに対して0である場合
に結果のバイトがゼロにセットされる。
【0089】添付資料Aにおいて、上記のバイト命令を
用いていかにバイトオペレーションを実行できるかを説
明するために命令シーケンスが与えられている。
【0090】フローティングポイント命令は、次の5つ
のデータフォーマットの各々においてフローティングポ
イントオペランドに対して作用する。(1)F_flo
ating。これはVAX単一精度である。(2)D_
floating。これは8ビット指数のVAX2倍精
度である。(3)G_floating。これは11ビ
ット指数のVAX2倍精度である。(4)S_floa
ting。これはIEEE単一精度である。そして
(5)T_floating。これは11ビット指数の
IEEE2倍精度である。単一精度値は64ビットレジ
スタ61の上位32ビットにロードされ、下位32ビッ
トはゼロにされる。又、データ変換命令も与えられ、フ
ローティングポイントとクオドワードインテガーフォー
マットとの間、単一フローティングと二重フローティン
グとの間、そしてクオドワードインテガーとロングワー
ドインテガーとの間でオペランドの変換を行う。CPU
10についてはグローバルなフローティングポイントプ
ロセッサ状態はなく、即ちデータフォーマット間でマシ
ン状態はスイッチされないが、各命令においてデータフ
ォーマットの選択がエンコードされる。
【0091】フローティングポイント番号は、符号、指
数及び分数の3つのフィールドで表される。符号フィー
ルドは1ビットであり、指数フィールドは8又は11ビ
ットでありそして分数は23、52又は55ビットであ
る。多数の異なった丸めモードが設けられており、VA
Xフォーマットの場合は、丸めが通常(かたよった)で
あるか又は切断され、一方、IEEEフォーマットの場
合には、丸めが、通常(最も近い値へのかたよらない丸
め)、プラス無限大に向かう丸め、マイナス無限大に向
かう丸めそしてゼロに向かう丸めの4つの形式である。
フローティングポイント命令によって発生できる例外は
6つあり、これらは全て演算例外トラップによって信号
され、これら例外は、無効オペレーション、ゼロによる
除算、オーバーフロー、アンダーフロー、不正確な結果
及びインテガーオーバーフローである。
【0092】メモリフォーマットのフローティングポイ
ント命令は次のものを含む。 LDF − ロードF_floating LDD − ロードD_floating(ロード
G_floating) LDS − ロードS_floating(ロード
ロングワードインテガー) LDT − ロードT_floating(ロード
クオドワードインテガー) STF − 記憶F_floating STD − 記憶D_floating(記憶G_
floating) STS − 記憶S_floating(記憶ロン
グワードインテガー) STT − 記憶T_floating(記憶クオ
ドワードインテガー) ロード命令の各々は、メモリから指定の形式のフローテ
ィングポイントデータをフェッチし、この形式に対する
フローティングポイントレジスタフォーマットに合致す
るようにバイトの順序を直し、そしてそれをレジスタセ
ット61のレジスタFaに書き込む。レジスタFbを符
号拡張された16ビット変位に加えることによって仮想
アドレスが計算される。記憶命令は、レジスタFaの内
容を、レジスタRbを符号拡張された16ビット変位に
加えることにより計算された仮想アドレスのメモリ位置
に記憶させ、バイトはこのフローティングポイントデー
タ形式に対するメモリフォーマットに合致させる途中で
記録される。
【0093】フローティングポイント分岐命令は、上記
したインテガー分岐命令と同様に作用し、即ち、フロー
ティングポイントレジスタFaの値がテストされ、PC
が条件に応じて変更される。これらのフローティングポ
イント分岐命令は、次のものを含む。 FBEQ − に等しいフローティング分岐 FBNE − に等しくないフローティング分岐 FBLT − より小さいフローティング分岐 FBLE − に等しいかそれより小さいフローティ
ング分岐 FBGT − より大きいフローティング分岐 FBGE − に等しいかそれより大きいフローティ
ング分岐 レジスタFaがテストされ、指定の関係が真の場合に
は、PCにターゲット仮想アドレスがロードされ、さも
なくば、次に続く命令で実行が続けられる。変位は符号
付ロングワードオフセットとして処理され、これは、2
ビット左へシフトされて、ロングワード境界をアドレス
し、64ビットに符号拡張され、そして更新されたPC
に加えられて、ターゲット仮想アドレスを形成する。
【0094】フローティングポイント演算のオペレーシ
ョンフォーマット命令は、レジスタ61の64ビットレ
ジスタ値に対する加算、減算、乗算、除算、比較、絶対
値、コピー及び変換オペレーションを含む。各命令は、
これら値のソース及び行き先フォーマットと、使用すべ
き丸めモード及びトラップモードとを指定する。これら
のフローティングポイントオペレーション命令は、テー
ブルBに記載する。
【0095】フローティングポイント条件移動命令は、
インテガー条件移動命令に対応しているが、インテガー
レジスタ43に代わってフローティングポイントレジス
タ61が用いられる。インテガー条件移動の場合と同様
に、これらの命令を用いて分岐命令を回避することがで
きる。
【0096】CPU10はその命令セットの中に多数の
“その他”の命令を有しており、これらは全て上記の命
令フォーマットを使用するものであるが、上記で述べた
分類には入らない。その他の命令は次の通りである。 CALL_PAL − 特権アーキテクチャライブラリ
ルーチン呼び出し FETCH − データブロックの予めのフェッ
チ FETCH_M − 予めのフェッチ、意図の変更 DRAINT − 命令パイプラインのドレイン MB − メモリバリア RCC − サイクルカウンタの読み取り
【0097】図8のフォーマット75を用いたCALL
_PAL命令は、PALコード(命令のビット<25:
0>)へのトラップを生じさせる。この命令は、それ以
前の全ての命令が例外なく完全に完了されるまで発行さ
れず、これら以前の命令の1つに対して例外が生じた場
合には、例外スタックフレームにおける連続PCがCA
LL_Pal命令を指す。
【0098】FETCH命令は、Rbの内容によって与
えられた仮想アドレスを取り巻く整列された512バイ
トブロックを予めフェッチする。Rbにおけるこのアド
レスを用いて、整列された512バイトのデータブロッ
クが指定される。そのオペレーションは、512バイト
データブロックの全部又は一部分をメモリハイアラーキ
の高速アクセス部分へ移動し、データをアクセスする次
のロード又は記憶命令を予想しようとするものである。
従って、FETCH命令は、高速実行を行うことのでき
るCPU10へのヒントである。特定のCPUの構造が
この技術を実施しない場合には、ヒントが無視される。
FETCH_M命令は、幾つかの又は全てのデータに対
する変更(記憶)が予想される追加のヒントを与え、こ
れはある後方書き込みキャッシュ設計において高速動作
を与える。というのは、データブロックが“所有”のも
のとしてキャッシュへ読み込まれ、従って、キャッシュ
内のデータブロックに対して書き込みが実行されるとき
には停止となるような欠陥を発生せず所有関係を請求し
ないからである。FETCHによって例外は発生され
ず、同じアドレスを用いたロード(又はFETCH_M
の場合には記憶)が失敗すると、予めフェッチの要求が
無視される。FETCH命令は、100サイクル程度の
メモリ待ち時間をソフトウェアによって覆い隠す助けを
するもので、これは10サイクル程度のメモリ待ち時間
の場合には問題とならない(又は実施されない)。とい
うのは、コードスケジュリングによってこのような短い
待ち時間を覆い隠さねばならないからである。
【0099】DRAINT命令は、それ以前の全ての命
令が演算トラップに陥ることなく確実に完了するまで命
令の発行をストールする。これは、パイプライン実施例
において、DRAINT発行後に何らかの命令が出る前
に全ての以前の演算命令が演算トラップに陥ることなく
完了することをソフトウェアで保証できるようにする。
例えば、例外ハンドラーを変更する前にこれを用いて、
以前の命令に対する全ての例外を現在の例外処理環境で
処理するよう確保しなければならない。
【0100】メモリバリア命令MBは、全ての以前のロ
ード及び記憶が完了するまで全ての将来のロード又は記
憶が完了しないようにする。MB命令が存在しない場合
には、異なった物理位置に対するロード及び記憶が順序
から外れて完了できるようにされる。MB命令はメモリ
アクセスを直列に行えるようにする。
【0101】読み取りサイクルカウンタ命令RCCは、
レジスタRaにCPUサイクルカウンタの内容を書き込
むことができるようにする。サイクルカウンタの下位3
2ビットは、N個のCPUサイクルごとに一度増加され
る符号なしインテガーであり、ここで、Nはその実施に
適した1から16までの整数である。カウンタは、その
実施に適した値においてゼロに対して上塗り表示する。
【0102】特定の実施例について本発明を説明した
が、これは単に解説のためのものであってこれに限定さ
れるものではない。上記説明に基づいて上記実施例に種
々の変更がなされ得ることが当業者に明らかとなろう。
それ故、これらの変更や修正は特許請求の範囲のみによ
って包含されるものとする。
【表1】
【表2】
【表3】
【表4】
【外1】
【外2】
【外3】
【外4】
【外5】
【外6】
【外7】
【図面の簡単な説明】
【図1】CPUを用いた本発明の特徴によるコンピュー
タシステムのブロック図である。
【図2】図1のプロセッサに使用されるデータ形式を示
す図である。
【図3】図1のCPUの命令ユニット即ちI−ボックス
を示すブロック図である。
【図4】図1のCPUのインテガー実行ユニット即ちE
−ボックスを示すブロック図である。
【図5】図1のCPUのアドレスユニット即ちA−ボッ
クスを示すブロック図である。
【図6】図1のCPUのフローティングポイント実行ユ
ニット即ちF−ボックスを示すブロック図である。
【図7】図1のCPUのパイプラインを示すタイミング
図である。
【図8】図1ないし6のCPUの命令セットに用いられ
る命令フォーマットを示す図である。
【図9】図1ないし6のCPUに用いられる仮想アドレ
スのフォーマットを示す図である。
【図10】図1ないし6のCPUに用いられるページテ
ーブル入力のフォーマットを示す図である。
【図11】図1ないし6のCPUに用いられるアドレス
変換機構を示す図である。
【符号の説明】
10 CPU 11 システムバス 12 メインメモリ 13 I/Oユニット 15 CPU 16 インテガー実行ユニット 17 フローティングポイント実行ユニット 18 命令ユニット 19 アドレスユニット 20 第2レベルキャッシュ 21 命令キャッシュ 22 命令レジスタ 23、24 デコーダ 25 チェック回路 26、27 バス 28、29 マイクロ制御バス 30 予想回路 31 サブルーチン復帰スタック 32 アドレス発生回路 33 仮想PC(プログラムカウンタ) 36 変換バッファ(TB) 40 演算論理ユニット(ALU) 41 バレルシフタ 42 インテガー乗算器 43 レジスタファイル 44 バス構造体 48 変換バッファ 49 ロードサイロ 50 書き込みバッファ 51、52 インターフェイス 53 変位アダー 55 デコーダ 57、58 ポインタ 59 データキャッシュ
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成5年8月24日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0102
【補正方法】変更
【補正内容】
【0102】特定の実施例について本発明を説明した
が、これは単に解説のためのものであってこれに限定さ
れるものではない。上記説明に基づいて上記実施例に種
々の変更がなされ得ることが当業者に明らかとなろう。
それ故、これらの変更や修正は特許請求の範囲のみによ
って包含されるものとする。
【表1】
【表2】
【表3】
【表4】
【外1】
【外2】
【外3】
【外4】
【外5】
【外6】
【外7】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 リチャード ティー ウィテック アメリカ合衆国 マサチューセッツ州 01460リトルトン シルヴァーバーチ レ ーン 8

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサ内でバイト操作を行なう方法
    において、 第1の非整列バイトアドレスを用いてメモリからの第1
    クオドワードを第1レジスタにロードし、上記第1の非
    整列バイトアドレスはNバイトのデータ項目の第1バイ
    トのアドレスであり、上記第1の非整列バイトアドレス
    は、上記メモリに送る前に下位3ビットを除去するよう
    に変更されて、整列されたクオドワードが上記第1レジ
    スタにロードされるようにし、 第2の非整列バイトアドレスを用いて上記メモリからの
    第2クオドワードを第2レジスタにロードし、上記第2
    の非整列バイトアドレスは、上記第1バイトのアドレス
    にN−1を加えたものであり、上記第2の非整列バイト
    アドレスは、上記メモリに送る前に下位3ビットを除去
    するように変更されて、整列されたクオドワードが上記
    第2レジスタにロードされるようにし、 上記非整列バイトアドレスの下位3ビットの値に対応す
    るバイトの数だけ第1レジスタの内容を右へシフトする
    ことにより上記第1レジスタから上記データ項目の第1
    部分を抽出し、上位の空のビットをゼロにし、 上記非整列バイトアドレスの下位3ビットの値に対応す
    るバイトの数だけ第2レジスタの内容を左へシフトする
    ことにより上記第2レジスタから上記データ項目の第2
    部分を抽出し、下位の空のビットをゼロにし、そして上
    記データ項目の上記第1及び第2部分を1つのレジスタ
    において合成するという段階を具備することを特徴とす
    る方法。
  2. 【請求項2】 上記ロード段階は、上記プロセッサによ
    って実行される個別の単一命令によって各々行われる請
    求項1に記載の方法。
  3. 【請求項3】 上記抽出段階は、上記プロセッサによっ
    て実行される個別の単一命令によって各々行われる請求
    項2に記載の方法。
  4. 【請求項4】 上記抽出段階は、上記プロセッサによっ
    て実行される個別の単一命令によって各々行われる請求
    項1に記載の方法。
  5. 【請求項5】 メモリの非整列バイトアドレスにマルチ
    バイトデータ項目を記憶するようにプロセッサを動作す
    る方法において、 上記非整列バイトアドレスを用いてメモリからの第1整
    列クオドワードを第1レジスタにロードし、上記非整列
    バイトアドレスは、記憶すべきNバイトの上記マルチバ
    イトデータ項目の第1バイトのアドレスであり、上記非
    整列バイトアドレスは、上記メモリに送る前に下位3ビ
    ットを除去するように変更されて、整列されたクオドワ
    ードが上記第1レジスタにロードされるようにし、 ゼロのフィールドの上記マルチバイトデータ項目の下位
    部分を第2レジスタに挿入し、この下位部分は上記マル
    チバイトデータ項目の下位バイトに対応し、 上記マルチバイトデータ項目の上記下位部分の位置に対
    応するフィールドにおいて上記第1レジスタを0にマス
    クし、 上記第1及び第2レジスタの内容を合成して、第2の整
    列されたクオドワードを発生し、これは、上記マルチバ
    イトデータ項目の上記下位部分を含むと共に、上記第1
    の整列されたクオドワードのオリジナル内容をこの第2
    の整列されたクオドワードの残り部分に含んでおり、 上記非整列のバイトアドレスを用いて上記第2の整列さ
    れたクオドワードを上記メモリに記憶し、上記非整列の
    バイトアドレスは、上記メモリへ送る前に下位3ビット
    を除去するように変更され、 値が追加される上記非整列のバイトアドレスを用いて上
    記メモリからの第3の整列されたクオドワードを第3レ
    ジスタにロードし、上記非整列のバイトアドレスは、上
    記メモリに送る前に下位3ビットを除去するように変更
    され、これにより、整列されたクオドワードが上記第3
    レジスタにロードされ、 ゼロのフィールドにおける上記マルチバイトデータ項目
    の上位部分を第4レジスタに挿入し、 上記マルチバイトデータ項目の上記上位部分の位置に対
    応するフィールドにおいて上記第3レジスタをゼロにマ
    スクし、 上記第3及び第4レジスタの内容を合成して、第4の整
    列されたクオドワードを発生し、これは、上記マルチバ
    イトデータ項目の上記上位部分を含むと共に、上記第3
    の整列されたクオドワードのオリジナル内容をこの第4
    の整列されたクオドワードの残り部分に含んでおり、 上記非整列のバイトアドレスを用いて上記第4の整列さ
    れたクオドワードを上記メモリに記憶し、上記非整列の
    バイトアドレスは、上記メモリへ送る前に下位3ビット
    を除去するように変更されることを特徴とする方法。
  6. 【請求項6】 上記ロード段階の各々は、上記プロセッ
    サによって実行される個別の単一命令によって行われる
    請求項5に記載の方法。
  7. 【請求項7】 上記挿入段階の各々と上記マスク段階の
    各々は、上記プロセッサによって実行される個別の単一
    命令により行われる請求項6に記載の方法。
  8. 【請求項8】 上記記憶段階の各々は、上記プロセッサ
    によって実行される個別の単一命令により行われる請求
    項5に記載の方法。
  9. 【請求項9】 プロセッサ内でバイトオペレーションを
    実行するほうほうにおいて、 非整列のバイト参照を含む選択されたメモリ位置の内容
    を内部レジスタ手段にロードし、このレジスタ手段及び
    メモリ位置は整列されたマルチバイトフォーマットであ
    り、上記選択されたメモリ位置は上記バイト参照に対す
    る非整列アドレスによってアドレスされるが、上記内容
    は上記マルチバイトフォーアマットで整列され、 上記内部レジスタ手段において上記非整列のバイト参照
    のみに対してオペレーションを実行し、 そしてその後、上記非整列アドレスを用いてマルチバイ
    トフォーマットで整列された上記選択されたメモリ位置
    に上記内部レジスタ手段の内容を記憶することを特徴と
    する方法。
  10. 【請求項10】 上記ロード段階は1つの命令によって
    行われ、上記記憶段階は別の1つの命令によって行われ
    る請求項8に記載の方法。
  11. 【請求項11】 上記マルチバイトフォーマットは少な
    くとも4つのバイトより成る請求項8に記載の方法。
  12. 【請求項12】 上記マルチバイトフォーマットは8以
    下のバイトより成る請求項10にきさいの方法。
  13. 【請求項13】 上記非整列アドレスは、少なくとも3
    つの最下位アドレスビットをゼロにすることにより整列
    アドレスに変換される請求項11に記載の方法。
  14. 【請求項14】 オペレーションを実行する上記段階
    は、上記レジスタ手段の内容から上記非整列のバイト参
    照を抽出し、この抽出した非整列のバイト参照に対して
    演算又は論理オペレーションを実行して結果を発生し、
    次いで、この結果を、上記記憶段階の前に上記非整列の
    バイト参照において上記レジスタ手段の内容に挿入する
    ことを含む請求項8に記載の方法。
  15. 【請求項15】 上記マルチバイトフォーマットは少な
    くとも4つのバイトを含む請求項13に記載の方法。
  16. 【請求項16】 プロセッサでバイトオペレーションを
    実行する方法において、 マルチバイトデータに対する非整列のバイトアドレスを
    発生し、 上記非整列のバイトアドレスを含む選択された整列メモ
    リ位置の内容を第1の内部レジスタにロードし、この第
    1レジスタ及びメモリ位置は、整列されたNバイトフォ
    ーマットであり、 上記非整列メモリ位置にN−1を加えたものを含む選択
    された整列メモリ位置の内容を第2の内部レジスタにロ
    ードし、この第2のレジスタ及びメモリ位置は、整列さ
    れたNバイトフォーマットであり、 上記第1及び第2の内部レジスタにおいて上記マルチバ
    イトデータのみに対してオペレーションを実行して結果
    を発生し、 そしてその後、上記選択されたメモリ位置と、上記選択
    されたメモリ位置にN−1を加えた位置とに上記結果を
    記憶し、この記憶は、上記非整列アドレスを用いてNバ
    イトフォーマットに整列されることを特徴とする方法。
  17. 【請求項17】 上記各ロード段階は1つの命令で実行
    される請求項16に記載の方法。
  18. 【請求項18】 上記各ロード段階は1つの命令で実行
    される請求項16に記載の方法。
  19. 【請求項19】 上記Nバイトフォーマットは少なくと
    も4つのバイトより成る請求項16に記載の方法。
  20. 【請求項20】 上記Nバイトフォーマットは8以下の
    バイトより成る請求項19に記載の方法。
  21. 【請求項21】 上記非整列のアドレスは、少なくとも
    3つの最下位アドレスビットをゼロにすることにより整
    列アドレスに変換される請求項20に記載の方法。
  22. 【請求項22】 オペレーションを実行する上記段階
    は、上記第1及び第2レジスタの内容からマルチバイト
    データを抽出し、この抽出したマルチバイトデータに対
    して演算又は論理オペレーションを実行して結果を発生
    し、次いで、この結果を、上記記憶段階の前に上記マル
    チバイトデータのオリジナル位置において上記第1及び
    第2レジスタの内容に挿入することを含む請求項16に
    記載の方法。
  23. 【請求項23】 第1の非整列バイトアドレスを用いて
    メモリからの第1クオドワードを第1レジスタにロード
    する手段を具備し、上記第1の非整列バイトアドレスは
    Nバイトのデータ項目の第1バイトのアドレスであり、
    上記第1の非整列バイトアドレスは、上記メモリに送る
    前に下位3ビットを除去するように変更されて、整列さ
    れたクオドワードが上記第1レジスタにロードされるよ
    うになっており、 第2の非整列バイトアドレスを用いて上記メモリからの
    第2クオドワードを第2レジスタにロードする手段を具
    備し、上記第2の非整列バイトアドレスは、上記第1バ
    イトのアドレスにN−1を加えたものであり、上記第2
    の非整列バイトアドレスは、上記メモリに送る前に下位
    3ビットを除去するように変更されて、整列されたクオ
    ドワードが上記第2レジスタにロードされるようになっ
    ており、 上記非整列バイトアドレスの下位3ビットの値に対応す
    るバイトの数だけ第1レジスタの内容を右へシフトする
    ことにより上記第1レジスタから上記データ項目の第1
    部分を抽出しそして上位の空のビットをゼロにする手段
    を具備し、 上記非整列バイトアドレスの下位3ビットの値に対応す
    るバイトの数だけ第2レジスタの内容を左へシフトする
    ことにより上記第2レジスタから上記データ項目の第2
    部分を抽出しそして下位の空のビットをゼロにする手段
    を具備し、 上記データ項目の上記第1及び第2部分を1つのレジス
    タにおいて合成する手段を具備することを特徴とするプ
    ロセッサ。
  24. 【請求項24】 上記ロード手段は、上記プロセッサに
    よって実行される個別の単一命令を含む請求項23に記
    載のプロセッサ。
  25. 【請求項25】 上記抽出手段は、上記プロセッサによ
    って実行される個別の単一命令を含む請求項24に記載
    のプロセッサ。
  26. 【請求項26】 上記抽出手段は、上記プロセッサによ
    って実行される個別の単一命令を含む請求項21に記載
    の方法。
JP03254082A 1990-06-29 1991-06-28 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法 Expired - Fee Related JP3105960B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54761990A 1990-06-29 1990-06-29
US547619 1990-06-29

Publications (2)

Publication Number Publication Date
JPH06119166A true JPH06119166A (ja) 1994-04-28
JP3105960B2 JP3105960B2 (ja) 2000-11-06

Family

ID=24185411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03254082A Expired - Fee Related JP3105960B2 (ja) 1990-06-29 1991-06-28 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法

Country Status (7)

Country Link
US (2) US5367705A (ja)
EP (1) EP0465322B1 (ja)
JP (1) JP3105960B2 (ja)
KR (1) KR100231380B1 (ja)
CA (1) CA2045705A1 (ja)
DE (1) DE69131637T2 (ja)
TW (1) TW285729B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142776A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データをロードする方法及びデータをストアする方法
JP2011014131A (ja) * 2009-06-30 2011-01-20 Intel Corp スタックメモリ割り当て用にスーパページを自動的に利用する方法
WO2013095603A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for down conversion of data types

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664224A (en) * 1993-07-23 1997-09-02 Escom Ag Apparatus for selectively loading data blocks from CD-ROM disks to buffer segments using DMA operations
DE4334294C1 (de) * 1993-10-08 1995-04-20 Ibm Prozessor für Zeichenketten variabler Länge
US5584009A (en) * 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
GB2284493B (en) * 1993-12-01 1998-04-01 Intel Corp Exception handling in a processor that performs speculative out-of-order instruction execution
US5802341A (en) * 1993-12-13 1998-09-01 Cray Research, Inc. Method for the dynamic allocation of page sizes in virtual memory
US5666507A (en) * 1993-12-29 1997-09-09 Unisys Corporation Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing
US6003120A (en) * 1993-12-30 1999-12-14 Intel Corporation Method and apparatus for performing variable length processor write cycles
US5655132A (en) * 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
JP3452989B2 (ja) * 1994-09-26 2003-10-06 三菱電機株式会社 中央処理装置
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5701442A (en) * 1995-09-19 1997-12-23 Intel Corporation Method of modifying an instruction set architecture of a computer processor to maintain backward compatibility
US5745375A (en) * 1995-09-29 1998-04-28 Intel Corporation Apparatus and method for controlling power usage
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5797019A (en) * 1995-10-02 1998-08-18 International Business Machines Corporation Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
WO1997015001A2 (en) * 1995-10-06 1997-04-24 Patriot Scientific Corporation Risc microprocessor architecture
US5764959A (en) * 1995-12-20 1998-06-09 Intel Corporation Adaptive 128-bit floating point load and store instructions for quad-precision compatibility
US5889984A (en) * 1996-08-19 1999-03-30 Intel Corporation Floating point and integer condition compatibility for conditional branches and conditional moves
US6052753A (en) * 1997-01-21 2000-04-18 Alliedsignal Inc. Fault tolerant data bus
US6016532A (en) * 1997-06-27 2000-01-18 Sun Microsystems, Inc. Method for handling data cache misses using help instructions
US5878252A (en) * 1997-06-27 1999-03-02 Sun Microsystems, Inc. Microprocessor configured to generate help instructions for performing data cache fills
WO1999009472A1 (en) * 1997-08-18 1999-02-25 Koninklijke Philips Electronics N.V. Data processing device with relative jump instruction
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US6898700B2 (en) * 1998-03-31 2005-05-24 Intel Corporation Efficient saving and restoring state in task switching
US7206877B1 (en) 1998-12-22 2007-04-17 Honeywell International Inc. Fault tolerant data communication network
JP3444346B2 (ja) * 1999-01-04 2003-09-08 日本電気株式会社 仮想メモリ管理方式
KR20010018243A (ko) * 1999-08-18 2001-03-05 김영환 마이크로 프로세서의 레지스터 맵핑 방법
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
US7051168B2 (en) * 2001-08-28 2006-05-23 International Business Machines Corporation Method and apparatus for aligning memory write data in a microprocessor
EP1461723A4 (en) * 2001-11-01 2009-08-05 Verisign Inc METHOD AND SYSTEM FOR VALIDATING A REMOTE DATA BANK
US7139904B2 (en) * 2002-03-01 2006-11-21 Gorman J Zachary Data byte insertion circuitry
TWI224735B (en) * 2002-10-25 2004-12-01 Via Tech Inc Method for storing and accessing data in random bit range between different platforms
US7212440B2 (en) * 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7409589B2 (en) * 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7243210B2 (en) * 2005-05-31 2007-07-10 Atmel Corporation Extracted-index addressing of byte-addressable memories
CN101697116B (zh) * 2009-10-27 2011-11-09 飞天诚信科技股份有限公司 数据变换方法及装置
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US20160179662A1 (en) * 2014-12-23 2016-06-23 David Pardo Keppel Instruction and logic for page table walk change-bits
US20170169132A1 (en) * 2015-12-15 2017-06-15 Analog Devices, Inc. Accelerated lookup table based function evaluation
US9922039B1 (en) * 2016-03-31 2018-03-20 EMC IP Holding Company LLC Techniques for mitigating effects of small unaligned writes

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3961170A (en) * 1971-04-22 1976-06-01 Ing. C. Olivetti & C., S.P.A. Fixed point to floating point conversion in an electronic computer
US3873976A (en) * 1973-07-30 1975-03-25 Burroughs Corp Memory access system
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US4085447A (en) * 1976-09-07 1978-04-18 Sperry Rand Corporation Right justified mask transfer apparatus
JPS5743239A (en) * 1980-08-27 1982-03-11 Hitachi Ltd Data processor
US4613935A (en) * 1983-02-02 1986-09-23 Couleur John F Method and apparatus for pipe line processing with a single arithmetic logic unit
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4591982A (en) * 1983-08-29 1986-05-27 International Business Machines Corporation Storage selection override apparatus for a multimicroprocessor implemented data processing system
WO1986000433A1 (en) * 1984-06-27 1986-01-16 Motorola, Inc. Method and apparatus for a bit field instruction
US5034900A (en) * 1984-10-05 1991-07-23 Hitachi, Ltd. Method and apparatus for bit operational process
US4739471A (en) * 1985-06-28 1988-04-19 Hewlett-Packard Company Method and means for moving bytes in a reduced instruction set computer
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
CA1327080C (en) * 1987-05-26 1994-02-15 Yoshiko Yamaguchi Reduced instruction set computer (risc) type microprocessor
DE3786080D1 (de) * 1987-08-20 1993-07-08 Ibm Speicherzugriffssteuerungsvorrichtung in einem gemischtdatenformatsystem.
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
US4916654A (en) * 1988-09-06 1990-04-10 International Business Machines Corporation Method for transfer of data via a window buffer from a bit-planar memory to a selected position in a target memory
EP0363176B1 (en) * 1988-10-07 1996-02-14 International Business Machines Corporation Word organised data processors
US5051894A (en) * 1989-01-05 1991-09-24 Bull Hn Information Systems Inc. Apparatus and method for address translation of non-aligned double word virtual addresses
US5276891A (en) * 1990-01-11 1994-01-04 Bull Hn Information Systems Inc. Alignment of sign, data, edit byte operand results for storage in memory
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142776A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データをロードする方法及びデータをストアする方法
JP2011014131A (ja) * 2009-06-30 2011-01-20 Intel Corp スタックメモリ割り当て用にスーパページを自動的に利用する方法
WO2013095603A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for down conversion of data types
CN104081340A (zh) * 2011-12-23 2014-10-01 英特尔公司 用于数据类型的下转换的装置和方法
US10474463B2 (en) 2011-12-23 2019-11-12 Intel Corporation Apparatus and method for down conversion of data types

Also Published As

Publication number Publication date
DE69131637D1 (de) 1999-10-28
DE69131637T2 (de) 2000-06-08
EP0465322B1 (en) 1999-09-22
EP0465322A3 (en) 1992-11-19
KR920001320A (ko) 1992-01-30
KR100231380B1 (ko) 1999-11-15
US5410682A (en) 1995-04-25
CA2045705A1 (en) 1991-12-30
JP3105960B2 (ja) 2000-11-06
US5367705A (en) 1994-11-22
EP0465322A2 (en) 1992-01-08
TW285729B (ja) 1996-09-11

Similar Documents

Publication Publication Date Title
JP3105960B2 (ja) 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法
JP3055980B2 (ja) マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法
JP3187090B2 (ja) 高性能プロセッサのためのバイト比較操作方法
JP2951064B2 (ja) パイプラインプロセッサを動作する方法及びパイプラインプロセッサ
KR100230643B1 (ko) 고성능 프로세서의 브랜치 예상 동작 방법 및 장치
KR100230105B1 (ko) 간략화된 명령 세트 프로세서의 성능 개선 방법 및 그 프로세서 시스템
KR100218572B1 (ko) 고성능 프로세서의 번역버퍼에 대해 세분성 힌트를 이용하는 프로세서 동작 방법 및 장치
JPH06131179A (ja) 分岐を除去することによりコンピュータ性能を改善する方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees