JPH02208728A - 仮想命令キャッシュ再補充アルゴリズム - Google Patents

仮想命令キャッシュ再補充アルゴリズム

Info

Publication number
JPH02208728A
JPH02208728A JP1241650A JP24165089A JPH02208728A JP H02208728 A JPH02208728 A JP H02208728A JP 1241650 A JP1241650 A JP 1241650A JP 24165089 A JP24165089 A JP 24165089A JP H02208728 A JPH02208728 A JP H02208728A
Authority
JP
Japan
Prior art keywords
instruction
bytes
buffer
instruction stream
byte
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.)
Pending
Application number
JP1241650A
Other languages
English (en)
Inventor
David B Fite
ディヴィッド ビー ファイト
Ricky C Hetherington
リッキー シー ハザーリントン
Michael M Mckeon
マイケル エム マッキオン
Dwight P Manley
ドワイト ピー マンリー
John E Murray
ジョン イー マリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH02208728A publication Critical patent/JPH02208728A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野) 本願は、計算システムの成る側面を開示するものであっ
て、これについては本願と同時に出願された以下の米国
特許出願にも記載されている:Evance et a
l、、 AN INTERFACHBf!TWf!EN
 A SYSTEMCONTROL UNIT AND
 A SYSTEM PROCESING VNIT 
OF八へIGITAL COMPUTER(ディジタル
コンピューターのシステム制御装置とシステム処理装置
との間のインターフェース) : Arnold et
 al、+METHOD AND APPARATUS
 FORINTERFACING A SYSTEMC
ONTROL UNIT FORA MULTIPRO
Cf!5SORSYSTEMWITHTHI! CEN
TRAL PROCESSING IINITs  (
中央処理装置を持ったマルチプロセッサ システムのシ
ステム制御装置をインターフェースする方法及び装置)
  : Cagliardo et at、、 MIE
THOD ANDMEANS FORINTERFAC
ING A SYSTEM C0NTR0L UNIT
FORA MOLTI−PROCESSOR5YSTE
河りIT)I THE SYSTEMMAIN ?IE
MORY  (システム主メモリーを持ったマルチプロ
セッサーシステムのシステム制御装置をインターフェー
スする方法及び装置):D。
Fite et al、、 Ml!TR0D AND 
APPARATUS FORR1!5OLVING A
 VARIABLE NUMBEROF POTENT
IALMl!MORY ACCI!SS C0NFLI
CTS IN A PIPELINEDCOMPUTI
I!RSYSTEM  (パイプライン方式コンピュー
ターシステムにおける可変個数の潜在的メモリーアクセ
ス矛盾を解決する方法及び装置):D、 Fite e
t al、、 DECODING MULTIPLE 
5PECIFIERSIN A VARIABLIE 
Lm!NGTHlN5TRUCTION ARCHIT
ECTURB(可変長命令アーキテクチャにおける多重
指定子の解読) :Herman et al、、 P
IPELINE! PROCIESSINGOF RH
GISTERAND REGISTERMODIFYI
NG 5PECIFIER5WITHIN THII!
 SAMB lN5TRUCTION (同じ命令内で
のレジスター及びレジスター修飾指定子のパイプライン
処理)  :  Murray at al、、 MU
LTIPLEINSTRUCTION PRHPROC
ESSOING SYSTEM [TI(DATADB
PENDBNCY RESOLUTION FORDI
GITAL COMPUTER3(ディジタルコンピュ
ーターのデータ依存分解能を持った多重命令処理システ
ム)  :  D、 Fiteet al、、 PRH
PROCESSING IMPLIED 5PECIF
IBR3IN A PIPBLINE!D PROCE
SSOR(パイプライン化したプロセッサーにおける暗
示指定子の前処理):D、 Fite et al、、
 BRANCHPREDICTION  (ブランチ予
測) : Fossum et al、、 PIPEL
INED FLOATINGPOINT ADDERF
ORDIGITAL COMPUTER:  (ディジ
タルコンピューターのパイプライン化浮動小数点加算器
)  :  Grundmann et al、+ 5
ELF TIMEDREGISTI!RFILE  (
自己計時レジスターファイル):Beaven  et
  al、、  MET)!00  AND  APP
ARATUS  FORDETECTING AND 
C0RRECTING ERRORS IN A PI
PELINEDCOMP[JTERSYSTEM  (
パイプライン化コンピューターシステムにおいて誤りを
検出し訂正する方法及び装置)  :  Flynn 
et al、、 METHOD ANDMEANS F
ORARBI↑RATING COM阿υNICATI
ON REQUESTSUSING A SYSTEM
 C0NTR0L UNIT IN A MIILTI
−PROCESSORSYSTEM (マルチプロセン
サーシステムにおいてシステム制御装置を使って通信要
求を調停する方法及び手段)  :  E、 Fite
 et al、。
C0NTR0L  OF  M口LTIPLI!  F
UNCTION  UNITS  WITHPARAL
LEL 0PERATION IN A MICROC
ODHD EXEICUTIONυNIT (マイクロ
コード化された実行装置における並列動作機能付き多重
機能装置の制a>  :Weblf、 Jr、 et 
al、、 PROCf!5SING OF MBMOR
Y ACCESSHXCEPTIONS WITHPR
EFBTCIlf!D lN5TRUCTIONSWI
THIN  THE  lN5TRUCTION  P
IPIELINE  OF  A  VITUALMf
rMORY SYSTBM−BASII!D DIGI
TAL COMPUTER(仮想記憶装置システムベー
スドディジタルコンピューターの命令パイプライン内で
の先取りされた命令に伴うメモリーアクセス除外の処理
):11etherington et al、、 M
ETHOD AND APPARATUSFORC0N
TR0LLING THECONVERSION OF
 VIPTUALTOPHYSICAL  MEMOR
Y  ADDRBSSES  IN  A  DIGI
TALCOMPUTERSYSTEM  (ディジタル
コンピューターシステムにおける仮想メモリーアドレス
から物理的メモリーアドレスへの変換を制御する方法及
び装置) : Hetherington et al
、、 WRITE BACKBUFFf!RWITHE
RRORC0RRIECTING CAPABrLIT
IES(誤り訂正能力を持ったライトバックバッファー
)  : Flynn et al、、 METHOD
 AND MBANS FORARBITRATING
 COMMIJNICATION REQUHSTS 
USING^ SYSTEM C0NTR0L UNI
T  IN A MULTIPI?OCESSINGS
YSTEM (多重処理システムにおいてシステム制御
装置を使って通信要求を調停する方法及び手段)  :
 Chinnaswav et al、+ MODUL
ARCRO5SBARINTERCONNIICTIO
N  NETWORK  FORDATA  TRAN
SACTIONSBETWEEN SYSTEM UN
ITS IN A MULTI−PROCESSORS
YSTII!M (多重処理システムにおけるシステム
装置間でのデータトランザクションのためのモジエラー
クロスバ−相互接続ネットワーク):Po1zin e
t al、、 METFIOD AND APPARA
TUS FORINTERFACrNG A SYST
BM C0NTR0L UNIT FORAMIILT
I−PROCESSORSYSTEM WITHINP
UTloUTPUTUNTS (入出力装置を有するマ
ルチプロセッサーシステムのためのシステム制御装置を
インタフェースする方法及び装置) : Gaglia
rdo et al、+MBMORY C0NFIGU
RATION FORUSB WITHMEANSFO
RINTt!RFACING A SYSTEM C0
NTR0L UNIT FORA MULTI−PRO
CESSORSYSTEM WITHTHE SYST
EMH^IN MEMORY  (システム主メモリー
を持ったマルチプロセッサーシステム用のシステム制御
装置をインターフェースする手段に用いるメモリー排列
) : Gagliardo et al、、 MET
)100 AND MEANSFORERRORCHE
CKING OF DRAM−CONTROL 5IG
NALSBETWEEN 5YST聞MODULI!S
 (システムモジュール間のドラム制御信号の誤りチエ
ツクのための方法及び手段)。
本発明は、高速ディジタルコンピューターの仮想命令キ
ャッシュ(VIC)に関し、特に、VICを制御して可
変長命令を先取りし位置合わせすることに関する。
(従来技術とその問題点) 最も進歩したコンピューターは、命令アクティビティの
全シーケンスをパイプライン方式で実行する。第1の例
はディジタル・イクイプメント社(Digital E
quipment Corporation+  11
1Powder+*ill Road+ Maynar
d、 MA 97154−1418 )が製造、販売し
ているVAX  8600コンピユーターである。VA
X8600用の命令パイプラインは、1985年のディ
ジタル・テクニカル・ジャーナル第1号、第8−23ペ
ージの−T、 Possum他の「vAX 8600シ
ステムの概観」(T。
Possum at al、、  “An Overv
iew of the VAX 8600System
、 ” Digital Technical Jou
rnal、 No、 LAugust 1985. p
p、8−23)に記載されている。命令取り出し、命令
解読、オペランドアドレス生成、オペランド取り出し、
命令実行、及び結果格納のために別々のパイプラインス
テージが設けられている。
パイプライン処理能力を効率良く活用するためには、パ
イプラインの各ステージを占拠させ続けておき、その所
期の機能を、実行されるべき次の命令に対して行なわせ
るのが望ましい。そのために、命令取り出しステージは
命令を検索して、システムクロックの各処理間で次のス
テージにそれを送らなければならない、さもなければ、
命令ストリームの流れ中断はパイプラインの漏れを引き
起こし、時間を浪費するパイプライン全体の再スタート
が必要となる。勿論、パイプラインの目的は、コンピュ
ーターの全体としての速度を高めることである。そこで
、パイプラインを中断させる事態を避けることが非常に
有益である。
しかし、成るコンピューターに使われる命令のセットは
可変長型のものであり、命令バッファーを一層複雑にす
る。換言すると、命令(オブコード)が解読されるまで
、命令バッファーは命令ストリームのうちの次の何バイ
トまでが現在の命令に属するのか「分からない」。従っ
て、命令バッファーは命令ストリームの予め選択された
数のバイトをロードすることにより応答することが出来
るに過ぎないが、これは一つの命令全体を含むことも含
まないこともある。命令解読器は、即値命令に関連する
バイトを消費するだけである。その後、命令バッファー
は、存在するバイトのうちの何個が解読器により使われ
たかを判定し、未使用のバイトを最下位の場所ヘシフト
させ、次に空のバッファー場所に命令ストリームの次の
バイトを充填しなければならない。
主メモリーを参照して命令ストリームのうちの次のバイ
トを検索するには、必然的に複数のクロックサイクルを
必要とする。主メモリーへのアクセスを避けるために、
多くのディジタルコンピューターは、処理装置と主メモ
リーとの間に高速のキャッシュを有する。このキャッシ
ュへのアクセスには処理装置のクロックの小数のサイク
ルを要するに過ぎないが、仮想アドレスを物理的アドレ
スに変換することがしばしば必要となる。命令ストリー
ムへのアクセスを更に速めるために、キャッシュを専ら
命令を格納するためのみに使用するシステムがある。こ
の「命令キャッシュ」へ虫アクセスは、しばしば、命令
がその仮想アドレスで格納されるので、仮想アドレスか
ら物理的アドレスへの変換を伴わない。高速仮想命令キ
ャッシュにおける命令ストリームへのこのアクセスには
、処理装置のクロックの僅かlサイクルを必要とするに
過ぎない。しかし、仮想命令キャッシュは主メモリーの
一部を包含するだけであり、仮想命令キャッシュを参照
するばは、そのたびに、要求されたアドレスを所望のア
ドレスと比較して所望の命令ストリームが存在するか否
か最初に判定し、次に要求された命令ストリームを検索
する必要がある、従って、命令のセントが可変長である
の、命令バッファーは、現在解読されつつある命令がV
IGの参照を必要とするか否か予測することは出来ない
仮想命令キャッシュの参照を多数回行なうことを阻止す
るために、命令解読器に使われると予想される命令スト
リームの後続の予め選択された数のバイトを維持する先
取りバッファーを設ける。
このプロセスは、仮想命令キャッシュへの不可避の参照
に先んじるものである。
仮想命令キャッシュは命令ストリームの一部のみを包含
するものであるので、命令バッファーへの再補充は仮想
命令キャッシュにおいて「ミス」となることがあり、こ
れは主メモリーからの取り出しを必要とする。この様な
主メモリーからの取り出しには多数のクロックサイクル
を要するので、パイプラインを中断させることとなる。
命令を高速で且つ効率的な実行を図るべくディジタルコ
ンピューターの命令パイプラインを確実に満杯状態にし
ておくために、命令バッファーは、命令ストリームの予
め選択された数の後続のバイトを格納する第1及び第2
の先取りバッファーを包含する。第1先取りバッファー
は、その中に包含されている選択された数の順次のバイ
トを検索するために独立にアドレス指定可能である。現
在の解読されているバイトの数に対応する数の命令スト
リームの順次のバイトを解読器に再補充する手段が設け
られる。この再補充手段は、第1先取りバッファーから
命令ストリームのバイトを順次検索し、その検索された
命令ストリームの各バイトに対応する「妥当ビット」を
セットする。第2命令バツフアーが包含しなければなら
ないのは全ての妥当なバイト又は全ての不当なバイトだ
けであるので、第2命令バフフアーのために保持しなけ
ればならないのは唯一の妥当なビットだけである。第1
先取りバッファーには、命令ストリームの予め選択され
た数の後続のバイトが、その中に包含されている命令ス
トリームの各バイトに対応する妥当なビットの全てがク
リアされると、再補充される。同様に、第2先取りバッ
ファーには、それが空になった時に命令ストリームの後
続の予め選択された数のハイドが再補充される。
次に、図面を参照して本発明を具体的に説明する。
(実施例) 本発明は、色々な形で実施することが出来るものである
が、その特定の実施例のみを図示し、以下に説明する。
しかし、本発明は、ここに開示した特定の形に限定され
るものではなく、特許請求の範囲の欄において定義され
た発明の精神及び範囲に属するあらゆる修正、同等物、
及び変形を網羅することが意図されている。
第1図はパイプライン方式コンピューターシステム10
の一部分の最高レベルのブロック図である。システム1
0は、主メモリー14へのアクセスを有する少なくとも
1個の中央処理装置(CPU)12ををする。この種の
システムでは、主メモリー14を共有することにより、
追加のCPUを使用することが出来ることが理解されね
ばならない。
CPU12内では、個々の命令の実行は、複数の小さな
タスクに分解される。それらのタスクは、その目的に最
適化された専用の、別々の独立した機能単位により実行
される。
各命令は結局は相異なる動作を行なうのであるが、各命
令を分解して得られた小さなタスクの多くは全ての命令
に共通である。一般に、命令の実行中、命令取り出し、
命令解読、オペランド取り出し、実行、及び結果格納の
ステップが行なわれる。そこで、専用のハードウェアス
テージを使うことにより、これらステップを重ね合わせ
て命令処理の総量を増やすことが出来る。
パイプラインを通じたデータ経路は、各パイプラインス
テージの結果を次のパイプラインステージに転送するた
めのレジスターのそれぞれの組を含む、これらの転送レ
ジスターは、共通のシステムクロックによりクロックさ
れる。例えば、第1クロツクサイクルにおいて、命令取
り出しに専用されるハードウェアにより第1の命令が取
り出される。第2クロツクサイクルにおいて、その取り
出された命令は転送されて命令解読ハードウェアにより
解読され、同時に次の命令が命令取り出しハードウェア
によって取り出される。第3クロツクサイクルにおいて
、各命令がバイブラインの次のステージにシフトされ、
新しい命令が取り出される。この様にして、パイプライ
ンが満たされた後は、各クロックサイクルの終了時に命
令が完全に実行され終っている。
このプロセスは、製造環境における組み立てラインに似
ている。各労働者は、その作業ステージを通過する各製
品に対して専ら単一のタスクを行なう、各タスクが行な
われてゆくとき、その製品は完成に近づいてゆく。最終
ステージで、労働者がその割当のタスクを行なう毎に、
完成した製品が組み立てラインから出て行(。
第1図に示されている様に、CPU12は少なくとも3
個の機能単位、即ち、メモリーアクセス装置16、命令
装置18、及び実行装置20、に区分されている。
メモリーアクセス装置16は主キャッシュ22を含んで
おり、このキャッシュは、平均では、命令装置18及び
実行装置20が主メモリー14のアクセス時間より速い
速度でデータを処理することを可能にする。このキャッ
シュ22は、データ要素の選択された所定のブロックを
格納する手段と、翻訳バッフブー24を介して命令装置
18から命令を受取って、指定されたデータ要素にアク
セスする手段と、キャッシュ22に格納されているブロ
ック内に該データ要素があるか否か検査する手段と、指
定されたデータ要素を含むブロックのためのデータがそ
の様に格納されていない時に、キャッシュ22内のデー
タの指定されたブロックを読み出す手段とを含む。換言
すると、キャッシュは主メモリーへの「窓」を提供する
ものであり、命令装置18及び実行装置20が必要とす
るかも知れないデータを内蔵する。同様のキャッシュ及
び翻訳バッフブーの較正と動作とはレビー氏及びニック
ハウ不・ジュニア氏の下記の論文に記載されている: Chapter 11 of Levy and Ec
khouse、 Jr、。
Cog*puter Programo+ing an
d Architecture、 TheVAX−11
+  Digital  Equipment Cor
porat’xon、pp。
351−368  (1980)。
若し、命令装置18及び実行装置20が必要とするデー
タ要素がキャッシュ22内に発見されなければ、該デー
タ要素は主メモリー14から得られるが、該プロセスに
おいては、追加のデータを含むブロック全体が主メモリ
ー14から得られてキャッシュ22に書き込まれる。時
間及び記憶スペースの局所性の原理により、次に命令装
置及び実行装置がデータ要素を希望する時には、先にア
ドレス指定されたデータ要素を含むブロック内にこのデ
ータ要素が発見される確立が高い。従って、命令装置1
8及び実行装置20が要求するデータ要素をキャッシュ
22が既に包含している可能性がある。一般に、キャッ
シュ22は主メモリー14より迄かに高い速度でアクセ
スされるので、主メモリー14は、それに応じて、コン
ピューターシステム10の平均的性能を著しく低下させ
ずにキャッシュ22より遅いアクセス時間を持つことが
出来る。従って、主メモリー14は低速で安価な記憶素
子で構成される。
翻訳バッファー24は、最後に使用された仮想アドレス
から物理的アドレスへの翻訳を格納する高速連想記憶装
置である。仮想記憶システムでは、単一の仮想アドレス
への参照が、所望の情報が利用可能となる前に数回のメ
モリー参照を行なわせる原因となることがある。しかし
、翻訳バッファー24を使用した場合には、翻訳は、単
に翻訳バッファー24において「ヒツト」を発見するこ
とに還元される。
命令装置1Bは、プログラムカウンター26と、主キャ
ッシュ22から命令を取り出すための仮想命令キャッシ
ュ(V I G)とを含む。プログラムカウンター26
は、好ましくは、主メモリー14及びキャッシュ22の
物理的記憶場所ではなくて仮想記憶場所をアドレス指定
する。そこで、命令を検索することが出来る様になる前
に、プログラムカウンター26の仮想アドレスを主メモ
リー14の物理的アドレスに翻訳しなければならない。
従って、プログラムカウンター26の内容はメモリーア
クセス装置16に転送され、ここで翻訳バッファー24
は該アドレス変換を行なう。命令は、その変換されたア
ドレスを使ってキャッシュ22内のその物理的記憶場所
から検索される。キャッシュ22は、その命令をデータ
復帰ラインを介してVIC28に送る。
一般に、VIC28は、プログラムカウンター26によ
り指定されたアドレスの所期設定された命令を内蔵し、
アドレス指定された命令は直ちに命令バッファー(IB
tlFFBR) 30への転送に利用可能となる。バッ
ファー30から、アドレス指定された命令は、オプコー
ド及び指定子の両方を解読する命令解読器32に供給さ
れる。オペランド処理装置(OPU)34は、指定され
たオペランドを取り出し、それを実行装置20に供給す
る。
0PU34は仮想アドレスも生成する。特に、0PU3
4は、メモリーソース(読み出し)オペランド及び宛先
(書き込み)オペランドの仮想アドレスを生成する。メ
モリー読み出しオペランドについては、0PU34は、
それらの仮想アドレスをメモリーアクセス装置16に送
り、そこで該仮想アドレスは物理的アドレスに翻訳され
る。その後、メモリーソースオペランドのためのオペラ
ンドををり出すためにキャッシュ22の物理的記憶場所
がアクセスされる。
各命令において、第1のバイトはオプコードを包含し、
後続のバイトは、解読されるべきオペランド指定子であ
る。各指定子の第1バイトは、その指定子のためのアド
レス指定モードを示す。このバイトは普通は半々に分解
され、一方の半分はアドレス指定モードを指定し、他方
の半分は、アドレス指定に使われるべきレジスターを指
定する。
命令は好ましくは可変長を有し、1980年12月23
日に5trccker氏外に発せられた米国特許第4.
241,397号に開示されている様に、同じコードで
色々な種類の指定子を使うことが出来る。
命令を処理する第1段階は、命令のオプコード部分を解
読することである。各命令の第1部分は、該命令で行な
われるべき操作と、使われるべき指定子の個数及び種類
とを指定するオブコードから成る。解読は、命令解読器
32においてテーブル参照法を使って行なわれる。その
後、実行装置20は、指定された操作についての所定の
開始アドレスから、所期設定されていたマイクロコード
を実行してゆくことにより、指定された操作を行なう。
また、解読器32は、命令においてソースオペランド指
定子及び宛先オペランド指定子が生じる場所を決定し、
該命令の実行の前に前処理のために該指定子を0PU3
4に送る。本発明の再補充方法及び装置に使うのに好都
合な命令解読器が、前記のp、 Fite氏外により「
可変長命令アーキテクチャにおける多重指定子の解読」
と題して年  月  日に出願された米国特許出願第 
     号に記載されており、これを参照により本書
の一部とする。
命令が解読された後、0PU34は該オペランド指定子
を分解し、その有効アドレスを計算する;このプロセス
は、GPRを読み出して、場合によっては自動インクリ
メント又は自動デクリメントによりそのGPRを修正す
る操作を含む。オペランドは、その有効アドレスから構
成される装置20に送られ、該実行装置は命令を実行し
、その結果を、その命令についての宛先ポインターによ
り特定された宛先に書き込む。
命令が実行装置20に送られる毎に、命令装置18はマ
イクロコード指名アドレスと、(1)ソースオペランド
を見出すことの出来る実行装置レジスターファイルの場
所と(2)結果を格納するべき場所とについてのポイン
ターの組とを送る。
実行装置20内で、キュー36の組は、マイクロコード
指名アドレスを格納するためのフォークキューと、ソー
スオペランドの場所を格納するためのソースポインター
キューと、宛先場所を格納するための宛先ポインターキ
ューとを含む。これらのキューは、各々、複数の命令に
ついてのデータを保持することの出来るFIFOバッフ
ァーである。
実行装置20もソースリスト38を含み、これはGPR
のコピーとソースオペランドのリストとを内蔵する複数
のポートを有するレジスターファイルである。そこで、
ソースポインターキュー内の項目は、レジスターオペラ
ンドのGPR場所を指すか又はメモリー及びリテラルオ
ペランドについてのソースリストを指す。メモリーアク
セス装置16及び命令装置18は共にソースリスト38
に項目を書き込み、実行装置20は、命令を実行するの
に必要なオペランドをソースリスト38から読み出す。
命令を実行するために、命令装置20は、発令装置40
と、マイクロコード実行装置42と、算術論理装置(A
LU)44と、リタイア装置46とを包含する。
本発明は、パイプライン方式の処理装置に特に有用であ
る。前述した様に、処理装置の命令取り出しハードウェ
アが一つの命令を取り出している間に他のハードウェア
が第2の命令の命令コードを解読し、第3の命令のオペ
ランドを取り出し、第4の命令を実行し、第5の命令の
処理済みデータを格納していることがある。第2図は、
ADDL3  ROlBl 2 (R1) 、R2等の
代表的命令のパイプラインを示す。これは、変位モード
のアドレス指定を使う長ワード加算である。
この命令のバイブライン方式実行の第1ステージにおい
て、該命令のプログラムカウントが作られる;これは普
通はプログラムカウンター(PC)26を先の命令から
インクリメントするか、又は分岐命令の目標アドレスを
使うことによって行なわれる。次に、パイプラインの第
2ステージにおいて、VIC28にアクセスするために
PCが使われる。
パイプラインの第3ステージにおいて、キャッシュ22
から命令データを得て命令解読器32により使用し、或
は該データをIBUFFER30にロードすることが出
来る。命令解読器32は、詳しく後述する様に、単一の
サイクルでオプコードと3個の指定子とを解読する。R
O及びR2の数はALU44に渡され、R1の数はバイ
ト変位と共に解読サイクル終了時に0PU34に送られ
る。
第4ステージにおいて、0PU34は、そのGPRレジ
スターファイルの場所R1の内容を読み、その値を指定
された変位(12)に加え、その結果として得られたア
ドレスをアドレス生成ステージの終了時にOP  RE
AD要求と共に翻訳バッファー24に送る。
第5ステージにおいて、メモリーアクセス装置16は、
第4ステージにおいて生成されたアドレスを実行するべ
く選択する。翻訳バッファー24を使って、メモリーア
クセス装置16はアドレス翻訳ステージにおいて仮想ア
ドレスを物理的アドレスに翻訳する。次にその物理的ア
ドレスはキャッシュ22をアドレス指定するために使わ
れるが、それはパイプラインの第6ステージにおいて読
まれる。
パイプラインの第7ステージにおいて、命令はALU4
4に対して発せられ、該ALUは二つのオペランドを加
え合わせて、その結果をリタイア装置46に送る。
第4ステージにおいて、R1及びR2についてのレジス
タ一番号と、メモリーデータについてのソースリスト場
所へのポインターとが実行装置に送られ、ポインターキ
ューに格納される。次にキャッシュ読み出しステージに
において、実行装置はソースリスト中の二つのソースオ
ペランドを探す。この特別の例において、それはレジス
ターデータROのみを発見するが、このステージの終了
時に該メモリーデータは到着して、該レジスターファイ
ルの無効にされた読み出しと置換される。
この様にして、両方のオペランドが命令実行ステージに
おいて利用可能となる。
パイプラインの第8のリタイアステージにおいて、結果
データはリタイアキューの次の項目と対にされる。数個
の機能実行装置が同時に作動していることがあり得るが
、単一のサイクルで唯一の命令がリタイアさせられる。
例示されたパイプラインの最後の第9ステージにおいて
、データは実行装置20及び命令装置18の両方のレジ
スターファイルのGPR部分に書き込まれる。
ここで第3図を参照すると、仮想命令キャッシュ(VI
C)28のブロック図が示されている。
VIC28は、4グループの自己タイミング式ランダム
アクセスメモリー(STRAM)から成り、主メモリー
14への窓として作用する。この点に関してVIC2B
は主キャッシュ22と同様に機能する。VICSTRA
M(7)第1グループは、主キャッシュ22から検索さ
れた実際の命令ストリーム(ISTREAM)のための
記憶スペースを提供するデータSTRAM50である。
詳しく言えば、データSTRAM50は各々64ビット
幅を持った1024個の記憶場所を包含する。データS
TRAM5 Qの大きさから、ISTREAMがカッド
ワード(8バイト)パケットとして検索されることが明
らかであろう。従って、主キャッシュ22とVIC28
との間のデータ経路も64ビット幅であり、I STR
EAMのカッドワードを各システムクロックサイクルで
転送することが出来る。
PC26は、I STREAMの各カッドワードをアド
レス指定するために32ビット仮想アドレスのビット1
2:3をデータSTRAM50に送る。ビット2:0は
、各カントワード内の個々のバイトをアドレス指定する
ためにのみ必要なものであるので、不要である。VIC
28を適切に作動させるためには、個々のバイトをアド
レス指定出来ることは必要でない。むしろ、VIG2B
においてアドレス指定することの出来るISTREAM
の最小のインクリメントはカッドワードである。
果に、ISTREAMを格納するために利用出来るのは
1024カツドワード記憶場所に過ぎないので、上位ビ
ット31:13はデータSTRAM50のアドレス指定
には使われない。従って、1024個のデータ記憶場所
の各々に唯一のアドレスを提供するには10ビット12
:3で充分である(即ち、2”= 1024)。
しかし、データSTRAM50をアドレス指定するのに
上位のビット31:13は使われないので、同一のデー
タSTRAM記憶場所に格納されなければならないカン
トワードが複数個ある。例えば、アドレス111111
11111111111110000000000にあ
るカッドワードは、アドレス011111111111
11111110000000000にあるカッドワー
ドと同じデータSTRAM記憶場所に格納される。
両方のアドレスが同じ下位10ビットを共有するので、
同じデータSTRAM記憶場所を共有する。
実際、各データSTRAM記憶場所は1.048.57
6(2”=1.048.576)個のカッドワードのう
ちのどの1個をも記憶することが出来る。
従って、これらのカントワードのうちのどれをデータS
TRAM記憶場所の各々に格納するかを決定するために
、−組のタグSTRAM52が設けられている。タグS
TRAM52は、カッドワードアドレスの上位19ビッ
ト31:13を記憶する。しかし、ISTREAMは4
個のカッドワードブロックで主キャッシュ22から検索
される。
換言すれば、成るブロックの第1カントワードについて
の主キャッシュ22に対する要求は、後続の3個のカン
トワードをも主キャッシュ22から戻させる結果をもた
らす。ブロックでのISTREAMの検索は、時間及び
記憶スペースの局所性の原理を満たし、VIC28の全
体としての動作を促進する。従って、1024個のデー
タSTRAM記憶場所は、僅か256個のタグSTRA
M記憶場所(各カッドワードブロックに対して1個)に
より特定される。そこで、タグSTRAM52は256
個の19ビット記憶場所を包含し、この256個の記憶
場所(2’=256)の各々を特定するのに仮想アドレ
スの8ビット(12: 5)で充分である。
VIC28の動作は、I STREAMを主キャッシュ
22から検索するのに使われる方法によって促進される
。I STREAMについての要求は常に位置合わせさ
れたカッドワードであり、ブロック内のどのカッドワー
ドについてのものであることも出来る。しかし、主キャ
ッシュ22は、要求されたカッドワードと、ブロックを
満たす次の全てのカッドワードとで応答するのみである
。ブロック内の要求以前のカッドワードは主キャッシュ
22から戻されない。例えば、若しVIC28が成るブ
ロック内の第3カツドワードを要求すれば、第3及び第
4カツドワードのみが主キャッシュ22から戻されてデ
ータSTRAM50に書き込まれる。I STREAM
を検索するこの方法は二つの理由で採用される。第1に
、そのブロック内の第1カツドワードではなくて、要求
されたカッドワードを最初に戻すことにより、要求され
たISTREAMアドレスが直ちに利用可能となり、臨
界応答時間が向上する。第2に、ブロックの残りは殆ど
使用されないことを動作モデルが示している。
データSTRAM50内にはブロックの一部のみが存在
し得るので、どのカッドワードが妥当であるかを絶えず
注意していることが必要である。
従って、カッドワード妥当STRAM54が設けられて
いる。各カントワードについて妥当ビットがデータST
RAM50内に維持される。カッドワード妥当STRA
M54はタグSTRAM52と同様に組織されていて、
256個の4ビット記憶場所を包含する。各記憶場所は
データSTRAM50に格納されているデータの4個の
カッドワードブロックに対応し、4個の妥当ビットの各
々は該ブロック内のカッドワードに対応する。そこで、
タグSTRAM52と同様に、カッドワード妥当STR
AMは仮想アドレスの8ビット12:5によりアドレス
指定される。
しかし、IBUFFER30が要求した特定のISTR
EAMカントワードが妥当であるか否か判定するために
は、個々のカッドワード妥当ビットも個別にアドレス指
定可能でなければならない。
マルチプレクサ56がカッドワード妥当STRAM54
のビット出力に接続されている。マルチプレクサ56の
選択入力は仮想アドレスのカッドワード特定ビット4:
3に接続されている。例えば、記憶場所ooooooo
oooooooooo。
01111111101000に格納されているカッド
ワードについてのI BUFFER30からの要求は、
カントワード妥当STRAMの記憶場所1111111
1に格納されている4個のカッドワード妥当ビットがマ
ルチプレクサ56に送られるという結果をもたらす。仮
想アドレスのビット4:3は、第1カツドワード(記憶
場所01)が所望のカッドワードであることを示す。そ
こで、マルチプレクサ56の選択ラインは、選択された
カッドワードに対応するカントワード妥当ビットをマル
チプレクサ出力に送らせる。
最後に、VIC−3TRAM58の第4グループは、デ
ータSTRAM50に格納されている各ブロックについ
ての妥当ビットを包含する。そこで、ブロック妥当ST
RAM5Bは、256個の1ビット記憶場所を包含し、
仮想アドレスのビット12:5によりアドレス指定され
る。VIC28は、ブロック内のどのカッドワードが妥
当であるかを知らなければならないのみならず、そのブ
ロック自体が妥当であるか否かを確かめなければならな
い。この時、選択されたカッドワードがIBUFFER
30に転送されるのをVIC28が許す前にブロック妥
当ビットがセットされなければならないことを理解すれ
ば充分である。しかし、ブロック妥当STRAMは実際
にはVIC28の動作をフラッシュ時に促進するために
二組のSTRAMから成っている。何時でも、二組のS
TRAMのうちの選択された一つが、VI028内のデ
ータの現在の状態を反映するブロック妥当ビットを格納
している。VIC28内のデータのアドレス指定された
ブロックの妥当性を表わす、アドレス指定されたブロッ
ク妥当ビットは、マルチプレクサ236により、STR
AMの第1のmCA組)から(7) rBLOcK  
A  VALID Jビットとして、又はSTRAMの
第2の組(B組)からの「BLoCK B vALID
」ビットとして選択される。VIC28のこの特徴につ
いては、第9図に示されている回路の動作の説明と関連
させて詳しく説明する。
I STREAMの選択されたカッドワードについての
I BUFFER要求時に、PC26に包含されている
仮想アドレスはIC2Bに送られる。
VI028は、この要求に応じて、その要求されたカッ
ドワードがデータSTRAM50内に存在するか否か判
定し、若し存在するならば、それが妥当であるか否か判
定する。PC仮想アドレスのビット31:13は19ビ
ット比較器60の1人力に送られる。比較器60への第
2人力はタグSTRAM52の出力に接続されている。
前以て、データSTRAM50に格納されているカッド
ワードのアドレスのビット31:13がタグSTRAM
52に格納されである。従って、これらの、前以て格納
されたビット31:13は、比較器60に第2人力とし
て与えられる。若しそれら二つのアドレスが一致すれば
、比較器60のアサートされた出力が1人力として3人
力ANDゲート62に送られる。同時に、該ブロック及
びカッドワード妥当ビットもANDゲート62に入力と
して送られる。従って、これら三つの信号のいずれかが
アサートされなければ、ANDゲート62はMISS信
号を生成する。逆に、これら三つの信号が全てアサ\−
トされれば、ANDゲート62はHIT信号を生成する
。MISS信号は主キャッシュ22に対して要求を新た
に出させ、BIT信号はデータSTRAM50から選択
されたデータのカントワードを送らせる。
PC26は実際には数個の別々のプログラムカウンター
から成る。各システムクロックサイクル時に、2個のP
C(PREFETCHPC又はMTAG)のうちの1個
が選択されて、その仮想アドレスがVIC28に送られ
る。一般に、PREFETCHPCに内蔵されている仮
想アドレスが選択されてVIG28に送られる。
PREFETCHPCは、常に、IBUFFERが受け
入れそうな次のカントワードを指している。
IBUFFERがVIC28からのISTREAMを受
け入れる毎に、PREFETCHPCは順次コードで1
カツドワードだけインクリメントされる。ISTREA
Mが分岐する時、PREFETCI(PCに正しい宛先
アドレスがロードされる。
しかし、I STREAMが主キャッシュ22から要求
され送られる時には、MTAGに内蔵されている仮想ア
ドレスが選択されてVIC28に送られる。VIC28
が主キャッシュ22からISTREAMの複数のカッド
ワードを受け取った時、VIC28のアドレスは主キャ
ッシュ応答の各サイクルで1カツドワードだけインクリ
メントされなければならない。PREFETCHpcは
、若し命令解読器32が、常に、IST’REAMが主
キャッシュ22から到着すると、その全てを消費するな
らば、PREFETCHPCはこの目的に役立つ。実際
上、これは常に可能というわけではない。従って、PR
EFETCHPCから独立した第2のpcが、VIC2
8内のISTRBAMを格納するために使われる。主キ
ャッシュ22からの応答が完了すると、VIC2Bをア
ドレス指定するためにPREFETCHPCが再び使わ
れる。主キャッシュ22に対する要求が無い時には、M
TAGにはVICアドレスの先の値がロードされる。
ここで第4図を参照すると、IBUFFER30が示さ
れている。IBUFFER30は解読のためにデータを
位置合わせし、後続の順次命令を先取りすることによっ
て命令装置18の処理速度を高める機能を行なう。IB
UFFER30は、ISTREAMの選択されたカント
ワードを検索し、命令解読器32が、ゼロバイト場所に
位置するオプコードと共に命令を受け取ることとなる様
にそのカントワードを位置決めする。ISTREAMを
再位置決めするというこの複雑な仕事を達成するために
、IBUFFER30は5個の主な機能部分、即ち、I
BEX64&IBEX66、ROTATOR68,5H
IFTER70、MERGE  MULTIPLEXE
R72、及びIBUF74に分かれている。
ISTREAMのより多くのバイトを内蔵する様に命令
解読器32のサイズを単純に大きくする代わりに、1対
の先取りバッファーIBEX64及びIBEX2 66
が解読器32とVIC2Bとの間に配置されて、Eる。
IBEX64及びIBEX266は、VIG2BとIB
UF74との間に機能的に位置するカッドワードバッフ
ァーであり、解読器32が現在の命令を処理している間
にISTREAMの次のカントワードを検索するもので
ある。この先取りは、普通は、解読器32が作動してい
る時に命令取り出しを行なうことによってVICアクセ
スに要する時間を隠す。VIC28に格納されているカ
ッドワードのいずれも、IBEX64及びIBEX66
に制御可能に格納可能である。前述した様に、PREF
ETCHPCはISTREAMのカッドワードを選択し
送るVIC2Bの動作を制御する。PREFETCHP
Cにより現在選択されているカッドワードはIBEX6
4に格納され、I STHEAMの次のカッドワードは
VIC28から検索されてIBEX266に格納される
IBEX64及びEBEX2 66の目的は、ISTR
EAMの後続の2個のカッドワードを先取りして、各命
令が命令解読器32により消費されてゆくに従ってI 
STREAMのこれらのバイトを順次提供してIBUF
74を満たすことである。本コンピューターシステムは
好ましくは可変長型の命令セットを採用するものである
ことに注意するべきである。従って、命令解読器32が
実際に命令のオプコードを解読するまでは、IBOFF
ER30は、その命令に専用されるバイトの個数を「知
らない」。従って、IBUFFER30は、何個のバイ
トが命令解読器32によって消費され、IBUFFER
30により再充填されなければならないこととなるかを
「知らない」。そこで、IBEX64、IBEX2 6
6及びVIC28を制御する論理は、解読器32を満た
すのに必要なバイトの個数、所望のバイトを内蔵する場
所、及びそれらのバイトが妥当であるか否かを判定する
ことが出来なければならない。
IBEX64、IBEX2 66、及びVIC28を操
作するための制御論理はマルチプレクサ76を包含し、
制御論理78はマルチプレクサ76のり選択入力を操作
する。IBEX64、IBEX2 66、及びVIC2
Bは、各々、如何なる入力も制御論理78により選択さ
れて8バイト幅データ経路を介してローチーター68及
びEBEX64に送られることが出来る様にマルチプレ
クサ76の入力に接続された8バイト幅データ経路を包
含する。IBEX2 66は、VIC28に直結され、
その間の8バイト幅データ経路を介してI STREA
Mの次のカントワードを受け取る。マルチプレクサ76
及び制御論理78の動作を、第9図及び第10図の説明
と関連させてて詳しく説明する。
マージ・マルチプレクサ72、ローチーター68及びシ
フタ70は、相互に作用し合って、9バイト命令解読器
32をISTREAMの後続の9個のバイトで満たして
おく。解読器32が各命令の解読ステージを完了すると
、それらの消費されたバイトはシフタ70によりシフト
アウトされ捨てられる。ローチーター68はI STR
EAMの後続のバイトを提供して、捨てられたバイトと
置き代える。この様にして、命令バッファー30はI 
STREAMの次の少なくとも9バイトを命令解読器3
2に提供する試みをなす。従って、現在の命令の長さと
は無関係に、解読器32は、大多数の命令(9バイトよ
り多くのバイトを必要とする命令は割合に少ない)につ
いては命令全体が存在していて解読に利用することが出
来ることが保証される。
IBUG74は、解読器32がISTREAMを受け入
れるべく利用可能となるまでマージ・マルチプレクサ7
2の結果を格納するための9バイトレジスターである。
更に、IBUF74の出力はシフタ70の入力に接続さ
れている。
第5図を参照すると、命令解読器32への経路及び命令
解読器32からの経路が詳しく示されている。数個のオ
ペランド指定子を同時に解読するために、IBUF74
は、現在解読されている命令の9バイトに及ぶ値を伝導
するデータ経路80により命令解読器32に接続されて
いる。各バイトの8ピントには、該バイト中の単一ビッ
トエラーを検出するためのパリティ・ビットと、IBt
lF74が実際にプログラムカウンター26により要求
された通りにVIC28からのデータで満たされている
か否かを示す妥当データ゛フラグとが随伴している。
命令解読器32は、解読されるオプコードと、IBUF
74内の妥当なデータの量と、パイプラインの下流側ス
チージがより多数の指定子を受け入れることが出来るか
否かとによって異なる個数の指定子を解読する。詳しく
言えば、命令解読器32はオプコードを検査して、その
命令に随伴している後続のバイトの個数を判定する。次
に解読器32は妥当データフラグを検査して、解読する
ことの出来る指定子が何個随伴しているかを判定し、次
にそれらの指定子を単一のサイクルで解読する。命令解
読器32は、解読されたバイトの個数を示す信号を、こ
れらのバイトをIBUF74から除去するために、送る
。例えば、若し該オプコードに4バイトの指定子が随伴
していれば、該解読器は、これら4バイトが妥当である
ことを確かめるために該妥当バイトを検査し、次にそれ
らの指定子を解読する。その後、該解読器は、シフタ7
0に命令して、該オブコード及びその消費された4バイ
トを除去させると共に上位4バイトを下位4バイト記憶
場所へ移動させる。このシフシプロセスにより、次のオ
ブコードがIBUF74のゼロバイト記憶場所へ移動さ
れる。
IBUF74は、典型的に命令中に見出される種類の少
なくとも3個の指定子を保持することが出来る限りは、
命令全体を保持するのに充分な大きさである必要はない
。IBUF74のバイト0位置がオプコードを保持し、
該命令の他のバイトがIBUF74からシフトにより出
し入れされるならば、命令解読器32は幾分簡単となる
。実際上、IBUF74はバイトOにオプコードを保持
し、バイト位置工ないし8については先入れ先出しバッ
ファーとして機能する。システムクロックの各サイクル
において単一の命令についての指定子のみが解読される
という作動基準によっても命令解読器32は単純化され
る。従って、命令についての全ての指定子が解読されて
しまうこととなるサイクルの終了時に、命令解読器32
は、次のオプコードがバイト0位置に受け入れられる様
にIBUF’74のバイト0位置から外へオプコードを
シフトさせるために「シフト・オブコード」信号をシフ
タ70へ送る。
VtC2Bは、好ましくは、複数のバイトのデータのブ
ロックで命令データを送受する。該ブロックのサイズは
、好ましくは、該ブロックがプログラムカウンター26
により提供されるアドレスの成る個数の最上位ビットに
より指定されるメモリーアドレスを有する様に2の累乗
である。例えば、好ましい実施例では、各ブロックは3
2バイト又は4カツドワードから成り、32ビットアド
レスによりアドレス指定される。そこで、ビット31−
5は各ブロックに特有である。更に、命令が可変長であ
るので、I STREAM内のオブコードのアドレスは
該ブロック内の色々な位置に存在することが出来る。キ
ャッシュからの命令データのブロック内のどのバイト位
置にも存在することの出来る、実行されるべき次のオプ
コードをIBUF74のバイト0にロードするために、
ローチーター68はVtC2BからIBUF74へのデ
ータ経路に配置される。ローチーター68は、シフタ7
0と共に、クロスバ−スイッチから成る。
VtC2Bからのデータ経路は8個の並列バスを包含し
、1個のバスがI STREAMの各バイトのために設
けられている。
一般に、IBUF74内の妥当なバイトの個数に注意し
ておくことが必要である。いずれの場合にも妥当なバイ
トの個数は、IBUF  VALIDCOUT81と称
するレジスターに維持される。
このレジスターの値は、先のIBUF  VALIDC
OUTから、シフトされたバイトの個数を差し引き、且
つMERGE  MUX72を通して併合された新しい
バイトの個数を加えて得られる数である。同様に、何個
のバイトがIBEX64に残っているかを知る必要があ
る。IBUF74に送り込まれてあったバイトは全て不
当であると層像される。IBUF64が満杯になると、
データのカントワードからの残りのバイト又は完全な新
しいバイトがIBEXに格納される。IBEX内の妥当
なバイトの個数は、IBEX  VALIDCOUTと
称する「仮想」レジスターに格納される。これはハード
ウェアレジスターではなくて、IBEXがMUX76内
へ選択されるならば先のIBEX  VALID  C
0UTからIBUF74内に併合されたバイトの個数を
引いて得られる数を生成し、IBEX2又はvrcがM
UX76内へ選択されるならば8バイトからI BUF
74内へ併合されたバイトの個数を引いて得られる数を
生成する組み合わせ論理である。
プログラムの開始時に、又は分岐又はジャンプが実行さ
れた後には、IBUF74にVIC28から全く新しい
データをロードすることが望ましい。この目的のために
、マージ・マルチプレクサ72を制御する組み合わせ論
理82は0のIBUFVALID  C0UNTを受け
取るので、選択ライン5o−ssの全てはアサートされ
ず、マージ・マルチプレクサ72はBOないし88人力
のみからデータを選択する。IBUF74内の命令は全
て不当であるので捨てられ、ローチーター68に内蔵さ
れている新しい命令のみがIBUF74にに与えられる
VIC28からIBUF74に新し1.N ISTRE
AMをロードするために、マージ・マルチプレクサ72
が使われて、シフタ70からの選択個数のバイトと併合
されるべきローチーター68からのバイトの個数を選択
する。若し信号5HIFT   OPがアサートされれ
ば、シフタ70の出力は、IBUF74のバイト0ない
し8を、シフトするべき数だけシフトダウンして得られ
るものとなり、逆に、若し5HIFT  OPがアサー
トされなければ、該シフタの出力はIBUF74のバイ
ト0が位置AOにあって、IBUF74のバイト1ない
し9をシフトするべきバイトの個数だけシフトダウンさ
せたものとなる。
IBUF74が始めニロードされる時、VIC28から
のデータのオブコードに対応するアドレス間にオフセッ
トがある。詳しくは、このオフセントはプログラムカウ
ンター26の最下位ビットにより与えられる。第5図に
示されている様に、ISTREAMのカッドワード(8
バイト)がローチーター68に送られ、斯くしてふぐ化
26からの最下位3ビットを使ってオプコードバイトが
マージ・マルチプレクサ72のBO大入力送られる。例
えば、若しプログラムがBOD16に、卯ちブロック内
の第2カツドワードの5番目のバイトに分岐する場合、
該カッドワードアドレスはBO316であり、最下位3
ビットは5であるので、VICが該カントワードを提供
する時ローチーター67は5バイト回転してバイト5を
マージ・マルチプレクサ72のBO大入力送る。
しかし、一般の場合、この回転値は次の公式:%式% BYTES  To  5HIFT)を使って計算され
る。
例えば、IBUF74に9個の妥当バイトがあり、I 
BEXに3個の妥当バイト(カッドワードのバイト5.
6.7)があり、シフトするべきバイトの個数(No、
  BYTES  To  5HIFT>が2であれば
、回転値はマイナス2であるので、ローチーターは2だ
けシフトアップされる(結果が負であるので)。そこで
、ローチーター68はIBEX64のカッドワードのバ
イト5をマージ・マルチプレクサ72のB1人力に送り
、バイト6をB8に送る(バイト7は、併合されないの
で重要ではないが、BO大入力送られる)。正の回転値
はローチーター68をシフトダウンさせる。そこで、ロ
ーチーター68を制御する組み合わせ論理90は関連の
回転値を計算する。
組み合わせ論理82におけるマージ・マルチプレクサの
制御手段は、シフタからの関連のバイトがIBUF74
に送られる様にマージ・マルチプレクサ72のために個
々の選択ライン5o−ssを生成する。若し5HIFT
  OPがアサートされなければ、SOは常にAO人力
を選択するので、オプコードバイトはIBUF74のバ
イト0に留まる。残りの選択は次の様に計算される:M
ERGE  VALUE= I BUF  VALID
COUNT−No、BYTES  To  5HIFT
:MERGE  VALUEより小さな選択(Sl−3
8)は全てシフタ70を選択し、残りはローチーター6
8を選択する。
例えば、IBUF74に8個の妥当なバイトがあり、シ
フトするべき個数が3であれば、併合値は5であるので
、Sl、S2、S3、S4はシフタ70からの出力を選
択するが、S5、S6.S7、S8はローチーター68
からの出力を選択する。
ローチーター68は8バイトのデータを受け取るが、9
バイトのデータをマージ・マルチプレクサ72に送るの
で、BO−88人力に送られる9個のバイトは決して全
て妥当ではない。9番目のバイトは第1バイトと同じデ
ータを得るが、それは回転値が負である時に限って妥当
である。
オブコードカ月BUF74のバイト0位置にロードされ
ると、命令解読器32はそれとI BUF74内の他の
バイトとを検査して、3個にのぼるオペランド指定子を
同時に解読することが可能であるか否かを判定する。命
令解読器32は更にソースオペランドを宛先オペランド
から分離する。
特に、システムの単一のサイクルで、命令解読器32は
2個までのソースオペランドと1個の宛先オペランドと
を解読することが出来る。各サイクル中にソースオペラ
ンドが解読されるか又は宛先オペランドが解読されるの
かを示すフラグが命令解読器32から0PU34に送ら
れる。
命令解読器32は1サイクル当り3個にのぼるレジスタ
ー指定子を同時に解読する。レジスター指定子が解読さ
れる時、そのレジスターアドレスは転送バスTR上に置
かれて、0PU34内の転送装置92を介してソースリ
ストキュー38に送られる。
命令解読器32は1サイクル当り1個の短いリテラル指
定子を解読することが出来る。VAX命令アーキテクチ
ャに従えば、この短い指定子はソースオペランド指定子
でなければならない。命令解読器32が短いリテラル指
定子を解読する時、その短いリテラル・データはバス(
E X)を介して0PU34内の拡張ユニット94に送
られる。
好ましくは、命令解読器32は1サイクル当り1個の複
雑な指定子を解読することが出来る。複雑な指定子デー
タは命令解読器32により汎用バス(GP)を介して0
PU34内の汎用装置96に送られる。
命令のための指定子が全て解読されると、命令解読器3
2はrshift opJ信号をシフタ70に送る。I
BUP74が妥当なオブコードを受け取ると、命令解読
器は直ちにマイクロプログラム「フォーク」アドレスを
キュー36内のフォークキューに送る。
ここで第6図を参照すると、シフタ70の略図が示され
ている。図において、マージ・マルチプレクサ72のA
 o −A sバイト入力は、シフタ70を構成するマ
ルチプレクサのバンクの8ビット出力に接続されている
。シフタ700目的はI BUF 74に内蔵されてい
る命令ストリームの未使用部分を、命令解読器32によ
り先に消費されたIBUF74のバイトの中に送り込む
ことであることを思い出さなければならない。例えば、
若し先のサイクル中に、命令解読器32がIBUF74
の最下位3バイト(0,1,2)を使用したならば、次
の命令を解読器32に適切に与えるためには、残ってい
る妥当な6個のバイト(3−8)をIBUF74の最下
位6バイト内にシフトさせることが好ましい。
従って、消費された下位バイト最早解読器32に直接使
われることはないので捨てられる。そこで、シフタ70
は高位バイトを下位バイト位置へ動かすだけでよ(、下
位バイトを回転させて高位バイト位置へ移動させること
はしない、この要件により、各バイト位装置が、比較的
に高い位置からシフトされて来るバイトを受け入れるだ
けとなるので、高位バイトのためのシフタ構成が単純と
なる0例えば、バイト位置6は、その高位側の2個の位
?1!(7及び8)からシフトされるバイトを受け取る
だけであり、バイト位置1はその高位側の7個の位置(
2−8)からシフトされるバイトを受け取る。
このプセスをもっと良く説明するために、マルチプレク
サのバンクの一つ102の内部構成を説明する。マルチ
プレクサバンク102はIBUF74からバイト6.7
及び8を受取り、出力をマージ・マルチプレクサ72の
A、入力に送る。マルチプレクサバンク102内には8
個の3人力マルチブレクサ102a−102hのグルー
プがある。マルチプレクサ102aは入力バイト6.7
及び8の各々のゼロピットをそれぞれ入力場所0.1及
び2において受け取る。同様に、マルチプレクサ102
b−102hは3個の入力バイトのビット1−7をそれ
ぞれ受け取る。マルチプレクサ102a−102hの各
々の選択ラインは命令解読器32に接続され、3ビット
信号rnumber t。
5hift J  (rシフトする個数」)を伝導する
。このrnumber to 5hift J信号は、
勿論、命令解読器32が消費したバイトの個数である。
従って、マルチプレクサ102a−102hの選択ライ
ンが選択されたバイトの8ビットを全て送ることが分か
る。例えば、若し解読器32がISTREAMの2バイ
トを消費すれば、IBUF74の内容は2バイトだけシ
フトされ、バイト8は第6バイト位置へ動かされる。従
って、r nus*berto 5hiftJ信号は値
2にセットされ、これによりマルチプレクサ102a−
102hへの第3人力を選択する。そこで、バイト8位
置が選択されてマージ・マルチプレクサ入力Ahに送ら
れる。
残りのマルチプレクサバンク104−114もほぼ同様
で、入力バイトの個数が異なるだけである。マルチプレ
クサバンク114の出力は、マージ・マルチプレクサ7
2のA、入力に接続されている。マルチプレクサ114
への入力は、IBtlF74のバイト7及び8のみを含
む。マルチプレクサバンク112の出力は、マージ・マ
ルチプレクサ72のA、入力に接続されている。マルチ
プレクサ112への入力は、IBUF74のバイト5.
6.7及び8を包含する。マルチプレクサバンク110
の出力は、マージ・マルチプレクサ72のA4人力に接
続されている。マルチプレクサ110は、IBUF74
のバイト4.5.6.7及び8を包含する。マルチプレ
クサバンク108の出力は、マージ・マルチプレクサ7
2のA3人力に接続されている。マルチプレクサ108
への人力は、IBUF74のバイト3.4.5.6.7
及び8を包含する。マルチプレクサバンク106の出力
は、マージ・マルチプレクサ72のA2人力に接続され
ている。マルチプレクサ106への入力は、I BUF
 74のバイト2.3.4.5.6.7及び8を包含す
る。
マルチプレクサバンク104は、その出力がマージ・マ
ルチプレクサ72及びIBUF74のバイト位置に直接
接続されている点において、他のマルチプレクサバンク
とは僅かに異なる。バイト0の場合には、シフタ70は
、より高位のバイトのうちのいずれをも0バイト位置へ
動かすことが出来ることに加えて、シフタ70は残りの
バイトがシフトされる間現在のOバイトを保留すること
が出来なければならないという要件があって、−層複雑
である。この特徴は、バイト0がオブコードを内蔵する
ので、望ましい。そこで、若し指定子がIBUF74の
長さを越えて延在するならば、消費されたバイトが外に
シフトされると共に新しい指定子が中に回転移動させら
れなければならないが、オブコードは、命令全体が解読
されるまで留まっていなければならない。従って、マル
チプレクサ104への入力は、IBUF74のバイト1
.2.3.4.5.6.7及び8を包含する。
しかし、マルチプレクサ104の出力は、マルチプレク
サのバンク116の1人力に送られる。マルチプレクサ
バンク、116への第2人力はIBUF74のθバイト
位置に接続されている。単ビット選択ラインがORゲー
ト118を通して命令解読器32に接続されていて、命
令解読器32がrshift opcodeJ信号又は
rFD 5hift  opcodeJ信号を発する時
には該選択ラインがアサートされると共にマルチプレク
サ104の出力がマージ・マルチプレクサ72のAO大
入力送られる様になっている。
第7図は、ローチーター68の略図である。図において
、マージ・マルチプレクサ72のBe−B、バイト入力
はローチーター68を構成するマルチプレクサのバンク
の8ビット出力に接続されている。ローチーター68の
目的は、マージ・マルチプレクサ72がIBUF74を
シフタ70の妥当な下位バイトとローチーター68の回
転させられた高位バイトとで満たすことが出来る様にI
 STREAMの次のカッドワードを回転させることで
あることを思い出さなければならない。更に、シフタ(
第5図の70)とは異なって、′ローチーター68内の
各マルチプレクサバンクは、どの入力バイトもその出力
から送ることが出来る。
例えば、若し、先のサイクル中において命令解読器32
力月BUF74の最下位3バイト(0,1,2)を使え
ば、シフタ70は、残りの妥当な6個のバイト(3−8
)をマージ・マルチプレクサ入力Ao  Asの下位6
バイト(0−5)内に移動させる。そこで、ローチータ
ー68は、その下位3バイトを位置6.7、及び8内に
回転移動させるので、マージ・マルチプレクサ72はA
o−AB及びB b −B sを組み合わせてIBUF
74を満たすことが出来る。マルチプレクサ76から利
用可能な下位3バイトは、IBEX2 66又はVIC
28の下位3バイト又はIBEX64のいずれかの連続
する3バイトであることが出来る。
このプログラムをもっと良(説明するために、マルチプ
レクサバンクの一つ132を示す。マルチプレクサバン
ク132は、第4図、第9図及び第10図に関して説明
する様に、VIC28、IBEX64又はIBEX2 
66からバイト〇−7を受け取る。マルチプレクサバン
ク132の出力は、マージ・マルチプレクサ72の84
人力に送られる。マルチプレクサバンク132内には8
個の8人カマルチプレクサ132a−132hのグルー
プがある。マルチプレクサ132aはマルチプレクサ1
32a入力場所4−3において入力バイトO−7の各々
の0ビットをそれぞれ受け取る。同様に、マルチプレク
サ132b−132hは8個の入力バイトの全てのビッ
ト1−7をそれぞれ受け取る。マルチプレクサ132 
a −132hの各々のための選択ラインは、第5図に
関して説明した3ビット回転値を受け取る。この信号は
、勿論、I BUF 74を適切に満たすためにIST
RBAMがそのバイト位置個数だけ回転させられるべき
バイト位置個数である。
若し回転値がローチーター制御論理90により3の値に
選択されたならば、マルチプレクサ132a−132h
は各々位置3にある入力を選択する。
従って、入力バイト7のビット0−7が選択されてマー
ジ・マルチプレクサ72の84人力に送られる。従って
、3バイト回転の要求に応じて、入力バイト7がバイト
位置4に送られる。
残りのマルチプレクサバンク134−148はマルチプ
レクサバンク132とほぼ同様であり、入力バイトがマ
ルチプレクサバンク132−148に接続される順序が
異なるだけである。例えば、3バイト回転を求める同じ
要求により、マルチプレクサバンク140は6番目の入
力バイトをバイト位置3(B3)へ送る。
ローチーター68及びシフタ70の動作の組み合わせ効
果を考察する。IBUF74及びIBEX64が共に満
杯であると仮定する。解読器32がIBUF74の下位
3バイトを消費したとも仮定する。解読器32はrnu
a+ber to 5hift J信号として3の値を
生成する。シフタ70は、この信号に応答して、マージ
・マルチプレクサ72の位置A、−Aeがそれぞれ3.
4.5.6.7.8.6.7.8を受け取る様にI S
TREAMを再配置する。同時に、ローチーター制御論
理90は回転値をローチーター68に送る。この回転値
はその値マイナスにセットされる。従って、ローチータ
ー68は、マージ・マルチプレクサ72の位置BoBm
がそれぞれ位W3.4.5.6.7.8.0.1.2を
受け取る様に、その内容を回転させる。従って、マージ
・マルチプレクサは首尾。
よく二つの入力を組み合わせて、入力Ao  As及び
B 6− B sを選択することによりl5TREAH
の次の9バイトをIBUF74に送る。
ここで第8図を参照すると、マージ・マルチプレクサ7
2とマージ・マルチプレクサ制御論理82とが略図示さ
れている。マージ・マルチプレクサ72は論理82の制
御下でローチーター68及びシフタ70からの2組の9
バイト入力からISTREAMの次の9バイトを選択す
ることを思い出さなければならない。一般に、下位バイ
トはシフタ70から選ばれ、ローチーター68は残りの
高位バイト位置を満たす。
制御論理82はrnumber to 5hift J
信号(m)及びIBUF  VALID  C0UNT
信号とを受取り、これらの信号の値を使って適切な入力
バイトを選択する。
マージ・マルチプレクサ72はマルチプレクサの9個の
バンク150.152.154.156.158.16
0.162.164.166を包含し、その各バンクは
、ローチーター68及びシフタ70からそれぞれ1バイ
トずつ、合計2バイトの位置入力を受け取る。そこで、
マルチプレクサの各バンクに接続されている選択ライン
は、アサートされるとローチーター人力を選択し、アサ
ートされないとシフタ入力を選択する。
このプロセスをより良く説明するために、該マルチプレ
クサバンクの一つ150の内部構造を示す。マルチプレ
クサバンク150はシフタ70(All。−A、7)及
びローチーター68(Be。−80、)の両方のθバイ
ト位置からビット0−7を受け取る。マルチプレクサバ
ンク150の出力はIBUF74のOバイト位置に送ら
れる。マルチプレクサバンク150内には8個の2人カ
マルチブレクサ150a−150hのグループがある。
マルチプレクサ150aは、選択ライン上のアサートさ
れた値がB、。を送出し、アサートされない値がA、。
を送出する様に、0位置入カバイトの両方の0ビフトを
受け取る。同様に、マルチプレクサ150b−150h
は、それぞれ両方の入力バイトのビット1−7を受け取
る。マルチプレクサ150a−150hの各々のための
選択ラインは、選択されたバイトの8ビットの全てを共
通にIBUF74のO入力位置に送るために優先順位解
読器82から1ビフト選択信号を受け取る。
制御論理82内で、ローチーター人力が送られる最下位
バイト位置を判定するために、IBUFVALID  
C0UNTからrnumber to 5hift J
信号(m)が差し引かれる。該信号mは、該信号mを負
の値に変換する1の補数生成器168に送られる。信号
−mは、加算器170に送られ、該加算器は該算術演算
を行なって、その結果を4=16解読器172に送る。
従って、該解読器の最下位9出力ビットは、ローチータ
ー人力が送られて行(べき最下位バイト位置に対応する
数値位置に単一のアサートされた信号を生成する。従っ
て、対応するマルチプレクサでローチーター人力を適切
に選択するために、このアサートされたバイト位置及び
該位置より高位の全てのバイト位置がアサートされるべ
きである。
例えば、前述した様に、若しrnumber to 5
hiftJ信号が3の値にセットされれば、ローチータ
ー人力はバイト位置6ないし8について選択されるべき
である。解読器172の出力は、バイト位置6に対応す
るラインのみをアサートする。そこで、アサートされた
ライン及びそれより高位のバイト位置に対応するマルチ
プレクサにアサートされた信号を提供するために、OR
ゲート174のバンクが解読器172の出力に接続され
ている。
通常の作動中、rnu+mber to 5hift 
J信号はマージ・マルチプレクサ72の動作を制御する
。しかし、プログラムの開始部分又は文脈転換点ではr
number to 5hift J信号はOでありI
 BUFVALID  C0UNTは0であり、ローチ
ーター68の内容全体がIBUF74にロードされる。
従って、加算器170の出力は0であり、ORゲート8
2のバンクの出力の全てを使用可能にする。
そこで、マルチプレクサ150−166への選択ライン
は全てB入力を選択する様に作動してローチーターの内
容全体をIBUF74に渡す。
第4図のマルチプレクサを作動させる制御論理78は、
下記の優先順位決定方式に従ってIBEX64、IBE
X2 66又はVIC28を選択する。
制御論理78は、単純な優先順位アルゴリズムでIBE
X64、IBEX2 66又はVIC28を選択する。
I BEXが空でなければ、IBEX64がローチータ
ー68に送られ、IBEX2が妥当であればそれがロー
チーター68に送られ、両方のIBEXが空でIBEX
2が妥当でなければVICデータがローチーター68に
送られる。
IBEXには各サイクルでMUX76から送られたデー
タがロードされるが、フラッシュ時又はローチーター6
8の全ての妥当なデータがIBtlF74により消費さ
れた時には、空とマークされる。
換言すれば、IBEX  VALID  C0UNTは
MUX76がIBUF74内に場所を発見出来ないデー
タをローチーター68に提供する時にOでなくなる。例
えば、分岐命令又はジャンプ命令が実行された後、IB
UF74、IBEX64及びIBEX2はクリア(フラ
ッシュ)され、VICは新しいISTREAMについて
アクセスされる。
VIC28にあるブロックの第1バイトに分岐すると仮
定する。VIC28からの第1カツドワードはMUX7
6に与えられ、これは該データをローチーター68及び
マージ・マルチプレクサを通してIBUF74に渡す、
IBEXに8亥データがロードされるが、8バイト全部
がIBUF74に行ったので妥当とはマークされない。
次のサイクルでVIC28は第2カツドワードをMUX
76に与え、これはそのカッドワードをローチーター6
8に渡す。解読器32は8バイトより少ないバイト(例
えば4バイト)を解読し、シフタ70は4バイトだけシ
フトアウトし、ローチーター68は4だけ回転し、マー
ジ・マルチプレクサ82はシフタ70からの4バイトと
ローチーター68からの5バイトとを渡すと仮定すると
、I BEXはISTREAMの未使用の3バイトを内
蔵するので、IBEX  BALID  C0UTは3
にセットされる。
IBEX2は、vIC28についての機能停止バッファ
ー(stall buffer)と層像すことの出来る
ものである。パイプライン方式で新しい先取りアドレス
を生成し、VICSTRAMにアクセスし、次にVIC
HITについて検査するので、IBEXが数個の妥当な
バイトを内蔵してから直ちにこのプロセスを停止するの
は実際的でない。
ソコテ、VIC28からのデータは、IBEX64に何
らかの妥当なデータがロードされ、若しそれがVICH
ITならばIBEX2 66が妥当とマークされた後の
サイクルで、IBEX266にロードされる。上記の例
を取ると、VIC28の妥当なブロックの第1バイトへ
の分岐が実行される。第1カツドワードのアドレスは第
1サイクルでPREFETCHPCに移動される。
第2サイクルで、第1カツドワードはIBUF74に送
られ、PREFETCHPCは第2カントワードに動き
続ける。第3サイクルにおいて、第2カントワードはI
BUF74及びIBEX64に送られ、PREFETC
HPCは第3カツドワードへ動く。第4サイクルで、解
読器32がそれ以上のバイトを消費しないとすれば、第
3カツドワードはIBEX2に送られ、PRHFETC
HPCは第4カントワードに移動し、私たちは停止する
と決定する。第5サイクルで、VIC28は第4カツド
ワードをMUX76に送るが、IBEX64データはロ
ーチーター68に渡される。
上記の例で分かる様に、ISTREAMの先取りはIB
UFにおける命令より著しく先行することが出来る。V
IC28の利益の一つは、主キャッシュ22へのアクセ
スを著しく減らすことが出来ることである。しかし、こ
の利益は、若し先取りが′m続して行なわれて、解読さ
れた命令より先に行き過ぎると極めて小さくなる。平均
では、分岐命令はI STREAMの16バイト毎に存
在するので、データが使われるであろう程よい可能性が
生じるまでは先取りが主キャッシュ22にアクセスしな
いことが必要である。そこで、主キャッシュに対するデ
ータについての要求は、VICMISSがあり、IBE
X2が妥当でなく、且つIBEXが空である場合に限っ
て、なされる。このことは普通は、VIGブロックにつ
いての要求がなされた時に解読器32はなおフないし8
個のバイトを使用することが出来ることを意味する。
第9図を参照すると、これは仮想命令キャッシュ28の
2ユニット妥当ブロック格納STRAM58のブロック
図である。VIG2Bは仮想キャッシュであるので、文
脈転換又はREI命令時にフラッシュ(クリア)されな
ければならない。換言すれば、256個の1ビット記憶
場所が全て不当とマークされなければならない。残念な
ことに、各クロックサイクル中に唯一の記憶場所を不当
とマークすることが出来るに過ぎない。従って、若し2
56ビットが全てその妥当な状態にセットされていれば
、ブロック妥当STRAM5 Bをクリアするのに25
6クロツクサイクルを要するということがあり得る。
第9図に示されている様に、2個のブロック妥当STR
AM220,222 (BVSA、BVSB)がある。
該STRAMの一つは、現在要求されているアドレスが
VIC28で「ヒントコするか「ミス」するか判定する
のに使われる。第1STRAMがヒツト/ミスを判定し
ている間に第2STRAMは各クロックサイクルに1記
憶場所の割合でクリアされる。従って、最後の文脈転換
から256サイクルが経過したとすると、第2STRA
Mはクリアされていて、該2個のSTRAMの機能を切
り代えることによって単一のサイクルで文脈転換がなさ
れる。各STRAM220.222はヒツト/ミス判定
又は妥当ビットをクリアする動作のいずれかを行なう様
に構成される。
実際、各文脈転換によりBVSA及びBVSBは反対の
機能に切り代えられる。
BVSA及びBVSBは、各々、それぞれに対応するマ
ルチプレクサ224.226から単一の8ビットアドレ
スを受け取る。両方のマルチプレクサ224.226が
PC26及びリセット制御228からアドレス対を受け
取る。PCアドレスをSTRAM220.222の一方
に与え、リセットアドレスを他方のSTRAM220.
222に与えるために、マルチプレクサ224.226
への選択ラインは相補的に作動させられる。
リセット制御228は実行装置20から文脈転換(CO
NTEXT  5WITCH)信号を受け取ってアドレ
ス0−255をマルチプレクサ224.226に順次送
り始める。マルチプレクサ224.226の一方は、内
蔵している256個の妥当ピントが256クロツクサイ
クルの期間に亙ってリセットされる様に、これらの順次
アドレスを選択されたSTRAM220.222に送る
STRAM220,222の一方がリセットされる前に
実行装置が文脈転換を開始するのを防止するために、リ
セット制御はリセットプロセスが完了したことを示す所
期接続手順信号を送る。S−Rフリップフロップ230
は、この初期接続手順信号をそのセット入力において受
取り、これにより該フリップフロップ230は文脈転換
信号開始信号(PROCEED  WITHC0NTE
XTSWITCHS IGNAL)を実行装置20にラ
ッチする。実行装置20からの文脈転換信号はフリップ
フロップ230のリセット入力に接続されており、PR
OCEED  WITHC0NTEXTSWITCH信
号は各文脈転換開始時にリセットされる。
マルチプレクサ224.226への選択ラインの制御は
、各文脈転換(CONTEXT  5WITCH)信号
に応じてアサート状態と非アサート状態との間をトグル
作動するJ−にフリップフロップ232によってなされ
る。フリップフロップ2320両方の入力が論理rlJ
に接続され、クロック入力は文脈転換信号に接続されて
いる。従って、フリップフロップ232のQ出力(US
E  RLOCKB)は文脈転換信号の遷移に応じて「
0」と「1」との間を転換する。マルチプレクサ224
の選択入力はフリップフロップ232のQ出力に直接接
続され、マルチプレクサ226の選択入力はインバータ
ー234を介してフリップフロップ232のQ出力に接
続されている。
同様にして、PC装置(第1図の26)からのブロック
妥当データ(MARKERBLOCKVALID)は、
USE  BLOCK  B信号に応じてSTRAM2
20.222のデータ入力間で多重化される。この目的
のために、rBJSTRAM222のデータ入力はU 
S E  BLOCKB信号により使用可能にされるA
NDゲート237を通してMARKERBLOCK  
VALIDラインに接続され、rAJ STRAM22
0のデータ入力は、インバーター239により提供され
るUSE  BLOCK  B信号の補数により使用可
能にされるANDゲートを通してMARKERBLOC
K  VAL−IDラインに接続されされている。従っ
て、USE  BLOCK  B信号がアサートされた
時、MARKERBLOCKVAL IDデータがrB
J STRAM222に供給され、rAJ STRAM
はOデータを受け取り、これによりクリアされる。逆に
、U S E  BLOCKB信号がアサートされない
時は、MARKERBLOCK  VALIDデータが
rAJ S T RA M222に供給され、rBJ 
STRAMは0データを受取り、これによりクリアされ
る。
最後に、STRAM220の妥当ビット出力は、マルチ
プレクサ236への入力対に接続される。
マルチプレクサ236の選択ラインはフリップフロップ
232のQ出力に接続されてマルチプレクサ224.2
26と関連して作用する。従って、PCアドレスを受け
取るべく選択されるSTRAM220.222は、その
出力をBLOCK VALIDBITとして送るべく選
択される。
【図面の簡単な説明】
第1図は、中央処理装置及び関連のメモリーの一部の最
高レベルブロック図である。 第2図は、長ワードADDオペランドのパイプライン処
理の機能図である。 第3図は、仮想命令キャッシュのブロック図である。 第4図は、仮想命令キャッシュでインターフェースされ
る命令バッファーの略ブロック図である。 第5図は、該命令バッファーと、命令解読器へのインタ
ーフェースとの詳細ブロック図である。 第6図は、該命令バッファーのシフタの略図である。 第7図は、該命令バッファーのローチーターの略図であ
る。 第8図は、該命令バッファーのマージ・マルチプレクサ
の略図である。 第9図は、仮想命令キャッシュの2ユニット妥当ブロッ
ク格納STRAMのブロック図である。

Claims (14)

    【特許請求の範囲】
  1. (1)可変個数の命令バイトを同時に解読することの出
    来る命令解読器への命令ストリームのバイトの配送を制
    御するディジタルコンピューター用の命令バッファーシ
    ステムであって、 前記解読器により解読されるべき前記命令バイトを受け
    取る複数のバイト記憶場所を有し、命令バイトがそのバ
    イト場所から解読されたところのバイト場所を特定する
    手段を包含する命令バッファーと、 命令ストリームの予め選択された個数の後続のバイトを
    格納する第1及び第2の先取りバッファーと、 前記特定手段により特定されたバイト記憶場所の個数に
    応じて前記第1及び第2の先取りバッファーのうちの少
    なくとも一方から検索された命令ストリームの選択され
    た個数の順次のバイトを前記命令バッファーに再補充す
    る手段と、前記命令バッファーに再補充をする前記手段
    により前記第1先取りバッファーが空にされた時に前記
    命令ストリームの順次のバイトを前記第1先取りバッフ
    ァーに再補充する手段と、前記命令バッファ−に再補充
    する前記手段により前記第2先取りバッファーが空にさ
    れた時に前記命令ストリームの順次のバイトを前記第2
    先取りバッファーに再補充する手段とから成ることを特
    徴とする命令バッファーシステム。
  2. (2)前記解読器は、現在解読されている命令に包含さ
    れている命令ストリームのバイト数に応じて信号を送出
    する手段を包含し、該解読器再補充手段は、命令ストリ
    ームの前記バイト数に応じて前記信号を受取り、前記信
    号により示された命令ストリームの前記バイト数に応じ
    て予め選択されたバイト数だけ前記命令バッファーの内
    容をシフトさせるシフタを包含することを特徴とする請
    求項1に記載の命令バッファーシステム。
  3. (3)該命令バッファー再補充手段は、該第1及び第2
    の先取りバッファーの一方から命令ストリームの順次の
    バイトを検索して、そのバッファー記憶場所から命令ス
    トリームバイトが該シフタにより除去されたところのバ
    ッファー記憶場所に補充する手段を包含することを特徴
    とする請求項2に記載の命令バッファーシステム。
  4. (4)該命令バッファー再補充手段は、前記第1及び第
    2の先取りバッファーから検索された命令ストリームの
    前記の順次のバイトを受け取って、該バイトを、前記信
    号により指示された命令ストリームの前記バイト数に応
    じて予め選択されたバイト数だけ回転させる手段を包含
    することを特徴とする請求項3に記載の命令バッファー
    システム。
  5. (5)該第1及び第2の先取りバッファーに再補充をす
    る前記手段は、前記信号が存在しないことに応答して該
    第1及び第2の先取りバッファーに再補充をすることを
    特徴とする請求項2に記載の命令バッファーシステム。
  6. (6)該解読器に再補充をする該手段は、前記第1及び
    第2の先取りバッファーの両方から命令ストリームのバ
    イトが除去されたことに応答して仮想命令キャッシュか
    ら命令ストリームを検索することを特徴とする請求項1
    に記載の命令バッファーシステム。
  7. (7)可変個数の命令バイトを同時に解読することの出
    来る命令解読器への命令ストリームの配送を制御するデ
    ィジタルコンピューター用の命令バッファーシステムで
    あって、前記解読器は解読される命令ストリームのバイ
    ト数に応じて信号を送出する手段を包含しており、前記
    命令バッファーシステムは、 該解読器が希望する命令ストリームの予め選択された個
    数の次の順次のバイトを維持し、前記の予め選択された
    個数の命令ストリームのバイトを前記解読器に送る命令
    バッファーと、命令ストリームの予め選択された個数の
    順次のバイトを先取りして第1先取りバッファーに維持
    する第1手段と、 該第1手段に維持されている命令ストリームのバイトに
    後続する命令ストリームの次の予め選択された個数のバ
    イトを先取りして第2先取りバッファーに維持する第2
    手段と、 前記信号を受取り、前記命令バッファーの内容を、前記
    信号に応じて予め選択されたバイト数だけシフトさせ、
    そのシフトされたバイトを該命令バッファーに送るシフ
    タと、 該第1及び第2の先取りバッファーの一方から命令スト
    リームの順次のバイトを検索して、その命令バッファー
    記憶場所から該シフタにより命令ストリームのバイトが
    除去されたところの命令バッファー記憶場所に補充する
    手段と、検索のための前記手段により前記第1先取りバ
    ッファーが空にされたことに応答して前記第1先取りバ
    ッファーに後続の命令ストリームのバイトを再補充する
    手段と、 前記検索のための前記手段により前記第2手段が空にさ
    れたことに応答して前記第2先取りバッファーに後続の
    命令ストリームのバイトを再補充する手段とから成るこ
    とを特徴とする命令バッファーシステム。
  8. (8)該命令バッファー再補充手段は、前記第1及び第
    2の手段から検索された命令ストリームの前記後続のバ
    イトを受取り、該バイトを、前記信号に応じて予め選択
    されたバイト数だけ回転させる手段を包含することを特
    徴とする請求項7に記載の命令バッファーシステム。
  9. (9)前記第1及び第2の先取りバッファーに再補充を
    する前記手段は、前記信号が存在しないことに応答して
    前記第1及び第2の先取りバッファーに再補充をするこ
    とを特徴とする請求項7に記載の命令バッファーシステ
    ム。
  10. (10)該命令バッファーに補充をするために検索をす
    る前記手段は、前記第1及び第2の先取りバッファーが
    空にされたことに応答してキャッシュメモリーから命令
    ストリームを検索する手段を包含することを特徴とする
    請求項7に記載の命令バッファーシステム。
  11. (11)命令ストリームの選択された一部分をその中に
    格納し、文脈転換に応じて前記選択された一部分を前記
    命令ストリームの別の一部分と置換する様になっている
    仮想命令キャッシュであって、前記仮想命令キャッシュ
    は命令ストリームの予め選択された個数のバイトのブロ
    ックに分離され組織されており、前記ブロックの各々に
    は、そのブロックに格納されている命令ストリームのバ
    イトの少なくとも一部分が妥当であることを示す様にセ
    ットされる妥当ビットが随伴し、前記妥当ビットは妥当
    ビットRAMに組織され格納される様に成っており、前
    記妥当ビットRAMは、 各々予め選択された個数の記憶場所を持った第1及び第
    2の妥当ビット記憶場所と、 前記妥当ビット記憶場所の一つに予め選択されたアドレ
    スを送る手段と、 前記の予め選択されたアドレスに格納されている妥当ビ
    ットを検索する手段と、 前記他の妥当ビット記憶場所に格納されている妥当ビッ
    トの全てをリセットする手段と、文脈転換に応じて第1
    妥当ビット記憶場所を交互に前記一方の妥当ビット記憶
    場所及び前記他方の妥当ビット記憶場所として選択する
    と共に文脈転換に応じて該第2妥当ビット記憶場所を交
    互に前記他方の妥当ビット記憶場所及び前記一方の妥当
    ビット記憶場所として選択する手段とから成ることを特
    徴とする仮想命令キャッシュ。
  12. (12)前記リセット手段は、前記記憶場所の全てがリ
    セットされたことに応答して信号を送出する手段と、前
    記リセット信号が存在しないことに応答して前記文脈転
    換を遅延させる手段とを包含することを特徴とする請求
    項11に記載の仮想命令キャッシュ。
  13. (13)前記選択手段は、第1及び第2のマルチプレク
    サを包含し、該マルチプレクサは、各々、該予選択アド
    レス送出手段と該リセット手段とにそれぞれ接続された
    第1及び第2の入力と、前記第1及び第2の妥当ビット
    記憶場所に接続された出力とを有し、前記第1マルチプ
    レクサは、文脈転換に応じてアサート状態と非アサート
    状態とを交互に循環する手段に接続された選択入力を有
    し、前記第2マルチプレクサは、インバーターを通して
    該交互循環手段に接続された選択入力を有することを特
    徴とする請求項11に記載の仮想命令キャッシュ。
  14. (14)前記選択手段は、出力マルチプレクサを包含し
    、該マルチプレクサは、前記第1及び第2の妥当ビット
    記憶場所の出力にそれぞれ接続された第1及び第2の入
    力と、出力と、文脈転換に応じてアサート状態と非アサ
    ート状態とを交互に循環する前記手段に接続された選択
    入力とを有することを特徴とする請求項12に記載の仮
    想命令キャッシュ。
JP1241650A 1989-02-03 1989-09-18 仮想命令キャッシュ再補充アルゴリズム Pending JPH02208728A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/306,831 US5113515A (en) 1989-02-03 1989-02-03 Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US306831 1989-02-03

Publications (1)

Publication Number Publication Date
JPH02208728A true JPH02208728A (ja) 1990-08-20

Family

ID=23187060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1241650A Pending JPH02208728A (ja) 1989-02-03 1989-09-18 仮想命令キャッシュ再補充アルゴリズム

Country Status (7)

Country Link
US (1) US5113515A (ja)
EP (1) EP0380854B1 (ja)
JP (1) JPH02208728A (ja)
AT (1) ATE156607T1 (ja)
AU (1) AU628527B2 (ja)
CA (1) CA1323937C (ja)
DE (1) DE68928236T2 (ja)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2505887B2 (ja) * 1989-07-14 1996-06-12 富士通株式会社 命令処理システム
JP2682217B2 (ja) * 1989-08-28 1997-11-26 日本電気株式会社 マイクロプロセッサ
JPH0395629A (ja) * 1989-09-08 1991-04-22 Fujitsu Ltd データ処理装置
EP0436341B1 (en) * 1990-01-02 1997-05-07 Motorola, Inc. Sequential prefetch method for 1, 2 or 3 word instructions
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
US5530941A (en) * 1990-08-06 1996-06-25 Ncr Corporation System and method for prefetching data from a main computer memory into a cache memory
US5493662A (en) * 1990-08-20 1996-02-20 Nec Corporation Apparatus for enabling exchange of data of different lengths between memories of at least two computer systems
EP0477598A2 (de) * 1990-09-26 1992-04-01 Siemens Aktiengesellschaft Befehlswerk für einen n Prozessorelemente aufweisenden Prozessor
JPH04340145A (ja) * 1991-05-17 1992-11-26 Nec Corp キャッシュメモリ装置
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
GB2263985B (en) * 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
GB2263987B (en) * 1992-02-06 1996-03-06 Intel Corp End bit markers for instruction decode
EP0650612B1 (en) * 1992-03-25 1999-08-18 Zilog Incorporated Fast instruction decoding in a pipeline processor
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5572682A (en) * 1992-04-03 1996-11-05 Cyrix Corporation Control logic for a sequential data buffer using byte read-enable lines to define and shift the access window
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
JP3644959B2 (ja) 1992-09-29 2005-05-11 セイコーエプソン株式会社 マイクロプロセッサシステム
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5367657A (en) * 1992-10-01 1994-11-22 Intel Corporation Method and apparatus for efficient read prefetching of instruction code data in computer memory subsystems
JPH06222990A (ja) * 1992-10-16 1994-08-12 Fujitsu Ltd データ処理装置
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
EP0651320B1 (en) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
JP3442118B2 (ja) * 1993-11-19 2003-09-02 富士通株式会社 バッファ回路
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5600806A (en) * 1994-03-01 1997-02-04 Intel Corporation Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer
US5608885A (en) * 1994-03-01 1997-03-04 Intel Corporation Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions
US5559975A (en) 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5644752A (en) * 1994-06-29 1997-07-01 Exponential Technology, Inc. Combined store queue for a master-slave cache system
US5758116A (en) * 1994-09-30 1998-05-26 Intel Corporation Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions
US5860096A (en) * 1994-10-17 1999-01-12 Hewlett-Packard Company Multi-level instruction cache for a computer
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US5526320A (en) 1994-12-23 1996-06-11 Micron Technology Inc. Burst EDO memory device
US6525971B2 (en) * 1995-06-30 2003-02-25 Micron Technology, Inc. Distributed write data drivers for burst access memories
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5832249A (en) * 1995-01-25 1998-11-03 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5822558A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
US5758114A (en) * 1995-04-12 1998-05-26 Advanced Micro Devices, Inc. High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor
US5680564A (en) * 1995-05-26 1997-10-21 National Semiconductor Corporation Pipelined processor with two tier prefetch buffer structure and method with bypass
US5809529A (en) * 1995-08-23 1998-09-15 International Business Machines Corporation Prefetching of committed instructions from a memory to an instruction cache
US5781789A (en) * 1995-08-31 1998-07-14 Advanced Micro Devices, Inc. Superscaler microprocessor employing a parallel mask decoder
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5794063A (en) * 1996-01-26 1998-08-11 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5740392A (en) * 1995-12-27 1998-04-14 Intel Corporation Method and apparatus for fast decoding of 00H and OFH mapped instructions
US5829010A (en) * 1996-05-31 1998-10-27 Sun Microsystems, Inc. Apparatus and method to efficiently abort and restart a primary memory access
US6981126B1 (en) * 1996-07-03 2005-12-27 Micron Technology, Inc. Continuous interleave burst access
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
US6170050B1 (en) 1998-04-22 2001-01-02 Sun Microsystems, Inc. Length decoder for variable length data
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US6321325B1 (en) * 1998-12-03 2001-11-20 Sun Microsystems, Inc. Dual in-line buffers for an instruction fetch unit
US7117342B2 (en) 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US6694423B1 (en) * 1999-05-26 2004-02-17 Infineon Technologies North America Corp. Prefetch streaming buffer
EP1150213B1 (en) * 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Data processing system and method
US7082516B1 (en) * 2000-09-28 2006-07-25 Intel Corporation Aligning instructions using a variable width alignment engine having an intelligent buffer refill mechanism
WO2002065309A1 (en) 2001-02-13 2002-08-22 Candera, Inc. System and method for policy based storage provisioning and management
US7203730B1 (en) 2001-02-13 2007-04-10 Network Appliance, Inc. Method and apparatus for identifying storage devices
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
US7472231B1 (en) * 2001-09-07 2008-12-30 Netapp, Inc. Storage area network data cache
US7032136B1 (en) 2001-09-07 2006-04-18 Network Appliance, Inc. Auto regression test for network-based storage virtualization system
US7032097B2 (en) * 2003-04-24 2006-04-18 International Business Machines Corporation Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US8806177B2 (en) * 2006-07-07 2014-08-12 International Business Machines Corporation Prefetch engine based translation prefetching
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US10254980B1 (en) 2015-09-22 2019-04-09 Amazon Technologies, Inc. Scheduling requests from data sources for efficient data decoding
US9672110B1 (en) 2015-09-22 2017-06-06 Amazon Technologies, Inc. Transmission time refinement in a storage system
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59123053A (ja) * 1982-12-28 1984-07-16 Fujitsu Ltd 命令制御方式
JPS63163634A (ja) * 1986-12-26 1988-07-07 Hitachi Ltd 命令フエツチ方式

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US4521850A (en) * 1977-12-30 1985-06-04 Honeywell Information Systems Inc. Instruction buffer associated with a cache memory unit
US4236206A (en) * 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
JPS5927935B2 (ja) * 1980-02-29 1984-07-09 株式会社日立製作所 情報処理装置
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4500958A (en) * 1982-04-21 1985-02-19 Digital Equipment Corporation Memory controller with data rotation arrangement
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
US4602368A (en) * 1983-04-15 1986-07-22 Honeywell Information Systems Inc. Dual validity bit arrays
US4635194A (en) * 1983-05-02 1987-01-06 International Business Machines Corporation Instruction buffer bypass apparatus
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
JPH0670773B2 (ja) * 1984-11-01 1994-09-07 富士通株式会社 先行制御方式
US4860192A (en) * 1985-02-22 1989-08-22 Intergraph Corporation Quadword boundary cache system
JP2539357B2 (ja) * 1985-03-15 1996-10-02 株式会社日立製作所 デ−タ処理装置
DE3752100T2 (de) * 1986-01-07 1997-12-11 Nec Corp Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
ATE49071T1 (de) * 1986-04-23 1990-01-15 Siemens Ag Verfahren und anordnung zur beschleunigung der bereitstellung eines befehles im befehlsregister eines mikroprogrammgesteuerten prozessors.
JPH0810553B2 (ja) * 1986-06-13 1996-01-31 松下電器産業株式会社 記憶回路
DE3802025C1 (ja) * 1988-01-25 1989-07-20 Otto 7750 Konstanz De Mueller

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59123053A (ja) * 1982-12-28 1984-07-16 Fujitsu Ltd 命令制御方式
JPS63163634A (ja) * 1986-12-26 1988-07-07 Hitachi Ltd 命令フエツチ方式

Also Published As

Publication number Publication date
EP0380854A2 (en) 1990-08-08
EP0380854A3 (en) 1993-01-07
CA1323937C (en) 1993-11-02
AU628527B2 (en) 1992-09-17
DE68928236D1 (de) 1997-09-11
US5113515A (en) 1992-05-12
ATE156607T1 (de) 1997-08-15
DE68928236T2 (de) 1998-03-12
EP0380854B1 (en) 1997-08-06
AU5394090A (en) 1991-12-19

Similar Documents

Publication Publication Date Title
JPH02208728A (ja) 仮想命令キャッシュ再補充アルゴリズム
CA1325283C (en) Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
US5809530A (en) Method and apparatus for processing multiple cache misses using reload folding and store merging
JP3907809B2 (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
FI80532C (fi) Centralenhet foer databehandlingssystem.
EP0391517B1 (en) Method and apparatus for ordering and queueing multiple memory access requests
US4701844A (en) Dual cache for independent prefetch and execution units
US5142631A (en) System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
EP2519874B1 (en) Branching processing method and system
US7743232B2 (en) Multiple-core processor with hierarchical microcode store
EP0381447B1 (en) Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
US6189089B1 (en) Apparatus and method for retiring instructions in excess of the number of accessible write ports
US5717895A (en) Associative scalar data cache with write-through capabilities for a vector processor
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US5944801A (en) Isochronous buffers for MMx-equipped microprocessors
US6012135A (en) Computer having multiple address ports, each having logical address translation with base and limit memory management
EP0156307A2 (en) Pipelined processor having dual cache memories
EP1002269B1 (en) An apparatus and method for accessing special registers without serialization
JPH07200406A (ja) キャッシュシステム
JPH04340145A (ja) キャッシュメモリ装置
IE901517A1 (en) Virtual instruction cache refill algorithm
JPH05282146A (ja) 情報処理装置
IE901519A1 (en) Multiple instruction preprocessing system with data¹dependency resolution