JP3055980B2 - マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法 - Google Patents

マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法

Info

Publication number
JP3055980B2
JP3055980B2 JP3254081A JP25408191A JP3055980B2 JP 3055980 B2 JP3055980 B2 JP 3055980B2 JP 3254081 A JP3254081 A JP 3254081A JP 25408191 A JP25408191 A JP 25408191A JP 3055980 B2 JP3055980 B2 JP 3055980B2
Authority
JP
Japan
Prior art keywords
instruction
register
byte
address
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP3254081A
Other languages
English (en)
Other versions
JPH06131178A (ja
Inventor
エル シートス リチャード
ティー ウィテック リチャード
Original Assignee
ディジタル イクイプメント コーポレイション
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 ディジタル イクイプメント コーポレイション filed Critical ディジタル イクイプメント コーポレイション
Publication of JPH06131178A publication Critical patent/JPH06131178A/ja
Application granted granted Critical
Publication of JP3055980B2 publication Critical patent/JP3055980B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/46Multiprogramming arrangements
    • 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/383Operand prefetching
    • 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/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

Landscapes

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

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】次に、アクセスすべき次のページを識別す
るグラニュラリティヒント(GH)を有する仮想アドレ
スから物理アドレスへの変換スキームについて説明す
る。特定の特徴は、2ビット<6:5>のグラニュラリ
ティヒント84である。ソフトウェアによりこれらビッ
トは非ゼロ値にセットされ、変換バッファ36又は48
にヒントが送られて、ページのブロックが大きな単一ペ
ージとして処理されるようになる。このブロックは8N
ページの整列されたグループであり、NはPTE<6:
5>の値であり、例えば、(ページサイズ+3N)下位
ゼロの仮想アドレスで始まる1、8、64又は512ペ
ージのグループである。上記ブロックは、仮想的及び物
理的の両方で整列された物理的に連続するページのグル
ープであり、ブロック内では、PFNの下位3Nビット
が識別マッピングを記述し(即ち、ページ内バイトフィ
ールドに加えることによって物理アドレスの一部分とし
て用いられる)そして上位(32−3N)PFNビット
は全て等しい。ブロック内では、全ての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<R2)の場合何もしない !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 データキャッシュ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 リチャード ティー ウィテック アメリカ合衆国 マサチューセッツ州 01460リトルトン シルヴァーバーチ レーン 8 (56)参考文献 特開 平6−103067(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 マルチプロセッサ又はパイプラインプロ
    セッサシステムにおけるデータの完全性を確保する方法
    において、プロセッサのオペレーション中にバイト書き
    込みを実行する方法であって、 選択された整列マルチバイト外部メモリ位置の内容を内
    部レジスタ手段にロードし、上記内容は書き込むべき非
    整列バイト位置を含んでおり、その後、上記選択された
    外部メモリ位置への他の記憶を検出し、 上記選択された外部メモリ位置へ他の記憶がなされた場
    合に指示を発生し、 上記内部レジスタ手段において上記非整列バイト位置の
    値を新たな書き込むべき値と取り換える一方、上記内容
    の残り部分はそのまま残し、そしてその後、 上記指示が存在するかどうかに基づいて、上記内部レジ
    スタ手段の上記内容を上記選択された整列マルチバイト
    外部メモリ位置へ条件に応じて記憶するという段階を具
    備することを特徴とする方法。
  2. 【請求項2】 条件に応じて記憶する上記段階が記憶を
    行ったかどうかの指示を上記プロセッサに発生する請求
    項1に記載の方法。
  3. 【請求項3】 上記ロードを行いそして上記指示を発生
    する段階は、1つの命令によって行われる請求項1に記
    載の方法。
  4. 【請求項4】 条件に応じて記憶しそして上記指示を発
    生する段階は、1つの命令によって行われる請求項2に
    記載の方法。
  5. 【請求項5】 指示を発生する上記段階は、フラグをリ
    セットすることを含み、このフラグは上記ロード段階の
    際にセットされる請求項1に記載の方法。
  6. 【請求項6】 上記フラグは、上記プロセッサに割り込
    み又は例外が生じたときにリセットされる請求項5に記
    載の方法。
  7. 【請求項7】 上記メモリはクオドワード(8バイト)
    又はロングワード(4バイト)の境界に整列される請求
    項1に記載の方法。
JP3254081A 1990-06-29 1991-06-28 マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法 Expired - Lifetime JP3055980B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/547,618 US5193167A (en) 1990-06-29 1990-06-29 Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
US547618 1990-06-29

Publications (2)

Publication Number Publication Date
JPH06131178A JPH06131178A (ja) 1994-05-13
JP3055980B2 true JP3055980B2 (ja) 2000-06-26

Family

ID=24185406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3254081A Expired - Lifetime JP3055980B2 (ja) 1990-06-29 1991-06-28 マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法

Country Status (7)

Country Link
US (1) US5193167A (ja)
EP (1) EP0465321B1 (ja)
JP (1) JP3055980B2 (ja)
KR (1) KR0185988B1 (ja)
CA (1) CA2045934A1 (ja)
DE (1) DE69127242T2 (ja)
TW (2) TW239198B (ja)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0348951A (ja) * 1989-07-18 1991-03-01 Fujitsu Ltd アドレスモニタ装置
CA2045735A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Computer performance by eliminating branches
JPH0831032B2 (ja) * 1990-08-29 1996-03-27 三菱電機株式会社 データ処理装置
TW197505B (ja) * 1991-03-07 1993-01-01 Digital Equipment Corp
GB9112754D0 (en) * 1991-06-13 1991-07-31 Int Computers Ltd Data processing apparatus
JP2984463B2 (ja) 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
JP3105197B2 (ja) 1991-06-24 2000-10-30 株式会社日立製作所 除算回路及び除算方法
US5430860A (en) * 1991-09-17 1995-07-04 International Business Machines Inc. Mechanism for efficiently releasing memory lock, after allowing completion of current atomic sequence
US5491811A (en) * 1992-04-20 1996-02-13 International Business Machines Corporation Cache system using mask bits to recorder the sequences for transfers of data through cache to system memory
EP0663083B1 (en) 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
WO1994011828A2 (en) * 1992-11-09 1994-05-26 Ast Research, Inc. Write buffer with full rank byte gathering
JP3304444B2 (ja) * 1992-11-30 2002-07-22 富士通株式会社 ベクトル処理装置
EP0601715A1 (en) * 1992-12-11 1994-06-15 National Semiconductor Corporation Bus of CPU core optimized for accessing on-chip memory devices
US5568415A (en) * 1993-02-19 1996-10-22 Digital Equipment Corporation Content addressable memory having a pair of memory cells storing don't care states for address translation
US5406504A (en) * 1993-06-30 1995-04-11 Digital Equipment Multiprocessor cache examiner and coherency checker
US5555392A (en) * 1993-10-01 1996-09-10 Intel Corporation Method and apparatus for a line based non-blocking data cache
US5689695A (en) * 1993-11-30 1997-11-18 Texas Instruments Incorporated Conditional processor operation based upon result of two consecutive prior processor operations
US5802341A (en) * 1993-12-13 1998-09-01 Cray Research, Inc. Method for the dynamic allocation of page sizes in virtual memory
US5636374A (en) * 1994-01-04 1997-06-03 Intel Corporation Method and apparatus for performing operations based upon the addresses of microinstructions
TW260765B (ja) * 1994-03-31 1995-10-21 Ibm
JPH07302200A (ja) * 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5931945A (en) * 1994-04-29 1999-08-03 Sun Microsystems, Inc. Graphic system for masking multiple non-contiguous bytes having decode logic to selectively activate each of the control lines based on the mask register bits
JPH07334416A (ja) * 1994-06-06 1995-12-22 Internatl Business Mach Corp <Ibm> コンピュータ・システムにおけるページ・モード・メモリの初期設定の方法および手段
EP0702306A1 (en) * 1994-09-19 1996-03-20 International Business Machines Corporation System and method for interfacing risc busses to peripheral circuits using another template of busses in a data communication adapter
JP3452989B2 (ja) * 1994-09-26 2003-10-06 三菱電機株式会社 中央処理装置
US6073211A (en) * 1994-12-13 2000-06-06 International Business Machines Corporation Method and system for memory updates within a multiprocessor data processing system
US5611073A (en) * 1995-02-09 1997-03-11 Delco Electronics Corp. Method of ensuring parameter coherency in a multi-processor system
US5666494A (en) * 1995-03-31 1997-09-09 Samsung Electronics Co., Ltd. Queue management mechanism which allows entries to be processed in any order
US5638534A (en) * 1995-03-31 1997-06-10 Samsung Electronics Co., Ltd. Memory controller which executes read and write commands out of order
US5704053A (en) * 1995-05-18 1997-12-30 Hewlett-Packard Company Efficient explicit data prefetching analysis and code generation in a low-level optimizer for inserting prefetch instructions into loops of applications
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
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
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
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
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
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
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
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
US5778208A (en) * 1995-12-18 1998-07-07 International Business Machines Corporation Flexible pipeline for interlock removal
US5815421A (en) * 1995-12-18 1998-09-29 Intel Corporation Method for transposing a two-dimensional array
US5907842A (en) * 1995-12-20 1999-05-25 Intel Corporation Method of sorting numbers to obtain maxima/minima values with ordering
US5751946A (en) * 1996-01-18 1998-05-12 International Business Machines Corporation Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US5941938A (en) * 1996-12-02 1999-08-24 Compaq Computer Corp. System and method for performing an accumulate operation on one or more operands within a partitioned register
US5893145A (en) * 1996-12-02 1999-04-06 Compaq Computer Corp. System and method for routing operands within partitions of a source register to partitions within a destination register
US6173366B1 (en) 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US6009505A (en) * 1996-12-02 1999-12-28 Compaq Computer Corp. System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot
US6061521A (en) * 1996-12-02 2000-05-09 Compaq Computer Corp. Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle
US6052753A (en) * 1997-01-21 2000-04-18 Alliedsignal Inc. Fault tolerant data bus
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US20030073809A1 (en) * 1997-06-16 2003-04-17 Genentech, Inc. Secreted and transmembrane polypeptides and nucleic acids encoding the same
US6061765A (en) * 1997-10-24 2000-05-09 Compaq Computer Corporation Independent victim data buffer and probe buffer release control utilzing control flag
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6088771A (en) * 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US6141734A (en) * 1998-02-03 2000-10-31 Compaq Computer Corporation Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
US6173414B1 (en) 1998-05-12 2001-01-09 Mcdonnell Douglas Corporation Systems and methods for reduced error detection latency using encoded data
US7206877B1 (en) 1998-12-22 2007-04-17 Honeywell International Inc. Fault tolerant data communication network
US6629212B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation High speed lock acquisition mechanism with time parameterized cache coherency states
US6549989B1 (en) 1999-11-09 2003-04-15 International Business Machines Corporation Extended cache coherency protocol with a “lock released” state
US6629209B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation Cache coherency protocol permitting sharing of a locked data granule
US6629214B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation Extended cache coherency protocol with a persistent “lock acquired” state
US6625701B1 (en) 1999-11-09 2003-09-23 International Business Machines Corporation Extended cache coherency protocol with a modified store instruction lock release indicator
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6678810B1 (en) * 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6766442B1 (en) 2000-03-30 2004-07-20 International Business Machines Corporation Processor and method that predict condition register-dependent conditional branch instructions utilizing a potentially stale condition register value
US6678820B1 (en) * 2000-03-30 2004-01-13 International Business Machines Corporation Processor and method for separately predicting conditional branches dependent on lock acquisition
US6658558B1 (en) 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
US6973561B1 (en) * 2000-12-04 2005-12-06 Lsi Logic Corporation Processor pipeline stall based on data register status
US7472259B2 (en) * 2000-12-06 2008-12-30 Analog Devices, Inc. Multi-cycle instructions
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
US6877085B2 (en) 2001-11-30 2005-04-05 Broadcom Corporation Mechanism for processing speclative LL and SC instructions in a pipelined processor
US6892260B2 (en) * 2001-11-30 2005-05-10 Freescale Semiconductor, Inc. Interrupt processing in a data processing system
US7099974B2 (en) * 2003-03-20 2006-08-29 International Business Machines Corporation Method, apparatus, and system for reducing resource contention in multiprocessor systems
US7254698B2 (en) * 2003-05-12 2007-08-07 International Business Machines Corporation Multifunction hexadecimal instructions
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
US7243210B2 (en) * 2005-05-31 2007-07-10 Atmel Corporation Extracted-index addressing of byte-addressable memories
US7480771B2 (en) 2005-08-17 2009-01-20 Sun Microsystems, Inc. Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged
US7680989B2 (en) * 2005-08-17 2010-03-16 Sun Microsystems, Inc. Instruction set architecture employing conditional multistore synchronization
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, 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
US8078843B2 (en) * 2008-01-31 2011-12-13 International Business Machines Corporation Facilitating processing in a computing environment using an extended drain instruction
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8799583B2 (en) 2010-05-25 2014-08-05 International Business Machines Corporation Atomic execution over accesses to multiple memory locations in a multiprocessor system
CN102402485B (zh) * 2010-09-16 2014-05-28 安凯(广州)微电子技术有限公司 Nandflash参数探测方法
US9164771B2 (en) * 2012-06-29 2015-10-20 Avaya Inc. Method for thread reduction in a multi-thread packet processor
US20150378904A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Allocating read blocks to a thread in a transaction using user specified logical addresses
US10114752B2 (en) 2014-06-27 2018-10-30 International Business Machines Corporation Detecting cache conflicts by utilizing logical address comparisons in a transactional memory
CN106201440B (zh) * 2016-06-28 2018-10-23 上海兆芯集成电路有限公司 字符串比较指令优化的中央处理单元以及其操作方法
GB2563384B (en) 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering
US10725937B2 (en) * 2018-07-30 2020-07-28 International Business Machines Corporation Synchronized access to shared memory by extending protection for a store target address of a store-conditional request
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11163575B2 (en) * 2019-04-03 2021-11-02 Microsoft Technology Licensing, Llc Widening memory access to an aligned address for unaligned memory operations
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59231652A (ja) * 1983-06-13 1984-12-26 Hitachi Ltd メモリアクセス・オ−バラツプ検出方式
US4561051A (en) * 1984-02-10 1985-12-24 Prime Computer, Inc. Memory access method and apparatus in multiple processor systems
JPS6167156A (ja) * 1984-09-07 1986-04-07 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション デ−タ読取り/変更装置
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
EP0363176B1 (en) * 1988-10-07 1996-02-14 International Business Machines Corporation Word organised data processors

Also Published As

Publication number Publication date
KR920001334A (ko) 1992-01-30
DE69127242D1 (de) 1997-09-18
KR0185988B1 (ko) 1999-05-15
EP0465321A3 (en) 1994-07-06
US5193167A (en) 1993-03-09
JPH06131178A (ja) 1994-05-13
TW239198B (ja) 1995-01-21
TW276311B (ja) 1996-05-21
DE69127242T2 (de) 1998-03-12
CA2045934A1 (en) 1991-12-30
EP0465321B1 (en) 1997-08-13
EP0465321A2 (en) 1992-01-08

Similar Documents

Publication Publication Date Title
JP3055980B2 (ja) マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法
JP3105960B2 (ja) 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法
JP3187090B2 (ja) 高性能プロセッサのためのバイト比較操作方法
JP2951064B2 (ja) パイプラインプロセッサを動作する方法及びパイプラインプロセッサ
US6076158A (en) Branch prediction in high-performance processor
US5778423A (en) Prefetch instruction for improving performance in reduced instruction set processor
KR100218572B1 (ko) 고성능 프로세서의 번역버퍼에 대해 세분성 힌트를 이용하는 프로세서 동작 방법 및 장치
US5469551A (en) Method and apparatus for eliminating branches using conditional move instructions