JP2939003B2 - 浮動小数点装置を有する高性能多重プロセッサ及びその性能を改良する方法 - Google Patents

浮動小数点装置を有する高性能多重プロセッサ及びその性能を改良する方法

Info

Publication number
JP2939003B2
JP2939003B2 JP3159113A JP15911391A JP2939003B2 JP 2939003 B2 JP2939003 B2 JP 2939003B2 JP 3159113 A JP3159113 A JP 3159113A JP 15911391 A JP15911391 A JP 15911391A JP 2939003 B2 JP2939003 B2 JP 2939003B2
Authority
JP
Japan
Prior art keywords
data
unit
bus
instruction
cache
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 - Fee Related
Application number
JP3159113A
Other languages
English (en)
Other versions
JPH0675747A (ja
Inventor
ジャイン アニル
ウォルリッチ ギルバート
デヴァレル ディヴィッド
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.)
DEIJITARU EKUITSUPUMENTO CORP
Original Assignee
DEIJITARU EKUITSUPUMENTO 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 DEIJITARU EKUITSUPUMENTO CORP filed Critical DEIJITARU EKUITSUPUMENTO CORP
Publication of JPH0675747A publication Critical patent/JPH0675747A/ja
Application granted granted Critical
Publication of JP2939003B2 publication Critical patent/JP2939003B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02BINTERNAL-COMBUSTION PISTON ENGINES; COMBUSTION ENGINES IN GENERAL
    • F02B75/00Other engines
    • F02B75/02Engines characterised by their cycles, e.g. six-stroke
    • F02B2075/022Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle
    • F02B2075/025Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle two
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】本願は、ディジタルコンピュータに関し、
特に、単一チップ集積回路として構成される種類の改良
されたCPU装置に関する。
【0002】
【従来技術とその問題点】書込みコード、データベース
構造及び人員訓練における膨大な投資を代表する既存の
ソフトウェアベースの大きな部分は、複合命令のセット
又はCISC型プロセッサのためのものである。この種
類のプロセッサは、複雑なメモリーアクセスモードを伴
う『メモリーからメモリーへの』命令をしばしば含む、
多数の命令をその命令セットのなかに持っていることを
特徴とする。命令は普通は可変長であり、単純な命令は
恐らく僅かに1バイトの長さであるが、長さの範囲は数
十バイトに及ぶ。VAXTM命令セットはCISCの主要
な例であり、1ないし2バイトのオプコード(opcode)
と0ないし6個のオペランド指定子とを有する命令を使
用し、ここで各オペランド指定子の長さは1バイトない
し多数のバイトである。オペランド指定子のサイズはア
ドレス指定モード、変位のサイズ(バイト、ワード又は
ロングワード)、等々に依存する。オペランド指定子の
第1バイトは、そのオペランドについてのアドレス指定
モードを記述し、オプコードはオペランドの個数(1、
2又は3)を定める。しかし、オプコード自体が解読さ
れるとき、オペランド指定子がまだ解読されていないの
で、命令の全長はまだプロセッサには知られていない。
VAX型のプロセッサの他の特徴は、カッドワード(qua
dword)又はロングワード参照に加えてバイト又はバイト
ストリング・メモリー参照を使用することである、即
ち、メモリー参照の長さは、不整合バイト参照を含んで
1バイトないし複数ワードの範囲にわたって可変であ
る。
【0003】VAX型のアーキテクチャにおいて利用出
来る強力な命令、メモリーアクセスモード及びデータの
種類の多様性は、コードの各ラインについてより多くの
作業が行われるという結果をもたらすべきである(実際
に、コンパイラーは、これを充分に利用するコードを作
るものではない)。ソースコードのコンパクトさの向上
は、実行時間を犠牲にして得られるものである。システ
ムに現在要求されている動作レベルを達成するために特
に命令実行のパイプライン処理(pipelining)が必要に
なってきているので、連続する命令のデータ又は状態依
存性と、機械サイクル時間に対するメモリーアクセス時
間の巨大な差異とに起因して、過剰な機能停止(stall)
と除外項目とが生み出され、実行速度を低下させる。
【0004】CPUがメモリーより遙かに高速であった
ときには、命令当たりにより多量の作業を行うのが有益
であったが、それは、若しそうでなければCPUはメモ
リーが命令を送るのを常に待っていることになるからで
ある−この要因は、若しそうでなければサブルーチンと
して実行されることになるものものを詰め込む一層複雑
な命令を生み出す。CPUとメモリーの速度の釣合いが
取れてきたとき、メモリーシテスムが各サイクルに一つ
の命令とある程度のデータとを送ることが出来るとする
と、複合命令の利点は減少した。高速アクセスサイクル
と同様に、階層メモリー技術と、一層大きなメモリーア
クセスバンド幅とは、この高速のメモリー速度をもたら
す。複合命令と単純な命令との選択に影響を与えた他の
要因は、CPUのVLSI構成から生じたオフチップ接
続対オンチップ接続の相対的コストの変化である。基板
の代わりのチップの上に構成することは経済を変化させ
る。即ち、第1に、1チップ上に搭載するのに充分な程
度にアーキテクチャを単純にすることは損にならず、次
に、メモリー参照のためにオフチップで行くことを避け
るために、より多量のオンチップ・メモリーが可能であ
る(と共に必要でもある)。比較における別の要因は、
CISC解決策における如くにより多量の複雑な命令及
びアドレス指定モードを付加すると、命令実行プロセス
の諸段階を複雑(従って低速)にすることである。複雑
な機能は、単純な命令の等価なシーケンスより高速に実
行を行わせるかも知れないけれども、命令サイクル時間
を長くして全命令の実行を低速化する可能性がある。よ
って、付加された機能は、命令実行速度の低下を補うの
に充分な程度に全体としての性能を高めなければならな
い。
【0005】CISCプロセッサの理論的利点を減じる
動作要因があるにも係わらず、上記した既存のソフトウ
ェアは、これらの種類のプロセッサの長期にわたる需要
をもたらすものであり、そして当然に市場は不断に向上
する性能レベルを必要とする。企業は、オペレータ訓練
及びコード自体のコストを含めて多年にわたる営業を、
アプリケションプログラムと、過去10年ないし15年
に最も広く使われたCISC型のプロセッサを使用する
データ構造に投資した。結局は達成されると予測される
性能上の利点が相当のものであるとしても、新しいプロ
セッサアーキテクチャに合わせてコード及びデータ構造
の全てを書き直す経費と作業の混乱とは正しいとはされ
ないかも知れない。従って、メモリーアクセスに可変長
命令及び可変テータ幅を使用する種類の命令セットを実
行するCPUに高性能をもたらすことが目的である。
【0006】典型的なVAX装置は3個の主要部分、即
ち、命令を取り出して解読するIボックス又は命令ユニ
ットと、該命令によって定義される動作を実行するEボ
ックス又は実行ユニットと、メモリー及びI/O機能を
処理するMボックス又はメモリー管理ユニットと、を持
っている。このVAXシステムの例が米国特許第4,8
75,160号に示されているが、これは1989年1
0月17日にジョンF.ブラウンに発行されてディジタ
ルエクイプメント・コーポレーションに譲渡されたもの
である。これらの機械は、単チップCPU装置を使って
構成され、非常に高速に刻時され、マイクロコード化さ
れ且つパイプライン処理されている。
【0007】理論上、パイプラインが完全に維持される
と共にサイクル毎に命令が発せられるならば、プロセッ
サはサイクル当たり1個の命令を実行することが出来
る。複合命令を有する機械では、この理想を達成するの
に幾つかの障壁がある。第1に、可変サイズの命令で
は、恐らくはその解読に数サイクル入るまでは命令の長
さは未知である。オプコード・バイトの数は可変であ
り、オペランドの数は可変であり、オペランドを指定す
るのに使われるバイトの数は可変である。命令は逐次に
解読されなければならず、並列解読は実用的でない。第
2に、1命令によって生成されたけれども未だ利用する
ことの出来ない結果が、実行されることの出来る状態と
なっている後続の命令に必要とされるとき、データ依存
性がパイプライン内にバブルを生じさせる。第3に、命
令の複雑さが極めて多様であるために、命令毎にパイプ
ラインを長くしたり(この様にするとデータ依存性問題
が一層悪くなる)、或いは項目を機能停止(これはバブ
ルを生じさせる)させたりせずに実行を行うことは実際
的でない。
【0008】斯くして、装置レベルでの最も積極的な動
作を得るために現代の半導体処理及び高いクロックレー
トを使用しても、アーキテクチャの本来的な特性は全体
としての動作を妨げるので、要求に応じたシステム性能
を提供するために幾つかの特徴を利用しなければならな
い。
【0009】
【発明の概要】幾つかの別々の特徴を示す本発明の一実
施例では、可変長の命令を実行することが出来ると共
に、種々のデータ幅を使用するメモリーを参照すること
が出来るパイプライン処理CPUが設けられる。その幾
つかの特徴により性能が向上する。
【0010】与えられた時にパイプラインの種々の段階
に幾つかのマクロ命令があることが出来る様に、(マイ
クロ命令パイプライン処理の代わりに)マクロ命令パイ
プライン処理が採用される。命令実行時に或る程度の柔
軟性が存在する様にCPUのユニット間に待ち合わせが
設けられる;一つの命令の諸段階の実行は、先の命令に
よるこれらの段階の完了を必ずしも常に待たなくてもよ
い。むしろ、一つの段階により作られた情報を、次の段
階の用意が出来るまで待ち合わせさせることが出来る。
【0011】他の特徴は、メモリーアクセスのための広
いバンド幅の使用である。より高速のサイクル時間で
の、システムバス又はキャッシュの各サイクルでの64
ビットデータブロックの取り出しが性能を向上させる。
それにも係わらず、バイト及びバイトストリングタイプ
のメモリー参照をなお利用できるので、既存のソフトウ
ェア及びデータ構造は陳腐化しない。しかし、より広い
データ経路及びメモリーバンド幅は、階層メモリー組織
と共に、キャッシュ・ヒットの確率を高めて、メモリー
へのバイト動作により課される負担を軽減する。
【0012】開示する例のCPUに使われる階層キャッ
シュ構成は、キャッシュセット選択の改良された方法と
共に、メモリー参照がメモリー内のデータではなくてキ
ャッシュ内にあるデータへのメモリー参照である確率を
高める。特に、セット選択技術は、インヴァリデート
(無効化)のターゲットであったキャッシュ内のブロッ
クへフィル(充填データ)を向ける様に強化された、
『最後に使われたものでないフィル・アルゴリズム』
(a not−last−used fill alg
orithm)を採用するので、使われる最も確率の高
いデータブロックは、フィルにより重ね書きされずにキ
ャッシュ内にとどまる。
【0013】追加の特徴は、階層メモリー(より多くの
メモリー参照を必要とするライトスルー(writethrough)
ではなくて)の少なくとも一部についてライトバック・
キャッシュを使用し、たとえキューが満杯であるために
他のアクセスが抑えられていてもライトバックの進行を
許すことである。よって、一つの特徴は、ライトバック
・キャッシュ環境においてライトバック操作を分離して
進行させ、他の種類のデータアクセスをCPU−バス間
のインターフェースで遅延させることである。
【0014】特別の改良が、一実施例においてCPUに
含まれる分岐予測方法により得られる。分岐は、パイプ
ライン処理プロセッサでは命令当たりのサイクル数とい
う見地から性能を低下させるが、それは、分岐が取られ
るときには、パイプライン中の先取りされた命令を流し
て新しい命令ストリームを開始させなければならないか
らである。最近使われた分岐オプコードの『取られる/
取られない』の履歴を記録した分岐履歴テーブルを採用
すると共に、この履歴テーブルに基づいて、この分岐の
次に生じたときにどの道を行くかを予測する経験的アル
ゴリズムを使うことにより、改善した予測結果が得られ
る。従って、命令ストリームを向け直さなければならな
い機会を減らすことによって性能が向上する。
【0015】実施例では浮動小数点プロセッサ機能は、
オフチップではなくてオンチップで集積される。2個の
バスインターフェース及び外部バスを通る負担が無くな
り、外部バスのバンド幅がこの目的のために使われない
ので、浮動小数点命令の実行の速度は向上する。また、
結果が送り戻される前にオペレーションがオンチップ浮
動小数点ユニットに送られる時からの遅延のサイクル数
がバイパス技術により減らされる。最も普通に使われる
機能において丸め操作はデータ幅全体の代わりに下位ビ
ットに対して行われる必要があるに過ぎないので、試し
のミニ丸めを行って結果が正しいか否か確かめることが
出来、そして、若しそうならば、浮動小数点プロセッサ
の最後の段をバイパスして1サイクルの待ち時間を減ず
ることが出来る。
【0016】CPUにおける実行の遅延をもたらす事象
の一つはCALLなどの命令の発生であり、この場合に
はCPUの状態を戻りのために保存しなければならな
い。特に、本書に開示した種類の従来のCPUは、特許
4,875,160号に示されている様に、スタックへ
のレジスター・セットのうちの所要のレジスターの各々
を節約するためにマイクロコード・シーケンスを使用し
てきた。どんなレジスターを節約する必要があるかを正
確に判定するために、該レジスター・セットの各レジス
ターについて少なくとも1サイクルを要するマイクロコ
ード・ルーチンを使ってレジスターマスクの各位置をチ
ェックするのが普通であった。この長い手順の代わり
に、ここに開示したCPUの特徴は、レジスターマスク
ビットのグループを一時に調べることによって最小限の
サイクル数でどのレジスターを節約する必要があるかを
判定する手段となる。最もあり触れた状況では、数個の
レジスターを節約する必要があるに過ぎないので、該レ
ジスターマスクの殆どは0であって、極少数のサイクル
で走査されることが出来る。
【0017】単チップCPU装置に使われるチップのサ
イズを減少させることが出来る限り、性能(速度)、電
力消費、コスト及び信頼性に有利な影響を及ぼすことが
出来る。内部バス及び信号経路の数及び長さを減少させ
ることによって、チップ面積が最小にされる。本書に開
示したCPU装置においてこの目的を達成する技術の一
つは、メモリー及びI/O参照に使われる完全な物理的
アドレスの代わりに短い(バイト幅)アドレスで内部プ
ロセッサレジスターにアクセスする方法である。幾つか
の内部プロセッサレジスター(状況、コントロール等の
ための非メモリー記憶装置)があり、その或るものはチ
ップ上にあり(オンチップ)、或るものはチップ上に無
い(オフチップ)。好ましくは、該オフチップ・プロセ
ッサレジスターは、メモリーマッピングされて、メモリ
ー及びI/Oと同じコントロールを使って同じバスによ
りアクセスされるので、制御信号の異なる組を設ける必
要はない。しかし、割合に少数のプロセッサレジスター
しかないので、小さなアドレスで十分であり、オンチッ
プでは完全アドレスは避けるべきであり、ここでは追加
された制御信号はシステムバス上でよりも遙かに負担に
ならない。従って、オンチップのプロセッサレジスター
にアクセスするのに短アドレス及び特別の制御ラインが
使われるが、外部プロセッサレジスターにアクセスする
ためには完全アドレスが追加の制御ライン無しで使われ
る。よって、内部ラインの数の減少が達成されるが、メ
モリー及びI/Oアクセスに採用されるバス構造を使っ
て外部参照をI/Oマッピングすることが出来る。
【0018】階層メモリーシステムにおいてライトバッ
ク・キャッシュが使われるとき、該キャッシュは、時に
は、或るデータの妥当なコピーだけを内蔵することが出
来る。ECC回路等により回復不能のエラーが検出され
ることにより証明される様にキャッシュが故障すれば、
キャッシュが所有しているデータは唯一のコピーである
かも知れないので、そのデータはシステムに利用可能で
なければならない。更に、キャッシュ内のデータは、好
ましくは、診断目的のために乱されない状態で維持され
る。よって、キャッシュは単にオフにされることは出来
ず、通常の方法で操作され続けることも出来ない。従っ
て、エラー遷移モードが設けられるが、このモードで
は、キャッシュは限られたアクセス規則の下で動作し、
システムによる最大限のアクセスによってキャッシュに
所有されているデータブロックを使用させることを可能
にするがキャッシュデータの変更を最小限にとどめる。
【0019】本書に記載したコンピューターシステムで
は、種々の構成要素が可能な時には何時でも互いに独立
に動作出来るように、データは可能なときには何時でも
緩衝記憶され又は待ち合わせさせられて、他の一つが始
まる前に与えられた一つが完了するまで待つ必要無しに
例えば多くのバス・トランザクションが開始されること
を可能にする。待ち合わせさせられるバス・トランザク
ションの例は、入ってくる〔読み出し−戻り〕データ及
びキャッシュ−インヴァリデート・オペレーションであ
る。システムバスは、メモリーがアクセスサイクルを完
了するときに読み出しデータを戻し、CPUがその読み
出し戻り(read return)を受け取ることが
出来る様になるまで該読み出し戻りを待ち合わせさせる
ためにインターフェースが設けられる。一方、システム
バス上に発生する全ての書込みは、そのキャッシュを更
新された状態に維持する多重プロセッサ環境ではCPU
により監視される;その様なトランザクションは各々イ
ンヴァリデートと呼ばれていて、他のプロセッサにより
メモリーへの書込みが実行されるデータブロックについ
てのアドレスタグ(アドレス全体は不要である)から成
っている。キャッシュの干渉性(コヒーレンシー)を維
持するために、読み出し戻り及びインヴァリデートは時
間の順に維持されなければならない、即ち、それらがシ
ステムバス上に出現した順にキャッシュにおいて実行さ
れなければならない。よって、それらはFIFO型のバ
ッファーにおいて待ち合わせさせられなければならな
い。しかし、インヴァリデートについてのデータ幅は読
み出し戻りのそれよりも遙かに小さく、読み出し戻りよ
り多数のインヴァリデートがあるので、トラフィックの
大半には殆ど幅を要しないというときには、読み出し戻
りに必要とされるキュー幅を使用することによってチッ
プスペースが無駄になる。この目的のために、いろいろ
な種類のトランザクションのために別々のキューが設け
られるが、順序はポインタ構成によって維持される。
【0020】システムバスとの通信を行うためにCPU
に使われるバスプロトコールは、与えられた時にバス上
に数個のトランザクションを未決のままに維持すること
が出来るという意味で未決型のものである。該バス上の
読み出し及び書込みトランザクションは、各トランザク
ションについての発信元又は発信バスコマンダーを指定
するIDフィールドにより識別される。従って、読み出
し戻りデータが要求から数サイクル後に現れるとき、I
DフィールドはCPUにより認識されるのでCPUはデ
ータをバスから受け取ることが出来る。バスの他の特徴
は、バス許諾についての調停(arbitration for bus gr
ant)がバス上のアドレス/データ・トランザクションと
同時に進むので、トラフィックがそれを要求するならば
各サイクルがアクティブサイクルとなることである。
【0021】発明の特徴であると考えられる新規な特徴
は特許請求の範囲に記載されている。しかし、発明自体
は、その他の特徴及び利点と同じく、添付図面と共に特
別の実施例についての詳細な解説を参照することから最
も良く理解されるであろう。
【0022】
【実施例】図1を参照すると、一実施例に従って、本発
明の特徴を採用したコンピューターシステムは、システ
ムバス11によりシステムメモリー12及びI/O要素
13に接続されたCPUチップ又はモジュール10を含
む。好適な実施例ではCPU10は単一の集積回路上に
形成されるけれども、後述する幾つかの思想は単一の回
路基板又は複数の基板上に搭載されたチップの組として
具体化されることが出来る。命令又はデータを取り出す
とき、CPU10は内部キャッシュ又は一次キャッシュ
14にアクセスし、次に、より大きな外部キャッシュ又
はバックアップ・キャッシュ15にアクセスする。よっ
て、階層メモリーが使用されており、最高速のものは一
次キャッシュ14であり、次はバックアップ・キャッシ
ュ15、次は主システムメモリー12であり、普通はデ
ィクスメモリー16が続くが、このメモリーは、オペレ
ーティングシステム(即ち、ソフトウェア)の使用によ
りI/O要素13を通してアクセスされる。仮想メモリ
ー組織が採用されており、最も使われそうなページを物
理的メモリー12に維持するためにディクス16とメモ
リー12との間にページ・スワッピングが使われる。C
PU10内の追加のキャッシュ17は、物理的アドレス
の代わりに仮想アドレスを使って、命令だけを記憶す
る。物理的アドレスは、一次キャッシュ14及びバック
アップ・キャッシュ15にアクセスするのに使用され、
バス11及びメモリー12で使われる。CPU10が命
令を取り出すとき、最初に仮想命令キャッシュ17がチ
ェックされ、若しキャッシュミスが起これば、該アドレ
スは物理的アドレスに変換され一次キャッシュ14がチ
ェックされる。該命令が一次キャッシュ内に無ければ、
バックアップ・キャッシュ15がアクセスされ、バック
アップ・キャッシュ内でキャッシュミスがあればメモリ
ー12がアクセスされる。一次キャッシュ14はバック
アップ・キャッシュ15より小さいけれどもバックアッ
プ・キャッシュよりは高速であり、一次キャッシュ14
の内容はバックアップ・キャッシュ15の内容の部分集
合である。命令が取り出されるときを除いてCPU10
からキャッシュ17への書込みは無く、このキャッシュ
17の内容はキャッシュ14又は15の内容の部分集合
であっても良いが無くても良いという点において、仮想
命令キャッシュ17は他の二つのキャッシュ14及び1
5の動作とは異なる。
【0023】CPU10は、システムバス11にアクセ
スするのに使われるCPUバス20とは別のバス19を
通してバックアップ・キャッシュ15にアクセスする。
よって、バックアップ・キャッシュ15のためのキャッ
シュコントローラがCPUチップ内に含まれる。CPU
バス20及びシステムバス11は共に64ビット双方向
多重化アドレス/データバスであり、要求ライン、許諾
ライン、コマンドライン等を含む制御バスを伴ってい
る。しかし、バス19は、64ビット・データバスと別
のアドレスバスとを有する。システムバス11は、CP
U10と、CPUバス20上の他の構成要素とによるア
クセスを調停するインターフェースユニット21により
CPUバス20と接続されている。
【0024】CPU10は命令ユニット22(Iボック
スと称する)を包含しており、このユニットは、マクロ
命令(機械レベル命令)を取り出し、この命令を1サイ
クルに1個ずつ解読し、オペランド指定子を分解し、そ
の後にオペランド取り出しを開始する。該命令によって
指令されたデータ又はアドレス操作は、レジスターファ
イル及びALUを包含する実行ユニット又はEボックス
23により行われる。CPUはマイクロコードにより制
御されるので、マクロ命令を実施するのに必要なマイク
ロ命令のシーケンスを生成するためにマイクロシーケン
サ及びコントロール記憶装置を含むマイクロ命令制御ユ
ニット24が使われる。メモリー管理ユニット又はMボ
ックス25は、命令ユニット22から命令読み出し要求
及びデータ読み出し要求を、そして実行ユニット23か
らはデータ読み出し要求又は書込み要求を受け取り、仮
想メモリーシステムのためにアドレス変換を行って物理
的アドレスを生成し、要求をPキャッシュ14へ発し、
或いはミスの場合には該要求をキャッシュコントローラ
26を介してバックアップ・キャッシュ15へ送る。こ
のキャッシュコントローラ又はCボックス26は、Pキ
ャッシュミスの場合にはバックアップ(第2レベル)キ
ャッシュ15へのアクセスを処理し、バックアップ・キ
ャッシュミスについては主メモリー12へのアクセスを
処理する。オンチップの浮動小数点プロセッサ27(F
ボックスと称する)は、浮動小数点及び整数乗算命令の
ための実行ユニットであり、実行ユニット23からオペ
ランド及びコマンドを受け取って結果を該実行ユニット
に送り戻す。
【0025】本発明の特徴は種々のCPUに適用出来る
けれども、ここに開示した実施例はVAX命令セットを
実行するべきものであるので、記載した機械レベル又は
マクロ命令のサイズは可変である。命令は、最小の1バ
イトから最大で数十バイトの長さであり、平均的命令は
約5バイトである。よって、命令ユニット22は可変長
命令を処理出来なければならず、また、命令は必ずしも
メモリー内のワード境界で整合していなくてもよい。該
命令は可変幅のデータを操作するが、整数データユニッ
トは図3に記載されている。CPU10の内部バス及び
レジスターは一般的には32ビット幅であり、32ビッ
トはVAX用語ではロングワードと呼ばれる。キャッシ
ュ14及び15及びメモリー12へのデータの転送及び
これらからのデータ転送は普通は1度に64ビットであ
り、バス11及び20は64ビット幅であり、カッドワ
ード(4ワード又は8バイト)と呼ばれる。命令ストリ
ームはカッドワードとして先取りされてキューに記憶さ
れ、その後、次の命令の特定のバイトが実行のために命
令ユニット22により取り出される。該命令は、バイト
幅、ワード幅、ロングワード幅又はカッドワード幅のメ
モリー参照を行い、これらはロングワード又はカッドワ
ード境界で整合している必要はない、即ち、メモリーは
バイト・アドレス指定可能である。該命令セットの中の
或る命令は1機械サイクルで実行するが、大部分は数サ
イクルを要し、また或るものは数十サイクルを必要とす
るので、CPU10は、可変サイズの命令と、可変デー
タ幅(整合した又は整合していない)を参照する命令と
だけではなくて、変動する実行時間の命令にも順応しな
ければならない。
【0026】本書に記載する実施例はVAX命令セット
を実行するべきものではあるけれども、例えば8038
6や68030型のための命令セットなどの、他の命令
セットを実行するように構成されたプロセッサに役立つ
本発明の特徴がある。また、ここに開示する複合命令セ
ット・コンピューター(CISC型と称する)において
だけではなくて、本発明の特徴の幾つかは縮小命令セッ
トコンピューター(reduced instruct
ion set computers(RISCと略
記))にも役立つ。RISC型では、命令ワードは常に
同じ幅(バイトの数)であり、常に単一のサイクルで実
行される。レジスターからレジスターへの命令又はメモ
リーからレジスターへの命令だけが縮小命令セットにお
いて許容される。
【0027】多重プロセッサシステムでは追加のCPU
28がシステムバス11にアクセス出来る。追加の各C
PU28は、若しXPU10と同じ設計のCPUである
ならば、それ自身のCPUチップ10、キャッシュ15
及びインターフェースユニット21を包含することが出
来る。別の形としては、これらのCPU28は、異なる
構成のものであっても良いが、主システムバス11にア
クセスするために両立性のバスプロトコールを実行す
る。これらの他のCPU28はメモリー12にアクセス
出来るので、キャッシュ14又は15内のデータのブロ
ックは陳腐化する可能性がある。若しキャッシュ15
(又は一次キャッシュ14)に偶然に複写されるメモリ
ー12内の記憶場所にCPU28が書き込むと、キャッ
シュ15内のこの記憶場所のデータは最早妥当ではなく
なる。この理由の故に、メモリー12に対してCPU1
0以外の出所(例えば他のCPU28など)からの書込
みがあるとき、後述する様にキャッシュ14及び15内
のデータのブロックは『無効』にされる。キャッシュ1
4は『ライトスルー』(writethrough)原
理に基づいて動作し、キャッシュ15は『ライトバック
(書き戻し)』(writeback)原理に基づいて
動作する。偶然に一次キャッシュ14内に存する記憶場
所にCPU10が書込みを実行するとき、そのデータは
このキャッシュ14に書き込まれると共にバックアップ
・キャッシュ15にも(条件に依存して、しばしばメモ
リー12にも)書き込まれるが、この種の動作は『ライ
トスルー』である。しかし、CPU10がバックアップ
・キャッシュ15内に存する記憶場所に書込みを実行す
るときには、その書込みはメモリー12に送られるとは
限らず、むしろ、システム内の他の要素(CPU28な
ど)がそのデータを必要としている(即ち、メモリー内
のこの記憶場所へのアクセスを試みる)か、又は該キャ
ッシュ内のそのブロックがキャッシュ15から変位(割
り振り解除)させられるかしたならばその書込みはメモ
リー12にライトバック(書き戻し)される。
【0028】インターフェースユニット21は3個のバ
スポートを有する。バス20及び主システムバス11を
経由するCPUアドレス/データポートに加えて、ブー
トROM及びEEPROM、不揮発性RAM(電池バッ
クアップ付き)及びクロック/カレンダー・チップにア
クセスするためにROMバス29が設けられる。ROM
バスアクセスに対する時間要求は余り厳重ではないの
で、ROMバス29は8ビット幅に過ぎない。このRO
Mバスは、キーボード及び/又はLCDディスプレイコ
ントローラ及びその他の例えばマウスなどの入力装置に
もアクセス出来る。コンソールへの逐次入出力ポートも
インターフェース21に含まれているけれども、ここで
は説明しない。
【0029】バス20には他のノードが接続されていて
も良い。例えば、図2に示されている様に、CPU10
を使用するシステムのローエンド構成は、インターフェ
ース/アービタ・チップ21を省いてメモリー12をバ
ス20に接続する(適当なメモリーインターフェースを
使って)ことが出来る。この場合、システムバス11が
無いので、I/Oはバス20に接続されなければならな
い。この目的のために、ディスク16又は他のI/Oが
1個又は2個のI/Oノード13a及び13bに接続さ
れ、この各々がバス20の所有権を要求して許諾される
ことが出来る。図2の場合にはバス20上の全ての構成
要素が同期していてCPU10からのクロック制御下で
動作するのに対して、図1の場合にはシステムバス11
はバス20及びCPU10に対して非同期で、それ自身
のクロックに基づいて動作する。
【0030】従って、本書に開示したCPU10は、個
人用のデスクトップ型ワークステーションやPCから、
大規模な部門などに奉仕するフルスケール構成までにわ
たる多様なコンピューターシステムに役立つものであ
る。一例では、図1のシステムは、256Kバイトのバ
ックアップ・キャッシュ15、128Mバイトの主メモ
リー20、及び恐らく1Gバイト以上の容量のディスク
16を持つことが出来る。この例では、バックアップ・
キャッシュ15のアクセス時間は約25ナノ秒(2CP
U機械サイクル)であり、バス11を介するCPU10
からの主メモリー20のアクセス時間はバックアップ・
キャッシュのそれの10ないし20倍である。ディスク
16は、勿論、主メモリーのそれの10倍以上のアクセ
ス時間を有する。従って、典型的システムでは、システ
ムの性能は、キャッシュからなるべく多くを実行するこ
とにかかっている。
【0031】図1には多重化された64ビット・アドレ
ス/データ・バス11又は20を使用するものとして示
されているけれども、発明の幾つかの特徴は、例えば米
国特許第4,875,160号に示されている別々のア
ドレスバス及びデータバスを使うシステムにおいても実
施出来るものである。図3を参照すると、ここに説明す
る整数データ・タイプ又はメモリー参照は、バイト(8
ビット)、ワード(2バイト)、ロングワード(4バイ
ト)、及びカッドワード(8バイト又は64ビット)を
包含する。CPU10内のデータ経路は、一般に、バス
11及び20のデータ経路と同じくカッドワード幅であ
る。図3に示されていないけれども、ヘキサワードにも
本書は言及するが、これは16ワード(32バイト)又
は4カッドワードである。キャッシュ及びタイミング 図4を参照すると、図1のCPUチップ10内のクロッ
ク発生器30は、機械サイクルの4個の相P1、P2、
P3及びP4を画定するのに使われる4個の重なり合う
クロックφ1、φ2、φ3及びφ4を生成する。或る実
施例では、機械サイクルは公称上14ナノ秒であるの
で、クロックφ1等々は約71MHz である。別の例で
は、機械サイクルは10ナノ秒であっても良く、この場
合にはクロック周波数は100MHz となる。しかし、バ
ス20及びシステムバス11は、CPUの機械サイクル
より3倍長いバスサイクルに基づいて動作するので、こ
の例では、バスサイクル(これも図4に示されている)
は公称上42ナノ秒である(或いは、100MHz クロッ
クについては、バスサイクルは30ナノ秒である)。バ
スサイクルは、バスサイクルの4相PB1、PB2、P
B3及びPB4を画定するクロック発生器30により生
成された4個の重なり合うクロックφ1、φ2、φ3及
びφ4により同じく画定される。しかし、システムバス
11は、バス20のそれの約2倍の長さのバスサイクル
(例えば、約64ナノ秒)に基づいて動作し、このバス
サイクルはCPU10及びバス20に対して非同期であ
る。システムバス11のタイミングサイクルは、インタ
ーフェースユニット21内のクロック発生器31により
制御される。CPUチップ 図5を参照すると、CPUチップ10の内部構造が一般
的な形で示されている。命令ユニット22は仮想命令キ
ャッシュ17を包含しており、このキャッシュは、この
例では2Kバイトのサイズの、命令ストリーム専用のキ
ャッシュであり、命令ストリームの中の最近に使用され
たブロックを記憶し、キャッシュ14及び15及び主メ
モリー12にアクセスするために使われる物理的アドレ
スではなくて仮想アドレスを使用する。即ち、仮想命令
キャッシュ17にアクセスするためのアドレスは、他の
メモリー参照についてメモリー管理ユニット25で行わ
れる様なアドレス変換を必要としない。命令は、命令キ
ャッシュ17から、16バイトを保持する先取りキュー
32にロードされる。命令ユニット22は命令バースト
・ユニット33を有し、このユニット33は命令をその
構成要素(オプコード、オペランド指定子、指定子拡張
部(specifier extensions) など)に分解し、マクロ命
令を解読すると共にオペランド指定子を解析して命令コ
ントロール(指名アドレスなど)を生成するが、この命
令コントロールは、バス34により、マイクロ命令コン
トローラ24内の命令キュー35に送られる。オペラン
ドにアクセスするために必要な該指定子からの情報は、
バス36により、実行ユニット23内のソース・キュー
37及び宛先キュー38に送られる。命令ユニット22
は、条件付き分岐が取られるか否かを予測して、それに
従って命令ストリームのアドレス指定シーケンスを監督
する分岐予測ユニット39も包含する。命令ユニット2
2内の複合指定子ユニット40は、(実行ユニット23
内のALUを使う代わりに)レジスターファイルにアク
セスするか、さもなければ、命令が実行ユニット23で
実行される前にオペランドのためのアドレスを生成する
補助アドレスプロセッサである。
【0032】実行ユニット23は(マイクロ命令制御ユ
ニット24の制御下で)マクロ命令の実際の『作業』を
行い、機能停止及びトラップの能力を有する4段マイク
ロパイプライン処理ユニットを具現するものである。こ
れらの要素は、キュー35、37及び38を介して命令
ユニット22により提供される命令及びオペランド情報
を待ち合わせ解除する。文字型のオペランドについて
は、ソース・キュー37は該命令からの実際のオペラン
ド値を内蔵するのに対して、レジスター又はメモリー型
のオペランドについてはソース・キュー37は実行ユニ
ット23内のレジスターファイル41のデータへのポイ
ンタを保持する。
【0033】マイクロ命令制御ユニット24は、コント
ロール記憶装置43から取り出されるべき次のマイクロ
ワードを決めるマイクロシーケンサ42を内蔵する。該
コントロール記憶装置は、約1600ワードのサイズの
ROM又はその他のメモリーであって、マイクロシーケ
ンサ42により生成された11ビット・アドレスに応じ
て、恐らく61ビット幅のマイクロコード・ワードを各
機械サイクルに1個ずつ生成する。このマイクロシーケ
ンサは、命令ユニット22から命令キュー35を介して
11ビットの入力点アドレスを受け取って、該マクロ命
令により命じられるマイクロルーチンを開始する。コン
トロール記憶装置43から各サイクルにおいて生成され
たマイクロ命令は、マイクロ命令バス44によって実行
ユニット23に中継される。
【0034】実行ユニット23に内蔵されるレジスター
ファイル41は、15個の汎用レジスター、PC(プロ
グラムカウンタ)、6個のメモリーデータレジスター、
6個の一次レジスター又は作業レジスター、及び10個
の状態レジスターを包含する。実行ユニット23は、バ
ス44で受信したマイクロ命令により画定された通り、
マクロ命令により指令された動作を実行するために32
ビットのALU45と64ビットのシフター46とをも
内蔵している。浮動小数点ユニット27は、実行ユニッ
ト23内のALU45のA及びB入力から2個の32ビ
ット・バス47及び48で32ビット又は64ビットの
オペランドを受け取り、実行ユニット23に戻る結果バ
スに結果を生成する。浮動小数点ユニット27は、実行
されるべき動作のためのコマンドを受け取るが、その
後、実行ユニット23とは無関係にこの動作を実行し、
それが終わったときに該オペランドを信号し且つ送る。
図1のシステムにおいて一般的にそうである様に、浮動
小数点ユニット27は、レディー時に実行ユニット23
により受け取られるべき結果を待機させる。浮動小数点
ユニット27は、浮動小数点加算を2サイクルで実行
し、乗算を2サイクルで行い、除算の種類に応じて17
ないし30機械サイクルで除算を行う。
【0035】バス49上の浮動小数点ユニット27の出
力とALU45及びシフター46の出力とは、実行ユニ
ット23内の結果マルチプレクサ(Rmux と略記)50
により併合される(各機械サイクルで一つが選択され
る)。このRmux からの選択された出力は、レジスター
ファイル45に書き戻されるか、又は書込みバス51に
よってメモリー管理ユニット25に中継され、メモリー
要求は、仮想アドレスバス52によって実行ユニット2
3からメモリー管理ユニット25に加えられる。
【0036】メモリー管理ユニット25は、バス53に
よって命令ユニット22(命令ストリーム及びデータス
トリームの両方)から読み出し要求を受け取り、アドレ
スバス52を介して実行ユニット23(データストリー
ムだけ)から読み出し要求を受け取る。メモリーデータ
バス54は、メモリー読み出しデータをメモリー管理ユ
ニット25から命令ユニット22(64ビット幅)又は
実行ユニット23(32ビット幅)に送る。メモリー管
理ユニット25は、書込みデータバス51を介して実行
ユニット23から書込み/記憶要求を受け取ると共に、
キャッシュコントローラユニット26からインヴァリデ
ート、一次キャッシュ14フィル及び戻りデータを受け
取る。メモリー管理ユニット25は、これらの要求の調
停を行い、現在処理することの出来ない要求を待機させ
る。要求が開始されると、メモリー管理ユニット25
は、変換バッファー又はアドレスキャッシュ55を使っ
て、仮想アドレスから物理的アドレスへマッピングし
て、アドレス変換を行う。アドレスキャッシュ55での
この探索は、ミスが無ければ1機械サイクルを要する。
TBでミスがあった場合には、メモリー管理ユニット
は、メモリー内のページテーブルからページテーブル項
目を読み出させると共にTBフィルを行わせて、ミスし
たアドレスを挿入する。このメモリー管理ユニットは、
前アクセスの検査も行ってページ保護機能等々を実施す
る。メモリー管理ユニット25により参照されるPキャ
ッシュ14は、32バイトのブロック及びフィル・サイ
ズの2方セット連想ライトスルー・キャッシュである。
Pキャッシュの状態は、バックアップ・キャッシュ15
の部分集合として維持される。メモリー管理ユニット2
5は、命令ユニット22により開始された指定子読み出
しが、実行ユニット23がこのデータをレジスターファ
イル41に記憶させるときには、正しく配列されること
をも保証する。この配列(『スコアボーディング』と称
する)は、保留されている実行ユニット23記憶を有す
る物理的アドレスの小リストである物理的アドレスキュ
ー56により達成される。メモリー管理ユニット25に
受け取られたけれども一次キャッシュ14でそれについ
てミスが発生するメモリー要求は、物理的アドレスバス
57及び(書込みについて)データバス58により、実
行のためにキャッシュコントローラユニット26に送ら
れる。インヴァリデートはメモリー管理ユニット25に
よりキャッシュコントローラユニット26からアドレス
バス59により、そしてフィルデータはデータバス58
により、受け取られる。
【0037】キャッシュコントローラユニット26は、
バックアップ・キャッシュ15のためのコントローラで
あり、外部CPUバス20に対してインターフェースす
る。キャッシュコントローラユニット26は、物理的ア
ドレスバス57及びデータバス58を介してメモリー管
理ユニット25から読み出し要求及び書込みを受け取
り、アドレスバス59及びデータバス58を介してメモ
リー管理ユニット25へ一次キャッシュ14フィル及び
インヴァリデートを送る。キャッシュコントローラユニ
ット26は、一次キャッシュ14がインヴァリデートに
よってバックアップ・キャッシュ15の部分集合として
維持されることを保証する。キャッシュコントローラユ
ニット26は、バス20からキャッシュ干渉性トランザ
クションを受け取り、これに対してそれは適当ならばイ
ンヴァリデート及びライトバックをもって応答する。図
1及び5のシステムにおけるキャッシュ干渉性は、所有
権の概念に基づく。メモリーのヘキサワード(16ワー
ド)ブロックは、メモリー12により、又はバス11上
のCPU内のバックアップ・キャッシュ15により、所
有されることが出来る。多重プロセッサシステムでは、
与えられた時にキャッシュの一つだけが、又はメモリー
12がヘキサワードブロックを所有することが出来、こ
の所有権は、メモリー12及びバックアップ・キャッシ
ュ15の両方の中の各ヘキサワードについて所有権ビッ
トによって示される(所有は1で、非所有は0で)。バ
ックアップ・キャッシュ15についてのタグ及びデータ
の両方がオフチップのRAMに記憶され、サイズ及びア
クセス時間はシステム要件に必要とされる通りに選択さ
れる。バックアップ・キャッシュ15は、例えば、12
8Kないし2Mバイトのサイズであることが出来る。C
PU10の機械サイクルが14ナノ秒であるとすると、
28ナノ秒のアクセス時間でキャッシュは2機械サイク
ルで参照されることが出来る。バックアップ・キャッシ
ュへの書込みアクセスを最小限にするために、キャッシ
ュコントローラユニット26は、連続する書込みを同じ
カッドワードに詰め込む。メモリー管理ユニット25か
らの多数の書込みコマンドが8ワード書込みキュー60
に保持される。キャッシュコントローラユニット26
は、多重化アドレス/データバス20へのインターフェ
ースでもあり、入力データキュー61はフィル・データ
及びライトバック要求をバス20からCPU10へロー
ドする。キャッシュコントローラユニット26内の非ラ
イトバック・キュー62及びライトバック・キュー63
は、バス20を介して主メモリー12へ送られるべき読
み出し要求及びライトバック・データをそれぞれ保持す
る。CPU内のパイプライン処理 CPU10は、マクロ命令のレベルでパイプライン処理
されている。命令は、実行を終えるために7個のパイプ
ライン・セグメントを必要とする。それは、一般的に
は、図6に示されている様に、命令取り出しセグメント
S0、命令解読セグメントS1、オペランド定義セグメ
ントS2、レジスターファイル・アクセス・セグメント
S3、ALUセグメントS4、アドレス変換セグメント
S5、及び記憶セグメントS6である。機能停止が無い
理想的状態では、図6の連続する命令#1〜#7の重な
りは完全であるので、命令#1のセグメントS6の時に
は命令#7のS0セグメントが実行し、命令#2〜#6
は中間のセグメントの中にある。命令が連続する記憶場
所の中にあり(ジャンプや分岐が無い)、オペランドが
命令ストリームの中に含まれるか又はレジスターファイ
ル41又は一次キャッシュ14の中にある時、CPU1
0は、図6に示されている理想的な命令重なり状態にお
いて数周期の時間実行することが出来る。しかし、オペ
ランドがレジスター43や一次キャッシュ14の中には
無くて、バックアップ・キャッシュ15又はメモリー1
2から取り出さなければならない時、或いは他の種々の
条件が存在する時、機能停止が導入され、実行は図6の
理想的状態から外れる。
【0038】図7を参照すると、各パイプライン・セグ
メントS0〜S6のハードウェア構成要素がCPU10
について一般的形で示されている。CPU10の種々の
構成要素についての以下の一層詳細な説明において明ら
かになる様に、実際の回路はもっと複雑である。ここで
はマクロ命令・パイプラインセグメントにだけ言及する
が、該セグメントの大部分では動作のマイクロパイプラ
イン処理もある、即ち、マクロ命令を処理するために2
個以上の動作が必要ならば、複数の動作も1セクション
内でパイプライン処理されることが分かる。
【0039】レジスターファイル41に既に内蔵されて
いるオペランド、或いは命令ストリーム自体の中に内蔵
されているリテラルだけを命令が使うならば、その命令
が、機能停止無しで、連続する7サイクルで実行可能で
あることが図7から分かる。始めに、図7に示されてい
るCPU10内での通常のマクロ命令実行の流れを説明
し、次に、機能停止と例外とについて説明をする。
【0040】CPU10のパイプライン内でのマクロ命
令の実行は、チップの種々の分布したセクションで実施
される多くの小さなステップに分解される。CPU10
はマクロ命令パイプラインを具現するので、各セクショ
ンは比較的に自律的であり、各セクションの処理速度を
標準化するためにセクション間にキューが挿入されてい
る。
【0041】命令ユニット22は、次の命令についての
命令ストリーム・データを取り出し、そのデータをオプ
コード及び指定子に分解し、その命令の実行ユニット2
3による実行を支援するためにオペランドを先取りする
という目標をもって該指定子を評価する。命令ユニット
22のこれらの機能はパイプラインのセグメントS0な
いしS3に分散させられており、作業の大半はS1で行
われる。S0において、命令ストリームデータは、仮想
命令バッファーアドレス(VIBAと略記)レジスター
65に内蔵されているアドレスを使って仮想命令キャッ
シュ17から取り出される。データは先取りキュー32
に書き込まれ、VIBA65は次の記憶場所へインクリ
メントされる。セグメントS1では、先取りキュー32
が読まれると共にバースト・ユニット33は内部状態と
テーブル66(ROM及び/又は命令フォーマットを探
索するPLA)の内容とを使ってキュー32の中のバイ
トから次の命令ストリーム構成要素(オプコード又は指
定子)を選択する。或る命令構成要素はバーストのため
に複数のサイクルを必要とする。例えば、2バイトのオ
プコードは、常にVAX命令セットのFDhex から始ま
るものであるが、2バースト・サイクル(一つはFDバ
イトのために、もう一つは2番目のオプコード・バイト
のために)を必要とする。同様に、インデックス付き指
定子は、少なくとも2バースト・サイクル(一つはイン
デックスバイトのために、他の一つ以上はベース指定子
のために)を必要とする。オプコードがバースト・ユニ
ット33によって解読されるとき、情報はバス67を介
して発行ユニット68に渡されるが、このユニット68
は、その命令を処理するルーチンのコントロール記憶装
置43内の最初のアドレス(入口点)についてテーブル
66を調べる。発行ユニット68は、そのアドレスと、
命令に関連する他の情報とを命令キュー35に送り、こ
こでそれは実行ユニット23がこの命令に到達するまで
保持される。
【0042】指定子が解読されるとき、情報は、ソース
・キュー37及び宛先キュー38へ、及び場合によって
パイプライン処理の複合指定子ユニット40への割り振
りのためにバス67を介してオペランドキューユニット
69に渡される。オペランドキューユニット69は、該
指定子についての適切な個数の項目を実行ユニット23
内のソース・キュー37及び宛先キュー38において割
り振る。これらのキュー37及び38は、オペランド及
び結果を指すポインタを内蔵している。該指定子が短リ
テラル又はレジスター指定子でなければ(これらは単純
指定子と呼ばれる)、それは複合指定子であると見なさ
れてマイクロコード制御複合指定子ユニット40により
処理されるが、それはパイプラインのセグメントS1
(コントロール記憶装置アクセス)、S2(レジスター
ファイル41読み出しを含むオペランドアクセス)、及
びS3(ALU45動作、メモリー管理ユニット25要
求、GPR書込み)に分散されている。複合指定子ユニ
ット40のパイプラインは、全ての指定子メモリーアド
レスを計算して、指定子タイプについて適切な要求をメ
モリー管理ユニット25に対して行う。保留されている
実行ユニット23参照によりインターロックされるGP
Rの読み出し又は書込みを防止するために、複合指定子
ユニット40のパイプは、データ依存性を検出するレジ
スター・スコアボードを含む。複合指定子ユニット40
のパイプラインは、命令ストリームの明示的部分ではな
いオペランド情報を実行ユニット23に供給する。例え
ば、PCは、それを必要とする命令のための暗示オペラ
ンドとして供給される。
【0043】S1の時に、分岐予測ユニット39は、条
件付き分岐及び無条件分岐を探して解読される各オプコ
ードを監視する。無条件分岐については、分岐予測ユニ
ット39は、ターゲットPCを計算して、PC及びVI
BAを新しい経路へ向け直す。条件付き分岐について
は、分岐予測ユニット39は、以前の履歴に基づいて命
令が分岐するか否かを予測する。若し分岐が行われると
予測されれば、PC及びVIBAは新しい経路へ向け直
される。分岐予測ユニット39は、条件付き分岐予測フ
ラグを実行ユニット23内の分岐キュー70に書込み、
その命令の実行時に実行ユニット23により使用させ
る。分岐予測ユニット39は、予測が正しくないと判明
した場合に正しい命令PCを復元するのに充分な状態を
維持する。
【0044】マイクロ命令制御ユニット24は、パイプ
ラインのセグメントS2で動作し、実行されるべき次の
マイクロ命令を実行ユニット23に供給する。マクロ命
令が2個以上のマイクロ命令の実行を要求する場合に
は、マイクロ命令制御ユニット24は、先のマイクロ命
令に含まれている指示語に基づいて各マイクロ命令を逐
次に供給する。マイクロ命令境界で、マイクロ命令制御
ユニット24は次の項目を命令キュー35から除去する
が、それは該マクロ命令についての最初のマイクロ命令
アドレスを包含する。若し命令キュー35が空であれ
ば、マイクロ命令制御ユニット24はno−opマイクロ命
令のアドレスを供給する。マイクロ命令制御ユニット2
4は、全ての例外要求を評価し、パイプライン流し制御
信号を実行ユニット23に提供する。或る例外及び割り
込みについては、マイクロ命令制御ユニット24は、事
象に応答するために使われる適切なマイクロ命令ハンド
ラーのアドレスを注入する。
【0045】実行ユニット23は、非浮動小数点命令の
全てを実行し、バス47、48及び49を介してオペラ
ンドを浮動小数点ユニット27に送り且つ結果を該ユニ
ットから受け取り、割り込み及び例外などの非命令事象
を処理する。実行ユニット23はパイプラインのセグメ
ントS3、S4及びS5を通して分散させられている。
即ち、S3は、レジスターファイル41の読み出しを含
んで、オペランドアクセスを包含する。S4はALU4
5及びシフター46オペレーション、RMUX50要求
を包含する。S5は、RMUX50完了、レジスターフ
ァイル41への書込み、メモリー管理ユニット25要求
の完了を包含する。大抵、命令オペランドは命令ユニッ
ト22によって先取りされ、ソース・キュー37を通し
て間接的にアドレス指定される。ソース・キュー37
は、短リテラル指定子についてはオペランド自体を内蔵
し、他のオペランド・タイプについてはレジスターファ
イル41内の項目を指すポインタを内蔵する。
【0046】ソース・キュー37にフィールド型指定子
入力が行われるときにはフィールド・キュー71の項目
が作られる。フィールド・キュー71は、フィールド型
指定子がGPRをアドレス指定するか、それともメモリ
ーをアドレス指定するかをマイクロ命令制御ユニット4
2が判定することを可能にするマイクロ分岐条件を提供
する。妥当なフィールド・キュー項目でのマイクロ分岐
は、その項目を該キューからリタイヤさせる。
【0047】レジスターファイル41は4個の部分、即
ち、一般プロセッサレジスター(GPRと略記)、メモ
リーデータレジスター(MDレジスターと略記)、作業
レジスター、及びCPU状態レジスター、に分割されて
いる。レジスターモード指定子については、ソース・キ
ュー37はレジスターファイル41内の適切なGPRを
指し、或いは短リテラルモードについては該キューはオ
ペランド自体を内蔵する。他の指定子モードについて
は、ソース・キュー37は、該指定子のアドレス(又は
該オペランドのアドレスのアドレス、等々)を内蔵する
MDレジスターを指す。MDレジスターは、命令ユニッ
ト22によって直接書き込まれ、或いは命令ユニット2
2によって生成されたメモリー読み出しの結果としてメ
モリー管理ユニット25により書き込まれる。
【0048】実行ユニット23パイプラインのS3セグ
メントでは、命令の、実行ユニット23及び浮動小数点
ユニット27の実行のための適切なオペランドが選択さ
れる。オペランドは、実行ユニット23及び浮動小数点
ユニット27の両方で使用されるためにABUS及びB
BUS上に選択される。殆どの場合、これれらのオペラ
ンドは、非命令オペランド(PSLなど)の他のデータ
経路ソースがあるけれども、レジスターファイル41か
ら生ずる。
【0049】実行ユニット23の計算は、パイプライン
のS4セグメント中のALU45及びシフター46によ
り、S3セグメントから供給されたオペランドに対して
行われる。これらのユニットのコントロールは、コント
ロール記憶装置43によりS3セグメントに初めに供給
されていたマイクロ命令により供給され、その後マイク
ロ命令パイプライン内を前進させられる。
【0050】S4セグメントは、実行ユニット23又は
浮動小数点ユニット27から結果を選択して適当なレジ
スター又はメモリー動作を行うRmux 50も内蔵してい
る。Rmux 入力は、サイクルの終わりにALU45、シ
フター46、及び浮動小数点ユニット27結果バス49
から生じる。Rmux 50は実際には、その出力がS5セ
グメントの始めに妥当である様にS4/S5境界に広が
る。Rmux 50はリタイヤ・キュー72により制御され
るが、これは、次に処理(又は引退(リタイヤ))され
るべき結果のソース(実行ユニット23又は浮動小数点
ユニット27)を指定する。選択されないRmux ソース
は、それらが処理されるべきことをリタイヤ・キュー7
2が示すまで遅延させられる。リタイヤ・キュー72
は、命令ストリームの命令における動作の順序から更新
される。
【0051】ソース・キュー37が命令オペランドを指
す様に、宛先キュー38は命令の結果についての宛先を
指す。その結果がGPRに記憶されるべきであれば、宛
先キュー38は適切なGPRを指すポインタを内蔵す
る。結果がメモリーに記憶されるべきである場合には、
宛先キュー38は、要求がメモリー管理ユニット25に
対して行われるべきことを示し、これはPAキュー56
における結果の物理的アドレスを内蔵する。この情報は
制御入力としてRmux 50論理に供給される。
【0052】Rmux 50が結果情報の適切なソースを選
択すると、それは、メモリー管理ユニット25のサービ
スを要求するか、又はその結果を、レジスターファイル
41又はパイプラインのS5セグメント中の他のデータ
経路レジスターに書き戻させるべく書込みバス73上に
送る。全てのメモリー要求についての実行ユニット23
とメモリー管理ユニット25との間のインターフェース
はEMラッチ74であり、これは、制御情報を内蔵する
と共に、要求の種類に応じてアドレス、データ、又はそ
の両方を内蔵することが出来る。命令ユニット22によ
り先取りされるオペランド及び結果に加えて、実行ユニ
ット23は、データ読み出し又は書き込むために明示的
メモリー要求をメモリー管理ユニット25に対して行う
ことも出来る。
【0053】浮動小数点ユニット27は命令セット内の
浮動小数点命令の全てと、ロングワード長の整数乗算命
令とを実行する。浮動小数点ユニット27が実行するべ
き各命令について、該ユニット27はマイクロ命令制御
ユニット24からオプコード及びその他の命令に関連す
る情報を受け取る。浮動小数点ユニット27は、バス4
7及び48で実行ユニット23からオペランドデータを
受け取る。命令の実行は、図7のセグメントS4に現れ
る専用の浮動小数点ユニット27パイプラインで行われ
るが、実際には極めて短い3サイクルの長さである。整
数乗算などの或る種の命令は、浮動小数点ユニット27
パイプラインの幾つかのセグメントを何回か通ることを
必要とする。除算などの、他の命令は、全くパイプライ
ン処理されない。浮動小数点ユニット27の結果及び状
況は、S4において結果バス49を介して実行ユニット
23内のRmux 50にリタイヤのために戻される。リタ
イヤ・キュー72により決められた通りにFボックス命
令が次にリタイヤするべき時には、Rmux 50は、宛先
キュー38により指令されて、結果を、レジスター宛先
についてはGPRに、メモリー宛先についてはメモリー
管理ユニット25に、送る。
【0054】メモリー管理ユニット25はパイプライン
のS5及びS6セグメントで動作し、チップの他のセク
ションにより開始された全てのメモリー参照を処理す
る。メモリー管理ユニット25に対する要求は、命令ユ
ニット22から(仮想命令キャッシュ17フィル及び指
定子参照について)、Rmux 50及びEMラッチ74を
介して実行ユニット23又は浮動小数点ユニット27か
ら(命令結果記憶及び明示的実行ユニット23メモリー
要求について)、メモリー管理ユニット25自体から
(変換バッファーフィル及びPTE読み出しについ
て)、又はキャッシュコントローラユニット26から
(インヴァリデート及びキャッシュフィルについて)生
じることが出来る。全ての仮想参照はTB即ち変換バッ
ファー64によって物理的アドレスに変換されるが、こ
れはパイプラインのS5セグメントで動作する。命令ユ
ニット22により生成された命令結果参照については、
変換されたアドレスは物理的アドレスキュー56(PA
キューと略記)に記憶される。結果が計算されるとき、
これらのアドレスは後に実行ユニット23又は浮動小数
点ユニット27からのデータと突き合わされる。
【0055】キャッシュコントローラユニット26は、
バックアップ・キャッシュ15を維持し且つアクセス
し、オフチップ・バス(CPUバス20)を制御する。
キャッシュコントローラユニット26は、パイプライン
のS6セグメント内のメモリー管理ユニット25から入
力(メモリー要求)を受け取り、要求を完了するのに普
通は数サイクルを要する。この理由の故に、キャッシュ
コントローラユニット26は特定のパイプラインセグメ
ント内に示されてはいない。メモリー読み出しが一次キ
ャッシュ14においてミスすれば、その要求は、処理の
ためにキャッシュコントローラユニット26に送られ
る。キャッシュコントローラユニット26は、始めにバ
ックアップ・キャッシュ15内のデータを探し、若しそ
のデータが存在するならばバックアップ・キャッシュ1
5から一次キャッシュ14内の該ブロックを充填する。
若しそのデータがバックアップ・キャッシュ15内に無
ければ、キャッシュコントローラユニット26はメモリ
ー12からCPUバス20上にキャッシュ・フィルを要
求する。メモリー12がそのデータを戻すとき、それは
バックアップ・キャッシュ15及び一次キャッシュ14
の両方に(そして、可能性としては、仮想命令キャッシ
ュ17にも)書き込まれる。一次キャッシュ14フィル
は、メモリー管理ユニット25パイプラインに対して要
求を行うことによってなされるけれども、データは、デ
ータバス75上にデータを直接送り込み、そこから該デ
ータをメモリーデータバス54上に、該バスが自由にな
ると直に、送り込むことによって、なるべく早く元の要
求者に戻される。
【0056】図6のパイプラインを滑らかに流そうとし
ても、パイプラインのセグメントを機能停止させる条件
がある。その結果として、パイプラインの各セグメント
は、各サイクルに以下の3ステップを行うブラックボッ
クスと見なすことが出来るものである; (1) 先のパイプラインセグメントからのコントロー
ル及び入力を使って、該パイプラインセグメントに相応
しいタスクを実行する。該セグメントはそのとき(該セ
グメントの中の)局地的状態を更新するが、(該セグメ
ントの外の)大域状態は更新しない。
【0057】(2) 該サイクルが終わる直前に、全て
のセグメントが、そのセグメントについての適切な状態
シーケンサに機能停止条件を送るが、このシーケンサ
は、その条件を評価して、どのパイプラインセグメント
(若しあれば)が機能停止しなければならないかを判定
する。 (3) 若しパイプラインセグメントについて機能停止
条件が無ければ、該状態シーケンサは、そのセグメント
が結果を次のセグメントに渡して先のセグメントから結
果を受け取ることを許す。これは大域状態を更新するこ
とによって達成される。
【0058】このステップの系列は、各パイプラインセ
グメントが機能停止が発生しないこと(これはあり触れ
た場合であるべきである)を仮定することを許すことに
よって徹底的に極大化する。サイクルの終わりに機能停
止が発生しなければ、大域状態更新は妨げられ、機能停
止させられたセグメントは、機能停止条件が除去される
まで次のサイクル(そして次の、そしてまた次の)で同
じタスク(可能性としては、異なる入力で)を反復す
る。或る大域状態は機能停止条件が知られる前にセグメ
ントにより更新されなければならないので、この説明は
或る場合には単純すぎる。また、或るタスクは、セグメ
ントにより1回だけ行われなければならない。これらは
各セグメントにおいて場合に応じて特別に反復される。
【0059】チップの特定のセクションの中で、一つの
パイプラインセグメントでの機能停止は、パイプライン
の上流側セグメント(該パイプラインの、それより前に
あるもの)の全てで機能停止を引き起こす。特許4,8
75,160号のシステムとは異なって、パイプライン
の1セグメントでの機能停止は、パイプラインの下流側
セグメントに機能停止を引き起こさない。例えば、その
システムではメモリーデータ機能停止は下流側ALUセ
グメントの機能停止をも引き起こした。CPU10で
は、メモリーデータ機能停止はALUセグメントを機能
停止させない(S4がS5に進むとき、no−opがS5に
挿入される)。
【0060】パイプライン機能停止を生じさせるチップ
内機能停止条件が幾つかある。その各々について以下に
簡単に説明する。パイプラインのS0及びS1セグメン
トでは、機能停止は命令ユニット22内でのみ発生する
可能性がある。S0には、発生する可能性のある機能停
止が一つだけある。即ち: (1) 先取りキュー32満杯: 通常の動作では、仮
想命令キャッシュ17はVIBA65内のアドレスを使
ってサイクル毎にアクセスされ、データは先取りキュー
32に送られ、VIBA65はインクリメントされる。
若し先取りキュー32が満杯ならば、VIBAのインク
リメントは妨げられ、先取りキュー32の中にデータの
ための余地が生じるまでデータは仮想命令キャッシュ1
7内でサイクル毎に参照される。その時点で、先取りが
再開される。
【0061】パイプラインのS1セグメントには、命令
ユニット22において発生する可能性のある機能停止が
下記の様に7種類ある: (1) 先取りキュー32における不十分なデータ:
バーストユニット33は、サイクル毎に次の命令構成要
素を解読しようとする。その構成要素全体を解読するの
に有効な先取りキュー32のバイトが十分に無ければ、
仮想命令キャッシュ17から所要のバイトが送られるま
でバーストユニット33は機能停止する。
【0062】(2) ソース・キュー37又は宛先キュ
ー38が満杯: 指定子解読時には、ソース及び宛先キ
ュー割り振り論理は、分解される指定子の要件を充たす
のに充分な項目を各キューに割り振らなければならな
い。利用可能な資源が充分にあることを保証するため
に、指定子のバーストを完成させる少なくとも2個の空
いているソースキュー項目と2個の空いている宛先キュ
ー項目とが存在しなければならない。いずれかのキュー
において、空いている項目が不十分であれば、バースト
ユニット33は、空き項目か利用できる様になるまで機
能停止する。
【0063】(3) MDファイル満杯: 複合指定子
が解読されるとき、ソース・キュー37割り振り論理
は、分解される指定子の要件を満たすのに充分なレジス
ターファイル41内のメモリーデータレジスターを割り
振らなければならない。利用可能な資源が充分にあるこ
とを保証するには、該指定子のバーストを完成させるた
めにレジスターファイル41において少なくとも2個の
空いているメモリーデータレジスターが利用可能でなけ
ればならない。空いているレジスターが充分でなけれ
ば、バーストユニット33は、充分なメモリーデータレ
ジスターが利用可能になるまで機能停止する。
【0064】(4) 2番目の条件付き分岐が解読され
るとき: 分岐予測ユニット39は、各条件付き分岐が
取る経路を予測して、その予測に基づいて命令ストリー
ムを向け直す。その予測が誤っていれば、それは交互の
経路を復元するのに充分な状態を保留している。1番目
の条件付き分岐が実行ユニット23によって解決される
前に2番目の条件付き分岐が解読される場合には、分岐
予測ユニット39は何処にも状態を復元することはない
ので、バーストユニット33は、実行ユニット23が第
1分岐の実際の方向を解明するまで機能停止する。
【0065】(5) 命令キュー満杯: 新しいオプコ
ードがバーストユニット33によって解読されるとき、
発行ユニット68は、その命令についての項目を命令キ
ュー35に加えようとする。命令キュー35への空いて
いる項目が無ければ、バーストユニット33は空いてい
る項目が利用可能になるまで機能停止するが、これは、
命令がRmux 50を通してリタイヤさせられるときに起
こる。
【0066】(6) 複合指定子ユニット使用中: バ
ーストユニット33は、複合指定子ユニット40のパイ
プラインによって処理されなけれはならない命令構成要
素を解読する場合には、S1要求ラッチを通して複合指
定子ユニット40によるサービスを要求する。若しこの
ラッチが、(多サイクルフロー又は複合指定子ユニット
40機能停止に起因して)サービスを求める先の要求か
らなお妥当であれば、要求ラッチ内の妥当ビットがクリ
アされるまでバーストユニット33は機能停止する。
【0067】(7) 直接データ長さが利用不可: 直
接指定子について指定子拡張部の長さは、その命令につ
いての指定子のデータ長さに依存する。データ長さ情報
は、該命令のオプコードに基づいてアクセスされる命令
ROM/PLAテーブル66から来る。直接指定子が解
読される前に(これは該命令の第1指定子でなければな
らない)テーブル66のアクセスが完了しなければ、バ
ーストユニット33は1サイクルの間機能停止する。
【0068】パイプラインのS2セグメントにおいて
は、機能停止は命令ユニット22又はマイクロコードコ
ントローラ24において発生する可能性がある。命令ユ
ニット22では、下記の2種類の機能停止が発生する可
能性がある: (1) 未決の実行ユニット23又は浮動小数点ユニッ
ト27のGPR書込み:或る指定子メモリーアドレスを
計算するために、複合指定子ユニット40はGPRの内
容をレジスターファイル41から読み出さなければなら
ない。実行ユニット23又は浮動小数点ユニット27
の、レジスターへの書込みが保留されているならば、命
令ユニット22GPRスコアボードは、複合指定子ユニ
ット40のパイプラインのS2セグメントを機能停止さ
せることによってGPR読み出しを阻止する。この機能
停止は、GPR書込みが終わるまで続く。
【0069】(2) メモリデータが妥当でない: 或
る動作については、命令ユニット22は、該動作(例え
ば、変位延期指定子の間接アドレスについて行われる読
み出し)を完了させるのに使われるデータを戻すために
メモリー管理ユニット25要求を行う。命令ユニット2
2MDレジスターは妥当ビットを内蔵し、このビット
は、要求が行われるときにクリアされ、データが該要求
に応じて戻るときにセットされる。該妥当ビットがオフ
であるときに命令ユニット22が命令ユニット22MD
レジスターを参照するならば、複合指定子ユニット40
のパイプラインのS2セグメントは、そのデータがメモ
リー管理ユニット25により戻されるまで機能停止す
る。
【0070】マイクロコードコントローラ24において
は、一つの機能停止がS2セグメント時に発生する可能
性がある: (1) 命令キューが空: マクロ命令の実行フローの
最後のマイクロ命令は、最終サイクル・マイクロ命令が
マイクロ命令制御ユニット24によって解読されるとき
に実行ユニット23において指示される。この事象に応
じて、実行ユニット23は、命令キュー35内の最初の
アドレスに基づいて次のマクロ命令フローの第1マイク
ロ命令を受け取ると予想する。若し命令キュー35が空
であれば、マイクロ命令制御ユニット24は、次のマク
ロ命令フローの代わりに命令キュー機能停止マイクロ命
令を供給する。実際上、これによりマイクロ命令制御ユ
ニット24は1サイクルの間機能停止する。
【0071】パイプラインのS3セグメントでは、機能
停止は、命令ユニット22で、実行ユニット23で、又
は実行ユニット23若しくは命令ユニット22で発生す
る可能性がある。命令ユニット22では、3種類のS3
機能停止があり得る: (1) 未決の実行ユニット23GPR読み出し: 自
動インクリメント、自動デクリメント、及び自動インク
リメント延期指定子についての処理を完了させるため
に、複合指定子ユニット40はGPRを新しい値で更新
しなければならない。ソース・キュー37を通してのレ
ジスターへの実行ユニット23読み出しが保留されてい
る場合には、命令ユニット22スコアボードは、複合指
定子ユニット40のパイプラインのS3セグメントを機
能停止させることによってGPR書込みを阻止する。こ
の機能停止は、実行ユニット23がGPRを読み出すま
で続く。
【0072】(2) 指定子キュー満杯: 殆どの複合
指定子について、複合指定子ユニット40は、該指定子
に必要とされるメモリー要求についてのメモリー管理ユ
ニット25のサービスを求める要求を行う。指定子キュ
ー75内に空いている項目が無ければ、複合指定子ユニ
ット40のパイプラインのS3セグメントは、空いた項
目が利用可能になるまで機能停止する。
【0073】(3) RLOG満杯: 自動インクリメ
ント、自動デクリメント、及び自動インクリメント延期
指定子は、GPRの変更をその中にログするところの自
由レジスターログ(RLOGと略記)項目を必要とす
る。この指定子が解読されるときに自由な(空いた)R
LOG項目が無ければ、複合指定子ユニット40のパイ
プラインのS3セグメントは、空いた項目が利用可能に
なるまで機能停止する。
【0074】実行ユニット23では、下記の4種類の機
能停止がS3セグメントで発生する可能性がある: (1) メモリー読み出しデータが妥当でない: 或る
場合には、実行ユニット23は、レジスターファイル4
1内の6個の実行ユニット23作業レジスターの一つの
データを戻すためにメモリー管理ユニット25に明示的
読み出し要求を行うことがある。その要求が行われると
き、該レジスター上の妥当ビットがクリアされる。デー
タが該レジスターに書き込まれるとき、該妥当ビットは
セットされる。該妥当ビットがクリアであるときに実行
ユニット23がレジスターファイル41内の該作業レジ
スターを参照する場合には、実行ユニット23のパイプ
ラインのS3セグメントは、項目が妥当になるまで機能
停止する。
【0075】(2) フィールドキューが妥当でない:
フィールド型の指定子を包含する各マクロ命令につい
て、マイクロコードは、該フィールド指定子がGPRを
アドレス指定するか又はメモリーをアドレス指定するか
を判定するためにフィールドキュー71内の第1項目で
マイクロ分岐する。妥当ビットがクリアであるときに実
行ユニット23が作業レジスターを参照する場合には、
実行ユニット23のパイプラインのS3セグメントは、
該項目が妥当になるまで機能停止する。
【0076】(3) 未決のFボックスGPR書込み:
浮動小数点ユニット27の計算パイプラインは複数サ
イクルの長さであるので、実行ユニット23は、浮動小
数点ユニット27が第1の命令を完了する前に後続の命
令を処理し始めることがある。浮動小数点ユニット27
命令結果が、後続の実行ユニット23マイクロワードに
より参照されるレジスターファイル41内のGPRを宛
先とする場合には、実行ユニット23のパイプラインの
S3セグメントは、該GPRへの浮動小数点ユニット2
7の書込みが起きるまで機能停止する。
【0077】(4) Fボックス命令キュー満杯: 命
令が浮動小数点ユニット27に発せられるとき、項目が
浮動小数点ユニット27命令キューに加えられる。該キ
ュー内に空いた項目が無ければ、実行ユニット23のパ
イプラインのS3セグメントは、空いた項目が利用可能
になるまで機能停止する。実行ユニット23又は浮動小
数点ユニット27ではS3において下記の2種類の機能
停止が発生する可能性がある: (1) ソース・キューが空: 殆どの命令オペランド
は命令ユニット22によって先取りされるが、これは、
該オペランド値を指すポインタをソース・キュー37に
書き込む。このとき、実行ユニット23は、実行ユニッ
ト23又は浮動小数点ユニット27への配送のためにソ
ース・キュー37を通して間接的に、サイクル当たり2
個に及ぶオペランドを参照する。参照されるソース・キ
ュー項目のいずれかが妥当でなければ、実行ユニット2
3パイプラインのS3セグメントは、該項目が妥当にな
るまで機能停止する。
【0078】(2) メモリーオペランドが妥当でな
い: メモリーオペランドは命令ユニット22によって
先取りされ、データは、メモリー管理ユニット25又は
命令ユニット22によってレジスターファイル41内の
メモリーデータレジスターに書き込まれる。参照された
ソース・キュー37の項目が、妥当でないメモリーデー
タレジスターを指した場合には、実行ユニット23のパ
イプラインのS3セグメントは、該項目が妥当になるま
で機能停止する。
【0079】パイプラインのセグメントS4では、2種
類の機能停止が実行ユニット23において、一つは浮動
小数点ユニット27で、四つは実行ユニット23又は浮
動小数点ユニット27において、発生する可能性があ
る。実行ユニット23では: (1) 分岐キューが空: 条件付き又は無条件の分岐
が命令ユニット22によって解読されるとき、項目が分
岐キュー70に加えられる。条件付き分岐命令について
は、該項目は、分岐方向についての命令ユニット22の
予測を示す。分岐変位が妥当であったことを確認するた
めに、且つ実際の分岐方向を該予測と比較するために、
該分岐キューは実行ユニット23により参照される。そ
の分岐キュー項目が命令ユニット22によって未だ作ら
れていないならば、実行ユニット23のパイプラインの
S4セグメントは、該項目が作られるまで機能停止す
る。
【0080】(2) FボックスGPRオペランド・ス
コアボード満杯: 実行ユニット23は、それに対して
浮動小数点ユニット27による未決の書込みがあるとこ
ろのGPRを実行ユニット23が読み出すことを阻止す
るためにレジスタースコアボードを具現する。GPR結
果を書く各浮動小数点ユニット27命令について、実行
ユニット23は浮動小数点ユニット27GPRスコアボ
ードに項目を加える。実行ユニット23が項目を加えよ
うとするときに該スコアボードが満杯である場合には、
実行ユニット23パイプラインのS4セグメントは、空
いた項目が利用可能になるまで機能停止する。
【0081】浮動小数点ユニット27においては、下記
の一つの機能停止がS4で発生する可能性がある: (1) Fボックス・オペランドが妥当でない: オプ
コードがマイクロ命令制御ユニット24により命令キュ
ー35から除去されるとき、命令が浮動小数点ユニット
27に対して発せられる。該命令についてのオペランド
は、或る時間が経過するまではバス47、48を介して
到達しないことがある。オペランドが未だ妥当でないと
きに浮動小数点ユニット27が命令実行を始めようとす
る場合には、浮動小数点ユニット27のパイプライン
は、該オペランドが妥当になるまで機能停止する。
【0082】実行ユニット23又は浮動小数点ユニット
27において、下記の4種の機能停止がパイプラインセ
グメントS4で発生する可能性がある: (1) 宛先キューが空: 命令についての宛先指定子
が命令ユニット22によって処理されるが、これは、宛
先(GPR又はメモリー)を指すポインタを宛先キュー
38に書き込む。宛先キュー38は二つの場合、即ち、
実行ユニット23又は浮動小数点ユニット27がRmux
50を介して命令結果を記憶させるとき、及び、実行ユ
ニット23が浮動小数点ユニット27命令の宛先を実行
ユニット23GPRスコアボードに加えるとき、に参照
される。(命令ユニット22が宛先指定子の処理を終え
ていなければそうなる様に)宛先キュー項目が妥当でな
ければ、該項目が妥当になるまで機能停止が起こる。
【0083】(2) PAキューが空: メモリー宛先
指定子について、命令ユニット22は宛先の仮想アドレ
スをメモリー管理ユニット25に送り、これはそれを変
換して該物理的アドレスをPAキュー56に加える。命
令結果がメモリーに書き込まれるべきことを宛先キュー
38が示す場合には、その結果についてのデータを供給
するメモリー管理ユニット25に記憶要求が行われる。
メモリー管理ユニット25は、そのデータをPAキュー
56内の第1アドレスと突き合わせ、書込みを実行す
る。実行ユニット23又は浮動小数点ユニット27がメ
モリー結果レディーを持っているときにPAキューが妥
当でなければ、Rmux 50は、該項目が妥当になるまで
機能停止する。その結果として、Rmux 入力のソース
(出所)(実行ユニット23又は浮動小数点ユニット2
7)も機能停止する。
【0084】(2) EMラッチが満杯: 実行ユニッ
ト23又は浮動小数点ユニット27により行われる全て
の暗示的及び明示的なメモリー要求はEMラッチ74を
通ってメモリー管理ユニット25に到る。新しい要求が
行われるときにメモリー管理ユニット25が前の要求を
なお処理している場合には、Rmux 30は、前の要求が
完了するまで機能停止する。その結果として、Rmux 5
0のソース(実行ユニット23又は浮動小数点ユニット
27)も機能停止する。
【0085】(4) Rmux が他のソースに選択され
る: マクロ命令は、それらが命令ストリーム内に出現
する順に完了されなければならない。実行ユニット23
リタイヤ・キュー72は、完了するべき次の命令が実行
ユニット23から来るか浮動小数点ユニット27から来
るかを決定する。次の命令が一つのコースから来て他方
がRmux 50要求を行う場合には、他方のソースは、次
の命令がそのソースから来るべきであることをリタイヤ
・キューが示すまで機能停止する。
【0086】機能停止に加えて、パイプライン・フロー
は『例外』により理想から外れることがある。パイプラ
イン例外は、パイプラインの通常のフローが他のフロー
のために停止させられるべきことを要求する事象をパイ
プラインのセグメントが検出した時に発生する。二つの
基本的種類のパイプライン例外、即ち、その例外が訂正
されると元のパイプライン・フローを再開するもの、及
び、オペレーティングシステムの介在を必要とするも
の、がある。メモリー参照での変換バッファー55にお
けるミスは第1の種類の一例であり、アクセス制御(メ
モリー保護)違背は第2の種類の一例である。
【0087】再始動可能な例外は、その事象を検出した
セクションの範囲内で完全に処理される。他の例外は、
処理のために実行ユニット23に報告されなければなら
ない。CPU10はマクロパイプライン処理されるの
で、例外は、その例外を引き起こした命令が実行ユニッ
ト23又は浮動小数点ユニット27によって実際に実行
されるより遙か以前に該パイプラインのセクションによ
って検出されることが出来る。しかし、例外の報告は、
該命令が実行ユニット23又は浮動小数点ユニット27
によって実行されるまで延期される。その時点で、実行
ユニット23ハンドラーが該事象を処理するために呼び
出される。
【0088】実行ユニット23及び浮動小数点ユニット
27はマイクロパイプライン処理されるので、例外ハン
ドラーが呼び出される点は慎重に管理されなければなら
ない。例えば、3個のマクロ命令が実行ユニット23の
パイプラインのセグメントS3、S4及びS5で実行中
であることが出来る。S3セグメントにおけるマクロ命
令について例外が報告された場合には、S4及びS5セ
グメント内の2個のマクロ命令は、例外ハンドラーが呼
び出される前に完了することを許されなければならな
い。
【0089】これを達成するために、実行ユニット23
内のS4/S5の境界が、マイクロ命令遂行点であると
定義される。例外が検出された場合に元の状態を復元す
る何らかのメカニズムが無ければ(命令ユニット22R
LOGは、この様なメカニズムの例である)、パイプラ
インのS5セグメントの始まりより前にはアーキテクチ
ャの状態は修正されない。その事象が属するマイクロ命
令がS4/S5の境界を横断しようとするまで例外報告
は延期される。その時点で、例外が報告されて例外ハン
ドラーが呼び出される。この時点まで例外報告を延期す
ることにより、前のマイクロ命令(これは前のマクロ命
令に属することがある)は完了することを許される。
【0090】殆どの例外は、マイクロ命令制御ユニット
24からマイクロトラップを要求することによって報告
される。マイクロ命令制御ユニット24は、マイクロト
ラップ要求を受け取ると、実行ユニット23にその全て
の機能停止を破壊させ、実行ユニット23パイプライン
を打切り、その事象についてのハンドラーのアドレスを
コントロール記憶装置43のためのアドレスラッチに注
入する。これは、例外を適切に処理する実行ユニット2
3マイクロコード・ルーチンを開始させる。他の或る種
の例外は、適当なハンドラーアドレスを適当な点でコン
トロール記憶装置43に単に注入することによって報告
される。
【0091】CPU10において、例外は2種類、即ち
(故障及びトラップ)ある。両方の種類について、例外
についてのマイクロコードハンドラーは、命令ユニット
22にRLOG内にある全てのGPR修正を撤回させ、
PCキューからPCを検索する。故障については、戻さ
れるPCは、その例外を引き起こした命令のオプコード
のPCである。トラップについては、戻されるPCは、
実行されるべき次の命令のオプコードのPCである。マ
イクロコードは適当な例外フレームをスタック上に構築
し、適当なベクトルを通してオペレーティングシステム
へ指名する。命令ユニット(Iボックス) 図8を参照すると、命令ユニット22が詳しく示されて
いる。命令ユニット22は、命令ストリームを取り出
し、分解し、処理して、実行のために実行ユニット23
に利用可能な分解されたマクロ命令の定常的供給を保と
うとする。CPU10のパイプライン処理構成は、図6
に示されている様に、複数のマクロ命令が種々の実行段
階でCPU内に存在することを許す。命令ユニット22
は、実行ユニット23に向かって半自律的に動き、実行
ユニット内で現在実行中の命令に続くマクロ命令を分解
する。命令ユニット22における分解のための時間が、
前の命令の実行ユニット23における実行時間中隠され
るときには、向上した性能が得られる。命令ユニット2
2は、命令ストリームにおいてどんどん先に分解してい
る間に生成された情報をキュー35、37及び38の中
に入れる。命令キュー35は、オプコード(1又は2バ
イト)、浮動小数点命令を示すフラグ、及びマイクロ命
令シーケンサ42のための入口点を含む、命令特有の情
報を内蔵する。ソース・キュー37は、実際のオペラン
ド(命令ストリーム自体に含まれている短リテラルの場
合と同様に)又は該オペランドの記憶場所を指すポイン
タを含む、命令キュー35内の命令についてのソース・
オペランドの一つ一つについての情報を内蔵する。宛先
キュー38は、実行ユニット23が実行の結果の記憶場
所を選択すのるに必要な情報を内蔵する。これら3個の
キューは、命令ユニット22が実行ユニット23と平行
して動作することを可能にする。即ち、実行ユニット2
3が該キュー内の項目を消費してゆくと同時に、命令ユ
ニット22は分解を進めてもっと追加してゆく・・・理
想的な場合には、命令ユニット22は、空のキューがあ
るために実行ユニット23が機能停止しなければならな
いという事態が決して起きない様に実行ユニット23よ
り遙か前にある。
【0092】命令ユニット22は、命令及びオペランド
データのためのメモリーへのアクセスを必要とする。こ
のデータについての要求は、共通ポート(読み出し要求
バス53)を通して命令ユニット22により行われ、ア
ドレスをメモリー管理ユニット25に送る。命令ユニッ
ト22及び実行ユニット23の両方のための全てのデー
タは、共有されているメモリーデータバス54で戻され
る。メモリー管理ユニット25は、長時間にわたってメ
モリー要求トラフィックを滑らかにするキューを内蔵す
る。指定子要求ラッチ又はspecキュー75は、オペ
ランドデータについての命令ユニット22からの要求を
保持し、命令要求ラッチ又はI−refラッチ76は、
命令ストリーム・データについての命令ユニット22か
らの要求を保持する。これら2個のラッチは、たとえメ
モリー管理ユニット25が他の要求を処理していても、
命令ユニット22が命令及びオペランドデータの両方に
ついてバス53を介してメモリー要求を発するのを許
す。
【0093】命令ユニット22は、四つの主要な機能、
即ち、命令ストリーム先取り、命令分解、オペランド指
定子処理、及び分岐予測、を支援する。命令ストリーム
先取り機能は、命令分解のための命令ストリーム・デー
タの安定したソースを提供する。命令分解回路は1個の
命令に作用するのに対して、命令先取り回路は先に数個
の命令を先取りする。命令分解機能は、入ってくる命令
ストリームを分解し、命令の構成要素(オプコード、指
定子、等々)の各々を識別して、その処理を開始する。
オプコード及び付随の情報は、バス36を介して命令キ
ュー35に直接渡される。オペランド指定子情報は、レ
ジスターファイル41、メモリー(キャッシュ又はメモ
リ−12)、又は命令ストリ−ム(リテラル)の中のそ
のオペランドの位置を突き止めて該情報をキュ−37及
び38に入れて所要のメモリ−要求をバス53及びsp
ecキュ−75を介して行う回路に渡される。条件付き
分岐命令に遭遇したときには、その条件は、該命令が実
行ユニット23に到達して該条件コ−ドの全てが利用可
能となるまでは未知であるので、命令ユニット22内に
あるときは、分岐が取られるか取られないか分からな
い。この理由の故に、各条件付き分岐に遭遇したときに
従うべき命令ストリ−ムを選択する分岐予測回路39が
使われる。分岐履歴テ−ブル77が命令セットの条件付
き分岐命令毎に維持され、各条件付き分岐の最新の4回
の発生は、その分岐が取られたか取られなかったかを示
す。この履歴テ−ブル77に基づいて、予測回路78
は、条件付き分岐命令に達したときに『取る』又は『取
らない』決定を生成し、新しいアドレスの取り出しを開
始して、該分岐が取られるべきである場合には、既に取
り出され又は命令キャッシュ内にある命令を流す。その
後、命令が実行ユニット23で実行された後、実際の取
る又は取らないの決定は履歴テ−ブル77で更新され
る。
【0094】spec制御バス78は複合指定子ユニッ
ト40に適用され、これ自体はプロセッサであって、マ
イクロシーケンサ及びALUを内蔵していてレジスター
ファイル45内のレジスターの内容を操作すると共にメ
モリーデータバス54を介してメモリーにアクセスし
て、マクロ命令を実行するために実行ユニットが後に必
要とするオペランドを生成する。制御バス78はオペラ
ンドキュー・ユニット69にも適用され、このキュー
は、バス36を介して『単純』オペランド指定子をソー
スキュー37及び宛先キュー38に送ることによって該
指定子を処理するものであるが、その単純オペランド
は、リテラル(該オペランドは命令自体の中に存する)
又は、レジスターファイル41のレジスターの一つを指
すポインタを包含するレジスターモード指定子を含む。
複合指定子については、オペランドキュー・ユニット7
9は、指定子の値を計算するのに複合指定子ユニット4
0により宛先として使われるべきレジスターファイル4
1のメモリーデータレジスターの中の第1のものを定義
するためにインデックスをバス80で複合指定子ユニッ
ト40に送る。オペランドキュー・ユニット79は、単
一サイクルでバス36により2個に及ぶソース・キュー
37項目と2個の宛先キュー項目とを送ることが出来
る。spec制御バス78は、スコアボード・ユニット
81に更に接続されており、このユニット81はソース
・キュー37及び宛先キュー38に包含されるレジスタ
ーファイル41内の汎用レジスターへの待機中の参照の
個数を絶えず監視しているが、その目的は、それに対し
て待機中の読み出しがあるところのレジスターへの書込
みを防止し、或いはそれについて待機中の書込みがある
ところのレジスターからの読み出しを防止すらことであ
る。
【0095】指定子がリタイヤさせられるとき、実行ユ
ニット23は、どのレジスターがリタイヤするべきかに
ついての情報を、複合指定子ユニット40、オペランド
キュー・ユニット79及びスコアボード・ユニット81
へ行くバス82によって送る。各指定子についてのsp
ec制御バス78の内容は、指定子の種類の識別子;そ
の指定子が短リテラルであるか否かのデータ;その指定
子のアクセスの種類及びデータ長さ;それが複合指定子
であるか否かの識別子;複合指定子ユニット40内の制
御ROMについての指名アドレス、を含む。命令バース
ユニット33は、この情報を、ライン83を介して先取
りキュー32から受け取られた新しいオプコードから得
るが、これは次の情報、即ち、この命令についての指定
子の個数;分岐変位及びそのサイズの識別子;6個に及
ぶ指定子の一つ一つについてのアクセスの種類及びデ−
タ長さ;これが浮動小数点ユニット27命令であるか否
かの表示;制御ROM43についての指名アドレス、等
々の情報を生成する。各サイクルに、命令バーストユニ
ット33は、オペランド指定子が利用可能であるか否か
判定すると共に次のオプコード又は指定子に到達するの
に何個の先取りキュー32バイトをリタイヤさせるべき
かを判定するために次の情報を評価する (1)先取り
キュー32により提供される1─6の値により示され
る、先取りキュー32の利用可能なバイトの個数、
(2)現在の命令について命令バーストユニット33に
より維持されている進行中のカウントに基づいて、この
命令について命令ストリームに分解されるべく残されて
いる指定子の個数、(3)次の指定子のデータ長さ、
(4)複合指定子ユニット40(この命令にために使わ
れているならば)が使用中であるか否か、(5)データ
長さ情報がテーブル66からなお利用可能か否か、等
々。
【0096】或る命令は、テーブル66からのオペコー
ドから得られた出力から示される、1又は2バイトの分
岐変位を有する。分岐変位は、常に、命令についての最
後のデータ片であって、分岐宛先を計算するために分岐
予測ユニット39により使用されて、バス22bs及び
22bqを介してユニット39に送られる。分岐変位
は、次の条件、即ち、(1)処理されるべき指定子が残
っていないこと、(2)所要数のバイト(1又は2)が
先取りキュー32において利用可能であること、(3)
分岐機能停止が表明されないこと(これは、第1の条件
付き分岐がクリアされる前に第2の条件付き分岐が受信
されるときに発生する)が満たされたならば処理され
る。
【0097】図9を参照すると、複合指定子ユニット4
0が詳しく示されている。複合指定子ユニット40は、
複雑な処理及び/又はメモリーへのアクセスを必要とす
るオペランド指定子を専ら処理する3段階(S1、S
2、S3)マイクロコード化パイプラインである。これ
は、レジスターファイル41への読み出し及び書込みア
クセスを持つと共に、メモリー管理ユニット25へのポ
ートを有する。メモリー要求は、複合指定子ユニット4
0により受け取られて、指定子メモリー要求の無いサイ
クルがあったときに、即ち、新しい命令が取り出される
前に現在の命令についてのオペランド要求を完了させる
試みがなされたときに、メモリー管理ユニット25に送
られる。複合指定子ユニット40はALU84を内蔵し
ており、このALUは、A及びB入力バス85及び86
を有すると共に、実行ユニット23内のレジスターファ
イル41へ書き込む出力バス87を有するが、これらの
データ経路は全て32ビットである。A及びB入力はS
3のラッチ88においてラッチされるが、これは選択器
91及び92からの出力89及び90によりS2のとき
に駆動される。
【0098】これらの選択器は、specデータバス7
8から、メモリーデータバス54から、バス93、AL
U84の出力バス87、ライン95経由PC、仮想命令
キャッシュ17要求バス96、等々、を介してレジスタ
ーファイル41から、データを受け取る。これらの幾つ
かはS2のラッチ97においてラッチされる。命令ユニ
ット22のアドレス出力53は、ALU出力87、仮想
命令キャッシュ17要求96及びAバス85を受け取る
選択器98により生成される。ALU84で行われる動
作と、選択器91、92及び98によりなされる選択と
は、入力102上のマイクロ命令アドレスに応じてバス
101上に29ビット幅のマイクロワードを生成するコ
ントロール記憶装置100を含むマイクロシーケンサに
より制御される。一例では、このコントロール記憶装置
は128ワードを内蔵する。該マイクロワードは、選択
器103からの入力102上のアドレスに基づいてS1
で生成され、ALU84等々の動作を制御するためにS
2及びS3のときにパイプラインラッチ104及び10
5の中にラッチされる。
【0099】命令ユニット22は、その動作をパイプラ
インの始めの4個のセグメント、S0−S4、で行う。
S0では、仮想命令キャッシュ17はアクセスされて先
取りキュー32にロードされる;仮想命令キャッシュ1
7は8バイトに及ぶ命令ストリーム・データを先取りキ
ュー32に充填しようとする。仮想命令キャッシュ17
には、先取りキュー32に充填するのに必要な連続する
命令を含む命令ストリーム・ブロックが予めロードされ
ていると仮定する。S1では、命令バーストユニット3
3は、入ってくる命令データをオプコード、オペランド
指定子、指定子拡張部、及び分岐変位に分解し、その結
果を、更なる処理のために命令ユニット22の他の部分
に渡し、その後、命令発行ユニット68は、命令発行ユ
ニット83により提供されるオプコードを取って、命令
の実行を始めるためにマイクロ命令ユニット24が必要
とするマイクロコード指名アドレス及びその他の情報を
生成する。
【0100】また、S1では、分岐予測ユニット39
は、分岐が取られるか否か予測して、必要に応じて命令
ユニット22の命令処理を向け直し、オペランドキュー
・ユニット79はソース・キュー37及び宛先キュー3
8への出力をバス36上に生成し、スコアボード・ユニ
ット81はレジスターファイル41内のGPRへの未決
の読み出し及び書込み参照を監視し続ける。複合指定子
ユニット40においては、マイクロシーケンサはS1内
のライン101上にマイクロワードを生成するためにコ
ントロール記憶装置100にアクセスする。S2パイプ
段では、複合指定子ユニット40はその読み出し動作を
行ってレジスターファイル41内の所要のレジスターに
アクセスし、そのデータを次のパイプ段のそのALU8
4に提供する。その後、S3段で、ALU84はその動
作を行って結果をレジスターファイル41内のレジスタ
ー又は局所一時レジスターに書き込む;このセグメント
はメモリー管理ユニット25へのインターフェースも内
蔵する・・・必要に応じてオペランドを取り出すために
要求がメモリー管理ユニット25に送られる(恐らく、
データが戻るのを待っている間に機能停止を起こす)。仮想命令キャッシュ(VICと略記) 図10を参照すると、仮想命令キャッシュ17が詳しく
示されている。仮想命令キャッシュ17は64個のタグ
も記憶する2Kバイトのデータメモリー106を包含し
ている。このデータメモリーは32行の2個のブロック
107及び108として構成されている。各ブロック1
07、108は256ビット幅であるので、1ヘキサワ
ードの命令ストリームデータ(4カッドワード)を内蔵
する。行デコーダ109は仮想アドレスのビット<9:
5>をVIBAレジスター65から受け取り、〔32か
ら1〕インデックス(1-of-32 indexes)110(行)を
選択して2ヘキサワードの命令ストリーム・データをメ
モリーアレーから列ライン111上に出力する。
【0101】列デコーダ112及び113は仮想アドレ
スのビット<4:3>に基づいて〔4から1〕(1-of-
4)を選択する。よって、各サイクルに、仮想命令キャッ
シュ17はバス114及び115で出力される2個のヘ
キサワード記憶場所を選択する。〔1から32〕行デコ
ーダ(1-of-32 row decoder)109により選択されたタ
グ記憶装置116及び117からの2個の22ビット・
タグは、選択されたインデックスのためのライン118
及び119上に出力されて、タグ比較回路120及び1
21によりVIBAレジスター65内のアドレスのビッ
ト<31:10>と比較される。若しいずれかのタグが
マッチを生成すれば、ヒットがライン122上に信号さ
れ、カッドワードはバス123上に出力されて先取りキ
ュー32に行く。ミスが信号されると(キャッシュ・ヒ
ットが122上に表明されないと)、図8に示されてい
る様にバス96及び複合指定子ユニット40を介してV
IBAアドレスをアドレスバス53に送ることによって
メモリー参照が生成される。命令ストリーム・データは
この様にしてキャッシュから取り出され、或いは、必要
ならば、メモリー12から命令ストリーム・データを取
り出すために例外が生成される。ミスの後、仮想命令キ
ャッシュ17はメモリーデータバス54からデータ記憶
装置ブロックへの入力124及び125により列デコー
ダ112及び113を介して充填され、タグ記憶装置は
アドレス入力からライン126及び127を介して充填
される。各キャッシュサイクル後、VIBA65は経路
128を介してインクリメント(+8だけ、カッドワー
ド細分性)されるが、VIBAアドレスはレジスター1
29にも保存されるので、ミスが若し発生すればVIB
Aは再充填され、このアドレスはMDバス54上の入来
する命令ストリーム・データについてのフィル・アドレ
スとして使われる。仮想命令キャッシュ17コントロー
ラ130は、先取りキュー32、キャッシュヒット信号
122、等々からコントロールを受け取って、仮想命令
キャッシュ17のサイクルを画定する。先取りキュー(PFQ) 図11を参照すると、先取りキュー32が詳しく示され
ている。メモリーアレー132は、4バイト×4バイト
に配列された4個のロングワードを保持する。アレー1
32は、ソース・マルチプレクサ134からライン13
3を介して各サイクルに4バイトのデータを受け取るこ
とが出来る。マルチプレクサ134への入力は、メモリ
ーデータバス54及び仮想命令キャッシュ17データバ
ス123である。先取りキュー32が仮想命令キャッシ
ュ17からデータの他のカッドワードをロードするのに
充分な利用可能のスペースを内蔵していないときには、
先取りキュー32コントローラ135は、仮想命令キャ
ッシュ17へ行くライン136上にpfq満杯信号を表
明する。仮想命令キャッシュ17は、先取りキュー32
へのデータの供給を制御し、pfq満杯ライン136が
表明されなければ各サイクルにカッドワードをロードす
る。
【0102】コントローラ135は、仮想命令キャッシ
ュ17コントローラ130からのライン137及び13
8上のロード−vic−データ信号又はロード−md−
データ信号に応じてマルチプレクサ134を介して、ソ
ースとして仮想命令キャッシュ17データバス123又
はメモリーデータバス54を選択する。先取りキュー3
2コントローラ135は、分解のために利用可能な命令
ストリーム・データの使用されていない妥当なバイトの
個数を判定して、この情報をライン139を介して命令
バーストユニット33に送る。命令バーストユニット3
3が命令ストリーム・データをリタイヤさせるとき、該
ユニットは先取りキュー32コントローラ135に対し
てライン140上に、リタイヤさせられる命令ストリー
ム・オプコード及び指定子バイトの個数を信号する。こ
の情報は、アレー132へのポインタを更新する。アレ
ー132の出力は、そのデータを命令バーストユニット
33による使用のために整合させるマルチプレクサ14
1を経由する。この整合マルチプレクサ141は、第1
及び第2のロングワード143と、第3のロングワード
からの第1バイト144とを入力として(ライン142
で)取り、コントローラ135に維持されているポイン
タに基づいて、該第1ロングワード内のいずかのバイト
から始まる6個の隣接するバイトをライン83上に出力
する。先取りキューは、分岐予測ユニット39がライン
146上に〔新PCロード〕信号を放送したときと、実
行ユニット23が〔PCロード〕を表明したときとに流
される。
【0103】命令バーストユニット33は、各サイクル
にライン83を介して先取りキュー32から6バイトに
及ぶデータを受け取り、テーブル66への参照により構
成部分(即ち、オプコード、オペランド指定子及び分岐
変位)を識別する。新しいデータはサイクルの始まりに
命令バーストユニット33に利用可能となり、リタイヤ
させられる指定子バイトの個数はライン140を介して
先取りキュー32に送り戻されるので、新しいデータの
次の組が次のサイクルによる処理のために利用可能とな
る。命令ストリーム・データから命令バーストユニット
33により注出される構成部分は、さらなる処理のため
に他のユニットに送られる。即ち、オプコードはバス1
47で命令発行ユニット83及び分岐予測ユニット39
に送られ、指定子は、分岐変位を除いて、spec制御
バス78を介して複合指定子ユニット40、スコアボー
ド・ユニット81及びオペランドキュー・ユニット79
に送られる。分岐変位はバス148を介して分岐予測ユ
ニット39に送られるので、条件付き分岐が取られるべ
きである場合には新しいアドレスが生成されることが出
来る。スコアボード・ユニット 図12を参照すると、スコアボード・ユニット81が詳
しく示されている。スコアボード・ユニット81は、ソ
ース・キュー37及び宛先キュー38内のGPRへの待
機中の参照の個数を監視し続ける。スコアボード・ユニ
ット81は、15個のカウンタのアレーを2個内蔵して
いる、即ち、ソース・キュー37のためのソースアレー
150と、宛先キュー38のための宛先アレー151と
を。アレー150及び151内のカウンタ152及び1
53は、レジスターファイル41内の15個のGPRと
1対1にマッピングする。PCに対応するスコアボード
・カウンタは無い。最大数の待機中オペランド参照は、
カウンタ152及び153についての最大カウント値を
決定し、この値はソース・キュー及び宛先キューの長さ
に基づく。ソースアレーは12までカウントし、宛先ア
レーは6までカウントする。
【0104】妥当なレジスターモードソース指定子がs
pecバス78上に現れる度に、これらのレジスターに
対応するソースアレー150内のカウンタ152は、バ
ス78上の情報の一部として該レジスターの数を受け取
る選択器154により決定された通りにインクリメント
される。同時に、オペランドキュー・ユニット79は、
これらのレジスターを指す項目をソース・キュー37に
挿入する。換言すると、各々のレジスターモードソース
・キュー項目について、インクリメントコントロール1
55による、アレー150内のカウンタ152の対応す
るインクリメントがある。これは、カッドワード・レジ
スター・モード・ソース・オペランドが分解されるとき
に各サイクルで最大2個のカウンタがインクリメントす
ることを意味する(レジスターファイル41内の各レジ
スターは32ビットであるので、カッドワードはレジス
ターファイル41内の2個のレジスターを占めなければ
ならない)。各カウンタ152は1だけインクリメント
されることが出来る。実行ユニット23がソース・キュ
ー項目を除去するときにはカウンタ152はデクリメン
ト・コントロール156によってデクリメントされる。
実行ユニット23は、リタイヤ・バス82上に指示され
ている通りにサイクル当たりに2個に及ぶレジスター・
モード・ソース・キュー項目を除去する。これらのレジ
スターについてのGPR数は、実行ユニット23によ
り、インクリメント・コントローラ155及びデクリメ
ント・コントローラ156に加えられるリタイヤ・バス
82に提供される。最大2個のカウンタ152が各サイ
クルにデクリメントすることが出来、或いは若し両方の
レジスター・モード項目が同じベース・レジスターへの
リタイヤ点であるならば、いずれか一つのカウンタが2
までデクリメントされることが出来る。
【0105】同様にして、新しいレジスター・モード宛
先指定子がspecバス78上に現れるときには、選択
器157により決定された通りに、レジスターファイル
41のそのレジスターに対応するアレー151カウンタ
段153はコントローラ155によってインクリメント
される。カッドワード・レジスター・モード宛先オペラ
ンドについては1サイクルで最大2個のカウンタ153
がインクリメントする。実行ユニット23が宛先キュー
項目を除去するとき、カウンタ153はコントローラ1
56によってデクリメントされる。実行ユニット23
は、レジスター・モード宛先キュー項目の除去と、レジ
スター数とをリタイヤ・バス82上に示す。
【0106】複合指定子が分解されるときには、その指
定子に付随するGPRは選択器154及び157を介し
てソース・スコアボード・アレー及び宛先スコアボード
・アレーへのインデックスとして使われ、両方のスコア
ボード・カウンタ値のスナップショットがバス158で
複合指定子ユニット40に渡される。複合指定子ユニッ
ト40は、それについての宛先スコアボード・カウンタ
値が0でないところのGPRを読み出す必要があれば、
機能停止する。0でない宛先カウンタ153は、宛先キ
ュー38内にそのレジスターを指すポインタが少なくと
も1個あることを示す。これは、そのレジスターへの将
来の実行ユニット23書込みがあって、その現在の値が
妥当でないことを意味する。複合指定子ユニット40
は、それについてのソース・スコアボード・カウンタ値
が0でないところのGPRを書き込む必要があった場合
にも、機能停止する。0でないソース・スコアボード値
は、ソース・キュー37内のそのレジスターを指すポイ
ンタが少なくとも一つあることを示す。これは、そのレ
ジスターに対する将来の実行ユニット23読み出しがあ
って、その内容を修正してはならないことを意味する。
両方のスコアボード150及び151について、複合指
定子ユニット40パイプ内のコピーは実行ユニット23
からのバス82上のリタイヤ信号の表明でデクリメント
される。分岐予測 図13を参照すると、分岐予測ユニット39が詳しく示
されている。命令バーストユニット33は、ROM/P
LA66内のオプコード値のテーブルを使って、各命令
オプコードが分解されるときにそれを監視して分岐オプ
コードを探す。分岐オプコードが検出されたとき、この
オプコードについてのPCがバス148を介して分岐予
測ユニット39に加えられる。このPC値(実際にはア
ドレスの部分集合)は、テーブル77をアドレス指定す
るために選択器162により使用される。分岐履歴テー
ブル77は512個の4ビット・レジスター163のア
レーから成り、162により選択された1レジスター1
63内の値がライン164により選択器165に加えら
れて、この選択器はレジスター166内の16個の値の
一つをアドレス指定し、1ビットの取る又は取らないの
出力を生成する。斯して、分岐予測ユニット39は、分
岐が取られるか否かを判定する。分岐予測ユニット39
は、その分岐が取られると予測した場合には(レジスタ
ー166の選択された出力が『1』)、バス148上の
符号拡張された分岐変位を加算器167においてバス2
2上の現在のPC値に加え、その結果としての新しいP
Cを新PCライン168で命令ユニット22の残りの部
分に放送する。レジスター169内の現在のPC値は、
ライン170により選択器162及び加算器167に加
えられる。
【0107】図13の様に構成された分岐予測ユニット
39は、分岐を予測するために『分岐履歴』アルゴリズ
ムを使う。このアルゴリズムの背後にある基本的前提
は、分岐挙動はパターン化する傾向があるということで
ある。プログラムにおいて一つの特定の分岐命令を識別
して、その命令の、『分岐が取られる』対『分岐が取ら
れない』の履歴を長時間にわたって追跡すると、大抵の
場合にパターンが現れる。過去に分岐した履歴を有する
分岐命令は、その履歴を維持するように思われ、将来に
分岐しない可能性よりも分岐する可能性の方が大きい。
例えば、分岐、分岐無し、分岐、分岐無し、等々、のパ
ターンに従う分岐命令は、恐らくそのパターンを維持す
る。分岐予測のための分岐履歴アルゴリズムは、この
『分岐の惰性』を利用しようとするものである。
【0108】分岐予測ユニット39は、分岐履歴のテー
ブル77と、その分岐の過去の履歴に基づく予測アルゴ
リズム(レジスター166に記憶される)とを使用す
る。分岐予測ユニット39がバス148上の条件付き分
岐オプコードのPCを受け取るとき、該オプコードのP
Cビットの部分集合が分岐履歴テーブル77にアクセス
するために選択器162により使用される。ライン16
4上のテーブル77からの出力は、その分岐についての
分岐履歴情報を包含する4ビット・フィールドである。
これら4個の履歴ビットから、期待される分岐経路を示
す新しい予測が計算される。
【0109】PCビットのうちの部分集合(9ビット)
だけが、選択器により使用されるインデックスを形成す
るので、多数の異なるオプコードPCが分岐テーブル7
7の各項目にマッピングする。分岐オプコードが、この
部分集合により画定されるインデックス領域の外側に変
化するとき、インデックスが付されている履歴テーブル
項目は異なる分岐オプコードに基づいているのかも知れ
ない。分岐テーブル77は、空間的局所性の原理に依拠
しており、PCを切り換えると、現在のプロセスが或る
時間の間小さな領域内で動作することを仮定している。
これは、数個の分岐の中の新しいPCに関連する新しい
適切な履歴を分岐履歴テーブル77が生成することを可
能にする。
【0110】テーブル77の各ビット・レジスター16
3内の分岐履歴情報は、観察された最後の4回にその分
岐が行ったものを示す1及び0のストリングから成る。
例えば、1100は、右から左へ読んで、この分岐が観
察された最後のときには分岐しなかったことを示す。ま
た、その前のときにも分岐していなかった。しかし、そ
の前の2回は分岐した。予測ビットは、記憶された履歴
ビットを、その最後の4個の分岐の履歴が与えられた場
合に分岐が進む方向を予測する論理を通す結果である。
【0111】レジスター166により定義される予測ア
ルゴリズムは、内容を試験するために又は内容を別のア
ルゴリズムで更新するために内部プロセッサ・レジスタ
ー(IPR)としてのCPUデータ経路を介してアクセ
ス可能である。パワーアップ後、実行ユニット23マイ
クロコードは、シミュレーション及び統計採集の結果で
あるアルゴリズムを定義する値をもって分岐予測アルゴ
リズムレジスター166を初期設定するが、これは一般
命令トレースの与えられた組にわたって最適の分岐予測
をもたらす。このアルゴリズムは、特別の命令トレー又
はミックスのために分岐予測を調整するべく変更される
ことが出来る。実際、該アルゴリズムは、レジスター1
66に書き込むことによって動作中に動的に変更される
ことが出来る。このアルゴリズムは、好適な実施例によ
り、下記のテーブルに示されている:分岐履歴 次の分岐についての予測 0000 取られない 0001 取られる 0010 取られない 0011 取られる 0100 取られない 0101 取られない 0110 取られる 0111 取られる 1000 取られない 1001 取られる 1010 取られる 1011 取られる 1100 取られる 1101 取られる 1110 取られる 1111 取られる 分岐テーブル77の512個の項目は、オプコードのP
Cビット<8:0>によってインデックスされている。
各分岐テーブル項目163は、このインデックスにおけ
る分岐オプコードについての前の4個の分岐履歴ビット
を内蔵する。実行ユニット23は、プロセス文脈切替え
時にマイクロコード制御下でライン171上に〔分岐テ
ーブルを流す〕コマンドを表明する。この信号は、リセ
ット・コントロール172で受信されると、512個の
分岐テーブル項目の全部を中立の値(履歴=0100)
にリセットし、その結果として0(即ち、取られない)
という新しい予測が行われることになる。
【0112】条件付き分岐オプコードに遭遇したとき、
分岐予測ユニット39は、選択器162を使って、PC
<8:0>によりインデックスされた分岐テーブル項目
を読み出す。レジスター166を含む予測論理が分岐が
取られることを示す場合には、加算器167符号はバス
147を介して命令バーストユニット33から供給され
る分岐変位を拡張して現在のPCに加算し、その結果を
新PCライン168で命令ユニット22に対して放送す
る。レジスター166内の予測ビットが、分岐が取られ
ないと予測されることを示していれば、命令ユニット2
2内の現在のPCは影響を受けない。両方の場合の代わ
りのPC(取られると予測される場合の現在のPC、及
び取られないと予想される場合の分岐PC)は、実行ユ
ニット23が該条件付き分岐をリタイヤさせるまで分岐
予測ユニット39のレジスター169内に保留される。
実行ユニット23は、条件付き分岐をリタイヤさせると
き、リタイヤ・ライン173を介して分岐の実際の方向
を示す。分岐予測ユニット39は、予測が正しくない場
合、ライン168上の他の新しいPCを介して命令ユニ
ット22を向け直すためにレジスター169からの代わ
りのPCを使う。
【0113】条件付き分岐に遭遇する度に、分岐テーブ
ル66には新しい履歴が書き込まれる。ライトバック回
路174は、ライン164を介して4ビット・テーブル
項目を受け取り、それを1記憶場所だけ左へシフトさ
せ、ライン175で受け取られた予測論理からの結果を
挿入し、新しい4ビット値を、選択器162が指す同じ
記憶場所に書き込む。斯くして、予測がなされると、分
岐履歴ビットのうちの最も古いビットが捨てられて、残
りの3個の分岐履歴ビットと新しい予測された履歴ビッ
トとはテーブル77の同じ分岐PCインデックスに書き
戻される。実行ユニット23が条件付き分岐についての
分岐キュー項目をリタイヤさせるとき、予測誤りが無か
ったならば、新しい項目は影響を受けず、分岐予測ユニ
ット39は新しい条件付き分岐を処理出来る状態とな
る。予測誤りがライ173を介して信号されると、同じ
分岐テーブル項目が回路174によって書き直され、こ
のときには最下位履歴ビットは、分岐の真の方向を反映
する、予測された方向の補数を受け取る。
【0114】分岐予測ユニット39は、分岐オプコード
について予測を行う度に、その予測に関する情報をバス
176で実行ユニット23に送る。実行ユニット23
は、分岐予測ユニット39により処理されたけれども実
行ユニット23によっては処理されていない分岐につい
ての情報を含む分岐データ項目の分岐キュー70を維持
する。バス176は2ビット幅であり、一つは妥当ビッ
トで、他の1ビットは、命令ユニット22の予測が分岐
を取るべきであるとの予測か否かを表示する。条件付き
分岐及び無条件分岐の両方について分岐キュー70に入
力が行われる。無条件分岐については、バス176のビ
ット0の値は実行ユニット23に無視される。分岐キュ
ー70の長さは、たとえ命令キュー35の全体が分岐命
令で満たされて、実行ユニット23パイプライン内に現
在分岐命令があっても該キューがオーバーフローするこ
とがない様に選択される。何時でも、唯一の条件付き分
岐がキュー70内にある可能性がある。妥当な変位が処
理されてしまうまではキュー項目は作られない。第1の
条件付き分岐がなお未決である間に2番目の条件付き分
岐に遭遇した場合には、第1の条件付き分岐がリタイヤ
させられてしまうまでは項目は作られない。
【0115】実行ユニット23が分岐命令を実行して、
その分岐が取るべきか否かに関して最終決定をすると
き、該ユニットは、分岐キュー70から次の要素を除去
すると共に、命令ユニット22により取られる方向を、
取られるべき方向と比較する。これらが異なっている場
合には、実行ユニット23は、予測誤り信号をバス17
3で分岐予測ユニット39に送る。予測誤りは、命令ユ
ニット22に処理を中止させ、誤った経路を分解してい
るときに行われたGPR修正を元に戻させ、正しい代わ
りのPCでの処理を再開させる。
【0116】分岐予測ユニット39は、条件付き分岐が
既に待機中となっているときに新しい条件付き分岐に遭
遇したときには、分岐停止信号をライン178に表明す
ることによってBIUにバックプレッシャーをかける。
分岐予測ユニット39が条件付き分岐を処理したけれど
も実行ユニット23がそれを実行していなければ、他の
条件付き分岐は分岐予測ユニット39に分岐停止を表明
させる。条件付き分岐が待機中となっているときに無条
件分岐が発生しても、命令ストリームは単に向け直しを
必要とするだけなので、問題を生じない。レジスター1
69内の代わりのPCは、条件付き分岐の解決までは変
更されないままである。分岐予測ユニット39に代わり
のPCと他の条件付き分岐回路とを解放させるために、
条件付き分岐が分岐キュー70からリタイヤさせられる
度に実行ユニット23はバス173を介して分岐予測ユ
ニット39に通知する。
【0117】ライン178上の分岐停止信号は、命令ユ
ニット22が更にオプコードを処理することを阻止す
る。分岐停止が表明されるとき、命令バーストユニット
33は、分岐変位及び補助を含む現在の条件付き分岐命
令の分解を完了し、その後、命令バーストユニット33
は機能停止する。実行ユニット23内の分岐キュー70
への入力は、第1の条件付き分岐がリタイヤさせられた
後に行われる。この時、分岐停止は表明解除され、第1
の条件付き分岐についての代わりのPCは、第2のもの
についてのそれと置換される。
【0118】分岐予測ユニット39は、全てのPCロー
ドを命令ユニット2の残りの部分に分配する。複合指定
子ユニット40マイクロコードからの命令ユニット22
へのPCロードは、新しいPCを二つの方法のうちの一
つでロードする。複合指定子ユニット40は、PC・ロ
ード・ライトバスを表明するとき、新しいPC値をIW
−Busライン上で駆動する。PC−Load−MD
は、新しいPCがMDバスライン54上にあることを示
す。分岐予測ユニット39は、適切な値を新PCライン
168上に進めると共に〔新PCロード〕を表明するこ
とで応答する。これらの命令ユニット22PCロード
は、分岐予測ユニット39内の条件付き分岐状態を変化
させない。
【0119】実行ユニット23は、〔新PCロード〕を
表明することによって、新しいPCをロードしようとす
る自己の意図を信号する。この信号の表明は、MDバス
54上に到達する次のIPRデータ片は新しいPCであ
ることを示す。メモリー管理ユニット25が書込みコマ
ンドを次に表明するとき、PCはMDバス54から取ら
れて新PCライン上に送られ、〔新PCをロードする〕
コマンドが表明される。
【0120】分岐予測ユニット39は、ライン147上
の符号拡張分岐変位を加算器167においてライン17
0上の現在のPCに加算し、新しいPCを新PCライン
168上に駆動し、信号〔新PCロード〕を表明するこ
とによって無条件分岐を実行する。条件付き分岐は、分
岐が取られると論理が予測するならば、同様にしてPC
をロードする。条件付き分岐予測誤り又は実行ユニット
23PCロードの際に、未決の条件付き分岐はクリアさ
れ、未決の無条件分岐はクリアされる。マイクロ命令制御ユニット 図14を参照すると、マイクロシーケンサ42及びマイ
クロ記憶装置43を含むマイクロ命令制御ユニット24
は、CPU10のパイプラインの3個の実行ユニット2
3セクション、即ち、S3、S4及びS5を制御する有
限状態機械を画定する。マイクロ命令制御ユニット24
自体は、該パイプラインのS2セクションの中にあっ
て、オンチップ・コントロール記憶装置43に内蔵され
ているマイクロコードにアクセスする。コントロール記
憶装置43は、マイクロシーケンサ42からの11ビッ
トバス181によりアドレス指定される。該コントロー
ル記憶装置についての現在のアドレスはラッチ182に
保持され、このラッチは、ジャンプ又は分岐、マイクロ
スタック、又はマイクロトラップなどの種々のアドレス
指定条件について数個のソースを有する選択器183か
らロードされる。コントロール記憶装置43からのバス
44上の各マイクロワード出力は、3個のパイプライ段
の全てを制御するフィールドから成っている。マイクロ
ワードは、S2の終わりに(機械サイクル毎に1個ず
つ)発せられて、S3のときのマイクロ命令バス185
への適用と実行ユニット23での使用とのためにラッチ
184に記憶され、その後、実行ユニット23の制御下
でラッチ186及び187を介してセクションS3及び
S4へ向けて前方へパイプライン処理される。各マイク
ロワードは、マイクロフローにおける次のマイクロ命令
を指定するためにバス188でマイクロシーケンサ42
へ逆に適用される15ビット・フィールド(11ビット
・アドレスを含む)を包含する。このフィールドは、コ
ントロール記憶装置43からのマイクロワードに含まれ
る明示アドレスを指定し、或いは、他のソースからアド
レスを受け取る様にマイクロシーケンサ42に指令する
ことが出来る(例えば、マイクロコードがCPU10内
の種々の状態で条件付きで分岐することを許す)。
【0121】頻繁に使われるマイクロコードは、普通
は、コントロール記憶装置内の選択されたアドレスに記
憶されるマイクロサブルーチンとして定義され、これら
のサブルーチンの一つが呼び出されるときには、リター
ンアドレスは、リターンを実行するときに使用されるた
めにマイクロスタック189に押し込まれる。この目的
のために、アドレス入力バス181上の現在のアドレス
は、リターンは現在のアドレスに1を加えたアドレスの
リターンであるので、インクリメントされた後にマイク
ロスタック入力190に逆向きに適用される。マイクロ
スタックは、例えば、6レベルのサブルーチン・ネステ
ィングを可能にするために6個の項目を内蔵する。マイ
クロスタック189の出力は、バス188上のフィール
ドのコマンドが次のアドレス・ソースとしてそれを指示
するならば、選択器183を介して現在のアドレス・ラ
ッチ182に適用される。機能停止は、マイクロコード
を書く人には明白なものであるが、例えば、メモリー管
理ユニット25がまだ提供していないオペランドをAL
U50が要求したときなど、CPU資源が利用可能でな
いときに発生する。マイクロシーケンサ42は、実行ユ
ニット23のパイプラインセグメントS3が機能停止さ
せられたときに機能停止する。ラッチ182に機能停止
入力、ラッチ184又はマイクロスタック・コントロー
ル191はS3の始めにコントロール記憶装置43から
バス44に新しいマイクロ命令を出させない。
【0122】マイクロトラップは、即時のサービスを要
求する異常な事象をマイクロコーダーが処理することを
許す。例えば、マイクロトラップは分岐予測誤りのとき
に要求されるが、このとき、実行ユニット23における
分岐計算は、条件付き分岐命令について命令ユニット2
2により予測されたものと異なる。マイクロトラップ選
択器192は、種々の条件についての数個の入力193
を有し、指定された条件下でアドレスを選択器183に
適用する。マイクロトラップが発生すると、マイクロコ
ード・コントロールが、このマイクロトラップ・アドレ
スから始まるサービスマイクロルーチンに転送される。
【0123】バス188を介してバス44でコントロー
ル記憶装置43から出力されるマイクロワードのコント
ロールフィールド(ビット<14:0>)は、アドレス
入力181に適用されるべき次のアドレスを定義する。
次のアドレスは現在のマイクロワードにおいて明示的に
コード化される;続いて起こる次のアドレスという概念
は存在しない(即ち、ラッチ182の出力は単にインク
リメントされるものではない)。コントロールフィール
ドのビット14は、ジャンプフォーマット及び分岐フォ
ーマットの選択を行う。ジャンプフォーマットは、ビッ
ト<10:0>をジャンプアドレスとして包含し、次の
アドレスのソースを(選択器183を介して)選択する
ビット<12:11>を包含し、バス190を介してリ
ターン・アドレスをマイクロスタック189へ押すか否
かを制御するビット13を包含する。分岐フォーマット
は、分岐オフセットとしてビット<7:0>を包含し、
マイクロ試験入力のソースを定義するビット<12:8
>を包含し、バス190を介してリターン・アドレスを
マイクロスタック189へ押すか否かを制御するビット
13を包含する。条件付き分岐マイクロ命令は、ALU
オーバーフロー、分岐予測誤り、メモリー管理例外、保
留されたアドレス指定モード又は浮動小数点ユニット2
7における故障などの、CPU10内の種々の状態に応
答する。
【0124】マイクロルーチンの最後のマイクロワード
は、それを最後のサイクルとして識別させるフィールド
を内蔵しており、このフィールドは、どんな新しいマイ
クロフローを開始させるべきかを決定する選択器195
を作動させる。代替のもの(優先順)は、割り込み、故
障ハンドラー、〔第1部分処理済〕ハンドラー(a firs
t-part-done handler) 、或いは命令キュー35内の最
上の項目により示される新しいマクロ命令のための入口
点、である。これら4個の代替のものは、入力196に
よって選択器195に対して表される。最後のサイクル
が指示され、且つ、選択器192からのマイクロトラッ
プが無ければ、次のアドレスは、ラッチ182に入るた
めに選択器195から選択器183に適用される。
【0125】命令キュー35は、FIFOであり、6項
目の深さであり、バス34を介して命令ユニット22に
より充填され、実行ユニット23による実行の前に命令
ユニット22がマクロ命令を取り出して解読することを
許す。各項目は22ビットの長さであり、ビット<9:
1>は、選択器183を介するコントロール記憶装置ア
ドレスのために使われる指名アドレス(dispatch addre
ss) であり(全ての入口点は、これらのアドレスビット
にマッピングされる)、ビット<21:13>はオプコ
ード自体である(余分のビットは2バイト・オプコード
を指定する)。ビット0は妥当ビットであって、該項目
が妥当であればセットされるものであり、ビット10
は、浮動小数点ユニット27命令を示し、ビット<1
2:11>は命令オペランドの初期データ長さ(バイ
ト、ワード、ロングワード、等々)を定義する。書込み
ポインタ197は、φ1の際に新しい項目がバス34か
ら書かれる記憶場所を定義し、この書込みがポインタ1
97は、妥当ビットがこの新項目においてセットされれ
ば各サイクルのφ3で進められる。読み出しポインタ1
98は、φ2の際に選択器200への出力ライン上へ新
しい命令が読み出されるべき命令キュー35内の記憶場
所を定義する。読み出される命令キュー35の項目にお
いて妥当ビットがセットされていなければ、選択器20
0は、選択器195及び選択器183を介してラッチ1
82へ送るために機能停止アドレス入力201を使う;
斯くして、機能停止マイクロワードがコントロール記憶
装置43から取り出され、機能停止コマンドが実行ユニ
ット23に送られる。命令キューから読み出される項目
において妥当ビットがセットされていれば、第1サイク
ル・コマンドが実行ユニット23に送られ、そして若し
浮動小数点ユニット27ビットもセットされていれば、
浮動小数点ユニット27コマンドが浮動小数点ユニット
27に送られる。若し最後サイクル選択器195がこの
サイクルにおけるマイクロワード出力によって作動させ
られて選択器195が出力202を選択するならば、読
み出しポインタ198はφ4において進められる(そし
て妥当ビットが該項目でセットされる)。読み出しポイ
ンタ198が進められるとき、読み出されたばかりの項
目についての妥当ビットはクリアされるので、この項目
は再使用されない。或いは、機能停止条件が存在するな
らば、読み出しポインタ198は機能停止させられる
(φ4の間、動作せず)。
【0126】命令キュー35から読み出された項目を内
蔵するバス202は、マイクロコード・アドレス・フィ
ールド(選択器195に送られる)と共にオプコード・
フィールドを含む。命令キュー35がコントロール記憶
装置43についての次のアドレス・ソースとして選択さ
れるならば、このオプコード・フィールドは、データ長
さフィールト及び浮動小数点ユニット27フィールドと
共に、S2のφ3で命令文脈ラッチ203に入力され
る。読み出された項目の妥当ビットがクリアされている
ときには、機能停止アドレスで選択器200から追い出
された機能停止命令文脈は文脈ラッチ203にラッチさ
れる。ラッチ203からのライン204上の出力は、浮
動小数点ユニット27ビットがセットされているならば
実行されるべき浮動小数点ユニット27命令を定義する
ために浮動小数点ユニット27に送られる。S3セグメ
ントのφ1でラッチ203の内容はスレーブ文脈ラッチ
205へ駆動され、このスレーブ・ラッチの内容はS3
時に実行ユニット23により使用される。
【0127】図15を参照すると、コントロール記憶装
置出力におけるマイクロワードは61ビット幅であり、
その中の14ビット・フィールド(ビット<14:0
>)はバス24eを介してマイクロシーケンサ42にお
いて使用されるので、マイクロ命令ラッチ24dへの入
力は47ビット幅でビット<60:15>である。マイ
クロ命令は、ビット60が1であるか0であるかによっ
て『標準』及び『特殊』と呼ばれる二つの一般的種類に
別れる。両方の場合に、マイクロ命令は、このサイクル
中に実施されるべきALU機能(加算、減算、パス、比
較、等々)を定義するビット<59:56>のフィール
ドと、メモリー管理ユニット25に対して行われるべき
メモリー要求を定義するビット<54:50>のMRQ
フィールドとを有する。マイクロワードのA及びBフィ
ールド(ビット<25:20>及び<39:36>)は
ALUへのA及びB入力を定義し、ビット<31:26
>のDSTフィールドはALU出力についての書込み宛
先を定義し、MISCフィールドは他の所要の制御ビッ
トを内蔵する。L、W及びVフィールド(ビット<3
4:32>)は、データ長さ、書込みバスを駆動するべ
きか否か、及び仮想アドレス書込みイネーブルを定義す
る。シフター動作については、マイクロワードは、シフ
ター機能を定義するSHFフィールド<48:46>
と、シフト量を定義するVALフィールド(ビット<4
4:40>)とを内蔵する。また、また若しビット45
が1であれば、マイクロワードはALUのB入力に行く
ビット<44:35>に一定値を内蔵し、その定数は、
MISCフィールドにおいて定義される通りに8ビット
又は10ビットであり、そして若し8ビットであればP
OSフィールドはその定数の位置を定義する。若し特殊
フォーマットであれば、シフター動作は不可能であり、
他の二つのMISC制御フィールドが利用可能である。 実行ユニット 図16を参照すると、Eボックス即ち実行ユニット23
は、6個のメモリーデータ・レジスターMD0−MD
5、15個の汎用レジスター(GPR)R0−R14、
6個の作業レジスターW、及びCPU状態レジスターか
ら構成される37個の32ビット・レジスターを有する
レジスターファイル41を包含している。MDレジスタ
ーは、命令ユニット22が開始したメモリー読み出しか
ら、及び命令ユニット22からの直接書込みから、デー
タを受け取る。作業レジスターWはマイクロ命令の制御
下で仮データを保持する(マイクロ命令セットには利用
できない);これらのレジスターは、実行ユニット23
が開始したメモリー読み出しからデータを受け取ると共
にALU45、シフター46、又は浮動小数点ユニット
27の動作から結果データを受け取ることが出来る。G
PRは、VAXアーキテクチャ汎用レジスターであり
(PC、R15、はこのファイル41内には無いけれど
も)、実行ユニット23が開始したメモリー読み出しか
ら、ALU45、シフター46から、又は命令ユニット
22から、データを受け取ることが出来る。状態レジス
ターは、半永久的アーキテクチャ状態を保持し、実行ユ
ニット23だけによって書き込まれることが出来る。
【0128】レジスターファイル41は、3個の読み出
しポート及び3個の書込みポートを有する。読み出しポ
ートは、3個の読み出しアドレス入力RA1、RA2及
びRA3と、3個の読み出しデータ出力RD1、RD2
及びRD3とを含む。3個の書込みポートは、書込みア
ドレス入力WA1、WA2及びWA3と、3個の書込み
データ入力WD1、WD2及びWD3とを含む。レジス
ターファイル41の書込みポートへのデータ入力は、W
D2へのメモリーデータ・バス54から、WD3への命
令ユニット22書込みバス87から、又はWD1への書
込みバス210上のALU45の出力から、のデータ入
力である。レジスターファイル41からのデータ出力
は、RD1(S3内の)からのALU Aバス212に
ついての選択器211へのデータ出力、RD2(これも
S3内の)からのALU Bバス214についての選択
器213へのデータ出力、及びRD3からの命令ユニッ
ト22へ行くバス93へのデータ出力である。レジスタ
ーファイル41からのRD1及びRD2出力についての
RA1及びRA2における読み出しアドレスは、選択器
215及び216から受け取られ、その各々はソース・
キュー37から、又はマイクロ命令のA及びBフィール
ドからバス185を介して入力を受け取る;1サイクル
において、ソース・キュー37内の2個の項目が、AL
U A及びB入力(又は浮動小数点ユニット27入力)
を提供するRA1及びRA2でのアドレス入力であるこ
とが出来、或いはマイクロ命令は特殊レジスターアドレ
スを定義出来ると共にソース・キュー・アドレス指定を
指定することが出来る。書込みアドレス入力WA1(A
LU出力又は書込みバス210が書き込まれるレジスタ
ーを制御する)は、宛先キュー38から又はマイクロ命
令のDSTフィールドからバス185を介して入力を受
け取る選択器217により定義される;選択器217
は、マイクロ命令と同様にリタイヤ・キュー72によっ
ても制御される。WA2入力は、バス218を介してメ
モリー管理ユニット25から来るものであって、WD2
のどのレジスターMDバス54が書かれるかを定義す
る;このMDポートは、メモリー又はIPR読み出しデ
ータをWレジスター又はGPRに書き込んで、実行ユニ
ット23が開始した読み出しを完了させるためにメモリ
ー管理ユニット25により使用され、レジスターファイ
ルアドレスはメモリー管理ユニット25からWA2に供
給される(Mボックスは、メモリー動作を開始されたと
きに該レジスターファイルアドレスを受け取った)。複
合指定子ユニット40(図13を見よ)は、一般アドレ
ス計算並びに自動インクリメント及び自動デクリメント
・オペランド指定子処理のためにWA3/WD3及びR
A3/RD3によりレジスターファイル41にアクセス
する。
【0129】バイパス経路219がMDバス54から選
択器211及び213の入力へ設けられていて、メモリ
ー読み出しデータがレジスターファイル41内のレジス
ターに書き込まれた後に同じサイクルでこのレジスター
から読み出されることなくA又はB ALU入力に直接
適用されることが出来るようになっている。データは、
同じサイクルで読まれるには余りにも遅くMDバス54
上に現れる。このバイパス経路がマイクロコードによっ
てイネーブルされるとき、データはレジスターに書き込
まれない。
【0130】定数発生器が二つある。マイクロ命令のA
フィールドで指定された、選択器221を介するALU
のA入力についての定数発生器220は、IPRのアド
レスを生成するために主として使用される定数を作り、
そして、これらは実施依存性である;一般に、内部的に
IPRアドレスを定義するために8ビット値が作られ
る。選択器223を介するALUのB入力についての定
数発生器222は、ロングワード内の4バイト位置の一
つにバイト値を置くことによってロングワード定数を構
築する;マイクロ命令内の位置フィールドPos及び定
数フィールドConstantは、この値を指定する。また、定
数ソース222は、Const.10フィールドが存在
するときに該マイクロ命令により指定される下位10ビ
ット定数を作ることが出来る。
【0131】ALU45は、マイクロワードのALUフ
ィールドにより定義される算術機能及び論理機能を実行
出来る32ビット機能ユニットである。A入力212及
びB入力214は、マイクロワードのA及びBフィール
ドの制御下にある選択器211及び213により定義さ
れる。ALU出力223は、Rmux 50を介して書込み
バス210上に多重化されることが出来、仮想アドレス
レジスター224に直接接続される。ALUは、動作の
結果に基づいて条件コード(オーバフロー、繰上げ、ゼ
ロ、負)も生成し、これらは、状態レジスターを更新す
るために使われることが出来る。ALU内で実行される
ことの出来る動作は、加算、減算、パスA又はB、AN
D、OR、排他的OR、等々である。
【0132】シフター46は、A入力212及びB入力
214から64ビットの入力を受け取って、Rmux 50
への32ビット右シフトされた出力を生成する。シフト
動作はマイクロ命令のSHFフィールドによって定義さ
れ、その量(0〜32ビット)は、VALフィールドに
より、又はシフト・カウンタ・レジスター225によっ
て定義される。シフター46の出力226は、Rmux 5
0を介して書込みバス210上に多重化され、商レジス
ター又はQレジスター227に直接接続される。
【0133】Rmux 50は、実行ユニット23と浮動小
数点ユニット27の結果記憶及びマクロ命令のリタイ
ヤ、実行ユニット23メモリー要求のソース及び次の書
込みバス210データ及び付随の情報のソースの選択を
整合させる。Rmux 選択は、メモリー管理ユニット25
へのメモリー要求の駆動と同じく、S4内で起こる。R
mux 50はリタイヤ・キュー72により制御されるが、
これは、リタイヤするべき次のマクロ命令が実行ユニッ
ト23により実行されているのか、それとも浮動小数点
ユニット27により実行されているのかを示す出力をラ
イン228上に生成し、Rmux は、書込みバス210を
駆動すると共にメモリー要求信号を駆動するために、こ
れらの一つを選択する。選択されなかった一つ(実行ユ
ニット23又は浮動小数点ユニット27)は、書込みバ
ス210又はメモリー要求を駆動すべきであるならば、
機能停止する。現在選択されているソース(実行ユニッ
ト23又は浮動小数点ユニット27)が、そのマクロ命
令がリタイヤさせられるべきであることを示すまで、リ
タイヤ・キュー72内の読み出しポインタは進められ
ず、従ってRmux 選択は変化しない。リタイヤ・キュー
により示されたソース(実行ユニット23又は浮動小数
点ユニット27)は、Rmux 50を駆動するために常に
選択される;実行ユニット23が選ばれた場合には、S
4内のマイクロ命令のWフィールドは、Rmux 50につ
いてのソースとしてALU45又はシフター46を選択
する。
【0134】32ビットVA又は仮想アドレスレジスタ
ー224は、アドレスについて現在のPAキュー56項
目を使用する宛先キュー38に基づく記憶を除いて、V
Aバス52上の全ての実行ユニット23メモリー要求に
ついてのアドレスのソースである。PAキュー56内の
項目とは異なって、VAレジスター224アドレスは未
だ変換されていない−−それは、メモリー動作が変換を
必要としないとき(IPR参照又は明示的な物理的メモ
リー参照の場合の様に)又はメモリー管理がオフである
ときを除いて、仮想アドレスである。VAレジスター2
24は、ALU45の出力223だけからロードされる
ことが出来て、マイクロワードのVフィールドがそれを
ロードすることを指定するときにS4の終わりにロード
される。与えられたマイクローワードがMRQフィール
ドにおけるメモリー動作を指定してVAレジスター22
4にロードする場合には、新しいVA値は、メモリーコ
マンドでメモリー管理ユニット25に受け取られること
になる。
【0135】母集団カウンタ230は、サイクル毎に、
Aバス212の下位14ビット内の1の個数(×4)を
計算し、選択器221へのライン231上に結果を生成
するので、その結果は、次のマイクロワードのためにA
バス212上で利用出来るソースである。母集団カウン
ト機能は、1988年7月20日に出願され、ディジダ
ルエクイプメント・コーポレーションに譲渡された同時
係属出願PD88−0372に記載されている様に、C
ALL、POP及びPUSHマクロ命令におけるマイク
ロコード・ステップを省く。母集団カウンタ230は、
S4における初期にAバス上の1の個数の4倍に等し
い、範囲(1〜14)*4内の結果を計算する。マイク
ロワードNがデータをAバス212へ向ける場合には、
マイクロワードN+1は、Aフィールド内のこのソース
を指定することによって、そのデータについての母集団
カウンタの結果にアクセスすることが出来る。ライン2
31上の母集団カウンタの結果は、マクロ命令によって
書かれることになるスタックフレームの範囲を計算す
る。該スタックフレームの二つの端部は、書込みが行わ
れる前にメモリー管理の目的のためにチェックされる。
【0136】マスク処理ユニット232は、マイクロワ
ードがMISCフィールドによってそうするように指示
するとき、S4のときに、Bバス214のビット<2
9:16>からロードされた14ビット値を保持して処
理する。ユニット232は1組のビットを出力し、これ
でマイクロ命令シーケンサ42は8方分岐を実行するこ
とが出来る。これらのマイクロ分岐の各々は、〔記憶装
置−レジスター−スタック〕シーケンス(a store-regi
ster-to-stack sequence) への分岐であり、該ビットの
組の値は、レジスターファイル43のどのレジスターが
記憶するべきかを定義する。この3ビットの組は、該8
方マイクロ分岐を実施するために図14のマイクロアド
レス・ラッチ182へのマイクロ試験入力に適用され
る。このことの目的は、CALL、Return、PO
P、及びPUSHについてマクロ命令実行フローにおい
てビットマスクをマイクロコードが迅速に処理出来るよ
うにすることである。マスク処理ユニット232は、S
4のときに14ビットをロードし、入力の値を求めて、
ビット<6:0>及び別にBバスのビット<13:7>
について、下記のテーブルに示されている値を生成す
る: ここでXは『無頓着』(“don't care ") を意味する。
これらの出力値がマイクロ試験入力へのラインを介して
マイクロシーケンサ42にロードされた後、マイクロコ
ードがその出力値の一つで分岐を行う時、マスク処理ユ
ニット232内の現在のマスク値における1である最下
位ビットは自動的に0にリセットされるが、次のマイク
ロワードが該マスクの新しい値で分岐出来る様に、この
リッセトはS3で行われる。マイクロシーケンサ42
は、マスク処理ユニット232への入力234により分
岐を取ったことを信号する。マスク処理ユニット232
の利点は、CALL又は他の同様のマイクロ命令が実行
中であるときに、スタックするのにどのレジスターが省
かれるべきであるか発見するのに必要なマイクロコード
サイクルの数が極めて少ないことである。Bバスにロー
ドされるマスクはスタックするのに省かれるべき14個
のGPRの各々について1を内蔵し、通常これらはビッ
ト<6:0>の下位の数の中にある;即ち、ビット1及
びビット2は1で、残りは0であり、このとき、これら
は2サイクルで発見されることになり(ライン233上
に000及び001出力を生じさせる)、残りの0は2
サイクルで判定されることが出来、一つは第1グループ
のビット<6:2>について出力233上に〔111〕
を生じさせ、次は第2グループについてビット<13:
7>について一纏めに(全部0)出力233上に〔11
1〕を生じさせる。よって、10マイクロサイクルが省
かれる。
【0137】マスク処理ユニット232は、一実施例で
は、上記のテーブルに従ってマスクパターンを評価する
と共に先頭の『1』の位置に従って指示される3ビット
出力を生成するデコーダによって具体化される。マイク
ロシーケンサからのライン234上の〔分岐取られる〕
表示に応じて、該デコーダは、その時に該ユニット内に
ある後端の『1』をゼロにし、評価をもう一度行ってラ
イン233上の3ビット出力値を生成する。
【0138】分岐条件評価器235は、マクロ命令オプ
コード、ALU条件コードビット及びシフター46結果
を使って、全てのマクロ命令分岐について分岐条件を評
価する。この評価は、サイクル毎に行われるけれども、
マイクロワードがそれをMRQフィールドにおいて指定
する場合に限って使用される。その評価の結果は、分岐
予測ユニット39でなされた命令ユニット22予測と比
較される。命令ユニット22予測は、分岐キュー70内
の項目において表示される。命令ユニット22予測が正
しくなかったならば、実行ユニット23は、ライン17
3の一つの命令ユニット22に信号し、分岐予測誤りト
ラップ要求をマイクロシーケンサ42へ入力193の一
つとして送る。条件付き分岐についての分岐キュー項目
が分岐キュー70から除去されたことを命令ユニット2
2に知らせるためにリタイヤ信号がライン173の一つ
に表明される。リタイヤ信号が表明され、予測誤り信号
が表明されなければ、命令ユニットかかは、代わりのP
C(予測が正しくなかったならば分岐が行くべきであっ
たアドレス)を保持している資源を解放する。リタイヤ
及び予測誤りの両方が表明されたならば、命令ユニット
22は、代わりのPCからの命令取り出しを開始し、マ
イクロシーケンサ42内のマイクロトラップは、実行ユ
ニット23及び浮動小数点ユニット27のパイプライン
を清掃させると共に種々の命令ユニット22及び実行ユ
ニット23のキューを流させる。また、メモリー管理ユ
ニット25への信号は、実行ユニット23オペランドア
クセス(書込み以外の)のMボックス処理を流す。分岐
マクロ命令は、S5に入っているので、予測誤りの場合
でもリタイヤさせられる;入力193経由の予測誤りマ
イクロトラップの場合にその完了を防止しなければなら
ないのは、パイプライン内の分岐に続くマクロ命令であ
る。メモリー管理ユニット(Mボックス) 図17を参照すると、メモリー管理ユニット25は、T
B55を包含していて、オペレーティングシステムのメ
モリー管理ソフトウェアと共に物理的メモリーを割り振
りする。仮想アドレスから物理的アドレスへの変換はメ
モリー管理ユニット25内で行われ、アクセス検査がメ
モリー保護システムのために実施され、必要なときにソ
フトウェアメモリー管理コードが開始される(TBミ
ス、ページ・スワッピング、等々)。メモリー管理ユニ
ット25は、メモリー参照が命令ユニット22、実行ユ
ニット23及び/又はキャッシュコントローラユニット
26から同時に受け取られたときにバス19又は20へ
のアクセスを割り振る;即ち、メモリー管理ユニット2
5は、全てのメモリー参照を効率的に且つ論理的に正し
く順位付けし、順番に配列し、処理し、要求及びそれに
対応するデータを命令ユニット22、実行ユニット2
3、キャッシュコントローラユニット26及び一次キャ
ッシュ14へ、逆にこれらから、転送する。メモリー管
理ユニット25は一次キャッシュ14も制御するが、こ
れは、殆どの命令ストリーム及びデータストリーム要求
については2サイクル・アクセスをもたらす。
【0139】メモリー管理ユニット25は、数個のソー
スから要求を受け取る。仮想アドレスはバス52で実行
ユニット23から受け取られ、データは書込みバス51
で実行ユニット23から受け取られ、これらのソースの
両方からのアドレスがEMラッチ74にラッチされる。
命令ストリームアドレスは、命令ユニット22からバス
53によりメモリー管理ユニット25に適用される。キ
ャッシュコントローラ・ユニット26からのインヴァリ
デート・アドレスはバス59により加えられる。一次キ
ャッシュ14ヒットから生じる、メモリー管理ユニット
25から命令ユニット22又は実行ユニット23へのデ
ータ、又はキャッシュコントローラ・ユニット26から
のデータは、参照がバックアップ・キャッシュ15又は
メモリー12へ送られた後は、メモリーデータバス54
上にある。入ってくる要求はラッチされ、その要求の中
の選択された一つが、メモリー管理ユニット25によっ
て、与えられた機械サイクルで開始される。
【0140】内部バス240上の仮想アドレスは、変換
バッファー55のタグ・アドレス入力に適用される。t
bは、物理的メモリー内の96個の最近使用されたペー
ジについてのタグ及びページテーブル項目を記憶する9
6項目の内容アドレス指定可能なメモリーである。仮想
アドレス・バス240に適用される仮想アドレスはtb
内のタグと比較され、そして、若しマッチが発見されれ
ば、対応するページテーブル項目が、出力242及び内
部物理的アドレスバス243によりアドレス入力244
によって一次キャッシュ14に送られるために適用され
る。物理的アドレスは、キャッシュコントローラ・ユニ
ット26に行く物理的アドレス・バス57にもパイプ・
ラッチ245を介して適用される。一次キャッシュ14
ヒットが発生すれば、一次キャッシュ14からのデータ
は出力246からデータバス58に適用され、そこから
メモリーデータバス54に適用される。
【0141】バス53で命令ユニット22から入ってく
る仮想アドレスはラッチ76に適用され、このラッチ
は、命令ユニット22により要求された全ての命令スト
リーム読み出し参照を、その参照が首尾よく完了するま
で、記憶している。命令ストリーム・データの次のブロ
ックを取り出すためにカッドワード・アドレスをインク
リメントするためのインクリメンター247がラッチ7
6に付随している。命令ユニット22からのバス53上
の仮想アドレスはspecキュー75にも適用され、このキ
ューは、命令ユニット22により解読されるソース及び
宛先オペランドに付随するデータストリーム読み出し及
び書込み参照を記憶する2項目FIFOである。specキ
ュー75にラッチされる各参照は、該参照が首尾よく完
了するまで記憶される。
【0142】EMラッチ74は、実行ユニット23に始
まる参照を、内部仮想アドレスバス240にそれらを適
用する前に、記憶する。その参照の各々は、メモリー管
理アクセス・チェックがクリアされて該参照が首尾よく
完了するまで記憶される。アドレス・ペアー・ラッチ2
48は、整合していない参照ペアーが検出されたときに
次のカッドワードのアドレスを記憶する;インクリメン
ター249は、バス240上のアドレスに8を加えるこ
とによって次のアドレスを生成する。
【0143】キャッシュコントローラユニット26から
バス59で入ってくるアドレスは、キャッシュコントロ
ーラユニット26ラッチ250にラッチされる;これら
の参照は、命令ストリーム一次キャッシュ14フィル、
データストリーム一次キャッシュ14フィル、又は一次
キャッシュ14ヘキサワード・インヴァリデートについ
てのものである。各参照は、完了するまでキャッシュコ
ントローラユニット26ラッチ250に記憶される。デ
ータストリーム一次キャッシュ14フィルが要求されて
いるならば、そのデータはキャッシュコントローラユニ
ット26からバス58上に現れることになる。
【0144】物理的アドレスキュー65は、宛先アドレ
ス又は読み出し修正コマンドを介して命令ユニット22
により作られた宛先指定子参照に付随する物理的アドレ
スを記憶する8項目FIFOである。実行ユニット23
は、後に、対応するデータを記憶コマンドを介して供給
する。その記憶データが供給されるとき、物理的アドレ
スキュー65アドレスは記憶データと突き合わされ、該
参照は物理的書込み動作に変換される。命令ユニット2
2からのアドレスは、実行ユニット23からの対応する
データと同じ順序であると期待される。キュー65は、
8FIFO項目全部に組み込まれたアドレス比較器を有
し、これらの比較器は、妥当な項目の物理的アドレスビ
ット<8:3>が命令ユニット22データストリーム読
み出しの対応する物理的アドレスと一致するときを検出
する。
【0145】ラッチ252は、現在待機中となっている
データストリーム読み出しアドレスを記憶する;一次キ
ャッシュ14においてミスするデータストリーム読み出
しは、対応する一次キャッシュ14ブロック・フィル動
作が完了するまで、このラッチ252に記憶される。ラ
ッチ253は、同様にして、命令ストリーム読み出しミ
ス・アドレスを記憶する。IPRへの読み出しも、デー
タストリーム読み出しと同じくラッチ252に記憶され
る。これら2個のラッチ252及び253は、数個の条
件を検出するために組み込まれた比較器を有する。イン
ヴァリデートのヘキサワード・アドレスが、ラッチ25
2又は252に記憶されているヘキサワード・アドレス
と一致すれば、これらのラッチの中の対応する一つは、
対応するフィル動作が一次キャッシュ14において最早
キャッシュ可能(cachsble)ではないことを示
すためにビットをセットする。アドレスビット<11:
5>は一次キャッシュ14内の特定のインデックスをア
ドレス指定する(2個の一次キャッシュ14ブロッ
ク);ラッチ252のアドレス<8:5>が命令ストリ
ーム読み出しの物理的アドレスの対応するビットと一致
するならば、この命令ストリーム読み出しは、該データ
ストリーム・フィル動作が完了するまで停止させられる
−−これにより、与えられた一次キャッシュ14ブロッ
クへのデータストリーム・フィル・シーケンスを同じブ
ロックへの命令ストリーム・フィル・シーケンスと同時
に発生させる可能性が防止される。同様に、同じ一次キ
ャッシュ14ブロックへのIストリーム/Dストリーム
・フィル・シーケンスが同時に発生するのを防止するた
めに、ラッチ253のアドレス・ビット<8:5>がデ
ータストリーム読み出しアドレスと比較される。両方の
ラッチ252及び253のアドレス・ビット<8:5>
はメモリー書込み動作と比較されるが、これは、その書
込みがキャッシュ・フィル・シーケンスと干渉し合うの
を防止するために必要なことである。
【0146】バス240上の仮想アドレスもメモリー管
理例外ユニット254に適用されるが、これは、その仮
想アドレスに対応するPTEのアクセス権を検査して、
保護レベルが侵害されていないか、アクセス規則が侵害
されていないか確かめる。若し例外が生成されなけれ
ば、メモリー要求は割り込み無しに継続することを許さ
れるが、例外がユニット254によって発見された場合
にはメモリー参照は打ち切られる。
【0147】メモリー管理ユニット25の機能の重要な
目的は、マクロパイプライン機能停止を最小限にするた
めに、要求された読み出しデータを命令ユニット22及
び実行ユニット23へ出来るだは速く戻すことである。
メモリー・オペランドがそのレジスターファイル41に
ロードされるのを実行ユニット23パイプラインが待っ
ているために実行ユニット23パイプラインが機能停止
している場合(md機能停止状態)には、実行ユニット
23が機能停止している時間の長さは、メモリー管理ユ
ニット25がそのデータを如何に迅速に戻すことが出来
るかということに関連させられる。メモリー管理ユニッ
ト25読み出し待ち時間を最小限にするために、メモリ
ー管理ユニット25の2サイクル・パイプライン組織が
図26に示されている様に使用され、一次キャッシュ1
4ヒットを仮定すると、読み出し参照がメモリー管理ユ
ニット25に運ばれた後に、要求された読み出しデータ
が僅か2サイクルで戻されることを許す。図26におい
て、S5サイクルの開始時に、メモリー管理ユニット2
5は、最高の優先順位の参照をS5パイプ内に追い込
む;調停回路256は、前のサイクルS4の終わりにど
の参照がS5に追い込まれるべきか(バス240を介し
てTB55の入力241に適用される)決定する。S5
サイクルの始めの半分は、TB探索のために使われると
共にTBを介して仮想アドレスを物理的アドレスに変換
するために使われる。一次キャッシュ14アクセスは、
(TB出力が利用可能となる前に、経路257を介して
仮想アドレスのオフセット部<8:0>を使って)S5
のφ2のときに開始されてS6のφ1まで続き、バス2
46上の戻りデータを伴う。若し参照によってデータが
命令ユニット22又は実行ユニット23に戻されたなら
ば、S6のφ1−φ3は、(データが権利正当化(righ
t-justified)されなければ)ローテーター258におい
て読み出しデータを回転させて該データをMDバス54
を介して命令ユニット22及び/又は実行ユニット23
に転送して戻すために使われる。
【0148】よって、整合した読み出し参照がサイクル
xにおいて命令ユニット22又は実行ユニット23によ
って発せられたとすると、1)変換された読み出しアド
レスがTB55でキャッシュに記憶されたこと、2)メ
モリー管理例外ユニット254により検出されるメモリ
ー管理例外が発生しなかったこと、3)読み出しデータ
が一次キャッシュ14に記憶されたこと、そして4)他
のもっと高位の優先順位の参照又は保留されている参照
がこの読み出しの即時の処理を禁止しなかったこと、を
条件として、メモリー管理ユニット25は、要求された
データをサイクルx+2で戻すことが出来る。
【0149】CPU10はマクロパイプライン構造であ
るので、メモリー管理ユニット25は、命令ユニット2
2及び実行ユニット23から『アウトオブオーダー』
(out−of−order)参照を受け取ることが出
来る。即ち、命令ユニット22は、実行ユニット23が
前のオプコードに対応する全ての参照を送る前に、オプ
コートに対応する参照を送ることか出来る。命令セット
の文脈、CPUアーキテクチャ、マクロパイプライン、
及びメモリー管理ユニット25ハードウェアの中で全て
の参照が正しく処理されることを保証するために、マク
ロパイプライン内での参照『アウトオブオーダー』の発
出はメモリー管理ユニット25に複雑さを持ち込むこと
になる。これらの複雑さの多くは、参照がメモリー管理
ユニット25によってどの様にして何時処理されること
か出来るかということについての制約の形を取る。
【0150】参照順序の制約の幾つかを説明するのに、
同期化の例が役立つ。この例は、2個のプロセッサ(例
えば、『プロセッサ1』は図1のCPU10であり、
『プロセッサ2』はCPU28である)が多重プロセッ
サ環境で動作していて、下記のコードを実行していると
仮定している: プロセッサ1 プロセッサ2 MOVL#1、C 10$ BLBC T、10$ MOVL#1、T MOVL C、R0 最初に、プロセッサ1は、メモリー記憶場所Tに対応す
る臨界セクションを所有している。プロセッサ1は、所
有権を現在持っているので、メモリー記憶場所Cを修正
する。その後、プロセッサ1は、1をTに書き込むこと
によって所有権を放棄する。一方、プロセッサ2は、T
が0でなくなるのを待ちながら記憶場所Tで『回って』
いる。Tが0でなくなると、プロセッサ2はCの値を読
む。以下の節で説明するメモリー管理ユニット25につ
いての数種類の参照順序制約は、この例を参照するもの
である。
【0151】一つの制約は、『Dストリーム・ミス下で
Dストリーム・ヒット無し』であり、これは、前のデー
タストリーム読み出しについて要求されたデータが未だ
供給されていない限りはデータストリーム読み出し参照
(これは一次キャッシュ14においてヒットする)が実
行することをメモリー管理ユニット25は許さないこと
を意味する。上記の例においてプロセッサ2が実行する
コードを考察する。メモリー管理ユニット25がデータ
ストリーム・ミス下でデータストリーム・ヒットを許し
たならば、命令ユニット22のCの読み出しは、Tへの
保留の読み出しミス・シーケンス時に一次キャッシュ1
4においてヒットする可能性がある。その様にすると
き、メモリー管理ユニット25は、プロセッサ1がCを
修正する前にCの値を供給することが出来た。よって、
ストリーム2は古いCを得て、新しいTは同期コードを
不適切に働かせる。
【0152】データストリーム・ミス下でのデータスト
リーム・ヒットは禁止されているけれども、メモリー管
理ユニット25はデータストリーム・フィル動作下でデ
ータストリーム・ヒットを実行する。換言すると、メモ
リー管理ユニット25は、前のミスした読み出しへの一
次キャッシュ14フィル動作が進行中であるときに、そ
のミスした読み出しデータが既に供給されたことを条件
として、一次キャッシュ14においてヒットした読み出
しについてのデータを供給する。
【0153】命令ストリーム参照及びデータストリーム
参照は互いに独立に処理される。即ち、一次キャッシュ
インデックス矛盾が無いとして、命令ストリーム処理
は、データストリーム・ミス・シーケンスが現在実行中
であるか否かに係わらず、進行することが出来る。他の
制約は、『命令ストリーム・ミス下で命令ストリーム・
ヒット無し』であり、これは命令ストリーム読み出し参
照に類似の場合である。この制約は、他の命令ストリー
ム・データが受け取られる前に命令ユニット22が常に
その要求した命令ストリーム参照を最初に受け取ること
を保証するために必要なことである。
【0154】第3の制約は、『書込みの順序を維持す
る』である。上記の例を考察する:仮にプロセッサ1の
メモリー管理ユニット25がCへの書込みをTへの書込
みと配列し直したとすると、プロセッサ2は、プロセッ
サ1がCを更新する前にCの古い値を読むことが出来る
ことになる。よって、メモリー管理ユニット25は、実
行ユニット23マイクロコードにより生成された書込み
のシーケンスを決して配列し直してはならないのであ
る。
【0155】第4の制約は『Cボックス参照の順序を維
持する』である。再び上記の例を考察する:プロセッサ
2は、MOVL#1、C命令でプロセッサ1により行わ
れた書込みの結果としてCについてのインヴァリデート
を受け取る。プロセッサ2がCの読み出しを行った後ま
でこのインヴァリデートを処理するべきでなかったなら
ば、Cの誤った値がRO内に置かれている。厳密に言え
ば、Cに対するインヴァリデートはCの読み出しより前
に発生することが保証されなければならない。しかし、
Cはプロセッサ2の一次キャッシュ14内にあるかもし
れないので、そのインヴァリデートが受け取られる前に
Cの読み出しの発生を止めるものは何もない。よって、
プロセッサ2の見地から、ここでの実際の制約は、プロ
セッサ2をループを通して落下させるTの読み出しより
前に起こらなければならないTに対するインヴァリデー
トより前にCに対するインヴァリデートが起こらなけれ
ばならないことである。メモリー管理ユニット25がキ
ャッシュコントローラユニット26参照を配列し直さな
いかぎりは、Cに対するインヴァリデートはTの非0値
が読み出される前に発生する。
【0156】第5の制約は『同じカッドワード・アドレ
スへの保留の実行ユニット23書込みに対する命令ユニ
ット22読み出しの順序を保存する』である。CPU1
0で実行されるコードの下記の例を考察する: MOVL#1、C MOVL C、R0 マクロパイプラインにおいて、命令ユニット22は指定
子オペランドを先取りする。よって、メモリー管理ユニ
ット25は『MOVL C、R0』命令に対応するCの
読み出しを受け取る。しかし、この読み出しは、前の命
令からのCへの書込みが完了するまでは、行われること
は出来ない。さもないと、Cの誤った値が読み出される
ことになる。一般に、メモリー管理ユニット25は、同
じ記憶場所の先の全ての書込みが完了して初めて命令ユ
ニット22読み出しが実行されることを保証しなければ
ならない。
【0157】第6の制約は、『命令ユニット22からの
I/Oスペース読み出しは、実行ユニット23が対応す
る命令を実行しているときにだけ実行されなければなら
ない』ことである。メモリー読み出しとは異なって、或
るI/Oスペース・アドレスへの読み出しは、状態の修
正を引き起こすことがある。その結果として、これらの
I/Oスペース読み出しは、その読み出しと対応する命
令実行の文脈においてのみ行われなければならない。C
PU10のマクロパイプライン構造に起因して、命令ユ
ニット22は、実行ユニット23が現在実行していない
命令のオペランドを先取りするためにI/Oスペース読
み出しを発することが出来る。命令実行における分岐に
起因して、実行ユニット23は、I/Oスペース読み出
しに対応する命令を実際には決して実行しないかも知れ
ない。従って、不適当な状態修正を防止するために、メ
モリー管理ユニット25は、実行ユニット23がI/O
スペース読み出しに対応する命令を実際に実行しつつあ
る時までは、命令ユニット22から発せられたI/Oス
ペース読み出しの処理を禁止しなければならない。
【0158】第7の制約は、『保留の読み出し/フィル
動作としての同じ一次キャッシュ14ブロックへの読み
出しは禁止されなければならない』ことである。一次キ
ャッシュ14の組織は、1個のアドレスタグが4個のサ
ブブロック妥当ビットに対応する様になっている。従っ
て、4個のサブブロックの全ての有効にされた内容(va
lidated contents) は、該タグアドレスに常に対応しな
ければならない。2個の別々の一次キャッシュ14フィ
ル動作が同じ一次キャッシュ14ブロックを同時に充填
している場合には、そのフィルデータがその2個のフィ
ル動作間で混じり合う可能性がある。その結果として、
保留の読み出し/フィル動作が完了するまでは、保留の
データストリーム読み出し/フィルとしての同じ一次キ
ャッシュ14ブロックへの命令ストリーム読み出しは禁
止される。同様に、フィルが完了するまでは、保留の命
令ストリーム読み出し/フィルとしての同じ一次キャッ
シュ14ブロックへのデータストリーム読み出しも禁止
される。
【0159】第8の制約は、『保留の読み出し/フィル
動作としての同じ一次キャッシュ14ブロックへの書込
みは、その読み出し/フィル動作が完了するまでは禁止
されなければならない』ことである。7番目と同じく、
この制約は、全ての妥当なサブブロックが妥当な最新の
データを内蔵することを保証するために必要である。次
のような状況を考察する:現在充填されつつある一次キ
ャッシュ14ブロックの妥当でないサブブロックへの書
込みをメモリー管理ユニット25が実行する;1サイク
ル後に、その同じサブブロックへのキャッシュフィルは
一次キャッシュ14に到達する。よって、その書込みに
由来する最新のサブブロック・データは、もっと古いキ
ャッシュフィル・データで重ね書きされる。今、このサ
ブブロックは『古い』データで妥当とマークされる。こ
の状況を避けるために、保留の読み出し/フィル動作と
しての同じ一次キャッシュ14ブロックへの書込みは、
キャッシュフィル・シーケンスが完了するまでは禁止さ
れる。
【0160】図17を参照すると、S5内の仮想アドレ
スバス240へ駆動されることの出来る7個の異なる参
照記憶装置(例えば、EMラッチ74、Iref ラッチ7
5、Cbox ラッチ250、VAPラッチ248、specキ
ュー76、MMEラッチ、等々)がメモリー管理ユニッ
ト25内にある。どれを駆動するべきかを解明するため
に、調停回路256によって参照調停が実施される。こ
れら7個の装置の目的は、保留の参照(これはチップの
異なるセクションから生じる)を、それらがメモリー管
理ユニット25により処理され得ることとなるまで緩衝
記憶することである。CPUパイプラインの動作を最適
化し、メモリー管理ユニット25回路及び参照順序制約
を考慮して参照処理の機能の正しさを維持するために、
メモリー管理ユニット25は、これら7個のキューから
の参照に優先順にサービスする。
【0161】各メモリー管理ユニット25サイクルのと
きに、参照調停回路256は、調停優先順位に従って、
どのサービスされていない参照が次のサイクルで処理さ
れるべきかを決定する。参照ソースは、以下に、最高優
先順位から最低優先順位へと列挙されている: 1. Cボックス参照を伴うラッチ250 2. retry−dmissラッチ257 3. メモリー管理例外ラッチ258 4. 仮想アドレス・ペアー・ラッチ248 5. Eボックス−Mボックス・ラッチ74 6. specキュー75 7. 命令ユニット22参照ラッチ247 いずれも駆動できない場合には、メモリー管理ユニット
25はNOPコマンドをS5に追い込む。この優先順位
方式は、どの保留の参照が次に駆動されるかを直接示さ
ずに、とれが処理されるかを決定するためにその保留の
参照がどの様な順序で試験されるかを示す。概念的に
は、参照を駆動する全ての条件を満たす最高の保留の参
照は、その後のサイクルで実行されることを許されるも
のである。
【0162】この優先順位方式は、或る理由に基づく。
第1に、キャッシュコントローラユニット26から来る
全ての参照は常に、利用可能になると直にサービスされ
る。キャッシュコントローラユニット26参照はS5で
1サイクルで完了することを保証されるので、私達は、
キャッシュコントローラユニット26参照を待ち合わせ
させる必要を無くすると共に、参照を送ることを止める
ようにキャッシュコントローラユニット26に知らせる
バックプレッシャー・メカニズムを設ける必要を無くす
る。第2に、retry−dmissラッチ257内の
データストリーム読み出し参照は、全ての潜在的なメモ
リー管理問題を一掃していることを保証されるので、こ
のラッチ記憶されている参照は、処理について2番目に
考慮されるものである。第3に、メモリー管理処理に関
連する参照がメモリー管理例外ラッチ258に保留され
ているならば、メモリー管理ユニット25は通常の処理
が再開出来る前に全てのメモリー管理例外を一掃しなけ
ればならないので、それには残りの4個のソースに優る
優先順位が与えられる。第4に、仮想アドレス・ペアー
・ラッチ248は、整合していない参照ペアーの第2参
照を記憶する;他の参照を開始する前に、その不整合参
照全体を完了する必要があるので、下位の優先順位の参
照から始められた不整合シーケンスを完了させるために
ラッチ248は次に高い優先順位を有する。第5に、E
Mラッチ74は実行ユニット23からの参照を記憶す
る;それは、specキュー75及び命令ユニット22
参照ラッチ76ソースより高い優先順位を与えられる
が、その理由は、実行ユニット23参照は物理的に命令
ユニット22参照よりも該パイプ内に遠く沿っているか
らである−−このことの含蓄と考えられることは、実行
ユニット23は常に実際の作業を行っており、命令ユニ
ット22は実際には決して使われないかもしれないオペ
ランドを先取りしているから、実行ユニット23は、そ
の参照要求を満たす必要を命令ユニット22よりも一層
直接的に持っていることである。第6に、specキュ
ー75は、命令ユニット22オペランド参照を記憶し、
ライン上において次に考慮されるものである;指定子参
照は、ここでもパイプラインにおいて命令ストリーム先
取りよりも遠くまで考慮されるものであるので、spe
cキューは、命令ユニット22参照ラッチ76より高い
優先順位を持っている。最後に、第7に、現在駆動され
ることの出来る参照が他に無ければ、命令ユニット22
参照ラッチ76は、データを命令ユニット22へ供給す
るために命令ストリーム読み出し参照を駆動することが
出来る。S5の中へ駆動することの出来る参照が現在無
ければ、メモリー管理ユニット25はNOPコマンドを
自動的に駆動する。
【0163】回路256で実行される調停アルゴリズム
は、直ぐ上で説明した優先順位方式に基づいている;調
停論理は、メモリー管理ユニット25の現在の状態を評
価することによって、各参照を試験して、それを次のサ
イクルに処理出来るか否か確かめる。各ラッチに付随す
る或る試験がある。第1に、キャッシュコントローラユ
ニット26参照は常に即時に処理されなければならない
ので、妥当にされたラッチ250は、常に、他の全ての
保留の参照の前にキャッシュコントローラユニット26
参照を駆動させる。第2に、ラッチ257参照が最後に
試行されてから一次キャッシュ14のフィル状態が変化
していれば、保留のデータストリーム読み出し参照は再
試行ラッチ257から駆動される;一次キャッシュ14
状態が変化していれば、それは今や一次キャッシュ14
内でヒット出来るので、その参照を再試行することは有
意義である。第3に、保留のMME参照は、メモリー管
理例外の内容が妥当にされるときに駆動される。第4
に、仮想アドレス・ペアー・ラッチ248からの参照
は、内容が妥当にされるときに駆動される。第5に、E
ボックス−Mボックス・ラッチ74は、内容が妥当にさ
れていれば、駆動される。第6に、specキュー75内の
妥当にされた参照は、進行中の明示的実行ユニット23
書込みの故にspecキューが止められていないことを条件
として、駆動される。第7に、ラッチ76内の命令ユニ
ット22からの参照は、このラッチが保留の読み出しロ
ック/書込みアンロック・シーケンスの故に止められて
いないことを条件として、駆動される。これら7個の条
件のいずれもが満たされなければ、メモリー管理ユニッ
ト25はNOPコマンドをコマンドバス259上に駆動
してS5パイプをアイドル状態にさせる。
【0164】メモリー管理ユニット25内の読み出し処
理は、総称的読み出しヒット及び読み出しミス/キャッ
シュ・フィル・シーケンスから試験される。読み出し動
作が開始されて、TBミスが無い(種々の理由の中のい
ずれによる機能停止も無い)とすると、メモリー管理ユ
ニット25の動作は次のとおりである。最初に、バイト
マスク発生器260は、バス243上の仮想アドレスの
ビット<2:0>と、コマンドバス261上のデータ長
さフィールドDL<1:0>とを見ることによって、対
応するバイトマスクを生成し、次に該バイトマスクを制
御バス261の8ビット上に駆動する。バイトマスク・
データは、バイト整合情報をI/Oスペース読み出しで
キャッシュコントローラユニット26に供給するために
読み出し動作で生成される。
【0165】読み出し参照がS5パイプで開始されると
き、アドレスはTBにより(該アドレスが仮想であった
とすると)S5サイクルの第1半分の間に物理的アドレ
スに変換されて、物理的アドレスをバス243上に生成
する。一次キャッシュ14は、S5サイクルの第2半分
の間にこの物理的アドレスを使ってキャッシュ参照シー
ケンスを開始する。このキャッシュアクセス・シーケン
スは、次のS6サイクルと重なり合う。S5サイクルの
φ4のときには、一次キャッシュ14は、読み出し参照
がそのアレー内に存在するか否か判定する。要求された
データが存在すると一次キャッシュ14が判定したなら
ば、『キャッシュ・ヒット』又は『読み出しヒット』条
件が発生する。この場合には、一次キャッシュ14は、
その要求されたデータをデータバス246上に駆動す
る。メモリー管理ユニット25は該データを一次キャッ
シュ14から供給するので、バス262上の参照イネー
ブル信号は、S6読み出しを処理するべきでないことを
キャッシュコントローラユニット26に知らせるために
撤回される。
【0166】要求されたデータが存在しないと一次キャ
ッシュ14が判定したならば、『キャッシュミス』又は
『読み出しミス』条件が発生する。この場合、読み出し
参照は(その読み出しが命令ストリームであったかデー
タストリームであったかにより)ラッチ252又はラッ
チ253にロードされ、キャッシュコントローラユニッ
ト26は、バス262上の参照イネーブル信号のメモリ
ー管理ユニット25による表明によって該読み出しを処
理し続けるように命令される。後の或る点で、キャッシ
ュコントローラユニット26は、要求されたデータをバ
ックアップ・キャッシュ15から又はメモリー12から
得る。キャッシュコントローラユニット26は、その
後、命令ストリーム・キャッシュ・フィル・コマンド又
はデータストリーム・キャッシュ・フィル・コマンドを
使って4カッドワードのデータを送る。バス57上のヘ
キサワード読み出しアドレスに対応する一次キャッシュ
14ブロック全体を満たすために、その4個のキャッシ
ュ・フィル・コマンドが一緒に使われる。データストリ
ーム・フィルの場合には、その4個のキャッシュ・フィ
ル・コマンドの中の一つは、このカードワード・フィル
が該読み出しのカッドワード・アドレスに対応する要求
されたデータストリーム・データを内蔵することを示す
信号で修飾される。このフィルに遭遇したとき、それ
は、要求された読み出しデータをメモリー管理ユニット
25、命令ユニット22及び/又は実行ユニット23に
供給するのに使われる。しかし、キャッシュ・フィル・
コマンドに対応する物理的アドレスがI/Oスペースに
属するならば、1カッドワード・フィルだけが戻され
て、データは一次キャッシュ14に記憶されない。メモ
リーデータだけが一次キャッシュ14に記憶される。
【0167】メモリー管理ユニット25に送られる各キ
ャッシュ・フィル・コマンドは、キャッシュコントロー
ラユニット26ラッチ250にラッチされる;キャッシ
ュ・フィル・アドレスもフィル・データも、このラッチ
にはロードされないことに注意するべきである。I−mi
ssラッチ252又はD−missラッチ253内のアドレス
は、キャッシュコントローラユニット26ラッチ257
にラッチされた2個のカッドワード整合ビットと共に、
キャッシュ・フィル・コマンドがS5で実行される時に
カッドワード・キャッシュ・フィル・アドレスを作るた
めに使われる。該フィル動作がS6に伝播する時、入力
−出力246を介して一次キャッシュ14に該フィルを
実行させるために、キャッシュコントローラユニット2
6は、対応するキャッシュ・フィル・データをデータバ
ス58上に駆動する。
【0168】読み出し動作から得られるデータは、バス
58上で一次キャッシュ14(キャッシュ・ヒットの場
合に)により又はキャッシュコントローラユニット26
(キャッシュ・ミスの場合に)により駆動される。この
データは、その後、MDバス54上でローテーター25
8により権利−正当化された形(right-justified for
m) で駆動される。このデータの宛先として仮想命令キ
ャッシュ17、命令ユニット22データ、命令ユニット
22IPR書込み、実行ユニット23データ又はメモリ
ー管理ユニット25データを示すために、このデータと
共に信号が条件付きでバス262上に表明される。
【0169】要求された読み出しデータを命令ユニット
22及び/又は実行ユニット23に出来るだけ早く戻す
ために、キャッシュコントローラユニット26は一次キ
ャッシュ14データ・バイパス・メカニズムを具現す
る。このメカニズムが呼び出されるとき、要求された読
み出しデータは、該データがS6キャッシュ・フィル動
作のために駆動されるときより1サイクル早く戻される
ことが出来る。該バイパス・メカニズムは、次のS6サ
イクルがアイドルとなることを、従ってバス58がキャ
ッシュコントローラユニット26に利用可能となること
をメモリー管理ユニット25からキャッシュコントロー
ラユニット26に通知させることによって働く。キャッ
シュコントローラユニット26がS6アイドル・サイク
ルについて知らされたときには、該ユニットは、読み出
しデータが現在利用可能であるならば、要求された読み
出しデータでバス58を駆動する(バイパス・サイクル
時に利用可能な読み出しデータが無ければ、キャッシュ
コントローラユニット26は或る不定のデータを駆動
し、バイパスされる妥当なデータは無い)。該読み出し
データは、その後、ローテーター258によって書式付
けされて、コマンド・バス262上のvic データ、Iボ
ックス・データ又はEボックス・データ信号で修飾され
て命令ユニット22及び/又は実行ユニット23に戻さ
れるべくMDバス54上に転送される。
【0170】全ての命令ストリーム・コードへのメモリ
ーアクセスは、命令ユニット22の代理としてのメモリ
ー管理ユニット25によって実施される。命令ユニット
22は、命令ストリーム・データを使って、その先取り
キュー32にロードする共に仮想命令キャッシュ17を
充填する。先取りキュー32にも仮想命令キャッシュ1
7にも記憶されていない命令ストリーム・データを命令
ユニット22が要求するすときには、命令ユニット22
は、Irefラッチ76によりラッチされる命令ストリ
ーム読み出し要求を発する。命令ユニット22アドレス
は、メモリー管理ユニット25によって、整合したカッ
ドワードアドレスとして常に解釈される。データが一次
キャッシュ14においてヒットするか或いはミスするか
により、戻されるデータの量は変化する。命令ストリー
ムMDバス54データを最終フィル信号で修飾して、現
在のフィルが初期I読み出しトランザクションを終わら
せることを命令ユニット22に知らせるまでは、命令ユ
ニット22はメモリー管理ユニット25から命令ストリ
ーム・データを連続的に受け取る。
【0171】要求されたデータが一次キャッシュ14で
ヒットするとき、メモリー管理ユニット25は、Iref
ラッチ76参照を、仮想命令キャッシュ17『フィル前
進』アルゴリズムを具現する1連の命令ストリーム読み
出しに変換する。このフィル前進アルゴリズムは、Ire
f ラッチ76内の元のアドレスから元のヘキサワード・
アドレスの最高のカッドワード・アドレスまで増大する
カッドワード読み出しアドレスを生成する。換言する
と、元のアドレスに対応するヘキサワード仮想命令キャ
ッシュ17ブロックが該要求の点から該ブロックの終わ
りまで充填される様に、メモリー管理ユニット25は読
み出し参照を生成する。命令ストリーム実行は、単調に
増大する命令ストリーム・アドレスを生じさせる(分岐
を無視する)ので、要求された参照に続く命令ストリー
ム・データを供給することだけに意味があるという理論
が、このフィル前進方式の背後にある。
【0172】フィル前進方式はIref ラッチ76により
具現される。Iref ラッチ読み出しがS5で完了する
と、Iref ラッチ・カッドワード・アドレス・インクリ
メンター247は、ラッチ76の記憶されているアドレ
スを、その内容が次のカッドワードI読み出しとなる様
に修正する。この『新しい』参照がS5で完了すると、
次のI読み出し参照が生成される。該Iref ラッチがヘ
キサワード・アドレスの最高のカッドワード・アドレス
に対応するI読み出しを最後に発するとき、前進フィル
・プロセッサは、Iref ラッチ76を無効にすることに
よって終息させられる。
【0173】上記のフィル前進アルゴリズムは、I読み
出しの受信時に常に呼び出される。しかし、そのI読み
出しの一つが一次キャッシュ14でミスしたことが発見
されると、後のI読み出し参照はS5パイプ及びIref
ラッチ76から流される。ミスしたI読み出しは、Imi
ssラッチ253にロードさせると共にキャッシュコント
ローラユニット26に読み出しの処理を継続させる。キ
ャッシュコントローラユニット26が、結果としての一
次キャッシュ14データの4カッドワードを戻すとき、
4個のカッドワードの全部が、VICデータで修飾され
た命令ユニット22に転送されて戻される。その結果と
して、実際に、仮想命令キャッシュ17ブロック全体が
充填されることになるので仮想命令キャッシュ17『フ
ィル・フル』アルゴリズム(“fill full" algorithm)
が得られる。フィル・フルは、実施するのに殆どコスト
を要しないので、フィル前進の代わりに行われる。メモ
リー管理ユニット25は4キャッシュ・フィルを処理す
るためにサイクルのブロックを割り振らなければならな
い;従って、全ての一次キャッシュ14フィル・データ
を、メモリー管理ユニット25サイクルにおいて特別の
コスト無しで仮想命令キャッシュ17に運ぶことが出来
るが、それは、MDバス54は、さもないとこれらのフ
ィル・サイクル時にアイドルとなるからである。
【0174】命令ユニット22は、メモリー管理ユニッ
ト25が現在どの様なフィル・モードで動作しているか
を知らないでいる。メモリー管理ユニット25フィル・
モードに係わらずVICデータが表明されるときには仮
想命令キャッシュ17はMDバス54からの命令ストリ
ーム・データを充填し続ける。メモリー管理ユニット2
5が最後の命令ストリーム・フィルを命令ユニット22
へ駆動しているサイクルの間にメモリー管理ユニット2
5は最終フィル信号を命令ユニット22に対して表明す
る。最終フィル信号は、命令ユニット22に対して、最
後の仮想命令キャッシュ17フィルをこのサイクルで受
け取りつつあって、それ以上は受け取るべきでないとい
うことを知らせる。フィル前進モードでは、メモリー管
理ユニット25は、カッドワード整合が『11』(即
ち、ヘキサワードの一番上のカッドワード)に等しいと
きに最終フィルを表明する。フィル・フル・モードで
は、メモリー管理ユニット25は最終フィル情報をキャ
ッシュコントローラユニット26から受け取って、それ
を最後フィル信号を通して命令ユニット22に転送す
る。
【0175】フィル前進モードで命令ストリーム読み出
しの処理を開始して、その後にフィル・フルに転換する
ことは可能である。このことが起こり得る理由は、フィ
ル前進I読み出しの連鎖の中の参照の一つが、最近のイ
ンヴァリデートに起因して、又はデータストリーム・キ
ャッシュ・フィルによる一次キャッシュ14命令ストリ
ーム・データの変位に起因して、ミスするからである。
この場合、命令ユニット22は、5個以上のフィルを受
け取るが、最終フィルが表明されるまではフィルと出会
うと引き続いて期待するので、メモリー管理ユニット2
5と同期し続ける。
【0176】全てのデータストリーム参照に対するメモ
リーアクセスは、命令ユニット22(指定子処理のた
め)の代理としてのメモリー管理ユニット、メモリー管
理ユニット25(PTE参照のため)、及び実行ユニッ
ト23(その他の全てのデータストリーム参照のため)
により実施される。一般に、データストリーム読み出し
処理は、フィル前進やフィル・フル方式が無いことを除
いて、命令ストリーム読み出し処理と同じく作用する。
換言すると、要求されたデータだけが該読み出しの開始
プログラムに運ばれる。しかし、一次キャッシュ14の
観点からは、4個のD−CFコマンドがなお一次キャッ
シュ14に発せられるのでデータストリーム・フィル・
フル方式が実施される。
【0177】Dストリーム読み出しは、バイト、ワー
ド、ロングワード又はカッドワードのデータ長さを有す
ることが出来る。クロス・ページ検査機能を除いて、カ
ッドワード読み出しは、そのデータ長さがロングワード
であるかの如くに扱われる。斯くして、データストリー
ム・カッドワード読み出しは、参照されたカッドワード
の下側半分を戻す。殆どのデータストリーム・カッドワ
ード読み出しのソースは命令ユニット22である。命令
ユニット22は、該カッドワード読み出しを発した直後
に、参照されたカッドワードの上側半分に対してデータ
ストリーム・ロングワード読み出しを発する。よって、
カッドワードのデータの全体は、2個の折り返しデータ
ストリーム読み出し動作によってアクセスされる。
【0178】コマンドバス261上のD・読み出し・ロ
ック・コマンドは、参照されたデータが実際に一次キャ
ッシュ14に記憶されていたか否かに係わらず、一次キ
ャッシュ14読み出しミス・シーケンスを常に強いる。
メモリー・ロック/アンロック・プロトコールが適切に
処理されることが出来る様に読み出しがキャッシュコン
トローラユニット26を伝播させるために、これが必要
である。メモリー管理ユニット25は、前のデータスト
リーム・フィル・シーケンスの要求されたフィルが完了
した後に、データストリーム読み出しを処理しようと試
みる。『フィル下の読み出し』と呼ばれるこのメカニズ
ムは、前のフィル・シーケンスが完了するのを待つ必要
無しに読み出しデータを命令ユニット22及び/又は実
行ユニット23になるべく速く戻すために行われるもの
である。その試みられた読み出しが一次キャッシュ14
においてヒットしたならば、該データが戻されて該読み
出しは完了する。若し該読み出しがS6パイプにおいて
ミスすれば、対応するフィル・シーケンスは、次の二つ
の理由から直には開始されない:(1)現在未決のキャ
ッシュ・フィル・シーケンスに対応してD−missラッチ
253は満杯であるので、この読み出しについてのデー
タストリーム・キャッシュ・フィル・シーケンスは開始
されることが出来ない。(2)現在のフィル・シーケン
スは、新しいデータストリーム読み出しを満たすのに必
要なデータを供給するかも知れないので、現在のフィル
・シーケンスが完了するとデータストリーム読み出しは
一次キャッシュ14においてヒットするかもしれない。
D読み出しは既にS5パイスを通して伝播してしまって
いるので、その読み出しは、S5において再スタートす
ることが出来るように、何処かに記憶されなければなら
ない。再試行D−missラッチ257は、S6が読み出し
を保存してS5パイプにおいて再スタートさせるメカニ
ズムである。読み出しが再試行ラッチ257に記憶され
ると、新しいデータストリーム一次キャッシュ14フィ
ル動作がS5パイプに入った後にS5において該読み出
しは再試行される。この方式の意図は、一次キャッシュ
14フィル間で読み出しを再試行して、最後の一次キャ
ッシュ14フィルが該読み出しにより要求されたデータ
を供給したと期待することによって該読み出しをなるべ
く速く完了させようとすることである。再試行ラッチ2
57は、次の二つの条件の一つが真であるときに、無効
にされる:(1)再試行された読み出しが、一次キャッ
シュ14パリティ・エラー無しに一次キャッシュ14に
おいて結局ヒットすること、又は(2)再試行された読
み出しが、現在未決のフィル・シーケンスが完了した後
にミスすること。この場合、該読み出しはD−missラッ
チ252にロードされ、通常データストリーム・ミスと
して処理される。
【0179】I/Oスペースをアドレス指定する読み出
しは、その物理的アドレス・ビット<31:29>がセ
ットされている。下記の差異(1)、(2)、(3)を
除いて、I/Oスペース読み出しは、他の読み出しと全
く同じくメモリー管理ユニット25により処理される: (1) I/Oスペース・データはキャッシュ14には
決して記憶されない。従って、I/Oスペース読み出し
は、常に読み出しミス・シーケンスを生成し、メモリー
管理ユニット25ではなくてキャッシュコントローラユ
ニット26に該参照を処理させる。
【0180】(2) ヘキサワードのデータを4個のI
CF又はD CFコマンドを介して戻すメモリースペ
ース・ミス・シーケンスとは異なって、I/Oスペース
読み出しはI CF又はD CFコマンドを介して唯一
片のデータを戻すに過ぎない。従って、キャッシュコン
トローラユニット26は常に最終フィルを最初の、そし
て唯一の、I CF又はD CFスペース動作で表明す
る;I/Oスペース読み出しがデータストリームである
ならば、戻されるD CFデータの長さは常にロングワ
ードより短いかまたはロングワードに等しい。
【0181】(3) I/Oスペース・データストリー
ム読み出しは実行ユニット23実行より前に先取りされ
ることは決してない;命令ユニット22から発せられた
I/Oスペース・データストリーム読み出しは、実行ユ
ニット23がその特定のI/Oスペース読み出しで機能
停止すると知られたときに初めて処理される。命令スト
リームI/Oスペース読み出しは、カッドワードのデー
タを戻さなければならない。
【0182】メモリー管理ユニット25における書込み
処理が次に検査される。全ての書込みは、実行ユニット
23の代わりとしてのメモリー管理ユニット25によっ
て開始される。実行ユニット23マイクロコードは、バ
イト、ロングワード、又はカッドワードのデータ長さを
有する書込み参照を生成することが出来る。実行ユニッ
ト23データ経路はサイクル毎にロングワードのデータ
を供給するだけなので、クロス・ページ検査を例外とし
て、メモリー管理ユニット25はカッドワード書込み参
照をロングワード書込み参照として扱う。実行ユニット
23書込みは、不整合であることが出来る。
【0183】メモリー管理ユニット25は、書込み参照
時に下記の機能を行う:(1)メモリー管理チェック。
メモリー管理ユニット25のMMEユニット254は、
参照されたページが適切な書込みアクセスを持っている
ことを確かめると共に妥当な仮想アドレス変換が利用可
能であることを確かめる。(2)供給されたデータは、
ローテーター258を介してメモリー整合されたロング
ワード境界へ適宜回転させられる。(3)バイト・マス
ク生成。メモリー管理ユニット25のバイト・マスク発
生器260は、書込みアドレスと、参照のデータ長さと
を検査することによって書込み参照のバイト・マスクを
生成する。(4)一次キャッシュ14書込み。一次キャ
ッシュ14はライトスルー・キャッシュである。従っ
て、書込みアドレスが、妥当にされた一次キャッシュ1
4タグ項目とマッチすれば、書込みは一次キャッシュ1
4に書き込まれるだけである。(5)この規則の一つの
例外は、一次キャッシュ14が強制データストリーム・
ヒット・モードに構成されているときである。このモー
ドでは、タグがマッチするかミスマッチするかに係わら
ず、データは常に一次キャッシュ14に書き込まれる。
(6)メモリー管理チェックを通った全ての書込み参照
はデータバス58を介してキャッシュコントローラユニ
ット26に転送される。Cボックスは、バックアップ・
キャッシュ15内の書込みを処理し、ライトバック・メ
モリー・サブシステムに関連するプロトコールを制御す
る。
【0184】書込みデータがEMラッチ74にラッチさ
れるとき、EMラッチ74に付随する4方バイト・バレ
ル・シフター263は、対応するアドレスの下位2ビッ
トに基づいて該データを回転させて適宜整合させる。こ
のデータ回転の結果として、データの全てのバイトが今
やメモリー・ロングワード境界に対して正しいバイト位
置にあることになる。
【0185】書込みデータがEMラッチ74から駆動さ
れるとき、メモリー・ロングワード・アドレスに対して
データが常に適切に整合する様に内示データバス264
はバレル・シフター263の出力によって駆動される。
データバス264はロングワード(32ビット)幅であ
るのに対して、バス58はカッドワード幅である。バス
58は、カッドワード一次キャッシュ14アクセス・サ
イズに起因してカッドワード幅である。カッドワード・
アクセス・サイズは、一次キャッシュ14フィル及び仮
想命令キャッシュ17フィルを容易にする。しかし、全
ての書込みについて、全ての書込みコマンドはロングワ
ード以下のデータを修正するので、精々バス58の半分
だけが一次キャッシュ14に書込みを行うために常に使
用される。書込み参照がS5−S6から伝播するとき、
バス264上のロングワード整合したデータは、該デー
タも一次キャッシュ14及びキャッシュコントローラユ
ニット26に対して整合したカッドワードであることを
保証するために、バス58の上側半分及び下側半分の両
方に転送される。該参照に対応するバイト・マスクは、
バス58のどのバイトが実際に一次キャッシュ14又は
バックアップ・キャッシュ15に書き込まれるかを制御
する。
【0186】書込み参照は、二つの別のメカニズムを通
じて形成される。第1に、宛先指定子書込みは、命令の
宛先指定子の解読時に命令ユニット22によって開始さ
れる書込みである。メモリーへの宛先指定子が解読され
るとき、命令ユニット22は、その宛先アドレスに対応
する参照パケットを発する。データは、実行ユニット2
3が後に該命令を実行するときに生成されるので、この
パケット内にはデータは存在しない。このパケットのコ
マンドフィールドは、宛先アドレス・コマンド(指定子
が書込みのアクセス種類を有するとき)又はD読み出し
修正コマンド(指定子が修正のアクセス種類を有すると
き)である。このコマンド・パケットのアドレスはTB
によって変換され、メモリー管理アクセス・チェックは
MMEユニット254によって行われ、対応するバイト
・マスクはユニット260によって生成される。物理的
アドレス、DL及びその他の修飾子ビットはPAキュー
65にロードされる。Dest −Addr コマンドがS5で
完了するとき、それは、実際の書込みデータ無しではそ
れ以上の処理が行われ得ないので、S6でNOPコマン
ドに変換される。実行ユニット23が、命令ユニット2
2宛先指定子に対応するオプコードを実行するとき、書
き込まれるべき対応するメモリーデータが生成される。
このデータは、Storeコマンドによってメモリー管理ユ
ニット25に送られる。Storeパケットはデータだけを
内蔵する。メモリー管理ユニット25がS5でStoreコ
マンドを実行するとき、対応するPAキュー65パケッ
トはS5パイプの中へ駆動される。EMラッチ内のデー
タは、バイト・ローテーター及び対応するPAキュー・
アドレスの下位2ビットを使って適切なロングワード整
合状態に回転させられ、その後にS5の中に駆動され
る。実際に、Dest −Addr 及びStoreコマンドは互い
に併合されて完全な物理的アドレス書込みオペレーショ
ンを形成する。この書込みオペレーションはS5/S6
パイプラインを通して伝播して、一次キャッシュ14
(該アドレスが一次キャッシュ14においてヒットする
ならば)及びメモリー・サブシステム内の書込みを行
う。
【0187】『明示的書込み』は、実行ユニット23に
よってのみ生成されるものである。即ち、宛先指定子を
解読する命令ユニット22から生じる書込みではなく
て、実行ユニット23によって明示的に開始されて完全
に生成される書込みである。明示的書込みの例は、MO
VC命令のときに行われる書込みである。この例では、
実行ユニット23は全ての書込みの仮想書込みアドレス
を生成すると共に、対応するデータを供給する。物理的
アドレス・キュー65は、明示的書込みの処理には決し
て係わらない。明示的書込みは、実行ユニット23によ
って発せられる書込みコマンドの形でメモリー管理ユニ
ット25に転送される。これらの書込みは、書込みパケ
ットがPAキュー65の内容とStoreデータとから形成
されるときと同様にしてS5及びS6で直接実行され
る。
【0188】I/Oスペースをアドレス指定する書込み
コマンドは、その物理的アドレスビット<31:29>
がセットされている。I/Oスペース・データが一次キ
ャッシュ14に決して記憶されないことを除いて、I/
Oスペース書込みは他の書込みと全く同様にしてメモリ
ー管理ユニット25により処理される。従って、I/O
スペース書込みは常に一次キャッシュ14においてミス
する。
【0189】上記した様に、バイト・マスク生成はメモ
リー管理ユニット25で行われる。メモリーはバイトア
ドレス指定可能であるので、全ての記憶装置は、該記憶
装置に利用可能にされたバイトの組全体を書かずに、デ
ータの中の指定されたバイトを選択的に書くことが出来
なければならない。書込み参照パケットのバイト・マス
ク・フィールドは、カッドワード一次キャッシュ14ア
クセス・サイズの中のどのバイトが書き込まれるかを指
定する。バイト・マスクは、バス243上のアドレスの
3個の下位ビットと、DLフィールドとしてコマンドバ
ス261上に含まれている参照のデータ長さとに基づい
て、メモリー管理ユニット25においてバイト・マスク
生成器260により生成される。バイト整合情報をI/
Oスペース読み出しでバス262においてキャッシュコ
ントローラユニット26に供給するためにバイト・マス
ク・データは読み出し及び書込みで生成される。
【0190】メモリー管理ユニット25は、実行ユニッ
ト23がデータをMDバス54へ、従って命令ユニット
22へ、転送する経路である。実行ユニット23で生成
された新しいPC値は、バス51及びLoad −PCコマ
ンドを介して送られ、この値はメモリー管理ユニット2
5を通してMDバス54へ伝播する。MDバスは、レジ
スターファイル41へ書き込む実行ユニット23への入
口であるが、実行ユニット23はMDバスには書込みを
行わない。一次キャッシュ(Pキャッシュ) 図18を参照すると、一次キャッシュ14は、命令スト
リーム及びデータストリーム・データについての、2方
セット連想、読み出し割り振り、非書込み割り振り(no
-write allocate)、ライトスルー、物理的アドレス・キ
ャッシュである。一次キャッシュ14は、読み出し及び
書込みの両方について1サイクル・アクセス及び1サイ
クル繰り返し速さを有する。一次キャッシュ14は、2
56個のヘキサワード・ブロックを記憶する8Kバイト
・データメモリーアレー268を包含していて、256
個のタグをタグ記憶装置269及び270に格納する。
データメモリーアレー268は、128行の2個のブロ
ック271及び272として構成されている。各ブロッ
クは256ビット幅であるので、1ヘキサワードのデー
タ(4カッドワード又は32バイト)を内蔵する。ブロ
ック当たりに4カッドワード・サブブロックがあり、各
サブブロックに妥当ビットが付随している。タグは20
ビット幅であり、バス243上の物理的アドレスのビッ
ト<31:12>に対応する。一次キャッシュ14の組
織が図18aに詳しく示されている。各インデックス
(インデックスは、メモリーアレー268の行である)
は、割り振りポインタAを内蔵すると共に2ブロックを
内蔵しており、ここで各ブロックは、20ビットのタ
グ、1ビットのタグ・パリティ、4個の妥当ビットVB
(各カッドワードに一つずつ)、256ビットのデー
タ、及び32ビットのデータパリティ、から成る。行デ
コーダ273は、バス243から一次キャッシュ14入
力アドレスのビット<5:11>を受け取って、該メモ
リーアレーの列ライン上に出力するために128インデ
ックス(行)の一つを選択し、列デコーダ275及び2
76は該アドレスのビット<3:4>に基づいて4から
1を選択する。よって、各サイクルにおいて、一次キャ
ッシュ14は該アレーからのヘキサワード出力から2個
のカッドワード記憶場所を選択し、その選択されたカッ
ドワードが入力/出力ライン277及び278上で利用
可能となる。タグ記憶装置269及び271からの2個
の20ビット・タグは、選択されたインデックスについ
てライン279及び280上に同時に出力されて、タグ
比較回路281及び282によってバス243上のアド
レスのビット<31:12>と比較される。妥当ビット
も読み出されてチェックされる;若しアドレス指定され
たブロックについて0であれば、ミスが信号される。若
しいずれかのタグがマッチを生成し、且つ妥当ビットが
セットされていれば、ヒットがライン283上で信号さ
れ、選択されたカッドワードがバス246で出力され
る。一次キャッシュ14ミスはカッドワード・フィルと
いう結果をもたらす;メモリー読み出しが生成されて、
カッドワードがバス246及びバス277又は278を
介してブロック271又は272に書き込まれるという
結果をもたらす。同時に、データはデータメモリーアレ
ーに書き込まれており、アドレスはライン279又は2
80を介してタグ記憶装置269又は270に書き込ま
れている。インヴァリデートがキャッシュコントローラ
ユニット26によって送られるとき、バックアップ・キ
ャッシュ15又はメモリー12への書込みが発生する
と、妥当ビットが該インデックスについてリセットされ
る。
【0191】一次キャッシュ14は、バックアップ・キ
ャッシュ15に関して常に干渉性のキャッシュでなけれ
ばならない。一次キャッシュ14は、常に、バックアッ
プ・キャッシュ15に記憶されるデータの厳密な部分集
合を内蔵していなければならない。若しキャッシュ干渉
性が維持されなければ、多重プロセッサ・システム構成
において一次キャッシュ14から『陳腐な』データを読
み出すことから、正しくなき計算シーケンスが行われる
結果となる可能性がある。
【0192】インヴァリデートは、一次キャッシュ14
をバックアップ・キャッシュ15と可干渉に保つメカニ
ズムであって、データがバックアップ・キャッシュ15
から変位させられるとき、又はバックアップ・キャッシ
ュ15データ自体が無効にされるときに発生する。キャ
ッシュコントローラユニット26は、バス59上のInv
alコマンドにより修飾され、キャッシュコントローラユ
ニット26ラッチ250にロードされたヘキサワード物
理的アドレスを指定することによってインヴァリデート
を開始する。Invalコマンドの実行は、指定されたヘキ
サワード・アドレスに対応するデータが一次キャッシュ
14において妥当でないことを保証する。Invalコマン
ドのヘキサワード・アドレスが、アドレス指定されたイ
ンデックス274内のタグ記憶装置269又は270内
のいずれかの一次キャッシュ14タグにマッチしなけれ
ば、何らの動作も起きない。若しヘキサワード・アドレ
スが該タグの一つとマッチすれば、このヘキサワードが
後続の一次キャッシュ14フィル・シーケンスによって
再び妥当にされるまで、このヘキサワードの後続の一次
キャッシュ14アクセスがミスすることを保証するため
に、4個の対応するサブブロック妥当ビットがクリアさ
れる。Invalが実行されるときに、同じヘキサワード・
アドレスへのキャッシュ・フィル・シーケンスが進行中
であるならば、更なるキャッシュ・フィルがこのキャッ
シュブロックについてデータをロードしたりデータを妥
当にすることを禁止するために、対応するミス・ラッチ
252又は253内のビットがセットされる。
【0193】読み出しアドレスにマッチする妥当にされ
たタグ・フィールドが無いために読み出しミスが発生し
たとき、割り振りビットAの値は、その読み出しミスに
対応するミスラッチ252又は253にラッチされる。
このラッチされた値は、後のフィル・シーケンスのとき
にバンク選択入力として使われる。各フィル動作が行わ
れるとき、該ミスラッチに記憶されている割り振り値の
逆数が、アドレス指定された一次キャッシュ14インデ
ックス274の割り振りビットAに書き込まれる。一次
キャッシュ14読み出し又は書込み動作のときに、割り
振りビットの値は、その直前に参照された反対のバンク
を指すようにセットされるが、その理由は、今はそれ
が、このインデックスについての新しい『最後に使われ
たものではない』バンク271又は272であるからで
ある。
【0194】このアルゴリズムの一つの例外は、インヴ
ァリデート中に発生する。インデックス内の指定のタグ
の妥当ビットをインヴァリデートがクリアするときに
は、どのバンクが最後に割り振られたかに係わらず該イ
ンヴァリデート時に使われるバンク選択を指す様に割り
振りビットをセットすることだけが意味をなす。そうす
ることによって、ちょうど無効にされたタグを割り振り
ビットが指すので該インデックス内の次の割り振られた
ブロックが妥当なタグを変位させないことが保証され
る。
【0195】一次キャッシュ14フィル動作は、命令ス
トリーム又はデータストリームのキャッシュ・フィル参
照により開始される。フィルは、特別の形の書込み動作
であり、下記の差異を例外として一次キャッシュ14書
込みと機能的に同一である: (1) アドレス指定された一次キャッシュ14インデ
ックス274内のバンク271又は272は、このアル
ゴリズムによって選択される。そのアドレス指定された
インデックス274内の妥当にされたタグ・フィールド
269又は270が該キャッシュ・フィル・アドレスと
マッチすれば、このタグに対応するブロックが該フィル
動作のために使われる。若しそうでなければ、対応する
割り振りビットAの値は、どのブロックが該フィルのた
めに使われるかを選択する。
【0196】(2) ブロックに対する第1フィル動作
は、対応するフィル・データの妥当ビットがセットされ
て他の3個がクリアされることとなる様に、選択された
バンクの4個の妥当ビットの全てを書かせる。後続の全
てのフィルは、対応するフィル・データの妥当ビットの
みをセットさせる。 (3)如何なるフィル動作も、フィル・アドレス・ビッ
ト<31:12>を、選択されたバンクのタグ・フィー
ルドに書き込ませる。タグ・パリティも同様にして書か
れる。
【0197】(4) フィル動作は、最初の読み出しミ
ス事象のときに対応するミス・ラッチ252又は253
によりラッチされた値の補数を割り振りビットAに書き
込ませる。 (5) フィル動作は、対応するバイト・マスク・フィ
ールドの全てのビットをセットさせる。よって、フィル
・データの8バイトの全てがフィル動作で常に一次キャ
ッシュ14アレーに書き込まれる。
【0198】一次キャッシュ14インヴァリデート動作
は、Inval参照によって開始され、若し該アドレスが、
アドレス指定されたインデックス274内のいずれのタ
ク・フィールドともマッチしなければ、一次キャッシュ
14によってNOPと解釈される。いずれかのタグでマ
ッチが検出されたならば、インヴァリデートがそのタグ
で発生する。この判定は、キャッシュ・ヒット動作につ
いての全ての基準を満たしたとき(一次キャッシュ14
ヒットは妥当ビットのファクターで該動作へのタグ・パ
リティを確認)ではなくてタグ・フィールド・ビットの
マッチのときにだけ行われる。インヴァリデートが発生
するべきとき、マッチしたタグの4個の妥当ビットには
0が書き込まれ、割り振りビットAには、現在のインヴ
ァリデート動作のときに使われるバンク選択の値が書き
込まれる。キャッシュコントローラユニット(Cボックス) 図19を参照すると、キャッシュコントローラユニット
26は、メモリー管理ユニット25、バックアップ・キ
ャッシュ15及びCPUバス20にインターフェースす
るためのデータ経路及びコントロールを含む。主として
メモリー管理ユニット25とバックアップ・キャッシュ
15とにインターフェースする図19の上側部分はキャ
ッシュコントローラであり、主としてCPUバス20に
インターフェースする該図の下側部分はバスインターフ
ェースユニットである。キャッシュコントローラユニッ
ト26データ経路は、数個のキュー及びラッチ、キャッ
シュコントロール部分内の内部アドレスバス288及び
内部データバス289、並びにバスインターフェースユ
ニット内の2個の内部アドレス290及び291及び内
部データバス292の周囲に組織されている。バックア
ップ・キャッシュ15のデータRMA15x及びタグR
AM15yへの独立のアクセスは、バス19内のライン
19a及び10b及びライン19c及び19dにより内
部アドレス及びデータバス288及び289から設けら
れている。メモリー管理ユニット25へのインターフェ
ースは、物理的アドレスバス57、データバス58、及
びインヴァリデート及びフィル・アドレス・バス59に
よる。
【0199】出力ラッチ296は、1項目の深さであ
り、バス58及び59でメモリー管理ユニット25に送
られるインヴァリデートにつていのフィル・データ又は
アドレスについてのアドレス及びデータの両方を保持す
る。2個のフィル・データ・パイプ297及び298
は、メモリー管理ユニット25に送られるパイプライン
・データのための64ビット・ラッチである。データ読
み出しラッチ299は、1項目の深さであり、物理的ア
ドレス・バス57でメモリー管理ユニット25から来る
データストリーム読み出し要求のアドレスを保持する。
命令読み出しラッチ300は、1項目の深さであり、物
理的アドレス・バス57を介してメモリー管理ユニット
25から来る命令ストリーム読み出し要求のアドレスを
保持する。書込みパッカー301は、1項目の深さであ
り、アドレス及びデータの両方を保持し、引き続くメモ
リー書込みを同じカッドワードに圧縮する。書込みキュ
ー60は、8項目の深さであり、データバス58及び物
理的アドレス・バス57を介して(書込みパッカー30
1を介して)メモリー管理ユニット25から来る書込み
要求についてのアドレス及びデータの両方を保持する。
フィルCAM302は、2項目の深さであり、メモリー
への読み出しを生じさせた読み出しミス及び書込みミス
についてのアドレスを保持する;一つは、待機中のメモ
リー要求を持っていない進行中のD−dread−lo
ckのアドレスを保持することが出来る。バス20側
で、入力キュー又はin−queue61は、10項目
の深さであり、8個に及ぶカッドワード・フィルとCP
Uバス20からの2個に及ぶキャッシュ干渉性トランザ
クションとについてのアドレス又はデータを保持する。
ライトバック・キュー63は、2項目の深さであり(2
56ビットのデータ・フィールドを伴う)、CPUバス
20上で駆動されるべきライトバック・アドレス及びデ
ータを保持する;このキューは、2個に及ぶヘキサワー
ド・ライトバックを保持する。ライトバック・キュー6
3は、カッドワード書込みディスオウン(quadwo
rd write−disowns)のためにも使われ
る。非ライトバック・キュー62は、アドレス及びデー
タについて2項目の深さであり、CPUバス20へ行く
全ての非書込みディスオウン・トランザクションを保持
する;これは、バックアップ・キャッシュ15がオフで
あるとき又はエラー遷移モード時に行われる読み出し、
I/Oスペース・トランザクション、及び通常書込みを
含む。これらのキューの中の或るものはアドレス及びデ
ータ項目を並列に内蔵し(アウト・ラッチ296、書込
みパッカー301、書込みキュー60、及びライトバッ
ク・キュー63及び非ライトバック・キュー62)、或
るものはデータだけを内蔵し(フィル・データ・パイプ
297及び298)、或るものはアドレスだけを内蔵す
る(データ読み出しラッチ299、命令読み出しラッチ
300及びフィルCAM302)。CPUバス20は多
重化されたバスであるので、例えばアドレス及びデータ
を非ライトバック・キュー62内の項目からバス20へ
ロードするのにバス20上で2サイクルを要する。ま
た、バス20は、バス288、289及び292のそれ
の3倍のサイクル時間で刻時される。
【0200】書込み要求については、書込みデータはキ
ャッシュコントローラユニット26にデータバス58か
ら書込みキュー60の中に入るのに対して、書込みアド
レスは物理的アドレス・バス57から入る;若しキャッ
シュ・ヒットがあれば、該データは、バス19を介し
て、バス288上のアドレスを使うバス289を介して
バックアップ・キャッシュ15のデータRAMに書き込
まれる。ブロックのライトバックが発生するとき、デー
タは、バス19及び289を介してデータRAMから読
み出され、インターフェース303及びバス291及び
292を介してライトバック・キュー63に転送され、
その後にCPUバス20上へ駆動される。読み出し要求
は物理的アドレス・バス57及びラッチ299及び30
0から入って内部アドレス・バス288を介してバス1
9経由でバックアップ・キャッシュ15に適用され、若
しヒットが発生すれば、結果として得られたデータはバ
ス19及びバス289を介して出力ラッチ296内のデ
ータ・ラッチ304に送られ、そこから該データはデー
タ・バス58を介してメモリー管理ユニット25に送ら
れる。読み出しデータがメモリー12から戻るとき、そ
れは、入力キュー61を通してキャッシュコントローラ
ユニット26に入り、バス292上へ駆動され、その
後、インターフェース303を通して内部データ・バス
289上へ、そしてバックアップ・キャッシュ15のデ
ータRAM内へ、且つ前と同じく出力ラッチ296及び
バス58を介してメモリー管理ユニット25へ入る。
【0201】メモリー管理ユニット25からキャッシュ
コントローラユニット26に入る読み出し又は書込みが
バックアップ・キャッシュ15ヒットを生じさせなかっ
た場合には、ミス・アドレスはフィルCAM302にロ
ードされるが、これは未決の読み出し及び書込みミスの
アドレスを保持する;該アドレスはインターフェース3
03を通してバス291を介して非書込みキュー62に
駆動される;それはキュー62に入って、CPUバス2
0上に駆動されるのを待つ。多数のサイクル後に、該デ
ータはCPUバス20で戻り(メモリー12にアクセス
した後)、入力キュー61に入る。種々のパイプライン
内で、バックアップ・キャッシュ15ミス後にCPU1
0は機能停止サイクルの実行を開始している。戻るデー
タを伴っているのはCPUバス20内の制御バス上の制
御ビットであり、これは、バックアップ・キャッシュ1
5のデータRAM及びタグRAMへの書込みに使用され
るためにフィルCAM302内の2個のアドレス項目の
中のいずれかがバス288上へ駆動されるべきかを語
る。
【0202】キャッシュ干渉性トランザクションがCP
Uバス20上に現れるとき、アドレスが入力キュー61
を通して入ってきてバス290及びインターフェース3
03を通してバス288へ駆動され、そこから、それは
バス19を介してバックアップ・キャッシュ15のタグ
RAMに適用される。それがヒットすると、妥当ビット
はクリアされ、該アドレスは出力ラッチ296内のアド
レス・ラッチ305を通して一次キャッシュ14インヴ
ァリデートのためにメモリー管理ユニット25へ送られ
る(ここで、バックアップ・キャッシュ15データのど
のブロックが一次キャッシュ14内にあるかによって、
それはヒットするかも知れないしヒットしないかも知れ
ない)。必要ならば、妥当な且つ/又は所有されている
ビットはバックアップ・キャッシュ15項目においてク
リアされる。インヴァリデートは常にヘキサワードであ
るので、アドレスビット<31:5>だけがインヴァリ
デートのために使われる。
【0203】このキャッシュ干渉性トランザクションに
起因してライトバックが必要であれば、データが読み出
されることが出来る様にインデックスがバックアップ・
キャッシュ15のデータRAMへ駆動される。該アドレ
スは、その後、ライトバックのためにライトバックキュ
ー62へ駆動される;短時間後にデータ・バス上のライ
トバック・データが続く。
【0204】メモリー管理ユニット25からの5ビット
・コマンド・バス262は、キャッシュコントローラユ
ニット26の内部バス作業を定義するコントローラ30
6に適用される。このコマンド・バスは、各々のメモリ
ー要求が次の8種類、即ち、命令ストリーム読み出し、
データストリーム読み出し、修正を伴うデータストリー
ム読み出し、インターロックされたデータストリーム読
み出し、通常書込み、ロックを解除する書込み、又は内
部又は外部プロセッサ・レジスターの読み出し又は書込
み、の一つであるか否かを示す。これらのコマンドは、
命令又はデータ読み出しラッチ299及び300、又は
書込みパッカー301及び書込みキュー60に影響を与
える。同様に、コマンド・バス262は、メモリー管理
ユニット25に戻って、該サイクル中に送られているデ
ータがデータストリーム・キャッシュ・フィルである
か、命令ストリーム・キャッシュ・フィルであるか、一
次キャッシュ14内のヘキサワード・ブロックのインヴ
ァリデートであるか、或いはNOPであるかを示す。こ
れらのコマンド・フィールドは、例えば書込みキュー内
のデータも伴っている。 浮動小数点実行装置(F−ボックス) 図20を参照する。浮動小数点装置27は主要CPUパ
イプラインの三つの異なるセグメントとの対話形4ステ
ージパイプライン浮動小数点処理機構であり、S2中の
マイクロシーケンサ42やS3及びS4中の実行装置2
3である。浮動小数点装置27はCPU10の残りを半
自動的に実行し幾つかの演算をサポートしている。はじ
めに、命令セットおける浮動小数点の命令やデータサポ
ートをしている、すなわち浮動小数点タイプ(様々なデ
ータタイプを含む)の浮動小数点の命令は命令装置22
で認識され実行装置ではなく浮動小数点装置27に送ら
れる。次に長語整数乗算命令が命令装置より効果的に浮
動小数点装置で実行される、ゆえに命令装置22がこれ
らの命令を認識するとその命令やデータは小数点装置2
7に送られる。浮動小数点装置27は除算命令を除き逐
次制御され、浮動小数点装置27はサイクル毎に新しい
単精度浮動小数点命令を開始でき、また二サイクル毎に
新しい倍精度浮動小数点命令か整数乗算命令を開始でき
る。実行装置23は二つの入力オペランドバス47と4
8上でマシンサイクル毎に浮動小数点装置27に二つの
32ビットオペランドか一つの64ビットオペランドを
供給できる。浮動小数点装置27は結果オペランドを3
2ビット結果バス49上の実行装置に送る。
【0205】図20で、32ビットデータバス47と4
8はインタフェースセクション310に適用されマイク
ロ命令バスと命令文脈からの制御ビットは入力311に
適用される。このインタフェースセクション310は実
行装置23とのインタフェースに用いられるプロトコル
を監視する機能がある。このプロトコルは線311経由
の演算コードや制御と線47と48経由のオペランドを
受け取り、また付随する状態を伴うバス49経由の結果
を出力するというシーケンスを含む。演算コードとオペ
ランドは線313、314、315、そして316によ
ってインタフェースセクション310からステージ1装
置312(除算を除く全ての演算で)に転送される。す
なわち除算装置317は除法を除く全ての演算にバイパ
スされる。線313は浮動小数点形式データの少数デー
タを、線313は指数部データ、線315は符号を、そ
して線316は制御情報をそれぞれ転送する。除算装置
317はインタフェース313からの入力を受け取りス
テージ1装置317に送り、除法演算を支援することだ
けに用いられ、それゆえ冗長形式の商と剰余を計算す
る。
【0206】ステージ1装置は除算装置317か、線3
13、314、315、そして316経由のインタフェ
ースセクション310のいずれかからの入力を受け取
り、その出力313a、314a、315a、そして3
16aをステージ2セクション318に送る。ステージ
1はオペランドの指数の間の相違を決め、小数フィール
ドを減算し、乗数の再コード化を行い、その被乗数を三
度形成し、そして乗数配列の最初の二つの行への入力を
選択する。
【0207】ステージ2装置318はステージ1装置3
12からの入力を受け取り、その出力を線313b、3
14b、315b、そして316b経路のステージ3装
置319に送る。ステージ2装置の機能は整列のための
右シフトと、オペランドの小数のフィールドの乗算と、
中間小数結果の0と先行する1の検出である。ステージ
3装置319はステージ2装置318からの入力の殆ど
を受け取り、その出力を線313c、314c、315
c、そして316c経由でステージ4装置320に送る
か暫定的にその出力を線313d、314d、315
d、そして316dを経由して出力インタフェースセク
ション321に送る。ステージ3装置319の一次機能
は左シフト(正規化)で整列されたオペランドか冗長な
乗数配列出力の小数フィールドへの加算である。ステー
ジ3装置319はまた加算、減算、そして乗算浮動小数
点命令の小数の最下位ビットの「ミニラウンド」演算も
可能で、ミニラウンドが桁上げを生じさせないか可能な
例外がなければ、ステージ4装置320をバイパスし待
ち時間サイクルを節約し、ステージ3は結果を直接出力
セクション321に送る。
【0208】ステージ4装置320はステージ3装置3
19からの入力を受け取り、その出力を出力インタフェ
ースセクション321に送る。このステージ4は丸めや
例外発見(オーバーフロー、アンダーフロー等)のよう
な終値演算を行い条件コードを決定する。浮動小数点装
置27はバス47、48そして311を介しての命令演
算コードやオペランドの受渡しやバス49や制御線32
2によって送られた結果を記憶することを実行装置23
に依存している。然し、浮動小数点装置27はその命令
を実行中の実行装置23からの支援は必要としない。浮
動小数点のマクロ命令は他のマクロ命令と同様に命令装
置22によってデコードされ、マクロシーケンサ24は
ソースオペランドをS4ステージの初期の浮動小数点装
置27に転送しS3パイプラインステージの間にフェッ
チされる実行フローにディスパッチされる。オペランド
が全て送られると浮動小数点装置27はマクロ命令を実
行する。それが完了すると浮動小数点装置27は結果を
実行装置23に再転送することを要求する。実行装置の
現退去キューエントリが浮動小数点装置27の結果を表
示し浮動小数点装置27は線322を介して結果転送を
要求し、その結果がパイプラインS4の終わり頃にバス
49を介して実行装置23に転送されマクロ命令がS5
に退去する。
【0209】浮動小数点装置27の入力インタフェース
310は一つの命令と三つのセグメント演算コートパイ
プラインのデータ全てを保持できる二つの入力オペラン
ドレジスタを有している。浮動小数点装置27の入力が
新しい演算コードやオペランドを取り扱えない場合は、
入力ストール信号が浮動小数点装置27によって実行装
置に表明され、次の浮動小数点装置27のデータ入力演
算がS3パイプステージの終わりのCPUパイプライン
を止めさせる。
【0210】浮動小数点装置27の出力インタフェース
321は一つの形式mux (システム多重化)と二つの結
果キューを有しており、それらはデータキュー324と
制御キュー325である。形式mux は結果をVAX記憶
形式に変換する。キュー324と325は実行装置23
への結果転送が止まる度に結果を保持し情報を制御する
ために用いられる。
【0211】浮動小数点装置27が入力ストール信号を
否定することによって新しい情報を受け取れることを表
示する度に、実行装置23が次の演算コードかオペラン
ド転送を開始する。浮動小数点27は9ビット演算コー
ドバス(制御線311の部分)上のマイクロシーケンサ
(CPUパイプラインS2)からの命令を受け取る。ス
テージ3装置319は一次的に左シフト入力か加算器3
26の二つの追加入力を実行する。このステージは制御
セクションや小数や桁や符号のデータ経路の位置を含
む。更に、このステージ3装置は特定の命令のためのス
テージ4装置の丸め演算をバイパスすることもできる。
ステージ3の小数経路位置は左シフタ327、加算器3
26、そしてミニラウンディングインクリメンター32
8からなる。左シフト327は減算のような演算に用い
られる。加算器326は入力を出力329に渡すか(0
を加算して)、二つのベクトルを加算する−例えば、加
算減算のための二つの入力オペランド(正しく配列され
ている)か乗法の合計や桁上げベクトル−かといった他
のあらゆる演算に用いられる。ミニラウンディングイン
クリメンター328はステージ4バイパス演算の間に小
数の結果を丸めるために用いられる。
【0212】一定の命令や状態のために、ステージ3装
置319は出力インタフェース321に直接結果を送る
ことができ、ステージ4バイパスとして参照されステー
ジ4の結果が得られるよりも1全サイクル早く結果が得
られることによって浮動小数点装置27の待ち時間を改
善する。ステージ4をバイパスするために、ステージ3
はステージ4が同様な環境下で通常行う必要な演算を行
わねばならない。これには適切な指数を与えることや結
果と関連した条件コードや状態情報の生成と同様に小数
の丸めを含む。このバイパスは加算、減算、乗算浮動小
数点命令だけに試みられる。ステージ3はインクリメン
ター328によって丸め演算が行われるが、最下位のビ
ットだけに従って行われる。すなわちタイミング条件に
よって、これのインクリメンター328は幅がステージ
4でなされた全幅丸めにおける類似の丸め要素よりも狭
い。インクリメンター328は大きさが制限されている
ので、全小数既知数がステージ3によって正しく丸めら
れるわけではない。バイパスされる命令用のインクリメ
ンター328が実行しなければミニラウンドは成功す
る。ミニラウンドが失敗すると出力329を介する未修
正の小数とステージ4への線313cとバイパスがアボ
ートされる。
【0213】ステージ3装置319とステージ4装置3
20は結果を出力インタフェース321に送るためコモ
ンバスを共用する。ステージ4が有効なデータを有して
いればパイ3の間に線313d、314d、315dそ
して316dをドライブする。ステージ3が首尾よく命
令をバイパスできステージ4が有効なデータを有してい
なければステージ3はパイ3の間に線313d、314
d、315d、そして316dをドライブする。ステー
ジ3がバイパス可能であると検出すれば制御線316d
の一つにバイパス要求を表明して出力インタフェース3
21に信号を送る。以下の状態はステージ4バイパス要
求を生成するために処理されなければならない、すなわ
ちバイパス可能信号が表明されなければならない;命令
は加算、減算、あるいは乗算でなければならない;ステ
ージ3入力データが有効でなければならない;結果は先
のサイクルでステージ4に送られなければならない;デ
ータに関して失敗があってはならない。ステージ4バイ
パスをアボートするために、バイパスアボート信号がパ
イ2の間に表明されなければならない。二つの状態の各
々がバイパス要求が発行されたものとしてステージ4バ
イパスをアボートする;ミニラウンド障害はその最上位
のビット位置で桁上げが生じたインクリメンター328
を意味する;あるいは指数桁あふれか指数下位桁あふれ
がステージ3の指数セクションの指数結果で検出され
る。
【0214】たいていの命令用浮動小数点装置27のパ
イプラインの最終のステージをバイパスできるのでかな
り性能を向上させることができる。分析結果によれば、
浮動小数点装置27によって実行された命令の大多数が
バイパス演算の要件を満足させ、平均実行時間は1サイ
クルだけ減少される。 内部処理レジスタ 前述の通りCPU10の各々の構成要素は通例の実施態
様にあるような一定の内部処理レジスタを有している。
例えば、実行装置23はPSLすなわち処理状態ラッチ
や他のものを含み、メモリ管理装置25は浮動小数点装
置27やキャッシュ制御装置26等が行うような、状態
や制御や命令を保持する処理レジスタを有している。こ
れらのレジスタは256以下であり、8ビットのアドレ
スがこれらのレジスタをアドレス指定するために用いら
れる。8ビットアドレスは制御ROM43からのマイク
ロコードによって生成される。CPU10のチップ内部
では処理レジスタのアドレスの内部アドレスバスの8ビ
ット部分に継続され、制御線は例えば現基準がメモリ基
準や入出力基準というよりも処理レジスタに対しての基
準として指定するために送られる。処理レジスタの幾つ
かはオフチップであるが、バス20によってアクセスさ
れなければならない。バス20はメモリマップ入出力を
用い一般にどの特別なトランザクションがバス上に送ら
れるかを示す余分の制御線の最大を有している。こうし
て、処理レジスタ信号線をバス20に加えないように外
部処理レジスタにメモリマップアクセスさせないよう
に、内部8ビットアドレス(処理レジスタアクセスを示
すその制御信号に加えて)は外部処理レジスタを指定す
るためにCボックスコントローラー306で翻訳され例
えばバス20への出力アドレスの<31:30>に対す
る加算ビットによって全幅アドレスに送られる。外部ア
ドレスはマイクロコードで生成されたような内部下位8
ビットアドレスの組合せであり、加算された上位のビッ
トに加えてバス20上に処理レジスタがアクセスされる
ように指定する。 CPUバス CPUバスは中央集中型アービトレーションを伴うペン
ドされた同期バスである。「ペンドされた」という語は
他のメモリ要求がバス11に送られる前に、あるメモリ
要求が実行されるまでは常時待機するというよりも幾つ
かのトランザクションが所定の時間で処理可能という意
味である。CPU10のキャッシュ制御装置26はメモ
リ読取要求を送り、メモリ12の前の幾つかのバスサイ
クルでこの要求に応じてデータを返送し、他のメモリ要
求はバス20に送られる。バス20のコマンドバス位置
のIDフィールドはデータがバス20に送られるとどの
ノードがそのデータを要求するかを指定するので、要求
ノードはそのデータのみを受け取ることができる。図2
1に三サイクル中のバス20の演算のタイミング図を示
す。これらの三サイクルは書き込みシーケンスに付随さ
れる空サイクル0であり、サイクル2の書き込みデータ
に付随される書き込みアドレスはサイクル1で送られ
る。図21aは64ビットデータアドレスバス上のデー
タあるいはアドレスを示す。図21bから図21eはア
ービトレーションシーケンスを示す。
【0215】図21bに示すように、サイクル0でCP
U10はこのサイクルの低いP2からP4へ送られる要
求線によって書き込み要求を表明する。図21dに示す
ように、バスインターフェース21のアービタはサイク
ル0のP2でCPU許可信号開始を表明し、図21cに
見られるようにCPU10がCPU保持線を表明するの
でこの線は保持(表明)される。保持信号は入力13a
か13bのような他のノードがある要求を表明してもC
PU10がバス制御を保持することを保証する。保持信
号は多重サイクル転送用であるが、ノードは連続的なサ
イクルのためにバス制御を保持しなければならない。C
PUがサイクル1のP4の終わりで保持線を解放した
後、インタフェース装置21のアービタは許可線をサイ
クル2のCPUに解放することができる。サイクル1の
CPUで送られる書き込みアドレスをパリティエラーな
しで受け取ったあとに肯定応答線はバスインタフェース
21によってそのサイクルのCPU10に表明される。
図21には示さないが、サイクル2の書き込みデータが
パリティエラーなしで受け取られた場合にサイクル3の
バスインタフェース21によって表明される肯定応答線
もある。送られるるデータのそのサイクルでパリティエ
ラーが検出されなければ、肯定反応が表明されなければ
ならない。
【0216】図22について述べる。図21aに示すよ
うにバス20は代わりのサイクルのアドレスやデータを
備える64ビットの多重化されたアドレスバス線20a
に加えて多数の線からなる。バス20(CPU10、入
力13a、入力13b、そしてインタフェースチップ2
1)上のノードによって共用された線は、アドレスデー
タバス20a、所定のサイクル(書き込み、命令ストリ
ーム読み込み、データストリーム読み込み等)中の現バ
ストランザクションを指定する4ビットコマンドバス2
0d、アドレス及び復帰データサイクル(各コマンダー
とも際立った二つの読込トランザクションを有する)中
のバスコマンダーの識別を含む3ビットIDバス20
c、3ビットパリティーバス20d、そして肯定応答線
20eを含む。コマンドバス20のコマンドのコード化
とこれらのトランザクションの定義を全て以下の表Aに
掲げる。CPUは線20f上のクロック発振器30から
の4フェーズバスクロック(図3)も装備している。
【0217】バス20中のこれらの共用線に加えて、3
つの能動ノードであるCPU10、入出力13a、そし
て入出力131bの各々は、前述のようにメモリインタ
フェースチップ21のアービタと関連する要求、保持、
そして許可線20g、20h、そして20iを有してい
る。更に例えばCPU10がキャッシュコーヘランシー
トランザクションとして取り扱うバス20上の新しいト
ランザクションを抑制するためにCPU10によって表
明される抑制線20jによって新しい機能が与えられ
る。二つのエントリキャッシュコヒーレンシーキュー6
1があふれそうなときにこれを行う。そのサイクルの
間、CPU10が抑制線20jを表明するとCPU10
は新しいトランザクションを受け取るが次のサイクルで
開始するトランザクションは抑制される(どのノードも
そのバスの許可コマンドではない)。抑制線20jが表
明されている間、充填と書き込みバックだけがCPU1
0以外のノードから実行される。CPU10は全トラン
ザクションをバス20上におき続けることができる(W
Bオンリー線20kが表明されていない限り)。インキ
ュー61が完全でキャッシュ制御装置26内で最優先な
ので、CPU10はその抑制線10jが表明されている
間キャッシュコヒーレンシートランザクションに殆どの
場合働きかけている、従ってCPU10はバス20に書
き込みディスオウンを発行する。しかしCPUはその抑
制線20jが表明されている間どのようなタイプのトラ
ンザクションも発行できる。入出力ノード12aと13
bは同様な抑制線機能を有している。
【0218】書き込みバックオンリーすなわちWBオン
リー線20kはアービタ325で表明されていれば(例
えばCPU10)に向かうノードがキャッシュがオフさ
れると書き込みアンロックによる書き込みディスオウン
を含む書き込みディスオウンコマンドだけを発行する。
さもなければ、CPU10は如何なる新しい要求も発行
しない。WBオンリー線20kがCPU10に表明され
ているサイクルの間、システムはCPU10からの一つ
以上の非書き込みバックコマンドを受け取る用意をしな
ければならない。WBオンリーのの表明に付随するサイ
クルで開始すると、CPU10は書き込みバックコマン
ドだけを発行する。図19のキャッシュ制御装置26の
分離書き込みバック及び非書き込みバックキュー63と
62は並べられたトランザクションを分離させ、WBオ
ンリー線20kが表明されると書き込みバックキュー6
2は必要に応じて空にでき、システムの他のノードはメ
モリ12で利用できる交信されたデータを持ちつづけ
る。どのノードがその抑制線20jを表明しても、書き
込みバックや充填以外はバス20に送られず、次にサイ
クルが開始する。例えば、CPU10がその抑制線20
jを表明するとアービタ325は、WBオンリーを入出
力13aと入出力13bの両方に表明することによって
これが達成でき、これらのノードは充填と書き込みバッ
クを除くバスを要求しない。こうして、CPU10によ
る抑制の表明によってアービタ325がWBオンリーを
他の二つのノード13aと13bに表明することにな
る。あるいは、入出力13aによる抑制の表明によって
アービタ325がWBオンリーをCPU10と入出力1
3bに表明することになる。保持ライン20hは抑制機
能を無効にする。
【0219】アービタ325によって実行されるルール
は次の通りである:(1)どのノードもどのサイクル中
にでもその抑制線を表明することができる;(2)ノー
ドの許可線20iはノードがバス20をドライブするま
えに表明されなければならない;(3)バス20のドラ
イバは現サイクルのバスを許可していればその保持線2
0hだけを表明できる;(4)ノードはバス20を許可
され、保持を表明していれば、次のサイクルでバス20
を許可されることが保証される;(5)保持線20hは
二つの場合に用いられる、書き込みデータサイクルのバ
スを保持することと、連続した全サイクルを送ることで
ある;(6)サイクルが書き込みアドレスサイクルと隣
接しなければならないので、保持は書き込みのデータサ
イクルのバスを保持するために用いられなければならな
い;(7)アービトレーションフェアネスが維持しない
と思われるので保持は新しいトランザクションのために
バス20を維持するために用いられなければならない;
(8)ノードがバス20を要求しバスを許可されると有
効なコマンドで許可されたサイクル中にバスをドライブ
しなければならない−NOP(ノーオペレーション)は
有効なコマンドである−要求していなくてもバスを許可
される場合はCPU10はこれを受け取りさらに進みN
OP(ノーオペレーション)をドライブする;(9)読
み込みを発行するどのノードも抑制され遅延させられる
につれ類似の充填が受入可能でなければならない;(1
0)ノードのWBオンリー線20kが表明されると、そ
れはNOP(ノーオペレーション)、Read Data Return
(リードデータリターン)、Write Disown(ライトディ
スオウン)、そしてここで適切でない他の状況とともに
バス20をドライブする;(11)ノードがその抑制線
20jを表明すると、アービタ325は次のサイクルの
一つを除くどのノードに対してもバスを許可してはなら
ない−同時にアービタは適切なWBオンリーラインを表
明しなければならない(次のサイクルで、アービタは正
常にバスを許可しなければならない);(12)保持の
ルールは抑制のルールを無効にする;(13)バス20
はどのサイクルの間もアクティブにドライブされなけれ
ばならない。
【0220】バス20、ビット<63:0>は情報転送
に用いられる。バス20aのこのフィールド<63:0
>はアドレスとデータ情報の間の多重化に用いられる。
データサイクルでバス20aの線<63:0>は読み込
み及び書き込みデータの64ビットを表す。アドレスサ
イクルでバス20aの線<63:0>は、ビット<3
1:0>のアドレス、ビット<55:40>のバイトイ
ネーブル、そしてビット<63:62>の情報長さを示
す。表Aに定義されているように様々なバスサイクルが
ある。データサイクルの4タイプとしては、Write Data
(ライトデータ)、Bad Write Data(バッドライトデー
タ)、Read Data Return(リードデータリターン)、そ
してRead Data Error (リードデータエラー)がある。
書き込みデータサイクル中にコマンダー(例えばCPU
10のキャッシュ制御装置26)ははじめにアドレスサ
イクルをIDバス20cのIDを含むバス20にドライ
ブし、データを次のサイクルで再度IDをともなってバ
ス20aにドライブする。バス線20a上のデータの全
64ビットは6語書き込み用の4データサイクルの各々
の間に書き込まれ、8語用と4語用のためには、トラン
ザクションを開始するアドレスサイクルの間に表明され
るバイトイネーブルビットと一致して書き込まれる。Re
ad Data ReturnとRead Data Error サイクルの間にレス
ポンダーは線20cを起点のコマンダー(すなわちその
読み込みを始めたCPUのようなノード)のIDにドラ
イブする。
【0221】バス20のトランザクションを開始するた
めにはバス20a上のアドレスサイクルはコマンダー
(すなわちCPU10のような起点ノード)が用いられ
る。アドレスサイクルではアドレスはバスの下位の長語
<31:0>にドライブされ、バイトイネーブルとトラ
ンザクションの長さは上位長語にドライブされバス20
によってサポートされるアドレス空間はメモリ空間と入
出力空間に分類される。アドレスサイクルビットの<3
1:0>の下位の32ビットはバス20の読み取りか書
き込みトランザクションのアドレスを定義する。バス2
0は4ギガバイト(232バイト)アドレス空間をサポー
トする。このアドレス(線<31:29>に相当する)
最上位のビットは512メガバイド入出力空間(<3
1:29>=111)か3.5キガバイドメモリ空間(<
31:29>=000..110)を選択する。入出力
領域のアドレス空間部は更にCPU10ノードと入出力
ノード13aと13bの分割アドレス空間を収容できる
ように定義される。アドレスビット<31:0>は全て
入出力空間へのアドレスで有効なビットである。バス2
0上の長さフィールド<63:62>が入出力空間の読
み込みと書き込み用の4語を常に指定しても読み取られ
るか書き込まれるデータの実際の量は4語以下である。
バイトイネーブルフィールド<55:40>は要求され
たバイドだけを読み込むか書き込むために用いられる。
バイトイネーブルフィールドが1バイト読み込みか書き
込みを表示すれば、アドレスの全ビットは有効である。
アドレスの下位ビットはバイトイネーブルフィールドを
考慮すれば時に冗長であるが、バス20a上に提供され
入出力アダプタがバイトイネーブルフィールドからのア
ドレスを低減する必要はない。
【0222】全ての読み出しデータは、4倍ワード(ア
ドレスのビット<3>)までのアドレス中に上位のビッ
トを持っている。フイル(6倍ワード長)が順序不定の
4倍ワードでリターンされても、メモリ12が、要求さ
れた4倍ワードを最初にリターンすれば性能上の利点が
ある。バス20bで、表Aに揚げたような4個の「リー
ドデータリターン」コマンドのうちの一つを使って、バ
ス20プロトコールが各4倍ワードを識別することで、
リターン順序に関係なく、4倍ワードは、キャッシュコ
ントローラユニットによってバックアップキャッシュ1
5の正しい記憶位置に配置される。CPU10による4
倍ワード・8倍ワード・6倍ワードの書き込みデータ
は、いつも、最下位にアドレスされた4倍ワードから最
高位のものへという順序で並べられバス20へドライブ
されることになる。
【0223】アドレスサイクル中、「バイトイネーブ
ル」フィールドはバス20aのビット<55:40>に
位置付けられている。「バイトイネーブル」フィールド
は、4倍ワード長の「オウンリード」・「Iストリーム
リード」・「Dストリームリード」、8倍ワード長の
「ライト」・「ライトディスオウン」にバイトレベル可
能情報を提供するために使われる。バイトイネーブルを
用いるこの種のトランザクションのうちCPU10が生
成するものは、I/O空間への4倍ワードの「Iストリ
ームリード」と「Dストリームリード」、I/O空間へ
の4倍ワードの「ライト」、メモリ空間への4倍ワード
の「ライト」と「ライトディスオウン」だけである。
【0224】バス20aでのアドレスサイクルのビット
<63:62>にある長さフィールドは、現トランザク
ション即ち6倍ワード・4倍ワード・8倍ワード(8倍
ワードは代表的な実施例では使われていない)のために
読み出しまたは書き込みされるデータ量を示すために使
われる。 表A CPUバスコマンドのコードおよび定義 コマンド 略号 バス 種類 ファンクションフィールド トランザクション 0000 NOP No Operation Nop ノーオペレーション 0010 WRITE Write Addr 4進または8進の場合バイト イネーブルでメモリに書き込 み。 0011 WDISOWN Write Disown Addr メモリ書き込み;キャシュが ブロックをディスオウンしオ ーナーシップをメモリへもど す。 0100 IREAD Instruction Stream Addr インストラクションストリー Read ムを読む。 0101 DREAD Data Stream Read Addr データストリーム読み込み( オーナシップなしで) 0110 OREAD D-Stream Read Addr キャッシュのオーナシップを Ownership 要求してデータストリームを 読む。 1001 RDE Read Data Error Data エラーの場合Read Date Re- turnのかわりに使用 1010 WDATA Write Data Cycle Data Write datas を移送中 1011 BADWDATA Bad Write Data Data 同 上 1100 RDR0 Read Data0 Return Data 6語のQW0に応じてRead (fill) dataをもどし中 1101 RDR1 Read Data1 Return Data 6語のQW1に応じてRead (fill) dataをもどし中 1110 RDR2 Read Data2 Return Data 6語のQW2に応じてRead (fill) dataをもどし中 1111 RDR3 Read Data3 Return Data 6語のQW3に応じてRead (fill) dataをもどし中 表Aにあるように、バス20bに現われる「バッドライ
トデータ」コマンドは、6倍ワード書き戻し実行中に、
書き込みデータのうち一つの不良4ワードをCPU10
に識別させるものである。バックアップキャッシュ15
から読み出されるデータは、書き戻しキュー62を経由
してバス20へ向う途中でキャッシュコントローラユニ
ット26によって検査される。もしその6倍ワードに不
良パリティを示す4倍ワードがあると、キャッシュコン
トローラユニット26は、その4倍ワードをバス20
へ、バス20b上のコマンド「バッドライトデータ」と
ともに送る。その場合、メモリ12は、3個の良4倍ワ
ードと1個の不良4倍ワードを有する6倍ワードの書き
込みとして受け取る。そうしないと、書き込みブロック
は6倍ワードであるため、メモリ12内でその6倍ワー
ド全体が無効になり、他のCPUにとって利用不能にな
ってしまう。もちろん、「バッドライトデータ」ととも
に送られた不良4倍ワードが破局的であるかそれとも対
処可能であるかを確かめるために、オペレーティングシ
ステムによってエラー回復アルゴリズムが実行されなけ
ればならない。
【0225】これまで述べたように、バス20は、64
ビットのアドレス兼データ依存型多重バスであり、イン
ターフェイスチップ21によってなる集中アービトレー
ションを備え、CPU10と同期する。複数のトランザ
クションが並行して処理されているときもある。という
のも一回の「リード」によってメモリ12からリードリ
ターンデータを得るために数サイクルかかり、そのあい
だに他のトランザクションが間に行なわれることもある
からである。アービトレーションとデータの転送は、バ
ス20上で同時に(並行して)起きる。サポートされる
ノードは4個ある。即ち、CPU10・システムメモリ
(バス11とインターフェイスチップ21を経由)・2
個のI/Oノード13aと13bである。64ビットの
バス20a上で、データサイクル(64ビットデータ)
は、32ビットアドレスさらにバイトマスクとデータ長
フィールドを含むアドレスサイクルと交互に入れ替わ
る。コマンド及びアービトレーション並行バスは、コマ
ンドをライン20bに、どのノードが送信しているかを
明確にする識別子フィールドをライン20cに、「Ack
〕をライン20eに備える。各ノードをアービター3
25に接続するために個別要求・保留・承諾・抑制・書
き戻し専用のラインが設けられている。 エラー遷移モード CPU10のバックアップキャッシュ15は、いわゆる
書き戻しキャッシュであるから、図1に示すシステム全
体で、あるデータブロックの唯一の有効コピーを持って
いることがある。バックアップキャッシュ15(タグ記
憶機構かつデータ記憶機構)はECCで保護されてい
る。キャッシュ15データRAMまたはタグRAMにデ
ータが書き込まれると、チェックビットが記憶される。
そして、図19のECCチェック回路330と331を
使って、キャッシュ15が読まれるときにデータはこの
チェックビットに照らして検査される。ECCチェック
回路によってエラーが検出されると、Cボックスコント
ローラ306がエラー遷移モードを入力する。ここで単
純にバックアップキャッシュ15を無効にする訳にはい
かない。なぜなら、バックアップキャッシュ15に記憶
されているデータを他のシステムノード28が必要とす
るかもしれないからである。このエラー遷移モードで
は、診断のためにデータは可能なかぎりバックアップキ
ャッシュ15に保存されるが、処理動作は継続される。
その目的は、バックアップキャッシュ15がシステム内
で唯一のコピーを持っているデータを、性能を不必要に
劣化されない程度に可能なかぎり速くメモリ12に戻す
ことにある。
【0226】バックアップキャッシュ15に所有されな
いブロック(6倍ワード)に関しては、メモリ管理ユニ
ット25からキャッシュコントローラユニット26が受
け取った参照は、キャッシュヒットがあったとしても、
バックアップキャッシュ15によって実行されずに、メ
モリ12へ送られる。バックアップキャッシュ15が持
っているブロックに関しては、バックアップキャッシュ
15内でヒットするCPU10の書き込み操作のため
に、そのブロックはバックアップキャッシュ15からメ
モリ12に書き戻される。また、書き込み操作も、バッ
クアップキャッシュ15に書き込むのではなく、メモリ
12に転送される。このブロックのためにバックアップ
キャッシュ15に起きる変化はオーナーシップビットの
みである。有効所有ブロックにヒットした読み出しは、
バックアップキャッシュ15によって実行される。エラ
ー遷移モードが入力されると、決してキャッシュ充填操
作は開始されない。システムバス20からのキャッシュ
整合トランザクションは正常に実行されるが、これによ
ってバックアップキャッシュ15内のデータやタグが変
更されることはなく、ただ、有効および所有ビットが変
化するだけである。こうして、システムは動作を継続
し、しかも後の診断のために、バックアップキャッシュ
15内のデータは可能なかぎり最良な状態で保存され
る。
【0227】このように、キャッシュコントローラユニ
ット26は、ECC回路330と331を使って修正不
能のエラーを検出すると、エラー遷移モード(ETM)
にはいる。ETM中のキャッシュコントローラユニット
26の動作目標は以下の事項である。 (1) 診断ソフトウェアのためにキャッシュ15の状
態を可能な限り保存する。 (2) バックアップキャッシュ15内のブロックにヒ
ットするメモリ管理ユニット25の参照はシステムにお
ける唯一のデータソースであるから、これを優先する。 (3) バス20から正常に受け取ったキャッシュ整合
要求に応答する。
【0228】キャッシュコントローラユニット26は、
一旦ETMに入ると、ソフトウェアが明らかにキャッシ
ュ15を不能あるいは可能にするまでETMに留まる。
ETMの間に劣化するデータもあるので、キャッシュの
整合性を確実にするために、キャッシュ15内の有効ブ
ロックを完全に消去してから再可能化しなくてはならな
い。
【0229】 表B ETM中のバックアップキャッシュ挙動 キャッシュ ──────────キャッシュ応答─────────トランザクション ミス 有効ビット 所有ビット CPU メモリから読み出し メモリから読み出し キャッシュから読 IREAD, DREAD み出し Read Modify CPU READ LOCK メモリから読み出し メモリから読み出し フォースブロック 返送メモリから読 み出し CPU メモリに書き込み メモリに書き込み キャッシュに書き WRITE UNLOCK 込み Fill(from read started before ETM) ────────通常のキャッシュ挙動──────── Fill(from read started during ETM) −バックアップキャッシュの更新不可、データをMboxへもどす− NDAL cache coherency ──────通常のキャッシュ挙動 * ────── request ─────────────────────────────────── 例外* Pキャッシュが最早サブセットではないので、Pキ
ャッシュコヒーレンスをBキャッシュにかかわらず維持
するためにOREAD またはWrite 因子キャッシュコヒーレ
ンストランザクションは常時Pキャッシュを無効化する
結果となる。
【0230】表Bは、バックアップキャッシュ15がE
TM中にどのように動作するか示している。ETM中に
有効所有ブロックにヒットしない読み出し・書き込み
は、全てメモリ12に送られる。キャッシュ15を完全
に迂回して、読み出しデータはメモリ12で探索され、
書き込みデータはメモリ12に書き込まれる。キャッシ
ュ15は、有効所有ブロックにヒットするI読み出しと
D読み出しにデータを供給する。これは正常なキャッシ
ュ動作である。バックアップキャッシュ15の有効所有
ブロックに書き込みデータがヒットすると、そのブロッ
クはメモリ12に書き戻され、その書き込みデータもメ
モリ12へ送られる。書き込みデータは、非書き戻しキ
ュー62を通ってキャッシュコントローラユニット26
を出ていき、バックアップキャッシュ15内でヒットし
なかったかもしれない以前の書き込みデータとの書き込
み順位を強化する。「リードロック」が、キャッシュ1
5の有効所有ブロックにヒットすると、そのブロックの
書き戻しが強制され、その書き込みロックはメモリ12
に送られる(バス20の「オウンドリード」のよう
に)。この動作によって、キャッシュ内でヒットしなか
ったかもしれない以前のデータと、「リードロック」に
続く「ライトアンロック」との間の書き込み順位を強化
する。
【0231】ここで示唆される書き込み順位の問題を次
に掲げる。キャッシュ15がETM状態で、キャッシュ
15の所有ブロックにヒットした書き込みデータはキャ
ッシュに書き込まれ、ヒットしない書き込みはメモリ1
2に送られると想定する。キャッシュ15内でヒットし
ない書き込みAが、メモリ12に向けて、まず非書き戻
しキュー62に送られる。一方、ヒットした書き込みB
はキャッシュに書き込まれる。キャッシュ整合要求がブ
ロックBに到着すると、ブロックBは書き戻しキュー6
3に送られる。ここで、もし書き込みAがまだバス20
に着いていないと、書き込みキューは非書き込みキュー
に対して優先権を持っているので、書き戻しBが書き込
みAを追い越すことが考えられる。もし追い越すと、書
き込みAが未だメモリに達していないため、システム
は、依然としてブロックAの古いデータを読みながら、
書き込みBを認識することになる。
【0232】再び表Bを参照すると、ETM中に所有ブ
ロックにヒットした「ライトアンロック」はキャッシュ
15に直接書き込まれることがわかる。ETM中に「ラ
イトアンロック」が所有ブロックにヒットするケースは
一つしかない。即ち、ETMに入る前に、「ライトアン
ロック」に先行する「リードロック」が実行された場合
である。(ETMを引き起こしたのは、「リードロッ
ク」自身、または「リードロック」と「ライトアンロッ
ク」の間に実行された無効データ。)この場合、非書き
戻しキューに書き込みデータは一つもない。ETM状態
でなければ、非書き込みキューに書き込みデータが送ら
れることはないのである。(非書き込みキューに、I/
O空間書き込みデータが存在することはあるが、I/O
空間書き込みとの順位は制約にならない。)したがっ
て、前の段落で述べたような書き込み順位の問題はな
い。
【0233】表Bには、ETM中においてもキャッシュ
整合要求は、註に揚げた例を除いて、平常時と同様に処
理されることが示されている。ETMにはいる前に起源
する読み出しはどんなタイプでもそのフィルは、平常通
りに処理される。フィルが、ヒットしなかった書き込み
による場合は、要求されたフィルがリターンし、書き込
みデータは平常通りにマージされる。ETM中に起源す
る読み出しはどんなタイプでもそれに引き起こされたフ
ィルは、キャッシュに書き込まれたり、タグ記憶内で有
効化されたりすることはない。ETM中のキャッシュの
状態変化は、極力抑えられている。表Cは、各トランザ
クションがキャッシュの状態をどのように変えるかを示
している。
【0234】 表C ETM中のバックアップキャッシュ状態変化 キャッシュ ────────キャッシュ応答────────トランザクション ミス 有効ヒット 所有ヒット CPU None None None IREAD,DREAD Read Modify CPU READ LOCK None None VALID およびOWNED をクリア、こ れに応じてTS、ECCを変更 CPU Write None None VALID およびOWNED をクリア、こ れに応じてTS、ECCを変更 CPU None None 新しいデータを書き込むこれに応 WRITE UNLOCK じDR、ECCを変更 Fill( Write new TS TAG,TS VALID,TS OWNED,TS ECC,DR DATA, DR ECC ) Fill( None ) NDAL Clear VALID & OWNED ;change TS ECC accordingly ─────────────────────────────────── システムバスインターフェイス 図23に示すように、インターフェイス21は、CPU
バス20とシステムバス11とを接続する機能を持つ。
システムバス11は、集中アービトレーションに依存か
つ同期する。複数のトランザクションが同時に並行して
処理されることも可能で、バスのバンド幅を効率的に利
用できる。アービトレーションとデータの転送は、デー
タ及びアドレス多重ラインで同時に行なわれる。バス1
1は、既に述べたように、オーナーシップコマンドのセ
ットを供給することで、書き戻しキャッシュをサポート
する。バス11は、メモリ12に対する4倍ワード・8
倍ワード・6倍ワードの読み出しと書き込みをサポート
する。さらにバス11は、I/O空間に対する長ワード
の読み出しと書き込み操作をサポートし、この長ワード
操作は、I/O装置のいくつかが要求するバイトモード
とワードモードを実施する。64ナノ秒のバスサイクル
で動作するバス11は、125メガバイトのバンド幅を
持つ。
【0235】CPUバス20の情報は、入力バス335
によってレシーブラッチ336に振り向けられ、その情
報はバス20の毎サイクルにラッチされる。バス335
は、既に述べたように、64ビットのデータ兼アドレス
と4ビットのコマンドと3ビットのIDと3ビットのパ
リティとを備えている。ラッチ336は、バス337に
データ出力を、バス338にコントロール出力を生成
し、それぞれ書き戻しキュー339、非書き戻しキュー
340に振り向けられる。その結果、先に述べたように
非書き戻しトランザクションが抑制されているときで
も、書き戻しは継続できる。書き戻しキュー339か
ら、システムバス11へのインターフェイス342だけ
に出力341が振り向けられる。一方、非書き戻しキュ
ー340では、システムバス11へのインターフェイス
342とROMバス29へのインターフェイス344と
のいづれかに出力343が振り向けられる。書き戻しデ
ータは常にメモリ12へ送られるが、非書き戻しデータ
はメモリ12またはROMバス29のいづれかへ送られ
る。送信受信インターフェイス342でシステムバス1
1から受信したデータは、バス345によって後で詳述
する応答キュー346へ送られる。この応答キューの出
力は、バス347によって送信インターフェイス348
に振り向けられ、そこからバス20へインターフェイス
348の出力349によって振り向けられる。バス34
5の入力データは、システムバス11からCPU10へ
向うものであり、メモリ読み出しのリターンデータまた
はシステムバス11の別のプロセッサ28によるメモリ
12への書き込みの無効データのいづれかである。RO
Mバス29からの入力データは、送信受信インターフェ
イス344からバス351によってインターフェイス3
48へ直接振り向けられる。このチャンネルはデータ率
が低いのでキューには入らない。インターフェイスチッ
プ21のアービター325は、前述のようにCPU10
へ承諾信号を出し、また、インターフェイス348がデ
ータを送るためのバス20のコマンドを必要としている
とき、送信インターフェイス348からライン352で
要求信号を受信し、インターフェイス348に向うバス
20にライン353で承諾信号を発信する。
【0236】図24を参照すると、応答キュー346
は、無効データとリターンデータとにそれぞれ別々のキ
ュー355と356を用いる。無効データキュー355
は、例えば図25に示すように、12個のエントリーあ
るいはスロット357を備え、一方、リターンデータキ
ューは4個のスロット358を備えている。多重プロセ
ッサシステムでは、読み出しリターンデータよりも無効
データのほうが多いであろう。無効データキューの各エ
ントリーあるいはスロット357は、無効アドレス35
9と、タイプインジケータと、有効ビット360と、受
信された時間的な順番で次のエントリーのスロット番号
を指すネクストポインター361とを含んでいる。テー
ルポインター362がキュー355用に、別のテールポ
インター363がキュー356用にそれぞれ維持されて
いる。システムバス11からバス345に新しいエント
リーが入力されると、そのエントリーは、そのタイプ
(無効・読み出しデータ)にしたがってキュー355ま
たは356のどちらかにロードされ、テールポインター
362または363で識別されるキューのスロット35
7または358に入れられる。毎回のロード操作で、テ
ールポインター362または363は増分され、終わり
に達すると始めの位置に戻る。キュー355・356か
らアンロードされたエントリはバス347を経由してト
ランスミッタ348に送られる。
【0237】エントリがアンロードされるスロットはヘ
ッドポインター364によって決められる。ヘッドポイ
ンター364は、キュー355と356との間で振り替
わる。ヘッドポインター自体は1個しかない。キュー3
55・356のエントリは、システムバス11から受信
されたときと同じ順序でCPU10に転送されなければ
ならない。ヘッドポインター364はセレクタ365・
366・367の入力部であり、これらのセレクタが、
どのエントリをバス347に出力するかを選択する。エ
ントリの送信準備ができると、ヘッドポインター364
とテールポインター362・363を含むコントローラ
368が、ライン369でトランスミッタ348に要求
を発信し、エントリが受け取られバス20へ送られたこ
とを示す応答をライン370で受信する。このとき送り
出したスロットは無効にされ、ヘッドポインター364
は、そのスロット内のネクストポインター361が指す
番号へ移される。ネクストポインターの番号は、同じキ
ュー355・356内の次のスロットを指すこともあえ
ば、他方のキュー356・355にあるスロットを指す
こともある。キュー355・356にエントリがロード
されても、次のエントリーがロードされるまで、ネクス
トポインター361の番号はインサートされない。エン
トリが無効であるかリターンデータエントリであるか
が、その時まで判別できないからである。
【0238】インターフェイスチップ21は、システム
バス11でCPUメモリとI/Oの要求を処理すること
で、CPU10にメモリインターフェイスを供給する。
バックアップキャッシュ15でメモリ「リード」または
「ライト」がヒットしないと、インターフェイス21
は、「リード」をシステムバス11に送り、続いてメイ
ンメモリ12からブロックを獲得するためのキャッシュ
充填操作を行なう。インターフェイスチップ21は、シ
ステムバス11の他のノードによって生成されるメモリ
「リード」と「ライト」のトラフィックを監視するの
で、CPU10のキャッシュ14と15がメインメモリ
12と整合していることをCPU28が確認できる。も
し他のノードによる「リード」または「ライト」がキャ
ッシュ15にヒットすると、「ライトバック」または
「インバリデイト」が、前述のようにCPU10チップ
によって実行される。さらに、インターフェイスチップ
21は、CPUからのまたはCPUへの割り込みトラン
ザクションを処理する。
【0239】システムバス11は、CPUバス20に対
して、前述のように制御信号(ライン20j)を持ち、
この信号は新規のシステムバス11のトランザクション
の開始をコントロールに使われる。システムバス11で
抑制表明すると、全てのコマンド要求が遮断され、新規
のシステムバス11トランザクションの開始が抑制され
る。このバス11の抑制信号は、各バス11サイクルの
はじめにバス11のどのノードによっても表明され、次
ぎのサイクルのアービトレーションをコントロールす
る。システムバス11の無効データキュー355が一杯
に近いときにあふれを防ぐために、インターフェイスチ
ップ21は、この抑制信号を使ってシステムバス11で
のトランザクションを禁止する(「ライトバック」と
「リードレスポンス」を除く)。
【0240】インターフェイスチップ21はバス20上
のすべてのトランザクションに参与し、バックアップキ
ャッシュ15でヒットしなかった「リード」と「ライ
ト」に応答し、システムバス11で「オーナーシップリ
ード」操作とキャッシュ充填を行なわせる。インターフ
ェイスチップ21は、バス20の各サイクル中に、アド
レスデータバス20a・コマンドバス20b・IDバス
20c・パリティ20dをラッチ336にラッチし、そ
してパリティを検査するとともにコマンドとアドレスを
解読する。パリティが正しくかつアドレスがインターフ
ェイスチップ21空間にあると認識されると、「Ack 〕
ライン20eが表明され、情報がキュー339または3
40の保持レジスタに移されて、ラッチ336は、次の
サイクルのサンプリングが可能になる。これらの保持レ
ジスタ内の情報は、トランザクションの長さでセーブさ
れる。
【0241】バス20用のアービター325はインター
フェイスチップ21に含まれている。2個のノードCP
U10とインターフェイスチップ21は、バス20上で
コマンダーとレスポンダーの両方として振る舞う。CP
U10とインターフェイスチップ21は両者とも、全て
の未終了フィルトランザクションを処理するのに適した
読み出しデータキューを持っている。バス20の1サイ
クル間にインターフェイスチップ21によってライン2
0kで「書き戻し専用」信号が表明されるが、そのバス
20の1サイクルに対する承諾をCPU抑制ライン20
jが禁止する。
【0242】キャッシュコントローラユニット26のイ
ンキュー61は、一杯になると、CPU抑制ライン20
bを表明し、インターフェイスチップ21が、バス20
に無効データを送ることを禁止する。(システムバス1
1が抑制されるのは、インターフェイスチップ21の入
力キュー355が一杯になったときのみである。)イン
ターフェイスチップ21は、無効データが出現するまで
フィルデータを送り続ける。
【0243】インターフェイスチップ21の書き戻しキ
ュー339は、一杯になると、ライン20iでCPU1
0に対して「承諾」の発行を停止する。インターフェイ
スチップ21の非書き戻しキュー340は、一杯になる
と、ライン20kでCPU10に対して「書き戻し専
用」を表明する。次に揚げるCPU10生成のコマンド
3個は、全て「メモリリード」としてインターフェイス
チップ21によって処理される。(インターフェイスチ
ップ21から見た唯一の違いは、それぞれのコマンドが
システムバス11にどのようにマップされるかであ
る。) (1)メモリ空間命令ストリーム読み出し6倍ワード (2)メモリ空間データストリーム読み出し6倍ワード
(オーナーシップ) (3)メモリ空間データストリーム読み出し6倍ワード
(ロック及びオーナーシップを除く) 上記の「メモリリード」コマンドのどれかがバス20で
発生し、かつ「コマンド」・「アドレス」のパリティが
正しいときには、インターフェイスチップ21は、その
情報を保持レジスターに置く。
【0244】「リードミスとフィル」操作については、
読み出しデータがCPU10内でミスすると、その要求
がバス20を通ってインターフェイスチップ21へ行
く。メモリインターフェイスがそのデータを戻すと、C
PU10キャッシュコントローラユニット26は、その
フィルをインキュー61に入れる。ブロックサイズは3
2バイトで、バス20は8バイトであるから、その読み
出し要求によって、バス20で1個の6倍ワード読み出
しトランザクションが生まれる。フィルデータが戻る
と、キャッシュコントローラユニット26は、CAM3
02の2ビットカウンターで受け取られた4倍ワードの
個数を追う。読み出しミスが2個の場合は、その2個の
ミスからのフィルは、インターリーブされて戻り、CA
M302のそれぞれのエントリは別々のカウンターを持
つ。1個の読み出しミスの最後の4倍ワードが到達する
と、新しいタグが書き込まれ、有効ビットがキャッシュ
15に設置される。フィルが「オーナーシップ」に対す
るものであるときは、所有ビットが設置される。
【0245】「ライトミス」操作については、キャッシ
ュ15内で、ある書き込みに対するCPU10のタグ記
憶の索引が完了して、オーナーシップビットがまだ設置
されていないと、オーナーシップ読み出しがインターフ
ェイスチップ21に対して発行される。最初の4倍ワー
ドがインキュー61を通って戻ると、その書き込みデー
タはフィルデータとマージし、ECCが計算され、新規
のデータがRAM15に書き込まれる。4番目の4倍ワ
ードが戻ると、有効ビットと所有ビットがキャッシュ1
5のタグ記憶に設置され、その書き込みは書き込みキュ
ーから除去される。
【0246】「CPUメモリライト」操作については、
次に揚げるCPU10生成のコマンド4個が、「メモリ
ライト」としてインターフェイスチップ21に処理され
る。(インターフェイスチップ21から見た唯一の違い
は、それぞれのコマンドがシステムバス11上でどのよ
うにマップされるかだけである。) (1)メモリ空間ライトマスクド4倍ワード(ディスオ
ウン及びアンロックを除く) (2)メモリ空間ライトディスオウン4倍ワード (3)メモリ空間ライトディスオウン6倍ワード (4)メモリ空間バッドライトデータ6倍ワード CPUの「リード」と「ライト」による割り当て解除に
関しては、読み出しや書き込みに対するCPU10のタ
グの索引がミスになると、キャッシュブロックが割り当
て解除され、フィルデータにその場所を譲る。そのブロ
ックが有効でない場合は、割り当て解除のための処理は
全く行なわれない。ブロックが有効かつ非所有の場合、
そのブロックは無効にされる。有効かつ所有の場合、そ
のブロックは、バス20でインターフェイスチップ21
へ送られ、メモリ12に書き戻され、タグ記憶内で無効
にされる。「6倍ワードディスオウンライト」コマンド
は、そのデータを書き戻すために使われる。書き戻しが
必要な場合は、読み出しミスまたは書き込みミスの発生
直後に行なわれる。ミスと割り当て解除は、連続した事
象であって、他のトランザクションに割り込まれること
はない。
【0247】「リードロック」と「ライトアンロック」
操作に関しては、CPU10のキャッシュコントローラ
ユニット26が、メモリ管理ユニット25から「リード
ロック」と「ライトアンロック」のペアを受け取るもの
である。キャッシュコントローラユニット26は、これ
らのコマンドをバス20で発行することはなく、かわり
に「オーナーシップリードディスオウンライト」を使
い、インターロックを実行するためにメモリ12のオー
ナーシップビットの使用に依存する。バックアップキャ
ッシュ15内で所有ブロックのヒットを行なわない「リ
ード」ロックは、キャッシュ15のオン・オフに関わら
ず、バス20上で「Oリード」となる。キャッシュ15
がオンのとき、「ライトアンロック」はバックアップキ
ャッシュ15内に書き込まれ、そして整合トランザクシ
ョンを通じて要求されている場合は、メモリ12に書き
込まれるだけである。キャッシュ15がオフのときは、
「ライトアンロック」は、バス20上で「4倍ワードデ
ィスオウン」になる。
【0248】無効化データについて説明すると、キャッ
シュ14および15とメインメモリとの間のキャッシュ
コヒーレンスを維持し、かつ他のシステムバス11のノ
ードがCPU10が保有するメモリ位置に対してアクセ
スすることを許容するために、インターフェイスチップ
21は全ての読み取りおよび書き込みトラフィックをモ
ニターしメモリ12に送る。インターフェイスチップ2
1は、これらのリファレンスのアドレスをCPU10の
キャッシュコントローラユニット26にバス20を経由
して送る。キャッシュコントローラユニット26はキャ
ッシュ15のタグ記憶装置内のアドレスを参照して対応
するキャッシュサブブロックが無効化あるいは書き出し
(write back) を必要とするか否かを決定する。無効化
に際しては、フィルター装置は何ら用いられない。即
ち、バス20は全ての潜在的無効化データにたいして用
いられる。
【0249】CPU10は、キャッシュコヒーレンスサ
イクルの確認を行わない。そのかわり、CPU10は、
それ自身の無効化サイクルについて、インターフェイス
チップ21が肯定応答(Ack)を生じる事を期待する。キ
ャッシュコヒーレンスサイクルは読み出しあるいは書き
込みであり、これはCPU10によって駆動されるもの
ではない。インターフェイスチップ21は、システムバ
ス11上の他のノード28によってメモリリファランス
を検知した際は、そのメモリリファランスのアドレスを
応答キュー346に加える。このアドレスはバス20に
伝らえれてキャッシュコントローラユニット26に対し
てキャッシュの参照を行うよう要求する。
【0250】この例においては、無効化キュー355は
12のエントリーを持つ。インターフェイスチップ21
は、応答キュー355がオーバーフローしないように、
バス11のトランザクションを、抑制ラインを用いて抑
制する。仮に、10あるいはそれ以上の数のエントリー
が応答キュー355にある場合には、インターフェイス
チップ21はバス11の抑制ラインを働かせる。チップ
21が抑制信号を生じた場合には、バス11に対して、
上記に加えて2以上の数の書き込みあるいは3以上の読
み出しが生じ得る。システムバス11の抑制を行うため
のコマンドは、インターフェイスチップ21およびCP
U10のキャッシュコントローラユニット26にたいし
て無効化処理を早めこれから入力されるべき無効化アド
レスに対してキューを開放する。有効エントリーの数
が、たとえば9未満になった場合には、インターフェイ
スチップ21はシステムバス11の抑制を解除する。
【0251】読み出し処理中のキャッシュブルメモリと
同じキャッシュサブブロックから無効化アドレスが送ら
れてきた場合には次のような潜在的な問題が生じる。即
ち、このサブブロックがまだ有効化されていないので、
キャッシュコントローラユニット26によって行われる
タグの参照動作にキャッシュミスが起きるのである。こ
の無効化要求のもととなるシステムバス11からの要求
がコマンドサイクルがシステムバスに送り込まれた後に
発生した可能性があるので、この無効化処理は実行され
ねば成らない。CPU10のキャッシュコントローラユ
ニット26は、キャッシュがフルになったら上記のサブ
ブロックを無効化するかあるいはこれをメモリに書き戻
すようにするような内部状態を維持する。キャッシュコ
ントローラユニット26は、通常、キャッシュがフルに
なるのを待ちながら以後の無効化を処理する。
【0252】従来のVAXシステムは、非ペンド型のバ
スを使用し、また、それぞれキュー355およびキュー
356の機能を果たす別個のキューを無効化データおよ
びレターンデータのために使用している。これらの従前
のキューは“送信順序”を正確に規定するような品質の
ものではなく、無効化が適宜のキューに加えられた際
に、これを次の読み出しを行う前に処理するようにこれ
にマークをつけるというものであった。
【0253】しかしながら、上記のCPU10は、ペン
ド型のバス11,12を用いており、無効化データはリ
ターンデータと同じパスを通って送られる。従って、送
信順序を厳密に維持することが必要であり、それ故、無
効化データのワードとリターンデータのワードとは、こ
れらがシステムバスからキューに入力された順序と全く
同じ順序でCPU10に送られ処理されねばならない。
このようなことは、無効化データのワードとリターンデ
ータのワードとのいずれをも処理するのに十分な容量を
持つ統一型のキューを用いることにより達成可能である
が、そのようにした場合には、インターフェイスチップ
21のサイズが大きくなり好ましくない。詳しく説明す
ると、これを実施する際には、統一型のキューを用いた
場合には、各スロットはリターンデータを受け入れるの
に十分な大きさのものとせねばならない。なぜならば、
これら2種のワードのなかではリターンデータのワード
のほうが大きいからである。実際問題として、リターン
データのワードならびにこれに付随するコントロールビ
ットのトータルの大きさは、無効化データのワードなら
びにこれに付随するコントロールビットのトータルの大
きさの2倍以上である。キューの無効化部分のサイズも
またキューのリターンデータ部分のサイズの2倍程度の
ものとするべきである。このように、キュー2/3 の部分
が半分しか活用されない。換言すればキューの1/3 の部
分が無駄になるのである。
【0254】更にまた、システムバス11のプロトコル
は、リターンデータが最終的にメモリ12から送られて
くる際にそのリターンデータが余裕を持っていることを
要求する。統一型のキューを用いた場合には、無効化デ
ータはリターンデータのために使用されるべきスペース
まではみだしてしまう。仮に、例えば6語のデータが随
時入ってくる可能性があると仮定すると(リターンデー
タのソースが主として6語のオーナシップ読み出しであ
る。)、4個のスロットを空き状態にしておかなければ
ならない。
【0255】先に述べたように、バスプロトコルは、リ
ターンデータの受渡しを許容しつつ新しい無効化データ
を禁止する抑制手段を用いている。抑制信号発生の時期
の決定において本質的に含まれる遅れや、任意ユニット
325における抑制信号の認識における遅れなどを考慮
すると、抑制期間中における無効化データを受け容れる
ためには更に3乃至4の無効化データ用のスロットを用
意せねばならない。仮に実際の無効化データのために4
個のスロットを割当てるとすると、キューの無効化デー
タ用部分は7乃至8のスロット長さをもつ必要がある。
スロットの数が少ないとシステムバス11の抑制が頻繁
に生じる殊になる。したがって、複合データ/無効化デ
ータのキューには12個にもおよぶ多数のスロットを設
ける必要があり、しかも各スロットの大きさは、データ
ワードとそれに付随するコントロールビットとを受け入
れるのに十分なものとする必要がある。スロットの数を
減らせば抑制が早期に生じるし、スロットの数を増やせ
ばキューの大きさが増大する。いずれにせよキューは、
発明者等の目標が達成されたならば、要求される早さの
2倍の早さで大きくなる。2個以上の読み出しを許容す
るためには、かなり無理なアプローチを行う必要がある
のでキューは15乃至16スロットのものとせねばなら
ない。
【0256】本発明の概念におけるこのような特徴によ
れば、無効化および読み出しデータのキューは2つの別
個のエンティティー355,356に分けられ、各エン
ティティーはそれが果たすべきタスクに見合うだけの大
きさ(深さおよび長さ)を持つものとされる。いうまで
もなく問題となるのは、いかにして厳密な送信順序を保
証するかである。このような保証は、本例において、次
のポインターフィールド361とヘッドポインター36
4とによって遂行される二つのキュー間にハードウエア
によって接続されたリストによって与えられる。各スロ
ット入力は“次の”ポインター361を持っており、こ
のポインターが次のデータエンティティー(無効かデー
タあるいは読み出しデータ)をどこで見つけ出すかのア
ンロードロジックを指示する。
【0257】このような機能は、各スロットについて汎
用ポインターを用いることによっても得られるし、ま
た、単に「次のスイッチバックが行われるまで外のキュ
ーをさがせ」という指示を示すフラッグを用いることに
よっても得ることができる。無効化データキュー335
および読み出しデータキュー356はいずれもそれら自
身のなかにおいて循環する形式のものであるから、応答
キュー346全体のなかにおいて送信順序が厳密に保持
される。
【0258】第17図および第18図に示される方法
は、単一のキューを用いる場合にくらべて幾つかの利点
を与えるもので、しかもそのような利点を得るにあたっ
てデザインを大幅に複雑化することを要しない。これら
の利点はいずれもチップサイズを小さくしつつも必要な
性能を保証するものである。主な利点を述べれば次のと
おりである。(1)大型の一体型キューを用いて達成さ
れる性能と同等の性能が、キュー分割方式を用いること
によって、はるかに少ない専有スペースをもって達成さ
れること。(2)各キューにデータの種類に対応して印
をつけることができるので、データが他のデータに混入
することがない。また、2種類のキュー(無効化データ
およびリターンデータ)のキューが最適サイズに変更さ
れ得る。例えば、無効化データのキューが7個の(小さ
い)スロットをもつサイズとされ、読み出しデータのキ
ューが6個の(大きい)スロットをもつサイズとされ
る。これにより、読み出しコマンドのオーバーラップを
円滑にするとともに、システムバス11を過度に抑制す
ることなく無効化データの処理を行うことができる。
(3)読み出しデータのキュー356のサイズを必要に
応じて増大して2つの読み出し処理を受け入れるように
することができ、しかもこれを無効化データのキューサ
イズにたいして影響を及ぼすことなく、即ち無効化デー
タのキューのサイズを変化させることなく、行うことが
できる。
【0259】以上に、実施例を通して本発明の内容を説
明したが、これらの実施例の記載はこの発明の範囲を限
定する趣旨ではない。開示された実施例および他の実施
例に対して種々の変形を行いうることは、当業者にとっ
て自明の事であろう。そのような実施例ならびに変形の
すべては特許請求の範囲に記される本発明の範囲に含ま
れるものである。
【図面の簡単な説明】
【図1】図1は、本発明の一実施例による中央処理装置
を含むコンピューターシステムの電気ブロック図であ
る。
【図2】図2は、別の構成による図1のコンピューター
システムの電気ブロック図である。
【図3】図3は、図1のシステムに使われるデータの種
類の図である。
【図4】図4は、図1又は2のCPUのクロック発生器
により生成されてCPU内で使用される4相クロックの
タイミング図であり、図1のシステムのバスサイクルを
定義するのに使われるバスサイクル及びクロックのタイ
ミング図を伴う。
【図5】図5は、本発明の一実施例による、図1又は2
のシステムの中央処理装置(CPU)の電気ブロック図
である。
【図6】図6は、連続する機械サイクルにおいて図1の
パイプライン処理CPU10で発生する事象を示すタイ
ミング図である。
【図7】図7は、時間順序フォーマットに整理して図1
のCPUを示す電気ブロック図であり、図6によるCP
Uのパイプライン処理を示す。
【図8】図8は、図1のCPUの命令ユニットの電気ブ
ロック図である。
【図9】図9は、図1のCPUに使われる複合指定ユニ
ットの電気ブロック図である。
【図10】図10は、図1のCPUに使われる仮想命令
キャッシュの電気ブロック図である。
【図11】図11は、図1のCPUに使われる先取りキ
ューの電気ブロック図である。
【図12】図12は、図1のCPUに使われるスコアボ
ード・ユニットの電気ブロック図である。
【図13】図13は、図1のCPUに使われる分岐予想
ユニットの電気ブロック図である。
【図14】図14は、マイクロシーケンサ及びコントロ
ール記憶装置を含む、図1のCPUのマイクロ命令制御
ユニットの電気ブロック図である。
【図15】図15は、図14のコントロール記憶装置に
より生成されたマイクロ命令ワードのフォーマットの図
である。
【図16】図16は、図1のCPUの実行ユニットの電
気ブロック図である。
【図17】図17は、図1のCPUのメモリ管理ユニッ
トの電気回路図である。
【図18】図18は、図1のCPUの一次キャッシュ又
はPキャッシュメモリの電気ブロック図である。
【図19】図19は、図1のCPUのキャッシュコント
ローラ・ユニット又はCボックスの電気ブロック図であ
る。
【図20】図20は、図1のCPUの浮動小数点実行ユ
ニット又はFボックスの電気ブロック図である。
【図21】図21は、図1のシステムのCPUバス上で
起こる事象のタイミング図である。
【図22】図22は、図1のシステムのCPUバスに使
われる導体の電気回路図である。
【図23】図23は、図1のコンピューターシステムの
バスインターフェイス及びアービタ・ユニットの電気ブ
ロック図である。
【図24】図24は、図23のバスインターフェイス及
びアービタ・ユニットにおけるインヴァリデート・キュ
ー及び戻りキューの電気ブロック図である。
【図25】図24のキューの詳細な構造の例示。
【図26】図17のメモリー管理ユニットにおける2サ
イクルパイプライン組織。 10 CPUチップ 11 システムバス 12 システムメモリ 14 一次キャッシュ 15 バックアップキャッシュ 20 CPUバス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ディヴィッド デヴァレル アメリカ合衆国 マサチューセッツ州 02771シーコンク アーケード アベニ ュー 182 (56)参考文献 特開 昭63−196977(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/38

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】 メインプロセッサユニット及び浮動小数
    点実行ユニットを有し、前記浮動小数点実行ユニットは
    複数のステージから構成されていて、前記メインプロセ
    ッサユニットはオペランド及び命令を前記小数点実行ユ
    ニットに送り、前記複数のステージ内の最終ステージで
    浮動小数点演算結果のデータ全幅に対して丸め処理が行
    なわれる多重プロセッサの性能を改良する方法であり、 前記最終ステージの一つ前のステージにおいて、前記結
    果の選択された下位ビットに対して丸め処理を試み、こ
    の下位ビットに対する丸め処理が桁上げを生じない場
    合、前記最終ステージをバイパスして、前記一つ前のス
    テージからの丸め結果を前記メインプロセッサに送る工
    程を含む、多重プロセッサの性能を改良する方法。
  2. 【請求項2】 前記最終ステージの一つ前の前記ステー
    ジにおいて、前記結果の選択された下位ビットに試みら
    れた前記丸め処理がオーバーフロー又はアンダーフロー
    を生じる場合、前記丸め結果は前記メインプロセッサに
    送られない請求項1記載の方法。
  3. 【請求項3】 メインプロセッサユニット及び浮動小数
    点実行ユニットから成る多重プロセッサであり、前記浮
    動小数点実行ユニットは複数のステージから構成されて
    いて、前記メインプロセッサユニットはオペランド及び
    命令を前記小数点実行ユニットに送り、前記複数のステ
    ージの内の最終ステージで浮動小数点演算結果のデータ
    全幅に対する丸め処理が行なわれ、丸め処理の結果が前
    記メインプロセッサユニットに戻される多重プロセッサ
    であり、 前記最終ステージの一つ前のステージが、前記結果の選
    択された下位ビットに対して丸め処理を試み、この下位
    ビットに対する丸め処理が桁上げを発生しない場合、前
    記最終ステージをバイパスして、前記一つ前のステージ
    からの前記丸め結果を前記メインプロセッサに送る手段
    を、前記最終ステージの一つ前の前記ステージが含む多
    重プロセッサ。
  4. 【請求項4】 前記最終ステージの一つ前の前記ステー
    ジにおいて、選択された下位ビットに対して試みられた
    前記丸め処理が桁上げを発生する場合、前記複数のステ
    ージの前記最終ステージにおいて、前記浮動小数点演算
    結果全体に作用することにより前記浮動小数点演算結果
    を丸め処理し、この丸め処理された結果全体を前記最終
    ステージから前記メインプロセッサに送るための手段を
    前記浮動小数点実行ユニットに含む請求項3記載の多重
    プロセッサ。
  5. 【請求項5】 命令及びオペランドを浮動小数点実行ユ
    ニットに送る様接続されたメインプロセッサを有する多
    重プロセッサの性能を改良する方法であり、この方法
    が、 前記メインプロセッサから受信された命令及びオペラン
    ドに応答して、前記浮動小数点実行ユニット内で浮動小
    数点演算を実行して、所定のサイクルで結果を生成し、 前記結果の選択された下位ビットに対して丸め処理を試
    み、前記丸めが桁上げを生じない場合、前記下位ビット
    に対する前記丸め処理によって修正された前記結果を前
    記所定のサイクルより前のサイクルで前記メインプロセ
    ッサに送り、前記選択された下位ビットに対する丸め処
    理が桁上げを生じる場合、前記結果のデータ全幅に作用
    することにより前記結果を丸め、この丸められた結果を
    前記所定のサイクルで前記メインプロセッサに送る工程
    からなる多重プロセッサの性能を改良する方法。
  6. 【請求項6】 メインプロセッサユニットが浮動小数点
    実行ユニットであり、前記メインプロセッサユニットが
    オペランド及び命令を前記浮動小数点実行ユニットに送
    り、前記浮動小数点実行ユニット内で浮動小数点演算を
    実行し、所定のサイクルで前記メインプロセッサに結果
    を戻す、メインプロセッサユニット及び浮動小数点実行
    ユニット、及び浮動小数点演算結果の選択された下位ビ
    ットに対して丸め処理を試み、前記丸め処理が桁上げを
    発生しない場合、前記所定のサイクルより前のサイクル
    で前記下位ビットに対する丸め処理によって修正された
    前記結果を前記メインプロセッサに送る前記浮動小数点
    実行ユニット内の手段からなる多重プロセッサ。
  7. 【請求項7】 前記選択された下位ビットに対する前記
    丸め処理が桁上げを発生する場合、前記浮動小数点演算
    結果全体に作用することによりこの結果を丸め処理し、
    この丸め処理された結果全体を前記所定のサイクルで前
    記メインプロセッサに送るための手段を前記浮動小数点
    実行ユニットに含む請求項6記載の多重プロセッサ。
  8. 【請求項8】 前記試みられた丸め処理がオーバーフロ
    ー又はアンダーフローを発生する場合前記所定のサイク
    ルより前のサイクルで前記結果を前記メインプロセッサ
    に送ることを止め、前記試みられた丸め処理の結果の指
    数部がオーバーフロー又はアンダーフローを発生する場
    合、前記丸め処理を達成する試みを止める手段を含む請
    求項6記載の多重プロセッサ。
  9. 【請求項9】 コンピュータの動作方法であり、前記コ
    ンピュータが記憶手段、複数のステージを有する第1の
    パイプライン化実行ユニット、及び複数のステージを有
    する第2のパイプライン化実行ユニットを含み、前記方
    法が、 前記第1のパイプライン化実行ユニットにおいて第1の
    形態の命令を実行して、第1の出力に第1の結果を発生
    し、この第1の結果を前記第1の出力から前記記憶手段
    に送り、 前記第2のパイプライン化実行ユニットにおいて第2の
    形態の命令を実行して、第2の出力に第2の結果を発生
    し、この第2の結果を前記第2の出力から前記記憶手段
    に送り、 前記第2のパイプライン化実行ユニットの最終ステージ
    の一つ前のステージにおいて、前記第2のパイプライン
    化実行ユニットの最後のステージで通常達成される計算
    の達成を試み、そして前記計算を達成する試みが成功し
    た時は、前記第2のパイプライン化実行ユニットの前記
    最後のステージをバイパスすることによって、前記計算
    の結果を前記最後のステージの一つ前のステージから前
    記第2の出力へ送り、 前記計算を達成する試みが成功しなかった時は、前記第
    2のパイプライン化実行ユニットの前記最後のステージ
    において前記計算を達成する、各ステップからなるコン
    ピュータの動作方法。
  10. 【請求項10】 第1の形態の命令を実行して、第1の
    出力に第1の結果を発生する複数のステージを有する第
    1のパイプライン化実行ユニット、第2の形態の命令を
    実行して、第2の出力に第2の結果を発生する複数のス
    テージを有する第2のパイプライン化実行ユニット、及
    び前記第1及び第2の結果を記憶手段に送るための手
    段、から成り、前記第2のパイプライン化実行ユニット
    が、最後のステージで通常達成される計算の達成を試み
    る手段を前記最後のステージの一つ前のステージに有
    し、前記最後のステージで通常達成される前記計算が前
    記第2の実行ユニットの最後のステージの一つ前のステ
    ージで完了する場合、前記第2の実行ユニットの前記最
    後のステージをバイパスすることにより、前記計算の結
    果を前記第2の出力に送る手段を有する、多重プロセッ
    サ。
  11. 【請求項11】 前記第1のパイプライン化実行ユニッ
    トが、整数実行ユニットであり、前記第2のパイプライ
    ン化実行ユニットが浮動小数点実行ユニットである請求
    項10記載の多重プロセッサ。
  12. 【請求項12】 前記第1及び第2の結果を記憶手段に
    送るための前記手段が、前記第1の出力からの前記第1
    の結果を受信するための前記第1の出力に接続された第
    1の入力と、前記第2の出力からの前記第2の結果を受
    信するための前記第2の出力に接続された第2の入力と
    を有するマルチプレクサを含み、前記マルチプレクサが
    前記第1の結果及び第2の結果を前記記憶手段に送るた
    めに前記記憶手段に接続された出力を有する請求項10
    及び11記載の多重プロセッサ。
JP3159113A 1990-06-29 1991-06-28 浮動小数点装置を有する高性能多重プロセッサ及びその性能を改良する方法 Expired - Fee Related JP2939003B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54760390A 1990-06-29 1990-06-29
US547603 1990-06-29

Publications (2)

Publication Number Publication Date
JPH0675747A JPH0675747A (ja) 1994-03-18
JP2939003B2 true JP2939003B2 (ja) 1999-08-25

Family

ID=24185332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3159113A Expired - Fee Related JP2939003B2 (ja) 1990-06-29 1991-06-28 浮動小数点装置を有する高性能多重プロセッサ及びその性能を改良する方法

Country Status (5)

Country Link
US (1) US5809320A (ja)
EP (1) EP0463966B1 (ja)
JP (1) JP2939003B2 (ja)
CA (1) CA2046020A1 (ja)
DE (1) DE69130519T2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US6212601B1 (en) * 1996-08-30 2001-04-03 Texas Instruments Incorporated Microprocessor system with block move circuit disposed between cache circuits
JP2944563B2 (ja) * 1997-04-03 1999-09-06 甲府日本電気株式会社 パイプライン型情報処理装置
US6101420A (en) * 1997-10-24 2000-08-08 Compaq Computer Corporation Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories
US6101419A (en) * 1998-01-15 2000-08-08 Lam Research Corporation Modular control system for manufacturing facility
US6643745B1 (en) * 1998-03-31 2003-11-04 Intel Corporation Method and apparatus for prefetching data into cache
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
US6401173B1 (en) * 1999-01-26 2002-06-04 Compaq Information Technologies Group, L.P. Method and apparatus for optimizing bcache tag performance by inferring bcache tag state from internal processor state
US6230256B1 (en) * 1999-03-31 2001-05-08 Bull Hn Information Systems Inc. Data processing system having a bus wider than processor instruction width
CN1217261C (zh) * 1999-05-13 2005-08-31 Arc国际美国控股公司 用于处理器流水线分段法及再装配的方法以及装置
US6393446B1 (en) 1999-06-30 2002-05-21 International Business Machines Corporation 32-bit and 64-bit dual mode rotator
US6470427B1 (en) * 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
US6434673B1 (en) * 2000-06-30 2002-08-13 Intel Corporation Optimized configurable scheme for demand based resource sharing of request queues in a cache controller
US6829769B2 (en) * 2000-10-04 2004-12-07 Microsoft Corporation High performance interprocess communication
US6732236B2 (en) * 2000-12-18 2004-05-04 Redback Networks Inc. Cache retry request queue
US7337306B2 (en) * 2000-12-29 2008-02-26 Stmicroelectronics, Inc. Executing conditional branch instructions in a data processor having a clustered architecture
KR20030088892A (ko) * 2001-02-06 2003-11-20 애더란트 테크놀로지스 비.브이. 인터럽트를 핸들링하기 위한 방법 및 장치
US7221381B2 (en) * 2001-05-09 2007-05-22 Clairvoyante, Inc Methods and systems for sub-pixel rendering with gamma adjustment
US7493470B1 (en) * 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
JP4044756B2 (ja) * 2001-12-11 2008-02-06 松下電器産業株式会社 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US20040044508A1 (en) * 2002-08-29 2004-03-04 Hoffman Robert R. Method for generating commands for testing hardware device models
US7000095B2 (en) * 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US6850999B1 (en) * 2002-11-27 2005-02-01 Cisco Technology, Inc. Coherency coverage of data across multiple packets varying in sizes
US7779212B2 (en) 2003-10-17 2010-08-17 Micron Technology, Inc. Method and apparatus for sending data from multiple sources over a communications bus
US7430657B2 (en) * 2003-12-31 2008-09-30 Intel Corporation System, method and device for queuing branch predictions
US7778812B2 (en) * 2005-01-07 2010-08-17 Micron Technology, Inc. Selecting data to verify in hardware device model simulation test generation
US7797685B2 (en) * 2005-05-13 2010-09-14 Texas Instruments Incorporated Method for generating timing data packet
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US7929526B2 (en) * 2007-09-28 2011-04-19 Oracle America, Inc. Direct messaging in distributed memory systems
US8150902B2 (en) * 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
JP5600517B2 (ja) * 2010-08-18 2014-10-01 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
US20130151818A1 (en) * 2011-12-13 2013-06-13 International Business Machines Corporation Micro architecture for indirect access to a register file in a processor
JP6011194B2 (ja) * 2012-09-21 2016-10-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9104597B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Destaging cache data using a distributed freezer
US9298398B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Fine-grained control of data placement
US9329938B2 (en) 2013-04-16 2016-05-03 International Business Machines Corporation Essential metadata replication
US9619404B2 (en) * 2013-04-16 2017-04-11 International Business Machines Corporation Backup cache with immediate availability
US9298617B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Parallel destaging with replicated cache pinning
US9423981B2 (en) 2013-04-16 2016-08-23 International Business Machines Corporation Logical region allocation with immediate availability
US9104332B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Managing metadata and data for a logical volume in a distributed and declustered system
US10990398B2 (en) 2013-07-15 2021-04-27 Texas Instruments Incorporated Mechanism for interrupting and resuming execution on an unprotected pipeline processor
KR102101390B1 (ko) * 2013-10-08 2020-04-17 에스케이하이닉스 주식회사 반도체 장치 및 이를 포함하는 반도체 시스템
US9965274B2 (en) * 2013-10-15 2018-05-08 Mill Computing, Inc. Computer processor employing bypass network using result tags for routing result operands
US9141486B2 (en) * 2014-01-15 2015-09-22 Avago Technologies General Ip (Singapore) Pte Ltd Intelligent I/O cache rebuild in a storage controller
US9747073B2 (en) 2014-03-06 2017-08-29 Oracle International Corporation Floating point unit with support for variable length numbers
US10198358B2 (en) * 2014-04-02 2019-02-05 Advanced Micro Devices, Inc. System and method of testing processor units using cache resident testing
US11106466B2 (en) * 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
US11616596B1 (en) 2021-09-24 2023-03-28 Apple Inc. Instruction-based multi-thread multi-mode PDSCH decoder for cellular data device
US11595154B1 (en) 2021-09-24 2023-02-28 Apple Inc. Instruction-based multi-thread multi-mode PDCCH decoder for cellular data device
US11775307B2 (en) 2021-09-24 2023-10-03 Apple Inc. Systems and methods for synchronizing data processing in a cellular modem

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3842250A (en) * 1973-08-29 1974-10-15 Sperry Rand Corp Circuit for implementing rounding in add/subtract logic networks
US4179734A (en) * 1976-07-02 1979-12-18 Floating Point Systems, Inc. Floating point data processor having fast access memory means
US4295203A (en) * 1979-11-09 1981-10-13 Honeywell Information Systems Inc. Automatic rounding of floating point operands
US4442498A (en) * 1981-04-23 1984-04-10 Josh Rosen Arithmetic unit for use in data processing systems
US4509116A (en) * 1982-04-21 1985-04-02 Digital Equipment Corporation Special instruction processing unit for data processing system
US4562553A (en) * 1984-03-19 1985-12-31 Analogic Corporation Floating point arithmetic system and method with rounding anticipation
US4648058A (en) * 1984-04-03 1987-03-03 Trw Inc. Look-ahead rounding circuit
US4648034A (en) * 1984-08-27 1987-03-03 Zilog, Inc. Busy signal interface between master and slave processors in a computer system
JPS61183740A (ja) * 1985-02-08 1986-08-16 Nippon Telegr & Teleph Corp <Ntt> 直列浮動小数点乗算装置
JPS61213927A (ja) * 1985-03-18 1986-09-22 Hitachi Ltd 浮動小数点演算処理装置
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法

Also Published As

Publication number Publication date
JPH0675747A (ja) 1994-03-18
EP0463966B1 (en) 1998-11-25
EP0463966A3 (en) 1993-06-30
US5809320A (en) 1998-09-15
DE69130519D1 (de) 1999-01-07
EP0463966A2 (en) 1992-01-02
DE69130519T2 (de) 1999-06-10
CA2046020A1 (en) 1991-12-30

Similar Documents

Publication Publication Date Title
JP2939003B2 (ja) 浮動小数点装置を有する高性能多重プロセッサ及びその性能を改良する方法
JP2962876B2 (ja) 内部プロセッサレジスターコマンドのi/o空間アドレスへの変換
JP3195378B2 (ja) 高性能プロセッサ用の分岐予測
US5155843A (en) Error transition mode for multi-processor system
US5317720A (en) Processor system with writeback cache using writeback and non writeback transactions stored in separate queues
EP0465320B1 (en) Combined queue for invalidates and return data in multi-processsor system
US6240508B1 (en) Decode and execution synchronized pipeline processing using decode generated memory read queue with stop entry to allow execution generated memory read
US5471591A (en) Combined write-operand queue and read-after-write dependency scoreboard
US5542058A (en) Pipelined computer with operand context queue to simplify context-dependent execution flow
US5226130A (en) Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
Hunt Advanced Performance Features of the 64-bit PA-8000
JP3670039B2 (ja) スーパースカラマイクロプロセッサ
US5450555A (en) Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
US5649137A (en) Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JPH0659979A (ja) 高性能プロセッサ用のキャッシュ・セット選択
JPH0659882A (ja) 高性能プロセッサ用のマスク処理装置

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080611

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090611

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees